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

sine

src

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

freq = 200 Hz (clamp = true)
sine(freq, &option, sampling_config, &mut dst)?;
引数 型 説明
freq Freq 等 変調周波数
option &SineOption 追加オプション (下記参照)
config SamplingConfig サンプリング設定 (Modulation 参照)
dst &mut Vec<u8> 出力バッファ

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

freq は Freq (150 * Hz や 150.0 * Hz) で指定する. 150 * Hz と 150.0 * Hz は同じ周波数を表す.

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

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

SamplingConfigの制約により, 指定した周波数が表現可能な周波数でない場合がある. freq は周期内に整数個のサンプルで表せる周波数でなければならず, そうでない場合はエラーになる.

use autd3_rs::units::{Hz, rad};
use autd3_rs::value::SamplingConfig;
use autd3_rs_modulation::{SineOption, modulation_buffer, sine};
let mut dst = modulation_buffer();
sine(
150 * Hz,
&SineOption {
amplitude: 0xFF,
offset: 0x80,
phase: 0.0 * rad,
clamp: false,
..Default::default()
},
SamplingConfig::FREQ_4K,
&mut dst,
)?;