aboutsummaryrefslogtreecommitdiff
path: root/music_sampler/mapping.py
diff options
context:
space:
mode:
Diffstat (limited to 'music_sampler/mapping.py')
-rw-r--r--music_sampler/mapping.py33
1 files changed, 28 insertions, 5 deletions
diff --git a/music_sampler/mapping.py b/music_sampler/mapping.py
index 99c9977..9e40d40 100644
--- a/music_sampler/mapping.py
+++ b/music_sampler/mapping.py
@@ -206,15 +206,17 @@ class Mapping(RelativeLayout):
206 self.wait_ids[None] = [] 206 self.wait_ids[None] = []
207 self.wait_ids[None].append(action_or_wait) 207 self.wait_ids[None].append(action_or_wait)
208 208
209 def interrupt_wait(self, wait_id=None): 209 def matching_wait_ids(self, wait_id=None):
210 if wait_id is None: 210 if wait_id is None:
211 ids_to_interrupt = list(self.wait_ids.keys()) 211 matching_ids = list(self.wait_ids.keys())
212 elif wait_id in self.wait_ids: 212 elif wait_id in self.wait_ids:
213 ids_to_interrupt = [wait_id] 213 matching_ids = [wait_id]
214 else: 214 else:
215 ids_to_interrupt = [] 215 matching_ids = []
216 return matching_ids
216 217
217 for _wait_id in ids_to_interrupt: 218 def interrupt_wait(self, wait_id=None):
219 for _wait_id in self.matching_wait_ids(wait_id=wait_id):
218 action_or_waits = self.wait_ids[_wait_id] 220 action_or_waits = self.wait_ids[_wait_id]
219 del(self.wait_ids[_wait_id]) 221 del(self.wait_ids[_wait_id])
220 for action_or_wait in action_or_waits: 222 for action_or_wait in action_or_waits:
@@ -223,6 +225,27 @@ class Mapping(RelativeLayout):
223 else: 225 else:
224 action_or_wait.set() 226 action_or_wait.set()
225 227
228 def pause_wait(self, wait_id=None):
229 for _wait_id in self.matching_wait_ids(wait_id=wait_id):
230 action_or_waits = self.wait_ids[_wait_id]
231 for action_or_wait in action_or_waits:
232 if isinstance(action_or_wait, Action):
233 action_or_wait.pause()
234
235 def unpause_wait(self, wait_id=None):
236 for _wait_id in self.matching_wait_ids(wait_id=wait_id):
237 action_or_waits = self.wait_ids[_wait_id]
238 for action_or_wait in action_or_waits:
239 if isinstance(action_or_wait, Action):
240 action_or_wait.unpause()
241
242 def reset_wait(self, wait_id=None):
243 for _wait_id in self.matching_wait_ids(wait_id=wait_id):
244 action_or_waits = self.wait_ids[_wait_id]
245 for action_or_wait in action_or_waits:
246 if isinstance(action_or_wait, Action):
247 action_or_wait.reset()
248
226 # Methods to control running keys 249 # Methods to control running keys
227 def start_running(self, key, start_time): 250 def start_running(self, key, start_time):
228 self.running.append((key, start_time)) 251 self.running.append((key, start_time))