Modulation
Modulation
はAM変調を制御するための構造体の総称であり, これを送信することで超音波にAM変調をかけられる.
Modulationは音圧振幅に掛け合わされる.
例えば, のSine
変調を印加した場合の音圧振幅は以下のようになり, 音圧振幅の正の部分 (或いは, 負の部分) の包絡線がのsin波に従う.

なお, 現在, Modulation
には以下の制約がある.
- バッファサイズは最大で65536
- 拡張モードを使用すると131072
- サンプリングレートはである. ここで, は0より大きい符号なし整数である.
SDKにはデフォルトでいくつかの種類のAMを生成するためのModulation
が用意されている.
- Static - 変調なし
- Sine - 正弦波
- Fourier - 正弦波の重ね合わせ
- Square - 矩形波
- Wav - Wavファイルをもとにした変調
- Csv - Csvファイルをもとにした変調
- Custom - ユーザー定義の変調
- Cache - 他の
Modulation
の計算結果をキャッシュする - RadiationPressure - 放射圧に対して変調を適用する
- Fir - Firフィルタを適用する
Modulationの共通API
Sampling設定
Modulation
のサンプリング設定はsampling_config
で取得できる.
use autd3::prelude::*;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let m = Sine {
freq: 150 * Hz,
option: SineOption::default(),
};
dbg!(m.sampling_config().freq()?); // -> 4kHz
Ok(())
}
#include<iostream>
#include<autd3.hpp>
#include<autd3/link/nop.hpp>
int main() {
using namespace autd3;
const auto m = Sine(150 * Hz, SineOption{});
std::cout << m.sampling_config().freq() << std::endl; // -> 4kHz
return 0; }
using AUTD3Sharp;
using AUTD3Sharp.Modulation;
using static AUTD3Sharp.Units;
var m = new Sine(freq: 150u * Hz, option: new SineOption());
Console.WriteLine(m.SamplingConfig().Freq()); // -> 4kHz
from pyautd3 import Hz
from pyautd3.modulation import Sine, SineOption
m = Sine(freq=150 * Hz, option=SineOption())
print(m.sampling_config().freq()) # -> 4kHz
また, 一部のModulation
はオプションでサンプリング設定を変更できる.
サンプリング設定についての詳細はサンプリング設定についてを参照されたい.
LoopBehavior
Modulation
はループの挙動を制御できる.
デフォルトは無限ループである.
詳細はSegment/LoopBehaviorを参照.