6 author = "Ardour Lua Task Force",
7 description = [[An Example Filter Plugin]]
10 function dsp_ioconfig ()
13 { audio_in = 1, audio_out = 1},
17 function dsp_params ()
20 { ["type"] = "input", name = "Base Freq", min = 10, max = 1000, default = 100, unit="Hz", logarithmic = true },
21 { ["type"] = "input", name = "Quality", min = 1.0, max = 16.0, default = 8.0 },
22 { ["type"] = "input", name = "Stages", min = 1.0, max = 20, default = 6.0, integer = true },
26 local filters = {} -- the biquad filter instances
30 function dsp_init (rate)
32 filters[i] = ARDOUR.DSP.Biquad (rate)
36 function dsp_run (ins, outs, n_samples)
38 assert (n_samples < 8192)
40 -- this is quick/dirty: no declick, no de-zipper, no latency reporting,...
41 -- and no documentation :)
43 local ctrl = CtrlPorts:array() -- get control parameters
44 if freq ~= ctrl[1] or bw ~= ctrl[2] then
48 filters[i]:compute (ARDOUR.DSP.BiquadType.Notch, freq * i, bw, 0)
52 if not ins[1]:sameinstance (outs[1]) then
53 ARDOUR.DSP.copy_vector (outs[1], outs[1], n_samples)
56 local stages = math.floor (ctrl['3'])
57 if stages < 1 then stages = 1; end
58 if stages > 20 then stages = 20; end
61 filters[i]:run (outs[1], n_samples)