diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2012-06-22 01:45:16 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2012-06-22 01:45:16 +0000 |
commit | d70429a066dfd33cca0b6f64be7014649a9910ca (patch) | |
tree | b5a1df98535bd30d2485778c699f6d7dd758b649 /gtk2_ardour/add_route_dialog.cc | |
parent | 774e55bcc03139089105a20809d9557d38452486 (diff) |
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
Diffstat (limited to 'gtk2_ardour/add_route_dialog.cc')
-rw-r--r-- | gtk2_ardour/add_route_dialog.cc | 107 |
1 files changed, 79 insertions, 28 deletions
diff --git a/gtk2_ardour/add_route_dialog.cc b/gtk2_ardour/add_route_dialog.cc index a3fc0ba730..e267e5496d 100644 --- a/gtk2_ardour/add_route_dialog.cc +++ b/gtk2_ardour/add_route_dialog.cc @@ -77,6 +77,7 @@ AddRouteDialog::AddRouteDialog (Session* s) track_bus_combo.append_text (_("Audio Tracks")); track_bus_combo.append_text (_("MIDI Tracks")); + track_bus_combo.append_text (_("Audio+MIDI Tracks")); track_bus_combo.append_text (_("Busses")); track_bus_combo.set_active (0); @@ -191,6 +192,23 @@ AddRouteDialog::channel_combo_changed () refill_track_modes (); } +AddRouteDialog::TypeWanted +AddRouteDialog::type_wanted() const +{ + switch (track_bus_combo.get_active_row_number ()) { + case 0: + return AudioTrack; + case 1: + return MidiTrack; + case 2: + return MixedTrack; + default: + break; + } + + return AudioBus; +} + void AddRouteDialog::maybe_update_name_template_entry () { @@ -198,59 +216,68 @@ AddRouteDialog::maybe_update_name_template_entry () name_template_entry.get_text() != "" && name_template_entry.get_text() != _("Audio") && name_template_entry.get_text() != _("MIDI") && + name_template_entry.get_text() != _("Audio+MIDI") && name_template_entry.get_text() != _("Bus")) { return; } - if (audio_tracks_wanted ()) { + switch (type_wanted()) { + case AudioTrack: name_template_entry.set_text (_("Audio")); - } else if (midi_tracks_wanted()) { + break; + case MidiTrack: name_template_entry.set_text (_("MIDI")); - } else { + break; + case MixedTrack: + name_template_entry.set_text (_("Audio+MIDI")); + break; + case AudioBus: name_template_entry.set_text (_("Bus")); + break; } } void AddRouteDialog::track_type_chosen () { - if (midi_tracks_wanted()) { + switch (type_wanted()) { + case AudioTrack: + mode_combo.set_sensitive (true); + channel_combo.set_sensitive (true); + instrument_combo.set_sensitive (false); + configuration_label.set_sensitive (true); + mode_label.set_sensitive (true); + instrument_label.set_sensitive (false); + break; + case MidiTrack: channel_combo.set_sensitive (false); mode_combo.set_sensitive (false); instrument_combo.set_sensitive (true); configuration_label.set_sensitive (false); mode_label.set_sensitive (false); instrument_label.set_sensitive (true); - } else if (audio_tracks_wanted()) { - mode_combo.set_sensitive (true); + break; + case MixedTrack: channel_combo.set_sensitive (true); - instrument_combo.set_sensitive (false); + mode_combo.set_sensitive (true); + instrument_combo.set_sensitive (true); configuration_label.set_sensitive (true); mode_label.set_sensitive (true); - instrument_label.set_sensitive (false); - } else { + instrument_label.set_sensitive (true); + break; + case AudioBus: mode_combo.set_sensitive (false); channel_combo.set_sensitive (true); instrument_combo.set_sensitive (false); configuration_label.set_sensitive (true); mode_label.set_sensitive (true); instrument_label.set_sensitive (false); + break; } maybe_update_name_template_entry (); } -bool -AddRouteDialog::audio_tracks_wanted () -{ - return track_bus_combo.get_active_row_number () == 0; -} - -bool -AddRouteDialog::midi_tracks_wanted () -{ - return track_bus_combo.get_active_row_number () == 1; -} string AddRouteDialog::name_template () @@ -303,18 +330,42 @@ AddRouteDialog::mode () return ARDOUR::Normal; } -int +ChanCount AddRouteDialog::channels () { - string str = channel_combo.get_active_text(); - - for (ChannelSetups::iterator i = channel_setups.begin(); i != channel_setups.end(); ++i) { - if (str == (*i).name) { - return (*i).channels; + ChanCount ret; + string str; + switch (type_wanted()) { + case AudioTrack: + case AudioBus: + str = channel_combo.get_active_text(); + for (ChannelSetups::iterator i = channel_setups.begin(); i != channel_setups.end(); ++i) { + if (str == (*i).name) { + ret.set (DataType::AUDIO, (*i).channels); + break; + } + } + ret.set (DataType::MIDI, 0); + break; + + case MidiTrack: + ret.set (DataType::AUDIO, 0); + ret.set (DataType::MIDI, 1); + break; + + case MixedTrack: + str = channel_combo.get_active_text(); + for (ChannelSetups::iterator i = channel_setups.begin(); i != channel_setups.end(); ++i) { + if (str == (*i).name) { + ret.set (DataType::AUDIO, (*i).channels); + break; + } } + ret.set (DataType::MIDI, 1); + break; } - - return 0; + + return ret; } string |