我在iOS 5上使用CoreAudio播放MIDI文件。我有一切設置,它的工作,一切都桃色,除非我想在播放播放期間從開始開始的序列。 要做到這一點我很自然地叫:iOS&CoreAudio:調用MusicPlayerSetTime()停止MusicPlayer
if (MusicPlayerSetTime(musicPlayer, (MusicTimeStamp)0.0) != noErr)
[NSException raise:@"playMIDI" format:@"Can't reset the player"];
我沒有得到任何錯誤,但在進行此調用完全停止播放,而不是(如文檔中說)繼續在新的位置繼續播放。 我已經試過這也(同類型等多種組合):
Boolean isPlaying = NO;
if (MusicPlayerIsPlaying(musicPlayer, &isPlaying) != noErr)
[NSException raise:@"playMIDI:" format:@"Can't get MusicPlayer play state"];
if (isPlaying) {
if (MusicPlayerStop(musicPlayer) != noErr)
[NSException raise:@"playMIDI:" format:@"Can't stop MusicPlayer"];
}
if (MusicPlayerSetSequence(musicPlayer, musicSequence) != noErr)
[NSException raise:@"playMIDI:" format:@"Can't set sequence for MusicPlayer"];
if (MusicPlayerSetTime(musicPlayer, (MusicTimeStamp)0.0) != noErr)
[NSException raise:@"playMIDI" format:@"Can't reset the player"];
if (MusicPlayerSetPlayRateScalar(musicPlayer, 1.0) != noErr)
[NSException raise:@"playMIDI" format:@"Can't set speed"];
if (MusicPlayerStart(musicPlayer) != noErr)
[NSException raise:@"playMIDI" format:@"Can't start MusicPlayer"];
沒有快樂,同樣的效果。
但是,如果我更改MusicSequence,那麼新的MusicSequence播放效果會很好。所以我已經到了從同一個MIDI文件創建兩個MusicSequence並從一個切換到另一個的極端了。沒有快樂,iOS知道我想兩次播放同一個文件並禁止它。我必須等到序列完全播放後才能再次播放。撲朔迷離。
有什麼想法?
感謝
是的,我查了一下,音符從0開始(我用http://www.fourmilab.ch/ webtools/midicsv /轉儲文件的內容,並且我也與Aria Maestosa進行了檢查)。我必須說,除了我在下面給出的解釋外,我無法解釋這種行爲。 –
我已經與MusicPlayer摔跤了很多,所以我明白感覺不知所措!有關節奏,比賽率的不尋常情況?想不到別的。 –
midi文件非常簡單,它很難有任何錯誤,但在這裏,請自己判斷:https://dl.dropbox.com/u/3916368/01010111.mid。讓我知道你是否能夠在第一次播放它後1秒內重新啓動它。謝謝 –