Music Player Daemon
MPD (music player daemon) はサーバー・クライアントアーキテクチャを持った音声プレイヤーです。ほとんど資源を消費しないで音声ファイルを再生したり、プレイリスト・音楽データベースを管理することができます。インターフェイスで接続するには、クライアントが必要になります。
インストール
mpd パッケージを インストール または開発版の mpd-gitAUR
設定
MPD は ユーザーごとの設定 または システム全体の設定 (設定がすべてのユーザーに適用される) モードで実行することができます。また、#マルチMPD設定 で複数の MPD インスタンスを動作させることも可能です。 MPD の設定方法は、使用目的によって異なります: ユーザーごとのローカルな設定は簡単で、デスクトップシステムにはより適しています。システム全体の設定は、複数のユーザがいる常時接続のオーディオサーバで、MPDインスタンスを共有する場合に適しているかもしれません。
MPD がオーディオを再生できるようにするには、ALSA、オプションで PulseAudio または PipeWire をセットアップして動作させる必要があります。その後の オーディオ設定 セクションでは、ALSA、PulseAudio、または PipeWire に必要なパラメーターについて説明します。
MPD は mpd.conf(5) ファイルで構成され、選択したセットアップ (システム全体またはユーザーごと) に応じてさまざまなパスに配置できます。つまり、使用される一般的な場所は次の 2 つです。
~/.config/mpd/mpd.conf
ユーザーごとの設定モードでは、これが最初に検索される場所です。/etc/mpd.conf
システム全体の設定。
これらは、最も一般的に使用される設定オプションの一部です。
pid_file
- mpd がプロセス ID を保存するファイルdb_file
- 音楽データベースstate_file
- MPD の現在の状態playlist_directory
- プレイリストが保存されるフォルダmusic_directory
- MPD が音楽を探すフォルダsticker_file
- sticker データベース
ローカル設定 (ユーザーごと)
MPD はユーザーごとに設定することが可能です (基本的に MPD はグローバルに設定します)。通常ユーザーとして MPD を実行するメリットは:
- ひとつのディレクトリ
~/.config/mpd/
(もしくは$HOME
下の他のディレクトリ) に MPD の設定ファイル全てが入ります。 - 予期できない読み書きのパーミッションエラーを避けやすくなります。
必要なファイルとプレイリストを集めた一つのディレクトリを作成すると良いでしょう。読み書きができるディレクトリならどれでも結構です (例: ~/.config/mpd/
もしくは ~/.mpd/
)。このセクションでは ~/.config/mpd/
を使うことを前提にしています。これは $XDG_CONFIG_HOME
のデフォルトの値に一致しています (XDG Base Directory Specification)。
MPD は $XDG_CONFIG_HOME/mpd/mpd.conf
や ~/.mpdconf
で設定ファイルを検索します。他のパスをコマンドラインの引数で指定することも可能です。
設定ファイルのサンプルを好きな場所にコピーしてください、例えば:
$ mkdir -p ~/.config/mpd $ cp /usr/share/doc/mpd/mpdconf.example ~/.config/mpd/mpd.conf
~/.config/mpd/mpd.conf
を編集して必要なファイルを指定してください:
~/.config/mpd/mpd.conf
# Required files db_file "~/.config/mpd/database" log_file "~/.config/mpd/log" # Optional music_directory "~/Music" playlist_directory "~/.config/mpd/playlists" pid_file "~/.config/mpd/pid" state_file "~/.config/mpd/state" sticker_file "~/.config/mpd/sticker.sql"
上で設定したプレイリストディレクトリを作成してください:
$ mkdir ~/.config/mpd/playlists
必要なファイルのパスを設定したら、MPD を起動できます。設定ファイルの場所を指定するには:
$ mpd config_file
ファイルとディレクトリの場所を設定する
ユーザーモードでは、設定は $XDG_CONFIG_HOME/mpd/mpd.conf
から読み取られます。
ここでは、$XDG_CONFIG_HOME
が~/.config
の デフォルト に等しいと仮定します。
ユーザー設定を構築するには、パッケージに含まれている MPD 構成の例 が出発点として適切です。次の行を使用してコピーします。
$ mkdir ~/.config/mpd $ cp /usr/share/doc/mpd/mpdconf.example ~/.config/mpd/mpd.conf
この新しく作成された ~/.config/mpd/
ディレクトリを使用して、設定ファイルと共に、データベースやプレイリストなどの他の MPD 関連ファイルを保存することをお勧めします。ユーザーは、このディレクトリへの読み取り/書き込みアクセス権を持っている必要があります。
次に、設定ファイルを編集して、必須オプションのファイルとディレクトリを指定します。
~/.config/mpd/mpd.conf
# Recommended location for database db_file "~/.config/mpd/database" # If running mpd using systemd, delete this line to log directly to systemd. log_file "syslog" # The music directory is by default the XDG directory, uncomment to amend and choose a different directory #music_directory "~/music" # Uncomment to refresh the database whenever files in the music_directory are changed #auto_update "yes" # Uncomment to enable the functionalities #playlist_directory "~/.config/mpd/playlists" #pid_file "~/.config/mpd/pid" #state_file "~/.config/mpd/state" #sticker_file "~/.config/mpd/sticker.sql"
構成でプレイリストが有効になっている場合は、指定されたプレイリストディレクトリを作成する必要があります。
$ mkdir ~/.config/mpd/playlists
MPD を開始できるようになりました (設定ファイルのオプションのカスタムパスを指定します。)
$ mpd [config_file]
データベースファイルを構築するために、MPD は上で定義した music_directory
をスキャンする必要があります。このタスクを要求するには、MPD クライアント のいずれかを使用する必要があります。たとえば、mpc の場合、コマンドは次のようになります。
$ mpc update
または、オプション auto_update
を "yes"
に設定して、music_directory
でファイルが変更されるたびにデータベースを更新することもできます。
オーディオ設定
ALSA が使われている場合、デフォルトのデバイスの 自動検出 は特に設定しなくてもすぐに動作するはずです。そうでない場合、ALSA オーディオ出力定義のシンタックスはこの後に提供されます: 必須の name
パラメータはオーディオ出力に一意な名前を指定します。
alsa-utils パッケージの aplay --list-pcm
を使って表示される正確なデバイスは、device
オプションで指定することができます。
~/.config/mpd/mpd.conf
audio_output { type "alsa" name "ALSA sound card" # Optional #device "iec958:CARD=Intel,DEV=0" #mixer_control "PCM" }
PulseAudio のユーザーは、次の変更を行う必要があります。
~/.config/mpd/mpd.conf
audio_output { type "pulse" name "pulse audio" }
PipeWire を使用した出力も設定できます。
~/.config/mpd/mpd.conf
audio_output { type "pipewire" name "PipeWire Sound Server" }
systemd で自動起動
mpd パッケージは user サービス ファイルを提供します。このサービスはユーザとしてプロセスを起動するので、MPD 設定ファイル中の user
と group
変数を使用したりパーミッションを変更する必要はありません。
ユーザーユニット mpd.service
を 起動/有効化 します。(すなわち、--user
フラグを使用)
tty ログイン時の自動起動
ログイン時に MPD を開始するには、次を ~/.profile
または別の 自動起動ファイル に追加します。
# MPD daemon start (if no other user instance exists) [ ! -s ~/.config/mpd/pid ] && mpd
スクリプトによる設定
こちら に正しいディレクトリ構造・設定ファイルを作成してユーザーの音楽ディレクトリをたずねるスクリプトが存在します。
グローバル設定
デフォルトの /etc/mpd.conf
では /var/lib/mpd
に設定が保存され mpd をデフォルトグループとして使います。
Music ディレクトリ
音楽ディレクトリは、設定ファイル /etc/mpd.conf
のオプション music_directory
によって定義されます。
MPD は、音楽コレクションの all 親ディレクトリに対する実行権限と、音楽ファイルを含むすべてのディレクトリに対する読み込み権限が必要です。これは、音楽が格納されている ~/Music
のようなユーザディレクトリのデフォルト設定と衝突する可能性があります。
この問題にはいくつかの解決策がありますが、これらのうちの1つが最も実用的なはずです。
- ユーザーごとの設定 にモードを切り替える。
mpd
ユーザーをユーザーのグループに追加し、グループにユーザーディレクトリへの実行権限を付与します。このようにして、mpd
ユーザーはユーザーディレクトリを開く権限を持ちます。
# gpasswd -a mpd user_group $ chmod 710 /home/user_directory
- 音楽コレクションを次のいずれかの別のパスに保存します。:
- 全体を動かすことで、
- バインドマウントで、
- または Btrfs#サブボリューム で変更できます (この変更は
/etc/fstab
へのエントリで永続化する必要があります。))
MPD設定ファイルでは、ミュージックディレクトリを1つだけ定義する必要があります。もし、音楽ディレクトリが複数ある場合は、main music ディレクトリの下に /var/lib/mpd
というシンボリックリンクを作成します。このとき、リンク先のディレクトリのパーミッションを適切に設定することを忘れないでください。
あるファイル (複数可) を更新対象から除外するには、その親ディレクトリに .mpdignore
という名前のファイルを作成します。このファイルの各行には、シェル ワイルドカードのリストを含めることができます。現在のディレクトリとすべてのサブディレクトリにあるファイルにマッチすると、それ以降の更新から除外されます。
音声の設定
ALSA ユーザーは以下のデバイス定義を使うことで、MPD クライアントで他のアプリケーションとは独立してボリュームを操作することができます:
/etc/mpd.conf
audio_output { type "alsa" name "My Sound Card" mixer_type "software" # optional }
My Sound Card
はサウンドカードや pcm の名前に置き換えてください (aplay --list-pcms
で確認できます)。
PulseAudio ユーザーは以下の修正をする必要があるかもしれません:
/etc/mpd.conf
audio_output { type "pulse" name "pulse audio" }
PulseAudio は複数の高度な操作 (例: 音声を他のマシンへ転送する) をサポートしています。MPD で高度な設定を使うには Music Player Daemon Community Wiki を見て下さい。
systemd で自動起動
MPD は mpd.service
ユニット で制御できます。MPD が音楽ディレクトリをスキャンするため、最初の起動には時間がかかる場合があります。
クライアントアプリケーション (ncmpc は軽量で使いやすいクライアントです) を起動してすべてをテストし、音楽を再生します。
ソケットのアクティベーション
mpd は mpd.socket
ユニットを提供します。mpd.socket
が有効になっている (そして mpd.service
が無効になっている) 場合、systemd はすぐに MPD を開始せず、適切なソケットをリッスンするだけです。次に、MPD クライアントがこれらのソケットの 1つに接続しようとするたびに、systemd が mpd.service
を開始し、これらのポートの制御を透過的に MPD プロセスに引き渡します。
異なる UNIX ソケットまたはネットワークポート (各タイプの複数のソケットであっても) をリッスンしたい場合、またはネットワーク ポートをまったくリッスンしたくない場合は、mpd.socket
ユニット /etc/mpd.conf
を構成に合わせて適切に 編集 します (詳細については、mpd.conf(5) を参照してください。)
ユーザー ID の起動ワークフロー
MPD は root として実行しないでください。構成で user
オプションを使用して、初期化後に MPD にユーザー ID を変更させることができます。非特権ユーザーとして MPD を開始する場合は、このオプションを使用しないでください。
MPD がスーパーユーザー権限を削除し、構成で設定されたユーザーの権限に切り替える方法を説明するために、通常の MPD 起動の手順を次に示します。
- MPD は systemd によって root として起動されるため、まず
/etc/mpd.conf
ファイルを読みます。 - MPD は設定ファイル中の
user
変数を読み、root からこのユーザへ変更します。 - MPD は設定ファイルの残りの部分を読み込んで、それに従って設定を行います。設定ファイル中の
~
は、root のディレクトリではなく、ホームユーザの ディレクトリを指しています。
mpd のマルチ設定
icecast サーバーを実行
二番目の MPD (例: ネットワークを介して音楽を共有するための icecast 出力) で上で示しているのと同じ音楽・プレイリストを使うには、上記の設定ファイルをコピーして新しいファイルを作って下さい (例: /home/username/.mpd/config-icecast
) そして log_file, error_file, pid_file, state_file パラメータを変更してください (例: mpd-icecast.log
, mpd-icecast.error
など); 音楽やプレイリストのディレクトリに同じディレクトリのパスを使うことで二番目の mpd も一番目の mpd と同じ音楽コレクションを使うようになります。例えば、一番目のデーモンがでプレイリストを作成・編集すれば二番目のデーモンにも同じく影響を与えます。ユーザーは二番目のデーモンのために同じプレイリストを作る必要はありません。二番目のデーモンは ~/.xinitrc
から同じ方法で呼び出して下さい (ポート番号は変えておく必要があります、そうしないと一番目の mpd デーモンと衝突がおこります)。
Satellite セットアップ
上記の方法でも動作しますが、理論的に、両方の mpd インスタンスが同じデータベースファイルに書き込みを行おうとしたときに、データベースに問題が発生する可能性があります。MPD には satellite モード があり、動作中の mpd インスタンスから他のインスタンスにデータベースを受け渡すことができます。
config-icecast に以下を追加してください、host と port はプライマリの mpd サーバーに合わせて置き換えてください:
database { plugin "proxy" host "localhost" port "6600" }
クライアント
mpd を操作するには別にクライアントが必要です。mpd wiki にあるクライアントのリストを見て下さい。人気のあるクライアントは以下の通りです:
コンソール
- mpc — MPD サーバーのコマンドラインインターフェイス。
- ncmpc — mpd の ncurses クライアント。
- ncmpcpp — 新しい機能が加わった C++ で書かれている ncmpc の正確なクローン (タグエディタ、検索エンジン)。
- pms — 細かく設定・アクセスができる ncurses クライアント。
- vimpc — ncurses ベースの MPD クライアント、vi ライクなキーバインド。
- vimus — Haskell で書かれた vim ライクなキーバインドを備えた MPD クライアント。
- https://github.com/vimus/vimus || vimus-gitAUR[リンク切れ: パッケージが存在しません]
グラフィカル
- Ario — Rhythmbox にインスパイアされた、mpd 用の機能豊富な GTK2 の GUI クライアント。
- QmpdClient — Qt 4.x で書かれた GUI クライアント。
- Sonata — エレガントな Python GTK+ クライアント。
- gmpc — Music Player Daemon の GTK2 フロントエンド。軽量で使いやすいように設計されており、MPD の機能全てに完全にアクセスすることが可能。ユーザーは複数の方法で音楽をブラウズできるようになっています。多数のプラグインで拡張もできます。
- http://gmpclient.org/ || gmpcAUR
- Cantata — 多数の機能があり、インターフェイスが細かく設定できる MPD の Qt4/Qt5/KDE クライアント。
- Xfmpc — リソースの消費力が少ないグラフィカルな GTK+ の MPD クライアント。
- pymp'd — MPD の GTK+ フロントエンドクライアント。
- Quimup — C++ と Qt3 で書かれた MPD のクライアント。
- SkyMPC — Qt5 ベースのシンプルな MPD クライアント。