2012年3月23日金曜日

これはいける!DSD WAVパック方式

これまで、DSDをソフトウエアで再生時にリアルタイムにWAVパックする方式を試してきたが、VoyageMPDで問題なく再生される以外は、ノイズまみれで使えない状況だった。

それが、Music TO GO! さんのブログで、事前にWAVにパックしておき、これを通常の再生ソフトで再生するというある意味非常にシンプルな方法が紹介されている。

http://vaiopocket.seesaa.net/article/258376595.html

XMOSのサイトに「DSDtoPCM encapsulate Tool」がアップされている。これを使うと、コマンド一発で簡単にDSDファイルをWAVにパックすることができる。

https://www.xcore.com/projects/dsd-audio-over-usb

ただし残念ながらFoobar2000で再生するとやはりノイズまみれだ。これは出力がビットパーフェクトではないということのようだ。USB Audio Class2.0 Driverは、Thesyconを使った。

がっくりしつつも、もしやと思いJRMCで再生してみると、なんとノイズ無しの美しい音が出てくるではないか!さすがJRMC!



FLACに圧縮しても音がでる! WAVパックのファイルサイズが1.5倍になることを考えると、圧縮できるのは助かる。しかも、FLACだからタグも入る。これは便利じゃないか!!使える。


*追記

その後、最新のASIOプラグイン foo_out_asio.dll (2.1.1) を古いバージョンに交換してみると、綺麗に再生できたので、この最新のfoo_out_asio がビットパーフェクトでなかったということになる。ビットパーフェクトでなくとも通常の楽曲はちゃんと音が出るので、これまで気が付かなかった。

Foobar2000は、たくさんの人達が常に最新のプラグインを作ってくれるので、常に進化し楽しめるソフトだが、それゆえにこうした不具合問題が起こりがちだ。

一方、JRMCは、ほぼ開発者側が最新のプラグインを標準装備してくれるので、Foobar2000ほど多彩ではないが、信頼性は高いように思う。

