FC2ブログ

WASAPIおそるべし

09/09/26初稿

■ビットパーフェクトが基本じゃなきゃヤダ

 PC-Audioするにあたっては、まずはDigitalデータを「ビットパーフェクト」でPCから出力できないことには始まりません。何らかの演算が入ってしまうと、その性能で音質が支配されてしまうためです。

 また、ユーザが意図しない・把握できない演算は、OSやアプリのバージョン違いで処理内容が変わってもそれを知る術がありません。
 下流でいろいろチューニングしても、出力データ品質が一定でないと何をやってるのか判らなくなりますよね。
 論点は「ビットパーフェクトならいい音なのか」ではないと思っています。

 さて、その観点では、OSのサウンドAPIが大変重要になってくるワケですが、WindowsVistaから搭載されている「WASAPI(Windows Audio Session API)」をご存じですか?
 悪名高いXPまでのカーネルミキサを使ったAPIに代わるもので、ASIOと同じような機能性能を持っているらしいです(いわゆるビットパーフェクト出力が可能)。ただし「排他モード」の場合です。「共有モード」は従来通りOSのサウンドエンジンを通ります。
 WASAPI排他モード出力のビットパーフェクト性については確認実験してありますので、よろしければ合わせてご覧ください。

 排他WASAPIは「OS標準API」ってところがミソです。
 ゆえにASIOと違って「対応ハードウェアを選びません」が、逆に「プレーヤ側が、使えるAPIとして排他WASAPIに対応している必要」があります。

 現時点では≪uLilith≫や≪foobar2000≫で対応してます(β版レベルですが)。
 とりあえずとっかかりは純国産でフリーウェアで何もしなくても排他WASAPIが使える≪uLilith≫がよさそうです。

 なお、「VistaではSP1以降じゃないとマトモに動かない」「Win7ではさらに改良されている(イベント駆動対応追加など)」といったWindowsバージョンによる違いもあるようです。


 排他WASAPIは、とにかく恐ろしいほどの正確さで鳴ります。通常のCDプレーヤで鳴らす音とは一聴して違いが分かると思います。
 ≪uLilith≫で「排他WASAPI」と「DirectSound」のAPIだけを切り替えて聴き比べてみると、排他WASAPIでは細かい音がこれでもかというくらい聴こえてくるようになるため、それまで聞こえなかった楽器が聴こえ、チャンネルセパレーションが向上してステレオ感が増し、空間表現が深くなります。

 メジャーなプレーヤソフトが対応したらPC-Audioのものすごいコストパフォーマンスが知られ、いろんな変化が起こるような気がしています。≪iTunes≫は無理っぽいけれど本家≪WMP≫はもしかして?
 10/04/19追記:↑と書いてたら、≪iTunes≫(というかプレーヤ本体の≪QuickTime≫)でのWASAPI対応が始まってるみたいですね。ただ、今のところ「32bit版しかない」&「排他モードではなく共有モード」のようですが。
 13/01/13追記:ウワサでは≪QuickTime7.6.9≫から64bit対応したようです。7.7.3で確認しました。共有モードだけ、のままですけれど。

 もちろん、PC-Audioと言ってもちゃんとチューニングしないといい音で鳴らないのは普通のAudioと同じです(特にDACを含むアナログ段)。


■WASAPI排他モード対応プレーヤ

 10/10/02追記:排他WASAPI対応プレーヤソフト、上記以外で私が知ってるもの(基本フリーのもの)を一覧しておきます。もちろんこれで全部ではないでしょう。

・XMPlay
 排他モードかどうか未確認。ですが項末追記参照。

・PlayWASAPI
 Windowsのボリューム効かなかったので排他モードらしいです。≪uLilith≫との音質差は感じられず。

・cMP
 本格導入してませんが、Explorerの手動OFFとcMPでのOFFで違いは感じられず。

・PlayPcmWin
 試してません。メモリ食うそうなので… ≪RecPcmWin≫という排他WASAPI録音ソフトもあって実験に便利です。

・J.River Media Center 15(JRMC15)
 フリーウェアではありませんが。Music TO GO!さんに詳しい。ちなみにフリーの≪JRiver JukeBox14≫はWASAPI非対応でした。

