ネットワーク経由で音楽を再生するMusic Player Daemon

 MPD(Music Player Daemon)は、音楽をオンラインで再生するための非常に独特でクールな方法だ。一般的な音楽再生アプリケーションとは異なり、MPDにはグラフィカルなインターフェースはおろかコマンドラインインターフェースさえもない。MPDでは、別のさまざまなクライアントプログラムがそれぞれネットワーク経由でMPDと通信を行ない音楽を再生する仕組みになっている。

 MPDは同時に複数のアプリケーション(クライアント)と通信することも可能だ。クライアントは、iTunes風のグラフィカルユーザインターフェースを持つものであってもよいし、コマンドラインで実行するものであってもよいし、ウェブブラウザやテキストエディタのステータスバーで現在再生中の曲名を表示するためのプログラムであってもよい。現在、MPDと通信することができるクライアントは約60個ほどあり、さらに少なくとも40個が開発中だ。

 MPDは数年前からGNU GPLの下で公開されていて、主なGNU/Linuxディストリビューションにはパッケージが用意されている。Debian、Ubuntu(universeレポジトリ経由)、Mandriva、Gentooユーザは、mpdのパッケージやebuildを利用することができる。FedoraとopenSUSEにはMPDは含まれていないが、それらのディストリビューションについても非公式RPMをオンラインで見つけることができる。MPDをソースからコンパイルする場合は、まずMPD Wikiインストールのページへ行き、General Installing From Source(ソースからの汎用的なインストール)にある手順に従うと良い。

 MPDの制御用ファイルは、/etc/mpd.confのみだ。/etc/mpd.confには以下のような5つのパスについての設定が入っている。

######################## REQUIRED PATHS ########################
music_directory                 "~/music"
db_file                         "~/.mpd/mpd.db"
playlist_directory              "~/.mpd/playlists"
log_file                        "~/.mpd/mpd.log"
error_file                      "~/.mpd/mpd.error"
################################################################

 MPDはmusic_directoryで定義されたディレクトリ(musicディレクトリ)とそのサブディレクトリの中にある音声ファイルしか再生しない。しかしmusicディレクトリ内にあるシンボリックリンクが指すディレクトリやファイルについてはmusicディレクトリ外であっても再生を行なうので、例えば ~/podcasts/内にポッドキャストを保存している場合には、以下のようにしてmusicディレクトリ内からpodcastsディレクトリへのシンボリックリンクを作成しておくとMPDで利用することができるようになる。

ln -s ~/podcasts/ ~/music/podcasts

 ほとんどの音楽ファイルには、アーティスト名、トラック名、トラック長といったメタデータが含まれている。MPDはそのようなメタデータをインデックス化して、その結果をdb_fileで定義されているファイルに保存する。MPDのクライアントは、メタデータを表示したり検索したりすることができる。

 たいていの音楽再生アプリケーションと同様に、MPDでもM3U形式のプレイリストのインポート/エクスポートを行なうことができる。MPDの場合、プレイリストの読み書きはplaylist_directoryで定義されたディレクトリで行なわれる。

 最後の2つのlog_fileerror_fileの設定は必須であり、それぞれログとエラーの記録に使用される。

 mpd.confのマニュアルページには、この他にも約60個の任意の設定項目のリストがある。それらの設定項目の大部分は特殊なケースのためのものであり、例えばMPDの音声出力をIcecastなどのShoutcast互換のサーバに送るためのものなどがある(このケースに興味があればMPD wikiの記事を見ると良いだろう)。

 設定が終わったら、MPDを起動する。自分でソースからコンパイルしてインストールした場合にはmpdと実行し、ディストリビューションが提供しているパッケージを使用している場合には/etc/init.d/mpd restartと実行する。

