タグ別アーカイブ: WASAPI

高音質と評判のメディアプレーヤー各種を比較試聴してみた

ここ最近の人気記事は,ReClock,PlayPcmWinといったWASAPI排他モードに関係する記事になっています。あと根強く人気なのが,mhiのEvidence MM01Aの記事ですね。これは公開後からずーっとコンスタントにアクセスがあります。
というわけで,今回はWASAPIにも対応する新しいアプリをテストするとともに,これまでご紹介したメディアプレーヤーを比較試聴することにしました。

▼XMPlayを試してみる
BASSライブラリを使った軽量なWASAPI,ASIO対応アプリXMPlayが結構面白いです。海外では音質も高い評価を得ているようです。ちょっとわかりにくいので日本語で解説が書いてあるページをご紹介しておきます。
http://www.gigafree.net/media/music/xmplay.html

XMPlayはASIO動作時にはクリア系で解像度感の高い音ですが,WASAPI動作時にはASIOに比べて若干重心が低くなって低域の量感が増える傾向です。小音量時はXMPlay(ASIO)のほうが気持ちの良い爽快感のある音ですね。音量を上げるとちょっと薄く感じるかもしれません。やはりOSをいじっていない環境ではASIOよりWASAPI排他モードのほうが好きですね。音が太いですし,低域のスケール感が違う印象です。

▼PlayPcmWin
http://www.spatiality.jp/articles/playpcmwin
PlayPcmWinは落ち着いた音ですね。ベースの音が浮き出てくる感じで低域フェチの方にはかなりお薦めです。ある程度音量を上げると安定感のある充実したサウンドになりますが,小音量時はちょっと間怠っこしい印象も…。ただし,試聴に使ったものが最新版ではないので後日再テストの必要がありそうです。

▼ReClock
http://www.spatiality.jp/articles/reclock-1
ReClockですが,WAVファイル等を再生する場合には勝手にAudioがクロックのMasterになって選択不可になりますので,動画再生時の設定でVideoをマスターにしていても問題ありません。MPC-HC+ReClockで聴く限りはXMPlayより帯域バランス重視に感じますが,反面他のアプリと比較して音像が平面的に鳴るのが気になります。KMPlayerでは改善されるのでしょうか。今後の検討課題です。

▼まとめ
帯域バランス:高域重視 XMPlay(ASIO)>XMPlay(WASAPI)>MPC-HC+ReClock>PlayPcmWin 低域重視
音像定位:音像定位はどれも良好だが個人的にはPlayPcmWinが好き。
音場:基本後方展開,音場やや浅めが共通。MPC-HC+ReClockは特に平面的。
となりました。XMPlayのBASSライブラリを使ったプレーヤーは他にもあるので,興味ある方は他のプレーヤーも試聴してみるとよいでしょう。個人的にはLynx系カードの良さはウォームな音にあると思うので,大きめの音量ならPlayPcmWinかなーといったところでしょうか。

フリーソフト全般で気になる部分としては,音場の前後感が希薄なものが多い点です。このあたりはDAWソフトのほうが優れている印象を持っています。ただ,各種プレーヤーで設定は色々いじれますので,私の感想が全てというわけではないことは改めてお断りしておきます。今回の環境はWindows7 Ultimate64bitでした。特段音質改善につながるような工夫はしていません。
現時点での結論としては,Windows7ではASIOよりWASAPI排他モードを使って頂くのが一番いいと思います。安定動作することのすばらしさは他には代え難いものがありますからね。ただしOSをかりっかりにチューニングしてくるとまた違ってくるかもしれません。

▼おまけ
MCI(Multimedia Control Interface)を使ったメディアプレーヤーを見つけてテストしてみました。Windows7では共有モードで再生されてしまうので,16bit/44.1kHzに共有モードを設定しての再生です。
まったりと全体的に柔らかい音なのでPCっぽくない音ではあります。…が,あまり良い印象は持てないですね。特に低域が本当に柔らかいです。何というか癒し系というか雰囲気系というか…。キックドラムの音とか,やたらとふわっとしてます。ある意味スムースジャズとかの緩い感じはうまく表現できていると思います。
逆に,こんなに変わるんだという意味では興味深いですが,若い方には受けなさそうな音ではあります。これもWindows7 Ultimate64bitでの試聴でした。

改めてReClockの設計思想と仕組みについて考えてみる

今回は頂いた質問等にお答えしつつ,ReClockのコンセプトをもう少しわかりやすくお伝えできればと思います。前回前々回の記事の内容も適宜ご参照ください。

