mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-07 15:25:01 +01:00
update and cleanup lua example scripts
This commit is contained in:
parent
d21f202905
commit
baf6319613
6 changed files with 101 additions and 43 deletions
|
|
@ -1,46 +1,53 @@
|
|||
ardour { ["type"] = "Snippet", name = "fader automation" }
|
||||
ardour { ["type"] = "Snippet", name = "Fader Automation" }
|
||||
|
||||
function factory () return function ()
|
||||
local playhead = Session:transport_frame ()
|
||||
local samplerate = Session:nominal_frame_rate ()
|
||||
|
||||
-- get selected tracks
|
||||
rl = Editor:get_selection().tracks:routelist()
|
||||
rl = Editor:get_selection ().tracks:routelist ()
|
||||
|
||||
-- prepare undo operation
|
||||
Session:begin_reversible_command ("Fancy Fade Out")
|
||||
local add_undo = false -- keep track if something has changed
|
||||
|
||||
-- iterate over selected tracks
|
||||
for r in rl:iter() do
|
||||
local ac = r:amp():gain_control() -- ARDOUR:AutomationControl
|
||||
local acl = ac:alist() -- ARDOUR:AutomationControlList (state, high-level)
|
||||
local cl = acl:list() -- Evoral:ControlList (actual events)
|
||||
for r in rl:iter () do
|
||||
local ac = r:amp ():gain_control () -- ARDOUR:AutomationControl
|
||||
local al = ac:alist () -- ARDOUR:AutomationList (state, high-level)
|
||||
local cl = al:list () -- Evoral:ControlList (actual events)
|
||||
|
||||
ac:set_automation_state(ARDOUR.AutoState.Touch)
|
||||
|
||||
if cl:isnil() then
|
||||
if cl:isnil () then
|
||||
goto out
|
||||
end
|
||||
|
||||
-- set automation state to "Touch"
|
||||
ac:set_automation_state (ARDOUR.AutoState.Touch)
|
||||
|
||||
-- query the value at the playhead position
|
||||
local g = cl:eval(playhead)
|
||||
local g = cl:eval (playhead)
|
||||
|
||||
-- get state for undo
|
||||
local before = acl:get_state()
|
||||
local before = al:get_state ()
|
||||
|
||||
-- delete all events after the playhead...
|
||||
cl:truncate_end (playhead)
|
||||
|
||||
-- ...and generate some new ones.
|
||||
for i=0,50 do
|
||||
-- use a sqrt fade-out (the shape is recognizable, and otherwise
|
||||
-- not be possible to achieve with existing ardour fade shapes)
|
||||
cl:add (playhead + i * samplerate / 50,
|
||||
g * (1 - math.sqrt (i / 50)),
|
||||
false, true)
|
||||
g * (1 - math.sqrt (i / 50)),
|
||||
false, true)
|
||||
end
|
||||
|
||||
-- remove dense events
|
||||
cl:thin(20)
|
||||
cl:thin (20)
|
||||
|
||||
-- save undo
|
||||
local after = acl:get_state()
|
||||
Session:add_command (acl:memento_command(before, after))
|
||||
local after = al:get_state ()
|
||||
Session:add_command (al:memento_command (before, after))
|
||||
add_undo = true
|
||||
|
||||
::out::
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue