Music TO GO!

2011年02月15日

AudirvanaでIntegerモードのサポート開始

昨年の10月頃にCoreAudioの記事を書いたときにMacのミュージックプレーヤーでInteger(整数)モードのサポートの可能性について触れましたが、Audirvanaの最新リリース(0.6.0)でついにIntegerモードがサポートされました。

通常MacのミュージックプレーヤーとDACの間では32bit浮動小数点(virtual format)を介してデータ渡しされますが、これをDACネイティブ(Physical format)の24bit signed Integer(符号付整数型)でダイレクトに行うというものです。Pure Musicの開発者は32bit対応のためと言っていましたが、Audirvanaの開発者はhog(排他)モードをさらに一歩進めるため、と書いています。つまりより短縮経路でドライバー(DAC)にアクセスができるというものです。
なおIntegerモードはDAC側での制約条件があるそうで、現在知られているDAC側でサポートされているのはゴードンさんのStreamlengthコードを使ったUSB DAC・DDC(Wavelength、Ayre、Halide)ということです。ゴードンさんのコードでサポートされているということはドライバーに関してはクラスドライバーでサポートされているということになりそうです。またStreamlength HS(XMOS系)はどうなのかは分かりません。

実際にIntegerモードを使用してみました。MacはMacbook AirでOSは10.6.6です。DACはWavelengthのProtonを使用しています。

audirvana_integer.gif

上記画像では右上の赤丸のところにIntegerモードでの再生が示されています。また下の設定画面の赤丸のところが設定のオフ・オンです。
Integerモードをオフ・オンしながら比較して聴いてみるとたしかにIntegerモードのほうが明らかに鮮明でクリアです。透明感が一段と磨かれた感じです。どうやらミュージックプレーヤーソフトもまた一歩進化したということのようです。

下記はAudirvanaのDebug infoログから抜粋です。little endianはバイトオーダーのことです。
--------------------------------------
Audirvana rev. 0.6.0 debug information:

Currently playing in Integer Mode:
Non-mixable linear PCM Interleaved 24bits little endian Signed Integer @44.1kHz

Hog Mode is on
Devices found : 2

List of devices:
Device #0: ID 0x104 Built-in Output UID:Built-in Output
Device #1: ID 0x106 Proton USBDAC UID:Proton USBDAC

Selected device:
ID 0x106 Proton USBDAC UID:Proton USBDAC
4 available sample rates up to 96000.0Hz
44100.0
48000.0
88200.0
96000.0

--------------------------------------

Integerモードは標準でオンになっていますが、この変更によってもしかするとDACによってはAudioMidiでのオーディオ設定を24bitに手動調整が必要になるかもしれません。0.6.0に変えて不具合があったときはAudioMidiのビット幅を変更するか、Integerモードを切ってみると良いかもしれません。(0.6.0でかなり大きく中を書き換えたそうです)

ちなみにAudirvanaはCoreAudioのAUを使用していないで直でHALに書き込んでいるのでできるのかもしれませんが、ほかにもまたIntegerモードをサポートしてくれるソフトが増えてくるとまた面白いことになるでしょう。
この前書いたFideliaも音がいいソフトだと思ってたんですが、このAudirvanaの逆襲。いままさにMacのミュージックプレーヤーが熱くて面白いという感じですね。
posted by ささき at 00:04 | TrackBack(0) | __→ PCオーディオ・ソフト編 | このブログの読者になる | 更新情報をチェックする

2011年02月07日

オーディオファイル向けミュージックプレーヤー (15) - Fidelia

最近Macの高音質ミュージックプレーヤーソフトが多く出てきていますが、またひとつ新星が出てきました。このペースではMacのほうがWindowsを追い抜くかもしれません。
そのソフトはAudiophile Engineeringという会社のFideliaです。MacOSX 10.5以降対応です。こちらがホームページです。Download nowからダウンロードできます。
http://audiofile-engineering.com/fidelia/

fedelia5.gif

Fideliaの一番の特徴はiZotope社のライセンスを受けたSRC(サンプルレートコンバーター)を搭載しているということです。Fideliaは有料ソフトですが、このライセンス料も入っているのでしょう。またビット拡張などの際のディザ処理もMBIT+というiZotopeの技術を使用しています。
iZotopeはプロのスタジオ業界的にはよく知られている会社で、以前はiZotopeのOZONEを紹介しました。
実はこのAudiophile EngineeringというのはWave Editorという安価なDAWソフトで知られている会社なのですが、このWave EditorにもiZotopeのSRCライセンスが使われていてサンプリング変換ができ、高品質で定評あるもののようです。それをミュージックプレーヤーにも応用したというところなのでしょう。
ただしFideliaのものはリアルタイム処理ですが、Wave Editorのものはバッチ(一括)処理です。

iZotopeのSRCはartifacts freeをうたい文句にしています。artifactはHQ Playerのところでも書きましたが、直訳すると人工生成物という感じでしょうか、もともとなにもないはずのところに計算誤差とかなんらかの処理上の副産物として生じるデータのことです。これはデジタルカメラの画像処理でもよく出てくる偽色とかモワレなんかですが、オーディオにおいてはプリエコーなんかがあると思います。iZotopeのソフトではそうしたものを取り除いたクリーンな出力を売りにしているということでしょう。
これはスタジオなんかではマスターの96kとか88kをCD品質の44kにするときにより重要です。

リサンプリングの上限は192kHzです。ビット拡張のさいにもiZotopeのMBIT+を使用していますが、ビット幅の上限は32bit floatとなっています。これは32bit Integerではなく、CoreAudioのAUフォーマット(Virtual format)ということでしょう。(前のCoreAudio記事を参照ください)
それとCoreAudioのAUプラグインに対応していて、あらかじめいくつか入っています。これを3つまで組合わせられます。それとLinuxのようにOSXにもJackがあるのですが、Jackとも親和性があるようです。DAW寄りのプレーヤーソフトといえるでしょうね。再生画面に波形が出てくるところもこだわりを感じます。

fedelia3.gif

もちろん自動サンプルレート切り替えに対応しています。こちらがリサンプリングの設定画面です。

fedelia4.gif

またMacにおいてはiTunesとの親和性というのが重要なポイントの一つですが、FideliaはかしこいことにiTunesライブラリファイル(itl)から設定を読むようです。プレイリストなどもそのままインポートできます。Fidelia上ではFidelia独自のライブラリとiTunesライブラリが共存して見えます(一番上の画像参照)。
この方式はAmarraとかPure MusicのようにiTunesにしばられませんし、Decibel(AyreWave)のようにAppleスクリプトを使う方法よりもスマートに思えます。

fedelia1.gif

またリモートにはFidelia専用のiOSアプリが用意されています。ただし$9.99と有料です。
http://itunes.apple.com/us/app/fire-field-recorder/id408043917?mt=8

音を実際に聞いてみましたが、たしかに品質はかなり高いですね。ほとんどAmarraなどに匹敵するトップクラスの音質ですが、Fideliaはより楽器の音がリアルで明瞭でありながらあまり乾いたところがなく、造られたシャープさを感じないように思います。この辺がiZotopeソフトの効果でしょうか。リサンプリングがなくても44kHZでも素晴らしいですね。


15日間の無料トライアルができますが、価格は$119のようです。(いまストアに見えませんが)
しかし「最近は有料ソフトが多い、プレーヤーソフトって無料じゃなかったのか」という人もいるかもしれません。たしかにこうしたミュージックプレーヤーソフトはWindowsを中心としてフリーソフトとして開発者の好意で行われてきたという経緯があると思いますが、最近はマーケットや高音質ソフトのニーズも広がり、よりビジネスとして認識されつつあるのかもしれません。
そうした意味では有料ソフトがでるというのはきちんとしたマーケットとして形成されてきた証かもしれません。そうなればまた力のある会社が参入してきてこの分野も発展していくでしょう。たとえばiZotopeのライセンスのエンジンを使うというのは個人ベースでは難しいところもあると思います。
またFideliaではサポートという点も力を入れて書いています。いままでの無料ソフトの文化ではAt your own riskというところが基本ですが、コンピューターオーディオの裾野が広がるとそういうわけにもいかなくなってくるかもしれません。
こうした点ではミュージックプレーヤーソフトというものも変わりつつあるのかもしれません。
posted by ささき at 23:54 | TrackBack(0) | __→ PCオーディオ・ソフト編 | このブログの読者になる | 更新情報をチェックする

2011年01月23日

AyreWaveはDecibelに変わります

AyreWaveとして紹介してきたMac用のミュージックプレーヤーソフトですが、Decibelと名称が変更されました。こちらが新ページです。
http://sbooth.org/Decibel/

こちらはリリースノートです。
http://sbooth.org/Decibel/release_notes/1.0b10.html
なお名称変更に伴い自動アップデート機能が働かないようなので注意ください。

もともとAyreWaveはオーディオメーカーのAyreとWavelengthにちなんだ名前だったんですが、これは作者のブースさんが前身のPlayを書き換える際にゴードンさんとAyreの人と協力してやっていたということで、もともと仮称のようなものであったということです。有償化に向けて特定メーカーに偏らないように名称変更したということですね。
posted by ささき at 13:12 | TrackBack(0) | __→ PCオーディオ・ソフト編 | このブログの読者になる | 更新情報をチェックする

2011年01月15日

オーディオファイル向けミュージックプレーヤー (14) PS Audio - eLyric

McIntosh AP1に続いてオーディオメーカー純正のソフトウエアの紹介です。
PS Audioが最近公開したミュージックライブラリソフトのeLyricです。eLyricは音楽ライブラリの管理機能を中心として、ネットワークサーバー機能、ハイレゾ対応のミュージックストアなどを統合したソフトウエアです。ベータ版が下記でダウンロード可能です。まだすべての機能が実装されているというわけではありません。
http://www.psaudio.com/ps/media_manager/downloads/

こちらPS Audioのロゴが美しいスタートアップスクリーンです。以下Windows7の画面です。

elyric5.gif

立ち上げるとライブラリは空なので、自分のiTunesとかFLACのライブラリを指定してインポートします。

elyric0.gif     elyric1.gif

ライブラリはリストでわかりやすく管理ができます。この辺はiTunesに似ていますね。リストをクリックするとタグ編集をすることができます。まだ実装されていませんが、CDからのリッピング機能もあります。対応フォーマットの種類はわかりませんが、AppleロスレスにもFLACにも対応しています。アートワークの自動取得も可能です。

elyric2.gif

iTunesのようにファイルをリスト上で指定してUSB DACなどで再生することはできませんが、ミュージックサーバー機能でライブラリ内の楽曲ファイルをDLNAネットワーク内で活用できます。これはPS Audioがネットワークブリッジのような機器を販売しているという理由もあると思います。

Music Serverという専用の画面があり、そこではiPhoneの画像があらわれますが、これがPS AudioのtagNplay(uPnP対応のiPhoneアプリ)をエミュレートしているような感じで、"iPhone"画面にDLNAサーバーのライブラリが表示されるようです。

elyric3.gif

サーバー機能は実装されていて使うことができます。eLyricはDLNAネットワーク内ではメディアサーバー(ライブラリ)として機能します。
試しにiPhoneのPlug Playerからアクセスしてみました。

IMG_2174.PNG

上の画像はiPhoneのPlugPlayerのものです。ここではiPhoneのPlugPlayerをuPnP(DLNA)コントローラーとして使っています。eLyricをメディアサーバーとして指定し、eLyric上の楽曲をFoobar2000でレンダラーとして再生しているところです。
eLyricをサーバーとして動作させるには縮小化しておいておけばよいわけです。

