この分野では古くから、現在Erlangen-Nuernberg大学で研究されている
岩井 隆 博士が開発されたドライバやユーティリティが重用されています。
現在の所、ALSAのドライバとAWE32用のSoundFontローダーを用いること
で内蔵MIDIを使用することができるそうです。
インストールと設定の方法は、博士のALSA-projectでのWeb Site
http://www.alsa-project.org/~iwai/
にあります。日本語の解説文が、
http://www.alsa-project.org/~iwai/alsa-jp.html
にあり、明快に記述されています。おそらく岩井氏御自身の他には、これ程
まとまった情報を提供されている人はいないと思われます。
-多少の留意点-
○
/etc/modules.conf (あるいは、/etc/modprobe.conf)の中で、ver.0.5.x
では snd-card-emu10k1
となっていた所は、ver.0.9以降、snd-emu10k1 と書か
ねばなりません。
○sfxloadにはOSS互換の
ライブラリが必要なので、最近のalsaでは alsa-oss
パッケージもインストールする必要があります。
○alsaドライバーインストール
後は、make installで注意されるとおり、ボリュ
ームが0になっているので、aumixなどで調整しないと音が出ないのはよく知られ
ていることであります。
○まれに音が出ても発振してしまう
ことがありますが、これは、Playerチャネ
ルであるべきものがRecoderチャネルになっているためで、例えばaumixで
Volumeに "R" のマークがついているときは発振します。aumixでスペースを押
すと選択したチャネルの "P" と "R" が切り替わります。
○sfxloadのインストール
岩井氏の作成されたドライバやユーティリティのサイト○SoundFontのコピーについて
"http://www.alsa-project.org/~iwai/awedrv.html" から、
awesfx-xxx.tar.bz2をダウンロードします。 そして、以下のよう
に/usr/localにインストールします。# tar xvfI awesfx-xxx.tar.bz2
# cd awesfx-xxx
# xmkmf
# make Makefiles
# make all
# make install最後に必ず、/etc/ld.so.confに/usr/local/libが含まれていること
を確認し、# ldconfig
を実行します。
SBLive!カードに付属のCD-ROMをマ ウントし、
# cp /mnt/cdrom/AUDIO/COMMON/SFBANK/8MBGMSFX.SF2 /usr/local/lib/sfbank/8mbgmsfx.sf2○SoundFontのロードについてとしてSoundFontをコピーします。なお、コピー先はどこでも構
いません。以下 /somewhere/somedir としておきます。
起動時に、SoundFontのロードが解説の 通りにはできない場合、
/etc/rc.d/rc.localなどに、/usr/local/bin/sfxload -P /somewhere/somedir 8mbgmsfx.sf2
を追記すれば良いようです。
ところで、氏が述べられている、モジュールのロード時に自動的に読み込ませ
る方法は、私の環境では働きませんでした。 /etc/modules.conf に書いた
post-installの項目が有効にならない場合もあるようです。カーネルを自分で
コンパイルした場合には、コンパイル時の設定に不都合があれば、モジュールの
ロードなどでよく不具合があるものですが、ディストリビューションをそのまま
使う場合にもこういうことは時々あります。
○一例 参考までに、x86_64版Fedora Core
3で動かした例を示します。まず、alsa-driver、
alsa-lib、alsa-utils及びawesfxをインストールし、次に、サウンドフォントを /usr/local/share/sounds/sf2にコピーします。さらに、/etc/modprobe.conf に以下の内容を追加します。 alias snd-card-0 snd-emu10k1
最後に、/etc/rc.d/rc.local に以下の内容を追加する必要がありました。options snd-card-0 index=0 alias snd-major-14 soundcore 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 echo "Load module snd_seq_oss"
/sbin/modprobe snd_seq_oss sleep 2s echo "Load a sound font" /usr/local/bin/sfxload -P /usr/local/share/sounds/sf2 8mbgmsfx.sf2 私の環境では、なぜか途中で2秒も待たないといけない。 ※ところで、Fedora Core 3 for x86_64では、playmidiのコンパイルにも僅かに修 正を要します。変更すべきは以下の通り。なお、libvgaとgtkは無視してコンパイル されます。 [akira@localhost
playmidi-2.4]$ diff Makefile Makefile.bak
15c15 < LIBNC = -L/usr/lib64 -lncurses --- > LIBNC = -L/usr/local/lib -lncurses 18,20c18,20 < LIBX11 = -L/usr/X11R6/lib64 -lXaw -lXmu -lXt -lX11 -lXext -lSM -lICE < LIBGTK = -L/usr/X11R6/lib64 -lgtk-1.1 -lgdk-1.1 -lglib-1.1 -lX11 -lXext -lm < LIBVGA = -L/usr/local/lib64 -lvgagl -lvga --- > LIBX11 = -L/usr/X11R6/lib -lXaw -lXmu -lXt -lX11 -lXext -lSM -lICE > LIBGTK = -L/usr/X11R6/lib -lgtk-1.1 -lgdk-1.1 -lglib-1.1 -lX11 -lXext -lm > LIBVGA = -L/usr/local/lib -lvgagl -lvga |
オプションは、awe32では -a でしたが、SBLiveでは、-a の他、 外部出力用の
-e オプションでも良いようです。$ playmidi -a foo.mid
$ xplaymidi -a hoge.midで演奏されます。