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가 정상적으로 재생됩니다. 그래서 저는 같은 미디 파일에서 2 개의 MusicSequence를 생성하고 하나에서 다른 것으로 전환하는 극단으로갔습니다. 기쁨도, iOS도 같은 파일을 두 번 재생하고 금지하고 있음을 알고 있습니다. 시퀀스를 완전히 재생할 때까지 기다렸다가 다시 재생할 수 있습니다. 깜짝 놀라게하기.
아이디어가 있으십니까?
감사
예 (내가 사용 http://www.fourmilab.ch/ webtools/midicsv /는 파일의 내용을 덤프하고 Aria Maestosa와 함께 확인했습니다. 나는 내가 아래에 설명하는 해석을 제외하고는 그 행동을 설명하기가 어려울 것이라고 말한다. –
나는 잃어버린 감정을 이해할 수 있도록 MusicPlayer와 상당히 씨름 해 왔습니다! 템포, 연주 속도에 대해 특별한 것은 없습니까? 다른 것을 생각할 수는 없습니다. –
미디 파일은 너무 간단하기 때문에 그다지 잘못되어 있지는 않습니다.하지만 여기서는 스스로 판단하십시오 : https://dl.dropbox.com/u/3916368/01010111.mid. 처음으로 재생 한 후 1 초가 지나면 다시 시작하도록 알려주십시오. 감사합니다 –