Music Player Daemon でインターネットラジオ
概要 †
Raspberry PiにUSB DACとアクティブスピーカーで小型のインターネット・ラジオを作ってみたくなった。 omxplayer で SKY.FM の URL を指定するだけと考えていたのだが、omxplayer が Alsa に対応していないようで、 USB DACを使うには少々面倒だ。
そこで、MPDを入れてついでに音楽サーバー化してしまうことにした。
インストール †
- パッケージを入れるだけ
apt-get install mpd mpc avahi-daemon
Tips †
1. mpc idle コマンドは、曲が入れ替わるなどのイベントまで待つので、以下の様なスクリプトで 再生中のインターネットラジオの曲を表示するようなことができる。 これを小型のLCDに表示すればおもしろいかもしれない。
#!/bin/sh mpc current while : do mpc idle >/dev/null mpc current done
USB DAC †
Paspberry Pi本体からのオーディオ出力にはHDMIが使えるのはもちろんだが、アナログ出力は簡易的な回路のようなので、2012年4月頃に雑誌の付録として手に入れて、その後あまり使っていなかった USB DAC (DVK-UDA01) をつないでみた。
otsuka@raspb2 ~ $ lsusb Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. Bus 001 Device 006: ID 08bb:2704 Texas Instruments Japan Bus 001 Device 005: ID 056e:1014 Elecom Co., Ltd otsuka@raspb2 ~ $ aplay -l **** List of PLAYBACK Hardware Devices **** card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA] Subdevices: 8/8 Subdevice #0: subdevice #0 Subdevice #1: subdevice #1 Subdevice #2: subdevice #2 Subdevice #3: subdevice #3 Subdevice #4: subdevice #4 Subdevice #5: subdevice #5 Subdevice #6: subdevice #6 Subdevice #7: subdevice #7 card 1: DAC [USB Audio DAC], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0
/etc/mpd.conf に以下の2つを設定すれば、HDMIとUSB DACの切り替え、あるいは両方で音を出すことができる。
audio_output { type "alsa" name "HDMI" device "hw:0,0" # optional format "44100:16:2" # optional } audio_output { type "alsa" name "USB DAC" device "hw:1,0" # optional format "44100:16:2" # optional }
再生中に以下のような大量の警告がsyslogに出る。/var/log/{debug,kern.log} が肥大化する。
Sep 14 17:49:12 raspb2 kernel: [ 2444.870807] delay: estimated 0, actual 133
Raspberry PiをMPD(Music Player Daemon)サーバにするを参考に、
/etc/modprobe.d/alsa-base.conf: options snd-usb-audio nrpacks=1
を加えれば出なくなった。
MPoD †
- iPhone に MPoD を入れる。
- Raspbian に avahi-daemon を入れる。
- /etc/mpd.conf の以下の箇所を修正。
bind_to_address "any" zeroconf_enabled "yes" zeroconf_name "Raspi MPD"
- sudo service mpd restart
- MPoDの設定でサーバー一覧に "Raspi MPD" が表示されるので接続すれば、リモコン操作できるようになる。
- 選曲する際にすぐにPlayするのではなくQueueにいれるだけにしたい
- 曲名を長押ししているとメニューが出るので、次に再生やプレイリストの最後に入れたりできるが、Addのアクションの後、アプリが落ちてしまう。playlistには追加されているようだ
- [Now Playing: Setting(左上の歯車ボタン): Play: Default click action:] を Play now から Play next に変えればできるようだ
NASのマウント †
音楽ファイルは、Windows PC に iTunes を入れて、CDからリッピングしたり iTunes Store で購入したりしている。 不測の事態に備えて Buffalo の NAS に定期的にバックアップをとっているのだが、そのバックアップ先の NAS のフォルダを MPD の音楽ファイルのフォルダにマウントして再生できる。
- NASのIPアドレスが 192.168.0.10 だとして、パスワード保護なしの共有フォルダを Raspberry Pi の /mnt フォルダ下にマウントするには以下のコマンドを実行する(念のため、書き込みできないようにマウントしている)
sudo mount -t cifs //192.168.0.10/share /mnt -o ro,user=WORKGROUP/guest,password=guest
- Windows PC (WinPC1) の iTunes Music フォルダを探して /var/lib/mpd/music 下にシンボリック・リンクを貼る
sudo ln -s "/mnt/Backup/WinPC1/Music/iTunes/iTunes Media/Music" /var/lib/mpd/music/iTunes
- Amazon MP3 Store からの音楽ファイルなどもあれば同様にリンクを作れば良い
- シンボリック・リンクの準備ができたら、mpc update を実行すれば、データベースが更新される
- MPoDで曲やアルバムが選べるようになるので、iTunesで再生するような手順で操作する
音量調整 †
音量調整は 1)MPD、2)ALSA、3)デジタルアンプの3ヶ所あるので、ルールを決めておかないと調整しにくい。 MPDで調整(初期値80%)するようにして、alsamixer で 0dB、デジタルアンプ -50dB が基準となるようにした。
ニアフィールドリスニング †
リビングのオーディオ機器は Apple TV と小型のAVアンプを使って組んであり、 それなりに満足して使っているのだが、パソコン・ラックの置いてある部屋に 時々こもって作業することがあり、BGM用にPC用のアクティブ・スピーカー(Speaker System Z323)で つないで聞いていた。こいつはPCで映画などを見るような用途を想定しているようで、 長時間BGMとして聞いているとウーハーからの不自然な低音で疲れてきてしまう。 音量を下げると今度はハムノイズが気になったりして、安かったこともあり、 いい加減に買い換えようと目論んでいた。
高校生の頃、フルレンジとスーパー・ツイーターの組み合わせで自分でエンクロージャを作って 聞いていた頃があって、最近この手のキットが盛り上がっているようなので、気になってはいた。 その頃に比べれば、スピーカーユニットの性能も良くなっていて、フルレンジ一発でもBGM用なら 全く問題ないどころか、わりと大きな音で聞く場合でもがっかりするような音ではなくなっている。 しかしキットとはいえ、板を貼りあわせたり穴を開けたりが大変そうだし、 綺麗な色で仕上げるのはそれこそ手間がかかりそうなので、市販完成品で以前から気になっていた ウッドコーンを使った SX-WD30 に 入れ替えてみることにした。
スピーカはスペックやカタログはあまり参考にならず、試聴が全てだと思うのだが、 SX-WD30は、あまり高額な商品ではないため、じっくり聴けるような環境で展示されておらず、 少し迷ったが、フルレンジ一発の音は大きくハズレを引くとは考えにくいので、 ヨドバシの通販でポッチッと注文することにした。
パソコン・ラックの中は狭いので当然のように大きなAVアンプなどは置けない。 オラソニックのNANO-UA1を検討してみたが、デジタル・アンプはもっと小型で安価なキットや完成品が 沢山あるので、いろいろ試してみるのも悪くないと思い、 手始めに TP-30 を オーダーしてみた。8,000円弱で USB DAC まで内蔵しているので、Raspberry Pi オーディオには最適だ。 ところが、11月中旬(2013)まで入荷しないとのことのなので、SX-WD30がやって来ても音を出すことができない。 苦し紛れにアマゾンで 2,580円 (ACアダプタ付き、送料込み) のデジタルアンプ(LP-2020A)を注文して、 しばらくは音出しすることになった。
LP-2020Aに入っているチップは少し前に話題になっていたようで、 本格的なアンプの出す音とブラインドテストをすると分からないことがあるようだ。 お酒の量販店にある「ドンペリとブラインドテストでも間違える人続出」といって売り出している スパークリング・ワインのようで面白い。
さて、やって来たウッドコーン、フルレンジの SX-WD30 と LP-2020A の組み合わせの音だが、 まだ慣れていないせいか、眼の前に広がる小さな音場が驚きに感じたり、癒やされているように 感じたり安定しない。リビングのオーディオに比べて、スピーカーが小さいので限られた範囲でしか 楽しめないのは想定内なのだが、作業をしながら聞くということにあまり慣れていないせいなのかもしれない。 まあ、以前のPC用のスピーカーに比べれば格段に音楽を聞くことに対しては評価できるようになったのは進歩だ。
リビングのオーディオ †
リビングはAppleTVとHDMIのついたAVアンプで聞いていたのだが、 Raspberry PiとMPDを使ったネットワーク・オーディオがすこぶる便利なので、 リビングにもう1台増設することにした。 ソースはインターネットラジオかNASに入っているファイルなので、 Raspberry Piだけ増やせば、どこでも同じ操作で聞くことができる。 Raspberry PiはケースとACアダプタとSDカードを入れても8,000円程度で手に入るので、 気軽に増設できるのがありがたい。
課題 †
- AirPlayをoutputで指定できれば、リビングにある AppleTV + HDMI Audio を同時に鳴らせる
- Raspberry Piをもう1台増設したほうが早いので AppleTVを使って鳴らすのは断念
- LP-2020Aの筐体に触れるとハムノイズが出る
- LP-2020Aで電源を入り切りする際にホップ音が出る
リンク †
- Music Player Daemon - Music Player Daemon
- IT9XXS Blog » Turn a Raspberry Pi into a Web Radio Receiver (Part 1)
- Arduino & Raspberry Pi Projects: Raspberry Pi MPD (Music Player Daemon) with AirPlay and Internet Radio
- Raspberry Piを「AirPlay化」して音楽をストリーミングする方法 : ライフハッカー[日本版] SharePortの話
- メカトロニック・ブログ RaspberryPiをPulseAudioでリモートスピーカーにしよう! PulseAudioはいまいち普及していない?
- Raspberry PiでUSBスピーカーを使う - 那由多屋 開発日誌によると、Olasonic TW-S7:USBパワードスピーカーをつなげばUSB DACもろとも置き換えられるようだ
- Raspberry Pi HDMI オーディオで MPD を鳴らす - 半農半医
参考 †
&amazon_associate(B00CBWMXVE); &amazon_associate(B004EEKGB6); &amazon_associate(B00793TFWA);