海上忍のラズパイ・オーディオ通信(5)
音質も変わる? “ラズパイ・オーディオ” のデコーダーをカスタマイズ!
ワンボードコンピュータ「Raspberry Pi 」でオーディオを楽しむための方法を、あれこれ模索しながらご紹介していく連載企画の第5回目をお届けします。今回は“ラズパイ・オーディオ”のデコーダーをカスタマイズする方法を解説します。(編集部)
Raspberry Piで動作するOSにはいろいろな種類があり、それがLinuxの場合「ディストリビューション」によって機能差が生じる。ディストリビューションとは、各種プログラムを選定して形成されたシステムのことで配布形態の違いを意味するが、プログラムの組み合わせ方や管理手法の違いにより機能差や個性が生じるため、一口にLinuxといっても多様なシステムが生じることになる。たとえば、デスクトップLinuxにはRedHatやDebianといったディストリビューションが存在するが、アプリケーションの追加/削除やシステム管理のルールにはかなり差がある。
なぜこのような話から始めるかというと、本連載で“ラズパイ・オーディオ”と呼ぶところのシステムは「Volumio」というディストリビューションであり、それを前提とした各種設定術はそのまま他のシステムに適用できない可能性大だからだ。オーディオ関連のシステム設定もまた然り、断りがないかぎりVolumio前提の話と考えていただきたい。
さて、今回は「デコーダーのカスタマイズ」について取りあげたい。コンポーネントオーディオはもちろん、ポータブル機器やPCでもデコーダーを変更することは一般的とは言い難く、あらかじめ用意されているものを利用し続けるユーザーがほとんどのはず。しかし、ラズパイ・オーディオならばそれは造作もないこと。Volumioのオーディオシステム「MPD」の設定ファイルに手を加え、デコードのルールを変更してみよう。
■オーディオファイル再生までの流れ
PCMやDSDを除けば、多くのオーディオファイルは「符合化(エンコード)」されている。符合化とは、デジタルデータを他の形式に変換する手続きであり、オーディオの場合はデータ圧縮と近い意味合いで使用される。その符合化/圧縮されたデータを復元する手続きが「復号化(デコード)」で、AACやMP3などメジャーなオーディオフォーマットはハードウェア(多くの場合DSPチップ)で処理されることが多い。
Raspberry Piでも、主要なオーディオフォーマットはハードウェアレベルでデコードが可能であり、そのための機構「OpenMAX」がファームウェアで整備されている。Volumioに同梱のヘッダファイル(/opt/vc/include/IL/OMX_Audio.h)を見れば、FLACやAAC、MP3、WMAなど世に流通しているオーディオフォーマットの大半がカバーされていると考えていい。CPUで処理するとそれなりの負荷が生じるところを、ハードウェアデコードにより軽くこなしているというわけだ。
ところで、Volumioで音楽再生系の主軸を担う「MPD」では、オーディオファイルをデコードするために複数のライブラリを利用する。再生を指示すると、最初に試すライブラリが対応しないフォーマットは次のライブラリで、そこでも対応しない場合はさらに次のライブラリで……といった具合に試行し、最初にヒットしたライブラリで再生を行うしくみだ。
ライブラリを試す順序は、SSHでリモートログインして「mpd -V」とコマンドを実行し、「Decoders plugins」欄をチェックすればわかる。Volumioに収録のバージョン(v0.19.1)は、以下のスクリーンショットのとおり。FLACは「FLAC」(libFLAC)→「ffmpeg」(libavcodec)の順に、WAVは「sndfile」(libsndfile)→「audiofile」(libaudiofile)→「ffmpeg」(libavcodec)の順に試行することがわかるだろう。
しかし、このしくみは完璧とはいえない。もし、最初にヒットしたデコーダに再生トラブルがあったとしたら? 優先順位が第2位のライブラリのほうが音質的に有利だとしたら? 残念ながら、MPDのWebUI(Webブラウザを通じて操作/設定変更を行う機構)にライブラリの優先順位をカスタマイズする機能はない。SSHでリモートログインし、nanoなどのテキストエディタを利用して/etc/mpd.conf(/etcディレクトリにある「mpd.conf」というMPDの設定ファイル)を直接編集するしかないのだ。
■あのUSB-DACでFLAC再生が!
現行バージョン(v1.55)のVolumioに収録のMPDは、設定ファイル(/etc/mpd.conf)のデコーダ定義部分にはプラグイン「ffmpeg」を有効にする記述しか施されていない。しかし、デコードに用いられるライブラリは「mpd -V」を実行したときに表示される「Decoders plugins」欄の記載順で試行されるため、実際には他のライブラリが使用されることが多く、最後の受け皿的な扱いとなっている。
ということは、特定フォーマットの再生で問題が生じているとき、最初にヒットするプラグインを無効化すれば、上から数えて2番目に表示されたライブラリで再生されるはず。この方法を使えば、再生に問題を抱える“あのUSB-DAC”が復権するかもしれない。
実は、手持ちのUSB-DAC内蔵ヘッドホンアンプ「AT-PHA100」(オーディオテクニカ)では、MPDでFLACを再生できなかった。96kHz/24bitを超えるFLACファイルの再生を始め10秒ほど経過すると、断続的にポップノイズが発生してしまい、とても音楽鑑賞できる状態ではない。しかし、192kHz/24bitのWAVは支障なく再生できるため、ひょっとするとlibFLACとの相性問題では、と睨んだというわけだ。
/etc/mpd.confの該当部分をnanoで書き換え(下記リスト1)、その後MPDのデーモンを再起動したところ、ビンゴ! 無事、AT-PHA100でも96kHz/24bitや192kHz/24bitのFLACを再生できるようになった。このヘッドホンアンプの場合、DSD(DoP)を再生できないという問題が残るため全面解決とはいかないが、わずかな設定変更だけでハイレゾ音源に多く用いられるFLACの再生が可能になるのだから、朗報ではないだろうか。
- - - - -
・リスト1:/etc/mpd.confで書き換える部分
decoder {
plugin "ffmpeg"
enabled "yes"
}
↓ ↓ ↓
decoder {
plugin "flac"
enabled "no"
}
※:ffmpegライブラリを敢えて有効化する必要はないため、該当部分を書き換えている
- - - - -
・MPDを再起動する
# service mpd restart
- - - - -
今回は、特定のオーディオフォーマットの再生に問題を抱えるUSB-DACのトラブル対策としてデコーダのカスタマイズ法を紹介したが、デコーダを変えれば音も変わる。再生トラブルのないUSB-DACを利用しているのであれば、libFLACとffmpegを聴き比べたうえで、好みのデコーダー(ライブラリ)を使うという方法もアリだろう。
(海上 忍)
Raspberry Piで動作するOSにはいろいろな種類があり、それがLinuxの場合「ディストリビューション」によって機能差が生じる。ディストリビューションとは、各種プログラムを選定して形成されたシステムのことで配布形態の違いを意味するが、プログラムの組み合わせ方や管理手法の違いにより機能差や個性が生じるため、一口にLinuxといっても多様なシステムが生じることになる。たとえば、デスクトップLinuxにはRedHatやDebianといったディストリビューションが存在するが、アプリケーションの追加/削除やシステム管理のルールにはかなり差がある。
なぜこのような話から始めるかというと、本連載で“ラズパイ・オーディオ”と呼ぶところのシステムは「Volumio」というディストリビューションであり、それを前提とした各種設定術はそのまま他のシステムに適用できない可能性大だからだ。オーディオ関連のシステム設定もまた然り、断りがないかぎりVolumio前提の話と考えていただきたい。
さて、今回は「デコーダーのカスタマイズ」について取りあげたい。コンポーネントオーディオはもちろん、ポータブル機器やPCでもデコーダーを変更することは一般的とは言い難く、あらかじめ用意されているものを利用し続けるユーザーがほとんどのはず。しかし、ラズパイ・オーディオならばそれは造作もないこと。Volumioのオーディオシステム「MPD」の設定ファイルに手を加え、デコードのルールを変更してみよう。
■オーディオファイル再生までの流れ
PCMやDSDを除けば、多くのオーディオファイルは「符合化(エンコード)」されている。符合化とは、デジタルデータを他の形式に変換する手続きであり、オーディオの場合はデータ圧縮と近い意味合いで使用される。その符合化/圧縮されたデータを復元する手続きが「復号化(デコード)」で、AACやMP3などメジャーなオーディオフォーマットはハードウェア(多くの場合DSPチップ)で処理されることが多い。
Raspberry Piでも、主要なオーディオフォーマットはハードウェアレベルでデコードが可能であり、そのための機構「OpenMAX」がファームウェアで整備されている。Volumioに同梱のヘッダファイル(/opt/vc/include/IL/OMX_Audio.h)を見れば、FLACやAAC、MP3、WMAなど世に流通しているオーディオフォーマットの大半がカバーされていると考えていい。CPUで処理するとそれなりの負荷が生じるところを、ハードウェアデコードにより軽くこなしているというわけだ。
ところで、Volumioで音楽再生系の主軸を担う「MPD」では、オーディオファイルをデコードするために複数のライブラリを利用する。再生を指示すると、最初に試すライブラリが対応しないフォーマットは次のライブラリで、そこでも対応しない場合はさらに次のライブラリで……といった具合に試行し、最初にヒットしたライブラリで再生を行うしくみだ。
ライブラリを試す順序は、SSHでリモートログインして「mpd -V」とコマンドを実行し、「Decoders plugins」欄をチェックすればわかる。Volumioに収録のバージョン(v0.19.1)は、以下のスクリーンショットのとおり。FLACは「FLAC」(libFLAC)→「ffmpeg」(libavcodec)の順に、WAVは「sndfile」(libsndfile)→「audiofile」(libaudiofile)→「ffmpeg」(libavcodec)の順に試行することがわかるだろう。
しかし、このしくみは完璧とはいえない。もし、最初にヒットしたデコーダに再生トラブルがあったとしたら? 優先順位が第2位のライブラリのほうが音質的に有利だとしたら? 残念ながら、MPDのWebUI(Webブラウザを通じて操作/設定変更を行う機構)にライブラリの優先順位をカスタマイズする機能はない。SSHでリモートログインし、nanoなどのテキストエディタを利用して/etc/mpd.conf(/etcディレクトリにある「mpd.conf」というMPDの設定ファイル)を直接編集するしかないのだ。
■あのUSB-DACでFLAC再生が!
現行バージョン(v1.55)のVolumioに収録のMPDは、設定ファイル(/etc/mpd.conf)のデコーダ定義部分にはプラグイン「ffmpeg」を有効にする記述しか施されていない。しかし、デコードに用いられるライブラリは「mpd -V」を実行したときに表示される「Decoders plugins」欄の記載順で試行されるため、実際には他のライブラリが使用されることが多く、最後の受け皿的な扱いとなっている。
ということは、特定フォーマットの再生で問題が生じているとき、最初にヒットするプラグインを無効化すれば、上から数えて2番目に表示されたライブラリで再生されるはず。この方法を使えば、再生に問題を抱える“あのUSB-DAC”が復権するかもしれない。
実は、手持ちのUSB-DAC内蔵ヘッドホンアンプ「AT-PHA100」(オーディオテクニカ)では、MPDでFLACを再生できなかった。96kHz/24bitを超えるFLACファイルの再生を始め10秒ほど経過すると、断続的にポップノイズが発生してしまい、とても音楽鑑賞できる状態ではない。しかし、192kHz/24bitのWAVは支障なく再生できるため、ひょっとするとlibFLACとの相性問題では、と睨んだというわけだ。
/etc/mpd.confの該当部分をnanoで書き換え(下記リスト1)、その後MPDのデーモンを再起動したところ、ビンゴ! 無事、AT-PHA100でも96kHz/24bitや192kHz/24bitのFLACを再生できるようになった。このヘッドホンアンプの場合、DSD(DoP)を再生できないという問題が残るため全面解決とはいかないが、わずかな設定変更だけでハイレゾ音源に多く用いられるFLACの再生が可能になるのだから、朗報ではないだろうか。
- - - - -
・リスト1:/etc/mpd.confで書き換える部分
decoder {
plugin "ffmpeg"
enabled "yes"
}
↓ ↓ ↓
decoder {
plugin "flac"
enabled "no"
}
※:ffmpegライブラリを敢えて有効化する必要はないため、該当部分を書き換えている
- - - - -
・MPDを再起動する
# service mpd restart
- - - - -
今回は、特定のオーディオフォーマットの再生に問題を抱えるUSB-DACのトラブル対策としてデコーダのカスタマイズ法を紹介したが、デコーダを変えれば音も変わる。再生トラブルのないUSB-DACを利用しているのであれば、libFLACとffmpegを聴き比べたうえで、好みのデコーダー(ライブラリ)を使うという方法もアリだろう。
(海上 忍)