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>
に修正。
シェルスクリプトを用意する
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
して止めといた方が良さそう。