Ubuntu 8.10で、AmarokからAirMac Expressに音楽を飛ばす

(2010/10/22追記:Ubuntu 10.10向けに修正した版を書きました→AirMac Express経由で音楽を聞く(Ubuntu 10.10対応版) - にせねこnotes)


RAOP_PLAYのインストールとAmarokの設定をして、ついにAirMac Expressに接続したスピーカーから曲が聞けるようになりました。
Ubuntu 8.04ではカーネルに問題があったらしく上手く動かなかったですが、8.10にしたらすんなりと行ってしまいました。


以下やり方のようなもの

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

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

これらを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

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

  • RAOP_PLAY
cd raop_play
./configure
make
sudo make install
cd drivers/
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というホスト名を対応させる一行を書き加える。

スクリプトを実行

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

ここで

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

こんな風に出ます。

Amarokを設定

Amarokのメニューから、設定(S)->Amarokの設定(C)で設定ウィンドウを開く。
[エンジン]タブで、出力プラグインのプルダウンボックスからALSAを選択して、適用。
モノラル、ステレオの値をhw:1,0(この環境では)に変更して、OKをクリック。

再生

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

再生し始めに音が細切れになったり、ときどき音が途切れたりしますが、諦めましょう。



ここで、音楽は再生されず、「オーディオ出力が使用不能です。デバイスはビジーです。」とか出た。どうやら、ユーザーがaudioグループに属してないとサウンドが再生できないようで、audioグループに自分を追加したら再生できました。

システム->システム管理->ユーザとグループから、自分のユーザ名を選択して、プロパティをクリック。次に「ユーザの権限」タブで、「オーディオデバイスを利用できる」チェックボックスをチェックする。
念のためシステムを再起動しました。


音楽を再生するときは、start_airport_expressを実行した後、Amarokを立ち上げて、再生します
何も再生してない時でも空のデータを送り続けるので、聞かないときはsudo stop_airport_expressして止めといた方が良さそうです。