diff --git a/__init__.py b/__init__.py index f3c04ff570550055a8dac56a05e8212172109a06..c3ee53a6cee8844dc626351d901c839e56550046 100755 --- a/__init__.py +++ b/__init__.py @@ -40,6 +40,8 @@ class EndlessSequencer(Application): # 'close.wav' ] self.current_sample = None self.current_note = 0 + self.startTime = time.ticks_ms() + self.bpm = 120 #self.sample_names = ['kick.wav', 'snare.wav', 'cowbell.wav', 'hihat.wav', 'silence.wav'] #self.app_path = '/flash/sys/apps/seq/' @@ -135,6 +137,7 @@ class EndlessSequencer(Application): print(' seq {}'.format(self.sample_names[sample_id])) self.notes.append(sample_id) self.play_sample(sample_id) + time.sleep(0.2) # Light petal for i in range(10): @@ -162,25 +165,35 @@ class EndlessSequencer(Application): if len(self.notes) > 0 and not ct.petals[0].pressed: self.play_seq() + def next_bpm(self): + # taken from binarybrain code + beatTime = 60.0 * 1000.0 / self.bpm + curRelTime = time.ticks_diff(time.ticks_ms(), self.startTime) + return curRelTime / beatTime > 1 + def play_sample(self, i): self.current_sample = i if i < len(self.samples): if self.DEBUG and i in self.sample_names: print (self.sample_names[i]) self.samples[i].signals.trigger.start() - time.sleep(0.2) def play_seq(self): if self.DEBUG: print("PLAY SEQ") - if self.current_note == len(self.notes): self.current_note = 0 + if self.next_bpm(): + self.startTime = time.ticks_ms() + if self.current_note == len(self.notes): self.current_note = 0 - if self.DEBUG: - print(" play note {}".format(i)) - self.play_sample(self.notes[self.current_note]) + if self.DEBUG: + print(" play note {}".format(i)) - self.current_note += 1 + self.play_sample(self.notes[self.current_note]) + self.current_note += 1 + else: + if self.DEBUG: + print(" wait") if __name__ == "__main__": import st3m.run