Music TO GO!

2011年06月26日

Audirvana作者の技術白書 Beyond bit-perfect: 全翻訳版

Audirvanaの作者のDamienさんがとても興味深い技術文書を書きました。これはコンピューターオーディオにおけるプレーヤーソフトとMacのインテジャーモードについて書かれたものです。そこでDamienさんに連絡してこの全文の日本語翻訳の許可とブログに掲載する許可をもらいました。

原注は原文にある注釈で、訳注はわたしが補足で書いたものです。そのほかはできるかぎり原文を忠実に訳出しています。多少言い回しを変えているところもありますが、文意は変えていないつもりです。文中の[MeitnerGendron91]などは末尾の参照文献のことです。本文中の「わたし」はもちろんDamienさんのことです。

本文はDamienさんに権利がありますので許可無く引用したり転載することはできませんので注意ください。必要な場合はわたしにご連絡ください。

原文はこちらです。(PDFへのリンク)



Beyond bit-perfect:
The importance of the Player Software
And Mac OSX Playback integer mode


ビットパーフェクトを超えて :
プレーヤーソフトウエアの重要性とMac OSX のインテジャーモード再生
Damien Plisson, Audirvana 開発者

(翻訳: ささき@Music To Go)

概要

コンピューターオーディオにおいて、プレーヤーソフトウエアはDACに転送するトランスポートとしてCDドライブの代わりとなるものだ。ビットパーフェクト出力の確保は単なる前提条件であって、ジッターとRFI(Radio Frequency interference : 電波干渉)の低減はいぜん重要である。
この文書は音質に影響を与える主たる要素についてコンピューター側での説明を加えるものだ。それは実際にAudirvanaにおいて実装され、AMR DP-777 DACを普通使われるiTunesとの組み合わせを超えた別次元のオーディオ体験をもたらしている。
その主たる要素とはビットパーフェクト、サンプルレート切り替え、アシンクロナス(非同期)転送、インテジャーモードである。

序文: 究極の目標あるいは理想世界の神話としてのビットパーフェクト

デジタルオーディオの世界において、読み込みエラーやトランスポートの機械的な要因によるジッターの発生はCDプレーヤーの既知の問題として良く知られている。
コンピューターソースはこれらの問題に対してはその影響を受ける恐れがなく、それゆえビットパーフェクトとして知られるオリジナルの信号に忠実であると一般的に考えられている。
しかし残念なことにコンピューターの中のデジタル世界は完全な0と1で構成される理想世界ではない。オーディオ信号はさまざまな構成物を通り、それぞれが音質に影響を与える。
これからその詳細を見ていき、"ソースダイレクト"の手法がその悪影響を最小限に抑え、CDプレーヤーを越える高い音質を達成できることを確認したい。

訳注: 原文のflat-square world(直訳では平板世界)は現実世界に対して理想的な状態の(ありえない)世界の比喩として使用している。

第1章 音質劣化の原因

ビットパーフェクト出力を前提としても、ソース機材としてのコンピューターは二つの大きな理由によって音質が劣化する。

*ソフトウエア要因のジッター
デジタル信号は実際のところ、電圧の閾(しきい)値によって二つの状態が分割されるアナログの波形である。(閾値の上ならば1で、下ならば0ということ)
[MeitnerGendron91]で示されているように受信側はアナログの閾値を越えた瞬間を検知している。加えてある状態から他の状態への遷移は瞬間的ではなく斜面のようになっている。そのためソースの基準電圧(Reference Voltage)のわずかな変化が時間的な変位をもたらしてしまう。

Figure 1: 基準電圧差によるジッター
(1)の基準電圧の差が(2)のrising edge(立ち上がり)の時点でレベル検出をするさいに時間の差を生じてしまう。(Thresholdはしきい値)


つまりソースの基準電圧の変動はジッターを生じる。これは[HawksfordDunn96]に詳述されている通りだ。
これは受け手側の不安定な電源供給やグランド電圧によって左右される閾値測定の変動についても同じことが言える。
さらにコンピューターでさえもグランドは同じケーブルと共有されているためこの影響を与えてしまう。

コンピューターの負荷(computer load)とはCPUと周辺機器からの常に変化する電源要求を意味していて、要求のピークはソフトウエアの挙動と直接関係がある。

*電波およびさまざまな要因による干渉
加えて計算処理やディスクのアクセスなどさまざまな処理は信号線を複雑な波形の電流が流れることを意味しているので、これは電磁的な干渉を引き起こす。いまはアップル製のコンピューターは「ユニボディ」アルミシャーシによって十分な遮蔽が行われているが、ケーブル自体がアンテナとして機能してしまうためにこの遮蔽は十分ではない。
またこれらの波形電流はコンピューターのPSU(電源ユニット)に逆流して主電源を汚してしまう。

