+
+ Searchpath search_path = midi_patch_search_path ();
+ vector<std::string> result;
+
+ find_files_matching_pattern (result, search_path, "*.midnam");
+
+ info << "Loading " << result.size() << " MIDI patches from " << search_path.to_string() << endmsg;
+
+ for (vector<std::string>::iterator i = result.begin(); i != result.end(); ++i) {
+ boost::shared_ptr<MIDINameDocument> document;
+ try {
+ document = boost::shared_ptr<MIDINameDocument>(new MIDINameDocument(*i));
+ } catch (...) {
+ error << "Error parsing MIDI patch file " << *i << endmsg;
+ continue;
+ }
+ for (MIDINameDocument::MasterDeviceNamesList::const_iterator device =
+ document->master_device_names_by_model().begin();
+ device != document->master_device_names_by_model().end();
+ ++device) {
+ if (_documents.find(device->first) != _documents.end()) {
+ warning << string_compose(_("Duplicate MIDI device `%1' in `%2' ignored"),
+ device->first, *i)
+ << endmsg;
+ continue;
+ }
+
+ _documents[device->first] = document;
+ _master_devices_by_model[device->first] = device->second;
+
+ _all_models.insert(device->first);
+ }
+ }
+
+ if (_session) {
+ add_session_patches ();
+ }
+}
+
+void
+MidiPatchManager::session_going_away ()
+{
+ SessionHandlePtr::session_going_away ();
+ refresh ();