Skip to content

Instantly share code, notes, and snippets.

@x42
Last active March 16, 2019 18:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save x42/d0cb4e185484fcd21be0b4010db66124 to your computer and use it in GitHub Desktop.
Save x42/d0cb4e185484fcd21be0b4010db66124 to your computer and use it in GitHub Desktop.
local reclen = 5 -- seconds
-- create a list of MIDI tracks to bounce
local mt = {}
for t in Session:get_tracks():iter() do -- for each track
if not t:to_track():to_midi_track():isnil() then -- check if it's a MIDI track
mt[t:name()] = t
end
-- mute *all* tracks (for now)
t:mute_control():set_value(1, PBD.GroupControlDisposition.NoGroup);
end
-- now iterate over found MIDI tracked
for n,t in pairs (mt) do
-- Assume all MIDI track outputs are connected, so simily un/mute as needed:
t:mute_control():set_value(0, PBD.GroupControlDisposition.NoGroup); -- unmute MIDI track
-- create one stereo Audio track, 2 in, 2 out, named after the midi track
local tl = Session:new_audio_track (2, 2, nil, 1, n .. "-audio", ARDOUR.PresentationInfo.max_order, ARDOUR.TrackMode.Normal)
-- record-arm the created track
for track in tl:iter() do
track:rec_enable_control ():set_value (1, PBD.GroupControlDisposition.NoGroup)
-- rely on auto-connect (for now) ; Preferences > Signal Flow
--track:input():disconnect_all (nil)
--track:input():audio(0):connect("system:capture_1")
--track:input():audio(1):connect("system:capture_2")
end
-- rewind and record
Session:goto_start()
Session:maybe_enable_record()
Session:request_transport_speed (1.0, true, 4)
for i = 1, (10 * reclen) do
ARDOUR.LuaAPI.usleep (100000) -- 100ms
print() -- wake up main event loop
end
Session:request_transport_speed (0.0, false, 4)
ARDOUR.LuaAPI.usleep (500000) -- wait for 1/2 sec
-- disable record-arm
for track in tl:iter() do
track:rec_enable_control ():set_value (0, PBD.GroupControlDisposition.NoGroup)
end
-- mute the bounced MIDI track
t:mute_control():set_value(1, PBD.GroupControlDisposition.NoGroup);
-- clean up
tl = nil
collectgarbage()
Session:save_state("")
end
mt = nil;
collectgarbage()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment