2011年10月23日日曜日

linuxサーバー自体をjukeboxにしたい

動画でやろうと思っていたネタですが、Ubuntuのアップデートを行ってみると、権限周りがあれで動画を作っても挑戦する人が躓いてイライラするだけだなぁ。と思って
こっちに作成方法を配置。

何ができるか

  • 音楽を再生することができる。
  • プレイリストを作成・保存することができる。
  • 音量を調整することができる。
Windows Media Playerとかあるけど、あれのGUI無しがMPDと思ってくれたら。
サーバーは常時電源が付いてて、スピーカーをつなげればOKな状態が望ましい。
実際の利用風景は動画のとおり。


Jukeboxをリモコンから操作するイメージです。

何がうれしいのか

  • 音楽だけはPCと関係なく再生、停止することが出来る。(これは他ではまねできない)
  • サーバーのあまったリソースはMPDにまわすことができる(3%くらい - atom)
  • ファイルサーバーと兼用させると簡単にデータの入れ替えと追加ができる。

構築について

段階に分けて書くと。
  1. とりあえず、ハードが認識されているか確認だ。
  2. AlsaMixerでもPaulseAudioでも何でもいい音が出ればいい。
  3. さぁ、MPDのインストールだ。
  4. MPDの設定だ。
というながれで構築は進みます。 順番はどっちでも良いけど、順番が違うとどこまでチェックしたっけ?ってなると思うので順番どおりにいきましょう。(このブログで解説していない部分も当然あります)
というわけで、実際の作業手順を書いていきますね。

作業手順


デバイス認識されている?


私の環境はalsamixerを使用しています。 他のオーディオサーバーでもよいのですが、純粋に入っていたのがそれだったのでalsamixerを利用しているっていうだけです。
serverでいれたひとはもしかするとalsamixer入っていないかも。(手元のubuntu serverで確認すると入っていなかった。)
無かったら入れてください。

alsaとかalsamixerとか入っていたらalsaが入っているので、ここでalsamixerをたたいてみましょう。
正常にalsamixerの画面が出てきたらOKです。
しかし、権限の関係で変更できない場合には、自分のユーザにaudioグループを所属させましょう。
これは、いきなり音を出したときに耳をふっ飛ばさないようにするためです。

alsamixerを起動してもカードが見えない場合は、lspci or lsusbなどでカードを確認しましょう。
例:
luna@tluna:~$ lspci | grep Audio
00:1b.0 Audio device: Intel Corporation System Controller Hub (SCH Poulsbo) HD Audio Controller (rev 06)
無い場合は調べてみましょう。

分かった場合には次のコマンドを利用して音を鳴らしてみましょう。
ecasound -i test.wav -o alsa,hw:0,0
テスト用のファイルは自分で用意してね。 んで、この引数として渡している「hw:0,0」は/proc/asound/cardsって言うところでインデックスされているから確認してね。
普通の人間のパソコンにはサウンドカードは一つしかないと思うけど、複数認識されている場合は上のコマンドでは動かない。

mpdのインストールと権限周りの設定

今度はmpdをインストールします。
ubuntuならsudo aptitude install mpd ncmpcと入れてください。
ncmpcはncursesを利用したmpdクライアントです。 ncursesを知りたい人はncursesを参考にしてください。

インストールしたらmpdの設定をして見ましょう。
mpd.conf
こんな感じで設定をしてください。

設定する項目は適宜変更していただければ問題なく設定は変更できると思います。
1点だけ注意したいのは、再生するときのユーザ位か? あとは、mpdからalsaimxerが触れるように権限がなってるか。とか

完了したらテスト!

設定が完了したら、 ncmpc -h ipaddressとしましょう。 使い方はmanでもみてね。(もうだめだ)