summaryrefslogtreecommitdiff
path: root/interface/render.py
diff options
context:
space:
mode:
authorBen Connors <benconnors@outlook.com>2019-10-30 21:29:03 -0400
committerBen Connors <benconnors@outlook.com>2019-10-30 21:29:03 -0400
commit51e723e688a4bdead12bb56d5e6dc59c5d5aef88 (patch)
treedda6436e26da47248803685fcd285e8eef2b4344 /interface/render.py
parent2ffa83443b2333bef73f391517767259ad033495 (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.py20
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