mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-15 19:16:40 +01:00
provide an easier way to add mixed (audio+MIDI) tracks to a session, to facilitate the use of plugins like Reaktor which accept both audio & MIDI data. there's probably still a paradigm shift waiting to happen here but its likely post-3.0.
git-svn-id: svn://localhost/ardour2/branches/3.0@12816 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
774e55bcc0
commit
d70429a066
7 changed files with 145 additions and 61 deletions
|
|
@ -753,7 +753,6 @@ void
|
|||
ARDOUR_UI::finish()
|
||||
{
|
||||
if (_session) {
|
||||
int tries = 0;
|
||||
|
||||
if (_session->dirty()) {
|
||||
vector<string> actions;
|
||||
|
|
@ -1361,7 +1360,8 @@ ARDOUR_UI::open_session ()
|
|||
|
||||
|
||||
void
|
||||
ARDOUR_UI::session_add_midi_route (bool disk, RouteGroup* route_group, uint32_t how_many, const string& name_template, PluginInfoPtr instrument)
|
||||
ARDOUR_UI::session_add_mixed_track (const ChanCount& input, const ChanCount& output, RouteGroup* route_group,
|
||||
uint32_t how_many, const string& name_template, PluginInfoPtr instrument)
|
||||
{
|
||||
list<boost::shared_ptr<MidiTrack> > tracks;
|
||||
|
||||
|
|
@ -1371,18 +1371,14 @@ ARDOUR_UI::session_add_midi_route (bool disk, RouteGroup* route_group, uint32_t
|
|||
}
|
||||
|
||||
try {
|
||||
if (disk) {
|
||||
|
||||
tracks = _session->new_midi_track (instrument, ARDOUR::Normal, route_group, how_many, name_template);
|
||||
|
||||
if (tracks.size() != how_many) {
|
||||
if (how_many == 1) {
|
||||
error << _("could not create a new midi track") << endmsg;
|
||||
} else {
|
||||
error << string_compose (_("could not create %1 new midi tracks"), how_many) << endmsg;
|
||||
}
|
||||
tracks = _session->new_midi_track (input, output, instrument, ARDOUR::Normal, route_group, how_many, name_template);
|
||||
|
||||
if (tracks.size() != how_many) {
|
||||
if (how_many == 1) {
|
||||
error << _("could not create a new mixed track") << endmsg;
|
||||
} else {
|
||||
error << string_compose (_("could not create %1 new mixed tracks"), how_many) << endmsg;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1395,7 +1391,18 @@ restart JACK with more ports."), PROGRAM_NAME));
|
|||
msg.run ();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
ARDOUR_UI::session_add_midi_route (bool disk, RouteGroup* route_group, uint32_t how_many, const string& name_template, PluginInfoPtr instrument)
|
||||
{
|
||||
ChanCount one_midi_channel;
|
||||
one_midi_channel.set (DataType::MIDI, 1);
|
||||
|
||||
if (disk) {
|
||||
session_add_mixed_track (one_midi_channel, one_midi_channel, route_group, how_many, name_template, instrument);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ARDOUR_UI::session_add_audio_route (
|
||||
|
|
@ -3120,8 +3127,8 @@ ARDOUR_UI::add_route (Gtk::Window* float_window)
|
|||
return;
|
||||
}
|
||||
|
||||
uint32_t input_chan = add_route_dialog->channels ();
|
||||
uint32_t output_chan;
|
||||
ChanCount input_chan= add_route_dialog->channels ();
|
||||
ChanCount output_chan;
|
||||
string name_template = add_route_dialog->name_template ();
|
||||
PluginInfoPtr instrument = add_route_dialog->requested_instrument ();
|
||||
RouteGroup* route_group = add_route_dialog->route_group ();
|
||||
|
|
@ -3129,19 +3136,29 @@ ARDOUR_UI::add_route (Gtk::Window* float_window)
|
|||
AutoConnectOption oac = Config->get_output_auto_connect();
|
||||
|
||||
if (oac & AutoConnectMaster) {
|
||||
output_chan = (_session->master_out() ? _session->master_out()->n_inputs().n_audio() : input_chan);
|
||||
output_chan.set (DataType::AUDIO, (_session->master_out() ? _session->master_out()->n_inputs().n_audio() : input_chan.n_audio()));
|
||||
output_chan.set (DataType::MIDI, 0);
|
||||
} else {
|
||||
output_chan = input_chan;
|
||||
}
|
||||
|
||||
cerr << "ARD said " << input_chan << " and " << output_chan << endl;
|
||||
|
||||
/* XXX do something with name template */
|
||||
|
||||
if (add_route_dialog->midi_tracks_wanted()) {
|
||||
switch (add_route_dialog->type_wanted()) {
|
||||
case AddRouteDialog::AudioTrack:
|
||||
session_add_audio_track (input_chan.n_audio(), output_chan.n_audio(), add_route_dialog->mode(), route_group, count, name_template);
|
||||
break;
|
||||
case AddRouteDialog::MidiTrack:
|
||||
session_add_midi_track (route_group, count, name_template, instrument);
|
||||
} else if (add_route_dialog->audio_tracks_wanted()) {
|
||||
session_add_audio_track (input_chan, output_chan, add_route_dialog->mode(), route_group, count, name_template);
|
||||
} else {
|
||||
session_add_audio_bus (input_chan, output_chan, route_group, count, name_template);
|
||||
break;
|
||||
case AddRouteDialog::MixedTrack:
|
||||
session_add_mixed_track (input_chan, output_chan, route_group, count, name_template, instrument);
|
||||
break;
|
||||
case AddRouteDialog::AudioBus:
|
||||
session_add_audio_bus (input_chan.n_audio(), output_chan.n_audio(), route_group, count, name_template);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue