次の方法で共有


MIDI スルーの管理

MIDI 入力デバイスを MIDI 出力デバイスに直接接続して、入力デバイスが MIM_DATA メッセージを受信すると、システムは同じ MIDI イベント データを含むメッセージを出力デバイス ドライバーに送信できます。 MIDI 出力デバイスを MIDI 入力デバイスに接続するには、 midiConnect 関数を使用します。

複数の出力で可能な限り最高のパフォーマンスを実現するために、アプリケーションは 、スルードライバと呼ばれるMIDI出力ドライバの特別な形式を提供することを選択することができます。 システムでは、1 つの MIDI 出力デバイスのみを MIDI 入力デバイスに接続できますが、複数の MIDI 出力デバイスをスルー ドライバーに接続できます。 このようなシステム上のアプリケーションは、MIDI入力デバイスをこのスルーデバイスに接続し、必要な数のMIDI出力デバイスにMIDIスルーデバイスを接続することができます。 ドライバースルーの詳細については、Windows デバイス ドライバーのドキュメントを参照してください。

メッセージを使用した MIDI 録音の管理

次のメッセージは、MIDI 録音を管理するためのウィンドウまたはスレッドコールバックプロシージャに送信できます。

説明
MM_MIM_CLOSE midiInClose 関数を使用して MIDI 入力デバイスが閉じられたときに送信されます。
MM_MIM_DATA 完全な MIDI メッセージを受信したときに送信されます。 (このメッセージは、システム排他メッセージを除くすべての MIDI メッセージに使用されます。
MM_MIM_ERROR 無効な MIDI メッセージを受信したときに送信されます。 (このメッセージは、システム排他メッセージを除くすべての MIDI メッセージに使用されます。
MM_MIM_LONGDATA 完全な MIDI システム排他メッセージを受信したとき、またはバッファーにシステム排他データが入力されている場合に送信されます。
MM_MIM_LONGERROR 無効な MIDI システム排他メッセージを受信したときに送信されます。
MM_MIM_MOREDATA アプリケーションが入力デバイス ドライバーに追いつくために十分な速度 MIM_DATA メッセージを処理していない場合に送信されます。
MM_MIM_OPEN midiInOpen 関数を使用して MIDI 入力デバイスを開いたときに送信されます。

 

wParam パラメーターと lParam パラメーターは、これらの各メッセージに関連付けられます。 wParam パラメーターは、開いている MIDI デバイスのハンドルを常に指定します。 lParam パラメーターは、MM_MIM_CLOSE および MM_MIM_OPEN メッセージでは使用されません。

MM_MIM_LONGDATA メッセージの場合、lpMidiHdr は、システム排他メッセージのバッファーを識別する MIDIHDR 構造体のアドレスを指定します。 通常、システム排他メッセージのサイズが記録される前に不明であり、合計サイズに予想される最大のメッセージを含めることができるバッファーを割り当てる必要があるため、バッファーを完全に満たさない場合があります。 バッファーに存在する有効なデータの量を確認するには、MIDIHDR 構造体の dwBytesRecorded メンバーを使用します。

コールバック関数を使用して MIDI レコーディングを管理する

独自のコールバック関数を定義して、MIDI 入力デバイスの録音を管理できます。 コールバック関数は、 MidiInProc として文書化されています。

次のメッセージは、MidiInProc コールバック関数の wMsg パラメーターに送信できます。

説明
MIM_CLOSE midiInClose 関数を使用してデバイスが閉じられたときに送信されます。
MIM_DATA 完全な MIDI メッセージを受信したときに送信されます (このメッセージは、システム排他メッセージを除くすべての MIDI メッセージに使用されます)。
MIM_ERROR 無効な MIDI メッセージが受信されたときに送信されます (このメッセージは、システム排他メッセージを除くすべての MIDI メッセージに使用されます)。
MIM_LONGDATA 完全な MIDI システム排他メッセージを受信したとき、またはバッファーにシステム排他データが入力されている場合に送信されます。
MIM_LONGERROR 無効な MIDI システム排他メッセージを受信したときに送信されます。
MIM_MOREDATA アプリケーションが入力デバイス ドライバーに追いつくために十分な速度 MIM_DATA メッセージを処理していない場合に送信されます。
MIM_OPEN midiInOpen 関数を使用して MIDI 入力デバイスを開いたときに送信されます。

 

これらのメッセージはウィンドウ プロシージャ関数に送信されるものと似ていますが、パラメーターは異なります。 開いている MIDI デバイスのハンドルは、 midiInOpen を使用して渡されたインスタンス データのダブルワードと共に、コールバック関数にパラメーターとして渡されます。

MIM_LONGDATA メッセージの場合、lpMidiHdr は、システム排他メッセージのバッファーを識別する MIDIHDR 構造体のアドレスを指定します。 バッファーが完全に満たされていない可能性があります。 バッファーに存在する有効なデータの量を確認するには、MIDIHDR 構造体の dwBytesRecorded メンバーを使用します。

デバイス ドライバーがデータ ブロックで終了したら、データ ブロックをクリーンして解放できます。

MIDI オーディオの録音