Music Player Daemon/ヒントとテクニック
メインの記事は Music Player Daemon。
目次
ライブラリの管理
MPD はライブラリの管理は行いません。公式リポジトリの beets や picard などを使うようにしてください。
Last.fm/Libre.fm scrobbling
MPD を使って曲を Last.fm や Libre.fm に scrobble したい場合、いくつかの選択肢があります。
mpdas
mpdas は C++ で書かれた MPD の AudioScrobbler クライアントです。curl と libmpd を使っています。mpdas は最新の AudioScrobbler プロトコル (2.0) をサポートしており、ネットワークに接続していない場合 unscrobble した再生ファイルを ~/.mpdascache
にキャッシュします。
mpdasAUR は AUR からインストールすることができます。
mpdas の設定はとてもシンプルです。公式の README を見て下さい。/etc/mpdasrc
のベーシックな例として /etc/mpdasrc
が使えます。
mpdas と mpd を一緒に自動起動するには、mpd を起動しているファイルに mpdas のエントリを追加してください (例: xinitrc):
[[ -z $(pgrep -xU $UID mpdas) ]] && mpdas &
mpd を systemd ユーザーサービスで起動している場合、mpdas も同じ方法で起動するほうが良いでしょう:
$ systemctl --user start mpdas.service
mpdscribble
mpdscribbleAUR は AUR からインストールできるデーモンです。半公式の MPD scrobbler であり MPD の新しい "idle" 機能を使用して正確な scrobble を実現します。また、/etc
に変更を加えないため設定に root 権限が必要ありません。詳しくは 公式ウェブサイト を見てください。
設定のサンプルは /usr/share/mpdscribble/mpdscribble.conf.example
にあります。~/.mpdscribble/mpdscribble.conf
にコピーして用途に応じて編集してください。
パスワードは md5hash の形式にすることができます:
$ echo -n "password" | md5sum | cut -f 1 -d " "
自動起動するには systemd ユーザーインスタンスで mpdscribble.service
を使ってください。詳しくは systemd/ユーザーを参照。
もしくは mpd と共に自動起動したい場合は、 mpd を起動しているファイルに mpdscribble のエントリを追加してください (例: xinitrc):
[[ -z $(pgrep -xU $UID mpdscribble) ]] && mpdscribble &
Sonata
Sonata は scrobble をサポートしていますが、プログラムをずっと実行する必要があります。さらに、Sonata は曲をキャッシュしないため、再生中に Last.fm に転送できなくなった場合、統計に曲が追加されません。
YAMS
YAMS は Python で書かれた MPD のための FM scrobbling デーモンです。
Last.FM の scrobbling API の v2.0 に向けて書かれているため、YAMS はユーザネームやパスワードをローカルには保存しません。代わりにクッキーを利用します。他の scrobblers と同様に、YAMS は失敗した scrobbles を保存して後からそれらをアップードできます。例えば一行で複数回再生されたトラックなど重複した scrobbles を無視することなど、YAMS は scrobble がどう行われるか何を行うかを設定するための項目を十分備えています。
AUR から python-yamsAUR がインストール可能です。
認証するために、ユーザは少くとも一度は yams
コマンドをターミナル上で実行する必要があります。説明が出力されるのでそれに従って下さい。
その後、YAMS は次の様にして実行できます:
yams
: デフォルトのデーモンとして実行します。(yams -N
とするとフォアグラウンドで実行できます。)
yams -k
: 実行中のインスタンスをキルします。
yams -a
: 実行中インスタンスのログファイルに接続します。デーモンの出力が見られます。
yams -h
: 全てのコマンドラインオプションを出力します。
YAMS は systemd のサービスファイルも提供します。認証された後であれば、systemctl --user start yams
としてスタートできます。
起動時のレジューム再生を無効化
この機能は mpd バージョン 0.16.2 から追加されました。この機能を有効にすると、たとえ mpd を停止したときに曲を再生していても、mpd は "paused" 状態で起動します。以下の行を mpd.conf
に追加すれば機能が有効になります:
restore_paused "yes"
サンプル設定: 44.1KHz、16ビットでの出力、複数のプログラムを同時に出力する場合など
なぜこれらのフォーマットなのか? なぜなら、これらのフォーマットが CD オーディオの標準フォーマットであるためです。また、ALSA は、複数のプログラムが dmix (デフォルトで劣ったリサンプリング アルゴリズムを使用する) でのみ 音を出す ことを許可しているためです。 48KHz までの低いもの (またはその時点で再生されているより高いフォーマット) をリサンプリングします。また、少なくとも mpd.conf
をこのように変更しないと、クリック音がするものもあります。
マイナス面は何ですか? これらの設定により、通常 48KHz である DVD や TV の素材など、すべて (必要な場合) がこの形式にリサンプリングされます。しかし、ALSA で動的にフォーマットを変更する既知の方法はありません。特に、他の何よりもはるかに多くの CD を聴いている場合、時折 48 から 44.1 になることはそれほど大きな損失ではありません。
以下は、競合する他の設定が既に存在しないことを前提に、上書きしています。これは特に、現在のユーザの潜在的な ~/.asoundrc
に当てはまります。- MPD を無視するので、以下は /etc/asound.conf
に記述してください。
/etc/asound.conf
defaults.pcm.dmix.rate 44100 # Force 44.1 KHz defaults.pcm.dmix.format S16_LE # Force 16 bits
/etc/mpd.conf
audio_output { type "alsa" # Use the ALSA output plugin. name "your_custom_name" # Must be present and does not have to match the actual card name , e.g. what you have in /etc/asound.conf options "dev=dmixer" device "plug:dmix" # Both lines cause MPD to output to dmix format "44100:16:2" # the actual format auto_resample "no" # This bypasses ALSA's own algorithms, which generally are inferior. See below how to choose a different one. }
ビット深度の決定を ALSA と MPD に任せたい場合は、dmix.format 行をコメントアウトして、mpd の format 行を "44100:*:2" に変更してください。
lirc で MPD をコントロール
lircd と MPD の間を取り持つように作られたクライアントは既にいくつか存在しますが、実用レベルでは、機能が限られているためにあまり使い物になりません。
mpc と irexec を使用することが推奨されます。mpc はコマンドラインプレイヤーであり、コマンドを MPD に送信してすぐに終了するので (lirc に含まれているコマンド実行プログラムである) irexec にはうってつけです。irexec はリモコンのボタンが押されたのを受信すると指定されたコマンドを実行します。
まず最初に LIRC の記事を参照してリモコンをセットアップしてください。
lirc のスタートアップ設定ファイルを編集して下さい、デフォルトの設定ファイルの場所は ~/.lircrc
です。
以下のパターンをファイルに記述します:
begin prog = irexec button = <button_name> config = <command_to_run> repeat = <0 or 1> end
例:
## irexec begin prog = irexec button = play_pause config = mpc toggle repeat = 0 end begin prog = irexec button = stop config = mpc stop repeat = 0 end begin prog = irexec button = previous config = mpc prev repeat = 0 end begin prog = irexec button = next config = mpc next repeat = 0 end begin prog = irexec button = volup config = mpc volume +2 repeat = 1 end begin prog = irexec button = voldown config = mpc volume -2 repeat = 1 end begin prog = irexec button = pbc config = mpc random repeat = 0 end begin prog = irexec button = pdvd config = mpc update repeat = 0 end begin prog = irexec button = right config = mpc seek +00:00:05 repeat = 0 end begin prog = irexec button = left config = mpc seek -00:00:05 repeat = 0 end begin prog = irexec button = up config = mpc seek +1% repeat = 0 end begin prog = irexec button = down config = mpc seek -1% repeat = 0 end
mpc には複数の機能が存在します。詳しくは mpc(1) を実行してください。
PulseAudio
ローカル (通常のユーザーを使用)
特殊なオプションは必要ありません。mpd の設定ファイルのコメントに書かれているように pulse アウトプットを追加するだけです。
ローカル (特別な mpd ユーザーを使用)
mpd 用のユーザーを使って mpd を実行している場合、他のユーザーの pulseaudio サーバーに音声を送信することができません。pulseaudio をシステム全体のデーモンとして設定するのではなく、pulseaudio の tcp モジュールを使ってローカルホストに音声を送信するよう mpd を設定することができます:
まず /etc/pulse/default.pa
または $XDG_CONFIG_HOME/pulse/default.pa
(通常は ~/.config/pulse/default.pa
) の tcp モジュールをアンコメントして許可する IP アドレスとして 127.0.0.1 を設定してください。ホームディレクトリの設定のほうが優先されます:
### 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 auth-ip-acl=127.0.0.1 #load-module module-zeroconf-publish
;
で区切って cidr 表記の IP アドレスを追加することもできます。設定できたら、pulseaudio を再起動してください:
$ pulseaudio --kill $ pulseaudio --start # または start-pulseaudio-x11/kde
次に /etc/mpd.conf
を編集してリモートサーバーとして pulse を新しく 127.0.0.1 に出力するように設定を追加してください:
audio_output { type "pulse" name "Local Music Player Daemon" server "127.0.0.1" }
追加できたら mpd を再起動してください。
mpd で出力を有効にすれば、全てのユーザーからローカルの mpd が使えるようになります。
リモート
PulseAudio を使用するプログラムと同じように、mpd はネットワーク経由で音声を送信できます。mpd を動作させているサーバーに完全な PulseAudio システムは必要ありません。ソースとして使う場合に必要なのは libpulse だけであり、mpd の依存パッケージとしてインストールされます。
mpd から他のコンピュータに音声を送信するには、mpd が稼働しているサーバーの /etc/mpd.conf
を編集して送信先のコンピュータの IP アドレスを使うように上記の設定を行ってください。また、送信先のコンピュータの /etc/pulse/default.pa
または $XDG_CONFIG_HOME/default.pa
(通常は ~/.config/pulse/default.pa
) を編集してサーバーの IP アドレスを使ってください。
設定すると、再生中または一時停止中の場合、サーバーの mpd ソースが送信先のコンピュータに表示され、通常のソースと同じように制御することができます。mpd を停止すると送信先のマシンにはソースが表示されなくなります。
Cue ファイル
mpd 0.17 から cue のサポートに特別な設定は必要なくなりました。MPD にはパーサーが組み込まれており、外部の cue シートも、埋め込まれている cue シートも使うことができます。例えば、mpc load albumx/x.cue
コマンドで music_directory/albumx/x.cue
ファイルがプレイリストとしてロードされます。CUESHEET タグの場合、mpc load albumx/x.flac
。
CUE ファイルのクライアントサポートはやや制限があります。CUE ファイルをサポートしているプログラムとして cantata と ncmpcpp があります。
HTTP ストリーミング
バージョン 0.15 から MPD には HTTP ストリーミングデーモン/サーバーが付属するようになりました。
設定
ストリーミングサーバーを有効にするには mpd.conf
で以下のアウトプットデバイスを設定してください:
audio_output { type "httpd" name "My HTTP Stream" encoder "vorbis" # optional port "8000" # quality "5.0" # do not define if bitrate is defined bitrate "128" # do not define if quality is defined format "44100:16:1" always_on "yes" # prevent MPD from disconnecting all listeners when playback is stopped. tags "yes" # httpd supports sending tags to listening streams. }
フォーマット
MPD は複数のエンコードフォーマットに対応しています。以下のコマンドで MPD が対応しているフォーマットを確認できます:
$ mpd --version
使用
好きな音楽プレイヤーで mpd サーバーの URL (と指定のポート) を開くことでストリームを試聴することができます。
mpd を使って他のコンピューターのストリームに接続するには:
mpc add http://192.168.1.2:8000
MPRIS2 のサポート
mpDris2AUR パッケージをインストールしてください。ユーザーセッションで動作し mpd サーバーを監視します。
デフォルト設定ファイルを /usr/share/doc/mpdris2/mpDris2.conf
から ~/.config/mpDris2/mpDris2.conf
にコピーして必要に応じて編集してください。
mpDris2 には .desktop
ファイルが存在しますが、デフォルトでは表示されません。ログイン時に自動起動するように設定できます。デスクトップ環境で自動起動できない場合、~/.config/autostart/
にシンボリックリンクを作成することで手動で設定できます:
$ ln -s /usr/share/applications/mpdris2.desktop ~/.config/autostart/