先日製作したAmazonPrimeMusic+Raspberry Pi 3B+Elecrow5インチモニターにMPDをインストールしてローカルのmp3も再生できるようにします。
MPDはmopidyが使いやすかったため今回もmopidyです。以前の記事と同じようにインストール&セットアップします。
※2018年当時に公開された記事です。
Mopidyのインストール
公式ページの説明に従ってapt-getでインストールします。(pipからインストールすると上手く行きませんでした・・・)拡張プログラム(Irisなど)はpipでインストールします。
GPG Keyの追加
パッケージ用の秘密鍵を追加
wget -q -O - https://apt.mopidy.com/mopidy.gpg | sudo apt-key add -
パッケージをAPTソースに追加
sudo wget -q -O /etc/apt/sources.list.d/mopidy.list https://apt.mopidy.com/stretch.list
apt-getでインストールします
sudo apt-get update
sudo apt-get install mopidy
※Mopidyの新しいリリースがリリースされ、システムがそれを理解するのを待つことができないときは、すぐにアップグレードするため以下を実行してください。
sudo apt-get update
sudo apt-get dist-upgrade
Mopidyの設定
設定をする前に、.confファイルが最初は無いので、一旦はMopidyを起動します。そうすることでMopidyのフォルダと.confファイルが作られます。
sudo mopidy
※管理者権限で実行しないとディレクトリへのアクセスなどがエラーになりました。sudoで実行します。
これでターミナル内にツラツラとメッセージが流れて起動します。そして一旦Mopidyを終了させます。
終了させるには、ターミナルでCtrl+Cの後、次のコマンドです。
sudo pkill mopidy
このように公式サイトにはありますが、プロンプトが戻ってきませんでした。そのためMacのターミナルアプリケーションを閉じて、新しいターミナルで再度SSHで接続する羽目になりました・・・。
※こちらも管理者権限で実行します。
ひとまず一回は起動すると設定ファイルが出来上がります。これでいいと思います。
設定ファイル(.conf)の編集
よく理解出来ていなかったのですが、どうやらmopidyをアプリケーション?として起動させる場合と、サービスに登録して動かす方法では、設定ファイルの参照先が違うという記述がありました。
コマンドの実行で直接起動させる場合は、「~/.config/mopidy/mopidy.conf」の.confファイルで、サービスに登録した場合は、「/etc/mopidy/mopidy.conf」とのことです。
しかし、
mopidy config
というコマンドで参照した場合、どちらかということもなく、合わさったような設定になっていました。よく理解していませんが、ホーム以下にあるconfファイルはユーザー側の変更追加で、/etc/以下のconfファイルはシステム側の設定のような印象です。(誰か教えてください)そのためホーム以下に設定した物が優先されるように感じます。どうなんでしょう?
サービスで実行させるには/etc/以下のconfに記載しないと反映しません。再現してみるとホーム以下のconfに記載してからコピーすれば問題ありません。
今回はサービスに登録して実行させたいので、「/etc/mopidy/mopidy.conf」へ記述すれば良いように思いますが、ホーム以下にある「~/.config/mopidy/mopidy.conf」を編集し、それを/etc/mopidy/mopidy.confとしてコピーするやり方を取りました。
.confファイルは2つある?
- 管理者権限であるサービスで動作させる
/etc/mopidy/mopidy.conf - ユーザー権限で実行させる
~/.config/mopidy/mopidy.conf
これで問題なく動作しています。
サービスで動作させるなら、mopidy confのコマンドは実行せず進めた方が分かり易いでしょう。
最善がどの形が望ましいの分かりませんが、気になる人は詳しくは公式ページで確認してください。
~/.config/mopidy/mopidy.confの編集
設定ファイル(.conf)をnanoで編集します。~/はhome/piと同じ意味の略で、homeから移動していないなら、./で構いません。(./.config/mopidy/mopidy.conf)
~/.config/mopidy/mopidy.conf
設定は環境により変わる箇所もあります。また、デフォルトではコメントアウト(行頭に#)になっているので、confファイルの最後の行からコピーして追記した方が後々に分かりやすいので、追記の形を取ります。
/etc/へコピーする
上記のようにコピーします。
sudo cp ~/.config/mopidy/mopidy.conf /etc/mopidy/mopidy.conf
この手順でなく、最初から/etc/への記述でも問題ありません。
最終的に設定した状態のconfファイル
[core]
cache_dir = $XDG_CACHE_DIR/mopidy
config_dir = $XDG_CONFIG_DIR/mopidy
data_dir = /var/lib/mopidy
max_tracklist_length = 10000
restore_state = true
[logging]
color = true
console_format = %(levelname)-8s %(message)s
debug_format = %(levelname)-8s %(asctime)s [%(process)d:%(threadName)s] %(name$
debug_file = /var/log/mopidy/mopidy-debug.log
config_file =
mixer = software
mixer_volume =
output = alsasink
buffer_time =
[proxy]
scheme =
hostname =
port =
username =
password =
[mpd]
enabled = true
hostname = ::
port = 6600
password =
max_connections = 20
connection_timeout = 60
zeroconf = Mopidy MPD server on $hostname
command_blacklist =
listall
listallinfo
default_playlist_scheme = m3u
[http]
enabled = true
hostname = 192.168.0.3
port = 6680
static_dir = /usr/local/lib/python2.7/dist-packages/mopidy_moped/static/
zeroconf = Mopidy HTTP server on $hostname
[stream]
enabled = true
protocols =
http
https
mms
rtmp
rtmps
rtsp
metadata_blacklist =
timeout = 5000
[m3u]
enabled = true
base_dir = $XDG_MUSIC_DIR
default_encoding = latin-1
default_extension = .m3u8
playlists_dir =
[softwaremixer]
enabled = true
[file]
enabled = false ; Extension disabled by user config.
[local]
enabled = false ; Extension disabled by user config.
[moped]
enabled = true
[local-images]
enabled = true
library = json
base_uri = /images/
image_dir =
album_art_files =
*.jpg
*.jpeg
*.png
[dleyna]
enabled = true
upnp_browse_limit = 200
upnp_lookup_limit = 20
upnp_search_limit = 100
dbus_start_session = dbus-daemon --fork --session --print-address=1 ----print-pid=1
今回はmopidyを制御するのはWEBブラウザからとし、楽曲ファイルはネットワークHDDに保存してある楽曲をフォルダごとマウントして、それを再生できるようにしました。
そのため、Raspberry Pi のSDカードにはRaspbian以外に何もありません。8GBの容量で充分です。今回の設定でもローカルとファイルセクションは無効にしました。
また、ネットワーク上のメディアを簡単に扱えるようにmopidyの拡張アプリケーションであるmopidy-dleynaを追加でインストールしました。すると簡単にNASの音楽ファイルをブラウズできます。オススメです。
もちろん、マウントしたディレクトリを指定したり、シンボリックリンクを張ったりも試したのですが、いくつかのエラーが解消できませんでした。
ローカルの参照先を上手くNASへ紐付けられれば拡張機能のインストールは必要ありません。
ローカルの参照などmopidyのconfファイル設定例

では、上から順番にみていきます。
[core]セクション
[core]
cache_dir = $XDG_CACHE_DIR/mopidy
config_dir = $XDG_CONFIG_DIR/mopidy
data_dir = $XDG_DATA_DIR/mopidy
max_tracklist_length = 10000
restore_state = true
この[core]の部分はデフォルトのままで構いません。restore_state = trueだけを有効にしてあります。
前回の状態を保存してくれます。音量とか、聴いていた曲とか検索していた一覧とか参照していたライブラリの位置などです。お好みで。
また、それぞれ変数の値(cacheとconfig)のディレクトリは以下です。
- $XDG_CACHE_DIR/mopidy → /var/cache/mopidy
- $XDG_CONFIG_DIR/mopidy → /etc/mopidy
- $XDG_DATA_DIR/mopidy → /var/lib/mopidy
[logging]セクション
次は[logging]セクションです。エラーや状態のログ(記録)を保存する形式と場所です。
[logging]
color = true
console_format = %(levelname)-8s %(message)s
debug_format = %(levelname)-8s %(asctime)s [%(process)d:%(threadName)s] %(name$
debug_file = /var/log/mopidy/mopidy-debug.log
config_file =
こちらもデフォルトで構いません。debug_file = は、mopidy.logかも知れませんが、特に気にする必要もないでしょう。logからエラーの箇所を突き止めるには最適ですが、通常は気にしなくてOKです。また、config_file =は空白のままでしたので、そのままにします。
セクション
次はセクションです。
mixer = software
mixer_volume =
output = alsasink
buffer_time =
volumeが空白ですが、空白の場合は100と同じです。最大の音量設定となります。初期の音が大きいなら0~100の範囲で指定します。
一番重要なのがoutput = alsasinkです。現在、alsasinkにしています。これが曲者でしてデフォルトでは上手くいかないこともあり、最終的にalsasinkを指定しました。
公式ページにはautoaudiosink, alsasink, osssink, oss4sink, pulsesink, and shout2sendが指定できるとあります。また、ALSAにはMopidy-ALSAMixerという拡張機能をインストールできます。まだ試していません。
ハードウェアでの出力(pHAT系)なのか、Raspberry Pi 3B本体からかにより指定も変わってきます。
問題なければautoaudiosinkのデフォルトのままでいいのかも知れませんが、私はalsasinkで他の問題が解決しました。
[proxy]セクション
[proxy]セクションはproxyを使っていないなら、そのままデフォルトで構いません。
[proxy]
scheme =
hostname =
port =
username =
password =
これで基本はOKなのですが、次からはエクステンション(拡張)設定をします。
何か拡張のアプリケーションを入れた場合の設定というのは同じconf内にセクションを設けて記述することで制御します。
[mpd]セクション
hostnameは::コロン2つです。意味はListens on all interfaces, both IPv4 and IPv6ということですので分からなくても::を設定してください。
[mpd]
enabled = true
hostname = ::
port = 6600
password = ********
max_connections = 20
connection_timeout = 60
zeroconf = Mopidy MPD server on $hostname
command_blacklist =
listall
listallinfo
default_playlist_scheme = m3u
この設定ではパスワード有りでMPDにアクセスできる状態です。専用アプリなどから制御できます。例えばiOSやAndroidのアプリでMPDに対応しているものならば、ポート6600番でパスワード(有/無)で接続できます。
今回はアプリを使わず、WEBブラウザからの制御にしているので(スマホも)今回は関係ありません。
[http]セクション
ブラウザで制御するために設定します。
[http]
enabled = true
hostname = 192.168.0.33
port = 6680
static_dir = /usr/local/lib/python2.7/dist-packages/mopidy_moped/static/
zeroconf = Mopidy HTTP server on $hostname
同じWi-Fiにいるデバイスのブラウザで、URLの欄にホスト名:6680で接続できます。
尚、static_dir =はデフォルトでは空白ですが、Pythonの位置を指定しないとならないようだったので、指定しました。現行のバージョンではコピペしてもらえばOKですが、バージョンが変わった場合は確認してください。※将来的になくなるオプションだそうです。
zeroconf =は空白だと無効だそうです。デフォルトのコメントアウトでも構いません。
hostnameをRaspberry Pi 3BのIPアドレスを指定します。ホスト名(例:rspi3-musicsys)でアクセスしたい場合はコメントを外せばいいです。名前解決するためです。
ブラウザにhttp://rspi3-musicsys.local:6680で接続できます。(その場合はhostname=rspi3-musicsys.localと設定してください).localの記載を忘れないようにしてください。
[stream]はデフォルト
[m3u]もデフォルト
[softwaremixer]セクション
softwaremixerを有効にします。
[softwaremixer]
enabled = true
[file]セクション
今回はSDカード内のファイルにアクセスしませんので無効にしました。
enabled = false ; Extension disabled by user config.
[local]セクション
今回はSDカード内のファイルを再生しませんので無効にしました。
enabled = false ; Extension disabled by user config.
[moped]セクション
enabled = true
有効にします。音楽を操作するWEBクライアントです。

今回もMopidy-Mopedを使用しました。他にもあります。インストールすることでこのセクションが追記されます。
Mopidy-Mopedのインストール
sudo pip install Mopidy-Moped
[local-images]セクションはデフォルト
Mopidy-Mopedをインストールすると追記されます。
[dleyna]セクション
enabled = true
upnp_browse_limit = 200
upnp_lookup_limit = 20
upnp_search_limit = 100
dbus_start_session = dbus-daemon --fork --session --print-address=1 --print-pid=1
これもデフォルトのままです。
このセクションは冒頭に紹介したDLNA Digital Media Serversという拡張機能です。これを使うと簡単にNAS内へアクセスできます。
各行のLimitの値は0ならば無制限です。メモリ不足で転けるのもアレなので、デフォルトで運用していますが、楽曲数が少なければ0の設定でも問題ないと思われます。お好みで。
Mopidy-dLeynaのインストール
sudo apt-get install mopidy-dleyna
apt-getでインストールします。インストール方法などを記したドキュメントはこちら
これで設定も完成です。ブラウザにIPアドレス:6680でアクセスしてみてください。
番外:NASをマウントする
今回はNASに保存してある楽曲を再生しています。ファイル操作がし易いように、ネットワークドライブをマウントする方法を備忘録で残しておきます。意外に難しいですからね。
Raspbianにはsambaが導入されていますから、sambaで共有は良くあります。しかし、ただ単に楽曲ファイルだけ再生させたいような場合、マウントするだけならばcifs-utilsの方が手軽です。
(例として設定のIPアドレスは192.168.0.33=NASのIPアドレス、ディレクトリはmusicとmusicnasとしてあります)
cifs-utilsのインストール
sudo apt-get install cifs-utils
マウント先のディレクトリの作成
sudo mkdir /mnt/musicnas
ディレクトリ名は何でも構いません。分かりやすいようにすればOK。一般的に/mntにマウントされますから、そこに作ります。
フルアクセス権を与えます
sudo chmod 777 /mnt/musicians
マウントする
sudo mount -t cifs //192.168.0.33/music /mnt/musicnas -o username=xxxx,password=xxxx,iocharset=utf8
usernameとpasswordの設定なくNASのフォルダにアクセスできるのであれば、指定しなくても構いません。
起動時に自動的にマウントする
自動的にマウントさせるには、/etc/fstabへの記述が必要です。
sudo nano /etc/fstab
書き込む内容
//192.168.0.33/music /mnt/musicnas cifs username=xxxx,password=xxxx,file_mode=0777,dir_mode=0777,iocharset=utf8,defaults 0 0
書式は決まっています。上記を当てはめて紹介します。
- デバイスファイル名(//192.168.0.33/music)
- マウントポイント(/mnt/musicnas)
- ファイルシステムの種類(cifs)
- マウントオプション(username=xxxx,password=xxxx,file_mode=0777,dir_mode=0777,iocharset=utf8)※複数のオプションを指定する場合は「,」(カンマ)で区切る。
- dumpフラグ(0)
- ブート時にfsckをチェックするか?(0)
ちなみに//から始まるのはネットワークドライブという意味です。Windowsだと¥¥ですね。
これで再起動してもマウントされています。
上記コマンドはコマンドechoを使い1度で書き込めます。(※userとpasswordは私の環境では要らないので省きました)
echo "//192.168.0.33/music /mnt/musicnas cifs defaults 0 0" >> /etc/fstab
以上で、MPDを導入して自前の音楽も聴けるようなミュージックシステムに仕上げました。
次は、インターネットラジオの導入や、定額音楽サービスの組み込みなども、このミュージックシステムに導入したいと思います。
どうぞ、ご参考までに。