PCM-DSD_Converter作りました

お茶を濁すシリーズ第4段ありました!serです。

 自前でノイズシェーピングの係数導出が中々うまくいかなくて、モチベーションが下がりつつあった中、XLDのライセンス読んでいたらMIT Licenseだったので、係数を拝借してソフト化しました。サイトはこちら。

PCM-DSD_Converter

 機能としてはPCMを読み込んでDSDにするだけです。対応フォーマットはPCM16bitInt~64bitFloat/44.1kHz~768kHz、DSD64~2048です。ただまぁDSD2048は今のところ1/24倍速で、5分のファイルを書きだすのに2時間かかりますが…。DSD64なら、等倍速よりちょっと早いぐらいで変換できます。
 とまぁ、それだけの話なのですが、それだけだとさびしいのでDSDの色々なグラフでも張っておきます。

 様々なPCM-DSD変換ソフトで、24bitInt1kHzサイン信号をDSD64に変換しFFT


 24bitInt1kHz、32bitInt1kHz、32bitInt1kHz信号を本ソフトでDSD64に変換しFFT


 32bitInt1kHzを本ソフトでDSD64-2048に変換してFFT


 今現在、PCMとDSDの比較としてよく見られるグラフは、見る限りでは全てがPCM信号をDSDに変換したものです。PCM-DSD変換はロッシー変換なので、元のPCMと変換したDSDを比べれば、DSDの方が結果が劣ります。24bitIntと32bitIntをDSD変換したものの比較で分かる通り、十分に高精度な⊿Σ変調器を使えば、32bitIntを入力信号とした場合では24bitIntを可聴域内で十分上回る性能を出すことが出来ます。
 ま、DAC ICの中では何が行われてるか分かったもんじゃないので、DSDがそのまま出てくると確信が持てるDAC出ない限り、いくら良い性能のPCM-DSD変換ソフトでパックしても、本質的な向上とまではいかないんですが。ただ、DAC ICの動きは確実に変わるので、DSDに変換して聞くのも面白いかなと思います。特に32bitInt/Floatなど音源をI/Fが24bitIntまでしか受け付けない場合、本ソフトを使ってDSDに変換して聞くのは、可聴域内においては24bitIntに変換するよりもより誤差が少ないのかなと思います。

 まぁ作ったのは良いんですけど、あまりにも変換速度が遅いので、これ何とかしたいですね。Intelコンパイラとか試してみたんですけど、あんまり変わらず。んーむ。ソースコードもサイトの方で公開してるので、こうしたらいいんじゃ?とか言うのがあったら教えてください。
 あと、DSDIFF⇔DSF変換ソフトとか需要あるのかなぁ。作る気になればGUI流用して作れるんですけど、自分はAudioGateがあるんで、、、。
 DSD2048で書き出したものの、再生手段が無いんで、DSD-PCM変換ソフトも作ろうかなと思ったんですけど、本末転倒もいいところなので、ほりゅうちゅう。