MPDクライアント

 MPDを完全に機能させるためには、あと一つ必要なものがある。つまりMPDのクライアントだ。

 MPDの制御はtelnetを使って行なうこともできるが、まずはグラフィカルなクライアントを使ってみるのが良いだろう。MPD wikiには、通常の使い方に適したグラフィカルなクライアントが10個以上紹介されている。ここで紹介するクライアントとしては見掛けの良いGTK+(GNOMEスタイル)クライアントのSonataを選んだが、以下の説明のほぼすべては、GNOME、KDE、GNUStep、Mac OS X、その他のプラットフォーム用のどのグラフィカルクライアントにも当てはまる。

 Sonataは、MPDよりも多くのディストリビューションで配布されていて、通常は「sonata」という名前で含まれている。Sonataのソースコードとコンパイル手順は、Sonataのウェブサイトのダウンロードページにある。コマンド「sonata」を実行するとSonataが起動する。

 MPDと同じコンピュータ上でSonataを実行する場合、Sonataを設定する必要はない。一方、MPDとは別のコンピュータ上でSonataを実行する場合には、どこでも良いのでSonataの画面上で右クリックしてpreferences(設定)を選択し、Host(ホスト)のフィールドにMPDをホストしているコンピュータのホスト名かIPアドレスを入力する。

 Sonataのインターフェースはタブ形式になっている。左から2つめのタブ「Library(ライブラリ)」では、MPDのmusic_directoryで定義したディレクトリにある音声ファイルとサブディレクトリのすべてが表示される。ファイル名をダブルクリックすると、そのファイルをその時点のプレイリストに追加することができる。また、画面の上の方にある再生ボタンを押すと再生が始まる。

 Sonataのユーザインターフェースは他のグラフィカルな音楽プレイヤのほとんどと同じだが、やや分かりにくい点が一つだけある。musicディレクトリ内でファイルの追加や削除を行なった際には、そのような変更を行なったことをMPDに伝える必要があるという点だ。そのためには、Library(ライブラリ)タブ内のライブラリ上で右クリックして表示されるメニューの中のUpdate Library(ライブラリの更新)というオプションをクリックして、db_fileデータベースの再構築を指示する。ライブラリの更新が完了すると、musicディレクトリ内のすべての変更がSonataのLibrary(ライブラリ)タブに反映される。

 Sonataのようなグラフィカルなクライアントは見掛けも良く使いやすいというメリットがあるが、コマンドライン用のクライアントはスクリプト内で使用することが可能というメリットがある。MPD用のコマンドライン用クライアントはmpcで、MPDと同じウェブサイトのページで配布されている。なおMPDが含まれているディストリビューションにはmpcも含まれている。

 Sonataの場合と同様に、MPDと同じホスト上でmpcを実行する場合は設定は必要ないが、そうでない場合にはMPD_HOST環境変数にMPDをホストしているコンピュータのホスト名かIPアドレスを設定する必要がある。例えば私の場合、MPDはcallistoという名前のコンピュータ上にあるので、以下のような設定になる。

export MPD_HOST=callisto  # bash、zsh、その他Bourneシェル系のシェル用
set    MPD_HOST=callisto  # cshとtcsh用

 インストールと設定が終われば、mpcを使うのは簡単だ。例えば「現在再生中のファイルを1分間一時停止し、その後再生を再開する」という場合には、コマンドラインで以下のようにすると良い。

mpc pause && sleep 1m && mpc play

 グラフィカルなクライアントで行なうことができること、すなわち、再生、一時停止、音量調節、シーク(高速早送り/巻き戻し)、ランダム/リピートモードの切り替え、プレイリストの保存と読み込み、現在のプレイリストからの曲名の削除、データベースの更新などはすべてmpcでも行なうことができる。mpcマニュアルの中のスクリプトの例では、スクリプト内でmpcを利用して、Mozilla FirefoxでダウンロードしたM3U形式のプレイリストを読み込んで再生する方法が示されている。

#!/bin/bash
mpc clear
cat $1 | mpc add
mpc play

 このスクリプトをmpc-load-playlistとして保存後、実行可能な状態にしておき(chmod +x mpc-load-playlist)、Mozilla Firefoxでプレイリストをダウンロードする。そしてFirefoxが「このファイルをどのようにしますか」というダイアログを開いたら、そのファイルを処理(プレイリストを再生)するためのアプリケーションとしてmpc-load-playlistを指定すると良い。上記のコードは、現在のプレイリストをクリアし、M3Uファイル内にリストされているURL(音声ファイルへのリンク)をプレイリストに追加し、プレイリストの再生を開始する。なおURLを再生する際、MPDはインターネット経由でストリーミングを行なう。

 先にも述べた通り、すでに実用的に使える状態のMPDのクライアントが約60個ほどある。以下に、幅広いプラットフォーム用のクライアントの中からいくつかを紹介する。

  • ncmpc――cursesクライアント。コンソールで利用。キーバインドがvi風になっている。
  • gmpc――Sonataと同じく、見掛けの良いGTK+のクライアント。
  • kmp――Qt(KDEスタイル)クライアント。
  • QMPDClient――kmpと同じく、Qt(KDEスタイル)クライアント。
  • FoxyTunes――MPDと通信することができるMozilla Firefox用拡張。
  • EMMS――Emacs MultiMedia Systemの略。MPDと通信することができる。
  • Pitchfork――見掛けの良いAJAX/PHPクライアント。

 なお、クライアントの完全なリストやその他の詳しい情報は、MPD wikiを得ることができる。

NewsForge.com 原文