出力音圧の制御

AUTD3では, 出力する音圧をPWMを使用して制御している. 具体的には, Duty比と出力音圧の関係は理論上以下のように表される.

FocusなどのGainには出力強度をで制御するintensityパラメータがある. 例えば, 以下のコードでは, この強度を最大値の約半分に設定している.

use autd3::prelude::*;
fn main() {
let x = 0.0;
let y = 0.0;
let z = 0.0;
let _ = 
Focus {
    pos: Point3::new(x, y, z),
    option: FocusOption {
        intensity: Intensity(0x80),
        ..Default::default()
    },
};
}
#include<autd3.hpp>
int main() {
const auto x = 0.0;
const auto y = 0.0;
const auto z = 0.0;
autd3::Focus(autd3::Point3(x, y, z),
             autd3::FocusOption{.intensity = autd3::Intensity(0x80)});
return 0; }
using AUTD3Sharp;
using AUTD3Sharp.Utils;
using AUTD3Sharp.Gain;
var x = 0.0f;
var y = 0.0f;
var z = 0.0f;
new Focus(
    pos: new Point3(x, y, z),
    option: new FocusOption
    {
        Intensity = new Intensity(0x80),
    }
);
from pyautd3 import Intensity, Focus, FocusOption
x = 1.0
y = 0.0
z = 0.0
Focus(
    pos=[x, y, z],
    option=FocusOption(
        intensity=Intensity(0x80),
    ),
)

デフォルトでは, このintensityパラメータと出力音圧が理論上は線形に比例するように設定されている. 具体的には, 強度パラメータ () からDuty比が以下のように計算されるように設定されている.

しかし, 実際には振動子の個体差や理論値とのズレによって, 必ずしも線形に比例するとは限らないことに注意が必要である. (ただし, その場合でも強度パラメータと音圧の関係が単調増加であることは仮定して良い.) AUTD3ではそのため, この強度パラメータとDuty比の変換式を変更し, ユーザが補正することができるようにしている.

NOTE: なお, 実際の強度パラメータとしては, Gain等で指定する強度パラメータにModulationによる変調データ()をかけ合わせで割った値が使用される.