--- /dev/null
+From: =?utf-8?q?IOhannes_m_zm=C3=B6lnig?= <zmoelnig@umlautS.umlaeute.mur.at>
+Date: Tue, 20 Aug 2019 14:38:49 +0200
+Subject: JUCE544 compat
+
+---
+ src/core/plugin.cpp | 6 +++---
+ src/core/plugin.h | 4 ++--
+ src/core/pluginManager.cpp | 18 ++++++++----------
+ 3 files changed, 13 insertions(+), 15 deletions(-)
+
+diff --git a/src/core/plugin.cpp b/src/core/plugin.cpp
+index 32e9b88..26108ca 100644
+--- a/src/core/plugin.cpp
++++ b/src/core/plugin.cpp
+@@ -48,9 +48,9 @@ int Plugin::m_idGenerator = 1;
+ /* -------------------------------------------------------------------------- */
+
+
+-Plugin::Plugin(juce::AudioPluginInstance* plugin, double samplerate, int buffersize)
++Plugin::Plugin(std::unique_ptr<juce::AudioPluginInstance> plugin, double samplerate, int buffersize)
+ : m_ui (nullptr),
+- m_plugin(plugin),
++ m_plugin(std::move(plugin)),
+ m_id (m_idGenerator++),
+ m_bypass(false)
+ {
+@@ -59,7 +59,7 @@ Plugin::Plugin(juce::AudioPluginInstance* plugin, double samplerate, int buffers
+ /* Init midiInParams. All values are empty (0x0): they will be filled during
+ midi learning process. */
+
+- const OwnedArray<AudioProcessorParameter>& params = m_plugin->getParameters();
++ auto params = m_plugin->getParameters();
+ for (int i=0; i<params.size(); i++)
+ midiInParams.push_back(0x0);
+
+diff --git a/src/core/plugin.h b/src/core/plugin.h
+index a7cca04..1323b86 100644
+--- a/src/core/plugin.h
++++ b/src/core/plugin.h
+@@ -41,7 +41,7 @@ class Plugin
+ {
+ public:
+
+- Plugin(juce::AudioPluginInstance* p, double samplerate, int buffersize);
++ Plugin(std::unique_ptr<juce::AudioPluginInstance> p, double samplerate, int buffersize);
+ ~Plugin();
+
+ /* getUniqueId
+@@ -102,7 +102,7 @@ private:
+ static int m_idGenerator;
+
+ juce::AudioProcessorEditor* m_ui; // gui
+- juce::AudioPluginInstance* m_plugin; // core
++ std::unique_ptr<juce::AudioPluginInstance> m_plugin; // core
+ juce::AudioBuffer<float> m_buffer;
+
+ int m_id;
+diff --git a/src/core/pluginManager.cpp b/src/core/pluginManager.cpp
+index 4b6d1a1..53a6186 100644
+--- a/src/core/pluginManager.cpp
++++ b/src/core/pluginManager.cpp
+@@ -104,14 +104,14 @@ VSTs: their ID is based on the plug-in file location. E.g.:
+
+ The following function simply drops the first hash code during comparison. */
+
+-const juce::PluginDescription* findPluginDescription_(const string& id)
++std::unique_ptr<juce::PluginDescription> findPluginDescription_(const string& id)
+ {
+ vector<string> idParts = splitPluginDescription_(id);
+
+- for (const juce::PluginDescription* pd : knownPluginList_) {
++ for (auto pd : knownPluginList_) {
+ vector<string> tmpIdParts = splitPluginDescription_(pd->createIdentifierString().toStdString());
+ if (idParts[0] == tmpIdParts[0] && idParts[2] == tmpIdParts[2])
+- return pd;
++ return std::unique_ptr<juce::PluginDescription> (pd);
+ }
+ return nullptr;
+ }
+@@ -181,10 +181,9 @@ int saveList(const string& filepath)
+
+ int loadList(const string& filepath)
+ {
+- juce::XmlElement* elem = juce::XmlDocument::parse(juce::File(filepath));
++ std::unique_ptr<juce::XmlElement> elem = juce::XmlDocument::parse(juce::File(filepath));
+ if (elem != nullptr) {
+ knownPluginList_.recreateFromXml(*elem);
+- delete elem;
+ return 1;
+ }
+ return 0;
+@@ -199,11 +198,11 @@ std::unique_ptr<Plugin> makePlugin(const string& fid)
+ /* Initialize plugin. The default mode uses getTypeForIdentifierString,
+ falling back to getTypeForFile (deprecated) for old patches (< 0.14.4). */
+
+- const juce::PluginDescription* pd = findPluginDescription_(fid);
++ auto pd = findPluginDescription_(fid);
+ if (pd == nullptr) {
+ gu_log("[pluginManager::makePlugin] no plugin found with fid=%s! Trying with "
+ "deprecated mode...\n", fid.c_str());
+- pd = knownPluginList_.getTypeForFile(fid);
++ pd = std::move(knownPluginList_.getTypeForFile(fid));
+ if (pd == nullptr) {
+ gu_log("[pluginManager::makePlugin] still nothing to do, returning unknown plugin\n");
+ missingPlugins_ = true;
+@@ -212,15 +211,14 @@ std::unique_ptr<Plugin> makePlugin(const string& fid)
+ }
+ }
+
+- juce::AudioPluginInstance* pi = pluginFormat_.createInstanceFromDescription(*pd, samplerate_, buffersize_);
++ auto pi = pluginFormat_.createInstanceFromDescription(*pd, samplerate_, buffersize_);
+ if (!pi) {
+ gu_log("[pluginManager::makePlugin] unable to create instance with fid=%s!\n", fid.c_str());
+ missingPlugins_ = true;
+ return {};
+ }
+ gu_log("[pluginManager::makePlugin] plugin instance with fid=%s created\n", fid.c_str());
+-
+- return std::make_unique<Plugin>(pi, samplerate_, buffersize_);
++ return std::make_unique<Plugin>(std::move(pi), samplerate_, buffersize_);
+ }
+
+