Add a Lua script to send multiple tracks to an aux-bus.
authorRobin Gareus <robin@gareus.org>
Sun, 19 Feb 2017 23:29:39 +0000 (00:29 +0100)
committerRobin Gareus <robin@gareus.org>
Sun, 19 Feb 2017 23:30:15 +0000 (00:30 +0100)
scripts/send_to_bus.lua [new file with mode: 0644]

diff --git a/scripts/send_to_bus.lua b/scripts/send_to_bus.lua
new file mode 100644 (file)
index 0000000..a391b13
--- /dev/null
@@ -0,0 +1,43 @@
+ardour { ["type"] = "EditorAction", name = "Send Tracks to Bus",
+       license     = "MIT",
+       author      = "Ardour Team",
+       description = [[Create a Bus and add aux-sends from all selected tracks]]
+}
+
+function factory () return function ()
+       -- find number of channels to use for the new bus, follow master-bus' inputs
+       local chn = 2
+       local mst = Session:master_out();
+       if not mst:isnil() then
+               chn = mst:n_inputs():n_audio()
+       end
+       mst = nil -- explicitly drop reference
+
+       local sel = Editor:get_selection () -- get selection
+       local tracks = ARDOUR.RouteListPtr() -- create a new list
+
+       -- find selected *tracks*, add to tracks list
+       for r in sel.tracks:routelist ():iter () do
+               if r:to_track():isnil() then
+                       goto next
+               end
+               tracks:push_back (r)
+               ::next::
+       end
+
+       if tracks:size() > 0 then
+               local bus = Session:new_audio_route (chn, chn, nil, 1, "", ARDOUR.PresentationInfo.Flag.AudioBus, ARDOUR.PresentationInfo.max_order)
+               if bus:size () > 0 then
+                       Session:add_internal_sends (bus:front(), ARDOUR.Placement.PostFader, tracks);
+               end
+       end
+end end
+
+function icon (params) return function (ctx, width, height, fg)
+       local txt = Cairo.PangoLayout (ctx, "ArdourMono ".. math.ceil(math.min (width, height) * .5) .. "px")
+       txt:set_text ("\u{2192}B") -- "->B"
+       local tw, th = txt:get_pixel_size ()
+       ctx:move_to (.5 * (width - tw), .5 * (height - th))
+       ctx:set_source_rgba (ARDOUR.LuaAPI.color_to_rgba (fg))
+       txt:show_in_cairo_context (ctx)
+end end