Music Player Daemon (日本語) - ArchWiki

# Music Player Daemon (日本語)

関連記事

- MPD/Tips and Tricks
- MPD/Troubleshooting

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

## インストール

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

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

Note: Mopidy という名前のプラグインベースの実装も存在します。AUR の mopidy や mopidy-git で利用可能です。MPD を完全に置き換えることはできない ので注意してください。

## 設定

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

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

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

- `pid_file` - mpd がプロセス ID を保存するファイル
- `db_file` - 音楽データベース
- `state_file` - MPD の現在の状態
- `playlist_directory` - プレイリストが保存されるフォルダ
- `music_directory` - MPD が音楽を探すフォルダ
- `sticker_file` - sticker データベース

Note: これらのファイルには適切なパーミッションが設定されている必要があります (パスは設定ファイルで指定します)。そうしないと MPD が起動に失敗します。

### グローバル設定

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

デフォルトの `/var/lib/mpd` では `/var/lib/mpd` に設定が保存され mpd をデフォルトユーザーとして使います。しかしながら、デフォルトでは `/var/lib/mpd` は root によって所有されています。そのため mpd がこのファイルに書き込めるように所有者を変更する必要があります:

    # chown -R mpd /var/lib/mpd

`/etc/mpd.conf` を編集して `music_directory` と音楽を入れているディレクトリのパスを加えて下さい:

    music_directory /path/to/music

#### Music ディレクトリ

MPD は音楽コレクションの全ての親ディレクトリに `+x` パーミッションが設定されていることを必要とします。

`/var/lib/mpd` の外に音楽ディレクトリがある場合、ユーザーは mpd がアクセスできるディレクトリの下に音楽ディレクトリを再マウントしなくてはなりません:

    # mkdir /var/lib/mpd/music
    # echo "/path/to/music/dir /var/lib/mpd/music none bind" >> /etc/fstab
    # mount -a

フォーラムのスレッドも参照してください。

他の方法として `/var/lib/mpd/music` にシンボリックリンクを作成することも可能です。

    # mkdir /var/lib/mpd/music
    # ln -s /path/to/music/dir /var/lib/mpd/music/

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

#### MPD の起動

MPD は mpd デーモンを使うことで操作できます。最初の起動では MPD があなたの音楽ディレクトリをスキャンするので多少時間がかかります。

クライアントアプリケーション (ncmpc は軽量で使いやすいクライアントです) を起動していろいろなことをテストして、音楽を再生してください！

##### ソケットの有効化

以下の `mpd.socket` ファイルを有効にすることで (mpd に入っている) `mpd.service` が無効になっているとき、systemd は mpd をすぐには起動しないで、適当なソケットで待機します。mpd クライアントがそのソケットのどれかに接続しようとしたら、systemd は `mpd.service` を起動して透過的にポートのコントロールを mpd プロセスに引き渡します。

他の UNIX ソケットやネットワークポートを使いたい場合や、ネットワークポートで全く待機して欲しくない場合は、`mpd.socket` の `[Socket]` セクションにある適切な `"ListenStream="` 行を追加・編集・削除して、`/etc/mpd.conf` の適切な行を修正してください (詳しくは `man 5 mpd.conf` を参照)。

    /etc/systemd/system/mpd.socket

    [Unit]
    Description=Music Player Daemon Sockets

    [Socket]
    ListenStream=/var/run/mpd/socket
    ListenStream=6600

    [Install]
    WantedBy=sockets.target

#### 音声の設定

他のプログラムとは分けて mpd のボリュームを変更するには、mpd.conf で次のスイッチをアンコメントまたは追加してください:

    /etc/mpd.conf

    mixer_type			"software"

ALSA ユーザーは以下のデバイス定義を使うことで、MPD クライアントで他のアプリケーションとは独立してボリュームを操作することができます。

    /etc/mpd.conf

    audio_output {
            type            "alsa"
            name            "My Sound Card"
            mixer_type      "software"      # optional
    }

PulseAudio ユーザーは以下の修正をする必要があるかもしれません:

    /etc/mpd.conf

    audio_output {
            type            "pulse"
            name            "pulse audio"
    }

PulseAudio は複数の高度な操作 (例: 音声を他のマシンへ転送する) をサポートしています。MPD で高度な設定を使うには Music Player Daemon Community Wiki を見て下さい。

#### ユーザーの変更

MPD を動かすグループを変更すると次のようなエラーが起こります: `output: Failed to open "My ALSA Device"`, `[alsa]: Failed to open ALSA device "default": No such file or directory`, `player_thread: problems opening audio device while playing "Song Name.mp3"`。

これは MPD ユーザーが `/dev/snd/` 下のサウンドデバイスにアクセスできる audio グループに含まれていることを必要とするのが原因です。問題を解決するには、MPD ユーザーを audio グループに追加してください:

    # gpasswd -a mpd audio

