Linux上で、SoundBlaster Live!のWaveTable音源を使ってMIDIを再生する方法について調べてみました。rosegarden と組合わせれば、フリーソフトだけで DTMができそうです。
必要なファイル/ツールの準備
- 8mbgmsfx.sf2
音源のデータファイルです。Sound Blaster のCDROMからコピーするか、http://alsa.opensrc.org/8MBGMSFX.SF2 からdownloadします
- awesfx
WaveTableのデータをサウンドカードに upload するためのツールです
http://www.alsa-project.org/~tiwai/awedrv.html
必要なツールは awesfx だけですが、そのままではコンパイルが通らないので awesfx-0.5.0d.tar.gz と awedrv-0.4.4.tgz をdownloadし以下の手順でコンパイルします。
$ tar xvfz awesfx-0.5.0d.tar.gz
$ tar xvfz awedrv-0.4.4.tgz
$ cd awesfx-0.5.0d
$ ./configure
つづけてソースコードの修正
$ cp ../awedrv-0.4.4/awe_voice.h include
さらに、ソースコード中の "linux/awe_voice.h" を "awe_voice.h" に置換します
$ find -name "*.c" -o -name "*.h" | xargs sed --in-place s,linux/awe_voice.h,awe_voice.h,g
あとは、make 一発です
$ make
- pmidi
MIDI再生用のプログラムです。
http://www.parabola.me.uk/alsa/pmidi.html
こちらは、./configure && make するだけです。
$ ./configure $ make
使い方
$ pmidi -l
pmidi コマンドは以下のように、MIDIデバイスの一覧を出力します。出力されない場合は alsa のドライバ回りの設定を見直しましょう。
Port Client name Port name 16:0 SBLive! Value [CT4832] EMU10K1 MPU-401 (UART) 17:0 Emu10k1 WaveTable Emu10k1 Port 0 17:1 Emu10k1 WaveTable Emu10k1 Port 1 17:2 Emu10k1 WaveTable Emu10k1 Port 2 17:3 Emu10k1 WaveTable Emu10k1 Port 3
次に音源データをロードします
$ sfxload 8mbgmsfx.sf2
再生
$ pmidi -p 17:0 hogehoge.mid
"-p" でポートを指定します。"Emu10k1 Port"のいずれかを指定します。