ActivateModulationBank
ActivateModulationBank is a low-level command that activates the Modulation bank to be played.
ActivateModulationBank { bank, transition_mode,};ActivateModulationBank( bank=bank, transition_mode=transition_mode,)new ActivateModulationBank( bank: bank, transitionMode: transitionMode);| Field | Type | Description |
|---|---|---|
bank |
ModulationBank |
Destination bank |
transition_mode |
TransitionMode |
Behavior on switching |
TransitionMode
Section titled “TransitionMode”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) |
Example
Section titled “Example”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?;import asyncio
from autd3 import Client, TransportOptionfrom autd3.commands import ActivateModulationBank, Clear, ConfigModulation, Synchronize, WriteModulationBufferfrom autd3.geometry import Autd3, Geometryfrom autd3.units import Hzfrom autd3.value import LoopBehavior, ModulationBank, SamplingConfig, TransitionModefrom autd3_modulation import SineOption, modulation_buffer, sine
async def main() -> None: geometry = Geometry([Autd3()]) with await Client.open(geometry, TransportOption()) as client: await client.send(Clear()) await client.send(Synchronize())
data = modulation_buffer() sine(150 * Hz, SineOption(), SamplingConfig.FREQ_4K, data)
bank = ModulationBank.B0
await client.send( WriteModulationBuffer( bank=bank, offset=0, data=data, ) ) await client.send( ConfigModulation( bank=bank, config=SamplingConfig.FREQ_4K, size=len(data), loop_behavior=LoopBehavior.Infinite, ) ) await client.send( ActivateModulationBank( bank=bank, transition_mode=TransitionMode.Immediate, ) )
asyncio.run(main())using System.Threading.Tasks;using AUTD3;using static AUTD3.Units;
var geometry = new Geometry(new[] { new Autd3() });using var client = await Client.OpenAsync(geometry, new TransportOption());await client.SendAsync(new Clear());await client.SendAsync(new Synchronize());
var data = Modulation.ModulationBuffer();Modulation.Sine(150 * Hz, new SineOption(), SamplingConfig.Freq4k, data);
var bank = ModulationBank.B0;
await client.SendAsync(new WriteModulationBuffer( bank: bank, offset: 0, data: data));await client.SendAsync(new ConfigModulation( bank: bank, config: SamplingConfig.Freq4k, size: (uint)data.Length, loopBehavior: LoopBehavior.Infinite));await client.SendAsync(new ActivateModulationBank( bank: bank, transitionMode: TransitionMode.Immediate));