summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2013-01-20 08:56:00 +0000
committerDavid Robillard <d@drobilla.net>2013-01-20 08:56:00 +0000
commit4e6d0c9e61b62931a4a2120b548f0ff02a966351 (patch)
tree17c395d18338fb92d7af62fa635a8e957d523f93 /gtk2_ardour
parent0ebad4279b765d3fbe85649e9ef29e5b61c1d162 (diff)
Show matching controller name in automation lane header.
Completely eliminate static MIDI controller name code. Reduce dependency on midnam_patch.h (which would have saved me several hours if I did it earlier). Store controller name numbers as an integer. Keep controller names in a map keyed by int instead of a list for fast lookup. More cleanup of MIDI::Name code. git-svn-id: svn://localhost/ardour2/branches/3.0@13927 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/canvas_patch_change.cc9
-rw-r--r--gtk2_ardour/midi_region_view.cc5
-rw-r--r--gtk2_ardour/midi_time_axis.cc19
-rw-r--r--gtk2_ardour/midi_time_axis.h17
-rw-r--r--gtk2_ardour/patch_change_dialog.cc14
-rw-r--r--gtk2_ardour/patch_change_dialog.h2
6 files changed, 38 insertions, 28 deletions
diff --git a/gtk2_ardour/canvas_patch_change.cc b/gtk2_ardour/canvas_patch_change.cc
index 1958ea2b5e..34658f51a4 100644
--- a/gtk2_ardour/canvas_patch_change.cc
+++ b/gtk2_ardour/canvas_patch_change.cc
@@ -25,6 +25,7 @@
#include "gtkmm2ext/keyboard.h"
#include "ardour/instrument_info.h"
+#include "midi++/midnam_patch.h"
#include "ardour_ui.h"
#include "midi_region_view.h"
@@ -92,10 +93,10 @@ CanvasPatchChange::initialize_popup_menus()
++bank) {
Gtk::Menu& patch_bank_menu = *manage(new Gtk::Menu());
- const PatchBank::PatchNameList& patches = (*bank)->patch_name_list();
+ const PatchNameList& patches = (*bank)->patch_name_list();
Gtk::Menu::MenuList& patch_menus = patch_bank_menu.items();
- for (PatchBank::PatchNameList::const_iterator patch = patches.begin();
+ for (PatchNameList::const_iterator patch = patches.begin();
patch != patches.end();
++patch) {
std::string name = (*patch)->name();
@@ -119,10 +120,10 @@ CanvasPatchChange::initialize_popup_menus()
} else {
/* only one patch bank, so make it the initial menu */
- const PatchBank::PatchNameList& patches = patch_banks.front()->patch_name_list();
+ const PatchNameList& patches = patch_banks.front()->patch_name_list();
Gtk::Menu::MenuList& patch_menus = _popup.items();
- for (PatchBank::PatchNameList::const_iterator patch = patches.begin();
+ for (PatchNameList::const_iterator patch = patches.begin();
patch != patches.end();
++patch) {
std::string name = (*patch)->name();
diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc
index acd63469c6..542894af81 100644
--- a/gtk2_ardour/midi_region_view.cc
+++ b/gtk2_ardour/midi_region_view.cc
@@ -1820,10 +1820,9 @@ MidiRegionView::add_canvas_patch_change (MidiModel::PatchChangePtr patch, const
displaytext,
height,
x, 1.0,
- instrument_info(),
+ instrument_info(),
patch,
- active_channel)
- );
+ active_channel));
if (patch_change->width() < _pixel_width) {
// Show unless patch change is beyond the region bounds
diff --git a/gtk2_ardour/midi_time_axis.cc b/gtk2_ardour/midi_time_axis.cc
index 9d96ca756f..2b42d65a73 100644
--- a/gtk2_ardour/midi_time_axis.cc
+++ b/gtk2_ardour/midi_time_axis.cc
@@ -55,8 +55,6 @@
#include "ardour/track.h"
#include "ardour/types.h"
-#include "midi++/names.h"
-
#include "ardour_ui.h"
#include "ardour_button.h"
#include "automation_line.h"
@@ -829,14 +827,17 @@ MidiTimeAxisView::build_controller_menu ()
/* Controllers names available in midnam file, generate fancy menu */
unsigned n_items = 0;
unsigned n_groups = 0;
+
+ /* TODO: This is not correct, should look up the currently applicable ControlNameList
+ and only build a menu for that one. */
for (MasterDeviceNames::ControlNameLists::const_iterator l = device_names->controls().begin();
l != device_names->controls().end(); ++l) {
- boost::shared_ptr<ControlNameList> name_list = *l;
+ boost::shared_ptr<ControlNameList> name_list = l->second;
Menu* ctl_menu = NULL;
- for (ControlNameList::Controls::const_iterator c = (*l)->controls().begin();
- c != (*l)->controls().end(); ++c) {
- const int ctl = atoi((*c)->number().c_str());
+ for (ControlNameList::Controls::const_iterator c = name_list->controls().begin();
+ c != name_list->controls().end(); ++c) {
+ const uint16_t ctl = c->second->number();
if (ctl == MIDI_CTL_MSB_BANK || ctl == MIDI_CTL_LSB_BANK) {
/* Skip bank select controllers since they're handled specially */
continue;
@@ -849,12 +850,12 @@ MidiTimeAxisView::build_controller_menu ()
MenuList& ctl_items (ctl_menu->items());
if (chn_cnt > 1) {
- add_multi_channel_controller_item(ctl_items, ctl, (*c)->name());
+ add_multi_channel_controller_item(ctl_items, ctl, c->second->name());
} else {
- add_single_channel_controller_item(ctl_items, ctl, (*c)->name());
+ add_single_channel_controller_item(ctl_items, ctl, c->second->name());
}
- if (++n_items == 16 || c == (*l)->controls().end()) {
+ if (++n_items == 16 || c == name_list->controls().end()) {
/* Submenu has 16 items, add it to controller menu and reset */
items.push_back(
MenuElem(string_compose(_("Controllers %1-%2"),
diff --git a/gtk2_ardour/midi_time_axis.h b/gtk2_ardour/midi_time_axis.h
index d61b64f36c..1f179baca6 100644
--- a/gtk2_ardour/midi_time_axis.h
+++ b/gtk2_ardour/midi_time_axis.h
@@ -41,6 +41,13 @@
#include "midi_streamview.h"
#include "midi_channel_selector.h"
+namespace MIDI {
+namespace Name {
+class MasterDeviceNames;
+class CustomDeviceMode;
+}
+}
+
namespace ARDOUR {
class Session;
class RouteGroup;
@@ -68,8 +75,8 @@ class MidiTimeAxisView : public RouteTimeAxisView
void set_height (uint32_t);
- void enter_internal_edit_mode ();
- void leave_internal_edit_mode ();
+ void enter_internal_edit_mode ();
+ void leave_internal_edit_mode ();
boost::shared_ptr<ARDOUR::MidiRegion> add_region (ARDOUR::framepos_t, ARDOUR::framecnt_t, bool);
@@ -93,8 +100,8 @@ class MidiTimeAxisView : public RouteTimeAxisView
Gtk::CheckMenuItem* automation_child_menu_item (Evoral::Parameter);
- StepEditor* step_editor() { return _step_editor; }
- void check_step_edit ();
+ StepEditor* step_editor() { return _step_editor; }
+ void check_step_edit ();
void first_idle ();
@@ -168,7 +175,7 @@ class MidiTimeAxisView : public RouteTimeAxisView
/** parameter -> menu item map for the controller menu */
ParameterMenuMap _controller_menu_map;
- StepEditor* _step_editor;
+ StepEditor* _step_editor;
};
#endif /* __ardour_midi_time_axis_h__ */
diff --git a/gtk2_ardour/patch_change_dialog.cc b/gtk2_ardour/patch_change_dialog.cc
index c8394c2848..2ecfd4bdd7 100644
--- a/gtk2_ardour/patch_change_dialog.cc
+++ b/gtk2_ardour/patch_change_dialog.cc
@@ -25,6 +25,8 @@
#include "gtkmm2ext/utils.h"
+#include "midi++/midnam_patch.h"
+
#include "ardour/midi_patch_manager.h"
#include "ardour/beats_frames_converter.h"
#include "ardour/instrument_info.h"
@@ -255,8 +257,8 @@ PatchChangeDialog::fill_patch_combo ()
return;
}
- const MIDI::Name::PatchBank::PatchNameList& patches = _current_patch_bank->patch_name_list ();
- for (MIDI::Name::PatchBank::PatchNameList::const_iterator j = patches.begin(); j != patches.end(); ++j) {
+ const MIDI::Name::PatchNameList& patches = _current_patch_bank->patch_name_list ();
+ for (MIDI::Name::PatchNameList::const_iterator j = patches.begin(); j != patches.end(); ++j) {
string n = (*j)->name ();
boost::replace_all (n, "_", " ");
_patch_combo.append_text (n);
@@ -278,8 +280,8 @@ PatchChangeDialog::set_active_patch_combo ()
return;
}
- const MIDI::Name::PatchBank::PatchNameList& patches = _current_patch_bank->patch_name_list ();
- for (MIDI::Name::PatchBank::PatchNameList::const_iterator j = patches.begin(); j != patches.end(); ++j) {
+ const MIDI::Name::PatchNameList& patches = _current_patch_bank->patch_name_list ();
+ for (MIDI::Name::PatchNameList::const_iterator j = patches.begin(); j != patches.end(); ++j) {
string n = (*j)->name ();
boost::replace_all (n, "_", " ");
@@ -305,9 +307,9 @@ PatchChangeDialog::patch_combo_changed ()
return;
}
- const MIDI::Name::PatchBank::PatchNameList& patches = _current_patch_bank->patch_name_list ();
+ const MIDI::Name::PatchNameList& patches = _current_patch_bank->patch_name_list ();
- for (MIDI::Name::PatchBank::PatchNameList::const_iterator j = patches.begin(); j != patches.end(); ++j) {
+ for (MIDI::Name::PatchNameList::const_iterator j = patches.begin(); j != patches.end(); ++j) {
string n = (*j)->name ();
boost::replace_all (n, "_", " ");
diff --git a/gtk2_ardour/patch_change_dialog.h b/gtk2_ardour/patch_change_dialog.h
index c462ff0c77..ed0f49df34 100644
--- a/gtk2_ardour/patch_change_dialog.h
+++ b/gtk2_ardour/patch_change_dialog.h
@@ -20,7 +20,7 @@
#include <gtkmm/spinbutton.h>
#include <gtkmm/comboboxtext.h>
-#include "midi++/midnam_patch.h"
+
#include "evoral/PatchChange.hpp"
#include "ardour_dialog.h"
#include "audio_clock.h"