diff options
author | Ben Connors <benconnors@outlook.com> | 2019-10-30 21:29:03 -0400 |
---|---|---|
committer | Ben Connors <benconnors@outlook.com> | 2019-10-30 21:29:03 -0400 |
commit | 51e723e688a4bdead12bb56d5e6dc59c5d5aef88 (patch) | |
tree | dda6436e26da47248803685fcd285e8eef2b4344 /interface/render.py | |
parent | 2ffa83443b2333bef73f391517767259ad033495 (diff) |
Implement most of run mode
- Audio doesn't play the past the first time
- Advance is a bit late
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 |