|
@@ -83,7 +83,36 @@ bool BeatSequencePlayer::isPlaying()
|
|
|
|
|
|
void BeatSequencePlayer::beat(void* data)
|
|
|
{
|
|
|
- std::cout << "beat" << std::endl;
|
|
|
+ BeatSequencePlayer& player = *(BeatSequencePlayer*)data;
|
|
|
+
|
|
|
+ if(player.sequence) {
|
|
|
+ BeatIndex beat = player.getNextBeat();
|
|
|
+ if(beat >= player.sequence->size()) {
|
|
|
+ if(player.getLooping() && player.sequence->size() > 0) {
|
|
|
+ beat = 0;
|
|
|
+ } else {
|
|
|
+ player.clock.stop();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(beat < player.sequence->size()) {
|
|
|
+
|
|
|
+ std::cout << "beat #" << beat << std::endl;
|
|
|
+
|
|
|
+ if(beat + 1 == player.sequence->size()) {
|
|
|
+ if(player.getLooping()) {
|
|
|
+ player.setNextBeat(0);
|
|
|
+ } else {
|
|
|
+ player.clock.stop();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ player.setNextBeat(beat + 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if(!player.getLooping()) {
|
|
|
+ player.clock.stop();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
} // namespace
|