Fix ExportFormatSpecification copy-c'tor
[ardour.git] / scripts / mixer_settings_store.lua
index ca8af27c7bd45b43ba69a0b84839bd7c416291fb..c8e329ae5b77e42f82dd6aa3daac12477997f5ca 100644 (file)
@@ -53,10 +53,6 @@ function factory () return function ()
                if not(isdir(global_path)) then
                        global_ok, _, _ = os.execute('mkdir '.. global_path)
                        if global_ok == 0 then
-                               local default_file = ARDOUR.LuaAPI.build_filename(global_path, 'FactoryDefault-'..whoami()..'.lua')
-                               local file = io.open(default_file, "w")
-                               file:write("")
-                               file:close()
                                global_ok = true
                        end
                else
@@ -65,10 +61,6 @@ function factory () return function ()
                if not(isdir(local_path)) then
                        local_ok, _, _ = os.execute('mkdir '.. local_path)
                        if local_ok == 0 then
-                               local stub_file = ARDOUR.LuaAPI.build_filename(local_path, 'stub')
-                               local file = io.open(stub_file, "w")
-                               file:write("")
-                               file:close()
                                local_ok = true
                        end
                else
@@ -90,13 +82,6 @@ function factory () return function ()
                        until proc:isnil()
                end
 
-       function new_plugin(name)
-               for x = 0, 6 do
-                       local plugin = ARDOUR.LuaAPI.new_plugin(Session, name, x, "")
-                       if not(plugin:isnil()) then return plugin end
-               end
-       end
-
        function group_by_id(id)
                local id  = tonumber(id)
                for g in Session:route_groups():iter() do
@@ -130,6 +115,7 @@ function factory () return function ()
 
        function empty_last_store(path)  --empty current file from last run
                local file = io.open(path, "w")
