2009年12月19日土曜日

Debian LennyにALSA入れて音を鳴らす

Bluetoothのスピーカーがあれば、そのスピーカーだけを持ち運ぶことができるので、端末から離れた状態でも音楽を聞くことができる。また、RubyなどでWeb上からmplayerなどを操作することができるようにしておけば、モバイル端末で曲の再生・停止ができる。これは、傍から見れば、宛らiPhoneでスピーカのWebサーバ(?)にアクセスして、スピーカ内の音楽を(w)再生しているように見えるのではないか。

しかし、GUIすら入っていないサーバでは、普段なら手動でやらない設定をいくつかしなければいけなかったので、それをここに書いておく。

環境
今回は、GUI及びサウンド関係のパッケージやソフトウェアが一切入っていないDebian lennyを使用する。
また、
$ lspci | grep Audio
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 01)

である。

パッケージ
今回は、ALSAを用いて音を出力するため、aptにて主要パッケージを入れる。また、サウンド再生ソフトとしてはmadplayを選択した。これは、コマンドライン上からmp3ファイルを再生するのに特化したソフトで、軽量で依存パッケージも少ない。
# aptitude install madplay alsa-base alsa-utils


ALSAの設定
この段階では、ALSAがサウンドインターフェイスに対する適切なドライバを選択できないのだが、それは自動設定に任せる。本来ならlspciの結果から適切なドライバをコンパイルするところだが、Debianとこのハードウェアなら必要ないらしい。
# alsaconf


カーネルモジュールの有効化
このままでは、私の環境では/dev/dspが見えなかったので、心当たりのあるカーネルモジュールの有効化をしてみる。
# modprobe snd-pcm-oss
# modprobe snd-pcm
# modprobe soundcore


鳴らしてみる
ここまでやって、以下のようにmp3ファイルをパラメータに渡してやると、見事サウンドが鳴った。
$ madplay packaged.mp3

なお、これでならない場合は、上記コマンドをrootユーザで実行するか、実行するユーザがsoundグループに入っている必要がある。

ビープ音を有効にする(2009/12/19追記)
以上の方法でスピーカを使えるようにすると、システムビープを鳴らす方のスピーカ(以下、スピーカ(笑))が鳴らなくなった。これは困るので、以下のように実行してpcspkrを有効にしておく。これで、サウンドボードの方からも、スピーカ(笑)でも発音が可能になる。
# modprobe pcspkr


感想
冷静に考えれば、音を鳴らすような基本的なことはGUIをインストールすれば難なく出来ているわけだから、逆に言えば最初から収録されているパッケージだけでできないはずがない。しかし、今回はステレオミニプラグでの接続だったため問題が簡単だったに過ぎない。次回は、これをbluetooth上で実行する。

おまけ
今回の設定中に、ALSAの設定を抜かしていたところ、なんとスピーカ(笑)で無理やり曲を再生し始めた。今にも壊れそうな音で、なんとか再生している様が不気味だった。


0 件のコメント:

コメントを投稿