diff --git a/scripts/_sort_tracks_by_name.lua b/scripts/_sort_tracks_by_name.lua index 9edad9610c..36dfdc970c 100644 --- a/scripts/_sort_tracks_by_name.lua +++ b/scripts/_sort_tracks_by_name.lua @@ -7,23 +7,30 @@ ardour { function factory () return function () + -- sort compare function + -- a,b here are http://manual.ardour.org/lua-scripting/class_reference/#ARDOUR:Route + -- return true if route "a" should be ordered before route "b" function tsort (a, b) return a:name() < b:name() end + -- create a sortable list of tracks local tracklist = {} for t in Session:get_tracks():iter() do table.insert(tracklist, t) end + -- sort the list using the compare function table.sort(tracklist, tsort) + -- traverse the sorted list and assign "presentation-order" to each track local pos = 1; for _, t in ipairs(tracklist) do t:set_presentation_order(pos) pos = pos + 1 end + -- drop all track references tracklist = nil collectgarbage () end end