ついでにソースなんてものをちょっと
調子乗ってさらに書いてみる。
自分のソフトの中でも一つ肝になっているところだ。
var GSData :array[0..10] of Byte = ($F0,$41,$10,$42,$12,$40,$00,$7F,$00,$41,$F7); MidiHeader: TMIDIHDR; // MIDIHDR 構造体 hMidi: HMIDIOUT; // MIDI OUT デバイスへのハンドル
処理
res:=midiOutOpen(@hMidi,n_dev,0,0,0); if res<>0 then begin midiOutClose(integer(hMidi)); sleep(500); res:=midiOutOpen(@hMidi,n_dev,0,0,0); end; // しつこく開き続けてみる if res<>0 then begin midiOutClose(integer(hMidi)); sleep(500); res:=midiOutOpen(@hMidi,n_dev,0,0,0); end; if res<>0 then begin midiOutClose(integer(hMidi)); sleep(500); res:=midiOutOpen(@hMidi,n_dev,0,0,0); end; if res<>0 then begin midiOutClose(integer(hMidi)); sleep(500); res:=midiOutOpen(@hMidi,n_dev,0,0,0); end; if res<>0 then begin midiOutClose(integer(hMidi)); sleep(500); res:=midiOutOpen(@hMidi,n_dev,0,0,0); end; if res<>0 then ShowMessage('MIDIデバイスが開けません'); // end; midiOutReset(n_dev); MidiHeader.dwBufferLength := Sizeof(GSData); MidiHeader.lpData := @GSData; //配列へのポインター midiOutPrepareHeader(integer(hMidi),@MidiHeader,sizeof(TMIDIHDR)); // GSリセット midiOutLongMsg(integer(hMidi),@MidiHeader,sizeof(TMIDIHDR)); // GSリセットが効くまで間を取ってみる sleep(200);