SSブログ

ビットパーフェクトの落とし穴:WASAPI排他モードでPC音量をmaxにしてはいけない理由 [オーディオTips]

 PCオーディオをできるだけ高音質で楽しもうとする場合、WASAPI排他モードなどを利用して音楽ソースのデータを改変することなしに、ビットパーフェクトでDACに送り込むことがまずは大前提となります。その考え方自体は別に間違っていないのですが、送り込むDACの物理動作を理解した上で使わないと、思わぬ副作用が出ることがあります。
 今回はこの「ビットパーフェクト」に潜む意外な落とし穴を、実際のDAC出力波形を観測しながら明らかにしていこうと思います。

 DACのアナログ出力には量子化誤差を含む残留雑音がありますので、信号をフルスケールいっぱいに出力し、その後アナログのアッテネータで音量を調整するのが最もS/Nおよび歪率の良い結果が得られます。そのため、多くのオーディオ解説本やwebサイトでは、PCからの送り出しボリュームをmaxに設定することが推奨されています。
 実は、WASAPI排他モードで接続していてもPC側で音量調節は可能です。Windows10の場合、タスクバーの通知領域にあるスピーカーアイコンで0~100の設定ができます。PC側で音量調節ができたらビットパーフェクトではないのでは? と思われるかもしれませんが、これはOSがデータを加工して (ビットを落として) 音量調節をしているわけではなく、音声データはビットパーフェクトで渡しつつ、それとは別にDACに対して音量指示を行っているからです。このOSからの音量指示にDACが従うかどうかはそのオーディオデバイスの実装次第ですが、大抵のオーディオデバイスにはデジタルアッテネータ機能が内臓されており、OSからの音量指示に従って調節されたアナログ出力が出てきます。
 DACの出力フルスケールを使い切るには音量設定をmaxにするのが正しそうですが、現実のDACチップ内ではエリアシング除去のためにデジタルオーバーサンプリングフィルタが必ずと言っていいほど使われており、この部分の過渡応答に対する振幅マージンに注意する必要があります。これは ISP (Inter Sample Peak) やトゥルーピークとして知られている問題と基本的には同じです。

 実際の波形を見ながらの方がわかりやすいので、ここからは手持ちのUSB-DACの実波形で検証していきます。用意したUSB-DACは以下の2機種です。

1) Luxman DA-100
2) CREATIVE SB-DM-PHDR2 (USB Sound Blaster Digital Music Premium HD)

DA-100_FrontView.jpgSB-DM-PHDR2_FrontView.jpg

 搭載しているDACチップは、DA-100がTI(バーブラウン)のPCM5102、SB-DM-PHDR2は旭化成のAK4396です。それぞれのDACチップのデータシートの一部を参考までに掲載しておきます。ブロック図を見ればお分かりのように、どちらの石も受け取ったデータはまず8倍オーバーサンプリングのデジタルフィルタで補間とエリアシング除去のためのLPF処理が行われ、その後ΔΣ変調器へと送り込まれています。

PCM5102_BlockDiagram.png

AK4396_Feature.pngAK4396_BlockDiagram.png

 それでは、DAC出力の波形を見てみましょう。波形の生成には WaveGene (WG.exe) を使います。WGの再生デバイス設定でドライバにWASAPIを選択すると、DACが受け取り可能なオーディオフォーマットが確認できます。USB接続のDA-100は 32/44.1/48/96kHz × 16/24bit がネイティブのデータフォーマットとして使えます。SB-DM-PHDR2は 48/96kHz × 16/24bit のみがネイティブでサポートされており、CDの44.1kHzはWASAPI排他モードでは再生できません。

WG_PBDevice_DA100.pngWG_PBDevice_SB.png
WG_PBDevice_format_DA100.pngWG_PBDevice_format_SB.png
WG_Panel.png

 WGでLchに振幅0dBFSの1kHz矩形波、Rchに同じく振幅0dBFSの1kHz正弦波を出力し、ラインアウト (RCAコネクタ) の電圧波形をオシロで観測した波形を示します。オシロのCH1(黄色)がLchの矩形波、CH2(水色)がRchの正弦波です。データフォーマットは上が fs=96kHz/24bit、下が fs=48kHz/24bit、OS (Windows10) の音量設定は最大の100としています。
 水色の正弦波のピーク to ピークが入力データ24bitのフルスケールになります。DA-100は2.1Vrms (= 5.94Vp-p) がライン出力電圧仕様となっていますので、仕様書通りの出力波形が観測されています。SB-DM-PHDR2も実測波形からフルスケールが2.2Vrms (= 6.2Vp-p) となります。

