C++ と Windows API を使用して Windows プログラムを作成しており、MIDI ストリームで MIDI メッセージをキューに入れようとしていますが、そうしようとすると奇妙なエラーが発生します。midiOutShortMsg
キューに入れられていない MIDI メッセージをストリームに送信していた場合、正しく動作します。ただし、midiStreamOut
常にエラー コード 68 を返します。これは#define
d ~MCIERR_WAVE_OUTPUTUNSPECIFIED
です。midiOutGetErrorText
エラーの次の説明を示します。
現在の MIDI マッパー セットアップは、システムにインストールされていない MIDI デバイスを参照しています。MIDI Mapper を使用して設定を編集します。
Windows 7 (64 ビット) を使用しており、システム上の MIDI_MAPPER と 4 つの MIDI 出力デバイスすべてのデバイス ID を使用して MIDI ストリームを開こうとしましたが、まったく同じエラー メッセージが表示されます。
MIDI ストリームを開くコードは次のとおりです。
UINT device_id = MIDI_MAPPER; //Also tried 0, 1, 2 and 3
midiStreamOpen( &midi, &device_id, 1, ( DWORD_PTR )hwnd, 0, CALLBACK_WINDOW );
MIDI メッセージを送信するコードは次のとおりです。
MIDIHDR header;
MIDIEVENT *event;
event = ( MIDIEVENT * )malloc( sizeof( *event ) );
event->dwDeltaTime = delta_time;
event->dwStreamID = 0;
event->dwEvent = ( MEVT_F_SHORT | MEVT_SHORTMSG ) << 24 | ( msg & 0x00FFFFFF );
header.lpData = ( LPSTR )event;
header.dwBufferLength = sizeof( *event );
header.dwBytesRecorded = sizeof( *event );
header.dwUser = 0;
header.dwFlags = 0;
header.dwOffset = 0;
midiOutPrepareHeader( ( HMIDIOUT )midi, &header, sizeof( header ) );
midiStreamOut( midi, &header, sizeof( header ) );
この問題を解決するにはどうすればよいですか?