FAQ/62
の編集
http://plamo.linet.gr.jp/?FAQ/62
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
-- 雛形とするページ --
diary/Template
#navi(FAQ) カテゴリー: ハードウェア対応 * サウンドモジュールの選び方を教えてください./ 音を鳴らしたいのですが,どうすればいいですか? [#odc72d41] RIGHT:2005-04-24 07:09:32 (日)投稿 RIGHT:登録者: Plamodocs Project ---- まず,マシンにサウンドカードが載っている,のが大前提になりますが,ほとんどのセットアップ PC なら間違いなく載っているでしょう.自作機の場合は,いわずもがなですね. マシンのサウンドカードは,どんなチップ/サウンドコントローラを使っているのか? を調べるには,/sbin/lspci コマンドを使います.~ lspci は,PCI バスに接続されているすべてのデバイス情報を出力します.~ PCI バス接続のサウンドボードや,マザーボード上に組み込みで載っているものなら,これで調べることができます.(ISA バス接続については,ここでは触れません.) /sbin/lspci はユーザでも実行できますから,コンソールや X 上の kterm などで,次のように入力します.(~$ は bash のユーザプロンプトです.) ~$ /sbin/lspci 出力された内容から,audio,Multimedia,sound,といった単語が含まれている行を確かめてください.それがあなたのマシンのサウンドチップ/コントローラの情報です. サウンドチップ/コントローラがわかったら,次に,それに対応するサウンド・ドライバ・モジュールをロードすれば音が鳴るわけですが,ここが難点かもしれません.~ plamo をインストールした時点での kernel の場合,サウンド関係のドライバ類は,ほとんどのものがモジュールとして組み込まれていますので,よほど特殊なカードを除いて, カーネルの再構築をしなくても認識されるはずです. ここで紹介するスクリプトは,/sbin/lspci -n の結果から,対応するサウンドモジュールを自動的に決定するものです.~ このスクリプトは,plamo 4.0 以降のバージョンに実装されています.複数のカードには対応していないことと, ALSA(Advanced Linux Sound Architecture)と OSS(Open Sound System,カーネルソースに最初から入っているサウンドモジュール) というように同じカードに対する複数のドライバがあった場合を使い分けられない,といった制限はあるものの,それ以外であれば自動的に適切なサウンドモジュールを選択してくれます. ※ 複数のカード/複数のドライバ対応については,plamo-ML の記事,[[ [plamo:21865]>http://www.linet.gr.jp/ML/plamo/200401/msg00273.html]] を参照してください. スクリプトの内容は以下の通りです.~ (plamo 4.0 以降のバージョンに実装されているものは,自動的にモジュールのロードまで行なうようになっていますが, ここでは,モジュール名を出力するところまでで終了しています.) #!/bin/sh vers=`uname -r` v_id="0x0000"`/sbin/lspci -n | grep 0401 | gawk '{print $4}' | cut -f 1 -d ':' | head -1` p_id="0x0000"`/sbin/lspci -n | grep 0401 | gawk '{print $4}' | cut -f 2 -d ':' | head -1` mod=`grep $v_id /lib/modules/$vers/modules.pcimap | grep $p_id | head -1 | gawk '{print $1}'` echo $mod さて,このスクリプトの使い方は 2 種類あります.~ それぞれの実行の結果は,便宜的に i810_audio と出力されたと仮定します.~ この例では,plamo をインストールした直後に実行することを想定していますので,OSS のドライバを検知する結果になります.~ ただし,plamo-4.x シリーズでは 標準で ALSA を使うようになっています.~ (ALSA をインストールした場合は,モジュール名が snd-intel8x0 と異なったものになります. ALSA には,サウンドカード毎の設定情報もあります.) +スクリプトをファイルに書いて,そのファイルを実行する方法.~ vi や Emacs を使える場合は,それらを使って上記の内容を書き込み,仮にsnd-module.sh という名前で,ホームディレクトリに保存したとします.~ 一字一句,スペースなども間違えてはいけませんので,できれば一行毎にコピー&ペーストしたほうが確実です.~ (vi や Emacs の使い方は,情報がいたるところにありますから,自分で調べたほうが身につくでしょう.)~ kterm やコンソール上で cat コマンドを使って書き込むこともできますが,その方法も調べてみてください.~ 次に,以下のコマンドで snd-module.sh に実行属性をつけます. ~$ chmod +x snd-module.sh 最後に次のように実行します. ~$ ./snd-module.sh i810_audio ~$ +ファイルに書き出さず,スクリプトをそのまま実行する方法.~ このスクリプトを一度実行してどのモジュールを使うかわかれば,あとは必要ない,と思えば,この方法でもかまわないでしょう.~ 上記スクリプトの 2 行目から,順次 kterm やコンソールに次のように入力していきます. ~$ vers=`uname -r` ~$ v_id="0x0000"`/sbin/lspci -n | grep 0401 | gawk '{print $4}' | cut -f 1 -d ':' | head -1` 以下同じようにスクリプトの 4 行目,次に 5 行目を入力します. 最後に下記のように 6 行目を入力します. ~$ echo $mod i810_audio ~$ これで,どのモジュールを使えばいいのかもわかりました.~ このように出力された場合は,i810_audio がモジュール名ですから,root になり次のコマンドを使ってモジュールをロードします. ~$ su Password: ~# /sbin/modprobe i810_audio modprobe を実行後,なにもメッセージが出ないで通常のプロンプト(~#)に戻れば,マシンに装着されているサウンドカードに対応したモジュールがロードされたことになります. &aname(alsa-cfg);※ 参考までに,ALSA を使っている場合は,以下のコマンドを順次実行します.$mod には,上記のスクリプトを実行した結果,出力されるモジュール名を入力します. ~# /sbin/modprobe $mod ~# /sbin/modprobe soundcore ~# /sbin/modprobe snd-mixer-oss ~# /sbin/modprobe snd-pcm-oss ~# /sbin/modprobe snd-seq-oss ~# /usr/bin/aumix -q -v85 -w88 ※ これも参考までに,モジュールをロードするコマンドとしては他に /sbin/insmod もあります.~ (実際のところ,moprobe は insmod へのリンクになっています.) モジュールをアンロードするコマンドは,/sbin/rmmod です. もし,以下のようなエラーメッセージが出る場合は,正しいモジュールを選択していないことになります. ~# /sbin/modprobe i810_audio /lib/modules/2.4.22/kernel/drivers/sound/i810_audio.o: init_module: No such device Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters. You may find more information in syslog or the output from dmesg /lib/modules/2.4.22/kernel/drivers/sound/i810_audio.o: insmod /lib/modules/2.4.22/kernel/drivers/sound/i810_audio.o failed エラーメッセージがでなければ,ここで次のコマンドを使ってモジュールがロードされているか確かめてみましょう. ~$ /sbin/lsmod lsmod の出力に,i810_audio と soundcore (ac97_codec もでているかも知れません)があれば間違いなくロードされています. 以上で音をだす準備は終了です.では,実際に音がでるか確かめてみましょう.スピーカーのボリュームをあげるのを忘れないでください.~ plamo を「お勧め」でインストールした場合なら,esdplay という wav や au といったサウンドファイルを再生するプログラムがインストールされているはずですから, 次のコマンドで,所在を確かめておきます.~ plamo-4.x シリーズでは aplay もあります. ~$ which esdplay /usr/bin/esdplay このように出力されれば,/usr/bin/ 以下に esdplay があります. which: no esdplay in (/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/netpbm:/usr/openwin/bin:/usr/games/bin:/usr/games:/usr/games) と出力された場合は,インストールされていませんので, Plamo-3.x/contrib/WM/Enlightenment/esound.tgz を[[インストール>FAQ/47]] してください. Plamo-3.x/contrib/Sound/ 内には,他にも xmms.tgz や sox.tgz, mpg123.tgz 等々のサウンド関係のパッケージがありますので, Plamo-3.x/contrib/Sound/diskso1 を読んで必要なものがあればインストールすればいいでしょう. サウンドファイルは,/usr/X11R6/lib/X11/afterstep/sounds/ 内に au ファイルがありますし,KDE もインストールした場合は,/opt/kde/share/sounds/ 内に wav ファイルがあります. では次のコマンドのように,どれか適当な au や wav ファイルを使って,実際に音を鳴らしてみましょう. ~$ esdplay /usr/X11R6/lib/X11/afterstep/sounds/gong.au ~$ esdplay /opt/kde/share/sounds/KDE_Startup_new.wav 音がでたなら,次は,plamo の起動時には自動的にサウンドモジュールをロードするように設定しておきましょう.~ 基本的には,起動時にサウンドモジュールをロードする設定は,/etc/rc.d/rc.modules に追加します.~ kmod の機能を使って,サウンド関係のデバイスを使用する時には,対応するサウンドモジュールを自動的にロードするように設定するには,/etc/modules.conf にモジュール情報を追加します. --/etc/rc.d/rc.modules に設定する.~ root になって,vi や Emacs などエディタを使い,直接次の行を書き込みます. 書き込む位置は, # Sound support: と書いてある行の下の適当な場所がいいでしょう. /sbin/modprobe i810_audio ※ ALSA の場合は,[[上記の参考の内容>#alsa-cfg]] をすべて書き込みます. エディタを使わずに,コマンドラインから入力するには,次のようにします. ~$ su Password: ~# echo '/sbin/modprobe i810_audio' >> /etc/rc.d/rc.modules この場合は,/etc/rc.d/rc.modules の最下行に追加されます. --/etc/modules.conf に設定する.~ root になって,vi や Emacs などエディタを使い,直接次の行を書き込みます.書き込む位置は別にどこでもかまいません.~ サウンドカードが一枚しか載っていないなら,char-major-14 は,sound-slot-0 でもかまいません.(sound-slot-0 は一枚目のサウンドカードを指します.) alias char-major-14 i810_audio または, alias sound-slot-0 i810_audio エディタを使わずに,コマンドラインから入力するには,次のようにします. ~$ su Password: ~# echo 'alias char-major-14 i810_audio' >> /etc/modules.conf または, ~# echo 'alias sound-slot-0 i810_audio' >> /etc/modules.conf この場合は,/etc/modules.conf の最下行に追加されます. ※ 参考までに,ALSA の場合は,[[上記の参考の内容>#alsa-cfg]] に従って次のように書きます.$mod はモジュール名です. alias char-major-116 snd alias char-major-14 soundcore alias snd-card-0 $mod post-install snd-card-0 alsactl restore alias sound-slot-0 snd-card-0 alias sound-service-0-0 snd-mixer-oss alias sound-service-0-1 snd-seq-oss alias sound-service-0-3 snd-pcm-oss alias sound-service-0-8 snd-seq-oss alias sound-service-0-12 snd-pcm-oss 最後に /etc/rc.d/rc.modules や /etc/modules.conf を編集した場合は,depmod -a コマンドを実行して,モジュールの依存関係情報を更新します. ~$ su Password: ~# /sbin/depmod -a /etc/modules.conf を編集した場合は,depmod -a を実行すれば,上記の esdplay を使ってすぐに音が鳴ります.~ /etc/rc.d/rc.modules を編集した場合は,depmod -a を実行した後に,次のコマンドを実行すると,esdplay を使って音が鳴ります. ~# /etc/rc.d/rc.modules restart なお,一般的な /etc/modules.conf の説明や,ALSA のドライバモジュールについては, [[ [plamo:19717]>http://www.linet.gr.jp/ML/plamo/200307/msg00213.html]] を参考にしてください.ALSA で音の設定が保存できず,再起動すると音が鳴らない場合は,[[6. alsactl コマンド>http://plamo-linux.jp/I810/i810.html]] を参考にしてください. ---- この件に関して追加情報などありましたら、以下にどうぞ; #navi(FAQ)
タイムスタンプを変更しない
#navi(FAQ) カテゴリー: ハードウェア対応 * サウンドモジュールの選び方を教えてください./ 音を鳴らしたいのですが,どうすればいいですか? [#odc72d41] RIGHT:2005-04-24 07:09:32 (日)投稿 RIGHT:登録者: Plamodocs Project ---- まず,マシンにサウンドカードが載っている,のが大前提になりますが,ほとんどのセットアップ PC なら間違いなく載っているでしょう.自作機の場合は,いわずもがなですね. マシンのサウンドカードは,どんなチップ/サウンドコントローラを使っているのか? を調べるには,/sbin/lspci コマンドを使います.~ lspci は,PCI バスに接続されているすべてのデバイス情報を出力します.~ PCI バス接続のサウンドボードや,マザーボード上に組み込みで載っているものなら,これで調べることができます.(ISA バス接続については,ここでは触れません.) /sbin/lspci はユーザでも実行できますから,コンソールや X 上の kterm などで,次のように入力します.(~$ は bash のユーザプロンプトです.) ~$ /sbin/lspci 出力された内容から,audio,Multimedia,sound,といった単語が含まれている行を確かめてください.それがあなたのマシンのサウンドチップ/コントローラの情報です. サウンドチップ/コントローラがわかったら,次に,それに対応するサウンド・ドライバ・モジュールをロードすれば音が鳴るわけですが,ここが難点かもしれません.~ plamo をインストールした時点での kernel の場合,サウンド関係のドライバ類は,ほとんどのものがモジュールとして組み込まれていますので,よほど特殊なカードを除いて, カーネルの再構築をしなくても認識されるはずです. ここで紹介するスクリプトは,/sbin/lspci -n の結果から,対応するサウンドモジュールを自動的に決定するものです.~ このスクリプトは,plamo 4.0 以降のバージョンに実装されています.複数のカードには対応していないことと, ALSA(Advanced Linux Sound Architecture)と OSS(Open Sound System,カーネルソースに最初から入っているサウンドモジュール) というように同じカードに対する複数のドライバがあった場合を使い分けられない,といった制限はあるものの,それ以外であれば自動的に適切なサウンドモジュールを選択してくれます. ※ 複数のカード/複数のドライバ対応については,plamo-ML の記事,[[ [plamo:21865]>http://www.linet.gr.jp/ML/plamo/200401/msg00273.html]] を参照してください. スクリプトの内容は以下の通りです.~ (plamo 4.0 以降のバージョンに実装されているものは,自動的にモジュールのロードまで行なうようになっていますが, ここでは,モジュール名を出力するところまでで終了しています.) #!/bin/sh vers=`uname -r` v_id="0x0000"`/sbin/lspci -n | grep 0401 | gawk '{print $4}' | cut -f 1 -d ':' | head -1` p_id="0x0000"`/sbin/lspci -n | grep 0401 | gawk '{print $4}' | cut -f 2 -d ':' | head -1` mod=`grep $v_id /lib/modules/$vers/modules.pcimap | grep $p_id | head -1 | gawk '{print $1}'` echo $mod さて,このスクリプトの使い方は 2 種類あります.~ それぞれの実行の結果は,便宜的に i810_audio と出力されたと仮定します.~ この例では,plamo をインストールした直後に実行することを想定していますので,OSS のドライバを検知する結果になります.~ ただし,plamo-4.x シリーズでは 標準で ALSA を使うようになっています.~ (ALSA をインストールした場合は,モジュール名が snd-intel8x0 と異なったものになります. ALSA には,サウンドカード毎の設定情報もあります.) +スクリプトをファイルに書いて,そのファイルを実行する方法.~ vi や Emacs を使える場合は,それらを使って上記の内容を書き込み,仮にsnd-module.sh という名前で,ホームディレクトリに保存したとします.~ 一字一句,スペースなども間違えてはいけませんので,できれば一行毎にコピー&ペーストしたほうが確実です.~ (vi や Emacs の使い方は,情報がいたるところにありますから,自分で調べたほうが身につくでしょう.)~ kterm やコンソール上で cat コマンドを使って書き込むこともできますが,その方法も調べてみてください.~ 次に,以下のコマンドで snd-module.sh に実行属性をつけます. ~$ chmod +x snd-module.sh 最後に次のように実行します. ~$ ./snd-module.sh i810_audio ~$ +ファイルに書き出さず,スクリプトをそのまま実行する方法.~ このスクリプトを一度実行してどのモジュールを使うかわかれば,あとは必要ない,と思えば,この方法でもかまわないでしょう.~ 上記スクリプトの 2 行目から,順次 kterm やコンソールに次のように入力していきます. ~$ vers=`uname -r` ~$ v_id="0x0000"`/sbin/lspci -n | grep 0401 | gawk '{print $4}' | cut -f 1 -d ':' | head -1` 以下同じようにスクリプトの 4 行目,次に 5 行目を入力します. 最後に下記のように 6 行目を入力します. ~$ echo $mod i810_audio ~$ これで,どのモジュールを使えばいいのかもわかりました.~ このように出力された場合は,i810_audio がモジュール名ですから,root になり次のコマンドを使ってモジュールをロードします. ~$ su Password: ~# /sbin/modprobe i810_audio modprobe を実行後,なにもメッセージが出ないで通常のプロンプト(~#)に戻れば,マシンに装着されているサウンドカードに対応したモジュールがロードされたことになります. &aname(alsa-cfg);※ 参考までに,ALSA を使っている場合は,以下のコマンドを順次実行します.$mod には,上記のスクリプトを実行した結果,出力されるモジュール名を入力します. ~# /sbin/modprobe $mod ~# /sbin/modprobe soundcore ~# /sbin/modprobe snd-mixer-oss ~# /sbin/modprobe snd-pcm-oss ~# /sbin/modprobe snd-seq-oss ~# /usr/bin/aumix -q -v85 -w88 ※ これも参考までに,モジュールをロードするコマンドとしては他に /sbin/insmod もあります.~ (実際のところ,moprobe は insmod へのリンクになっています.) モジュールをアンロードするコマンドは,/sbin/rmmod です. もし,以下のようなエラーメッセージが出る場合は,正しいモジュールを選択していないことになります. ~# /sbin/modprobe i810_audio /lib/modules/2.4.22/kernel/drivers/sound/i810_audio.o: init_module: No such device Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters. You may find more information in syslog or the output from dmesg /lib/modules/2.4.22/kernel/drivers/sound/i810_audio.o: insmod /lib/modules/2.4.22/kernel/drivers/sound/i810_audio.o failed エラーメッセージがでなければ,ここで次のコマンドを使ってモジュールがロードされているか確かめてみましょう. ~$ /sbin/lsmod lsmod の出力に,i810_audio と soundcore (ac97_codec もでているかも知れません)があれば間違いなくロードされています. 以上で音をだす準備は終了です.では,実際に音がでるか確かめてみましょう.スピーカーのボリュームをあげるのを忘れないでください.~ plamo を「お勧め」でインストールした場合なら,esdplay という wav や au といったサウンドファイルを再生するプログラムがインストールされているはずですから, 次のコマンドで,所在を確かめておきます.~ plamo-4.x シリーズでは aplay もあります. ~$ which esdplay /usr/bin/esdplay このように出力されれば,/usr/bin/ 以下に esdplay があります. which: no esdplay in (/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/netpbm:/usr/openwin/bin:/usr/games/bin:/usr/games:/usr/games) と出力された場合は,インストールされていませんので, Plamo-3.x/contrib/WM/Enlightenment/esound.tgz を[[インストール>FAQ/47]] してください. Plamo-3.x/contrib/Sound/ 内には,他にも xmms.tgz や sox.tgz, mpg123.tgz 等々のサウンド関係のパッケージがありますので, Plamo-3.x/contrib/Sound/diskso1 を読んで必要なものがあればインストールすればいいでしょう. サウンドファイルは,/usr/X11R6/lib/X11/afterstep/sounds/ 内に au ファイルがありますし,KDE もインストールした場合は,/opt/kde/share/sounds/ 内に wav ファイルがあります. では次のコマンドのように,どれか適当な au や wav ファイルを使って,実際に音を鳴らしてみましょう. ~$ esdplay /usr/X11R6/lib/X11/afterstep/sounds/gong.au ~$ esdplay /opt/kde/share/sounds/KDE_Startup_new.wav 音がでたなら,次は,plamo の起動時には自動的にサウンドモジュールをロードするように設定しておきましょう.~ 基本的には,起動時にサウンドモジュールをロードする設定は,/etc/rc.d/rc.modules に追加します.~ kmod の機能を使って,サウンド関係のデバイスを使用する時には,対応するサウンドモジュールを自動的にロードするように設定するには,/etc/modules.conf にモジュール情報を追加します. --/etc/rc.d/rc.modules に設定する.~ root になって,vi や Emacs などエディタを使い,直接次の行を書き込みます. 書き込む位置は, # Sound support: と書いてある行の下の適当な場所がいいでしょう. /sbin/modprobe i810_audio ※ ALSA の場合は,[[上記の参考の内容>#alsa-cfg]] をすべて書き込みます. エディタを使わずに,コマンドラインから入力するには,次のようにします. ~$ su Password: ~# echo '/sbin/modprobe i810_audio' >> /etc/rc.d/rc.modules この場合は,/etc/rc.d/rc.modules の最下行に追加されます. --/etc/modules.conf に設定する.~ root になって,vi や Emacs などエディタを使い,直接次の行を書き込みます.書き込む位置は別にどこでもかまいません.~ サウンドカードが一枚しか載っていないなら,char-major-14 は,sound-slot-0 でもかまいません.(sound-slot-0 は一枚目のサウンドカードを指します.) alias char-major-14 i810_audio または, alias sound-slot-0 i810_audio エディタを使わずに,コマンドラインから入力するには,次のようにします. ~$ su Password: ~# echo 'alias char-major-14 i810_audio' >> /etc/modules.conf または, ~# echo 'alias sound-slot-0 i810_audio' >> /etc/modules.conf この場合は,/etc/modules.conf の最下行に追加されます. ※ 参考までに,ALSA の場合は,[[上記の参考の内容>#alsa-cfg]] に従って次のように書きます.$mod はモジュール名です. alias char-major-116 snd alias char-major-14 soundcore alias snd-card-0 $mod post-install snd-card-0 alsactl restore alias sound-slot-0 snd-card-0 alias sound-service-0-0 snd-mixer-oss alias sound-service-0-1 snd-seq-oss alias sound-service-0-3 snd-pcm-oss alias sound-service-0-8 snd-seq-oss alias sound-service-0-12 snd-pcm-oss 最後に /etc/rc.d/rc.modules や /etc/modules.conf を編集した場合は,depmod -a コマンドを実行して,モジュールの依存関係情報を更新します. ~$ su Password: ~# /sbin/depmod -a /etc/modules.conf を編集した場合は,depmod -a を実行すれば,上記の esdplay を使ってすぐに音が鳴ります.~ /etc/rc.d/rc.modules を編集した場合は,depmod -a を実行した後に,次のコマンドを実行すると,esdplay を使って音が鳴ります. ~# /etc/rc.d/rc.modules restart なお,一般的な /etc/modules.conf の説明や,ALSA のドライバモジュールについては, [[ [plamo:19717]>http://www.linet.gr.jp/ML/plamo/200307/msg00213.html]] を参考にしてください.ALSA で音の設定が保存できず,再起動すると音が鳴らない場合は,[[6. alsactl コマンド>http://plamo-linux.jp/I810/i810.html]] を参考にしてください. ---- この件に関して追加情報などありましたら、以下にどうぞ; #navi(FAQ)
テキスト整形のルールを表示する