From c0b6d8bfdf2f87c8249d31b55a56c92ec60983a8 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 29 Mar 2017 23:39:41 +0200 Subject: Fix Patch Change Naming when plugins change (Route::reset_instrument_info) --- libs/ardour/instrument_info.cc | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'libs/ardour/instrument_info.cc') 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 p) { - internal_instrument = p; - external_instrument_model = (_("Unknown")); external_instrument_mode = ""; + + boost::shared_ptr pi = boost::dynamic_pointer_cast(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 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 */ } -- cgit v1.2.3