CORE AUDIO driver on Mac

これまでの検討から、どうやらMacのCORE AUDIO driver自体はbit perfectに対応しているものの、その上位のアプリがどのようにファイルを扱うか、というのがbit perfectな再生になるかどうかの分かれ目のようです。

どうやらAfplayやQuickTimeというアプリ自体は、CORE AUDIOに、ファイルのあるがままを引き渡していないのだと思います。これは想像ですが、これらのアプリでは、ファイルを読み込む際に32bit浮動小数点(float)として扱い、再生時に24bitに戻してCORE AUDIOに渡しているのではないでしょうか?その変換時に何らかの丸めが入るとか・・・。

また、iTunesでは44.1kHzにおいては(48kHzもそうかもしれませんが)、24bitファイルもbit perfectな再生ができていると考えられます(スペクトラムから判断して)。これは嬉しいですね。

ただ、それ以上のハイレゾファイルは、AUDIO MIDI設定でサンプリング周波数を正しく合わせたうえで再生しても、サンプリングレート変換が入ってしまうようで、スペクトラムは悪化していました(今回調べたのは96/24の場合です)。

つまり、CDからリッピングしたファイルや、The BeatlesのUSBのような44.1kHz/24bitものは、MacのiTunesで楽しめばよい、と言えそうです。

ちょっと別件ですが、Appleといえば、話題のiPadが近日iOS4.2にアップデートされるそうです。で、カメラコネクションKitとの組み合わせで、USB AUDIO ClassのAsync転送に対応するようです。おそらく、かなりの確率でUSB DUAL AUDIO基板でも、iPadでジッタフリーな (bit perfectかどうかはまた別問題ですが) 再生が楽しめるようになると考えています。

Amarra Junior (再びMacネタです)

MacからBit perfectで再生可能なアプリを探している途中で、雑誌等で以前から評判のAmarraというソフトに、44.1kHz(16-24bit)専用の機能限定版である、Juniorというのがラインナップに追加されたということを知り、早速購入しました。

79ドルのこのソフト、iTunesとともに起動させ、再生するとエンジンがAmarraのそれと乗り替わる、というものです。

これでiTunesからBit perfectで再生できる!と喜んで、早速テストしてみました。まずは44.1kHz/24bitのwaveファイルをiTunesに登録し、Amarra経由で再生です・・・・・って???

ちなみに、テスト条件は昨日の記事と同様です。USB DUAL AUDIO基板のS/PDIFより、別PC上のS/PDIF入力付きサウンドカード(ASIO対応)へ入力し、スペクトラムを観ています。

結果としては、折角の24bitファイルを16bitに切り捨てて再生しているとしか考えられない結果となりました(綺麗な?高調波歪まで付いてきます)。24bitサポートというのは、単に「再生できる」というだけなのでしょうか?

ちなみに、同じAmarra Juniorを経由して44.1kHz/16bitのファイルを再生すると、きちんとBit perfectになっているようです。

これではわざわざAmarra Juniorを購入した意味がないのでがっくりしました・・・・、が、ここで気を取り直してAmarraを経由せずに44.1kHz/24bitのwaveファイルをiTunesから再生してみました。

と、どうでしょう

なんていうことはありません。iTunes単独で44.1kHz/24bitのwaveファイルはBit perfectな再生ができている(であろう)、ということがわかりました。ちなみに、バージョンは10.0.1です。 

Amarra audioには後ほどメールしてみようと思います。

ROM切り替えSW

USB DUAL AUDIO基板では、「バルク転送モード」と、標準規格の「USB AUDIO Classモード」とを、起動前にジャンパ・ピンを差し替えておくことで行き来することができるようになっています。

これは、USBマイコンのどちらのファームウェアを使うのかを、ROMを選択することによって切り替えているわけですが、基板をケースへ入れてしまうと切り替えが簡単にできなくなるという問題があります。

このジャンパは、それぞれのROMへ行くI2Cという制御線を切り離すか接続するかという2者択一のジャンパなのですが、I2Cという制御線自体は、USBマイコンとFPGA、そして2つのROMに繋がっており、動作状態ではUSBマイコンとFPGA間の通信をつかさどっておりますので、このI2C制御線を外へ引き出す場合には、とにかく最短である必要があります。

