summaryrefslogtreecommitdiff
path: root/share/scripts/send_to_bus.lua
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2020-02-23 20:48:02 +0100
committerRobin Gareus <robin@gareus.org>2020-02-23 20:48:02 +0100
commit180843f9bd28b191c7404245ba0a121107992511 (patch)
treec60312dc09f76c2f55ba2383245c427e15c38dea /share/scripts/send_to_bus.lua
parentbf649cd68ad46c34a656700aa6cb89416d648c64 (diff)
Also move Lua scripts to share subfolder
Diffstat (limited to 'share/scripts/send_to_bus.lua')
-rw-r--r--share/scripts/send_to_bus.lua41
1 files changed, 41 insertions, 0 deletions
diff --git a/share/scripts/send_to_bus.lua b/share/scripts/send_to_bus.lua
new file mode 100644
index 0000000000..95a13f95ca
--- /dev/null
+++ b/share/scripts/send_to_bus.lua
@@ -0,0 +1,41 @@
+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 not r:to_track ():isnil () then
+ tracks:push_back (r)
+ end
+ 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