Browse Source

Projucer: Add ARA support

pull/22/head
attila 3 years ago
parent
commit
31b2a86559
31 changed files with 1021 additions and 68 deletions
  1. +2
    -0
      extras/AudioPluginHost/AudioPluginHost.jucer
  2. +8
    -0
      extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj
  3. +11
    -0
      extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj
  4. +15
    -0
      extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj.filters
  5. +11
    -0
      extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj
  6. +15
    -0
      extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters
  7. +11
    -0
      extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj
  8. +15
    -0
      extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters
  9. +11
    -0
      extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj
  10. +15
    -0
      extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters
  11. +4
    -0
      extras/Projucer/CMakeLists.txt
  12. +323
    -53
      extras/Projucer/JuceLibraryCode/BinaryData.cpp
  13. +14
    -2
      extras/Projucer/JuceLibraryCode/BinaryData.h
  14. +8
    -0
      extras/Projucer/Projucer.jucer
  15. +23
    -1
      extras/Projucer/Source/Application/StartPage/jucer_NewProjectTemplates.h
  16. +17
    -0
      extras/Projucer/Source/Application/StartPage/jucer_NewProjectWizard.cpp
  17. +5
    -1
      extras/Projucer/Source/Application/Windows/jucer_GlobalPathsWindowComponent.h
  18. +1
    -1
      extras/Projucer/Source/Application/jucer_CommandLine.cpp
  19. +42
    -0
      extras/Projucer/Source/BinaryData/Templates/jucer_AudioPluginARADocumentControllerTemplate.cpp
  20. +36
    -0
      extras/Projucer/Source/BinaryData/Templates/jucer_AudioPluginARADocumentControllerTemplate.h
  21. +112
    -0
      extras/Projucer/Source/BinaryData/Templates/jucer_AudioPluginARAPlaybackRendererTemplate.cpp
  22. +45
    -0
      extras/Projucer/Source/BinaryData/Templates/jucer_AudioPluginARAPlaybackRendererTemplate.h
  23. +3
    -0
      extras/Projucer/Source/BinaryData/Templates/jucer_AudioPluginFilterTemplate.h
  24. +194
    -9
      extras/Projucer/Source/Project/jucer_Project.cpp
  25. +24
    -0
      extras/Projucer/Source/Project/jucer_Project.h
  26. +3
    -0
      extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h
  27. +4
    -0
      extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h
  28. +27
    -0
      extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp
  29. +4
    -1
      extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.h
  30. +10
    -0
      extras/Projucer/Source/Settings/jucer_StoredSettings.cpp
  31. +8
    -0
      extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h

+ 2
- 0
extras/AudioPluginHost/AudioPluginHost.jucer View File

@@ -203,6 +203,8 @@
<MAINGROUP id="YdWL7hi7p" name="AudioPluginHost"> <MAINGROUP id="YdWL7hi7p" name="AudioPluginHost">
<GROUP id="{CFED5B3D-D1D8-0F3F-4D67-B2A810D057EF}" name="Source"> <GROUP id="{CFED5B3D-D1D8-0F3F-4D67-B2A810D057EF}" name="Source">
<GROUP id="{6F257CD6-CE86-9BBC-54C1-45E43249E414}" name="Plugins"> <GROUP id="{6F257CD6-CE86-9BBC-54C1-45E43249E414}" name="Plugins">
<FILE id="rcuPqK" name="ARAPlugin.cpp" compile="1" resource="0" file="Source/Plugins/ARAPlugin.cpp"/>
<FILE id="gR1tiA" name="ARAPlugin.h" compile="0" resource="0" file="Source/Plugins/ARAPlugin.h"/>
<FILE id="pov6wS" name="InternalPlugins.cpp" compile="1" resource="0" <FILE id="pov6wS" name="InternalPlugins.cpp" compile="1" resource="0"
file="Source/Plugins/InternalPlugins.cpp"/> file="Source/Plugins/InternalPlugins.cpp"/>
<FILE id="MV6AI1" name="InternalPlugins.h" compile="0" resource="0" <FILE id="MV6AI1" name="InternalPlugins.h" compile="0" resource="0"


+ 8
- 0
extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj View File

