Volumio を pulseaudio に対応させる備忘録

Photo by hyt.

Volumio を pulseaudio に対応させる備忘録です.

なんで対応させたいの?

技術として興味があると言ってしまえばそれで終わりなので,いちおう言い訳しておきます.

Volumio って,基本的な中身は mpd (Music Player Daemon)です.そして,mpd はかなり多くの音声出力の方法をサポートしているのですが,Volumio の場合は alsa 経由の出力が使われています.

これは Volumio の開発動機を考えると自然なです.

なんでかと言うと,Volumio は良い音を安価な音で楽しめるってのが,その開発動機ですが,良い音を鳴らすには,余計な経路や処理をなるべく加えないようにしないといけない.だからカーネルに最も近い(と言うかカーネルに含まれてしまっている)alsa を使うべきってことになるからです.

しかし,これは最近の Linux の開発の方向性とは微妙に合っていないようです.実際 alsa から Bluetooth 経由で音を出すことができなくなり,より抽象度の高い pulseaudio が使われるようになっています.

これ,最初は不思議に思っていたのですが,よくよく考えてみると自然です.この辺りについては、

本連載ではこれまで十数回にわたり,Ubuntuでサウンドを扱う話題を紹介してきました。そこで今回は,UbuntuもといLinuxの現在のサウンドシステムに関して,MIDIも考慮しながら整理してみたいと思います。

の一番下にある図をみると分かりやすいと思います.

つまり,近年急速に広がった Bluetooth スピーカーとかヘッドセットに対応させようとすると必然的に pulseaudio に対応させるべき,って結論になります.あと,pulseaudio に対応させるとネットワーク経由で自由に音をやりとりできる.

つまり,Volumio を pulseaudio に対応させたい理由は,

これまでより多くの機器で音を出せるようになる

からな訳ですね.

mpd on Volumio は pulseaudio に対応しているのか?

では,Volumio2 の mpd が pulseaudio に対応しているのかと言うと,

残念ながらしていません.

これは ssh でログインして,次のようにすれば分かります.

この Output plugins の欄に残念ながら pulse がありません.mpd 自体は pulseaudio に対応しているのですが,どうも Volumio2 の mpd は pulseaudio に対応するようにコンパイルされていないようです.

したがって,pulseaudio 経由で出力させるには,mpd on Volumio2 を pulseaudio に対応するようコンパイルし直すのが正攻法でしょう.しかし,これはやりたくない.面倒だし,Volumio のアップデートにも追従しにくくなるからです.なお, pulseaudio plugin に対応している場合は,/etc/mpd.conf に,

のような設定をするだけのようです.server 部分を適当なアドレスに置き換えればネットワーク経由で音を転送できます.

と言うことで,コンパイルし直す以外のやり方を検討したのですが,これは ao プラグインを使うことで解決できました.

ao plugin の使い方

ao plugin というのは,libao

にある通り,クロスプラットフォームで使えるオーディオ用の API のライブラリで,プログラム時ならともかく,設定で使えるようにするなんてものではないと思います.しかし,なぜか mpd on Volumio はこの plugin に対応しており,libao は pulseaudio に対応しているのが普通なので,キチンと設定すれば,

mpd → libao → pulseaudio

のようにできるはずですし,実際できます.分かりにくいのですが,libao のマニュアルとmpd のマニュアルを参照することで,以下のように mpd.conf に追加すれば良いことが分かります.

もちろん server=127.0.0.1 を適当なアドレスに変更すればネットワーク経由で音を転送することができます.

結論だけ書くと,なんだ,それだけかと思う程度の内容なんですが,アッチコッチの文章を当たらないといけなかったので分かるまでにかなりの時間がかかってしまいました.

応用は?

さて,これで Volumio で pulseaudio を使えるようになりました.そして,pulseaudio を使えば,ネットワーク経由で音を転送できますし,Bluetooth スピーカーとかにも対応させやすくなります.だから,実際にこれをやってみたい,が次の目標になるのですが,かなりこの記事長くなりましたので,実際やってみた内容については別記事にしてご紹介したいと思います.

以上!

スポンサーリンク
large rectangle advertisement
スポンサーリンク
large rectangle advertisement