MPDでラズパイ2を音楽プレーヤサーバにする
今回の内容
MPD(MusicPlayerDaemon)を使用してラズベリーパイ2を音楽プレーヤサーバとして利用する方法について説明します。音楽プレーヤデーモンMPDと、MPDをnode.jsで使用できるクライアントmpdjsを使用することで、スマートフォン等のブラウザからラズパイに保存された音楽を再生/停止することができます。
前回までの内容は?
前回までで、ラズパイを使うための設定(OSのインストール,SSH等)をして、エアコンの操作や、Juliusによる音声認識、Apacheやnode.jsでのサーバの構築、iPhoneからのvpn接続をラズパイ上で行ってきました。
前回までの内容が気になる方や、ラズベリーパイをもっと活用したい方 は、ぜひ以下の記事をご確認ください。
MPDとmpdjs
MPD(MusicPlayerDaemon)はLinux上で音楽再生やプレイリスト管理をするためのソフトウェアです。MPDを使用して音楽再生やプレイリスト管理をするにはMPDクライアントが必要となります。今回はMPDクライアントとして「mpdjs」というnode.jsサーバからMPDを使用することができるMPDクライアントを使用します。しかしmpdjsでは、MPDのプレイリスト作成等の操作ができないので、MPDクライアントのMPCも使用します。
[追記]mpdjsでプレイリスト等の操作ができましたので、MPCをインストールする必要はありません!!
※node.jsについては、ラズパイを使用の方はNode.jsでラズパイをWebサーバにするの記事を、ラズパイ2を使用の方はNode.jsでラズパイ2をWebサーバにするの記事をご覧ください。
MPDのインストール
以下のコマンドを実行しラズパイにMPDをインストールします。
sudo apt-get install mpd
インストール後、MPDの設定ファイルを編集します。設定ファイルの場所は「/etc/mpd.conf」にあります。ここではvimを使用して設定ファイルを書き換えます。
sudo vim /etc/mpd.conf
「bind_to_address "localhost"」と書かれた行の最初に「#」を入れてコメントアウトし、次の行に「bind_to_address "0.0.0.0"」を追記します。 MPDではIPv6でIPアドレスを解釈するため、IPv4であることを明示します。
# For network #bind_to_address "localhost" bind_to_address "0.0.0.0"
bind_to_addressの近くに「#port "6600"」と書かれた行があるので、「#」を外してこの行を有効にします。これによりMPDで使用するポートは「6600」となります。
port "6600"
「#auto_update "yes"」と書かれた行があるので、「#」を外してこの行を有効にします。これにより、音楽ディレクトリ内(/var/lib/mpd/music)のファイルが変わったときにMPDデータベースが自動的に更新されます。
auto_update "yes"
167行目あたりにある「#password "password@read,..."」と書かれた行があるので、「#」を外してこの行を有効にします。これでパスワード要求が有効になります。
password "password@read,add,control,admin"
329行目あたりにある「#mixer_type "software"」と書かれた行があるので、「#」を外してこの行を有効にします。これによりソフトウェア(MPDクライアント)による音量調節ができるようになります。
mixer_type "software"
mpd.confの編集が終わったら、MPDの音楽ディレクトリ(ここでは/var/lib/mpd/music)内の所有者をmpdに変更します。
sudo chown mpd -R /var/lib/mpd/music
以下のコマンドよりMPDを再起動させます。
sudo /etc/init.d/mpd restart
MPCのインストール
以下のコマンドを実行しラズパイに、MPDのクライアントであるMPCをインストールします。MPCは、音楽データベースの更新やプレイリスト作成等のために使用します。曲の再生や停止等については後述のmpdjsを使用します。
[追記]mpdjsでプレイリスト作成等の操作ができましたので、MPCをインストールする必要はありません!そのため、MPCの使い方に興味がない方はこの説明は読み飛ばしてください。
以下のコマンドよりMPCをインストールします。インストールはこれだけです。
sudo apt-get install mpc
MPCでは以下の事ができますが、ここでは紹介だけしておきます。
mpc update // 音楽データベースの更新 mpc listall // すべてのファイルを確認 mpc ls // プレイリストの一覧を確認 mpc add // プレイリストへの追加 mpc ls | mpc add // すべてのファイルをプレイリストに追加 mpc play // プレイリストを再生する mpc stop // 再生の停止 mpc next // 次の曲を再生する mpc current // 現在再生している曲を表示する
今回はMPDのパスワードを有効にしたので、mpcコマンドの後には「--host password@localhost」を加えて実行する必要があります。 以下の例は、データベースの更新をする場合のコマンドです。
例) データベースの更新 mpc --host password@localhost update
ラズパイのオーディオ等の設定
MPDで音楽を再生するに当たってのラズパイでのオーディオやポートの設定をします。
オーディオ使用時のログ出力の停止
オーディオを使用しているときに/var/log/syslogにログが大量に出力されて、音がブツッブツッと途切れるらしいのでログを停止します。
以下の設定ファイルを開いてファイルを編集します。
sudo vim /etc/modprobe.d/alsa-base.conf
以下を追記することでログを停止します。ファイルの最後に追記しましょう。
options snd-usb-audio nrpacks=1
アナログ出力を優先
ラズパイのヘッドフォン端子から音が出なかったので、amixerコマンドでアナログ出力を優先にします。
numid=3の後の右の数字は、優先にするオーディオ出力の種類を表しており「0:自動判別、1:ヘッドフォン、2:HDMI」となります。
ここでは、ヘッドフォン端子からの出力を優先にするため"1"を指定します。
amixer cset numid=3 1
アナログ出力の歪み対策
ラズパイ2のヘッドフォン端子のから出力される音がなぜか歪んでしまう(旧ラズパイでは検証していない)。調べてみると、同じような症状で悩んでいる人がいるようです。blog.mouten.infoさんでは、amixerで音量を下げれば下げる程、ヘッドフォン出力の音が歪む問題と、その対処法を挙げていたので参考にさせて頂きます。
音の歪み問題は音量を最大にすると直ります。そのためamixerで音量を最大にします。
amixer set PCM 100%
この解決法によってラズパイでは音量調節はできなくなりましたがMPDのクライアントで音量を調節できますので、これで問題ありませんね(なお音の検証はしていない)。 一番いいのは、ヘッドフォンの出力をアンプの入力に繋いで、アンプ側で音量調節をするのがいいと思います。
6600ポートの解放
MPDでは、先ほどのMPDのインストールで設定したTCPポート(ここでは6600)を使用するため、このポートを開けておきます。
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 6600 -j ACCEPT
上記設定の終わりに
設定が終わったらラズパイを再起動させます。
sudo reboot
mpdjsのインストール
MPDのクライアントの1つであるmpdjsをインストールしていきます。mpdjsはnode.jsで使用するMPDクライアントなので、node.jsが必要となります。 node.jsはサーバ側のプログラム言語です。node.jsのインストールや使用方法についてはNode.jsでラズパイ2をWebサーバにするをご覧ください。10分くらいあればサーバを構築できると思います。
ではmpdjsをインストールします。まず、格納するためのディレクトリを作成します。ここではAudioServerとします。その後、ディレクトリ内に移動します。
mkdir AudioServer cd AudioServer
以下のコマンドを実行して、mpdjsをインストールします。
npm install mpdjs
使用方法
- MPDで再生したい曲を"/var/lib/mpd/music/"に配置します。
- mpdjsを起動させます。
先ほどのmpdjsのインストールで作成したディレクトリ(ここではAudioServer)に移動後、mpdjsを起動させます。 実行コマンドのフォーマットと、実行例は以下の通りです。"MPD hostname"には、ラズパイのIPアドレスを指定します。
フォーマット: node node_modules/mpdjs [http port] [MPD hostname] [MPD port] [javascript compression] [MPD password] 実行例: node node_modules/mpdjs 8081 192.168.11.2 6600 false password
- PCやtablet、スマホ等のブラウザから以下のようにアクセスします。
フォーマット: http://[host]:[http port]/mpd.html アクセス例: http://192.168.11.2:8081/mpd.html
- 左上のメニューマークを押して、中央に出てくる「Artists」を選択します。
- アーティスト一覧からアーティストを選択します。
- アルバム一覧からアルバムを選択します。
- 「Add All」ボタンを押して、プレイリストに追加します。
- 左下から音楽を操作できますので、Playを選択して再生します。
-
あとは、好きな音楽をブラウザで操作してラズパイが奏でる音楽を楽しみましょう。
<< VPNでiPhoneからラズパイに接続するへ | ラズパイから操作できる照明を自作しようへ >> |