Управление MIDI Thru
Вы можете подключить устройство ввода MIDI непосредственно к устройству вывода MIDI, чтобы, когда устройство ввода получает MIM_DATA сообщение, система отправляет сообщение с теми же данными события MIDI в драйвер выходного устройства. Чтобы подключить устройство вывода MIDI к устройству ввода MIDI, используйте функцию midiConnect .
Чтобы добиться максимальной производительности с несколькими выходами, приложение может предоставить специальную форму драйвера вывода MIDI, называемую драйвером thru. Хотя система позволяет подключать только одно устройство вывода MIDI к устройству ввода MIDI, несколько устройств вывода MIDI могут быть подключены к драйверу. Приложение в такой системе может подключить устройство ввода MIDI к этому устройству через и подключить устройство MIDI через столько устройств вывода MIDI, сколько необходимо. Дополнительные сведения о драйверах с помощью портала см. в документации по драйверам устройств Windows.
Использование сообщений для управления записью MIDI
Следующие сообщения можно отправить в процедуру обратного вызова окна или потока для управления записью MIDI.
Значение | Значение |
---|---|
MM_MIM_CLOSE | Отправляется при закрытии устройства ввода MIDI с помощью функции midiInClose . |
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 | Отправляется при открытии устройства ввода MIDI с помощью функции midiInOpen . |
С каждым из этих сообщений связаны параметры wParam и lParam . Параметр wParam всегда указывает дескриптор открытого MIDI-устройства. Параметр lParam не используется для MM_MIM_CLOSE и MM_MIM_OPEN сообщений.
Для сообщения MM_MIM_LONGDATAlpMidiHdr указывает адрес структуры MIDIHDR , которая идентифицирует буфер для сообщений, исключающих систему. Буфер может быть заполнен не полностью, так как размер сообщений, исключающих систему, как правило, неизвестен перед записью, и необходимо выделить буферы, общий размер которых может содержать наибольшее ожидаемое сообщение. Чтобы определить объем допустимых данных, присутствующих в буфере, используйте элемент dwBytesRecorded структуры MIDIHDR .
Использование функции обратного вызова для управления записью MIDI
Вы можете определить собственную функцию обратного вызова для управления записью устройств ввода MIDI. Функция обратного вызова задокументирована как MidiInProc.
Следующие сообщения можно отправить в параметр wMsg функции обратного вызова MidiInProc .
Значение | Значение |
---|---|
MIM_CLOSE | Отправляется при закрытии устройства с помощью функции midiInClose . |
MIM_DATA | Отправляется при получении полного сообщения MIDI (это сообщение используется для всех сообщений MIDI, за исключением сообщений, исключающих систему). |
MIM_ERROR | Отправляется при получении недопустимого midi-сообщения (это сообщение используется для всех сообщений MIDI, кроме сообщений, предназначенных для исключительно системы). |
MIM_LONGDATA | Отправляется при получении полного сообщения MIDI, исключающего систему, или при заполнении буфера данными, исключающими систему. |
MIM_LONGERROR | Отправляется при получении недопустимого сообщения MIDI, исключающего систему. |
MIM_MOREDATA | Отправляется, когда приложение не обрабатывает MIM_DATA сообщения достаточно быстро, чтобы не отставать от драйвера устройства ввода. |
MIM_OPEN | Отправляется при открытии устройства ввода MIDI с помощью функции midiInOpen . |
Эти сообщения похожи на сообщения, отправленные в функции процедур окон, но параметры отличаются. Дескриптор открытого MIDI-устройства передается в качестве параметра функции обратного вызова вместе с двойным словом данных экземпляра, которые были переданы с помощью midiInOpen.
Для сообщения MIM_LONGDATAlpMidiHdr указывает адрес структуры MIDIHDR , которая идентифицирует буфер для сообщений, исключающих систему. Буфер может быть заполнен не полностью. Чтобы определить объем допустимых данных, присутствующих в буфере, используйте элемент dwBytesRecorded структуры MIDIHDR .
После завершения работы драйвера устройства с блоком данных можно очистить и освободить блок данных.
Связанные темы