Преглед изворни кода

beat player: before and after event

Fabian Peter Hammerle пре 10 година
родитељ
комит
b7f508e7ce
2 измењених фајлова са 17 додато и 1 уклоњено
  1. 13 1
      BeatSequencePlayer.cpp
  2. 4 0
      BeatSequencePlayer.h

+ 13 - 1
BeatSequencePlayer.cpp

@@ -86,6 +86,16 @@ bool BeatSequencePlayer::isPlaying()
     return clock.isRunning();
 }
 
+void BeatSequencePlayer::beforeBeat(BeatIndex beat)
+{
+    std::cout << "beat #" << beat << std::flush;
+}
+
+void BeatSequencePlayer::afterBeat(BeatIndex beat)
+{
+    std::cout << "\t" << beat << "!" << std::endl;
+}
+
 void BeatSequencePlayer::beat(void* data)
 {
     BeatSequencePlayer& player = *(BeatSequencePlayer*)data;
@@ -100,8 +110,8 @@ void BeatSequencePlayer::beat(void* data)
             }
         }
         if(beat < player.sequence->size()) {
+            player.beforeBeat(beat);
 
-            std::cout << "beat #" << beat << std::endl;
             const BeatSequence& seq = *player.sequence;
             const MessageList& messages = seq[beat];
             player.output->sendMessages(messages);
@@ -115,6 +125,8 @@ void BeatSequencePlayer::beat(void* data)
             } else {
                 player.setNextBeat(beat + 1);
             }
+    
+            player.afterBeat(beat);
         }
     } else {
         if(!player.getLooping()) {

+ 4 - 0
BeatSequencePlayer.h

@@ -38,6 +38,10 @@ public:
     void stop();
     bool isPlaying();
 
+protected:
+    virtual void beforeBeat(BeatIndex beat);
+    virtual void afterBeat(BeatIndex beat);
+
 private:
     static void beat(void* data);
 };