Linux de ジュークボックス!

チャオ!新年最初の挨拶です。今回は Linux マシンをジュークボックスにしてしまおう!という内容です。

ジュークボックスって何?要件はこんな感じ:

  • 大量の楽曲を保持し、それらをランダムにプレイリストにキューイングし続ける
  • ユーザーからリクエストされた曲もプレイリストにキューイングする
  • キューに入ってる音楽を順繰りに再生し、スピーカーをズンドコ鳴らす
  • 再生し終えた曲はキューから削除する
  • 曲をリクエストするための Web UI がある

Google で linux jukebox で検索すると、意外と期待はずれな記事が多いんです。あるいは MPD (Music Player Daemon) に RelaXX Player みたいな Web UI を組み合わるとか。あるいはストリーミングサーバーを作ろうみたいな。MP3 を詰め込んだディレクトリを samba で共有して終わりとか。

とまれかくまれ、Google にて我が意に適う所のジュークボックスソリューションを求め幾度検索すれば、乃ち遂に発見せり。一は DisOrder、一は Otto Audio Jukebox、これなり。

DisOrder は数年以前使ったことがあるので先ず試してみたんですが、どうも今のバージョンは正しく動作しないようです。デーモンは動いてる感じですが、クライアントが利用不能。

なので、新発見した後者の Otto に挑戦してみました。用意したマシンの OS は Debian Lenny です。が、マニュアルどおりにインストールしたところ、音が鳴らない。mpg123 というコマンドを叩いてるだけなのに、何で?色々試したところ、なぜか PulseAudio が必要みたいでした。一応 Otto を利用する上でつまづくポイントをまとめます:

  • PulseAudio が必要。aptitude install pulseaudio を実行し、/etc/default/pulseaudio ファイルの PULSEAUDIO_SYSTEM_START を 1 に変更。/etc/init.d/pulseaudio start を実行
  • Apache ユーザーを適切なグループに所属させる。usermod -G audio,pulse,pulse-access www-data を実行すれば OK
  • ミキサーの音量がゼロになってるかもしれないので、amixer, alsamixer をインストールする;aptitude install alsa-utils を実行する。あとは好きに音量を調節しよう!筆者はミュートになってるのに気づかず、10分くらいハマりました

他にも細かい注意点はありますが、Linux 野郎には言うだけ野暮というものでしょう!

