共用方式為


管理 MIDI Thru

您可以將 MIDI 輸入裝置直接連線到 MIDI 輸出裝置,以便在輸入裝置收到 MIM_DATA 訊息時,系統會將具有相同 MIDI 事件數據的訊息傳送至輸出設備驅動器。 若要將 MIDI 輸出裝置連線到 MIDI 輸入裝置,請使用 midiConnect 函式。

若要使用多個輸出達到最佳效能,應用程式可以選擇提供一種特殊型態的MIDI輸出驅動程式,稱作 thru 驅動程式。 雖然系統只允許一個 MIDI 輸出裝置連線到 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_CLOSEMM_MIM_OPEN 訊息。

針對 MM_MIM_LONGDATA 訊息,lpMidiHdr 指定識別系統專屬訊息緩衝區之 MIDIHDR結構的位址。 緩衝區可能無法完全填滿,因為系統獨佔訊息的大小在記錄之前通常不知道,而且因為必須配置其總大小可以包含最大預期訊息的緩衝區。 若要判斷緩衝區中存在的有效數據量,請使用結構 MIDIHDRdwBytesRecorded 成員。

使用回調函數管理 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結構的位址。 緩衝區可能無法完全填滿。 若要判斷緩衝區中存在的有效數據量,請使用 dwBytesRecordedMIDIHDR 結構的成員。

當設備驅動程式完成對資料區塊的處理後,您可以清理並釋放該資料區塊。

錄製MIDI音訊