aboutsummaryrefslogtreecommitdiff
path: root/examples/lpipe.pd_lua
blob: 33994768b2905efa8f934c02038ec012ef7c6560 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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