每个
eventType
具有相应的数据结构,如中所述
MusicPlayer.h
.
您可能正在寻找类型的事件
kMusicEventType_ExtendedTempo
,其数据类型为
ExtendedTempoEvent
,这只是:
/*!
@struct ExtendedTempoEvent
@discussion specifies the value for a tempo in beats per minute
*/
typedef struct ExtendedTempoEvent
{
Float64 bpm;
} ExtendedTempoEvent;
因此,您的代码可能是:
MusicEventIteratorGetEventInfo(iterator,
×tamp,
&eventType,
&eventData,
&eventDataSize);
if (eventType == kMusicEventType_ExtendedTempo &&
eventDataSize == sizeof(ExtendedTempoEvent)) {
ExtendedTempoEvent *tempoEvent = (ExtendedTempoEvent *)eventData;
Float64 tempo = tempoEvent->bpm;
NSLog(@"Tempo is %g", tempo);
}
请记住:MIDI文件中可能有多个节奏。您可以使用事件时间戳来了解它何时改变节奏。