summaryrefslogtreecommitdiff
path: root/dalos-tee.lua
diff options
context:
space:
mode:
Diffstat (limited to 'dalos-tee.lua')
-rw-r--r--dalos-tee.lua50
1 files changed, 50 insertions, 0 deletions
diff --git a/dalos-tee.lua b/dalos-tee.lua
new file mode 100644
index 0000000..b5193c0
--- /dev/null
+++ b/dalos-tee.lua
@@ -0,0 +1,50 @@
+dalosp.tee = {
+ NTEE = 16,
+
+ set_out = function (self, h, ind)
+ local name = h:getname()
+ local obj = {
+ h = h,
+ size = h:getsize(),
+ getname = function () return name end,
+ do_read = function (self, count, userdata)
+ self.h:seek(self.offset, SEEK_SET)
+ return self.h:read(count, userdata)
+ end,
+ }
+ self:set_houtput(dalos.luahandle(obj), ind)
+ end,
+
+ input_change = function (self, ind)
+ local h = self:get_linked_input(1)
+ if h then
+ self.color = cd.GREEN
+ for ind = 1, 16 do self:set_out(h, ind) end
+ self.dcanvas:draw()
+ else
+ self.color = cd.YELLOW
+ for i = 1, dalosp.tee.NTEE do
+ self:set_houtput(nil, i)
+ end
+ self.dcanvas:draw()
+ end
+ end,
+
+ create = function (d, tab, settings)
+ tab.ninputs = 1
+ tab.noutputs = dalosp.tee.NTEE
+ tab.otype = dalos.objtype.LUA_FILTER
+ tab.input_change = dalosp.tee.input_change
+ tab.default_name = "Tee"
+ tab.ntype = "Tee"
+
+ local obj = dalos.object(d, tab)
+
+ obj.set_out = dalosp.tee.set_out
+
+ return obj
+ end,
+}
+
+dalos.tee = dalosp.tee.create
+dalos:register_obj("Tee", dalos.tee, "Basic Filters")