Skip to content
This is the development version of the documentation. It may change before the next release. See 0.14.x for the latest release.

ActivateModulationBank

ActivateModulationBank is a low-level command that activates the Modulation bank to be played.

ActivateModulationBank {
bank,
transition_mode,
};
Field Type Description
bank ModulationBank Destination bank
transition_mode TransitionMode Behavior on switching
Immediate Immediate
SyncIdx When the playback index next becomes 0
SysTime { time } At the specified device time time (SysTime)
Gpio(GpioIn) Trigger on the specified GPIO input pin
Ext Extended mode (automatically switches to the next bank when playback within the bank finishes)
use autd3_rs::commands::{
ActivateModulationBank, Clear, ConfigModulation, Synchronize, WriteModulationBuffer,
};
use autd3_rs::geometry::{Autd3, Geometry};
use autd3_rs::units::Hz;
use autd3_rs::value::{LoopBehavior, ModulationBank, SamplingConfig, TransitionMode};
use autd3_rs::Client;
use autd3_rs::udp::TransportOption;
use autd3_rs_modulation::{SineOption, modulation_buffer, sine};
let geometry = Geometry::new(vec![Autd3::default()]);
let option = TransportOption::default();
let mut client = Client::open(&geometry, &option).await?;
client.send(Clear).await?;
client.send(Synchronize).await?;
let mut data = modulation_buffer();
sine(150 * Hz, &SineOption::default(), SamplingConfig::FREQ_4K, &mut data)?;
let bank = ModulationBank::B0;
client.send(WriteModulationBuffer {
bank,
offset: 0,
data: &data,
}).await?;
client.send(ConfigModulation {
bank,
config: SamplingConfig::FREQ_4K,
size: data.len(),
loop_behavior: LoopBehavior::Infinite,
}).await?;
client.send(ActivateModulationBank {
bank,
transition_mode: TransitionMode::Immediate,
}).await?;