コンテンツにスキップ
これは開発版のドキュメントである. 内容は次のリリースまでに変更される可能性がある. 最新のリリース版は 0.6.x を参照.

sine

src

sine は正弦波の振幅変調を生成する.

freq = 200 Hz (clamp = true)
sine(freq, &option, &mut dst)?;
引数 説明
freq Freq<u32> 変調周波数
option &SineOption 追加オプション (下記参照)
dst &mut Vec<u8> 出力バッファ

各サンプル の値は, 振幅 amplitude), オフセット offset), 位相 phase)に対して次式で与えられる.

freqFreq<u32>150 * Hz)や Freq<f32>150.0 * Hz)で指定する.

SineOption {
amplitude,
offset,
phase,
clamp,
sampling_config,
}
フィールド デフォルト 説明
amplitude u8 0xFF 正弦波の振幅
offset u8 0x80 直流オフセット
phase Angle Angle::ZERO 位相
clamp bool false 範囲外の値を [0, 255] clampするか
sampling_config SamplingConfig SamplingConfig::FREQ_4K サンプリング設定

amplitudeoffset の組み合わせで波形が [0, 255] の範囲を外れる場合, clampfalse だとエラーになる. 範囲内に収まるよう値を選ぶか, clamptrue にする.

SamplingConfigの制約により, 指定した周波数が表現可能な周波数でない場合がある. その場合はNearest(freq) を渡すと最も近い表現可能な周波数に丸める.

sine(Nearest(150.5 * Hz), &option, &mut dst)?;
use autd3_rs::units::{Hz, rad};
use autd3_rs::value::SamplingConfig;
use autd3_rs_modulation::{SineOption, sine};
let mut dst = Vec::new();
sine(
150 * Hz,
&SineOption {
amplitude: 0xFF,
offset: 0x80,
phase: 0.0 * rad,
clamp: false,
sampling_config: SamplingConfig::FREQ_4K,
},
&mut dst,
)?;