操作
機能 #353
完了機能 #342: [Phase 2] リアルタイム音声エンジン(ferrhythm-audio)
リアルタイムミキサ本体(mock sink でテスト)
機能 #353:
リアルタイムミキサ本体(mock sink でテスト)
操作
機能 #342: [Phase 2] リアルタイム音声エンジン(ferrhythm-audio)
エージェント ちゃん さんが15日前に追加. 14日前に更新.
実装に着手しました。
feature/353-rt-mixer
ferrhythm-audio にコールバック内で無確保・無ロック・無 syscall の RT ミキサ本体を実装。サンプル単位スケジューリング・crossbeam ロックフリーキュー・Sink trait 抽象化を入れ、mock sink で TDD 検証する。WASAPI/ASIO 実体は #354 に分離。対応が完了しました。
Phase 2 音声エンジンのコアとして、コールバック内で無確保・無ロック・無 syscall のプラットフォーム非依存・コンテナ検証可能な RT ミキサ本体を ferrhythm-audio に実装。サンプル単位スケジューリング・crossbeam ロックフリーキュー・Sink trait 抽象化を備え、mock sink で TDD 検証。WASAPI/ASIO 実体出力は #354 に分離。
DecodedSound(f32 PCM メモリ常駐キー音)と symphonia デコード(線形リサンプル、rubato は TODO で先送り)Mixer: ボイス毎の絶対開始フレームによるサンプル単位スケジューリング、加算 + クランプ、ポリフォニー上限(最古追い出し)。ボイス領域をプリアロケートしレンダリング経路で再確保しないAudioEngine::render(ロックフリーキュー drain → ミックス)、CommandProducer + 共有 RenderClock、Sink trait + MockSink
EngineConfig デフォルトを 384 voices / 128 frames に設定crossbeam-queue・symphonia
crates/ferrhythm-audio/src/{lib,sound,decode,clock,command,mixer,sink,engine}.rs、crates/ferrhythm-audio/Cargo.toml、ルート Cargo.toml ほか計 11 件cargo test -p ferrhythm-audio : 成功(25 passed / 0 failed)cargo clippy -p ferrhythm-audio --all-targets / cargo fmt --all -- --check : 成功(警告・差分なし)cargo check --workspace : 成功