Make sure loop is set correctly when replacing audio. Also check playback tempo.
This commit is contained in:
@@ -89,12 +89,15 @@ class Playback(Event):
|
|||||||
self._gain = 10**(gain/10) # Convert from dB to linear gain
|
self._gain = 10**(gain/10) # Convert from dB to linear gain
|
||||||
self._fadecurve = None
|
self._fadecurve = None
|
||||||
self._fadeframe = 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):
|
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)
|
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):
|
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):
|
# def start(self):
|
||||||
# print("Start playback")
|
# print("Start playback")
|
||||||
@@ -183,12 +186,12 @@ class Playback(Event):
|
|||||||
# We really should check that the media is the sampe shape as the
|
# We really should check that the media is the sampe shape as the
|
||||||
# existing playback. But for now, let's trust the user. *cough*
|
# 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':
|
if message == 'fadeout':
|
||||||
self._fadecurve = np.logspace(0, -db/10, fadetime * self._fs)
|
self._fadecurve = np.logspace(0, -db/10, fadetime * self._fs)
|
||||||
self._fadeframe = 0
|
self._fadeframe = 0
|
||||||
elif message == 'replaceplayback':
|
elif message == 'replaceplayback':
|
||||||
self.replace(media, delay, setmark=setmark)
|
self.replace(media, delay, loop=loop, setmark=setmark)
|
||||||
elif message == 'endloop':
|
elif message == 'endloop':
|
||||||
self._loop = False
|
self._loop = False
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user