PlayPcmWin

公式サイト:http://code.google.com/p/bitspersampleconv2/wiki/PlayPcmWin
バイナリを一致させる方法:WASAPI排他モード

概要

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

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

WASAPIはマイクロソフト製ドライバで動作するサウンドデバイス(たとえばusbaudio.sysを使って動作するUSBオーディオ機器など)であれば最低限16bit/44.1kHzや16bit/48kHzのデータの再生を可能としていますが,下掲のページを見るとわかるように,独自のドライバで動作するサウンドデバイスの場合にはWASAPIの対応状況にばらつきがあることに注意が必要です。
特に,24bit/96kHzなどに代表されるハイビットレート音源を使う場合にはあらかじめ動作するかどうか確認が必要でしょう。
http://code.google.com/p/bitspersampleconv2/wiki/WasapiExclusiveMode

特徴(公式ページより引用)

  • 量子化ビット数16、24、32ビットの2チャンネルステレオ非圧縮WAVファイル再生に対応。
  • 量子化ビット数16ビットと24ビットの2チャンネルステレオFLACファイル再生に対応。
  • 量子化ビット数16ビットの2チャンネルステレオAIFFファイル再生に対応。
  • 再生リスト。ギャップレス再生。
  • CUEシートの読み込みに対応。
  • WASAPI排他モード使用。Bit perfect再生可能。
  • WASAPI排他 タイマー駆動モードとイベント駆動モードの切り替え機能。
  • 再生スレッドの優先度設定機能。
  • 再生スレッドはネイティブC++で書かれており、音声データを全てメモリに読み込んでから再生するため、CPU負荷が低い。低レイテンシ設定で音切れの可能性が減ります。
  • ユーザーインターフェースのコードは .NET Framework 4.0のC#で書かれています
  • Windows 7に対応しております。Windows XPでは動きません。Vistaは、WASAPI排他モードは動きます。

設定について

特に何も設定をしなくても,プラグインをあれこれ入れなくても,いきなりWASAPI排他モードでバイナリが一致(ビットパーフェクト出力)してしまうソフトです。一昔前のWindowsではあり得ないほどの手軽さですね。
Windows標準のドライバで動くUSBオーディオデバイスでしたら,どれでも44.1kHz/16bitのデータが再生可能ですので,PlayPcmWinを使えば誰でも難しい設定不要でビットパーフェクト環境が手に入ります(もはや手に入るというレベルではないくらい簡単)。

PlayPcmWinの設定項目について,まずは基本設定から。

動作モード

排他モードと共有モードがあります。ビットパーフェクト再生を確実にしたいのであれば,排他モードを選びましょう。

データ供給モード

イベント駆動モードとタイマー駆動モードがあります。これらをユーザーが選択的に選ぶことができるのは大変珍しいのですが,イベント駆動モードのほうがOSへの負荷が低く,高品質な再生が期待できます。

レンダースレッドタスクタイプ

ProAudio,Audio,Playback設定無し,があります。ProAudioが最も遅延が少なくなるように設計されているようですが,実際はAudioと明確な差はないようです。ProAudio,AudioまたはPlaybackを選択すると,Multimedia Class Scheduler Service(MMCSS)と呼ばれる仕組みにより,音楽再生のために必要なプログラム(プロセス)が他のプログラム(プロセス)より優先的に動作するため,高品質な再生が期待できます。

出力レイテンシー

デフォルト(初期設定)では200ミリ秒(ms)となっています。極端に少なくすることも可能ですが,一般的にはレイテンシが少なすぎるとCPUに対する負荷が上昇します。マザーボードの種類やサウンドデバイスの設計によっても動作状況は異なりますので,聴いて判断する他ありません。最低限,音が途切れないように調整することは必要でしょう。

次に詳細設定について。

WASAPIに渡すPCMデータの量子化ビット数

基本的には,「ファイルの量子化ビット数に応じてSInt16かSInt32かを選択」で問題ないでしょう。動作に問題がでたら,「SInt16に固定する」を選択して動作を確認しましょう。

CUEシート設定

メモリ領域不足を補うための設定です。どちらでも構わないとおもいますが,メモリが足りない場合にはチェックを入れましょう。

ウィンドウ設定

直接音に関係ない項目ですのでお好きな方を選ばれると良いでしょう。

音質傾向

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

また,MPC+ReClockとの比較でもPlayPcmWinは落ち着いた音といえるでしょう。ベースの音が浮き出てくる感じで低域フェチの方にはかなりお薦めです。ある程度音量を上げると安定感のある充 実したサウンドになりますが,小音量時はちょっと間怠っこしい印象を受ける場合もあるかもしれません。

※ この項目は ビットパーフェクト(バイナリ一致)環境での試聴ですので,音質が変化する主要因としてはソフトウェア処理によるジッターとGND経由のノイズ流入が一応 考えられます。ただし,私個人の感想ですので,客観的な音質評価とは言い難く,この点でソフトウェア作者様に問い合わせをされないようお願いいたします。