diff options
Diffstat (limited to 'examples/lpipe.pd_lua')
-rw-r--r-- | examples/lpipe.pd_lua | 30 |
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 |