summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-10-12 20:08:39 +0200
committerRobin Gareus <robin@gareus.org>2016-10-12 20:08:55 +0200
commite4edd8e60292048e79002d59e348fadc36781669 (patch)
treea0fd86fb70325e420bae0c1319590a92c9867efe /scripts
parent0b51d760ad4ca65c1bc9fa57a9d7f6a9ee6e5aab (diff)
Clarify documentation of Lua inter-processor communication
Diffstat (limited to 'scripts')
-rw-r--r--scripts/_dsp_plugin_communication.lua13
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