@@ -133,6 +133,7 @@
269A454F1FF081DA67FFD578 /* jucer_JucerDocument.cpp */ /* jucer_JucerDocument.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_JucerDocument.cpp; path = ../../Source/ComponentEditor/jucer_JucerDocument.cpp; sourceTree = SOURCE_ROOT; }; 269A454F1FF081DA67FFD578 /* jucer_JucerDocument.cpp */ /* jucer_JucerDocument.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_JucerDocument.cpp; path = ../../Source/ComponentEditor/jucer_JucerDocument.cpp; sourceTree = SOURCE_ROOT; };
2BD9B4556479A8A41740BCAE /* jucer_ComponentTemplate.h */ /* jucer_ComponentTemplate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ComponentTemplate.h; path = ../../Source/BinaryData/Templates/jucer_ComponentTemplate.h; sourceTree = SOURCE_ROOT; }; 2BD9B4556479A8A41740BCAE /* jucer_ComponentTemplate.h */ /* jucer_ComponentTemplate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ComponentTemplate.h; path = ../../Source/BinaryData/Templates/jucer_ComponentTemplate.h; sourceTree = SOURCE_ROOT; };
2CD34A70B4032C0426F7AA10 /* jucer_MainWindow.h */ /* jucer_MainWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_MainWindow.h; path = ../../Source/Application/jucer_MainWindow.h; sourceTree = SOURCE_ROOT; }; 2CD34A70B4032C0426F7AA10 /* jucer_MainWindow.h */ /* jucer_MainWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_MainWindow.h; path = ../../Source/Application/jucer_MainWindow.h; sourceTree = SOURCE_ROOT; };
2E9CF857DCF1EFEA997B4D5B /* jucer_AudioPluginARAPlaybackRendererTemplate.h */ /* jucer_AudioPluginARAPlaybackRendererTemplate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_AudioPluginARAPlaybackRendererTemplate.h; path = ../../Source/BinaryData/Templates/jucer_AudioPluginARAPlaybackRendererTemplate.h; sourceTree = SOURCE_ROOT; };
2EEB1C074162F363C6599282 /* jucer_CommandLine.h */ /* jucer_CommandLine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_CommandLine.h; path = ../../Source/Application/jucer_CommandLine.h; sourceTree = SOURCE_ROOT; }; 2EEB1C074162F363C6599282 /* jucer_CommandLine.h */ /* jucer_CommandLine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_CommandLine.h; path = ../../Source/Application/jucer_CommandLine.h; sourceTree = SOURCE_ROOT; };
2F0A7CA808B2FCCC9ED68992 /* jucer_LicenseQueryThread.h */ /* jucer_LicenseQueryThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_LicenseQueryThread.h; path = ../../Source/Application/UserAccount/jucer_LicenseQueryThread.h; sourceTree = SOURCE_ROOT; }; 2F0A7CA808B2FCCC9ED68992 /* jucer_LicenseQueryThread.h */ /* jucer_LicenseQueryThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_LicenseQueryThread.h; path = ../../Source/Application/UserAccount/jucer_LicenseQueryThread.h; sourceTree = SOURCE_ROOT; };
2F373F97E30AC1A0BFC1FC61 /* jucer_FilePropertyComponent.h */ /* jucer_FilePropertyComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_FilePropertyComponent.h; path = ../../Source/ComponentEditor/Properties/jucer_FilePropertyComponent.h; sourceTree = SOURCE_ROOT; }; 2F373F97E30AC1A0BFC1FC61 /* jucer_FilePropertyComponent.h */ /* jucer_FilePropertyComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_FilePropertyComponent.h; path = ../../Source/ComponentEditor/Properties/jucer_FilePropertyComponent.h; sourceTree = SOURCE_ROOT; };
@@ -237,6 +238,7 @@
8D9A9A373E4621F7CBFCCCEF /* jucer_ContentCompTemplate.cpp */ /* jucer_ContentCompTemplate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_ContentCompTemplate.cpp; path = ../../Source/BinaryData/Templates/jucer_ContentCompTemplate.cpp; sourceTree = SOURCE_ROOT; }; 8D9A9A373E4621F7CBFCCCEF /* jucer_ContentCompTemplate.cpp */ /* jucer_ContentCompTemplate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_ContentCompTemplate.cpp; path = ../../Source/BinaryData/Templates/jucer_ContentCompTemplate.cpp; sourceTree = SOURCE_ROOT; };
8DBB36126CD144A8364F1F19 /* jucer_ProjectExporter.h */ /* jucer_ProjectExporter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ProjectExporter.h; path = ../../Source/ProjectSaving/jucer_ProjectExporter.h; sourceTree = SOURCE_ROOT; }; 8DBB36126CD144A8364F1F19 /* jucer_ProjectExporter.h */ /* jucer_ProjectExporter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ProjectExporter.h; path = ../../Source/ProjectSaving/jucer_ProjectExporter.h; sourceTree = SOURCE_ROOT; };
8DFE6D8AFB8057790041300B /* jucer_ToggleButtonHandler.h */ /* jucer_ToggleButtonHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ToggleButtonHandler.h; path = ../../Source/ComponentEditor/Components/jucer_ToggleButtonHandler.h; sourceTree = SOURCE_ROOT; }; 8DFE6D8AFB8057790041300B /* jucer_ToggleButtonHandler.h */ /* jucer_ToggleButtonHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ToggleButtonHandler.h; path = ../../Source/ComponentEditor/Components/jucer_ToggleButtonHandler.h; sourceTree = SOURCE_ROOT; };
8E129499EA2FB8A4944F8701 /* jucer_AudioPluginARADocumentControllerTemplate.h */ /* jucer_AudioPluginARADocumentControllerTemplate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_AudioPluginARADocumentControllerTemplate.h; path = ../../Source/BinaryData/Templates/jucer_AudioPluginARADocumentControllerTemplate.h; sourceTree = SOURCE_ROOT; };
8F30A53C7FE4BC65171FB3E2 /* jucer_JucerDocument.h */ /* jucer_JucerDocument.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_JucerDocument.h; path = ../../Source/ComponentEditor/jucer_JucerDocument.h; sourceTree = SOURCE_ROOT; }; 8F30A53C7FE4BC65171FB3E2 /* jucer_JucerDocument.h */ /* jucer_JucerDocument.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_JucerDocument.h; path = ../../Source/ComponentEditor/jucer_JucerDocument.h; sourceTree = SOURCE_ROOT; };
8F4D281E98808204E2846A7D /* export_xcode.svg */ /* export_xcode.svg */ = {isa = PBXFileReference; lastKnownFileType = file.svg; name = export_xcode.svg; path = ../../Source/BinaryData/Icons/export_xcode.svg; sourceTree = SOURCE_ROOT; }; 8F4D281E98808204E2846A7D /* export_xcode.svg */ /* export_xcode.svg */ = {isa = PBXFileReference; lastKnownFileType = file.svg; name = export_xcode.svg; path = ../../Source/BinaryData/Icons/export_xcode.svg; sourceTree = SOURCE_ROOT; };
8F67F3C0492EAFEBDBBC12DB /* jucer_NewCppFileTemplate.cpp */ /* jucer_NewCppFileTemplate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_NewCppFileTemplate.cpp; path = ../../Source/BinaryData/Templates/jucer_NewCppFileTemplate.cpp; sourceTree = SOURCE_ROOT; }; 8F67F3C0492EAFEBDBBC12DB /* jucer_NewCppFileTemplate.cpp */ /* jucer_NewCppFileTemplate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_NewCppFileTemplate.cpp; path = ../../Source/BinaryData/Templates/jucer_NewCppFileTemplate.cpp; sourceTree = SOURCE_ROOT; };
@@ -250,6 +252,7 @@
92A66A8BD87F98EB6B4FB6D0 /* jucer_ProjectContentComponent.h */ /* jucer_ProjectContentComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ProjectContentComponent.h; path = ../../Source/Project/UI/jucer_ProjectContentComponent.h; sourceTree = SOURCE_ROOT; }; 92A66A8BD87F98EB6B4FB6D0 /* jucer_ProjectContentComponent.h */ /* jucer_ProjectContentComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ProjectContentComponent.h; path = ../../Source/Project/UI/jucer_ProjectContentComponent.h; sourceTree = SOURCE_ROOT; };
94146B40B41BF0AACF4359DD /* jucer_LicenseState.h */ /* jucer_LicenseState.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_LicenseState.h; path = ../../Source/Application/UserAccount/jucer_LicenseState.h; sourceTree = SOURCE_ROOT; }; 94146B40B41BF0AACF4359DD /* jucer_LicenseState.h */ /* jucer_LicenseState.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_LicenseState.h; path = ../../Source/Application/UserAccount/jucer_LicenseState.h; sourceTree = SOURCE_ROOT; };
951128CA33CCDEF570436B1C /* Icon.icns */ /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = file.icns; name = Icon.icns; path = Icon.icns; sourceTree = SOURCE_ROOT; }; 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; }; 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; };
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; }; 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; }; 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; };
@@ -359,6 +362,7 @@
F30DF63DBEFA4BEEF7C369FC /* jucer_LicenseController.h */ /* jucer_LicenseController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_LicenseController.h; path = ../../Source/Application/UserAccount/jucer_LicenseController.h; sourceTree = SOURCE_ROOT; }; F30DF63DBEFA4BEEF7C369FC /* jucer_LicenseController.h */ /* jucer_LicenseController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_LicenseController.h; path = ../../Source/Application/UserAccount/jucer_LicenseController.h; sourceTree = SOURCE_ROOT; };
F313EE01ECE306DB2CFE011D /* UnityPluginGUIScript.cs.in */ /* UnityPluginGUIScript.cs.in */ = {isa = PBXFileReference; lastKnownFileType = file.in; name = UnityPluginGUIScript.cs.in; path = ../../../Build/CMake/UnityPluginGUIScript.cs.in; sourceTree = SOURCE_ROOT; }; F313EE01ECE306DB2CFE011D /* UnityPluginGUIScript.cs.in */ /* UnityPluginGUIScript.cs.in */ = {isa = PBXFileReference; lastKnownFileType = file.in; name = UnityPluginGUIScript.cs.in; path = ../../../Build/CMake/UnityPluginGUIScript.cs.in; sourceTree = SOURCE_ROOT; };
F3CC8F26ECCDA6DCD8A284D2 /* jucer_GradientPointComponent.h */ /* jucer_GradientPointComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_GradientPointComponent.h; path = ../../Source/ComponentEditor/PaintElements/jucer_GradientPointComponent.h; sourceTree = SOURCE_ROOT; }; F3CC8F26ECCDA6DCD8A284D2 /* jucer_GradientPointComponent.h */ /* jucer_GradientPointComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_GradientPointComponent.h; path = ../../Source/ComponentEditor/PaintElements/jucer_GradientPointComponent.h; sourceTree = SOURCE_ROOT; };
F3CCA5545AB7B4B603D0BFEB /* jucer_AudioPluginARAPlaybackRendererTemplate.cpp */ /* jucer_AudioPluginARAPlaybackRendererTemplate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_AudioPluginARAPlaybackRendererTemplate.cpp; path = ../../Source/BinaryData/Templates/jucer_AudioPluginARAPlaybackRendererTemplate.cpp; sourceTree = SOURCE_ROOT; };
F4FD9BD16ED2700F45A68C4F /* jucer_ComponentBooleanProperty.h */ /* jucer_ComponentBooleanProperty.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ComponentBooleanProperty.h; path = ../../Source/ComponentEditor/Properties/jucer_ComponentBooleanProperty.h; sourceTree = SOURCE_ROOT; }; F4FD9BD16ED2700F45A68C4F /* jucer_ComponentBooleanProperty.h */ /* jucer_ComponentBooleanProperty.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ComponentBooleanProperty.h; path = ../../Source/ComponentEditor/Properties/jucer_ComponentBooleanProperty.h; sourceTree = SOURCE_ROOT; };
F58B23995765C9FDBE28F871 /* jucer_Modules.cpp */ /* jucer_Modules.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_Modules.cpp; path = ../../Source/Project/Modules/jucer_Modules.cpp; sourceTree = SOURCE_ROOT; }; F58B23995765C9FDBE28F871 /* jucer_Modules.cpp */ /* jucer_Modules.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_Modules.cpp; path = ../../Source/Project/Modules/jucer_Modules.cpp; sourceTree = SOURCE_ROOT; };
F5DD97B45B8EA60C1ED0DD80 /* jucer_StoredSettings.cpp */ /* jucer_StoredSettings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_StoredSettings.cpp; path = ../../Source/Settings/jucer_StoredSettings.cpp; sourceTree = SOURCE_ROOT; }; F5DD97B45B8EA60C1ED0DD80 /* jucer_StoredSettings.cpp */ /* jucer_StoredSettings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_StoredSettings.cpp; path = ../../Source/Settings/jucer_StoredSettings.cpp; sourceTree = SOURCE_ROOT; };
@@ -661,6 +665,10 @@
D4EB334E5186D1584EC63CA4, D4EB334E5186D1584EC63CA4,
203FA6AD7EDDF1F9C338CC2A, 203FA6AD7EDDF1F9C338CC2A,
5BF0374EB908F0476BD8ED42, 5BF0374EB908F0476BD8ED42,
96A1EC6B50DBD2C526C60338,
8E129499EA2FB8A4944F8701,
F3CCA5545AB7B4B603D0BFEB,
2E9CF857DCF1EFEA997B4D5B,
6574A50A8997799705B23465, 6574A50A8997799705B23465,
56177921580A4855917E0205, 56177921580A4855917E0205,
079802C6AEE7646010766FE8, 079802C6AEE7646010766FE8,


+ 11
- 0
extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj View File

@@ -157,6 +157,12 @@
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.cpp"> <ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild> <ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARADocumentControllerTemplate.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARAPlaybackRendererTemplate.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.cpp"> <ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild> <ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile> </ClCompile>
@@ -278,6 +284,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_HashMap_test.cpp"> <ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_HashMap_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild> <ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_ListenerList.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_NamedValueSet.cpp"> <ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_NamedValueSet.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild> <ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile> </ClCompile>
@@ -1546,6 +1555,8 @@
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AnimatedComponentTemplate.h"/> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AnimatedComponentTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentSimpleTemplate.h"/> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentSimpleTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.h"/> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARADocumentControllerTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARAPlaybackRendererTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.h"/> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginFilterTemplate.h"/> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginFilterTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_ComponentTemplate.h"/> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_ComponentTemplate.h"/>


+ 15
- 0
extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj.filters View File

@@ -349,6 +349,12 @@
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.cpp"> <ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.cpp">
<Filter>Projucer\BinaryData\Templates</Filter> <Filter>Projucer\BinaryData\Templates</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARADocumentControllerTemplate.cpp">
<Filter>Projucer\BinaryData\Templates</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARAPlaybackRendererTemplate.cpp">
<Filter>Projucer\BinaryData\Templates</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.cpp"> <ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.cpp">
<Filter>Projucer\BinaryData\Templates</Filter> <Filter>Projucer\BinaryData\Templates</Filter>
</ClCompile> </ClCompile>
@@ -556,6 +562,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_HashMap_test.cpp"> <ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_HashMap_test.cpp">
<Filter>JUCE Modules\juce_core\containers</Filter> <Filter>JUCE Modules\juce_core\containers</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_ListenerList.cpp">
<Filter>JUCE Modules\juce_core\containers</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_NamedValueSet.cpp"> <ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_NamedValueSet.cpp">
<Filter>JUCE Modules\juce_core\containers</Filter> <Filter>JUCE Modules\juce_core\containers</Filter>
</ClCompile> </ClCompile>
@@ -1989,6 +1998,12 @@
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.h"> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.h">
<Filter>Projucer\BinaryData\Templates</Filter> <Filter>Projucer\BinaryData\Templates</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARADocumentControllerTemplate.h">
<Filter>Projucer\BinaryData\Templates</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARAPlaybackRendererTemplate.h">
<Filter>Projucer\BinaryData\Templates</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.h"> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.h">
<Filter>Projucer\BinaryData\Templates</Filter> <Filter>Projucer\BinaryData\Templates</Filter>
</ClInclude> </ClInclude>


+ 11
- 0
extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj View File

@@ -157,6 +157,12 @@
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.cpp"> <ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild> <ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARADocumentControllerTemplate.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARAPlaybackRendererTemplate.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.cpp"> <ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild> <ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile> </ClCompile>
@@ -278,6 +284,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_HashMap_test.cpp"> <ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_HashMap_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild> <ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_ListenerList.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_NamedValueSet.cpp"> <ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_NamedValueSet.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild> <ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile> </ClCompile>
@@ -1546,6 +1555,8 @@
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AnimatedComponentTemplate.h"/> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AnimatedComponentTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentSimpleTemplate.h"/> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentSimpleTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.h"/> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARADocumentControllerTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARAPlaybackRendererTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.h"/> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginFilterTemplate.h"/> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginFilterTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_ComponentTemplate.h"/> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_ComponentTemplate.h"/>


+ 15
- 0
extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters View File

@@ -349,6 +349,12 @@
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.cpp"> <ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.cpp">
<Filter>Projucer\BinaryData\Templates</Filter> <Filter>Projucer\BinaryData\Templates</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARADocumentControllerTemplate.cpp">
<Filter>Projucer\BinaryData\Templates</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARAPlaybackRendererTemplate.cpp">
<Filter>Projucer\BinaryData\Templates</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.cpp"> <ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.cpp">
<Filter>Projucer\BinaryData\Templates</Filter> <Filter>Projucer\BinaryData\Templates</Filter>
</ClCompile> </ClCompile>
@@ -556,6 +562,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_HashMap_test.cpp"> <ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_HashMap_test.cpp">
<Filter>JUCE Modules\juce_core\containers</Filter> <Filter>JUCE Modules\juce_core\containers</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_ListenerList.cpp">
<Filter>JUCE Modules\juce_core\containers</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_NamedValueSet.cpp"> <ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_NamedValueSet.cpp">
<Filter>JUCE Modules\juce_core\containers</Filter> <Filter>JUCE Modules\juce_core\containers</Filter>
</ClCompile> </ClCompile>
@@ -1989,6 +1998,12 @@
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.h"> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.h">
<Filter>Projucer\BinaryData\Templates</Filter> <Filter>Projucer\BinaryData\Templates</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARADocumentControllerTemplate.h">
<Filter>Projucer\BinaryData\Templates</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARAPlaybackRendererTemplate.h">
<Filter>Projucer\BinaryData\Templates</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.h"> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.h">
<Filter>Projucer\BinaryData\Templates</Filter> <Filter>Projucer\BinaryData\Templates</Filter>
</ClInclude> </ClInclude>


+ 11
- 0
extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj View File

@@ -157,6 +157,12 @@
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.cpp"> <ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild> <ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARADocumentControllerTemplate.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARAPlaybackRendererTemplate.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.cpp"> <ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild> <ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile> </ClCompile>
@@ -278,6 +284,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_HashMap_test.cpp"> <ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_HashMap_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild> <ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_ListenerList.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_NamedValueSet.cpp"> <ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_NamedValueSet.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild> <ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile> </ClCompile>
@@ -1546,6 +1555,8 @@
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AnimatedComponentTemplate.h"/> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AnimatedComponentTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentSimpleTemplate.h"/> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentSimpleTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.h"/> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARADocumentControllerTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARAPlaybackRendererTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.h"/> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginFilterTemplate.h"/> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginFilterTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_ComponentTemplate.h"/> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_ComponentTemplate.h"/>


+ 15
- 0
extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters View File

@@ -349,6 +349,12 @@
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.cpp"> <ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.cpp">
<Filter>Projucer\BinaryData\Templates</Filter> <Filter>Projucer\BinaryData\Templates</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARADocumentControllerTemplate.cpp">
<Filter>Projucer\BinaryData\Templates</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARAPlaybackRendererTemplate.cpp">
<Filter>Projucer\BinaryData\Templates</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.cpp"> <ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.cpp">
<Filter>Projucer\BinaryData\Templates</Filter> <Filter>Projucer\BinaryData\Templates</Filter>
</ClCompile> </ClCompile>
@@ -556,6 +562,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_HashMap_test.cpp"> <ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_HashMap_test.cpp">
<Filter>JUCE Modules\juce_core\containers</Filter> <Filter>JUCE Modules\juce_core\containers</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_ListenerList.cpp">
<Filter>JUCE Modules\juce_core\containers</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_NamedValueSet.cpp"> <ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_NamedValueSet.cpp">
<Filter>JUCE Modules\juce_core\containers</Filter> <Filter>JUCE Modules\juce_core\containers</Filter>
</ClCompile> </ClCompile>
@@ -1989,6 +1998,12 @@
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.h"> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.h">
<Filter>Projucer\BinaryData\Templates</Filter> <Filter>Projucer\BinaryData\Templates</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARADocumentControllerTemplate.h">
<Filter>Projucer\BinaryData\Templates</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARAPlaybackRendererTemplate.h">
<Filter>Projucer\BinaryData\Templates</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.h"> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.h">
<Filter>Projucer\BinaryData\Templates</Filter> <Filter>Projucer\BinaryData\Templates</Filter>
</ClInclude> </ClInclude>


+ 11
- 0
extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj View File

@@ -157,6 +157,12 @@
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.cpp"> <ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild> <ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARADocumentControllerTemplate.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARAPlaybackRendererTemplate.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.cpp"> <ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild> <ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile> </ClCompile>
@@ -278,6 +284,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_HashMap_test.cpp"> <ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_HashMap_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild> <ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_ListenerList.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_NamedValueSet.cpp"> <ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_NamedValueSet.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild> <ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile> </ClCompile>
@@ -1546,6 +1555,8 @@
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AnimatedComponentTemplate.h"/> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AnimatedComponentTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentSimpleTemplate.h"/> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentSimpleTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.h"/> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARADocumentControllerTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARAPlaybackRendererTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.h"/> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginFilterTemplate.h"/> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginFilterTemplate.h"/>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_ComponentTemplate.h"/> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_ComponentTemplate.h"/>


+ 15
- 0
extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters View File

@@ -349,6 +349,12 @@
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.cpp"> <ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.cpp">
<Filter>Projucer\BinaryData\Templates</Filter> <Filter>Projucer\BinaryData\Templates</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARADocumentControllerTemplate.cpp">
<Filter>Projucer\BinaryData\Templates</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARAPlaybackRendererTemplate.cpp">
<Filter>Projucer\BinaryData\Templates</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.cpp"> <ClCompile Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.cpp">
<Filter>Projucer\BinaryData\Templates</Filter> <Filter>Projucer\BinaryData\Templates</Filter>
</ClCompile> </ClCompile>
@@ -556,6 +562,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_HashMap_test.cpp"> <ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_HashMap_test.cpp">
<Filter>JUCE Modules\juce_core\containers</Filter> <Filter>JUCE Modules\juce_core\containers</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_ListenerList.cpp">
<Filter>JUCE Modules\juce_core\containers</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_NamedValueSet.cpp"> <ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_NamedValueSet.cpp">
<Filter>JUCE Modules\juce_core\containers</Filter> <Filter>JUCE Modules\juce_core\containers</Filter>
</ClCompile> </ClCompile>
@@ -1989,6 +1998,12 @@
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.h"> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioComponentTemplate.h">
<Filter>Projucer\BinaryData\Templates</Filter> <Filter>Projucer\BinaryData\Templates</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARADocumentControllerTemplate.h">
<Filter>Projucer\BinaryData\Templates</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginARAPlaybackRendererTemplate.h">
<Filter>Projucer\BinaryData\Templates</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.h"> <ClInclude Include="..\..\Source\BinaryData\Templates\jucer_AudioPluginEditorTemplate.h">
<Filter>Projucer\BinaryData\Templates</Filter> <Filter>Projucer\BinaryData\Templates</Filter>
</ClInclude> </ClInclude>


+ 4
- 0
extras/Projucer/CMakeLists.txt View File

@@ -112,6 +112,10 @@ juce_add_binary_data(ProjucerData SOURCES
Source/BinaryData/Templates/jucer_AudioComponentSimpleTemplate.h Source/BinaryData/Templates/jucer_AudioComponentSimpleTemplate.h
Source/BinaryData/Templates/jucer_AudioComponentTemplate.cpp Source/BinaryData/Templates/jucer_AudioComponentTemplate.cpp
Source/BinaryData/Templates/jucer_AudioComponentTemplate.h Source/BinaryData/Templates/jucer_AudioComponentTemplate.h
Source/BinaryData/Templates/jucer_AudioPluginARADocumentControllerTemplate.cpp
Source/BinaryData/Templates/jucer_AudioPluginARADocumentControllerTemplate.h
Source/BinaryData/Templates/jucer_AudioPluginARAPlaybackRendererTemplate.cpp
Source/BinaryData/Templates/jucer_AudioPluginARAPlaybackRendererTemplate.h
Source/BinaryData/Templates/jucer_AudioPluginEditorTemplate.cpp Source/BinaryData/Templates/jucer_AudioPluginEditorTemplate.cpp
Source/BinaryData/Templates/jucer_AudioPluginEditorTemplate.h Source/BinaryData/Templates/jucer_AudioPluginEditorTemplate.h
Source/BinaryData/Templates/jucer_AudioPluginFilterTemplate.cpp Source/BinaryData/Templates/jucer_AudioPluginFilterTemplate.cpp


+ 323
- 53
extras/Projucer/JuceLibraryCode/BinaryData.cpp View File

@@ -6797,11 +6797,266 @@ static const unsigned char temp_binary_data_35[] =
const char* jucer_AudioComponentTemplate_h = (const char*) temp_binary_data_35; const char* jucer_AudioComponentTemplate_h = (const char*) temp_binary_data_35;
//================== jucer_AudioPluginEditorTemplate.cpp ==================
//================== jucer_AudioPluginARADocumentControllerTemplate.cpp ==================
static const unsigned char temp_binary_data_36[] = static const unsigned char temp_binary_data_36[] =
"/*\r\n" "/*\r\n"
" ==============================================================================\r\n" " ==============================================================================\r\n"
"\r\n" "\r\n"
" This file was auto-generated!\r\n"
"\r\n"
" It contains the basic framework code for an ARA document controller implementation.\r\n"
"\r\n"
" ==============================================================================\r\n"
"*/\r\n"
"\r\n"
"%%aradocumentcontroller_headers%%\r\n"
"%%araplaybackrenderer_headers%%\r\n"
"\r\n"
"//==============================================================================\r\n"
"ARA::PlugIn::PlaybackRenderer* %%aradocumentcontroller_class_name%%::doCreatePlaybackRenderer() noexcept\r\n"
"{\r\n"
" return new %%araplaybackrenderer_class_name%% (getDocumentController());\r\n"
"}\r\n"
"\r\n"
"//==============================================================================\r\n"
"bool %%aradocumentcontroller_class_name%%::doRestoreObjectsFromStream (juce::ARAInputStream& input, const juce::ARARestoreObjectsFilter* filter) noexcept\r\n"
"{\r\n"
" // You should use this method to read any persistent data associated with\r\n"
" // your ARA model graph stored in an archive using the supplied ARAInputStream.\r\n"
" // Be sure to check the ARARestoreObjectsFilter to determine which objects to restore.\r\n"
" return true;\r\n"
"}\r\n"
"\r\n"
"bool %%aradocumentcontroller_class_name%%::doStoreObjectsToStream (juce::ARAOutputStream& output, const juce::ARAStoreObjectsFilter* filter) noexcept\r\n"
"{\r\n"
" // You should use this method to write any persistent data associated with\r\n"
" // your ARA model graph into the an archive using the supplied ARAOutputStream.\r\n"
" // Be sure to check the ARAStoreObjectsFilter to determine which objects to store.\r\n"
" return true;\r\n"
"}\r\n"
"\r\n"
"//==============================================================================\r\n"
"// This creates the static ARAFactory instances for the plugin.\r\n"
"const ARA::ARAFactory* JUCE_CALLTYPE createARAFactory()\r\n"
"{\r\n"
" return juce::ARADocumentControllerSpecialisation::createARAFactory<%%aradocumentcontroller_class_name%%>();\r\n"
"}\r\n";
const char* jucer_AudioPluginARADocumentControllerTemplate_cpp = (const char*) temp_binary_data_36;
//================== jucer_AudioPluginARADocumentControllerTemplate.h ==================
static const unsigned char temp_binary_data_37[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
" This file was auto-generated!\r\n"
"\r\n"
" It contains the basic framework code for an ARA document controller implementation.\r\n"
"\r\n"
" ==============================================================================\r\n"
"*/\r\n"
"\r\n"
"#pragma once\r\n"
"\r\n"
"#include <juce_audio_processors/juce_audio_processors.h>\r\n"
"\r\n"
"//==============================================================================\r\n"
"/**\r\n"
"*/\r\n"
"class %%aradocumentcontroller_class_name%% : public juce::ARADocumentControllerSpecialisation\r\n"
"{\r\n"
"public:\r\n"
" //==============================================================================\r\n"
" using ARADocumentControllerSpecialisation::ARADocumentControllerSpecialisation;\r\n"
"\r\n"
"protected:\r\n"
" //==============================================================================\r\n"
" // Override document controller customization methods here\r\n"
"\r\n"
" ARAPlaybackRenderer* doCreatePlaybackRenderer() noexcept override;\r\n"
"\r\n"
" bool doRestoreObjectsFromStream (juce::ARAInputStream& input, const juce::ARARestoreObjectsFilter* filter) noexcept override;\r\n"
" bool doStoreObjectsToStream (juce::ARAOutputStream& output, const juce::ARAStoreObjectsFilter* filter) noexcept override;\r\n"
"\r\n"
"private:\r\n"
" //==============================================================================\r\n"
" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%aradocumentcontroller_class_name%%)\r\n"
"};\r\n";
const char* jucer_AudioPluginARADocumentControllerTemplate_h = (const char*) temp_binary_data_37;
//================== jucer_AudioPluginARAPlaybackRendererTemplate.cpp ==================
static const unsigned char temp_binary_data_38[] =
"/*\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"
"\r\n"
" ==============================================================================\r\n"
"*/\r\n"
"\r\n"
"%%araplaybackrenderer_headers%%\r\n"
"\r\n"
"//==============================================================================\r\n"
"void %%araplaybackrenderer_class_name%%::prepareToPlay (double sampleRateIn, int maximumSamplesPerBlockIn, int numChannelsIn, juce::AudioProcessor::ProcessingPrecision, AlwaysNonRealtime alwaysNonRealtime)\r\n"
"{\r\n"
" numChannels = numChannelsIn;\r\n"
" sampleRate = sampleRateIn;\r\n"
" maximumSamplesPerBlock = maximumSamplesPerBlockIn;\r\n"
" useBufferedAudioSourceReader = alwaysNonRealtime == AlwaysNonRealtime::no;\r\n"
"}\r\n"
"\r\n"
"void %%araplaybackrenderer_class_name%%::releaseResources()\r\n"
"{\r\n"
"}\r\n"
"\r\n"
"//==============================================================================\r\n"
"bool %%araplaybackrenderer_class_name%%::processBlock (juce::AudioBuffer<float>& buffer, juce::AudioProcessor::Realtime realtime, const juce::AudioPlayHead::CurrentPositionInfo& positionInfo) noexcept\r\n"
"{\r\n"
" const auto numSamples = buffer.getNumSamples();\r\n"
" jassert (numSamples <= maximumSamplesPerBlock);\r\n"
" jassert (numChannels == buffer.getNumChannels());\r\n"
" jassert (realtime == juce::AudioProcessor::Realtime::no || useBufferedAudioSourceReader);\r\n"
" const auto timeInSamples = positionInfo.timeInSamples;\r\n"
" const auto isPlaying = positionInfo.isPlaying;\r\n"
"\r\n"
" bool success = true;\r\n"
" bool didRenderAnyRegion = false;\r\n"
"\r\n"
" if (isPlaying)\r\n"
" {\r\n"
" const auto blockRange = juce::Range<juce::int64>::withStartAndLength (timeInSamples, numSamples);\r\n"
"\r\n"
" for (const auto& playbackRegion : getPlaybackRegions())\r\n"
" {\r\n"
" // Evaluate region borders in song time, calculate sample range to render in song time.\r\n"
" // Note that this example does not use head- or tailtime, so the includeHeadAndTail\r\n"
" // parameter is set to false here - this might need to be adjusted in actual plug-ins.\r\n"
" const auto playbackSampleRange = playbackRegion->getSampleRange (sampleRate,\r\n"
" juce::ARAPlaybackRegion::IncludeHeadAndTail::no);\r\n"
" auto renderRange = blockRange.getIntersectionWith (playbackSampleRange);\r\n"
"\r\n"
" if (renderRange.isEmpty())\r\n"
" continue;\r\n"
"\r\n"
" // Evaluate region borders in modification/source time and calculate offset between\r\n"
" // song and source samples, then clip song samples accordingly\r\n"
" // (if an actual plug-in supports time stretching, this must be taken into account here).\r\n"
" juce::Range<juce::int64> modificationSampleRange { playbackRegion->getStartInAudioModificationSamples(),\r\n"
" playbackRegion->getEndInAudioModificationSamples() };\r\n"
" const auto modificationSampleOffset = modificationSampleRange.getStart() - playbackSampleRange.getStart();\r\n"
"\r\n"
" renderRange = renderRange.getIntersectionWith (modificationSampleRange.movedToStartAt (playbackSampleRange.getStart()));\r\n"
"\r\n"
" if (renderRange.isEmpty())\r\n"
" continue;\r\n"
"\r\n"
" // Now calculate the samples in renderRange for this PlaybackRegion based on the ARA model\r\n"
" // graph. If didRenderAnyRegion is true, add the region's output samples in renderRange to\r\n"
" // the buffer. Otherwise the buffer needs to be initialised so the sample value must be\r\n"
" // overwritten.\r\n"
" const int numSamplesToRead = (int) renderRange.getLength();\r\n"
" const int startInBuffer = (int) (renderRange.getStart() - blockRange.getStart());\r\n"
" const auto startInSource = renderRange.getStart() + modificationSampleOffset;\r\n"
"\r\n"
" for (int c = 0; c < numChannels; ++c)\r\n"
" {\r\n"
" auto* channelData = buffer.getWritePointer (c);\r\n"
"\r\n"
" for (int i = 0; i < numSamplesToRead; ++i)\r\n"
" {\r\n"
" // Calculate region output sample at index startInSource + i ...\r\n"
" float sample = 0.0f;\r\n"
"\r\n"
" if (didRenderAnyRegion)\r\n"
" channelData[startInBuffer + i] += sample;\r\n"
" else\r\n"
" channelData[startInBuffer + i] = sample;\r\n"
" }\r\n"
" }\r\n"
"\r\n"
" // If rendering first region, clear any excess at start or end of the region.\r\n"
" if (! didRenderAnyRegion)\r\n"
" {\r\n"
" if (startInBuffer != 0)\r\n"
" buffer.clear (0, startInBuffer);\r\n"
"\r\n"
" const int endInBuffer = startInBuffer + numSamples;\r\n"
" const int remainingSamples = numSamples - endInBuffer;\r\n"
"\r\n"
" if (remainingSamples != 0)\r\n"
" buffer.clear (endInBuffer, remainingSamples);\r\n"
"\r\n"
" didRenderAnyRegion = true;\r\n"
" }\r\n"
" }\r\n"
" }\r\n"
"\r\n"
" if (! didRenderAnyRegion)\r\n"
" buffer.clear();\r\n"
"\r\n"
" return success;\r\n"
"}\r\n";
const char* jucer_AudioPluginARAPlaybackRendererTemplate_cpp = (const char*) temp_binary_data_38;
//================== jucer_AudioPluginARAPlaybackRendererTemplate.h ==================
static const unsigned char temp_binary_data_39[] =
"/*\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"
"\r\n"
" ==============================================================================\r\n"
"*/\r\n"
"\r\n"
"#pragma once\r\n"
"\r\n"
"#include <juce_audio_processors/juce_audio_processors.h>\r\n"
"\r\n"
"//==============================================================================\r\n"
"/**\r\n"
"*/\r\n"
"class %%araplaybackrenderer_class_name%% : public juce::ARAPlaybackRenderer\r\n"
"{\r\n"
"public:\r\n"
" //==============================================================================\r\n"
" using juce::ARAPlaybackRenderer::ARAPlaybackRenderer;\r\n"
"\r\n"
" //==============================================================================\r\n"
" void prepareToPlay (double sampleRate,\r\n"
" int maximumSamplesPerBlock,\r\n"
" int numChannels,\r\n"
" juce::AudioProcessor::ProcessingPrecision,\r\n"
" AlwaysNonRealtime alwaysNonRealtime) override;\r\n"
" void releaseResources() override;\r\n"
"\r\n"
" //==============================================================================\r\n"
" bool processBlock (juce::AudioBuffer<float> & buffer,\r\n"
" juce::AudioProcessor::Realtime realtime,\r\n"
" const juce::AudioPlayHead::CurrentPositionInfo& positionInfo) noexcept override;\r\n"
"\r\n"
"private:\r\n"
" //==============================================================================\r\n"
" double sampleRate = 44100.0;\r\n"
" int maximumSamplesPerBlock = 4096;\r\n"
" int numChannels = 1;\r\n"
" bool useBufferedAudioSourceReader = true;\r\n"
"\r\n"
" 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;
//================== jucer_AudioPluginEditorTemplate.cpp ==================
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 editor.\r\n" " This file contains the basic framework code for a JUCE plugin editor.\r\n"
"\r\n" "\r\n"
" ==============================================================================\r\n" " ==============================================================================\r\n"
@@ -6839,10 +7094,10 @@ static const unsigned char temp_binary_data_36[] =
" // subcomponents in your editor..\r\n" " // subcomponents in your editor..\r\n"
"}\r\n"; "}\r\n";
const char* jucer_AudioPluginEditorTemplate_cpp = (const char*) temp_binary_data_36;
const char* jucer_AudioPluginEditorTemplate_cpp = (const char*) temp_binary_data_40;
//================== jucer_AudioPluginEditorTemplate.h ================== //================== jucer_AudioPluginEditorTemplate.h ==================
static const unsigned char temp_binary_data_37[] =
static const unsigned char temp_binary_data_41[] =
"/*\r\n" "/*\r\n"
" ==============================================================================\r\n" " ==============================================================================\r\n"
"\r\n" "\r\n"
@@ -6876,10 +7131,10 @@ static const unsigned char temp_binary_data_37[] =
" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%editor_class_name%%)\r\n" " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%editor_class_name%%)\r\n"
"};\r\n"; "};\r\n";
const char* jucer_AudioPluginEditorTemplate_h = (const char*) temp_binary_data_37;
const char* jucer_AudioPluginEditorTemplate_h = (const char*) temp_binary_data_41;
//================== jucer_AudioPluginFilterTemplate.cpp ================== //================== jucer_AudioPluginFilterTemplate.cpp ==================
static const unsigned char temp_binary_data_38[] =
static const unsigned char temp_binary_data_42[] =
"/*\r\n" "/*\r\n"
" ==============================================================================\r\n" " ==============================================================================\r\n"
"\r\n" "\r\n"
@@ -7071,10 +7326,10 @@ static const unsigned char temp_binary_data_38[] =
" return new %%filter_class_name%%();\r\n" " return new %%filter_class_name%%();\r\n"
"}\r\n"; "}\r\n";
const char* jucer_AudioPluginFilterTemplate_cpp = (const char*) temp_binary_data_38;
const char* jucer_AudioPluginFilterTemplate_cpp = (const char*) temp_binary_data_42;
//================== jucer_AudioPluginFilterTemplate.h ================== //================== jucer_AudioPluginFilterTemplate.h ==================
static const unsigned char temp_binary_data_39[] =
static const unsigned char temp_binary_data_43[] =
"/*\r\n" "/*\r\n"
" ==============================================================================\r\n" " ==============================================================================\r\n"
"\r\n" "\r\n"
@@ -7091,6 +7346,9 @@ static const unsigned char temp_binary_data_39[] =
"/**\r\n" "/**\r\n"
"*/\r\n" "*/\r\n"
"class %%filter_class_name%% : public juce::AudioProcessor\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" "{\r\n"
"public:\r\n" "public:\r\n"
" //==============================================================================\r\n" " //==============================================================================\r\n"
@@ -7135,10 +7393,10 @@ static const unsigned char temp_binary_data_39[] =
" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%filter_class_name%%)\r\n" " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%filter_class_name%%)\r\n"
"};\r\n"; "};\r\n";
const char* jucer_AudioPluginFilterTemplate_h = (const char*) temp_binary_data_39;
const char* jucer_AudioPluginFilterTemplate_h = (const char*) temp_binary_data_43;
//================== jucer_ComponentTemplate.cpp ================== //================== jucer_ComponentTemplate.cpp ==================
static const unsigned char temp_binary_data_40[] =
static const unsigned char temp_binary_data_44[] =
"/*\r\n" "/*\r\n"
" ==============================================================================\r\n" " ==============================================================================\r\n"
"\r\n" "\r\n"
@@ -7214,10 +7472,10 @@ static const unsigned char temp_binary_data_40[] =
"//[EndFile] You can add extra defines here...\r\n" "//[EndFile] You can add extra defines here...\r\n"
"//[/EndFile]\r\n"; "//[/EndFile]\r\n";
const char* jucer_ComponentTemplate_cpp = (const char*) temp_binary_data_40;
const char* jucer_ComponentTemplate_cpp = (const char*) temp_binary_data_44;
//================== jucer_ComponentTemplate.h ================== //================== jucer_ComponentTemplate.h ==================
static const unsigned char temp_binary_data_41[] =
static const unsigned char temp_binary_data_45[] =
"/*\r\n" "/*\r\n"
" ==============================================================================\r\n" " ==============================================================================\r\n"
"\r\n" "\r\n"
@@ -7280,10 +7538,10 @@ static const unsigned char temp_binary_data_41[] =
"//[EndFile] You can add extra defines here...\r\n" "//[EndFile] You can add extra defines here...\r\n"
"//[/EndFile]\r\n"; "//[/EndFile]\r\n";
const char* jucer_ComponentTemplate_h = (const char*) temp_binary_data_41;
const char* jucer_ComponentTemplate_h = (const char*) temp_binary_data_45;
//================== jucer_ContentCompSimpleTemplate.h ================== //================== jucer_ContentCompSimpleTemplate.h ==================
static const unsigned char temp_binary_data_42[] =
static const unsigned char temp_binary_data_46[] =
"#pragma once\r\n" "#pragma once\r\n"
"\r\n" "\r\n"
"%%include_juce%%\r\n" "%%include_juce%%\r\n"
@@ -7333,10 +7591,10 @@ static const unsigned char temp_binary_data_42[] =
" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n" " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n"
"};\r\n"; "};\r\n";
const char* jucer_ContentCompSimpleTemplate_h = (const char*) temp_binary_data_42;
const char* jucer_ContentCompSimpleTemplate_h = (const char*) temp_binary_data_46;
//================== jucer_ContentCompTemplate.cpp ================== //================== jucer_ContentCompTemplate.cpp ==================
static const unsigned char temp_binary_data_43[] =
static const unsigned char temp_binary_data_47[] =
"%%include_corresponding_header%%\r\n" "%%include_corresponding_header%%\r\n"
"\r\n" "\r\n"
"//==============================================================================\r\n" "//==============================================================================\r\n"
@@ -7367,10 +7625,10 @@ static const unsigned char temp_binary_data_43[] =
" // update their positions.\r\n" " // update their positions.\r\n"
"}\r\n"; "}\r\n";
const char* jucer_ContentCompTemplate_cpp = (const char*) temp_binary_data_43;
const char* jucer_ContentCompTemplate_cpp = (const char*) temp_binary_data_47;
//================== jucer_ContentCompTemplate.h ================== //================== jucer_ContentCompTemplate.h ==================
static const unsigned char temp_binary_data_44[] =
static const unsigned char temp_binary_data_48[] =
"#pragma once\r\n" "#pragma once\r\n"
"\r\n" "\r\n"
"%%include_juce%%\r\n" "%%include_juce%%\r\n"
@@ -7399,10 +7657,10 @@ static const unsigned char temp_binary_data_44[] =
" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n" " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n"
"};\r\n"; "};\r\n";
const char* jucer_ContentCompTemplate_h = (const char*) temp_binary_data_44;
const char* jucer_ContentCompTemplate_h = (const char*) temp_binary_data_48;
//================== jucer_InlineComponentTemplate.h ================== //================== jucer_InlineComponentTemplate.h ==================
static const unsigned char temp_binary_data_45[] =
static const unsigned char temp_binary_data_49[] =
"//==============================================================================\r\n" "//==============================================================================\r\n"
"class %%component_class%% : public juce::Component\r\n" "class %%component_class%% : public juce::Component\r\n"
"{\r\n" "{\r\n"
@@ -7444,10 +7702,10 @@ static const unsigned char temp_binary_data_45[] =
" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%component_class%%)\r\n" " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%component_class%%)\r\n"
"};\r\n"; "};\r\n";
const char* jucer_InlineComponentTemplate_h = (const char*) temp_binary_data_45;
const char* jucer_InlineComponentTemplate_h = (const char*) temp_binary_data_49;
//================== jucer_MainConsoleAppTemplate.cpp ================== //================== jucer_MainConsoleAppTemplate.cpp ==================
static const unsigned char temp_binary_data_46[] =
static const unsigned char temp_binary_data_50[] =
"/*\r\n" "/*\r\n"
" ==============================================================================\r\n" " ==============================================================================\r\n"
"\r\n" "\r\n"
@@ -7468,10 +7726,10 @@ static const unsigned char temp_binary_data_46[] =
" return 0;\r\n" " return 0;\r\n"
"}\r\n"; "}\r\n";
const char* jucer_MainConsoleAppTemplate_cpp = (const char*) temp_binary_data_46;
const char* jucer_MainConsoleAppTemplate_cpp = (const char*) temp_binary_data_50;
//================== jucer_MainTemplate_NoWindow.cpp ================== //================== jucer_MainTemplate_NoWindow.cpp ==================
static const unsigned char temp_binary_data_47[] =
static const unsigned char temp_binary_data_51[] =
"/*\r\n" "/*\r\n"
" ==============================================================================\r\n" " ==============================================================================\r\n"
"\r\n" "\r\n"
@@ -7524,10 +7782,10 @@ static const unsigned char temp_binary_data_47[] =
"// This macro generates the main() routine that launches the app.\r\n" "// This macro generates the main() routine that launches the app.\r\n"
"START_JUCE_APPLICATION (%%app_class_name%%)\r\n"; "START_JUCE_APPLICATION (%%app_class_name%%)\r\n";
const char* jucer_MainTemplate_NoWindow_cpp = (const char*) temp_binary_data_47;
const char* jucer_MainTemplate_NoWindow_cpp = (const char*) temp_binary_data_51;
//================== jucer_MainTemplate_Window.cpp ================== //================== jucer_MainTemplate_Window.cpp ==================
static const unsigned char temp_binary_data_48[] =
static const unsigned char temp_binary_data_52[] =
"/*\r\n" "/*\r\n"
" ==============================================================================\r\n" " ==============================================================================\r\n"
"\r\n" "\r\n"
@@ -7633,10 +7891,10 @@ static const unsigned char temp_binary_data_48[] =
"// This macro generates the main() routine that launches the app.\r\n" "// This macro generates the main() routine that launches the app.\r\n"
"START_JUCE_APPLICATION (%%app_class_name%%)\r\n"; "START_JUCE_APPLICATION (%%app_class_name%%)\r\n";
const char* jucer_MainTemplate_Window_cpp = (const char*) temp_binary_data_48;
const char* jucer_MainTemplate_Window_cpp = (const char*) temp_binary_data_52;
//================== jucer_NewComponentTemplate.cpp ================== //================== jucer_NewComponentTemplate.cpp ==================
static const unsigned char temp_binary_data_49[] =
static const unsigned char temp_binary_data_53[] =
"/*\r\n" "/*\r\n"
" ==============================================================================\r\n" " ==============================================================================\r\n"
"\r\n" "\r\n"
@@ -7689,10 +7947,10 @@ static const unsigned char temp_binary_data_49[] =
"\r\n" "\r\n"
"}\r\n"; "}\r\n";
const char* jucer_NewComponentTemplate_cpp = (const char*) temp_binary_data_49;
const char* jucer_NewComponentTemplate_cpp = (const char*) temp_binary_data_53;
//================== jucer_NewComponentTemplate.h ================== //================== jucer_NewComponentTemplate.h ==================
static const unsigned char temp_binary_data_50[] =
static const unsigned char temp_binary_data_54[] =
"/*\r\n" "/*\r\n"
" ==============================================================================\r\n" " ==============================================================================\r\n"
"\r\n" "\r\n"
@@ -7723,10 +7981,10 @@ static const unsigned char temp_binary_data_50[] =
" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%component_class%%)\r\n" " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%component_class%%)\r\n"
"};\r\n"; "};\r\n";
const char* jucer_NewComponentTemplate_h = (const char*) temp_binary_data_50;
const char* jucer_NewComponentTemplate_h = (const char*) temp_binary_data_54;
//================== jucer_NewCppFileTemplate.cpp ================== //================== jucer_NewCppFileTemplate.cpp ==================
static const unsigned char temp_binary_data_51[] =
static const unsigned char temp_binary_data_55[] =
"/*\r\n" "/*\r\n"
" ==============================================================================\r\n" " ==============================================================================\r\n"
"\r\n" "\r\n"
@@ -7739,10 +7997,10 @@ static const unsigned char temp_binary_data_51[] =
"\r\n" "\r\n"
"%%include_corresponding_header%%\r\n"; "%%include_corresponding_header%%\r\n";
const char* jucer_NewCppFileTemplate_cpp = (const char*) temp_binary_data_51;
const char* jucer_NewCppFileTemplate_cpp = (const char*) temp_binary_data_55;
//================== jucer_NewCppFileTemplate.h ================== //================== jucer_NewCppFileTemplate.h ==================
static const unsigned char temp_binary_data_52[] =
static const unsigned char temp_binary_data_56[] =
"/*\r\n" "/*\r\n"
" ==============================================================================\r\n" " ==============================================================================\r\n"
"\r\n" "\r\n"
@@ -7755,10 +8013,10 @@ static const unsigned char temp_binary_data_52[] =
"\r\n" "\r\n"
"#pragma once\r\n"; "#pragma once\r\n";
const char* jucer_NewCppFileTemplate_h = (const char*) temp_binary_data_52;
const char* jucer_NewCppFileTemplate_h = (const char*) temp_binary_data_56;
//================== jucer_NewInlineComponentTemplate.h ================== //================== jucer_NewInlineComponentTemplate.h ==================
static const unsigned char temp_binary_data_53[] =
static const unsigned char temp_binary_data_57[] =
"/*\r\n" "/*\r\n"
" ==============================================================================\r\n" " ==============================================================================\r\n"
"\r\n" "\r\n"
@@ -7821,10 +8079,10 @@ static const unsigned char temp_binary_data_53[] =
" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%component_class%%)\r\n" " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%component_class%%)\r\n"
"};\r\n"; "};\r\n";
const char* jucer_NewInlineComponentTemplate_h = (const char*) temp_binary_data_53;
const char* jucer_NewInlineComponentTemplate_h = (const char*) temp_binary_data_57;
//================== jucer_OpenGLComponentSimpleTemplate.h ================== //================== jucer_OpenGLComponentSimpleTemplate.h ==================
static const unsigned char temp_binary_data_54[] =
static const unsigned char temp_binary_data_58[] =
"#pragma once\r\n" "#pragma once\r\n"
"\r\n" "\r\n"
"%%include_juce%%\r\n" "%%include_juce%%\r\n"
@@ -7893,10 +8151,10 @@ static const unsigned char temp_binary_data_54[] =
" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n" " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n"
"};\r\n"; "};\r\n";
const char* jucer_OpenGLComponentSimpleTemplate_h = (const char*) temp_binary_data_54;
const char* jucer_OpenGLComponentSimpleTemplate_h = (const char*) temp_binary_data_58;
//================== jucer_OpenGLComponentTemplate.cpp ================== //================== jucer_OpenGLComponentTemplate.cpp ==================
static const unsigned char temp_binary_data_55[] =
static const unsigned char temp_binary_data_59[] =
"%%include_corresponding_header%%\r\n" "%%include_corresponding_header%%\r\n"
"\r\n" "\r\n"
"//==============================================================================\r\n" "//==============================================================================\r\n"
@@ -7946,10 +8204,10 @@ static const unsigned char temp_binary_data_55[] =
" // update their positions.\r\n" " // update their positions.\r\n"
"}\r\n"; "}\r\n";
const char* jucer_OpenGLComponentTemplate_cpp = (const char*) temp_binary_data_55;
const char* jucer_OpenGLComponentTemplate_cpp = (const char*) temp_binary_data_59;
//================== jucer_OpenGLComponentTemplate.h ================== //================== jucer_OpenGLComponentTemplate.h ==================
static const unsigned char temp_binary_data_56[] =
static const unsigned char temp_binary_data_60[] =
"#pragma once\r\n" "#pragma once\r\n"
"\r\n" "\r\n"
"%%include_juce%%\r\n" "%%include_juce%%\r\n"
@@ -7983,10 +8241,10 @@ static const unsigned char temp_binary_data_56[] =
" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n" " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n"
"};\r\n"; "};\r\n";
const char* jucer_OpenGLComponentTemplate_h = (const char*) temp_binary_data_56;
const char* jucer_OpenGLComponentTemplate_h = (const char*) temp_binary_data_60;
//================== jucer_PIPAudioProcessorTemplate.h ================== //================== jucer_PIPAudioProcessorTemplate.h ==================
static const unsigned char temp_binary_data_57[] =
static const unsigned char temp_binary_data_61[] =
"class %%class_name%% : public juce::AudioProcessor\r\n" "class %%class_name%% : public juce::AudioProcessor\r\n"
"{\r\n" "{\r\n"
"public:\r\n" "public:\r\n"
@@ -8095,10 +8353,10 @@ static const unsigned char temp_binary_data_57[] =
" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%class_name%%)\r\n" " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%class_name%%)\r\n"
"};\r\n"; "};\r\n";
const char* jucer_PIPAudioProcessorTemplate_h = (const char*) temp_binary_data_57;
const char* jucer_PIPAudioProcessorTemplate_h = (const char*) temp_binary_data_61;
//================== jucer_PIPTemplate.h ================== //================== jucer_PIPTemplate.h ==================
static const unsigned char temp_binary_data_58[] =
static const unsigned char temp_binary_data_62[] =
"/*******************************************************************************\r\n" "/*******************************************************************************\r\n"
" The block below describes the properties of this PIP. A PIP is a short snippet\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" " of code that can be read by the Projucer and used to generate a JUCE project.\r\n"
@@ -8117,10 +8375,10 @@ static const unsigned char temp_binary_data_58[] =
"//==============================================================================\r\n" "//==============================================================================\r\n"
"%%pip_code%%\r\n"; "%%pip_code%%\r\n";
const char* jucer_PIPTemplate_h = (const char*) temp_binary_data_58;
const char* jucer_PIPTemplate_h = (const char*) temp_binary_data_62;
//================== colourscheme_dark.xml ================== //================== colourscheme_dark.xml ==================
static const unsigned char temp_binary_data_59[] =
static const unsigned char temp_binary_data_63[] =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
"\r\n" "\r\n"
"<COLOUR_SCHEME font=\"&lt;Monospaced&gt;; 13.0\">\r\n" "<COLOUR_SCHEME font=\"&lt;Monospaced&gt;; 13.0\">\r\n"
@@ -8145,10 +8403,10 @@ static const unsigned char temp_binary_data_59[] =
" <COLOUR name=\"Error\" colour=\"FFE60000\"/>\r\n" " <COLOUR name=\"Error\" colour=\"FFE60000\"/>\r\n"
"</COLOUR_SCHEME>\r\n"; "</COLOUR_SCHEME>\r\n";
const char* colourscheme_dark_xml = (const char*) temp_binary_data_59;
const char* colourscheme_dark_xml = (const char*) temp_binary_data_63;
//================== colourscheme_light.xml ================== //================== colourscheme_light.xml ==================
static const unsigned char temp_binary_data_60[] =
static const unsigned char temp_binary_data_64[] =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
"\r\n" "\r\n"
"<COLOUR_SCHEME font=\"&lt;Monospaced&gt;; 13.0\">\r\n" "<COLOUR_SCHEME font=\"&lt;Monospaced&gt;; 13.0\">\r\n"
@@ -8173,10 +8431,10 @@ static const unsigned char temp_binary_data_60[] =
" <COLOUR name=\"Error\" colour=\"ffcc0000\"/>\r\n" " <COLOUR name=\"Error\" colour=\"ffcc0000\"/>\r\n"
"</COLOUR_SCHEME>\r\n"; "</COLOUR_SCHEME>\r\n";
const char* colourscheme_light_xml = (const char*) temp_binary_data_60;
const char* colourscheme_light_xml = (const char*) temp_binary_data_64;
//================== juce_runtime_arch_detection.cpp ================== //================== juce_runtime_arch_detection.cpp ==================
static const unsigned char temp_binary_data_61[] =
static const unsigned char temp_binary_data_65[] =
"/*\r\n" "/*\r\n"
" ==============================================================================\r\n" " ==============================================================================\r\n"
"\r\n" "\r\n"
@@ -8255,7 +8513,7 @@ static const unsigned char temp_binary_data_61[] =
"\r\n" "\r\n"
"#endif\r\n"; "#endif\r\n";
const char* juce_runtime_arch_detection_cpp = (const char*) temp_binary_data_61;
const char* juce_runtime_arch_detection_cpp = (const char*) temp_binary_data_65;
const char* getNamedResource (const char* resourceNameUTF8, int& numBytes); const char* getNamedResource (const char* resourceNameUTF8, int& numBytes);
@@ -8305,10 +8563,14 @@ const char* getNamedResource (const char* resourceNameUTF8, int& numBytes)
case 0xfb6f6d96: numBytes = 3554; return jucer_AudioComponentSimpleTemplate_h; case 0xfb6f6d96: numBytes = 3554; return jucer_AudioComponentSimpleTemplate_h;
case 0xafccbd3f: numBytes = 2941; return jucer_AudioComponentTemplate_cpp; case 0xafccbd3f: numBytes = 2941; return jucer_AudioComponentTemplate_cpp;
case 0x915d7304: numBytes = 1187; return jucer_AudioComponentTemplate_h; case 0x915d7304: numBytes = 1187; return jucer_AudioComponentTemplate_h;
case 0x744d44d6: numBytes = 1920; return jucer_AudioPluginARADocumentControllerTemplate_cpp;
case 0x3eb8f45b: numBytes = 1439; return jucer_AudioPluginARADocumentControllerTemplate_h;
case 0xea35a37d: numBytes = 5192; return jucer_AudioPluginARAPlaybackRendererTemplate_cpp;
case 0x78a6d0c2: numBytes = 1765; return jucer_AudioPluginARAPlaybackRendererTemplate_h;
case 0x27c5a93a: numBytes = 1355; return jucer_AudioPluginEditorTemplate_cpp; case 0x27c5a93a: numBytes = 1355; return jucer_AudioPluginEditorTemplate_cpp;
case 0x4d0721bf: numBytes = 973; return jucer_AudioPluginEditorTemplate_h; case 0x4d0721bf: numBytes = 973; return jucer_AudioPluginEditorTemplate_h;
case 0x51b49ac5: numBytes = 6218; return jucer_AudioPluginFilterTemplate_cpp; case 0x51b49ac5: numBytes = 6218; return jucer_AudioPluginFilterTemplate_cpp;
case 0x488afa0a: numBytes = 2299; return jucer_AudioPluginFilterTemplate_h;
case 0x488afa0a: numBytes = 2462; return jucer_AudioPluginFilterTemplate_h;
case 0xabad7041: numBytes = 2147; return jucer_ComponentTemplate_cpp; case 0xabad7041: numBytes = 2147; return jucer_ComponentTemplate_cpp;
case 0xfc72fe86: numBytes = 2065; return jucer_ComponentTemplate_h; case 0xfc72fe86: numBytes = 2065; return jucer_ComponentTemplate_h;
case 0x1657b643: numBytes = 1524; return jucer_ContentCompSimpleTemplate_h; case 0x1657b643: numBytes = 1524; return jucer_ContentCompSimpleTemplate_h;
@@ -8376,6 +8638,10 @@ const char* namedResourceList[] =
"jucer_AudioComponentSimpleTemplate_h", "jucer_AudioComponentSimpleTemplate_h",
"jucer_AudioComponentTemplate_cpp", "jucer_AudioComponentTemplate_cpp",
"jucer_AudioComponentTemplate_h", "jucer_AudioComponentTemplate_h",
"jucer_AudioPluginARADocumentControllerTemplate_cpp",
"jucer_AudioPluginARADocumentControllerTemplate_h",
"jucer_AudioPluginARAPlaybackRendererTemplate_cpp",
"jucer_AudioPluginARAPlaybackRendererTemplate_h",
"jucer_AudioPluginEditorTemplate_cpp", "jucer_AudioPluginEditorTemplate_cpp",
"jucer_AudioPluginEditorTemplate_h", "jucer_AudioPluginEditorTemplate_h",
"jucer_AudioPluginFilterTemplate_cpp", "jucer_AudioPluginFilterTemplate_cpp",
@@ -8442,6 +8708,10 @@ const char* originalFilenames[] =
"jucer_AudioComponentSimpleTemplate.h", "jucer_AudioComponentSimpleTemplate.h",
"jucer_AudioComponentTemplate.cpp", "jucer_AudioComponentTemplate.cpp",
"jucer_AudioComponentTemplate.h", "jucer_AudioComponentTemplate.h",
"jucer_AudioPluginARADocumentControllerTemplate.cpp",
"jucer_AudioPluginARADocumentControllerTemplate.h",
"jucer_AudioPluginARAPlaybackRendererTemplate.cpp",
"jucer_AudioPluginARAPlaybackRendererTemplate.h",
"jucer_AudioPluginEditorTemplate.cpp", "jucer_AudioPluginEditorTemplate.cpp",
"jucer_AudioPluginEditorTemplate.h", "jucer_AudioPluginEditorTemplate.h",
"jucer_AudioPluginFilterTemplate.cpp", "jucer_AudioPluginFilterTemplate.cpp",


+ 14
- 2
extras/Projucer/JuceLibraryCode/BinaryData.h View File

@@ -116,6 +116,18 @@ namespace BinaryData
extern const char* jucer_AudioComponentTemplate_h; extern const char* jucer_AudioComponentTemplate_h;
const int jucer_AudioComponentTemplate_hSize = 1187; const int jucer_AudioComponentTemplate_hSize = 1187;
extern const char* jucer_AudioPluginARADocumentControllerTemplate_cpp;
const int jucer_AudioPluginARADocumentControllerTemplate_cppSize = 1920;
extern const char* jucer_AudioPluginARADocumentControllerTemplate_h;
const int jucer_AudioPluginARADocumentControllerTemplate_hSize = 1439;
extern const char* jucer_AudioPluginARAPlaybackRendererTemplate_cpp;
const int jucer_AudioPluginARAPlaybackRendererTemplate_cppSize = 5192;
extern const char* jucer_AudioPluginARAPlaybackRendererTemplate_h;
const int jucer_AudioPluginARAPlaybackRendererTemplate_hSize = 1765;
extern const char* jucer_AudioPluginEditorTemplate_cpp; extern const char* jucer_AudioPluginEditorTemplate_cpp;
const int jucer_AudioPluginEditorTemplate_cppSize = 1355; const int jucer_AudioPluginEditorTemplate_cppSize = 1355;
@@ -126,7 +138,7 @@ namespace BinaryData
const int jucer_AudioPluginFilterTemplate_cppSize = 6218; const int jucer_AudioPluginFilterTemplate_cppSize = 6218;
extern const char* jucer_AudioPluginFilterTemplate_h; extern const char* jucer_AudioPluginFilterTemplate_h;
const int jucer_AudioPluginFilterTemplate_hSize = 2299;
const int jucer_AudioPluginFilterTemplate_hSize = 2462;
extern const char* jucer_ComponentTemplate_cpp; extern const char* jucer_ComponentTemplate_cpp;
const int jucer_ComponentTemplate_cppSize = 2147; const int jucer_ComponentTemplate_cppSize = 2147;
@@ -195,7 +207,7 @@ namespace BinaryData
const int juce_runtime_arch_detection_cppSize = 2760; const int juce_runtime_arch_detection_cppSize = 2760;
// Number of elements in the namedResourceList and originalFileNames arrays. // Number of elements in the namedResourceList and originalFileNames arrays.
const int namedResourceListSize = 62;
const int namedResourceListSize = 66;
// Points to the start of a list of resource names. // Points to the start of a list of resource names.
extern const char* namedResourceList[]; extern const char* namedResourceList[];


+ 8
- 0
extras/Projucer/Projucer.jucer View File

@@ -257,6 +257,14 @@
resource="1" file="Source/BinaryData/Templates/jucer_AudioComponentTemplate.cpp"/> resource="1" file="Source/BinaryData/Templates/jucer_AudioComponentTemplate.cpp"/>
<FILE id="i9bm2b" name="jucer_AudioComponentTemplate.h" compile="0" <FILE id="i9bm2b" name="jucer_AudioComponentTemplate.h" compile="0"
resource="1" file="Source/BinaryData/Templates/jucer_AudioComponentTemplate.h"/> resource="1" file="Source/BinaryData/Templates/jucer_AudioComponentTemplate.h"/>
<FILE id="qqnMJs" name="jucer_AudioPluginARADocumentControllerTemplate.cpp"
compile="0" resource="1" file="Source/BinaryData/Templates/jucer_AudioPluginARADocumentControllerTemplate.cpp"/>
<FILE id="nEnvoi" name="jucer_AudioPluginARADocumentControllerTemplate.h"
compile="0" resource="1" file="Source/BinaryData/Templates/jucer_AudioPluginARADocumentControllerTemplate.h"/>
<FILE id="H2uvhd" name="jucer_AudioPluginARAPlaybackRendererTemplate.cpp"
compile="0" resource="1" file="Source/BinaryData/Templates/jucer_AudioPluginARAPlaybackRendererTemplate.cpp"/>
<FILE id="U7eXlD" name="jucer_AudioPluginARAPlaybackRendererTemplate.h"
compile="0" resource="1" file="Source/BinaryData/Templates/jucer_AudioPluginARAPlaybackRendererTemplate.h"/>
<FILE id="BYSiw7" name="jucer_AudioPluginEditorTemplate.cpp" compile="0" <FILE id="BYSiw7" name="jucer_AudioPluginEditorTemplate.cpp" compile="0"
resource="1" file="Source/BinaryData/Templates/jucer_AudioPluginEditorTemplate.cpp"/> resource="1" file="Source/BinaryData/Templates/jucer_AudioPluginEditorTemplate.cpp"/>
<FILE id="wcuIlm" name="jucer_AudioPluginEditorTemplate.h" compile="0" <FILE id="wcuIlm" name="jucer_AudioPluginEditorTemplate.h" compile="0"


+ 23
- 1
extras/Projucer/Source/Application/StartPage/jucer_NewProjectTemplates.h View File

@@ -46,7 +46,8 @@ namespace NewProjectTemplates
main, main,
header, header,
headerAndCpp, headerAndCpp,
processorAndEditor
processorAndEditor,
araPluginFiles
}; };
using FilenameAndContent = std::pair<String, String>; using FilenameAndContent = std::pair<String, String>;
@@ -87,6 +88,7 @@ namespace NewProjectTemplates
if (opt == FileCreationOptions::header) return "header"; if (opt == FileCreationOptions::header) return "header";
if (opt == FileCreationOptions::headerAndCpp) return "headercpp"; if (opt == FileCreationOptions::headerAndCpp) return "headercpp";
if (opt == FileCreationOptions::processorAndEditor) return "processoreditor"; if (opt == FileCreationOptions::processorAndEditor) return "processoreditor";
if (opt == FileCreationOptions::araPluginFiles) return "arapluginfiles";
jassertfalse; jassertfalse;
return {}; return {};
@@ -99,6 +101,7 @@ namespace NewProjectTemplates
if (opt == "header") return FileCreationOptions::header; if (opt == "header") return FileCreationOptions::header;
if (opt == "headercpp") return FileCreationOptions::headerAndCpp; if (opt == "headercpp") return FileCreationOptions::headerAndCpp;
if (opt == "processoreditor") return FileCreationOptions::processorAndEditor; if (opt == "processoreditor") return FileCreationOptions::processorAndEditor;
if (opt == "arapluginfiles") return FileCreationOptions::araPluginFiles;
jassertfalse; jassertfalse;
return {}; return {};
@@ -111,6 +114,7 @@ namespace NewProjectTemplates
if (opt == FileCreationOptions::header) return "Main.cpp + .h"; if (opt == FileCreationOptions::header) return "Main.cpp + .h";
if (opt == FileCreationOptions::headerAndCpp) return "Main.cpp + .h/.cpp "; if (opt == FileCreationOptions::headerAndCpp) return "Main.cpp + .h/.cpp ";
if (opt == FileCreationOptions::processorAndEditor) return "Processor and Editor"; if (opt == FileCreationOptions::processorAndEditor) return "Processor and Editor";
if (opt == FileCreationOptions::araPluginFiles) return "ARA Plugin Files";
jassertfalse; jassertfalse;
return {}; return {};
@@ -222,6 +226,24 @@ namespace NewProjectTemplates
FileCreationOptions::processorAndEditor FileCreationOptions::processorAndEditor
}, },
{ ProjectCategory::plugin,
"ARA", "Creates an ARA audio plug-in, augmenting the basic audio plug-in with ARA functionality.",
build_tools::ProjectType_ARAAudioPlugin::getTypeName(),
BinaryData::wizard_AudioPlugin_svg,
getModulesRequiredForAudioProcessor(),
{
{ FileCreationOptions::araPluginFiles, { { "PluginProcessor.cpp", "jucer_AudioPluginFilterTemplate_cpp" },
{ "PluginProcessor.h", "jucer_AudioPluginFilterTemplate_h" },
{ "PluginEditor.cpp", "jucer_AudioPluginEditorTemplate_cpp" },
{ "PluginEditor.h", "jucer_AudioPluginEditorTemplate_h" },
{ "PluginARADocumentController.cpp", "jucer_AudioPluginARADocumentControllerTemplate_cpp" },
{ "PluginARADocumentController.h", "jucer_AudioPluginARADocumentControllerTemplate_h" },
{ "PluginARAPlaybackRenderer.cpp", "jucer_AudioPluginARAPlaybackRendererTemplate_cpp" },
{ "PluginARAPlaybackRenderer.h", "jucer_AudioPluginARAPlaybackRendererTemplate_h" }} }
},
FileCreationOptions::araPluginFiles
},
{ ProjectCategory::library, { ProjectCategory::library,
"Static Library", "Creates a static library.", "Static Library", "Creates a static library.",
build_tools::ProjectType_StaticLibrary::getTypeName(), build_tools::ProjectType_StaticLibrary::getTypeName(),


+ 17
- 0
extras/Projucer/Source/Application/StartPage/jucer_NewProjectWizard.cpp View File

@@ -114,11 +114,28 @@ static std::map<String, String> getPluginFileTokenReplacements (const String& na
processorClassName = processorClassName.substring (0, 1).toUpperCase() + processorClassName.substring (1); processorClassName = processorClassName.substring (0, 1).toUpperCase() + processorClassName.substring (1);
auto editorClassName = processorClassName + "Editor"; auto editorClassName = processorClassName + "Editor";
const auto araDocumentControllerCppFile = sourceFolder.getChildFile ("PluginARADocumentController.cpp");
const auto araDocumentControllerHFile = araDocumentControllerCppFile.withFileExtension (".h");
const auto araPlaybackRendererCppFile = sourceFolder.getChildFile ("PluginARAPlaybackRenderer.cpp");
const auto araPlaybackRendererHFile = araPlaybackRendererCppFile.withFileExtension (".h");
const auto araDocumentControllerHInclude = CodeHelpers::createIncludeStatement (araDocumentControllerHFile, araDocumentControllerCppFile);
const auto araPlaybackRendererHInclude = CodeHelpers::createIncludeStatement (araPlaybackRendererHFile, araPlaybackRendererCppFile);
auto araDocumentControllerClassName = build_tools::makeValidIdentifier (name, true, true, false) + "DocumentController";
araDocumentControllerClassName = araDocumentControllerClassName.substring (0, 1).toUpperCase() + araDocumentControllerClassName.substring (1);
auto araPlaybackRendererClassName = build_tools::makeValidIdentifier (name, true, true, false) + "PlaybackRenderer";
araPlaybackRendererClassName = araPlaybackRendererClassName.substring (0, 1).toUpperCase() + araPlaybackRendererClassName.substring (1);
tokenReplacements.insert ({"%%filter_headers%%", processorHInclude + newLine + editorHInclude }); tokenReplacements.insert ({"%%filter_headers%%", processorHInclude + newLine + editorHInclude });
tokenReplacements.insert ({"%%filter_class_name%%", processorClassName }); tokenReplacements.insert ({"%%filter_class_name%%", processorClassName });
tokenReplacements.insert ({"%%editor_class_name%%", editorClassName }); tokenReplacements.insert ({"%%editor_class_name%%", editorClassName });
tokenReplacements.insert ({"%%editor_cpp_headers%%", processorHInclude + newLine + editorHInclude }); tokenReplacements.insert ({"%%editor_cpp_headers%%", processorHInclude + newLine + editorHInclude });
tokenReplacements.insert ({"%%editor_headers%%", getJuceHeaderInclude() + newLine + processorHInclude }); tokenReplacements.insert ({"%%editor_headers%%", getJuceHeaderInclude() + newLine + processorHInclude });
tokenReplacements.insert ({"%%aradocumentcontroller_headers%%", araDocumentControllerHInclude });
tokenReplacements.insert ({"%%aradocumentcontroller_class_name%%", araDocumentControllerClassName });
tokenReplacements.insert ({"%%araplaybackrenderer_headers%%", araPlaybackRendererHInclude });
tokenReplacements.insert ({"%%araplaybackrenderer_class_name%%", araPlaybackRendererClassName });
return tokenReplacements; return tokenReplacements;
} }


+ 5
- 1
extras/Projucer/Source/Application/Windows/jucer_GlobalPathsWindowComponent.h View File

@@ -218,6 +218,8 @@ private:
"If you are building a legacy VST plug-in then this path should point to a VST2 SDK. " "If you are building a legacy VST plug-in then this path should point to a VST2 SDK. "
"The VST2 SDK can be obtained from the vstsdk3610_11_06_2018_build_37 (or older) VST3 SDK or JUCE version 5.3.2. " "The VST2 SDK can be obtained from the vstsdk3610_11_06_2018_build_37 (or older) VST3 SDK or JUCE version 5.3.2. "
"You also need a VST2 license from Steinberg to distribute VST2 plug-ins."); "You also need a VST2 license from Steinberg to distribute VST2 plug-ins.");
builder.add (new FilePathPropertyComponent (araPathValue, "ARA SDK", true, isThisOS),
"If you are building ARA enabled plug-ins, this should be the path to the ARA SDK folder.");
if (getSelectedOS() != TargetOS::linux) if (getSelectedOS() != TargetOS::linux)
{ {
@@ -263,6 +265,7 @@ private:
userModulePathValue = settings.getStoredPath (Ids::defaultUserModulePath, os); userModulePathValue = settings.getStoredPath (Ids::defaultUserModulePath, os);
vstPathValue = settings.getStoredPath (Ids::vstLegacyPath, os); vstPathValue = settings.getStoredPath (Ids::vstLegacyPath, os);
aaxPathValue = settings.getStoredPath (Ids::aaxPath, os); aaxPathValue = settings.getStoredPath (Ids::aaxPath, os);
araPathValue = settings.getStoredPath (Ids::araPath, os);
androidSDKPathValue = settings.getStoredPath (Ids::androidSDKPath, os); androidSDKPathValue = settings.getStoredPath (Ids::androidSDKPath, os);
clionExePathValue = settings.getStoredPath (Ids::clionExePath, os); clionExePathValue = settings.getStoredPath (Ids::clionExePath, os);
androidStudioExePathValue = settings.getStoredPath (Ids::androidStudioExePath, os); androidStudioExePathValue = settings.getStoredPath (Ids::androidStudioExePath, os);
@@ -275,6 +278,7 @@ private:
userModulePathValue .resetToDefault(); userModulePathValue .resetToDefault();
vstPathValue .resetToDefault(); vstPathValue .resetToDefault();
aaxPathValue .resetToDefault(); aaxPathValue .resetToDefault();
araPathValue .resetToDefault();
androidSDKPathValue .resetToDefault(); androidSDKPathValue .resetToDefault();
clionExePathValue .resetToDefault(); clionExePathValue .resetToDefault();
androidStudioExePathValue.resetToDefault(); androidStudioExePathValue.resetToDefault();
@@ -286,7 +290,7 @@ private:
Value selectedOSValue; Value selectedOSValue;
ValueTreePropertyWithDefault jucePathValue, juceModulePathValue, userModulePathValue, ValueTreePropertyWithDefault jucePathValue, juceModulePathValue, userModulePathValue,
vstPathValue, aaxPathValue, androidSDKPathValue,
vstPathValue, aaxPathValue, araPathValue, androidSDKPathValue,
clionExePathValue, androidStudioExePathValue; clionExePathValue, androidStudioExePathValue;
Viewport propertyViewport; Viewport propertyViewport;


+ 1
- 1
extras/Projucer/Source/Application/jucer_CommandLine.cpp View File

@@ -708,7 +708,7 @@ namespace
static bool isValidPathIdentifier (const String& id, const String& os) static bool isValidPathIdentifier (const String& id, const String& os)
{ {
return id == "vstLegacyPath" || (id == "aaxPath" && os != "linux")
return id == "vstLegacyPath" || (id == "aaxPath" && os != "linux") || id == "araPath"
|| id == "androidSDKPath" || id == "defaultJuceModulePath" || id == "defaultUserModulePath"; || id == "androidSDKPath" || id == "defaultJuceModulePath" || id == "defaultUserModulePath";
} }


+ 42
- 0
extras/Projucer/Source/BinaryData/Templates/jucer_AudioPluginARADocumentControllerTemplate.cpp View File

@@ -0,0 +1,42 @@
/*
==============================================================================
This file was auto-generated!
It contains the basic framework code for an ARA document controller implementation.
==============================================================================
*/
%%aradocumentcontroller_headers%%
%%araplaybackrenderer_headers%%
//==============================================================================
ARA::PlugIn::PlaybackRenderer* %%aradocumentcontroller_class_name%%::doCreatePlaybackRenderer() noexcept
{
return new %%araplaybackrenderer_class_name%% (getDocumentController());
}
//==============================================================================
bool %%aradocumentcontroller_class_name%%::doRestoreObjectsFromStream (juce::ARAInputStream& input, const juce::ARARestoreObjectsFilter* filter) noexcept
{
// You should use this method to read any persistent data associated with
// your ARA model graph stored in an archive using the supplied ARAInputStream.
// Be sure to check the ARARestoreObjectsFilter to determine which objects to restore.
return true;
}
bool %%aradocumentcontroller_class_name%%::doStoreObjectsToStream (juce::ARAOutputStream& output, const juce::ARAStoreObjectsFilter* filter) noexcept
{
// You should use this method to write any persistent data associated with
// your ARA model graph into the an archive using the supplied ARAOutputStream.
// Be sure to check the ARAStoreObjectsFilter to determine which objects to store.
return true;
}
//==============================================================================
// This creates the static ARAFactory instances for the plugin.
const ARA::ARAFactory* JUCE_CALLTYPE createARAFactory()
{
return juce::ARADocumentControllerSpecialisation::createARAFactory<%%aradocumentcontroller_class_name%%>();
}

+ 36
- 0
extras/Projucer/Source/BinaryData/Templates/jucer_AudioPluginARADocumentControllerTemplate.h View File

@@ -0,0 +1,36 @@
/*
==============================================================================
This file was auto-generated!
It contains the basic framework code for an ARA document controller implementation.
==============================================================================
*/
#pragma once
#include <juce_audio_processors/juce_audio_processors.h>
//==============================================================================
/**
*/
class %%aradocumentcontroller_class_name%% : public juce::ARADocumentControllerSpecialisation
{
public:
//==============================================================================
using ARADocumentControllerSpecialisation::ARADocumentControllerSpecialisation;
protected:
//==============================================================================
// Override document controller customization methods here
ARAPlaybackRenderer* doCreatePlaybackRenderer() noexcept override;
bool doRestoreObjectsFromStream (juce::ARAInputStream& input, const juce::ARARestoreObjectsFilter* filter) noexcept override;
bool doStoreObjectsToStream (juce::ARAOutputStream& output, const juce::ARAStoreObjectsFilter* filter) noexcept override;
private:
//==============================================================================
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%aradocumentcontroller_class_name%%)
};

+ 112
- 0
extras/Projucer/Source/BinaryData/Templates/jucer_AudioPluginARAPlaybackRendererTemplate.cpp View File

@@ -0,0 +1,112 @@
/*
==============================================================================
This file was auto-generated!
It contains the basic framework code for an ARA playback renderer implementation.
==============================================================================
*/
%%araplaybackrenderer_headers%%
//==============================================================================
void %%araplaybackrenderer_class_name%%::prepareToPlay (double sampleRateIn, int maximumSamplesPerBlockIn, int numChannelsIn, juce::AudioProcessor::ProcessingPrecision, AlwaysNonRealtime alwaysNonRealtime)
{
numChannels = numChannelsIn;
sampleRate = sampleRateIn;
maximumSamplesPerBlock = maximumSamplesPerBlockIn;
useBufferedAudioSourceReader = alwaysNonRealtime == AlwaysNonRealtime::no;
}
void %%araplaybackrenderer_class_name%%::releaseResources()
{
}
//==============================================================================
bool %%araplaybackrenderer_class_name%%::processBlock (juce::AudioBuffer<float>& buffer, juce::AudioProcessor::Realtime realtime, const juce::AudioPlayHead::CurrentPositionInfo& positionInfo) noexcept
{
const auto numSamples = buffer.getNumSamples();
jassert (numSamples <= maximumSamplesPerBlock);
jassert (numChannels == buffer.getNumChannels());
jassert (realtime == juce::AudioProcessor::Realtime::no || useBufferedAudioSourceReader);
const auto timeInSamples = positionInfo.timeInSamples;
const auto isPlaying = positionInfo.isPlaying;
bool success = true;
bool didRenderAnyRegion = false;
if (isPlaying)
{
const auto blockRange = juce::Range<juce::int64>::withStartAndLength (timeInSamples, numSamples);
for (const auto& playbackRegion : getPlaybackRegions())
{
// Evaluate region borders in song time, calculate sample range to render in song time.
// Note that this example does not use head- or tailtime, so the includeHeadAndTail
// parameter is set to false here - this might need to be adjusted in actual plug-ins.
const auto playbackSampleRange = playbackRegion->getSampleRange (sampleRate,
juce::ARAPlaybackRegion::IncludeHeadAndTail::no);
auto renderRange = blockRange.getIntersectionWith (playbackSampleRange);
if (renderRange.isEmpty())
continue;
// Evaluate region borders in modification/source time and calculate offset between
// song and source samples, then clip song samples accordingly
// (if an actual plug-in supports time stretching, this must be taken into account here).
juce::Range<juce::int64> modificationSampleRange { playbackRegion->getStartInAudioModificationSamples(),
playbackRegion->getEndInAudioModificationSamples() };
const auto modificationSampleOffset = modificationSampleRange.getStart() - playbackSampleRange.getStart();
renderRange = renderRange.getIntersectionWith (modificationSampleRange.movedToStartAt (playbackSampleRange.getStart()));
if (renderRange.isEmpty())
continue;
// Now calculate the samples in renderRange for this PlaybackRegion based on the ARA model
// graph. If didRenderAnyRegion is true, add the region's output samples in renderRange to
// the buffer. Otherwise the buffer needs to be initialised so the sample value must be
// overwritten.
const int numSamplesToRead = (int) renderRange.getLength();
const int startInBuffer = (int) (renderRange.getStart() - blockRange.getStart());
const auto startInSource = renderRange.getStart() + modificationSampleOffset;
for (int c = 0; c < numChannels; ++c)
{
auto* channelData = buffer.getWritePointer (c);
for (int i = 0; i < numSamplesToRead; ++i)
{
// Calculate region output sample at index startInSource + i ...
float sample = 0.0f;
if (didRenderAnyRegion)
channelData[startInBuffer + i] += sample;
else
channelData[startInBuffer + i] = sample;
}
}
// If rendering first region, clear any excess at start or end of the region.
if (! didRenderAnyRegion)
{
if (startInBuffer != 0)
buffer.clear (0, startInBuffer);
const int endInBuffer = startInBuffer + numSamples;
const int remainingSamples = numSamples - endInBuffer;
if (remainingSamples != 0)
buffer.clear (endInBuffer, remainingSamples);
didRenderAnyRegion = true;
}
}
}
if (! didRenderAnyRegion)
buffer.clear();
return success;
}

+ 45
- 0
extras/Projucer/Source/BinaryData/Templates/jucer_AudioPluginARAPlaybackRendererTemplate.h View File

@@ -0,0 +1,45 @@
/*
==============================================================================
This file was auto-generated!
It contains the basic framework code for an ARA playback renderer implementation.
==============================================================================
*/
#pragma once
#include <juce_audio_processors/juce_audio_processors.h>
//==============================================================================
/**
*/
class %%araplaybackrenderer_class_name%% : public juce::ARAPlaybackRenderer
{
public:
//==============================================================================
using juce::ARAPlaybackRenderer::ARAPlaybackRenderer;
//==============================================================================
void prepareToPlay (double sampleRate,
int maximumSamplesPerBlock,
int numChannels,
juce::AudioProcessor::ProcessingPrecision,
AlwaysNonRealtime alwaysNonRealtime) override;
void releaseResources() override;
//==============================================================================
bool processBlock (juce::AudioBuffer<float> & buffer,
juce::AudioProcessor::Realtime realtime,
const juce::AudioPlayHead::CurrentPositionInfo& positionInfo) noexcept override;
private:
//==============================================================================
double sampleRate = 44100.0;
int maximumSamplesPerBlock = 4096;
int numChannels = 1;
bool useBufferedAudioSourceReader = true;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%araplaybackrenderer_class_name%%)
};

