Music Player Daemon でインターネットラジオ


概要

Raspberry PiにUSB DACとアクティブスピーカーで小型のインターネット・ラジオを作ってみたくなった。 omxplayer で SKY.FM の URL を指定するだけと考えていたのだが、omxplayer が Alsa に対応していないようで、 USB DACを使うには少々面倒だ。

そこで、MPDを入れてついでに音楽サーバー化してしまうことにした。

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

  1. iPhone に MPoD を入れる。
  2. Raspbian に avahi-daemon を入れる。
  3. /etc/mpd.conf の以下の箇所を修正。
    bind_to_address         "any"
    zeroconf_enabled               "yes"
    zeroconf_name                  "Raspi MPD"
  4. sudo service mpd restart
  5. MPoDの設定でサーバー一覧に "Raspi MPD" が表示されるので接続すれば、リモコン操作できるようになる。

NASのマウント

音楽ファイルは、Windows PC に iTunes を入れて、CDからリッピングしたり iTunes Store で購入したりしている。 不測の事態に備えて Buffalo の NAS に定期的にバックアップをとっているのだが、そのバックアップ先の NAS のフォルダを MPD の音楽ファイルのフォルダにマウントして再生できる。

  1. 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
  2. Windows PC (WinPC1) の iTunes Music フォルダを探して /var/lib/mod/music 下にシンボリック・リンクを貼る
    sudo ln -s "/mnt/Backup/WinPC1/Music/iTunes/iTunes Media/Music" /var/lib/mpd/music/iTunes
  3. Amazon MP3 Store からの音楽ファイルなどもあれば同様にリンクを作れば良い
  4. シンボリック・リンクの準備ができたら、mpc update を実行すれば、データベースが更新される
  5. MPoDで曲やアルバムが選べるようになるので、iTunesで再生するような手順で操作する

課題

  1. AirPlayをoutputで指定できれば、リビングにある AppleTV + HDMI Audio を同時に鳴らせる
  2. 今のところ、USB DACの出力をPC用のアクティブ・スピーカー(Speaker System Z323)につないで聞いている。ウーハーは不要なのでもう少し音の良いフルレンジのスピーカーとデジタル・アンプの組み合わせに変えたい

リンク

参考

#amazon_associate(B00CBWMXVE)


トップ   一覧 検索 最終更新   ヘルプ   最終更新のRSS