操作
機能 #372
完了機能 #342: [Phase 2] リアルタイム音声エンジン(ferrhythm-audio)
ferrhythm-audio: ASIO 出力バックエンド実装(asio-sys)
機能 #372:
ferrhythm-audio: ASIO 出力バックエンド実装(asio-sys)
説明
目的¶
#354 で用意した出力バックエンドの trait seam(OutputBackend / RunningOutput)に ASIO 実装を追加し、対応ハードで ASIO 出力を選択可能にする。
背景¶
#354 で WASAPI 排他・イベント駆動出力(共有フォールバック付き)を実装済み。その際、ユーザー確定方針により ASIO は trait seam + feature ゲートの stub のみ(crates/ferrhythm-audio/src/asio.rs、Asio::start は AudioError::Unsupported { backend: "ASIO" } を返す)を用意し、実装本体は本チケットへ分離した。asio-sys は独自 Steinberg ASIO SDK と実ドライバが必要で、Linux DevContainer では cargo check も通らない(WASAPI は x86_64-pc-windows-gnu ターゲットで型検査可能だが ASIO は不可)。
スコープ¶
-
crates/ferrhythm-audio/Cargo.tomlのasiofeature にasio-sys([target.'cfg(windows)'.dependencies],optional = true)を紐付け。 -
asio.rsのAsioをOutputBackendとして実装:ASIO ドライバ列挙/選択、バッファサイズ交渉、専用スレッドでAudioEngine::renderを駆動(WASAPI と同じ RT 規約=事前確保・ロックフリー・syscall 回避)、DeviceFormat報告。 -
#[cfg(all(windows, feature = "asio"))]背後に隔離し、feature オフ(既定・CI)ではasio-sysを一切ビルドしない。
検証¶
- feature オフ時に Linux/Windows 双方で従来通りビルドできること(コンテナ可)。
- ASIO 実機での発音・レイテンシ・連続性は Windows ホスト+ASIO 対応 IF で検証(コンテナ不可)。
担当¶
Codex 委譲(source-only)、ホスト検証はユーザー。
関連: #354(trait seam + stub を提供した親作業)
操作