OS音量設定
DA-100_Win10_Vol_100%.pngSB_Win10_Vol_100%.png
fs=96kHz/24bit
WG1kHz_96ksps_DA100_Vol100.JPGWG1kHz_96ksps_USBSB_Vol100.JPG
fs=48kHz/24bit
WG1kHz_48ksps_DA100_Vol100.JPGWG1kHz_48ksps_USBSB_Vol100.JPG

 さて、ここで矩形波のエッジに乗っているリンギングに注目してください。これはDACチップ内のオーバーサンプリング・デジタルフィルタで発生しているもので、WGから送り込んでいる大元の96kHz/24bitの矩形波データにこのリンギングはありません。DA-100はPCM5102に内蔵されている2種類のデジタルフィルタ (FIR/IIR) を切り替えて使うことができますが、ここではデフォルトのFIRの方を選択しています。AK4396もシャープロールオフとスローロールオフの2種類のデジタルフィルタを積んでいるのですが、SB-DM-PHDR2には切り替え機能が付いておらず、デフォルトのシャープロールオフに固定となっている模様です。
 デジタルオーディオに対する初歩的な誤解の一つに、こんなプリエコーがついて1kHzの矩形波ですらまともに再現できないシステムは欠陥なのではないか? というものがあります。この誤解は、WGで作ってDACに送り込んでいる矩形波が現実世界にも存在していると錯覚していることから生じています。サンプリング定理は1/2fsで帯域制限されたアナログ波形が「完全に」再現できることを保証しています。1kHzのアナログの矩形波を1/2fsで帯域制限してA/DしたデータをこのDACに送り込めば、A/D前の矩形波の波形は完全に再現できます。そこにリンギングなどは生じません。WGで作る矩形波はサンプリング定理に違反しており、自然界には存在しない波形なのだということを理解していないと、頓珍漢な言いがかりに陥ってしまうことになります。
 話がそれました。本来であれば、このリンギングはDACフルスケールの外までオーバーシュートしているはずなのですが、DA-100ではちょうどフルスケールで頭打ちにクリップしていることがわかります。PCM5102はΔΣ併用のカレントセグメントDAC方式ですので、出力振幅はDACの上下レールできっちり制限されていると思われます。
 一方、SB-DM-PHDR2は正方向には振幅マージンがあってオーバーシュートが再現できていますが、負方向では振幅マージンが足らず、クリップしています。AK4396は SCF (スイッチド・キャパシタ・フィルタ) によるアナログ変換なので、DAC自体に多少の振幅ヘッドマージンはあるものの、後続のポストアンプがクリップしているように見えます。
 いずれにせよ、波形がクリップすると高調波が発生しますので、後続のアンプにとっては百害あって一利なしです。DACのデジタルフィルタのリンギングは1/2fs付近の成分なので、普通は人間には聞こえず、問題ないのですが、それがクリップしてさらに上の可聴域外の高調波が発生すると、アンプの非線形性による相互変調歪の原因となるばかりではなく、NFBの腰が据わらない不安定な動作になってしまいます。せっかくデジタルフィルタで1/2fs以上の帯域外イメージを頑張って抑え込んでいるというのに、ここで歪ませてしまっては元の木阿弥です。

 というわけで、WGから送り込む波形データはフルスケールの振幅のままにして、OSの音量設定を80に落としてみたのが次の波形です。

OS音量設定
DA-100_Win10_Vol_80%.pngSB_Win10_Vol_80%.png
fs=96kHz/24bit
WG1kHz_96ksps_DA100_Vol80.JPGWG1kHz_96ksps_USBSB_Vol80.JPG
fs=48kHz/24bit
WG1kHz_48ksps_DA100_Vol80.JPGWG1kHz_48ksps_USBSB_Vol80.JPG

 両DACともオーバーシュートのピークまで線形出力範囲に入っており、歪の発生はありません。DACの物理フルスケールから3dB落ちで使用することになりますのでS/Nはそれだけ悪化しますが、背に腹はかえられません。

 次に、fs=96kHz/24bit で 12kHz の矩形波と正弦波を出力した時の波形を示します。

