2016-04-11 08:36:57 -04:00
|
|
|
ardour { ["type"] = "Snippet", name = "Plugin automation" }
|
2016-04-10 14:57:24 -04:00
|
|
|
|
|
|
|
function factory () return function ()
|
2016-04-11 08:36:57 -04:00
|
|
|
-- query playhead position and session sample-rate
|
2022-09-27 12:58:53 -04:00
|
|
|
local playhead = Temporal.timepos_t (Session:transport_sample ())
|
|
|
|
local samplerate = Temporal.timecnt_t (Session:nominal_sample_rate ())
|
2016-04-10 14:57:24 -04:00
|
|
|
|
2016-04-11 08:36:57 -04:00
|
|
|
-- get Track/Bus with RID 3
|
2016-05-31 17:51:05 -04:00
|
|
|
local r = Session:get_remote_nth_route(3)
|
2016-04-11 08:36:57 -04:00
|
|
|
-- make sure the track object exists
|
|
|
|
assert (not r:isnil ())
|
2016-04-10 14:57:24 -04:00
|
|
|
|
2016-04-11 08:36:57 -04:00
|
|
|
-- get AutomationList, ControlList and ParameterDescriptor
|
|
|
|
-- of the first plugin's first parameter
|
|
|
|
-- see http://manual.ardour.org/lua-scripting/class_reference/#ARDOUR:LuaAPI
|
|
|
|
local al, cl, pd = ARDOUR.LuaAPI.plugin_automation (r:nth_plugin (0), 0)
|
|
|
|
|
|
|
|
if not al:isnil () then
|
2016-04-10 14:57:24 -04:00
|
|
|
print ("Parameter Range", pd.lower, pd.upper)
|
2016-04-11 08:36:57 -04:00
|
|
|
print ("Current value", cl:eval (playhead))
|
2016-04-10 14:57:24 -04:00
|
|
|
|
|
|
|
-- prepare undo operation
|
|
|
|
Session:begin_reversible_command ("Automatix")
|
2016-04-11 08:36:57 -04:00
|
|
|
-- remember current AutomationList state
|
|
|
|
local before = al:get_state()
|
2016-04-10 14:57:24 -04:00
|
|
|
|
|
|
|
-- remove future automation
|
|
|
|
cl:truncate_end (playhead)
|
|
|
|
|
2016-04-11 08:36:57 -04:00
|
|
|
-- add new data points after the playhead 1 sec, min..max
|
2016-04-10 14:57:24 -04:00
|
|
|
-- without guard-points, but with initial (..., false, true)
|
|
|
|
for i=0,10 do
|
2022-09-27 12:58:53 -04:00
|
|
|
cl:add (playhead + samplerate:scale (Temporal.ratio (i, 10)),
|
2016-04-10 14:57:24 -04:00
|
|
|
pd.lower + math.sqrt (i / 10) * (pd.upper - pd.lower),
|
|
|
|
false, true)
|
|
|
|
end
|
|
|
|
|
|
|
|
-- save undo
|
2016-04-11 08:36:57 -04:00
|
|
|
local after = al:get_state()
|
|
|
|
Session:add_command (al:memento_command(before, after))
|
2016-04-10 14:57:24 -04:00
|
|
|
Session:commit_reversible_command (nil)
|
|
|
|
end
|
|
|
|
end end
|