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


Структура MIDIEVENT (mmeapi.h)

Структура MIDIEVENT описывает событие MIDI в буфере потока.

Синтаксис

typedef struct midievent_tag {
  DWORD dwDeltaTime;
  DWORD dwStreamID;
  DWORD dwEvent;
  DWORD dwParms[1];
} MIDIEVENT;

Члены

dwDeltaTime

Время между предыдущим событием и текущим событием в тактах MIDI. Длина такта определяется форматом времени и, возможно, временем, связанным с потоком. (Определение идентично спецификации для такта в стандартном MIDI-файле.)

dwStreamID

Защищены; значение должно быть равно нулю.

dwEvent

Код события, параметры или длина события. Чтобы проанализировать эти сведения, используйте макросы MEVT_EVENTTYPE и MEVT_EVENTPARM . См. заметки.

dwParms[1]

Если dwEvent указывает MEVT_F_LONG и длину буфера, этот член содержит параметры для события. Данные этого параметра должны быть заполнены нулями, чтобы сохранить целое количество значений DWORD . Например, если данные события длиной пять байт, то за данными должны следовать три байта на общей сложности восемь байтов. В этом случае низкий 24 бит dwEvent будет содержать значение 5.

Если dwEvent указывает MEVT_F_SHORT, не используйте этот элемент в буфере потока.

Комментарии

Высокий байт dwEvent содержит флаги и код события. Необходимо указать флаг MEVT_F_LONG или MEVT_F_SHORT. Флаг MEVT_F_CALLBACK необязателен. В следующей таблице описаны эти флаги.

Flag Значение
MEVT_F_CALLBACK Система создает обратный вызов, когда событие вот-вот будет выполнено.
MEVT_F_LONG Событие является длительным. Низкие 24 бит dwEvent содержат длину параметров события, включенных в dwParms.
MEVT_F_SHORT Событие является коротким. Параметры события содержатся в dwEvent с низкими 24 битами.
 

Остаток большого байта содержит один из следующих кодов событий:

Код события Значение
MEVT_COMMENT Длинное событие. Данные события будут игнорироваться. Это событие предназначено для хранения комментариев о потоке, которые могут быть полезны для разработки программ или секвенсоров, если данные потока должны храниться в файле в формате потока. В буфере этих данных нулевой байт определяет класс комментариев, а последующие байты содержат данные комментария.
MEVT_LONGMSG Длинное событие. Данные события передаются дословно. Предполагается, что данные события являются данными, исключающими систему; то есть состояние выполнения будет очищено при выполнении события, а состояние выполнения из всех предыдущих событий не будет применяться к событиям канала в данных события. Использовать это событие для одновременной отправки группы сообщений канала не рекомендуется; Вместо этого следует использовать набор событий MEVT_SHORTMSG с нулевым разностным временем.
MEVT_NOP Короткое событие. Это событие является заполнителем; он ничего не делает. Низкие 24 бита игнорируются. Это событие по-прежнему создает обратный вызов, если MEVT_F_CALLBACK задано в dwEvent.
MEVT_SHORTMSG Короткое событие. Данные в низком 24 бит dwEvent являются коротким сообщением MIDI. (Описание того, как короткое сообщение упаковывается в значение DWORD, см. в функции midiOutShortMsg.)
MEVT_TEMPO Короткое событие. Данные в низких 24 битах dwEvent содержат новый темп для следующих событий. Tempo указывается в том же формате, что и для мета-события изменения темпа в MIDI-файле, то есть в микросекундах на квартальную заметку. (Это событие не будет действовать, если для потока задан формат времени SMPTE.)
MEVT_VERSION Длинное событие. Данные события должны содержать структуру MIDISTRMBUFFVER.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Верхняя часть mmeapi.h (включая Windows.h)

См. также раздел

MEVT_EVENTPARM

MEVT_EVENTTYPE

Структуры MIDI

MIDISTRMBUFFVER

Цифровой интерфейс музыкального инструмента (MIDI)

midiOutShortMsg