« SSDACをパソコン上のPythonで実装する ② | トップページ | RIAAフォノイコライザを FIR デジタルフィルタで実装する ① 予告編 »

2024年10月 3日 (木)

SSSRC( スーパーサンプリング・サンプリングレートコンバータ ) ソフトウェア公開

SSDACのPCアプリによる実装について、これまで次の記事で説明してきました。

SSDACをパソコン上のPythonで実装する ①

SSDACをパソコン上のPythonで実装する ②

これらの記事では、SSDACの目的や原理について説明し、
新たな発見として、スーパーサンプリングによってアップサンプリングしたwavデータは、一般的な市販品のオーバーサンプリングDACで再生しても新たにプリエコー、ポストエコーが発生しない、ということがわかりました。

ソフトウェアでスーパーサンプリングを行うことは、スプライン関数によって補間データを追加してファイルを生成していることから、スプライン関数補間によるサンプリングレートコンバートを行っているということになりますから、入力がCDフォーマットの44.1kHz16bitフォーマットの出力ファイルは、たとえば88.2kHz24bit(2倍スーパーサンプリング)、176.4kHz24bit(4倍スーパーサンプリング)という具合になります。

前回の記事では、88.2kHzサンプリング音源でプリエコー、ポストエコーが発生したとしても、その周波数は44.1kHzなので、聴感上の悪影響はほとんどないであろう事を予想していましたが、実際の検証では、スーパーサンプリングでアップサンプリングしたデジタル信号は、その後オーバーサンプリングDACで処理しても、プリエコー、ポストエコーが発生しない、という意外な結果を得ました。

また、前回までPC上のプログラミング言語Pythonを使ってスーパーサンプリングを実装し検証しましたが、Pythonはインタープリタ言語(逐次翻訳型言語)であることから非常に処理が遅く、15秒の音楽ファイルを処理するのに数時間かかるという具合で、およそ実用的ではありませんでした。

そこで今回は、wavファイルをスーパーサンプリング処理して同じくwavファイルで出力する、サンプリングレートコンバータ、名付けて、
スーパーサンプリング・サンプリングレートコンバータ(SSSRC)をC#コンパイラで実装しましたので、次の通り公開します。

今回作成したSSSRCソフトの仕様は次の通りです。

入力フォーマット : 44.1kHz 16bit (CDフォーマット)
出力フォーマット : 88.2kHz、176.4kHz、352.8kHz、705.6kHz(いずれも24bit)


●ダウンロードと使い方
このソフトはwindows10またはwindows11上で動作します。

ダウンロード - sssrc.zip

SSSRC.zipをダウンロードして任意の場所に解凍したら、SSSRC.exeをダブルクリックして実行します。
このとき、.NETのランタイムがインストールされていないと、次のようなエラーが出ることがあります。

Sssrcnet1
図1..NETランタイムがない場合のエラー

この場合は”Download it now”をクリックして、.NETランタイムをインストールしてから、あらためてSSSRC.exeを実行してください。


●使い方
図2はSSSRCの起動画面です。

Sssrc
図2.SSSRC起動画面


使い方は簡単で、希望するスーパーサンプリング倍率(Super Sampling Ratio)を選んで、変換したいwavファイル(44.1kHz16bitのみ)を、この画面上にドラッグ&ドロップすると、元のwavファイルと同じ場所に”SS_OUTPUT”ホルダが生成され、その中にアップサンプリングされたファイルが生成されます。複数ファイルを一括してドラッグ&ドロップすることができます。
変換時間は、私の古いパソコン(第5世代Corei7(2core)、メモリー16GB、windows11)で、4分(約40MB)のwavファイルを88.2kHzに変換するのに35秒、705.6kHzに変換するのに1分30秒かかりました。

実際にこのソフトで処理した信号の波形を見てみましょう。代表例として、1kHzの方形波と正弦波を4倍スーパーサンプリングでアップサンプリングした場合の波形を図3、図4に示します。

1korg
図3.元波形(44.1kHz16bitサンプリング)


1k4x
図4.4倍アップサンプリング波形(176.4kHz24bitサンプリング)

以上のように、スプライン関数による補間によりアップサンプリングしたファイルが出力されます。

ここで注意したいのは、出力ファイルの容量です。アップサンプリング倍率に加えて、ビット分解能が16bit→24bitと1.5倍となることから、
出力ファイルはアップサンプリング倍率x1.5倍の容量になります。
たとえば長さ4分で約40MBのwavファイルは、2倍アップサンプリングでは3倍の120MBに、16倍アップサンプリングでは24倍の960MBになりますので、ストレージを圧迫します。要注意です。

今後、今回のSSSRCで元ファイルをアップサンプリングして通常のDACで再生したものと、元ファイルをそのまま通常のDACで再生したもの、また、元ファイルをハードウェアのSSDACで再生したものの違いについて聴き比べと検証を行う予定です。


| |

« SSDACをパソコン上のPythonで実装する ② | トップページ | RIAAフォノイコライザを FIR デジタルフィルタで実装する ① 予告編 »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« SSDACをパソコン上のPythonで実装する ② | トップページ | RIAAフォノイコライザを FIR デジタルフィルタで実装する ① 予告編 »