カテゴリー
オーディオ

mpdとlibresampleでリサンプリング

某巨大掲示板で、libresampleについての書き込みがあったので、試してみました。

libresampleというのは、
https://ccrma.stanford.edu/~jos/resample/
で配布されているツールです。
UbuntuやDebianでは、パッケージとして配布されているので、インストールはとっても簡単です。
libresample1
をインストールするだけです。

設定はというと、これまた、とっても簡単です。
mpdの設定ファイル、
/etc/mpd.conf
を、ちょこっと編集するだけです。
初期状態ではコメントアウトされている

#audio_output_format “44100:16:2”

を有効にして、44100:16:2のところを、所望の値に変えるだけです。
例えば、
192000:24:2
とすれば、サンプリングレート192KHz、量子化ビット数24ビットで出力されます。
最初の数字がサンプリングレート、次の数字が量子化ビット数、最後の数字はチャンネル数です。
じゃ、48000:16:5.1とすれば、48KHz/16bit、5.1chで出力されるのか?については、僕にはわかりません。
ただ、2Lでは、96KHz/24bit/5.1chのFLACを売ってるので、多分再生できる環境があるんでしょう。

リサンプリングの精度は、そのすぐ下にある

#samplerate_converter “Fastest Sinc Interpolator”

で指定します。
この行も有効にして、リサンプル処理のコンバーターを指定します。
初期値は、”Fastest Sinc Interpolator”になっています。
ここに設定できるコンバーターは、
man mpd.conf
で調べることができます。
選択肢は、以下の六つです。

  • Best Sinc Interpolator
  • Medium Sinc Interpolator
  • Fastest Sinc Interpolator
  • ZOH Interpolator
  • Linear Interpolator
  • internal

下の三つは、“poor quality”と説明がありますので、実質的な選択肢は上の三つになるでしょう。

上記設定を終えたら、mpdをリスタートします。
sudo /etc/init.d/mpd restart

想像通り?、BestがもっともCPUのパワーを必要とします。
普段GIGABYE GA-E350N-USB3を載せたPCを使用していますが、topでCPUの負荷を見てみたところ、Mediumの場合でCPUの使用率は50%弱でした。Bestにすると、CPU使用率は99%となり音が途切れてしまいました。
Bestを実行するには、ソコソコのCPU処理能力が必要なようです。

じゃ、libresampleはどういう処理をしているのか?ということに関しては、
https://ccrma.stanford.edu/~jos/resample/
を頑張って読んでください。
また、ググればその手のことが書かれた日本語のサイトは沢山出てきますし、書籍も沢山あります。
僕は、大学4年の時に信号処理の講義をちょっとだけかじっただけで、あまりの難しさに放り投げてしまいました(笑)