以前、LinuxのS/PDIF出力でハイレゾの音楽を聴く方法について、下の記事を書きました。
その後、Linuxで手軽に手持ちの音楽ファイルをハイレゾで再生できる環境を作りたいと思って調べたところ、mpd(Music Player Daemon)というものがあることが分かりました。
今回、Xubuntu 18.04 LTSにmpdを導入してみましたのでご紹介したいと思います。
(2020/10/7 追記)
Raspberry Pi(Raspberry Pi OS(32bit) Version August 2020)でも同様に導入できました。
- mpdのインストール
- mpdの設定
- mpd用のクライアントソフトをインストール
- mpdの起動
- ファイル情報のアップデート
- mpdで音楽を聴く
- ハイレゾ再生で遭遇した問題と対処
- AndroidやiOSでmpdを操作する
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クライアントです。
実行すると下記のような画面が表示されます。
使い方(Help)は1を押すと表示されます。
簡単な使い方は下記になります。
ncmpcで音楽を再生する方法
ncmpdはブラウズモード(Browse)とキューモード(Queue)を切り替えて音楽を再生します。
↓がブラウズモード。
↓がキューモードです。
基本はブラウズモードで聴きたい音楽を選択してキューに入れ、キューモードで再生します。
音楽再生までの流れは下記になります。
- ブラウズモードに入るため3を押します。
- カーソルキーとEnterキーで音楽ファイル格納場所のディレクトリにある音楽をたどります。
- 聴きたい音楽の表示が反転している状態でスペースキーを押すと、その音楽がキューに入ります。アーティストやアルバムを丸ごとキューに入れることもできます。
- 音楽をキューに入れたら、2を押してキューモードに入ります。
- キューに入れた音楽が表示されるので、聴きたいものを選んで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側でこのアプリを使うための特別な設定は必要ありませんでした。
リモートでも音楽の再生が簡単にできるようになりました。言うことなしです!