XNP2とMIDI

廃棄したPC-98機のソフトウェア資産の活用に、フリーでオープンソースなねこープロジェクトII(NP2)からフォークしたXNP2 20120302(要ビルド)というエミュレーターを利用している。今回、XNP2からMIDIで音を鳴らしたくなったため、ホストOSのUbuntuに、フリーでオープンソースなFluidSynthというソフトウェアシンセサイザーをインストールすることにした。

まずはターミナルからFluidSynthやサウンドフォント(音色のデータファイル)等をインストールし、仮想MIDIポートをロード後、FluidSynthを起動する。なお、以下では公式パッケージのサウンドフォントを利用しているが、対応しているsf2サウンドフォントはネットから選び放題で、定番とされているSGM-V2.01(無料)を利用することもできる。ただし、SGM-V2.01のほうがファイルサイズが大きいため、マシンパワーやメモリーを考慮し、今回は利用を控えた。

$ sudo apt-get install --no-install-recommends alsa-utils fluid-soundfont-gm fluidsynth
$ sudo modprobe snd-virmidi
$ fluidsynth -s -i -a alsa -r 48000 -g 1 /usr/share/sounds/sf2/FluidR3_GM.sf2 &

次に、ALSA上の仮想MIDIポートとFluidSynthを確認したら、仮想MIDIポート(下例の場合24:0)とFluidSynth(下例の場合128:0)を接続する。

$ aconnect -l
client 0: 'System' [type=カーネル]
0 'Timer '
1 'Announce '
client 14: 'Midi Through' [type=カーネル]
0 'Midi Through Port-0'
client 24: 'Virtual Raw MIDI 2-0' [type=カーネル,card=2]
0 'VirMIDI 2-0 '
client 25: 'Virtual Raw MIDI 2-1' [type=カーネル,card=2]
0 'VirMIDI 2-1 '
client 26: 'Virtual Raw MIDI 2-2' [type=カーネル,card=2]
0 'VirMIDI 2-2 '
client 27: 'Virtual Raw MIDI 2-3' [type=カーネル,card=2]
0 'VirMIDI 2-3 '
client 128: 'FLUID Synth (123456)' [type=ユーザ,pid=123456]
0 'Synth input port (123456:0)'
$ aconnect 24:0 128:0

第三に、MIDIポートのデバイス名を確認する。

$ ls /dev/snd/midi*
/dev/snd/midiC2D0 /dev/snd/midiC2D1 /dev/snd/midiC2D2 /dev/snd/midiC2D3

最後に、XNP2を起動し、XNP2のMIDIポートを設定する。具体的にはMIDI optionで、DeviceMIDI-OUT/dev/snd/midiC2D0AssignMIDI-OUTMIDI-OUT Deviceを設定する。あとAssignModuleGMを選択したが、正直何を選択していいか分からなかった。

XNP2 width=

そうして、XNP2でBLACK PACKAGEの『殻の中の小鳥』とマイクロキャビンの『幻影都市 ILLUSION CITY』というゲームソフトを起動して確認したところ、いずれも音楽がMIDIで鳴ったので、そのうち上述のターミナルでの入力をスクリプト化しようと思う。ちなみに、事が終わってFluidSynthを終了するときは、以下のとおり。

$ aconnect -x
$ killall fluidsynth

なお、同様にTiMidity++も試したが、こちらはFluidSynthより動作が重く感じたので、今回は採用を見送った。

音楽 | comments (0) | trackbacks (0)
楽天たすけ愛

Comments

Comment Form


Icons:
[icon]

Trackbacks