SDカードにRaspbianを書き込み、Raspberry Piを起動します。まずCUIコンソールで起動するように設定します。初回起動時の設定画面、または、raspi-configコマンドで設定できます。
Enable Boot to Desktop で<No>を選択し、再起動します。
初期アカウントはpi、パスワードはraspberryです。必要に応じてパスワードを変更しましょう。
以下の作業はrootで行います。Raspberry Piが起動したら、sudo suを実行して、rootになります。
auto lo auto eth0 iface lo inet loopback allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface eth0 inet static address 192.168.0.90 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.1
# aptitude install mpd mpc
音楽再生サーバですから、当然楽曲ファイルを用意しなければなりません。
SDカードに充分な空き容量があるなら、/var/lib/mpd/musicにファイルをそのまま格納すればいいです。
著者の環境では、ファイルサーバ(NAS)で楽曲ファイルを管理していますので、これをマウントします。筆者のNASはCIFS(SMB)だけでなくNFSやAFPもサポートしている物ですが、おそらくLinuxと最も相性がいいと思われるNFSでマウントします。それにはrpcbindが必要です。下記を実行して再起動。
# aptitude install nfs-client # update-rc.d rpcbind defaults
筆者の場合、NASは192.168.0.2で、/share/pub/musicにファイルが置いてあります。
# mount 192.168.0.2:/share/pub/music /var/lib/mpd/music
dfコマンドで確認。
# df Filesystem 1K-blocks Used Available Use% Mounted on rootfs 15251960 1506756 12970640 11% / /dev/root 15251960 1506756 12970640 11% / devtmpfs 224436 0 224436 0% /dev tmpfs 44900 232 44668 1% /run tmpfs 5120 0 5120 0% /run/lock tmpfs 89780 0 89780 0% /run/shm /dev/mmcblk0p1 57288 16872 40416 30% /boot 192.168.0.2:/share/pub/music/ 1935807360 553990272 1381817088 29% /var/lib/mpd/music
システム起動時に、自動的にマウントするように、fstabの最後に1行追記します。
192.168.0.2:/share/pub/music /var/lib/mpd/music nfs defaults 0 0
再起動時、または service mpd start を実行した際に、下記のようなエラーになる場合があります。
# service mpd start [....] Starting Music Player Daemon: mpdlisten: bind to '[::1]:6600' failed: Failed to create socket: Address family not supported by protocol (continuing anyway, because binding to '127.0.0.1:6600' succeeded)
その場合、/etc/mpd.conf内のbind_to_addressをコメントアウトすればいいようです。
#bind_to_address "localhost"
mpcコマンドを使って、楽曲ファイルをmpdに登録します。一日一回自動的に更新するように、スクリプトを作成しておきます。
#!/bin/sh mpc clear >/dev/null mpc update >/dev/null mpc ls|mpc add >/dev/null
※2013-02-02追記
自動的にプレイリストを更新するのに、スクリプトを走らせる必要はありません。
手動で更新する必要がある場合にのみ、上記、mpc clear、mpc update、mpc ls|mpd addを実行することはできますが、mpd.confに自動更新の設定がありますので、それを有効にします。初期状態では無効になっているので、コメントを外し(先頭の # を取り除き)ます。
/etc/mpd.conf
auto_update "yes"
mpcコマンドについてはエレキジャックの解説が詳しいです。参考にしてください。
音量を100%にしておきます。
# amixer set PCM 100%
Windowsからmpdを制御します。筆者はCantataを採用しました。
(2013-08-07改訂)
モバイル端末も含めて、様々なOS用のMPDクライアントが公開されていますが、筆者の環境はWindowsです。以前はCantataを使用していました。全国的にはGMPCというのが有名なようです。
ですが、既製品が何となく手に馴染まなかったので、MPDクライアントを自作してみました。SkyMPCといいます。自分に必要最小限の機能に絞って設計してありますので、必ずしも高機能なものではありませんが、シンプルなMPDクライアントで充分という方は、是非お試しください。
Raspberry Piのオーディオ出力は、通常のサウンド再生だけなら何の支障もありませんが、搭載しているDACは簡便なものだそうで、オーディオ的には高音質ではありません。そこで、外付けのUSB-DACを接続します。
ただUSB-DACをつないだだけだと、下記のように、Raspberry Piの内蔵音源が最初に認識され、2番目にUSB-DACが認識されます。
# cat /proc/asound/cards 0 [ALSA ]: BRCM bcm2835 ALSbcm2835 ALSA - bcm2835 ALSA bcm2835 ALSA 1 [DAC ]: USB-Audio - USB Audio DAC Burr-Brown from TI USB Audio DAC at usb-bcm2708_usb-1.2, full speed認識する順番を変更します。alsa-base.confの最後に追記して再起動します。
options snd-usb-audio index=0 options snd-bcm2835-audio index=1 options snd-usb-audio nrpacks=1
※nrpacksの行については後述
以下のように順番が変わりました。
# cat /proc/asound/cards 0 [DAC ]: USB-Audio - USB Audio DAC Burr-Brown from TI USB Audio DAC at usb-bcm2708_usb-1.2, full speed 1 [ALSA ]: BRCM bcm2835 ALSbcm2835 ALSA - bcm2835 ALSA bcm2835 ALSA
これで、外付けUSB-DACから出力されるはずです。
USBオーディオを使用時、topコマンドでパフォーマンスを見てみるとrsyslogdがCPUタイムを過剰に使用している状態が続き、/var/log/syslogを見てみると、以下のようなログが大量に出力されることがあります。
Aug 11 16:51:39 raspberrypi kernel: [751906.398942] delay: estimated 0, actual 132
Aug 11 16:51:39 raspberrypi kernel: [751906.406941] delay: estimated 0, actual 132 Aug 11 16:51:39 raspberrypi kernel: [751906.414946] delay: estimated 0, actual 133 Aug 11 16:51:39 raspberrypi kernel: [751906.422949] delay: estimated 0, actual 133 Aug 11 16:51:39 raspberrypi kernel: [751906.430945] delay: estimated 0, actual 133 ...
再生音がたまに途切れたり、SDカードの寿命を縮める恐れがありますので、このログ出力を抑止するために、上に書いたとおり alsa-base.conf におまじないを記述します。 options snd-usb-audio nrpacks=1 と書いて再起動すると、無駄なログ出力が停止し、CPU負荷が下がります。また、この対策により、再生中にときどきプツッと音飛び/音切れが発生していた問題が解消されました。
2015-09-24-raspbian-jessie で、Debian 8ベースに移行したことにより、ALSAの設定が以前とだいぶ変わっています。現時点(2015-11-01)でわかっていることをメモします。ここに記載している情報は、必ずしも正確ではなく、しっかり検証したものではありません。
JessieベースのRaspbianにUSBオーディオを接続すると、0=bcm2835、1=USBの順に認識されるのは、今まで通りですが、この順番を変更する、正しい方法がわかりません。/etc/modprobe.d/alsa-base.conf はなくなり、代わりに /usr/share/alsa/alsa.conf で設定することになったようです。この中に、下記のような定義があります。
defaults.ctl.card 0 defaults.pcm.card 0
この 0 を 1に変更します。これでUSB機器をデフォルトのオーディオデバイスとして認識させます。仕組みはちゃんと確認していませんが、とりあえずこれでUSBオーディオから音が鳴ります。
ボリュームを設定するには、
amixer set PCM 100%
で行えます。通常の使い方だと、出力は最大にしておき、アンプのボリュームつまみで音量を調節することが多いと思いますので、100%に設定しておけばいいでしょう。/etc/rc.localにでも書いておくといいでしょう。