Example convolution plugin (Lua script, hardcoded IR)
This commit is contained in:
parent
4c02780262
commit
bfc35e514b
57
scripts/_convolv.lua
Normal file
57
scripts/_convolv.lua
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
ardour { ["type"] = "dsp", name = "Lua Convolver", license = "MIT", author = "Ardour Lua Task Force", description = [[Another simple DSP example]] }
|
||||||
|
|
||||||
|
function dsp_ioconfig () return
|
||||||
|
{
|
||||||
|
{ audio_in = 1, audio_out = 1},
|
||||||
|
{ audio_in = 1, audio_out = 2},
|
||||||
|
{ audio_in = 2, audio_out = 2},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
local conv, mode, ir_file
|
||||||
|
|
||||||
|
ir_file = "/tmp/reverbs/St Nicolaes Church.wav"
|
||||||
|
ir_file = "/tmp/reverbs/Large Wide Echo Hall.wav"
|
||||||
|
|
||||||
|
function dsp_configure (ins, outs)
|
||||||
|
if outs:n_audio() == 1 then
|
||||||
|
assert (ins:n_audio() == 1)
|
||||||
|
mode = ARDOUR.DSP.IRChannelConfig.Mono
|
||||||
|
elseif ins:n_audio() == 1 then
|
||||||
|
assert (outs:n_audio() == 2)
|
||||||
|
mode = ARDOUR.DSP.IRChannelConfig.MonoToStereo
|
||||||
|
else
|
||||||
|
assert (ins:n_audio() == 2)
|
||||||
|
assert (outs:n_audio() == 2)
|
||||||
|
mode = ARDOUR.DSP.IRChannelConfig.Stereo
|
||||||
|
end
|
||||||
|
|
||||||
|
conv = ARDOUR.DSP.Convolver (Session, ir_file, mode, 0)
|
||||||
|
collectgarbage ()
|
||||||
|
end
|
||||||
|
|
||||||
|
function dsp_latency ()
|
||||||
|
if conv then
|
||||||
|
return conv:latency()
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- the DSP callback function to process audio audio
|
||||||
|
-- "ins" and "outs" are http://manual.ardour.org/lua-scripting/class_reference/#C:FloatArray
|
||||||
|
function dsp_run (ins, outs, n_samples)
|
||||||
|
assert (#ins <= #outs)
|
||||||
|
|
||||||
|
for c = 1, #ins do
|
||||||
|
if ins[c] ~= outs[c] then -- if processing is not in-place..
|
||||||
|
ARDOUR.DSP.copy_vector (outs[c], ins[c], n_samples) -- ..copy data from input to output.
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if #outs == 1 then
|
||||||
|
conv:run (outs[1], n_samples)
|
||||||
|
else
|
||||||
|
conv:run_stereo (outs[1], outs[2], n_samples)
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user