9 件のコメント:

  1. asoyajiさん

    こんばんわ。MORです。

    私のところでも,自作のperlスクリプトで似たようなことを試してました(DSDマーカーは0xAAです)。かなり汚いコードであること,いろいろ決め打ちでハードコーティングしていること,perlのスクリプトなので処理が遅いことなどで汎用性が全くないです。MacOS Xの上のsongbirdやAudirvana Plusから普通にDSDのネイティブ再生ができています。MusicToGo!さんのところできれいなコードが公開されているようなので,私のところでコードを公開しておく必要もないかなぁ,という感じになってきました。サンプルデータも置いていますので興味があればこちらをご覧くださいませ。

    返信削除
  2. MORさん
    やっぱりMacにMytekが本流ですかね。Windows8は、USB Class2.0の標準ドライバーを搭載しないということだし、もうWindowsについていくのは限界かも。
    それにしてもご自分でプログラムを作れる人は良いですね。仕組みもよくわかるし視界が大きく広がりますね。うらやましいです。

    返信削除
    返信
    1. asoyajiさま

      MORです。私の場合は,asoyajiさんがされたようにmpdにパッチを当てるのではなく,Voyage MPD Starter Kitの素の状態でDSDをネイティブ再生を実現するということを目指しています。

      MytekのUSB 2.0はLinuxからは認識されないためusb ddcが必要なのですが,手元に176kを通すddcがないため,しょうがなくmacで実験をしています。本業のなかに信号処理をするような仕事もあるためdsdデータは勉強だと思って眺めました(通常はpcmデータしか対象としていませんけれど)。

      おっしゃるとおり,手を動かしてデータを触るといろいろと体で理解できる部分もあって(dsdの密度変調の感覚がなんとなくわかった気がしています),よい,と感じることも多いです。

      削除
  3. asayoji様
    「DSD to PCM Converter」というソフトを作成しているYUKI-SANと申します。

    上記はソフトはDFF/DSFファイルをPCM形式のWAVに変換するソフトですが,
    「DSDtoPCM encapsulate Tool」をヒントに0xAAまたは0x05/0xFAマーカーを付加した24bit/176.4kHzのWAVファイルを出力する機能を追加してみました。

    私の環境ではテストできないため,ご迷惑でなければお試しいただけないでしょうか?
    http://firestorage.jp/download/b5faabcfe4b74eff78e407bb50c91c3d743340d6

    「DSD Native」という設定項目を「0xAA」または「0x05/0xFA」に設定すると動作いたします。

    dcs方式などの仕様をあまり理解できていないのですが,よろしければご指導いただけますと大変ありがたい次第です。

    返信削除
    返信
    1. YUKI-SAN様

      MORです。こんにちは。

      差し出がましいですが,YUKI-SAN様のソフトウェアを試させていただきました。環境はMacBookのBootCamp上のwindows 7でYUKI-SAN様のコードでDSDIFFファイルを0xAAをつけたpcmデータに変換した上で,MacOS X 10.6.8上のSongbird 1.10.1 Build 2160でそのファイルを再生しました。USB 2.0で接続したMytekのStereo 192-DSD DACで受けてヘッドホンで出音を確認しました。DSDIFFファイルのバージョンは1.4.0と1.5.0のいずれでも正しく動作しているようです(サンプル数が非常に限られているためどの程度一般性があるかわかりませんが)。

      そんなにたくさんのサンプルを試したわけではありませんが,結論から言うと上記の環境では正しくDSDネイティブで再生できました。私のMytekのDACはfirmwareが1.3.4なので0x05/0xFAには対応していません(1.4.2bから対応しているようですが,基板のパターンをカットしたうえでfirmwareをインストールする必要があるようなので恐ろしくて試していません)。

      MytekのDACはDSD再生するときにはサンプリングレートの代わりにdSdと表示されますが,再生するタイミングによってdSdと表示されたり176kと表示されたりします。これは私のコードが吐き出したdCS形式のwavファイルでも同じ現象が見られました。よってハードウェアの側の問題であると思われます。いずれにしても,音楽として聞こえている,ということは表示によらず正しくDSDネイティブで再生されていると考えるのが妥当であると思います。

      なお,MusicToGo!さんの記事では176kと表示される場合はDSDネイティブ再生になっていないと読み取れるような記述がありますが,本来,データの中身がPCMではなくDSDの意味を持って送られているので,176kのPCMデータとしてD/Aすると音楽として聞こえないはずです。表示がどうなっているかは精神安定的な効果以外はあまり重要ではないはずです 。

      0xAAのDSDマーカーがついたwavファイルとしては私が書いたコードで変換したものに比べてYUKI-SAN様のコードが吐き出すwavファイルの方が若干ファイルサイズが大きくなっていました(2'10"のファイルでYUKI-SAN様のものが138.4MB,私のものが138.2MBでした)。ひょっとしたら私のコードはいい加減なのでデータをどこかで捨ててしまっているのかもしれません。

      変換速度については1-to-1で比較したわけではありませんが,perlで力ずくで書いている私のコードに比べてYUKI-SAN様のコードは十分に速いという印象でした。

      長文失礼をいたしました。ご参考になれば幸いです。

      削除
    2. MOR 様
      お試しいただいて誠にありがとうございます。
      PCによるDSDネイティブ再生はとても興味があるのですが電子工作というのでしょうか、そちらの分野は全くの素人で試す勇気がない状態です。

      一部の環境では無事に音が出たとのことで大変うれしく思います。
      早く標準化して敷居の低いハードウェアが製品化される事を期待している今日この頃です。

      削除
  4. YUKI-SANさん

    これは使いやすいです。GUIですし、0x05/0xFA と 0xAA 両方のパックを作れるので検証がしやすいです。お陰さまで随分と自分なりに状況を把握することができました。ありがとうございました。

    ブログに結果をアップしました。

    返信削除
    返信
    1. asoyaji 様

      早速にお試しいただき,ありがとうございます。
      無事に再生できたようで安心しております。

      この度は誠にありがとうございました。

      削除
  5. YUKI-SAN様

    私もWIndows XP環境で動かして見ました。
    1ファイルしか試していないのですが、特に問題なく変換できていたようです。
    もしできましたら、逆変換(パックされたWAVからDSDIFFを取り出す)機能があると、実用的に使えるのではないかと思いますので、ご検討いただけると幸いです。

    返信削除