共用方式為


管理 MIDI Thru

您可以將 MIDI 輸入裝置直接連線到 MIDI 輸出裝置,以便在輸入裝置收到 MIM_DATA 訊息時,系統會將具有相同 MIDI 事件資料的訊息傳送至輸出裝置磁碟機。 若要將 MIDI 輸出裝置連線到 MIDI 輸入裝置,請使用 midiConnect 函式。

若要透過多個輸出達到最佳效能,應用程式可以選擇提供特殊形式的 MIDI 輸出驅動程式,稱為 「到驅動程式」。 雖然系統只允許一個 MIDI 輸出裝置連線到 MIDI 輸入裝置,但多個 MIDI 輸出裝置可以連線到驅動程式。 這類系統上的應用程式可以將 MIDI 輸入裝置連線到此裝置,並將 MIDI 連線到所需的 MIDI 輸出裝置數目。 如需驅動程式的詳細資訊,請參閱 Windows device-driver 檔。

使用訊息管理 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 結構的位址,以識別系統獨佔訊息的緩衝區。 緩衝區可能無法完全填滿,因為系統獨佔訊息的大小通常不會在記錄之前知道,而且因為必須配置其總大小可以包含最大預期訊息的緩衝區。 若要判斷緩衝區中存在的有效資料量,請使用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 音訊