g00ceyの技術ブログ

RaspberryPi4をジュークボックス化

目次

mpd

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で再構築しなおしたのでついでで記事にしました。


Share

comments powered by Disqus