diff options
author | Robin Gareus <robin@gareus.org> | 2016-10-12 20:08:39 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2016-10-12 20:08:55 +0200 |
commit | e4edd8e60292048e79002d59e348fadc36781669 (patch) | |
tree | a0fd86fb70325e420bae0c1319590a92c9867efe /scripts | |
parent | 0b51d760ad4ca65c1bc9fa57a9d7f6a9ee6e5aab (diff) |
Clarify documentation of Lua inter-processor communication
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/_dsp_plugin_communication.lua | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/scripts/_dsp_plugin_communication.lua b/scripts/_dsp_plugin_communication.lua index 0df16a7ab0..e422e08cca 100644 --- a/scripts/_dsp_plugin_communication.lua +++ b/scripts/_dsp_plugin_communication.lua @@ -21,9 +21,10 @@ function dsp_run (ins, outs, n_samples) local route = self:route () local shmem = self:shmem () + -- count plugins local i = 0; local l = 0; - local s = -1; + local s = -1; -- 'self' this plugin instance -- iterate overall plugins on this track, -- find all LuaProc instances of this plugin (unique_id), @@ -33,12 +34,16 @@ function dsp_run (ins, outs, n_samples) and not proc:to_insert():plugin (0):to_luaproc():isnil () and proc:to_insert():plugin (0):unique_id () == self:unique_id () then if (self:id ():to_s() == proc:to_insert():plugin (0):id ():to_s()) then - s = l; -- this plugin instance + s = l; -- *this* plugin instance end if l == 0 then + -- use shared-memory are of the first plugin instance for all. + -- + -- (the first plugin writes there, all later plugins only read, + -- plugins on a track are executed in order, in the same thread) shmem = proc:to_insert():plugin (0):to_luaproc():shmem () end - l = l + 1 -- count total instances of this plugin + l = l + 1 -- count total instances of this plugin-type end i = i + 1 until proc:isnil () @@ -55,6 +60,8 @@ function dsp_run (ins, outs, n_samples) peak = ARDOUR.DSP.compute_peak(outs[c], n_samples, peak) end + + -- actual inter-plugin communication local a = shmem:to_float (0):array () if s == 0 then -- the first plugin saves the peak |