Music Player Daemon

提供: ArchWiki
2023年2月1日 (水) 18:05時点におけるKgx (トーク | 投稿記録)による版 (→‎グローバル設定: 情報を整理)
ナビゲーションに移動 検索に移動

関連記事

MPD (music player daemon) はサーバー・クライアントアーキテクチャを持った音声プレイヤーです。ほとんど資源を消費しないで音声ファイルを再生したり、プレイリスト・音楽データベースを管理することができます。インターフェイスで接続するには、クライアントが必要になります。

インストール

mpd の最新の安定版は公式リポジトリにあります。

実験版を動作したい場合は、AUR に複数のパッケージが存在します。例えば、mpd-gitAUR

ノート: Mopidy という名前の Python で書かれたプラグインベースの実装も存在します。mopidymopidy-gitAUR で利用可能です。MPD を完全に置き換えることはできない ので注意してください。MPD に対する Mopidy のメリットとしては Spotify や SoundCloud、Google Play Music などのクラウドサービスから音楽を再生するためのプラグインが存在する点が挙げられます。ただし mopidy プロジェクトの開発は停滞しており古いプラグインは不安定だったりバグが残っていたりします。

設定

MPD はローカル (ユーザーの設定ごと) とグローバル (設定を全てのユーザーに適用) で、かつ複数のインスタンスで動かすことができます。mpd の設定方法はどう使うかによります: 例えば、デスクトップならばおそらくローカル設定が便利でしょう。

MPD で音声を再生するためには ALSAOSS のどちらか (PulseAudio は任意) を動作するように設定する必要があります。

MPD は mpd.conf で設定します。このファイルの場所は MPD を実行する方法によります (下のセクションを見て下さい)。以下は一般的に使われている設定オプションです:

  • pid_file - mpd がプロセス ID を保存するファイル
  • db_file - 音楽データベース
  • state_file - MPD の現在の状態
  • playlist_directory - プレイリストが保存されるフォルダ
  • music_directory - MPD が音楽を探すフォルダ
  • sticker_file - sticker データベース
ノート: これらのファイルには適切なパーミッションが設定されている必要があります (パスは設定ファイルで指定します)。そうしないと MPD が起動に失敗します。

ローカル設定 (ユーザーごと)

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 設定ファイル中の usergroup 変数を使用したりパーミッションを変更する必要はありません。

ユーザーユニット mpd.service起動/有効化 します。(すなわち、--userフラグを使用)

ノート: 設定ファイルは ~/.config/mpd/mpd.conf から読み込まれます。カスタム設定ファイルのパスを指定したい場合は systemd#ユニットファイルの編集 を参照して下さい。

tty ログイン時の自動起動

ログイン時に MPD を開始するには、次を ~/.profile または別の 自動起動ファイル に追加します。

# MPD daemon start (if no other user instance exists)
[ ! -s ~/.config/mpd/pid ] && mpd

スクリプトによる設定

こちら に正しいディレクトリ構造・設定ファイルを作成してユーザーの音楽ディレクトリをたずねるスクリプトが存在します。

グローバル設定

警告: グローバルな mpd を使う PulseAudio のユーザーは mpd をユーザーで動かすために処置をする必要があります。

デフォルトの /etc/mpd.conf では /var/lib/mpd に設定が保存され mpd をデフォルトグループとして使います。

Music ディレクトリ

/etc/mpd.conf ファイルを編集して music_directory パラメータで音楽を入れているディレクトリのパスを設定してください:

music_directory /path/to/music

MPD は音楽コレクションの全ての親ディレクトリに +x パーミッションが設定されていることを必要としますが、これは多くのユーザーが音楽を保存しているユーザーディレクトリのデフォルト設定と衝突します。

この問題を解決する方法はいくつかありますが、以下のどれかの方法が最も実用的です:

  • ユーザーで MPD を実行
  • ログイングループに mpd ユーザーを追加してユーザーディレクトリにグループパーミッションを付与:
 # gpasswd -a mpd <your login group>
 $ chmod 710 /home/<your home dir>
  • 音楽コレクションを別のパスに配置。(a) 全てを移動する (b) バインドマウントを使う (c) Btrfs のサブボリュームを使う (/etc/fstab にエントリを追加して変更を永続的にする必要があります) のどれかの方法を使用。ディレクトリのパーティションはアクセス制御リストで設定できます。

