コンテンツにスキップ
これは開発版のドキュメントである. 内容は次のリリースまでに変更される可能性がある. 最新のリリース版は 0.9.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)に対して次式で与えられる.

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

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

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

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,
..Default::default()
},
&mut dst,
)?;