ラベル alsa の投稿を表示しています。 すべての投稿を表示
ラベル alsa の投稿を表示しています。 すべての投稿を表示

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の設定を抜かしていたところ、なんとスピーカ(笑)で無理やり曲を再生し始めた。今にも壊れそうな音で、なんとか再生している様が不気味だった。


2009年3月6日金曜日

pulseaudioでサウンドサーバ

うちのDebian lennyの入ったサーバにpulseaudioをインストールして、サーバに音を鳴らさせてみよう、と思った。最近じゃじゃ馬のpulseaudioを見事懐柔し、上機嫌になっていたのだが、サウンドの合成がやたらと重いことがあるので、ちょっと試しにやってみようと思ったのだ。どうせこのサーバ(toshia.dip.jp)、そんなにアクセスもないから、普段暇をしているし。
# aptitude install pulseaudio
aspell{a} aspell-en{a} avahi-daemon{a} bind9-host{a} dbus{a} dbus-x11{a}
dictionaries-common{a} fontconfig{a} fontconfig-config{a} gconf2{a}
gconf2-common{a} gnome-audio{a} gnome-icon-theme{a}
gstreamer0.10-pulseaudio{a} hal{a} hal-info{a} hicolor-icon-theme{a}
libasound2{a} libasound2-plugins{a} libaspell15{a} libasyncns0{a}
libatk1.0-0{a} libatk1.0-data{a} libavahi-client3{a}
libavahi-common-data{a} libavahi-common3{a} libavahi-core5{a}
libavc1394-0{a} libavcodec51{a} libavutil49{a} libbind9-40{a}
libcairo2{a} libcairomm-1.0-1{a} libcroco3{a} libcups2{a} libdaemon0{a}
libdatrie0{a} libdbus-1-3{a} libdbus-glib-1-2{a} libdirectfb-1.0-0{a}
libdirectfb-extra{a} libdns45{a} libenchant1c2a{a} libfaad0{a}
libflac8{a} libfontconfig1{a} libfreebob0{a} libgconf2-4{a}
libgconfmm-2.6-1c2{a} libglade2-0{a} libglademm-2.4-1c2a{a}
libglib2.0-0{a} libglib2.0-data{a} libglibmm-2.4-1c2a{a} libgsf-1-114{a}
libgsf-1-common{a} libgsm1{a} libgstreamer-plugins-base0.10-0{a}
libgstreamer0.10-0{a} libgtk2.0-0{a} libgtk2.0-bin{a} libgtk2.0-common{a}
libgtkmm-2.4-1c2a{a} libhal-storage1{a} libhal1{a} libhunspell-1.2-0{a}
libice6{a} libidl0{a} libiec61883-0{a} libisc45{a} libisccc40{a}
libisccfg40{a} libjack0{a} libjpeg62{a} libltdl3{a} liblwres40{a}
liblzo2-2{a} libmalaga7{a} libnotify1{a} libnss-mdns{a} libogg0{a}
liboil0.3{a} liborbit2{a} libpango1.0-0{a} libpango1.0-common{a}
libpci3{a} libpixman-1-0{a} libpng12-0{a} libpulse-browse0{a}
libpulse-mainloop-glib0{a} libpulse0{a} libpulsecore5{a} libraw1394-8{a}
librsvg2-2{a} librsvg2-common{a} libsamplerate0{a} libsexy2{a} libsm6{a}
libsmbios-bin{a} libsmbios2{a} libsndfile1{a} libsplashy1{a}
libstartup-notification0{a} libthai-data{a} libthai0{a} libtheora0{a}
libtiff4{a} libts-0.0-0{a} libvoikko1{a} libvorbis0a{a} libvorbisenc2{a}
libwnck-common{a} libwnck22{a} libx86-1{a} libxcb-render-util0{a}
libxcb-render0{a} libxcomposite1{a} libxcursor1{a} libxdamage1{a}
libxfixes3{a} libxft2{a} libxi6{a} libxinerama1{a} libxrandr2{a}
libxrender1{a} libxres1{a} myspell-en-us{a} notification-daemon{a}
padevchooser{a} paman{a} paprefs{a} pavucontrol{a} pavumeter{a}
pciutils{a} pm-utils{a} powermgmt-base{a} psmisc{a} pulseaudio
pulseaudio-esound-compat{a} pulseaudio-module-gconf{a}
pulseaudio-module-hal{a} pulseaudio-module-x11{a}
pulseaudio-module-zeroconf{a} pulseaudio-utils{a} radeontool{a}
ttf-dejavu{a} ttf-dejavu-core{a} ttf-dejavu-extra{a} ucf{a} uswsusp{a}
vbetool{a} x-ttcidfont-conf{a}
なんてことだ。一瞬Xでもインストールされるのかと思ったが、それだったら152個では済まない。一応確認してインストール。
そして、/etc/pulse/default.paの編集。
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24
上記の一行を入れる(実際の追加は太字のみ)。LAN内からのアクセスを許可。
自分のユーザの準備
# usermod -G pulse,pulse-access,pluse-rt toshi
-- 再ログイン --
$ pulseaudio -D
なぜか起動しない。
いろんな文献を漁っていると、どうやらpulseaudioを使っている人はalsaも入れている。とりあえず入れてみた。
# aptitude install alsa-base alsa-utils alsaplayer alsa-conf
この後、なぜかサウンドカードが3つ(!?)検出されたり、/dev/dspが無くなって大変だった。
現在の状況は、なんとか/dev/dspが復活し、echo mikumiku > /dev/dspとかすると音が鳴るようになった。だけど、alsaplayerやpulseaudioを立ち上げると、その瞬間固まる。サーバにキーボードを直接つないでも反応はなく、サービスももちろん反応しない(Webサーバなんだけどな、一応)。でもなぜかalsamixerで音量変えたりは出来る。軽く乗ってるノイズの音量も変わってるし、/dev/dspに直接書き込んだら音鳴ってるし。
解決方法が分かったら書きます・・・。

↓今開いてるタブ

http://d.hatena.ne.jp/kakurasan/20081212/p2
http://d.hatena.ne.jp/kakurasan/20080905/p1
http://mlog.euqset.org/archives/debian-users/43288.html
http://pulseaudio.org/wiki/CLI
http://hide-t.vox.com/library/post/colinx%E3%81%A7pulseaudio.html
http://www1.tcnet.ne.jp/fmurata/linux/alsa.html