MPD の設定では音楽ディレクトリを一つしか含めることができません。音楽コレクションが複数のディレクトリにある場合は、/var/lib/mpd のメインの音楽ディレクトリにシンボリックリンクを作成してください。リンクしたディレクトリにパーティションを設定することを忘れないで下さい。

音声の設定

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 は軽量で使いやすいクライアントです) を起動してすべてをテストし、音楽を再生します。

ソケットのアクティベーション

mpdmpd.socket ユニットを提供します。mpd.socket が有効になっている (そして mpd.service が無効になっている) 場合、systemd はすぐに MPD を開始せず、適切なソケットをリッスンするだけです。次に、MPD クライアントがこれらのソケットの 1つに接続しようとするたびに、systemd が mpd.service を開始し、これらのポートの制御を透過的に MPD プロセスに引き渡します。

異なる UNIX ソケットまたはネットワークポート (各タイプの複数のソケットであっても) をリッスンしたい場合、またはネットワーク ポートをまったくリッスンしたくない場合は、mpd.socket ユニット /etc/mpd.conf を構成に合わせて適切に 編集 します (詳細については、mpd.conf(5) を参照してください。)

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 サーバーのコマンドラインインターフェイス。
http://www.musicpd.org/clients/mpc/ || mpc
  • ncmpc — mpd の ncurses クライアント。
http://www.musicpd.org/clients/ncmpc/ || ncmpc
  • ncmpcpp — 新しい機能が加わった C++ で書かれている ncmpc の正確なクローン (タグエディタ、検索エンジン)。
http://ncmpcpp.rybczak.net/ || ncmpcpp
  • pms — 細かく設定・アクセスができる ncurses クライアント。
https://ambientsound.github.io/pms/ || pmus-gitAUR
  • vimpc — ncurses ベースの MPD クライアント、vi ライクなキーバインド。
https://github.com/boysetsfrog/vimpc || vimpc-gitAUR
  • vimusHaskell で書かれた vim ライクなキーバインドを備えた MPD クライアント。
https://github.com/vimus/vimus || vimus-gitAUR[リンク切れ: パッケージが存在しません]

グラフィカル

  • Ario — Rhythmbox にインスパイアされた、mpd 用の機能豊富な GTK2 の GUI クライアント。
http://ario-player.sourceforge.net/ || ario
  • QmpdClient — Qt 4.x で書かれた GUI クライアント。
http://bitcheese.net/wiki/QMPDClient || qmpdclientAUR
  • Sonata — エレガントな Python GTK+ クライアント。
https://www.nongnu.org/sonata/ || sonataAUR
  • gmpc — Music Player Daemon の GTK2 フロントエンド。軽量で使いやすいように設計されており、MPD の機能全てに完全にアクセスすることが可能。ユーザーは複数の方法で音楽をブラウズできるようになっています。多数のプラグインで拡張もできます。
http://gmpclient.org/ || gmpcAUR
  • Cantata — 多数の機能があり、インターフェイスが細かく設定できる MPD の Qt4/Qt5/KDE クライアント。
https://github.com/CDrummond/cantata || cantata
  • Xfmpc — リソースの消費力が少ないグラフィカルな GTK+ の MPD クライアント。
https://goodies.xfce.org/projects/applications/xfmpc || xfmpc
  • pymp'd — MPD の GTK+ フロントエンドクライアント。
http://pympd.sourceforge.net || pympdAUR
  • Quimup — C++ と Qt3 で書かれた MPD のクライアント。
https://goodies.xfce.org/projects/applications/xfmpc || quimupAUR
  • SkyMPC — Qt5 ベースのシンプルな MPD クライアント。
https://github.com/soramimi/SkyMPC || skympc-gitAUR

参照