OS音量設定100
WG12kHz_96ksps_DA100_Vol100.JPGWG12kHz_96ksps_USBSB_Vol100.JPG
OS音量設定80
WG12kHz_96ksps_DA100_Vol80.JPGWG12kHz_96ksps_USBSB_Vol80.JPG

 こちらも音量設定を80まで絞ることにより、波形歪を回避できています。1bit系DACであるAK4396を使っているSB-DM-PHDR2が滑らかな波形を出力するのに対し、PCM5102を使うDA-100の出力はかなり凸凹が目立ちます。ΔΣ変調を併用しているとは言え、マルチビット系の思想で設計されているPCM5102は 4fs (=384kHz) 刻みで確定電圧を出力するので、このような波形となります。バーブラウン (現TI) は1bit系よりもマルチビットDACの方が聴感上好ましいとの哲学から、こういった形式のDACを開発してきました。DA-100はやや古いモデルですが、筆者もこちらの音の方が好みです。

 以上、WASAPI排他モードで「ビットパーフェクト」を目指す場合の注意点を検証してみました。そもそも、DACチップ内では必ずハードウェアによるリサンプリングと語長拡張が入るため、「物理DACのアナログ出力までビットパーフェクト」という概念自体が幻想なのかもしれません。ともあれ、出力するDACの物理特性を理解して使うのが肝要です。筆者がDA-100を使うときには、OSの音量設定は80にしています。
 最後に、誤解のないように付け加えると、今回の問題を引き起こしているのは、DACのデジタルフィルタの設計ミスでもデジタル信号理論の欠陥でもありません。1/2fsに帯域制限されたアナログ信号を真っ当にサンプリングしている限り、デジタルフィルタで過渡応答がフルスケールをはみ出るなどということは起こり得ません。全ての原因は、サンプリング定理を無視して波形をフルスケールに張り付かせる海苔波形マスタリングにあります。海苔ではないまともな音源を再生する場合には、OSの音量を100にした「ビットパーフェクト」で何ら問題はないのです。しかし、海苔音源が跋扈する現状では、ユーザー側が自衛するしかありません。実に嘆かわしい話ですが。

 → 記事一覧に戻る
タグ:海苔波形
コメント(4) 
共通テーマ:趣味・カルチャー

コメント 4

とおりすがり

そんな高調波成分の入った楽曲なんかないから気にしなくていいですよ。
普通は、mixのときに高周波成分はカットします。
耳に聞こえない成分を載せると実効音圧を上げられないので、制作現場では当たり前に行われています。
この辺がオーディオファイルの哀れなところと言うか、、、
by とおりすがり (2021-04-13 10:23) 

さんちゃん

高周波成分をカットしようがしまいが、波形をフルスケールにクリップさせることがトゥルーピーク発生の原因だと思うのですが、違うのでしょうか?
by さんちゃん (2021-04-17 08:56) 

6ZP1-12F

コメントありがとうございます。
そのご理解の通り、補間フィルタによるフルスケールはみ出しは、楽曲に含まれる高周波成分の有無とは関係ありません。たとえ楽曲に1kHzの正弦波しか含まれていなくても、音圧を上げてピークを潰していけば、波形のコーナーで記事中の矩形波のエッジのようなオーバーシュートが発生してしまいます。
記事中にも触れましたが、世間ではデジタル信号理論の初歩的な理解不足による間違った主張が氾濫していますので、誤解される人が出るのは致し方ないと思います。
by 6ZP1-12F (2021-04-18 15:49) 

お名前(必須)

今時PCとDACをアナログ接続で使用する人などいないと思いますよ。
USBで接続されているか方が殆どじゃないですかね?
余計なお世話でしょうが、技術的、理論的な細かな事よりも、きちんとしたデバイスを選んで楽しんで音楽を聴いた方が遥かに幸せになれると思いますよ。
by お名前(必須) (2022-02-01 18:17) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。