From 1a80d642610970bf25d9eb92fd31a62df6484281 Mon Sep 17 00:00:00 2001 From: reuk Date: Fri, 15 Aug 2025 15:16:33 +0100 Subject: [PATCH] Create new empty juce_audio_processors_headless module --- extras/Build/CMake/JUCEConfig.cmake.in | 1 + extras/Build/CMake/JUCEModuleSupport.cmake | 2 +- .../ProjectSaving/jucer_ProjectExport_MSVC.h | 1 + modules/CMakeLists.txt | 1 + .../juce_audio_processors.h | 7 +- .../juce_audio_processors_headless.cpp | 44 ++++++++++++ .../juce_audio_processors_headless.h | 67 +++++++++++++++++++ .../juce_audio_processors_headless.mm | 35 ++++++++++ 8 files changed, 152 insertions(+), 6 deletions(-) create mode 100644 modules/juce_audio_processors_headless/juce_audio_processors_headless.cpp create mode 100644 modules/juce_audio_processors_headless/juce_audio_processors_headless.h create mode 100644 modules/juce_audio_processors_headless/juce_audio_processors_headless.mm diff --git a/extras/Build/CMake/JUCEConfig.cmake.in b/extras/Build/CMake/JUCEConfig.cmake.in index 14ae181644..0f1732188f 100644 --- a/extras/Build/CMake/JUCEConfig.cmake.in +++ b/extras/Build/CMake/JUCEConfig.cmake.in @@ -44,6 +44,7 @@ set(_juce_modules juce_audio_formats juce_audio_plugin_client juce_audio_processors + juce_audio_processors_headless juce_audio_utils juce_box2d juce_core diff --git a/extras/Build/CMake/JUCEModuleSupport.cmake b/extras/Build/CMake/JUCEModuleSupport.cmake index 03378a2090..fd9058a755 100644 --- a/extras/Build/CMake/JUCEModuleSupport.cmake +++ b/extras/Build/CMake/JUCEModuleSupport.cmake @@ -647,7 +647,7 @@ function(juce_add_module module_path) _juce_link_libs_from_metadata("${module_name}" "${metadata_dict}" linuxLibs) elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") if((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC")) - if(module_name MATCHES "juce_gui_basics|juce_audio_processors|juce_core|juce_graphics") + if(module_name MATCHES "juce_gui_basics|juce_audio_processors|juce_core|juce_graphics|juce_audio_processors_headless") target_compile_options(${module_name} INTERFACE /bigobj) endif() diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h index e4d5e48023..a591ef0e64 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h @@ -2756,6 +2756,7 @@ protected: return name.equalsIgnoreCase ("include_juce_gui_basics") || name.equalsIgnoreCase ("include_juce_audio_processors") + || name.equalsIgnoreCase ("include_juce_audio_processors_headless") || name.equalsIgnoreCase ("include_juce_core") || name.equalsIgnoreCase ("include_juce_graphics"); } diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt index 27c987abe2..db8a56774d 100644 --- a/modules/CMakeLists.txt +++ b/modules/CMakeLists.txt @@ -40,6 +40,7 @@ juce_add_modules( juce_audio_formats juce_audio_plugin_client juce_audio_processors + juce_audio_processors_headless juce_audio_utils juce_box2d juce_core diff --git a/modules/juce_audio_processors/juce_audio_processors.h b/modules/juce_audio_processors/juce_audio_processors.h index 9e0923ff3b..63437d5fc7 100644 --- a/modules/juce_audio_processors/juce_audio_processors.h +++ b/modules/juce_audio_processors/juce_audio_processors.h @@ -51,9 +51,7 @@ license: AGPLv3/Commercial minimumCppStandard: 17 - dependencies: juce_gui_extra, juce_audio_basics - OSXFrameworks: CoreAudio CoreMIDI AudioToolbox - iOSFrameworks: AudioToolbox + dependencies: juce_gui_extra, juce_audio_processors_headless END_JUCE_MODULE_DECLARATION @@ -63,9 +61,8 @@ #pragma once #define JUCE_AUDIO_PROCESSORS_H_INCLUDED -#include +#include #include -#include //============================================================================== /** Config: JUCE_PLUGINHOST_VST diff --git a/modules/juce_audio_processors_headless/juce_audio_processors_headless.cpp b/modules/juce_audio_processors_headless/juce_audio_processors_headless.cpp new file mode 100644 index 0000000000..cdb9321824 --- /dev/null +++ b/modules/juce_audio_processors_headless/juce_audio_processors_headless.cpp @@ -0,0 +1,44 @@ +/* + ============================================================================== + + This file is part of the JUCE framework. + Copyright (c) Raw Material Software Limited + + JUCE is an open source framework subject to commercial or open source + licensing. + + By downloading, installing, or using the JUCE framework, or combining the + JUCE framework with any other source code, object code, content or any other + copyrightable work, you agree to the terms of the JUCE End User Licence + Agreement, and all incorporated terms including the JUCE Privacy Policy and + the JUCE Website Terms of Service, as applicable, which will bind you. If you + do not agree to the terms of these agreements, we will not license the JUCE + framework to you, and you must discontinue the installation or download + process and cease use of the JUCE framework. + + JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/ + JUCE Privacy Policy: https://juce.com/juce-privacy-policy + JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/ + + Or: + + You may also use this code under the terms of the AGPLv3: + https://www.gnu.org/licenses/agpl-3.0.en.html + + THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL + WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. + + ============================================================================== +*/ + +#ifdef JUCE_AUDIO_PROCESSORS_HEADLESS_H_INCLUDED + /* When you add this cpp file to your project, you mustn't include it in a file where you've + already included any other headers - just put it inside a file on its own, possibly with your config + flags preceding it, but don't include anything else. That also includes avoiding any automatic prefix + header files that the compiler may be using. + */ + #error "Incorrect use of JUCE cpp file" +#endif + +#include "juce_audio_processors_headless.h" diff --git a/modules/juce_audio_processors_headless/juce_audio_processors_headless.h b/modules/juce_audio_processors_headless/juce_audio_processors_headless.h new file mode 100644 index 0000000000..7bdb168655 --- /dev/null +++ b/modules/juce_audio_processors_headless/juce_audio_processors_headless.h @@ -0,0 +1,67 @@ +/* + ============================================================================== + + This file is part of the JUCE framework. + Copyright (c) Raw Material Software Limited + + JUCE is an open source framework subject to commercial or open source + licensing. + + By downloading, installing, or using the JUCE framework, or combining the + JUCE framework with any other source code, object code, content or any other + copyrightable work, you agree to the terms of the JUCE End User Licence + Agreement, and all incorporated terms including the JUCE Privacy Policy and + the JUCE Website Terms of Service, as applicable, which will bind you. If you + do not agree to the terms of these agreements, we will not license the JUCE + framework to you, and you must discontinue the installation or download + process and cease use of the JUCE framework. + + JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/ + JUCE Privacy Policy: https://juce.com/juce-privacy-policy + JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/ + + Or: + + You may also use this code under the terms of the AGPLv3: + https://www.gnu.org/licenses/agpl-3.0.en.html + + THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL + WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. + + ============================================================================== +*/ + + +/******************************************************************************* + The block below describes the properties of this module, and is read by + the Projucer to automatically generate project code that uses it. + For details about the syntax and how to create or use a module, see the + JUCE Module Format.md file. + + + BEGIN_JUCE_MODULE_DECLARATION + + ID: juce_audio_processors_headless + vendor: juce + version: 8.0.8 + name: JUCE audio processor classes without UI + description: Classes for loading and playing VST, AU, LADSPA, or internally-generated audio processors without UI. + website: http://www.juce.com/juce + license: AGPLv3/Commercial + minimumCppStandard: 17 + + dependencies: juce_audio_basics, juce_graphics + OSXFrameworks: CoreAudio CoreMIDI AudioToolbox + iOSFrameworks: AudioToolbox + + END_JUCE_MODULE_DECLARATION + +*******************************************************************************/ + + +#pragma once +#define JUCE_AUDIO_PROCESSORS_HEADLESS_H_INCLUDED + +#include +#include diff --git a/modules/juce_audio_processors_headless/juce_audio_processors_headless.mm b/modules/juce_audio_processors_headless/juce_audio_processors_headless.mm new file mode 100644 index 0000000000..263b0e2217 --- /dev/null +++ b/modules/juce_audio_processors_headless/juce_audio_processors_headless.mm @@ -0,0 +1,35 @@ +/* + ============================================================================== + + This file is part of the JUCE framework. + Copyright (c) Raw Material Software Limited + + JUCE is an open source framework subject to commercial or open source + licensing. + + By downloading, installing, or using the JUCE framework, or combining the + JUCE framework with any other source code, object code, content or any other + copyrightable work, you agree to the terms of the JUCE End User Licence + Agreement, and all incorporated terms including the JUCE Privacy Policy and + the JUCE Website Terms of Service, as applicable, which will bind you. If you + do not agree to the terms of these agreements, we will not license the JUCE + framework to you, and you must discontinue the installation or download + process and cease use of the JUCE framework. + + JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/ + JUCE Privacy Policy: https://juce.com/juce-privacy-policy + JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/ + + Or: + + You may also use this code under the terms of the AGPLv3: + https://www.gnu.org/licenses/agpl-3.0.en.html + + THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL + WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. + + ============================================================================== +*/ + +#include "juce_audio_processors_headless.cpp"