目覚まし時計代わりに Debian サーバと AirMac Express を使う
目覚ましミニコンポの CD プレイヤが壊れたかに見えた時に考えた、debian サーバに入っている mp3 ファイルを AirMac Express に繋がったスピーカから鳴らして目覚ましにするという企み。
CD プレイヤが叩いたら直ったのでお蔵入りになったのだけど、とりあえずトライしてみたいな〜ということでやってみた。
まずは AirMac Express へ音楽データを流してくれるプレイヤを探さないと行けない。さっそくググってみると raop-play というのが見つかった。GUI であれこれできるみたいだけど、我が家のサーバは純粋にサーバなのでデスクトップ環境無いんだよな〜。で、ドキュメントを良く読んでみると… aexpl という GUI の部分、raop-play という実際のプレイヤ、そして RENDEZVOUS でコミュニケーションを取る部分の3つに分かれるみたいだ。この中のプレイヤの部分である raop-play は直接コマンドラインからでも使える! というわけで、raop-play をインストールしてみることにした。
ファイルは http://raop-play.sourceforge.net/ にある。既に .deb パッケージになっているファイルも用意されているが、いつも通りに i386 用のみだ。というわけでソースファイルを持ってきてパッケージを自分で作ることになる。さっそくダウンロード&展開して raop_play-0.5.1 にディレクトリ移動。とりあえず debchange で PPC 対応を記入しておいた。
paraches@debian:~/myTest$ cd raop_play-0.5.1 paraches@debian:~/myTest/raop_play-0.5.1$ ls CHANGELOG README configure mkinstalldirs sourceforge_logo COPYING aexcl debian raop_play Makefile.in config.h.in drivers rendezvous paraches@debian:~/myTest/raop_play-0.5.1$ debchange -i raop-play (0.5.2) testing; urgency=low * Build for PPC version. -- paraches paraches <paraches@paraches.com> Tue, 30 May 2006 05:00:13 +0900 raop-play (0.5.1) testing; urgency=low * flac is supported. * fixed a problem in the new firmware to detect the end of playing. * "alsa_raoppcm" fixed a busy loop issue of 'artsd' -- Shiro Ninomiya <shiron@snino.com> Fri, 16 Dec 2005 08:00:00 -0700 "debian/changelog.dch" 38L, 1472C 書込み
さて、とりあえずパッケージをビルドしてみよう。
paraches@debian:~/myTest/raop_play-0.5.1$ dpkg-buildpackage -rfakeroot dpkg-buildpackage: source package is raop-play dpkg-buildpackage: source version is 0.5.2 dpkg-buildpackage: source maintainer is paraches paraches <paraches@paraches.com> dpkg-buildpackage: host architecture is powerpc dpkg-checkbuilddeps: Unmet build dependencies: libfltk1.1-dev libsamplerate0-dev dpkg-buildpackage: Build dependencies/conflicts unsatisfied; aborting. dpkg-buildpackage: (Use -d flag to override.)
あ、依存しているパッケージが足りないとちゃんと教えてくれるのね。親切だ! 早速足りないパッケージをインストールしよう。
paraches@debian:~/myTest/raop_play-0.5.1$ sudo apt-get install libfltk1.1-dev libsamplerate0-dev パッケージリストを読みこんでいます... 完了 依存関係ツリーを作成しています... 完了 以下の特別パッケージがインストールされます: libexpat1-dev libfltk1.1c102 libfontconfig1-dev libfreetype6-dev libjpeg62-dev libpng12-dev libx11-dev libxext-dev libxft-dev libxi-dev libxrender-dev libxv-dev render-dev x-dev xlibs-static-dev 提案パッケージ: fltk1.1-doc fluid xspecs 推奨パッケージ: xlibmesa-gl-dev libgl-dev xlibmesa-glu-dev libglu-dev 以下のパッケージが新たにインストールされます: libexpat1-dev libfltk1.1-dev libfltk1.1c102 libfontconfig1-dev libfreetype6-dev libjpeg62-dev libpng12-dev libsamplerate0-dev libx11-dev libxext-dev libxft-dev libxi-dev libxrender-dev libxv-dev render-dev x-dev xlibs-static-dev アップグレード: 0 個、新規インストール: 17 個、削除: 0 個、保留: 0 個。 6136kB のアーカイブを取得する必要があります。 展開後に追加で 20.2MB のディスク容量が消費されます。 続行しますか? [Y/n] <長いので省略> libxft-dev (2.1.7-1) を設定しています ... libfltk1.1-dev (1.1.6-5) を設定しています ...
で、インストールの途中で
って聞かれた。デフォルトが「いいえ」だったので「いいえ」にしておいた。後は特に問題なく終了。
必要なパッケージは入ったので、再度ビルドに挑戦。
paraches@debian:~/myTest/raop_play-0.5.1$ dpkg-buildpackage -rfakeroot dpkg-buildpackage: source package is raop-play dpkg-buildpackage: source version is 0.5.2 dpkg-buildpackage: source maintainer is paraches paraches <paraches@paraches.com> dpkg-buildpackage: host architecture is powerpc fakeroot debian/rules clean dh_testdir dh_testroot rm -f build-stamp configure-stamp /usr/bin/make distclean <長いので省略> gcc -o raop_play -lssl -lsamplerate -lid3tag raop_play.o raop_client.o rtsp_client.o aexcl_lib.o base64.o aes.o m4a_stream.o audio_stream.o wav_stream.o mp3_stream.o flac_stream.o ogg_stream.o aac_stream.o pls_stream.o pcm_stream.o make[2]: Leaving directory `/home/paraches/myTest/raop_play-0.5.1/raop_play' make[2]: Entering directory `/home/paraches/myTest/raop_play-0.5.1/aexcl' : -c aexcl_gui.fl g++ -Wall -D_GNU_SOURCE -I../raop_play -I../rendezvous -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -c aexcl_gui.cxx g++: aexcl_gui.cxx: そのようなファイルやディレクトリはありません g++: no input files make[2]: *** [aexcl_gui.o] エラー 1 make[2]: Leaving directory `/home/paraches/myTest/raop_play-0.5.1/aexcl' make[1]: *** [all] エラー 2 make[1]: Leaving directory `/home/paraches/myTest/raop_play-0.5.1' make: *** [build-stamp] エラー 2
あれ? まだ何か足りないの?
「g++: aexcl_gui.cxx: そのようなファイルやディレクトリはありません」だって。
あ、このエラーって README に書いてあったぞ。
Note: if you see a message like "aexcl_gui.cxx : No such file or directory", you are missing 'fluid'. aexcl_gui.h and aexcl_gui.cxx are generated by 'fluid'.
fluidってのが入ってないのね。で、README にはちゃんと必要なパッケージの一覧があったんだよな〜! ちゃんと読んだことを覚えておいてパッケージのインストールをしないと駄目だな。いっつもなぜか嬉しくていきなりパッケージを作り始めてしまう…
paraches@debian:~/myTest/raop_play-0.5.1$ sudo apt-get install fluid パッケージリストを読みこんでいます... 完了 依存関係ツリーを作成しています... 完了 提案パッケージ: fltk1.1-doc 以下のパッケージが新たにインストールされます: fluid アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。 150kB のアーカイブを取得する必要があります。 展開後に追加で 410kB のディスク容量が消費されます。 取得:1 ftp://ring.hosei.ac.jp stable/main fluid 1.1.6-5 [150kB] 150kB を 0s で取得しました (241kB/s) 未選択パッケージ fluid を選択しています。 (データベースを読み込んでいます... 現在 108500 個のファイルとディレクトリがインストールされています。) (.../fluid_1.1.6-5_powerpc.deb から) fluid を展開しています... fluid (1.1.6-5) を設定しています ...
これで準備 OK!
今度こそちゃんとビルドできるでしょう。
paraches@debian:~/myTest/raop_play-0.5.1$ dpkg-buildpackage -rfakeroot dpkg-buildpackage: source package is raop-play <長いので省略> dh_builddeb dpkg-deb: ../raop-play_0.5.2_powerpc.deb にパッケージ `raop-play' を構築しています dpkg-genchanges dpkg-genchanges: including full source code in upload dpkg-buildpackage: full upload; Debian-native package (full source is included)
というわけで、ビルド完了!
それじゃ早速パッケージのインストールをしましょう。
paraches@debian:~/myTest$ sudo dpkg -i raop-play_0.5.2_powerpc.deb 未選択パッケージ raop-play を選択しています。 (データベースを読み込んでいます... 現在 108626 個のファイルとディレクトリがインストールされています。) (raop-play_0.5.2_powerpc.deb から) raop-play を展開しています... dpkg: 依存関係の問題により raop-play の設定ができません: raop-play は以下に依存(depends)します: mpg321 ...しかし: パッケージ mpg321 はインストールされていません。 raop-play は以下に依存(depends)します: vorbis-tools ...しかし: パッケージ vorbis-tools はインストールされていません。 dpkg: raop-play の読み込みエラーです(--install): 依存関係の問題 - 設定を見送ります。 以下のパッケージの処理中にエラーが発生しました: raop-play
ん? ここに来てエラー出るの? mpg321 と vorbis-tools が無いから入れられないのか。それじゃまずは raop-play を掃除してから必要なパッケージを入れましょう。
paraches@debian:~/myTest$ sudo dpkg -r raop-play (データベースを読み込んでいます... 現在 108633 個のファイルとディレクトリがインストールされています。) raop-play を削除しています... paraches@debian:~/myTest$ sudo apt-get install mpg321 vorbis-tools パッケージリストを読みこんでいます... 完了% 依存関係ツリーを作成しています... 完了% 以下の特別パッケージがインストールされます: libao2 libflac6 libmad0 libogg0 liboggflac1 libvorbis0a libvorbisenc2 libvorbisfile3 提案パッケージ: libartsc0 libasound2 libaudio2 libesd0 libesd-alsa0 以下のパッケージが新たにインストールされます: libao2 libflac6 libmad0 libogg0 liboggflac1 libvorbis0a libvorbisenc2 libvorbisfile3 mpg321 vorbis-tools アップグレード: 0 個、新規インストール: 10 個、削除: 0 個、保留: 0 個。 715kB のアーカイブを取得する必要があります。 展開後に追加で 3092kB のディスク容量が消費されます。 続行しますか? [Y/n] <長いので省略> mpg321 (0.2.10.3) を設定しています ... vorbis-tools (1.0.1-1.3) を設定しています ...
で、再度インストールに挑戦。
今度こそ成功するはず!
paraches@debian:~/myTest$ sudo dpkg -i raop-play_0.5.2_powerpc.deb 未選択パッケージ raop-play を選択しています。 (データベースを読み込んでいます... 現在 108683 個のファイルとディレクトリがインストールされています。) (raop-play_0.5.2_powerpc.deb から) raop-play を展開しています... raop-play (0.5.2) を設定しています ...
というわけで、無事にインストール完了!
ちょこっと触ってみると?
paraches@debian:~/myTest$ raop_play raop_play [--port port_number] [--vol volume(0-100)] [-i interactive mode] server_ip audio_filename paraches@debian:~/myTest$ aexcl_play Can't open display:
うん、raop_play 単体でもちゃんと使えるみたいだ。でも、GUI 付きではやっぱり駄目だね。ま、デスクトップ無いから当たり前だけど。
さて、次は実際に mp3 ファイルを聞いてみよう。mp3 の置いてあるディレクトリに移動してからコマンドを入力。AirMac Express のアドレスは 192.168.1.11 だ。
paraches@debian:~/myMusic$ raop_play 192.168.1.11 ./Honey.mp3 DBG: CSeq: 1 DBG: Apple-Response: PN4iUr/jaEI2sqBk4XPTwBT1mK+nsAIs5Hl1Y+Smj5bFBM6CAziSArzomF0MQr6bez2F0WeEmi1wD7JFTyukmBqhJKvJEDoN5wDp74kJl0V49IhBOBabv/TzhX8yyo5liClP+2xwPz0e6Qz73zHm9Cy0uy+QRHYfPfOy1lGqvsslpUm1ThKmWTQDd7AMz56W3V1Q7B5aZhPIGjqlOQRl3owH2HQjNxqY7yX18MNm+7AKjaGeyQ/qTde0lahmK3F7lBlqYK2sI74ig9nF3KOFJ1XFenf101yLH3yG/HYJq1jZx2JwNSd7/qCsG6PLsSDtXTrK32GtsxNB51edQALMlA DBG: Audio-Jack-Status: connected; type=analog DBG: CSeq: 2 DBG: Session: 80A91010 DBG: Transport: RTP/AVP/TCP;unicast;interleaved=0-1;mode=record;server_port=6001 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: id3 tagsize: 0 DBG: sample rate=44100 High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2, and 3. Version 0.59q (2002/03/23). Written and copyrights by Joe Drew. Uses code from various people. See 'README' for more! THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK! Title : Honey Artist: PUFFY Album : THE VERY BEST OF PUFFY Year : Comment: Genre : Directory: ./ Playing MPEG stream from Honey.mp3 ... MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo [2:45] Decoding of Honey.mp3 finished. done INFO: fd_event_callback: read, disconnected on the other end paraches@debian:~/myMusic$
何やら結構あれこれ画面に出てくるんだ…。ま、曲は問題なく?聞く事ができた。
コマンドを打ち込んでから実際に音がでるまで微妙な間が開くのね。これがチト気持ち悪いかな? あと、ボリュームは省略すると 100% になってるのかな? 音がでかくて驚いた。
これで、プレイリストを作っておいてそれを cron ででも毎朝起動すれば目覚まし時計代わりに使えるぞ!って、でも今はスピーカーはミニコンポ経由なんだよな。ミニコンポのタイマーをセットするなら CD プレイヤが生きている現状ではやっぱり目覚まし時計はミニコンポなんだな〜。