たとえば、ケースの前面パネルまで2つのROMのジャンパ・ピン用のヘッダから線で引っ張ってきてそこで差し替える、などいうのはご法度です。

そこで、次のような回路を考えてみました。これなら回路基板をUSB DUAL AUDIO基板近傍に配置しておいて(ROMからのI2C線引き出し距離も最短にできる)、かつ、切り替え用 (ロータリーなど)SWへ行く線は多少長くても大丈夫です。DIPの標準ロジック2個でできますので、是非試してみてください。

MacにおけるBit perfect

専用アプリを使ってWindowsでの「バルク転送モード」でwaveファイルを再生する限りにおいては、元ファイルを加工せずにそのまま転送するだけですので、特に神経を使うことはないですが、

先月リリースしたUSB DUAL AUDIO基板を使って、標準のUSBオーディオクラスに則った再生を行う場合、何かと面倒なことが多いです。

それでもWindowsの場合には、foobar2000とASIO4ALLといったフリーソフトを使えば、割と簡単にWindowsのミキサーを通ることなく再生が行えますが、Macの場合はどうなるか正直良く把握していませんでした。

ということで、ちょっと調べてみました。用意したのは44.1kHzと96kHzのwaveファイル。事前にWavegeneを使って作っておきました。

これをMac (ちなみに最新のOS X 10.6.4にアップデートしてあります) に繋いだUSB DUAL AUDIO基板上のS/PDIFを経由して、別のPCのRME HDSP9632というカードへ入力し、そのPC上で動作するWavespectra でリアルタイムに「録音」してスペクトラムを観てみました。

まずは、再生アプリとしてQuicktimeやAfplay(ターミナルから起動)を使用した場合のスペクトラムです(上:44.1kHz,  下:96kHz)。

 音が良いと評判のAfplayを含めて、Macに標準で付属するツールでの再生では、Bit perfectになっていません。オリジナルのwaveファイルのスペクトラムを表示しないでおいて書くのもなんですが、僅かに性能が悪くなっています(とはいっても、たとえこれでもかなり優秀です)。ちなみに、Afplayは「再生クオリティ」を ‘1’ に指定しています。

いずれにしてもスペクトラムが明らかに悪くなっているので、Bit perfectでないことを証明するには十分です。

次に、大昔?に買ったKORGのMR-1というポケットサイズのDSDレコーダーに付属していたAudioGateというソフトのMac版を使って再生した結果を示します。

スペクトラムを見る限り、元ファイル直接再生と同じだと考えられます。ということで、おそらくBit perfectではないかと思います。

FreeでBit perfectなソフトがあるとよいのですが・・・

DSD用のポストフィルタ(2)

下の記事を文章にしてみた途端、きっかりと目標仕様になっていないことが気になり、昨日1日かけてもう1枚DAC基板を半田付けしました(涼しくなってきたのでようやく半田作業が辛くなくなってきました)。

目標スペックはDSD再生時でトータルの周波数特性が5-50kHz(-3dB)程度。

下の記事のポストフィルタ特性では、DSD1794A内蔵のアナログFIRフィルタ特性との合わせ技で、50kHzが下がりすぎてしまっていました。

CD再生では、デジタルフィルタの折り返しが8fsを中心に±22kHzほどの範囲にへばりついているはずですので、実際には358-22kHz(=340kHz位のところ)で利得が0になっていれば問題無いはずだと考え、フィルタの再計算をしました。

結果的に、今までより次数を1段減らした構成でほぼそれらしき特性に近づきました。

最近、YAMAHAのCD-S2000のサービスノートがネット上に出回っているようですが、その2000に較べても、段数が1つ削除された構成になりました。

10kHzからわずかにハイ上がりな感じになりますが、しばらくはこの回路構成で使いこみます。ちなみに、DSD再生時のノイズシェーパーの残留ノイズは、正弦波の再生時にオシロ上でも僅かに観測されますが、50kHzで-3dBの周波数特性であれば、当然許容できる範囲なのでしょう。

DSD1794A基板用のポストLPF特性

ある方からDSD1794A基板の後ろにつける回路のLPF特性についてご質問を頂きました。

大変大雑把な回答で恐縮なのですが、当方の場合はDSDの音源も聴きますので、『大体市販のSACDプレーヤーのようなf特にしています』と、回答させていただきました。

