summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2020-04-01 23:25:19 +0200
committerRobin Gareus <robin@gareus.org>2020-04-01 23:25:19 +0200
commit20ee430fda30e3b4b30f3a083598d26d2fe7ffeb (patch)
tree0883abb022a2460eb45bbb4bc5427c9ad9e5e392
parent37bbc70179f006b86dfbdffca3cd7746fe2f32b7 (diff)
Add API to count named MIDNAM controls
-rw-r--r--libs/ardour/ardour/instrument_info.h2
-rw-r--r--libs/ardour/instrument_info.cc17
2 files changed, 19 insertions, 0 deletions
diff --git a/libs/ardour/ardour/instrument_info.h b/libs/ardour/ardour/instrument_info.h
index 9330dedd47..0a6746a960 100644
--- a/libs/ardour/ardour/instrument_info.h
+++ b/libs/ardour/ardour/instrument_info.h
@@ -68,6 +68,8 @@ public:
boost::shared_ptr<const MIDI::Name::ValueNameList> value_name_list_by_control (uint8_t channel, uint8_t number) const;
+ size_t master_controller_count () const;
+
PBD::Signal0<void> Changed;
bool have_custom_plugin_info () const;
diff --git a/libs/ardour/instrument_info.cc b/libs/ardour/instrument_info.cc
index f683e96f0b..fcc7baf1cd 100644
--- a/libs/ardour/instrument_info.cc
+++ b/libs/ardour/instrument_info.cc
@@ -176,6 +176,23 @@ InstrumentInfo::control_name_list (uint8_t channel)
return dev_names->control_name_list (chan_names->control_list_name ());
}
+size_t
+InstrumentInfo::master_controller_count () const
+{
+ boost::shared_ptr<MasterDeviceNames> const& dev_names (MidiPatchManager::instance ().master_device_by_model (model ()));
+ if (!dev_names) {
+ return 0;
+ }
+ MasterDeviceNames::ControlNameLists const& ctllist (dev_names->controls());
+
+ size_t total_ctrls = 0;
+ for (MasterDeviceNames::ControlNameLists::const_iterator l = ctllist.begin(); l != ctllist.end(); ++l) {
+ boost::shared_ptr<ControlNameList> const& name_list = l->second;
+ total_ctrls += name_list->controls().size();
+ }
+ return total_ctrls;
+}
+
#if 0
MasterDeviceNames::ControlNameLists const&
InstrumentInfo::master_control_names () const