+               --file:write(string.format("instance = { whoami = '%s' }", whoami())
                file:write("")
                file:close()
        end
@@ -141,15 +127,16 @@ function factory () return function ()
                local route_string = [[instance = {
                         route_id = %d,
                         route_name = '%s',
-                        gain_control = %f,
-                        trim_control = %f,
+                        gain_control = %s,
+                        trim_control = %s,
                         pan_control = %s,
                         muted = %s,
                         soloed = %s,
                         order = {%s},
                         cache = {%s},
                         group = %s,
-                        group_name = '%s'
+                        group_name = '%s',
+                        pi_order = %d
                }]]
 
                local group_string = [[instance = {
@@ -160,6 +147,7 @@ function factory () return function ()
 
                local processor_string = [[instance = {
                         plugin_id = %d,
+                        type = %d,
                         display_name = '%s',
                         owned_by_route_name = '%s',
                         owned_by_route_id = %d,
@@ -169,8 +157,8 @@ function factory () return function ()
 
                local group_route_string = " [%d] = %s,"
                local proc_order_string  = " [%d] = %d,"
-               local proc_cache_string  = " [%d] = '%s',"
-               local params_string      = " [%d] = %f,"
+               local proc_cache_string  = " [%d] = {'%s', %d},"
+               local params_string      = " [%d] = %s,"
 
                --ensure easy-to-read formatting doesn't make it through
                local route_string     = string.gsub(route_string, "[\n\t]", "")
@@ -181,7 +169,7 @@ function factory () return function ()
                local groups_to_write = {}
                local i = 0
 
-               local tracks = Session:get_routes()
+               local tracks = Session:get_stripables()
 
                if selected then tracks = sel.tracks:routelist() end
 
@@ -219,8 +207,9 @@ function factory () return function ()
                end
 
                for r in tracks:iter() do
-                       if r:is_monitor () or r:is_auditioner () then goto nextroute end -- skip special routes
-
+                       if r:is_monitor () or r:is_auditioner () or not(r:to_vca():isnil()) then goto nextroute end -- skip special routes
+                       r = r:to_route()
+                       if r:isnil() then goto nextroute end
                        local order = ARDOUR.ProcessorList()
                        local x = 0
                        repeat
@@ -231,6 +220,7 @@ function factory () return function ()
                                x = x + 1
                        until proc:isnil()
 
+
                        local route_group = route_group_interrogate(r)
                        if route_group then route_group = route_group:name() else route_group = "" end
                        local rid = r:to_stateful():id():to_s()
@@ -240,10 +230,15 @@ function factory () return function ()
                        local order_nmbr = 0
                        local tmp_order_str, tmp_cache_str = "", ""
                        for p in order:iter() do
+                               if not(p:to_insert():isnil()) then
+                                       type = p:to_insert():plugin(0):get_info().type
+                               else
+                                       type = 99
+                               end
                                local pid = p:to_stateful():id():to_s()
                                if not(string.find(p:display_name(), "latcomp")) then
                                        tmp_order_str = tmp_order_str .. string.format(proc_order_string, order_nmbr, pid)
-                                       tmp_cache_str = tmp_cache_str .. string.format(proc_cache_string, pid, p:display_name())
+                                       tmp_cache_str = tmp_cache_str .. string.format(proc_cache_string, pid, p:display_name(), type)
                                end
                                order_nmbr = order_nmbr + 1
                        end
@@ -252,15 +247,16 @@ function factory () return function ()
                                        route_string,
                                        rid,
                                        r:name(),
-                                       r:gain_control():get_value(),
-                                       r:trim_control():get_value(),
+                                       ARDOUR.LuaAPI.ascii_dtostr(r:gain_control():get_value()),
+                                       ARDOUR.LuaAPI.ascii_dtostr(r:trim_control():get_value()),
                                        tostring(pan),
                                        r:muted(),
                                        r:soloed(),
                                        tmp_order_str,
                                        tmp_cache_str,
                                        route_groupid_interrogate(r),
-                                       route_group
+                                       route_group,
+                                       r:presentation_info_ptr():order()
                                )
 
                        file = io.open(path, "a")
@@ -275,15 +271,16 @@ function factory () return function ()
                                local active = proc:active()
                                local id = proc:to_stateful():id():to_s()
                                local plug = proc:to_insert ():plugin (0)
+                               local type = proc:to_insert():plugin(0):get_info().type
                                local n = 0 -- count control-ports
                                for j = 0, plug:parameter_count () - 1 do -- iterate over all plugin parameters
                                        if plug:parameter_is_control (j) then
                                                local label = plug:parameter_label (j)
                                                if plug:parameter_is_input (j) and label ~= "hidden" and label:sub (1,1) ~= "#" then
-                                                       local _, _, pd = ARDOUR.LuaAPI.plugin_automation(proc, n)
+                                                       --local _, _, pd = ARDOUR.LuaAPI.plugin_automation(proc, n)
                                                        local val = ARDOUR.LuaAPI.get_processor_param(proc, j, true)
-                                                       --print(r:name(), "->", proc:display_name(), label, val)
-                                                       params[n] = val
+                                                       print(r:name(), "->", proc:display_name(), label, val)
+                                                       params[j] = val
                                                end
                                                n = n + 1
                                        end
@@ -292,12 +289,13 @@ function factory () return function ()
 
                                local tmp_params_str = ""
                                for k, v in pairs(params) do
-                                       tmp_params_str = tmp_params_str .. string.format(params_string, k, v)
+                                       tmp_params_str = tmp_params_str .. string.format(params_string, k, ARDOUR.LuaAPI.ascii_dtostr(v))
                                end
 
                                local proc_str = string.format(
                                                processor_string,
                                                id,
+                                               type,
                                                proc:display_name(),
                                                r:name(),
                                                r:to_stateful():id():to_s(),
@@ -313,19 +311,19 @@ function factory () return function ()
        end
 
        local store_options = {
-               { type = "label",    col=0, colspan=1, align="left", title = "Settings name:" },
-               { type = "entry",    col=1, colspan=1, align="right" , key = "filename", default = Session:name(), title=""},
-               { type = "label",    col=0, colspan=1, align="left", title = "Selected Tracks Only:" },
-               { type = "checkbox", col=1, colspan=1, align="right",  key = "selected", default = false, title = ""},
-               { type = "hseparator", title="", col=0, colspan = 3},
-               { type = "label",    col=0, colspan=1, align="left", title = "Store Settings:" },
+               { type = "label",    col=0, colspan=1, align="right", title = "Name:" },
+               { type = "entry",    col=1, colspan=1, align="left" , key = "filename", default = Session:name(), title=""},
+               { type = "label",    col=0, colspan=1, align="right", title = "Location:" },
                {
-                       type = "radio",  col=1, colspan=3, align="right", key = "store-dir", title = "", values =
+                       type = "radio",  col=1, colspan=3, align="left", key = "store-dir", title = "", values =
                        {
-                               ['Global (accessible from any session)'] = 1, ['Locally (this session only)'] = 2
+                               ['Global (accessible from any session)'] = 1, ['Local (this session only)'] = 2
                        },
                        default = 'Locally (this session only)'
                },
+               { type = "hseparator", title="", col=0, colspan = 3},
+               { type = "label",    col=0, colspan=1, align="right", title = "Selected Tracks Only:" },
+               { type = "checkbox", col=1, colspan=1, align="left",  key = "selected", default = false, title = ""},
                --{ type = "label", col=0, colspan=2, align="left", title = ''},
                --{ type = "label", col=0, colspan=2, align="left", title = "Global Path: " .. global_path},
                --{ type = "label", col=0, colspan=2, align="left", title = "Local Path: "  .. local_path},