diff options
Diffstat (limited to 'examples/ldelay.pd_lua')
-rw-r--r-- | examples/ldelay.pd_lua | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/examples/ldelay.pd_lua b/examples/ldelay.pd_lua new file mode 100644 index 0000000..4e310e3 --- /dev/null +++ b/examples/ldelay.pd_lua @@ -0,0 +1,43 @@ +-- reimplementation of [delay] in Lua to test clock support + +local LDelay = pd.Class:new():register("ldelay") + +function LDelay:initialize(name, atoms) + if type(atoms[1]) ~= "number" or atoms[1] < 0 then + self.delay = 1000 + else + self.delay = atoms[1] + end + self.inlets = 2 + self.outlets = 1 + return true +end + +function LDelay:postinitialize() + self.clock = pd.Clock:new():register(self, "trigger") +end + +function LDelay:finalize() + self.clock:destruct() +end + +function LDelay:in_2_float(f) + self.delay = math.max(0, f) +end + +function LDelay:in_1_float(f) + self:in_2_float(f) + self:in_1_bang() +end + +function LDelay:in_1_bang() + self.clock:delay(self.delay) +end + +function LDelay:in_1_stop() + self.clock:unset() +end + +function LDelay:trigger() + self:outlet(1, "bang", {}) +end |