iOS 5 で CoreAudio を使用して MIDI ファイルを再生しています。再生中にシーケンスを最初からやり直したい場合を除いて、すべてがセットアップされ、機能し、すべてが桃色です。それを行うために、私は自然に次のように呼びます:
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 ファイルから 2 つの MusicSequence を作成し、一方から他方に切り替えるという極端な作業を行いました。iOS は、私が同じファイルを 2 回再生したいことを認識しており、それを禁止しています。もう一度再生するには、シーケンスが完全に再生されるまで待つ必要があります。当惑する。
何か案が?
ありがとう