summaryrefslogtreecommitdiff
path: root/scripts/s_plugin_automation.lua
blob: e69de6662a760f7b8500cfa3fb0a6dde0d35971a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
ardour { ["type"] = "Snippet", name = "plugin automation2" }

function factory () return function ()
	local playhead = Session:transport_frame ()
	local samplerate = Session:nominal_frame_rate ()

	local r = Session:route_by_remote_id(3)
	-- get AutomationControList, ControlList and ParameterDescriptor
	local acl, cl, pd = ARDOUR.LuaAPI.plugin_automation (r:nth_plugin (0), 0)

	if not acl:isnil() then
		print ("Parameter Range", pd.lower, pd.upper)
		print ("Current value", cl:eval(playhead))

		-- prepare undo operation
		Session:begin_reversible_command ("Automatix")
		local before = acl:get_state()

		-- remove future automation
		cl:truncate_end (playhead)

		-- add new data points after the playhead 1 sec min..max
		-- without guard-points, but with initial (..., false, true)
		for i=0,10 do
			cl:add (playhead + i * samplerate / 10,
				 pd.lower + math.sqrt (i / 10) * (pd.upper - pd.lower),
				 false, true)
		end

		-- save undo
		local after = acl:get_state()
		Session:add_command (acl:memento_command(before, after))
		Session:commit_reversible_command (nil)
	end
end end