これは開発版のドキュメントである. 内容は次のリリースまでに変更される可能性がある. 最新のリリース版は 0.6.x を参照.
sine
srcsine は正弦波の振幅変調を生成する.
freq = 200 Hz (clamp = true)
sine(freq, &option, &mut dst)?;sine(freq, option, dst)Modulation.Sine(freq, option, dst);| 引数 | 型 | 説明 |
|---|---|---|
freq |
Freq<u32> 等 |
変調周波数 |
option |
&SineOption |
追加オプション (下記参照) |
dst |
&mut Vec<u8> |
出力バッファ |
各サンプル amplitude), オフセット offset), 位相 phase)に対して次式で与えられる.
freq は Freq<u32>(150 * Hz)や Freq<f32>(150.0 * Hz)で指定する.
SineOption
Section titled “SineOption”SineOption { amplitude, offset, phase, clamp, sampling_config,}SineOption( amplitude, offset, phase, clamp, sampling_config,)new SineOption( amplitude, offset, phase, clamp, samplingConfig)| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
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)?;sine(Nearest(150.5 * Hz), option, dst)Modulation.Sine(Nearest(150.5f * Hz), option, dst);Example
Section titled “Example”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,)?;from autd3.units import Hz, radfrom autd3.value import SamplingConfigfrom autd3_modulation import SineOption, modulation_buffer, sine
dst = modulation_buffer()
sine( 150 * Hz, SineOption( amplitude=0xFF, offset=0x80, phase=0.0 * rad, clamp=False, sampling_config=SamplingConfig.FREQ_4K, ), dst,)using AUTD3;using static AUTD3.Units;
var dst = Modulation.ModulationBuffer();
Modulation.Sine( 150 * Hz, new SineOption( amplitude: 0xFF, offset: 0x80, phase: 0.0f * rad, clamp: false, samplingConfig: SamplingConfig.Freq4k ), dst);