PCM-DSD変換ソフトの性能比較
PCM-DSD変換ソフト作りたい!serです。
さて、前回の波形botの記事で、DSD-PCM変換、PCM-DSD変換にチャレンジしたいと書きました。DSD-PCM変換はそれなりの特性が出せたので、PCM-DSD変換にチャレンジしてます。
DSD-PCM変換は変換後のPCMのナイキスト周波数以上をばっさり切れば、まぁ切り方で問題は出ますが、少なくともS/Nは満足できるものが出せました。次はPCM-DSD変換ですが、いやー、これが難しい。難しくてよく分かんないので、人のコードを見て学ぶことにしました。
その第一成果というか、自分の目標としても色々なソフトの性能をチェックしたので、公開しようと思います。なお、今回見るのは1kHzを出した時のFFT結果なので、分かるとしてもS/N,THD+Nが限界です。位相特性とかインパルス特性とかはまぁそのうち。
今回比較するのは以下の通り。
・AudioGate3(高精度)
・JRiver Media Center 20
・KOON3876氏のソース
・XLDのソース
比較手法は以下の通り。ソースは自分でコンパイルですし、DSD-PCM変換も自前なので一般性はおろか、あってるかもちょっと怪しいです。
1.WaveGeneで1kHz-3dBFS+1LSBのホワイトノイズ信号を生成
2.各ツールでDSD変換
3.自前ソフトでDSD-PCM変換後、FFTした結果を1kHzでノーマライズした後、プロット
さて、見ていきましょう。まずは元々24bit/88.2kHzの1kHz-3dBFS+1LSBのホワイトノイズの信号をDSD64に変換したものです。あ、上がばっさり切れてるのは、自前ソフトの特性です。
AudioGate3とKOON3876氏のソースはが少し奇数高調波が目立ちますね。そして、XLDが凄いです。
XLDとJRiverの特性を見るためには24bitでは足らないかなと思い、32bitの信号を入れてみました。色が違うので、右上の凡例を参考にしてください。
残念ながらJRiverは内部24bit相当、恐らく32bitFloatなのでしょう。原信号を32bitにしても結果は変わりませんでした。恐らく内部での丸めの影響でしょうが、高調波が目立ってきますね。XLDは原信号の32bitには及びませんが、かなり良い性能です。
今までのはDSD64でしたが、XLDのソースでDSD128,256,512を作って比較してみました。
ノイズが上がるのが20kHz,40kHz,80kHz,160kHzと推移しているのが見てとれます。DSD512時はちょっと不安定になるのか、いわゆるアイドルトーンが他のサンプリングレートよりも多めに見えます。
以上でした。新たに作るとなれば、少なくともXLDのは越えようとは思います。
・おまけ
最初はWaveSpectraで比較してたんですけど、あまりのもPCM-DSD変換ソフトの出来が良すぎてグラフ化まで自前で作ることになりました。少なくともFFTソフトは一般化したかったのですが。
いやはや、XLDの8次ノイズシェーピングは凄いです。言語仕様的にこれ以上の精度を出すのは難しいような気もします。どーしたもんかなー。
もし、このソフトも性能比較してほしいってのがあればコメントなりなんなりで。
さて、前回の波形botの記事で、DSD-PCM変換、PCM-DSD変換にチャレンジしたいと書きました。DSD-PCM変換はそれなりの特性が出せたので、PCM-DSD変換にチャレンジしてます。
DSD-PCM変換は変換後のPCMのナイキスト周波数以上をばっさり切れば、まぁ切り方で問題は出ますが、少なくともS/Nは満足できるものが出せました。次はPCM-DSD変換ですが、いやー、これが難しい。難しくてよく分かんないので、人のコードを見て学ぶことにしました。
その第一成果というか、自分の目標としても色々なソフトの性能をチェックしたので、公開しようと思います。なお、今回見るのは1kHzを出した時のFFT結果なので、分かるとしてもS/N,THD+Nが限界です。位相特性とかインパルス特性とかはまぁそのうち。
今回比較するのは以下の通り。
・AudioGate3(高精度)
・JRiver Media Center 20
・KOON3876氏のソース
・XLDのソース
比較手法は以下の通り。ソースは自分でコンパイルですし、DSD-PCM変換も自前なので一般性はおろか、あってるかもちょっと怪しいです。
1.WaveGeneで1kHz-3dBFS+1LSBのホワイトノイズ信号を生成
2.各ツールでDSD変換
3.自前ソフトでDSD-PCM変換後、FFTした結果を1kHzでノーマライズした後、プロット
さて、見ていきましょう。まずは元々24bit/88.2kHzの1kHz-3dBFS+1LSBのホワイトノイズの信号をDSD64に変換したものです。あ、上がばっさり切れてるのは、自前ソフトの特性です。
AudioGate3とKOON3876氏のソースはが少し奇数高調波が目立ちますね。そして、XLDが凄いです。
XLDとJRiverの特性を見るためには24bitでは足らないかなと思い、32bitの信号を入れてみました。色が違うので、右上の凡例を参考にしてください。
残念ながらJRiverは内部24bit相当、恐らく32bitFloatなのでしょう。原信号を32bitにしても結果は変わりませんでした。恐らく内部での丸めの影響でしょうが、高調波が目立ってきますね。XLDは原信号の32bitには及びませんが、かなり良い性能です。
今までのはDSD64でしたが、XLDのソースでDSD128,256,512を作って比較してみました。
ノイズが上がるのが20kHz,40kHz,80kHz,160kHzと推移しているのが見てとれます。DSD512時はちょっと不安定になるのか、いわゆるアイドルトーンが他のサンプリングレートよりも多めに見えます。
以上でした。新たに作るとなれば、少なくともXLDのは越えようとは思います。
・おまけ
最初はWaveSpectraで比較してたんですけど、あまりのもPCM-DSD変換ソフトの出来が良すぎてグラフ化まで自前で作ることになりました。少なくともFFTソフトは一般化したかったのですが。
いやはや、XLDの8次ノイズシェーピングは凄いです。言語仕様的にこれ以上の精度を出すのは難しいような気もします。どーしたもんかなー。
もし、このソフトも性能比較してほしいってのがあればコメントなりなんなりで。