+ 3
- 0
extras/Projucer/Source/BinaryData/Templates/jucer_AudioPluginFilterTemplate.h View File

@@ -14,6 +14,9 @@
/** /**
*/ */
class %%filter_class_name%% : public juce::AudioProcessor class %%filter_class_name%% : public juce::AudioProcessor
#if JucePlugin_Enable_ARA
, public juce::AudioProcessorARAExtension
#endif
{ {
public: public:
//============================================================================== //==============================================================================


+ 194
- 9
extras/Projucer/Source/Project/jucer_Project.cpp View File

@@ -156,6 +156,9 @@ void Project::updateTitleDependencies()
pluginAUExportPrefixValue.setDefault (build_tools::makeValidIdentifier (projectName, false, true, false) + "AU"); pluginAUExportPrefixValue.setDefault (build_tools::makeValidIdentifier (projectName, false, true, false) + "AU");
pluginAAXIdentifierValue. setDefault (getDefaultAAXIdentifierString()); pluginAAXIdentifierValue. setDefault (getDefaultAAXIdentifierString());
pluginLV2URIValue. setDefault (getDefaultLV2URI()); pluginLV2URIValue. setDefault (getDefaultLV2URI());
pluginARAFactoryIDValue. setDefault (getDefaultARAFactoryIDString());
pluginARAArchiveIDValue. setDefault (getDefaultARADocumentArchiveID());
pluginARACompatibleArchiveIDsValue.setDefault (getDefaultARACompatibleArchiveIDs());
} }
String Project::getDocumentTitle() String Project::getDocumentTitle()
@@ -166,7 +169,10 @@ String Project::getDocumentTitle()
void Project::updateCompanyNameDependencies() void Project::updateCompanyNameDependencies()
{ {
bundleIdentifierValue.setDefault (getDefaultBundleIdentifierString()); bundleIdentifierValue.setDefault (getDefaultBundleIdentifierString());
companyWebsiteValue.setDefault (getDefaultCompanyWebsiteString());
pluginAAXIdentifierValue.setDefault (getDefaultAAXIdentifierString()); pluginAAXIdentifierValue.setDefault (getDefaultAAXIdentifierString());
pluginARAFactoryIDValue.setDefault (getDefaultARAFactoryIDString());
pluginARAArchiveIDValue.setDefault (getDefaultARADocumentArchiveID());
pluginManufacturerValue.setDefault (getDefaultPluginManufacturerString()); pluginManufacturerValue.setDefault (getDefaultPluginManufacturerString());
updateLicenseWarning(); updateLicenseWarning();
@@ -273,7 +279,7 @@ void Project::initialiseProjectValues()
companyNameValue.referTo (projectRoot, Ids::companyName, getUndoManager()); companyNameValue.referTo (projectRoot, Ids::companyName, getUndoManager());
companyCopyrightValue.referTo (projectRoot, Ids::companyCopyright, getUndoManager()); companyCopyrightValue.referTo (projectRoot, Ids::companyCopyright, getUndoManager());
companyWebsiteValue.referTo (projectRoot, Ids::companyWebsite, getUndoManager());
companyWebsiteValue.referTo (projectRoot, Ids::companyWebsite, getUndoManager(), getDefaultCompanyWebsiteString());
companyEmailValue.referTo (projectRoot, Ids::companyEmail, getUndoManager()); companyEmailValue.referTo (projectRoot, Ids::companyEmail, getUndoManager());
projectTypeValue.referTo (projectRoot, Ids::projectType, getUndoManager(), build_tools::ProjectType_GUIApp::getTypeName()); projectTypeValue.referTo (projectRoot, Ids::projectType, getUndoManager(), build_tools::ProjectType_GUIApp::getTypeName());
@@ -329,6 +335,8 @@ void Project::initialiseAudioPluginValues()
pluginCodeValue.referTo (projectRoot, Ids::pluginCode, getUndoManager(), makeValid4CC (getProjectUIDString() + getProjectUIDString())); pluginCodeValue.referTo (projectRoot, Ids::pluginCode, getUndoManager(), makeValid4CC (getProjectUIDString() + getProjectUIDString()));
pluginChannelConfigsValue.referTo (projectRoot, Ids::pluginChannelConfigs, getUndoManager()); pluginChannelConfigsValue.referTo (projectRoot, Ids::pluginChannelConfigs, getUndoManager());
pluginAAXIdentifierValue.referTo (projectRoot, Ids::aaxIdentifier, getUndoManager(), getDefaultAAXIdentifierString()); pluginAAXIdentifierValue.referTo (projectRoot, Ids::aaxIdentifier, getUndoManager(), getDefaultAAXIdentifierString());
pluginARAFactoryIDValue.referTo (projectRoot, Ids::araFactoryID, getUndoManager(), getDefaultARAFactoryIDString());
pluginARAArchiveIDValue.referTo (projectRoot, Ids::araDocumentArchiveID, getUndoManager(), getDefaultARADocumentArchiveID());
pluginAUExportPrefixValue.referTo (projectRoot, Ids::pluginAUExportPrefix, getUndoManager(), pluginAUExportPrefixValue.referTo (projectRoot, Ids::pluginAUExportPrefix, getUndoManager(),
build_tools::makeValidIdentifier (getProjectNameString(), false, true, false) + "AU"); build_tools::makeValidIdentifier (getProjectNameString(), false, true, false) + "AU");
@@ -338,6 +346,11 @@ void Project::initialiseAudioPluginValues()
pluginVST3CategoryValue.referTo (projectRoot, Ids::pluginVST3Category, getUndoManager(), getDefaultVST3Categories(), ","); pluginVST3CategoryValue.referTo (projectRoot, Ids::pluginVST3Category, getUndoManager(), getDefaultVST3Categories(), ",");
pluginAAXCategoryValue.referTo (projectRoot, Ids::pluginAAXCategory, getUndoManager(), getDefaultAAXCategories(), ","); pluginAAXCategoryValue.referTo (projectRoot, Ids::pluginAAXCategory, getUndoManager(), getDefaultAAXCategories(), ",");
pluginEnableARA.referTo (projectRoot, Ids::enableARA, getUndoManager(), shouldEnableARA(), ",");
pluginARAAnalyzableContentValue.referTo (projectRoot, Ids::pluginARAAnalyzableContent, getUndoManager(), getDefaultARAContentTypes(), ",");
pluginARATransformFlagsValue.referTo (projectRoot, Ids::pluginARATransformFlags, getUndoManager(), getDefaultARATransformationFlags(), ",");
pluginARACompatibleArchiveIDsValue.referTo (projectRoot, Ids::araCompatibleArchiveIDs, getUndoManager(), getDefaultARACompatibleArchiveIDs());
pluginVSTNumMidiInputsValue.referTo (projectRoot, Ids::pluginVSTNumMidiInputs, getUndoManager(), 16); pluginVSTNumMidiInputsValue.referTo (projectRoot, Ids::pluginVSTNumMidiInputs, getUndoManager(), 16);
pluginVSTNumMidiOutputsValue.referTo (projectRoot, Ids::pluginVSTNumMidiOutputs, getUndoManager(), 16); pluginVSTNumMidiOutputsValue.referTo (projectRoot, Ids::pluginVSTNumMidiOutputs, getUndoManager(), 16);
@@ -504,6 +517,24 @@ void Project::updatePluginCategories()
pluginVSTCategoryValue.resetToDefault(); pluginVSTCategoryValue.resetToDefault();
} }
{
const auto araAnalyzableContent = projectRoot.getProperty (Ids::pluginARAAnalyzableContent, {}).toString();
if (getAllARAContentTypeVars().contains (araAnalyzableContent))
pluginARAAnalyzableContentValue = araAnalyzableContent;
else if (getAllARAContentTypeStrings().contains (araAnalyzableContent))
pluginARAAnalyzableContentValue = Array<var> (getAllARAContentTypeVars()[getAllARAContentTypeStrings().indexOf (araAnalyzableContent)]);
}
{
const auto araTransformationFlags = projectRoot.getProperty (Ids::pluginARATransformFlags, {}).toString();
if (getAllARATransformationFlagVars().contains (araTransformationFlags))
pluginARATransformFlagsValue = araTransformationFlags;
else if (getAllARATransformationFlagStrings().contains (araTransformationFlags))
pluginARATransformFlagsValue = Array<var> (getAllARATransformationFlagVars()[getAllARATransformationFlagStrings().indexOf (araTransformationFlags)]);
}
{ {
auto auMainType = projectRoot.getProperty (Ids::pluginAUMainType, {}).toString(); auto auMainType = projectRoot.getProperty (Ids::pluginAUMainType, {}).toString();
@@ -1081,6 +1112,9 @@ void Project::valueTreePropertyChanged (ValueTree& tree, const Identifier& prope
pluginVSTCategoryValue.setDefault (getDefaultVSTCategories()); pluginVSTCategoryValue.setDefault (getDefaultVSTCategories());
pluginVST3CategoryValue.setDefault (getDefaultVST3Categories()); pluginVST3CategoryValue.setDefault (getDefaultVST3Categories());
pluginAAXCategoryValue.setDefault (getDefaultAAXCategories()); pluginAAXCategoryValue.setDefault (getDefaultAAXCategories());
pluginEnableARA.setDefault (getDefaultEnableARA());
pluginARAAnalyzableContentValue.setDefault (getDefaultARAContentTypes());
pluginARATransformFlagsValue.setDefault (getDefaultARATransformationFlags());
if (shouldWriteLegacyPluginCharacteristicsSettings) if (shouldWriteLegacyPluginCharacteristicsSettings)
writeLegacyPluginCharacteristicsSettings(); writeLegacyPluginCharacteristicsSettings();
@@ -1427,14 +1461,23 @@ void Project::createPropertyEditors (PropertyListBuilder& props)
void Project::createAudioPluginPropertyEditors (PropertyListBuilder& props) void Project::createAudioPluginPropertyEditors (PropertyListBuilder& props)
{ {
props.add (new MultiChoicePropertyComponent (pluginFormatsValue, "Plugin Formats",
{ "VST3", "AU", "AUv3", "AAX", "Standalone", "LV2", "Unity", "Enable IAA", "VST (Legacy)" },
{ Ids::buildVST3.toString(), Ids::buildAU.toString(), Ids::buildAUv3.toString(),
Ids::buildAAX.toString(), Ids::buildStandalone.toString(),
Ids::buildLV2.toString(), Ids::buildUnity.toString(), Ids::enableIAA.toString(), Ids::buildVST.toString() }),
"Plugin formats to build. If you have selected \"VST (Legacy)\" then you will need to ensure that you have a VST2 SDK "
"in your header search paths. The VST2 SDK can be obtained from the vstsdk3610_11_06_2018_build_37 (or older) VST3 SDK "
"or JUCE version 5.3.2. You also need a VST2 license from Steinberg to distribute VST2 plug-ins.");
{
StringArray pluginFormatChoices { "VST3", "AU", "AUv3", "AAX", "Standalone", "LV2", "Unity", "Enable IAA", "VST (Legacy)" };
Array<var> pluginFormatChoiceValues { Ids::buildVST3.toString(), Ids::buildAU.toString(), Ids::buildAUv3.toString(),
Ids::buildAAX.toString(), Ids::buildStandalone.toString(),
Ids::buildLV2.toString(), Ids::buildUnity.toString(), Ids::enableIAA.toString(), Ids::buildVST.toString() };
if (! getProjectType().isARAAudioPlugin())
{
pluginFormatChoices.add ("Enable ARA");
pluginFormatChoiceValues.add (Ids::enableARA.toString());
}
props.add (new MultiChoicePropertyComponent (pluginFormatsValue, "Plugin Formats", pluginFormatChoices, pluginFormatChoiceValues),
"Plugin formats to build. If you have selected \"VST (Legacy)\" then you will need to ensure that you have a VST2 SDK "
"in your header search paths. The VST2 SDK can be obtained from the vstsdk3610_11_06_2018_build_37 (or older) VST3 SDK "
"or JUCE version 5.3.2. You also need a VST2 license from Steinberg to distribute VST2 plug-ins. If you enable ARA you "
"will have to obtain the ARA SDK by recursively cloning https://github.com/Celemony/ARA_SDK and checking out the tag "
"releases/2.1.0.");
}
props.add (new MultiChoicePropertyComponent (pluginCharacteristicsValue, "Plugin Characteristics", props.add (new MultiChoicePropertyComponent (pluginCharacteristicsValue, "Plugin Characteristics",
{ "Plugin is a Synth", "Plugin MIDI Input", "Plugin MIDI Output", "MIDI Effect Plugin", "Plugin Editor Requires Keyboard Focus", { "Plugin is a Synth", "Plugin MIDI Input", "Plugin MIDI Output", "MIDI Effect Plugin", "Plugin Editor Requires Keyboard Focus",
"Disable AAX Bypass", "Disable AAX Multi-Mono" }, "Disable AAX Bypass", "Disable AAX Multi-Mono" },
@@ -1515,6 +1558,25 @@ void Project::createAudioPluginPropertyEditors (PropertyListBuilder& props)
"This acts as a unique identifier for this plugin. " "This acts as a unique identifier for this plugin. "
"If you make any incompatible changes to your plugin (remove parameters, reorder parameters, change preset format etc.) " "If you make any incompatible changes to your plugin (remove parameters, reorder parameters, change preset format etc.) "
"you MUST change this value. LV2 hosts will assume that any plugins with the same URI are interchangeable."); "you MUST change this value. LV2 hosts will assume that any plugins with the same URI are interchangeable.");
if (shouldEnableARA())
{
props.add (new MultiChoicePropertyComponent (pluginARAAnalyzableContentValue, "Plugin ARA Analyzeable Content Types", getAllARAContentTypeStrings(), getAllARAContentTypeVars()),
"ARA Analyzeable Content Types.");
props.add (new MultiChoicePropertyComponent (pluginARATransformFlagsValue, "Plugin ARA Transformation Flags", getAllARATransformationFlagStrings(), getAllARATransformationFlagVars()),
"ARA Transformation Flags.");
props.add (new TextPropertyComponent (pluginARAFactoryIDValue, "Plugin ARA Factory ID", 256, false),
"ARA Factory ID.");
props.add (new TextPropertyComponent (pluginARAArchiveIDValue, "Plugin ARA Document Archive ID", 256, false),
"ARA Document Archive ID.");
props.add (new TextPropertyComponent (pluginARACompatibleArchiveIDsValue, "Plugin ARA Compatible Document Archive IDs", 1024, true),
"List of compatible ARA Document Archive IDs - one per line");
}
} }
//============================================================================== //==============================================================================
@@ -2110,11 +2172,31 @@ String Project::getDefaultBundleIdentifierString() const
+ "." + build_tools::makeValidIdentifier (getProjectNameString(), false, true, false); + "." + build_tools::makeValidIdentifier (getProjectNameString(), false, true, false);
} }
String Project::getDefaultCompanyWebsiteString() const
{
return "www." + build_tools::makeValidIdentifier (getCompanyNameOrDefault (getCompanyNameString()), false, true, false) + ".com";
}
String Project::getDefaultPluginManufacturerString() const String Project::getDefaultPluginManufacturerString() const
{ {
return getCompanyNameOrDefault (getCompanyNameString()); return getCompanyNameOrDefault (getCompanyNameString());
} }
String Project::getDefaultARAFactoryIDString() const
{
return getDefaultBundleIdentifierString() + ".factory";
}
String Project::getDefaultARADocumentArchiveID() const
{
return getDefaultBundleIdentifierString() + ".aradocumentarchive." + getVersionString();
}
String Project::getDefaultARACompatibleArchiveIDs() const
{
return String();
}
String Project::getAUMainTypeString() const noexcept String Project::getAUMainTypeString() const noexcept
{ {
auto v = pluginAUMainTypeValue.get(); auto v = pluginAUMainTypeValue.get();
@@ -2222,6 +2304,32 @@ String Project::getIAAPluginName() const
return s; return s;
} }
int Project::getARAContentTypes() const noexcept
{
int res = 0;
if (auto* arr = pluginARAAnalyzableContentValue.get().getArray())
{
for (auto c : *arr)
res |= (int) c;
}
return res;
}
int Project::getARATransformationFlags() const noexcept
{
int res = 0;
if (auto* arr = pluginARATransformFlagsValue.get().getArray())
{
for (auto c : *arr)
res |= (int) c;
}
return res;
}
//============================================================================== //==============================================================================
bool Project::isAUPluginHost() bool Project::isAUPluginHost()
{ {
@@ -2243,6 +2351,16 @@ bool Project::isLV2PluginHost()
return getEnabledModules().isModuleEnabled ("juce_audio_processors") && isConfigFlagEnabled ("JUCE_PLUGINHOST_LV2", false); return getEnabledModules().isModuleEnabled ("juce_audio_processors") && isConfigFlagEnabled ("JUCE_PLUGINHOST_LV2", false);
} }
bool Project::isARAPluginHost()
{
return (isVST3PluginHost() || isAUPluginHost()) && isConfigFlagEnabled ("JUCE_PLUGINHOST_ARA", false);
}
void Project::disableStandaloneForARAPlugIn()
{
pluginFormatsValue.referTo (projectRoot, Ids::pluginFormats, getUndoManager(), Array<var> (Ids::buildVST3.toString(), Ids::buildAU.toString()), ",");
}
//============================================================================== //==============================================================================
StringArray Project::getAllAUMainTypeStrings() noexcept StringArray Project::getAllAUMainTypeStrings() noexcept
{ {
@@ -2332,6 +2450,67 @@ Array<var> Project::getDefaultAAXCategories() const noexcept
return getAllAAXCategoryVars()[getAllAAXCategoryStrings().indexOf ("AAX_ePlugInCategory_None")]; return getAllAAXCategoryVars()[getAllAAXCategoryStrings().indexOf ("AAX_ePlugInCategory_None")];
} }
bool Project::getDefaultEnableARA() const noexcept
{
return false;
}
StringArray Project::getAllARAContentTypeStrings() noexcept
{
static StringArray araContentTypes { "Notes",
"Tempo Entries",
"Bar Signatures",
"Static Tuning",
"Dynamic Tuning Offsets",
"Key Signatures",
"Sheet Chords" };
return araContentTypes;
}
Array<var> Project::getAllARAContentTypeVars() noexcept
{
static Array<var> araContentVars {
/*kARAContentTypeNotes =*/ 1 << 0,
/*kARAContentTypeTempoEntries =*/ 1 << 1,
/*kARAContentTypeBarSignatures =*/ 1 << 2,
/*kARAContentTypeStaticTuning =*/ 1 << 3,
/*kARAContentTypeDynamicTuningOffsets =*/ 1 << 4,
/*kARAContentTypeKeySignatures =*/ 1 << 5,
/*kARAContentTypeSheetChords =*/ 1 << 6,
};
return araContentVars;
}
Array<var> Project::getDefaultARAContentTypes() const noexcept
{
return {};
}
StringArray Project::getAllARATransformationFlagStrings() noexcept
{
static StringArray araTransformationFlags { "Time Stretch",
"Time Stretch (reflecting tempo)",
"Content Based Fades At Tail",
"Content Based Fades At Head" };
return araTransformationFlags;
}
Array<var> Project::getAllARATransformationFlagVars() noexcept
{
static Array<var> araContentVars {
/*kARAPlaybackTransformationTimestretch =*/ 1 << 0,
/*kARAPlaybackTransformationTimestretchReflectingTempo =*/ 1 << 1,
/*kARAPlaybackTransformationContentBasedFadesAtTail =*/ 1 << 2,
/*kARAPlaybackTransformationContentBasedFadesAtHead =*/ 1 << 3
};
return araContentVars;
}
Array<var> Project::getDefaultARATransformationFlags() const noexcept
{
return {};
}
//============================================================================== //==============================================================================
EnabledModulesList& Project::getEnabledModules() EnabledModulesList& Project::getEnabledModules()
{ {
@@ -2587,6 +2766,7 @@ StringPairArray Project::getAudioPluginFlags() const
flags.set ("JucePlugin_Build_Unity", boolToString (shouldBuildUnityPlugin())); flags.set ("JucePlugin_Build_Unity", boolToString (shouldBuildUnityPlugin()));
flags.set ("JucePlugin_Build_LV2", boolToString (shouldBuildLV2())); flags.set ("JucePlugin_Build_LV2", boolToString (shouldBuildLV2()));
flags.set ("JucePlugin_Enable_IAA", boolToString (shouldEnableIAA())); flags.set ("JucePlugin_Enable_IAA", boolToString (shouldEnableIAA()));
flags.set ("JucePlugin_Enable_ARA", boolToString (shouldEnableARA()));
flags.set ("JucePlugin_Name", toStringLiteral (getPluginNameString())); flags.set ("JucePlugin_Name", toStringLiteral (getPluginNameString()));
flags.set ("JucePlugin_Desc", toStringLiteral (getPluginDescriptionString())); flags.set ("JucePlugin_Desc", toStringLiteral (getPluginDescriptionString()));
flags.set ("JucePlugin_Manufacturer", toStringLiteral (getPluginManufacturerString())); flags.set ("JucePlugin_Manufacturer", toStringLiteral (getPluginManufacturerString()));
@@ -2622,6 +2802,11 @@ StringPairArray Project::getAudioPluginFlags() const
flags.set ("JucePlugin_IAAName", toStringLiteral (getIAAPluginName())); flags.set ("JucePlugin_IAAName", toStringLiteral (getIAAPluginName()));
flags.set ("JucePlugin_VSTNumMidiInputs", getVSTNumMIDIInputsString()); flags.set ("JucePlugin_VSTNumMidiInputs", getVSTNumMIDIInputsString());
flags.set ("JucePlugin_VSTNumMidiOutputs", getVSTNumMIDIOutputsString()); flags.set ("JucePlugin_VSTNumMidiOutputs", getVSTNumMIDIOutputsString());
flags.set ("JucePlugin_ARAContentTypes", String (getARAContentTypes()));
flags.set ("JucePlugin_ARATransformationFlags", String (getARATransformationFlags()));
flags.set ("JucePlugin_ARAFactoryID", toStringLiteral(getARAFactoryIDString()));
flags.set ("JucePlugin_ARADocumentArchiveID", toStringLiteral(getARADocumentArchiveIDString()));
flags.set ("JucePlugin_ARACompatibleArchiveIDs", toStringLiteral(getARACompatibleArchiveIDStrings()));
{ {
String plugInChannelConfig = getPluginChannelConfigsString(); String plugInChannelConfig = getPluginChannelConfigsString();


+ 24
- 0
extras/Projucer/Source/Project/jucer_Project.h View File

@@ -192,9 +192,13 @@ public:
String getBundleIdentifierString() const { return bundleIdentifierValue.get(); } String getBundleIdentifierString() const { return bundleIdentifierValue.get(); }
String getDefaultBundleIdentifierString() const; String getDefaultBundleIdentifierString() const;
String getDefaultCompanyWebsiteString() const;
String getDefaultAAXIdentifierString() const { return getDefaultBundleIdentifierString(); } String getDefaultAAXIdentifierString() const { return getDefaultBundleIdentifierString(); }
String getDefaultPluginManufacturerString() const; String getDefaultPluginManufacturerString() const;
String getDefaultLV2URI() const { return getCompanyWebsiteString() + "/plugins/" + build_tools::makeValidIdentifier (getProjectNameString(), false, true, false); } String getDefaultLV2URI() const { return getCompanyWebsiteString() + "/plugins/" + build_tools::makeValidIdentifier (getProjectNameString(), false, true, false); }
String getDefaultARAFactoryIDString() const;
String getDefaultARADocumentArchiveID() const;
String getDefaultARACompatibleArchiveIDs() const;
String getCompanyNameString() const { return companyNameValue.get(); } String getCompanyNameString() const { return companyNameValue.get(); }
String getCompanyCopyrightString() const { return companyCopyrightValue.get(); } String getCompanyCopyrightString() const { return companyCopyrightValue.get(); }
@@ -241,7 +245,11 @@ public:
String getPluginCodeString() const { return pluginCodeValue.get(); } String getPluginCodeString() const { return pluginCodeValue.get(); }
String getPluginChannelConfigsString() const { return pluginChannelConfigsValue.get(); } String getPluginChannelConfigsString() const { return pluginChannelConfigsValue.get(); }
String getAAXIdentifierString() const { return pluginAAXIdentifierValue.get(); } String getAAXIdentifierString() const { return pluginAAXIdentifierValue.get(); }
String getARAFactoryIDString() const { return pluginARAFactoryIDValue.get(); }
String getARADocumentArchiveIDString() const { return pluginARAArchiveIDValue.get(); }
String getARACompatibleArchiveIDStrings() const { return pluginARACompatibleArchiveIDsValue.get(); }
String getPluginAUExportPrefixString() const { return pluginAUExportPrefixValue.get(); } String getPluginAUExportPrefixString() const { return pluginAUExportPrefixValue.get(); }
String getPluginAUMainTypeString() const { return pluginAUMainTypeValue.get(); }
String getVSTNumMIDIInputsString() const { return pluginVSTNumMidiInputsValue.get(); } String getVSTNumMIDIInputsString() const { return pluginVSTNumMidiInputsValue.get(); }
String getVSTNumMIDIOutputsString() const { return pluginVSTNumMidiOutputsValue.get(); } String getVSTNumMIDIOutputsString() const { return pluginVSTNumMidiOutputsValue.get(); }
@@ -269,6 +277,7 @@ public:
bool shouldBuildUnityPlugin() const { return isAudioPluginProject() && checkMultiChoiceVar (pluginFormatsValue, Ids::buildUnity); } bool shouldBuildUnityPlugin() const { return isAudioPluginProject() && checkMultiChoiceVar (pluginFormatsValue, Ids::buildUnity); }
bool shouldBuildLV2() const { return isAudioPluginProject() && checkMultiChoiceVar (pluginFormatsValue, Ids::buildLV2); } bool shouldBuildLV2() const { return isAudioPluginProject() && checkMultiChoiceVar (pluginFormatsValue, Ids::buildLV2); }
bool shouldEnableIAA() const { return isAudioPluginProject() && checkMultiChoiceVar (pluginFormatsValue, Ids::enableIAA); } bool shouldEnableIAA() const { return isAudioPluginProject() && checkMultiChoiceVar (pluginFormatsValue, Ids::enableIAA); }
bool shouldEnableARA() const { return (isAudioPluginProject() && checkMultiChoiceVar (pluginFormatsValue, Ids::enableARA)) || getProjectType().isARAAudioPlugin(); }
bool isPluginSynth() const { return checkMultiChoiceVar (pluginCharacteristicsValue, Ids::pluginIsSynth); } bool isPluginSynth() const { return checkMultiChoiceVar (pluginCharacteristicsValue, Ids::pluginIsSynth); }
bool pluginWantsMidiInput() const { return checkMultiChoiceVar (pluginCharacteristicsValue, Ids::pluginWantsMidiIn); } bool pluginWantsMidiInput() const { return checkMultiChoiceVar (pluginCharacteristicsValue, Ids::pluginWantsMidiIn); }
@@ -278,6 +287,8 @@ public:
bool isPluginAAXBypassDisabled() const { return checkMultiChoiceVar (pluginCharacteristicsValue, Ids::pluginAAXDisableBypass); } bool isPluginAAXBypassDisabled() const { return checkMultiChoiceVar (pluginCharacteristicsValue, Ids::pluginAAXDisableBypass); }
bool isPluginAAXMultiMonoDisabled() const { return checkMultiChoiceVar (pluginCharacteristicsValue, Ids::pluginAAXDisableMultiMono); } bool isPluginAAXMultiMonoDisabled() const { return checkMultiChoiceVar (pluginCharacteristicsValue, Ids::pluginAAXDisableMultiMono); }
void disableStandaloneForARAPlugIn();
static StringArray getAllAUMainTypeStrings() noexcept; static StringArray getAllAUMainTypeStrings() noexcept;
static Array<var> getAllAUMainTypeVars() noexcept; static Array<var> getAllAUMainTypeVars() noexcept;
Array<var> getDefaultAUMainTypes() const noexcept; Array<var> getDefaultAUMainTypes() const noexcept;
@@ -292,11 +303,22 @@ public:
static Array<var> getAllAAXCategoryVars() noexcept; static Array<var> getAllAAXCategoryVars() noexcept;
Array<var> getDefaultAAXCategories() const noexcept; Array<var> getDefaultAAXCategories() const noexcept;
bool getDefaultEnableARA() const noexcept;
static StringArray getAllARAContentTypeStrings() noexcept;
static Array<var> getAllARAContentTypeVars() noexcept;
Array<var> getDefaultARAContentTypes() const noexcept;
static StringArray getAllARATransformationFlagStrings() noexcept;
static Array<var> getAllARATransformationFlagVars() noexcept;
Array<var> getDefaultARATransformationFlags() const noexcept;
String getAUMainTypeString() const noexcept; String getAUMainTypeString() const noexcept;
bool isAUSandBoxSafe() const noexcept; bool isAUSandBoxSafe() const noexcept;
String getVSTCategoryString() const noexcept; String getVSTCategoryString() const noexcept;
String getVST3CategoryString() const noexcept; String getVST3CategoryString() const noexcept;
int getAAXCategory() const noexcept; int getAAXCategory() const noexcept;
int getARAContentTypes() const noexcept;
int getARATransformationFlags() const noexcept;
String getIAATypeCode() const; String getIAATypeCode() const;
String getIAAPluginName() const; String getIAAPluginName() const;
@@ -317,6 +339,7 @@ public:
bool isVSTPluginHost(); bool isVSTPluginHost();
bool isVST3PluginHost(); bool isVST3PluginHost();
bool isLV2PluginHost(); bool isLV2PluginHost();
bool isARAPluginHost();
//============================================================================== //==============================================================================
bool shouldBuildTargetType (build_tools::ProjectType::Target::Type targetType) const noexcept; bool shouldBuildTargetType (build_tools::ProjectType::Target::Type targetType) const noexcept;
@@ -548,6 +571,7 @@ private:
ValueTreePropertyWithDefault pluginFormatsValue, pluginNameValue, pluginDescriptionValue, pluginManufacturerValue, pluginManufacturerCodeValue, ValueTreePropertyWithDefault pluginFormatsValue, pluginNameValue, pluginDescriptionValue, pluginManufacturerValue, pluginManufacturerCodeValue,
pluginCodeValue, pluginChannelConfigsValue, pluginCharacteristicsValue, pluginAUExportPrefixValue, pluginAAXIdentifierValue, pluginCodeValue, pluginChannelConfigsValue, pluginCharacteristicsValue, pluginAUExportPrefixValue, pluginAAXIdentifierValue,
pluginAUMainTypeValue, pluginAUSandboxSafeValue, pluginVSTCategoryValue, pluginVST3CategoryValue, pluginAAXCategoryValue, pluginAUMainTypeValue, pluginAUSandboxSafeValue, pluginVSTCategoryValue, pluginVST3CategoryValue, pluginAAXCategoryValue,
pluginEnableARA, pluginARAAnalyzableContentValue, pluginARAFactoryIDValue, pluginARAArchiveIDValue, pluginARACompatibleArchiveIDsValue, pluginARATransformFlagsValue,
pluginVSTNumMidiInputsValue, pluginVSTNumMidiOutputsValue, pluginLV2URIValue; pluginVSTNumMidiInputsValue, pluginVSTNumMidiOutputsValue, pluginLV2URIValue;
//============================================================================== //==============================================================================


+ 3
- 0
extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h View File

@@ -131,6 +131,9 @@ public:
aaxPathValueWrapper.init ({ settings, Ids::aaxFolder, nullptr }, aaxPathValueWrapper.init ({ settings, Ids::aaxFolder, nullptr },
getAppSettings().getStoredPath (Ids::aaxPath, TargetOS::windows), TargetOS::windows); getAppSettings().getStoredPath (Ids::aaxPath, TargetOS::windows), TargetOS::windows);
araPathValueWrapper.init ({ settings, Ids::araFolder, nullptr },
getAppSettings().getStoredPath (Ids::araPath, TargetOS::windows), TargetOS::windows);
} }
//============================================================================== //==============================================================================


+ 4
- 0
extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h View File

@@ -773,6 +773,9 @@ public:
aaxPathValueWrapper.init ({ settings, Ids::aaxFolder, nullptr }, aaxPathValueWrapper.init ({ settings, Ids::aaxFolder, nullptr },
getAppSettings().getStoredPath (Ids::aaxPath, TargetOS::osx), TargetOS::osx); getAppSettings().getStoredPath (Ids::aaxPath, TargetOS::osx), TargetOS::osx);
araPathValueWrapper.init ({ settings, Ids::araFolder, nullptr },
getAppSettings().getStoredPath (Ids::araPath, TargetOS::osx), TargetOS::osx);
} }
protected: protected:
@@ -1897,6 +1900,7 @@ public:
options.isAuSandboxSafe = owner.project.isAUSandBoxSafe(); options.isAuSandboxSafe = owner.project.isAUSandBoxSafe();
options.isPluginSynth = owner.project.isPluginSynth(); options.isPluginSynth = owner.project.isPluginSynth();
options.suppressResourceUsage = owner.getSuppressPlistResourceUsage(); options.suppressResourceUsage = owner.getSuppressPlistResourceUsage();
options.isPluginARAEffect = owner.project.shouldEnableARA();
options.write (infoPlistFile); options.write (infoPlistFile);
} }


+ 27
- 0
extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp View File

@@ -273,6 +273,13 @@ void ProjectExporter::createPropertyEditors (PropertyListBuilder& props)
"If you're building an AAX plug-in, this must be the folder containing the AAX SDK. This can be an absolute path, or a path relative to the Projucer project file."); "If you're building an AAX plug-in, this must be the folder containing the AAX SDK. This can be an absolute path, or a path relative to the Projucer project file.");
} }
if (project.shouldEnableARA() || project.isARAPluginHost())
{
props.add (new FilePathPropertyComponent (araPathValueWrapper.getWrappedValueTreePropertyWithDefault(), "ARA SDK Folder", true,
getTargetOSForExporter() == TargetOS::getThisOS(), "*", project.getProjectFolder()),
"If you're building an ARA enabled plug-in, this must be the folder containing the ARA SDK. This can be an absolute path, or a path relative to the Projucer project file.");
}
props.add (new TextPropertyComponent (extraPPDefsValue, "Extra Preprocessor Definitions", 32768, true), props.add (new TextPropertyComponent (extraPPDefsValue, "Extra Preprocessor Definitions", 32768, true),
"Extra preprocessor definitions. Use the form \"NAME1=value NAME2=value\", using whitespace, commas, " "Extra preprocessor definitions. Use the form \"NAME1=value NAME2=value\", using whitespace, commas, "
"or new-lines to separate the items - to include a space or comma in a definition, precede it with a backslash."); "or new-lines to separate the items - to include a space or comma in a definition, precede it with a backslash.");
@@ -335,6 +342,8 @@ void ProjectExporter::addSettingsForProjectType (const build_tools::ProjectType&
{ {
addExtraIncludePathsIfPluginOrHost(); addExtraIncludePathsIfPluginOrHost();
addARAPathsIfPluginOrHost();
if (type.isAudioPlugin()) if (type.isAudioPlugin())
addCommonAudioPluginSettings(); addCommonAudioPluginSettings();
@@ -385,6 +394,12 @@ void ProjectExporter::addExtraIncludePathsIfPluginOrHost()
} }
} }
void ProjectExporter::addARAPathsIfPluginOrHost()
{
if (project.shouldEnableARA() || project.isARAPluginHost())
addARAFoldersToPath();
}
void ProjectExporter::addCommonAudioPluginSettings() void ProjectExporter::addCommonAudioPluginSettings()
{ {
if (shouldBuildTargetType (build_tools::ProjectType::Target::AAXPlugIn)) if (shouldBuildTargetType (build_tools::ProjectType::Target::AAXPlugIn))
@@ -420,6 +435,14 @@ void ProjectExporter::addAAXFoldersToPath()
} }
} }
void ProjectExporter::addARAFoldersToPath()
{
const auto araFolder = getARAPathString();
if (araFolder.isNotEmpty())
addToExtraSearchPaths (build_tools::RelativePath (araFolder, build_tools::RelativePath::projectFolder));
}
//============================================================================== //==============================================================================
StringPairArray ProjectExporter::getAllPreprocessorDefs (const BuildConfiguration& config, const build_tools::ProjectType::Target::Type targetType) const StringPairArray ProjectExporter::getAllPreprocessorDefs (const BuildConfiguration& config, const build_tools::ProjectType::Target::Type targetType) const
{ {
@@ -468,6 +491,10 @@ void ProjectExporter::addTargetSpecificPreprocessorDefs (StringPairArray& defs,
for (auto& flag : targetFlags) for (auto& flag : targetFlags)
defs.set (flag.first, (targetType == flag.second ? "1" : "0")); defs.set (flag.first, (targetType == flag.second ? "1" : "0"));
} }
if (project.shouldEnableARA())
{
defs.set ("JucePlugin_Enable_ARA", "1");
}
} }
void ProjectExporter::addDefaultPreprocessorDefs (StringPairArray& defs) const void ProjectExporter::addDefaultPreprocessorDefs (StringPairArray& defs) const


