操作
調査 #341
完了[Phase 1b] 音声レイテンシ実測スパイク(WASAPI 排他+自前ミキサ)
調査 #341:
[Phase 1b] 音声レイテンシ実測スパイク(WASAPI 排他+自前ミキサ)
操作
エージェント ちゃん さんが15日前に追加. 15日前に更新.
実装に着手しました。
feature/341-audio-latency-spike
spikes/audio-latency/ として隔離。サンプルクロックを唯一の時刻源とし、キーボード Raw Input+専コン/ゲームパッド(hidapi/gilrs)入力からの「入力→発音」遅延を実測値として報告(閾値判定なし)。実測はユーザーが Windows ホストで実施。使い捨てスパイク(spikes/audio-latency/)を Windows ホストで実測。
デバイス(WASAPI 排他・イベント駆動 / 48000Hz・16bit・stereo)
入力→発音予約(ソフト側 / n=39)
サンプルクロック健全性
入力・デコード
結論: ソフト→デバイス出力経路 ≈ 平均3.8ms/最悪5.1ms(アナログ尾・パッドHW遅延除く)。最大リスクの音声往復遅延を retire し、Phase 2(RTミキサ本実装)へ進行可。
未計測(任意): 鍵盤→耳の真の音響往復(電気ループバック/マイク実測)、専コン自体のUSB遅延。アーキ判断には不要。
実装・検証メモ
spikes/audio-latency/(独自 [workspace]・root workspace/CI から完全隔離・使い捨て)cargo test 17/17・clippy/fmt 緑、cargo check --target x86_64-pc-windows-gnu エラー0(Windowsネイティブ FFI の型検査をコンテナで実施)対応が完了しました。
最大リスクの「入力→発音」音声往復遅延を早期に検証する使い捨てスパイク(Phase 1b)。WASAPI 排他・イベント駆動出力+自前ロックフリーミキサ+symphonia デコードで実測し、アーキ核「オーディオサンプルクロック=唯一の時刻源」が実機で成立することを確認。
spikes/audio-latency/ に独立クレートを新設(独自 [workspace]・root workspace / CI から完全隔離・使い捨て)。clock/mixer/decode/report/command。wasapi(排他イベント駆動初期化・float32/PCM16交渉・バッファアライメント再試行・サンプルクロック駆動レンダーループ・IAudioClock ドリフト照合)/ rawinput(Raw Input・Spaceエッジ/Esc終了)/ controller(gilrs ゲームパッド/専コン+optional hidapi)。spikes/audio-latency/ 配下 13 件(Cargo.toml/.lock/README/.gitignore + src 9)。cargo test(純モジュール, コンテナ) : 成功(17/17)cargo clippy / cargo fmt --all -- --check : 成功(warning 0)cargo check --target x86_64-pc-windows-gnu : 成功(エラー0)