コンピューター好きのブログ

主にコンピューター・ラズパイと電子工作・オーディオ関連の記事を書いています。

Xubuntuにmpdを導入してミュージックサーバーを作ってみました

以前、LinuxのS/PDIF出力でハイレゾの音楽を聴く方法について、下の記事を書きました。

www.toomath.net

その後、Linuxで手軽に手持ちの音楽ファイルをハイレゾで再生できる環境を作りたいと思って調べたところ、mpd(Music Player Daemon)というものがあることが分かりました。

今回、Xubuntu 18.04 LTSにmpdを導入してみましたのでご紹介したいと思います。

(2020/10/7 追記)

Raspberry Pi(Raspberry Pi OS(32bit) Version August 2020)でも同様に導入できました。

 

mpdのインストール

mpdはXubuntu用のパッケージが提供されていますので、下記のapt-getコマンドでインストールできます。

sudo apt-get install mpd

mpdの設定

mpdの設定ファイルは /etc/mpd.conf です。音楽ファイルの場所などを指定します。

私は音楽ファイルの格納場所をデフォルト値(/var/lib/mpd/music)のままにしました。

 

そして、このディレクトリの下に、音楽ファイルを格納しているディレクトリへのシンボリックリンクを下記のコマンドで作成しました。

(例) 音楽ファイル格納ディレクトリが /home/toomath/music、シンボリックリンクが Music の場合

cd /var/lib/mpd/music

sudo ln -s /home/toomath/music Music

これにより /home/toomath/music の下にあるファイルはどんな階層にあってもmpdで認識することができます。

音楽ファイルが /home/toomath/music の下にあっても /home/toomath/music/* の下にあっても、/home/toomath/music/*/* の下にあってもOKです。

mpd用のクライアントソフトをインストール

mpdを使うにはクライアントソフトをインストールする必要があります。

私は mpcとncmpc を使うことにしました。下記のコマンドでインストールしました。

sudo apt-get install mpc ncmpc

mpdの起動

インストールすると自動的にmpdのサービスが起動します。起動していない場合は、下記のコマンドで起動します。

sudo systemctl start mpd

なお、自動起動が有効になっているのでマシン再起動後も自動的に起動するはずです。

自動起動になっているかは下記のコマンドで確認できます。

systemctl list-unit-files --type=service

ずらずらとサービスが表示され、下記のように mpd.service の行に enabled とあれば自動起動になっています。

mpd.service enabled

自動起動が有効になっていない場合は、下記のコマンドで有効にできます。

sudo systemctl enable mpd

ファイル情報のアップデート

まずはmpdに音楽ファイルを認識させるため、下記のコマンドを実行します。

mpc update

私はこの作業が必要なことを認識できておらず、若干はまりました。

mpdで音楽を聴く

いよいよ、ncmpcからmpdを操作して音楽を聴いてみます。

ncmpcはキーボードで操作するCUIのmpdクライアントです。

実行すると下記のような画面が表示されます。

ncmpcを起動したところ

ncmpcを起動したところ


使い方(Help)は1を押すと表示されます。

 

簡単な使い方は下記になります。

ncmpcで音楽を再生する方法

ncmpdはブラウズモード(Browse)とキューモード(Queue)を切り替えて音楽を再生します。

↓がブラウズモード。

ncmpcのブラウズモード

ncmpcのブラウズモード

↓がキューモードです。

ncmpcのキューモード

ncmpcのキューモード

基本はブラウズモードで聴きたい音楽を選択してキューに入れ、キューモードで再生します。

音楽再生までの流れは下記になります。

  1. ブラウズモードに入るため3を押します。
  2. カーソルキーとEnterキーで音楽ファイル格納場所のディレクトリにある音楽をたどります。
  3. 聴きたい音楽の表示が反転している状態でスペースキーを押すと、その音楽がキューに入ります。アーティストやアルバムを丸ごとキューに入れることもできます。
  4. 音楽をキューに入れたら、2を押してキューモードに入ります。
  5. キューに入れた音楽が表示されるので、聴きたいものを選んでEnterを押すと再生されます。音楽は続けて再生されます。

ハイレゾ再生で遭遇した問題と対処

意外と順調にmpdを導入できましたが、一点だけ問題がありました。

mpdを導入したXubuntuはS/PDIFでハイレゾ出力するように設定していたのですが、音が出ないときがあるのです。ハイレゾ出力でない場合は音が出るようです。

※ハイレゾ出力設定については冒頭の記事をご覧ください。

 

mpdはデフォルトでALSAを使って音を出すようなので、PulseAudioに変更すれば音が出るのではないかと思い、mpdの設定を変更したところ無事音を出すことができました。

PulseAudioの設定中「exception: nested: pa_context_connect() has failed: Connection refuse」というエラーに悩まされましたので、設定方法を記しておきたいと思います。

下記1~4のように設定を行いました。

 

1.ALSA出力の設定を削除するため、/etc/mpd.conf の下記の記述を変更します。

変更前:

audio_output {
    type "alsa"
    name "My ALSA Device"
#   device "hw:0,0" # optional
#   mixer_type "hardware" # optional
#   mixer_device "default" # optional
#   mixer_control "PCM" # optional
#   mixer_index "0" # optional
}

変更後:

#audio_output {
#   type "alsa"
#   name "My ALSA Device"
#   device "hw:0,0" # optional
#   mixer_type "hardware" # optional
#   mixer_device "default" # optional
#   mixer_control "PCM" # optional
#   mixer_index "0" # optional
#}

 

 2.PulseAudio出力の設定を追加するため、/etc/mpd.conf の下記の記述を変更します。

 変更前:

#audio_output {
#   type "pulse"
#   name "My Pulse Output"
#   server "remote_server" # optional
#   sink "remote_server_sink" # optional
#}

変更後:

audio_output {
    type "pulse"
    name "My Pulse Output"
    server "127.0.0.1"
#   server "remote_server" # optional
#   sink "remote_server_sink" # optional
}

 

3.PulseAudioの設定ファイル /etc/pulse/default.pa に下記の追記を行います。

追記前:

### Network access (may be configured with paprefs, so leave this commented
### here if you plan to use paprefs)
#load-module module-esound-protocol-tcp
#load-module module-native-protocol-tcp
#load-module module-zeroconf-publish

 

### Load the RTP receiver module (also configured via paprefs, see above)

追記後:

### Network access (may be configured with paprefs, so leave this commented
### here if you plan to use paprefs)
#load-module module-esound-protocol-tcp
#load-module module-native-protocol-tcp
#load-module module-zeroconf-publish
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24

 

### Load the RTP receiver module (also configured via paprefs, see above)

 

4.マシンをリブートします。

 

下記のページに記載の情報を参考にさせていただきました。

https://bbs.archlinux.org/viewtopic.php?id=183457

AndroidやiOSでmpdを操作する

mpdのクライアントはAndroidやiOS用もあります。

私はAndroid用のM.A.L.P.というアプリを使ってみましたが、結構使いやすいです。

mpd側でこのアプリを使うための特別な設定は必要ありませんでした。

リモートでも音楽の再生が簡単にできるようになりました。言うことなしです!

(c) 2018 toomath