diff options
Diffstat (limited to 'interface/render.py')
-rw-r--r-- | interface/render.py | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/interface/render.py b/interface/render.py index be7d770..7f8d3f1 100644 --- a/interface/render.py +++ b/interface/render.py @@ -44,11 +44,11 @@ class Renderer: with self._lock: self._running = False - def set_functions(self, f): + def set_functions(self, *args): with self._lock: if self._running: raise ValueError("Can't change while running") - self._functions, self._data = [i[0] for i in f], [i[1] for i in f] + self._functions, self._data = [i[0] for i in args], [i[1] for i in args] @property def time(self): @@ -74,7 +74,7 @@ class Renderer: next_ap = [] if self._callback is not None: - self._callback(t, self._values) + self._callback(self._current, self._values) ## FIXME: Cleanup finished audio players? ## FIXME: Handle audio fades and jumps @@ -118,6 +118,20 @@ class Renderer: ## END locked block time.sleep(max(0, next_t - time.monotonic())) + def advance(self, *args): + with self._lock: + if self._run_thread is None: + raise ValueError("Not running") + for a in args: + if isinstance(a, int): + p = None + else: + a, p = a + f = self._functions[a] + t = int(1000*self._current) + d = f.advance(t, self._data[a], n=p) + _, _, self._data[a] = f.render(t, d) + def __init__(self, w: Workspace, w_lock: threading.RLock, output, callback=None): self.output = output self.w = w |