summaryrefslogtreecommitdiff
path: root/interface
diff options
context:
space:
mode:
authorBen Connors <benconnors@outlook.com>2019-11-08 17:08:02 -0500
committerBen Connors <benconnors@outlook.com>2019-11-08 17:08:02 -0500
commit1884a5197fbdf98bdaebafe2b25e3a7181967e30 (patch)
treef52cf449c61296970427570e2995a3dacdf5b3db /interface
parent1f037f48e5badab2b758c4b9bd0541c5ccda7b3f (diff)
Move to OLA rendering; bugfix
- Chaser.advance not using proper audio ID - Add OLA renderer as main one
Diffstat (limited to 'interface')
-rw-r--r--interface/__main__.py4
-rw-r--r--interface/ola.py22
2 files changed, 24 insertions, 2 deletions
diff --git a/interface/__main__.py b/interface/__main__.py
index 64b47cd..712b746 100644
--- a/interface/__main__.py
+++ b/interface/__main__.py
@@ -3,9 +3,9 @@ import os
import sys
from .interface import Interface
-from .dummy import DummyOutput
+from .ola import OLAOutput
if len(sys.argv) > 2:
raise ValueError("Usage: %s [workspace file]" % sys.argv[0])
-Interface(sys.argv[1] if len(sys.argv) == 2 else None, DummyOutput()).main()
+Interface(sys.argv[1] if len(sys.argv) == 2 else None, OLAOutput()).main()
diff --git a/interface/ola.py b/interface/ola.py
new file mode 100644
index 0000000..445b991
--- /dev/null
+++ b/interface/ola.py
@@ -0,0 +1,22 @@
+import array
+
+from ola.OlaClient import OlaClient
+
+class OLAOutput:
+ def set_values(self, values):
+ send = set()
+ for c, v in values.items():
+ univ, addr = c.address
+ if univ not in self.universes:
+ self.universes[univ] = array.array('B', (0 for i in range(512)))
+ uni = self.universes[univ]
+ if uni[addr] != v:
+ uni[addr] = v
+ send.add(univ)
+ for univ in send:
+ self.client.SendDmx(univ, self.universes[univ])
+
+ def __init__(self):
+ self.client = OlaClient()
+
+ self.universes = {1: array.array('B', (0 for i in range(512)))}