Update script to use new process_map() API

This commit is contained in:
Robin Gareus 2020-02-26 17:48:25 +01:00
parent 65425b9fe2
commit 28accee44e
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04
3 changed files with 16 additions and 7 deletions

View File

@ -11,6 +11,11 @@ function dsp_ioconfig ()
return { { midi_in = 1, midi_out = 1, audio_in = -1, audio_out = -1}, }
end
function dsp_configure (ins, outs)
n_out = outs
n_out:set_midi (0)
end
function dsp_runmap (bufs, in_map, out_map, n_samples, offset)
local ob = out_map:get (ARDOUR.DataType ("midi"), 0)
if ob ~= ARDOUR.ChanMapping.Invalid then
@ -28,7 +33,5 @@ function dsp_runmap (bufs, in_map, out_map, n_samples, offset)
ba:add ({0x80, 64, 127})
mb:push_back (n_samples - 1 - offset, ba:size (), ba:to_array());
end
-- passthrough audio, apply pin/channel mapping
ARDOUR.DSP.process_map (bufs, in_map, out_map, n_samples, offset, ARDOUR.DataType ("audio"))
ARDOUR.DSP.process_map (bufs, n_out, in_map, out_map, n_samples, offset)
end

View File

@ -14,6 +14,10 @@ function dsp_ioconfig ()
return { { midi_in = 1, midi_out = 1, audio_in = -1, audio_out = -1}, }
end
function dsp_configure (ins, outs)
n_out = outs
end
-- "dsp_runmap" uses Ardour's internal processor API, eqivalent to
-- 'connect_and_run()". There is no overhead (mapping, translating buffers).
-- The lua implementation is responsible to map all the buffers directly.
@ -41,8 +45,7 @@ function dsp_runmap (bufs, in_map, out_map, n_samples, offset)
-- The following code is needed with "dsp_runmap" to work for arbitrary pin connections
-- this passes though all audio/midi data unprocessed.
ARDOUR.DSP.process_map (bufs, in_map, out_map, n_samples, offset, ARDOUR.DataType ("audio"))
ARDOUR.DSP.process_map (bufs, in_map, out_map, n_samples, offset, ARDOUR.DataType ("midi"))
ARDOUR.DSP.process_map (bufs, n_out, in_map, out_map, n_samples, offset)
-- equivalent lua code.
-- NOTE: the lua implementation below is intended for io-config [-1,-1].

View File

@ -54,13 +54,16 @@ function dsp_init (rate)
end
end
function dsp_configure (ins, outs)
n_out = outs
end
function dsp_runmap (bufs, in_map, out_map, n_samples, offset)
local pos = self:shmem():atomic_get_int(0)
local buffer = self:shmem():to_int(1):array()
-- passthrough all data
ARDOUR.DSP.process_map (bufs, in_map, out_map, n_samples, offset, ARDOUR.DataType ("audio"))
ARDOUR.DSP.process_map (bufs, in_map, out_map, n_samples, offset, ARDOUR.DataType ("midi"))
ARDOUR.DSP.process_map (bufs, n_out, in_map, out_map, n_samples, offset)
-- then fill the event buffer
local ib = in_map:get (ARDOUR.DataType ("midi"), 0) -- index of 1st midi input