Поделиться через


Управление 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 .

После завершения работы драйвера устройства с блоком данных можно очистить и освободить блок данных.

Запись midi audio