diff --git a/pico-cp/__pycache__/app.cpython-312.pyc b/pico-cp/__pycache__/app.cpython-312.pyc index 191ef5e..c6a226a 100644 Binary files a/pico-cp/__pycache__/app.cpython-312.pyc and b/pico-cp/__pycache__/app.cpython-312.pyc differ diff --git a/pico-cp/app.py b/pico-cp/app.py index 7d51def..2df5f11 100644 --- a/pico-cp/app.py +++ b/pico-cp/app.py @@ -820,9 +820,11 @@ class App: self._prepare_next() if self.bars and bar > 0 and bar % self.bars == 0: # segment boundary self._seg_start = time.monotonic() # timer resets with the bar counter - if self.continue_on and self._next_pending is not None: - self._seam_t = self.lanes[0]['next'] # the wall-clock time of THIS boundary step - self._advance = True # tick() will swap to the prepared track + if self.continue_on: + if self._next_pending is None: self._prepare_next() # late-toggled Continue: prep on the spot + if self._next_pending is not None: + self._seam_t = self.lanes[0]['next'] # the wall-clock time of THIS boundary step + self._advance = True # tick() will swap to the prepared track # Note: per-master-step continuous ramp handles the bpm reset implicitly (seg_bar wraps to 0) t = self.trainer # gap trainer: silence during the rest bars self._muted = bool(t and (t['play'] + t['mute']) and (bar % (t['play'] + t['mute'])) >= t['play'])