USB 2題

申し込んでおいたWindows10のUpgradeが可能になりましたので、早速Win8.1から上書きインストールしてみました。Win8、Win8.1は、革新的過ぎてUIが今までのWindowsと全く変わってしまい、戸惑うことばかりで全く使いませんでした。Windows10は少し保守的になっているようですので期待しています。

Win8.1には、USDA_MINI基板用のドライバーとFoobar2000関係、そしてVisualStudio2013位しか入れていなかったこともあってか、インストールはすんなりと終了しました。

「オーディオの入力および出力」という新しい項目ができてスピーカーとして認識されています。

ひとまずFoobar2000にてASIO NativeでDSDの再生ができることが確認できました。

さて、話がガラッと変わります以下の記事にて 、ZYBOに実装したMPD on LinuxでDSDのNative再生を行うと、再生の頭で大きなノイズが入ると書きました。記事にもありますように、データの冒頭に値が0x00のデータの塊が送信されてくるために、DSDでは一瞬フルスケールのDCが入ってきたような状態になるからです。

恐らく、この再生の頭のゼロは、ALSAより上位のレイヤーのオーディオドライバーが出していると考えられます。次の再生信号がPCMになるかDSDになるかは、ALSAのみが関知していて、それ以上の人たちは知らないので、再生の頭にはとにかくPCM用にゼロをつけてくるのだと推測しています。

LINUXのソースを読み解けば良いのはわかっていますが、自分的にはUSBのロジック回路で対応することにし、このたび解決させました。

DSD Native再生モードで、再生の頭から連続で送信されてくるゼロを0x96で置き換えてしまいます。一度でもゼロ以外のデータが送られた後のゼロについては当然0x96に置き換えません。

WindowsのASIOドライバーでは全く問題にならないのですが、LINUXのNative DSD再生のために回路変更を入れました。その他、ZYBOにおいてNative DSD再生の際に、44.1kHzからDSDへ切り替わる時のノイズについても、これを抑圧するための回路を追加しました(ZYBO以外でも同じかもしれません)。

これで安心して、UPnPネットワーク・オーディオ・プロセッサ基板と化したZYBOを、Kinskyから制御して快適にネットワーク・オーディオを楽しめるようになりました。

上記のノイズに関しては、接続するDACチップによっては、DACチップの機能でAUTOミュートするため、問題が顕在化しないという事はあるかもしれません。そもそも、lightMPDとUSDA_MIN基板を使ってNative DSD再生を楽しんでおられる方はほとんどいらっしゃらないのかもしれません。あるいはlightMPDではLINUXのソースに手を入れて解決済みなのかも・・・。

USDA_MINI, USDA, ならびにUSBDACに対応する上記問題の改善用ファーム(FPGA)等々を用意しましたので、この現象で困っている方がいらっしゃいましたらご連絡ください。有償になりますが、低廉で書換えサービスを提供させていただきます (現在のところ、lightMPDでNative DSD再生をしない場合には変更の必要はありません)。 ※USDA_MINI基板の7月下旬発送分からはすでに対応しております。なお、LINUXのすべての環境で改善をお約束できるものではございません。あらかじめご了承ください。動作確認したのはZYNQ(ARMv7)上のLINUX(ソースからビルドしています)です。