因爲
MusicPlayerSetSequence(_player, sequence);
MusicSequenceSetAUGraph(sequence, _processingGraph);
仍然會導致播放器停止,仍然可以聽到稍微休息一下。 所以不是更新musicSequence
,我說幹就幹,改變了軌道,而不是,這不會造成任何中斷的內容:
MusicTrack currentTrack;
MusicTrack currentTrack2;
MusicSequenceGetIndTrack(musicSequence, 0, ¤tTrack);
MusicSequenceGetIndTrack(musicSequence, 1, ¤tTrack2);
MusicTrackClear(currentTrack, 0, _trackLen);
MusicTrackClear(currentTrack2, 0, _trackLen);
MusicSequence tmpSequence;
switch (number) {
case 0:
tmpSequence = musicSequence1;
break;
case 1:
tmpSequence = musicSequence2;
break;
case 2:
tmpSequence = musicSequence3;
break;
case 3:
tmpSequence = musicSequence4;
break;
default:
tmpSequence = musicSequence1;
break;
}
MusicTrack tmpTrack;
MusicTrack tmpTrack2;
MusicSequenceGetIndTrack(tmpSequence, 0, &tmpTrack);
MusicSequenceGetIndTrack(tmpSequence, 1, &tmpTrack2);
MusicTimeStamp trackLen = 0;
UInt32 trackLenLenLen = sizeof(trackLen);
MusicTrackGetProperty(tmpTrack, kSequenceTrackProperty_TrackLength, &trackLen, &trackLenLenLen);
_trackLen = trackLen;
MusicTrackCopyInsert(tmpTrack, 0, _trackLen, currentTrack, 0);
MusicTrackCopyInsert(tmpTrack2, 0, _trackLen, currentTrack2, 0);
節點沒有斷開,沒有更新的圖形,沒有停止播放。
嘿 - 你是否放棄了合併曲目的方法?我終於找到了一些時間讓它工作。你的文件有點隱藏 - 不知道爲什麼。下面是一個關於你的MIDI文件/ sf2 +一個隨機midi/sf2的例子(我有過)(http://dl.dropbox.com/u/34715839/MusicPlayerTracksFromFiles.zip) - 乾杯 – 2012-08-10 04:31:54
哦 - 這裏有個bug設置跟蹤循環時的文件:使用的trackLen值來自sourceTrack。在設置循環長度之前,應該從目標軌道重新計算此值。此外,發現最簡單的.mid文件的奇怪是由於它有2首曲目 - 第一首是空的 - 所以複製該曲目==沉默。 – 2012-08-10 07:54:41
不,我沒有,我找到了自己的解決方案,並提出了另一個答案(http://stackoverflow.com/questions/11706042)。但感謝無論如何,我相信你的代碼將幫助我優化我的。我仍然試圖弄清楚你是如何循環序列的,因爲它沒有在正確的時間循環。我做 - '如果(時間> = trackLen)MusicPlayerSetTime(_player,0);' – chedda 2012-08-10 08:54:30