From 00dd576b21abf387aac1a4a97c2b8e4b83ab2e3c Mon Sep 17 00:00:00 2001 From: hogliux Date: Wed, 20 Apr 2016 15:50:14 +0100 Subject: [PATCH] Don't create an asserting VST2 plug-in when creating a new plug-in project via the Projucer's wizard --- .../Projucer/JuceLibraryCode/BinaryData.cpp | 33 +++++++++++++++++-- extras/Projucer/JuceLibraryCode/BinaryData.h | 4 +-- .../jucer_AudioPluginFilterTemplate.cpp | 25 ++++++++++++++ .../jucer_AudioPluginFilterTemplate.h | 4 +++ 4 files changed, 62 insertions(+), 4 deletions(-) diff --git a/extras/Projucer/JuceLibraryCode/BinaryData.cpp b/extras/Projucer/JuceLibraryCode/BinaryData.cpp index 4c951df555..cd022f371a 100644 --- a/extras/Projucer/JuceLibraryCode/BinaryData.cpp +++ b/extras/Projucer/JuceLibraryCode/BinaryData.cpp @@ -367,6 +367,31 @@ static const unsigned char temp_binary_data_4[] = " // spare memory, etc.\r\n" "}\r\n" "\r\n" +"#ifndef JucePlugin_PreferredChannelConfigurations\r\n" +"bool FILTERCLASSNAME::setPreferredBusArrangement (bool isInput, int bus, const AudioChannelSet& preferredSet)\r\n" +"{\r\n" +" // Reject any bus arrangements that are not compatible with your plugin\r\n" +" \r\n" +" const int numChannels = preferredSet.size();\r\n" +" \r\n" +" #if JucePlugin_IsMidiEffect\r\n" +" if (numChannels != 0)\r\n" +" return false;\r\n" +" #elif JucePlugin_IsSynth\r\n" +" if (isInput || (numChannels != 1 && numChannels != 2))\r\n" +" return false;\r\n" +" #else\r\n" +" if (numChannels != 1 && numChannels != 2)\r\n" +" return false;\r\n" +" \r\n" +" if (! AudioProcessor::setPreferredBusArrangement (! isInput, bus, preferredSet))\r\n" +" return false;\r\n" +" #endif\r\n" +"\r\n" +" return AudioProcessor::setPreferredBusArrangement (isInput, bus, preferredSet);\r\n" +"}\r\n" +"#endif\r\n" +"\r\n" "void FILTERCLASSNAME::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages)\r\n" "{\r\n" " const int totalNumInputChannels = getTotalNumInputChannels();\r\n" @@ -456,6 +481,10 @@ static const unsigned char temp_binary_data_5[] = " //==============================================================================\r\n" " void prepareToPlay (double sampleRate, int samplesPerBlock) override;\r\n" " void releaseResources() override;\r\n" +" \r\n" +" #ifndef JucePlugin_PreferredChannelConfigurations\r\n" +" bool setPreferredBusArrangement (bool isInput, int bus, const AudioChannelSet& preferredSet) override;\r\n" +" #endif\r\n" "\r\n" " void processBlock (AudioSampleBuffer&, MidiBuffer&) override;\r\n" "\r\n" @@ -4021,8 +4050,8 @@ const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) throw case 0xafccbd3f: numBytes = 3203; return jucer_AudioComponentTemplate_cpp; case 0x27c5a93a: numBytes = 1162; return jucer_AudioPluginEditorTemplate_cpp; case 0x4d0721bf: numBytes = 994; return jucer_AudioPluginEditorTemplate_h; - case 0x51b49ac5: numBytes = 4255; return jucer_AudioPluginFilterTemplate_cpp; - case 0x488afa0a: numBytes = 2114; return jucer_AudioPluginFilterTemplate_h; + case 0x51b49ac5: numBytes = 5059; return jucer_AudioPluginFilterTemplate_cpp; + case 0x488afa0a: numBytes = 2293; return jucer_AudioPluginFilterTemplate_h; case 0xabad7041: numBytes = 2151; return jucer_ComponentTemplate_cpp; case 0xfc72fe86: numBytes = 2131; return jucer_ComponentTemplate_h; case 0x0b66646c: numBytes = 886; return jucer_ContentCompTemplate_cpp; diff --git a/extras/Projucer/JuceLibraryCode/BinaryData.h b/extras/Projucer/JuceLibraryCode/BinaryData.h index 45cd1101da..dab9ee5488 100644 --- a/extras/Projucer/JuceLibraryCode/BinaryData.h +++ b/extras/Projucer/JuceLibraryCode/BinaryData.h @@ -22,10 +22,10 @@ namespace BinaryData const int jucer_AudioPluginEditorTemplate_hSize = 994; extern const char* jucer_AudioPluginFilterTemplate_cpp; - const int jucer_AudioPluginFilterTemplate_cppSize = 4255; + const int jucer_AudioPluginFilterTemplate_cppSize = 5059; extern const char* jucer_AudioPluginFilterTemplate_h; - const int jucer_AudioPluginFilterTemplate_hSize = 2114; + const int jucer_AudioPluginFilterTemplate_hSize = 2293; extern const char* jucer_ComponentTemplate_cpp; const int jucer_ComponentTemplate_cppSize = 2151; diff --git a/extras/Projucer/Source/BinaryData/jucer_AudioPluginFilterTemplate.cpp b/extras/Projucer/Source/BinaryData/jucer_AudioPluginFilterTemplate.cpp index 8d71f3710d..e75add664d 100644 --- a/extras/Projucer/Source/BinaryData/jucer_AudioPluginFilterTemplate.cpp +++ b/extras/Projucer/Source/BinaryData/jucer_AudioPluginFilterTemplate.cpp @@ -86,6 +86,31 @@ void FILTERCLASSNAME::releaseResources() // spare memory, etc. } +#ifndef JucePlugin_PreferredChannelConfigurations +bool FILTERCLASSNAME::setPreferredBusArrangement (bool isInput, int bus, const AudioChannelSet& preferredSet) +{ + // Reject any bus arrangements that are not compatible with your plugin + + const int numChannels = preferredSet.size(); + + #if JucePlugin_IsMidiEffect + if (numChannels != 0) + return false; + #elif JucePlugin_IsSynth + if (isInput || (numChannels != 1 && numChannels != 2)) + return false; + #else + if (numChannels != 1 && numChannels != 2) + return false; + + if (! AudioProcessor::setPreferredBusArrangement (! isInput, bus, preferredSet)) + return false; + #endif + + return AudioProcessor::setPreferredBusArrangement (isInput, bus, preferredSet); +} +#endif + void FILTERCLASSNAME::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages) { const int totalNumInputChannels = getTotalNumInputChannels(); diff --git a/extras/Projucer/Source/BinaryData/jucer_AudioPluginFilterTemplate.h b/extras/Projucer/Source/BinaryData/jucer_AudioPluginFilterTemplate.h index 767278270c..b112aa362c 100644 --- a/extras/Projucer/Source/BinaryData/jucer_AudioPluginFilterTemplate.h +++ b/extras/Projucer/Source/BinaryData/jucer_AudioPluginFilterTemplate.h @@ -28,6 +28,10 @@ public: void prepareToPlay (double sampleRate, int samplesPerBlock) override; void releaseResources() override; + #ifndef JucePlugin_PreferredChannelConfigurations + bool setPreferredBusArrangement (bool isInput, int bus, const AudioChannelSet& preferredSet) override; + #endif + void processBlock (AudioSampleBuffer&, MidiBuffer&) override; //==============================================================================