当方のリファレンスとしているプレイヤーは、5Hz-50kHz(-3dB)となっていますので、フィルタの特性を大体同じような特性になるようにしています。

30kHzまではほぼフラット、40kHzで-1dB程度、そして50kHzで-3dB程度になるようにしています。また、44.1kHzの音源再生で、8Fsオーバー・サンプリングの折り返しから逃れる為に、4Fs(176.4kHz)近傍でほぼ利得がゼロになるように構成しています。

下のグラフはSPICEの結果ですが、実測もほぼ一致しています(実測するために30kHz/40kHz/50kHzのwaveファイルもわざわざ作りました(笑)。

後述するような理由により、本当は4Fsに向かってもう少し急峻な特性にして40kHz-50kHz近辺での利得がもう1dB位高くなるようにした方が目標の特性には近づくと思うのですが、「まあいいか」という感じで放置しています。これでオシロで見てDSDのノイズはほとんどわかりません。

実は、DSD1794AによるDSD再生時には、Advanced Current Segmentという67レベルのデルタシグマ方式によるD/A変換では無くて、同じカレントセグメントをアナログFIRフィルタのタップ係数の重みづけとして使用した合成電流によるフィルタ出力になっています。

このフィルタ特性は4種類のモードがあって、フィルタのカーブとゲインがレジスタで選択できるようになっています。データシートをご覧いただくとわかると思いますが、大体のモードにおいてこのフィルタが50kHzで-1dB位の特性となっています。つまり、DACを出た時点ですでに50kHzで-1dBになっているのです。

ついでに、4種類のうちゲインの一番高いモードに設定しています(PCM比で-1.5dBのモードを採用)。選ぶモードによってはPCM比で6dB位落ちますので、PCMモードとボリューム位置があまりにも変わるのもどうかと思いまして・・・・。

製品でしたら、増幅回路を追加してゲインを合わせたりするのだと思いますが、自作なのでアンプを追加したいと考える方は少ないだろうという判断です。

2つのモード

USB DUAL AUDIO基板では、電源を入れて起動する前にジャンパで2つのROMのうちのどちらか一方を選択しておくわけですが、「Bulk転送」モードを選択して起動した場合には、所定のドライバをインストール後に、デバイスマネージャーは下図のようになります(Windows 7の場合:PCの機種によって多少異なります)。ドライバーのインストールは初めて起動する時に1度だけ必要になります。

大抵のPCでは「ユニバーサルシリアルバスコントローラー」という項目に “Cypress EZ-USB Example Device” というデバイスが追加されているはずです。これが現れない場合は、ドライバーが導入できていないか、ジャンパが2つとも外れているか、あるいは2つともショートされているか、などが考えられます。

次に、「USB AUDIO Class1.0」別名「アイソクロナス転送」モードで起動した場合には、自動的にOS付属の標準ドライバ(Windowsの場合はusbaudio.sys、Macの場合はCORE AUDIO)が導入されますので、特にドライバーのインストール作業を意識する必要はありません。ただ待つだけです。

無事に導入が完了すると、Windows 7の場合、デバイスマネージャーは下記のようになります。

今度は「サウンド、ビデオ、およびゲームコントローラー」の項目に、”EZ-USB”というデバイスが追加されているはずです。

この状態で、めでたくiTunesやfoobar2000などが使えるようになっています。

USB DUAL AUDIO基板

USB AUDIO基板からDSD4ch録音機能を省くことにしましたので、基板上のFPGA内に結構大きく構成された2ch分のDSD2PCM変換機能が不要になります。この回路部分も削除した結果、ある程度の機能を追加することができる見込みとなりました。

基板の付加価値を下げないためにも、キワモノというか、できるだけ尖がった機能を新たに入れこもうと考えたのですが、すこしばかり保守的な方向に傾いてしまった感が否めません。

結局、独自Bulk転送による44.1kHzから192kHzまでのSTEREO waveファイル録再、2.8MHzと5.6MHzのSTEREO DSDIFF(DSD)ファイル録再、という機能に追加して、標準の「USB AUDIO Class 1.0」に準拠したアイソクロナス転送を使って、44.1kHzから96kHzまでのSTEREO PCMファイルの再生機能を追加しました。Quad speed再生には「Bulk転送」モードをお使いください。

いままで再生できなかったフォーマットが再生できる、というわけではないので、本質的な機能追加とはいえないかもしれませんが、多くの標準的なアプリケーションが使えるようになることが期待できますので、いろいろな意味で幅が広がるかもしれません。手元の2009年型MacBookでもOS X上でUSB DUAL AUDIO基板は使えています。

もうひとつ。単に標準にも準拠した、というだけではつまらないので、そこは当方流にアレンジしました。そもそもオリジナルのBulk転送版はPC側のクロックの影響を受けずに、「基板上の水晶発振精度で再生する」というのが特徴だったわけですので、その特徴はアイソクロナス転送時にもきちんと受け継いでいます。

現状では、出来合いのチップを使って(プログラムせずに)標準オーディオクラスでこのような機能を実現することはできないと考えております。

本基板では同じ1枚の基板上で実現させるわけですから、アイソクロナス転送の方だけPLLを使ってPC側のクロックと歩調を合わせる、というのではハード(回路)的にも意味がありませんので、Bulk転送とまったく同じデバイスを使って新しい機能をインプリメントしました。

Ayre社のQB-9という機種がありますが、この機種と同じようにPC側をフロー制御※してUSB基板側のクロック速度・位相に合うようにPCからのデータ量を調節する方法で、PC側のクロックと完全に非同期で動作させています(Asynchronous転送)。

したがって、Bulk転送モードとは実現方法が異なりますが、どちらのモードも基板上の水晶発振器レートで動作させることができるというわけです。 

ご興味のある方はこちらのページに詳細を記載しましたのでご覧ください。 

※USB基板とPCのクロックは全く無関係に動いていますので、PCからあるサンプリング周波数でデータが送られてくる場合、USB基板側は本来その速度に合わせて動作しなければなりません。USB基板側が自分のクロック速度で「勝手に」動作していれば、いつかは辻褄が合わなくなって受信データがバッファから溢れてしまったり、バッファが空になってしまうというわけです。そこで、ある一定の期間内におけるPCからのデータ転送量がUSB基板側のクロック動作速度に見合うように、USB基板側から「次からもう少し多めに転送してね」とか、「次からもう少し少な目に転送してね」といった指示をPC側に出して、トータルでの転送量をUSB基板側のクロック速度に合うように調節しています。

PCM4204

USB AUDIO基板に実装しているバーブラウンの4ch A/Dコンバータ、PCM4204ですが、入手が難しい部品となっています。ディストリビューターに在庫があるときを狙ってある程度の量をまとめて確保しなければならないという事情もあり、現在のUSB AUDIO基板は前回の再リリースをもって終息させていただくことにしました。

5.6MHzのDSDモードで4ch録音ができる!というのが最大の特徴?だったわけですが、残念ですがここに終了させて頂きます。PCM4204については、別基板でユーザーの方に実装して頂く形にするという考えもありそうですが、このチップは発熱が多い関係でチップの底面がサーマル・プレートになっており、基板のグランドプレーンと半田付けが必要になります。つまり、実装工場で、あらかじめ基板のグランドプレーンにクリーム状の半田を塗布しておき、その上にPCM4204を置いてからオーブントースターのような炉で加熱する工程を通す必要があり、半田こてを使った実装ができないという事情があります。

入手できなかった方には大変申し訳ありませんが、どうかご了承をお願いします。

USB AUDIO基板については、新しい仕様で2、3日後にリリースを開始させて頂きますので、引き続きそちらの方をよろしくお願いします。詳細については一両日中に発表させて頂きます。ちなみに、録音機能については2chまでに限定されますが、(オプション基板との併用で)5.6MHzのDSDモードに対応しています。

DSD配信

遂に? DSD配信がスタートしていたんですね!

http://ototoy.jp/feature/index.php/20100812

今回はDSDネイティブなファイルでは無いようですが、次回からはどうなるのでしょうか?

DSDの将来は明るくない?ですが、この試みは続けていただきたいと思います。継続的に良い音楽がDSD配信されるようでしたらありがたいと思います。

現状では、DSFファーマットでの配信のようですので、KORGの機器を所有する人以外は、DSDディスクを作ってPS3を含むSONYの1部機種で再生するしか方法はありませんが、USB AUDIO基板ユーザーさんのためにDSF2DFF変換ソフトを作りたくなるような盛り上がりを期待したいところです。

OTOTOYさん、DSDネイティブ配信、期待しています。