Make sure loop is set correctly when replacing audio. Also check playback tempo.

This commit is contained in:
2026-09-17 20:35:49 +01:00
parent 985c46772b
commit 8149101edd

View File

@@ -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