・HQ Player
 排他モード対応だそうな。フリーウェアではありませんが。Music TO GO!さんに詳しい。

・MusicBee
 排他モード対応らしい。Rippingも出来るそうな。

・PhilePlayer
 11/08/23追記。

・Wave Pcm Upconvert Player
 11/09/19追記。リアルタイムアップコンバータです。イベント排他対応。

・MediaMonkey
 11/11/27追記:排他モード対応。64bit版あり。

・WaveSpectra
 12/03/11追記:かの有名なFFT解析フリーソフトが1.50から対応。排他専用、イベント・タイマー両対応。

・ありぱぱプレーヤ
 13/02/03追記:排他モード対応。

・PowerDVD14
 14/04/09追記:なんと≪PowerDVD≫が排他WASAPIに対応だそうな。もちろん市販品。

・TuneBrowser
 15/09/14追記:排他モード対応。push/event両対応。64bit版あり。

・Music Center for PC
 17/09/12追記:SONY謹製ソフトが排他モード対応。SONY製品以外もOK。なんとASIOにも対応!

 13/06/26追記:「Un4seen」というAudioライブラリ開発プロジェクトがあり、排他WASAPIにも対応しているようです。≪XMPlay≫が当該プロジェクトの“純正”プレーヤに当たるようですね。
 それを用いたプレーヤは排他WASPI対応になりえるということで、上にも挙げた≪MusicBee≫の他、≪Fittle-f4b24≫≪Lutea≫といったソフトも存在するようです。


■排他WASAPI VS PDAP

 カーネルミキサを経由しない独自システムとして、ONKYOが提供しているのが「PDAP」です。
 そのPDAPを搭載したHDC-1LというPCがありますが、インストールされているPDAP用プレーヤの≪PureSpace≫では、出力USBデバイスを選択できるのです。
 なので、PDAPでHDC-1L内蔵サウンドボード(内部USB接続&Outputはアナログのみ)以外にUSB接続で外部のUSB-DDCを鳴らすことも可能になります。つまり、同じ外付けUSB-DDCに対してPDAPと排他WASAPIの「API的な意味での音質比較」が出来るということです。

 ということで実現する標題の夢の対決。外付けUSB-DDCには同じくONKYO製のSE-U55SXを使います。OSとAPIとプレーヤソフトを変える以外、ハードウェア的には全く同じ状態での比較となります。

 あくまでも
「HDC-1L標準いろいろ入りXP上のPDAPの≪PureSpace≫→SE-U55SX」と、
「HDC-1LにクリーンインストールしたWin7RC(32bit)上の排他WASAPIの≪uLilith≫→SE-U55SX」
の勝負となりますけれど。

 …明らかに「排他WASAPIの≪uLilith≫」の勝ちでした。

 ただし、OS自体の差、USBドライバの差、などなどAPI&プレーヤソフト以外の要因もいろいろ考えられることを付記しておきます。


■Windowsのサンプリングレート対応

 OSバージョンによって対応しているサンプリング周波数は結構違うらしいです。
 例えばONKYOサイトのSE-90PCIやSE-200PCI(2000,XP,Vistaまで対応している)製品説明ページによると、90PCIとしての対応サンプリング周波数32/44.1/48/88.2/96/176.4/192kHzのうち、

・Windows2000…32/44.1/48/88.2/96/176.4/192kHz
・WindowsVista…32/44.1/48/88.2/96/176.4/192kHz

だそうな。つまり持ってるスペック全部対応できるのはXPだけということです。
 おそらくVistaとWin7は同等と推定されます。
 XPじゃWASAPI使えないから、ERI的PC-Audioでは32/88.2/176.4kHzは諦める必要があります(32kHzはいいとして)。

 176.4kHz(CDの4倍サンプリング)や192kHzは必須じゃない(というかそれが意味があるレベルまで使いこなす自信はない)と思いますけど、CDの2倍サンプリングになる88.2kHzは対応してて欲しかったところ。
 何故って、CDからRippingしたソースをPCでUpSamplingしたファイル作っても、96や192kHzにReSamplingされちゃうワケだからちょっとキモチワルイです。
 まあ、実害はないですけど、なんで44.1kHz系の対応を切っちゃったんだろうなぁ。

 10/10/30追記:と書きながら、この制限は共有モードにおけるミキサの仕様なんじゃないかと思ったりする今日このごろ。WASAPI排他モードは制約受ける理由がないような気がするからです。
 で、Clarkdaleで組んだPC(Windows7)で実験してみたところ、各再生デバイスの「共有モードで使用されるサンプルレート」プロパティでは

