フォーラムを開設しました!Raspberry Pi の話題はこちらで!

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

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

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

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

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

Mopidyのインストール

公式ページの説明に従ってapt-getでインストールします。(pipからインストールすると上手く行きませんでした・・・)

GPG Keyの追加

パッケージ用の秘密鍵を追加

パッケージをAPTソースに追加

apt-getでインストールします

 

※Mopidyの新しいリリースがリリースされ、システムがそれを理解するのを待つことができないときは、すぐにアップグレードするため以下を実行してください。

 

Mopidyの設定

設定をする前に、.confファイルが最初は無いので、一旦はMopidyを起動します。そうすることでMopidyのフォルダと.confファイルが作られます。

 

これでターミナル内にツラツラとメッセージが流れて起動します。そして一旦Mopidyを終了させます。
終了させるには、ターミナルでCtrl+Cの後、次のコマンドです。

このように公式サイトにはありますが、プロンプトが戻ってきませんでした。そのためMacのターミナルアプリケーションを閉じて、新しいターミナルで再度SSHで接続する羽目になりました・・・。

ひとまず一回は起動すると設定ファイルが出来上がります。これでいいと思います。

設定ファイル(.conf)の編集

よく理解出来ていなかったのですが、どうやらmopidyをアプリケーション?として起動させる場合と、サービスに登録して動かす方法では、設定ファイルの参照先が違うという記述がありました。

 

コマンドの実行で直接起動させる場合は、「~/.config/mopidy/mopidy.conf」の.confファイルで、サービスに登録した場合は、「/etc/mopidy/mopidy.conf」とのことです。

しかし、

というコマンドで参照した場合、どちらかということもなく、合わさったような設定になっていました。よく理解していませんが、ホーム以下にあるconfファイルはユーザー側の変更追加で、/etc/以下の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)

設定は環境により変わる箇所もあります。また、デフォルトではコメントアウト(行頭に#)になっているので、confファイルの最後の行からコピーして追記した方が後々に分かりやすいので、追記の形を取ります。

最終的に設定した状態のconfファイル

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

 

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

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

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

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

 

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

[core]セクション

この[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]セクションです。エラーや状態のログ(記録)を保存する形式と場所です。

こちらもデフォルトで構いません。debug_file = は、mopidy.logかも知れませんが、特に気にする必要もないでしょう。logからエラーの箇所を突き止めるには最適ですが、通常は気にしなくてOKです。また、config_file =は空白のままでしたので、そのままにします。

[audio]セクション

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

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を使っていないなら、そのままデフォルトで構いません。

 

これで基本はOKなのですが、次からはエクステンション(拡張)設定をします。
何か拡張のアプリケーションを入れた場合の設定というのは同じconf内にセクションを設けて記述することで制御します。

[mpd]セクション

hostnameは::コロン2つです。意味はListens on all interfaces, both IPv4 and IPv6ということですので分からなくても::を設定してください。

この設定ではパスワード有りでMPDにアクセスできる状態です。専用アプリなどから制御できます。例えばiOSやAndroidのアプリでMPDに対応しているものならば、ポート6600番でパスワード(有/無)で接続できます。

今回はアプリを使わず、WEBブラウザからの制御にしているので(スマホも)今回は関係ありません。

[http]セクション

ブラウザで制御するために設定します。

同じ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と設定してください)

[stream]はデフォルト

[m3u]もデフォルト

[softwaremixer]セクション

softwaremixerを有効にします。

[file]セクション

今回はSDカード内のファイルにアクセスしませんので無効にしました。

 

[local]セクション

今回はSDカード内のファイルを再生しませんので無効にしました。

 

[moped]セクション

有効にします。音楽を操作するWEBクライアントです。

moped

今回もMopidy-Mopedを使用しました。他にもあります。インストールすることでこのセクションが追記されます。

Mopidy-Mopedのインストール

[local-images]セクションはデフォルト

Mopidy-Mopedをインストールすると追記されます。

[dleyna]セクション

これもデフォルトのままです。
このセクションは冒頭に紹介したDLNA Digital Media Serversという拡張機能です。これを使うと簡単にNAS内へアクセスできます。Mopidy-dLeyna

各行のLimitの値は0ならば無制限です。メモリ不足で転けるのもアレなので、デフォルトで運用していますが、楽曲数が少なければ0の設定でも問題ないと思われます。お好みで。

Mopidy-dLeynaのインストール

apt-getでインストールします。インストール方法などを記したドキュメントはこちら

 

これで設定も完成です。ブラウザにIPアドレス:6680でアクセスしてみてください。

番外:NASをマウントする

今回はNASに保存してある楽曲を再生しています。ファイル操作がし易いように、ネットワークドライブをマウントする方法を備忘録で残しておきます。意外に難しいですからね。

Raspbianにはsambaが導入されていますから、sambaで共有は良くあります。しかし、ただ単に楽曲ファイルだけ再生させたいような場合、マウントするだけならばcifs-utilsの方が手軽です。

(例として設定のIPアドレスは192.168.0.33=NASのIPアドレス、ディレクトリはmusicとmusicnasとしてあります)

cifs-utilsのインストール

マウント先のディレクトリの作成

ディレクトリ名は何でも構いません。分かりやすいようにすればOK。一般的に/mntにマウントされますから、そこに作ります。

フルアクセス権を与えます

マウントする

usernameとpasswordの設定なくNASのフォルダにアクセスできるのであれば、指定しなくても構いません。

起動時に自動的にマウントする

自動的にマウントさせるには、/etc/fstabへの記述が必要です。

 

書き込む内容

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

  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は私の環境では要らないので省きました)

簡単ですね。

 

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

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

どうぞ、ご参考までに。

フォーラムでお待ちしています!

CTA-IMAGE 記事を読んでご指摘をはじめ、質問などございましたらフォーラムにご記入ください。
話題は何でも構いません。Raspberry Pi の情報交換ができたら私も勉強になります!よろしくお願いいたします。

作ってみたカテゴリの最新記事