手指発越として幾多の障害を踏過すると、即ち桃源郷に至るのであります。が、カラースキームが気に入りません。真っ黒で見づらい!(参考 http://cardhouse.com/otto/screenshots.html) あと音量の変更が Web UI でできたらいいな!

ということで、ちょっといじってこんな感じになりました:

画像

画像

音量の変更は画面上方のスピーカーアイコンをクリックして行います。Google で volume icon で検索して最初に出てきたやつを加工しました。当初音量変更用の php スクリプトで要求を受け付けて、リファラーに転送すればいいかと思ったんですが、フレームバリバリの古式ゆかしい作りのせいか、うまくいきませんでした。なので、今風に Ajax にしてみました。これでバッチリです。

カラースキームは css をいじってます。白黒反転させただけです。しかし Otto の最新版がリリースされた 2002 年当時、すでに css があったんですね。筆者は 1999 年ごろインターネットデビューしましたが、当時は css なんてなかった気がします。レイアウトは何でもかんでもフレームとテーブルを駆使するのが常識でした。この Otto はテーブル、フレーム、css のちゃんぽんです。カオス。

以下差分です。まず tmpl ディレクトリ:

begin-base64 644 tmpl.patch.gz
H4sICKGi71AAA3RtcGwucGF0Y2gA1Vpdc9o4FH3e/AqNd2ZpSwi2gTShwISAE5glkAFvO33qOFiA
U2Oztmk2/36vLBvkLyS3293ZPGBbPjpXupKO7pVzZ9nYR8F2Z9frxjKwXOfPPd7jC1KCDMdE9b3v
1W13adh1NwjcehHUw8gysRNYgDy7Y1lN07b8YOV6Wy5rBlrM6gWAxI7J5UwBOYxWgPnNTCM5nDu4
qGKkLJTD6gdwFWNloQlW01qtUG26925j7ifDcbBHsfmUDOKsVqtl6/2iyrJaU5SafInkRrv1vi1f
XcjxH6rK17J8Vq1W+fzApDRqsgJkSFHbzet2M8t0c4NqjfP3qEp+bm7OEPnr6EM0mE0Wj/1pV2pI
PVoK5eOHe7SYD7pSR394nHz52J+jaf9B61asrbHGnusGlV59aWPDu1hbKwn1J3pXktBIG9+P4O5K
Qp/GQ33UlRSG9HbeO6tF9300mmt3WX7Sw427xZWehPT+/F4Dti+Bu5N6Ym06vtMWg/4jvB3pD5NK
hKROC/HEwAg6PtC60rWEPka3atSX0zwwq+2Q4XY2H2rzriRD++r93ln1e7uH/ODVxtBC1zOx10aO
6wDof9Fn2uO6Pgxv4WZOb8iVzDrl6vwSVeFXkQ8TD6HfnCd/9yH6/VVpXn9gSw5zJuvIvLY5+MW3
Lefr3rNzJo5QVccgo3LsEOkIqTe+O4wqp8nx2FvbNfK9ZVeiy9V3VwEs1J2zltCLZQYbcHhTQhts
rTcBvTdsuKE4CbnO0raWX7vSN9feb/GbiomXHjZ8XHkr9YqM2O7eFDFCcTlGLCfHiL8zHJDBGEXG
mxQVDDlc+rcTrZcQYWzCtCHaypPgNLBQ1ldGYNjY81yPR5lBFnPC/d4Bzxj2037rC+yXhTVEbZB9
keuUE3VE7Qjtfyfq8O2U8VYZPwGWGw7kgfnM5Xxfzuvl/C3madd7skx4xaVNATlBDNmIToUwh/dM
AHMoO4YvDaRA+NJoy2qJ8IXliYIXGSlX7UarLcu5wYty3oRdBH5gD6l17uag3gtNR/PZpwVve6Bb
IBXDSu/8XSdS9vg1add25YU7wLnSko/Sz+52KLQZPztuqkAmwvkT2/UDzSIaHRbmxxLLtRVFErRB
Ei2X4qcH2E7H0zi2k+OCKMIrZSBMhWL+6CFJr6T5FWrglG8Sq8VyVi5voTCYwlX37C89a8ddyklY
IZsdZlfYs901jzEL5bJyxSwNPMkoxMZl2mLfh5iTx5WE8di4TUvhOAroGN+ejJNpHINgVJApTehg
s91UIJMroYNJJjaNa6lt9TI/jVOvSURNLorKhNTHP8jreqej1Sh4+4WtkeX50QA8tWgJarW37V2Y
i5DonAK0yULrmTgwLNtnRK505E47Vf1eb1ST3sjw/Eux/SmDPyXOTxgsjPmzbk1OISZfygLnqcI4
Vwg5KBG72mFosc+V3gSqUDnINBFg4uoZmbRfBGLdFI6jQCGaiQJPcB5RjBKl3kRqJNfUK3KopLTa
aquEGmXZjoqktBtykSIpzTDFb0ZHS50HTe9Hm/xX/PrieqYvocFsqmtTUAVi0Hgmu3pnMp7+jvTP
sLSlAP8V1Jc+AOfaBJYMOQ/xNxgHkpACQU1QHsKZ1JwwRPAxBB+M1qQwsChsWC/RVh4jx9PB5I+h
FmHYfZ6oTTzZ2WOCDsWg4HWHow49G98MWiqx65gurotnP1xf4fswgx5p/aFoH25nw8/5Hdka3tpy
wB9Inz3SYIoGVhPtTmefmSiSF+QxPT7tPDSbTmb9YVeyHCt48/YDU5MeEsTuSiwu23gNc8+l66ws
/hF4Ab548QKeRC0ivAyOy9e4bIlSHqGFrELfFAq/JmTFxcMA9k8qCwthZIUt/sFML0WVSPaabbUo
2QNEVYmPDNNp1aV8/u6fyoFyxeSQsND4LM5Y4qfFYD6bgHbdU2P8BKmGmD6QE3fYqxvlO1Hl0jRS
tV6xn++MMu6gn0dCFYoCPOoOWi7Yf5QZxXeQayvlPcAlKuGDMl6IAtSsG6IXPD80D474vqnIfEw8
DEBYlDbcyhmA6n9gt3WYafV4wKLz4uTjdEafk1uCjw1vuRE+kM2HF0otCxc6DiyqIGRB6FCwqALP
Av12Ke6iNF6Mv4yTsjXEbJRxU7YGx4bvOmtxL6XQItwlPJTBi/CX8E4GX8y/cV9ssX8RyEK5rGIu
yQFzmcWckQNOMP8N3Tkl59chAAA=
====

次に www ディレクトリ:

begin-base64 644 www.patch.gz
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
====

ではまた次回。

(コウヅ)

 

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中