File: lpipe.pd_lua

package info (click to toggle)
pd-lua 0.12.23%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,912 kB
  • sloc: ansic: 3,733; lisp: 66; makefile: 64
file content (30 lines) | stat: -rw-r--r-- 1,970 bytes parent folder | download | duplicates (7)
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