第2章 OSXの隠れたオーディオフィルター

現代オペレーティングシステムとしてOSXは実行中のすべてのアプリケーションに、オーディオ出力を含むデバイスへの共有アクセスの手段を提供する必要がある。しかしそれは音質の劣化と引き換えにされてしまっている。

*オーディオ・ミキサー
もし都合の良いことに音楽再生をしているアプリケーションがただひとつであれば、それは信号に影響を与えることはないのでこの場合にはビットパーフェクトは達成できる。

*サンプルレート変換
この共有モデルではデバイスのサンプルレートを楽曲のサンプルレートにあわせて切り替えられないのでサンプルレートが変換されてしまう。
加えてリアルタイムオペレーションのためCPU負荷を減らさねばならないので、最適ではないアルゴリズムが用いられている。
(訳注: MacのAudioMidi設定による変換のこと)

*デジタルボリュームコントロール
OSXはミキサーを介したボリュームコントロールを提供している。(iTunesで提供されているものと同じと言うこと)
デジタルボリュームにおいては100%から離れるほどビットパーフェクトではなくなり、精度の低下を招くことになる。(25%のボリューム値は2bitの精度の低下を意味している)

第3章 DACへのデータ転送

まずはじめに内蔵されているTOSLINKを使用するDACへの接続が考えられるが、これはジッターが多すぎるので本格的な使用には向いていない。
より優れたコンピューターへの接続法としてはUSBもしくはFireWireを使用するのが望ましい。
FireWireはマルチチャンネルの大量なAVデータのストリーミングを保障するように設計されているためプロ市場で長く使われてきた。しかしその複雑な運用方法(たとえばドライバーインストールが必要であるとかホットプラグインでの問題点など)や先行きの不透明感により、いまはUSBが広く使われてきている。

最初のUSBデバイスはアダプティブ(またはシンクロナス)方式であり、これはDACのクロックがコンピューターからの連続的なデータストリームに従属するものである。
最近のさらに進んだUSBデバイスではアシンクロナス方式が採用されている。これはDACがオーディオデータの流れをコントロールし、バッファリングしてDACのより安定した低ジッターのクロックを使用するというものである。それゆえこの方式はUSBストリームのごく短い中断(バスリセットや他のデバイスによるバースト転送)に影響されず、コンピューター側のジッターの多いクロックにあまり左右されない。
これはUSBの簡便さ(ドライバーインストール不要)とFireWireの安定性という二つの世界の良いところを併せ持っていると言える。この方式は音質向上への大きな進歩であるが、DACをコンピューターから完全に切り離すことはできず、グランドループを皮切りに始まる干渉問題やソフトウエア要因のジッターは相変わらず存在している。

第4章 プレーヤーソフトウエアの影響

まず第一にすべてのプレーヤーは次のように信号のビットパーフェクト再生を確保するべきである。
  *DACのサンプルレートに曲のサンプルレートを合わせて不要なサンプルレート変換を回避すること。
  *他のアプリケーションの干渉を排除するためにデバイスへの排他アクセス(hog mode)を使用する。

さらに第1章で見たようにコンピューターの負荷(および類似の問題)は音質に影響を与える。これらの電流要求とソースの干渉を最小化することがキーとなる。
1. 再生の前に(電源ノイズとRFIの影響を避ける目的で)ディスクアクセスを減少させるためメモリーにロードしておく(メモリー再生)。(原注1)
2. オーディオのデータストリーム処理に関する「同期的CPU負荷」(Syncrounous CPU load)を最小化する。ジッターの低減に加えて、これは特に低域における可聴域のRFIを減少させるのに役立つ。(原注2)

(訳注: 「同期的CPU負荷」(Syncrounous CPU load)とはDACからのリクエストによるCPU負荷のこと。)

第5章 ドライバーレベルでのさらなる最適化:インテジャーモード

OSXでのオーディオ再生は大方がAudio Unit Graph [AppleCoreAudio]のような高レベルのフレームワークによって実行される。
オーディオプレーヤーにおけるまずはじめの最適化はこれらのオーバーヘッドをバイパスして直接CoreAudioでのもっとも低レベルの層であるHAL(Hardware Abstraction Layer)にダイレクトにアクセスすることである(fig2参照)。

Figure 2: 普通のプレーヤーソフトとオーディオファイル向けプレーヤーソフトの概念の違い
 訳注) 左は通常のオーディオプレーヤーの流れで四角い囲みの中がAudio realtime graphという高レベルのモジュール。右はオーディオファイル向けプレーヤー。
