Sine

Source

音圧をSin波状に変形するためのModulation.

use autd3::prelude::*;
fn main() {
let _ = 
Sine {
    freq: 150 * Hz,
    option: SineOption {
        intensity: u8::MAX,
        offset: 0x80,
        phase: 0. * rad,
        clamp: false,
        sampling_config: SamplingConfig::FREQ_4K,
    },
};
}
#include<autd3.hpp>
int main() {
using namespace autd3;
Sine(150 * Hz, SineOption{
                   .intensity = 0xFF,
                   .offset = 0x80,
                   .phase = 0.0f * rad,
                   .clamp = false,
                   .sampling_config = SamplingConfig::freq_4k(),
               });
return 0; }
using AUTD3Sharp;
using AUTD3Sharp.Modulation;
using static AUTD3Sharp.Units;
new Sine(
    freq: 150u * Hz,
    option: new SineOption
    {
        Intensity = 0xFF,
        Offset = 0x80,
        Phase = 0f * rad,
        Clamp = false,
        SamplingConfig = SamplingConfig.Freq4K
    }
);
from pyautd3 import Hz, SamplingConfig, Sine, SineOption, rad
Sine(
    freq=150 * Hz,
    option=SineOption(
        intensity=0xFF,
        offset=0x80,
        phase=0.0 * rad,
        clamp=False,
        sampling_config=SamplingConfig.FREQ_4K,
    ),
)

Sineは音圧の波形が となるようなAMをかける. ここでは床関数を表す.

clampfalseだと, 上記の式においての範囲外の値になるようなintensity, offsetが指定された場合にエラーを返す. エラーを返すのではなく, 範囲外の値をにクランプする場合は, clamptrueを指定する.

これらの値のデフォルトは上記の通りである.

周波数制約

Sineはデフォルトだと周波数に厳格であり, サンプリング周波数によって出力不可能な周波数が指定された場合にはエラーを返す.

その場合はサンプリング設定を変更するか, into_nearestを使用することで, 出力可能な周波数の内で最も近い周波数で変調することができる.

use autd3::prelude::*;
fn main() {
    let _ = 
Sine {
    freq: 150. * Hz,
    option: SineOption::default(),
}
.into_nearest();
}
#include<autd3.hpp>
int main() {
using namespace autd3;
Sine(150.0f * Hz, SineOption{}).into_nearest();
return 0; }
using AUTD3Sharp.Modulation;
using static AUTD3Sharp.Units;
new Sine(freq: 150.0f * Hz, option: new SineOption()).IntoNearest();
from pyautd3 import Hz, Sine, SineOption
Sine(freq=150.0 * Hz, option=SineOption()).into_nearest()