mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-09 00:04:56 +01:00
Cont'd work on route-templates
This commit is contained in:
parent
9f1350a833
commit
1a70a2f977
5 changed files with 96 additions and 7 deletions
|
|
@ -302,7 +302,7 @@ AddRouteDialog::trk_template_row_selected ()
|
||||||
trk_template_desc.set_sensitive (true);
|
trk_template_desc.set_sensitive (true);
|
||||||
|
|
||||||
manual_label.set_sensitive (false);
|
manual_label.set_sensitive (false);
|
||||||
add_label.set_sensitive (false);
|
add_label.set_sensitive (rs.find ("how_many") != rs.end ());
|
||||||
type_label.set_sensitive (false);
|
type_label.set_sensitive (false);
|
||||||
|
|
||||||
name_label.set_sensitive (rs.find ("name") != rs.end());
|
name_label.set_sensitive (rs.find ("name") != rs.end());
|
||||||
|
|
@ -329,7 +329,9 @@ AddRouteDialog::trk_template_row_selected ()
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((it = rs.find ("how_many")) != rs.end()) {
|
if ((it = rs.find ("how_many")) != rs.end()) {
|
||||||
routes_adjustment.set_value (atoi (it->second.c_str()));
|
if (atoi (it->second.c_str()) > 0) {
|
||||||
|
routes_adjustment.set_value (atoi (it->second.c_str()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((it = rs.find ("track_mode")) != rs.end()) {
|
if ((it = rs.find ("track_mode")) != rs.end()) {
|
||||||
|
|
@ -342,6 +344,8 @@ AddRouteDialog::trk_template_row_selected ()
|
||||||
mode_combo.set_active_text (_("Tape"));
|
mode_combo.set_active_text (_("Tape"));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
default: // "NonLayered" enum is still present for session-format compat
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -368,7 +372,7 @@ AddRouteDialog::trk_template_row_selected ()
|
||||||
trk_template_desc.set_sensitive (true);
|
trk_template_desc.set_sensitive (true);
|
||||||
|
|
||||||
manual_label.set_sensitive (false);
|
manual_label.set_sensitive (false);
|
||||||
add_label.set_sensitive (false);
|
add_label.set_sensitive (true);
|
||||||
type_label.set_sensitive (false);
|
type_label.set_sensitive (false);
|
||||||
name_label.set_sensitive (true);
|
name_label.set_sensitive (true);
|
||||||
group_label.set_sensitive (false);
|
group_label.set_sensitive (false);
|
||||||
|
|
@ -743,6 +747,7 @@ AddRouteDialog::refill_channel_setups ()
|
||||||
}
|
}
|
||||||
|
|
||||||
trk_template_model->clear();
|
trk_template_model->clear();
|
||||||
|
bool selected_default = false;
|
||||||
|
|
||||||
/* Add any Lua scripts (factory templates) found in the scripts folder */
|
/* Add any Lua scripts (factory templates) found in the scripts folder */
|
||||||
LuaScriptList& ms (LuaScripting::instance ().scripts (LuaScriptInfo::EditorAction));
|
LuaScriptList& ms (LuaScripting::instance ().scripts (LuaScriptInfo::EditorAction));
|
||||||
|
|
@ -751,7 +756,8 @@ AddRouteDialog::refill_channel_setups ()
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
TreeModel::Row row;
|
TreeModel::Row row;
|
||||||
if ( (*s)->name == "Add tracks") { //somewhat-special, most-used template
|
if ( (*s)->name == "Create Audio Tracks Interactively" && Profile->get_mixbus ()) {
|
||||||
|
// somewhat-special, Ben says: "most-used template"
|
||||||
row = *(trk_template_model->prepend ());
|
row = *(trk_template_model->prepend ());
|
||||||
} else {
|
} else {
|
||||||
row = *(trk_template_model->append ());
|
row = *(trk_template_model->append ());
|
||||||
|
|
@ -761,8 +767,9 @@ AddRouteDialog::refill_channel_setups ()
|
||||||
row[track_template_columns.description] = (*s)->description;
|
row[track_template_columns.description] = (*s)->description;
|
||||||
row[track_template_columns.created_with] = _("{Factory Template}");
|
row[track_template_columns.created_with] = _("{Factory Template}");
|
||||||
|
|
||||||
if ( (*s)->name == "Add tracks") { //somewhat-special, most-used template
|
if ((*s)->name == "Create Audio Tracks Interactively" && Profile->get_mixbus ()) {
|
||||||
trk_template_chooser.get_selection()->select(row);
|
trk_template_chooser.get_selection()->select(row);
|
||||||
|
selected_default = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -785,6 +792,10 @@ AddRouteDialog::refill_channel_setups ()
|
||||||
row[track_template_columns.description] = _("Use the controls, below, to add tracks.");
|
row[track_template_columns.description] = _("Use the controls, below, to add tracks.");
|
||||||
row[track_template_columns.created_with] = "";
|
row[track_template_columns.created_with] = "";
|
||||||
|
|
||||||
|
if (!selected_default) {
|
||||||
|
trk_template_chooser.get_selection()->select(row);
|
||||||
|
}
|
||||||
|
|
||||||
set_popdown_strings (channel_combo, channel_combo_strings);
|
set_popdown_strings (channel_combo, channel_combo_strings);
|
||||||
|
|
||||||
if (!channel_current_choice.empty()) {
|
if (!channel_current_choice.empty()) {
|
||||||
|
|
|
||||||
|
|
@ -568,7 +568,7 @@ SessionDialog::populate_session_templates ()
|
||||||
LuaScriptList& ms (LuaScripting::instance ().scripts (LuaScriptInfo::SessionInit));
|
LuaScriptList& ms (LuaScripting::instance ().scripts (LuaScriptInfo::SessionInit));
|
||||||
for (LuaScriptList::const_iterator s = ms.begin(); s != ms.end(); ++s) {
|
for (LuaScriptList::const_iterator s = ms.begin(); s != ms.end(); ++s) {
|
||||||
TreeModel::Row row = *(template_model->append ());
|
TreeModel::Row row = *(template_model->append ());
|
||||||
row[session_template_columns.name] = "Meta: " + (*s)->name;
|
row[session_template_columns.name] = (*s)->name;
|
||||||
row[session_template_columns.path] = "urn:ardour:" + (*s)->path;
|
row[session_template_columns.path] = "urn:ardour:" + (*s)->path;
|
||||||
row[session_template_columns.description] = (*s)->description;
|
row[session_template_columns.description] = (*s)->description;
|
||||||
row[session_template_columns.created_with_short] = _("{Factory Template}");
|
row[session_template_columns.created_with_short] = _("{Factory Template}");
|
||||||
|
|
|
||||||
78
scripts/_route_template_generic_midi.lua
Normal file
78
scripts/_route_template_generic_midi.lua
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
ardour {
|
||||||
|
["type"] = "EditorAction",
|
||||||
|
name = "Generic MIDI Track",
|
||||||
|
description = [[Example]]
|
||||||
|
}
|
||||||
|
|
||||||
|
-- If a route_setup function is present in an Editor Action Script
|
||||||
|
-- the script is also listed in the "add track/bus" dialog as meta-template
|
||||||
|
--
|
||||||
|
-- The function is expected to return a Lua table. The table may be empty.
|
||||||
|
function route_setup ()
|
||||||
|
return
|
||||||
|
{
|
||||||
|
-- keys control which AddRouteDialog controls are made sensitive.
|
||||||
|
-- The following keys accept a default value to pre-seed the dialog.
|
||||||
|
['how_many'] = 1,
|
||||||
|
['name'] = 'MIDI',
|
||||||
|
['channels'] = nil,
|
||||||
|
['track_mode'] = nil,
|
||||||
|
['strict_io'] = true,
|
||||||
|
-- these keys just need to be set (to something other than nil)
|
||||||
|
-- in order to set the control sensitives
|
||||||
|
['insert_at'] = ARDOUR.PresentationInfo.max_order,
|
||||||
|
['group'] = false, -- return value will be a RouteGroup*
|
||||||
|
['instrument'] = true, -- return value will be a PluginInfoPtr
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
-- The Script can be used as EditorAction in which case it can
|
||||||
|
-- optionally provide instantiation parmaters
|
||||||
|
function action_params ()
|
||||||
|
return
|
||||||
|
{
|
||||||
|
['how_many'] = { title = "How Many tracks to add", default = "1" },
|
||||||
|
["name"] = { title = "Track Name Prefix", default = "MIDI" },
|
||||||
|
["instrument"] = { title = "Add Instrument", default = "true" },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function factory (params) return function ()
|
||||||
|
-- When called from the AddRouteDialog, 'params' will be a table with
|
||||||
|
-- keys as described in route_setup() above.
|
||||||
|
|
||||||
|
local p = params or route_setup ()
|
||||||
|
local name = p["name"] or 'Audio'
|
||||||
|
local how_many = p["how_many"] or 1
|
||||||
|
local insert_at = p["insert_at"] or ARDOUR.PresentationInfo.max_order;
|
||||||
|
local group = p["group"] or nil
|
||||||
|
local strict_io = p["strict_io"] or false
|
||||||
|
local instrument = p["instrument"] or nil
|
||||||
|
|
||||||
|
-- used in 'action-script mode'
|
||||||
|
if instrument == "true" then
|
||||||
|
instrument = ARDOUR.LuaAPI.new_plugin_info ("http://gareus.org/oss/lv2/gmsynth", ARDOUR.PluginType.LV2) -- general midi synth
|
||||||
|
if instrument:isnil () then
|
||||||
|
instrument = ARDOUR.LuaAPI.new_plugin_info ("https://community.ardour.org/node/7596", ARDOUR.PluginType.LV2) -- reasonable synth
|
||||||
|
end
|
||||||
|
if instrument:isnil () then
|
||||||
|
LuaDialog.Message ("MIDI track add", "Cannot find instrument plugin",
|
||||||
|
LuaDialog.MessageType.Info, LuaDialog.ButtonType.Close):run ()
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- add no instrument
|
||||||
|
if type (instrument) ~= "userdata" then
|
||||||
|
instrument = ARDOUR.PluginInfo ()
|
||||||
|
end
|
||||||
|
|
||||||
|
Session:new_midi_track(
|
||||||
|
ARDOUR.ChanCount(ARDOUR.DataType ("midi"), 1),
|
||||||
|
ARDOUR.ChanCount(ARDOUR.DataType ("audio"), 2),
|
||||||
|
strict_io,
|
||||||
|
instrument, nil,
|
||||||
|
group, how_many, name, insert_at, ARDOUR.TrackMode.Normal)
|
||||||
|
|
||||||
|
end end
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
ardour {
|
ardour {
|
||||||
["type"] = "EditorAction",
|
["type"] = "EditorAction",
|
||||||
name = "Create Audio Tracks interactively",
|
name = "Create Audio Tracks Interactively",
|
||||||
description = [[
|
description = [[
|
||||||
This template creates audio tracks.
|
This template creates audio tracks.
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue