以前に「インターネットラジオを FM ラジオで聴く」というのを書きました。少し離れた場所にあるマシンにFMトランスミッターを付け、目の前のPCから操作する(そしてFMラジオで聴く)というものでした。
それから月日は流れ、ハードウェアを入れ換えたり、その際にOSもすっかりインストールし直したりしているうちに、そのリモートのマシンでの音声出力ができない状態になってしまいました。
そこで前回とは逆に「リモートに置いてある音楽ファイルをローカルPCのスピーカーで鳴らす」というのが、今回やりたいことです。目新しいことは何もなく、既に情報がどこかにあったので楽でした。自分のためのメモも兼ねてここに書いておきます。
先にまとめておくと、
- リモート
- 音楽ファイルが置いてある
- Pulseaudio
- MPD
- ローカル
- スピーカーが接続されている
- Pulseaudio
- gmpc
という構成になります。
Pulseaudio
ここではリモートもローカルも OS は Debian (これを書いている時点での安定版)です。
まず、ローカルで
sudo apt-get install pulseaudio
paplay local-sample.ogg
などとやってちゃんと動いていることを確認します。ところがここで音が出ませんでした。
sudo apt-get install pavucontrol
とやって pavucontrol で、「出力装置」を見ると、ポートが「HDMI」になっていました。ここの環境ではそこにスピーカーはなく、USBポートにサウンドアダプタを挿してその先にスピーカーがある状態です。「設定」で、GF108 High Difinition Audio Controller が HDMI になっているので、これを Off にすると、「出力装置」のポートが「スピーカー」または「デジタル出力(S/PDIF)」になって、音が出るようになりました。
リモートとローカルの Pulseaudio の設定
ローカルの /etc/pulse/default.pa で、
load-module module-native-protocol-tcp auth-ip-acl=192.168.1.0/24
リモートの /etc/pulse/client.conf で、
default-server = 192.168.1.xxx (スピーカーのあるPC)
とします。必要に応じてローカルのポート 4713 を開けます(今回のローカルPCはファイアーウォールを置いていないので特に設定の必要なし)。
テストとして、リモートで
paplay remote-sample.ogg
などとやるとローカルのスピーカーが鳴ります。
MPD
当初の目的は達成されましたが、このままでは不便なので、MPD を使うことにします。これは音楽再生やプレイリスト管理をリモートから行うためのものです。
リモート
まず
sudo apt-get install mpd
でインストールします。/etc/mpd.conf で、music_directory
に音楽ファイルの置いてあるディレクトリを設定し、bind_to_address
に接続を許すアドレス(今回は(LAN内の)どこからでも接続できるよう “any” としました)を設定します。
出力先の設定は
audio_output { type "pulse" name "My Pulse Output" # server "remote_server" # optional # sink "remote_server_sink" # optional }
とします。ここで mpd を再起動します。
ローカル
ローカルPCには、gmpc をインストールして使います。これは高機能で、細かな設定やプレイリストの管理を行うことができます。ふだんは、再生/ポーズ/停止くらいの操作しか必要ではないので、シンプルな xfce4-mpc-plugin をパネルに置いてこれを使うことにします。
sudo apt-get install gmpc xfce4-mpc-plugin
どちらも、ホストとして MPD を動かしているリモートのマシンを指すように設定します。
[…] やりたいことは以前書いた「リモートに置いてある音楽ファイルをローカルPCのスピーカーで鳴らす」と同じです。あれから時間が経ってまたまた環境がずいぶん変わってしまいました […]