▼そもそもどういうソフトなのか。
ReClockは,AVIファイルやmpegファイルの再生時のぎこちなさを確実に取り除くことを目的として,Windowsがデフォルトで採用するDirectSound Audioレンダラーの代わりに動作するDirectShowフィルターです。

ReClockはスムーズに動画を再生させるための機能として二つの機能を持っています。
一つ目は,ビデオカードのハードウェア上にあるクロックに同期させる(垂直同期=vsync)機能によって得られる正確なタイミングで,確実に画面の切り替えを行う機能です。二つ目は,ビデオカードのリフレッシュレートに合致しないフレームレートである動画ファイルであっても,ソフトウェア的な処理でフレームレートをリフレッシュレートに合わせる機能です。
そして,これに合わせて,リアルタイムにオーディオの再生レートを合わせるフィルター機能をもち,この3つで動画再生のスムーズさを追求しているわけですね。なお,このフィルター機能はカーネルストリーミングまたはWASAPI排他モードでも動作させることができます。

以上みてきたように,ソフトウェア名はReClock ですが,オーディオ的な機能だけに焦点を絞ると,実際はカーネルストリーミングまたはWASAPI排他モードが使えるリサンプラーアプリです。

繰り返しになりますが,そもそもの使い方は,ハードウェアのクロックに合わせて動画再生スピードを調整し,それにあわせて音声をリサンプリングしてスピードを調整し,リップシンクを行うソフトです。
さらに,現在リリースされているバージョンでは,オーディオのクロックを基準として動画の再生スピードを変更するという機能があり,オーディオ界隈では,どちらかといえばこちらの機能が注目された,といったところでしょうか。

▼頂いたご質問
それでは,微妙にわかりにくいReClockの音声リサンプリング機能について頂いたご質問について,みていきましょう。

[Q] ReClockが特殊なのは,いわゆるアップコンバート的なリサンプリングではなく,本来サンプリング周波数が44.1kHzのデータが44.1112kHz等に乱れてしまっている状態を正しく44.1kHzに戻してくれるのでしょうか?

違います。本来の使い方ですと,映像切り替えのタイミングに合わせて44.1kHzのデータを44.1112kHz等にリサンプリングしてくれます。この微妙なリサンプリングが肝のようです。
また,音声のみの再生の場合には,リサンプリングする余地は一切ありません。元々44.1kHzのデータがソフトウェアによって違う周波数に乱れるということはありません。WAVファイルの場合,ファイルの先頭に44.1kHzであると記録されていて,プレーヤーはそれを読み取って44.1kHzで再生しろとハードに伝えます。
つまり,ReClockが表示するBit Exact.というのは,まさに元のデータの通りに何も加工をしていないという意味です。

なお,PC 用ソフトなどでのリサンプリングというのはデジタルフィルターの課題の一つである高域の折り返し雑音と呼ばれる現象を回避するためのものであって,クロックとは本来的に無関係のものです。つまり,プレーヤー側でアップサンプリングしようが何をしようが,ジッター対策にならないのが原則論です。むしろ,PCMの場合,サンプリング周波数が上がるとジッターに対して弱くなってしまいます。
S/PDIFにせよAES/EBUにせよ,クロックを生成するのはあくまでサウンドデバイスであって,サウンドデバイスはデータのヘッダに記録されているサンプルレートに従い出力周波数を決めます。ですから,44.1kのデータをソフトウェア的に48kに変換してもジッター値が減少することはありません。
なぜなら,音声再生におけるジッターの問題とは,クロック信号を参照しながらデジタル信号を復調する際に問題となるクロック信号の揺らぎのことであるところ,デジタル信号を改変することはジッター発生以前の段階で行われるからです。

[Q] ReClockは他のWASAPIの排他モードに対応しているプレーヤーと違う音に聞こえるのですが,何故ですか?

簡単にいえば,ReClockは音声再生の時にWASAPI排他モードで再生してくれるだけです。DirectSoundと WASAPI排他モードではそれだけ音が違うということでもありますし,その驚きはXP時代からASIOを使っていた人が通った道でもあります。
WASAPI排他モードでもレンダースレッドタスクとデータ供給モードは選択的なので,同じWASAPI対応のプレーヤーソフトでも,その辺りの設定で変わることは考えられます。PCオーディオのエンスーな人達はOSの設定で音を調整していきますから,別段音が異なっても不思議ではありません(それが検知限以上か以下かは別問題です)。

というわけで,前回,前々回の内容も合わせて読めば,貴方もReClockマニア?お友達にも教えてあげられるはず!残すは音の違いですかねー。PlayPcmWinとの比較をしてみたいと思います。

メディアプレーヤーを何でも高音質化?ReClockの設定編

