diff --git a/extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj b/extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj
index f0415d6e61..f2072dc748 100644
--- a/extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj
+++ b/extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj
@@ -131,6 +131,7 @@
233C7FC5157176DB33FE2F27 /* RecentFilesMenuTemplate.nib */ /* RecentFilesMenuTemplate.nib */ = {isa = PBXFileReference; lastKnownFileType = file.nib; name = RecentFilesMenuTemplate.nib; path = ../../../Build/CMake/RecentFilesMenuTemplate.nib; sourceTree = SOURCE_ROOT; };
23A8DE16C0CDB8EED18B008B /* jucer_CommandIDs.h */ /* jucer_CommandIDs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_CommandIDs.h; path = ../../Source/Application/jucer_CommandIDs.h; sourceTree = SOURCE_ROOT; };
23D79A22569BEDF63B57DD36 /* jucer_CodeHelpers.h */ /* jucer_CodeHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_CodeHelpers.h; path = ../../Source/Utility/Helpers/jucer_CodeHelpers.h; sourceTree = SOURCE_ROOT; };
+ 2407B8BCEAB78AE0FE6C1594 /* jucer_AudioPluginARAEditorTemplate.cpp */ /* jucer_AudioPluginARAEditorTemplate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_AudioPluginARAEditorTemplate.cpp; path = ../../Source/BinaryData/Templates/jucer_AudioPluginARAEditorTemplate.cpp; sourceTree = SOURCE_ROOT; };
247768B490B9D759DDA79359 /* jucer_UserAvatarComponent.h */ /* jucer_UserAvatarComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_UserAvatarComponent.h; path = ../../Source/Project/UI/jucer_UserAvatarComponent.h; sourceTree = SOURCE_ROOT; };
24EB4C2412821B8019D6F754 /* jucer_TestComponent.cpp */ /* jucer_TestComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_TestComponent.cpp; path = ../../Source/ComponentEditor/UI/jucer_TestComponent.cpp; sourceTree = SOURCE_ROOT; };
25BE1265FE6C6EA3473A3A0A /* jucer_ResourceFile.h */ /* jucer_ResourceFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ResourceFile.h; path = ../../Source/ProjectSaving/jucer_ResourceFile.h; sourceTree = SOURCE_ROOT; };
@@ -259,6 +260,7 @@
951128CA33CCDEF570436B1C /* Icon.icns */ /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = file.icns; name = Icon.icns; path = Icon.icns; sourceTree = SOURCE_ROOT; };
96A1EC6B50DBD2C526C60338 /* jucer_AudioPluginARADocumentControllerTemplate.cpp */ /* jucer_AudioPluginARADocumentControllerTemplate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_AudioPluginARADocumentControllerTemplate.cpp; path = ../../Source/BinaryData/Templates/jucer_AudioPluginARADocumentControllerTemplate.cpp; sourceTree = SOURCE_ROOT; };
983CFBA01CA8811F30FA7F4C /* jucer_MiscUtilities.h */ /* jucer_MiscUtilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_MiscUtilities.h; path = ../../Source/Utility/Helpers/jucer_MiscUtilities.h; sourceTree = SOURCE_ROOT; };
+ 988A3851FBA511FB0B8FF754 /* jucer_AudioPluginARAEditorTemplate.h */ /* jucer_AudioPluginARAEditorTemplate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_AudioPluginARAEditorTemplate.h; path = ../../Source/BinaryData/Templates/jucer_AudioPluginARAEditorTemplate.h; sourceTree = SOURCE_ROOT; };
988F5C1E40DED02D8B064253 /* jucer_PaintElementGroup.cpp */ /* jucer_PaintElementGroup.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_PaintElementGroup.cpp; path = ../../Source/ComponentEditor/PaintElements/jucer_PaintElementGroup.cpp; sourceTree = SOURCE_ROOT; };
9914F905BFCFBE5F76619670 /* jucer_ColouredElement.h */ /* jucer_ColouredElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ColouredElement.h; path = ../../Source/ComponentEditor/PaintElements/jucer_ColouredElement.h; sourceTree = SOURCE_ROOT; };
996E472B82A75531875A5E38 /* LICENSE */ /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = file; name = LICENSE; path = ../../Source/BinaryData/gradle/LICENSE; sourceTree = SOURCE_ROOT; };
@@ -290,6 +292,7 @@
B2CB95B3F44C3CC5735051A3 /* jucer_JustificationProperty.h */ /* jucer_JustificationProperty.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_JustificationProperty.h; path = ../../Source/ComponentEditor/Properties/jucer_JustificationProperty.h; sourceTree = SOURCE_ROOT; };
B3528C08B84CBC950252EA69 /* jucer_ModulesInformationComponent.h */ /* jucer_ModulesInformationComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ModulesInformationComponent.h; path = ../../Source/Project/UI/jucer_ModulesInformationComponent.h; sourceTree = SOURCE_ROOT; };
B403AF75EAF361ED74EE476E /* jucer_FileHelpers.cpp */ /* jucer_FileHelpers.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_FileHelpers.cpp; path = ../../Source/Utility/Helpers/jucer_FileHelpers.cpp; sourceTree = SOURCE_ROOT; };
+ B542D78F431A52AF07F4113B /* jucer_AudioPluginARAFilterTemplate.h */ /* jucer_AudioPluginARAFilterTemplate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_AudioPluginARAFilterTemplate.h; path = ../../Source/BinaryData/Templates/jucer_AudioPluginARAFilterTemplate.h; sourceTree = SOURCE_ROOT; };
B6444A4A8DFD6828FF6BD1CB /* jucer_LoginFormComponent.h */ /* jucer_LoginFormComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_LoginFormComponent.h; path = ../../Source/Application/UserAccount/jucer_LoginFormComponent.h; sourceTree = SOURCE_ROOT; };
B6F2905330EA5C560D527209 /* juce_graphics */ /* juce_graphics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_graphics; path = ../../../../modules/juce_graphics; sourceTree = SOURCE_ROOT; };
B83C9BD89F31EA9E5E12A3C6 /* juce_icon.png */ /* juce_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = juce_icon.png; path = ../../Source/BinaryData/Icons/juce_icon.png; sourceTree = SOURCE_ROOT; };
@@ -679,6 +682,9 @@
5BF0374EB908F0476BD8ED42,
96A1EC6B50DBD2C526C60338,
8E129499EA2FB8A4944F8701,
+ 2407B8BCEAB78AE0FE6C1594,
+ 988A3851FBA511FB0B8FF754,
+ B542D78F431A52AF07F4113B,
F3CCA5545AB7B4B603D0BFEB,
2E9CF857DCF1EFEA997B4D5B,
6574A50A8997799705B23465,
diff --git a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj
index 5a56d77b8b..ac97d11492 100644
--- a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj
+++ b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj
@@ -160,6 +160,9 @@
true
+
+ true
+
true
@@ -1651,6 +1654,8 @@
+
+
diff --git a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters
index 513c8b25ea..6eaee41401 100644
--- a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters
+++ b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters
@@ -355,6 +355,9 @@
Projucer\BinaryData\Templates
+
+ Projucer\BinaryData\Templates
+
Projucer\BinaryData\Templates
@@ -2115,6 +2118,12 @@
Projucer\BinaryData\Templates
+
+ Projucer\BinaryData\Templates
+
+
+ Projucer\BinaryData\Templates
+
Projucer\BinaryData\Templates
diff --git a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj
index 1f99f50842..c908e1f05f 100644
--- a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj
+++ b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj
@@ -160,6 +160,9 @@
true
+
+ true
+
true
@@ -1651,6 +1654,8 @@
+
+
diff --git a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters
index 36caca4c5a..3c3c1ba730 100644
--- a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters
+++ b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters
@@ -355,6 +355,9 @@
Projucer\BinaryData\Templates
+
+ Projucer\BinaryData\Templates
+
Projucer\BinaryData\Templates
@@ -2115,6 +2118,12 @@
Projucer\BinaryData\Templates
+
+ Projucer\BinaryData\Templates
+
+
+ Projucer\BinaryData\Templates
+
Projucer\BinaryData\Templates
diff --git a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj
index d6ba24ebe2..d9df129fa4 100644
--- a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj
+++ b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj
@@ -160,6 +160,9 @@
true
+
+ true
+
true
@@ -1651,6 +1654,8 @@
+
+
diff --git a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters
index 00226c4b21..8491cc628c 100644
--- a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters
+++ b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters
@@ -355,6 +355,9 @@
Projucer\BinaryData\Templates
+
+ Projucer\BinaryData\Templates
+
Projucer\BinaryData\Templates
@@ -2115,6 +2118,12 @@
Projucer\BinaryData\Templates
+
+ Projucer\BinaryData\Templates
+
+
+ Projucer\BinaryData\Templates
+
Projucer\BinaryData\Templates
diff --git a/extras/Projucer/CMakeLists.txt b/extras/Projucer/CMakeLists.txt
index fa84bc65f1..c2f0aeb795 100644
--- a/extras/Projucer/CMakeLists.txt
+++ b/extras/Projucer/CMakeLists.txt
@@ -124,8 +124,11 @@ juce_add_binary_data(ProjucerData SOURCES
Source/BinaryData/Templates/jucer_AudioPluginARAPlaybackRendererTemplate.h
Source/BinaryData/Templates/jucer_AudioPluginEditorTemplate.cpp
Source/BinaryData/Templates/jucer_AudioPluginEditorTemplate.h
+ Source/BinaryData/Templates/jucer_AudioPluginARAEditorTemplate.cpp
+ Source/BinaryData/Templates/jucer_AudioPluginARAEditorTemplate.h
Source/BinaryData/Templates/jucer_AudioPluginFilterTemplate.cpp
Source/BinaryData/Templates/jucer_AudioPluginFilterTemplate.h
+ Source/BinaryData/Templates/jucer_AudioPluginARAFilterTemplate.h
Source/BinaryData/Templates/jucer_ComponentTemplate.cpp
Source/BinaryData/Templates/jucer_ComponentTemplate.h
Source/BinaryData/Templates/jucer_ContentCompSimpleTemplate.h
diff --git a/extras/Projucer/JuceLibraryCode/BinaryData.cpp b/extras/Projucer/JuceLibraryCode/BinaryData.cpp
index d76dd25fb0..a232e9af87 100644
--- a/extras/Projucer/JuceLibraryCode/BinaryData.cpp
+++ b/extras/Projucer/JuceLibraryCode/BinaryData.cpp
@@ -6874,11 +6874,171 @@ static const unsigned char temp_binary_data_37[] =
const char* jucer_AudioPluginARADocumentControllerTemplate_h = (const char*) temp_binary_data_37;
-//================== jucer_AudioPluginARAPlaybackRendererTemplate.cpp ==================
+//================== jucer_AudioPluginARAEditorTemplate.cpp ==================
static const unsigned char temp_binary_data_38[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
+" This file contains the basic framework code for a JUCE plugin editor.\r\n"
+"\r\n"
+" ==============================================================================\r\n"
+"*/\r\n"
+"\r\n"
+"%%editor_cpp_headers%%\r\n"
+"\r\n"
+"//==============================================================================\r\n"
+"%%editor_class_name%%::%%editor_class_name%% (%%filter_class_name%%& p)\r\n"
+" : AudioProcessorEditor (&p),\r\n"
+" #if JucePlugin_Enable_ARA\r\n"
+" AudioProcessorEditorARAExtension (&p),\r\n"
+" #endif\r\n"
+" audioProcessor (p)\r\n"
+"{\r\n"
+" #if JucePlugin_Enable_ARA\r\n"
+" // ARA plugins must be resizable for proper view embedding\r\n"
+" setResizable (true, false);\r\n"
+" #endif\r\n"
+"\r\n"
+" // Make sure that before the constructor has finished, you've set the\r\n"
+" // editor's size to whatever you need it to be.\r\n"
+" setSize (400, 300);\r\n"
+"}\r\n"
+"\r\n"
+"%%editor_class_name%%::~%%editor_class_name%%()\r\n"
+"{\r\n"
+"}\r\n"
+"\r\n"
+"//==============================================================================\r\n"
+"void %%editor_class_name%%::paint (juce::Graphics& g)\r\n"
+"{\r\n"
+" // (Our component is opaque, so we must completely fill the background with a solid colour)\r\n"
+" g.fillAll (getLookAndFeel().findColour (juce::ResizableWindow::backgroundColourId));\r\n"
+"\r\n"
+" g.setColour (juce::Colours::white);\r\n"
+" g.setFont (15.0f);\r\n"
+" g.drawFittedText (\"Hello World!\", getLocalBounds(), juce::Justification::centred, 1);\r\n"
+"}\r\n"
+"\r\n"
+"void %%editor_class_name%%::resized()\r\n"
+"{\r\n"
+" // This is generally where you'll want to lay out the positions of any\r\n"
+" // subcomponents in your editor..\r\n"
+"}\r\n";
+
+const char* jucer_AudioPluginARAEditorTemplate_cpp = (const char*) temp_binary_data_38;
+
+//================== jucer_AudioPluginARAEditorTemplate.h ==================
+static const unsigned char temp_binary_data_39[] =
+"/*\r\n"
+" ==============================================================================\r\n"
+"\r\n"
+" This file contains the basic framework code for a JUCE plugin editor.\r\n"
+"\r\n"
+" ==============================================================================\r\n"
+"*/\r\n"
+"\r\n"
+"#pragma once\r\n"
+"\r\n"
+"%%editor_headers%%\r\n"
+"\r\n"
+"//==============================================================================\r\n"
+"/**\r\n"
+"*/\r\n"
+"class %%editor_class_name%% : public juce::AudioProcessorEditor\r\n"
+" #if JucePlugin_Enable_ARA\r\n"
+" , public juce::AudioProcessorEditorARAExtension\r\n"
+" #endif\r\n"
+"{\r\n"
+"public:\r\n"
+" %%editor_class_name%% (%%filter_class_name%%&);\r\n"
+" ~%%editor_class_name%%() override;\r\n"
+"\r\n"
+" //==============================================================================\r\n"
+" void paint (juce::Graphics&) override;\r\n"
+" void resized() override;\r\n"
+"\r\n"
+"private:\r\n"
+" // This reference is provided as a quick way for your editor to\r\n"
+" // access the processor object that created it.\r\n"
+" %%filter_class_name%%& audioProcessor;\r\n"
+"\r\n"
+" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%editor_class_name%%)\r\n"
+"};\r\n";
+
+const char* jucer_AudioPluginARAEditorTemplate_h = (const char*) temp_binary_data_39;
+
+//================== jucer_AudioPluginARAFilterTemplate.h ==================
+static const unsigned char temp_binary_data_40[] =
+"/*\r\n"
+" ==============================================================================\r\n"
+"\r\n"
+" This file contains the basic framework code for a JUCE plugin processor.\r\n"
+"\r\n"
+" ==============================================================================\r\n"
+"*/\r\n"
+"\r\n"
+"#pragma once\r\n"
+"\r\n"
+"%%app_headers%%\r\n"
+"\r\n"
+"//==============================================================================\r\n"
+"/**\r\n"
+"*/\r\n"
+"class %%filter_class_name%% : public juce::AudioProcessor\r\n"
+" #if JucePlugin_Enable_ARA\r\n"
+" , public juce::AudioProcessorARAExtension\r\n"
+" #endif\r\n"
+"{\r\n"
+"public:\r\n"
+" //==============================================================================\r\n"
+" %%filter_class_name%%();\r\n"
+" ~%%filter_class_name%%() override;\r\n"
+"\r\n"
+" //==============================================================================\r\n"
+" void prepareToPlay (double sampleRate, int samplesPerBlock) override;\r\n"
+" void releaseResources() override;\r\n"
+"\r\n"
+" #ifndef JucePlugin_PreferredChannelConfigurations\r\n"
+" bool isBusesLayoutSupported (const BusesLayout& layouts) const override;\r\n"
+" #endif\r\n"
+"\r\n"
+" void processBlock (juce::AudioBuffer&, juce::MidiBuffer&) override;\r\n"
+"\r\n"
+" //==============================================================================\r\n"
+" juce::AudioProcessorEditor* createEditor() override;\r\n"
+" bool hasEditor() const override;\r\n"
+"\r\n"
+" //==============================================================================\r\n"
+" const juce::String getName() const override;\r\n"
+"\r\n"
+" bool acceptsMidi() const override;\r\n"
+" bool producesMidi() const override;\r\n"
+" bool isMidiEffect() const override;\r\n"
+" double getTailLengthSeconds() const override;\r\n"
+"\r\n"
+" //==============================================================================\r\n"
+" int getNumPrograms() override;\r\n"
+" int getCurrentProgram() override;\r\n"
+" void setCurrentProgram (int index) override;\r\n"
+" const juce::String getProgramName (int index) override;\r\n"
+" void changeProgramName (int index, const juce::String& newName) override;\r\n"
+"\r\n"
+" //==============================================================================\r\n"
+" void getStateInformation (juce::MemoryBlock& destData) override;\r\n"
+" void setStateInformation (const void* data, int sizeInBytes) override;\r\n"
+"\r\n"
+"private:\r\n"
+" //==============================================================================\r\n"
+" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%filter_class_name%%)\r\n"
+"};\r\n";
+
+const char* jucer_AudioPluginARAFilterTemplate_h = (const char*) temp_binary_data_40;
+
+//================== jucer_AudioPluginARAPlaybackRendererTemplate.cpp ==================
+static const unsigned char temp_binary_data_41[] =
+"/*\r\n"
+" ==============================================================================\r\n"
+"\r\n"
" This file was auto-generated!\r\n"
"\r\n"
" It contains the basic framework code for an ARA playback renderer implementation.\r\n"
@@ -6991,10 +7151,10 @@ static const unsigned char temp_binary_data_38[] =
" return success;\r\n"
"}\r\n";
-const char* jucer_AudioPluginARAPlaybackRendererTemplate_cpp = (const char*) temp_binary_data_38;
+const char* jucer_AudioPluginARAPlaybackRendererTemplate_cpp = (const char*) temp_binary_data_41;
//================== jucer_AudioPluginARAPlaybackRendererTemplate.h ==================
-static const unsigned char temp_binary_data_39[] =
+static const unsigned char temp_binary_data_42[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -7041,10 +7201,10 @@ static const unsigned char temp_binary_data_39[] =
" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%araplaybackrenderer_class_name%%)\r\n"
"};\r\n";
-const char* jucer_AudioPluginARAPlaybackRendererTemplate_h = (const char*) temp_binary_data_39;
+const char* jucer_AudioPluginARAPlaybackRendererTemplate_h = (const char*) temp_binary_data_42;
//================== jucer_AudioPluginEditorTemplate.cpp ==================
-static const unsigned char temp_binary_data_40[] =
+static const unsigned char temp_binary_data_43[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -7085,10 +7245,10 @@ static const unsigned char temp_binary_data_40[] =
" // subcomponents in your editor..\r\n"
"}\r\n";
-const char* jucer_AudioPluginEditorTemplate_cpp = (const char*) temp_binary_data_40;
+const char* jucer_AudioPluginEditorTemplate_cpp = (const char*) temp_binary_data_43;
//================== jucer_AudioPluginEditorTemplate.h ==================
-static const unsigned char temp_binary_data_41[] =
+static const unsigned char temp_binary_data_44[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -7122,10 +7282,10 @@ static const unsigned char temp_binary_data_41[] =
" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%editor_class_name%%)\r\n"
"};\r\n";
-const char* jucer_AudioPluginEditorTemplate_h = (const char*) temp_binary_data_41;
+const char* jucer_AudioPluginEditorTemplate_h = (const char*) temp_binary_data_44;
//================== jucer_AudioPluginFilterTemplate.cpp ==================
-static const unsigned char temp_binary_data_42[] =
+static const unsigned char temp_binary_data_45[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -7317,10 +7477,10 @@ static const unsigned char temp_binary_data_42[] =
" return new %%filter_class_name%%();\r\n"
"}\r\n";
-const char* jucer_AudioPluginFilterTemplate_cpp = (const char*) temp_binary_data_42;
+const char* jucer_AudioPluginFilterTemplate_cpp = (const char*) temp_binary_data_45;
//================== jucer_AudioPluginFilterTemplate.h ==================
-static const unsigned char temp_binary_data_43[] =
+static const unsigned char temp_binary_data_46[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -7337,9 +7497,6 @@ static const unsigned char temp_binary_data_43[] =
"/**\r\n"
"*/\r\n"
"class %%filter_class_name%% : public juce::AudioProcessor\r\n"
-" #if JucePlugin_Enable_ARA\r\n"
-" , public juce::AudioProcessorARAExtension\r\n"
-" #endif\r\n"
"{\r\n"
"public:\r\n"
" //==============================================================================\r\n"
@@ -7384,10 +7541,10 @@ static const unsigned char temp_binary_data_43[] =
" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%filter_class_name%%)\r\n"
"};\r\n";
-const char* jucer_AudioPluginFilterTemplate_h = (const char*) temp_binary_data_43;
+const char* jucer_AudioPluginFilterTemplate_h = (const char*) temp_binary_data_46;
//================== jucer_ComponentTemplate.cpp ==================
-static const unsigned char temp_binary_data_44[] =
+static const unsigned char temp_binary_data_47[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -7463,10 +7620,10 @@ static const unsigned char temp_binary_data_44[] =
"//[EndFile] You can add extra defines here...\r\n"
"//[/EndFile]\r\n";
-const char* jucer_ComponentTemplate_cpp = (const char*) temp_binary_data_44;
+const char* jucer_ComponentTemplate_cpp = (const char*) temp_binary_data_47;
//================== jucer_ComponentTemplate.h ==================
-static const unsigned char temp_binary_data_45[] =
+static const unsigned char temp_binary_data_48[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -7529,10 +7686,10 @@ static const unsigned char temp_binary_data_45[] =
"//[EndFile] You can add extra defines here...\r\n"
"//[/EndFile]\r\n";
-const char* jucer_ComponentTemplate_h = (const char*) temp_binary_data_45;
+const char* jucer_ComponentTemplate_h = (const char*) temp_binary_data_48;
//================== jucer_ContentCompSimpleTemplate.h ==================
-static const unsigned char temp_binary_data_46[] =
+static const unsigned char temp_binary_data_49[] =
"#pragma once\r\n"
"\r\n"
"%%include_juce%%\r\n"
@@ -7582,10 +7739,10 @@ static const unsigned char temp_binary_data_46[] =
" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n"
"};\r\n";
-const char* jucer_ContentCompSimpleTemplate_h = (const char*) temp_binary_data_46;
+const char* jucer_ContentCompSimpleTemplate_h = (const char*) temp_binary_data_49;
//================== jucer_ContentCompTemplate.cpp ==================
-static const unsigned char temp_binary_data_47[] =
+static const unsigned char temp_binary_data_50[] =
"%%include_corresponding_header%%\r\n"
"\r\n"
"//==============================================================================\r\n"
@@ -7616,10 +7773,10 @@ static const unsigned char temp_binary_data_47[] =
" // update their positions.\r\n"
"}\r\n";
-const char* jucer_ContentCompTemplate_cpp = (const char*) temp_binary_data_47;
+const char* jucer_ContentCompTemplate_cpp = (const char*) temp_binary_data_50;
//================== jucer_ContentCompTemplate.h ==================
-static const unsigned char temp_binary_data_48[] =
+static const unsigned char temp_binary_data_51[] =
"#pragma once\r\n"
"\r\n"
"%%include_juce%%\r\n"
@@ -7648,10 +7805,10 @@ static const unsigned char temp_binary_data_48[] =
" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n"
"};\r\n";
-const char* jucer_ContentCompTemplate_h = (const char*) temp_binary_data_48;
+const char* jucer_ContentCompTemplate_h = (const char*) temp_binary_data_51;
//================== jucer_InlineComponentTemplate.h ==================
-static const unsigned char temp_binary_data_49[] =
+static const unsigned char temp_binary_data_52[] =
"//==============================================================================\r\n"
"class %%component_class%% : public juce::Component\r\n"
"{\r\n"
@@ -7693,10 +7850,10 @@ static const unsigned char temp_binary_data_49[] =
" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%component_class%%)\r\n"
"};\r\n";
-const char* jucer_InlineComponentTemplate_h = (const char*) temp_binary_data_49;
+const char* jucer_InlineComponentTemplate_h = (const char*) temp_binary_data_52;
//================== jucer_MainConsoleAppTemplate.cpp ==================
-static const unsigned char temp_binary_data_50[] =
+static const unsigned char temp_binary_data_53[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -7717,10 +7874,10 @@ static const unsigned char temp_binary_data_50[] =
" return 0;\r\n"
"}\r\n";
-const char* jucer_MainConsoleAppTemplate_cpp = (const char*) temp_binary_data_50;
+const char* jucer_MainConsoleAppTemplate_cpp = (const char*) temp_binary_data_53;
//================== jucer_MainTemplate_NoWindow.cpp ==================
-static const unsigned char temp_binary_data_51[] =
+static const unsigned char temp_binary_data_54[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -7773,10 +7930,10 @@ static const unsigned char temp_binary_data_51[] =
"// This macro generates the main() routine that launches the app.\r\n"
"START_JUCE_APPLICATION (%%app_class_name%%)\r\n";
-const char* jucer_MainTemplate_NoWindow_cpp = (const char*) temp_binary_data_51;
+const char* jucer_MainTemplate_NoWindow_cpp = (const char*) temp_binary_data_54;
//================== jucer_MainTemplate_Window.cpp ==================
-static const unsigned char temp_binary_data_52[] =
+static const unsigned char temp_binary_data_55[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -7882,10 +8039,10 @@ static const unsigned char temp_binary_data_52[] =
"// This macro generates the main() routine that launches the app.\r\n"
"START_JUCE_APPLICATION (%%app_class_name%%)\r\n";
-const char* jucer_MainTemplate_Window_cpp = (const char*) temp_binary_data_52;
+const char* jucer_MainTemplate_Window_cpp = (const char*) temp_binary_data_55;
//================== jucer_NewComponentTemplate.cpp ==================
-static const unsigned char temp_binary_data_53[] =
+static const unsigned char temp_binary_data_56[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -7938,10 +8095,10 @@ static const unsigned char temp_binary_data_53[] =
"\r\n"
"}\r\n";
-const char* jucer_NewComponentTemplate_cpp = (const char*) temp_binary_data_53;
+const char* jucer_NewComponentTemplate_cpp = (const char*) temp_binary_data_56;
//================== jucer_NewComponentTemplate.h ==================
-static const unsigned char temp_binary_data_54[] =
+static const unsigned char temp_binary_data_57[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -7972,10 +8129,10 @@ static const unsigned char temp_binary_data_54[] =
" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%component_class%%)\r\n"
"};\r\n";
-const char* jucer_NewComponentTemplate_h = (const char*) temp_binary_data_54;
+const char* jucer_NewComponentTemplate_h = (const char*) temp_binary_data_57;
//================== jucer_NewCppFileTemplate.cpp ==================
-static const unsigned char temp_binary_data_55[] =
+static const unsigned char temp_binary_data_58[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -7988,10 +8145,10 @@ static const unsigned char temp_binary_data_55[] =
"\r\n"
"%%include_corresponding_header%%\r\n";
-const char* jucer_NewCppFileTemplate_cpp = (const char*) temp_binary_data_55;
+const char* jucer_NewCppFileTemplate_cpp = (const char*) temp_binary_data_58;
//================== jucer_NewCppFileTemplate.h ==================
-static const unsigned char temp_binary_data_56[] =
+static const unsigned char temp_binary_data_59[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -8004,10 +8161,10 @@ static const unsigned char temp_binary_data_56[] =
"\r\n"
"#pragma once\r\n";
-const char* jucer_NewCppFileTemplate_h = (const char*) temp_binary_data_56;
+const char* jucer_NewCppFileTemplate_h = (const char*) temp_binary_data_59;
//================== jucer_NewInlineComponentTemplate.h ==================
-static const unsigned char temp_binary_data_57[] =
+static const unsigned char temp_binary_data_60[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -8070,10 +8227,10 @@ static const unsigned char temp_binary_data_57[] =
" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%component_class%%)\r\n"
"};\r\n";
-const char* jucer_NewInlineComponentTemplate_h = (const char*) temp_binary_data_57;
+const char* jucer_NewInlineComponentTemplate_h = (const char*) temp_binary_data_60;
//================== jucer_OpenGLComponentSimpleTemplate.h ==================
-static const unsigned char temp_binary_data_58[] =
+static const unsigned char temp_binary_data_61[] =
"#pragma once\r\n"
"\r\n"
"%%include_juce%%\r\n"
@@ -8142,10 +8299,10 @@ static const unsigned char temp_binary_data_58[] =
" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n"
"};\r\n";
-const char* jucer_OpenGLComponentSimpleTemplate_h = (const char*) temp_binary_data_58;
+const char* jucer_OpenGLComponentSimpleTemplate_h = (const char*) temp_binary_data_61;
//================== jucer_OpenGLComponentTemplate.cpp ==================
-static const unsigned char temp_binary_data_59[] =
+static const unsigned char temp_binary_data_62[] =
"%%include_corresponding_header%%\r\n"
"\r\n"
"//==============================================================================\r\n"
@@ -8195,10 +8352,10 @@ static const unsigned char temp_binary_data_59[] =
" // update their positions.\r\n"
"}\r\n";
-const char* jucer_OpenGLComponentTemplate_cpp = (const char*) temp_binary_data_59;
+const char* jucer_OpenGLComponentTemplate_cpp = (const char*) temp_binary_data_62;
//================== jucer_OpenGLComponentTemplate.h ==================
-static const unsigned char temp_binary_data_60[] =
+static const unsigned char temp_binary_data_63[] =
"#pragma once\r\n"
"\r\n"
"%%include_juce%%\r\n"
@@ -8232,10 +8389,10 @@ static const unsigned char temp_binary_data_60[] =
" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n"
"};\r\n";
-const char* jucer_OpenGLComponentTemplate_h = (const char*) temp_binary_data_60;
+const char* jucer_OpenGLComponentTemplate_h = (const char*) temp_binary_data_63;
//================== jucer_PIPAudioProcessorTemplate.h ==================
-static const unsigned char temp_binary_data_61[] =
+static const unsigned char temp_binary_data_64[] =
"class %%class_name%% : public juce::AudioProcessor\r\n"
"{\r\n"
"public:\r\n"
@@ -8344,10 +8501,10 @@ static const unsigned char temp_binary_data_61[] =
" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%class_name%%)\r\n"
"};\r\n";
-const char* jucer_PIPAudioProcessorTemplate_h = (const char*) temp_binary_data_61;
+const char* jucer_PIPAudioProcessorTemplate_h = (const char*) temp_binary_data_64;
//================== jucer_PIPTemplate.h ==================
-static const unsigned char temp_binary_data_62[] =
+static const unsigned char temp_binary_data_65[] =
"/*******************************************************************************\r\n"
" The block below describes the properties of this PIP. A PIP is a short snippet\r\n"
" of code that can be read by the Projucer and used to generate a JUCE project.\r\n"
@@ -8366,10 +8523,10 @@ static const unsigned char temp_binary_data_62[] =
"//==============================================================================\r\n"
"%%pip_code%%\r\n";
-const char* jucer_PIPTemplate_h = (const char*) temp_binary_data_62;
+const char* jucer_PIPTemplate_h = (const char*) temp_binary_data_65;
//================== colourscheme_dark.xml ==================
-static const unsigned char temp_binary_data_63[] =
+static const unsigned char temp_binary_data_66[] =
"\r\n"
"\r\n"
"\r\n"
@@ -8394,10 +8551,10 @@ static const unsigned char temp_binary_data_63[] =
" \r\n"
"\r\n";
-const char* colourscheme_dark_xml = (const char*) temp_binary_data_63;
+const char* colourscheme_dark_xml = (const char*) temp_binary_data_66;
//================== colourscheme_light.xml ==================
-static const unsigned char temp_binary_data_64[] =
+static const unsigned char temp_binary_data_67[] =
"\r\n"
"\r\n"
"\r\n"
@@ -8422,10 +8579,10 @@ static const unsigned char temp_binary_data_64[] =
" \r\n"
"\r\n";
-const char* colourscheme_light_xml = (const char*) temp_binary_data_64;
+const char* colourscheme_light_xml = (const char*) temp_binary_data_67;
//================== juce_runtime_arch_detection.cpp ==================
-static const unsigned char temp_binary_data_65[] =
+static const unsigned char temp_binary_data_68[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -8511,10 +8668,10 @@ static const unsigned char temp_binary_data_65[] =
"\r\n"
"#endif\r\n";
-const char* juce_runtime_arch_detection_cpp = (const char*) temp_binary_data_65;
+const char* juce_runtime_arch_detection_cpp = (const char*) temp_binary_data_68;
//================== juce_LinuxSubprocessHelper.cpp ==================
-static const unsigned char temp_binary_data_66[] =
+static const unsigned char temp_binary_data_69[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -8552,10 +8709,10 @@ static const unsigned char temp_binary_data_66[] =
" return 1;\r\n"
"}\r\n";
-const char* juce_LinuxSubprocessHelper_cpp = (const char*) temp_binary_data_66;
+const char* juce_LinuxSubprocessHelper_cpp = (const char*) temp_binary_data_69;
//================== juce_SimpleBinaryBuilder.cpp ==================
-static const unsigned char temp_binary_data_67[] =
+static const unsigned char temp_binary_data_70[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -8938,7 +9095,7 @@ static const unsigned char temp_binary_data_67[] =
" return 0;\r\n"
"}\r\n";
-const char* juce_SimpleBinaryBuilder_cpp = (const char*) temp_binary_data_67;
+const char* juce_SimpleBinaryBuilder_cpp = (const char*) temp_binary_data_70;
const char* getNamedResource (const char* resourceNameUTF8, int& numBytes);
@@ -8990,12 +9147,15 @@ const char* getNamedResource (const char* resourceNameUTF8, int& numBytes)
case 0x915d7304: numBytes = 1187; return jucer_AudioComponentTemplate_h;
case 0x744d44d6: numBytes = 1916; return jucer_AudioPluginARADocumentControllerTemplate_cpp;
case 0x3eb8f45b: numBytes = 1445; return jucer_AudioPluginARADocumentControllerTemplate_h;
+ case 0x851ac3ac: numBytes = 1593; return jucer_AudioPluginARAEditorTemplate_cpp;
+ case 0x4d6430b1: numBytes = 1142; return jucer_AudioPluginARAEditorTemplate_h;
+ case 0x48e808fc: numBytes = 2462; return jucer_AudioPluginARAFilterTemplate_h;
case 0xea35a37d: numBytes = 5322; return jucer_AudioPluginARAPlaybackRendererTemplate_cpp;
case 0x78a6d0c2: numBytes = 1757; return jucer_AudioPluginARAPlaybackRendererTemplate_h;
case 0x27c5a93a: numBytes = 1355; return jucer_AudioPluginEditorTemplate_cpp;
case 0x4d0721bf: numBytes = 973; return jucer_AudioPluginEditorTemplate_h;
case 0x51b49ac5: numBytes = 6218; return jucer_AudioPluginFilterTemplate_cpp;
- case 0x488afa0a: numBytes = 2462; return jucer_AudioPluginFilterTemplate_h;
+ case 0x488afa0a: numBytes = 2299; return jucer_AudioPluginFilterTemplate_h;
case 0xabad7041: numBytes = 2147; return jucer_ComponentTemplate_cpp;
case 0xfc72fe86: numBytes = 2065; return jucer_ComponentTemplate_h;
case 0x1657b643: numBytes = 1524; return jucer_ContentCompSimpleTemplate_h;
@@ -9067,6 +9227,9 @@ const char* namedResourceList[] =
"jucer_AudioComponentTemplate_h",
"jucer_AudioPluginARADocumentControllerTemplate_cpp",
"jucer_AudioPluginARADocumentControllerTemplate_h",
+ "jucer_AudioPluginARAEditorTemplate_cpp",
+ "jucer_AudioPluginARAEditorTemplate_h",
+ "jucer_AudioPluginARAFilterTemplate_h",
"jucer_AudioPluginARAPlaybackRendererTemplate_cpp",
"jucer_AudioPluginARAPlaybackRendererTemplate_h",
"jucer_AudioPluginEditorTemplate_cpp",
@@ -9139,6 +9302,9 @@ const char* originalFilenames[] =
"jucer_AudioComponentTemplate.h",
"jucer_AudioPluginARADocumentControllerTemplate.cpp",
"jucer_AudioPluginARADocumentControllerTemplate.h",
+ "jucer_AudioPluginARAEditorTemplate.cpp",
+ "jucer_AudioPluginARAEditorTemplate.h",
+ "jucer_AudioPluginARAFilterTemplate.h",
"jucer_AudioPluginARAPlaybackRendererTemplate.cpp",
"jucer_AudioPluginARAPlaybackRendererTemplate.h",
"jucer_AudioPluginEditorTemplate.cpp",
diff --git a/extras/Projucer/JuceLibraryCode/BinaryData.h b/extras/Projucer/JuceLibraryCode/BinaryData.h
index 63f981786e..f433aea662 100644
--- a/extras/Projucer/JuceLibraryCode/BinaryData.h
+++ b/extras/Projucer/JuceLibraryCode/BinaryData.h
@@ -122,6 +122,15 @@ namespace BinaryData
extern const char* jucer_AudioPluginARADocumentControllerTemplate_h;
const int jucer_AudioPluginARADocumentControllerTemplate_hSize = 1445;
+ extern const char* jucer_AudioPluginARAEditorTemplate_cpp;
+ const int jucer_AudioPluginARAEditorTemplate_cppSize = 1593;
+
+ extern const char* jucer_AudioPluginARAEditorTemplate_h;
+ const int jucer_AudioPluginARAEditorTemplate_hSize = 1142;
+
+ extern const char* jucer_AudioPluginARAFilterTemplate_h;
+ const int jucer_AudioPluginARAFilterTemplate_hSize = 2462;
+
extern const char* jucer_AudioPluginARAPlaybackRendererTemplate_cpp;
const int jucer_AudioPluginARAPlaybackRendererTemplate_cppSize = 5322;
@@ -138,7 +147,7 @@ namespace BinaryData
const int jucer_AudioPluginFilterTemplate_cppSize = 6218;
extern const char* jucer_AudioPluginFilterTemplate_h;
- const int jucer_AudioPluginFilterTemplate_hSize = 2462;
+ const int jucer_AudioPluginFilterTemplate_hSize = 2299;
extern const char* jucer_ComponentTemplate_cpp;
const int jucer_ComponentTemplate_cppSize = 2147;
@@ -213,7 +222,7 @@ namespace BinaryData
const int juce_SimpleBinaryBuilder_cppSize = 12344;
// Number of elements in the namedResourceList and originalFileNames arrays.
- const int namedResourceListSize = 68;
+ const int namedResourceListSize = 71;
// Points to the start of a list of resource names.
extern const char* namedResourceList[];
diff --git a/extras/Projucer/Projucer.jucer b/extras/Projucer/Projucer.jucer
index 375d46cd0c..05a28b813d 100644
--- a/extras/Projucer/Projucer.jucer
+++ b/extras/Projucer/Projucer.jucer
@@ -243,6 +243,12 @@
compile="0" resource="1" file="Source/BinaryData/Templates/jucer_AudioPluginARADocumentControllerTemplate.cpp"/>
+
+
+
&, juce::MidiBuffer&) override;
+
+ //==============================================================================
+ juce::AudioProcessorEditor* createEditor() override;
+ bool hasEditor() const override;
+
+ //==============================================================================
+ const juce::String getName() const override;
+
+ bool acceptsMidi() const override;
+ bool producesMidi() const override;
+ bool isMidiEffect() const override;
+ double getTailLengthSeconds() const override;
+
+ //==============================================================================
+ int getNumPrograms() override;
+ int getCurrentProgram() override;
+ void setCurrentProgram (int index) override;
+ const juce::String getProgramName (int index) override;
+ void changeProgramName (int index, const juce::String& newName) override;
+
+ //==============================================================================
+ void getStateInformation (juce::MemoryBlock& destData) override;
+ void setStateInformation (const void* data, int sizeInBytes) override;
+
+private:
+ //==============================================================================
+ JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%filter_class_name%%)
+};
diff --git a/extras/Projucer/Source/BinaryData/Templates/jucer_AudioPluginFilterTemplate.h b/extras/Projucer/Source/BinaryData/Templates/jucer_AudioPluginFilterTemplate.h
index ae40b224d3..bfc4dc9536 100644
--- a/extras/Projucer/Source/BinaryData/Templates/jucer_AudioPluginFilterTemplate.h
+++ b/extras/Projucer/Source/BinaryData/Templates/jucer_AudioPluginFilterTemplate.h
@@ -14,9 +14,6 @@
/**
*/
class %%filter_class_name%% : public juce::AudioProcessor
- #if JucePlugin_Enable_ARA
- , public juce::AudioProcessorARAExtension
- #endif
{
public:
//==============================================================================