gpt4 book ai didi

ios - 如何即时更改 MIDI TEMPO? [CoreMIDI] iOS

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:21:26 25 4
gpt4 key购买 nike

我已经将带有 MIDI 音符的 MusicTrack 设置到 MusicSequence 中,正在使用 MusicPlayer 播放。当我试图通过使用调整节奏时,问题就来了;

MusicTrackNewExtendedTempoEvent(musicTrack, 0.0, newBPM);

显然,这应该会更改正在播放的 MusicTrack 中的 TempoEvent,但事实并非如此。知道为什么会发生这种情况吗?

最佳答案

您首先必须从速度轨道中删除所有速度事件。

static void removeTempoEvents(MusicTrack tempoTrack){
MusicEventIterator tempIter;
NewMusicEventIterator(tempoTrack, &tempIter);
Boolean hasEvent;
MusicEventIteratorHasCurrentEvent(tempIter, &hasEvent);
while (hasEvent) {
MusicTimeStamp stamp;
MusicEventType type;
const void *data = NULL;
UInt32 sizeData;

MusicEventIteratorGetEventInfo(tempIter, &stamp, &type, &data, &sizeData);
if (type == kMusicEventType_ExtendedTempo){
MusicEventIteratorDeleteEvent(tempIter);
MusicEventIteratorHasCurrentEvent(tempIter, &hasEvent);
}
else{
MusicEventIteratorNextEvent(tempIter);
MusicEventIteratorHasCurrentEvent(tempIter, &hasEvent);
}
}
DisposeMusicEventIterator(tempIter);
}
static void setTempo(MusicSequence sequence,Float64 tempo){
MusicTrack tempoTrack;
MusicSequenceGetTempoTrack(sequence ,&tempoTrack);
removeTempoEvents(tempoTrack);
MusicTrackNewExtendedTempoEvent(tempoTrack,0, tempo);
}

关于ios - 如何即时更改 MIDI TEMPO? [CoreMIDI] iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30649720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com