diff options
author | Robin Gareus <robin@gareus.org> | 2017-03-29 23:39:41 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-03-29 23:53:56 +0200 |
commit | c0b6d8bfdf2f87c8249d31b55a56c92ec60983a8 (patch) | |
tree | 29c1db629951f88961b8ecfdc6fefb0e1bc47617 /libs/ardour/instrument_info.cc | |
parent | e7ca514887d7506c2d0cefc3e9b9f857b522d027 (diff) |
Fix Patch Change Naming when plugins change (Route::reset_instrument_info)
Diffstat (limited to 'libs/ardour/instrument_info.cc')
-rw-r--r-- | libs/ardour/instrument_info.cc | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/libs/ardour/instrument_info.cc b/libs/ardour/instrument_info.cc index 1ea0fd5ce3..e7538a061f 100644 --- a/libs/ardour/instrument_info.cc +++ b/libs/ardour/instrument_info.cc @@ -58,9 +58,25 @@ InstrumentInfo::set_external_instrument (const string& model, const string& mode void InstrumentInfo::set_internal_instrument (boost::shared_ptr<Processor> p) { - internal_instrument = p; - external_instrument_model = (_("Unknown")); external_instrument_mode = ""; + + boost::shared_ptr<PluginInsert> pi = boost::dynamic_pointer_cast<PluginInsert>(p); + if (pi && pi->plugin ()->has_midnam ()) { + /* really back hack, following MidiTimeAxisView::model_changed() + * + * InstrumentInfo::get_plugin_patch_name() needs to be overhauled, + * it limits all PluginInsert to generic-midi or only numbers. + */ + internal_instrument.reset (); + external_instrument_model = pi->plugin ()->midnam_model (); + const std::list<std::string> device_modes = MIDI::Name::MidiPatchManager::instance().custom_device_mode_names_by_model (external_instrument_model); + if (device_modes.size() > 0) { + external_instrument_mode = device_modes.front(); + } + } else { + internal_instrument = p; + external_instrument_model = (_("Unknown")); + } Changed(); /* EMIT SIGNAL */ } |