作ってみた!ラズパイガジェット達はこちら

MPDのmopidyをインストールとconfファイルの設定方法

Moped_0_7_1 作ってみた
スポンサーリンク

先日製作したAmazonPrimeMusic+Raspberry Pi 3B+Elecrow5インチモニターにMPDをインストールしてローカルのmp3も再生できるようにします。

MPDはmopidyが使いやすかったため今回もmopidyです。以前の記事と同じようにインストール&セットアップします。

参考 mopidy公式ページのドキュメント

※追記:2018-06-30
一部表現が足りない点がありましたので追記しました。

Mopidyのインストール

公式ページの説明に従ってapt-getでインストールします。(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としてコピーするやり方を取りました。

これで問題なく動作しています。どの形が望ましいの分かりませんが、気になる人は詳しくは公式ページで確認してください。

~/.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 =

[audio]
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

※途中のaudioセクションの括弧はWordpressでは音声ファイルのショートコードになってしまいますので、表記はダブル括弧で記載していますが、実際はシングルの括弧[ ]です。コピペの場合は修正するのを忘れずにおこなってください。※そのままの記載ならば関係ありません。

 

今回はmopidyを制御するのはWEBブラウザからとし、楽曲ファイルはネットワークHDD(例:BUFFALO リンクステーション スマホ・タブレットで使える ネットワークHDD(NAS) 2TB LS210D0201C)に保存してある楽曲をフォルダごとマウントして、それを再生できるようにしました。

そのため、Raspberry Pi のSDカードにはRaspbian以外に何もありません。8GBの容量で充分です。今回の設定でもローカルとファイルセクションは無効にしました。

また、ネットワーク上のメディアを簡単に扱えるようにmopidyの拡張アプリケーションであるmopidy-dleynaを追加でインストールしました。すると簡単にNASの音楽ファイルをブラウズできます。オススメです。

もちろん、マウントしたディレクトリを指定したり、シンボリックリンクを張ったりも試したのですが、いくつかのエラーが解消できませんでした。面倒だったので拡張機能を追加したというだけです。ローカルの参照先を上手くNASへ紐付けられれば拡張機能のインストールは必要ありません。

 

では、上から順番にみていきます。

[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 =は空白のままでしたので、そのままにします。

[audio]セクション

次は[audio]セクションです。(※ [audio]と記載しましたがwordpressのためエスケープ処理として[[を2重にしていますが実際はひとつの[ ]です。)

[audio]
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クライアントです。

moped

今回も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内へアクセスできます。Mopidy-dLeyna

各行の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

書式は決まっています。上記を当てはめて紹介します。

  1. デバイスファイル名(//192.168.0.33/music)
  2. マウントポイント(/mnt/musicnas)
  3. ファイルシステムの種類(cifs)
  4. マウントオプション(username=xxxx,password=xxxx,file_mode=0777,dir_mode=0777,iocharset=utf8)※複数のオプションを指定する場合は「,」(カンマ)で区切る。
  5. dumpフラグ(0)
  6. ブート時にfsckをチェックするか?(0)

ちなみに//から始まるのはネットワークドライブという意味です。Windowsだと¥¥ですね。

これで再起動してもマウントされています。

 

上記コマンドはコマンドechoを使い1度で書き込めます。(※userとpasswordは私の環境では要らないので省きました)

echo "//192.168.0.33/music /mnt/musicnas cifs defaults 0 0" >> /etc/fstab

簡単ですね。

 

以上で、MPDを導入して自前の音楽も聴けるようなミュージックシステムに仕上げました。
AmazonPrimeMusicとAirPlayも可能になりました。次は、インターネットラジオの導入や、定額音楽サービスの組み込みなども、このミュージックシステムに導入したいと思います。

また、ケースの製作風景もご紹介していきます。
5インチモニターを使った便利なボタンメニューもPythonで作ってみたいです!

どうぞ、ご参考までに。

ミュージックサーバーのケースをDIY
pHAT BEATとRaspberry Pi Zero Wでミュージックサーバーで組み上げたシステムのケースを制作しました。 格安で手作り感たっぷりのかわいらしいデバイスになりました。 制...(続きを読む)
ご意見・ご感想
お気軽にメッセージください!

最後まで読んでいただきまして、ありがとうございます。
コメント欄以外にも、よろしければお気軽にメッセージください。

この記事についてのご感想などはもちろん、間違いのご指摘、またはRaspberry Piの世間話など何でもOKです!

この記事を書いた人
ラズパイダ

学べる楽しむ便利になる。小さいくせにヤケにパワフル。そんなRaspberry Pi をまだ知らない人に伝えたい。様々な場所で利用されているRaspberry Pi を知って「あっ、これもラズパイだっ!」だからラズパイダ!

ラズパイダをフォローする
作ってみた
この記事をシェアしたり自分用に保存してみる。
ラズパイダ

コメント