Observe
Producer / Render の位置、物理出力の進行、phaseError、Underflowを観測します。
Technology
VoluBridgeRT は、従来のFIFO型仮想オーディオが抱えやすい固定的なブロック待ちを避け、 Producerが書いた位置とRenderが読む位置の距離を、診断可能なMarginとして扱うCoreAudio HALドライバです。
Core Model
オーディオ処理では、512 samples のようなブロックサイズがよく出てきます。 しかしブロックサイズそのものが、そのまま体感遅延になるわけではありません。 重要なのは、Renderがあるサンプルを読み取る瞬間、そのサンプルがProducerによって書かれてからどれだけ時間が経っているかです。
FIFO型は、安定性のために「先行在庫」を厚く持ちます。これによりUnderflowには強くなりますが、 ProducerとRenderの距離が大きくなり、その距離が見えにくい追加遅延として残ります。
effective distance ≈ targetMargin + phaseError
VoluBridgeRTでは、この距離を診断値として扱い、目標Margin近傍へ制御します。
FIFO vs VBRT
48kHz / 512 samples のHAL周期は、どちらの方式でも約10.667msです。 しかし、遅延を決めるのは周期だけではありません。常にどれだけ先行バッファを持つかで、最終的な追加遅延は変わります。
Control Loop
Producer / Render の位置、物理出力の進行、phaseError、Underflowを観測します。
再生開始や復帰時に、読み位置を目標Marginへ素早くアラインします。
PLLがクロックドリフトを追従し、距離が膨らみ続けないようにします。
過負荷や停止時はDrain / Resnapで破綻を引きずらず安定状態へ戻します。
PLL
仮想デバイスと物理デバイスのクロックは完全には一致しません。 このズレを放置すると、長時間再生でProducerとRenderの距離が少しずつ変化します。 従来方式では、ズレが大きくなった時点で読み位置をジャンプさせたり、バッファを厚くして吸収したりします。
VoluBridgeRTでは、物理出力の進み方を観測し、仮想側の時間進行を微調整します。 目標は音声データを加工することではなく、読み書きの距離を一定範囲に保つことです。
Diagnostics
VoluBridgeRTは内部状態をRT診断として公開します。 低遅延設定が攻めすぎていないか、出力デバイスのクロックが安定しているか、Underflowの可聴リスクがあるかを確認できます。
現在の実効距離と、目標としている同期Margin。
位相誤差の分布。単発スパイクではなく傾向を見ます。
PLL制御が限界に張り付いた割合。音切れの予兆として重要です。
供給不足イベント。PhaseやSaturationと合わせて判断します。
リアルタイムコールバックの負荷。重い処理との干渉を確認します。
待機中、実行中、スリープ中など、現在の動作状態を確認します。
Sync Capacity
Sync Capacityは、物理出力に対して維持する同期余裕です。 小さいほど低遅延、大きいほど瞬間的な負荷変動や不安定なHDMI機器に強くなります。
Boundary
VoluBridgeRTがなくせるのは、仮想経路が持ちがちな固定的なFIFO滞留です。 物理デバイス固有の遅延、OSスケジューリング、出力機器の内部処理、デバイス切替直後の過渡状態が消えるわけではありません。
特に出力デバイス切替、スリープ復帰、再スナップ直後、明確なUnderflow / Overflow回復中は、 一時的に安定化処理が優先されます。VoluBridgeRTは、その後に目標Marginへ戻すための仕組みを持っています。
Zero Added Latency
VoluBridgeRTは物理デバイスの遅延を消すのではなく、 ハード直結時に元々必要だった時間幅を Saf Offset と Render quantum に分割して使います。 数式と診断値で確認できる詳細ページを用意しました。