Slysoftが公開しているReClock,やはりちょっとわかりにくい部分がいくつもあるようですので,音質の話をするまえに,設定について少し解説をしましょう。大まかなコンセプトについては前回の記事をご参照ください。

以下はReClockの設定画面です。

Audio Interfaces to use for

これはハードウェアのジャンル名としての「オーディオインターフェース」を選択するのではなく,Windowsで音を出す機能を持つ各種の方法のうち,どれを選びますか?という項目です。
WindowsMediaPlayerはDirectSound経由で音を出しますし,多くのマルチメディアプレーヤーソフトも同様だと思います。
Windows7の場合,ここで「WASAPI Exclusive」を選択するのが肝心です。この設定をミスっているとReClockの恩恵は高精度なリサンプリングということに尽きることになります。WindowsXP等の場合には,Kernel Streamingを選択することがBit Exactの条件となります。

Devices to use with

これはDefault Deviceのままで構いません。

Sound pre-buffer

ここの数値は動画再生時にはかなり影響します。最大値はお手持ちのオーディオデバイスが持っているバッファ量に依存するようです。ノイズが入るようなら適宜調整してみて下さい。大きければ大きいほどよい,というわけでもないようです。

Max latency

Latencyとは遅延という意味ですが,バッファとして貯めているデータのうちどの程度の割合の遅延なら許すか,という設定項目です。あまり遅延するとリップシンクがずれてきてしまうと思います。

PCM Output

▼Sampling rate
ReClock側でリサンプリング機能を使い,特定のサンプリング周波数で出力することができます。ただし,一般的には使う必要がないでしょう。Same as inputで良いでしょう。

▼Quality
この項目はInterpolation(補間)の設定です。Sampling rateを44.1kHzから176.4kHz等にアップコンバートする場合のSinc関数の演算精度を決める項目のようです。Sync(同期)ではないことに注意が必要でしょう。基本的に動画再生で動的に音声をリサンプリングをしない限りは,Bit Perfectな音声再生には関係のない項目です。

▼Format
ReClockがデバイスにデータを渡す時のフォーマットを決めるものです。32bitも選ぶことが出来ますが,32bitでS/PDIFやAES/EBUが出力されるわけではありません。
デバイスによっては16bit Int/24bit Intに設定しなければ動作しないものもあるそうです。USB-DACはそういったものが多いようですね。WASAPI用のドライバの出来にもよりますが,オーディオインターフェースであればSame as inputでよいでしょう。
24bit等にチェックを入れた際に16bit Integer for 16bit sourcesにチェックを入れると,16bitの音源は16bitで出力されます。24bit Intで固定にしたい場合にはチェックを外して下さい。

というわけで,設定編でした。次回はTwitterで頂いた質問などについてまとめます。

Windows Media Playerも高音質化?ReClock

[09/13に内容を一部訂正しました。]

前回に引き続き,Windowsで使える最近話題のソフトウェアのご紹介です。Slysoftが公開しているReClockというものです。既にご愛用の方もいらっしゃるのではないでしょうか。

http://forum.slysoft.com/showthread.php?t=19931

slysoftといいますと,CloneCDとかでお世話になった方もいらっしゃるのではないでしょうか。10年前くらいに流行ったやつですね。最近だとAnyDVDとかなんでしょうか。詳細は省きます。

▼ReClockの概要
表題のReclockですが,結構前からPCの動画再生で楽しまれている方の間ではわりと知られた存在だったようで,ディスプレイのクロックに合わせて動画のフレームレートを調整し,それにあわせて音声をリサンプリングして映像と音声の同期を維持するためのフィルター(プラグイン)です。
これはどういうことかというと,PC用のグラフィックカードをWindowsで扱うと,ハードウェアの映像切り替えのタイミング(「リフレッシュレート」と呼ばれます)が基準となる周波数より進んだり遅れたりしてしまう他,映像切り替えのタイミング(「フレームレート」と呼ばれます)があっていないことがあるそうです。

これが何をもたらすかというと,映像がぎこちない再生となり,音声の同期もずれてくることになります。これはデジタルオーディオ分野のジッターと同じことなので,知覚できるか出来ないかという問題はあるものの,程度問題であって解決しない類の問題といえるでしょう。
このリフレッシュレートとフレームレートのずれ等が酷くなっていくと,映像と音声の同期も怪しくなっていきます。そうすると,役者さんが口を開けているときに台詞が聞き取れない状態になるわけですね。あれは凄く違和感があります…。
そこで,ReClockはPCのハードウェアを監視して,クロックの揺れ(まさにジッターですが)に対応して映像と音声を進ませたり遅れさせたりします。これを単純にクロックだけ早めたり遅めたりすると,音程が上下してしまってよろしくないので,SRCによるリサンプリングによって不自然にならない程度にサンプリング周波数を変更している,というものだそうです。