線の上はユーザー空間(アプリケーションの領域)で下はカーネル空間(OSの領域)。
カーネル空間でデバイスドライバーとDACのやりとりが行われている。



浮動小数点(float)モード
通常の実行ではユーザー空間とカーネル空間の境界を行き来するデータのやりとりは32bit浮動小数点形式で行われる。これは異なるオーディオストリームのミキシングプロセスとソフトウエアクリッピングを容易にする。[ Audio HAL_1]
このときでも24bitの範囲であればビットパーフェクトを達成できることに注意して欲しい。(原注4)

インテジャー(integer)モード
HALへの直接のアクセス[AppleHAL_2]は上述した通常モードにおける下記の二つの大きなオーバーヘッドをバイパスできる可能性がある。
*バッファでのミキシング
*浮動小数点からDACネイティブフォーマットへの変換

Figure 3: 浮動小数点モードとインテジャーモード
 訳注) 左は通常の浮動小数点モードの流れを示していて、赤い囲みが本文中で言及されているオーバーヘッドを示している。右がインテジャーモードを示していて、単一のDACネイティブ形式での流れとなっている。


インテジャーモード(fig3)においてはプレーヤーソフトはすでにDACのネイティブ形式にフォーマットされたオーディオストリームを送出する。それゆえ「同期的CPU負荷」をドライバーレベルで最適化することができる。
この動作はカーネル空間であるドライバー内部でリアルタイムで行われるため、音質における最重要経路(クリティカルパス)となっている。なぜならそれらはDACとのデータ転送において即時性が生じる瞬間に起きる最も同期的なものだからだ。
それゆえこの最適化による効果は大きいが、この標準的でないモードを許容できるDACにのみ使用することができる。

結論

コンピューターは優れたミュージックサーバーだが、仮にビットパーフェクトが確保できたとしても音質を低下させるジッターとRFIの根源でもある。
プレーヤーソフトはこのオーディオストリームと関連した同期的な負荷による音質低下の影響を最小化するために、信号経路を最適化して整える必要がある。これにはビットパーフェクトに加えてソースダイレクトがそのキーとなる。
このことがすなわち私がAudirvanaにおいて、インテジャーモードでリアルタイム処理を単純化して、(ディスクからの読み取りやデコード、DACへのネイティブフォーマットへの変換など)他の動作は準備フェーズにオフラインで実行しておくことで、リアルタイム性能を最大限に発揮させるように効率化したということである。
これは完全メモリー再生(Full Memory Play)と呼ばれる。

最も良い結果はAMR DP-777のようにインテジャーモード、アシンクロナスUSBの対応が可能で、これらのすべての最適化の利点を享受できるものによって得ることができる。

(訳注: ComputerAudiophileのDamienさんの書き込みによると他のプレーヤーソフトとAudirvanaはメモリー再生と言う点について異なった考え方を持っている。他のプレーヤーソフトではHDD上のファイルの形式のままメモリにおいておくと言うキャッシュのような考えだが、Audirvanaではサンプルレート変換も含めてあらかじめメモリー上にデコードしたデータを置くと言うことで再生時の負荷を減らすと言う考え方が貫かれている)



原注1) HDDをSSDに交換すると直接的な機械的要因のノイズを取り除くことはできるが、長いケーブルを走る電流波形など他の要因の影響はまだ残る。まだOSのオーバーヘッドも以前として存在している。

原注2) OSXの低レベルオーディオサブシステムでは通常データを512フレーム・チャンクで要求している。つまり周波数では44.1kHzのサンプルレートで〜86Hzに相当する。

原注3) ソフトウエアボリュームコントロールを含むすべてのフィルターが取り除かれればビットパーフェクトは可能である。つまり普通のiTunesでもビットパーフェクトでありうる。

原注4) 32bit浮動小数点は1ビットの符号と8ビットの指数部、23ビットの仮数部から構成される。つまり有意な精度は24bitである。



参考文献

[hawksfordDunn96] Bits is Bits ?
Streophile 1996年3月号

[MeitnerGendron91] Time Distortions Within Digital Audio Equipment Due to Integrated Circuit Logic Induced Modulation Products
Ed MeitnerとRobert Gendronの91回AESコンベンションでの講演資料 (New York, October 1991, Preprint3105)

[AppleCoreAudio] CoreAudio Overview: What is CoreAudio ?
Mac OSX開発者向けライブラリ

[AudioHAL_1] Audio Device Driver Programming Guide: A Walk Through the I/O Model
Mac OSX開発者向けライブラリ

[AppleHAL_2] AudioHardware_h documentation
Mac OSX開発者向けライブラリ
posted by ささき at 11:24 | TrackBack(0) | __→ PCオーディオ・ソフト編 | このブログの読者になる | 更新情報をチェックする