aboutsummaryrefslogtreecommitdiff
path: root/examples/lpipe.pd_lua
diff options
context:
space:
mode:
Diffstat (limited to 'examples/lpipe.pd_lua')
-rw-r--r--examples/lpipe.pd_lua30
1 files changed, 30 insertions, 0 deletions
diff --git a/examples/lpipe.pd_lua b/examples/lpipe.pd_lua
new file mode 100644
index 0000000..3399476
--- /dev/null
+++ b/examples/lpipe.pd_lua
@@ -0,0 +1,30 @@
+-- reimplementation of [pipe] for any message
+-- claude(+fbar) 2008
+
+local M = pd.Class:new():register("lpipe")
+
+function M:initialize(name, atoms)
+ self.inlets = 2
+ self.outlets = 1
+ self.nextID = 0
+ return true
+end
+
+function M:in_2_float(f)
+ self.deltatime = math.max(0, f)
+end
+
+function M:in_1(sel, atoms)
+ -- we need unique method names for our clock callbacks
+ self.nextID = self.nextID + 1
+ local id = "trigger" .. self.nextID
+ local clock = pd.Clock:new():register(self, id)
+ -- the clock callback outlets the data and cleans up
+ self[id] = function(self)
+ self:outlet(1, sel, atoms)
+ clock:destruct()
+ self[id] = nil
+ end
+ -- now start the clock
+ clock:delay(self.deltatime)
+end