効果音について
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
銃声の音色を低音で発声させています。
この音色は勝手に音が消えてくれるので、消音は省略。