メイン画面のボタンは左からライブラリ、インターネットラジオ、ハイレゾ・ミュージックストア、ネットワークサーバーです。
iTunesミュージックストアのような手軽でライブラリと統合されたハイレゾ音源のストアを考えているようですが、まだ実装(開店)されていません。

elyric4.gif

ミュージックストアというとiTunesのITMSですが、これはフォーマットがAACですのでそもそもオーディオ向けではありません。
eLyricではハイレゾ音源を含むミュージックストアを開設してITMSのようにプレーヤー内で簡単に買えるようにして、ライブラリと一体化させるのかもしれません。

こうした点から、eLyricは一言で言うと「オーディオファイルのためのiTunes」ともいえるかもしれません。iTunesは使い勝手はよく総合力は高いのですが、そもそもApple自体がオーディオメーカーではないので、特にオーディオに対応した「かゆいところに手が届く」ものは期待できません。eLyricはFLAC対応も含めてそうした点を抑えていると思います。また、AppleだとネットワークオーディオというときにAirPlayのような「独自プロトコル」を使っているわけですが、eLyricはDLNA(uPnP)対応という点が使いやすいところでしょう。

eLyricはWindows版もMac版もあり、無料です。下記はMac版の画面です。

elyric6.gif

最終版まで無料かどうかはわかりませんが、ホームページのPS Audioのリリースノートでは多くの機能を紹介した後に「それで、、これ無料だって言ったっけ?(and did I mention .. it's free?)」とわざわざ強調しているので無料のままという可能性はあります。これで儲けるというよりは、まずコンピューターオーディオ機器が売れる環境を作るということですね。iPodが売れる下地にiTunesがあったように、です。

PS Audioはもともとネットワークブリッジ製品のためにiOS用のアプリを開発していましたが、こうしてオーディオメーカーもソフトウエアビジネスに参加する時代になるのかもしれません。実際使いやすい環境がなければ機器も売れませんから。
本当のコンピューターオーディオの変革というのはその辺にも影響してくるのではないかとも思います。
posted by ささき at 02:03 | TrackBack(0) | __→ PCオーディオ・ソフト編 | このブログの読者になる | 更新情報をチェックする

2011年01月05日

Pure Music Player Ver 1.7のFLAC対応

AmarraとかPure Music PlayerなどiTunesをフロントエンドに使うタイプのMacのプレーヤーは利便性が高いという利点はありますが、再生ファイル形式もiTunesに依存してしまうという欠点があります。その最たるものはFLAC対応です。
Amarraでは2.0でFLAC対応しましたが、これはiTunesライブラリとは別にAmarra独自のプレイリストを作って管理するというもので、あまり使い勝手が良くはありません。
Pure Music Playerは最新の1.7でFLAC対応を果たしました。これはiTunesライブラリでのFLACの再生を可能にするというスマートな方法を採用しています。その代わり、iTunesではもともとFLACをサポートしていないわけなので少しトリッキーな方法でこのFLAC対応を実現しています。

pm17.gif

Pure Music PlayerのFLAC対応の手順ですが、まずVersion 1.7にアップグレードしてください。またMemory Playモードでのみ使用できるので、Memory Playをオンにしておきます。
FLACファイルをiTunesライブラリに追加する方法ですが、新設のAdd FLAC ..というメニューを選ぶとウインドウが表示されます。この状態のまま、ファインダー上のFLACファイルをマウスでドラッグして「このウインドウに」ドロップしてください。(直にiTunesのウインドウでは従来どおり受けられません)
するとiTunesライブラリ上にFLACが現れます。後は他のフォーマット同様に再生ができるようになります。

これはもともとFLACファイルの存在しているフォルダ(コピー元フォルダ)にPure Music Bookmarkというフォルダ(マニュアルにはファイルと書いてますが)を作成して、中に転送した曲のAppleロスレス版をダミー?でコピーして実現しているようです。ただし、実際にAppleロスレスに変換されるというわけではなく、あくまで再生されるのはFLACファイルということです。iTunesライブラリに入れるための参照ファイルとしてAppleロスレス版を作成し、それがiTunes上で再生され参照先を見に行こうとするときにPure Music側でフックして同じ名前のFLACの方に切り替えるんでしょうね。よく分かりませんが、、
また上記ウインドウ上のチェックを外すとAppleロスレスに実際に変換します。この変換設定がウインドウの下半分にあります。

注意点ですが、このマニュアルの手順だけだと音が出ないことがあります。私もはじめつまづいてしまったんですが、FAQに解決法が載っていました。それはこのFLAC対応のためにはiTunesの環境設定->詳細で「iTunes Mediaフォルダを整理」と「ライブラリへの追加時にファイルをiTunes Mediaフォルダにコピーする」の二つのオプションを両方オフにしなければならないということです。

実際にやってみるとたしかにCDからEACでリッピングして作成したFLACはうまく再生できるようになります。タグ情報も見ることができます。ただしHDTracksのBand on the runなどハイサンプリングのダウンロード曲が再生できません。また、他もFLACでなくても自動サンプルレート切り替えがうまく働かないなどV1.7の動作自体が怪しい感じです。これはCAフォーラムなんかでも症状が報告されてますが、出ない人もいるのでなにか環境のせいかもしれません。(試したのはMac Airの10.6.5です)

なんとなく良さそうでいて微妙な感じですが、FLACメインで使う場合はやはりAyreWaveとか使ったほうが良さそうではありますね。

*上記不具合は1.72で解決されました(1/10)
posted by ささき at 22:05 | TrackBack(0) | __→ PCオーディオ・ソフト編 | このブログの読者になる | 更新情報をチェックする

2011年01月04日

オーディオファイル向けミュージックプレーヤー (13) - McIntosh AP1

AP1はiPhone、iPadなどiOS用の音楽プレーヤーアプリで、マッキントッシュのアンプのブルーメーター(BLUE EYES)を再現しています。なんとこれはMcIntosh社自身が開発した純正のアプリです。同社としては初のデジタル製品となるとのこと。

IMG_2158.PNG     IMG_2154.PNG

音楽ライブラリはiPodアプリと共用するのでiTunes経由で普通にコピーします。(FLAC Playerのように独自のアプリ領域を使うのではありません)
機能的には単純でむずかしいところはありません。またアルバムジャケットの表示機能があります。操作ボタンが煩わしいときは少したつとボタンは消えます。

IMG_2160.PNG     IMG_2161.PNG

ユニバーサルアプリなのでiPadにもiPhoneにも使えますが、面白いのはiPhoneで使うときはメーターがひとつ(モノ?)で、iPadのときは画面が広いのでステレオで出るということです。上4つはiPhone、下2つはiPadです。

IMG_0016.PNG     IMG_0013.PNG

いじっていると急にイヤフォンからではなくスピーカーから音が出たり、音量が飛んだり、少し動作が怪しいところもありますが、おおむね使い勝手もそう悪くありません。またライブラリの読み込みは立ち上げのときだけらしいので、新たにライブラリを追加したときや動作が怪しくなったらリスタートさせる(iOS4のマルチタスクバーで長押しで停止させる)ことが必要です。立ち上げるときにWARMING UPと出るのも面白いところです。
音も少しではありますがiPodアプリより良いようにも思います。「マッキンらしい」音かどうかはともかく。
これもMcIntoshのデジタル分野への本格参戦というよりは、iOSアプリを使ったブランド宣伝戦略だとは思います。iPad版ではMcIntosh Labへのリンクが表示されます。最近車メーカーが新型車の宣伝にその車種専用のiPhone向けのドライビングゲームなどを作って宣伝用に無料配布したりしていますが、その流れのように思います。iPhoneはなにしろ数千万台ありますので、いろんな応用の仕方があるということでしょう。ただ次もなにかあることをちょっと期待したいところですね。
無料ですのでぜひ使ってみてください。iTunesリンクはこちらです。
http://itunes.apple.com/jp/app/mcintosh-ap1-audio-player/id411263894?mt=8

AP1は機能的には多くはないんですが、イコライザーなどの機能を望む人には、こちらに紹介されているEQuという音楽プレーヤーアプリもあります。
http://www.appbank.net/2011/01/03/iphone-application/205703.php
iPhoneのプレーヤーアプリも意外と増えてきましたね。
posted by ささき at 23:55 | TrackBack(0) | __→ PCオーディオ・ソフト編 | このブログの読者になる | 更新情報をチェックする

AyreWaveのライセンス切れ問題について

2011年初早々困った人もいたかもしれませんが、AyreWaveは2011年初にライセンス期限切れという問題がありました。これは本来は前に書いたように3/1まで使えるはずですが、作者が最新版で変更を忘れていたからだそうです。1.0b8までを使っていた人は今年になってから立ち上げられなくなったと思いますが、ライセンス延長版の1.0b9がすでにアップされていますのでこちらをダウンロードしなおしてください。
これで3/1まで使用可能になります。それ以後は有料ソフトとなるようです。

http://sbooth.org/AyreWave/
posted by ささき at 23:44 | TrackBack(0) | __→ PCオーディオ・ソフト編 | このブログの読者になる | 更新情報をチェックする

2010年12月16日

AirPlayer - Mac自身をAirPlayに対応させるソフトウエア

iOS4.2の目玉としてストリーミングできるAirPlayが出ましたが、実質AppleTVを持ってないとあまり意味がありません。一部のネットワークオーディオでも対応可能ですが延期されているようです。AirPlayはオープンなDLNAに比べるとこの対応デバイスの少なさがネックです。

そこでMac自身をAirPlay対応機器にしてしまおうというのがこのAirPlayerというソフトです。
DLNAでいうとレンダラーに相当するでしょうね。

下記に記事があります。

Engadget(日本語記事) デモ動画あり。
http://japanese.engadget.com/2010/12/15/ios-mac-airplay-airplayer/

Mac World
http://www.macworld.com/article/156423/2010/12/airplayer.html?lsrc=rss_weblogs_ioscentral

AirPlayは非公開プロトコルなはずですが、解析してつくったようですね。また転送プロトコルは非公開でも、接続には標準のBonjourが使われているので、iPhone/iPad側はなにもしなくて良いというのがミソです。
こちらがダウンロードサイトです。まだアルファ版ということですので念のため。

http://ericasadun.com/ftp/Macintosh/

オーディオ的に使えるかというのは試してませんが、面白いソフトです。

もともと新Mac miniってHTPC(ホームシアター用PC)を意識したとも言われますが、オーディオ的には下記のような病的な改造ものと組み合わせても面白いでしょうね。

http://www.mach2music.com/index.html

上はMac miniを改造してオーディオ専用にするという会社のサイトです。
posted by ささき at 09:33 | TrackBack(0) | __→ PCオーディオ・ソフト編 | このブログの読者になる | 更新情報をチェックする

2010年11月24日

Amarraのディザ処理とビット幅の関係について

Amarraついでですが、ちょっと気がついたことを書いておきます。
HQ Playerのところで信号処理のいろいろを書きましたが、Amarraにもこの処理があります。それはビット幅を変えるときのディザ処理です。

ディザ.gif

これはPreferenceのメニューから開いたDither Settingsで行いますが、これは次のような動作をしているようです。(*Amarra mini 2.0によるもので、20bitの設定は省きます)

1. 再生しているデータが24bitのとき
Dither on playbackをONにすると
→ output word lengthの設定にかかわらずディザ処理をして16bitで出力する。
Dither on playbackをOFFにすると
→ output word lengthの設定にかかわらず常に24bitで出力する。

2. 再生しているデータが16bitのとき
Dither on playbackをOFFにすると
→ output word lengthの設定にかかわらず常に16bitで出力する。
Dither on playbackをONにすると
→ output word lengthの設定が24bitのとき、ディザ処理をして24bitで出力する
→ output word lengthの設定が16bitのとき、ディザ処理をして16bitで出力する

これはAudiophilleoのbit幅表示を見て確かめました。Audiophilleoでは送り出しのビット幅(AudioMidiでの設定値)にかかわらず、DDCの中でパケットを直接内蔵のスニッファーで検査して下位8bitが00だと16bitとみなして表示しますので、実際に送出されているデータで確認できます。

上の結果はちょっと変則的にも見えますが、マニュアルにも書いているとおりディザ処理というのはビット幅の変更をするときの補正オプションです。そのため24bitのデータのときにディザ処理をすると16bitに変更されるというのはそうおかしいことではありません。なぜかというとマニュアルにも書いてあるのですが、もともとDither処理は48/16などの16bitのDACなどに出力するときに使うものだからです。

このときに注意するのは、CDからリッピングした44/16のデータを聞いている分にはDitherをオンにしたほうがよく聞こえるのでオンにしたくなりますが、そのまま24bitのハイレゾデータファイルを再生すると16bitで出てしまいます。つまりAudioMidiで24bitを出力に選択していたとしても16bitが詰められた24bitで出ることになります。
ハイレゾデータを24bitのまま出したいときはDither on playbackをオフにしなければなりません。これはAmarra独特のものですが、ハイレゾ再生っていたるところに盲点がありそうです。
posted by ささき at 00:05 | TrackBack(0) | __→ PCオーディオ・ソフト編 | このブログの読者になる | 更新情報をチェックする

2010年11月15日

オーディオファイル向けミュージックプレーヤー (12) - Audirvana

またMacOSX用のミュージックプレーヤーソフトが出てました。Audirvanaというソフトです。MacOS 10.6対応ということで、ホームページはこちらです。
http://code.google.com/p/audirvana/

ちなみに名前はAudio Nirvanaから来ていると思います。headfiでもニルバーナ(涅槃)ってよく使うんですが、向こうの人はAudio Nirvanaというと「オーディオ天国」という意味だと考える様ですね。

*Audirvanaの特徴

機能としてはデバイスの排他処理をして、自動サンプリングレート切り替えが出来ますし、曲データをメモリー上に展開して再生可能、と一通りMacの高音質プレーヤーの要件は揃っています。
またアップサンプリング可能ですが、アップサンプリングは再生時にリアルタイムにやるのではなく、ディスクから読んでメモリーにロードする前に一括変換するようです。つまり再生する時点ですでに変換されているというわけですね。これは再生時に負荷がかからないと言う点で良いですが、ロードに時間がかかってしまいます。そこで対応予定リストに先読みバックグラウンド変換が予定されています。
対応ファイル形式はFLAC、ALAC(Appleロスレス)、WAV、AIFF、AACなどだいたいカバーしてます。ギャップレスに対応してAppleリモートもサポートしているということです。

Audirvanaの特徴はHALに直接アクセスするというところです。前のCoreAudioの記事のパスをみてもらうとわかるように、たいていのプレーヤーソフトはCoreAudioをAU(AudioUnit)->HAL->デバイスという経路でAUを通過して音声信号を出します。例えばPure MusicなどはAUを通過しているというのは、Pure MusicがAUプラグインに対応しているという点から逆にわかります。
リサンプルもそうですが、AUの役割はアプリケーションから見るとデバイスと同じ意味であるHALの前にバックエンドとして介在してオーディオストリームの操作ができる様にする点にあると思います。ただその用途はAUプラグインの様に主にDTMソフト用にも思えるので、再生専用ならパスしても良いかもしれません。ただ相応のコードを書かないといけないようです。実はAmarraはAUをスルーしてそれをやってるようなのですが、このAudirvanaもそうしたHALダイレクトアクセスをしているのではないかと思います。Win7での排他WASAPIに近いかもしれません。

もう一つの特徴はオープンソース(GPL)ということです。Amarra、Pure Musicは有料だし、AyreWaveも正式版は有料化するようですが、これはおそらく無料のままでしょう。
これは個人が楽しみのために作ったものということですが、対応予定リストを上げて共同開発者を募ってます。
機能予定リストには使い勝手の向上以外に、DAC physical formatの対応というのがありますが、これが他のソフトで言っているintegerモードのことかもしれません。physical formatというのはデバイス(HAL)で扱える整数形式のことで、対してAudioUnitで使われる32bit浮動小数点形式はvirtual formatと言うようです。

*Audirvanaの使用と音質

立ち上げるとCDプレーヤーの形をしたウインドウが現れます。プレイリストに楽曲ファイルをドラッグして再生ボタンを押すことで再生します。日本語表示も問題ありません。

Audirvana2.gif

音はすばらしく良くて、他のソフトに比べて透明感があり、深みのある奥行きを感じられます。HALダイレクトの効果でしょうか。スムーズで粗さがなく、楽器や声もリアルです。これはなかなか良いかも、個人的にはかなり気に入りました。もしかしてAmarraより。。

設定パネルはこちらです。アップサンプリングのオンオフやメモリーロードに使う領域サイズなどが設定できます。

Audirvana1.gif

メモリーロードするのでスキップさせると曲間はやや開きます。ただアップサンプルは一括変換させるのでさすがに時間がかかりますし、ちょっと不安定です(メモリ2GBのAirだからかもしれません)。はじめはアップサンプリングなしで使うことを薦めます。あとAudiophilleoで176kHzで出そうとすると動作がおかしくなるように思えます。96kHzまでは問題ありません。この辺はオーディオクラス2の実装とからむかもしれません。
しかしこれは今後がかなり楽しみです。

いままでミュージックプレーヤーソフトは数ではWindowsの独壇場でしたが、一気にMacソフトも良いのが増えて来ましたね。質もかなり高いものがそろっています。これからコンピューターオーディオを始める人も、もうやってる人もますます迷ってしまうでしょう。プレーヤーソフトだけ取り上げても一年前の状況とは違いますね。変革期にいると言う実感があります。
posted by ささき at 23:07 | TrackBack(1) | __→ PCオーディオ・ソフト編 | このブログの読者になる | 更新情報をチェックする

2010年11月04日

オーディオファイルのためのOS、Voyage MPD (Linux)

いままでオーディオファイル向けのプレーヤーソフトを紹介してきましたが、今回はオーディオファイル向けのOSです。
Voyage MPDはいわばLinuxのオーディオファイル向けディストリビューションというところでしょうか、VoyageというLinuxの組み込み型の軽量コアをベースにして、Linuxでは定番のミュージックサーバーソフトウエアであるMPDをあらかじめインストールしていて、USBオーディオクラス2に対応したALSAドライバーまではじめから入っています。また、リアルタイムカーネルが採用されています。LinuxとしてはDebian系です。
http://linux.voyage.hk/voyage-mpd

いままでオーディオ用のLinuxディストリビューションというとUbuntuベースでリアルタイムカーネルを使用したUbuntsu Studioなんがよく使われていましたが、Ubuntsu StudioはそもそもDTM向けのものです。Voyage MPDはオーディオ再生専用のディストリビューションに仕上がっています。余分なものがなく、軽量なのでATOMマシンでも動くとされています。ある意味究極的なかたちですね。

このディストリビューションが画期的なのはMPDがはじめから入っているということです。
MPDは前にAuralitiのところで解説しましたが、クライアント・サーバーモデルのミュージックサーバーを作るためのソフトウエアです。つまり、これがあればAuralityのようなネットワーク音楽サーバーがその辺の中古PCを使ってVoyage MPDをインストールすることで作れそうですす。
MPDはMusic Palyer Daemonのことです。CoreAudioのところでも書きましたが、Daemon(デーモン)はWindowsでいえばサービスのようなものです。DLNAでいうところの音楽のレンダラーとしての機能でしょうか。楽曲ライブラリはネット上でもかまいませんが、DLNAのように外部ストレージがライブラリサービスのような機能を持つのではなく、NFSでマウントしてMPDのライブラリルート(/var/lib/mpd/music)にシンボリックリンクを張るということになります(上のページに書いてあります)。
MPDシステムはクライアント・サーバーモデルなので、コントローラーとしては外部にMPDクライアントというアプリケーションが必要です。これもネット上に置けます。UbuntuやWindowsはもちろん、iPhoneなんかでもMPodというMPDクライアントがあります。上の画面で椎名林檎のリストが出ているやつです。このようにDLNAのように見えるネットワークオーディオですが、MPDはMPDのプロトコルがあるのでDLNA(uPnP)ではなくMPD専用のものが必要です。MPDの設定ファイルは/etc/mpd.confです。
またUSBオーディオクラス2に対応したALSAドライバーまで組で入っているので、最新のコンピューターオーディオにも対応できます。
Linuxのディストリビューションというのはセット商品みたいなものですが、Voyage MPDでは組み込みカーネル+MPD+USBオーディオ2対応のドライバなどがあらかじめセットになっているわけです。

一口でPCオーディオって言っても、パソコンの使われ方は大きく二通りあると思います。ひとつは普通にワープロや画像処理などで使っているパソコンをそのまま使う場合、もうひとつははじめからオーディオだけのために専用機として使う場合です。(実際はこの中間もありえますが)
Voyage MPDは後者のためのOSといえるでしょう。ただし、はじめからすっとGUIが立ち上がると言うものではありませんので、念のため。
posted by ささき at 23:43 | TrackBack(0) | __→ PCオーディオ・ソフト編 | このブログの読者になる | 更新情報をチェックする

2010年10月31日

MacのCoreAudioとプレーヤーソフトの関係について

AyreWaveのところで、自動サンプルレート切り替え(Auto sample rate switchingまたはsample rate following)について書きましたが、今回はこの辺をもう少し詳しく解説していきます。あわせてCoreAudioの排他制御や、AyreWaveでもサポートされていてPure Musicの次期バージョンでも実装されるIntgerモードなどについても触れます。
これでビットパーフェクトから、CoreAudioの動作、Macのプレーヤーソフト事情の最新のところ、今後のDACの展望までこの記事でカバーしてみたいと思います。

情報はAppleのCoreaudio ML、CoreAudio reference、そしてCAやComputer AsylumなどへのPureMusicなどソフトウエア開発者のポストなどによります。iPadのUSBサポートもそうですが、CoreAudio MLはAppleの開発者も返答するので、アップル側の見解として重要なソースです。
また以前書いたWindows7のWASAPIの仕組みの記事もあわせて読むと面白いかもしれません。

*CoreAudioとは

まずCoreAudioについてですが、Mac上で外部DAC機器などを接続してプレーヤーソフトがそこから音を出すためにはかならずCoreAudioというOSの一部を使用します。前に書いたようにWindowsでもVista以降は刷新された音声システムのことをCoreAudioと呼びますが、今回特に指定が無ければMacOSXのCoreAudioのことです。
音を出すソフトウエアというとミュージックプレーヤーだけではなく、かならずOSが介在しますので、この辺はコンピューターオーディオにとっては重要なポイントです。ドライバーとハードであるDACなどはHALというレイヤーで抽象化されます。アプリケーションはAudioUnitというオブジェクトを介してHALにアクセスします。簡単に書くとこんな感じです。

プレーヤーソフト->Audio Unit -> HAL ->オーディオデバイス

ではCoreAudioとは具体的に何かと言うと、プログラム的に見るとWASAPIと同様にプログラミングインターフェース(API)とライブラリ群で、実体としてはcoreaudiodというDaemon(Unixにおける常駐プログラム・サービス)があります。ターミナルを開けてps ax|grep coreaudioとやるとプロセスが走っているのがわかります。

*MacOSXでハイサンプリングファイルをビットパーフェクトで再生する方法

まずAyreWaveやPureMusicでの自動サンプルレート切替を説明する前に、それがないとどうなるのかということをiTunes(現行の10.0)を用いて説明します。言い換えるとMacOSXでハイサンプリングファイルをビットパーフェクトで再生するための手順ということになります。

1. DACなどをMacに繋ぎます。サウンド設定でその機器を選んでください。
次にAudioMidi設定を開けて、その機器がどのサンプリングレートに対応しているかを確認してください。
2. 再生したい楽曲ファイルのデータのサンプリングレートを確認して、AudioMidiのサンプリングレートを同じところに設定する。
たとえば44.1kHzのデータであれば、44.1kHzに、96kHzのデータであれば、96kHzにあわせます。
3. iTunesを立ち上げます。その楽曲ファイルを再生します。
4. 楽曲ファイルのデータのサンプリングレートが変わった場合、iTunesをいったん閉じてください。
5. 再度再生したい楽曲ファイルのデータのサンプリングレートを確認して、AudioMidiのサンプリングレートを同じところに設定します。
6. iTunesを立ち上げます。その楽曲ファイルを再生します。

つまり楽曲ファイルのデータのサンプリングレートが変わるごとにこの手順を繰り返えさねばなりません。
もし再生楽曲ファイルのサンプルレートがAudioMidi設定と合わない場合、CoreAudio(AU)がAudioMidi設定にあわせるようにリサンプリングをします。
これはWindowsのいわゆるカーネルミキサーと同じです。さまざまなOS上のプログラムが一斉に音を出すときに、ばらばらのサンプリングレートでひとつのDACに出すわけにはいきませんので、どれかひとつに統一するということです。Macの場合はAudioMidiの設定値がそうです。

このApple MLのところにこの辺のところが書いてあります。これはStereophileに書かれたCoreAudioのリサンプリングに関しての問題提起を受けた記事です。http://lists.apple.com/archives/coreaudio-api/2008/Jan/msg00273.html
文を読むとわかりますが、このポストはアップルの技術者です(おそらくアプリ側)。CoreAudioで使用しているサンプリングレート変更のAPIにおいて、その設定値があまり高くないというのは注意すべき点でしょう。これは応答速度を重視するOSの一部としては致し方ないことですね。
(現時点では違うかもしれませんので念のため)

*自動サンプルレート切り替えとhogモード

これではサンプリングレートが異なる楽曲がプレイリストにまじっているとあまりに大変なので、いくつかのアプリケーションは「自動サンプルレート切り替え」というサンプルレートにあわせて自動的にAudioMidi設定を切り替える動作ができます。ミュージックプレーヤーでこれが出来るのはたとえばAmarra、Pure Music、AyreWaveです。
これを使うと再生しているサンプルレートにあわせてAudioMidiの設定が自動で変わるのが分かると思います。つまり前章で書いたことを自動でやっていることになります。

ただしこれには考慮点があります。
それはさきに書いたようにOS上で音声出力を使うのはそのミュージックプレーヤーだけではないため、もし自動サンプルレート切り替えをするなら他のアプリと競合してしまうからです。
これはみながいっしょにテレビを見ているのに一人の人が勝手にチャンネルをがちゃがちゃやっているようなものです。
このため、あるミュージックプレーヤーソフトが自動サンプルレート切り替えを使うためには前提として、そのデバイスを排他的に占有使用します。これがCoreAudioにおけるhogモードというもので、デバイスの排他使用を可能にします。

iTunesは自動サンプルレート切り替えを行わないのですが、これは上のリンクにあるようにバグであるとも、アップルはこれを推奨してないからとも言われています。というのは、他のソフトがhogモードのデバイスをアクセスに行くとエラーを返されますが、もしそのソフトがこれに対応(想定)していないとクラッシュする可能性もあります。そのため、iTunes(というかアップル)ではhogモードを避けていると言うことです。
エラー処理をするかどうかはプログラムの実装上の問題だし、hogモード自体はOSX初期の頃からあったようですがいまでも使ってるプログラムはそう多くありません。そうするとデバイスを当然アクセスできるものと考えているプログラムが多くても無理はないところです。
こうした点ではやはり後発のWindowsのCoreAudioのほうがよりOSレベルで排他制御はスマートに処理していると思います。

*CoreAudioのビットパーフェクトについて

さて、ここからがまた問題ですが、hogモードが排他WASAPIみたいなものなら、これがビットパーフェクトの仕組みと思いたくなります。しかしhogモードとビットパーフェクトは直接関係ありません。たとえばさきに書いたようにhogモードやオートサンプルレートスイッチを使わないiTunesでもさきのようにきちんと手順を踏めばビットパーフェクトが達成できます。次にこの辺を少し詳しく見ていきます。

Windows XPではビットパーフェクトを達成するにはカーネルミキサーをバイパスするのが必須であるため、ビットパーフェクトを達成するにはCoreAudioのミキサーをバイパスするのではないかと思いたくなります。
しかしMacのCoreAudioではそうした手段をとらなくてもビットパーフェクトでありえます。

これはデータの型変換の仕組みにあります。まずデータの型がどう変わるかを見ていきます。
もとのハイレゾ楽曲ファイルのデータは24bit整数型です。CoreAudioではデータの表現として内部的に32bit浮動小数点型を使います。24bitのDACではドライバーに24bit整数型を渡します。
ここで24bit整数型->32bit浮動小数点型->24bit整数型とわたりますので、型変換により壊れるように一見見えます。しかし、そうはなりません。

もう少し子細にそれぞれの型について見ていきましょう。
24bit整数型は1bitの符号と23bitの整数からなります。32bit小数点型は1bitの符号と23bitの仮数部と8bitの指数部からなります。浮動小数点形式とは(仮数)x(基数)^(指数)で数を表現するものです。つまり指数がゼロであれば(基数)^0で1ですから、実質仮数部の値がデータの値となります。つまり、これは32bitの入れ物に24bitデータを左詰めでパディングしたのと同じことです。だからリサンプルなどの計算がなければ元の値は保たれます。
逆にドライバーに出すときも、そのまま24bitを元の値で返すことができます。つまりビットパーフェクトが達成できます。

この辺はCAフォーラムのPureMusicスレッドのこの辺でhogモードとかビットパーフェクトについて語られています。PureMusicの開発者も書いています。

http://www.computeraudiophile.com/content/Pure-Music#comment-40895

さて、多少わかりにくくてもここを説明したのはもう一つわけがあります。それはintegerモードについて説明するためです。

*integerモードと32bit DAC

前章を受けるとinterger(整数)モードが必要な理由もここから明らかです。
つまりCoreAudioでは32bit浮動小数点形式を内部的に使うといっても、さきに書いたように32bit浮動小数点形式は実質24bit整数の「精度」しかありません。これはMacOSXの音声出力は通常は24bitが限界であるということです。そうすると32bitDACが32bitの整数型データを必要とするとき、プレーヤーがそれに応えて32bitを返しても、CoreAudioで32bit浮動小数点をいったん介すると今度はそこで壊れてしまいます。そのため経路を32bit浮動小数点ではなく、32bit整数とみなすのがこのIntegerモードということのようです。
上のスレッドの中でPureMusicの開発者もintegerモードは32bit DACに出すためと言っています。
そして具体的に言うとその背景にあるのはESS Sabre32のようです。

海外ではかなり流行り始めているオーディオ製品に ESS Sabre32を使ったDACがあります。例えばHeadFi界隈でも有名なAudio-gdのDAC NFB-1やNFB-10などが使ってるES9018というDACチップはSabre32アーキテクチャです。
ESSという会社は最近かなり評価が高くて、例えば今年評判のよかったPeachtree NovaはES9006という同社のSabreチップでした。Sabre(セーバー)は8チャンネルのDACを使ってSNを稼ぐアーキテクチャのようで、ハイパーストリーミングとかタイムドメイン・ジッター制御とか特徴的な技術満載です。これらはもともとAnalog Devicesにいた技術者が自分のアイデアを生かしたいということで設計をしたようです。Sabre32はその32bit版です。Pure Musicの作者はこの辺に注目しているようです。
またAyreWaveはその名のとおりAyreWaveLengthが関係しているのですが、その背景にはゴードンさんがSabre32のDACモジュールを作ってるということもありそうです。

これを見ても分かるように、ミュージックプレーヤーソフト、OS、DACというのは足並みを揃えていく必要があるのがコンピューターオーディオです。さもないとどこかにボトルネックが生じてしまいます。
うちのブログを見ている方はわかると思いますが、これはUSBオーディオクラス2.0でも同じことが言えます。

来年32bit DACがブレークするかは定かではありませんが、Macにおいてはキーはミュージックプレーヤーのintegerサポートでしょうか。
まあこれ以上はCES2011ですね。と、ヘッドフォン祭や他のオーディオショウシーズンが終わるとそろそろもう来年の展望を考えたくなってきます。
posted by ささき at 23:23 | TrackBack(0) | __→ PCオーディオ・ソフト編 | このブログの読者になる | 更新情報をチェックする

2010年10月18日

オーディオファイル向けミュージックプレーヤー (11) - FLAC Player

いよいよiPhone、iPadのiOS機にもiPodアプリ以外の本格的なミュージックプレーヤーが登場しました。FLAC Playerです。

IMG_1451.PNG     IMG_1443.PNG

iTunesリンクはこちらです。有料で1200円です。iPadとiPhone両用アプリです。http://itunes.apple.com/jp/app/flac-player/id390532592?mt=8

FLAC Playerは名の通りにFLACをiOS機で再生することができます。これだけでもかなり画期的です。以前VLCがiPadにポートされると言うときに、FLAC再生ができることを期待したんですが、VLCはミュージックプレーヤーとはいえないものでした。FLAC Playerはかなり本格的で操作も良好です。

FLACファイルはiTunesでAppタブからファイル共有で行います。ファイルの追加でPC/Mac内のファイルを選択します。画面はiPadとWindows7のiTunesです。
flacplayer1.gif

FLACはEACでリッピングしたものです。
こちらはiPhone4の画面です。きちんと日本語のタグ名も表示されますね。アルバムアートにも対応していて、アルバムタイトルのタグ名と同じ名前のJpgファイルを同時にファイル共有で転送します。

IMG_1449.PNG     IMG_1447.PNG

こちらはiPadの画面です。iPhone互換ではなく、きちんと全画面のiPad用の画面表示となります。

IMG_0011.PNG     IMG_0010.PNG

実際にSE535やJH16で再生してみるとiPodアプリでiTunesでリッピングしたAppleロスレスを再生するより、同じ曲で比べると劇的な差ではなくとも少しクリアで明瞭感があります。iPadでもiPhoneでも同じです。チェロの鳴りの細かさなんかはよりよく感じます。
なお96/24のFLACも再生はできますが、出力は48/16までとなるようです。

またバックグランドでも再生できますが、これはiOS4.0が必要です。アルバム内の楽曲のソートはリスト画面でアルバムタイトルをクリックすると行えます。また再生中に任意の位置をマークしておけるブックマーク機能などもあります。

iOS4.2ではiPadのUSBオーディオ対応の強化も期待されています。iOSのオーディオ応用も来年あたりはまた本格化できるかもしれません。なにしろ数百万台の規模で出ているものですから、その展開はちょっと楽しみではあります。
posted by ささき at 22:51 | TrackBack(0) | __→ PCオーディオ・ソフト編 | このブログの読者になる | 更新情報をチェックする

2010年10月17日

オーディオファイル向けミュージックプレイヤー (10) - AyreWave

Mac用のミュージックプレイヤーでAmarraとかPure Music以外と言うとCogとかPlayなどがありますが、そのPlayの作者が制作した新作ミュージックプレーヤーというのがこのAyreWaveです。
ホームページはこちらで、ダウンロードは無料ですがベータ版となります。Mac OS 10.5 以降対応とのこと。この記事で書いたバージョンは1.0b1です。
http://sbooth.org/AyreWave/

CAフォーラムではこちらにスレッドがあります。現在開催中のRMAFで公開されたようですね。
http://www.computeraudiophile.com/content/AyreWave-New-OSX-Audio-Player-Released-RMAF
*Wavelengthのブースでゴードンさんがカタログと一緒に配布していたようです。

見た目とてもシンプルですが内部処理を64bitで行い、いわゆるサンプリングレートの自動スイッチングも行えます。これはAmarraなどでやってる再生楽曲のサンプルレートに合わせてAudioMidiのレートを自動的に変更するものですね。右の図でAudioMidiの設定は自動でハイサンプリングファイルのサンプルレートに一致しています。
(iTunesでは立ち上げたときのAudioMidi設定に従います)

ayrewave3.gif     ayrewave4.gif

また右上のiTunesマークはiTunesの選択をプレイリストに読み込むボタンです。iTunesで曲を選択しておいてこのボタンを押すとAyreWaveのプレイリストに取り込まれます。
同様にMacOSマークはファインダーの選択をプレイリストに取り込み、ファイルマークはファイル(m3uプレイリスト)をプレイリストに読み込みます。プレイリストはm3u形式で保存できます。

対応フォーマットはWaveやAppleロスレスの他にFLACも対応しています。WaveやFLACではギャップレス再生にも対応しています。
またWavpackとかMusepackのようなオープンソースの高音質圧縮フォーマットに対応しているのも特徴です。

ayrewave1.gif

こちらはPreferenceです。自動サンプルレート変更(変換ではなくて上に書いたようにデータフォーマットとあわせる)のオプションとか、メモリーに読み込むオプションがあります。
また出力デバイスの排他制御もありますし、メモリー上にデータを展開して再生もできます。
シンプルですが音の良いプレイヤーのための機能はだいたい備えているようですね。

実際に音はかなり良いですね。iTunesよりもだいぶよく、かなりAmarraに迫る感じです。ヘルゲリエンのTake fiveのベースなんかは解像感もタイトさも良いです。ただAmarraに比べると細部の洗練さがもう少しにも思えますが、好みの問題もあるかもしれません。
Audiophilleoのビットパーフェクトテスターで試しましたが44/88/96の各テストファイルでビットパーフェクトはOKでした。

起動時にプレイリストの読み込みで数が多いと遅くなるとか、まだ使いにくい点もありますが、Macで無料の音の良いプレイヤーソフトを探している人にはお勧めです。

*10/20追記:AyreWaveが無料なのはベータのみで、来年有料の正式版が出るようです
posted by ささき at 22:17 | TrackBack(0) | __→ PCオーディオ・ソフト編 | このブログの読者になる | 更新情報をチェックする

2010年10月06日

オーディオファイル向けミュージックプレーヤー(9) HQ Player

今回紹介するのはその名もHQ playerというミュージックプレーヤーです。Vistaと7に対応していて、WASAPIの排他モードもサポートしています。

hqp1.gif

Signalystという会社がやっているようで、ホームページはこちらです。ダウンロードは一番下にリンクがあります。有料のソフトですが、お試し期間があります。
http://www.signalyst.com/consumer.html
CAフォーラムでは下記スレッドがHQ Palyerに関するものです。
http://www.computeraudiophile.com/content/Audiophile-player-HQPlayer

*HQ Playerの特徴

1. 詳細な信号処理オプション

HQ Playerの大きな特徴は普通DAC側でやるデジタルフィルターなどの信号処理をプレーヤー側で行うと言うことです。
これには理由が書いてあります。多くの普及価格のDACでは高いサンプリングレートを受けられるにもかかわらず、デジタルフィルターとかアナログフィルターの性能は二の次になっているものが多くあります。それで生じるartifacts(意図しない副産物)を避けるために、はじめからソフトウエア側で綺麗にしてしまおうというものです。
普通ハードでやるものをソフトで行うという点でPure Vinylをちょっと想起します。
そのためにかつてないくらいの豊富な信号処理のオプションがあって、ユーザーが任意に組み合わせられます。また、処理のタイプによっては組み合わせがあるので、ある処理の組み合わせについては取りうるサンプリングレートが限定されるという制限もまたあります。

ちょっと難しいプレーヤーソフトではありますが、XXHighendなどよりはソフトウエアとしての完成度も高くそれなりに使えて、デフォルトの信号処理の組み合わせでもかなり良い音を出してくれます。ただしプレイリストがないなど、欠点もあります。

2. 専用機への考慮

また、昨年紹介したcMP2にも近く、foobarのような普通のデスクトップ型の操作画面のほかに、cPlayなどのような組み込み型(embeded)の大型画面も別に用意されています。この二つは別のアプリケーションです。

hqp.gif
embededタイプ(組み込み型)の画面

それとルームアコースティックを考慮したイコライザー(convolution)があり、実際にスピーカーの距離をcm単位で入力して計算に反映させるなど、本格的なリビング用途も考慮されています。そうした点ではHTPC向けともいえます。embededタイプでは主にASIOを使うというのは内蔵サウンドカードを意識しているのでしょう。それとCDDA対応もあるので、この用途に都合よいように思います。

3. DSD対応

もうひとつの特徴はDSD対応です。これについては別の記事にして書きたいと思います。

ここからは少し詳細に中を見て行きます。

*信号処理オプション

トラック表示・時間表示の下のオプションメニューはデスクトップ画面で言うとそれぞれ左から、(1)リサンプリング時に利かせるデジタルフィルター設定、(2)Word長(リゾリューション)変換時のノイズシェービング・フィルター設定、(3)リサンプリングレート設定、(4)イコライザー(convolution)のオンオフとなっています。
もう少し簡単に言うと(1)はサンプリングレートを変えるときの変換設定、(2)はビット幅を変えるときの変換オプションともいえます。ただし後で書くように(1)と(2)は関係がある場合もあります。

設定は再生中に変更できるものとできないものがありますので注意してください。

(1)はつまりは44.1を88.2とか176.4に変換するときのリサンプリンに関するフィルタ設定で、これはサンプリングでの折り返しノイズに対する対応ということになるのでしょう。マニュアルには書いてありますが、フィルターによる特性もいろいろとあります。代表的なデジタルフィルターであるFIRはホール録音されたクラシックが良いとか、AsymFIRはアコースティック楽器によいのでジャズが良いとか、minphaseFIRはきつさのあるロックPOPに良いとか、マニュアルにはそれなりに分かりやすく適用例が書いてあります。
作者的にはpoly-sincの派生した系統がおすすめとのこと。

hqp2.gif

わたしは生ギターの音を聴きながらいろいろ変えてもみましたが、デフォルトのpoly-sinc - TPDFの組み合わせでかなり満足できます。poly-sic - shapedも生楽器にはよいかもしれません。
たしかに「松脂が飛ぶリアルな感じ」はいままでで一番かもしれません。ただ良録音の自然なアコースティック楽器には良いけれども、コンプレッサーやデジタル処理が満載されたロックやポップに使うとややエッジがきつめになったりするので、ここは好みの問題と聴く音楽でいろいろと可変させるというのが良いと思います。
実際にJRMC15とも聞き比べてみましたが、チェロやギターなど生楽器の生っぽさ、リアルさはHQ Playerが勝っているように思います。

(2)は24bitを16bitに変換したりするときのワード長(リゾリューション)変換に対してのフィルター設定です。これはつまりは量子化ノイズに対しての処理ということになります。
TPDFが一番一般的に使われているのでこれがデフォルトだそうです。標準的に24bitが再生できるDACならばRPDF(簡易計算)でも良いけれども、他のNS(ノイズシェービング)になるとやや複雑です。

hqp3.gif

ここは再生サンプリングレートとも関係していて、たとえばNS1だと計算エラー(ノイズ)が主に高周波にいくので192/176での再生サンプリングレートに適しているなどです。
ノイズシェーピングはノイズを除去するのではなく、高い方に追いやることなので、高い方にいったノイズをオーバーサンプリングとフィルターで除去してやるという合わせ技が必要です。そのためノイズシェーピング自体はオーバーサンプリング(アップサンプリング)と切り離せない関係にもなっているようです
なんか書いてるとソフトウエアというよりDACとかハードの解説してるみたいですが、これもPure Vinylのところで書いたようにハードの代替わりとしてソフトを使うという応用ともいえますね。

(3)はリサンプリング設定でアップサンプリングしたいサンプリングレートに設定します。これはfoobarでもなんでもあるのでおなじみに見えますが、HQ Player独自なのはさきのフィルターの設定によっては選べないサンプリングレートもあることです。

(4)はconvolution設定を適用するかどうかのオンオフスイッチです。
HQ Playerはスピーカーとルームアコースティックのためのイコライジングを行うConvolution engineというのを搭載していて、このconvolution設定はパネル上でオンオフできます。convolution(コンボリューション)については下記Wikiの音響学のところに記載がありますが、ルームアコースティックのエコーの補正みたいなものでしょうか。
http://ja.wikipedia.org/wiki/畳み込み

hqp4.gif

またマルチチャンネルの設定ではなんと実際にスピーカーまでの距離を入力するダイアログが出てきます。

ボリュームもついていますが、わざわざ音量調整には使わないでくださいと書いてあります。これはデジタルでボリュームを変えると余分な計算処理が入って丸め誤差が出たりするからです。つまりビットパーフェクトになりません。そのためハード側で調整できないときのアッテネーターのような補正手段ということです。

出力はASIOとWASAPIのみです。end pointというのは前にも書きましたが出力デバイスのことです。
マニュアルでは組み込み型はASIOのみ、デスクトップ型はWASAPIも対応とありますが、実際は組み込み型でもWASAPI対応しているのではないかと思います。最新版では出力設定画面がマニュアルと異なっていてここは不明なところです。

*再生できるフォーマット

再生できる楽曲ファイルのフォーマットもちょっと他とはいろいろな点で異なっています。

まずCDDA(音楽CD)を直接読むことができます。CDDAはISO9660などとは違ってコンピューターがファイルシステムとして認識できるCDフォーマットではないので、リッピング機能のないソフトがCDDAをサポートしているというのは面白いところです。
これはHQ Playerが組み込み型のHTPCなどでの用途を考えられているので、内蔵CDドライブでCDプレーヤーみたいに使うことを想定しているからだと思います。もちろんHTPCでなくても使えます。そのため通常のプレーヤーソフトならライブラリの設定をするところでCDドライブもソースとして設定できるところが特徴的です。
通常のプレーヤーでファイル選択やプレイリストを読み込み設定するところはtransportと称していますが、CDドライブも一元管理するためと思われます。

DSDが再生できるのがポイントの一つですが、ここは別にDSDネタとして独立した記事にしたいと思います。

また、サポートファイル一覧のところでWAVをRIFFと称していますが、ここも説明が必要でしょう。
とても一般的なWAVファイルですが、AIFFとかDSDIFFのような本来のファイルフォーマットではRIFFという形式になります。RIFFファイル形式にWave形式の音声データが入っているものを通称WAVファイルと呼んでいるわけです。ファイルフォーマットは入れ物のことなので、その中身はいろいろつめられます。そのため動画のAVIなんかもRIFF形式のひとつです。
この辺は画像のJPGも同じで、実際はJPGファイルではなくJFIFというファイルフォーマットにJPGという圧縮形式のデータが詰まったものです。なぜかというと画像データだけではなく縦横サイズとか色空間の情報も含まれねばなりませんので、その並びを決めたものがJFIF、中身の圧縮方式(CODEC)がJPGです。
RIFFとAIFFの違いはバイトオーダーです。ビッグエンディアン(上位・下位の並び)であるか、リトルエンディアン(下位・上位の並び)であるかということになります。例えば16bitのABCDはリトルエンディアンではCDABとなります。もっと簡単に言うと、インテルチップ向け(マイクロソフト向け=RIFF)か、モトローラチップ向け(アップル向け=AIFF)か、という違いです。
とはいえ普通は画像のTIFFとか、UNICODEのUTF16なんかでもバイトオーダーの違いはBOMという先頭データで吸収していますが、なぜに音声形式はRIFFとAIFFに分かれるのかはよく分かりません。たぶんマイクロソフトとアップルの仲が悪かった頃の名残だと思います。

*絵で見るアップサンプリング

このSignalystのページで面白いのは、デジタルオーディオ処理の効果の説明を画像で見せていると言うことです。なんとなく作例はいい加減なように見えますが、モワレが出やすい素材を選んでます。
http://www.signalyst.com/upsampling.html
前にも書きましたが、デジタル記録と言う点で画像処理とオーディオ処理は似ています。例えばオリジナルの192/24のスタジオマスターが44/16のCDに対して画像サイズが大きいと言うのは、1600万画素のデジカメと400万画素のデジカメの差に似ています。
また、NOSの説明の所でアーチファクト(画像処理による副作用みたいなもの)を出してますが、これ私もHM602での説明でオーバーサンプリングをデジカメ画像で例えた時に説明で同じことを考えていました。ただ言葉で説明しても分かりにくいので書くのを止めたんですが、こう見るとたしかによく分かります。filterless NOSとwith filterの違いはデジカメやってる人はローパスフィルターのありなしでこういうのを見たことがあるかもしれません。
最後ではオリジナルの192/24には及びませんが、4倍のアップサンプリングでわりかし近い所に持っていけるのがわかると思いますし、アップサンプリングとデジタル処理の効果が分かるでしょう。また、それでもオリジナルには及ばないのが分かりますので、アップサンプリングよりもやはり192/24のマスターデータでダウンロードした方がよいというのが分かります。

- - - - - -

HQ Playerは設定がむずかしいので、単純に音を楽しみたい人はJRMCみたいなものがよいかもしれません。ただ微妙な細かいところの音にこだわりたい人にはHQ Playerは面白いと思います。自然にして繊細でリアルな生楽器の再現はちょっと魅力的です。

しかしJRMCみたいにWindowsも有料のソフトが増えてきましたね。それだけミュージックプレーヤーが本格的にコンピューターオーディオの核の製品として真面目に捉えられてきたということでしょうか。
posted by ささき at 23:30 | TrackBack(0) | __→ PCオーディオ・ソフト編 | このブログの読者になる | 更新情報をチェックする

2010年09月28日

オーディオファイル向けミュージックプレーヤー(8) - J.River Media CenterとWASAPIのイベント駆動

J.River Media Center 15(JRMC15)は多機能のメディアプレーヤーで、単なるミュージックプレーヤーというよりはマルチメディア用パソコンの統括センターということになるでしょう。単体でのネットワーク対応も行えます。多機能ゆえかこれは有料ソフト($50)です。無料のお試し期間もあります。ホームページはこちら。
http://www.jriver.com/

jrmc15a.gif

JRMCも音が良いミュージックプレーヤーソフトですが、特筆するものがなかったので特にうちでは扱っていませんでした。ただCAフォーラムの記事によるとWASAPIのイベント駆動に対応したということですので、今回取り上げてみました。
http://wiki.jriver.com/index.php/WASAPI

今回都合よいのでついでにOSのスケジューリングについてあわせて解説してみます。

*イベント駆動とはなにか

プログラム(この場合ミュージックプレーヤー)がオーディオデータを書き込むバッファの空きを見に行くと仮定しましょう。イベント駆動ではあるイベント(たとえばバッファが空になったということ)をOSから知らせてもらって、そのタイミングで処理をします。対して一般的にはポーリングという手法でバッファが空になったということを確認しています。これはプログラムが能動的にバッファが空になったかを見に行くということです。この場合のタイミングはプログラムが自分の番にきたときです。

ここでさきのMSDNのブログ「VistaからWin7への変更点」からその部分をちょっと引用します。
引用元アドレスはこちらです。
http://blogs.msdn.com/b/windows_multimedia_jp/archive/2010/06/28/4-windows7.aspx
----引用開始----
VistaからWin7への変更点
オーディオエンジンとエンドポイントバッファの間の部分がイベント駆動に対応しました。Vista でもアプリケーションとオーディオサーバの間はイベント駆動に対応していたのですが(DirectSound の互換性維持に必要だったため)、オーディオエンジンとエンドポイントバッファの間の方は Win7 以降での対応です。これと MMCSS (MultiMedia Class Scheduler Service) の改善が組み合わさったことで、Win7 ではエンドポイントバッファが空になったときだけデバイスドライバから割り込みがかかり、オーディオエンジンがオーディオサンプルをエンドポイントバッファに書き込むようになりました。当然ながら、この機能にはオーディオデバイス側の対応が必須です。Vista 時代ではこの部分が Vista Certified ロゴの必須要件ではなかったため、オーディオエンジン側もポーリングで実装せざるを得ませんでした。ポーリングでは、エンドポイントバッファが空でなくても割り込みが発生してしまうのと、余裕を持って書き込む必要があるためバッファを小さくできないので、消費電力が大きくレイテンシも長いという二重苦になっていました。Win7 ではこの問題を解決したので、Vista と比較して、共有モード WASAPI アプリケーションにおける消費電力が小さく、また、レイテンシも短くなっています。

----引用終了----

これはいつバッファが空になるかをポーリング(つまり能動的に見に行く)で確認していると、ポーリングとポーリングの間に空になってしまうと音が途切れてしまいますので、その間の十分な量のバッファを用意する必要があるということでしょう。この場合のバッファというのはつまり余裕時間(リードタイム)みたいなものですので、そうするとつまりレイテンシーは大きくなってしまいます。
しかし、「空になったよ」というイベントが発生したときにOSが教えてくれれば、その都度に効率よく書き込みができるので、そんなに余裕をもったバッファは必要ありません。

これがイベント駆動です。割り込みがかかることがトリガーになるのはポーリングも同じですが、ポーリングの場合はタイマーがトリガーになります。

*OSのスケジューリングとは

ここで説明が必要なのは、OS上で走る複数のプログラムはタイマーで時分割されて動いているということです。こうしてOSがCPUを管理することをプリエンプティブ方式と言います。
OSの上でプログラムがマルチタスキングで動作しているとき、複数のプログラムを順に切り替える必要があります。その切り替える順番決定をスケジューリングといいます。(ちなみにタスクというのは情報処理の言葉ではOSからみた処理の最小単位のことです)
Windowsのような汎用OSの場合はラウンドロビンという巡回方式のスケジューリングが主なんですが、この方式では仮にプライオリティが高いプログラムでも自分の順番がくるまで待たねばなりません。優先度が高いというのは単に待ち行列の前のほうに入れてもらえるということです。そのため、先の例だと自分の番に来たときにバッファの空きを都度確認するということになります。これがポーリングです。優先度を高くすればポーリングの間隔は短くなるかもしれませんが、能動的に見に行くことが必要なのは変わりありません。
また割り込み間隔を短くして自分の番にくる回数を上げようとすると、コンテキストスイッチング多発というさらなる問題が発生します。
パソコンを休止状態で落とすと状態保存するのに少し時間がかかります。これと似たようなことをプロセスが他のプロセスに制御を渡すときにも行う必要があります。これをコンテキストスイッチングといいますが、やはり時間がかかります。このOSのオーバーヘッドが多発すると、システム全体の速度が低下します。システムというのは総合的にいろいろなプログラムが動いて働いています。そのため、あるプロセスだけを異常に優先度を上げるのは得策ではありません。そこで出てくるのがMMCSSです。

*MMCSSとスケジューリング

マルチメディアとスケジューリングという点ではVista以降でサポートされたマルチメディア用の優先度設定であるMultimedia Class Scheduler service (MMCSS)があります。
これはデバイスから取得される時間属性を元に"Pro Audio"とか"Audio"あるいは"Game"などのようにアプリケーションの用途に合わせて、一時的に優先度を設定するものです。具体的にはオーディオストリーム開始前にAvSetMmThreadCharacteristicsで優先度をセットして、終わったらAvRevertMmThreadCharasteristicsで戻す、という風にします。
これはさきの排他モードのコードの例でも使われています。(MMCSSを使うときはストリームがPCMでなければならないようです)
http://msdn.microsoft.com/en-us/library/dd370844(VS.85).aspx

MMCSSはDSPのようなCPUを使う処理をしながら音途切れをさせないというような場合には有効ですが、さきの場合のレイテンシーという点で言うと、優先度を上げても、ポーリングで見に行くという点の完全な解決にはなりません。
まずいくら優先度が低いプロセス(スレッド)の優先度を下げてもゼロにはできないし(10%がミニマム)、他のプロセスにいつかは制御を渡さねばなりません。
MSDNのページでも下記のような記述があります。
MMCSS enables audio applications to run at high priority without denying CPU resources to lower-priority applications.
もともとMMCSSの目的はPCをマルチメディア専用にするのではなく、むしろ他のタスクに迷惑をかけないように共存しながら自分はマルチメディアなんだから優先度をくださいというような用途に使われるものに思えます。

それに対してイベント駆動型ではイベントがあった場合(たとえばバッファの空きが発生したとき)に即座にそのプログラム(タスク)に制御が渡されます。OSが教えてくれるわけなので、自分で見に行く(ポーリング)必要がありません。つまり受動的で無駄がありません。

ところで、イベント駆動はリアルタイムOSに見られる制御方法です。
下記リンクに説明がありますが、リアルタイムOSというのは処理が早いOSのことではありません。必要なときに必要な処理を行える仕事のスケジューリングができるOSのことです。そのためにイベント駆動のスケジューリングが使われます。
http://www.semicon.panasonic.co.jp/micom/realtimeos/feature.html
ちなみに今年の話題のひとつだった「はやぶさ」には国産のリアルタイムOSであるTRONが使われていました。

*JRMC15

jrmc15d.gif

こちらがJRMC15の画面です。日本語タグ名も使用ができます。
詳細は省きますが、Foobarが使えれば特にむずかしくはないでしょう。

jrmc15b.gif     jrmc15c.gif

こちらがWASAPIの設定画面です。スタート時のバッファのクリア(flush)などもあり、なかなか細かいところです。

音質はとても透明感の高い澄んだWASAPIならではの音質に加えて厚みが感じられるように思います。これもすばらしい音質です。バランスが取れていて聴きやすさも兼ね備えています。
Foobar 2000とWASAPIコンポーネントだとノイズが入ることがあり、わたしはバッファサイズを工夫して対処していますが、このJRMCのWASAPIはそういうこともなくスムーズです。
ちょっといま忙しいのであまり試せませんが、JRMCはメモリー上での再生とかネットワーク対応など試すところが多いのでまたいろいろと試してみたいと思います。
posted by ささき at 22:48 | TrackBack(0) | __→ PCオーディオ・ソフト編 | このブログの読者になる | 更新情報をチェックする

2010年08月19日

オーディオファイル向けミュージックプレーヤー(7) - KMPlayer + ReClock

今回の記事はWASAPIを使用したWindows 7のための記事です。また、下記のHeadFi記事を参考(スタート)にしていますが、以降のReClockに関して調べたことがらは私があちこちネットをあさって掘り出したものですので、念のため。
http://www.head-fi.org/forum/thread/438010/tutorial-wasapi-support-for-kmplayer-having-a-top-notch-video-audio-player

1. ReClockとは

今回の記事の主眼はKMPlayerではなく、ReClockというソフトウエアです。KMPlayerについては最低限しか書きませんので、詳しくは調べてみてください。

ReClockはDirectShowのフィルター(プラグイン)で、役割はレンダラーです。
DirectShowは略すと同じDSなのでDirectSoundと混同されることもありますが、基本的には別なものでDirectSoundはDirectXというマルチメディアライブラリーの一部、DirectShowはメディアプレーヤーのフレームワークです。ただし名前が似てることから推察されるように関係はあります。(ここでは詳述しません)。DirectShowはフィルター(プラグインとかモジュール)を組み合わせてマルチメディアプログラムを作る骨組みみたいなものです。フィルターには入力のためのものやレンダリングのためのものもあります。
なおDirectShowはMedia Foundationという新しいフレームワークに切り替わりつつあります。

ReClockはもともとは動画再生のためのレンダラーで、目的は動画をスムーズに再生させるためにグラフィックボードのクロックからフレームレートを調整するようなものです。
ただ最近では海外でもコンピューターオーディオ流行りのこともあり、ピュアオーディオだけでも使われることが多くて音がよくなると評判です。そこでちょっと調べてみました。

わたしも実際のReClockの動作に関して詳しくはないのですが、どうやらReClockはソフトウエア的なASRCのように微妙にリサンプリングをして動作周波数を調整するようです。つまり44.1->88.2のように大きなリサンプリングではなく、44.12356を44.10000にするような感じです。ただし、実際の調整法はこのようにぴったりのサンプリングレートにするのではなく、たとえばサウンドカード/DACのクロックに対して早めとか遅めにリサンプリングして、DA変換のときに再生ピッチシフトをさせることで調整するようです。この辺はちょっとよく分かりません。

2. どうしてKMPlayerを使うのか?

まずReClockを使用するにはプレーヤーがDirectShowで作られている必要があります。
こういう用途には一見Foobarが向いていそうですが、FoobarはDirectShowで作られているわけではないので、DirectShowフィルターを使用することができません。
正確に言うとinput_dsというコンポーネントで入力フィルターは使えるようですが、ReClockのようなレンダラーフィルターは使えないようです。
また、WMP12はMedia Foundationという新しいフレームワークで作られているので、互換性が微妙です。

KMPlayer自体は動画も使えるメディアプレーヤーです。音楽だけで使うときはムービー画面を閉じてミュージックプレーヤーモードになります。対応フォーマットが豊富で、ALAC(Appleロスレス)も標準で対応しています。

kmp_3.gif

おそらくKMPlayerとReClockの関係は、AmarraでいうiTunesとSSEの関係に近いのではないかと思います。つまり音源管理担当と音だし担当みたいなことなんでしょう。Amarraを使って、iTunesのQuickTimeをSSEに変えることで音が良くなるように、KMPlayerもレンダラーをReClockに変えると音が良くなるということでしょうね。
出力先デバイスとかOutput設定もReClockの担当です。そのため、ReClockを使うとWASAPI対応となります。また逆にWASAPI対応されたReClockが必要です(後述)。

3. インストール手順

ReClockはソース提供(GPL)でもあるため、バージョンがあります。古くからあることもあってネットのあちこちでReClockのダウンロードが見つかるかもしれませんが、基本的にはWASAPIを使うためにはslysoftのものが良いようです。

3.1 KMPlayerをダウンロードしてインストール
http://www.kmplayer.com/forums/showthread.php?t=4094
設定項目はデフォルトでよいと思います。

3.2 ReClockをSlysoftのサイトからダウンロードしてインストール
http://forum.slysoft.com/showthread.php?t=41776
設定項目はデフォルトでよいと思います。

両方とも英語のみページなのでわかりやすいようにダイレクトリンクにしましたが、本日付けの最新です。なるべく一階層戻って最新版を確認してください。

3.3 デスクトップにConfigure ReClockアイコンができるので、それをを立ち上げて設定する。

kmp_reclock_set.gif

*PCM設定をWASAPIに設定
*Device to use withをDefault deviceに設定。ここではHalide Bridgeを使っています。 (サウンドの設定からデフォルトデバイスを確認してください)
サウンドカードの場合はここで選択ができるかもしれません。(Win7マシンにはいま内蔵カードを入れていません)
*PCM outputの設定を変えます
QualityがBest Syncだと少しグリッチる(ノイズ不具合)のでGoodにしてあります。環境次第ではBestでもうまくいくかもしれません。
Formatは注意が必要です。ProtonやBridgeなど24bit native(24bit padding)転送のデバイスを使うときは、ここのFormatを24bit int(24bit整数型)にしてください。そうでないとdevice not supportedとエラーになります。
おそらくゴードン系のAyre QB-9はこれが必要だと思います。またフェーズテックHD-7AやDACPortも必要だと思います。24bit paddingはAsycもAdaptiveも関係ありません。
24bit paddingはサウンドの共有モードのプロパティで16bitの選択が出てこないことでわかります。こういうデバイスは24bitでしか受けられないので、24bitに16bitをパディング(詰めて)して送らねばなりません。
またuDACのようにPCM27xxを使用しているものは逆に16bitにしないといけませんので、デバイスに応じて設定が必要です。
バッファなどは特にいじっていません。

3.4 KMPlayerを立ち上げて画面上で右クリックする(日本語で出るはず)
オプション設定->環境設定->オーディオ処理のところでオーディオレンダラをReClock Audio Rendererに設定。

kmp_setup.gif

(ここの設定を見ると参照しているデバイス情報などが分かります)


3.5 KMPlayerで再生
KMPlayerからOpenかスクリーンに楽曲ファイルをドラッグして音楽ファイルを再生します。あとはKMPlayerの使い方を参照ください。

全体に設定はFoobar+Asio4all程度の難易度で、一回設定するとあとは普通のプレーヤーなのでcMP2とかXXHighEndよりは楽に使えると思います。
Appleロスレスも標準でサポートしているのでかなり楽です。

XPでは試していませんが排他WASAPIの代わりにKernel Streamingに対応しているようです。hiFaceともうまくいくかも。

4. 音質

実際にHalide Bridgeを出力デバイスにしてHeadroomで聴いてみました。KMPlayerとReClockとの比較にはFoobar 2000とWASAPIコンポーネントを使用しました。ReClockからもWASAPI排他モードで出力されるように設定しています。

たしかに音の違いはかなり明確で、上のHeadfi記事のようにぱっと聴いてすぐに違いがわかります。
同じ音を出してもより豊かでかつクリア、空間表現も良いですね。細かい音の抽出も良く、こんなに性能があったかと気がつかされます。
またFoobarより音楽的に好印象です。特にオーディオをやってきた方は、Foobarが痩せた感じで、KMPlayer+ReClockは厚みがあり豊かに聞こえると思います。

Foobar+WASAPIで十分ビットパーフェクトなんですが、こんなに明確な違いがでるというのは驚きますね。ビットパーフェクトはあくまで前提条件であって、音のよさというのはそこからはじまるというのをちょっと考えさせてくれます。
posted by ささき at 22:35 | TrackBack(3) | __→ PCオーディオ・ソフト編 | このブログの読者になる | 更新情報をチェックする

2010年07月10日

Windows 7 のオーディオ設定とWASAPIについて

わたしも少しまえにWindows 7のパソコンを新調して使ってます。わたしの場合はPhotoshopなんかも使うのでメモリを12GBいれてるので64bit OSを使ってます。オーディオ環境も整えつつありますが、音はXPに比べてかなり良いです。パソコン自体の性能も違うんで単純比較できませんけど、XPのときにあったASIOでも取れない妙な曇り感はかなり薄れました。WASAPIを使うとさらに透明感は増します。Mac OSXとも十分比肩できるプラットフォームになってると思います。

WindowsはVistaで大きく進化しましたけど、オーディオ周りもそのときに見直しされてます。このWASAPIもそのひとつで、Core Audioと呼ばれるOSのオーディオ周りの新アーキテクチャの一部です。
とはいえWASAPI自体はよく比較されるASIOとはちょっと違います。わたしも混同していたところもあるので、少し整理したいと思います。

*この記事のソースは主にMSDNのCore Audio API解説です。

1. WASAPIとは

よくASIOと比較されるのですが、WASAPIはドライバーではありません。前に書いたようにWindows7はマイクロカーネル的な考えで設計されているので、本当にハードにくっつくドライバー以外はOS付属の機能といえどユーザーモードで動作します。
*ちなみにVista/7のオーディオエンジン(XPのカーネルミキサー)はユーザーモードで動きますが、アプリケーションとは別に保護されているようですので、厳密にユーザーアプリと同じではありません。

それではWASAPIとはなにをするものか、と言うことですが、これは名前を見てみると良いかもしれません。
WASAPIはWindows Audio Session APIの略です。つまりWindows Vista/7で加わった「オーディオセッション」というCore Audioの概念を統括するソフトウエア群です。
オーディオセッションと言うのは複数の「オーディオストリーム」を束ねて抽象化する概念です。オーディオストリームとはつまりミュージックプレーヤーからドライバーへの音楽データ(オーディオサンプル)の流れと言って良いでしょう。

オーディオセッションの役割ということで、例をあげてみます。
一口にミュージックプレーヤーと言っても実体は複数のプロセス(プログラムの単位)から成り立っています。例えば楽曲ファイルが著作権保護されていた場合、音楽再生するプロセスとは別に保護解除するプロセスが必要になります。しかしそれぞれ別個のプロセスから出たオーディオストリームが別だと音量がばらばらになってしまうかもしれません。それらのオーディオストリームを同じ作業の単位ということでまとめれば、ボリュームなど変更を等しく適用できます。それがオーディオセッションです。
つまりこの場合ボリュームの適用は個々のオーディオストリームではなく、オーディオセッションに対して適用されることになります。

それではよく言われるWASAPIを使うとレイテンシーが小さくて音が良い、と言うのはどういうことかと言うことですが、ここで排他モードと共有モードと言う言葉が出てきます。ここでは前のMSDNのブログに関する記事もご覧ください
またこちらにPCオーディオファン2の図の元が有ります。
http://msdn.microsoft.com/en-us/library/dd316780(VS.85).aspx

2. 排他モードと共有モード

簡単にまとめると、排他モードのときはオーディオストリームの行き先はドライバー(エンドポイント)に直結されます。さらにドライバーへのデータの受け渡しはCPUを介さないDMA(Direct Memory Access)によるマッピングで行われるため、レイテンシーも最小に出来ます。ビットパーフェクトの保障ができるのもこの経路と「理想的な」ドライバーを組み合わせたときです。
よりよい音を求めるときのモードといえます。

共有モードのときはストリームの行き先はいったんオーディオエンジンになります。オーディオエンジンで他のアプリの音とミックス(つまり共有)されたあとにドライバにいきます。ここはXPではカーネルミキサーと呼ばれていたところです。
オーディオエンジンとドライバーはやはりDMAによるマッピングで直結されています。オーディオエンジンはWindows7ではVistaからさらに低レイテンシーに改良されているようです。
より自由な使い方を求めるときのモードといえます。

排他モードと共有モードの違いでレイテンシーの他はフォーマットもあります。
排他モードではPCMでなくても出力できます。DSDなどは排他モードで出せそうです。
共有モードではPCMでなければなりません。これはWASAPIではなく、経路に挟まるオーディオエンジンがPCMでなければ処理できないという制限です。

それではこの排他とか共有というモードはどこでどうやって決めるのでしょうか?
それについてもう少し深く見て行きます。(以後はプログラミング解説的な内容になります)

まず排他モードと言うのはどの単位のモードの設定なのかというと、オーディオストリーム単位です。オーディオストリームを初期化するモードが排他モードか共有モードになります。ファイルをオープンするときに読み書きのモード指定するような感じだと思います。

さきほどはWASAPIの概念的な定義を書きましたが、WASAPIの実体はWindows7でのオーディオストリームを作成管理する一連のプログラミング・インターフェイスです。下記ページに記載されているものです。
http://msdn.microsoft.com/en-us/library/dd371455(VS.85).aspx
これらのインターフェイスでCore Audioで加わったオーディオ周りの動作を規定するわけです。

例えば具体的にこちらのページに排他モードでオーディオストリームを作成するプログラムの例が乗っています。
http://msdn.microsoft.com/en-us/library/dd370844(VS.85).aspx
なかほどの"pAudioClient->Initialize()"でpAudioClientオブジェクトに対してInitialiseメソッドを適用しますが、ここでオーディオストリームを排他モードで初期化しているのが分かります。
第一引数"AUDCLNT_SHAREMODE_EXCLUSIVE"が列挙型で排他モードを意味しています。共有モードで初期化する時は"AUDCLNT_SHAREMODE_SHARED"になります。また最後の引数はNullですが、ここはセッションGUIDというこのストリームが属すべきオーディオセッションのIDです。これがNullと言うことはどれにも属さないということです。
Initializeメソッドに関しては下記に詳しい解説が有ります。
http://msdn.microsoft.com/en-us/library/dd370875(VS.85).aspx
ここでさきの排他モードと共有モードの列挙型が記載されてます。
AudioClientというクラスはアプリケーション(ミュージックプレーヤー)とオーディオデバイスをとりもつ役割をします。
http://msdn.microsoft.com/en-us/library/dd370865(VS.85).aspx

先のコードの少し上をみるとpAudioClientの対象の出力デバイスはデフォルトデバイスということがわかります。pDevice->ActivateのところでpAudioClientとのリンクがなされています。このデバイスで排他モードが使えるのかというのは、この例ではその下のGetStreamFormat関数の中で確認してます。

つまり排他モードとか共有モードというのはデバイス側のプロパティなどで決定するのではなく、あくまでアプリケーション側が明示的に宣言することで決められるということです。

3. デバイス設定

一方でデバイス側では、サウンド設定からデバイスプロパティで下記の様な共有モードと排他モードの設定ができます。これはWavelength Protonの例です。

win7a.gif

二つある排他モードの設定の上の方がこのデバイスで排他モードを許すという設定です。ただし排他モードを決めるのは上で書いたようにあくまでWASAPIを利用したアプリケーションなので、ここで設定したからといって排他モードになるわけではありません。

共有モードの設定はオーディオエンジンの設定と考えた方が良いでしょう。
共有モードではさまざまなアプリケーションからのオーディオストリームを混ぜるので、オーディオストリームのサンプリングレートが異なるときには統一せねばなりません。
XPのカーネルミキサーでは48KHz固定だったこの統一サンプルレートを、Windows7ではここでデバイスから取得した値にいろいろと可変できるということです。

またProtonではアプリケーションに基本24bitでの出力を要求していることがわかると思います。ちなみにこれがiPadがProtonでは動かない原因と考えられます。(iPadは16bitしか出せないため)

もうひとつポイントとしてここでは88KHz/24bitの設定が抜けています。これはWindows7の問題です。(PCオーディオファン2のP205参照)
ただし排他モードではどのみちこの設定は意味がないので、88KHzがここで抜けているからといってWindows7では88KHzが使えないというわけではありません。

たとえばFoobar2000のリサンプラーできれいにx2で整数倍アップサンプリングをして、44.1を88.2で出したい(DACに渡したい)というときは、排他モードで出せばよいわけです。排他モードにすれば共有モードで設定してあるサンプルレートは無視されます。
共有モードにした場合は上のダイアログでセットされた値にリサンプルされます。また共有モードの場合は仮にここでセットした値と同じサンプリングレートでプレーヤーから出したとしてもビットパーフェクトは期待できないと思います。

4. WASAPIの実際のプレーヤーでの使用例

下の図はFoobar2000でWASAPIコンポーネントを入れた場合の出力先の選択を示しています。
DS(DirectSound)経由かWASAPIかをそれぞれのデバイスで選べます。現在Proton(USB DAC)とBridge(USB DDC)が接続されています。

win7b.png

DirectSound経由の場合はサウンドエンジン経由、つまり共有モードに設定されます。この場合はリサンプラーをFoobar側で使ってもどのみちオーディオエンジンでさらにリサンプルされるのでアプリ側でのリサンプルは不要(二度手間)に思えます。
またWASAPIコンポーネントも中では排他モードでしか初期化していないようです。たとえばデバイスプロパティで排他モードのチェックをはずして排他モードを使えなくするとエラーで再生できなくなります。
このときに排他モードで開けてエラーならば、共有モードで初期化するという手も本来あるはずですがそれはしていないようです。まあそれはDSを使用してくれ、ということでしょうけれども、WASAPIでの共有モードの音も聴いてみたいとは思いますね。


ちょっと長くなりましたが、Windows 7のオーディオプラットフォームとしての能力は高いと思うし、Windowsはアプリケーションの選択も多いのでうまく使いこなしていきたいと思います。
posted by ささき at 22:16 | TrackBack(1) | __→ PCオーディオ・ソフト編 | このブログの読者になる | 更新情報をチェックする

2010年07月03日

マイクロソフトのブログによるWindows7オーディオの仕組みの解説

ちょっとおもしろいことに6/28付けのMicrosoftのMSDN(デベロッパ用)のブログでWindows7のオーディオアーキテクチャについての解説がなされています。MSDNはマイクロソフトのデベロッパ用のサイトです。このブログはMSDNのサブスクリプションライセンスに関係なく見られます。
「PCオーディオファン2」が手元にある方はP200からの「Windows Vista/7の音声システムの秘密」もあわせて読むとよいと思います。エンドポイントとはなにかというようなことはそちらに書いてあります。

こちらがそのブログのアドレスです。
http://blogs.msdn.com/b/windows_multimedia_jp/archive/2010/06/28/4-windows7.aspx

これは開発者用のMSDNなのでそれなりの知識が必要ですが、けっこう胆な興味深いことがいろいろと書いてあります。また、ビットパーフェクト(バイナリ一致)の様にPCオーディオ用語を使って解説してくれてるのが新鮮です。

まずそのビットパーフェクトの保障ですけど、つまりはWindows7 Certifiedドライバー、またはMicrosoft のドライバ(標準ドライバ)でなければ、排他モードのWASAPI 経由であってもビットパーフェクトは保障されないということですね。もちろんこれはOS部分(経路)の話なので、ここに書いているようにその前後のアプリケーション(つまりプレーヤーソフト)やハード・デバイス側でリサンプルしたりデジタルボリューム処理をしていたら成り立ちません。
XPでのカーネルミキサーに代わるオーディオエンジンも、カーネルミキサーが固定小数点演算してたのに比べれば、単精度(32bit)でも浮動小数点処理しているので少しましということになります。

またレイテンシーの短縮について、アドレスマッピングで実装されているというところがちょっと面白いところです。
排他モードWASAPIのときは(ユーザー空間にある)エンドポイントバッファにアプリケーションがオーディオデータを書き込めるとありますが、これはエンドポイントバッファ経由でドライバにオーディオデータを渡す(コピーする)のではなく、直にドライバーのデータエリアに書いてることと同じということです。
基本的な話として、アプリケーションはユーザーモード(ユーザー権限)で動作しているので、ドライバーの保護されたカーネル空間に直にデータを書き込めるわけではありません。ただしこうしてマップすることであたかも直接カーネル空間に書いてることと同じということです。PCオーディオファン2の図1ではエンドポイントバッファは線にまたがる様に書かれていますが、こういうきちんとした訳があったということです。
コンテキストスイッチングするからゼロではないにせよ、コピーなしの参照で済むということはかなり時間短縮になります。逆に言うと他のシステムでもこういう実装しているのなら、レイテンシーはOSのオーバーヘッドに左右されるということでしょうか。

また、Vista/7ではOSのオーディオコンポーネントがユーザーモードにある(つまりはマイクロカーネル的な考え方をしている)というのは、本来OSの一部であるVista/7のオーディオエンジン(XPのカーネルミキサー)はカーネルモードではなくユーザー権限で動作していることでも分かります。ブログの図では明確に分かりますね。PCオーディオファン2の図1ではユーザーモードとカーネルモードの両方にまたがっていますが、ここはブログの図のように完全にユーザーモードにあると見るべきでしょうね。
このようなマイクロカーネル的な考え方をしているというのはWindows7の優れた点の一つです。ただここは少しOSのアーキテクチャの解説が必要なのでまたそのうちに書きたいと思います。

いずれにせよ、マイクロソフトでも作り手のほうがオーディオ的な考え方を意識してくれているというのはなかなか良いことですね。
ちょっと今後も楽しみにしていきたいところです。
posted by ささき at 00:37 | TrackBack(0) | __→ PCオーディオ・ソフト編 | このブログの読者になる | 更新情報をチェックする

2010年06月06日

Amarra2.0登場

Amarraがバージョンアップされて2.0となり大きく変更されたようです。
http://www.amarraaudio.com/
さまざまな変更点がありますが、デザイン的にもいままでiTunesに寄生しているようなソフトウェアだったのが、より単体プレーヤーに近いものになったように思ます。これは一つには2.0では期待されていたようにFLAC対応がなされたのですが、iTunes本体ではFLACを取り扱えないので、従来のローカルなプレイリスト機能を拡張してFLACが取り扱えるようにしたと思います。そこを拡張したのでより単体プレーヤーに近いようになったように見えます。バックグラウンド処理機能が拡張されてFLACはAIFF(Macの場合?)に変換可能とありますが、FLACはnativeサポートとも書いてあるので直接再生できると思います。
FLAC対応以外ではフルバージョンではDSDが取り扱えるようになったようです。ただこれは直接DSDを再生しているのではなく、PCMにバックグラウンドで変換する機能がついたというようです。miniではこの機能はなく、miniの最高サンプリングレートが96/24のところも同じです。
Miniはライセンスの形態と価格の関係が少しだけ変わりましたが、大きな価格の変化はありません。そのかわりエントリーバージョンとして$79と低価格のAmarraジュニアというタイプが加わっています。これはサンプリングレートが44kHzまでと制限がありますが、24bit対応ですので、ハイサンプリング対応ではないけれども、ハイリゾリューション対応と変則的なものになっています。またジュニアではいろいろな機能制限があります。
これはあきらかにPure Music Player対策に思えますが、なんと今回Amarraビニールなるソフトも加わりました。あきらかにPure Vinylを意識したものでしょうね。こちらは8月発売とのことです。
それと新たにHDtracksと提携を始めたようです。

Amarra対Pure musicも良い競争関係になってくれると面白いところです。
posted by ささき at 11:52 | TrackBack(0) | __→ PCオーディオ・ソフト編 | このブログの読者になる | 更新情報をチェックする