]> git.immae.eu Git - perso/Immae/Projets/Python/MusicSampler.git/blobdiff - helpers/music_file.py
Add interrupt_wait action
[perso/Immae/Projets/Python/MusicSampler.git] / helpers / music_file.py
index aef0adce00c4f55f539b67dd07479bdae7327b7e..b0e218fb77856917e8361cfcde5c231ce8577215 100644 (file)
@@ -70,7 +70,8 @@ class MusicFile(Machine):
         ]
 
         Machine.__init__(self, states=states,
-                transitions=transitions, initial='initial')
+                transitions=transitions, initial='initial',
+                ignore_invalid_triggers=True)
 
         self.volume = 100
         self.mapping = mapping
@@ -258,7 +259,7 @@ class MusicFile(Machine):
         self.gain_effects = []
         self.set_gain(db_gain)
 
-    def stop(self, fade_out=0, wait=False):
+    def stop(self, fade_out=0, wait=False, set_wait_id=None):
         if self.is_loaded_playing():
             ms = int(self.sound_position * 1000)
             ms_fo = max(1, int(fade_out * 1000))
@@ -269,6 +270,8 @@ class MusicFile(Machine):
                 self.current_audio_segment = new_audio_segment
             self.stop_playing()
             if wait:
+                if set_wait_id is not None:
+                    self.mapping.add_wait_id(set_wait_id, self.wait_event)
                 self.wait_end()
         else:
             self.stop_playing()
@@ -288,6 +291,9 @@ class MusicFile(Machine):
                 value + int(delta) * self.volume,
                 self.volume)
 
+        if not (self.is_loaded_playing() or self.is_loaded_paused()):
+            return
+
         if fade > 0:
             self.gain_effects.append(GainEffect(
                 "fade",