Last active
March 16, 2019 18:16
-
-
Save x42/d0cb4e185484fcd21be0b4010db66124 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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