ADR-008: Zero-Latency Mode
Context
音楽セッション用途において、30ms以上の遅延は演奏の心地よさを損なう。 日本国内光回線(RTT 10-25ms)での使用を主な対象として、アプリケーション起因の遅延を限りなく0msに近づける必要がある。
現在の仕様(ADR-003等)ではアプリ起因遅延 < 10ms を目標としているが、これでは光回線越しのセッションで総遅延が30msを超える可能性がある。
技術的背景
アプリ起因遅延の内訳(従来: 128samples、48kHz時):
| 処理 | 遅延 |
|---|---|
| 音声キャプチャバッファ | 2.67ms |
| エンコード/デコード | ~1ms |
| ジッタバッファ(最小1フレーム) | 2.67ms |
| 再生バッファ | 2.67ms |
| 合計 | ~9ms |
これを限りなく0msに近づけるには、各コンポーネントの遅延を最小化する必要がある。
Decision
「zero-latency」モードを新設し、以下の設定を適用する:
| パラメータ | 値 | 遅延 |
|---|---|---|
| フレームサイズ | 32 samples | 0.67ms(入出力各) |
| ジッタバッファ | パススルー(0フレーム) | 0ms |
| コーデック | PCM 32-bit float | 0ms |
| FEC | 無効 | 0ms |
| PLC | 即時繰り返し(ルックアヘッドなし) | 0ms |
結果として達成される遅延
| 処理 | 遅延 |
|---|---|
| 音声キャプチャバッファ | 0.67ms |
| エンコード | 0ms(PCM) |
| パケット化 | < 0.1ms |
| ジッタバッファ | 0ms(パススルー) |
| デコード | 0ms(PCM) |
| 再生バッファ | 0.67ms |
| 合計(片道、アプリ起因) | ~1.5ms |
動作要件
zero-latency モードの使用には以下が必要:
- オーディオインターフェース: ASIO(Windows)またはCoreAudio排他モード(macOS)対応
- ネットワーク: 有線LAN接続(WiFiはジッタが大きく非推奨)
- 回線: 光回線同士(日本国内RTT 10-25ms想定)
プリセット定義
zero-latency:
frame_size: 32 samples
jitter_buffer_mode: passthrough
jitter_buffer_min_frames: 0
codec: pcm_f32
fec_enabled: false
plc_mode: instant_repeat
Consequences
メリット
- アプリ起因遅延を ~10ms から ~1.5ms に削減(約85%削減)
- 日本国内光回線での総遅延を20ms以下に抑えられる可能性
- 遅延がほぼネットワークRTTのみになり、体感が大幅に改善
デメリット・トレードオフ
- 帯域増加: PCM 32-bit float は ~1.54 Mbps/ch 必要
- ジッタ耐性なし: ネットワークの揺らぎが直接音声途切れに繋がる
- ハードウェア要件: 32samples対応のASIO/CoreAudioインターフェースが必要
- WiFi非対応: 事実上、有線LAN必須
他のプリセットとの関係
| プリセット | アプリ起因遅延 | 用途 |
|---|---|---|
| zero-latency | ~1.5ms | 国内光回線セッション(新規) |
| ultra-low-latency | ~5ms | LAN内ジャム |
| balanced | ~15ms | 一般的なネット環境 |
| high-quality | ~25ms | 録音・高速回線 |
関連ADR
- ADR-003: 音声コーデック選択(PCM/Opus/FLAC)
- ADR-005: 音声処理なし方針(AEC/NS/AGC排除)
- ADR-006: FEC戦略(zero-latencyでは無効化)