これは開発版のドキュメントである. 内容は次のリリースまでに変更される可能性がある. 最新のリリース版は 0.14.x を参照.
ActivateModulationBank
ActivateModulationBank は, 再生対象の Modulation バンクを有効化する低レベルコマンド.
ActivateModulationBank { bank, transition_mode,};ActivateModulationBank( bank=bank, transition_mode=transition_mode,)new ActivateModulationBank( bank: bank, transitionMode: transitionMode);| フィールド | 型 | 説明 |
|---|---|---|
bank |
ModulationBank |
切り替え先バンク |
transition_mode |
TransitionMode |
切り替え時の挙動 |
TransitionMode
Section titled “TransitionMode”Immediate |
即時 |
SyncIdx |
次に再生インデックスが0になった時 |
SysTime { time } |
指定した デバイス時刻 time (SysTime) |
Gpio(GpioIn) |
指定 GPIO 入力ピンのトリガ |
Ext |
拡張モード (バンク内の再生が終わると次のバンクに自動で切り替え) |
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));