・オンボードサウンド(Realtek ALC892)
   16bit:44.1/48/96/192
   24bit:44.1/48/96/192

・PCIカードSE-90PCI(VIA Envy24MT)
   16bit:44.1/48/96/192 (Win7用ではVistaにあった88.2と176.4は出ない?)
   24bit:44.1/48/96/192
 *:プロパティに表示されるのはユーティリティで設定した1モードのみ

・USB-DACのSE-U55SX
   16bit:44.1/48/96
   24bit:44.1/48/96

・DSP-Z7と接続したHDMI
   16bit:32/44.1/48/88.2/96/174.6/192
   24bit:44.1/48/96/192

が可能なようです。

 あれ? HDMIの16bitには32や88.2や176.4があります。ということは共有モードの制約でもないようですねぇ。≪uLilith≫の排他WASAPIモードでの使用できるフォーマット確認の内容とも一致しますし… VIAやRealtekのサウンドチップ用ドライバはOS標準じゃないのでドライバ側の制約じゃないだろうし… U55SXで192ができないのはUSB-Audio class1.0の仕様ですよね。

 HDMI-Audioなら88.2や176.4もイケるの不思議だなぁ。16bitだけですが出来るだけめっけもの。実際、UpSamplingソフトで作ったWAVファイル、≪uLilith≫からの排他WASAPI経由のHDMI出力がDSP-Z7の表示で88.2kHzとなったのは確認しました。
 さらにあれ~? このファイル、24bitのハズなんだけど…

 HDMIの詳細はHDMI-Audioの可能性を考えた記事にて。


■PC-Audioと排他WASAPIとファイル再生と

 ちなみに当Blogで記す「PC-Audio」とは、PCを使った(ファイル再生を中心とした)プレーヤを組み込んだAudioシステムのことを指しています。具体的に言うと、CDプレーヤの代わりにPCプレーヤを使ったAudioシステムのこと。決してPCの光OUTをアクティブスピーカで鳴らすことを言っているワケではありません。

 いずれにしても「余ってるPCを使って投資しないでそれなりの高音質」ではなく、従来のディスクプレーヤシステムに替わるプレーヤシステムとして正当な投資をして高音質を目指すものです。だってコストパフォーマンスはバツグンによさそうですし、“いじくる”ポイントが多くて楽しい(苦しい?(笑))ですし。

 WASAPIについては、MS社のMultimediaサポートチームのBlogという「楽しいハック講座 (4) Windows7 オーディオアーキテクチャの概要」(*)に技術的解説があります。

*:http://blogs.msdn.com/b/windows_multimedia_jp/archive/2010/06/28/4-windows7.aspx


メインメニューへ

テーマ : オーディオ
ジャンル : 趣味・実用

最新記事
ERIへようこそ

Author:らかせ
「最新記事」または
「メインメニュー」からどうぞ

・ファイルへの直接リンク以外はリンクフリー(連絡不要)です

・一応、拍手にコメント(非公開)付けられるようにしてあります

・DB的に利用しており、過去記事もガシガシ書き換えています。特に「最新記事」は初稿から一週間くらいは直してることが多く、大幅に変わっちゃうことも。ご了承ください

・ということもありますし、記すまでもないですが無断転載(ファイル含む)はご遠慮ください

・引用の考え方については「007:諸事」をご参照ください

・ハイパーリンクは当Blog記事のみです(054:節電記事のみ例外)

・Amazonアソシエイトに参加しています(アフィリエイトはAmazonのみです)

カテゴリ
検索フォーム
FC2カウンター