MIDI を読み取り、音楽に合わせてキーボードに音符を表示する iPad iOS 5 用のプログラムがあります。正常に動作しますが、タイムスタンプ A からタイムスタンプ B までのセクションを何度も繰り返す「リピートセクション」機能を追加しようとしています。
タイムスタンプを繰り返しセクションの境界として機能させることができましたが、繰り返しを適切に機能させるのに問題があります。セクションをリピートしようとすると、キーボード アニメーションが表示されなくなります。この問題にはハイパースレッディングが必要になると感じていますが、よくわかりません。以下にやりたいことを疑似コードで概説しました。
//Start Repeat Method
while (the repeat switch is toggled) {
Stop music player.
Set music player to the start point of the repeat.
while (the current play point is before the end point of the repeat) {
Check the current play point.
}
}
//End Repeat Method
基本的に、私がやりたいことは、ユーザーがスイッチをオフにするまで何度も呼び出されるスイッチを押したときにメソッドがトリガーされるようにすることです。このメソッドでは、プレーヤーを停止し、リピートの開始点に設定し、リピートの最後に到達するまでリピートを再生してから、メソッドを最初からやり直します。
この部分がこれほどトリッキーになるとは思いませんでした。私が抱えているもう1つの問題は、これをスイッチに接続すると、スイッチをオフにすることができず、永遠に続くことです.
アドバイスをいただきありがとうございます。
**編集
これが私がこれまでに持っているものです。セクションをループできますが、アニメーションが表示され、UI を操作できず、Xcode の停止ボタンでプログラムを終了する必要があります。
- (IBAction)playRepeat:(id)sender {
if (repeatToggle.on) {
MusicPlayerStop(player);
playerIsPlaying = NO;
MusicPlayerSetTime(player, sequenceRepeatStartTime);
moviePlayerViewController.moviePlayer.currentPlaybackTime = rollRepeatStartTime;
MusicPlayerStart(player);
[moviePlayerViewController.moviePlayer play];
playerIsPlaying = YES;
float difference = rollRepeatEndTime - rollRepeatStartTime;
[NSThread sleepForTimeInterval:difference];
MusicPlayerStop(player);
playerIsPlaying = NO;
[moviePlayerViewController.moviePlayer pause];
[self playRepeat:sender];
}
else if (!repeatToggle.on) {
MusicPlayerStop(player);
playerIsPlaying = NO;
}
}