[Back]

ALSAドライバによるサウンド設定

Let's note(CF-S21)にLinuxを入れてサウンドを出すための設定をまとめました。サウンドドライバはAdvanced Linux Sound Architecture(ALSA)を使用しました(以前、カーネル付属のOSSFreeで、何故かmpeg3がならないのでALSAを使っている...)。

ちなみに、99/11/28現在の私の環境は以下の通り。

デストリビュージョン
Slackware-7.0
カーネルバージョン
2.2.13
コンパイラ
egcs-2.91.66
ALSAドライバ
alsa-driver-0.4.1f2
ALSAライブラリ
alsa-lib-0.4.1e
ALSAユーティリティ
alsa-utils-0.4.1
alsaconf
alsaconf-0.4.2


ALSAソースの入手

まずは、ALSAからソースを入手します。

ALSAドライバ
alsa-driver-x.y.z
ALSAライブラリ
alsa-lib-x.y.z
ALSAユーティリティ
alsa-utils-x.y.z
ALSA設定ツール
alsaconf-x.y.z
(x,y,zは、バージョン番号)


カーネルの設定

ALSAを作る前にカーネルでSoundを使うようになっているか確認します。カーネルコンパイル時に"Sound card support"で"Y"を指定します(CONFIG_SOUND=y)。ただし、以降聞かれる使用するカード、ドライバに関する設定は全て"N"を指定します。

bash-2.03$ grep CONFIG_SOUND= /usr/src/linux/.config 
CONFIG_SOUND=y
# cd /usr/src/linux
# make config
("Sound card support"で"Y"を指定する。以降全て"N"を指定する。)
# make dep; make clean
# make bzImage
# make modules
# make modules_install
# cp arch/i386/boot/bzImage /vmlinuz
# rdev -R /vmlinuz
# cp System.map /boot/.
# sync; sync; sync
# lilo
# shutdown -r 0


ALSAドライバの作成

ALSAドライバのソースを展開してコンパイルします。コンパイルが終了したらインストールを行い、snddevicesスクリプトでデバイスファイルを作ります。

# tar zxvf alsa-driver-0.4.1f2.tar.gz
# cd alsa-driver-0.4.1f2
# ./configure
# make
# make install
# ./snddevices

次に、/etc/modules.confにデバイス、カード情報を設定します。この設定は、alsaconfを用いて行います。

# tar zxvf alsaconf-0.4.2.tar.gz
# cd alsaconf-0.4.2
# alsaconf
(画面の指示に従い、カードの種類、IRQ、DMA等の設定を行います。)
Select Card              : 8: SoundBlaster_1.0
Card identifier          : CARD_1
IO port                  : 0x220
IRQ                      : 5
8-bit DMA                : 1
Max. 8-bit DMA size in KB: 64

Let'sNote(CF-S21)では、/etc/modules.confに以下の設定が追加されました。

# --- BEGIN: Generated by ALSACONF, do not edit. ---
# --- ALSACONF verion 0.4.2 ---
alias char-major-116 snd
alias char-major-14 soundcore
alias snd-card-1 snd-card-sb8
alias sound-slot-1 snd-card-1
alias sound-service-1-0 snd-mixer-oss
alias sound-service-1-1 snd-seq-oss
alias sound-service-1-3 snd-pcm1-oss
alias sound-service-1-12 snd-pcm1-oss
options snd snd_major=116 snd_cards_limit=1 snd_device_mode=0666 snd_device_gid=0 snd_device_uid=0
options snd-card-sb8 snd_index=1 snd_id=CARD_1 snd_port=0x220 snd_irq=5 snd_dma8=1 snd_dma8_size=64
# --- END: Generated by ALSACONF, do not edit. ---

設定ファイルの設定が終了したら、以下のコマンドを実行してALSAドライバをカーネルにロードします。以下のコマンドは、/etc/rc.d/rc.modulesに追加しておくとよいでしょう。

# modprobe snd-card-sb8
(sb8の部分は、カードの種類により異なります。)

カードが認識されていれば以下のように情報が見えます。

$ cat /proc/asound/cards 
0 [CARD_1         ]: SB - Sound Blaster Pro
                     Sound Blaster Pro at 0x220, irq 5, dma 1

ALSAライブラリとユーティリティの作成

アプリケーションでALSAドライバを使うためALSAライブラリをコンパイルしてインストールします。

# tar zxvf alsa-lib-0.4.1e.tar.gz
# cd alsa-lib-0.4.1e
# ./configure
# make
# make install

ミキサーとサウンド再生ツール等が含まれているALSAユーティリティをコンパイルしてインストールします。

# tar zxvf alsa-util-0.4.2.tar.gz
# cd alsa-util-0.4.2
# ./configure
# make
# make install

ALSAの音量設定がデフォルトでは、0なので、ミキサーで設定します。xamixer2を実行します。

[xamixer2]


mpg3の再生

mpg3を再生するため、mpg123を作ります。

# tar zxvf mpg123-0.59r.tar.gz # cd mpg123-0.59r # make linux-alsa # make install

再生方法は、以下の通り。

$ mpg123 -2 /tmp/love.mp3


MIDIの再生

MIDIの再生には、TiMidi++-2.8.0を使いました。以下の通りコンパイルとインストールします。

./configure --enable-audio=alsa --with-default-output=alsa \
            --with-x --enable-audio --enable-ncurses --enable-tcltk \
            --enable-gtk --enable-network --enable-spectrogram
$ make
$ su
# make install

MIDIの再生には、パッチが必要です。ここでいうパッチとは、ピアノとかバイオリンとか音源の定義が書かれているファイルのことです。私は、guspat-APR-11-1998を持って来てインストールしました(サイズがでかい!)。

# cd /usr/local/share
# tar zxvf guspat-APR-11-1998.tar.gz

timidity.cfgのパスが、/usr/local/lib/timidityになっている部分があったので/usr/local/share/timidityに修正しました。これで、インストールは終りです。早速再生してみましょう。

$ timidity -Os8 avemaria.mid


NetscapeでMIDIを再生しよう

前章で、timidityを使えるようにしました。このソースには、Netscape用のpuluginを作るためのソースも含まれています。作り方とインストール方法は、以下の通りです。

$ cd interface/Plugins
$ make ump.so
$ cp ump.so ~/.netscape/plugins/.

さて、鳴るでしょうか?


IRQ設定

PCMCIAのSCSIカードを挿してMOを使ったらライト中カーソルの動きが遅くなったり、サウンドデバイスが使えなくなったり、MOをマウントした瞬間フリーズしたり、動作不安定となりました。原因は、IRQ5の競合でした。IRQ5は、サウンドカードで使用するためPCMCIAカードに割り当てないよう設定しました。"/etc/pcmcia/config.opts"に以下を追加します。

# Built-in sound port
exclude irq 5

サウンドカードとSCSIを使う人は、要注意です。