From b1bc353f0d770a28a0a4c2d91959cc0d2acc1216 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 19 Jan 2013 10:02:00 +0000 Subject: Add standard MIDI midnam file and remove hard coded equivalent. Accordingly, make "generic" MIDI truly generic, just numbered controllers. Break up MIDI name UI stuff into manageable functions of reasonable size. Add convenient method to MIDINameDocument for getting the names for a device. Tolerate comments in MIDINameDocument ControlNameList. Can't remove the MIDI name code just yet, since it's still erroneously used by Automatable::describe_parameter(). This is the cause of a bug where the name on the automation lane does not match that in the menu. The plan is to make a very simple pure abstract interface for getting MIDI names, and make it possible to set one for Automatable (or perhaps pass it to describe_parameter()). Thus we'll be on the way to supporting names from sources other than midnam files, namely plugins. git-svn-id: svn://localhost/ardour2/branches/3.0@13895 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/midi++2/midi++/midnam_patch.h | 2 ++ libs/midi++2/midnam_patch.cc | 18 +++++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) (limited to 'libs/midi++2') diff --git a/libs/midi++2/midi++/midnam_patch.h b/libs/midi++2/midi++/midnam_patch.h index bae5241f98..a759e503dd 100644 --- a/libs/midi++2/midi++/midnam_patch.h +++ b/libs/midi++2/midi++/midnam_patch.h @@ -387,6 +387,8 @@ public: const std::string& author() const { return _author; } void set_author(const std::string an_author) { _author = an_author; } + boost::shared_ptr master_device_names(const std::string& model); + const MasterDeviceNamesList& master_device_names_by_model() const { return _master_device_names_list; } const MasterDeviceNames::Models& all_models() const { return _all_models; } diff --git a/libs/midi++2/midnam_patch.cc b/libs/midi++2/midnam_patch.cc index 1608b418b0..3509d1e021 100644 --- a/libs/midi++2/midnam_patch.cc +++ b/libs/midi++2/midnam_patch.cc @@ -216,9 +216,11 @@ ControlNameList::set_state (const XMLTree& tree, const XMLNode& node) for (XMLNodeList::const_iterator i = node.children().begin(); i != node.children().end(); ++i) { - boost::shared_ptr control(new Control()); - control->set_state (tree, *(*i)); - _controls.push_back(control); + if ((*i)->name() != "comment") { + boost::shared_ptr control(new Control()); + control->set_state (tree, *(*i)); + _controls.push_back(control); + } } return 0; @@ -646,6 +648,16 @@ MIDINameDocument::get_state(void) return nothing; } +boost::shared_ptr +MIDINameDocument::master_device_names(const std::string& model) +{ + MasterDeviceNamesList::const_iterator m = _master_device_names_list.find(model); + if (m != _master_device_names_list.end()) { + return boost::shared_ptr(m->second); + } + return boost::shared_ptr(); +} + const char* general_midi_program_names[128] = { "Acoustic Grand Piano", "Bright Acoustic Piano", -- cgit v1.2.3