効果音について

2005(HSP3.0)になってからですが、実はこれまでにもコンテスト作品を作っている途中でMIDIで効果音を付けることがありました。
ただ、もともと作品のイメージさせることが目的で、サイズ制限上きびしいため応募するまでに外してしまっています。
(この辺の話は、昨年あったお茶会でちょっと話題にしました)
今回は使えるサイズが多くなったので仕組みを残したままにすることが可能になりました。
必要な処理は、MidiのDLL(Winmm)を使うための宣言、関数の宣言、初期化、音色の設定、発声、終了処理。


とりあえず、GARUDAで使っている爆発音のサンプル

#uselib "winmm.dll"
#func midiOutOpen "midiOutOpen" int, int, int, int, int
#func midiOutShortMsg "midiOutShortMsg" int, int
#func midiOutClose "midiOutClose" int

	midiOutOpen varptr(hndl_midi), 0, 0, 0, 0
	onexit *CLOSE
	
	midiOutShortMsg hndl_midi, 0x7fc0	;音色(0x00〜0x7f)*0x100 +0xC0+chan
	midiOutShortMsg hndl_midi, 0x7f2090	;発声 Volume*0x10000+Scale*0x100+0x90+chan
	stop

*CLOSE
	midiOutClose hmidi
	end

銃声の音色を低音で発声させています。
この音色は勝手に音が消えてくれるので、消音は省略。