#### MPD の起動タイムライン

MPD がいつスーパーユーザー特権を落とし設定されたユーザーを使うのか説明するために、通常の MPD の起動順序をここに記載します:

1. MPD が systemd によって root で起動されると、まず `/etc/mpd.conf` ファイルを読みに行きます。
2. MPD は `/etc/mpd.conf` ファイル内の user 変数を読んで、root からこのユーザーに変更します。
3. 次に MPD は `/etc/mpd.conf` ファイルの中身を読み、それに従って設定を行います。

MPD は実行ユーザーを root から `/etc/mpd.conf` ファイルに記されたユーザーに変更することに注意してください。 このため、設定ファイルで `~` を使うと、root のディレクトリではなくユーザーのホームディレクトリを示すことになります。 `~` を全て `/home/username` に置き換えることで 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` で設定ファイルを検索します。他のパスをコマンドラインの引数で指定することも可能です。

設定ファイルのサンプルを好きな場所にコピーしてください、例えば:

    $ 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
    $ touch ~/.config/mpd/{database,log,pid,state,sticker.sql}

必要なファイルのパスを設定したら、MPD を起動できます。設定ファイルの場所を指定するには:

    $ mpd config_file

#### tty ログイン時に自動起動

ログイン時に MPD を起動するには `~/.profile` (もしくは他の Autostart ファイル) に以下を追加してください:

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

#### X で自動起動

デスクトップ環境を使っている場合は、以下のファイルを `~/.config/autostart/` に配置してください:

    ~/.config/autostart/mpd.desktop

    [Desktop Entry]
    Encoding=UTF-8
    Type=Application
    Name=Music Player Daemon
    Comment=Server for playing audio files
    Exec=mpd
    StartupNotify=false
    Terminal=false
    Hidden=false
    X-GNOME-Autostart-enabled=false

DE を使っていない場合は、#tty ログイン時に自動起動 の行を autostart ファイルに追加してください。

#### systemd による自動起動

Note: ここでは systemd のユーザーセッションマネージャを既に動かしていることを前提にしています。詳しくは systemd/ユーザー を見て下さい。

パッケージ mpd はユーザーサービスファイルを `/usr/lib/systemd/user/mpd.service` に提供しています。設定ファイルは `~/.mpdconf` か `~/.config/mpd/mpd.conf` のどちらかにあるとして想定されています。他のパスを使う場合は systemd (日本語)#ユニットファイルの編集 を見て下さい。プロセスは root で実行されないため、MPD の設定ファイルで `user` と `group` 変数は使ってはいけません。既にユーザーパーティションがありこれ以上変更する必要がないからです。

必要なことは `mpd` ユーザーサービスを有効にして起動するだけです。

Note:

- mpd は `/usr/lib/systemd/system/mpd.service` にもシステムサービスファイルを提供しますが、プロセスは root として実行されるので、ユーザー設定ファイルは読み込まれず `/etc/mpd.conf` が使われます。グローバル設定で説明しています。
- mpd を起動する他の方法はすべて無効にしてください。

#### スクリプトによる設定

Rasi によって、正しいディレクトリ構造・設定ファイルを作成してユーザーの音楽ディレクトリをたずねるスクリプトが書かれています。スクリプトは ここ からダウンロードできます。

### 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 デーモンと衝突がおこります)。

## クライアント

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 クライアント。

  http://pms.sourceforge.net/ || pmus

- vimpc — ncurses ベースの MPD クライアント、vi ライクなキーバインド。

  http://sourceforge.net/projects/vimpc/ || vimpc

### グラフィカル

- Ario — Rhythmbox にインスパイアされた、mpd 用の機能豊富な GTK2 の GUI クライアント。

  http://ario-player.sourceforge.net/ || ario

- QmpdClient — Qt 4.x で書かれた GUI クライアント。

  http://bitcheese.net/wiki/QMPDClient || qmpdclient

- Sonata — エレガントな Python GTK+ クライアント。

  http://sonata.berlios.de/ || sonata

- gmpc — Music Player Daemon の GTK2 フロントエンド。軽量で使いやすいように設計されており、MPD の機能全てに完全にアクセスすることが可能。ユーザーは複数の方法で音楽をブラウズできるようになっています。多数のプラグインで拡張もできます。

  http://gmpc.wikia.com/wiki/Gnome_Music_Player_Client || gmpc

- Cantata — 多数の機能があり、インターフェイスが細かく設定できる MPD の Qt4/Qt5/KDE4 クライアント。

  https://code.google.com/p/cantata/ || cantata

### ウェブ

- Patchfork — PHP と Ajax で書かれた MPD のウェブクライアント。

  http://mpd.wikia.com/wiki/Client:Pitchfork || patchfork-git.

## 参照

- MPD Forum
- MPD User Manual

Category:

- Player (日本語)