Ios5 如何在MusicPlayer中循环播放midi
我使用下面的代码在ios中播放midi文件,但如何循环播放歌曲? 是否有类似player.loop=true的东西Ios5 如何在MusicPlayer中循环播放midi,ios5,audio,midi,Ios5,Audio,Midi,我使用下面的代码在ios中播放midi文件,但如何循环播放歌曲? 是否有类似player.loop=true的东西 NewMusicSequence(&mySequence); NSURL * midiFileURL = [NSURL fileURLWithPath:midPath]; MusicSequenceFileLoad(mySequence, (__bridge CFURLRef)midiFileURL, 0, kMusicSequenceLoadSMF_ChannelsToT
NewMusicSequence(&mySequence);
NSURL * midiFileURL = [NSURL fileURLWithPath:midPath];
MusicSequenceFileLoad(mySequence, (__bridge CFURLRef)midiFileURL, 0, kMusicSequenceLoadSMF_ChannelsToTracks);`
NewMusicPlayer(&player);
MusicPlayerSetSequence(player, mySequence);
MusicPlayerPreroll(player);
MusicPlayerStart(player);
提前谢谢。我通过为每个曲目设置循环信息解决了这个问题
UInt32 tracks;
if (MusicSequenceGetTrackCount(sequence, &tracks) != noErr)
for (UInt32 i = 0; i < tracks; i++) {
MusicTrack track = NULL;
MusicTimeStamp trackLen = 0;
UInt32 trackLenLen = sizeof(trackLen);
MusicSequenceGetIndTrack(sequence, i, &track);
MusicTrackGetProperty(track, kSequenceTrackProperty_TrackLength, &trackLen, &trackLenLen);
MusicTrackLoopInfo loopInfo = { trackLen, 0 };
MusicTrackSetProperty(track, kSequenceTrackProperty_LoopInfo, &loopInfo, sizeof(loopInfo));
NSLog(@"track length is %f", trackLen);
}
UInt32轨;
if(音乐序列GetTrackCount(序列和曲目)!=noErr)
对于(UInt32 i=0;i
如果有人在循环播放音乐序列和遵循Rick Li的指示或此处的指示时遇到问题,我发现MusicTrackLoopInfo代码只有在我的曲目持续时间短到我有耐心坐下来听循环时才起作用。例如,我尝试在开始时单击一次以循环一条轨迹,使其每秒重复一次。但是单音符的持续时间实际上是100秒,所以即使我像李瑞克解释的那样设置循环,我也要等将近两分钟才能听到循环。我希望这能帮助那些对无法在iOS/AudioToolbox中循环播放音乐序列/MIDI曲目感到困惑或沮丧的人。确保调用GetProperty kSequenceTrackProperty\u TrackLength并检查trackLen是否为某个大值,即使您确信它是某个小值