summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorNikolaus Gullotta <nikolaus.gullotta@gmail.com>2018-07-17 13:02:05 -0500
committerNikolaus Gullotta <nikolaus.gullotta@gmail.com>2018-07-17 13:02:05 -0500
commita54a501ad693b28dbbe1cff4faea0799706a17a4 (patch)
tree74724a3e4af51f0a3f438bd449885a557c3f80c5 /scripts
parent49d8d4ad77fa71bc33c1586c87bc296906fbda87 (diff)
Move track_organizer Lua script to ardour
Diffstat (limited to 'scripts')
-rw-r--r--scripts/track_organizer.lua106
1 files changed, 106 insertions, 0 deletions
diff --git a/scripts/track_organizer.lua b/scripts/track_organizer.lua
new file mode 100644
index 0000000000..007b136356
--- /dev/null
+++ b/scripts/track_organizer.lua
@@ -0,0 +1,106 @@
+ardour {
+ ["type"] = "EditorAction",
+ name = "Track Organizer",
+ author = "Mixbus Lua Taskforce",
+ description = [[Easily modifiable session overview and track property editor]]
+}
+
+function factory () return function ()
+
+ local rbow = { ["----"] = "", ["Red"] = 0xD10000FF, ["Orange"] = 0xFF6622FF, ["Yellow"] = 0xFFDA21FF,
+ ["Green"] = 0x33DD00FF, ["Blue"] = 0x1133CCFF, ["Indigo"] = 0x220066FF, ["Violet"] = 0x330044FF
+}
+
+ --now starting to build our dialog
+ local dialog_options = {
+ { type = "label", colspan="4", title = "Change your Track settings here:" },
+ { type = "heading", title = "Track", col = 0, colspan = 1 },
+ { type = "heading", title = "Group", col = 1, colspan = 1 },
+ { type = "heading", title = "Comment", col = 2, colspan = 1 },
+ { type = "heading", title = "Color", col = 3, colspan = 1 },
+ }
+
+ --group option payload
+ --@ToDo: Add 'fake' groups for people to select, create them if they want it
+ local pl = {["----"] = "", ["Drums"] = "Drums", ["Bass"] = "Bass", ["Guitars"] = "Guitars",
+ ["Keys"] = "Keys", ["Strings"] = "Strings", ["Vox"] = "Vox"
+}
+
+ for g in Session:route_groups():iter() do
+ pl[g:name()] = g
+ end
+
+ --helper function to find default group option
+ function interrogate(t)
+ local v = "----"
+ for g in Session:route_groups():iter() do
+ for r in g:route_list():iter() do
+ if r:name() == t:name() then v = g:name() end
+ end
+ end return v
+ end
+
+ function find_color(t)
+ local c = "----"
+ for k, v in pairs(rbow) do
+ if(t:presentation_info_ptr():color() == v) then c = k end
+ end return c
+ end
+
+ --insert an entry into our dialog_options table for each track with appropriate info
+ for t in Session:get_tracks():iter() do
+ table.insert(dialog_options, {
+ type = "entry", key = t:name() .. ' n', col = 0, colspan = 1, default = t:name(), title = "" --@ToDo: Shorten Names so they can still see what track they're changing?
+ }) --name
+ table.insert(dialog_options, {
+ type = "dropdown", key = t:name() .. ' g', col = 1, colspan = 1, title = "", values = pl, default = interrogate(t)
+ }) --group
+ table.insert(dialog_options, {
+ type = "entry", key = t:name() .. ' cm', col = 2, colspan = 1, default = t:comment(), title = ""
+ }) --comment
+ table.insert(dialog_options, {
+ type = "dropdown", key = t:name() .. ' c', col = 3, colspan = 1, title = "", values = rbow, default = find_color(t)
+ }) --color
+ end
+
+ table.insert(dialog_options, {
+ { type = "label", colspan="3", title = "" },
+ { type = "label", colspan="3", title = "Note that this is a script which can be user-edited to match your needs." },
+ { type = "label", colspan="3", title = "" },
+ })
+
+ --run dialog_options
+ local rv = LuaDialog.Dialog("Track Organizer", dialog_options):run()
+ if not(rv) then goto script_end end
+ assert(rv, 'Dialog box was cancelled or is ' .. type(rv))
+
+ --begin track operation
+ for t in Session:get_tracks():iter() do
+ local cgrp = interrogate(t)
+ local name = rv[t:name() .. ' n' ]
+ local ngrp = rv[t:name() .. ' g' ]
+ local cmnt = rv[t:name() .. ' cm']
+ local colr = rv[t:name() .. ' c' ]
+
+ if t:name() ~= name then t:set_name(name) end
+
+ if t:comment() ~= cmnt then t:set_comment(cmnt, nil) end
+
+ if not(colr == "") then t:presentation_info_ptr():set_color(colr) end
+
+ if type(ngrp) == "userdata" then
+ if cgrp ~= ngrp:name() then
+ ngrp:add(t)
+ end
+ end
+
+ if type(ngrp) == "string" and not(ngrp == "") then
+ ngrp = Session:new_route_group(ngrp)
+ if cgrp ~= ngrp:name() then
+ ngrp:add(t)
+ end
+ end
+ end
+
+ ::script_end::
+end end