diff options
Diffstat (limited to 'gtk2_ardour/ardour_ui.cc')
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 59 |
1 files changed, 38 insertions, 21 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index e41f712351..b3976f581d 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -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; } } |