+ 4
- 1
extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.h View File

@@ -144,6 +144,7 @@ public:
String getVSTLegacyPathString() const { return vstLegacyPathValueWrapper.getCurrentValue(); } String getVSTLegacyPathString() const { return vstLegacyPathValueWrapper.getCurrentValue(); }
String getAAXPathString() const { return aaxPathValueWrapper.getCurrentValue(); } String getAAXPathString() const { return aaxPathValueWrapper.getCurrentValue(); }
String getARAPathString() const { return araPathValueWrapper.getCurrentValue(); }
// NB: this is the path to the parent "modules" folder that contains the named module, not the // NB: this is the path to the parent "modules" folder that contains the named module, not the
// module folder itself. // module folder itself.
@@ -405,7 +406,7 @@ protected:
const File projectFolder; const File projectFolder;
//============================================================================== //==============================================================================
ValueTreePropertyWithDefaultWrapper vstLegacyPathValueWrapper, aaxPathValueWrapper;
ValueTreePropertyWithDefaultWrapper vstLegacyPathValueWrapper, aaxPathValueWrapper, araPathValueWrapper;
ValueTreePropertyWithDefault targetLocationValue, extraCompilerFlagsValue, extraLinkerFlagsValue, externalLibrariesValue, ValueTreePropertyWithDefault targetLocationValue, extraCompilerFlagsValue, extraLinkerFlagsValue, externalLibrariesValue,
userNotesValue, gnuExtensionsValue, bigIconValue, smallIconValue, extraPPDefsValue; userNotesValue, gnuExtensionsValue, bigIconValue, smallIconValue, extraPPDefsValue;
@@ -467,10 +468,12 @@ private:
void createIconProperties (PropertyListBuilder&); void createIconProperties (PropertyListBuilder&);
void addExtraIncludePathsIfPluginOrHost(); void addExtraIncludePathsIfPluginOrHost();
void addARAPathsIfPluginOrHost();
void addCommonAudioPluginSettings(); void addCommonAudioPluginSettings();
void addLegacyVSTFolderToPathIfSpecified(); void addLegacyVSTFolderToPathIfSpecified();
build_tools::RelativePath getInternalVST3SDKPath(); build_tools::RelativePath getInternalVST3SDKPath();
void addAAXFoldersToPath(); void addAAXFoldersToPath();
void addARAFoldersToPath();
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ProjectExporter) JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ProjectExporter)
}; };

