Modulation

Modulation is a mechanism to control AM modulation.

The modulation is applied to the amplitude of the sound pressure. For example, if you use Sine with , the sound pressure amplitude is as follows, and the envelope of the positive part (or negative part) of sound pressure follows the sine wave.

Currently, Modulation has the following restrictions.

  • The buffer size is up to 32768.
  • The sampling rate is , where is a non-zero 16-bit unsigned integer.

The SDK has Modulation by default to generate several types of AM.

Modulation common API

Sampling configuration

You can get the sampling frequency with sampling_config.

use autd3::prelude::*;
#[allow(unused_variables)]
fn main() -> Result<(), Box<dyn std::error::Error>> {
let m = autd3::modulation::Sine::new(150 * Hz);
let fs = m.sampling_config().freq(); // -> 4kHz
Ok(())
}
#include<autd3.hpp>
#include<autd3/link/nop.hpp>
int main() {
const auto m = autd3::modulation::Sine(150 * autd3::Hz);
const auto fs = m.sampling_config().freq();  // -> 4kHz
                                             return 0; }
using AUTD3Sharp;
using AUTD3Sharp.Modulation;
using static AUTD3Sharp.Units;
var m = new Sine(150u * Hz);
var fs = m.SamplingConfig.Freq; // -> 4kHz
from pyautd3 import Hz
from pyautd3.modulation import Sine
m = Sine(150 * Hz)
fs = m.sampling_config.freq # -> 4kHz

Some Modulation can set the sampling configuration with with_sampling_config.

use autd3::prelude::*;
#[allow(unused_variables)]
fn main() -> Result<(), Box<dyn std::error::Error>> {
let m = autd3::modulation::Sine::new(150 * Hz)
            .with_sampling_config(4000 * Hz);
Ok(())
}
#include<autd3.hpp>
#include<autd3/link/nop.hpp>
int main() {
const auto m = autd3::modulation::Sine(150 * autd3::Hz)
                   .with_sampling_config(4000u * autd3::Hz);
return 0; }
using AUTD3Sharp;
using AUTD3Sharp.Modulation;
using static AUTD3Sharp.Units;
var m = new Sine(150u * Hz).WithSamplingConfig(4000 * Hz);
from pyautd3 import Hz
from pyautd3.modulation import Sine
m = Sine(150 * Hz).with_sampling_config(4000 * Hz)