RaspberryPi4をジュークボックス化
目次

Raspberry Pi4でmpdを構築したときのことを記載します。
mpdっていうのはミュージックサーバーで、Jukeboxみたいなことができます。
完成するとどうなるか
Pi4だと1台あたりの消費電力あたり負荷をかけたとしても15W程度。
mpdだけだと、おおよそ5W程度ですし、がっつり暇しているので、どんどんほかのコンテナを積んでいきましょう。
この数値は2.5inch HDDを接続したときの値ですので、SSDだともっと電力食わないかもしれません。
環境
- Raspberry Pi4
- HDD(これはなくてもいいけど、音楽データを入れたりするためにはMicroSDじゃないほうがいいと思います)
- 有線スピーカー
- Bluetoothでもいいですが、その場合は別途bluetoothalsaとか入れてデバイス指定しないといけないと思います。
uname -a
Linux DESKTOP-1HI6NGO 4.19.128-microsoft-standard #1 SMP Tue Jun 23 12:58:10 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
構築方法について
mpd インストール
sudo apt install mpd
mpd セットアップ
設定ファイルは下記にあります。 /etc/mpd.conf
変更箇所は下記のとおりです。
- music_directory
- 音楽を配置しているディレクトリを指定
- playlist_directory
- playlistを配置するディレクトリ、後述するympdを通してmpdで操作するので、write権限も必要です。
- audio_output
- 後述するaudio_outputの通りに指定を行ってください。
audio_output:
audio_output {
type "alsa"
name "bcm2835 Headphones" #これは何でもいいっぽい
device "hw:0,0" # optional # これはaplay -l の結果をもとに hw:カード,デバイスで記述するようです。
mixer_type "hardware" # optional
mixer_device "default" # optional
mixer_control "Headphone" # optional alsamixerで表示されているデバイスを指定しました。 もしかすると、aplay -l の結果でスペース区切りで指定されている Headphonesが該当するのかもしれません。
mixer_index "0" # optional #これは分かりません
}
aplay -l
**** ハードウェアデバイス PLAYBACK のリスト ****
カード 0: Headphones [bcm2835 Headphones], デバイス 0: bcm2835 Headphones [bcm2835 Headphones]
サブデバイス: 7/8
サブデバイス #0: subdevice #0
サブデバイス #1: subdevice #1
サブデバイス #2: subdevice #2
サブデバイス #3: subdevice #3
サブデバイス #4: subdevice #4
サブデバイス #5: subdevice #5
サブデバイス #6: subdevice #6
サブデバイス #7: subdevice #7
ympdインストール
g00cey/ympd-build: ympdをビルドするための環境を配置
これでympd自体のビルドと設定ファイルの元を取得します。
配置場所は、
- ympd
- /usr/bin/ympd
- ympd.default
- /etc/ympd.conf
- ympd.service
- /lib/systemd/system/ympd.service
ympd.conf
MPD_HOST=localhost
MPD_PORT=6600
MPD_PASSWORD=
WEB_PORT=80
YMPD_USER=nobody
DIRBLE_API_TOKEN=HOGEHOGE
ympd.service
[Unit]
Description=ympd server daemon
Requires=network.target local-fs.target
[Service]
EnvironmentFile=/etc/ympd.conf
ExecStart=/usr/bin/ympd --user $YMPD_USER --webport $WEB_PORT --host $MPD_HOST --port $MPD_PORT
User=root
Type=simple
[Install]
WantedBy=multi-user.target
Userをroot指定しているのは、ympdで80番ポートをバインドするためです。
そうじゃない場合はもっと別のポート番号を指定するべきでしょう。
最後に
この記事は元々Pi zeroで書いていたのですけど、放置プレイかましていて内容を全く忘れておりました。
Pi zeroでやっていると止まる時が頻発してイライラしたのでPi4で再構築しなおしたのでついでで記事にしました。