+ 10
- 0
extras/Projucer/Source/Settings/jucer_StoredSettings.cpp View File

@@ -276,6 +276,10 @@ static bool isGlobalPathValid (const File& relativeTo, const Identifier& key, co
{ {
fileToCheckFor = "Interfaces/AAX_Exports.cpp"; fileToCheckFor = "Interfaces/AAX_Exports.cpp";
} }
else if (key == Ids::araPath)
{
fileToCheckFor = "ARA_API/ARAInterface.h";
}
else if (key == Ids::androidSDKPath) else if (key == Ids::androidSDKPath)
{ {
#if JUCE_WINDOWS #if JUCE_WINDOWS
@@ -367,6 +371,12 @@ static String getFallbackPathForOS (const Identifier& key, DependencyPathOS os)
else if (os == TargetOS::osx) return "~/SDKs/AAX"; else if (os == TargetOS::osx) return "~/SDKs/AAX";
else return {}; // no AAX on this OS! else return {}; // no AAX on this OS!
} }
else if (key == Ids::araPath)
{
if (os == TargetOS::windows) return "C:\\SDKs\\ARA_SDK";
else if (os == TargetOS::osx) return "~/SDKs/ARA_SDK";
else return {};
}
else if (key == Ids::androidSDKPath) else if (key == Ids::androidSDKPath)
{ {
if (os == TargetOS::windows) return "${user.home}\\AppData\\Local\\Android\\Sdk"; if (os == TargetOS::windows) return "${user.home}\\AppData\\Local\\Android\\Sdk";


+ 8
- 0
extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h View File

@@ -68,6 +68,7 @@ namespace Ids
DECLARE_ID (auFolder); DECLARE_ID (auFolder);
DECLARE_ID (vstLegacyPath); DECLARE_ID (vstLegacyPath);
DECLARE_ID (aaxPath); DECLARE_ID (aaxPath);
DECLARE_ID (araPath);
DECLARE_ID (flags); DECLARE_ID (flags);
DECLARE_ID (line); DECLARE_ID (line);
DECLARE_ID (index); DECLARE_ID (index);
@@ -154,7 +155,11 @@ namespace Ids
DECLARE_ID (enableIncrementalLinking); DECLARE_ID (enableIncrementalLinking);
DECLARE_ID (bundleIdentifier); DECLARE_ID (bundleIdentifier);
DECLARE_ID (aaxIdentifier); DECLARE_ID (aaxIdentifier);
DECLARE_ID (araFactoryID);
DECLARE_ID (araDocumentArchiveID);
DECLARE_ID (araCompatibleArchiveIDs);
DECLARE_ID (aaxFolder); DECLARE_ID (aaxFolder);
DECLARE_ID (araFolder);
DECLARE_ID (compile); DECLARE_ID (compile);
DECLARE_ID (noWarnings); DECLARE_ID (noWarnings);
DECLARE_ID (skipPCH); DECLARE_ID (skipPCH);
@@ -330,6 +335,7 @@ namespace Ids
DECLARE_ID (buildUnity); DECLARE_ID (buildUnity);
DECLARE_ID (buildLV2); DECLARE_ID (buildLV2);
DECLARE_ID (enableIAA); DECLARE_ID (enableIAA);
DECLARE_ID (enableARA);
DECLARE_ID (pluginName); DECLARE_ID (pluginName);
DECLARE_ID (pluginDesc); DECLARE_ID (pluginDesc);
DECLARE_ID (pluginManufacturer); DECLARE_ID (pluginManufacturer);
@@ -352,6 +358,8 @@ namespace Ids
DECLARE_ID (pluginAAXCategory); DECLARE_ID (pluginAAXCategory);
DECLARE_ID (pluginAAXDisableBypass); DECLARE_ID (pluginAAXDisableBypass);
DECLARE_ID (pluginAAXDisableMultiMono); DECLARE_ID (pluginAAXDisableMultiMono);
DECLARE_ID (pluginARAAnalyzableContent);
DECLARE_ID (pluginARATransformFlags);
DECLARE_ID (pluginVSTNumMidiInputs); DECLARE_ID (pluginVSTNumMidiInputs);
DECLARE_ID (pluginVSTNumMidiOutputs); DECLARE_ID (pluginVSTNumMidiOutputs);
DECLARE_ID (suppressPlistResourceUsage); DECLARE_ID (suppressPlistResourceUsage);


Loading…
Cancel
Save