AirMac Express経由で音楽を聞く(Ubuntu 10.10対応版)

Ubuntu 10.10 に raop_play をインストールした。使ってみて、かなり安定しているように感じる。さすがに Amarok 1.4 を使い続けるのはいやなので、やっと見切りを付けられて良かったと思う。
Ubuntu 8.10の時とはいろいろと勝手の異なる所があったので、前のエントリ(Ubuntu 8.10で、AmarokからAirMac Expressに音楽を飛ばす - にせねこnotes)を修正して、Ubuntu 10.10対応版としてメモしておく。



AirMac Express(海外では Airport Express)には、LAN経由でiTunesから音楽を飛ばして、AirMac Expressにつないだオーディオシステムで音楽を聞けるという機能があります。UbuntuにはiTunesが無いのだけれど、RAOP_PLAY(http://raop-play.sourceforge.net/)を使って代替させることが可能。


以下やり方。

必要なものをインストール

  • build-essential
  • libssl-dev
  • libfltk1.1
  • libfltk1.1-dev
  • fluid
  • libglib2.0-dev
  • libsamplerate0-dev
  • libid3tag0
  • libid3tag0-dev
  • cvs
  • pavucontrol

これらをSynapticなどでインストールする。

ソースコードのダウンロード

cvs -d:pserver:anonymous@raop-play.cvs.sourceforge.net:/cvsroot/raop-play login

パスワードを聞かれたら何も入力せずEnter

cvs -z3 -d:pserver:anonymous@raop-play.cvs.sourceforge.net:/cvsroot/raop-play co -P raop_play

ソースコードの修正

[20110103追記]Ubuntu 10.10からautoconf.hの場所が変わったので修正が必要。[/追記]
raop_play/drivers/alsa_raoppcm.c と raop_play/drivers/alsa_raoppcm_version.c の

#include <linux/autoconf.h>

の行を

#include <generated/autoconf.h>

に修正。

コンパイル、インストール

raop_play のフォルダにて

./configure
make
sudo make install

シェルスクリプトを用意する

3つのスクリプトを適当なフォルダに作成する。

  • load_airport_express_driver
#!/bin/sh 
module=alsa_raoppcm 
devnode=/tmp/pcmout 
if ! grep "^$module" /proc/modules > /dev/null; then
    /sbin/modprobe alsa_raoppcm
fi
major=`sed -n -r "s/(^[0-9]+) pcmout/\\1/p" /proc/devices`
if [ -c $devnode ]; then
    rm -f $devnode;
fi
mknod $devnode c $major 0
  • start_airport_express
#!/bin/bash
sudo load_airport_express_driver 
raop_play airport /tmp/pcmout &
  • stop_airport_express
#!/bin/bash
killall -9 raop_play

これらをパスの通ったフォルダ(/usr/bin など)にコピーし、実行属性を与える

sudo cp load_airport_express_driver start_airport_express stop_airport_express /usr/bin
sudo chmod +x /usr/bin/load_airport_express_driver /usr/bin/start_airport_express /usr/bin/stop_airport_express

/etc/hostsを編集する

sudo gedit /etc/hosts

で、

AirMacExpressのIPアドレス	airport

AirMacExpressのIPと、airportというホスト名を対応させる一行を書き加える。

/etc/modulesを編集する

起動時にalsa_raoppcmモジュールが読み込まれるように/etc/modulesを編集する。

sudo gedit /etc/modules

で、次の一行を書き加える。

alsa_raoppcm

alsa_raoppcm モジュールのロード

sudo modprobe alsa_raoppcm

ここで

cat /proc/asound/cards

とすると、

 0 [ICH6           ]: ICH4 - Intel ICH6
                      Intel ICH6 with STAC9750,51 at irq 17
 1 [raoppcm        ]: raoppcm - ALSA RAOPPCM
                      alsa pcm driver to bridge to raop_play

こんな風に表示される。

スクリプトの実行

start_airport_express

上手く接続できたら↓のようなメッセージが表示される。

DBG: CSeq: 1
DBG: Apple-Response: aNfUQA36LuFwRrWP...
DBG: Audio-Jack-Status: connected; type=analog
DBG: CSeq: 2
DBG: Session: 809F8840
DBG: Transport: RTP/AVP/TCP;unicast;interleaved=0-1;mode=record;server_port=6000
DBG: Audio-Jack-Status: connected; type=analog
DBG: CSeq: 3
DBG: Audio-Jack-Status: connected; type=analog
DBG: CSeq: 4
DBG: Audio-Jack-Status: connected; type=analog
connected
DBG: audio data type: 8
INFO: read_line:disconnected on the other end
DBG: stop reading from console

音の出力の設定

システム→設定→サウンド(またはインジケーターアプレットのスピーカーアイコン→サウンド設定)の、出力タブでALSA RAOPPCM Analog Stereoを選んでやれば、コンピュータで再生されるすべての音がAirMac Expressに送られるようになる。しかしそれだと不便なので、pavucontrolを使ってアプリ毎に出力を設定する。


pavucontrolを起動する。[20110103追記]GNOMEのメニューから、アプリケーション→サウンドとビデオ→PulseAudio Volume Control で起動。または端末から↓のコマンドを実行[/追記]

pavucontrol

音楽を再生するアプリケーションを起動[20110103追記]し、再生を開始[/追記]すると、pavucontrolの設定画面にアプリケーションの名前が表示される。その右側のボタンをクリックして"ALSA RAOPPCM Analog Stereo"を選択する。

再生

AirMac Expressに接続したスピーカーから音楽が流れてきます


普段音楽を聞くときは、音楽を再生する前に、

start_airport_express

を実行します。
何も再生してない時でも空のデータを送り続けるので、聞かないときは

sudo stop_airport_express

して止めといた方が良さそう。