「Music Player Daemon/ヒントとテクニック」の版間の差分
細 (カテゴリ変更) |
(→Last.fm/Libre.fm scrobbling: 英語版に同期) |
||
19行目: | 19行目: | ||
mpdas の設定はとてもシンプルです。公式の [https://github.com/hrkfdn/mpdas/blob/master/README README] を見て下さい。{{ic|/etc/mpdasrc}} のベーシックな例として {{ic|/etc/mpdasrc}} が使えます。 |
mpdas の設定はとてもシンプルです。公式の [https://github.com/hrkfdn/mpdas/blob/master/README README] を見て下さい。{{ic|/etc/mpdasrc}} のベーシックな例として {{ic|/etc/mpdasrc}} が使えます。 |
||
− | |||
− | パスワードは md5 ハッシュ形式で入力します: |
||
− | $ echo -n 'PASSWORD' | md5sum | cut -f 1 -d " " |
||
''mpdas'' と ''mpd'' を一緒に自動起動するには、''mpd'' を起動しているファイルに ''mpdas'' のエントリを追加してください (例: [[xinitrc]]): |
''mpdas'' と ''mpd'' を一緒に自動起動するには、''mpd'' を起動しているファイルに ''mpdas'' のエントリを追加してください (例: [[xinitrc]]): |
||
35行目: | 32行目: | ||
{{Tip|システムの起動時に {{ic|mpdas.service}} が起動できない場合、{{ic|mpd.socket}} による[[Music_Player_Daemon#ソケットアクティベーション|ソケットアクティベーション]]を使ってください。}} |
{{Tip|システムの起動時に {{ic|mpdas.service}} が起動できない場合、{{ic|mpd.socket}} による[[Music_Player_Daemon#ソケットアクティベーション|ソケットアクティベーション]]を使ってください。}} |
||
− | === |
+ | === mpdscribble === |
+ | {{AUR|mpdscribble}} は [[AUR]] からインストールできるデーモンです。半公式の MPD scrobbler であり MPD の新しい "idle" 機能を使用して正確な scrobble を実現します。また、{{ic|/etc}} に変更を加えないため設定に root 権限が必要ありません。詳しくは [https://www.musicpd.org/clients/mpdscribble/ 公式ウェブサイト] を見てください。 |
||
− | [http://alip.github.io/mpdcron/ mpdcron] は MPD 用の cron のようなデーモンで、イベントに合わせてユーザーが定義したアクションを実行します。モジュールを使うことで通知を表示したり、Last.fm や Libre.fm に曲を送信したり (''scrobbling'')、再生した曲の統計を集めたりといった拡張が可能です。 |
||
+ | 設定のサンプルは {{ic|/usr/share/mpdscribble/mpdscribble.conf.example}}にあります。{{ic|~/.mpdscribble/mpdscribble.conf}} にコピーして用途に応じて編集してください。 |
||
− | {{AUR|mpdcron-git}}{{Broken package link|パッケージが存在しません}} は [[AUR]] からインストールできます。 |
||
+ | {{Note|設定ファイルにコメントを書く場合は行を分けてください。パーサは同行にあるコメントは認識できません。}} |
||
+ | パスワードは md5hash の形式にすることができます: |
||
− | 設定やモジュールについては公式ページを見て下さい。 |
||
+ | $ echo -n "''password''" | md5sum | cut -f 1 -d " " |
||
− | + | 自動起動するには systemd ユーザーインスタンスで {{ic|mpdscribble.service}} を使ってください。詳しくは [[systemd/ユーザー]]を参照。 |
|
+ | もしくは ''mpd'' と共に自動起動したい場合は、 ''mpd'' を起動しているファイルに ''mpdscribble'' のエントリを追加してください (例: [[xinitrc]]): |
||
{{bc|<nowiki> |
{{bc|<nowiki> |
||
− | [[ -z $(pgrep -xU $UID |
+ | [[ -z $(pgrep -xU $UID mpdscribble) ]] && mpdscribble & |
</nowiki>}} |
</nowiki>}} |
||
+ | {{Note|1={{ic|[last.fm] handshake failed, username or password incorrect (BADAUTH)}} というエラーが表示される場合、ユーザー名とパスワードが正しいことを確認してください。パスワードが [http://bugs.musicpd.org/view.php?id=3836 32文字] ではないことも確認してください。}} |
||
− | === mpdscribble === |
||
+ | === Sonata === |
||
− | {{AUR|mpdscribble}} は [[AUR]] からインストールできるデーモンです。半公式の MPD scrobbler であり MPD の新しい "idle" 機能を使用して正確な scrobble を実現します。また、{{ic|/etc}} に変更を加えないため設定に root 権限が必要ありません。詳しくは [https://www.musicpd.org/clients/mpdscribble/ 公式ウェブサイト] を見てください。 |
||
+ | Sonata は scrobble をサポートしていますが、プログラムをずっと実行する必要があります。さらに、Sonata は曲をキャッシュしないため、再生中に Last.fm に転送できなくなった場合、統計に曲が追加されません。 |
||
− | 設定例: |
||
+ | === YAMS === |
||
− | {{hc|~/.mpdscribble/mpdscribble.conf|2= |
||
− | [mpdscribble] |
||
− | host = ''your mpd host'' # optional, defaults to $MPD_HOST or localhost |
||
− | port = ''your mpd port'' # optional, defaults to $MPD_PORT or 6600 |
||
− | log = /home/''YOUR_USERNAME''/.mpdscribble/mpdscribble.log |
||
− | verbose = 2 |
||
− | proxy = ''your proxy'' # optional, e. g. http://your.proxy:8080, defaults to none |
||
+ | [https://github.com/Berulacks/yams/ YAMS] は Python で書かれた MPD のための FM scrobbling デーモンです。 |
||
− | [last.fm] |
||
− | # last.fm section, comment if you do not use last.fm |
||
− | url = http://post.audioscrobbler.com/ |
||
− | username = ''your last.fm username'' |
||
− | password = ''your last.fm password'' |
||
− | journal = /home/''YOUR_USERNAME''/.mpdscribble/lastfm.journal |
||
+ | Last.FM の [https://www.last.fm/api/scrobbling scrobbling API] の v2.0 に向けて書かれているため、YAMS はユーザネームやパスワードをローカルには保存しません。代わりにクッキーを利用します。他の scrobblers と同様に、YAMS は失敗した scrobbles を保存して後からそれらをアップードできます。例えば一行で複数回再生されたトラックなど重複した scrobbles を無視することなど、YAMS は scrobble がどう行われるか何を行うかを設定するための項目を十分備えています。 |
||
− | [libre.fm] |
||
− | # libre.fm section, comment if you do not use libre.fm |
||
− | url = http://turtle.libre.fm/ |
||
− | username = ''your libre.fm username'' |
||
− | password = ''your libre.fm password'' |
||
− | journal = /home/''YOUR_USERNAME''/.mpdscribble/librefm.journal |
||
− | }} |
||
+ | [[AUR]] から {{AUR|python-yams}} がインストール可能です。 |
||
− | パスワードは md5hash の形式にすることができます: |
||
− | $ echo -n "''password''" | md5sum | cut -f 1 -d " " |
||
+ | 認証するために、ユーザは少くとも一度は {{ic|yams}} コマンドをターミナル上で実行する必要があります。説明が出力されるのでそれに従って下さい。 |
||
− | ''mpdscribble'' と ''mpd'' を一緒に自動起動するには systemd ユーザーインスタンスで {{ic|mpdscribble.service}} を使ってください。詳しくは [[systemd/ユーザー]]を参照。 |
||
+ | その後、YAMS は次の様にして実行できます: |
||
− | もしくは ''mpd'' を起動しているファイルに ''mpdscribble'' のエントリを追加してください (例: [[xinitrc]]): |
||
− | {{bc|<nowiki> |
||
− | [[ -z $(pgrep -xU $UID mpdscribble) ]] && mpdscribble & |
||
− | </nowiki>}} |
||
+ | {{ic|yams}}: デフォルトのデーモンとして実行します。({{ic|yams -N}} とするとフォアグラウンドで実行できます。) |
||
− | {{Note|1={{ic|[last.fm] handshake failed, username or password incorrect (BADAUTH)}} というエラーが表示される場合、ユーザー名とパスワードが正しいことを確認してください。パスワードが [http://bugs.musicpd.org/view.php?id=3836 32文字] ではないことも確認してください。}} |
||
+ | {{ic|yams -k}}: 実行中のインスタンスをキルします。 |
||
− | === Sonata === |
||
+ | {{ic|yams -a}}: 実行中インスタンスのログファイルに接続します。デーモンの出力が見られます。 |
||
− | Sonata は scrobble をサポートしていますが、プログラムをずっと実行する必要があります。さらに、Sonata は曲をキャッシュしないため、再生中に Last.fm に転送できなくなった場合、統計に曲が追加されません。 |
||
+ | |||
+ | {{ic|yams -h}}: 全てのコマンドラインオプションを出力します。 |
||
+ | |||
+ | YAMS は [[systemd]] のサービスファイルも提供します。認証された後であれば、{{ic|systemctl --user start yams}} としてスタートできます。 |
||
== 起動時のレジューム再生を無効化 == |
== 起動時のレジューム再生を無効化 == |
2021年12月11日 (土) 11:29時点における版
メインの記事は 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"
サンプル設定: Output with 44.1 KHz at e. g. 16 bit depth, multiple programs at once
Why these formats? Because they are the standard format for CD audio, because ALSA on its own allows more than one program "to sound" only with dmix — which uses an inferior resampling algorithm by default — and because dmix by default resamples anything lower to 48 KHz (or whatever higher format is playing at the time). Also, some get clicking sounds if at least mpd.conf
is not changed this way.
What is the downside? These settings cause everything (if necessary) to be resampled to this format, such as material from DVD or TV which usually is at 48 KHz. But there is no known way to have ALSA dynamically change the format, and particularly if you listen to far more CDs than anything else the occasional 48 → 44.1 is not too great a loss.
The following assumes that there are not already other settings which conflict resp. overwrite it. This applies especially to the current user's potential ~/.asoundrc
— which MPD as its own user ignores, therefore the following should go to /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. }
If one wants to leave the bit depth decision to ALSA resp. MPD, comment out resp. omit the dmix.format line and change the one for mpd with format to "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/