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_EVENTTYPEMEVT_EVENTPARM 宏。 请参阅“备注”。

dwParms[1]

如果 dwEvent 指定MEVT_F_LONG和缓冲区的长度,则此成员包含事件的参数。 此参数数据必须使用零填充,以便存储 DWORD 值的整数数。 例如,如果事件数据的长度为五个字节,则数据后面必须有三个填充字节,总共八个字节。 在这种情况下, dwEvent 的低 24 位将包含值 5。

如果 dwEvent 指定MEVT_F_SHORT,请不要在流缓冲区中使用此成员。

注解

dwEvent 的高字节包含标志和事件代码。 必须指定MEVT_F_LONG或MEVT_F_SHORT标志。 MEVT_F_CALLBACK标志是可选的。 下表介绍了这些标志。

标志 含义
MEVT_F_CALLBACK 系统在即将执行事件时生成回调。
MEVT_F_LONG 事件是一个长事件。 低 24 位 dwEvent 包含 dwParms 中包含的事件参数的长度。
MEVT_F_SHORT 事件是一个简短的事件。 事件参数包含在 dwEvent 的低 24 位中。
 

高字节的其余部分包含以下事件代码之一:

事件代码 含义
MEVT_COMMENT 长事件。 将忽略事件数据。 此事件旨在存储有关流的评论信息,如果流数据以流格式存储在文件中,则可能对创作程序或排序器很有用。 在此数据的缓冲区中,零字节标识注释类,后续字节包含注释数据。
MEVT_LONGMSG 长事件。 事件数据将逐字传输。 假定事件数据是系统独占数据;也就是说,在执行事件时,将清除运行状态,并且任何先前事件的运行状态不会应用于事件数据中的任何通道事件。 不建议使用此事件同时发送一组频道消息;应改用一组具有零增量时间的MEVT_SHORTMSG事件。
MEVT_NOP 短事件。 此事件是占位符;它不执行任何工作。 忽略低 24 位。 如果在 dwEvent 中设置了MEVT_F_CALLBACK,此事件仍将生成回调。
MEVT_SHORTMSG 短事件。 dwEvent 低 24 位中的数据是 MIDI 短消息。 (有关如何将短消息打包到 DWORD 值的说明,请参阅 midiOutShortMsg function.)
MEVT_TEMPO 短事件。 低 24 位 dwEvent 中的数据包含以下事件的新节奏。 指定节奏的格式与 MIDI 文件中的临时更改元事件的格式相同,即每季度注释的微秒数。 (如果为流指定的时间格式为 SMPTE time,则此事件将不起作用。)
MEVT_VERSION 长事件。 事件数据必须包含 MIDISTRMBUFFVER 结构。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
标头 mmeapi.h (包括 Windows.h)

另请参阅

MEVT_EVENTPARM

MEVT_EVENTTYPE

MIDI 结构

MIDISTRMBUFFVER

乐器数字接口 (MIDI)

midiOutShortMsg