BridgeDevs EN
Journal 技術ノート · VoluBridge

Technology

バッファではなく、ProducerとRenderの位相差を制御する。

VoluBridgeRT は、従来のFIFO型仮想オーディオが抱えやすい固定的なブロック待ちを避け、 Producerが書いた位置とRenderが読む位置の距離を、診断可能なMarginとして扱うCoreAudio HALドライバです。

主な違い FIFO在庫ではなく位相差
制御対象 Margin + phaseError
同期方式 Snap + PLL + Resnap
追加遅延 Zero Added Latency

Core Model

レイテンシは「器の大きさ」ではなく、読み書き位置の距離です。

オーディオ処理では、512 samples のようなブロックサイズがよく出てきます。 しかしブロックサイズそのものが、そのまま体感遅延になるわけではありません。 重要なのは、Renderがあるサンプルを読み取る瞬間、そのサンプルがProducerによって書かれてからどれだけ時間が経っているかです。

FIFO型は、安定性のために「先行在庫」を厚く持ちます。これによりUnderflowには強くなりますが、 ProducerとRenderの距離が大きくなり、その距離が見えにくい追加遅延として残ります。

effective distance ≈ targetMargin + phaseError VoluBridgeRTでは、この距離を診断値として扱い、目標Margin近傍へ制御します。

FIFO vs VBRT

同じHAL周期でも、常時保持する在庫が違います。

48kHz / 512 samples のHAL周期は、どちらの方式でも約10.667msです。 しかし、遅延を決めるのは周期だけではありません。常にどれだけ先行バッファを持つかで、最終的な追加遅延は変わります。

観点 FIFO型 VoluBridgeRT
安定化 キュー在庫を厚く持つ 位相差を追従制御する
主な遅延成分 物理遅延 + FIFO在庫 物理遅延 + Margin + phaseError
ドリフト対策 バッファ増減やリセットに寄りやすい PLLで時間軸を微調整する
観測性 実装依存で見えにくい Actual / Target / Phase / Underflowを可視化

Control Loop

Snap、PLL、Drain / Resnapで、低遅延と復帰性を両立します。

1

Observe

Producer / Render の位置、物理出力の進行、phaseError、Underflowを観測します。

2

Snap

再生開始や復帰時に、読み位置を目標Marginへ素早くアラインします。

3

Track

PLLがクロックドリフトを追従し、距離が膨らみ続けないようにします。

4

Recover

過負荷や停止時はDrain / Resnapで破綻を引きずらず安定状態へ戻します。

PLL

クロックドリフトは、バッファ量ではなく時間軸で吸収します。

仮想デバイスと物理デバイスのクロックは完全には一致しません。 このズレを放置すると、長時間再生でProducerとRenderの距離が少しずつ変化します。 従来方式では、ズレが大きくなった時点で読み位置をジャンプさせたり、バッファを厚くして吸収したりします。

VoluBridgeRTでは、物理出力の進み方を観測し、仮想側の時間進行を微調整します。 目標は音声データを加工することではなく、読み書きの距離を一定範囲に保つことです。

物理デバイスの進行を観測
仮想側との位相差を計算
クロック速度を微調整
目標Marginへ戻す

Diagnostics

低遅延を、感覚ではなく数値で見ます。

VoluBridgeRTは内部状態をRT診断として公開します。 低遅延設定が攻めすぎていないか、出力デバイスのクロックが安定しているか、Underflowの可聴リスクがあるかを確認できます。

Actual / Target

現在の実効距離と、目標としている同期Margin。

Phase p95 / p99 / max

位相誤差の分布。単発スパイクではなく傾向を見ます。

Saturation

PLL制御が限界に張り付いた割合。音切れの予兆として重要です。

Underflow

供給不足イベント。PhaseやSaturationと合わせて判断します。

RT Load

リアルタイムコールバックの負荷。重い処理との干渉を確認します。

Power Saving

待機中、実行中、スリープ中など、現在の動作状態を確認します。

Sync Capacity

低遅延と安定性は、同期キャパシティで調整します。

Sync Capacityは、物理出力に対して維持する同期余裕です。 小さいほど低遅延、大きいほど瞬間的な負荷変動や不安定なHDMI機器に強くなります。

Extreme低遅延重視。安定したMacと出力機器向け。
Standard日常利用と低遅延のバランス。
Balanced多くの環境での基準値。
Stable音切れ対策、HDMI機器、重い作業中に有効。

Boundary

「ゼロ遅延保証」ではなく、固定的な追加遅延を常態化させない設計です。

VoluBridgeRTがなくせるのは、仮想経路が持ちがちな固定的なFIFO滞留です。 物理デバイス固有の遅延、OSスケジューリング、出力機器の内部処理、デバイス切替直後の過渡状態が消えるわけではありません。

特に出力デバイス切替、スリープ復帰、再スナップ直後、明確なUnderflow / Overflow回復中は、 一時的に安定化処理が優先されます。VoluBridgeRTは、その後に目標Marginへ戻すための仕組みを持っています。

Zero Added Latency

VBRTがハード直結との差分遅延を0 samplesに近づける理由。

VoluBridgeRTは物理デバイスの遅延を消すのではなく、 ハード直結時に元々必要だった時間幅を Saf Offset と Render quantum に分割して使います。 数式と診断値で確認できる詳細ページを用意しました。

← Journalの記事一覧へ