▼実際の使い方
さて,それではReClockの基本的なコンセプトはこの辺にしておいて,実際の所どうなの?という話をしていきましょう。音声再生に使えるのではという発想はHead-Fiあたりから派生したもののようで,それをささきさんが紹介されて,日本でも知られるようになりました。

まず,ReClockは動画再生時に使う場合には二つの使い方が考えられます。ひとつは,上述したようなリップシンク(映像と音声のタイミングをそろえること)であり,もうひとつがWASAPI排他モードを使ったbit Exactな音声再生です。一つ目は既に述べましたので,二つ目の点について見ていきましょう。
これまで,Windows7であっても,WindowsMediaPlayer(以下WMP)にせよMediaPlayerClassic HomeCinema(以下MPC-HC)にせよ,WASAPIの共有モードを使用して動作していました。つまりカーネルミキサー経由だったわけです。まぁ,実用上はその方が何かと便利なのは確かですが,気持ち悪い部分はありました。
これに対して,ReClockは,WASAPI排他モードを利用したうえで,さらに音声のクロックをMasterとし映像のクロックをSlaveにすることで,ビットパーフェクトな音声再生が可能になっています(ただしデバッグ用モードなので設定がかなりシビア)。

Renderers infosの部分のAudioに「WASAPI exd. (bit exact)」と表示されていればOKです。
なお,ReClockはDirectShowという仕組みに対応するあらゆるプレーヤーにおいてフィルターとして使う事が出来ますから,これらのプレーヤーでもReClockの設定をそのまま生かすことができます。たとえば,WMPやMPC-HCでも,ReClockを使ってカーネルミキサーバイパスによって音質劣化を防ぐことが可能なわけです。

ポイントは,bit exact設定は音を良くするためのものではなくて,データを改変させないため,つまり音を悪くしてしまわないようにするため,に使うということです。bit exactはデータの「正しい」再生に必要不可欠な要素であることに留意する必要があります(この理解は次回音声データ再生の時に必要な部分です)。表題であえて高音質と振っておいて?マーク付きなのはそのあたりの意図もあります。

次に音声データ再生ですが……といきたいものの,長くなりましたので今回はここまでといたします。拙Blog的には次が本番ですね。

PCオーディオでお薦めのプレーヤーソフトPlayPcmWin

最近試したWAVデータ再生用プレーヤーソフトのなかで最も好印象だったものをご紹介しておきます。PlayPcmWinというソフトです。

http://code.google.com/p/bitspersampleconv2/wiki/PlayPcmWin

ページの説明が明瞭かつ簡潔なので,一通り読めば特に疑問点はないとおもいますが,一応簡単にご説明しておくと,WASAPIを使ってシンプルにPCMデータを再生するためのソフトです。再生可能なのはWAVフォーマットのみで,AIFFも再生出来ません。

個人的に感心したのは,開発方針が非常に明確で,どのように動作し,何をするのかがはっきりしている点です。ソースコードも全て公開されています。開発日誌的なものはPhilewebコミュニティのyamamoto2002さんのページにありますので,興味がある方はそちらもどうぞ。出力デバイスを設定し「対応フォーマット」ボタンを押すと,どのPCMフォーマットでWASAPI用デバイスドライバが動作するかをチェックしてくれますので,動作報告も是非。

さて,Lynx L22での音質傾向ですが,foobar+WASAPIプラグイン,StealthAudioPlayer(これは実用上も難がある),uLilithあたりと比べる限り,個人的には一番好みの音でした。特に感心したのは音の骨格がしっかりしていて,痩せない点です。
ASIOに比べると全体的にWASAPIは音像の立体感に乏しいのですが,反面密度感といいますか厚みのある音で,ASIOよりWASAPIが好きだという方もいらっしゃると思います。PlayPcmWinはWASAPIの長所が見事に発揮されており,高域の歪み感の少なさ,中域のボリューム感,低域の量感と分解能といった点で非常に優秀なプレーヤーといえるでしょう。

最近は新興勢力の再生用ソフトがいくつもでていて面白いです。バイナリ一致はCDトランスポート/CDプレーヤーの代替をPCに託すのであれば最低限必要なことではありますが,ピュアオーディオ的にはそこから先の細やかな調整が勝負だと思います。こんなことで音がころころ変わるのも変な話ですが(ジッター的な観点ではありうるにせよ),私は調整手段としてありがたく使わせてもらっています。貴重な時間を割いてフリーソフトの開発をされている作者の皆さんには敬意を表したいですね。