diff --git a/events.py b/events.py index bae41e7..7f18c7c 100644 --- a/events.py +++ b/events.py @@ -89,12 +89,15 @@ class Playback(Event): self._gain = 10**(gain/10) # Convert from dB to linear gain self._fadecurve = None self._fadeframe = None + if (tempo is not None) != (beats is not None): + raise ValueError("Playback object must have both tempo and beats, or neither.") def __repr__(self): return '{}(at={}, media={}, device={}, tempo={}, beats={}, leadin={}, loop={}, gain={})'.format(type(self).__name__, self._at, self._media, self._device, self._tempo, self._beats, self._leadin, self._loop, self._gain) def prepare(self): - self._at._timings.register_tempo(self._tempo, self._beats, self._at) + if self._tempo is not None: + self._at._timings.register_tempo(self._tempo, self._beats, self._at) # def start(self): # print("Start playback") @@ -183,12 +186,12 @@ class Playback(Event): # We really should check that the media is the sampe shape as the # existing playback. But for now, let's trust the user. *cough* - def notify(self, message, fadetime=10, db=30, media=None, delay=False, setmark=None, *args, **kwargs): + def notify(self, message, fadetime=10, db=30, media=None, delay=False, loop=False, setmark=None, *args, **kwargs): if message == 'fadeout': self._fadecurve = np.logspace(0, -db/10, fadetime * self._fs) self._fadeframe = 0 elif message == 'replaceplayback': - self.replace(media, delay, setmark=setmark) + self.replace(media, delay, loop=loop, setmark=setmark) elif message == 'endloop': self._loop = False