diff --git a/examples/DemoRunner/Builds/Android/app/CMakeLists.txt b/examples/DemoRunner/Builds/Android/app/CMakeLists.txt index 6e70db14e8..d5c5f03e1e 100644 --- a/examples/DemoRunner/Builds/Android/app/CMakeLists.txt +++ b/examples/DemoRunner/Builds/Android/app/CMakeLists.txt @@ -15,6 +15,14 @@ set_source_files_properties("${ANDROID_NDK}/sources/android/cpufeatures/cpu-feat add_definitions([[-DJUCE_ANDROID=1]] [[-DJUCE_ANDROID_API_VERSION=23]] [[-DJUCE_PUSH_NOTIFICATIONS=1]] [[-DJUCE_PUSH_NOTIFICATIONS_ACTIVITY="com/rmsl/juce/JuceActivity"]] [[-DJUCE_CONTENT_SHARING=1]] [[-DJUCE_ANDROID_GL_ES_VERSION_3_0=1]] [[-DJUCE_DEMO_RUNNER=1]] [[-DJUCE_UNIT_TESTS=1]] [[-DJUCER_ANDROIDSTUDIO_7F0E4A25=1]] [[-DJUCE_APP_VERSION=6.1.6]] [[-DJUCE_APP_VERSION_HEX=0x60106]]) include_directories( AFTER + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK" "../../../../../modules/juce_audio_processors/format_types/VST3_SDK" "../../../JuceLibraryCode" "../../../../../modules" @@ -24,9 +32,9 @@ include_directories( AFTER enable_language(ASM) if(JUCE_BUILD_CONFIGURATION MATCHES "DEBUG") - add_definitions([[-DJUCE_DISPLAY_SPLASH_SCREEN=0]] [[-DJUCE_USE_DARK_SPLASH_SCREEN=1]] [[-DJUCE_PROJUCER_VERSION=0x60106]] [[-DJUCE_MODULE_AVAILABLE_juce_analytics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1]] [[-DJUCE_MODULE_AVAILABLE_juce_box2d=1]] [[-DJUCE_MODULE_AVAILABLE_juce_core=1]] [[-DJUCE_MODULE_AVAILABLE_juce_cryptography=1]] [[-DJUCE_MODULE_AVAILABLE_juce_data_structures=1]] [[-DJUCE_MODULE_AVAILABLE_juce_dsp=1]] [[-DJUCE_MODULE_AVAILABLE_juce_events=1]] [[-DJUCE_MODULE_AVAILABLE_juce_graphics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1]] [[-DJUCE_MODULE_AVAILABLE_juce_opengl=1]] [[-DJUCE_MODULE_AVAILABLE_juce_osc=1]] [[-DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1]] [[-DJUCE_MODULE_AVAILABLE_juce_video=1]] [[-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1]] [[-DJUCE_USE_MP3AUDIOFORMAT=1]] [[-DJUCE_PLUGINHOST_VST3=1]] [[-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0]] [[-DJUCE_STRICT_REFCOUNTEDPOINTER=1]] [[-DJUCE_USE_CAMERA=1]] [[-DJUCE_STANDALONE_APPLICATION=1]] [[-DJUCE_DEMO_RUNNER=1]] [[-DJUCE_UNIT_TESTS=1]] [[-DJUCER_ANDROIDSTUDIO_7F0E4A25=1]] [[-DJUCE_APP_VERSION=6.1.6]] [[-DJUCE_APP_VERSION_HEX=0x60106]] [[-DDEBUG=1]] [[-D_DEBUG=1]]) + add_definitions([[-DJUCE_DISPLAY_SPLASH_SCREEN=0]] [[-DJUCE_USE_DARK_SPLASH_SCREEN=1]] [[-DJUCE_PROJUCER_VERSION=0x60106]] [[-DJUCE_MODULE_AVAILABLE_juce_analytics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1]] [[-DJUCE_MODULE_AVAILABLE_juce_box2d=1]] [[-DJUCE_MODULE_AVAILABLE_juce_core=1]] [[-DJUCE_MODULE_AVAILABLE_juce_cryptography=1]] [[-DJUCE_MODULE_AVAILABLE_juce_data_structures=1]] [[-DJUCE_MODULE_AVAILABLE_juce_dsp=1]] [[-DJUCE_MODULE_AVAILABLE_juce_events=1]] [[-DJUCE_MODULE_AVAILABLE_juce_graphics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1]] [[-DJUCE_MODULE_AVAILABLE_juce_opengl=1]] [[-DJUCE_MODULE_AVAILABLE_juce_osc=1]] [[-DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1]] [[-DJUCE_MODULE_AVAILABLE_juce_video=1]] [[-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1]] [[-DJUCE_USE_MP3AUDIOFORMAT=1]] [[-DJUCE_PLUGINHOST_VST3=1]] [[-DJUCE_PLUGINHOST_LV2=1]] [[-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0]] [[-DJUCE_STRICT_REFCOUNTEDPOINTER=1]] [[-DJUCE_USE_CAMERA=1]] [[-DJUCE_STANDALONE_APPLICATION=1]] [[-DJUCE_DEMO_RUNNER=1]] [[-DJUCE_UNIT_TESTS=1]] [[-DJUCER_ANDROIDSTUDIO_7F0E4A25=1]] [[-DJUCE_APP_VERSION=6.1.6]] [[-DJUCE_APP_VERSION_HEX=0x60106]] [[-DDEBUG=1]] [[-D_DEBUG=1]]) elseif(JUCE_BUILD_CONFIGURATION MATCHES "RELEASE") - add_definitions([[-DJUCE_DISPLAY_SPLASH_SCREEN=0]] [[-DJUCE_USE_DARK_SPLASH_SCREEN=1]] [[-DJUCE_PROJUCER_VERSION=0x60106]] [[-DJUCE_MODULE_AVAILABLE_juce_analytics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1]] [[-DJUCE_MODULE_AVAILABLE_juce_box2d=1]] [[-DJUCE_MODULE_AVAILABLE_juce_core=1]] [[-DJUCE_MODULE_AVAILABLE_juce_cryptography=1]] [[-DJUCE_MODULE_AVAILABLE_juce_data_structures=1]] [[-DJUCE_MODULE_AVAILABLE_juce_dsp=1]] [[-DJUCE_MODULE_AVAILABLE_juce_events=1]] [[-DJUCE_MODULE_AVAILABLE_juce_graphics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1]] [[-DJUCE_MODULE_AVAILABLE_juce_opengl=1]] [[-DJUCE_MODULE_AVAILABLE_juce_osc=1]] [[-DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1]] [[-DJUCE_MODULE_AVAILABLE_juce_video=1]] [[-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1]] [[-DJUCE_USE_MP3AUDIOFORMAT=1]] [[-DJUCE_PLUGINHOST_VST3=1]] [[-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0]] [[-DJUCE_STRICT_REFCOUNTEDPOINTER=1]] [[-DJUCE_USE_CAMERA=1]] [[-DJUCE_STANDALONE_APPLICATION=1]] [[-DJUCE_DEMO_RUNNER=1]] [[-DJUCE_UNIT_TESTS=1]] [[-DJUCER_ANDROIDSTUDIO_7F0E4A25=1]] [[-DJUCE_APP_VERSION=6.1.6]] [[-DJUCE_APP_VERSION_HEX=0x60106]] [[-DNDEBUG=1]]) + add_definitions([[-DJUCE_DISPLAY_SPLASH_SCREEN=0]] [[-DJUCE_USE_DARK_SPLASH_SCREEN=1]] [[-DJUCE_PROJUCER_VERSION=0x60106]] [[-DJUCE_MODULE_AVAILABLE_juce_analytics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1]] [[-DJUCE_MODULE_AVAILABLE_juce_box2d=1]] [[-DJUCE_MODULE_AVAILABLE_juce_core=1]] [[-DJUCE_MODULE_AVAILABLE_juce_cryptography=1]] [[-DJUCE_MODULE_AVAILABLE_juce_data_structures=1]] [[-DJUCE_MODULE_AVAILABLE_juce_dsp=1]] [[-DJUCE_MODULE_AVAILABLE_juce_events=1]] [[-DJUCE_MODULE_AVAILABLE_juce_graphics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1]] [[-DJUCE_MODULE_AVAILABLE_juce_opengl=1]] [[-DJUCE_MODULE_AVAILABLE_juce_osc=1]] [[-DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1]] [[-DJUCE_MODULE_AVAILABLE_juce_video=1]] [[-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1]] [[-DJUCE_USE_MP3AUDIOFORMAT=1]] [[-DJUCE_PLUGINHOST_VST3=1]] [[-DJUCE_PLUGINHOST_LV2=1]] [[-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0]] [[-DJUCE_STRICT_REFCOUNTEDPOINTER=1]] [[-DJUCE_USE_CAMERA=1]] [[-DJUCE_STANDALONE_APPLICATION=1]] [[-DJUCE_DEMO_RUNNER=1]] [[-DJUCE_UNIT_TESTS=1]] [[-DJUCER_ANDROIDSTUDIO_7F0E4A25=1]] [[-DJUCE_APP_VERSION=6.1.6]] [[-DJUCE_APP_VERSION_HEX=0x60106]] [[-DNDEBUG=1]]) else() message( FATAL_ERROR "No matching build-configuration found." ) endif() @@ -118,6 +126,7 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.cpp" "../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.h" "../../../../../modules/juce_audio_basics/native/juce_mac_CoreAudioLayouts.h" + "../../../../../modules/juce_audio_basics/native/juce_mac_CoreAudioTimeConversions.h" "../../../../../modules/juce_audio_basics/sources/juce_AudioSource.h" "../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp" "../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.h" @@ -480,6 +489,108 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.h" "../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp" "../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/lilv/lilv.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/lilv/lilvmm.hpp" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/common.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/tree.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/tree.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/collections.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/filesystem.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/filesystem.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/instance.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/lib.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/lilv_internal.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/node.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/plugin.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/pluginclass.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/port.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/query.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/scalepoint.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/state.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/ui.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/util.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/world.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom-test-utils.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom-test.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/forge-overflow-test.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/forge.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/util.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/buf-size/buf-size.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/attributes.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2_util.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/data-access/data-access.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/dynmanifest/dynmanifest.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event-helpers.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/instance-access/instance-access.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/log.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/logger.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/midi/midi.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/morph/morph.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/options/options.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/parameters/parameters.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/patch/patch.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-groups/port-groups.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-props/port-props.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/presets/presets.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/resize-port/resize-port.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/state/state.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/time/time.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/ui/ui.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/units/units.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/uri-map/uri-map.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/urid/urid.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/worker/worker.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/serd/serd.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/attributes.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/base64.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/base64.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_sink.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_source.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_source.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/env.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/n3.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/node.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/node.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/reader.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/reader.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serd_config.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serd_internal.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serdi.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/stack.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/string.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/string_utils.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/system.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/system.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/uri.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/uri_utils.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/writer.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/sord/sord.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/sord/sordmm.hpp" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/btree.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/btree.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/common.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/digest.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/digest.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/hash.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/hash.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_config.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_internal.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_test.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_validate.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sordi.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sordmm_test.cpp" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/syntax.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom/sratom/sratom.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom/src/sratom.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/juce_lv2_config.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv_config.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/README.md" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd_config.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord_config.h" "../../../../../modules/juce_audio_processors/format_types/VST3_SDK/base/source/baseiids.cpp" "../../../../../modules/juce_audio_processors/format_types/VST3_SDK/base/source/classfactoryhelpers.h" "../../../../../modules/juce_audio_processors/format_types/VST3_SDK/base/source/fbuffer.cpp" @@ -583,6 +694,12 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp" "../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h" "../../../../../modules/juce_audio_processors/format_types/juce_LegacyAudioParameter.cpp" + "../../../../../modules/juce_audio_processors/format_types/juce_LV2Common.h" + "../../../../../modules/juce_audio_processors/format_types/juce_LV2PluginFormat.cpp" + "../../../../../modules/juce_audio_processors/format_types/juce_LV2PluginFormat.h" + "../../../../../modules/juce_audio_processors/format_types/juce_LV2PluginFormat_test.cpp" + "../../../../../modules/juce_audio_processors/format_types/juce_LV2Resources.h" + "../../../../../modules/juce_audio_processors/format_types/juce_LV2SupportLibs.cpp" "../../../../../modules/juce_audio_processors/format_types/juce_VST3Common.h" "../../../../../modules/juce_audio_processors/format_types/juce_VST3Headers.h" "../../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp" @@ -629,6 +746,9 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp" "../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h" "../../../../../modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h" + "../../../../../modules/juce_audio_processors/utilities/juce_FlagCache.h" + "../../../../../modules/juce_audio_processors/utilities/juce_NativeScaleFactorNotifier.cpp" + "../../../../../modules/juce_audio_processors/utilities/juce_NativeScaleFactorNotifier.h" "../../../../../modules/juce_audio_processors/utilities/juce_ParameterAttachments.cpp" "../../../../../modules/juce_audio_processors/utilities/juce_ParameterAttachments.h" "../../../../../modules/juce_audio_processors/utilities/juce_PluginHostType.cpp" @@ -639,6 +759,7 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.h" "../../../../../modules/juce_audio_processors/juce_audio_processors.cpp" "../../../../../modules/juce_audio_processors/juce_audio_processors.mm" + "../../../../../modules/juce_audio_processors/juce_audio_processors_lv2_libs.cpp" "../../../../../modules/juce_audio_processors/juce_audio_processors.h" "../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDBurner.h" "../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDReader.cpp" @@ -789,6 +910,8 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_core/containers/juce_ListenerList.h" "../../../../../modules/juce_core/containers/juce_NamedValueSet.cpp" "../../../../../modules/juce_core/containers/juce_NamedValueSet.h" + "../../../../../modules/juce_core/containers/juce_Optional.h" + "../../../../../modules/juce_core/containers/juce_Optional_test.cpp" "../../../../../modules/juce_core/containers/juce_OwnedArray.cpp" "../../../../../modules/juce_core/containers/juce_OwnedArray.h" "../../../../../modules/juce_core/containers/juce_PropertySet.cpp" @@ -1179,6 +1302,7 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_events/native/juce_android_Messaging.cpp" "../../../../../modules/juce_events/native/juce_ios_MessageManager.mm" "../../../../../modules/juce_events/native/juce_linux_EventLoop.h" + "../../../../../modules/juce_events/native/juce_linux_EventLoopInternal.h" "../../../../../modules/juce_events/native/juce_linux_Messaging.cpp" "../../../../../modules/juce_events/native/juce_mac_MessageManager.mm" "../../../../../modules/juce_events/native/juce_osx_MessageQueue.h" @@ -1845,6 +1969,7 @@ add_library( ${BINARY_NAME} "../../../JuceLibraryCode/include_juce_audio_devices.cpp" "../../../JuceLibraryCode/include_juce_audio_formats.cpp" "../../../JuceLibraryCode/include_juce_audio_processors.cpp" + "../../../JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp" "../../../JuceLibraryCode/include_juce_audio_utils.cpp" "../../../JuceLibraryCode/include_juce_box2d.cpp" "../../../JuceLibraryCode/include_juce_core.cpp" @@ -1939,6 +2064,7 @@ set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_M set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_basics/native/juce_mac_CoreAudioLayouts.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/native/juce_mac_CoreAudioTimeConversions.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_AudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2301,6 +2427,108 @@ set_source_files_properties("../../../../../modules/juce_audio_processors/format set_source_files_properties("../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/lilv/lilv.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/lilv/lilvmm.hpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/common.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/tree.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/tree.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/collections.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/filesystem.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/filesystem.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/instance.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/lib.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/lilv_internal.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/node.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/plugin.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/pluginclass.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/port.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/query.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/scalepoint.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/state.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/ui.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/util.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/world.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom-test-utils.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom-test.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/forge-overflow-test.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/forge.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/util.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/buf-size/buf-size.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/attributes.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2_util.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/data-access/data-access.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/dynmanifest/dynmanifest.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event-helpers.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/instance-access/instance-access.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/log.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/logger.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/midi/midi.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/morph/morph.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/options/options.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/parameters/parameters.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/patch/patch.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-groups/port-groups.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-props/port-props.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/presets/presets.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/resize-port/resize-port.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/state/state.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/time/time.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/ui/ui.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/units/units.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/uri-map/uri-map.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/urid/urid.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/worker/worker.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/serd/serd.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/attributes.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/base64.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/base64.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_sink.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_source.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_source.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/env.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/n3.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/node.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/node.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/reader.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/reader.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serd_config.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serd_internal.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serdi.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/stack.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/string.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/string_utils.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/system.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/system.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/uri.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/uri_utils.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/writer.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/sord/sord.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/sord/sordmm.hpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/btree.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/btree.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/common.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/digest.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/digest.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/hash.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/hash.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_config.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_internal.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_test.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_validate.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sordi.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sordmm_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/syntax.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom/sratom/sratom.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom/src/sratom.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/juce_lv2_config.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv_config.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/README.md" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd_config.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord_config.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/VST3_SDK/base/source/baseiids.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/VST3_SDK/base/source/classfactoryhelpers.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/VST3_SDK/base/source/fbuffer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2404,6 +2632,12 @@ set_source_files_properties("../../../../../modules/juce_audio_processors/format set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LegacyAudioParameter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LV2Common.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LV2PluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LV2PluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LV2PluginFormat_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LV2Resources.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LV2SupportLibs.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VST3Common.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VST3Headers.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2450,6 +2684,9 @@ set_source_files_properties("../../../../../modules/juce_audio_processors/utilit set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_FlagCache.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_NativeScaleFactorNotifier.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_NativeScaleFactorNotifier.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_ParameterAttachments.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_ParameterAttachments.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_PluginHostType.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2460,6 +2697,7 @@ set_source_files_properties("../../../../../modules/juce_audio_processors/utilit set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/juce_audio_processors.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/juce_audio_processors.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/juce_audio_processors_lv2_libs.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/juce_audio_processors.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDBurner.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDReader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2610,6 +2848,8 @@ set_source_files_properties("../../../../../modules/juce_core/containers/juce_Li set_source_files_properties("../../../../../modules/juce_core/containers/juce_ListenerList.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_core/containers/juce_NamedValueSet.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_core/containers/juce_NamedValueSet.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_Optional.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_Optional_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_core/containers/juce_OwnedArray.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_core/containers/juce_OwnedArray.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_core/containers/juce_PropertySet.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -3000,6 +3240,7 @@ set_source_files_properties("../../../../../modules/juce_events/messages/juce_No set_source_files_properties("../../../../../modules/juce_events/native/juce_android_Messaging.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_events/native/juce_ios_MessageManager.mm" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_events/native/juce_linux_EventLoop.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/native/juce_linux_EventLoopInternal.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_events/native/juce_linux_Messaging.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_events/native/juce_mac_MessageManager.mm" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_events/native/juce_osx_MessageQueue.h" PROPERTIES HEADER_FILE_ONLY TRUE) diff --git a/examples/DemoRunner/Builds/LinuxMakefile/Makefile b/examples/DemoRunner/Builds/LinuxMakefile/Makefile index 7136b17dac..236baadfd0 100644 --- a/examples/DemoRunner/Builds/LinuxMakefile/Makefile +++ b/examples/DemoRunner/Builds/LinuxMakefile/Makefile @@ -39,7 +39,7 @@ ifeq ($(CONFIG),Debug) TARGET_ARCH := endif - JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DDEBUG=1" "-D_DEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_analytics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_box2d=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_dsp=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_MODULE_AVAILABLE_juce_osc=1" "-DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1" "-DJUCE_MODULE_AVAILABLE_juce_video=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_USE_MP3AUDIOFORMAT=1" "-DJUCE_PLUGINHOST_VST3=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_USE_CAMERA=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCE_DEMO_RUNNER=1" "-DJUCE_UNIT_TESTS=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=6.1.6" "-DJUCE_APP_VERSION_HEX=0x60106" $(shell $(PKG_CONFIG) --cflags alsa freetype2 libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../../../modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) + JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DDEBUG=1" "-D_DEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_analytics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_box2d=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_dsp=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_MODULE_AVAILABLE_juce_osc=1" "-DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1" "-DJUCE_MODULE_AVAILABLE_juce_video=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_USE_MP3AUDIOFORMAT=1" "-DJUCE_PLUGINHOST_VST3=1" "-DJUCE_PLUGINHOST_LV2=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_USE_CAMERA=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCE_DEMO_RUNNER=1" "-DJUCE_UNIT_TESTS=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=6.1.6" "-DJUCE_APP_VERSION_HEX=0x60106" $(shell $(PKG_CONFIG) --cflags alsa freetype2 libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 -I../../../../modules/juce_audio_processors/format_types/LV2_SDK -I../../../../modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" JUCE_TARGET_APP := DemoRunner @@ -60,7 +60,7 @@ ifeq ($(CONFIG),Release) TARGET_ARCH := endif - JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_analytics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_box2d=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_dsp=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_MODULE_AVAILABLE_juce_osc=1" "-DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1" "-DJUCE_MODULE_AVAILABLE_juce_video=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_USE_MP3AUDIOFORMAT=1" "-DJUCE_PLUGINHOST_VST3=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_USE_CAMERA=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCE_DEMO_RUNNER=1" "-DJUCE_UNIT_TESTS=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=6.1.6" "-DJUCE_APP_VERSION_HEX=0x60106" $(shell $(PKG_CONFIG) --cflags alsa freetype2 libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../../../modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) + JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_analytics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_box2d=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_dsp=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_MODULE_AVAILABLE_juce_osc=1" "-DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1" "-DJUCE_MODULE_AVAILABLE_juce_video=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_USE_MP3AUDIOFORMAT=1" "-DJUCE_PLUGINHOST_VST3=1" "-DJUCE_PLUGINHOST_LV2=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_USE_CAMERA=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCE_DEMO_RUNNER=1" "-DJUCE_UNIT_TESTS=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=6.1.6" "-DJUCE_APP_VERSION_HEX=0x60106" $(shell $(PKG_CONFIG) --cflags alsa freetype2 libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 -I../../../../modules/juce_audio_processors/format_types/LV2_SDK -I../../../../modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" JUCE_TARGET_APP := DemoRunner @@ -83,6 +83,7 @@ OBJECTS_APP := \ $(JUCE_OBJDIR)/include_juce_audio_devices_63111d02.o \ $(JUCE_OBJDIR)/include_juce_audio_formats_15f82001.o \ $(JUCE_OBJDIR)/include_juce_audio_processors_10c03666.o \ + $(JUCE_OBJDIR)/include_juce_audio_processors_lv2_libs_12bdca08.o \ $(JUCE_OBJDIR)/include_juce_audio_utils_9f9fb2d6.o \ $(JUCE_OBJDIR)/include_juce_box2d_b0305d8b.o \ $(JUCE_OBJDIR)/include_juce_core_f26d17db.o \ @@ -166,6 +167,11 @@ $(JUCE_OBJDIR)/include_juce_audio_processors_10c03666.o: ../../JuceLibraryCode/i @echo "Compiling include_juce_audio_processors.cpp" $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" +$(JUCE_OBJDIR)/include_juce_audio_processors_lv2_libs_12bdca08.o: ../../JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp + -$(V_AT)mkdir -p $(JUCE_OBJDIR) + @echo "Compiling include_juce_audio_processors_lv2_libs.cpp" + $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" + $(JUCE_OBJDIR)/include_juce_audio_utils_9f9fb2d6.o: ../../JuceLibraryCode/include_juce_audio_utils.cpp -$(V_AT)mkdir -p $(JUCE_OBJDIR) @echo "Compiling include_juce_audio_utils.cpp" diff --git a/examples/DemoRunner/Builds/MacOSX/DemoRunner.xcodeproj/project.pbxproj b/examples/DemoRunner/Builds/MacOSX/DemoRunner.xcodeproj/project.pbxproj index c940af1eb2..a000dd3d7e 100644 --- a/examples/DemoRunner/Builds/MacOSX/DemoRunner.xcodeproj/project.pbxproj +++ b/examples/DemoRunner/Builds/MacOSX/DemoRunner.xcodeproj/project.pbxproj @@ -27,6 +27,7 @@ 5E4310B3F6BB639875D3E9B8 /* Foundation.framework */ = {isa = PBXBuildFile; fileRef = 49ECA8B998B339A083674A22; }; 611298FAC1A543BDD10D4C41 /* include_juce_box2d.cpp */ = {isa = PBXBuildFile; fileRef = 4DF215D350FFE5E119CBA7E5; }; 63A2F309E55DAC206E9B97E3 /* App */ = {isa = PBXBuildFile; fileRef = CFF2BBEB242CC8B3B904B5F9; }; + 67D7E529C3713ED79F5F3AA9 /* include_juce_audio_processors_lv2_libs.cpp */ = {isa = PBXBuildFile; fileRef = 5BD7D121AD30987C08BE10E8; }; 6A61CBB4E39BFD392D97528F /* CoreMIDI.framework */ = {isa = PBXBuildFile; fileRef = 61AE09C749B007B70A265D9B; }; 6B5560283DEEBD6DD2D6C984 /* include_juce_dsp.mm */ = {isa = PBXBuildFile; fileRef = C1E93FAF6C68A40A664422CD; }; 712D81867EC698463252FA79 /* include_juce_audio_utils.mm */ = {isa = PBXBuildFile; fileRef = EDDA01B246C6128CAF7A2914; }; @@ -91,6 +92,7 @@ 4FE6029FF76BCE9698595DC5 /* juce_product_unlocking */ /* juce_product_unlocking */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_product_unlocking; path = ../../../../modules/juce_product_unlocking; sourceTree = SOURCE_ROOT; }; 5965349393850F41DF76F350 /* include_juce_analytics.cpp */ /* include_juce_analytics.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_analytics.cpp; path = ../../JuceLibraryCode/include_juce_analytics.cpp; sourceTree = SOURCE_ROOT; }; 5A9F2000C66D24E8B01BE60B /* juce_gui_basics */ /* juce_gui_basics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_gui_basics; path = ../../../../modules/juce_gui_basics; sourceTree = SOURCE_ROOT; }; + 5BD7D121AD30987C08BE10E8 /* include_juce_audio_processors_lv2_libs.cpp */ /* include_juce_audio_processors_lv2_libs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_processors_lv2_libs.cpp; path = ../../JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp; sourceTree = SOURCE_ROOT; }; 5CD17151385A69F1E07FE85B /* DSP */ /* DSP */ = {isa = PBXFileReference; lastKnownFileType = folder; name = DSP; path = ../../../DSP; sourceTree = ""; }; 60F2869DC345EAF2314D6C09 /* juce_audio_devices */ /* juce_audio_devices */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_audio_devices; path = ../../../../modules/juce_audio_devices; sourceTree = SOURCE_ROOT; }; 61AE09C749B007B70A265D9B /* CoreMIDI.framework */ /* CoreMIDI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = System/Library/Frameworks/CoreMIDI.framework; sourceTree = SDKROOT; }; @@ -221,6 +223,7 @@ 03A63C3CA6F24977F19C316D, E061A1C75FA5722167FC4997, E67AB94002886AF67437D6AE, + 5BD7D121AD30987C08BE10E8, EDDA01B246C6128CAF7A2914, 4DF215D350FFE5E119CBA7E5, 3BC9753E0CD75A36DC742EE0, @@ -421,6 +424,7 @@ 9EACEA6BE8D0ACC72C12C080, 26652AB1BB77C8A39434775F, 2707968B431D83AC7E28E49B, + 67D7E529C3713ED79F5F3AA9, 712D81867EC698463252FA79, 611298FAC1A543BDD10D4C41, D183F8140174ACCDDCD230A2, @@ -530,6 +534,7 @@ "JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1", "JUCE_USE_MP3AUDIOFORMAT=1", "JUCE_PLUGINHOST_VST3=1", + "JUCE_PLUGINHOST_LV2=1", "JUCE_ALLOW_STATIC_NULL_VARIABLES=0", "JUCE_STRICT_REFCOUNTEDPOINTER=1", "JUCE_USE_CAMERA=1", @@ -550,6 +555,14 @@ ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK", "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK", "$(SRCROOT)/../../JuceLibraryCode", "$(SRCROOT)/../../../../modules", @@ -560,7 +573,7 @@ INSTALL_PATH = "$(HOME)/Applications"; LLVM_LTO = YES; MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; + MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; @@ -613,6 +626,7 @@ "JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1", "JUCE_USE_MP3AUDIOFORMAT=1", "JUCE_PLUGINHOST_VST3=1", + "JUCE_PLUGINHOST_LV2=1", "JUCE_ALLOW_STATIC_NULL_VARIABLES=0", "JUCE_STRICT_REFCOUNTEDPOINTER=1", "JUCE_USE_CAMERA=1", @@ -633,6 +647,14 @@ ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK", "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK", "$(SRCROOT)/../../JuceLibraryCode", "$(SRCROOT)/../../../../modules", @@ -642,7 +664,7 @@ INFOPLIST_PREPROCESS = NO; INSTALL_PATH = "$(HOME)/Applications"; MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; + MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; diff --git a/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj index 2da0ae5214..7af428eb3e 100644 --- a/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj +++ b/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj @@ -63,8 +63,8 @@ Disabled ProgramDatabase - ..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -105,8 +105,8 @@ Full - ..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) MultiThreaded true NotUsing @@ -690,6 +690,123 @@ true + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + true @@ -765,6 +882,15 @@ true + + true + + + true + + + true + true @@ -822,6 +948,9 @@ true + + true + true @@ -834,6 +963,9 @@ true + + true + true @@ -1044,6 +1176,9 @@ true + + true + true @@ -2470,7 +2605,10 @@ - + + /bigobj %(AdditionalOptions) + + @@ -2537,6 +2675,7 @@ + @@ -2737,6 +2876,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2805,6 +3006,9 @@ + + + @@ -2832,6 +3036,8 @@ + + @@ -2911,6 +3117,7 @@ + @@ -3127,6 +3334,7 @@ + @@ -3459,6 +3667,7 @@ + diff --git a/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj.filters b/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj.filters index 3adca73c58..d96da4118e 100644 --- a/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj.filters +++ b/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj.filters @@ -155,6 +155,129 @@ {86737735-F6BA-F64A-5EC7-5C9F36755F79} + + {CDCCDBC1-E1A7-558D-D4AA-B48003178AE3} + + + {6656EC0E-A4C5-985B-242F-01890BDEFB1B} + + + {107F6637-689A-6DAC-1F5D-FD9734F3A0D9} + + + {C60CB2F9-12ED-74A2-C81C-366287805252} + + + {0BE3157E-54F5-3F72-7023-A62A81D83443} + + + {AD43AFB9-8A3D-C470-E098-4ADA2D6B1C07} + + + {77E6DFCD-32E7-A7E2-75E9-50C49384FEDA} + + + {8449F5A3-222A-3C21-88BD-2ACA69CD290A} + + + {50066622-9190-C54D-FE24-563064A80DB4} + + + {E8F398A4-2CFC-D98B-343B-FB06B6B54063} + + + {18BD9026-D673-60FB-C5C0-E4234E9FE71C} + + + {E469C933-C0FE-3A95-168B-234F8B4B620B} + + + {375C3EDB-D1F5-AA38-D498-B462B7BDEDE9} + + + {2E0391E6-2B82-F704-4B16-9EF63C4E25C1} + + + {D1C825D2-2980-075A-3EC0-43930977748F} + + + {B350BD14-1FB6-A9A0-4725-75CFEFC2D067} + + + {96D16B7E-5FC5-182E-8734-37C9D27C2299} + + + {56518C02-F710-7D5E-09E6-4B152D5900C7} + + + {8D78CFF1-6E9E-3E78-317D-7954EE6482BB} + + + {6B811726-62F3-6E7C-BE8E-493A61CAA9E4} + + + {C84EE2C8-14A3-D098-62A4-E1C75B7FA13A} + + + {42DD7AA9-DF7D-D9F9-E50C-69C44211A42B} + + + {009A44FF-D1C5-47C0-64CC-9122107C73D1} + + + {AAEE24C0-066F-8593-70EA-B7AC7553E885} + + + {CEC45021-32A4-16BA-8E12-023B029608CD} + + + {E5DFE07F-5901-AF5C-7759-84EBF9717E5E} + + + {3A189BF7-28D6-C0C4-B831-97AD9E46FE5A} + + + {829FC6C3-87E7-0491-B8C3-DC3905FB6039} + + + {49174595-84D0-A512-B98C-0CFD2D772B8A} + + + {E27C67CB-E138-DCCB-110D-623E2C01F9BC} + + + {392635C4-010A-C8A2-F46D-1A3628445E1C} + + + {1FF26A52-F9B9-625F-DEE9-8FEE0C02F0F4} + + + {3A5A13A1-B57C-EF05-AC38-53B08A4C8D4A} + + + {97983FD5-3F19-2B58-4941-D8FBB6B92BA4} + + + {ADC9725E-0948-5908-13BD-0275DB25325A} + + + {37AD6CD9-9FE5-A457-B1FE-36A85F973502} + + + {0F3B119C-FE8B-3978-2D80-53248BBBCDEA} + + + {5E836BFC-319A-1CE7-13C9-BD9E87F0A228} + + + {5D8E291B-1BB8-3A55-0939-D13A8589C395} + + + {BE3B7D89-2DE8-3CA1-B00E-55821EF3AAAC} + + + {E0DE9D5D-2792-148A-2CE1-182A90DD5F0E} + {4DC60E78-BBC0-B540-63A2-37E14ABBEF09} @@ -1135,6 +1258,123 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\src + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -1213,6 +1453,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -1270,6 +1519,9 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1285,6 +1537,9 @@ JUCE Modules\juce_audio_processors + + JUCE Modules\juce_audio_processors + JUCE Modules\juce_audio_utils\audio_cd @@ -1510,6 +1765,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -3052,6 +3310,9 @@ JUCE Library Code + + JUCE Library Code + JUCE Library Code @@ -3240,6 +3501,9 @@ JUCE Modules\juce_audio_basics\native + + JUCE Modules\juce_audio_basics\native + JUCE Modules\juce_audio_basics\sources @@ -3840,6 +4104,192 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\buf-size + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\data-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\dynmanifest + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\instance-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\midi + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\morph + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\options + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\parameters + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\patch + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-groups + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-props + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\presets + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\resize-port + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\state + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\time + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\ui + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\units + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\uri-map + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\urid + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\worker + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\serd + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\sratom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -4044,6 +4494,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -4125,6 +4584,12 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -4362,6 +4827,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -5010,6 +5478,9 @@ JUCE Modules\juce_events\native + + JUCE Modules\juce_events\native + JUCE Modules\juce_events\native @@ -6002,6 +6473,9 @@ JUCE Modules\juce_audio_formats\codecs\oggvorbis + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base diff --git a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj index a9770cd0cd..c2dc587bc3 100644 --- a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj +++ b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj @@ -63,8 +63,8 @@ Disabled ProgramDatabase - ..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -105,8 +105,8 @@ Full - ..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) MultiThreaded true NotUsing @@ -690,6 +690,123 @@ true + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + true @@ -765,6 +882,15 @@ true + + true + + + true + + + true + true @@ -822,6 +948,9 @@ true + + true + true @@ -834,6 +963,9 @@ true + + true + true @@ -1044,6 +1176,9 @@ true + + true + true @@ -2470,7 +2605,10 @@ - + + /bigobj %(AdditionalOptions) + + @@ -2537,6 +2675,7 @@ + @@ -2737,6 +2876,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2805,6 +3006,9 @@ + + + @@ -2832,6 +3036,8 @@ + + @@ -2911,6 +3117,7 @@ + @@ -3127,6 +3334,7 @@ + @@ -3459,6 +3667,7 @@ + diff --git a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters index c9e58a6d9c..fc46ae63c2 100644 --- a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters +++ b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters @@ -155,6 +155,129 @@ {86737735-F6BA-F64A-5EC7-5C9F36755F79} + + {CDCCDBC1-E1A7-558D-D4AA-B48003178AE3} + + + {6656EC0E-A4C5-985B-242F-01890BDEFB1B} + + + {107F6637-689A-6DAC-1F5D-FD9734F3A0D9} + + + {C60CB2F9-12ED-74A2-C81C-366287805252} + + + {0BE3157E-54F5-3F72-7023-A62A81D83443} + + + {AD43AFB9-8A3D-C470-E098-4ADA2D6B1C07} + + + {77E6DFCD-32E7-A7E2-75E9-50C49384FEDA} + + + {8449F5A3-222A-3C21-88BD-2ACA69CD290A} + + + {50066622-9190-C54D-FE24-563064A80DB4} + + + {E8F398A4-2CFC-D98B-343B-FB06B6B54063} + + + {18BD9026-D673-60FB-C5C0-E4234E9FE71C} + + + {E469C933-C0FE-3A95-168B-234F8B4B620B} + + + {375C3EDB-D1F5-AA38-D498-B462B7BDEDE9} + + + {2E0391E6-2B82-F704-4B16-9EF63C4E25C1} + + + {D1C825D2-2980-075A-3EC0-43930977748F} + + + {B350BD14-1FB6-A9A0-4725-75CFEFC2D067} + + + {96D16B7E-5FC5-182E-8734-37C9D27C2299} + + + {56518C02-F710-7D5E-09E6-4B152D5900C7} + + + {8D78CFF1-6E9E-3E78-317D-7954EE6482BB} + + + {6B811726-62F3-6E7C-BE8E-493A61CAA9E4} + + + {C84EE2C8-14A3-D098-62A4-E1C75B7FA13A} + + + {42DD7AA9-DF7D-D9F9-E50C-69C44211A42B} + + + {009A44FF-D1C5-47C0-64CC-9122107C73D1} + + + {AAEE24C0-066F-8593-70EA-B7AC7553E885} + + + {CEC45021-32A4-16BA-8E12-023B029608CD} + + + {E5DFE07F-5901-AF5C-7759-84EBF9717E5E} + + + {3A189BF7-28D6-C0C4-B831-97AD9E46FE5A} + + + {829FC6C3-87E7-0491-B8C3-DC3905FB6039} + + + {49174595-84D0-A512-B98C-0CFD2D772B8A} + + + {E27C67CB-E138-DCCB-110D-623E2C01F9BC} + + + {392635C4-010A-C8A2-F46D-1A3628445E1C} + + + {1FF26A52-F9B9-625F-DEE9-8FEE0C02F0F4} + + + {3A5A13A1-B57C-EF05-AC38-53B08A4C8D4A} + + + {97983FD5-3F19-2B58-4941-D8FBB6B92BA4} + + + {ADC9725E-0948-5908-13BD-0275DB25325A} + + + {37AD6CD9-9FE5-A457-B1FE-36A85F973502} + + + {0F3B119C-FE8B-3978-2D80-53248BBBCDEA} + + + {5E836BFC-319A-1CE7-13C9-BD9E87F0A228} + + + {5D8E291B-1BB8-3A55-0939-D13A8589C395} + + + {BE3B7D89-2DE8-3CA1-B00E-55821EF3AAAC} + + + {E0DE9D5D-2792-148A-2CE1-182A90DD5F0E} + {4DC60E78-BBC0-B540-63A2-37E14ABBEF09} @@ -1135,6 +1258,123 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\src + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -1213,6 +1453,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -1270,6 +1519,9 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1285,6 +1537,9 @@ JUCE Modules\juce_audio_processors + + JUCE Modules\juce_audio_processors + JUCE Modules\juce_audio_utils\audio_cd @@ -1510,6 +1765,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -3052,6 +3310,9 @@ JUCE Library Code + + JUCE Library Code + JUCE Library Code @@ -3240,6 +3501,9 @@ JUCE Modules\juce_audio_basics\native + + JUCE Modules\juce_audio_basics\native + JUCE Modules\juce_audio_basics\sources @@ -3840,6 +4104,192 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\buf-size + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\data-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\dynmanifest + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\instance-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\midi + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\morph + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\options + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\parameters + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\patch + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-groups + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-props + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\presets + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\resize-port + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\state + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\time + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\ui + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\units + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\uri-map + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\urid + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\worker + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\serd + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\sratom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -4044,6 +4494,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -4125,6 +4584,12 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -4362,6 +4827,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -5010,6 +5478,9 @@ JUCE Modules\juce_events\native + + JUCE Modules\juce_events\native + JUCE Modules\juce_events\native @@ -6002,6 +6473,9 @@ JUCE Modules\juce_audio_formats\codecs\oggvorbis + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base diff --git a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj index bf5411f533..365218980b 100644 --- a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj +++ b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj @@ -63,8 +63,8 @@ Disabled ProgramDatabase - ..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -105,8 +105,8 @@ Full - ..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) MultiThreaded true NotUsing @@ -690,6 +690,123 @@ true + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + true @@ -765,6 +882,15 @@ true + + true + + + true + + + true + true @@ -822,6 +948,9 @@ true + + true + true @@ -834,6 +963,9 @@ true + + true + true @@ -1044,6 +1176,9 @@ true + + true + true @@ -2470,7 +2605,10 @@ - + + /bigobj %(AdditionalOptions) + + @@ -2537,6 +2675,7 @@ + @@ -2737,6 +2876,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2805,6 +3006,9 @@ + + + @@ -2832,6 +3036,8 @@ + + @@ -2911,6 +3117,7 @@ + @@ -3127,6 +3334,7 @@ + @@ -3459,6 +3667,7 @@ + diff --git a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters index b57378bebb..b0bc598c4b 100644 --- a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters +++ b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters @@ -155,6 +155,129 @@ {86737735-F6BA-F64A-5EC7-5C9F36755F79} + + {CDCCDBC1-E1A7-558D-D4AA-B48003178AE3} + + + {6656EC0E-A4C5-985B-242F-01890BDEFB1B} + + + {107F6637-689A-6DAC-1F5D-FD9734F3A0D9} + + + {C60CB2F9-12ED-74A2-C81C-366287805252} + + + {0BE3157E-54F5-3F72-7023-A62A81D83443} + + + {AD43AFB9-8A3D-C470-E098-4ADA2D6B1C07} + + + {77E6DFCD-32E7-A7E2-75E9-50C49384FEDA} + + + {8449F5A3-222A-3C21-88BD-2ACA69CD290A} + + + {50066622-9190-C54D-FE24-563064A80DB4} + + + {E8F398A4-2CFC-D98B-343B-FB06B6B54063} + + + {18BD9026-D673-60FB-C5C0-E4234E9FE71C} + + + {E469C933-C0FE-3A95-168B-234F8B4B620B} + + + {375C3EDB-D1F5-AA38-D498-B462B7BDEDE9} + + + {2E0391E6-2B82-F704-4B16-9EF63C4E25C1} + + + {D1C825D2-2980-075A-3EC0-43930977748F} + + + {B350BD14-1FB6-A9A0-4725-75CFEFC2D067} + + + {96D16B7E-5FC5-182E-8734-37C9D27C2299} + + + {56518C02-F710-7D5E-09E6-4B152D5900C7} + + + {8D78CFF1-6E9E-3E78-317D-7954EE6482BB} + + + {6B811726-62F3-6E7C-BE8E-493A61CAA9E4} + + + {C84EE2C8-14A3-D098-62A4-E1C75B7FA13A} + + + {42DD7AA9-DF7D-D9F9-E50C-69C44211A42B} + + + {009A44FF-D1C5-47C0-64CC-9122107C73D1} + + + {AAEE24C0-066F-8593-70EA-B7AC7553E885} + + + {CEC45021-32A4-16BA-8E12-023B029608CD} + + + {E5DFE07F-5901-AF5C-7759-84EBF9717E5E} + + + {3A189BF7-28D6-C0C4-B831-97AD9E46FE5A} + + + {829FC6C3-87E7-0491-B8C3-DC3905FB6039} + + + {49174595-84D0-A512-B98C-0CFD2D772B8A} + + + {E27C67CB-E138-DCCB-110D-623E2C01F9BC} + + + {392635C4-010A-C8A2-F46D-1A3628445E1C} + + + {1FF26A52-F9B9-625F-DEE9-8FEE0C02F0F4} + + + {3A5A13A1-B57C-EF05-AC38-53B08A4C8D4A} + + + {97983FD5-3F19-2B58-4941-D8FBB6B92BA4} + + + {ADC9725E-0948-5908-13BD-0275DB25325A} + + + {37AD6CD9-9FE5-A457-B1FE-36A85F973502} + + + {0F3B119C-FE8B-3978-2D80-53248BBBCDEA} + + + {5E836BFC-319A-1CE7-13C9-BD9E87F0A228} + + + {5D8E291B-1BB8-3A55-0939-D13A8589C395} + + + {BE3B7D89-2DE8-3CA1-B00E-55821EF3AAAC} + + + {E0DE9D5D-2792-148A-2CE1-182A90DD5F0E} + {4DC60E78-BBC0-B540-63A2-37E14ABBEF09} @@ -1135,6 +1258,123 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\src + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -1213,6 +1453,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -1270,6 +1519,9 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1285,6 +1537,9 @@ JUCE Modules\juce_audio_processors + + JUCE Modules\juce_audio_processors + JUCE Modules\juce_audio_utils\audio_cd @@ -1510,6 +1765,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -3052,6 +3310,9 @@ JUCE Library Code + + JUCE Library Code + JUCE Library Code @@ -3240,6 +3501,9 @@ JUCE Modules\juce_audio_basics\native + + JUCE Modules\juce_audio_basics\native + JUCE Modules\juce_audio_basics\sources @@ -3840,6 +4104,192 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\buf-size + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\data-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\dynmanifest + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\instance-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\midi + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\morph + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\options + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\parameters + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\patch + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-groups + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-props + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\presets + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\resize-port + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\state + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\time + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\ui + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\units + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\uri-map + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\urid + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\worker + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\serd + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\sratom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -4044,6 +4494,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -4125,6 +4584,12 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -4362,6 +4827,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -5010,6 +5478,9 @@ JUCE Modules\juce_events\native + + JUCE Modules\juce_events\native + JUCE Modules\juce_events\native @@ -6002,6 +6473,9 @@ JUCE Modules\juce_audio_formats\codecs\oggvorbis + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base diff --git a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj index ce2d0c0f81..467260f38c 100644 --- a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj +++ b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj @@ -63,8 +63,8 @@ Disabled ProgramDatabase - ..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -105,8 +105,8 @@ Full - ..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) MultiThreaded true NotUsing @@ -690,6 +690,123 @@ true + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + true @@ -765,6 +882,15 @@ true + + true + + + true + + + true + true @@ -822,6 +948,9 @@ true + + true + true @@ -834,6 +963,9 @@ true + + true + true @@ -1044,6 +1176,9 @@ true + + true + true @@ -2470,7 +2605,10 @@ - + + /bigobj %(AdditionalOptions) + + @@ -2537,6 +2675,7 @@ + @@ -2737,6 +2876,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2805,6 +3006,9 @@ + + + @@ -2832,6 +3036,8 @@ + + @@ -2911,6 +3117,7 @@ + @@ -3127,6 +3334,7 @@ + @@ -3459,6 +3667,7 @@ + diff --git a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters index e0e3057f22..2884a6b909 100644 --- a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters +++ b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters @@ -155,6 +155,129 @@ {86737735-F6BA-F64A-5EC7-5C9F36755F79} + + {CDCCDBC1-E1A7-558D-D4AA-B48003178AE3} + + + {6656EC0E-A4C5-985B-242F-01890BDEFB1B} + + + {107F6637-689A-6DAC-1F5D-FD9734F3A0D9} + + + {C60CB2F9-12ED-74A2-C81C-366287805252} + + + {0BE3157E-54F5-3F72-7023-A62A81D83443} + + + {AD43AFB9-8A3D-C470-E098-4ADA2D6B1C07} + + + {77E6DFCD-32E7-A7E2-75E9-50C49384FEDA} + + + {8449F5A3-222A-3C21-88BD-2ACA69CD290A} + + + {50066622-9190-C54D-FE24-563064A80DB4} + + + {E8F398A4-2CFC-D98B-343B-FB06B6B54063} + + + {18BD9026-D673-60FB-C5C0-E4234E9FE71C} + + + {E469C933-C0FE-3A95-168B-234F8B4B620B} + + + {375C3EDB-D1F5-AA38-D498-B462B7BDEDE9} + + + {2E0391E6-2B82-F704-4B16-9EF63C4E25C1} + + + {D1C825D2-2980-075A-3EC0-43930977748F} + + + {B350BD14-1FB6-A9A0-4725-75CFEFC2D067} + + + {96D16B7E-5FC5-182E-8734-37C9D27C2299} + + + {56518C02-F710-7D5E-09E6-4B152D5900C7} + + + {8D78CFF1-6E9E-3E78-317D-7954EE6482BB} + + + {6B811726-62F3-6E7C-BE8E-493A61CAA9E4} + + + {C84EE2C8-14A3-D098-62A4-E1C75B7FA13A} + + + {42DD7AA9-DF7D-D9F9-E50C-69C44211A42B} + + + {009A44FF-D1C5-47C0-64CC-9122107C73D1} + + + {AAEE24C0-066F-8593-70EA-B7AC7553E885} + + + {CEC45021-32A4-16BA-8E12-023B029608CD} + + + {E5DFE07F-5901-AF5C-7759-84EBF9717E5E} + + + {3A189BF7-28D6-C0C4-B831-97AD9E46FE5A} + + + {829FC6C3-87E7-0491-B8C3-DC3905FB6039} + + + {49174595-84D0-A512-B98C-0CFD2D772B8A} + + + {E27C67CB-E138-DCCB-110D-623E2C01F9BC} + + + {392635C4-010A-C8A2-F46D-1A3628445E1C} + + + {1FF26A52-F9B9-625F-DEE9-8FEE0C02F0F4} + + + {3A5A13A1-B57C-EF05-AC38-53B08A4C8D4A} + + + {97983FD5-3F19-2B58-4941-D8FBB6B92BA4} + + + {ADC9725E-0948-5908-13BD-0275DB25325A} + + + {37AD6CD9-9FE5-A457-B1FE-36A85F973502} + + + {0F3B119C-FE8B-3978-2D80-53248BBBCDEA} + + + {5E836BFC-319A-1CE7-13C9-BD9E87F0A228} + + + {5D8E291B-1BB8-3A55-0939-D13A8589C395} + + + {BE3B7D89-2DE8-3CA1-B00E-55821EF3AAAC} + + + {E0DE9D5D-2792-148A-2CE1-182A90DD5F0E} + {4DC60E78-BBC0-B540-63A2-37E14ABBEF09} @@ -1135,6 +1258,123 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\src + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -1213,6 +1453,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -1270,6 +1519,9 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1285,6 +1537,9 @@ JUCE Modules\juce_audio_processors + + JUCE Modules\juce_audio_processors + JUCE Modules\juce_audio_utils\audio_cd @@ -1510,6 +1765,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -3052,6 +3310,9 @@ JUCE Library Code + + JUCE Library Code + JUCE Library Code @@ -3240,6 +3501,9 @@ JUCE Modules\juce_audio_basics\native + + JUCE Modules\juce_audio_basics\native + JUCE Modules\juce_audio_basics\sources @@ -3840,6 +4104,192 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\buf-size + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\data-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\dynmanifest + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\instance-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\midi + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\morph + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\options + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\parameters + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\patch + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-groups + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-props + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\presets + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\resize-port + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\state + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\time + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\ui + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\units + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\uri-map + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\urid + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\worker + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\serd + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\sratom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -4044,6 +4494,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -4125,6 +4584,12 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -4362,6 +4827,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -5010,6 +5478,9 @@ JUCE Modules\juce_events\native + + JUCE Modules\juce_events\native + JUCE Modules\juce_events\native @@ -6002,6 +6473,9 @@ JUCE Modules\juce_audio_formats\codecs\oggvorbis + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base diff --git a/examples/DemoRunner/Builds/iOS/DemoRunner.xcodeproj/project.pbxproj b/examples/DemoRunner/Builds/iOS/DemoRunner.xcodeproj/project.pbxproj index 680a49fd35..eeddbe32f8 100644 --- a/examples/DemoRunner/Builds/iOS/DemoRunner.xcodeproj/project.pbxproj +++ b/examples/DemoRunner/Builds/iOS/DemoRunner.xcodeproj/project.pbxproj @@ -28,6 +28,7 @@ 611298FAC1A543BDD10D4C41 /* include_juce_box2d.cpp */ = {isa = PBXBuildFile; fileRef = 4DF215D350FFE5E119CBA7E5; }; 63A2F309E55DAC206E9B97E3 /* App */ = {isa = PBXBuildFile; fileRef = CFF2BBEB242CC8B3B904B5F9; }; 6658EEC5F9D63D3419EB7098 /* CoreServices.framework */ = {isa = PBXBuildFile; fileRef = E07FC48041C3E9F9721F3BCE; }; + 67D7E529C3713ED79F5F3AA9 /* include_juce_audio_processors_lv2_libs.cpp */ = {isa = PBXBuildFile; fileRef = 5BD7D121AD30987C08BE10E8; }; 6A61CBB4E39BFD392D97528F /* CoreMIDI.framework */ = {isa = PBXBuildFile; fileRef = 61AE09C749B007B70A265D9B; }; 6B5560283DEEBD6DD2D6C984 /* include_juce_dsp.mm */ = {isa = PBXBuildFile; fileRef = C1E93FAF6C68A40A664422CD; }; 712D81867EC698463252FA79 /* include_juce_audio_utils.mm */ = {isa = PBXBuildFile; fileRef = EDDA01B246C6128CAF7A2914; }; @@ -87,6 +88,7 @@ 4FE6029FF76BCE9698595DC5 /* juce_product_unlocking */ /* juce_product_unlocking */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_product_unlocking; path = ../../../../modules/juce_product_unlocking; sourceTree = SOURCE_ROOT; }; 5965349393850F41DF76F350 /* include_juce_analytics.cpp */ /* include_juce_analytics.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_analytics.cpp; path = ../../JuceLibraryCode/include_juce_analytics.cpp; sourceTree = SOURCE_ROOT; }; 5A9F2000C66D24E8B01BE60B /* juce_gui_basics */ /* juce_gui_basics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_gui_basics; path = ../../../../modules/juce_gui_basics; sourceTree = SOURCE_ROOT; }; + 5BD7D121AD30987C08BE10E8 /* include_juce_audio_processors_lv2_libs.cpp */ /* include_juce_audio_processors_lv2_libs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_processors_lv2_libs.cpp; path = ../../JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp; sourceTree = SOURCE_ROOT; }; 60F2869DC345EAF2314D6C09 /* juce_audio_devices */ /* juce_audio_devices */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_audio_devices; path = ../../../../modules/juce_audio_devices; sourceTree = SOURCE_ROOT; }; 61AE09C749B007B70A265D9B /* CoreMIDI.framework */ /* CoreMIDI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = System/Library/Frameworks/CoreMIDI.framework; sourceTree = SDKROOT; }; 651ECE3C7BA845DDCFEE48F3 /* juce_osc */ /* juce_osc */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_osc; path = ../../../../modules/juce_osc; sourceTree = SOURCE_ROOT; }; @@ -224,6 +226,7 @@ 03A63C3CA6F24977F19C316D, E061A1C75FA5722167FC4997, E67AB94002886AF67437D6AE, + 5BD7D121AD30987C08BE10E8, EDDA01B246C6128CAF7A2914, 4DF215D350FFE5E119CBA7E5, 3BC9753E0CD75A36DC742EE0, @@ -421,6 +424,7 @@ 9EACEA6BE8D0ACC72C12C080, 26652AB1BB77C8A39434775F, 2707968B431D83AC7E28E49B, + 67D7E529C3713ED79F5F3AA9, 712D81867EC698463252FA79, 611298FAC1A543BDD10D4C41, D183F8140174ACCDDCD230A2, @@ -534,6 +538,7 @@ "JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1", "JUCE_USE_MP3AUDIOFORMAT=1", "JUCE_PLUGINHOST_VST3=1", + "JUCE_PLUGINHOST_LV2=1", "JUCE_ALLOW_STATIC_NULL_VARIABLES=0", "JUCE_STRICT_REFCOUNTEDPOINTER=1", "JUCE_USE_CAMERA=1", @@ -554,6 +559,14 @@ ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK", "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK", "$(SRCROOT)/../../JuceLibraryCode", "$(SRCROOT)/../../../../modules", @@ -563,7 +576,7 @@ INFOPLIST_PREPROCESS = NO; INSTALL_PATH = "$(HOME)/Applications"; LLVM_LTO = YES; - MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; + MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; @@ -617,6 +630,7 @@ "JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1", "JUCE_USE_MP3AUDIOFORMAT=1", "JUCE_PLUGINHOST_VST3=1", + "JUCE_PLUGINHOST_LV2=1", "JUCE_ALLOW_STATIC_NULL_VARIABLES=0", "JUCE_STRICT_REFCOUNTEDPOINTER=1", "JUCE_USE_CAMERA=1", @@ -637,6 +651,14 @@ ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK", "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK", "$(SRCROOT)/../../JuceLibraryCode", "$(SRCROOT)/../../../../modules", @@ -645,7 +667,7 @@ INFOPLIST_FILE = Info-App.plist; INFOPLIST_PREPROCESS = NO; INSTALL_PATH = "$(HOME)/Applications"; - MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; + MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; diff --git a/examples/DemoRunner/CMakeLists.txt b/examples/DemoRunner/CMakeLists.txt index 1cf125be9c..7d9234ceb5 100644 --- a/examples/DemoRunner/CMakeLists.txt +++ b/examples/DemoRunner/CMakeLists.txt @@ -48,6 +48,7 @@ target_compile_definitions(DemoRunner PRIVATE PIP_JUCE_EXAMPLES_DIRECTORY_STRING="${JUCE_SOURCE_DIR}/examples" JUCE_ALLOW_STATIC_NULL_VARIABLES=0 JUCE_DEMO_RUNNER=1 + JUCE_PLUGINHOST_LV2=1 JUCE_PLUGINHOST_VST3=1 JUCE_STRICT_REFCOUNTEDPOINTER=1 JUCE_UNIT_TESTS=1 diff --git a/examples/DemoRunner/DemoRunner.jucer b/examples/DemoRunner/DemoRunner.jucer index 3946f4885c..302cd78f87 100644 --- a/examples/DemoRunner/DemoRunner.jucer +++ b/examples/DemoRunner/DemoRunner.jucer @@ -287,7 +287,7 @@ + JUCE_STRICT_REFCOUNTEDPOINTER="1" JUCE_PLUGINHOST_LV2="1" JUCE_PLUGINHOST_VST3="1"/> diff --git a/examples/DemoRunner/JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp b/examples/DemoRunner/JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp new file mode 100644 index 0000000000..64b4d5f4d3 --- /dev/null +++ b/examples/DemoRunner/JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/examples/Plugins/HostPluginDemo.h b/examples/Plugins/HostPluginDemo.h index f0078715cd..118c67fe38 100644 --- a/examples/Plugins/HostPluginDemo.h +++ b/examples/Plugins/HostPluginDemo.h @@ -36,6 +36,7 @@ exporters: xcode_mac, vs2019, linux_make moduleFlags: JUCE_STRICT_REFCOUNTEDPOINTER=1 + JUCE_PLUGINHOST_LV2=1 JUCE_PLUGINHOST_VST3=1 JUCE_PLUGINHOST_VST=0 JUCE_PLUGINHOST_AU=1 diff --git a/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt b/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt index 2e9d642f10..5201325022 100644 --- a/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt +++ b/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt @@ -98,6 +98,7 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.cpp" "../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.h" "../../../../../modules/juce_audio_basics/native/juce_mac_CoreAudioLayouts.h" + "../../../../../modules/juce_audio_basics/native/juce_mac_CoreAudioTimeConversions.h" "../../../../../modules/juce_audio_basics/sources/juce_AudioSource.h" "../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp" "../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.h" @@ -460,6 +461,108 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.h" "../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp" "../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/lilv/lilv.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/lilv/lilvmm.hpp" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/common.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/tree.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/tree.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/collections.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/filesystem.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/filesystem.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/instance.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/lib.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/lilv_internal.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/node.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/plugin.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/pluginclass.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/port.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/query.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/scalepoint.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/state.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/ui.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/util.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/world.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom-test-utils.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom-test.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/forge-overflow-test.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/forge.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/util.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/buf-size/buf-size.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/attributes.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2_util.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/data-access/data-access.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/dynmanifest/dynmanifest.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event-helpers.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/instance-access/instance-access.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/log.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/logger.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/midi/midi.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/morph/morph.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/options/options.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/parameters/parameters.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/patch/patch.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-groups/port-groups.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-props/port-props.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/presets/presets.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/resize-port/resize-port.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/state/state.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/time/time.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/ui/ui.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/units/units.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/uri-map/uri-map.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/urid/urid.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/worker/worker.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/serd/serd.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/attributes.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/base64.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/base64.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_sink.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_source.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_source.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/env.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/n3.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/node.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/node.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/reader.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/reader.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serd_config.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serd_internal.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serdi.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/stack.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/string.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/string_utils.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/system.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/system.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/uri.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/uri_utils.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/writer.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/sord/sord.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/sord/sordmm.hpp" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/btree.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/btree.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/common.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/digest.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/digest.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/hash.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/hash.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_config.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_internal.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_test.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_validate.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sordi.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sordmm_test.cpp" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/syntax.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom/sratom/sratom.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom/src/sratom.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/juce_lv2_config.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv_config.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/README.md" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd_config.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord_config.h" "../../../../../modules/juce_audio_processors/format_types/VST3_SDK/base/source/baseiids.cpp" "../../../../../modules/juce_audio_processors/format_types/VST3_SDK/base/source/classfactoryhelpers.h" "../../../../../modules/juce_audio_processors/format_types/VST3_SDK/base/source/fbuffer.cpp" @@ -563,6 +666,12 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp" "../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h" "../../../../../modules/juce_audio_processors/format_types/juce_LegacyAudioParameter.cpp" + "../../../../../modules/juce_audio_processors/format_types/juce_LV2Common.h" + "../../../../../modules/juce_audio_processors/format_types/juce_LV2PluginFormat.cpp" + "../../../../../modules/juce_audio_processors/format_types/juce_LV2PluginFormat.h" + "../../../../../modules/juce_audio_processors/format_types/juce_LV2PluginFormat_test.cpp" + "../../../../../modules/juce_audio_processors/format_types/juce_LV2Resources.h" + "../../../../../modules/juce_audio_processors/format_types/juce_LV2SupportLibs.cpp" "../../../../../modules/juce_audio_processors/format_types/juce_VST3Common.h" "../../../../../modules/juce_audio_processors/format_types/juce_VST3Headers.h" "../../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp" @@ -609,6 +718,9 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp" "../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h" "../../../../../modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h" + "../../../../../modules/juce_audio_processors/utilities/juce_FlagCache.h" + "../../../../../modules/juce_audio_processors/utilities/juce_NativeScaleFactorNotifier.cpp" + "../../../../../modules/juce_audio_processors/utilities/juce_NativeScaleFactorNotifier.h" "../../../../../modules/juce_audio_processors/utilities/juce_ParameterAttachments.cpp" "../../../../../modules/juce_audio_processors/utilities/juce_ParameterAttachments.h" "../../../../../modules/juce_audio_processors/utilities/juce_PluginHostType.cpp" @@ -619,6 +731,7 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.h" "../../../../../modules/juce_audio_processors/juce_audio_processors.cpp" "../../../../../modules/juce_audio_processors/juce_audio_processors.mm" + "../../../../../modules/juce_audio_processors/juce_audio_processors_lv2_libs.cpp" "../../../../../modules/juce_audio_processors/juce_audio_processors.h" "../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDBurner.h" "../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDReader.cpp" @@ -673,6 +786,8 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_core/containers/juce_ListenerList.h" "../../../../../modules/juce_core/containers/juce_NamedValueSet.cpp" "../../../../../modules/juce_core/containers/juce_NamedValueSet.h" + "../../../../../modules/juce_core/containers/juce_Optional.h" + "../../../../../modules/juce_core/containers/juce_Optional_test.cpp" "../../../../../modules/juce_core/containers/juce_OwnedArray.cpp" "../../../../../modules/juce_core/containers/juce_OwnedArray.h" "../../../../../modules/juce_core/containers/juce_PropertySet.cpp" @@ -964,6 +1079,7 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_events/native/juce_android_Messaging.cpp" "../../../../../modules/juce_events/native/juce_ios_MessageManager.mm" "../../../../../modules/juce_events/native/juce_linux_EventLoop.h" + "../../../../../modules/juce_events/native/juce_linux_EventLoopInternal.h" "../../../../../modules/juce_events/native/juce_linux_Messaging.cpp" "../../../../../modules/juce_events/native/juce_mac_MessageManager.mm" "../../../../../modules/juce_events/native/juce_osx_MessageQueue.h" @@ -1544,6 +1660,7 @@ add_library( ${BINARY_NAME} "../../../JuceLibraryCode/include_juce_audio_devices.cpp" "../../../JuceLibraryCode/include_juce_audio_formats.cpp" "../../../JuceLibraryCode/include_juce_audio_processors.cpp" + "../../../JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp" "../../../JuceLibraryCode/include_juce_audio_utils.cpp" "../../../JuceLibraryCode/include_juce_core.cpp" "../../../JuceLibraryCode/include_juce_data_structures.cpp" @@ -1617,6 +1734,7 @@ set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_M set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_basics/native/juce_mac_CoreAudioLayouts.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/native/juce_mac_CoreAudioTimeConversions.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_AudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -1979,6 +2097,108 @@ set_source_files_properties("../../../../../modules/juce_audio_processors/format set_source_files_properties("../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/lilv/lilv.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/lilv/lilvmm.hpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/common.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/tree.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/tree.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/collections.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/filesystem.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/filesystem.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/instance.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/lib.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/lilv_internal.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/node.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/plugin.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/pluginclass.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/port.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/query.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/scalepoint.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/state.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/ui.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/util.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/world.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom-test-utils.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom-test.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/forge-overflow-test.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/forge.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/util.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/buf-size/buf-size.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/attributes.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2_util.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/data-access/data-access.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/dynmanifest/dynmanifest.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event-helpers.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/instance-access/instance-access.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/log.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/logger.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/midi/midi.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/morph/morph.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/options/options.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/parameters/parameters.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/patch/patch.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-groups/port-groups.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-props/port-props.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/presets/presets.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/resize-port/resize-port.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/state/state.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/time/time.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/ui/ui.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/units/units.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/uri-map/uri-map.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/urid/urid.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/worker/worker.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/serd/serd.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/attributes.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/base64.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/base64.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_sink.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_source.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_source.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/env.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/n3.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/node.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/node.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/reader.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/reader.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serd_config.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serd_internal.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serdi.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/stack.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/string.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/string_utils.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/system.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/system.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/uri.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/uri_utils.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/writer.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/sord/sord.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/sord/sordmm.hpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/btree.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/btree.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/common.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/digest.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/digest.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/hash.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/hash.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_config.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_internal.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_test.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_validate.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sordi.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sordmm_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/syntax.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom/sratom/sratom.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom/src/sratom.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/juce_lv2_config.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv_config.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/README.md" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd_config.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord_config.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/VST3_SDK/base/source/baseiids.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/VST3_SDK/base/source/classfactoryhelpers.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/VST3_SDK/base/source/fbuffer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2082,6 +2302,12 @@ set_source_files_properties("../../../../../modules/juce_audio_processors/format set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LegacyAudioParameter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LV2Common.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LV2PluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LV2PluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LV2PluginFormat_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LV2Resources.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LV2SupportLibs.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VST3Common.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VST3Headers.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2128,6 +2354,9 @@ set_source_files_properties("../../../../../modules/juce_audio_processors/utilit set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_FlagCache.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_NativeScaleFactorNotifier.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_NativeScaleFactorNotifier.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_ParameterAttachments.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_ParameterAttachments.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_PluginHostType.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2138,6 +2367,7 @@ set_source_files_properties("../../../../../modules/juce_audio_processors/utilit set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/juce_audio_processors.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/juce_audio_processors.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/juce_audio_processors_lv2_libs.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/juce_audio_processors.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDBurner.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDReader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2192,6 +2422,8 @@ set_source_files_properties("../../../../../modules/juce_core/containers/juce_Li set_source_files_properties("../../../../../modules/juce_core/containers/juce_ListenerList.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_core/containers/juce_NamedValueSet.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_core/containers/juce_NamedValueSet.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_Optional.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_Optional_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_core/containers/juce_OwnedArray.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_core/containers/juce_OwnedArray.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_core/containers/juce_PropertySet.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2483,6 +2715,7 @@ set_source_files_properties("../../../../../modules/juce_events/messages/juce_No set_source_files_properties("../../../../../modules/juce_events/native/juce_android_Messaging.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_events/native/juce_ios_MessageManager.mm" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_events/native/juce_linux_EventLoop.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/native/juce_linux_EventLoopInternal.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_events/native/juce_linux_Messaging.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_events/native/juce_mac_MessageManager.mm" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_events/native/juce_osx_MessageQueue.h" PROPERTIES HEADER_FILE_ONLY TRUE) diff --git a/extras/AudioPerformanceTest/Builds/LinuxMakefile/Makefile b/extras/AudioPerformanceTest/Builds/LinuxMakefile/Makefile index 8a94e78512..90bc98ba94 100644 --- a/extras/AudioPerformanceTest/Builds/LinuxMakefile/Makefile +++ b/extras/AudioPerformanceTest/Builds/LinuxMakefile/Makefile @@ -77,6 +77,7 @@ OBJECTS_APP := \ $(JUCE_OBJDIR)/include_juce_audio_devices_63111d02.o \ $(JUCE_OBJDIR)/include_juce_audio_formats_15f82001.o \ $(JUCE_OBJDIR)/include_juce_audio_processors_10c03666.o \ + $(JUCE_OBJDIR)/include_juce_audio_processors_lv2_libs_12bdca08.o \ $(JUCE_OBJDIR)/include_juce_audio_utils_9f9fb2d6.o \ $(JUCE_OBJDIR)/include_juce_core_f26d17db.o \ $(JUCE_OBJDIR)/include_juce_data_structures_7471b1e3.o \ @@ -123,6 +124,11 @@ $(JUCE_OBJDIR)/include_juce_audio_processors_10c03666.o: ../../JuceLibraryCode/i @echo "Compiling include_juce_audio_processors.cpp" $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" +$(JUCE_OBJDIR)/include_juce_audio_processors_lv2_libs_12bdca08.o: ../../JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp + -$(V_AT)mkdir -p $(JUCE_OBJDIR) + @echo "Compiling include_juce_audio_processors_lv2_libs.cpp" + $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" + $(JUCE_OBJDIR)/include_juce_audio_utils_9f9fb2d6.o: ../../JuceLibraryCode/include_juce_audio_utils.cpp -$(V_AT)mkdir -p $(JUCE_OBJDIR) @echo "Compiling include_juce_audio_utils.cpp" diff --git a/extras/AudioPerformanceTest/Builds/MacOSX/AudioPerformanceTest.xcodeproj/project.pbxproj b/extras/AudioPerformanceTest/Builds/MacOSX/AudioPerformanceTest.xcodeproj/project.pbxproj index 71ba34262a..164a725b88 100644 --- a/extras/AudioPerformanceTest/Builds/MacOSX/AudioPerformanceTest.xcodeproj/project.pbxproj +++ b/extras/AudioPerformanceTest/Builds/MacOSX/AudioPerformanceTest.xcodeproj/project.pbxproj @@ -10,6 +10,7 @@ 01C9BC9A0A0F54B693CDA31A /* include_juce_audio_devices.mm */ = {isa = PBXBuildFile; fileRef = 322D3066DCD98A8D0542236A; }; 0319B40AD2FD96007FFA928B /* Cocoa.framework */ = {isa = PBXBuildFile; fileRef = 453777CEB7099A5D61901D13; }; 07451DA87757F9EF80E31BE8 /* Main.cpp */ = {isa = PBXBuildFile; fileRef = 0564535EEA7E4462926EA0C9; }; + 2028993D80CFDE5A0ABA4A52 /* include_juce_audio_processors_lv2_libs.cpp */ = {isa = PBXBuildFile; fileRef = 932123993B04597421D5C406; }; 2BAED5B831BB736E77A718AE /* include_juce_audio_basics.mm */ = {isa = PBXBuildFile; fileRef = 89B3243200BAA6BD72905DBB; }; 30BE30F31D1AAED9FC893AA5 /* AudioToolbox.framework */ = {isa = PBXBuildFile; fileRef = 18C1CCE5684F9FA0478F27AD; }; 3825E8984D8F6AA00DDC6BAC /* DiscRecording.framework */ = {isa = PBXBuildFile; fileRef = EE758AD71415EB31BD3E82F3; }; @@ -60,6 +61,7 @@ 81017699F857F5BBFCA6E055 /* juce_events */ /* juce_events */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_events; path = ../../../../modules/juce_events; sourceTree = SOURCE_ROOT; }; 89B3243200BAA6BD72905DBB /* include_juce_audio_basics.mm */ /* include_juce_audio_basics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_basics.mm; path = ../../JuceLibraryCode/include_juce_audio_basics.mm; sourceTree = SOURCE_ROOT; }; 920FF34D4A00A5AD433EE5F4 /* juce_audio_basics */ /* juce_audio_basics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_audio_basics; path = ../../../../modules/juce_audio_basics; sourceTree = SOURCE_ROOT; }; + 932123993B04597421D5C406 /* include_juce_audio_processors_lv2_libs.cpp */ /* include_juce_audio_processors_lv2_libs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_processors_lv2_libs.cpp; path = ../../JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp; sourceTree = SOURCE_ROOT; }; 9516A19EE58DED8326DD0306 /* Info-App.plist */ /* Info-App.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info-App.plist"; path = "Info-App.plist"; sourceTree = SOURCE_ROOT; }; 9E05B63699A307598B66F829 /* include_juce_audio_formats.mm */ /* include_juce_audio_formats.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_formats.mm; path = ../../JuceLibraryCode/include_juce_audio_formats.mm; sourceTree = SOURCE_ROOT; }; 9EADBF913B7A454B6BE93A4A /* Accelerate.framework */ /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; @@ -127,6 +129,7 @@ 322D3066DCD98A8D0542236A, 9E05B63699A307598B66F829, 18E39207A0F5F9B8BC7EE94F, + 932123993B04597421D5C406, BAFDA8DE51E7A69E477439EB, 24425FFB0BCC7E54CADAA013, EDD11E2CC0B18196ADA0C87B, @@ -294,6 +297,7 @@ 01C9BC9A0A0F54B693CDA31A, 48ADBEF873A610909D727C97, D145903EE5DBFD1BD98423F3, + 2028993D80CFDE5A0ABA4A52, C7B090C29D8DE4D2503204B1, FFAF94080FF4A9995B33151E, D2CECF93178A1738DA02CA4A, diff --git a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj index c2ad07116b..e1211c3072 100644 --- a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj +++ b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj @@ -671,6 +671,123 @@ true + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + true @@ -746,6 +863,15 @@ true + + true + + + true + + + true + true @@ -803,6 +929,9 @@ true + + true + true @@ -815,6 +944,9 @@ true + + true + true @@ -884,6 +1016,9 @@ true + + true + true @@ -2087,7 +2222,10 @@ - + + /bigobj %(AdditionalOptions) + + @@ -2138,6 +2276,7 @@ + @@ -2338,6 +2477,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2406,6 +2607,9 @@ + + + @@ -2433,6 +2637,8 @@ + + @@ -2464,6 +2670,7 @@ + @@ -2626,6 +2833,7 @@ + @@ -2906,6 +3114,7 @@ + diff --git a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters index 530743f3cf..732f83d377 100644 --- a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters +++ b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters @@ -140,6 +140,129 @@ {86737735-F6BA-F64A-5EC7-5C9F36755F79} + + {CDCCDBC1-E1A7-558D-D4AA-B48003178AE3} + + + {6656EC0E-A4C5-985B-242F-01890BDEFB1B} + + + {107F6637-689A-6DAC-1F5D-FD9734F3A0D9} + + + {C60CB2F9-12ED-74A2-C81C-366287805252} + + + {0BE3157E-54F5-3F72-7023-A62A81D83443} + + + {AD43AFB9-8A3D-C470-E098-4ADA2D6B1C07} + + + {77E6DFCD-32E7-A7E2-75E9-50C49384FEDA} + + + {8449F5A3-222A-3C21-88BD-2ACA69CD290A} + + + {50066622-9190-C54D-FE24-563064A80DB4} + + + {E8F398A4-2CFC-D98B-343B-FB06B6B54063} + + + {18BD9026-D673-60FB-C5C0-E4234E9FE71C} + + + {E469C933-C0FE-3A95-168B-234F8B4B620B} + + + {375C3EDB-D1F5-AA38-D498-B462B7BDEDE9} + + + {2E0391E6-2B82-F704-4B16-9EF63C4E25C1} + + + {D1C825D2-2980-075A-3EC0-43930977748F} + + + {B350BD14-1FB6-A9A0-4725-75CFEFC2D067} + + + {96D16B7E-5FC5-182E-8734-37C9D27C2299} + + + {56518C02-F710-7D5E-09E6-4B152D5900C7} + + + {8D78CFF1-6E9E-3E78-317D-7954EE6482BB} + + + {6B811726-62F3-6E7C-BE8E-493A61CAA9E4} + + + {C84EE2C8-14A3-D098-62A4-E1C75B7FA13A} + + + {42DD7AA9-DF7D-D9F9-E50C-69C44211A42B} + + + {009A44FF-D1C5-47C0-64CC-9122107C73D1} + + + {AAEE24C0-066F-8593-70EA-B7AC7553E885} + + + {CEC45021-32A4-16BA-8E12-023B029608CD} + + + {E5DFE07F-5901-AF5C-7759-84EBF9717E5E} + + + {3A189BF7-28D6-C0C4-B831-97AD9E46FE5A} + + + {829FC6C3-87E7-0491-B8C3-DC3905FB6039} + + + {49174595-84D0-A512-B98C-0CFD2D772B8A} + + + {E27C67CB-E138-DCCB-110D-623E2C01F9BC} + + + {392635C4-010A-C8A2-F46D-1A3628445E1C} + + + {1FF26A52-F9B9-625F-DEE9-8FEE0C02F0F4} + + + {3A5A13A1-B57C-EF05-AC38-53B08A4C8D4A} + + + {97983FD5-3F19-2B58-4941-D8FBB6B92BA4} + + + {ADC9725E-0948-5908-13BD-0275DB25325A} + + + {37AD6CD9-9FE5-A457-B1FE-36A85F973502} + + + {0F3B119C-FE8B-3978-2D80-53248BBBCDEA} + + + {5E836BFC-319A-1CE7-13C9-BD9E87F0A228} + + + {5D8E291B-1BB8-3A55-0939-D13A8589C395} + + + {BE3B7D89-2DE8-3CA1-B00E-55821EF3AAAC} + + + {E0DE9D5D-2792-148A-2CE1-182A90DD5F0E} + {4DC60E78-BBC0-B540-63A2-37E14ABBEF09} @@ -985,6 +1108,123 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\src + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -1063,6 +1303,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -1120,6 +1369,9 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1135,6 +1387,9 @@ JUCE Modules\juce_audio_processors + + JUCE Modules\juce_audio_processors + JUCE Modules\juce_audio_utils\audio_cd @@ -1219,6 +1474,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -2521,6 +2779,9 @@ JUCE Library Code + + JUCE Library Code + JUCE Library Code @@ -2661,6 +2922,9 @@ JUCE Modules\juce_audio_basics\native + + JUCE Modules\juce_audio_basics\native + JUCE Modules\juce_audio_basics\sources @@ -3261,6 +3525,192 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\buf-size + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\data-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\dynmanifest + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\instance-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\midi + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\morph + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\options + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\parameters + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\patch + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-groups + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-props + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\presets + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\resize-port + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\state + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\time + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\ui + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\units + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\uri-map + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\urid + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\worker + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\serd + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\sratom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -3465,6 +3915,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -3546,6 +4005,12 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -3639,6 +4104,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -4125,6 +4593,9 @@ JUCE Modules\juce_events\native + + JUCE Modules\juce_events\native + JUCE Modules\juce_events\native @@ -4961,6 +5432,9 @@ JUCE Modules\juce_audio_formats\codecs\oggvorbis + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base diff --git a/extras/AudioPerformanceTest/Builds/iOS/AudioPerformanceTest.xcodeproj/project.pbxproj b/extras/AudioPerformanceTest/Builds/iOS/AudioPerformanceTest.xcodeproj/project.pbxproj index 245d81c0eb..b7e28d9ce5 100644 --- a/extras/AudioPerformanceTest/Builds/iOS/AudioPerformanceTest.xcodeproj/project.pbxproj +++ b/extras/AudioPerformanceTest/Builds/iOS/AudioPerformanceTest.xcodeproj/project.pbxproj @@ -10,6 +10,7 @@ 01C9BC9A0A0F54B693CDA31A /* include_juce_audio_devices.mm */ = {isa = PBXBuildFile; fileRef = 322D3066DCD98A8D0542236A; }; 06735FD618809C6823B18CFA /* CoreServices.framework */ = {isa = PBXBuildFile; fileRef = 5622D2E05ACA8C4395206C56; }; 07451DA87757F9EF80E31BE8 /* Main.cpp */ = {isa = PBXBuildFile; fileRef = 0564535EEA7E4462926EA0C9; }; + 2028993D80CFDE5A0ABA4A52 /* include_juce_audio_processors_lv2_libs.cpp */ = {isa = PBXBuildFile; fileRef = 932123993B04597421D5C406; }; 2BAED5B831BB736E77A718AE /* include_juce_audio_basics.mm */ = {isa = PBXBuildFile; fileRef = 89B3243200BAA6BD72905DBB; }; 30BE30F31D1AAED9FC893AA5 /* AudioToolbox.framework */ = {isa = PBXBuildFile; fileRef = 18C1CCE5684F9FA0478F27AD; }; 3C0CA1E555411B8B5B8F8FF0 /* LaunchScreen.storyboard */ = {isa = PBXBuildFile; fileRef = C8D9488DE9A88E4FBF28D417; }; @@ -65,6 +66,7 @@ 8693552B5FA53C2003A66302 /* Images.xcassets */ /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = AudioPerformanceTest/Images.xcassets; sourceTree = SOURCE_ROOT; }; 89B3243200BAA6BD72905DBB /* include_juce_audio_basics.mm */ /* include_juce_audio_basics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_basics.mm; path = ../../JuceLibraryCode/include_juce_audio_basics.mm; sourceTree = SOURCE_ROOT; }; 920FF34D4A00A5AD433EE5F4 /* juce_audio_basics */ /* juce_audio_basics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_audio_basics; path = ../../../../modules/juce_audio_basics; sourceTree = SOURCE_ROOT; }; + 932123993B04597421D5C406 /* include_juce_audio_processors_lv2_libs.cpp */ /* include_juce_audio_processors_lv2_libs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_processors_lv2_libs.cpp; path = ../../JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp; sourceTree = SOURCE_ROOT; }; 9516A19EE58DED8326DD0306 /* Info-App.plist */ /* Info-App.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info-App.plist"; path = "Info-App.plist"; sourceTree = SOURCE_ROOT; }; 9E05B63699A307598B66F829 /* include_juce_audio_formats.mm */ /* include_juce_audio_formats.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_formats.mm; path = ../../JuceLibraryCode/include_juce_audio_formats.mm; sourceTree = SOURCE_ROOT; }; 9EADBF913B7A454B6BE93A4A /* Accelerate.framework */ /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; @@ -137,6 +139,7 @@ 322D3066DCD98A8D0542236A, 9E05B63699A307598B66F829, 18E39207A0F5F9B8BC7EE94F, + 932123993B04597421D5C406, BAFDA8DE51E7A69E477439EB, 24425FFB0BCC7E54CADAA013, EDD11E2CC0B18196ADA0C87B, @@ -306,6 +309,7 @@ 01C9BC9A0A0F54B693CDA31A, 48ADBEF873A610909D727C97, D145903EE5DBFD1BD98423F3, + 2028993D80CFDE5A0ABA4A52, C7B090C29D8DE4D2503204B1, FFAF94080FF4A9995B33151E, D2CECF93178A1738DA02CA4A, diff --git a/extras/AudioPerformanceTest/JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp b/extras/AudioPerformanceTest/JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp new file mode 100644 index 0000000000..64b4d5f4d3 --- /dev/null +++ b/extras/AudioPerformanceTest/JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/extras/AudioPluginHost/AudioPluginHost.jucer b/extras/AudioPluginHost/AudioPluginHost.jucer index d8961520f0..2b7b50bdc0 100644 --- a/extras/AudioPluginHost/AudioPluginHost.jucer +++ b/extras/AudioPluginHost/AudioPluginHost.jucer @@ -241,7 +241,7 @@ + JUCE_PLUGINHOST_VST3="1" JUCE_PLUGINHOST_LADSPA="1" JUCE_PLUGINHOST_LV2="1"/> @@ -260,5 +260,7 @@ + + diff --git a/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt b/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt index 658e1be194..cde798552c 100644 --- a/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt +++ b/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt @@ -15,6 +15,14 @@ set_source_files_properties("${ANDROID_NDK}/sources/android/cpufeatures/cpu-feat add_definitions([[-DJUCE_ANDROID=1]] [[-DJUCE_ANDROID_API_VERSION=23]] [[-DJUCE_PUSH_NOTIFICATIONS=1]] [[-DJUCE_PUSH_NOTIFICATIONS_ACTIVITY="com/rmsl/juce/JuceActivity"]] [[-DJUCE_ANDROID_GL_ES_VERSION_3_0=1]] [[-DJUCER_ANDROIDSTUDIO_7F0E4A25=1]] [[-DJUCE_APP_VERSION=1.0.0]] [[-DJUCE_APP_VERSION_HEX=0x10000]]) include_directories( AFTER + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK" "../../../../../modules/juce_audio_processors/format_types/VST3_SDK" "../../../JuceLibraryCode" "../../../../../modules" @@ -24,9 +32,9 @@ include_directories( AFTER enable_language(ASM) if(JUCE_BUILD_CONFIGURATION MATCHES "DEBUG") - add_definitions([[-DJUCE_DISPLAY_SPLASH_SCREEN=0]] [[-DJUCE_USE_DARK_SPLASH_SCREEN=1]] [[-DJUCE_PROJUCER_VERSION=0x60106]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1]] [[-DJUCE_MODULE_AVAILABLE_juce_core=1]] [[-DJUCE_MODULE_AVAILABLE_juce_cryptography=1]] [[-DJUCE_MODULE_AVAILABLE_juce_data_structures=1]] [[-DJUCE_MODULE_AVAILABLE_juce_dsp=1]] [[-DJUCE_MODULE_AVAILABLE_juce_events=1]] [[-DJUCE_MODULE_AVAILABLE_juce_graphics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1]] [[-DJUCE_MODULE_AVAILABLE_juce_opengl=1]] [[-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1]] [[-DJUCE_WASAPI=1]] [[-DJUCE_DIRECTSOUND=1]] [[-DJUCE_ALSA=1]] [[-DJUCE_USE_FLAC=0]] [[-DJUCE_USE_OGGVORBIS=1]] [[-DJUCE_PLUGINHOST_VST3=1]] [[-DJUCE_PLUGINHOST_AU=1]] [[-DJUCE_PLUGINHOST_LADSPA=1]] [[-DJUCE_USE_CDREADER=0]] [[-DJUCE_USE_CDBURNER=0]] [[-DJUCE_WEB_BROWSER=0]] [[-DJUCE_STANDALONE_APPLICATION=1]] [[-DJUCER_ANDROIDSTUDIO_7F0E4A25=1]] [[-DJUCE_APP_VERSION=1.0.0]] [[-DJUCE_APP_VERSION_HEX=0x10000]] [[-DDEBUG=1]] [[-D_DEBUG=1]]) + add_definitions([[-DJUCE_DISPLAY_SPLASH_SCREEN=0]] [[-DJUCE_USE_DARK_SPLASH_SCREEN=1]] [[-DJUCE_PROJUCER_VERSION=0x60106]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1]] [[-DJUCE_MODULE_AVAILABLE_juce_core=1]] [[-DJUCE_MODULE_AVAILABLE_juce_cryptography=1]] [[-DJUCE_MODULE_AVAILABLE_juce_data_structures=1]] [[-DJUCE_MODULE_AVAILABLE_juce_dsp=1]] [[-DJUCE_MODULE_AVAILABLE_juce_events=1]] [[-DJUCE_MODULE_AVAILABLE_juce_graphics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1]] [[-DJUCE_MODULE_AVAILABLE_juce_opengl=1]] [[-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1]] [[-DJUCE_WASAPI=1]] [[-DJUCE_DIRECTSOUND=1]] [[-DJUCE_ALSA=1]] [[-DJUCE_USE_FLAC=0]] [[-DJUCE_USE_OGGVORBIS=1]] [[-DJUCE_PLUGINHOST_VST3=1]] [[-DJUCE_PLUGINHOST_AU=1]] [[-DJUCE_PLUGINHOST_LADSPA=1]] [[-DJUCE_PLUGINHOST_LV2=1]] [[-DJUCE_USE_CDREADER=0]] [[-DJUCE_USE_CDBURNER=0]] [[-DJUCE_WEB_BROWSER=0]] [[-DJUCE_STANDALONE_APPLICATION=1]] [[-DJUCER_ANDROIDSTUDIO_7F0E4A25=1]] [[-DJUCE_APP_VERSION=1.0.0]] [[-DJUCE_APP_VERSION_HEX=0x10000]] [[-DDEBUG=1]] [[-D_DEBUG=1]]) elseif(JUCE_BUILD_CONFIGURATION MATCHES "RELEASE") - add_definitions([[-DJUCE_DISPLAY_SPLASH_SCREEN=0]] [[-DJUCE_USE_DARK_SPLASH_SCREEN=1]] [[-DJUCE_PROJUCER_VERSION=0x60106]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1]] [[-DJUCE_MODULE_AVAILABLE_juce_core=1]] [[-DJUCE_MODULE_AVAILABLE_juce_cryptography=1]] [[-DJUCE_MODULE_AVAILABLE_juce_data_structures=1]] [[-DJUCE_MODULE_AVAILABLE_juce_dsp=1]] [[-DJUCE_MODULE_AVAILABLE_juce_events=1]] [[-DJUCE_MODULE_AVAILABLE_juce_graphics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1]] [[-DJUCE_MODULE_AVAILABLE_juce_opengl=1]] [[-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1]] [[-DJUCE_WASAPI=1]] [[-DJUCE_DIRECTSOUND=1]] [[-DJUCE_ALSA=1]] [[-DJUCE_USE_FLAC=0]] [[-DJUCE_USE_OGGVORBIS=1]] [[-DJUCE_PLUGINHOST_VST3=1]] [[-DJUCE_PLUGINHOST_AU=1]] [[-DJUCE_PLUGINHOST_LADSPA=1]] [[-DJUCE_USE_CDREADER=0]] [[-DJUCE_USE_CDBURNER=0]] [[-DJUCE_WEB_BROWSER=0]] [[-DJUCE_STANDALONE_APPLICATION=1]] [[-DJUCER_ANDROIDSTUDIO_7F0E4A25=1]] [[-DJUCE_APP_VERSION=1.0.0]] [[-DJUCE_APP_VERSION_HEX=0x10000]] [[-DNDEBUG=1]]) + add_definitions([[-DJUCE_DISPLAY_SPLASH_SCREEN=0]] [[-DJUCE_USE_DARK_SPLASH_SCREEN=1]] [[-DJUCE_PROJUCER_VERSION=0x60106]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1]] [[-DJUCE_MODULE_AVAILABLE_juce_core=1]] [[-DJUCE_MODULE_AVAILABLE_juce_cryptography=1]] [[-DJUCE_MODULE_AVAILABLE_juce_data_structures=1]] [[-DJUCE_MODULE_AVAILABLE_juce_dsp=1]] [[-DJUCE_MODULE_AVAILABLE_juce_events=1]] [[-DJUCE_MODULE_AVAILABLE_juce_graphics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1]] [[-DJUCE_MODULE_AVAILABLE_juce_opengl=1]] [[-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1]] [[-DJUCE_WASAPI=1]] [[-DJUCE_DIRECTSOUND=1]] [[-DJUCE_ALSA=1]] [[-DJUCE_USE_FLAC=0]] [[-DJUCE_USE_OGGVORBIS=1]] [[-DJUCE_PLUGINHOST_VST3=1]] [[-DJUCE_PLUGINHOST_AU=1]] [[-DJUCE_PLUGINHOST_LADSPA=1]] [[-DJUCE_PLUGINHOST_LV2=1]] [[-DJUCE_USE_CDREADER=0]] [[-DJUCE_USE_CDBURNER=0]] [[-DJUCE_WEB_BROWSER=0]] [[-DJUCE_STANDALONE_APPLICATION=1]] [[-DJUCER_ANDROIDSTUDIO_7F0E4A25=1]] [[-DJUCE_APP_VERSION=1.0.0]] [[-DJUCE_APP_VERSION_HEX=0x10000]] [[-DNDEBUG=1]]) if(NOT (ANDROID_ABI STREQUAL "mips" OR ANDROID_ABI STREQUAL "mips64")) set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -flto") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -flto") @@ -121,6 +129,7 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.cpp" "../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.h" "../../../../../modules/juce_audio_basics/native/juce_mac_CoreAudioLayouts.h" + "../../../../../modules/juce_audio_basics/native/juce_mac_CoreAudioTimeConversions.h" "../../../../../modules/juce_audio_basics/sources/juce_AudioSource.h" "../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp" "../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.h" @@ -483,6 +492,108 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.h" "../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp" "../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/lilv/lilv.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/lilv/lilvmm.hpp" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/common.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/tree.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/tree.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/collections.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/filesystem.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/filesystem.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/instance.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/lib.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/lilv_internal.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/node.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/plugin.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/pluginclass.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/port.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/query.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/scalepoint.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/state.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/ui.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/util.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/world.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom-test-utils.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom-test.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/forge-overflow-test.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/forge.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/util.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/buf-size/buf-size.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/attributes.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2_util.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/data-access/data-access.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/dynmanifest/dynmanifest.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event-helpers.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/instance-access/instance-access.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/log.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/logger.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/midi/midi.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/morph/morph.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/options/options.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/parameters/parameters.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/patch/patch.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-groups/port-groups.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-props/port-props.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/presets/presets.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/resize-port/resize-port.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/state/state.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/time/time.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/ui/ui.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/units/units.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/uri-map/uri-map.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/urid/urid.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/worker/worker.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/serd/serd.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/attributes.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/base64.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/base64.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_sink.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_source.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_source.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/env.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/n3.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/node.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/node.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/reader.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/reader.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serd_config.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serd_internal.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serdi.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/stack.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/string.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/string_utils.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/system.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/system.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/uri.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/uri_utils.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/writer.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/sord/sord.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/sord/sordmm.hpp" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/btree.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/btree.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/common.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/digest.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/digest.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/hash.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/hash.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_config.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_internal.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_test.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_validate.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sordi.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sordmm_test.cpp" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/syntax.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom/sratom/sratom.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom/src/sratom.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/juce_lv2_config.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv_config.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/README.md" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd_config.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord_config.h" "../../../../../modules/juce_audio_processors/format_types/VST3_SDK/base/source/baseiids.cpp" "../../../../../modules/juce_audio_processors/format_types/VST3_SDK/base/source/classfactoryhelpers.h" "../../../../../modules/juce_audio_processors/format_types/VST3_SDK/base/source/fbuffer.cpp" @@ -586,6 +697,12 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp" "../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h" "../../../../../modules/juce_audio_processors/format_types/juce_LegacyAudioParameter.cpp" + "../../../../../modules/juce_audio_processors/format_types/juce_LV2Common.h" + "../../../../../modules/juce_audio_processors/format_types/juce_LV2PluginFormat.cpp" + "../../../../../modules/juce_audio_processors/format_types/juce_LV2PluginFormat.h" + "../../../../../modules/juce_audio_processors/format_types/juce_LV2PluginFormat_test.cpp" + "../../../../../modules/juce_audio_processors/format_types/juce_LV2Resources.h" + "../../../../../modules/juce_audio_processors/format_types/juce_LV2SupportLibs.cpp" "../../../../../modules/juce_audio_processors/format_types/juce_VST3Common.h" "../../../../../modules/juce_audio_processors/format_types/juce_VST3Headers.h" "../../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp" @@ -632,6 +749,9 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp" "../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h" "../../../../../modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h" + "../../../../../modules/juce_audio_processors/utilities/juce_FlagCache.h" + "../../../../../modules/juce_audio_processors/utilities/juce_NativeScaleFactorNotifier.cpp" + "../../../../../modules/juce_audio_processors/utilities/juce_NativeScaleFactorNotifier.h" "../../../../../modules/juce_audio_processors/utilities/juce_ParameterAttachments.cpp" "../../../../../modules/juce_audio_processors/utilities/juce_ParameterAttachments.h" "../../../../../modules/juce_audio_processors/utilities/juce_PluginHostType.cpp" @@ -642,6 +762,7 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.h" "../../../../../modules/juce_audio_processors/juce_audio_processors.cpp" "../../../../../modules/juce_audio_processors/juce_audio_processors.mm" + "../../../../../modules/juce_audio_processors/juce_audio_processors_lv2_libs.cpp" "../../../../../modules/juce_audio_processors/juce_audio_processors.h" "../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDBurner.h" "../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDReader.cpp" @@ -696,6 +817,8 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_core/containers/juce_ListenerList.h" "../../../../../modules/juce_core/containers/juce_NamedValueSet.cpp" "../../../../../modules/juce_core/containers/juce_NamedValueSet.h" + "../../../../../modules/juce_core/containers/juce_Optional.h" + "../../../../../modules/juce_core/containers/juce_Optional_test.cpp" "../../../../../modules/juce_core/containers/juce_OwnedArray.cpp" "../../../../../modules/juce_core/containers/juce_OwnedArray.h" "../../../../../modules/juce_core/containers/juce_PropertySet.cpp" @@ -1086,6 +1209,7 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_events/native/juce_android_Messaging.cpp" "../../../../../modules/juce_events/native/juce_ios_MessageManager.mm" "../../../../../modules/juce_events/native/juce_linux_EventLoop.h" + "../../../../../modules/juce_events/native/juce_linux_EventLoopInternal.h" "../../../../../modules/juce_events/native/juce_linux_Messaging.cpp" "../../../../../modules/juce_events/native/juce_mac_MessageManager.mm" "../../../../../modules/juce_events/native/juce_osx_MessageQueue.h" @@ -1706,6 +1830,7 @@ add_library( ${BINARY_NAME} "../../../JuceLibraryCode/include_juce_audio_devices.cpp" "../../../JuceLibraryCode/include_juce_audio_formats.cpp" "../../../JuceLibraryCode/include_juce_audio_processors.cpp" + "../../../JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp" "../../../JuceLibraryCode/include_juce_audio_utils.cpp" "../../../JuceLibraryCode/include_juce_core.cpp" "../../../JuceLibraryCode/include_juce_cryptography.cpp" @@ -1794,6 +1919,7 @@ set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_M set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_basics/native/juce_mac_CoreAudioLayouts.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/native/juce_mac_CoreAudioTimeConversions.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_AudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2156,6 +2282,108 @@ set_source_files_properties("../../../../../modules/juce_audio_processors/format set_source_files_properties("../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/lilv/lilv.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/lilv/lilvmm.hpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/common.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/tree.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/tree.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/collections.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/filesystem.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/filesystem.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/instance.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/lib.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/lilv_internal.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/node.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/plugin.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/pluginclass.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/port.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/query.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/scalepoint.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/state.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/ui.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/util.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/world.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom-test-utils.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom-test.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/forge-overflow-test.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/forge.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/util.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/buf-size/buf-size.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/attributes.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2_util.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/data-access/data-access.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/dynmanifest/dynmanifest.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event-helpers.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/instance-access/instance-access.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/log.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/logger.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/midi/midi.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/morph/morph.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/options/options.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/parameters/parameters.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/patch/patch.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-groups/port-groups.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-props/port-props.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/presets/presets.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/resize-port/resize-port.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/state/state.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/time/time.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/ui/ui.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/units/units.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/uri-map/uri-map.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/urid/urid.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/worker/worker.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/serd/serd.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/attributes.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/base64.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/base64.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_sink.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_source.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_source.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/env.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/n3.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/node.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/node.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/reader.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/reader.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serd_config.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serd_internal.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serdi.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/stack.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/string.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/string_utils.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/system.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/system.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/uri.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/uri_utils.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/writer.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/sord/sord.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/sord/sordmm.hpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/btree.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/btree.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/common.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/digest.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/digest.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/hash.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/hash.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_config.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_internal.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_test.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_validate.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sordi.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sordmm_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/syntax.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom/sratom/sratom.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom/src/sratom.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/juce_lv2_config.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv_config.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/README.md" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd_config.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord_config.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/VST3_SDK/base/source/baseiids.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/VST3_SDK/base/source/classfactoryhelpers.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/VST3_SDK/base/source/fbuffer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2259,6 +2487,12 @@ set_source_files_properties("../../../../../modules/juce_audio_processors/format set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LegacyAudioParameter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LV2Common.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LV2PluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LV2PluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LV2PluginFormat_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LV2Resources.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LV2SupportLibs.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VST3Common.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VST3Headers.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2305,6 +2539,9 @@ set_source_files_properties("../../../../../modules/juce_audio_processors/utilit set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_FlagCache.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_NativeScaleFactorNotifier.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_NativeScaleFactorNotifier.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_ParameterAttachments.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_ParameterAttachments.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_PluginHostType.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2315,6 +2552,7 @@ set_source_files_properties("../../../../../modules/juce_audio_processors/utilit set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/juce_audio_processors.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/juce_audio_processors.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/juce_audio_processors_lv2_libs.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/juce_audio_processors.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDBurner.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDReader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2369,6 +2607,8 @@ set_source_files_properties("../../../../../modules/juce_core/containers/juce_Li set_source_files_properties("../../../../../modules/juce_core/containers/juce_ListenerList.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_core/containers/juce_NamedValueSet.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_core/containers/juce_NamedValueSet.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_Optional.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_Optional_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_core/containers/juce_OwnedArray.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_core/containers/juce_OwnedArray.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_core/containers/juce_PropertySet.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2759,6 +2999,7 @@ set_source_files_properties("../../../../../modules/juce_events/messages/juce_No set_source_files_properties("../../../../../modules/juce_events/native/juce_android_Messaging.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_events/native/juce_ios_MessageManager.mm" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_events/native/juce_linux_EventLoop.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/native/juce_linux_EventLoopInternal.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_events/native/juce_linux_Messaging.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_events/native/juce_mac_MessageManager.mm" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_events/native/juce_osx_MessageQueue.h" PROPERTIES HEADER_FILE_ONLY TRUE) diff --git a/extras/AudioPluginHost/Builds/LinuxMakefile/Makefile b/extras/AudioPluginHost/Builds/LinuxMakefile/Makefile index e634d41c67..7fd2578a66 100644 --- a/extras/AudioPluginHost/Builds/LinuxMakefile/Makefile +++ b/extras/AudioPluginHost/Builds/LinuxMakefile/Makefile @@ -39,7 +39,7 @@ ifeq ($(CONFIG),Debug) TARGET_ARCH := endif - JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DDEBUG=1" "-D_DEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_dsp=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_WASAPI=1" "-DJUCE_DIRECTSOUND=1" "-DJUCE_ALSA=1" "-DJUCE_USE_FLAC=0" "-DJUCE_USE_OGGVORBIS=1" "-DJUCE_PLUGINHOST_VST3=1" "-DJUCE_PLUGINHOST_AU=1" "-DJUCE_PLUGINHOST_LADSPA=1" "-DJUCE_USE_CDREADER=0" "-DJUCE_USE_CDBURNER=0" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell $(PKG_CONFIG) --cflags alsa freetype2 libcurl) -pthread -I../../../../modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) + JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DDEBUG=1" "-D_DEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_dsp=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_WASAPI=1" "-DJUCE_DIRECTSOUND=1" "-DJUCE_ALSA=1" "-DJUCE_USE_FLAC=0" "-DJUCE_USE_OGGVORBIS=1" "-DJUCE_PLUGINHOST_VST3=1" "-DJUCE_PLUGINHOST_AU=1" "-DJUCE_PLUGINHOST_LADSPA=1" "-DJUCE_PLUGINHOST_LV2=1" "-DJUCE_USE_CDREADER=0" "-DJUCE_USE_CDBURNER=0" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell $(PKG_CONFIG) --cflags alsa freetype2 libcurl) -pthread -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 -I../../../../modules/juce_audio_processors/format_types/LV2_SDK -I../../../../modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" JUCE_TARGET_APP := AudioPluginHost @@ -60,7 +60,7 @@ ifeq ($(CONFIG),Release) TARGET_ARCH := endif - JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_dsp=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_WASAPI=1" "-DJUCE_DIRECTSOUND=1" "-DJUCE_ALSA=1" "-DJUCE_USE_FLAC=0" "-DJUCE_USE_OGGVORBIS=1" "-DJUCE_PLUGINHOST_VST3=1" "-DJUCE_PLUGINHOST_AU=1" "-DJUCE_PLUGINHOST_LADSPA=1" "-DJUCE_USE_CDREADER=0" "-DJUCE_USE_CDBURNER=0" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell $(PKG_CONFIG) --cflags alsa freetype2 libcurl) -pthread -I../../../../modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) + JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_dsp=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_WASAPI=1" "-DJUCE_DIRECTSOUND=1" "-DJUCE_ALSA=1" "-DJUCE_USE_FLAC=0" "-DJUCE_USE_OGGVORBIS=1" "-DJUCE_PLUGINHOST_VST3=1" "-DJUCE_PLUGINHOST_AU=1" "-DJUCE_PLUGINHOST_LADSPA=1" "-DJUCE_PLUGINHOST_LV2=1" "-DJUCE_USE_CDREADER=0" "-DJUCE_USE_CDBURNER=0" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell $(PKG_CONFIG) --cflags alsa freetype2 libcurl) -pthread -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 -I../../../../modules/juce_audio_processors/format_types/LV2_SDK -I../../../../modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" JUCE_TARGET_APP := AudioPluginHost @@ -83,6 +83,7 @@ OBJECTS_APP := \ $(JUCE_OBJDIR)/include_juce_audio_devices_63111d02.o \ $(JUCE_OBJDIR)/include_juce_audio_formats_15f82001.o \ $(JUCE_OBJDIR)/include_juce_audio_processors_10c03666.o \ + $(JUCE_OBJDIR)/include_juce_audio_processors_lv2_libs_12bdca08.o \ $(JUCE_OBJDIR)/include_juce_audio_utils_9f9fb2d6.o \ $(JUCE_OBJDIR)/include_juce_core_f26d17db.o \ $(JUCE_OBJDIR)/include_juce_cryptography_8cb807a8.o \ @@ -162,6 +163,11 @@ $(JUCE_OBJDIR)/include_juce_audio_processors_10c03666.o: ../../JuceLibraryCode/i @echo "Compiling include_juce_audio_processors.cpp" $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" +$(JUCE_OBJDIR)/include_juce_audio_processors_lv2_libs_12bdca08.o: ../../JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp + -$(V_AT)mkdir -p $(JUCE_OBJDIR) + @echo "Compiling include_juce_audio_processors_lv2_libs.cpp" + $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" + $(JUCE_OBJDIR)/include_juce_audio_utils_9f9fb2d6.o: ../../JuceLibraryCode/include_juce_audio_utils.cpp -$(V_AT)mkdir -p $(JUCE_OBJDIR) @echo "Compiling include_juce_audio_utils.cpp" diff --git a/extras/AudioPluginHost/Builds/MacOSX/AudioPluginHost.xcodeproj/project.pbxproj b/extras/AudioPluginHost/Builds/MacOSX/AudioPluginHost.xcodeproj/project.pbxproj index 7329d10c8a..ace3223cc1 100644 --- a/extras/AudioPluginHost/Builds/MacOSX/AudioPluginHost.xcodeproj/project.pbxproj +++ b/extras/AudioPluginHost/Builds/MacOSX/AudioPluginHost.xcodeproj/project.pbxproj @@ -20,6 +20,7 @@ 443244451A0F2064D4767337 /* Icon.icns */ = {isa = PBXBuildFile; fileRef = 2A6983F82B13F9E8B10299AE; }; 4DB15177DDC357F4503F88CF /* WebKit.framework */ = {isa = PBXBuildFile; fileRef = B457EE687507BF1DEEA7581F; }; 5C4D406B924230F83E3580AD /* include_juce_audio_devices.mm */ = {isa = PBXBuildFile; fileRef = 65968EA1B476D71F14DE1D58; }; + 60BBD03840ABDD719FED194F /* include_juce_audio_processors_lv2_libs.cpp */ = {isa = PBXBuildFile; fileRef = 5183A94449F6317518C48B0C; }; 68FBFDA1FE637B3EDA09A592 /* IOKit.framework */ = {isa = PBXBuildFile; fileRef = 4DF6E6E41E10965AD169143B; }; 70580743C3D5695F065FF698 /* CoreAudioKit.framework */ = {isa = PBXBuildFile; fileRef = E68018DE199135B7F738FB17; }; 73E371F1B912FCCAE0CD7E5D /* Accelerate.framework */ = {isa = PBXBuildFile; fileRef = 86CA337014D3F67E906FFD28; }; @@ -67,6 +68,7 @@ 46C3C2CD301CD59C51FD02D6 /* PluginGraph.h */ /* PluginGraph.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PluginGraph.h; path = ../../Source/Plugins/PluginGraph.h; sourceTree = SOURCE_ROOT; }; 4C7D82F9274A4F9DBF11235C /* include_juce_audio_basics.mm */ /* include_juce_audio_basics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_basics.mm; path = ../../JuceLibraryCode/include_juce_audio_basics.mm; sourceTree = SOURCE_ROOT; }; 4DF6E6E41E10965AD169143B /* IOKit.framework */ /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; + 5183A94449F6317518C48B0C /* include_juce_audio_processors_lv2_libs.cpp */ /* include_juce_audio_processors_lv2_libs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_processors_lv2_libs.cpp; path = ../../JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp; sourceTree = SOURCE_ROOT; }; 5313EB852E41EE58B199B9A2 /* juce_audio_devices */ /* juce_audio_devices */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_audio_devices; path = ../../../../modules/juce_audio_devices; sourceTree = SOURCE_ROOT; }; 57DF618F1DE781556B7AFC32 /* Info-App.plist */ /* Info-App.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info-App.plist"; path = "Info-App.plist"; sourceTree = SOURCE_ROOT; }; 59842A98E5EBBC54B50C04CD /* juce_events */ /* juce_events */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_events; path = ../../../../modules/juce_events; sourceTree = SOURCE_ROOT; }; @@ -180,6 +182,7 @@ 65968EA1B476D71F14DE1D58, 5D250A57C7DEA80248F30EED, 5FBD6C402617272052BB4D81, + 5183A94449F6317518C48B0C, B285CAB91AE928C476CA4F9C, 683CEE986A2467C850FE99E6, B8E24A5CEE6B7055537725CF, @@ -399,6 +402,7 @@ 5C4D406B924230F83E3580AD, F4DD98B9310B679D50A2C8A6, CAF0DE157C8F7D9F168AA3B6, + 60BBD03840ABDD719FED194F, 0F20A4AE04736634F097F5A6, 76A80851698FC773D2479B4E, E4A926EF695823F0F13268FF, @@ -457,6 +461,7 @@ "JUCE_PLUGINHOST_VST3=1", "JUCE_PLUGINHOST_AU=1", "JUCE_PLUGINHOST_LADSPA=1", + "JUCE_PLUGINHOST_LV2=1", "JUCE_USE_CDREADER=0", "JUCE_USE_CDBURNER=0", "JUCE_WEB_BROWSER=0", @@ -475,6 +480,14 @@ ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK", "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK", "$(SRCROOT)/../../JuceLibraryCode", "$(SRCROOT)/../../../../modules", @@ -485,7 +498,7 @@ INSTALL_PATH = "$(HOME)/Applications"; LLVM_LTO = YES; MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; + MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; @@ -588,6 +601,7 @@ "JUCE_PLUGINHOST_VST3=1", "JUCE_PLUGINHOST_AU=1", "JUCE_PLUGINHOST_LADSPA=1", + "JUCE_PLUGINHOST_LV2=1", "JUCE_USE_CDREADER=0", "JUCE_USE_CDBURNER=0", "JUCE_WEB_BROWSER=0", @@ -606,6 +620,14 @@ ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK", "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK", "$(SRCROOT)/../../JuceLibraryCode", "$(SRCROOT)/../../../../modules", @@ -615,7 +637,7 @@ INFOPLIST_PREPROCESS = NO; INSTALL_PATH = "$(HOME)/Applications"; MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; + MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; diff --git a/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj index 1172100076..3dca655868 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj +++ b/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj @@ -63,8 +63,8 @@ Disabled ProgramDatabase - ..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_PLUGINHOST_LV2=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -105,8 +105,8 @@ Full - ..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_PLUGINHOST_LV2=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) MultiThreadedDLL true NotUsing @@ -678,6 +678,123 @@ true + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + true @@ -753,6 +870,15 @@ true + + true + + + true + + + true + true @@ -810,6 +936,9 @@ true + + true + true @@ -822,6 +951,9 @@ true + + true + true @@ -891,6 +1023,9 @@ true + + true + true @@ -2260,7 +2395,10 @@ - + + /bigobj %(AdditionalOptions) + + @@ -2319,6 +2457,7 @@ + @@ -2519,6 +2658,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2587,6 +2788,9 @@ + + + @@ -2614,6 +2818,8 @@ + + @@ -2645,6 +2851,7 @@ + @@ -2861,6 +3068,7 @@ + @@ -3174,6 +3382,7 @@ + diff --git a/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj.filters index dd9b93d339..a7512a68ad 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj.filters +++ b/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj.filters @@ -149,6 +149,129 @@ {86737735-F6BA-F64A-5EC7-5C9F36755F79} + + {CDCCDBC1-E1A7-558D-D4AA-B48003178AE3} + + + {6656EC0E-A4C5-985B-242F-01890BDEFB1B} + + + {107F6637-689A-6DAC-1F5D-FD9734F3A0D9} + + + {C60CB2F9-12ED-74A2-C81C-366287805252} + + + {0BE3157E-54F5-3F72-7023-A62A81D83443} + + + {AD43AFB9-8A3D-C470-E098-4ADA2D6B1C07} + + + {77E6DFCD-32E7-A7E2-75E9-50C49384FEDA} + + + {8449F5A3-222A-3C21-88BD-2ACA69CD290A} + + + {50066622-9190-C54D-FE24-563064A80DB4} + + + {E8F398A4-2CFC-D98B-343B-FB06B6B54063} + + + {18BD9026-D673-60FB-C5C0-E4234E9FE71C} + + + {E469C933-C0FE-3A95-168B-234F8B4B620B} + + + {375C3EDB-D1F5-AA38-D498-B462B7BDEDE9} + + + {2E0391E6-2B82-F704-4B16-9EF63C4E25C1} + + + {D1C825D2-2980-075A-3EC0-43930977748F} + + + {B350BD14-1FB6-A9A0-4725-75CFEFC2D067} + + + {96D16B7E-5FC5-182E-8734-37C9D27C2299} + + + {56518C02-F710-7D5E-09E6-4B152D5900C7} + + + {8D78CFF1-6E9E-3E78-317D-7954EE6482BB} + + + {6B811726-62F3-6E7C-BE8E-493A61CAA9E4} + + + {C84EE2C8-14A3-D098-62A4-E1C75B7FA13A} + + + {42DD7AA9-DF7D-D9F9-E50C-69C44211A42B} + + + {009A44FF-D1C5-47C0-64CC-9122107C73D1} + + + {AAEE24C0-066F-8593-70EA-B7AC7553E885} + + + {CEC45021-32A4-16BA-8E12-023B029608CD} + + + {E5DFE07F-5901-AF5C-7759-84EBF9717E5E} + + + {3A189BF7-28D6-C0C4-B831-97AD9E46FE5A} + + + {829FC6C3-87E7-0491-B8C3-DC3905FB6039} + + + {49174595-84D0-A512-B98C-0CFD2D772B8A} + + + {E27C67CB-E138-DCCB-110D-623E2C01F9BC} + + + {392635C4-010A-C8A2-F46D-1A3628445E1C} + + + {1FF26A52-F9B9-625F-DEE9-8FEE0C02F0F4} + + + {3A5A13A1-B57C-EF05-AC38-53B08A4C8D4A} + + + {97983FD5-3F19-2B58-4941-D8FBB6B92BA4} + + + {ADC9725E-0948-5908-13BD-0275DB25325A} + + + {37AD6CD9-9FE5-A457-B1FE-36A85F973502} + + + {0F3B119C-FE8B-3978-2D80-53248BBBCDEA} + + + {5E836BFC-319A-1CE7-13C9-BD9E87F0A228} + + + {5D8E291B-1BB8-3A55-0939-D13A8589C395} + + + {BE3B7D89-2DE8-3CA1-B00E-55821EF3AAAC} + + + {E0DE9D5D-2792-148A-2CE1-182A90DD5F0E} + {4DC60E78-BBC0-B540-63A2-37E14ABBEF09} @@ -1057,6 +1180,123 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\src + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -1135,6 +1375,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -1192,6 +1441,9 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1207,6 +1459,9 @@ JUCE Modules\juce_audio_processors + + JUCE Modules\juce_audio_processors + JUCE Modules\juce_audio_utils\audio_cd @@ -1291,6 +1546,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -2770,6 +3028,9 @@ JUCE Library Code + + JUCE Library Code + JUCE Library Code @@ -2934,6 +3195,9 @@ JUCE Modules\juce_audio_basics\native + + JUCE Modules\juce_audio_basics\native + JUCE Modules\juce_audio_basics\sources @@ -3534,6 +3798,192 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\buf-size + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\data-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\dynmanifest + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\instance-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\midi + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\morph + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\options + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\parameters + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\patch + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-groups + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-props + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\presets + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\resize-port + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\state + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\time + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\ui + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\units + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\uri-map + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\urid + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\worker + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\serd + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\sratom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -3738,6 +4188,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -3819,6 +4278,12 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -3912,6 +4377,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -4560,6 +5028,9 @@ JUCE Modules\juce_events\native + + JUCE Modules\juce_events\native + JUCE Modules\juce_events\native @@ -5495,6 +5966,9 @@ JUCE Modules\juce_audio_formats\codecs\oggvorbis + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base diff --git a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj index d966a8355c..b615027cbd 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj +++ b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj @@ -63,8 +63,8 @@ Disabled ProgramDatabase - ..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_PLUGINHOST_LV2=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -105,8 +105,8 @@ Full - ..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_PLUGINHOST_LV2=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) MultiThreadedDLL true NotUsing @@ -678,6 +678,123 @@ true + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + true @@ -753,6 +870,15 @@ true + + true + + + true + + + true + true @@ -810,6 +936,9 @@ true + + true + true @@ -822,6 +951,9 @@ true + + true + true @@ -891,6 +1023,9 @@ true + + true + true @@ -2260,7 +2395,10 @@ - + + /bigobj %(AdditionalOptions) + + @@ -2319,6 +2457,7 @@ + @@ -2519,6 +2658,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2587,6 +2788,9 @@ + + + @@ -2614,6 +2818,8 @@ + + @@ -2645,6 +2851,7 @@ + @@ -2861,6 +3068,7 @@ + @@ -3174,6 +3382,7 @@ + diff --git a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters index 1678de0a1d..d897f689ca 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters +++ b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters @@ -149,6 +149,129 @@ {86737735-F6BA-F64A-5EC7-5C9F36755F79} + + {CDCCDBC1-E1A7-558D-D4AA-B48003178AE3} + + + {6656EC0E-A4C5-985B-242F-01890BDEFB1B} + + + {107F6637-689A-6DAC-1F5D-FD9734F3A0D9} + + + {C60CB2F9-12ED-74A2-C81C-366287805252} + + + {0BE3157E-54F5-3F72-7023-A62A81D83443} + + + {AD43AFB9-8A3D-C470-E098-4ADA2D6B1C07} + + + {77E6DFCD-32E7-A7E2-75E9-50C49384FEDA} + + + {8449F5A3-222A-3C21-88BD-2ACA69CD290A} + + + {50066622-9190-C54D-FE24-563064A80DB4} + + + {E8F398A4-2CFC-D98B-343B-FB06B6B54063} + + + {18BD9026-D673-60FB-C5C0-E4234E9FE71C} + + + {E469C933-C0FE-3A95-168B-234F8B4B620B} + + + {375C3EDB-D1F5-AA38-D498-B462B7BDEDE9} + + + {2E0391E6-2B82-F704-4B16-9EF63C4E25C1} + + + {D1C825D2-2980-075A-3EC0-43930977748F} + + + {B350BD14-1FB6-A9A0-4725-75CFEFC2D067} + + + {96D16B7E-5FC5-182E-8734-37C9D27C2299} + + + {56518C02-F710-7D5E-09E6-4B152D5900C7} + + + {8D78CFF1-6E9E-3E78-317D-7954EE6482BB} + + + {6B811726-62F3-6E7C-BE8E-493A61CAA9E4} + + + {C84EE2C8-14A3-D098-62A4-E1C75B7FA13A} + + + {42DD7AA9-DF7D-D9F9-E50C-69C44211A42B} + + + {009A44FF-D1C5-47C0-64CC-9122107C73D1} + + + {AAEE24C0-066F-8593-70EA-B7AC7553E885} + + + {CEC45021-32A4-16BA-8E12-023B029608CD} + + + {E5DFE07F-5901-AF5C-7759-84EBF9717E5E} + + + {3A189BF7-28D6-C0C4-B831-97AD9E46FE5A} + + + {829FC6C3-87E7-0491-B8C3-DC3905FB6039} + + + {49174595-84D0-A512-B98C-0CFD2D772B8A} + + + {E27C67CB-E138-DCCB-110D-623E2C01F9BC} + + + {392635C4-010A-C8A2-F46D-1A3628445E1C} + + + {1FF26A52-F9B9-625F-DEE9-8FEE0C02F0F4} + + + {3A5A13A1-B57C-EF05-AC38-53B08A4C8D4A} + + + {97983FD5-3F19-2B58-4941-D8FBB6B92BA4} + + + {ADC9725E-0948-5908-13BD-0275DB25325A} + + + {37AD6CD9-9FE5-A457-B1FE-36A85F973502} + + + {0F3B119C-FE8B-3978-2D80-53248BBBCDEA} + + + {5E836BFC-319A-1CE7-13C9-BD9E87F0A228} + + + {5D8E291B-1BB8-3A55-0939-D13A8589C395} + + + {BE3B7D89-2DE8-3CA1-B00E-55821EF3AAAC} + + + {E0DE9D5D-2792-148A-2CE1-182A90DD5F0E} + {4DC60E78-BBC0-B540-63A2-37E14ABBEF09} @@ -1057,6 +1180,123 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\src + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -1135,6 +1375,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -1192,6 +1441,9 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1207,6 +1459,9 @@ JUCE Modules\juce_audio_processors + + JUCE Modules\juce_audio_processors + JUCE Modules\juce_audio_utils\audio_cd @@ -1291,6 +1546,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -2770,6 +3028,9 @@ JUCE Library Code + + JUCE Library Code + JUCE Library Code @@ -2934,6 +3195,9 @@ JUCE Modules\juce_audio_basics\native + + JUCE Modules\juce_audio_basics\native + JUCE Modules\juce_audio_basics\sources @@ -3534,6 +3798,192 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\buf-size + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\data-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\dynmanifest + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\instance-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\midi + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\morph + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\options + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\parameters + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\patch + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-groups + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-props + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\presets + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\resize-port + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\state + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\time + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\ui + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\units + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\uri-map + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\urid + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\worker + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\serd + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\sratom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -3738,6 +4188,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -3819,6 +4278,12 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -3912,6 +4377,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -4560,6 +5028,9 @@ JUCE Modules\juce_events\native + + JUCE Modules\juce_events\native + JUCE Modules\juce_events\native @@ -5495,6 +5966,9 @@ JUCE Modules\juce_audio_formats\codecs\oggvorbis + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base diff --git a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj index 31f00bfefa..458f0ec903 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj +++ b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj @@ -63,8 +63,8 @@ Disabled ProgramDatabase - ..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_PLUGINHOST_LV2=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -105,8 +105,8 @@ Full - ..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_PLUGINHOST_LV2=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) MultiThreadedDLL true NotUsing @@ -678,6 +678,123 @@ true + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + true @@ -753,6 +870,15 @@ true + + true + + + true + + + true + true @@ -810,6 +936,9 @@ true + + true + true @@ -822,6 +951,9 @@ true + + true + true @@ -891,6 +1023,9 @@ true + + true + true @@ -2260,7 +2395,10 @@ - + + /bigobj %(AdditionalOptions) + + @@ -2319,6 +2457,7 @@ + @@ -2519,6 +2658,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2587,6 +2788,9 @@ + + + @@ -2614,6 +2818,8 @@ + + @@ -2645,6 +2851,7 @@ + @@ -2861,6 +3068,7 @@ + @@ -3174,6 +3382,7 @@ + diff --git a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters index b4c2294c93..2ac10f615c 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters +++ b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters @@ -149,6 +149,129 @@ {86737735-F6BA-F64A-5EC7-5C9F36755F79} + + {CDCCDBC1-E1A7-558D-D4AA-B48003178AE3} + + + {6656EC0E-A4C5-985B-242F-01890BDEFB1B} + + + {107F6637-689A-6DAC-1F5D-FD9734F3A0D9} + + + {C60CB2F9-12ED-74A2-C81C-366287805252} + + + {0BE3157E-54F5-3F72-7023-A62A81D83443} + + + {AD43AFB9-8A3D-C470-E098-4ADA2D6B1C07} + + + {77E6DFCD-32E7-A7E2-75E9-50C49384FEDA} + + + {8449F5A3-222A-3C21-88BD-2ACA69CD290A} + + + {50066622-9190-C54D-FE24-563064A80DB4} + + + {E8F398A4-2CFC-D98B-343B-FB06B6B54063} + + + {18BD9026-D673-60FB-C5C0-E4234E9FE71C} + + + {E469C933-C0FE-3A95-168B-234F8B4B620B} + + + {375C3EDB-D1F5-AA38-D498-B462B7BDEDE9} + + + {2E0391E6-2B82-F704-4B16-9EF63C4E25C1} + + + {D1C825D2-2980-075A-3EC0-43930977748F} + + + {B350BD14-1FB6-A9A0-4725-75CFEFC2D067} + + + {96D16B7E-5FC5-182E-8734-37C9D27C2299} + + + {56518C02-F710-7D5E-09E6-4B152D5900C7} + + + {8D78CFF1-6E9E-3E78-317D-7954EE6482BB} + + + {6B811726-62F3-6E7C-BE8E-493A61CAA9E4} + + + {C84EE2C8-14A3-D098-62A4-E1C75B7FA13A} + + + {42DD7AA9-DF7D-D9F9-E50C-69C44211A42B} + + + {009A44FF-D1C5-47C0-64CC-9122107C73D1} + + + {AAEE24C0-066F-8593-70EA-B7AC7553E885} + + + {CEC45021-32A4-16BA-8E12-023B029608CD} + + + {E5DFE07F-5901-AF5C-7759-84EBF9717E5E} + + + {3A189BF7-28D6-C0C4-B831-97AD9E46FE5A} + + + {829FC6C3-87E7-0491-B8C3-DC3905FB6039} + + + {49174595-84D0-A512-B98C-0CFD2D772B8A} + + + {E27C67CB-E138-DCCB-110D-623E2C01F9BC} + + + {392635C4-010A-C8A2-F46D-1A3628445E1C} + + + {1FF26A52-F9B9-625F-DEE9-8FEE0C02F0F4} + + + {3A5A13A1-B57C-EF05-AC38-53B08A4C8D4A} + + + {97983FD5-3F19-2B58-4941-D8FBB6B92BA4} + + + {ADC9725E-0948-5908-13BD-0275DB25325A} + + + {37AD6CD9-9FE5-A457-B1FE-36A85F973502} + + + {0F3B119C-FE8B-3978-2D80-53248BBBCDEA} + + + {5E836BFC-319A-1CE7-13C9-BD9E87F0A228} + + + {5D8E291B-1BB8-3A55-0939-D13A8589C395} + + + {BE3B7D89-2DE8-3CA1-B00E-55821EF3AAAC} + + + {E0DE9D5D-2792-148A-2CE1-182A90DD5F0E} + {4DC60E78-BBC0-B540-63A2-37E14ABBEF09} @@ -1057,6 +1180,123 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\src + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -1135,6 +1375,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -1192,6 +1441,9 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1207,6 +1459,9 @@ JUCE Modules\juce_audio_processors + + JUCE Modules\juce_audio_processors + JUCE Modules\juce_audio_utils\audio_cd @@ -1291,6 +1546,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -2770,6 +3028,9 @@ JUCE Library Code + + JUCE Library Code + JUCE Library Code @@ -2934,6 +3195,9 @@ JUCE Modules\juce_audio_basics\native + + JUCE Modules\juce_audio_basics\native + JUCE Modules\juce_audio_basics\sources @@ -3534,6 +3798,192 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\buf-size + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\data-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\dynmanifest + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\instance-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\midi + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\morph + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\options + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\parameters + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\patch + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-groups + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-props + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\presets + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\resize-port + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\state + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\time + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\ui + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\units + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\uri-map + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\urid + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\worker + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\serd + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\sratom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -3738,6 +4188,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -3819,6 +4278,12 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -3912,6 +4377,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -4560,6 +5028,9 @@ JUCE Modules\juce_events\native + + JUCE Modules\juce_events\native + JUCE Modules\juce_events\native @@ -5495,6 +5966,9 @@ JUCE Modules\juce_audio_formats\codecs\oggvorbis + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base diff --git a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj index 5ebcc00229..f2391d269d 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj +++ b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj @@ -63,8 +63,8 @@ Disabled ProgramDatabase - ..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_PLUGINHOST_LV2=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -105,8 +105,8 @@ Full - ..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_PLUGINHOST_LV2=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) MultiThreadedDLL true NotUsing @@ -678,6 +678,123 @@ true + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + true @@ -753,6 +870,15 @@ true + + true + + + true + + + true + true @@ -810,6 +936,9 @@ true + + true + true @@ -822,6 +951,9 @@ true + + true + true @@ -891,6 +1023,9 @@ true + + true + true @@ -2260,7 +2395,10 @@ - + + /bigobj %(AdditionalOptions) + + @@ -2319,6 +2457,7 @@ + @@ -2519,6 +2658,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2587,6 +2788,9 @@ + + + @@ -2614,6 +2818,8 @@ + + @@ -2645,6 +2851,7 @@ + @@ -2861,6 +3068,7 @@ + @@ -3174,6 +3382,7 @@ + diff --git a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters index 27f34d77f9..9873e70fa1 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters +++ b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters @@ -149,6 +149,129 @@ {86737735-F6BA-F64A-5EC7-5C9F36755F79} + + {CDCCDBC1-E1A7-558D-D4AA-B48003178AE3} + + + {6656EC0E-A4C5-985B-242F-01890BDEFB1B} + + + {107F6637-689A-6DAC-1F5D-FD9734F3A0D9} + + + {C60CB2F9-12ED-74A2-C81C-366287805252} + + + {0BE3157E-54F5-3F72-7023-A62A81D83443} + + + {AD43AFB9-8A3D-C470-E098-4ADA2D6B1C07} + + + {77E6DFCD-32E7-A7E2-75E9-50C49384FEDA} + + + {8449F5A3-222A-3C21-88BD-2ACA69CD290A} + + + {50066622-9190-C54D-FE24-563064A80DB4} + + + {E8F398A4-2CFC-D98B-343B-FB06B6B54063} + + + {18BD9026-D673-60FB-C5C0-E4234E9FE71C} + + + {E469C933-C0FE-3A95-168B-234F8B4B620B} + + + {375C3EDB-D1F5-AA38-D498-B462B7BDEDE9} + + + {2E0391E6-2B82-F704-4B16-9EF63C4E25C1} + + + {D1C825D2-2980-075A-3EC0-43930977748F} + + + {B350BD14-1FB6-A9A0-4725-75CFEFC2D067} + + + {96D16B7E-5FC5-182E-8734-37C9D27C2299} + + + {56518C02-F710-7D5E-09E6-4B152D5900C7} + + + {8D78CFF1-6E9E-3E78-317D-7954EE6482BB} + + + {6B811726-62F3-6E7C-BE8E-493A61CAA9E4} + + + {C84EE2C8-14A3-D098-62A4-E1C75B7FA13A} + + + {42DD7AA9-DF7D-D9F9-E50C-69C44211A42B} + + + {009A44FF-D1C5-47C0-64CC-9122107C73D1} + + + {AAEE24C0-066F-8593-70EA-B7AC7553E885} + + + {CEC45021-32A4-16BA-8E12-023B029608CD} + + + {E5DFE07F-5901-AF5C-7759-84EBF9717E5E} + + + {3A189BF7-28D6-C0C4-B831-97AD9E46FE5A} + + + {829FC6C3-87E7-0491-B8C3-DC3905FB6039} + + + {49174595-84D0-A512-B98C-0CFD2D772B8A} + + + {E27C67CB-E138-DCCB-110D-623E2C01F9BC} + + + {392635C4-010A-C8A2-F46D-1A3628445E1C} + + + {1FF26A52-F9B9-625F-DEE9-8FEE0C02F0F4} + + + {3A5A13A1-B57C-EF05-AC38-53B08A4C8D4A} + + + {97983FD5-3F19-2B58-4941-D8FBB6B92BA4} + + + {ADC9725E-0948-5908-13BD-0275DB25325A} + + + {37AD6CD9-9FE5-A457-B1FE-36A85F973502} + + + {0F3B119C-FE8B-3978-2D80-53248BBBCDEA} + + + {5E836BFC-319A-1CE7-13C9-BD9E87F0A228} + + + {5D8E291B-1BB8-3A55-0939-D13A8589C395} + + + {BE3B7D89-2DE8-3CA1-B00E-55821EF3AAAC} + + + {E0DE9D5D-2792-148A-2CE1-182A90DD5F0E} + {4DC60E78-BBC0-B540-63A2-37E14ABBEF09} @@ -1057,6 +1180,123 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\src + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -1135,6 +1375,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -1192,6 +1441,9 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1207,6 +1459,9 @@ JUCE Modules\juce_audio_processors + + JUCE Modules\juce_audio_processors + JUCE Modules\juce_audio_utils\audio_cd @@ -1291,6 +1546,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -2770,6 +3028,9 @@ JUCE Library Code + + JUCE Library Code + JUCE Library Code @@ -2934,6 +3195,9 @@ JUCE Modules\juce_audio_basics\native + + JUCE Modules\juce_audio_basics\native + JUCE Modules\juce_audio_basics\sources @@ -3534,6 +3798,192 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\buf-size + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\data-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\dynmanifest + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\instance-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\midi + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\morph + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\options + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\parameters + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\patch + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-groups + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-props + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\presets + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\resize-port + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\state + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\time + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\ui + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\units + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\uri-map + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\urid + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\worker + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\serd + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\sratom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -3738,6 +4188,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -3819,6 +4278,12 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -3912,6 +4377,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -4560,6 +5028,9 @@ JUCE Modules\juce_events\native + + JUCE Modules\juce_events\native + JUCE Modules\juce_events\native @@ -5495,6 +5966,9 @@ JUCE Modules\juce_audio_formats\codecs\oggvorbis + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base diff --git a/extras/AudioPluginHost/Builds/iOS/AudioPluginHost.xcodeproj/project.pbxproj b/extras/AudioPluginHost/Builds/iOS/AudioPluginHost.xcodeproj/project.pbxproj index 975e395d87..77eb91a585 100644 --- a/extras/AudioPluginHost/Builds/iOS/AudioPluginHost.xcodeproj/project.pbxproj +++ b/extras/AudioPluginHost/Builds/iOS/AudioPluginHost.xcodeproj/project.pbxproj @@ -23,6 +23,7 @@ 50AFD116DCA6EC228EFB322D /* UIKit.framework */ = {isa = PBXBuildFile; fileRef = F9EDC54DFBCF3A63E0AA5D73; }; 59F4F23BFFDAB414B4801F85 /* Images.xcassets */ = {isa = PBXBuildFile; fileRef = 29E0972229FB44D969035B4E; }; 5C4D406B924230F83E3580AD /* include_juce_audio_devices.mm */ = {isa = PBXBuildFile; fileRef = 65968EA1B476D71F14DE1D58; }; + 60BBD03840ABDD719FED194F /* include_juce_audio_processors_lv2_libs.cpp */ = {isa = PBXBuildFile; fileRef = 5183A94449F6317518C48B0C; }; 70580743C3D5695F065FF698 /* CoreAudioKit.framework */ = {isa = PBXBuildFile; fileRef = E68018DE199135B7F738FB17; }; 73E371F1B912FCCAE0CD7E5D /* Accelerate.framework */ = {isa = PBXBuildFile; fileRef = 86CA337014D3F67E906FFD28; }; 76A80851698FC773D2479B4E /* include_juce_core.mm */ = {isa = PBXBuildFile; fileRef = 683CEE986A2467C850FE99E6; }; @@ -70,6 +71,7 @@ 45098BAF7E088D41A4E69E42 /* singing.ogg */ /* singing.ogg */ = {isa = PBXFileReference; lastKnownFileType = file.ogg; name = singing.ogg; path = ../../../../examples/Assets/singing.ogg; sourceTree = SOURCE_ROOT; }; 46C3C2CD301CD59C51FD02D6 /* PluginGraph.h */ /* PluginGraph.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PluginGraph.h; path = ../../Source/Plugins/PluginGraph.h; sourceTree = SOURCE_ROOT; }; 4C7D82F9274A4F9DBF11235C /* include_juce_audio_basics.mm */ /* include_juce_audio_basics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_basics.mm; path = ../../JuceLibraryCode/include_juce_audio_basics.mm; sourceTree = SOURCE_ROOT; }; + 5183A94449F6317518C48B0C /* include_juce_audio_processors_lv2_libs.cpp */ /* include_juce_audio_processors_lv2_libs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_processors_lv2_libs.cpp; path = ../../JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp; sourceTree = SOURCE_ROOT; }; 5313EB852E41EE58B199B9A2 /* juce_audio_devices */ /* juce_audio_devices */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_audio_devices; path = ../../../../modules/juce_audio_devices; sourceTree = SOURCE_ROOT; }; 57DF618F1DE781556B7AFC32 /* Info-App.plist */ /* Info-App.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info-App.plist"; path = "Info-App.plist"; sourceTree = SOURCE_ROOT; }; 59842A98E5EBBC54B50C04CD /* juce_events */ /* juce_events */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_events; path = ../../../../modules/juce_events; sourceTree = SOURCE_ROOT; }; @@ -185,6 +187,7 @@ 65968EA1B476D71F14DE1D58, 5D250A57C7DEA80248F30EED, 5FBD6C402617272052BB4D81, + 5183A94449F6317518C48B0C, B285CAB91AE928C476CA4F9C, 683CEE986A2467C850FE99E6, B8E24A5CEE6B7055537725CF, @@ -407,6 +410,7 @@ 5C4D406B924230F83E3580AD, F4DD98B9310B679D50A2C8A6, CAF0DE157C8F7D9F168AA3B6, + 60BBD03840ABDD719FED194F, 0F20A4AE04736634F097F5A6, 76A80851698FC773D2479B4E, E4A926EF695823F0F13268FF, @@ -466,6 +470,7 @@ "JUCE_PLUGINHOST_VST3=1", "JUCE_PLUGINHOST_AU=1", "JUCE_PLUGINHOST_LADSPA=1", + "JUCE_PLUGINHOST_LV2=1", "JUCE_USE_CDREADER=0", "JUCE_USE_CDBURNER=0", "JUCE_WEB_BROWSER=0", @@ -484,6 +489,14 @@ ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK", "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK", "$(SRCROOT)/../../JuceLibraryCode", "$(SRCROOT)/../../../../modules", @@ -493,7 +506,7 @@ INFOPLIST_PREPROCESS = NO; INSTALL_PATH = "$(HOME)/Applications"; LLVM_LTO = YES; - MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; + MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; @@ -598,6 +611,7 @@ "JUCE_PLUGINHOST_VST3=1", "JUCE_PLUGINHOST_AU=1", "JUCE_PLUGINHOST_LADSPA=1", + "JUCE_PLUGINHOST_LV2=1", "JUCE_USE_CDREADER=0", "JUCE_USE_CDBURNER=0", "JUCE_WEB_BROWSER=0", @@ -616,6 +630,14 @@ ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK", "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK", "$(SRCROOT)/../../JuceLibraryCode", "$(SRCROOT)/../../../../modules", @@ -624,7 +646,7 @@ INFOPLIST_FILE = Info-App.plist; INFOPLIST_PREPROCESS = NO; INSTALL_PATH = "$(HOME)/Applications"; - MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; + MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; diff --git a/extras/AudioPluginHost/CMakeLists.txt b/extras/AudioPluginHost/CMakeLists.txt index 3a871148c5..6e531837b2 100644 --- a/extras/AudioPluginHost/CMakeLists.txt +++ b/extras/AudioPluginHost/CMakeLists.txt @@ -39,10 +39,11 @@ juce_add_binary_data(AudioPluginHostData SOURCES ../../examples/Assets/singing.ogg) target_compile_definitions(AudioPluginHost PRIVATE - PIP_JUCE_EXAMPLES_DIRECTORY_STRING="${JUCE_SOURCE_DIR}/examples" JUCE_ALSA=1 JUCE_DIRECTSOUND=1 + JUCE_DISABLE_CAUTIOUS_PARAMETER_ID_CHECKING=1 JUCE_PLUGINHOST_LADSPA=1 + JUCE_PLUGINHOST_LV2=1 JUCE_PLUGINHOST_VST3=1 JUCE_PLUGINHOST_VST=0 JUCE_USE_CAMERA=0 @@ -53,7 +54,8 @@ target_compile_definitions(AudioPluginHost PRIVATE JUCE_USE_OGGVORBIS=1 JUCE_VST3_HOST_CROSS_PLATFORM_UID=1 JUCE_WASAPI=1 - JUCE_WEB_BROWSER=0) + JUCE_WEB_BROWSER=0 + PIP_JUCE_EXAMPLES_DIRECTORY_STRING="${JUCE_SOURCE_DIR}/examples") target_link_libraries(AudioPluginHost PRIVATE AudioPluginHostData diff --git a/extras/AudioPluginHost/JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp b/extras/AudioPluginHost/JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp new file mode 100644 index 0000000000..64b4d5f4d3 --- /dev/null +++ b/extras/AudioPluginHost/JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/extras/AudioPluginHost/Source/HostStartup.cpp b/extras/AudioPluginHost/Source/HostStartup.cpp index 0b19c1030b..e2827f3cbd 100644 --- a/extras/AudioPluginHost/Source/HostStartup.cpp +++ b/extras/AudioPluginHost/Source/HostStartup.cpp @@ -333,7 +333,8 @@ void setAutoScaleValueForPlugin (const String& identifier, AutoScale s) static bool isAutoScaleAvailableForPlugin (const PluginDescription& description) { return autoScaleOptionAvailable - && description.pluginFormatName.containsIgnoreCase ("VST"); + && (description.pluginFormatName.containsIgnoreCase ("VST") + || description.pluginFormatName.containsIgnoreCase ("LV2")); } bool shouldAutoScalePlugin (const PluginDescription& description) diff --git a/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj b/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj index 2b14ea80e3..62cf8190d0 100644 --- a/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj +++ b/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj @@ -155,6 +155,9 @@ true + + true + true @@ -465,6 +468,7 @@ + diff --git a/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj.filters b/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj.filters index 2587eff517..66e4416c4f 100644 --- a/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj.filters +++ b/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj.filters @@ -94,6 +94,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -444,6 +447,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers diff --git a/extras/Build/CMake/JUCEModuleSupport.cmake b/extras/Build/CMake/JUCEModuleSupport.cmake index ff2f51edc1..8857757d25 100644 --- a/extras/Build/CMake/JUCEModuleSupport.cmake +++ b/extras/Build/CMake/JUCEModuleSupport.cmake @@ -227,7 +227,7 @@ endfunction() # ================================================================================================== function(_juce_get_all_plugin_kinds out) - set(${out} AU AUv3 AAX Standalone Unity VST VST3 PARENT_SCOPE) + set(${out} AU AUv3 AAX LV2 Standalone Unity VST VST3 PARENT_SCOPE) endfunction() function(_juce_get_platform_plugin_kinds out) @@ -242,7 +242,7 @@ function(_juce_get_platform_plugin_kinds out) endif() if(NOT CMAKE_SYSTEM_NAME STREQUAL "iOS" AND NOT CMAKE_SYSTEM_NAME STREQUAL "Android") - list(APPEND result AAX Unity VST VST3) + list(APPEND result AAX Unity VST VST3 LV2) endif() set(${out} ${result} PARENT_SCOPE) @@ -489,8 +489,22 @@ function(juce_add_module module_path) target_link_libraries(juce_audio_processors INTERFACE juce_vst3_headers) + add_library(juce_lilv_headers INTERFACE) + set(lv2_base_path "${base_path}/juce_audio_processors/format_types/LV2_SDK") + target_include_directories(juce_lilv_headers INTERFACE + "${lv2_base_path}" + "${lv2_base_path}/lv2" + "${lv2_base_path}/serd" + "${lv2_base_path}/sord" + "${lv2_base_path}/sord/src" + "${lv2_base_path}/sratom" + "${lv2_base_path}/lilv" + "${lv2_base_path}/lilv/src") + target_link_libraries(juce_audio_processors INTERFACE juce_lilv_headers) + if(JUCE_ARG_ALIAS_NAMESPACE) add_library(${JUCE_ARG_ALIAS_NAMESPACE}::juce_vst3_headers ALIAS juce_vst3_headers) + add_library(${JUCE_ARG_ALIAS_NAMESPACE}::juce_lilv_headers ALIAS juce_lilv_headers) endif() endif() diff --git a/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt b/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt index 8f4d276dc2..d0a9bc6ae5 100644 --- a/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt +++ b/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt @@ -102,6 +102,7 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.cpp" "../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.h" "../../../../../modules/juce_audio_basics/native/juce_mac_CoreAudioLayouts.h" + "../../../../../modules/juce_audio_basics/native/juce_mac_CoreAudioTimeConversions.h" "../../../../../modules/juce_audio_basics/sources/juce_AudioSource.h" "../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp" "../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.h" @@ -464,6 +465,108 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.h" "../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp" "../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/lilv/lilv.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/lilv/lilvmm.hpp" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/common.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/tree.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/tree.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/collections.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/filesystem.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/filesystem.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/instance.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/lib.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/lilv_internal.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/node.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/plugin.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/pluginclass.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/port.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/query.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/scalepoint.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/state.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/ui.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/util.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/world.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom-test-utils.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom-test.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/forge-overflow-test.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/forge.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/util.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/buf-size/buf-size.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/attributes.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2_util.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/data-access/data-access.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/dynmanifest/dynmanifest.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event-helpers.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/instance-access/instance-access.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/log.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/logger.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/midi/midi.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/morph/morph.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/options/options.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/parameters/parameters.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/patch/patch.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-groups/port-groups.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-props/port-props.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/presets/presets.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/resize-port/resize-port.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/state/state.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/time/time.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/ui/ui.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/units/units.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/uri-map/uri-map.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/urid/urid.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/worker/worker.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/serd/serd.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/attributes.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/base64.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/base64.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_sink.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_source.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_source.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/env.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/n3.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/node.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/node.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/reader.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/reader.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serd_config.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serd_internal.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serdi.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/stack.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/string.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/string_utils.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/system.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/system.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/uri.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/uri_utils.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/writer.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/sord/sord.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/sord/sordmm.hpp" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/btree.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/btree.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/common.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/digest.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/digest.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/hash.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/hash.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_config.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_internal.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_test.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_validate.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sordi.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sordmm_test.cpp" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/syntax.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom/sratom/sratom.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom/src/sratom.c" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/juce_lv2_config.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv_config.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/README.md" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd_config.h" + "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord_config.h" "../../../../../modules/juce_audio_processors/format_types/VST3_SDK/base/source/baseiids.cpp" "../../../../../modules/juce_audio_processors/format_types/VST3_SDK/base/source/classfactoryhelpers.h" "../../../../../modules/juce_audio_processors/format_types/VST3_SDK/base/source/fbuffer.cpp" @@ -567,6 +670,12 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp" "../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h" "../../../../../modules/juce_audio_processors/format_types/juce_LegacyAudioParameter.cpp" + "../../../../../modules/juce_audio_processors/format_types/juce_LV2Common.h" + "../../../../../modules/juce_audio_processors/format_types/juce_LV2PluginFormat.cpp" + "../../../../../modules/juce_audio_processors/format_types/juce_LV2PluginFormat.h" + "../../../../../modules/juce_audio_processors/format_types/juce_LV2PluginFormat_test.cpp" + "../../../../../modules/juce_audio_processors/format_types/juce_LV2Resources.h" + "../../../../../modules/juce_audio_processors/format_types/juce_LV2SupportLibs.cpp" "../../../../../modules/juce_audio_processors/format_types/juce_VST3Common.h" "../../../../../modules/juce_audio_processors/format_types/juce_VST3Headers.h" "../../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp" @@ -613,6 +722,9 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp" "../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h" "../../../../../modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h" + "../../../../../modules/juce_audio_processors/utilities/juce_FlagCache.h" + "../../../../../modules/juce_audio_processors/utilities/juce_NativeScaleFactorNotifier.cpp" + "../../../../../modules/juce_audio_processors/utilities/juce_NativeScaleFactorNotifier.h" "../../../../../modules/juce_audio_processors/utilities/juce_ParameterAttachments.cpp" "../../../../../modules/juce_audio_processors/utilities/juce_ParameterAttachments.h" "../../../../../modules/juce_audio_processors/utilities/juce_PluginHostType.cpp" @@ -623,6 +735,7 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.h" "../../../../../modules/juce_audio_processors/juce_audio_processors.cpp" "../../../../../modules/juce_audio_processors/juce_audio_processors.mm" + "../../../../../modules/juce_audio_processors/juce_audio_processors_lv2_libs.cpp" "../../../../../modules/juce_audio_processors/juce_audio_processors.h" "../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDBurner.h" "../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDReader.cpp" @@ -677,6 +790,8 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_core/containers/juce_ListenerList.h" "../../../../../modules/juce_core/containers/juce_NamedValueSet.cpp" "../../../../../modules/juce_core/containers/juce_NamedValueSet.h" + "../../../../../modules/juce_core/containers/juce_Optional.h" + "../../../../../modules/juce_core/containers/juce_Optional_test.cpp" "../../../../../modules/juce_core/containers/juce_OwnedArray.cpp" "../../../../../modules/juce_core/containers/juce_OwnedArray.h" "../../../../../modules/juce_core/containers/juce_PropertySet.cpp" @@ -983,6 +1098,7 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_events/native/juce_android_Messaging.cpp" "../../../../../modules/juce_events/native/juce_ios_MessageManager.mm" "../../../../../modules/juce_events/native/juce_linux_EventLoop.h" + "../../../../../modules/juce_events/native/juce_linux_EventLoopInternal.h" "../../../../../modules/juce_events/native/juce_linux_Messaging.cpp" "../../../../../modules/juce_events/native/juce_mac_MessageManager.mm" "../../../../../modules/juce_events/native/juce_osx_MessageQueue.h" @@ -1621,6 +1737,7 @@ add_library( ${BINARY_NAME} "../../../JuceLibraryCode/include_juce_audio_devices.cpp" "../../../JuceLibraryCode/include_juce_audio_formats.cpp" "../../../JuceLibraryCode/include_juce_audio_processors.cpp" + "../../../JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp" "../../../JuceLibraryCode/include_juce_audio_utils.cpp" "../../../JuceLibraryCode/include_juce_core.cpp" "../../../JuceLibraryCode/include_juce_cryptography.cpp" @@ -1701,6 +1818,7 @@ set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_M set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_basics/native/juce_mac_CoreAudioLayouts.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/native/juce_mac_CoreAudioTimeConversions.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_AudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2063,6 +2181,108 @@ set_source_files_properties("../../../../../modules/juce_audio_processors/format set_source_files_properties("../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/lilv/lilv.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/lilv/lilvmm.hpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/common.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/tree.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/tree.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/collections.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/filesystem.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/filesystem.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/instance.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/lib.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/lilv_internal.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/node.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/plugin.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/pluginclass.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/port.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/query.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/scalepoint.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/state.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/ui.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/util.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/world.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom-test-utils.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom-test.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/forge-overflow-test.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/forge.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/util.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/buf-size/buf-size.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/attributes.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2_util.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/data-access/data-access.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/dynmanifest/dynmanifest.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event-helpers.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/instance-access/instance-access.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/log.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/logger.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/midi/midi.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/morph/morph.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/options/options.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/parameters/parameters.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/patch/patch.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-groups/port-groups.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-props/port-props.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/presets/presets.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/resize-port/resize-port.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/state/state.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/time/time.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/ui/ui.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/units/units.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/uri-map/uri-map.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/urid/urid.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/worker/worker.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/serd/serd.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/attributes.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/base64.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/base64.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_sink.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_source.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_source.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/env.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/n3.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/node.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/node.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/reader.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/reader.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serd_config.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serd_internal.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serdi.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/stack.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/string.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/string_utils.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/system.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/system.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/uri.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/uri_utils.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd/src/writer.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/sord/sord.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/sord/sordmm.hpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/btree.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/btree.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/common.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/digest.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/digest.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/hash.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/hash.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_config.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_internal.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_test.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_validate.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sordi.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sordmm_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src/syntax.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom/sratom/sratom.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom/src/sratom.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/juce_lv2_config.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv_config.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/README.md" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd_config.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord_config.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/VST3_SDK/base/source/baseiids.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/VST3_SDK/base/source/classfactoryhelpers.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/VST3_SDK/base/source/fbuffer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2166,6 +2386,12 @@ set_source_files_properties("../../../../../modules/juce_audio_processors/format set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LegacyAudioParameter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LV2Common.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LV2PluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LV2PluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LV2PluginFormat_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LV2Resources.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LV2SupportLibs.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VST3Common.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VST3Headers.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2212,6 +2438,9 @@ set_source_files_properties("../../../../../modules/juce_audio_processors/utilit set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_FlagCache.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_NativeScaleFactorNotifier.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_NativeScaleFactorNotifier.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_ParameterAttachments.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_ParameterAttachments.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_PluginHostType.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2222,6 +2451,7 @@ set_source_files_properties("../../../../../modules/juce_audio_processors/utilit set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/juce_audio_processors.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/juce_audio_processors.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/juce_audio_processors_lv2_libs.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_processors/juce_audio_processors.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDBurner.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDReader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2276,6 +2506,8 @@ set_source_files_properties("../../../../../modules/juce_core/containers/juce_Li set_source_files_properties("../../../../../modules/juce_core/containers/juce_ListenerList.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_core/containers/juce_NamedValueSet.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_core/containers/juce_NamedValueSet.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_Optional.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_Optional_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_core/containers/juce_OwnedArray.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_core/containers/juce_OwnedArray.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_core/containers/juce_PropertySet.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2582,6 +2814,7 @@ set_source_files_properties("../../../../../modules/juce_events/messages/juce_No set_source_files_properties("../../../../../modules/juce_events/native/juce_android_Messaging.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_events/native/juce_ios_MessageManager.mm" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_events/native/juce_linux_EventLoop.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/native/juce_linux_EventLoopInternal.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_events/native/juce_linux_Messaging.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_events/native/juce_mac_MessageManager.mm" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_events/native/juce_osx_MessageQueue.h" PROPERTIES HEADER_FILE_ONLY TRUE) diff --git a/extras/NetworkGraphicsDemo/Builds/LinuxMakefile/Makefile b/extras/NetworkGraphicsDemo/Builds/LinuxMakefile/Makefile index 379c1df4a0..f75f6cc524 100644 --- a/extras/NetworkGraphicsDemo/Builds/LinuxMakefile/Makefile +++ b/extras/NetworkGraphicsDemo/Builds/LinuxMakefile/Makefile @@ -78,6 +78,7 @@ OBJECTS_APP := \ $(JUCE_OBJDIR)/include_juce_audio_devices_63111d02.o \ $(JUCE_OBJDIR)/include_juce_audio_formats_15f82001.o \ $(JUCE_OBJDIR)/include_juce_audio_processors_10c03666.o \ + $(JUCE_OBJDIR)/include_juce_audio_processors_lv2_libs_12bdca08.o \ $(JUCE_OBJDIR)/include_juce_audio_utils_9f9fb2d6.o \ $(JUCE_OBJDIR)/include_juce_core_f26d17db.o \ $(JUCE_OBJDIR)/include_juce_cryptography_8cb807a8.o \ @@ -132,6 +133,11 @@ $(JUCE_OBJDIR)/include_juce_audio_processors_10c03666.o: ../../JuceLibraryCode/i @echo "Compiling include_juce_audio_processors.cpp" $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" +$(JUCE_OBJDIR)/include_juce_audio_processors_lv2_libs_12bdca08.o: ../../JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp + -$(V_AT)mkdir -p $(JUCE_OBJDIR) + @echo "Compiling include_juce_audio_processors_lv2_libs.cpp" + $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" + $(JUCE_OBJDIR)/include_juce_audio_utils_9f9fb2d6.o: ../../JuceLibraryCode/include_juce_audio_utils.cpp -$(V_AT)mkdir -p $(JUCE_OBJDIR) @echo "Compiling include_juce_audio_utils.cpp" diff --git a/extras/NetworkGraphicsDemo/Builds/MacOSX/NetworkGraphicsDemo.xcodeproj/project.pbxproj b/extras/NetworkGraphicsDemo/Builds/MacOSX/NetworkGraphicsDemo.xcodeproj/project.pbxproj index c366e31cf9..adb24a00db 100644 --- a/extras/NetworkGraphicsDemo/Builds/MacOSX/NetworkGraphicsDemo.xcodeproj/project.pbxproj +++ b/extras/NetworkGraphicsDemo/Builds/MacOSX/NetworkGraphicsDemo.xcodeproj/project.pbxproj @@ -9,6 +9,7 @@ /* Begin PBXBuildFile section */ 006DF460F8DF66EFFA80D968 /* Icon.icns */ = {isa = PBXBuildFile; fileRef = 70F1CAF3C4C561DD81E6AFC1; }; 0977FEC02DAF29438583198A /* include_juce_core.mm */ = {isa = PBXBuildFile; fileRef = 01E0EEF68A11C1CAF180E173; }; + 0E39AB2B15DCE39E1055A646 /* include_juce_audio_processors_lv2_libs.cpp */ = {isa = PBXBuildFile; fileRef = AB2DE62887E2F58D821F3217; }; 0FA2A3321630EBE83E439D99 /* include_juce_cryptography.mm */ = {isa = PBXBuildFile; fileRef = AFF729977947528F3E4AAA96; }; 2E28F61A64DEF942FE7B94C4 /* include_juce_audio_processors.mm */ = {isa = PBXBuildFile; fileRef = AED58461CE961C62A0E0A552; }; 3717B9F9A0F7C9CB95F1BE7F /* include_juce_gui_extra.mm */ = {isa = PBXBuildFile; fileRef = 7BE6330821794919A88ED8ED; }; @@ -77,6 +78,7 @@ 9E8129263CD42C6029FC2CAD /* AudioToolbox.framework */ /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; A505E1DABB2ED630EFBA96DB /* juce_audio_processors */ /* juce_audio_processors */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_audio_processors; path = ../../../../modules/juce_audio_processors; sourceTree = SOURCE_ROOT; }; A7FF2B353C8568B5A7A80117 /* include_juce_graphics.mm */ /* include_juce_graphics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_graphics.mm; path = ../../JuceLibraryCode/include_juce_graphics.mm; sourceTree = SOURCE_ROOT; }; + AB2DE62887E2F58D821F3217 /* include_juce_audio_processors_lv2_libs.cpp */ /* include_juce_audio_processors_lv2_libs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_processors_lv2_libs.cpp; path = ../../JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp; sourceTree = SOURCE_ROOT; }; AED58461CE961C62A0E0A552 /* include_juce_audio_processors.mm */ /* include_juce_audio_processors.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_processors.mm; path = ../../JuceLibraryCode/include_juce_audio_processors.mm; sourceTree = SOURCE_ROOT; }; AF330F41D1A4865108690E3C /* include_juce_audio_devices.mm */ /* include_juce_audio_devices.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_devices.mm; path = ../../JuceLibraryCode/include_juce_audio_devices.mm; sourceTree = SOURCE_ROOT; }; AFF729977947528F3E4AAA96 /* include_juce_cryptography.mm */ /* include_juce_cryptography.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_cryptography.mm; path = ../../JuceLibraryCode/include_juce_cryptography.mm; sourceTree = SOURCE_ROOT; }; @@ -190,6 +192,7 @@ AF330F41D1A4865108690E3C, C6E2284D86D93F1D9D5C7666, AED58461CE961C62A0E0A552, + AB2DE62887E2F58D821F3217, FCEBB157FB526741DB6791D1, 01E0EEF68A11C1CAF180E173, AFF729977947528F3E4AAA96, @@ -331,6 +334,7 @@ 6C2200C52B65E1BE80544E50, A1F34D09F4E4338775917ED1, 2E28F61A64DEF942FE7B94C4, + 0E39AB2B15DCE39E1055A646, EA487FA4116517A8DFEE85B0, 0977FEC02DAF29438583198A, 0FA2A3321630EBE83E439D99, diff --git a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj index cb9ec2c28d..853b7b22c9 100644 --- a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj +++ b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj @@ -671,6 +671,123 @@ true + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + true @@ -746,6 +863,15 @@ true + + true + + + true + + + true + true @@ -803,6 +929,9 @@ true + + true + true @@ -815,6 +944,9 @@ true + + true + true @@ -884,6 +1016,9 @@ true + + true + true @@ -2172,7 +2307,10 @@ - + + /bigobj %(AdditionalOptions) + + @@ -2229,6 +2367,7 @@ + @@ -2429,6 +2568,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2497,6 +2698,9 @@ + + + @@ -2524,6 +2728,8 @@ + + @@ -2555,6 +2761,7 @@ + @@ -2724,6 +2931,7 @@ + @@ -3040,6 +3248,7 @@ + diff --git a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters index 6e0b82bbe3..472daf4dd6 100644 --- a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters +++ b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters @@ -140,6 +140,129 @@ {86737735-F6BA-F64A-5EC7-5C9F36755F79} + + {CDCCDBC1-E1A7-558D-D4AA-B48003178AE3} + + + {6656EC0E-A4C5-985B-242F-01890BDEFB1B} + + + {107F6637-689A-6DAC-1F5D-FD9734F3A0D9} + + + {C60CB2F9-12ED-74A2-C81C-366287805252} + + + {0BE3157E-54F5-3F72-7023-A62A81D83443} + + + {AD43AFB9-8A3D-C470-E098-4ADA2D6B1C07} + + + {77E6DFCD-32E7-A7E2-75E9-50C49384FEDA} + + + {8449F5A3-222A-3C21-88BD-2ACA69CD290A} + + + {50066622-9190-C54D-FE24-563064A80DB4} + + + {E8F398A4-2CFC-D98B-343B-FB06B6B54063} + + + {18BD9026-D673-60FB-C5C0-E4234E9FE71C} + + + {E469C933-C0FE-3A95-168B-234F8B4B620B} + + + {375C3EDB-D1F5-AA38-D498-B462B7BDEDE9} + + + {2E0391E6-2B82-F704-4B16-9EF63C4E25C1} + + + {D1C825D2-2980-075A-3EC0-43930977748F} + + + {B350BD14-1FB6-A9A0-4725-75CFEFC2D067} + + + {96D16B7E-5FC5-182E-8734-37C9D27C2299} + + + {56518C02-F710-7D5E-09E6-4B152D5900C7} + + + {8D78CFF1-6E9E-3E78-317D-7954EE6482BB} + + + {6B811726-62F3-6E7C-BE8E-493A61CAA9E4} + + + {C84EE2C8-14A3-D098-62A4-E1C75B7FA13A} + + + {42DD7AA9-DF7D-D9F9-E50C-69C44211A42B} + + + {009A44FF-D1C5-47C0-64CC-9122107C73D1} + + + {AAEE24C0-066F-8593-70EA-B7AC7553E885} + + + {CEC45021-32A4-16BA-8E12-023B029608CD} + + + {E5DFE07F-5901-AF5C-7759-84EBF9717E5E} + + + {3A189BF7-28D6-C0C4-B831-97AD9E46FE5A} + + + {829FC6C3-87E7-0491-B8C3-DC3905FB6039} + + + {49174595-84D0-A512-B98C-0CFD2D772B8A} + + + {E27C67CB-E138-DCCB-110D-623E2C01F9BC} + + + {392635C4-010A-C8A2-F46D-1A3628445E1C} + + + {1FF26A52-F9B9-625F-DEE9-8FEE0C02F0F4} + + + {3A5A13A1-B57C-EF05-AC38-53B08A4C8D4A} + + + {97983FD5-3F19-2B58-4941-D8FBB6B92BA4} + + + {ADC9725E-0948-5908-13BD-0275DB25325A} + + + {37AD6CD9-9FE5-A457-B1FE-36A85F973502} + + + {0F3B119C-FE8B-3978-2D80-53248BBBCDEA} + + + {5E836BFC-319A-1CE7-13C9-BD9E87F0A228} + + + {5D8E291B-1BB8-3A55-0939-D13A8589C395} + + + {BE3B7D89-2DE8-3CA1-B00E-55821EF3AAAC} + + + {E0DE9D5D-2792-148A-2CE1-182A90DD5F0E} + {4DC60E78-BBC0-B540-63A2-37E14ABBEF09} @@ -1015,6 +1138,123 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\src + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -1093,6 +1333,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -1150,6 +1399,9 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1165,6 +1417,9 @@ JUCE Modules\juce_audio_processors + + JUCE Modules\juce_audio_processors + JUCE Modules\juce_audio_utils\audio_cd @@ -1249,6 +1504,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -2644,6 +2902,9 @@ JUCE Library Code + + JUCE Library Code + JUCE Library Code @@ -2802,6 +3063,9 @@ JUCE Modules\juce_audio_basics\native + + JUCE Modules\juce_audio_basics\native + JUCE Modules\juce_audio_basics\sources @@ -3402,6 +3666,192 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\buf-size + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\data-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\dynmanifest + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\instance-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\midi + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\morph + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\options + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\parameters + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\patch + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-groups + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-props + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\presets + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\resize-port + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\state + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\time + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\ui + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\units + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\uri-map + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\urid + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\worker + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\serd + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\sratom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -3606,6 +4056,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -3687,6 +4146,12 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -3780,6 +4245,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -4287,6 +4755,9 @@ JUCE Modules\juce_events\native + + JUCE Modules\juce_events\native + JUCE Modules\juce_events\native @@ -5231,6 +5702,9 @@ JUCE Modules\juce_audio_formats\codecs\oggvorbis + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base diff --git a/extras/NetworkGraphicsDemo/Builds/iOS/NetworkGraphicsDemo.xcodeproj/project.pbxproj b/extras/NetworkGraphicsDemo/Builds/iOS/NetworkGraphicsDemo.xcodeproj/project.pbxproj index 008d22fa09..1ad1b06da9 100644 --- a/extras/NetworkGraphicsDemo/Builds/iOS/NetworkGraphicsDemo.xcodeproj/project.pbxproj +++ b/extras/NetworkGraphicsDemo/Builds/iOS/NetworkGraphicsDemo.xcodeproj/project.pbxproj @@ -9,6 +9,7 @@ /* Begin PBXBuildFile section */ 006DF460F8DF66EFFA80D968 /* Icon.icns */ = {isa = PBXBuildFile; fileRef = 70F1CAF3C4C561DD81E6AFC1; }; 0977FEC02DAF29438583198A /* include_juce_core.mm */ = {isa = PBXBuildFile; fileRef = 01E0EEF68A11C1CAF180E173; }; + 0E39AB2B15DCE39E1055A646 /* include_juce_audio_processors_lv2_libs.cpp */ = {isa = PBXBuildFile; fileRef = AB2DE62887E2F58D821F3217; }; 0FA2A3321630EBE83E439D99 /* include_juce_cryptography.mm */ = {isa = PBXBuildFile; fileRef = AFF729977947528F3E4AAA96; }; 1282A62308CD1AC3F88A5D03 /* Images.xcassets */ = {isa = PBXBuildFile; fileRef = 5273768FBB55D0DD57A5E70C; }; 1F7A8BD2B43B3D191132301D /* CoreImage.framework */ = {isa = PBXBuildFile; fileRef = E51ABCA80B75F33848F28184; }; @@ -82,6 +83,7 @@ 9E8129263CD42C6029FC2CAD /* AudioToolbox.framework */ /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; A505E1DABB2ED630EFBA96DB /* juce_audio_processors */ /* juce_audio_processors */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_audio_processors; path = ../../../../modules/juce_audio_processors; sourceTree = SOURCE_ROOT; }; A7FF2B353C8568B5A7A80117 /* include_juce_graphics.mm */ /* include_juce_graphics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_graphics.mm; path = ../../JuceLibraryCode/include_juce_graphics.mm; sourceTree = SOURCE_ROOT; }; + AB2DE62887E2F58D821F3217 /* include_juce_audio_processors_lv2_libs.cpp */ /* include_juce_audio_processors_lv2_libs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_processors_lv2_libs.cpp; path = ../../JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp; sourceTree = SOURCE_ROOT; }; AED58461CE961C62A0E0A552 /* include_juce_audio_processors.mm */ /* include_juce_audio_processors.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_processors.mm; path = ../../JuceLibraryCode/include_juce_audio_processors.mm; sourceTree = SOURCE_ROOT; }; AF330F41D1A4865108690E3C /* include_juce_audio_devices.mm */ /* include_juce_audio_devices.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_devices.mm; path = ../../JuceLibraryCode/include_juce_audio_devices.mm; sourceTree = SOURCE_ROOT; }; AFF729977947528F3E4AAA96 /* include_juce_cryptography.mm */ /* include_juce_cryptography.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_cryptography.mm; path = ../../JuceLibraryCode/include_juce_cryptography.mm; sourceTree = SOURCE_ROOT; }; @@ -201,6 +203,7 @@ AF330F41D1A4865108690E3C, C6E2284D86D93F1D9D5C7666, AED58461CE961C62A0E0A552, + AB2DE62887E2F58D821F3217, FCEBB157FB526741DB6791D1, 01E0EEF68A11C1CAF180E173, AFF729977947528F3E4AAA96, @@ -343,6 +346,7 @@ 6C2200C52B65E1BE80544E50, A1F34D09F4E4338775917ED1, 2E28F61A64DEF942FE7B94C4, + 0E39AB2B15DCE39E1055A646, EA487FA4116517A8DFEE85B0, 0977FEC02DAF29438583198A, 0FA2A3321630EBE83E439D99, diff --git a/extras/NetworkGraphicsDemo/JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp b/extras/NetworkGraphicsDemo/JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp new file mode 100644 index 0000000000..64b4d5f4d3 --- /dev/null +++ b/extras/NetworkGraphicsDemo/JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj index e63ba2e8f1..9084547f13 100644 --- a/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj +++ b/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj @@ -279,6 +279,9 @@ true + + true + true @@ -1691,6 +1694,7 @@ + @@ -1860,6 +1864,7 @@ + diff --git a/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj.filters index ea2ebb5d59..97820a92ca 100644 --- a/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj.filters +++ b/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj.filters @@ -559,6 +559,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -2436,6 +2439,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -2943,6 +2949,9 @@ JUCE Modules\juce_events\native + + JUCE Modules\juce_events\native + JUCE Modules\juce_events\native diff --git a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj index d4b497d1b7..712ba5f91d 100644 --- a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj +++ b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj @@ -279,6 +279,9 @@ true + + true + true @@ -1691,6 +1694,7 @@ + @@ -1860,6 +1864,7 @@ + diff --git a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters index 66ed6940c7..8181840dfc 100644 --- a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters +++ b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters @@ -559,6 +559,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -2436,6 +2439,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -2943,6 +2949,9 @@ JUCE Modules\juce_events\native + + JUCE Modules\juce_events\native + JUCE Modules\juce_events\native diff --git a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj index ae8ccd4d8c..9b2d02fd14 100644 --- a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj +++ b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj @@ -279,6 +279,9 @@ true + + true + true @@ -1691,6 +1694,7 @@ + @@ -1860,6 +1864,7 @@ + diff --git a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters index 05cd0c4f60..47f240eeb9 100644 --- a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters +++ b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters @@ -559,6 +559,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -2436,6 +2439,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -2943,6 +2949,9 @@ JUCE Modules\juce_events\native + + JUCE Modules\juce_events\native + JUCE Modules\juce_events\native diff --git a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj index a49bcd0b7f..d8dcb4a4b2 100644 --- a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj +++ b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj @@ -279,6 +279,9 @@ true + + true + true @@ -1691,6 +1694,7 @@ + @@ -1860,6 +1864,7 @@ + diff --git a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters index a554318303..5f8655e7ec 100644 --- a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters +++ b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters @@ -559,6 +559,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -2436,6 +2439,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -2943,6 +2949,9 @@ JUCE Modules\juce_events\native + + JUCE Modules\juce_events\native + JUCE Modules\juce_events\native diff --git a/extras/Projucer/Source/Project/jucer_Project.cpp b/extras/Projucer/Source/Project/jucer_Project.cpp index 2b7451d18f..d9be15de09 100644 --- a/extras/Projucer/Source/Project/jucer_Project.cpp +++ b/extras/Projucer/Source/Project/jucer_Project.cpp @@ -2233,6 +2233,11 @@ bool Project::isVST3PluginHost() return getEnabledModules().isModuleEnabled ("juce_audio_processors") && isConfigFlagEnabled ("JUCE_PLUGINHOST_VST3", false); } +bool Project::isLV2PluginHost() +{ + return getEnabledModules().isModuleEnabled ("juce_audio_processors") && isConfigFlagEnabled ("JUCE_PLUGINHOST_LV2", false); +} + //============================================================================== StringArray Project::getAllAUMainTypeStrings() noexcept { diff --git a/extras/Projucer/Source/Project/jucer_Project.h b/extras/Projucer/Source/Project/jucer_Project.h index af8477a326..a1051ff4a3 100644 --- a/extras/Projucer/Source/Project/jucer_Project.h +++ b/extras/Projucer/Source/Project/jucer_Project.h @@ -318,6 +318,7 @@ public: bool isAUPluginHost(); bool isVSTPluginHost(); bool isVST3PluginHost(); + bool isLV2PluginHost(); //============================================================================== bool shouldBuildTargetType (build_tools::ProjectType::Target::Type targetType) const noexcept; diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h index 36c8bd5d62..f858a3513b 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h @@ -1788,7 +1788,10 @@ protected: static bool shouldAddBigobjFlag (const build_tools::RelativePath& path) { - return path.getFileNameWithoutExtension().equalsIgnoreCase ("include_juce_gui_basics"); + const auto name = path.getFileNameWithoutExtension(); + + return name.equalsIgnoreCase ("include_juce_gui_basics") + || name.equalsIgnoreCase ("include_juce_audio_processors"); } StringArray getModuleLibs() const diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp index b191a34817..166736950f 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp @@ -340,7 +340,7 @@ void ProjectExporter::createIconProperties (PropertyListBuilder& props) //============================================================================== void ProjectExporter::addSettingsForProjectType (const build_tools::ProjectType& type) { - addVSTPathsIfPluginOrHost(); + addExtraIncludePathsIfPluginOrHost(); if (type.isAudioPlugin()) addCommonAudioPluginSettings(); @@ -348,16 +348,48 @@ void ProjectExporter::addSettingsForProjectType (const build_tools::ProjectType& addPlatformSpecificSettingsForProjectType (type); } -void ProjectExporter::addVSTPathsIfPluginOrHost() +void ProjectExporter::addExtraIncludePathsIfPluginOrHost() { - if (((shouldBuildTargetType (build_tools::ProjectType::Target::VSTPlugIn) && project.shouldBuildVST()) || project.isVSTPluginHost()) - || ((shouldBuildTargetType (build_tools::ProjectType::Target::VST3PlugIn) && project.shouldBuildVST3()) || project.isVST3PluginHost())) + using Target = build_tools::ProjectType::Target; + + if (((shouldBuildTargetType (Target::VSTPlugIn) && project.shouldBuildVST()) || project.isVSTPluginHost()) + || ((shouldBuildTargetType (Target::VST3PlugIn) && project.shouldBuildVST3()) || project.isVST3PluginHost())) { addLegacyVSTFolderToPathIfSpecified(); if (! project.isConfigFlagEnabled ("JUCE_CUSTOM_VST3_SDK")) addToExtraSearchPaths (getInternalVST3SDKPath(), 0); } + + const auto lv2BasePath = getModuleFolderRelativeToProject ("juce_audio_processors").getChildFile ("format_types") + .getChildFile ("LV2_SDK"); + + if (project.isLV2PluginHost()) + { + const std::vector paths[] { { "" }, + { "lv2" }, + { "serd" }, + { "sord" }, + { "sord", "src" }, + { "sratom" }, + { "lilv" }, + { "lilv", "src" } }; + + for (const auto& components : paths) + { + const auto appendComponent = [] (const build_tools::RelativePath& f, const char* component) + { + return f.getChildFile (component); + }; + + const auto includePath = std::accumulate (components.begin(), + components.end(), + lv2BasePath, + appendComponent); + + addToExtraSearchPaths (includePath, 0); + } + } } void ProjectExporter::addCommonAudioPluginSettings() diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.h index 9794d36dcd..b837b3447b 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.h @@ -462,7 +462,7 @@ private: void createDependencyPathProperties (PropertyListBuilder&); void createIconProperties (PropertyListBuilder&); - void addVSTPathsIfPluginOrHost(); + void addExtraIncludePathsIfPluginOrHost(); void addCommonAudioPluginSettings(); void addLegacyVSTFolderToPathIfSpecified(); build_tools::RelativePath getInternalVST3SDKPath(); diff --git a/extras/UnitTestRunner/Builds/LinuxMakefile/Makefile b/extras/UnitTestRunner/Builds/LinuxMakefile/Makefile index 1e891a822a..43b6a4a326 100644 --- a/extras/UnitTestRunner/Builds/LinuxMakefile/Makefile +++ b/extras/UnitTestRunner/Builds/LinuxMakefile/Makefile @@ -39,7 +39,7 @@ ifeq ($(CONFIG),Debug) TARGET_ARCH := endif - JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DDEBUG=1" "-D_DEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_analytics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_dsp=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_MODULE_AVAILABLE_juce_osc=1" "-DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1" "-DJUCE_MODULE_AVAILABLE_juce_video=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_PLUGINHOST_VST3=1" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCE_UNIT_TESTS=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell $(PKG_CONFIG) --cflags alsa freetype2 libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../../../modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) + JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DDEBUG=1" "-D_DEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_analytics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_dsp=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_MODULE_AVAILABLE_juce_osc=1" "-DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1" "-DJUCE_MODULE_AVAILABLE_juce_video=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_PLUGINHOST_VST3=1" "-DJUCE_PLUGINHOST_LV2=1" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCE_UNIT_TESTS=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell $(PKG_CONFIG) --cflags alsa freetype2 libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 -I../../../../modules/juce_audio_processors/format_types/LV2_SDK -I../../../../modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) JUCE_CPPFLAGS_CONSOLEAPP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" JUCE_TARGET_CONSOLEAPP := UnitTestRunner @@ -60,7 +60,7 @@ ifeq ($(CONFIG),Release) TARGET_ARCH := endif - JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_analytics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_dsp=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_MODULE_AVAILABLE_juce_osc=1" "-DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1" "-DJUCE_MODULE_AVAILABLE_juce_video=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_PLUGINHOST_VST3=1" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCE_UNIT_TESTS=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell $(PKG_CONFIG) --cflags alsa freetype2 libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../../../modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) + JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_analytics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_dsp=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_MODULE_AVAILABLE_juce_osc=1" "-DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1" "-DJUCE_MODULE_AVAILABLE_juce_video=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_PLUGINHOST_VST3=1" "-DJUCE_PLUGINHOST_LV2=1" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCE_UNIT_TESTS=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell $(PKG_CONFIG) --cflags alsa freetype2 libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 -I../../../../modules/juce_audio_processors/format_types/LV2_SDK -I../../../../modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) JUCE_CPPFLAGS_CONSOLEAPP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" JUCE_TARGET_CONSOLEAPP := UnitTestRunner @@ -78,6 +78,7 @@ OBJECTS_CONSOLEAPP := \ $(JUCE_OBJDIR)/include_juce_audio_devices_63111d02.o \ $(JUCE_OBJDIR)/include_juce_audio_formats_15f82001.o \ $(JUCE_OBJDIR)/include_juce_audio_processors_10c03666.o \ + $(JUCE_OBJDIR)/include_juce_audio_processors_lv2_libs_12bdca08.o \ $(JUCE_OBJDIR)/include_juce_audio_utils_9f9fb2d6.o \ $(JUCE_OBJDIR)/include_juce_core_f26d17db.o \ $(JUCE_OBJDIR)/include_juce_cryptography_8cb807a8.o \ @@ -135,6 +136,11 @@ $(JUCE_OBJDIR)/include_juce_audio_processors_10c03666.o: ../../JuceLibraryCode/i @echo "Compiling include_juce_audio_processors.cpp" $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_CONSOLEAPP) $(JUCE_CFLAGS_CONSOLEAPP) -o "$@" -c "$<" +$(JUCE_OBJDIR)/include_juce_audio_processors_lv2_libs_12bdca08.o: ../../JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp + -$(V_AT)mkdir -p $(JUCE_OBJDIR) + @echo "Compiling include_juce_audio_processors_lv2_libs.cpp" + $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_CONSOLEAPP) $(JUCE_CFLAGS_CONSOLEAPP) -o "$@" -c "$<" + $(JUCE_OBJDIR)/include_juce_audio_utils_9f9fb2d6.o: ../../JuceLibraryCode/include_juce_audio_utils.cpp -$(V_AT)mkdir -p $(JUCE_OBJDIR) @echo "Compiling include_juce_audio_utils.cpp" diff --git a/extras/UnitTestRunner/Builds/MacOSX/UnitTestRunner.xcodeproj/project.pbxproj b/extras/UnitTestRunner/Builds/MacOSX/UnitTestRunner.xcodeproj/project.pbxproj index e855fc1cb9..a884a999ab 100644 --- a/extras/UnitTestRunner/Builds/MacOSX/UnitTestRunner.xcodeproj/project.pbxproj +++ b/extras/UnitTestRunner/Builds/MacOSX/UnitTestRunner.xcodeproj/project.pbxproj @@ -26,6 +26,7 @@ 6EB1A3B818863EF1787A9CCE /* AVFoundation.framework */ = {isa = PBXBuildFile; fileRef = 4B427AF10E722F9A362CEB73; }; 7164274FE42C7EC423455E05 /* include_juce_osc.cpp */ = {isa = PBXBuildFile; fileRef = A59D9064C3A2D7EC3DC45420; }; 74EC8AEC296DB2721EB438BF /* include_juce_audio_processors.mm */ = {isa = PBXBuildFile; fileRef = 3A26A3568F2C301EEED25288; }; + 79FE3F2D2EFAC333283E5D90 /* include_juce_audio_processors_lv2_libs.cpp */ = {isa = PBXBuildFile; fileRef = 45FB94C047D1ECAACA9462B7; }; 8D51903C59161885903F60CC /* CoreMIDI.framework */ = {isa = PBXBuildFile; fileRef = 04C1B8BF62AA09E62B362913; }; 96EFF7BA261F57DD829324D8 /* AudioToolbox.framework */ = {isa = PBXBuildFile; fileRef = 7898C73DCA6FA9D9CF669D32; }; 9B48039CDFD679AD944BAC70 /* include_juce_core.mm */ = {isa = PBXBuildFile; fileRef = AB19DDC8458D2A420E6D8AC3; }; @@ -68,6 +69,7 @@ 3A26A3568F2C301EEED25288 /* include_juce_audio_processors.mm */ /* include_juce_audio_processors.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_processors.mm; path = ../../JuceLibraryCode/include_juce_audio_processors.mm; sourceTree = SOURCE_ROOT; }; 3D169C5EFBF6304F5CE4C35E /* include_juce_events.mm */ /* include_juce_events.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_events.mm; path = ../../JuceLibraryCode/include_juce_events.mm; sourceTree = SOURCE_ROOT; }; 4195CB317C364D778AE2ADB1 /* include_juce_gui_extra.mm */ /* include_juce_gui_extra.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_gui_extra.mm; path = ../../JuceLibraryCode/include_juce_gui_extra.mm; sourceTree = SOURCE_ROOT; }; + 45FB94C047D1ECAACA9462B7 /* include_juce_audio_processors_lv2_libs.cpp */ /* include_juce_audio_processors_lv2_libs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_processors_lv2_libs.cpp; path = ../../JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp; sourceTree = SOURCE_ROOT; }; 4B427AF10E722F9A362CEB73 /* AVFoundation.framework */ /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; 4BD792956FE7C22CB8FB691D /* include_juce_audio_basics.mm */ /* include_juce_audio_basics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_basics.mm; path = ../../JuceLibraryCode/include_juce_audio_basics.mm; sourceTree = SOURCE_ROOT; }; 4CA19EC18C2BC536B3636842 /* include_juce_dsp.mm */ /* include_juce_dsp.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_dsp.mm; path = ../../JuceLibraryCode/include_juce_dsp.mm; sourceTree = SOURCE_ROOT; }; @@ -163,6 +165,7 @@ 00CDB93410EA5AECBA5ADA95, A76DD7182C290A9020C96CA7, 3A26A3568F2C301EEED25288, + 45FB94C047D1ECAACA9462B7, 846E187EC2E797B982861CA4, AB19DDC8458D2A420E6D8AC3, 08ED235CBE02E0FB4BE4653E, @@ -318,6 +321,7 @@ 33D24B475EA928745A87EDDB, FDDF955477BE7FEBC364E19B, 74EC8AEC296DB2721EB438BF, + 79FE3F2D2EFAC333283E5D90, 3822F598DA7044E5DB7633A9, 9B48039CDFD679AD944BAC70, FC139F56BD13A2C78D21076E, @@ -425,6 +429,7 @@ "JUCE_MODULE_AVAILABLE_juce_video=1", "JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1", "JUCE_PLUGINHOST_VST3=1", + "JUCE_PLUGINHOST_LV2=1", "JUCE_STRICT_REFCOUNTEDPOINTER=1", "JUCE_STANDALONE_APPLICATION=1", "JUCE_UNIT_TESTS=1", @@ -442,6 +447,14 @@ ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK", "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK", "$(SRCROOT)/../../JuceLibraryCode", "$(SRCROOT)/../../../../modules", @@ -450,7 +463,7 @@ INSTALL_PATH = "/usr/bin"; LLVM_LTO = YES; MACOSX_DEPLOYMENT_TARGET = 10.10; - MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; + MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; @@ -549,6 +562,7 @@ "JUCE_MODULE_AVAILABLE_juce_video=1", "JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1", "JUCE_PLUGINHOST_VST3=1", + "JUCE_PLUGINHOST_LV2=1", "JUCE_STRICT_REFCOUNTEDPOINTER=1", "JUCE_STANDALONE_APPLICATION=1", "JUCE_UNIT_TESTS=1", @@ -566,6 +580,14 @@ ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2", + "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK", "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK", "$(SRCROOT)/../../JuceLibraryCode", "$(SRCROOT)/../../../../modules", @@ -573,7 +595,7 @@ ); INSTALL_PATH = "/usr/bin"; MACOSX_DEPLOYMENT_TARGET = 10.10; - MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; + MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; diff --git a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj index 1a5577991e..0d1578d457 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj +++ b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj @@ -63,8 +63,8 @@ Disabled ProgramDatabase - ..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_PLUGINHOST_VST3=1;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -106,8 +106,8 @@ Full - ..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_PLUGINHOST_VST3=1;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) MultiThreadedDLL true NotUsing @@ -687,6 +687,123 @@ true + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + true @@ -762,6 +879,15 @@ true + + true + + + true + + + true + true @@ -819,6 +945,9 @@ true + + true + true @@ -831,6 +960,9 @@ true + + true + true @@ -900,6 +1032,9 @@ true + + true + true @@ -2326,7 +2461,10 @@ - + + /bigobj %(AdditionalOptions) + + @@ -2387,6 +2525,7 @@ + @@ -2587,6 +2726,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2655,6 +2856,9 @@ + + + @@ -2682,6 +2886,8 @@ + + @@ -2713,6 +2919,7 @@ + @@ -2929,6 +3136,7 @@ + @@ -3260,6 +3468,7 @@ + diff --git a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters index 01a3790071..0bd431d93e 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters +++ b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters @@ -149,6 +149,129 @@ {86737735-F6BA-F64A-5EC7-5C9F36755F79} + + {CDCCDBC1-E1A7-558D-D4AA-B48003178AE3} + + + {6656EC0E-A4C5-985B-242F-01890BDEFB1B} + + + {107F6637-689A-6DAC-1F5D-FD9734F3A0D9} + + + {C60CB2F9-12ED-74A2-C81C-366287805252} + + + {0BE3157E-54F5-3F72-7023-A62A81D83443} + + + {AD43AFB9-8A3D-C470-E098-4ADA2D6B1C07} + + + {77E6DFCD-32E7-A7E2-75E9-50C49384FEDA} + + + {8449F5A3-222A-3C21-88BD-2ACA69CD290A} + + + {50066622-9190-C54D-FE24-563064A80DB4} + + + {E8F398A4-2CFC-D98B-343B-FB06B6B54063} + + + {18BD9026-D673-60FB-C5C0-E4234E9FE71C} + + + {E469C933-C0FE-3A95-168B-234F8B4B620B} + + + {375C3EDB-D1F5-AA38-D498-B462B7BDEDE9} + + + {2E0391E6-2B82-F704-4B16-9EF63C4E25C1} + + + {D1C825D2-2980-075A-3EC0-43930977748F} + + + {B350BD14-1FB6-A9A0-4725-75CFEFC2D067} + + + {96D16B7E-5FC5-182E-8734-37C9D27C2299} + + + {56518C02-F710-7D5E-09E6-4B152D5900C7} + + + {8D78CFF1-6E9E-3E78-317D-7954EE6482BB} + + + {6B811726-62F3-6E7C-BE8E-493A61CAA9E4} + + + {C84EE2C8-14A3-D098-62A4-E1C75B7FA13A} + + + {42DD7AA9-DF7D-D9F9-E50C-69C44211A42B} + + + {009A44FF-D1C5-47C0-64CC-9122107C73D1} + + + {AAEE24C0-066F-8593-70EA-B7AC7553E885} + + + {CEC45021-32A4-16BA-8E12-023B029608CD} + + + {E5DFE07F-5901-AF5C-7759-84EBF9717E5E} + + + {3A189BF7-28D6-C0C4-B831-97AD9E46FE5A} + + + {829FC6C3-87E7-0491-B8C3-DC3905FB6039} + + + {49174595-84D0-A512-B98C-0CFD2D772B8A} + + + {E27C67CB-E138-DCCB-110D-623E2C01F9BC} + + + {392635C4-010A-C8A2-F46D-1A3628445E1C} + + + {1FF26A52-F9B9-625F-DEE9-8FEE0C02F0F4} + + + {3A5A13A1-B57C-EF05-AC38-53B08A4C8D4A} + + + {97983FD5-3F19-2B58-4941-D8FBB6B92BA4} + + + {ADC9725E-0948-5908-13BD-0275DB25325A} + + + {37AD6CD9-9FE5-A457-B1FE-36A85F973502} + + + {0F3B119C-FE8B-3978-2D80-53248BBBCDEA} + + + {5E836BFC-319A-1CE7-13C9-BD9E87F0A228} + + + {5D8E291B-1BB8-3A55-0939-D13A8589C395} + + + {BE3B7D89-2DE8-3CA1-B00E-55821EF3AAAC} + + + {E0DE9D5D-2792-148A-2CE1-182A90DD5F0E} + {4DC60E78-BBC0-B540-63A2-37E14ABBEF09} @@ -1084,6 +1207,123 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\src + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -1162,6 +1402,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -1219,6 +1468,9 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1234,6 +1486,9 @@ JUCE Modules\juce_audio_processors + + JUCE Modules\juce_audio_processors + JUCE Modules\juce_audio_utils\audio_cd @@ -1318,6 +1573,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -2860,6 +3118,9 @@ JUCE Library Code + + JUCE Library Code + JUCE Library Code @@ -3030,6 +3291,9 @@ JUCE Modules\juce_audio_basics\native + + JUCE Modules\juce_audio_basics\native + JUCE Modules\juce_audio_basics\sources @@ -3630,6 +3894,192 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\buf-size + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\data-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\dynmanifest + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\instance-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\midi + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\morph + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\options + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\parameters + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\patch + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-groups + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-props + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\presets + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\resize-port + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\state + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\time + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\ui + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\units + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\uri-map + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\urid + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\worker + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\serd + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\sratom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -3834,6 +4284,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -3915,6 +4374,12 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -4008,6 +4473,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -4656,6 +5124,9 @@ JUCE Modules\juce_events\native + + JUCE Modules\juce_events\native + JUCE Modules\juce_events\native @@ -5645,6 +6116,9 @@ JUCE Modules\juce_audio_formats\codecs\oggvorbis + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base diff --git a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj index 3643e688e7..d906dc19ec 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj +++ b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj @@ -63,8 +63,8 @@ Disabled ProgramDatabase - ..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_PLUGINHOST_VST3=1;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -106,8 +106,8 @@ Full - ..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_PLUGINHOST_VST3=1;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) MultiThreadedDLL true NotUsing @@ -687,6 +687,123 @@ true + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + true @@ -762,6 +879,15 @@ true + + true + + + true + + + true + true @@ -819,6 +945,9 @@ true + + true + true @@ -831,6 +960,9 @@ true + + true + true @@ -900,6 +1032,9 @@ true + + true + true @@ -2326,7 +2461,10 @@ - + + /bigobj %(AdditionalOptions) + + @@ -2387,6 +2525,7 @@ + @@ -2587,6 +2726,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2655,6 +2856,9 @@ + + + @@ -2682,6 +2886,8 @@ + + @@ -2713,6 +2919,7 @@ + @@ -2929,6 +3136,7 @@ + @@ -3260,6 +3468,7 @@ + diff --git a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters index 71bbc7529d..ed815dcaae 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters +++ b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters @@ -149,6 +149,129 @@ {86737735-F6BA-F64A-5EC7-5C9F36755F79} + + {CDCCDBC1-E1A7-558D-D4AA-B48003178AE3} + + + {6656EC0E-A4C5-985B-242F-01890BDEFB1B} + + + {107F6637-689A-6DAC-1F5D-FD9734F3A0D9} + + + {C60CB2F9-12ED-74A2-C81C-366287805252} + + + {0BE3157E-54F5-3F72-7023-A62A81D83443} + + + {AD43AFB9-8A3D-C470-E098-4ADA2D6B1C07} + + + {77E6DFCD-32E7-A7E2-75E9-50C49384FEDA} + + + {8449F5A3-222A-3C21-88BD-2ACA69CD290A} + + + {50066622-9190-C54D-FE24-563064A80DB4} + + + {E8F398A4-2CFC-D98B-343B-FB06B6B54063} + + + {18BD9026-D673-60FB-C5C0-E4234E9FE71C} + + + {E469C933-C0FE-3A95-168B-234F8B4B620B} + + + {375C3EDB-D1F5-AA38-D498-B462B7BDEDE9} + + + {2E0391E6-2B82-F704-4B16-9EF63C4E25C1} + + + {D1C825D2-2980-075A-3EC0-43930977748F} + + + {B350BD14-1FB6-A9A0-4725-75CFEFC2D067} + + + {96D16B7E-5FC5-182E-8734-37C9D27C2299} + + + {56518C02-F710-7D5E-09E6-4B152D5900C7} + + + {8D78CFF1-6E9E-3E78-317D-7954EE6482BB} + + + {6B811726-62F3-6E7C-BE8E-493A61CAA9E4} + + + {C84EE2C8-14A3-D098-62A4-E1C75B7FA13A} + + + {42DD7AA9-DF7D-D9F9-E50C-69C44211A42B} + + + {009A44FF-D1C5-47C0-64CC-9122107C73D1} + + + {AAEE24C0-066F-8593-70EA-B7AC7553E885} + + + {CEC45021-32A4-16BA-8E12-023B029608CD} + + + {E5DFE07F-5901-AF5C-7759-84EBF9717E5E} + + + {3A189BF7-28D6-C0C4-B831-97AD9E46FE5A} + + + {829FC6C3-87E7-0491-B8C3-DC3905FB6039} + + + {49174595-84D0-A512-B98C-0CFD2D772B8A} + + + {E27C67CB-E138-DCCB-110D-623E2C01F9BC} + + + {392635C4-010A-C8A2-F46D-1A3628445E1C} + + + {1FF26A52-F9B9-625F-DEE9-8FEE0C02F0F4} + + + {3A5A13A1-B57C-EF05-AC38-53B08A4C8D4A} + + + {97983FD5-3F19-2B58-4941-D8FBB6B92BA4} + + + {ADC9725E-0948-5908-13BD-0275DB25325A} + + + {37AD6CD9-9FE5-A457-B1FE-36A85F973502} + + + {0F3B119C-FE8B-3978-2D80-53248BBBCDEA} + + + {5E836BFC-319A-1CE7-13C9-BD9E87F0A228} + + + {5D8E291B-1BB8-3A55-0939-D13A8589C395} + + + {BE3B7D89-2DE8-3CA1-B00E-55821EF3AAAC} + + + {E0DE9D5D-2792-148A-2CE1-182A90DD5F0E} + {4DC60E78-BBC0-B540-63A2-37E14ABBEF09} @@ -1084,6 +1207,123 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\src + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -1162,6 +1402,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -1219,6 +1468,9 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1234,6 +1486,9 @@ JUCE Modules\juce_audio_processors + + JUCE Modules\juce_audio_processors + JUCE Modules\juce_audio_utils\audio_cd @@ -1318,6 +1573,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -2860,6 +3118,9 @@ JUCE Library Code + + JUCE Library Code + JUCE Library Code @@ -3030,6 +3291,9 @@ JUCE Modules\juce_audio_basics\native + + JUCE Modules\juce_audio_basics\native + JUCE Modules\juce_audio_basics\sources @@ -3630,6 +3894,192 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\buf-size + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\data-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\dynmanifest + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\instance-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\midi + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\morph + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\options + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\parameters + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\patch + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-groups + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-props + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\presets + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\resize-port + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\state + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\time + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\ui + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\units + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\uri-map + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\urid + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\worker + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\serd + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\sratom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -3834,6 +4284,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -3915,6 +4374,12 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -4008,6 +4473,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -4656,6 +5124,9 @@ JUCE Modules\juce_events\native + + JUCE Modules\juce_events\native + JUCE Modules\juce_events\native @@ -5645,6 +6116,9 @@ JUCE Modules\juce_audio_formats\codecs\oggvorbis + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base diff --git a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj index 198ea19af8..0d639da42e 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj +++ b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj @@ -63,8 +63,8 @@ Disabled ProgramDatabase - ..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_PLUGINHOST_VST3=1;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;JUCE_UNIT_TESTS=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;JUCE_UNIT_TESTS=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -106,8 +106,8 @@ Full - ..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_PLUGINHOST_VST3=1;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;JUCE_UNIT_TESTS=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;JUCE_UNIT_TESTS=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) MultiThreadedDLL true NotUsing @@ -687,6 +687,123 @@ true + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + true @@ -762,6 +879,15 @@ true + + true + + + true + + + true + true @@ -819,6 +945,9 @@ true + + true + true @@ -831,6 +960,9 @@ true + + true + true @@ -900,6 +1032,9 @@ true + + true + true @@ -2326,7 +2461,10 @@ - + + /bigobj %(AdditionalOptions) + + @@ -2387,6 +2525,7 @@ + @@ -2587,6 +2726,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2655,6 +2856,9 @@ + + + @@ -2682,6 +2886,8 @@ + + @@ -2713,6 +2919,7 @@ + @@ -2929,6 +3136,7 @@ + @@ -3260,6 +3468,7 @@ + diff --git a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters index 62a0be1be4..c1e12f0ba3 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters +++ b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters @@ -149,6 +149,129 @@ {86737735-F6BA-F64A-5EC7-5C9F36755F79} + + {CDCCDBC1-E1A7-558D-D4AA-B48003178AE3} + + + {6656EC0E-A4C5-985B-242F-01890BDEFB1B} + + + {107F6637-689A-6DAC-1F5D-FD9734F3A0D9} + + + {C60CB2F9-12ED-74A2-C81C-366287805252} + + + {0BE3157E-54F5-3F72-7023-A62A81D83443} + + + {AD43AFB9-8A3D-C470-E098-4ADA2D6B1C07} + + + {77E6DFCD-32E7-A7E2-75E9-50C49384FEDA} + + + {8449F5A3-222A-3C21-88BD-2ACA69CD290A} + + + {50066622-9190-C54D-FE24-563064A80DB4} + + + {E8F398A4-2CFC-D98B-343B-FB06B6B54063} + + + {18BD9026-D673-60FB-C5C0-E4234E9FE71C} + + + {E469C933-C0FE-3A95-168B-234F8B4B620B} + + + {375C3EDB-D1F5-AA38-D498-B462B7BDEDE9} + + + {2E0391E6-2B82-F704-4B16-9EF63C4E25C1} + + + {D1C825D2-2980-075A-3EC0-43930977748F} + + + {B350BD14-1FB6-A9A0-4725-75CFEFC2D067} + + + {96D16B7E-5FC5-182E-8734-37C9D27C2299} + + + {56518C02-F710-7D5E-09E6-4B152D5900C7} + + + {8D78CFF1-6E9E-3E78-317D-7954EE6482BB} + + + {6B811726-62F3-6E7C-BE8E-493A61CAA9E4} + + + {C84EE2C8-14A3-D098-62A4-E1C75B7FA13A} + + + {42DD7AA9-DF7D-D9F9-E50C-69C44211A42B} + + + {009A44FF-D1C5-47C0-64CC-9122107C73D1} + + + {AAEE24C0-066F-8593-70EA-B7AC7553E885} + + + {CEC45021-32A4-16BA-8E12-023B029608CD} + + + {E5DFE07F-5901-AF5C-7759-84EBF9717E5E} + + + {3A189BF7-28D6-C0C4-B831-97AD9E46FE5A} + + + {829FC6C3-87E7-0491-B8C3-DC3905FB6039} + + + {49174595-84D0-A512-B98C-0CFD2D772B8A} + + + {E27C67CB-E138-DCCB-110D-623E2C01F9BC} + + + {392635C4-010A-C8A2-F46D-1A3628445E1C} + + + {1FF26A52-F9B9-625F-DEE9-8FEE0C02F0F4} + + + {3A5A13A1-B57C-EF05-AC38-53B08A4C8D4A} + + + {97983FD5-3F19-2B58-4941-D8FBB6B92BA4} + + + {ADC9725E-0948-5908-13BD-0275DB25325A} + + + {37AD6CD9-9FE5-A457-B1FE-36A85F973502} + + + {0F3B119C-FE8B-3978-2D80-53248BBBCDEA} + + + {5E836BFC-319A-1CE7-13C9-BD9E87F0A228} + + + {5D8E291B-1BB8-3A55-0939-D13A8589C395} + + + {BE3B7D89-2DE8-3CA1-B00E-55821EF3AAAC} + + + {E0DE9D5D-2792-148A-2CE1-182A90DD5F0E} + {4DC60E78-BBC0-B540-63A2-37E14ABBEF09} @@ -1084,6 +1207,123 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\src + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -1162,6 +1402,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -1219,6 +1468,9 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1234,6 +1486,9 @@ JUCE Modules\juce_audio_processors + + JUCE Modules\juce_audio_processors + JUCE Modules\juce_audio_utils\audio_cd @@ -1318,6 +1573,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -2860,6 +3118,9 @@ JUCE Library Code + + JUCE Library Code + JUCE Library Code @@ -3030,6 +3291,9 @@ JUCE Modules\juce_audio_basics\native + + JUCE Modules\juce_audio_basics\native + JUCE Modules\juce_audio_basics\sources @@ -3630,6 +3894,192 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\buf-size + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\data-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\dynmanifest + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\instance-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\midi + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\morph + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\options + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\parameters + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\patch + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-groups + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-props + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\presets + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\resize-port + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\state + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\time + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\ui + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\units + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\uri-map + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\urid + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\worker + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\serd + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\sratom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -3834,6 +4284,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -3915,6 +4374,12 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -4008,6 +4473,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -4656,6 +5124,9 @@ JUCE Modules\juce_events\native + + JUCE Modules\juce_events\native + JUCE Modules\juce_events\native @@ -5645,6 +6116,9 @@ JUCE Modules\juce_audio_formats\codecs\oggvorbis + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base diff --git a/extras/UnitTestRunner/CMakeLists.txt b/extras/UnitTestRunner/CMakeLists.txt index ae804f5c7c..b7b0db11d5 100644 --- a/extras/UnitTestRunner/CMakeLists.txt +++ b/extras/UnitTestRunner/CMakeLists.txt @@ -21,6 +21,7 @@ juce_generate_juce_header(UnitTestRunner) target_sources(UnitTestRunner PRIVATE Source/Main.cpp) target_compile_definitions(UnitTestRunner PRIVATE + JUCE_PLUGINHOST_LV2=1 JUCE_PLUGINHOST_VST3=1 JUCE_UNIT_TESTS=1 JUCE_USE_CURL=0 diff --git a/extras/UnitTestRunner/JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp b/extras/UnitTestRunner/JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp new file mode 100644 index 0000000000..64b4d5f4d3 --- /dev/null +++ b/extras/UnitTestRunner/JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/extras/UnitTestRunner/UnitTestRunner.jucer b/extras/UnitTestRunner/UnitTestRunner.jucer index 15b3ec150d..b340c140ac 100644 --- a/extras/UnitTestRunner/UnitTestRunner.jucer +++ b/extras/UnitTestRunner/UnitTestRunner.jucer @@ -167,7 +167,7 @@ useGlobalPath="0"/> - + diff --git a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj index 9e3e8b2b35..128633dc2a 100644 --- a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj +++ b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj @@ -670,6 +670,123 @@ true + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + true @@ -745,6 +862,15 @@ true + + true + + + true + + + true + true @@ -802,6 +928,9 @@ true + + true + true @@ -814,6 +943,9 @@ true + + true + true @@ -883,6 +1015,9 @@ true + + true + true @@ -2152,7 +2287,10 @@ - + + /bigobj %(AdditionalOptions) + + @@ -2205,6 +2343,7 @@ + @@ -2405,6 +2544,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2473,6 +2674,9 @@ + + + @@ -2500,6 +2704,8 @@ + + @@ -2531,6 +2737,7 @@ + @@ -2700,6 +2907,7 @@ + @@ -3016,6 +3224,7 @@ + diff --git a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters index 39773cfdaa..8e074616e7 100644 --- a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters +++ b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters @@ -134,6 +134,129 @@ {86737735-F6BA-F64A-5EC7-5C9F36755F79} + + {CDCCDBC1-E1A7-558D-D4AA-B48003178AE3} + + + {6656EC0E-A4C5-985B-242F-01890BDEFB1B} + + + {107F6637-689A-6DAC-1F5D-FD9734F3A0D9} + + + {C60CB2F9-12ED-74A2-C81C-366287805252} + + + {0BE3157E-54F5-3F72-7023-A62A81D83443} + + + {AD43AFB9-8A3D-C470-E098-4ADA2D6B1C07} + + + {77E6DFCD-32E7-A7E2-75E9-50C49384FEDA} + + + {8449F5A3-222A-3C21-88BD-2ACA69CD290A} + + + {50066622-9190-C54D-FE24-563064A80DB4} + + + {E8F398A4-2CFC-D98B-343B-FB06B6B54063} + + + {18BD9026-D673-60FB-C5C0-E4234E9FE71C} + + + {E469C933-C0FE-3A95-168B-234F8B4B620B} + + + {375C3EDB-D1F5-AA38-D498-B462B7BDEDE9} + + + {2E0391E6-2B82-F704-4B16-9EF63C4E25C1} + + + {D1C825D2-2980-075A-3EC0-43930977748F} + + + {B350BD14-1FB6-A9A0-4725-75CFEFC2D067} + + + {96D16B7E-5FC5-182E-8734-37C9D27C2299} + + + {56518C02-F710-7D5E-09E6-4B152D5900C7} + + + {8D78CFF1-6E9E-3E78-317D-7954EE6482BB} + + + {6B811726-62F3-6E7C-BE8E-493A61CAA9E4} + + + {C84EE2C8-14A3-D098-62A4-E1C75B7FA13A} + + + {42DD7AA9-DF7D-D9F9-E50C-69C44211A42B} + + + {009A44FF-D1C5-47C0-64CC-9122107C73D1} + + + {AAEE24C0-066F-8593-70EA-B7AC7553E885} + + + {CEC45021-32A4-16BA-8E12-023B029608CD} + + + {E5DFE07F-5901-AF5C-7759-84EBF9717E5E} + + + {3A189BF7-28D6-C0C4-B831-97AD9E46FE5A} + + + {829FC6C3-87E7-0491-B8C3-DC3905FB6039} + + + {49174595-84D0-A512-B98C-0CFD2D772B8A} + + + {E27C67CB-E138-DCCB-110D-623E2C01F9BC} + + + {392635C4-010A-C8A2-F46D-1A3628445E1C} + + + {1FF26A52-F9B9-625F-DEE9-8FEE0C02F0F4} + + + {3A5A13A1-B57C-EF05-AC38-53B08A4C8D4A} + + + {97983FD5-3F19-2B58-4941-D8FBB6B92BA4} + + + {ADC9725E-0948-5908-13BD-0275DB25325A} + + + {37AD6CD9-9FE5-A457-B1FE-36A85F973502} + + + {0F3B119C-FE8B-3978-2D80-53248BBBCDEA} + + + {5E836BFC-319A-1CE7-13C9-BD9E87F0A228} + + + {5D8E291B-1BB8-3A55-0939-D13A8589C395} + + + {BE3B7D89-2DE8-3CA1-B00E-55821EF3AAAC} + + + {E0DE9D5D-2792-148A-2CE1-182A90DD5F0E} + {4DC60E78-BBC0-B540-63A2-37E14ABBEF09} @@ -1012,6 +1135,123 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\src + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -1090,6 +1330,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -1147,6 +1396,9 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1162,6 +1414,9 @@ JUCE Modules\juce_audio_processors + + JUCE Modules\juce_audio_processors + JUCE Modules\juce_audio_utils\audio_cd @@ -1246,6 +1501,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -2623,6 +2881,9 @@ JUCE Library Code + + JUCE Library Code + JUCE Library Code @@ -2769,6 +3030,9 @@ JUCE Modules\juce_audio_basics\native + + JUCE Modules\juce_audio_basics\native + JUCE Modules\juce_audio_basics\sources @@ -3369,6 +3633,192 @@ JUCE Modules\juce_audio_processors\format + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\lilv + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lilv\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\atom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\buf-size + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\core + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\data-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\dynmanifest + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\event + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\instance-access + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\log + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\midi + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\morph + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\options + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\parameters + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\patch + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-groups + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\port-props + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\presets + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\resize-port + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\state + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\time + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\ui + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\units + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\uri-map + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\urid + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\lv2\lv2\worker + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\serd + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\serd\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\sord + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src\zix + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sord\src + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK\sratom\sratom + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base\source @@ -3573,6 +4023,15 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -3654,6 +4113,12 @@ JUCE Modules\juce_audio_processors\utilities + + JUCE Modules\juce_audio_processors\utilities + + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -3747,6 +4212,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\containers + JUCE Modules\juce_core\containers @@ -4254,6 +4722,9 @@ JUCE Modules\juce_events\native + + JUCE Modules\juce_events\native + JUCE Modules\juce_events\native @@ -5198,6 +5669,9 @@ JUCE Modules\juce_audio_formats\codecs\oggvorbis + + JUCE Modules\juce_audio_processors\format_types\LV2_SDK + JUCE Modules\juce_audio_processors\format_types\VST3_SDK\base diff --git a/extras/WindowsDLL/JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp b/extras/WindowsDLL/JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp new file mode 100644 index 0000000000..64b4d5f4d3 --- /dev/null +++ b/extras/WindowsDLL/JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp b/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp index a1ec1af91e..d6528c2171 100644 --- a/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp +++ b/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp @@ -43,6 +43,7 @@ JUCE_BEGIN_NO_SANITIZE ("vptr") #include "../utility/juce_WindowsHooks.h" #include "../utility/juce_LinuxMessageThread.h" #include +#include #include #ifndef JUCE_VST3_CAN_REPLACE_VST2 diff --git a/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp b/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp index 0603fcff1e..c10b076091 100644 --- a/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp +++ b/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp @@ -25,45 +25,83 @@ AudioPluginFormatManager::~AudioPluginFormatManager() {} //============================================================================== void AudioPluginFormatManager::addDefaultFormats() { + #if JUCE_PLUGINHOST_VST && (JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX || JUCE_BSD || JUCE_IOS) + #define HAS_VST 1 + #else + #define HAS_VST 0 + #endif + + #if JUCE_PLUGINHOST_VST3 && (JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX || JUCE_BSD) + #define HAS_VST3 1 + #else + #define HAS_VST3 0 + #endif + + #if JUCE_PLUGINHOST_AU && (JUCE_MAC || JUCE_IOS) + #define HAS_AU 1 + #else + #define HAS_AU 0 + #endif + + #if JUCE_PLUGINHOST_LADSPA && (JUCE_LINUX || JUCE_BSD) + #define HAS_LADSPA 1 + #else + #define HAS_LADSPA 0 + #endif + + #if JUCE_PLUGINHOST_LV2 && (JUCE_MAC || JUCE_LINUX || JUCE_BSD || JUCE_WINDOWS) + #define HAS_LV2 1 + #else + #define HAS_LV2 0 + #endif + #if JUCE_DEBUG // you should only call this method once! for (auto* format : formats) { ignoreUnused (format); - #if JUCE_PLUGINHOST_VST && (JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX || JUCE_BSD || JUCE_IOS) + #if HAS_VST jassert (dynamic_cast (format) == nullptr); #endif - #if JUCE_PLUGINHOST_VST3 && (JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX || JUCE_BSD) + #if HAS_VST3 jassert (dynamic_cast (format) == nullptr); #endif - #if JUCE_PLUGINHOST_AU && (JUCE_MAC || JUCE_IOS) + #if HAS_AU jassert (dynamic_cast (format) == nullptr); #endif - #if JUCE_PLUGINHOST_LADSPA && (JUCE_LINUX || JUCE_BSD) + #if HAS_LADSPA jassert (dynamic_cast (format) == nullptr); #endif + + #if HAS_LV2 + jassert (dynamic_cast (format) == nullptr); + #endif } #endif - #if JUCE_PLUGINHOST_AU && (JUCE_MAC || JUCE_IOS) + #if HAS_AU formats.add (new AudioUnitPluginFormat()); #endif - #if JUCE_PLUGINHOST_VST && (JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX || JUCE_BSD || JUCE_IOS) + #if HAS_VST formats.add (new VSTPluginFormat()); #endif - #if JUCE_PLUGINHOST_VST3 && (JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX || JUCE_BSD) + #if HAS_VST3 formats.add (new VST3PluginFormat()); #endif - #if JUCE_PLUGINHOST_LADSPA && (JUCE_LINUX || JUCE_BSD) + #if HAS_LADSPA formats.add (new LADSPAPluginFormat()); #endif + + #if HAS_LV2 + formats.add (new LV2PluginFormat()); + #endif } int AudioPluginFormatManager::getNumFormats() const { return formats.size(); } diff --git a/modules/juce_audio_processors/format_types/LV2_SDK/README.md b/modules/juce_audio_processors/format_types/LV2_SDK/README.md new file mode 100644 index 0000000000..133356c940 --- /dev/null +++ b/modules/juce_audio_processors/format_types/LV2_SDK/README.md @@ -0,0 +1,11 @@ +The source code for lilv and its dependent libraries have been copied into this +directory. The following modifications were made: + +- Removed files not strictly required to build the lilv library, + including generated config headers +- Added handwritten config headers +- Removed the include of dlfcn.h in world.c + +Remember to update the versions in the config headers if you ever update +the library versions! + diff --git a/modules/juce_audio_processors/format_types/LV2_SDK/generate_lv2_bundle_sources.py b/modules/juce_audio_processors/format_types/LV2_SDK/generate_lv2_bundle_sources.py new file mode 100644 index 0000000000..e70a661a38 --- /dev/null +++ b/modules/juce_audio_processors/format_types/LV2_SDK/generate_lv2_bundle_sources.py @@ -0,0 +1,153 @@ +# ============================================================================== +# +# This file is part of the JUCE library. +# Copyright (c) 2020 - Raw Material Software Limited +# +# JUCE is an open source library subject to commercial or open-source +# licensing. +# +# By using JUCE, you agree to the terms of both the JUCE 6 End-User License +# Agreement and JUCE Privacy Policy (both effective as of the 16th June 2020). +# +# End User License Agreement: www.juce.com/juce-6-licence +# Privacy Policy: www.juce.com/juce-privacy-policy +# +# Or: You may also use this code under the terms of the GPL v3 (see +# www.gnu.org/licenses). +# +# JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER +# EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE +# DISCLAIMED. +# +# ============================================================================== + +# This script is used to convert the data files from the LV2 distribution into +# a form suitable for inclusion in a C++ project. An LV2 host would normally +# expect these files to be installed on disk, but this places a burden on host +# developers to include these files in their product installers, and to install +# them to sensible locations. Instead of forcing host developers to handle this +# case, JUCE hosts will use the embedded copy of this data to write all of the +# files to a temporary location at runtime. + +import argparse +import os + +BUNDLE_TEMPLATE = """juce::lv2::Bundle +{{ +"{}", +{{ +{} +}} +}} +""" + +BUNDLE_RESOURCE_TEMPLATE = """juce::lv2::BundleResource +{{ +"{}", +{} +}} +""" + +FUNCTION_TEMPLATE = """/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2020 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 6 End-User License + Agreement and JUCE Privacy Policy (both effective as of the 16th June 2020). + + End User License Agreement: www.juce.com/juce-6-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +/* + This file is auto-generated by generate_lv2_bundle_sources.py. +*/ + +#pragma once + +#include + +namespace juce +{{ +namespace lv2 +{{ + +struct BundleResource +{{ + const char* name; + const char* contents; +}}; + +struct Bundle +{{ + const char* name; + std::vector contents; + + static std::vector getAllBundles(); +}}; + +}} +}} + +std::vector juce::lv2::Bundle::getAllBundles() +{{ + return {{ +{} +}}; +}} +""" + + +def chunks(lst, n): + for i in range(0, len(lst), n): + yield lst[i:i + n] + + +def get_chunked_string_literal(s): + return ' '.join(map(lambda x: 'R"lv2ttl({})lv2ttl"'.format(''.join(x)), chunks(s, 8000))) + + +def get_file_source_string(ttl): + with open(ttl) as f: + return BUNDLE_RESOURCE_TEMPLATE.format(os.path.basename(ttl), + get_chunked_string_literal(f.read())) + + +def generate_bundle_source(root, files): + if len(files) == 0: + return "" + + return BUNDLE_TEMPLATE.format(os.path.basename(root), + ", ".join(get_file_source_string(os.path.join(root, ttl)) for ttl in files)) + +def filter_turtle(files): + return [f for f in files if f.endswith(".ttl")] + + +def filter_ttl_files(lv2_dir): + for root, _, files in os.walk(args.lv2_dir): + yield root, filter_turtle(files) + + +parser = argparse.ArgumentParser() +parser.add_argument("lv2_dir") +args = parser.parse_args() + +print(FUNCTION_TEMPLATE.format(", ".join(generate_bundle_source(root, files) + for root, files in filter_ttl_files(args.lv2_dir) + if len(files) != 0)), + end = "\r\n") diff --git a/modules/juce_audio_processors/format_types/lv2/juce_lv2_config.h b/modules/juce_audio_processors/format_types/LV2_SDK/juce_lv2_config.h similarity index 53% rename from modules/juce_audio_processors/format_types/lv2/juce_lv2_config.h rename to modules/juce_audio_processors/format_types/LV2_SDK/juce_lv2_config.h index 73b24a2f52..004b74add0 100644 --- a/modules/juce_audio_processors/format_types/lv2/juce_lv2_config.h +++ b/modules/juce_audio_processors/format_types/LV2_SDK/juce_lv2_config.h @@ -1,3 +1,29 @@ +/* + ============================================================================== + + This file is part of the JUCE 7 technical preview. + Copyright (c) 2022 - Raw Material Software Limited + + You may use this code under the terms of the GPL v3 + (see www.gnu.org/licenses). + + For the technical preview this file cannot be licensed commercially. + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +/* + This header contains preprocessor config flags that would normally be + generated by the build systems of the various LV2 libraries. + + Rather than using the generated platform-dependent headers, we use JUCE's + platform detection macros to pick the right config values at build time. +*/ + #pragma once #define LILV_DYN_MANIFEST diff --git a/modules/juce_audio_processors/format_types/lv2/lilv/COPYING b/modules/juce_audio_processors/format_types/LV2_SDK/lilv/COPYING similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lilv/COPYING rename to modules/juce_audio_processors/format_types/LV2_SDK/lilv/COPYING diff --git a/modules/juce_audio_processors/format_types/lv2/lilv/lilv/lilv.h b/modules/juce_audio_processors/format_types/LV2_SDK/lilv/lilv/lilv.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lilv/lilv/lilv.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lilv/lilv/lilv.h diff --git a/modules/juce_audio_processors/format_types/lv2/lilv/lilv/lilvmm.hpp b/modules/juce_audio_processors/format_types/LV2_SDK/lilv/lilv/lilvmm.hpp similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lilv/lilv/lilvmm.hpp rename to modules/juce_audio_processors/format_types/LV2_SDK/lilv/lilv/lilvmm.hpp diff --git a/modules/juce_audio_processors/format_types/lv2/lilv/src/collections.c b/modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/collections.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lilv/src/collections.c rename to modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/collections.c diff --git a/modules/juce_audio_processors/format_types/lv2/lilv/src/filesystem.c b/modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/filesystem.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lilv/src/filesystem.c rename to modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/filesystem.c diff --git a/modules/juce_audio_processors/format_types/lv2/lilv/src/filesystem.h b/modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/filesystem.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lilv/src/filesystem.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/filesystem.h diff --git a/modules/juce_audio_processors/format_types/lv2/lilv/src/instance.c b/modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/instance.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lilv/src/instance.c rename to modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/instance.c diff --git a/modules/juce_audio_processors/format_types/lv2/lilv/src/lib.c b/modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/lib.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lilv/src/lib.c rename to modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/lib.c diff --git a/modules/juce_audio_processors/format_types/lv2/lilv/src/lilv_internal.h b/modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/lilv_internal.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lilv/src/lilv_internal.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/lilv_internal.h diff --git a/modules/juce_audio_processors/format_types/lv2/lilv/src/node.c b/modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/node.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lilv/src/node.c rename to modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/node.c diff --git a/modules/juce_audio_processors/format_types/lv2/lilv/src/plugin.c b/modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/plugin.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lilv/src/plugin.c rename to modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/plugin.c diff --git a/modules/juce_audio_processors/format_types/lv2/lilv/src/pluginclass.c b/modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/pluginclass.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lilv/src/pluginclass.c rename to modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/pluginclass.c diff --git a/modules/juce_audio_processors/format_types/lv2/lilv/src/port.c b/modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/port.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lilv/src/port.c rename to modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/port.c diff --git a/modules/juce_audio_processors/format_types/lv2/lilv/src/query.c b/modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/query.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lilv/src/query.c rename to modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/query.c diff --git a/modules/juce_audio_processors/format_types/lv2/lilv/src/scalepoint.c b/modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/scalepoint.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lilv/src/scalepoint.c rename to modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/scalepoint.c diff --git a/modules/juce_audio_processors/format_types/lv2/lilv/src/state.c b/modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/state.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lilv/src/state.c rename to modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/state.c diff --git a/modules/juce_audio_processors/format_types/lv2/lilv/src/ui.c b/modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/ui.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lilv/src/ui.c rename to modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/ui.c diff --git a/modules/juce_audio_processors/format_types/lv2/lilv/src/util.c b/modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/util.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lilv/src/util.c rename to modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/util.c diff --git a/modules/juce_audio_processors/format_types/lv2/lilv/src/world.c b/modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/world.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lilv/src/world.c rename to modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/world.c diff --git a/modules/juce_audio_processors/format_types/lv2/lilv/src/zix/common.h b/modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/common.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lilv/src/zix/common.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/common.h diff --git a/modules/juce_audio_processors/format_types/lv2/lilv/src/zix/tree.c b/modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/tree.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lilv/src/zix/tree.c rename to modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/tree.c diff --git a/modules/juce_audio_processors/format_types/lv2/lilv/src/zix/tree.h b/modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/tree.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lilv/src/zix/tree.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/tree.h diff --git a/modules/juce_audio_processors/format_types/LV2_SDK/lilv_config.h b/modules/juce_audio_processors/format_types/LV2_SDK/lilv_config.h new file mode 100644 index 0000000000..153f8ce76a --- /dev/null +++ b/modules/juce_audio_processors/format_types/LV2_SDK/lilv_config.h @@ -0,0 +1,26 @@ +/* + ============================================================================== + + This file is part of the JUCE 7 technical preview. + Copyright (c) 2022 - Raw Material Software Limited + + You may use this code under the terms of the GPL v3 + (see www.gnu.org/licenses). + + For the technical preview this file cannot be licensed commercially. + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +/* + Instead of providing a config header per lv2-related library, we put all + of the config in a single file, which is included below. +*/ + +#pragma once + +#include "juce_lv2_config.h" diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/COPYING b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/COPYING similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/COPYING rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/COPYING diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/atom/atom-test-utils.c b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom-test-utils.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/atom/atom-test-utils.c rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom-test-utils.c diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/atom/atom-test.c b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom-test.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/atom/atom-test.c rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom-test.c diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/atom/atom.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/atom/atom.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/atom/atom.meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom.meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/atom/atom.meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom.meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/atom/atom.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/atom/atom.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/atom/forge-overflow-test.c b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/forge-overflow-test.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/atom/forge-overflow-test.c rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/forge-overflow-test.c diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/atom/forge.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/forge.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/atom/forge.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/forge.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/atom/manifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/manifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/atom/manifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/manifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/atom/util.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/util.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/atom/util.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/util.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/buf-size/buf-size.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/buf-size/buf-size.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/buf-size/buf-size.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/buf-size/buf-size.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/buf-size/buf-size.meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/buf-size/buf-size.meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/buf-size/buf-size.meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/buf-size/buf-size.meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/buf-size/buf-size.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/buf-size/buf-size.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/buf-size/buf-size.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/buf-size/buf-size.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/buf-size/manifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/buf-size/manifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/buf-size/manifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/buf-size/manifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/core/attributes.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/attributes.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/core/attributes.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/attributes.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/core/lv2.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/core/lv2.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/core/lv2_util.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2_util.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/core/lv2_util.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2_util.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/core/lv2core.meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2core.meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/core/lv2core.meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2core.meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/core/lv2core.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2core.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/core/lv2core.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2core.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/core/manifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/manifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/core/manifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/manifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/core/meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/core/meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/core/people.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/people.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/core/people.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/people.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/data-access/data-access.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/data-access/data-access.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/data-access/data-access.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/data-access/data-access.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/data-access/data-access.meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/data-access/data-access.meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/data-access/data-access.meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/data-access/data-access.meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/data-access/data-access.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/data-access/data-access.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/data-access/data-access.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/data-access/data-access.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/data-access/manifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/data-access/manifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/data-access/manifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/data-access/manifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/dynmanifest/dynmanifest.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/dynmanifest/dynmanifest.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/dynmanifest/dynmanifest.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/dynmanifest/dynmanifest.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/dynmanifest/dynmanifest.meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/dynmanifest/dynmanifest.meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/dynmanifest/dynmanifest.meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/dynmanifest/dynmanifest.meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/dynmanifest/dynmanifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/dynmanifest/dynmanifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/dynmanifest/dynmanifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/dynmanifest/dynmanifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/dynmanifest/manifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/dynmanifest/manifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/dynmanifest/manifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/dynmanifest/manifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/event/event-helpers.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event-helpers.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/event/event-helpers.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event-helpers.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/event/event.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/event/event.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/event/event.meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event.meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/event/event.meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event.meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/event/event.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/event/event.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/event/manifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/manifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/event/manifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/manifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/instance-access/instance-access.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/instance-access/instance-access.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/instance-access/instance-access.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/instance-access/instance-access.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/instance-access/instance-access.meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/instance-access/instance-access.meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/instance-access/instance-access.meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/instance-access/instance-access.meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/instance-access/instance-access.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/instance-access/instance-access.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/instance-access/instance-access.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/instance-access/instance-access.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/instance-access/manifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/instance-access/manifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/instance-access/manifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/instance-access/manifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/log/log.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/log.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/log/log.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/log.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/log/log.meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/log.meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/log/log.meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/log.meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/log/log.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/log.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/log/log.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/log.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/log/logger.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/logger.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/log/logger.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/logger.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/log/manifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/manifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/log/manifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/manifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/midi/manifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/midi/manifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/midi/manifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/midi/manifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/midi/midi.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/midi/midi.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/midi/midi.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/midi/midi.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/midi/midi.meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/midi/midi.meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/midi/midi.meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/midi/midi.meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/midi/midi.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/midi/midi.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/midi/midi.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/midi/midi.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/morph/manifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/morph/manifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/morph/manifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/morph/manifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/morph/morph.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/morph/morph.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/morph/morph.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/morph/morph.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/morph/morph.meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/morph/morph.meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/morph/morph.meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/morph/morph.meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/morph/morph.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/morph/morph.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/morph/morph.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/morph/morph.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/options/manifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/options/manifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/options/manifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/options/manifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/options/options.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/options/options.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/options/options.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/options/options.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/options/options.meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/options/options.meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/options/options.meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/options/options.meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/options/options.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/options/options.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/options/options.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/options/options.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/parameters/manifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/parameters/manifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/parameters/manifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/parameters/manifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/parameters/parameters.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/parameters/parameters.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/parameters/parameters.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/parameters/parameters.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/parameters/parameters.meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/parameters/parameters.meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/parameters/parameters.meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/parameters/parameters.meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/parameters/parameters.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/parameters/parameters.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/parameters/parameters.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/parameters/parameters.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/patch/manifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/patch/manifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/patch/manifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/patch/manifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/patch/patch.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/patch/patch.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/patch/patch.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/patch/patch.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/patch/patch.meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/patch/patch.meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/patch/patch.meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/patch/patch.meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/patch/patch.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/patch/patch.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/patch/patch.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/patch/patch.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/port-groups/manifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-groups/manifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/port-groups/manifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-groups/manifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/port-groups/port-groups.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-groups/port-groups.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/port-groups/port-groups.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-groups/port-groups.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/port-groups/port-groups.meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-groups/port-groups.meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/port-groups/port-groups.meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-groups/port-groups.meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/port-groups/port-groups.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-groups/port-groups.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/port-groups/port-groups.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-groups/port-groups.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/port-props/manifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-props/manifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/port-props/manifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-props/manifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/port-props/port-props.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-props/port-props.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/port-props/port-props.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-props/port-props.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/port-props/port-props.meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-props/port-props.meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/port-props/port-props.meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-props/port-props.meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/port-props/port-props.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-props/port-props.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/port-props/port-props.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-props/port-props.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/presets/manifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/presets/manifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/presets/manifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/presets/manifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/presets/presets.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/presets/presets.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/presets/presets.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/presets/presets.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/presets/presets.meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/presets/presets.meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/presets/presets.meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/presets/presets.meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/presets/presets.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/presets/presets.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/presets/presets.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/presets/presets.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/resize-port/manifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/resize-port/manifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/resize-port/manifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/resize-port/manifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/resize-port/resize-port.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/resize-port/resize-port.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/resize-port/resize-port.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/resize-port/resize-port.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/resize-port/resize-port.meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/resize-port/resize-port.meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/resize-port/resize-port.meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/resize-port/resize-port.meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/resize-port/resize-port.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/resize-port/resize-port.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/resize-port/resize-port.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/resize-port/resize-port.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/state/manifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/state/manifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/state/manifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/state/manifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/state/state.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/state/state.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/state/state.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/state/state.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/state/state.meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/state/state.meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/state/state.meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/state/state.meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/state/state.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/state/state.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/state/state.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/state/state.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/time/manifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/time/manifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/time/manifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/time/manifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/time/time.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/time/time.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/time/time.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/time/time.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/time/time.meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/time/time.meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/time/time.meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/time/time.meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/time/time.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/time/time.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/time/time.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/time/time.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/ui/manifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/ui/manifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/ui/manifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/ui/manifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/ui/ui.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/ui/ui.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/ui/ui.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/ui/ui.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/ui/ui.meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/ui/ui.meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/ui/ui.meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/ui/ui.meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/ui/ui.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/ui/ui.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/ui/ui.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/ui/ui.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/units/manifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/units/manifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/units/manifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/units/manifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/units/units.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/units/units.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/units/units.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/units/units.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/units/units.meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/units/units.meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/units/units.meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/units/units.meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/units/units.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/units/units.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/units/units.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/units/units.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/uri-map/manifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/uri-map/manifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/uri-map/manifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/uri-map/manifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/uri-map/uri-map.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/uri-map/uri-map.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/uri-map/uri-map.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/uri-map/uri-map.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/uri-map/uri-map.meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/uri-map/uri-map.meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/uri-map/uri-map.meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/uri-map/uri-map.meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/uri-map/uri-map.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/uri-map/uri-map.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/uri-map/uri-map.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/uri-map/uri-map.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/urid/manifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/urid/manifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/urid/manifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/urid/manifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/urid/urid.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/urid/urid.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/urid/urid.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/urid/urid.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/urid/urid.meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/urid/urid.meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/urid/urid.meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/urid/urid.meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/urid/urid.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/urid/urid.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/urid/urid.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/urid/urid.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/worker/manifest.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/worker/manifest.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/worker/manifest.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/worker/manifest.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/worker/worker.h b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/worker/worker.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/worker/worker.h rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/worker/worker.h diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/worker/worker.meta.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/worker/worker.meta.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/worker/worker.meta.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/worker/worker.meta.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/lv2/lv2/worker/worker.ttl b/modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/worker/worker.ttl similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/lv2/lv2/worker/worker.ttl rename to modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/worker/worker.ttl diff --git a/modules/juce_audio_processors/format_types/lv2/serd/COPYING b/modules/juce_audio_processors/format_types/LV2_SDK/serd/COPYING similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/COPYING rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/COPYING diff --git a/modules/juce_audio_processors/format_types/lv2/serd/serd/serd.h b/modules/juce_audio_processors/format_types/LV2_SDK/serd/serd/serd.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/serd/serd.h rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/serd/serd.h diff --git a/modules/juce_audio_processors/format_types/lv2/serd/src/.clang-tidy b/modules/juce_audio_processors/format_types/LV2_SDK/serd/src/.clang-tidy similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/src/.clang-tidy rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/src/.clang-tidy diff --git a/modules/juce_audio_processors/format_types/lv2/serd/src/attributes.h b/modules/juce_audio_processors/format_types/LV2_SDK/serd/src/attributes.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/src/attributes.h rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/src/attributes.h diff --git a/modules/juce_audio_processors/format_types/lv2/serd/src/base64.c b/modules/juce_audio_processors/format_types/LV2_SDK/serd/src/base64.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/src/base64.c rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/src/base64.c diff --git a/modules/juce_audio_processors/format_types/lv2/serd/src/base64.h b/modules/juce_audio_processors/format_types/LV2_SDK/serd/src/base64.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/src/base64.h rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/src/base64.h diff --git a/modules/juce_audio_processors/format_types/lv2/serd/src/byte_sink.h b/modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_sink.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/src/byte_sink.h rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_sink.h diff --git a/modules/juce_audio_processors/format_types/lv2/serd/src/byte_source.c b/modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_source.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/src/byte_source.c rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_source.c diff --git a/modules/juce_audio_processors/format_types/lv2/serd/src/byte_source.h b/modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_source.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/src/byte_source.h rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_source.h diff --git a/modules/juce_audio_processors/format_types/lv2/serd/src/env.c b/modules/juce_audio_processors/format_types/LV2_SDK/serd/src/env.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/src/env.c rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/src/env.c diff --git a/modules/juce_audio_processors/format_types/lv2/serd/src/n3.c b/modules/juce_audio_processors/format_types/LV2_SDK/serd/src/n3.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/src/n3.c rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/src/n3.c diff --git a/modules/juce_audio_processors/format_types/lv2/serd/src/node.c b/modules/juce_audio_processors/format_types/LV2_SDK/serd/src/node.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/src/node.c rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/src/node.c diff --git a/modules/juce_audio_processors/format_types/lv2/serd/src/node.h b/modules/juce_audio_processors/format_types/LV2_SDK/serd/src/node.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/src/node.h rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/src/node.h diff --git a/modules/juce_audio_processors/format_types/lv2/serd/src/reader.c b/modules/juce_audio_processors/format_types/LV2_SDK/serd/src/reader.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/src/reader.c rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/src/reader.c diff --git a/modules/juce_audio_processors/format_types/lv2/serd/src/reader.h b/modules/juce_audio_processors/format_types/LV2_SDK/serd/src/reader.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/src/reader.h rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/src/reader.h diff --git a/modules/juce_audio_processors/format_types/lv2/serd/src/serd_config.h b/modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serd_config.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/src/serd_config.h rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serd_config.h diff --git a/modules/juce_audio_processors/format_types/lv2/serd/src/serd_internal.h b/modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serd_internal.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/src/serd_internal.h rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serd_internal.h diff --git a/modules/juce_audio_processors/format_types/lv2/serd/src/serdi.c b/modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serdi.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/src/serdi.c rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serdi.c diff --git a/modules/juce_audio_processors/format_types/lv2/serd/src/stack.h b/modules/juce_audio_processors/format_types/LV2_SDK/serd/src/stack.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/src/stack.h rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/src/stack.h diff --git a/modules/juce_audio_processors/format_types/lv2/serd/src/string.c b/modules/juce_audio_processors/format_types/LV2_SDK/serd/src/string.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/src/string.c rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/src/string.c diff --git a/modules/juce_audio_processors/format_types/lv2/serd/src/string_utils.h b/modules/juce_audio_processors/format_types/LV2_SDK/serd/src/string_utils.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/src/string_utils.h rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/src/string_utils.h diff --git a/modules/juce_audio_processors/format_types/lv2/serd/src/system.c b/modules/juce_audio_processors/format_types/LV2_SDK/serd/src/system.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/src/system.c rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/src/system.c diff --git a/modules/juce_audio_processors/format_types/lv2/serd/src/system.h b/modules/juce_audio_processors/format_types/LV2_SDK/serd/src/system.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/src/system.h rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/src/system.h diff --git a/modules/juce_audio_processors/format_types/lv2/serd/src/uri.c b/modules/juce_audio_processors/format_types/LV2_SDK/serd/src/uri.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/src/uri.c rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/src/uri.c diff --git a/modules/juce_audio_processors/format_types/lv2/serd/src/uri_utils.h b/modules/juce_audio_processors/format_types/LV2_SDK/serd/src/uri_utils.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/src/uri_utils.h rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/src/uri_utils.h diff --git a/modules/juce_audio_processors/format_types/lv2/serd/src/writer.c b/modules/juce_audio_processors/format_types/LV2_SDK/serd/src/writer.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/serd/src/writer.c rename to modules/juce_audio_processors/format_types/LV2_SDK/serd/src/writer.c diff --git a/modules/juce_audio_processors/format_types/LV2_SDK/serd_config.h b/modules/juce_audio_processors/format_types/LV2_SDK/serd_config.h new file mode 100644 index 0000000000..153f8ce76a --- /dev/null +++ b/modules/juce_audio_processors/format_types/LV2_SDK/serd_config.h @@ -0,0 +1,26 @@ +/* + ============================================================================== + + This file is part of the JUCE 7 technical preview. + Copyright (c) 2022 - Raw Material Software Limited + + You may use this code under the terms of the GPL v3 + (see www.gnu.org/licenses). + + For the technical preview this file cannot be licensed commercially. + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +/* + Instead of providing a config header per lv2-related library, we put all + of the config in a single file, which is included below. +*/ + +#pragma once + +#include "juce_lv2_config.h" diff --git a/modules/juce_audio_processors/format_types/lv2/sord/COPYING b/modules/juce_audio_processors/format_types/LV2_SDK/sord/COPYING similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/sord/COPYING rename to modules/juce_audio_processors/format_types/LV2_SDK/sord/COPYING diff --git a/modules/juce_audio_processors/format_types/lv2/sord/sord/sord.h b/modules/juce_audio_processors/format_types/LV2_SDK/sord/sord/sord.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/sord/sord/sord.h rename to modules/juce_audio_processors/format_types/LV2_SDK/sord/sord/sord.h diff --git a/modules/juce_audio_processors/format_types/lv2/sord/sord/sordmm.hpp b/modules/juce_audio_processors/format_types/LV2_SDK/sord/sord/sordmm.hpp similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/sord/sord/sordmm.hpp rename to modules/juce_audio_processors/format_types/LV2_SDK/sord/sord/sordmm.hpp diff --git a/modules/juce_audio_processors/format_types/lv2/sord/src/sord.c b/modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/sord/src/sord.c rename to modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord.c diff --git a/modules/juce_audio_processors/format_types/lv2/sord/src/sord_config.h b/modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_config.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/sord/src/sord_config.h rename to modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_config.h diff --git a/modules/juce_audio_processors/format_types/lv2/sord/src/sord_internal.h b/modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_internal.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/sord/src/sord_internal.h rename to modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_internal.h diff --git a/modules/juce_audio_processors/format_types/lv2/sord/src/sord_test.c b/modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_test.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/sord/src/sord_test.c rename to modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_test.c diff --git a/modules/juce_audio_processors/format_types/lv2/sord/src/sord_validate.c b/modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_validate.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/sord/src/sord_validate.c rename to modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_validate.c diff --git a/modules/juce_audio_processors/format_types/lv2/sord/src/sordi.c b/modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sordi.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/sord/src/sordi.c rename to modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sordi.c diff --git a/modules/juce_audio_processors/format_types/lv2/sord/src/sordmm_test.cpp b/modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sordmm_test.cpp similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/sord/src/sordmm_test.cpp rename to modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sordmm_test.cpp diff --git a/modules/juce_audio_processors/format_types/lv2/sord/src/syntax.c b/modules/juce_audio_processors/format_types/LV2_SDK/sord/src/syntax.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/sord/src/syntax.c rename to modules/juce_audio_processors/format_types/LV2_SDK/sord/src/syntax.c diff --git a/modules/juce_audio_processors/format_types/lv2/sord/src/zix/btree.c b/modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/btree.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/sord/src/zix/btree.c rename to modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/btree.c diff --git a/modules/juce_audio_processors/format_types/lv2/sord/src/zix/btree.h b/modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/btree.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/sord/src/zix/btree.h rename to modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/btree.h diff --git a/modules/juce_audio_processors/format_types/lv2/sord/src/zix/common.h b/modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/common.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/sord/src/zix/common.h rename to modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/common.h diff --git a/modules/juce_audio_processors/format_types/lv2/sord/src/zix/digest.c b/modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/digest.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/sord/src/zix/digest.c rename to modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/digest.c diff --git a/modules/juce_audio_processors/format_types/lv2/sord/src/zix/digest.h b/modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/digest.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/sord/src/zix/digest.h rename to modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/digest.h diff --git a/modules/juce_audio_processors/format_types/lv2/sord/src/zix/hash.c b/modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/hash.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/sord/src/zix/hash.c rename to modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/hash.c diff --git a/modules/juce_audio_processors/format_types/lv2/sord/src/zix/hash.h b/modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/hash.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/sord/src/zix/hash.h rename to modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/hash.h diff --git a/modules/juce_audio_processors/format_types/LV2_SDK/sord_config.h b/modules/juce_audio_processors/format_types/LV2_SDK/sord_config.h new file mode 100644 index 0000000000..153f8ce76a --- /dev/null +++ b/modules/juce_audio_processors/format_types/LV2_SDK/sord_config.h @@ -0,0 +1,26 @@ +/* + ============================================================================== + + This file is part of the JUCE 7 technical preview. + Copyright (c) 2022 - Raw Material Software Limited + + You may use this code under the terms of the GPL v3 + (see www.gnu.org/licenses). + + For the technical preview this file cannot be licensed commercially. + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +/* + Instead of providing a config header per lv2-related library, we put all + of the config in a single file, which is included below. +*/ + +#pragma once + +#include "juce_lv2_config.h" diff --git a/modules/juce_audio_processors/format_types/lv2/sratom/COPYING b/modules/juce_audio_processors/format_types/LV2_SDK/sratom/COPYING similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/sratom/COPYING rename to modules/juce_audio_processors/format_types/LV2_SDK/sratom/COPYING diff --git a/modules/juce_audio_processors/format_types/lv2/sratom/sratom/sratom.h b/modules/juce_audio_processors/format_types/LV2_SDK/sratom/sratom/sratom.h similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/sratom/sratom/sratom.h rename to modules/juce_audio_processors/format_types/LV2_SDK/sratom/sratom/sratom.h diff --git a/modules/juce_audio_processors/format_types/lv2/sratom/src/sratom.c b/modules/juce_audio_processors/format_types/LV2_SDK/sratom/src/sratom.c similarity index 100% rename from modules/juce_audio_processors/format_types/lv2/sratom/src/sratom.c rename to modules/juce_audio_processors/format_types/LV2_SDK/sratom/src/sratom.c diff --git a/modules/juce_audio_processors/format_types/juce_LV2Common.h b/modules/juce_audio_processors/format_types/juce_LV2Common.h new file mode 100644 index 0000000000..dfedac93ee --- /dev/null +++ b/modules/juce_audio_processors/format_types/juce_LV2Common.h @@ -0,0 +1,618 @@ +/* + ============================================================================== + + This file is part of the JUCE 7 technical preview. + Copyright (c) 2022 - Raw Material Software Limited + + You may use this code under the terms of the GPL v3 + (see www.gnu.org/licenses). + + For the technical preview this file cannot be licensed commercially. + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +#pragma once + +#include "juce_lv2_config.h" + +#ifdef Bool + #undef Bool // previously defined in X11/Xlib.h +#endif + +#ifdef verify + #undef verify // previously defined in macOS 10.11 SDK +#endif + +JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wzero-as-null-pointer-constant", + "-Wcast-align", + "-Wparentheses", + "-Wnullability-extension", + "-Wsign-conversion") + +extern "C" +{ + #include "lilv/lilv/lilv.h" + #include "lv2/atom/atom.h" + #include "lv2/atom/forge.h" + #include "lv2/atom/util.h" + #include "lv2/buf-size/buf-size.h" + #include "lv2/data-access/data-access.h" + #include "lv2/dynmanifest/dynmanifest.h" + #include "lv2/instance-access/instance-access.h" + #include "lv2/log/log.h" + #include "lv2/midi/midi.h" + #include "lv2/options/options.h" + #include "lv2/parameters/parameters.h" + #include "lv2/patch/patch.h" + #include "lv2/port-groups/port-groups.h" + #include "lv2/presets/presets.h" + #include "lv2/resize-port/resize-port.h" + #include "lv2/state/state.h" + #include "lv2/time/time.h" + #include "lv2/ui/ui.h" + #include "lv2/units/units.h" + #include "lv2/worker/worker.h" + #include "serd/serd/serd.h" +} + +JUCE_END_IGNORE_WARNINGS_GCC_LIKE + +#include +#include + +namespace juce +{ +namespace lv2_shared +{ + +class AtomForge +{ +public: + explicit AtomForge (LV2_URID_Map m) + : map { m }, + chunk { map.map (map.handle, LV2_ATOM__Chunk) } + { + lv2_atom_forge_init (&forge, &map); + } + + void setBuffer (void* buf, size_t size) + { + lv2_atom_forge_set_buffer (&forge, static_cast (buf), size); + } + + LV2_Atom_Forge* get() { return &forge; } + const LV2_Atom_Forge* get() const { return &forge; } + + void writeChunk (uint32_t size) + { + lv2_atom_forge_atom (&forge, size, chunk); + } + +private: + LV2_URID_Map map; + LV2_Atom_Forge forge; + const LV2_URID chunk; + + JUCE_LEAK_DETECTOR (AtomForge) +}; + +template +struct ScopedFrame +{ + template + explicit ScopedFrame (LV2_Atom_Forge* f, Args&&... args) + : forge (f) + { + Constructor::construct (forge, &frame, std::forward (args)...); + } + + ~ScopedFrame() { lv2_atom_forge_pop (forge, &frame); } + + LV2_Atom_Forge_Frame frame; + LV2_Atom_Forge* forge = nullptr; + + JUCE_DECLARE_NON_COPYABLE (ScopedFrame) + JUCE_DECLARE_NON_MOVEABLE (ScopedFrame) + JUCE_LEAK_DETECTOR (ScopedFrame) +}; + +struct SequenceTraits { static constexpr auto construct = lv2_atom_forge_sequence_head; }; +struct ObjectTraits { static constexpr auto construct = lv2_atom_forge_object; }; + +using SequenceFrame = ScopedFrame; +using ObjectFrame = ScopedFrame; + +struct NumericAtomParser +{ + explicit NumericAtomParser (LV2_URID_Map mapFeatureIn) + : mapFeature (mapFeatureIn) {} + + template + struct ParseResult + { + ParseResult (Type type) : value (type), successful (true) {} + ParseResult() : value(), successful (false) {} + + template + ParseResult andThen (Fn&& fn) const + { + if (successful) + fn (value); + + return *this; + } + + operator bool() const noexcept { return successful; } + + Type value; + bool successful; + }; + + template + ParseResult parseNumericAtom (const LV2_Atom* atom, const void* data) const + { + if (atom == nullptr) + return {}; + + if (atom->type == mLV2_ATOM__Int && atom->size == sizeof (int32_t)) + return { static_cast (*static_cast (data)) }; + + if (atom->type == mLV2_ATOM__Long && atom->size == sizeof (int64_t)) + return { static_cast (*static_cast (data)) }; + + if (atom->type == mLV2_ATOM__Float && atom->size == sizeof (float)) + return { static_cast (*static_cast (data)) }; + + if (atom->type == mLV2_ATOM__Double && atom->size == sizeof (double)) + return { static_cast (*static_cast (data)) }; + + return {}; + } + + template + ParseResult parseNumericAtom (const LV2_Atom* atom) const + { + return parseNumericAtom (atom, atom + 1); + } + + template + ParseResult parseNumericOption (const LV2_Options_Option* option) const + { + if (option != nullptr) + { + const LV2_Atom atom { option->size, option->type }; + return parseNumericAtom (&atom, option->value); + } + + return {}; + } + + LV2_URID map (const char* str) const { return mapFeature.map (mapFeature.handle, str); } + + const LV2_URID_Map mapFeature; + #define X(str) const LV2_URID m##str = map (str); + X (LV2_ATOM__Double) + X (LV2_ATOM__Float) + X (LV2_ATOM__Int) + X (LV2_ATOM__Long) + X (LV2_ATOM__Bool) + #undef X + + JUCE_LEAK_DETECTOR (NumericAtomParser) +}; + +//============================================================================== +struct PatchSetHelper +{ + PatchSetHelper (LV2_URID_Map mapFeatureIn, const char* pluginUri) + : parser (mapFeatureIn), + pluginUrid (parser.map (pluginUri)) + {} + + bool isPlugin (const LV2_Atom* subject) const + { + if (subject == nullptr) + return true; + + return subject->type == mLV2_ATOM__URID + && reinterpret_cast (subject)->body == pluginUrid; + } + + template + void processPatchSet (const LV2_Atom_Object* object, Callback&& callback) + { + if (object->body.otype != mLV2_PATCH__Set) + return; + + const LV2_Atom* subject = nullptr; + const LV2_Atom* property = nullptr; + const LV2_Atom* value = nullptr; + + LV2_Atom_Object_Query query[] { { mLV2_PATCH__subject, &subject }, + { mLV2_PATCH__property, &property }, + { mLV2_PATCH__value, &value }, + LV2_ATOM_OBJECT_QUERY_END }; + + lv2_atom_object_query (object, query); + + if (isPlugin (subject)) + setPluginProperty (property, value, std::forward (callback)); + } + + template + void processPatchSet (const LV2_Atom_Event* event, Callback&& callback) + { + if (event->body.type == mLV2_ATOM__Object) + processPatchSet (reinterpret_cast (&event->body), std::forward (callback)); + } + + template + void setPluginProperty (const LV2_Atom* property, const LV2_Atom* value, Callback&& callback) + { + if (property == nullptr) + { + // No property was supplied. + jassertfalse; + return; + } + + if (property->type != mLV2_ATOM__URID) + { + // Set property is not a URID. + jassertfalse; + return; + } + + const auto parseResult = parser.parseNumericAtom (value); + + if (! parseResult.successful) + { + // Didn't understand the type of this atom. + jassertfalse; + return; + } + + callback.setParameter (reinterpret_cast (property)->body, parseResult.value); + } + + NumericAtomParser parser; + LV2_URID pluginUrid; + #define X(str) const LV2_URID m##str = parser.map (str); + X (LV2_ATOM__Bool) + X (LV2_ATOM__Object) + X (LV2_ATOM__URID) + X (LV2_PATCH__Set) + X (LV2_PATCH__property) + X (LV2_PATCH__subject) + X (LV2_PATCH__value) + #undef X + + JUCE_LEAK_DETECTOR (PatchSetHelper) +}; + +//============================================================================== +template +class Iterator +{ + using Container = typename Traits::Container; + using Iter = typename Traits::Iter; + +public: + using difference_type = ptrdiff_t; + using value_type = decltype (Traits::get (std::declval(), std::declval())); + using pointer = value_type*; + using reference = value_type; + using iterator_category = std::input_iterator_tag; + + /** Create iterator in end/sentinel state */ + Iterator() = default; + + /** Create iterator pointing to the beginning of this collection */ + explicit Iterator (Container p) noexcept + : container (p), iter (testEnd (Traits::begin (container))) {} + + Iterator begin() const noexcept { return *this; } + Iterator end() const noexcept { return {}; } + + bool operator== (const Iterator& other) const noexcept + { + return iter == nullptr && other.iter == nullptr; + } + + bool operator!= (const Iterator& other) const noexcept + { + return ! operator== (other); + } + + Iterator& operator++() + { + iter = testEnd (Traits::next (container, iter)); + return *this; + } + + Iterator operator++ (int) + { + auto copy = *this; + ++(*this); + return copy; + } + + reference operator*() const noexcept + { + return Traits::get (container, iter); + } + +private: + Iter testEnd (Iter i) const noexcept + { + return Traits::isEnd (container, i) ? Iter{} : i; + } + + Container container{}; + Iter iter{}; +}; + +//============================================================================== +struct SequenceWithSize +{ + SequenceWithSize() = default; + + SequenceWithSize (const LV2_Atom_Sequence_Body* bodyIn, size_t sizeIn) + : body (bodyIn), size (sizeIn) {} + + explicit SequenceWithSize (const LV2_Atom_Sequence* sequence) + : body (&sequence->body), size (sequence->atom.size) {} + + const LV2_Atom_Sequence_Body* body = nullptr; + size_t size = 0; + + JUCE_LEAK_DETECTOR (SequenceWithSize) +}; + +struct SequenceIteratorTraits +{ + using Container = SequenceWithSize; + using Iter = LV2_Atom_Event*; + + static LV2_Atom_Event* begin (const Container& s) noexcept + { + return lv2_atom_sequence_begin (s.body); + } + + static LV2_Atom_Event* next (const Container&, Iter it) noexcept + { + return lv2_atom_sequence_next (it); + } + + static bool isEnd (const Container& s, Iter it) noexcept + { + return lv2_atom_sequence_is_end (s.body, static_cast (s.size), it); + } + + static LV2_Atom_Event* get (const Container&, Iter e) noexcept { return e; } +}; + +using SequenceIterator = Iterator; + +const std::map channelDesignationMap +{ + { LV2_PORT_GROUPS__center, AudioChannelSet::ChannelType::centre }, + { LV2_PORT_GROUPS__centerLeft, AudioChannelSet::ChannelType::leftCentre }, + { LV2_PORT_GROUPS__centerRight, AudioChannelSet::ChannelType::rightCentre }, + { LV2_PORT_GROUPS__left, AudioChannelSet::ChannelType::left }, + { LV2_PORT_GROUPS__lowFrequencyEffects, AudioChannelSet::ChannelType::LFE }, + { LV2_PORT_GROUPS__rearCenter, AudioChannelSet::ChannelType::surround }, + { LV2_PORT_GROUPS__rearLeft, AudioChannelSet::ChannelType::leftSurroundRear }, + { LV2_PORT_GROUPS__rearRight, AudioChannelSet::ChannelType::rightSurroundRear }, + { LV2_PORT_GROUPS__right, AudioChannelSet::ChannelType::right }, + { LV2_PORT_GROUPS__sideLeft, AudioChannelSet::ChannelType::leftSurroundSide }, + { LV2_PORT_GROUPS__sideRight, AudioChannelSet::ChannelType::rightSurroundSide } +}; + +/* Useful for converting a `void*` to another type (X11 Window, function pointer etc.) without + invoking UB. +*/ +template +static auto wordCast (Word word) +{ + static_assert (sizeof (word) == sizeof (OtherWordType), "Word sizes must match"); + return readUnaligned (&word); +} + +//============================================================================== +struct SinglePortInfo +{ + uint32_t index; + AudioChannelSet::ChannelType designation; + bool optional; + + auto tie() const { return std::tie (index, designation, optional); } + bool operator== (const SinglePortInfo& other) const { return tie() == other.tie(); } + bool operator< (const SinglePortInfo& other) const { return index < other.index; } +}; + +struct ParsedGroup +{ + String uid; + std::set info; + + auto tie() const { return std::tie (uid, info); } + bool operator== (const ParsedGroup& other) const { return tie() == other.tie(); } + + static AudioChannelSet getEquivalentSet (const std::set& info) + { + const auto hasUnknownKind = [] (const SinglePortInfo& i) { return i.designation == AudioChannelSet::unknown; }; + + if (std::any_of (info.begin(), info.end(), hasUnknownKind)) + return AudioChannelSet::discreteChannels ((int) info.size()); + + AudioChannelSet result; + + for (const auto& port : info) + result.addChannel (port.designation); + + return result; + } + + AudioChannelSet getEquivalentSet() const noexcept { return getEquivalentSet (info); } + + bool isRequired() const + { + const auto getRequired = [] (const SinglePortInfo& i) { return ! i.optional; }; + return std::any_of (info.begin(), info.end(), getRequired); + } + + bool isCompatible (const AudioChannelSet& requestedBus) const + { + return requestedBus == getEquivalentSet() || (! isRequired() && requestedBus.isDisabled()); + } +}; + +struct ParsedBuses +{ + std::vector inputs, outputs; +}; + +class PortToAudioBufferMap +{ +public: + PortToAudioBufferMap (const AudioProcessor::BusesLayout& layout, const ParsedBuses& buses) + : PortToAudioBufferMap ({ layout.inputBuses, buses.inputs }, + { layout.outputBuses, buses.outputs }) + {} + + int getChannelForPort (uint32_t port) const + { + const auto it = ports.find (port); + return it != ports.end() ? it->second : -1; + } + +private: + PortToAudioBufferMap (const Array& host, + const std::vector& client) + : ports (getPortLayout (host, client)) + {} + + PortToAudioBufferMap (const PortToAudioBufferMap& inputs, + const PortToAudioBufferMap& outputs) + { + ports.insert (inputs.ports.begin(), inputs.ports.end()); + ports.insert (outputs.ports.begin(), outputs.ports.end()); + + // If this assertion is hit, some ports have duplicate indices + jassert (ports.size() == inputs.ports.size() + outputs.ports.size()); + } + + static std::map getPortLayout (const Array& layout, + const std::vector& parsedGroup) + { + if ((int) parsedGroup.size() != layout.size()) + { + // Something has gone very wrong when computing/applying bus layouts! + jassertfalse; + return {}; + } + + std::map result; + int channelOffsetOfBus = 0; + auto groupIterator = parsedGroup.begin(); + + for (const auto& bus : layout) + { + const auto& group = groupIterator->info; + + for (const auto& port : group) + { + const auto index = bus.getChannelIndexForType (port.designation); + + if (index >= 0) + result.emplace (port.index, channelOffsetOfBus + index); + } + + channelOffsetOfBus += bus.size(); + ++groupIterator; + } + + if ((int) result.size() != channelOffsetOfBus) + { + jassertfalse; + return {}; + } + + return result; + } + + std::map ports; + + JUCE_LEAK_DETECTOR (PortToAudioBufferMap) +}; + +// This will convert some grouped and ungrouped ports into a single collection of +// buses with a stable order. +// If any group has been marked as the main group, this will be placed first in the +// collection of results. The remaining groups will be sorted according to the +// indices of their ports. +// If there are no groups, all mandatory ports will be grouped into the first bus, +// and all remaining optional ports will have a separate bus each. +static inline std::vector findStableBusOrder (const String& mainGroupUid, + const std::map>& groupedPorts, + const std::set& ungroupedPorts) +{ + if (groupedPorts.empty()) + { + std::vector result; + + ParsedGroup mandatoryPorts; + + for (const auto& port : ungroupedPorts) + if (! port.optional) + mandatoryPorts.info.insert (port); + + if (! mandatoryPorts.info.empty()) + result.push_back (std::move (mandatoryPorts)); + + for (const auto& port : ungroupedPorts) + if (port.optional) + result.push_back ({ String{}, { port } }); + + return result; + } + + std::vector result; + + const auto pushGroup = [&] (const std::pair>& info) + { + result.push_back ({ info.first, info.second }); + }; + + const auto mainGroupIterator = groupedPorts.find (mainGroupUid); + + if (mainGroupIterator != groupedPorts.end()) + pushGroup (*mainGroupIterator); + + for (auto it = groupedPorts.begin(); it != groupedPorts.end(); ++it) + if (it != mainGroupIterator) + pushGroup (*it); + + for (const auto& info : ungroupedPorts) + result.push_back ({ String{}, { info } }); + + if (! result.empty()) + { + // It is an error for the same port to be a member of multiple groups. + // Therefore, a standard sort will always be stable, and we don't need to + // use an explicitly stable sort. + const auto compare = [] (const ParsedGroup& a, const ParsedGroup& b) { return a.info < b.info; }; + std::sort (std::next (result.begin()), result.end(), compare); + } + + return result; +} + +} +} diff --git a/modules/juce_audio_processors/format_types/juce_LV2PluginFormat.cpp b/modules/juce_audio_processors/format_types/juce_LV2PluginFormat.cpp new file mode 100644 index 0000000000..5f012c0a66 --- /dev/null +++ b/modules/juce_audio_processors/format_types/juce_LV2PluginFormat.cpp @@ -0,0 +1,5568 @@ +/* + ============================================================================== + + This file is part of the JUCE 7 technical preview. + Copyright (c) 2022 - Raw Material Software Limited + + You may use this code under the terms of the GPL v3 + (see www.gnu.org/licenses). + + For the technical preview this file cannot be licensed commercially. + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +#if JUCE_PLUGINHOST_LV2 + +#include "juce_LV2Common.h" +#include "juce_LV2Resources.h" + +#include + +#include + +namespace juce +{ +namespace lv2_host +{ + +template +auto with (Struct&& s, Member&& member, Value&& value) noexcept +{ + auto copy = std::forward (s); + copy.*member = std::forward (value); + return copy; +} + +/* Converts a void* to an LV2_Atom* if the buffer looks like it holds a well-formed Atom, or + returns nullptr otherwise. +*/ +static const LV2_Atom* convertToAtomPtr (const void* ptr, size_t size) +{ + if (size < sizeof (LV2_Atom)) + { + jassertfalse; + return nullptr; + } + + const auto header = readUnaligned (ptr); + + if (size < header.size + sizeof (LV2_Atom)) + { + jassertfalse; + return nullptr; + } + + // This is UB _if_ the ptr doesn't really point to an LV2_Atom. + return reinterpret_cast (ptr); +} + +// Allows mutable access to the items in a vector, without allowing the vector itself +// to be modified. +template +class SimpleSpan +{ +public: + constexpr SimpleSpan (T* beginIn, T* endIn) : b (beginIn), e (endIn) {} + + constexpr auto begin() const { return b; } + constexpr auto end() const { return e; } + + JUCE_BEGIN_IGNORE_WARNINGS_MSVC (4814) + constexpr auto& operator[] (size_t index) { return b[index]; } + JUCE_END_IGNORE_WARNINGS_MSVC + + constexpr auto size() const { return (size_t) (e - b); } + +private: + T* b; + T* e; +}; + +template +constexpr auto makeSimpleSpan (T* b, T* e) { return SimpleSpan { b, e }; } + +template +constexpr auto makeSimpleSpan (R& r) { return makeSimpleSpan (r.data(), r.data() + r.size()); } + +struct PhysicalResizeListener +{ + virtual ~PhysicalResizeListener() = default; + virtual void viewRequestedResizeInPhysicalPixels (int width, int height) = 0; +}; + +struct LogicalResizeListener +{ + virtual ~LogicalResizeListener() = default; + virtual void viewRequestedResizeInLogicalPixels (int width, int height) = 0; +}; + +#if JUCE_WINDOWS +class WindowSizeChangeDetector +{ +public: + WindowSizeChangeDetector() + : hook (SetWindowsHookEx (WH_CALLWNDPROC, + callWndProc, + (HINSTANCE) juce::Process::getCurrentModuleInstanceHandle(), + GetCurrentThreadId())) + {} + + ~WindowSizeChangeDetector() noexcept + { + UnhookWindowsHookEx (hook); + } + + static void addListener (HWND hwnd, PhysicalResizeListener& listener) + { + getActiveEditors().emplace (hwnd, &listener); + } + + static void removeListener (HWND hwnd) + { + getActiveEditors().erase (hwnd); + } + +private: + static std::map& getActiveEditors() + { + static std::map map; + return map; + } + + static void processMessage (int nCode, const CWPSTRUCT* info) + { + if (nCode < 0 || info == nullptr) + return; + + constexpr UINT events[] { WM_SIZING, WM_SIZE, WM_WINDOWPOSCHANGING, WM_WINDOWPOSCHANGED }; + + if (std::find (std::begin (events), std::end (events), info->message) == std::end (events)) + return; + + auto& map = getActiveEditors(); + auto iter = map.find (info->hwnd); + + if (iter == map.end()) + return; + + RECT rect; + GetWindowRect (info->hwnd, &rect); + iter->second->viewRequestedResizeInPhysicalPixels (rect.right - rect.left, rect.bottom - rect.top); + } + + static LRESULT CALLBACK callWndProc (int nCode, WPARAM wParam, LPARAM lParam) + { + processMessage (nCode, lv2_shared::wordCast (lParam)); + return CallNextHookEx ({}, nCode, wParam, lParam); + } + + HHOOK hook; +}; + +class WindowSizeChangeListener +{ +public: + WindowSizeChangeListener (HWND hwndIn, PhysicalResizeListener& l) + : hwnd (hwndIn) + { + detector->addListener (hwnd, l); + } + + ~WindowSizeChangeListener() + { + detector->removeListener (hwnd); + } + +private: + SharedResourcePointer detector; + HWND hwnd; + + JUCE_LEAK_DETECTOR (WindowSizeChangeListener) +}; +#endif + +struct FreeLilvNode +{ + void operator() (LilvNode* ptr) const noexcept { lilv_node_free (ptr); } +}; + +using OwningNode = std::unique_ptr; + +template +class TypesafeLilvNode +{ +public: + template + TypesafeLilvNode (Ts&&... ts) + : node (Traits::construct (std::forward (ts)...)) {} + + bool equals (const TypesafeLilvNode& other) const noexcept + { + return lilv_node_equals (node.get(), other.node.get()); + } + + const LilvNode* get() const noexcept { return node.get(); } + + auto getTyped() const noexcept -> decltype (Traits::access (nullptr)) + { + return Traits::access (node.get()); + } + + static TypesafeLilvNode claim (LilvNode* node) + { + return TypesafeLilvNode { node }; + } + + static TypesafeLilvNode copy (const LilvNode* node) + { + return TypesafeLilvNode { lilv_node_duplicate (node) }; + } + +private: + explicit TypesafeLilvNode (LilvNode* ptr) + : node (ptr) + { + jassert (ptr == nullptr || Traits::verify (node.get())); + } + + OwningNode node; + + JUCE_LEAK_DETECTOR (TypesafeLilvNode) +}; + +struct UriConstructorTrait +{ + static LilvNode* construct (LilvWorld* world, const char* uri) noexcept + { + return lilv_new_uri (world, uri); + } + + static LilvNode* construct (LilvWorld* world, const char* host, const char* path) noexcept + { + return lilv_new_file_uri (world, host, path); + } + + static constexpr auto verify = lilv_node_is_uri; + static constexpr auto access = lilv_node_as_uri; +}; + +struct StringConstructorTrait { static constexpr auto construct = lilv_new_string; + static constexpr auto verify = lilv_node_is_string; + static constexpr auto access = lilv_node_as_string; }; + +using NodeUri = TypesafeLilvNode; +using NodeString = TypesafeLilvNode; + +struct UsefulUris +{ + explicit UsefulUris (LilvWorld* worldIn) + : world (worldIn) {} + + LilvWorld* const world = nullptr; + + #define X(str) const NodeUri m##str { world, str }; + X (LV2_ATOM__AtomPort) + X (LV2_ATOM__atomTransfer) + X (LV2_ATOM__eventTransfer) + X (LV2_CORE__AudioPort) + X (LV2_CORE__CVPort) + X (LV2_CORE__ControlPort) + X (LV2_CORE__GeneratorPlugin) + X (LV2_CORE__InputPort) + X (LV2_CORE__InstrumentPlugin) + X (LV2_CORE__OutputPort) + X (LV2_CORE__enumeration) + X (LV2_CORE__integer) + X (LV2_CORE__toggled) + X (LV2_RESIZE_PORT__minimumSize) + X (LV2_UI__floatProtocol) + X (LV2_WORKER__interface) + #undef X +}; + +template +struct OwningPtrTraits +{ + using type = std::unique_ptr; + static const Ptr* get (const type& t) noexcept { return t.get(); } +}; + +template +struct NonOwningPtrTraits +{ + using type = const Ptr*; + static const Ptr* get (const type& t) noexcept { return t; } +}; + +struct PluginsIteratorTraits +{ + using Container = const LilvPlugins*; + using Iter = LilvIter*; + static constexpr auto begin = lilv_plugins_begin; + static constexpr auto next = lilv_plugins_next; + static constexpr auto isEnd = lilv_plugins_is_end; + static constexpr auto get = lilv_plugins_get; +}; + +using PluginsIterator = lv2_shared::Iterator; + +struct PluginClassesIteratorTraits +{ + using Container = const LilvPluginClasses*; + using Iter = LilvIter*; + static constexpr auto begin = lilv_plugin_classes_begin; + static constexpr auto next = lilv_plugin_classes_next; + static constexpr auto isEnd = lilv_plugin_classes_is_end; + static constexpr auto get = lilv_plugin_classes_get; +}; + +using PluginClassesIterator = lv2_shared::Iterator; + +struct NodesIteratorTraits +{ + using Container = const LilvNodes*; + using Iter = LilvIter*; + static constexpr auto begin = lilv_nodes_begin; + static constexpr auto next = lilv_nodes_next; + static constexpr auto isEnd = lilv_nodes_is_end; + static constexpr auto get = lilv_nodes_get; +}; + +using NodesIterator = lv2_shared::Iterator; + +struct ScalePointsIteratorTraits +{ + using Container = const LilvScalePoints*; + using Iter = LilvIter*; + static constexpr auto begin = lilv_scale_points_begin; + static constexpr auto next = lilv_scale_points_next; + static constexpr auto isEnd = lilv_scale_points_is_end; + static constexpr auto get = lilv_scale_points_get; +}; + +using ScalePointsIterator = lv2_shared::Iterator; + +struct UisIteratorTraits +{ + using Container = const LilvUIs*; + using Iter = LilvIter*; + static constexpr auto begin = lilv_uis_begin; + static constexpr auto next = lilv_uis_next; + static constexpr auto isEnd = lilv_uis_is_end; + static constexpr auto get = lilv_uis_get; +}; + +using UisIterator = lv2_shared::Iterator; + +template +class NodesImpl +{ +public: + using type = typename PtrTraits::type; + + template + explicit NodesImpl (Ptr* ptr) + : nodes (type { ptr }) {} + + explicit NodesImpl (type ptr) + : nodes (std::move (ptr)) {} + + unsigned size() const noexcept { return lilv_nodes_size (PtrTraits::get (nodes)); } + + NodesIterator begin() const noexcept + { + return nodes == nullptr ? NodesIterator{} + : NodesIterator { PtrTraits::get (nodes) }; + } + + NodesIterator end() const noexcept { return {}; } + +private: + type nodes{}; +}; + +struct NodesFree +{ + void operator() (LilvNodes* ptr) const noexcept { lilv_nodes_free (ptr); } +}; + +using OwningNodes = NodesImpl>; +using NonOwningNodes = NodesImpl>; + +class ScalePoints +{ +public: + explicit ScalePoints (const LilvScalePoints* pt) + : points (pt) {} + + ScalePointsIterator begin() const noexcept + { + return points == nullptr ? ScalePointsIterator{} + : ScalePointsIterator { points }; + } + + ScalePointsIterator end() const noexcept { return {}; } + +private: + const LilvScalePoints* points = nullptr; +}; + +class ScalePoint +{ +public: + explicit ScalePoint (const LilvScalePoint* pt) + : point (pt) {} + + const LilvNode* getLabel() const noexcept { return lilv_scale_point_get_label (point); } + const LilvNode* getValue() const noexcept { return lilv_scale_point_get_value (point); } + +private: + const LilvScalePoint* point = nullptr; +}; + +struct PortRange +{ + float defaultValue, min, max; +}; + +class Port +{ +public: + enum class Kind + { + control, + audio, + cv, + atom, + unknown, + }; + + enum class Direction + { + input, + output, + unknown, + }; + + Port (const LilvPlugin* pluginIn, const LilvPort* portIn) + : plugin (pluginIn), port (portIn) {} + + Direction getDirection (const UsefulUris& uris) const noexcept + { + if (isA (uris.mLV2_CORE__InputPort)) + return Direction::input; + + if (isA (uris.mLV2_CORE__OutputPort)) + return Direction::output; + + return Direction::unknown; + } + + Kind getKind (const UsefulUris& uris) const noexcept + { + if (isA (uris.mLV2_CORE__ControlPort)) + return Kind::control; + + if (isA (uris.mLV2_CORE__AudioPort)) + return Kind::audio; + + if (isA (uris.mLV2_CORE__CVPort)) + return Kind::cv; + + if (isA (uris.mLV2_ATOM__AtomPort)) + return Kind::atom; + + return Kind::unknown; + } + + OwningNode get (const LilvNode* predicate) const noexcept + { + return OwningNode { lilv_port_get (plugin, port, predicate) }; + } + + NonOwningNodes getClasses() const noexcept + { + return NonOwningNodes { lilv_port_get_classes (plugin, port) }; + } + + NodeString getName() const noexcept + { + return NodeString::claim (lilv_port_get_name (plugin, port)); + } + + NodeString getSymbol() const noexcept + { + return NodeString::copy (lilv_port_get_symbol (plugin, port)); + } + + OwningNodes getProperties() const noexcept + { + return OwningNodes { lilv_port_get_properties (plugin, port) }; + } + + ScalePoints getScalePoints() const noexcept + { + return ScalePoints { lilv_port_get_scale_points (plugin, port) }; + } + + bool hasProperty (const NodeUri& uri) const noexcept + { + return lilv_port_has_property (plugin, port, uri.get()); + } + + uint32_t getIndex() const noexcept { return lilv_port_get_index (plugin, port); } + + static float getFloatValue (const LilvNode* node, float fallback) + { + if (lilv_node_is_float (node) || lilv_node_is_int (node)) + return lilv_node_as_float (node); + + return fallback; + } + + bool supportsEvent (const LilvNode* node) const noexcept + { + return lilv_port_supports_event (plugin, port, node); + } + + PortRange getRange() const noexcept + { + LilvNode* def = nullptr; + LilvNode* min = nullptr; + LilvNode* max = nullptr; + + lilv_port_get_range (plugin, port, &def, &min, &max); + + const OwningNode defOwner { def }; + const OwningNode minOwner { min }; + const OwningNode maxOwner { max }; + + return { getFloatValue (def, 0.0f), + getFloatValue (min, 0.0f), + getFloatValue (max, 1.0f) }; + } + + bool isValid() const noexcept { return port != nullptr; } + +private: + bool isA (const NodeUri& uri) const noexcept + { + return lilv_port_is_a (plugin, port, uri.get()); + } + + const LilvPlugin* plugin = nullptr; + const LilvPort* port = nullptr; + + JUCE_LEAK_DETECTOR (Port) +}; + +class Plugin +{ +public: + explicit Plugin (const LilvPlugin* p) : plugin (p) {} + + bool verify() const noexcept { return lilv_plugin_verify (plugin); } + NodeUri getUri() const noexcept { return NodeUri::copy (lilv_plugin_get_uri (plugin)); } + NodeUri getBundleUri() const noexcept { return NodeUri::copy (lilv_plugin_get_bundle_uri (plugin)); } + NodeUri getLibraryUri() const noexcept { return NodeUri::copy (lilv_plugin_get_library_uri (plugin)); } + NodeString getName() const noexcept { return NodeString::claim (lilv_plugin_get_name (plugin)); } + NodeString getAuthorName() const noexcept { return NodeString::claim (lilv_plugin_get_author_name (plugin)); } + uint32_t getNumPorts() const noexcept { return lilv_plugin_get_num_ports (plugin); } + const LilvPluginClass* getClass() const noexcept { return lilv_plugin_get_class (plugin); } + OwningNodes getValue (const LilvNode* predicate) const noexcept { return OwningNodes { lilv_plugin_get_value (plugin, predicate) }; } + + Port getPortByIndex (uint32_t index) const noexcept + { + return Port { plugin, lilv_plugin_get_port_by_index (plugin, index) }; + } + + Port getPortByDesignation (const LilvNode* portClass, const LilvNode* designation) const noexcept + { + return Port { plugin, lilv_plugin_get_port_by_designation (plugin, portClass, designation) }; + } + + OwningNodes getRequiredFeatures() const noexcept + { + return OwningNodes { lilv_plugin_get_required_features (plugin) }; + } + + OwningNodes getOptionalFeatures() const noexcept + { + return OwningNodes { lilv_plugin_get_optional_features (plugin) }; + } + + bool hasExtensionData (const NodeUri& uri) const noexcept + { + return lilv_plugin_has_extension_data (plugin, uri.get()); + } + + bool hasFeature (const NodeUri& uri) const noexcept + { + return lilv_plugin_has_feature (plugin, uri.get()); + } + + template + uint32_t getNumPortsOfClass (const Classes&... classes) const noexcept + { + return lilv_plugin_get_num_ports_of_class (plugin, classes.get()..., 0); + } + + const LilvPlugin* get() const noexcept { return plugin; } + + bool hasLatency() const noexcept { return lilv_plugin_has_latency (plugin); } + uint32_t getLatencyPortIndex() const noexcept { return lilv_plugin_get_latency_port_index (plugin); } + +private: + const LilvPlugin* plugin = nullptr; + + JUCE_LEAK_DETECTOR (Plugin) +}; + +/* + This is very similar to the symap implementation in jalv. +*/ +class SymbolMap +{ +public: + SymbolMap() = default; + + SymbolMap (std::initializer_list uris) + { + for (const auto* str : uris) + map (str); + } + + LV2_URID map (const char* uri) + { + const auto comparator = [this] (size_t index, const String& str) + { + return strings[index] < str; + }; + + const auto uriString = String::fromUTF8 (uri); + const auto it = std::lower_bound (indices.cbegin(), indices.cend(), uriString, comparator); + + if (it != indices.cend() && strings[*it] == uriString) + return static_cast (*it + 1); + + const auto index = strings.size(); + indices.insert (it, index); + strings.emplace_back (uri); + return static_cast (index + 1); + } + + const char* unmap (LV2_URID urid) const + { + const auto index = urid - 1; + return index < strings.size() ? strings[index].toRawUTF8() + : nullptr; + } + + static LV2_URID mapUri (LV2_URID_Map_Handle handle, const char* uri) + { + return static_cast (handle)->map (uri); + } + + static const char* unmapUri (LV2_URID_Unmap_Handle handle, LV2_URID urid) + { + return static_cast (handle)->unmap (urid); + } + + LV2_URID_Map getMapFeature() { return { this, mapUri }; } + LV2_URID_Unmap getUnmapFeature() { return { this, unmapUri }; } + +private: + std::vector strings; + std::vector indices; + + JUCE_LEAK_DETECTOR (SymbolMap) +}; + +struct UsefulUrids +{ + explicit UsefulUrids (SymbolMap& m) : symap (m) {} + + SymbolMap& symap; + + #define X(token) const LV2_URID m##token = symap.map (token); + X (LV2_ATOM__Bool) + X (LV2_ATOM__Double) + X (LV2_ATOM__Float) + X (LV2_ATOM__Int) + X (LV2_ATOM__Long) + X (LV2_ATOM__Object) + X (LV2_ATOM__Sequence) + X (LV2_ATOM__atomTransfer) + X (LV2_ATOM__beatTime) + X (LV2_ATOM__eventTransfer) + X (LV2_ATOM__frameTime) + X (LV2_LOG__Error) + X (LV2_LOG__Note) + X (LV2_LOG__Trace) + X (LV2_LOG__Warning) + X (LV2_MIDI__MidiEvent) + X (LV2_PATCH__Set) + X (LV2_PATCH__property) + X (LV2_PATCH__value) + X (LV2_STATE__StateChanged) + X (LV2_TIME__Position) + X (LV2_TIME__barBeat) + X (LV2_TIME__beat) + X (LV2_TIME__beatUnit) + X (LV2_TIME__beatsPerBar) + X (LV2_TIME__beatsPerMinute) + X (LV2_TIME__frame) + X (LV2_TIME__speed) + X (LV2_UI__floatProtocol) + X (LV2_UNITS__beat) + X (LV2_UNITS__frame) + #undef X +}; + +class Log +{ +public: + explicit Log (const UsefulUrids* u) : urids (u) {} + + LV2_Log_Log* getLogFeature() { return &logFeature; } + +private: + int vprintfCallback (LV2_URID type, const char* fmt, va_list ap) const + { + // If this is hit, the plugin has encountered some kind of error + jassertquiet (type != urids->mLV2_LOG__Error && type != urids->mLV2_LOG__Warning); + return std::vfprintf (stderr, fmt, ap); + } + + static int vprintfCallback (LV2_Log_Handle handle, + LV2_URID type, + const char* fmt, + va_list ap) + { + return static_cast (handle)->vprintfCallback (type, fmt, ap); + } + + static int printfCallback (LV2_Log_Handle handle, LV2_URID type, const char* fmt, ...) + { + va_list list; + va_start (list, fmt); + auto result = vprintfCallback (handle, type, fmt, list); + va_end (list); + return result; + } + + const UsefulUrids* urids = nullptr; + LV2_Log_Log logFeature { this, printfCallback, vprintfCallback }; + + JUCE_LEAK_DETECTOR (Log) +}; + +struct Features +{ + explicit Features (std::vector&& f) + : features (std::move (f)) {} + + static std::vector getUris (const std::vector& features) + { + std::vector result; + result.reserve (features.size()); + + for (const auto& feature : features) + result.push_back (String::fromUTF8 (feature.URI)); + + return result; + } + + std::vector features; + std::vector pointers = makeNullTerminatedArray(); + +private: + std::vector makeNullTerminatedArray() + { + std::vector result; + result.reserve (features.size() + 1); + + for (const auto& feature : features) + result.push_back (&feature); + + result.push_back (nullptr); + + return result; + } + + JUCE_LEAK_DETECTOR (Features) +}; + +template +struct OptionalExtension +{ + OptionalExtension() = default; + + explicit OptionalExtension (Extension extensionIn) : extension (extensionIn), valid (true) {} + + Extension extension; + bool valid = false; +}; + +class Instance +{ + struct Free + { + void operator() (LilvInstance* ptr) const noexcept { lilv_instance_free (ptr); } + }; + +public: + using Ptr = std::unique_ptr; + using GetExtensionData = const void* (*) (const char*); + + Instance (const Plugin& pluginIn, double sampleRate, const LV2_Feature* const* features) + : plugin (pluginIn), + instance (lilv_plugin_instantiate (plugin.get(), sampleRate, features)) {} + + void activate() { lilv_instance_activate (instance.get()); } + void run (uint32_t sampleCount) { lilv_instance_run (instance.get(), sampleCount); } + void deactivate() { lilv_instance_deactivate (instance.get()); } + + const char* getUri() const noexcept { return lilv_instance_get_uri (instance.get()); } + + LV2_Handle getHandle() const noexcept { return lilv_instance_get_handle (instance.get()); } + + LilvInstance* get() const noexcept { return instance.get(); } + + void connectPort (uint32_t index, void* data) + { + lilv_instance_connect_port (instance.get(), index, data); + } + + template + OptionalExtension getExtensionData (const NodeUri& uri) const noexcept + { + if (plugin.get() == nullptr || ! plugin.hasExtensionData (uri) || instance.get() == nullptr) + return {}; + + return OptionalExtension { readUnaligned (lilv_instance_get_extension_data (instance.get(), uri.getTyped())) }; + } + + GetExtensionData getExtensionDataCallback() const noexcept + { + return instance->lv2_descriptor->extension_data; + } + + bool operator== (std::nullptr_t) const noexcept { return instance == nullptr; } + bool operator!= (std::nullptr_t) const noexcept { return ! (*this == nullptr); } + +private: + Plugin plugin; + Ptr instance; + + JUCE_LEAK_DETECTOR (Instance) +}; + +enum class Realtime { no, yes }; + +// Must be trivial! +struct WorkResponder +{ + static WorkResponder getDefault() { return { nullptr, nullptr }; } + + LV2_Worker_Status processResponse (uint32_t size, const void* data) const + { + return worker->work_response (handle, size, data); + } + + bool isValid() const { return handle != nullptr && worker != nullptr; } + + LV2_Handle handle; + const LV2_Worker_Interface* worker; +}; + +struct WorkerResponseListener +{ + virtual ~WorkerResponseListener() = default; + virtual LV2_Worker_Status responseGenerated (WorkResponder, uint32_t, const void*) = 0; +}; + +struct RespondHandle +{ + LV2_Worker_Status respond (uint32_t size, const void* data) const + { + if (realtime == Realtime::yes) + return listener.responseGenerated (responder, size, data); + + return responder.processResponse (size, data); + } + + static LV2_Worker_Status respond (LV2_Worker_Respond_Handle handle, + uint32_t size, + const void* data) + { + return static_cast (handle)->respond (size, data); + } + + WorkResponder responder; + WorkerResponseListener& listener; + Realtime realtime; +}; + +// Must be trivial! +struct WorkSubmitter +{ + static WorkSubmitter getDefault() { return { nullptr, nullptr, nullptr, nullptr }; } + + LV2_Worker_Status doWork (Realtime realtime, uint32_t size, const void* data) const + { + // The Worker spec says that the host "MUST NOT make concurrent calls to [work] from + // several threads". + // Taking the work mutex here ensures that only one piece of work is done at a time. + // If we didn't take the work mutex, there would be a danger of work happening + // simultaneously on the worker thread and the render thread when switching between + // realtime/offline modes (in realtime mode, work happens on the worker thread; in + // offline mode, work happens immediately on the render/audio thread). + const ScopedLock lock (*workMutex); + + RespondHandle respondHandle { WorkResponder { handle, worker }, *listener, realtime }; + return worker->work (handle, RespondHandle::respond, &respondHandle, size, data); + } + + bool isValid() const { return handle != nullptr && worker != nullptr && listener != nullptr && workMutex != nullptr; } + + LV2_Handle handle; + const LV2_Worker_Interface* worker; + WorkerResponseListener* listener; + CriticalSection* workMutex; +}; + +template ::value, int> = 0> +static auto toChars (Trivial value) +{ + std::array result; + writeUnaligned (result.data(), value); + return result; +} + +template +class WorkQueue +{ +public: + static_assert (std::is_trivial::value, "Context must be copyable as bytes"); + + explicit WorkQueue (int size) + : fifo (size), data (static_cast (size)) {} + + LV2_Worker_Status push (Context context, size_t size, const void* contents) + { + const auto* bytes = static_cast (contents); + const auto numToWrite = sizeof (Header) + size; + + if (static_cast (fifo.getFreeSpace()) < numToWrite) + return LV2_WORKER_ERR_NO_SPACE; + + Header header { size, context }; + const auto headerBuffer = toChars (header); + + const auto scope = fifo.write (static_cast (numToWrite)); + jassert (scope.blockSize1 + scope.blockSize2 == static_cast (numToWrite)); + + size_t index = 0; + scope.forEach ([&] (int i) + { + data[static_cast (i)] = index < headerBuffer.size() ? headerBuffer[index] + : bytes[index - headerBuffer.size()]; + ++index; + }); + + return LV2_WORKER_SUCCESS; + } + + Context pop (std::vector& dest) + { + // If the vector is too small we'll have to resize it on the audio thread + jassert (dest.capacity() >= data.size()); + dest.clear(); + + const auto numReady = fifo.getNumReady(); + + if (static_cast (numReady) < sizeof (Header)) + { + jassert (numReady == 0); + return Context::getDefault(); + } + + std::array headerBuffer; + + { + size_t index = 0; + fifo.read (sizeof (Header)).forEach ([&] (int i) + { + headerBuffer[index++] = data[static_cast (i)]; + }); + } + + const auto header = readUnaligned
(headerBuffer.data()); + + jassert (static_cast (fifo.getNumReady()) >= header.size); + + dest.resize (header.size); + + { + size_t index = 0; + fifo.read (static_cast (header.size)).forEach ([&] (int i) + { + dest[index++] = data[static_cast (i)]; + }); + } + + return header.context; + } + +private: + struct Header + { + size_t size; + Context context; + }; + + AbstractFifo fifo; + std::vector data; + + JUCE_LEAK_DETECTOR (WorkQueue) +}; + +/* + Keeps track of active plugin instances, so that we can avoid sending work + messages to dead plugins. +*/ +class HandleRegistry +{ +public: + void insert (LV2_Handle handle) + { + const SpinLock::ScopedLockType lock (mutex); + handles.insert (handle); + } + + void erase (LV2_Handle handle) + { + const SpinLock::ScopedLockType lock (mutex); + handles.erase (handle); + } + + template + LV2_Worker_Status ifContains (LV2_Handle handle, Fn&& callback) + { + const SpinLock::ScopedLockType lock (mutex); + + if (handles.find (handle) != handles.cend()) + return callback(); + + return LV2_WORKER_ERR_UNKNOWN; + } + +private: + std::set handles; + SpinLock mutex; + + JUCE_LEAK_DETECTOR (HandleRegistry) +}; + +/* + Implements an LV2 Worker, allowing work to be scheduled in realtime + by the plugin instance. + + IMPORTANT this will die pretty hard if `getExtensionData (LV2_WORKER__interface)` + returns garbage, so make sure to check that the plugin `hasExtensionData` before + constructing one of these! +*/ +class SharedThreadedWorker : public WorkerResponseListener +{ +public: + ~SharedThreadedWorker() noexcept override + { + shouldExit = true; + thread.join(); + } + + LV2_Worker_Status schedule (WorkSubmitter submitter, + uint32_t size, + const void* data) + { + return registry.ifContains (submitter.handle, [&] + { + return incoming.push (submitter, size, data); + }); + } + + LV2_Worker_Status responseGenerated (WorkResponder responder, + uint32_t size, + const void* data) override + { + return registry.ifContains (responder.handle, [&] + { + return outgoing.push (responder, size, data); + }); + } + + void processResponses() + { + for (;;) + { + auto workerResponder = outgoing.pop (message); + + if (! message.empty() && workerResponder.isValid()) + workerResponder.processResponse (static_cast (message.size()), message.data()); + else + break; + } + } + + void registerHandle (LV2_Handle handle) { registry.insert (handle); } + void deregisterHandle (LV2_Handle handle) { registry.erase (handle); } + +private: + static constexpr auto queueSize = 8192; + std::atomic shouldExit { false }; + WorkQueue incoming { queueSize }; + WorkQueue outgoing { queueSize }; + std::vector message = std::vector (queueSize); + std::thread thread { [this] + { + std::vector buffer (queueSize); + + while (! shouldExit) + { + const auto submitter = incoming.pop (buffer); + + if (! buffer.empty() && submitter.isValid()) + submitter.doWork (Realtime::yes, (uint32_t) buffer.size(), buffer.data()); + else + std::this_thread::sleep_for (std::chrono::milliseconds (1)); + } + } }; + HandleRegistry registry; + + JUCE_LEAK_DETECTOR (SharedThreadedWorker) +}; + +struct HandleHolder +{ + virtual ~HandleHolder() = default; + virtual LV2_Handle getHandle() const = 0; + virtual const LV2_Worker_Interface* getWorkerInterface() const = 0; +}; + +class WorkScheduler +{ +public: + explicit WorkScheduler (HandleHolder& handleHolderIn) + : handleHolder (handleHolderIn) {} + + void processResponses() { workerThread->processResponses(); } + + LV2_Worker_Schedule& getWorkerSchedule() { return schedule; } + + void setNonRealtime (bool nonRealtime) { realtime = ! nonRealtime; } + + void registerHandle (LV2_Handle handle) { workerThread->registerHandle (handle); } + void deregisterHandle (LV2_Handle handle) { workerThread->deregisterHandle (handle); } + +private: + LV2_Worker_Status scheduleWork (uint32_t size, const void* data) + { + WorkSubmitter submitter { handleHolder.getHandle(), + handleHolder.getWorkerInterface(), + workerThread, + &workMutex }; + + // If we're in realtime mode, the work should go onto a background thread, + // and we'll process it later. + // If we're offline, we can just do the work immediately, without worrying about + // drop-outs + return realtime ? workerThread->schedule (submitter, size, data) + : submitter.doWork (Realtime::no, size, data); + } + + static LV2_Worker_Status scheduleWork (LV2_Worker_Schedule_Handle handle, + uint32_t size, + const void* data) + { + return static_cast (handle)->scheduleWork (size, data); + } + + SharedResourcePointer workerThread; + HandleHolder& handleHolder; + LV2_Worker_Schedule schedule { this, scheduleWork }; + CriticalSection workMutex; + bool realtime = true; + + JUCE_LEAK_DETECTOR (WorkScheduler) +}; + +struct FeaturesDataListener +{ + virtual ~FeaturesDataListener() = default; + virtual LV2_Resize_Port_Status resizeCallback (uint32_t index, size_t size) = 0; +}; + +class Resize +{ +public: + explicit Resize (FeaturesDataListener& l) + : listener (l) {} + + LV2_Resize_Port_Resize& getFeature() { return resize; } + +private: + LV2_Resize_Port_Status resizeCallback (uint32_t index, size_t size) + { + return listener.resizeCallback (index, size); + } + + static LV2_Resize_Port_Status resizeCallback (LV2_Resize_Port_Feature_Data data, uint32_t index, size_t size) + { + return static_cast (data)->resizeCallback (index, size); + } + + FeaturesDataListener& listener; + LV2_Resize_Port_Resize resize { this, resizeCallback }; +}; + +class FeaturesData +{ +public: + FeaturesData (HandleHolder& handleHolder, + FeaturesDataListener& l, + int32_t maxBlockSizeIn, + int32_t sequenceSizeIn, + const UsefulUrids* u) + : urids (u), + resize (l), + maxBlockSize (maxBlockSizeIn), + sequenceSize (sequenceSizeIn), + workScheduler (handleHolder) + {} + + LV2_Options_Option* getOptions() noexcept { return options.data(); } + + int32_t getMaxBlockSize() const noexcept { return maxBlockSize; } + + void setNonRealtime (bool newValue) { realtime = ! newValue; } + + const LV2_Feature* const* getFeatureArray() const noexcept { return features.pointers.data(); } + + static std::vector getFeatureUris() + { + return Features::getUris (makeFeatures ({}, {}, {}, {}, {}, {})); + } + + void processResponses() { workScheduler.processResponses(); } + + void registerHandle (LV2_Handle handle) { workScheduler.registerHandle (handle); } + void deregisterHandle (LV2_Handle handle) { workScheduler.deregisterHandle (handle); } + +private: + static std::vector makeFeatures (LV2_URID_Map* map, + LV2_URID_Unmap* unmap, + LV2_Options_Option* options, + LV2_Worker_Schedule* schedule, + LV2_Resize_Port_Resize* resize, + LV2_Log_Log* log) + { + ignoreUnused (log); + + return { LV2_Feature { LV2_STATE__loadDefaultState, nullptr }, + LV2_Feature { LV2_BUF_SIZE__boundedBlockLength, nullptr }, + LV2_Feature { LV2_URID__map, map }, + LV2_Feature { LV2_URID__unmap, unmap }, + LV2_Feature { LV2_OPTIONS__options, options }, + LV2_Feature { LV2_WORKER__schedule, schedule }, + LV2_Feature { LV2_STATE__threadSafeRestore, nullptr }, + #if JUCE_DEBUG + LV2_Feature { LV2_LOG__log, log }, + #endif + LV2_Feature { LV2_RESIZE_PORT__resize, resize } }; + } + + LV2_Options_Option makeOption (const char* uid, const int32_t* ptr) + { + return { LV2_OPTIONS_INSTANCE, + 0, // INSTANCE kinds must have a subject of 0 + urids->symap.map (uid), + sizeof (int32_t), + urids->symap.map (LV2_ATOM__Int), + ptr }; + } + + const UsefulUrids* urids; + Resize resize; + Log log { urids }; + + const int32_t minBlockSize = 0, maxBlockSize = 0, sequenceSize = 0; + + std::vector options + { + makeOption (LV2_BUF_SIZE__minBlockLength, &minBlockSize), + makeOption (LV2_BUF_SIZE__maxBlockLength, &maxBlockSize), + makeOption (LV2_BUF_SIZE__sequenceSize, &sequenceSize), + { LV2_OPTIONS_INSTANCE, 0, 0, 0, 0, nullptr }, // The final entry must be nulled out + }; + + WorkScheduler workScheduler; + + LV2_URID_Map map = urids->symap.getMapFeature(); + LV2_URID_Unmap unmap = urids->symap.getUnmapFeature(); + Features features { makeFeatures (&map, + &unmap, + options.data(), + &workScheduler.getWorkerSchedule(), + &resize.getFeature(), + log.getLogFeature()) }; + + bool realtime = true; + + JUCE_LEAK_DETECTOR (FeaturesData) +}; + +//============================================================================== +struct TryLockAndCall +{ + template + void operator() (SpinLock& mutex, Fn&& fn) + { + const SpinLock::ScopedTryLockType lock (mutex); + + if (lock.isLocked()) + fn(); + } +}; + +struct LockAndCall +{ + template + void operator() (SpinLock& mutex, Fn&& fn) + { + const SpinLock::ScopedLockType lock (mutex); + fn(); + } +}; + +struct RealtimeReadTrait +{ + using Read = TryLockAndCall; + using Write = LockAndCall; +}; + +struct RealtimeWriteTrait +{ + using Read = LockAndCall; + using Write = TryLockAndCall; +}; + +struct MessageHeader +{ + uint32_t portIndex; + uint32_t protocol; +}; + +template +struct MessageBufferInterface +{ + virtual ~MessageBufferInterface() = default; + virtual void pushMessage (Header header, uint32_t size, const void* buffer) = 0; +}; + +template +class Messages : public MessageBufferInterface
+{ + using Read = typename LockTraits::Read; + using Write = typename LockTraits::Write; + + struct FullHeader + { + Header header; + uint32_t size; + }; + +public: + Messages() { data.reserve (initialBufferSize); } + + void pushMessage (Header header, uint32_t size, const void* buffer) override + { + Write{} (mutex, [&] + { + const auto chars = toChars (FullHeader { header, size }); + const auto bufferAsChars = static_cast (buffer); + data.insert (data.end(), chars.begin(), chars.end()); + data.insert (data.end(), bufferAsChars, bufferAsChars + size); + }); + } + + template + void readAllAndClear (Callback&& callback) + { + Read{} (mutex, [&] + { + if (data.empty()) + return; + + const auto end = data.data() + data.size(); + + for (auto ptr = data.data(); ptr < end;) + { + const auto header = readUnaligned (ptr); + callback (header.header, header.size, ptr + sizeof (header)); + ptr += sizeof (header) + header.size; + } + + data.clear(); + }); + } + +private: + static constexpr auto initialBufferSize = 8192; + SpinLock mutex; + std::vector data; + + JUCE_LEAK_DETECTOR (Messages) +}; + +//============================================================================== +class LambdaTimer : private Timer +{ +public: + explicit LambdaTimer (std::function c) : callback (c) {} + + ~LambdaTimer() noexcept override { stopTimer(); } + + using Timer::startTimer; + using Timer::startTimerHz; + using Timer::stopTimer; + +private: + void timerCallback() override { callback(); } + + std::function callback; +}; + +struct UiEventListener : public MessageBufferInterface +{ + virtual int idle() = 0; +}; + +struct UiMessageHeader +{ + UiEventListener* listener; + MessageHeader header; +}; + +class ProcessorToUi : public MessageBufferInterface +{ +public: + ProcessorToUi() { timer.startTimerHz (60); } + + void addUi (UiEventListener& l) { JUCE_ASSERT_MESSAGE_THREAD; activeUis.insert (&l); } + void removeUi (UiEventListener& l) { JUCE_ASSERT_MESSAGE_THREAD; activeUis.erase (&l); } + + void pushMessage (UiMessageHeader header, uint32_t size, const void* buffer) override + { + processorToUi.pushMessage (header, size, buffer); + } + +private: + Messages processorToUi; + std::set activeUis; + LambdaTimer timer { [this] + { + for (auto* l : activeUis) + if (l->idle() != 0) + return; + + processorToUi.readAllAndClear ([&] (const UiMessageHeader& header, uint32_t size, const char* data) + { + if (activeUis.find (header.listener) != activeUis.cend()) + header.listener->pushMessage (header.header, size, data); + }); + } }; +}; + +/* These type identifiers may be used to check the type of the incoming data. */ +struct StatefulPortUrids +{ + explicit StatefulPortUrids (SymbolMap& map) + : Float (map.map (LV2_ATOM__Float)), + Double (map.map (LV2_ATOM__Double)), + Int (map.map (LV2_ATOM__Int)), + Long (map.map (LV2_ATOM__Long)) + {} + + const LV2_URID Float, Double, Int, Long; +}; + +/* + A bit like SortedSet, but only requires `operator<` and not `operator==`, so + it behaves a bit more like a std::set. +*/ +template +class SafeSortedSet +{ +public: + using iterator = typename std::vector:: iterator; + using const_iterator = typename std::vector::const_iterator; + + template + const_iterator find (const Other& other) const noexcept + { + const auto it = std::lower_bound (storage.cbegin(), storage.cend(), other); + + if (it != storage.cend() && ! (other < *it)) + return it; + + return storage.cend(); + } + + void insert (Value&& value) { insertImpl (std::move (value)); } + void insert (const Value& value) { insertImpl (value); } + + size_t size() const noexcept { return storage.size(); } + bool empty() const noexcept { return storage.empty(); } + + iterator begin() noexcept { return storage. begin(); } + const_iterator begin() const noexcept { return storage. begin(); } + const_iterator cbegin() const noexcept { return storage.cbegin(); } + + iterator end() noexcept { return storage. end(); } + const_iterator end() const noexcept { return storage. end(); } + const_iterator cend() const noexcept { return storage.cend(); } + + auto& operator[] (size_t index) const { return storage[index]; } + +private: + template + void insertImpl (Arg&& value) + { + const auto it = std::lower_bound (storage.cbegin(), storage.cend(), value); + + if (it == storage.cend() || value < *it) + storage.insert (it, std::forward (value)); + } + + std::vector storage; +}; + +struct StoredScalePoint +{ + String label; + float value; + + bool operator< (const StoredScalePoint& other) const noexcept { return value < other.value; } +}; + +inline bool operator< (const StoredScalePoint& a, float b) noexcept { return a.value < b; } +inline bool operator< (float a, const StoredScalePoint& b) noexcept { return a < b.value; } + +struct ParameterInfo +{ + ParameterInfo() = default; + + ParameterInfo (SafeSortedSet scalePointsIn, + String identifierIn, + float defaultValueIn, + float minIn, + float maxIn, + bool isToggleIn, + bool isIntegerIn, + bool isEnumIn) + : scalePoints (std::move (scalePointsIn)), + identifier (std::move (identifierIn)), + defaultValue (defaultValueIn), + min (minIn), + max (maxIn), + isToggle (isToggleIn), + isInteger (isIntegerIn), + isEnum (isEnumIn) + {} + + static SafeSortedSet getScalePoints (const Port& port) + { + SafeSortedSet scalePoints; + + for (const LilvScalePoint* p : port.getScalePoints()) + { + const ScalePoint wrapper { p }; + const auto value = wrapper.getValue(); + const auto label = wrapper.getLabel(); + + if (lilv_node_is_float (value) || lilv_node_is_int (value)) + scalePoints.insert ({ lilv_node_as_string (label), lilv_node_as_float (value) }); + } + + return scalePoints; + } + + static ParameterInfo getInfoForPort (const UsefulUris& uris, const Port& port) + { + const auto range = port.getRange(); + + return { getScalePoints (port), + "sym:" + String::fromUTF8 (port.getSymbol().getTyped()), + range.defaultValue, + range.min, + range.max, + port.hasProperty (uris.mLV2_CORE__toggled), + port.hasProperty (uris.mLV2_CORE__integer), + port.hasProperty (uris.mLV2_CORE__enumeration) }; + } + + SafeSortedSet scalePoints; + + /* This is the 'symbol' of a port, or the 'designation' of a parameter without a symbol. */ + String identifier; + + float defaultValue = 0.0f, min = 0.0f, max = 1.0f; + bool isToggle = false, isInteger = false, isEnum = false; + + JUCE_LEAK_DETECTOR (ParameterInfo) +}; + +struct PortHeader +{ + String name; + String symbol; + uint32_t index; + Port::Direction direction; +}; + +struct ControlPort +{ + ControlPort (const PortHeader& headerIn, const ParameterInfo& infoIn) + : header (headerIn), info (infoIn) {} + + PortHeader header; + ParameterInfo info; + float currentValue = info.defaultValue; +}; + +struct CVPort +{ + PortHeader header; +}; + +struct AudioPort +{ + PortHeader header; +}; + +template +class SingleSizeAlignedStorage +{ +public: + SingleSizeAlignedStorage() = default; + + explicit SingleSizeAlignedStorage (size_t sizeInBytes) + : storage (new char[sizeInBytes + Alignment]), + alignedPointer (storage.get()), + space (sizeInBytes + Alignment) + { + alignedPointer = std::align (Alignment, sizeInBytes, alignedPointer, space); + } + + void* data() const { return alignedPointer; } + size_t size() const { return space; } + +private: + std::unique_ptr storage; + void* alignedPointer = nullptr; + size_t space = 0; +}; + +template +static SingleSizeAlignedStorage grow (SingleSizeAlignedStorage storage, size_t size) +{ + if (storage.size() <= size) + return storage; + + SingleSizeAlignedStorage newStorage { jmax (size, (storage.size() * 3) / 2) }; + std::memcpy (newStorage.data(), storage.data(), storage.size()); + return newStorage; +} + +class AtomPort +{ +public: + AtomPort (PortHeader h, size_t bytes, SymbolMap& map) + : header (h), contents (bytes), forge (map.getMapFeature()) {} + + PortHeader header; + + void replaceWithChunk() + { + forge.setBuffer (data(), size()); + forge.writeChunk ((uint32_t) (size() - sizeof (LV2_Atom))); + } + + void replaceBufferWithAtom (const LV2_Atom* atom) + { + const auto totalSize = atom->size + sizeof (LV2_Atom); + + if (totalSize <= size()) + std::memcpy (data(), atom, totalSize); + else + replaceWithChunk(); + } + + void beginSequence() + { + forge.setBuffer (data(), size()); + lv2_atom_forge_sequence_head (forge.get(), &frame, 0); + } + + void endSequence() + { + lv2_atom_forge_pop (forge.get(), &frame); + } + + /* For this to work, the 'atom' pointer must be well-formed. + + It must be followed by an atom header, then at least 'size' bytes of body. + */ + void addAtomToSequence (int64_t timestamp, const LV2_Atom* atom) + { + // This reinterpret_cast is not UB, casting to a char* is acceptable. + // Doing arithmetic on this pointer is dubious, but I can't think of a better alternative + // given that we don't have any way of knowing the concrete type of the atom. + addEventToSequence (timestamp, + atom->type, + atom->size, + reinterpret_cast (atom) + sizeof (LV2_Atom)); + } + + void addEventToSequence (int64_t timestamp, uint32_t type, uint32_t size, const void* content) + { + lv2_atom_forge_frame_time (forge.get(), timestamp); + lv2_atom_forge_atom (forge.get(), size, type); + lv2_atom_forge_write (forge.get(), content, size); + } + + void ensureSizeInBytes (size_t size) + { + contents = grow (std::move (contents), size); + } + + char* data() noexcept { return data (*this); } + const char* data() const noexcept { return data (*this); } + + size_t size() const noexcept { return contents.size(); } + + lv2_shared::AtomForge& getForge() { return forge; } + const lv2_shared::AtomForge& getForge() const { return forge; } + +private: + template + static auto data (This& t) -> decltype (t.data()) + { + return unalignedPointerCast (t.contents.data()); + } + + // Atoms are required to be 64-bit aligned + SingleSizeAlignedStorage<8> contents; + lv2_shared::AtomForge forge; + LV2_Atom_Forge_Frame frame; +}; + +template +struct ParseResult +{ + Value value; + bool successful; +}; + +class Ports +{ +public: + static constexpr auto sequenceSize = 8192; + + template + void forEachPort (Callback&& callback) const + { + for (const auto& port : controlPorts) + callback (port.header); + + for (const auto& port : cvPorts) + callback (port.header); + + for (const auto& port : audioPorts) + callback (port.header); + + for (const auto& port : atomPorts) + callback (port.header); + } + + auto getControlPorts() { return makeSimpleSpan (controlPorts); } + auto getControlPorts() const { return makeSimpleSpan (controlPorts); } + auto getCvPorts() { return makeSimpleSpan (cvPorts); } + auto getCvPorts() const { return makeSimpleSpan (cvPorts); } + auto getAudioPorts() { return makeSimpleSpan (audioPorts); } + auto getAudioPorts() const { return makeSimpleSpan (audioPorts); } + auto getAtomPorts() { return makeSimpleSpan (atomPorts); } + auto getAtomPorts() const { return makeSimpleSpan (atomPorts); } + +private: + friend ParseResult getPorts (const UsefulUris& uris, const Plugin& plugin, SymbolMap& symap); + + std::vector controlPorts; + std::vector cvPorts; + std::vector audioPorts; + std::vector atomPorts; +}; + +ParseResult getPorts (const UsefulUris& uris, const Plugin& plugin, SymbolMap& symap) +{ + Ports value; + bool successful = true; + + const auto numPorts = plugin.getNumPorts(); + + for (uint32_t i = 0; i != numPorts; ++i) + { + const auto port = plugin.getPortByIndex (i); + + const PortHeader header { String::fromUTF8 (port.getName().getTyped()), + String::fromUTF8 (port.getSymbol().getTyped()), + i, + port.getDirection (uris) }; + + switch (port.getKind (uris)) + { + case Port::Kind::control: + { + value.controlPorts.push_back ({ header, ParameterInfo::getInfoForPort (uris, port) }); + break; + } + + case Port::Kind::cv: + value.cvPorts.push_back ({ header }); + break; + + case Port::Kind::audio: + { + value.audioPorts.push_back ({ header }); + break; + } + + case Port::Kind::atom: + { + value.atomPorts.push_back ({ header, (size_t) Ports::sequenceSize, symap }); + break; + } + + case Port::Kind::unknown: + successful = false; + break; + } + } + + for (auto& atomPort : value.atomPorts) + { + const auto port = plugin.getPortByIndex (atomPort.header.index); + const auto minSize = port.get (uris.mLV2_RESIZE_PORT__minimumSize.get()); + + if (minSize != nullptr) + atomPort.ensureSizeInBytes ((size_t) lilv_node_as_int (minSize.get())); + } + + return { std::move (value), successful }; +} + +class Plugins +{ +public: + explicit Plugins (const LilvPlugins* list) noexcept : plugins (list) {} + + unsigned size() const noexcept { return lilv_plugins_size (plugins); } + + PluginsIterator begin() const noexcept { return PluginsIterator { plugins }; } + PluginsIterator end() const noexcept { return PluginsIterator{}; } + + const LilvPlugin* getByUri (const NodeUri& uri) const + { + return lilv_plugins_get_by_uri (plugins, uri.get()); + } + +private: + const LilvPlugins* plugins = nullptr; +}; + +template +class PluginClassesImpl +{ +public: + using type = typename PtrTraits::type; + + explicit PluginClassesImpl (type ptr) + : classes (std::move (ptr)) {} + + unsigned size() const noexcept { return lilv_plugin_classes_size (PtrTraits::get (classes)); } + + PluginClassesIterator begin() const noexcept { return PluginClassesIterator { PtrTraits::get (classes) }; } + PluginClassesIterator end() const noexcept { return PluginClassesIterator{}; } + + const LilvPluginClass* getByUri (const NodeUri& uri) const noexcept + { + return lilv_plugin_classes_get_by_uri (PtrTraits::get (classes), uri.get()); + } + +private: + type classes{}; +}; + +struct PluginClassesFree +{ + void operator() (LilvPluginClasses* ptr) const noexcept { lilv_plugin_classes_free (ptr); } +}; + +using OwningPluginClasses = PluginClassesImpl>; +using NonOwningPluginClasses = PluginClassesImpl>; + +class World +{ +public: + World() : world (lilv_world_new()) {} + + void loadAll() { lilv_world_load_all (world.get()); } + void loadBundle (const NodeUri& uri) { lilv_world_load_bundle (world.get(), uri.get()); } + void unloadBundle (const NodeUri& uri) { lilv_world_unload_bundle (world.get(), uri.get()); } + + void loadResource (const NodeUri& uri) { lilv_world_load_resource (world.get(), uri.get()); } + void unloadResource (const NodeUri& uri) { lilv_world_unload_resource (world.get(), uri.get()); } + + void loadSpecifications() { lilv_world_load_specifications (world.get()); } + void loadPluginClasses() { lilv_world_load_plugin_classes (world.get()); } + + Plugins getAllPlugins() const { return Plugins { lilv_world_get_all_plugins (world.get()) }; } + NonOwningPluginClasses getPluginClasses() const { return NonOwningPluginClasses { lilv_world_get_plugin_classes (world.get()) }; } + + NodeUri newUri (const char* uri) { return NodeUri { world.get(), uri }; } + NodeUri newFileUri (const char* host, const char* path) { return NodeUri { world.get(), host, path }; } + NodeString newString (const char* str) { return NodeString { world.get(), str }; } + + bool ask (const LilvNode* subject, const LilvNode* predicate, const LilvNode* object) const + { + return lilv_world_ask (world.get(), subject, predicate, object); + } + + OwningNode get (const LilvNode* subject, const LilvNode* predicate, const LilvNode* object) const + { + return OwningNode { lilv_world_get (world.get(), subject, predicate, object) }; + } + + OwningNodes findNodes (const LilvNode* subject, const LilvNode* predicate, const LilvNode* object) const + { + return OwningNodes { lilv_world_find_nodes (world.get(), subject, predicate, object) }; + } + + LilvWorld* get() const { return world.get(); } + +private: + struct Free + { + void operator() (LilvWorld* ptr) const noexcept { lilv_world_free (ptr); } + }; + + std::unique_ptr world; +}; + +class InstanceWithSupports : private FeaturesDataListener, + private HandleHolder +{ +public: + InstanceWithSupports (World& world, + std::unique_ptr&& symapIn, + const Plugin& plugin, + Ports portsIn, + int32_t initialBufferSize, + double sampleRate) + : symap (std::move (symapIn)), + ports (std::move (portsIn)), + features (*this, *this, initialBufferSize, lv2_host::Ports::sequenceSize, &urids), + instance (plugin, sampleRate, features.getFeatureArray()), + workerInterface (instance.getExtensionData (world.newUri (LV2_WORKER__interface))) + { + if (instance == nullptr) + return; + + for (auto& port : ports.getControlPorts()) + instance.connectPort (port.header.index, &port.currentValue); + + for (auto& port : ports.getAtomPorts()) + instance.connectPort (port.header.index, port.data()); + + for (auto& port : ports.getCvPorts()) + instance.connectPort (port.header.index, nullptr); + + for (auto& port : ports.getAudioPorts()) + instance.connectPort (port.header.index, nullptr); + + features.registerHandle (instance.getHandle()); + } + + ~InstanceWithSupports() override + { + if (instance != nullptr) + features.deregisterHandle (instance.getHandle()); + } + + std::unique_ptr symap; + const UsefulUrids urids { *symap }; + Ports ports; + FeaturesData features; + Instance instance; + Messages uiToProcessor; + SharedResourcePointer processorToUi; + +private: + LV2_Handle handle = instance == nullptr ? nullptr : instance.getHandle(); + OptionalExtension workerInterface; + + LV2_Handle getHandle() const override { return handle; } + const LV2_Worker_Interface* getWorkerInterface() const override { return workerInterface.valid ? &workerInterface.extension : nullptr; } + + LV2_Resize_Port_Status resizeCallback (uint32_t index, size_t size) override + { + if (ports.getAtomPorts().size() <= index) + return LV2_RESIZE_PORT_ERR_UNKNOWN; + + auto& port = ports.getAtomPorts()[index]; + + if (port.header.direction != Port::Direction::output) + return LV2_RESIZE_PORT_ERR_UNKNOWN; + + port.ensureSizeInBytes (size); + instance.connectPort (port.header.index, port.data()); + + return LV2_RESIZE_PORT_SUCCESS; + } + + JUCE_DECLARE_NON_COPYABLE (InstanceWithSupports) + JUCE_DECLARE_NON_MOVEABLE (InstanceWithSupports) + JUCE_LEAK_DETECTOR (InstanceWithSupports) +}; + +struct PortState +{ + const void* data; + uint32_t size; + uint32_t kind; +}; + +class PortMap +{ +public: + explicit PortMap (Ports& ports) + { + for (auto& port : ports.getControlPorts()) + symbolToControlPortMap.emplace (port.header.symbol, &port); + } + + PortState getState (const String& symbol, const StatefulPortUrids& urids) + { + if (auto* port = getControlPortForSymbol (symbol)) + return { &port->currentValue, sizeof (float), urids.Float }; + + // At time of writing, lilv_state_new_from_instance did not attempt to store + // the state of non-control ports. Perhaps that has changed? + jassertfalse; + return { nullptr, 0, 0 }; + } + + void restoreState (const String& symbol, const StatefulPortUrids& urids, PortState ps) + { + if (auto* port = getControlPortForSymbol (symbol)) + { + port->currentValue = [&]() -> float + { + if (ps.kind == urids.Float) + return getValueFrom (ps.data, ps.size); + + if (ps.kind == urids.Double) + return getValueFrom (ps.data, ps.size); + + if (ps.kind == urids.Int) + return getValueFrom (ps.data, ps.size); + + if (ps.kind == urids.Long) + return getValueFrom (ps.data, ps.size); + + jassertfalse; + return {}; + }(); + } + else + jassertfalse; // Restoring state for non-control ports is not currently supported. + } + +private: + template + static float getValueFrom (const void* data, uint32_t size) + { + jassertquiet (size == sizeof (Value)); + return (float) readUnaligned (data); + } + + ControlPort* getControlPortForSymbol (const String& symbol) const + { + const auto iter = symbolToControlPortMap.find (symbol); + return iter != symbolToControlPortMap.cend() ? iter->second : nullptr; + } + + std::map symbolToControlPortMap; + JUCE_LEAK_DETECTOR (PortMap) +}; + +class PluginState +{ +public: + PluginState() = default; + + explicit PluginState (LilvState* ptr) + : state (ptr) {} + + const LilvState* get() const noexcept { return state.get(); } + + void restore (InstanceWithSupports& instance, PortMap& portMap) const + { + if (state != nullptr) + SaveRestoreHandle { instance, portMap }.restore (state.get()); + } + + std::string toString (LilvWorld* world, LV2_URID_Map* map, LV2_URID_Unmap* unmap, const char* uri) const + { + struct FreeString { void operator() (void* ptr) const noexcept { lilv_free (ptr); } }; + std::unique_ptr result { lilv_state_to_string (world, + map, + unmap, + state.get(), + uri, + nullptr) }; + return std::string { result.get() }; + } + + String getLabel() const + { + return String::fromUTF8 (lilv_state_get_label (state.get())); + } + + void setLabel (const String& label) + { + lilv_state_set_label (state.get(), label.toRawUTF8()); + } + + class SaveRestoreHandle + { + public: + explicit SaveRestoreHandle (InstanceWithSupports& instanceIn, PortMap& portMap) + : instance (instanceIn.instance.get()), + features (instanceIn.features.getFeatureArray()), + urids (*instanceIn.symap), + map (portMap) + {} + + PluginState save (const LilvPlugin* plugin, LV2_URID_Map* mapFeature) + { + return PluginState { lilv_state_new_from_instance (plugin, + instance, + mapFeature, + nullptr, + nullptr, + nullptr, + nullptr, + getPortValue, + this, + LV2_STATE_IS_POD | LV2_STATE_IS_PORTABLE, + features ) }; + } + + void restore (const LilvState* stateIn) + { + lilv_state_restore (stateIn, + instance, + setPortValue, + this, + 0, + features); + } + + private: + static const void* getPortValue (const char* portSymbol, + void* userData, + uint32_t* size, + uint32_t* type) + { + auto& handle = *static_cast (userData); + + const auto state = handle.map.getState (portSymbol, handle.urids); + *size = state.size; + *type = state.kind; + return state.data; + } + + static void setPortValue (const char* portSymbol, + void* userData, + const void* value, + uint32_t size, + uint32_t type) + { + const auto& handle = *static_cast (userData); + handle.map.restoreState (portSymbol, handle.urids, { static_cast (value), size, type }); + } + + LilvInstance* instance = nullptr; + const LV2_Feature* const* features = nullptr; + const StatefulPortUrids urids; + PortMap& map; + }; + +private: + struct Free + { + void operator() (LilvState* ptr) const noexcept { lilv_state_free (ptr); } + }; + + std::unique_ptr state; + + JUCE_LEAK_DETECTOR (PluginState) +}; + +/* + Wraps an LV2 UI bundle, providing access to the descriptor (if available). +*/ +struct UiDescriptorLibrary +{ + using GetDescriptor = LV2UI_Descriptor* (*) (uint32_t); + + UiDescriptorLibrary() = default; + + explicit UiDescriptorLibrary (const String& libraryPath) + : library (std::make_unique (libraryPath)), + getDescriptor (lv2_shared::wordCast (library->getFunction ("lv2ui_descriptor"))) {} + + std::unique_ptr library; + GetDescriptor getDescriptor = nullptr; +}; + +class UiDescriptorArgs +{ +public: + const char* libraryPath = nullptr; + const char* uiUri = nullptr; + + auto withLibraryPath (const char* v) const noexcept { return with (&UiDescriptorArgs::libraryPath, v); } + auto withUiUri (const char* v) const noexcept { return with (&UiDescriptorArgs::uiUri, v); } + +private: + template + UiDescriptorArgs with (Member&& member, const char* value) const noexcept + { + return juce::lv2_host::with (*this, std::forward (member), value); + } +}; + +/* + Stores a pointer to the descriptor for a specific UI bundle and UI URI. +*/ +class UiDescriptor +{ +public: + UiDescriptor() = default; + + explicit UiDescriptor (const UiDescriptorArgs& args) + : library (args.libraryPath), + descriptor (extractUiDescriptor (library, args.uiUri)) + {} + + void portEvent (LV2UI_Handle ui, + uint32_t portIndex, + uint32_t bufferSize, + uint32_t format, + const void* buffer) const + { + JUCE_ASSERT_MESSAGE_THREAD + + if (auto* lv2Descriptor = get()) + if (auto* callback = lv2Descriptor->port_event) + callback (ui, portIndex, bufferSize, format, buffer); + } + + bool hasExtensionData (World& world, const char* uid) const + { + return world.ask (world.newUri (descriptor->URI).get(), + world.newUri (LV2_CORE__extensionData).get(), + world.newUri (uid).get()); + } + + template + OptionalExtension getExtensionData (World& world, const char* uid) const + { + if (! hasExtensionData (world, uid)) + return {}; + + if (auto* lv2Descriptor = get()) + if (auto* extension = lv2Descriptor->extension_data) + return OptionalExtension (readUnaligned (extension (uid))); + + return {}; + } + + const LV2UI_Descriptor* get() const noexcept { return descriptor; } + +private: + static const LV2UI_Descriptor* extractUiDescriptor (const UiDescriptorLibrary& lib, const char* uiUri) + { + if (lib.getDescriptor == nullptr) + return nullptr; + + for (uint32_t i = 0;; ++i) + { + const auto* descriptor = lib.getDescriptor (i); + + if (descriptor == nullptr) + return nullptr; + + if (strcmp (uiUri, descriptor->URI) == 0) + return descriptor; + } + } + + UiDescriptorLibrary library; + const LV2UI_Descriptor* descriptor = nullptr; + + JUCE_LEAK_DETECTOR (UiDescriptor) +}; + +enum class UpdateUi { no, yes }; +enum class UpdateProcessor { no, yes }; + +/* A bit like the FlaggedFloatCache used by the VST3 host/client. + + While the FlaggedFloatCache always clears all set flags during the ifSet() call, + this class stores the "value changed" flags for the processor and UI separately, + so that they can be read at different rates. +*/ +class ParameterValuesAndFlags +{ +public: + ParameterValuesAndFlags() = default; + + explicit ParameterValuesAndFlags (size_t sizeIn) + : values (sizeIn), + needsUiUpdate (sizeIn), + needsProcessorUpdate (sizeIn) + { + std::fill (values.begin(), values.end(), 0.0f); + } + + size_t size() const noexcept { return values.size(); } + + void set (size_t index, float value, UpdateUi updateUi, UpdateProcessor updateProcessor) + { + jassert (index < size()); + values[index].store (value, std::memory_order_relaxed); + needsUiUpdate .set (index, updateUi == UpdateUi::yes ? 1 : 0); + needsProcessorUpdate.set (index, updateProcessor == UpdateProcessor::yes ? 1 : 0); + } + + float get (size_t index) const noexcept + { + jassert (index < size()); + return values[index].load (std::memory_order_relaxed); + } + + template + void ifProcessorValuesChanged (Callback&& callback) + { + ifChanged (needsProcessorUpdate, std::forward (callback)); + } + + template + void ifUiValuesChanged (Callback&& callback) + { + ifChanged (needsUiUpdate, std::forward (callback)); + } + + void clearUiFlags() { needsUiUpdate.clear(); } + +private: + template + void ifChanged (FlagCache<1>& flags, Callback&& callback) + { + flags.ifSet ([this, &callback] (size_t groupIndex, uint32_t) + { + callback (groupIndex, values[groupIndex].load (std::memory_order_relaxed)); + }); + } + + std::vector> values; + FlagCache<1> needsUiUpdate; + FlagCache<1> needsProcessorUpdate; + + JUCE_LEAK_DETECTOR (ParameterValuesAndFlags) +}; + +class LV2Parameter : public AudioPluginInstance::HostedParameter +{ +public: + LV2Parameter (const String& nameIn, + const ParameterInfo& infoIn, + ParameterValuesAndFlags& floatCache) + : cache (floatCache), + info (infoIn), + range (info.min, info.max), + name (nameIn), + normalisedDefault (range.convertTo0to1 (infoIn.defaultValue)) + {} + + float getValue() const noexcept override + { + return range.convertTo0to1 (getDenormalisedValue()); + } + + void setValue (float f) override + { + cache.set ((size_t) getParameterIndex(), range.convertFrom0to1 (f), UpdateUi::yes, UpdateProcessor::yes); + } + + void setDenormalisedValueFromUi (float denormalised) + { + cache.set ((size_t) getParameterIndex(), denormalised, UpdateUi::no, UpdateProcessor::yes); + sendValueChangedMessageToListeners (range.convertTo0to1 (denormalised)); + } + + void setDenormalisedValueWithoutTriggeringUpdate (float denormalised) + { + cache.set ((size_t) getParameterIndex(), denormalised, UpdateUi::no, UpdateProcessor::no); + sendValueChangedMessageToListeners (range.convertTo0to1 (denormalised)); + } + + float getDenormalisedValue() const noexcept + { + return cache.get ((size_t) getParameterIndex()); + } + + float getDefaultValue() const override { return normalisedDefault; } + float getDenormalisedDefaultValue() const { return info.defaultValue; } + + float getValueForText (const String& text) const override + { + if (! info.isEnum) + return range.convertTo0to1 (text.getFloatValue()); + + const auto it = std::find_if (info.scalePoints.begin(), + info.scalePoints.end(), + [&] (const StoredScalePoint& stored) { return stored.label == text; }); + return it != info.scalePoints.end() ? range.convertTo0to1 (it->value) : normalisedDefault; + } + + int getNumSteps() const override + { + if (info.isToggle) + return 2; + + if (info.isEnum) + return static_cast (info.scalePoints.size()); + + if (info.isInteger) + return static_cast (range.getRange().getLength()) + 1; + + return AudioProcessorParameter::getNumSteps(); + } + + bool isDiscrete() const override { return info.isEnum || info.isInteger || info.isToggle; } + bool isBoolean() const override { return info.isToggle; } + + StringArray getAllValueStrings() const override + { + if (! info.isEnum) + return {}; + + return AudioProcessorParameter::getAllValueStrings(); + } + + String getText (float normalisedValue, int) const override + { + const auto denormalised = range.convertFrom0to1 (normalisedValue); + + if (info.isEnum && ! info.scalePoints.empty()) + { + // The normalised value might not correspond to the exact value of a scale point. + // In this case, we find the closest label by searching the midpoints of the scale + // point values. + const auto index = std::distance (midPoints.begin(), + std::lower_bound (midPoints.begin(), midPoints.end(), normalisedValue)); + jassert (isPositiveAndBelow (index, info.scalePoints.size())); + return info.scalePoints[(size_t) index].label; + } + + return getFallbackParameterString (denormalised); + } + + String getParameterID() const override + { + return info.identifier; + } + + String getName (int maxLength) const override + { + return name.substring (0, maxLength); + } + + String getLabel() const override + { + // TODO + return {}; + } + +private: + String getFallbackParameterString (float denormalised) const + { + if (info.isToggle) + return denormalised > 0.0f ? "On" : "Off"; + + if (info.isInteger) + return String { static_cast (denormalised) }; + + return String { denormalised }; + } + + static std::vector findScalePointMidPoints (const SafeSortedSet& set) + { + if (set.size() < 2) + return {}; + + std::vector result; + + for (auto it = std::next (set.begin()); it != set.end(); ++it) + result.push_back ((std::prev (it)->value + it->value) * 0.5f); + + jassert (std::is_sorted (result.begin(), result.end())); + jassert (result.size() + 1 == set.size()); + return result; + } + + ParameterValuesAndFlags& cache; + const ParameterInfo info; + const std::vector midPoints = findScalePointMidPoints (info.scalePoints); + const NormalisableRange range; + const String name; + const float normalisedDefault; + + JUCE_LEAK_DETECTOR (LV2Parameter) +}; + +class UiInstanceArgs +{ +public: + const char* bundlePath = nullptr; + const char* pluginUri = nullptr; + + auto withBundlePath (const char* v) const noexcept { return with (&UiInstanceArgs::bundlePath, v); } + auto withPluginUri (const char* v) const noexcept { return with (&UiInstanceArgs::pluginUri, v); } + +private: + template + UiInstanceArgs with (Member&& member, const char* value) const noexcept + { + return juce::lv2_host::with (*this, std::forward (member), value); + } +}; + +/* + Creates and holds a UI instance for a plugin with a specific URI, using the provided descriptor. +*/ +class UiInstance +{ +public: + UiInstance (World& world, + const UiDescriptor* descriptorIn, + const UiInstanceArgs& args, + const LV2_Feature* const* features, + MessageBufferInterface& messagesIn, + SymbolMap& map, + PhysicalResizeListener& rl) + : descriptor (descriptorIn), + resizeListener (rl), + uiToProcessor (messagesIn), + mLV2_UI__floatProtocol (map.map (LV2_UI__floatProtocol)), + mLV2_ATOM__atomTransfer (map.map (LV2_ATOM__atomTransfer)), + mLV2_ATOM__eventTransfer (map.map (LV2_ATOM__eventTransfer)), + instance (makeInstance (args.pluginUri, args.bundlePath, features)), + idleCallback (getExtensionData (world, LV2_UI__idleInterface)) + { + jassert (descriptor != nullptr); + jassert (widget != nullptr); + + ignoreUnused (resizeListener); + } + + LV2UI_Handle getHandle() const noexcept { return instance.get(); } + + void pushMessage (MessageHeader header, uint32_t size, const void* buffer) + { + descriptor->portEvent (getHandle(), header.portIndex, size, header.protocol, buffer); + } + + int idle() + { + if (idleCallback.valid && idleCallback.extension.idle != nullptr) + return idleCallback.extension.idle (getHandle()); + + return 0; + } + + template + OptionalExtension getExtensionData (World& world, const char* uid) const + { + return descriptor->getExtensionData (world, uid); + } + + Rectangle getDetectedViewBounds() const + { + #if JUCE_MAC + const auto frame = [(NSView*) widget frame]; + return { (int) frame.size.width, (int) frame.size.height }; + #elif JUCE_LINUX || JUCE_BSD + Window root = 0; + int wx = 0, wy = 0; + unsigned int ww = 0, wh = 0, bw = 0, bitDepth = 0; + + XWindowSystemUtilities::ScopedXLock xLock; + auto* display = XWindowSystem::getInstance()->getDisplay(); + X11Symbols::getInstance()->xGetGeometry (display, + (::Drawable) widget, + &root, + &wx, + &wy, + &ww, + &wh, + &bw, + &bitDepth); + + return { (int) ww, (int) wh }; + #elif JUCE_WINDOWS + RECT rect; + GetWindowRect ((HWND) widget, &rect); + return { rect.right - rect.left, rect.bottom - rect.top }; + #else + return {}; + #endif + } + + const UiDescriptor* descriptor = nullptr; + +private: + using Instance = std::unique_ptr; + using Idle = int (*) (LV2UI_Handle); + + Instance makeInstance (const char* pluginUri, const char* bundlePath, const LV2_Feature* const* features) + { + if (descriptor->get() == nullptr) + return { nullptr, [] (LV2UI_Handle) {} }; + + return Instance { descriptor->get()->instantiate (descriptor->get(), + pluginUri, + bundlePath, + writeFunction, + this, + &widget, + features), + descriptor->get()->cleanup }; + } + + void write (uint32_t portIndex, uint32_t bufferSize, uint32_t protocol, const void* buffer) + { + const LV2_URID protocols[] { 0, mLV2_UI__floatProtocol, mLV2_ATOM__atomTransfer, mLV2_ATOM__eventTransfer }; + const auto it = std::find (std::begin (protocols), std::end (protocols), protocol); + + if (it != std::end (protocols)) + { + uiToProcessor.pushMessage ({ portIndex, protocol }, bufferSize, buffer); + } + } + + static void writeFunction (LV2UI_Controller controller, + uint32_t portIndex, + uint32_t bufferSize, + uint32_t portProtocol, + const void* buffer) + { + jassert (controller != nullptr); + static_cast (controller)->write (portIndex, bufferSize, portProtocol, buffer); + } + + PhysicalResizeListener& resizeListener; + MessageBufferInterface& uiToProcessor; + LV2UI_Widget widget = nullptr; + const LV2_URID mLV2_UI__floatProtocol; + const LV2_URID mLV2_ATOM__atomTransfer; + const LV2_URID mLV2_ATOM__eventTransfer; + Instance instance; + OptionalExtension idleCallback; + + #if JUCE_MAC + NSViewFrameWatcher frameWatcher { (NSView*) widget, [this] + { + const auto bounds = getDetectedViewBounds(); + resizeListener.viewRequestedResizeInPhysicalPixels (bounds.getWidth(), bounds.getHeight()); + } }; + #elif JUCE_WINDOWS + WindowSizeChangeListener frameWatcher { (HWND) widget, resizeListener }; + #endif + + JUCE_LEAK_DETECTOR (UiInstance) +}; + +struct TouchListener +{ + virtual ~TouchListener() = default; + virtual void controlGrabbed (uint32_t port, bool grabbed) = 0; +}; + +class AsyncFn : public AsyncUpdater +{ +public: + explicit AsyncFn (std::function callbackIn) + : callback (std::move (callbackIn)) {} + + ~AsyncFn() override { cancelPendingUpdate(); } + + void handleAsyncUpdate() override { callback(); } + +private: + std::function callback; +}; + +class UiFeaturesDataOptions +{ +public: + float initialScaleFactor = 0.0f, sampleRate = 0.0f; + + auto withInitialScaleFactor (float v) const { return with (&UiFeaturesDataOptions::initialScaleFactor, v); } + auto withSampleRate (float v) const { return with (&UiFeaturesDataOptions::sampleRate, v); } + +private: + template + UiFeaturesDataOptions with (Member&& member, Value&& value) const + { + return juce::lv2_host::with (*this, std::forward (member), std::forward (value)); + } +}; + +class UiFeaturesData +{ +public: + UiFeaturesData (PhysicalResizeListener& rl, + TouchListener& tl, + LV2_Handle instanceIn, + LV2UI_Widget parentIn, + Instance::GetExtensionData getExtensionData, + const Ports& ports, + SymbolMap& symapIn, + const UiFeaturesDataOptions& optIn) + : opts (optIn), + resizeListener (rl), + touchListener (tl), + instance (instanceIn), + parent (parentIn), + symap (symapIn), + dataAccess { getExtensionData }, + portIndices (makePortIndices (ports)) + { + } + + const LV2_Feature* const* getFeatureArray() const noexcept { return features.pointers.data(); } + + static std::vector getFeatureUris() + { + return Features::getUris (makeFeatures ({}, {}, {}, {}, {}, {}, {}, {}, {}, {})); + } + + Rectangle getLastRequestedBounds() const { return { lastRequestedWidth, lastRequestedHeight }; } + +private: + static std::vector makeFeatures (LV2UI_Resize* resize, + LV2UI_Widget parent, + LV2_Handle handle, + LV2_Extension_Data_Feature* data, + LV2_URID_Map* map, + LV2_URID_Unmap* unmap, + LV2UI_Port_Map* portMap, + LV2UI_Touch* touch, + LV2_Options_Option* options, + LV2_Log_Log* log) + { + return { LV2_Feature { LV2_UI__resize, resize }, + LV2_Feature { LV2_UI__parent, parent }, + LV2_Feature { LV2_UI__idleInterface, nullptr }, + LV2_Feature { LV2_INSTANCE_ACCESS_URI, handle }, + LV2_Feature { LV2_DATA_ACCESS_URI, data }, + LV2_Feature { LV2_URID__map, map }, + LV2_Feature { LV2_URID__unmap, unmap}, + LV2_Feature { LV2_UI__portMap, portMap }, + LV2_Feature { LV2_UI__touch, touch }, + LV2_Feature { LV2_OPTIONS__options, options }, + LV2_Feature { LV2_LOG__log, log } }; + } + + int resizeCallback (int width, int height) + { + lastRequestedWidth = width; + lastRequestedHeight = height; + resizeListener.viewRequestedResizeInPhysicalPixels (width, height); + return 0; + } + + static int resizeCallback (LV2UI_Feature_Handle handle, int width, int height) + { + return static_cast (handle)->resizeCallback (width, height); + } + + uint32_t portIndexCallback (const char* symbol) const + { + const auto it = portIndices.find (symbol); + return it != portIndices.cend() ? it->second : LV2UI_INVALID_PORT_INDEX; + } + + static uint32_t portIndexCallback (LV2UI_Feature_Handle handle, const char* symbol) + { + return static_cast (handle)->portIndexCallback (symbol); + } + + void touchCallback (uint32_t portIndex, bool grabbed) const + { + touchListener.controlGrabbed (portIndex, grabbed); + } + + static void touchCallback (LV2UI_Feature_Handle handle, uint32_t index, bool b) + { + return static_cast (handle)->touchCallback (index, b); + } + + static std::map makePortIndices (const Ports& ports) + { + std::map result; + + ports.forEachPort ([&] (const PortHeader& header) + { + const auto emplaced = result.emplace (header.symbol, header.index); + + // This will complain if there are duplicate port symbols. + jassert (emplaced.second); + ignoreUnused (emplaced); + }); + + return result; + } + + const UiFeaturesDataOptions opts; + PhysicalResizeListener& resizeListener; + TouchListener& touchListener; + LV2_Handle instance{}; + LV2UI_Widget parent{}; + SymbolMap& symap; + const UsefulUrids urids { symap }; + Log log { &urids }; + int lastRequestedWidth = 0, lastRequestedHeight = 0; + std::vector options { { LV2_OPTIONS_INSTANCE, + 0, + symap.map (LV2_UI__scaleFactor), + sizeof (float), + symap.map (LV2_ATOM__Float), + &opts.initialScaleFactor }, + { LV2_OPTIONS_INSTANCE, + 0, + symap.map (LV2_PARAMETERS__sampleRate), + sizeof (float), + symap.map (LV2_ATOM__Float), + &opts.sampleRate }, + { LV2_OPTIONS_INSTANCE, 0, 0, 0, 0, nullptr } }; // The final entry must be nulled out + LV2UI_Resize resize { this, resizeCallback }; + LV2_URID_Map map = symap.getMapFeature(); + LV2_URID_Unmap unmap = symap.getUnmapFeature(); + LV2UI_Port_Map portMap { this, portIndexCallback }; + LV2UI_Touch touch { this, touchCallback }; + LV2_Extension_Data_Feature dataAccess; + std::map portIndices; + Features features { makeFeatures (&resize, + parent, + instance, + &dataAccess, + &map, + &unmap, + &portMap, + &touch, + options.data(), + log.getLogFeature()) }; + + JUCE_LEAK_DETECTOR (UiFeaturesData) +}; + +class UiInstanceWithSupports +{ +public: + UiInstanceWithSupports (World& world, + PhysicalResizeListener& resizeListener, + TouchListener& touchListener, + const UiDescriptor* descriptor, + const UiInstanceArgs& args, + LV2UI_Widget parent, + InstanceWithSupports& engineInstance, + const UiFeaturesDataOptions& opts) + : features (resizeListener, + touchListener, + engineInstance.instance.getHandle(), + parent, + engineInstance.instance.getExtensionDataCallback(), + engineInstance.ports, + *engineInstance.symap, + opts), + instance (world, + descriptor, + args, + features.getFeatureArray(), + engineInstance.uiToProcessor, + *engineInstance.symap, + resizeListener) + {} + + UiFeaturesData features; + UiInstance instance; + + JUCE_LEAK_DETECTOR (UiInstanceWithSupports) +}; + +struct RequiredFeatures +{ + explicit RequiredFeatures (OwningNodes nodes) + : values (std::move (nodes)) {} + + OwningNodes values; +}; + +struct OptionalFeatures +{ + explicit OptionalFeatures (OwningNodes nodes) + : values (std::move (nodes)) {} + + OwningNodes values; +}; + +template +static bool noneOf (Range&& range, Predicate&& pred) +{ + // Not a mistake, this is for ADL + using std::begin; + using std::end; + return std::none_of (begin (range), end (range), std::forward (pred)); +} + +class PeerChangedListener : private ComponentMovementWatcher +{ +public: + PeerChangedListener (Component& c, std::function peerChangedIn) + : ComponentMovementWatcher (&c), peerChanged (std::move (peerChangedIn)) + { + } + + void componentMovedOrResized (bool, bool) override {} + void componentPeerChanged() override { NullCheckedInvocation::invoke (peerChanged); } + void componentVisibilityChanged() override {} + + using ComponentMovementWatcher::componentVisibilityChanged; + using ComponentMovementWatcher::componentMovedOrResized; + +private: + std::function peerChanged; +}; + +struct ViewSizeListener : private ComponentMovementWatcher +{ + ViewSizeListener (Component& c, PhysicalResizeListener& l) + : ComponentMovementWatcher (&c), listener (l) + { + } + + void componentMovedOrResized (bool, bool wasResized) override + { + if (wasResized) + { + const auto physicalSize = Desktop::getInstance().getDisplays() + .logicalToPhysical (getComponent()->localAreaToGlobal (getComponent()->getLocalBounds())); + const auto width = physicalSize.getWidth(); + const auto height = physicalSize.getHeight(); + + if (width > 10 && height > 10) + listener.viewRequestedResizeInPhysicalPixels (width, height); + } + } + + void componentPeerChanged() override {} + void componentVisibilityChanged() override {} + + using ComponentMovementWatcher::componentVisibilityChanged; + using ComponentMovementWatcher::componentMovedOrResized; + + PhysicalResizeListener& listener; +}; + +class ConfiguredEditorComponent : public Component, + private PhysicalResizeListener +{ +public: + ConfiguredEditorComponent (World& world, + InstanceWithSupports& instance, + UiDescriptor& uiDescriptor, + LogicalResizeListener& resizeListenerIn, + TouchListener& touchListener, + const String& uiBundleUri, + const UiFeaturesDataOptions& opts) + : resizeListener (resizeListenerIn), + floatUrid (instance.symap->map (LV2_ATOM__Float)), + scaleFactorUrid (instance.symap->map (LV2_UI__scaleFactor)), + uiInstance (new UiInstanceWithSupports (world, + *this, + touchListener, + &uiDescriptor, + UiInstanceArgs{}.withBundlePath (uiBundleUri.toRawUTF8()) + .withPluginUri (instance.instance.getUri()), + viewComponent.getWidget(), + instance, + opts)), + resizeClient (uiInstance->instance.getExtensionData (world, LV2_UI__resize)), + optionsInterface (uiInstance->instance.getExtensionData (world, LV2_OPTIONS__interface)) + { + jassert (uiInstance != nullptr); + + setOpaque (true); + addAndMakeVisible (viewComponent); + + const auto boundsToUse = [&] + { + const auto requested = uiInstance->features.getLastRequestedBounds(); + + if (requested.getWidth() > 10 && requested.getHeight() > 10) + return requested; + + return uiInstance->instance.getDetectedViewBounds(); + }(); + + const auto scaled = lv2ToComponentRect (boundsToUse); + lastWidth = scaled.getWidth(); + lastHeight = scaled.getHeight(); + setSize (lastWidth, lastHeight); + } + + ~ConfiguredEditorComponent() override + { + viewComponent.prepareForDestruction(); + } + + void paint (Graphics& g) override + { + g.fillAll (Colours::black); + } + + void resized() override + { + viewComponent.setBounds (getLocalBounds()); + } + + void updateViewBounds() + { + // If the editor changed size as a result of a request from the client, + // we shouldn't send a notification back to the client. + if (uiInstance != nullptr) + { + if (resizeClient.valid && resizeClient.extension.ui_resize != nullptr) + { + const auto physicalSize = componentToLv2Rect (getLocalBounds()); + + resizeClient.extension.ui_resize (uiInstance->instance.getHandle(), + physicalSize.getWidth(), + physicalSize.getHeight()); + } + } + } + + void pushMessage (MessageHeader header, uint32_t size, const void* buffer) + { + if (uiInstance != nullptr) + uiInstance->instance.pushMessage (header, size, buffer); + } + + int idle() + { + if (uiInstance != nullptr) + return uiInstance->instance.idle(); + + return 0; + } + + void childBoundsChanged (Component* c) override + { + if (c == nullptr) + resizeToFitView(); + } + + void setUserScaleFactor (float userScale) { userScaleFactor = userScale; } + + void sendScaleFactorToPlugin() + { + const auto factor = getEffectiveScale(); + + const LV2_Options_Option options[] + { + { LV2_OPTIONS_INSTANCE, 0, scaleFactorUrid, sizeof (float), floatUrid, &factor }, + { {}, {}, {}, {}, {}, {} } + }; + + if (optionsInterface.valid) + optionsInterface.extension.set (uiInstance->instance.getHandle(), options); + + applyLastRequestedPhysicalSize(); + } + +private: + void viewRequestedResizeInPhysicalPixels (int width, int height) override + { + lastWidth = width; + lastHeight = height; + const auto logical = lv2ToComponentRect ({ width, height }); + resizeListener.viewRequestedResizeInLogicalPixels (logical.getWidth(), logical.getHeight()); + } + + void resizeToFitView() + { + viewComponent.fitToView(); + resizeListener.viewRequestedResizeInLogicalPixels (viewComponent.getWidth(), viewComponent.getHeight()); + } + + void applyLastRequestedPhysicalSize() + { + viewRequestedResizeInPhysicalPixels (lastWidth, lastHeight); + viewComponent.forceViewToSize(); + } + + /* Convert from the component's coordinate system to the hosted LV2's coordinate system. */ + Rectangle componentToLv2Rect (Rectangle r) const + { + return localAreaToGlobal (r) * nativeScaleFactor * getDesktopScaleFactor(); + } + + /* Convert from the hosted LV2's coordinate system to the component's coordinate system. */ + Rectangle lv2ToComponentRect (Rectangle vr) const + { + return getLocalArea (nullptr, vr / (nativeScaleFactor * getDesktopScaleFactor())); + } + + float getEffectiveScale() const { return nativeScaleFactor * userScaleFactor; } + + float getTopLevelDesktopScale() const + { + if (auto* comp = getTopLevelComponent()) + return comp->getDesktopScaleFactor(); + + return 1.0f; + } + + // If possible, try to keep platform-specific handing restricted to the implementation of + // ViewComponent. Keep the interface of ViewComponent consistent on all platforms. + #if JUCE_LINUX || JUCE_BSD + struct InnerHolder + { + struct Inner : public XEmbedComponent + { + Inner() : XEmbedComponent (true, true) + { + setOpaque (true); + addToDesktop (0); + } + }; + + Inner inner; + }; + + struct ViewComponent : public InnerHolder, + public XEmbedComponent + { + explicit ViewComponent (PhysicalResizeListener& l) + : XEmbedComponent ((unsigned long) inner.getPeer()->getNativeHandle(), true, false), + listener (inner, l) + { + setOpaque (true); + } + + ~ViewComponent() + { + removeClient(); + } + + void prepareForDestruction() + { + inner.removeClient(); + } + + LV2UI_Widget getWidget() { return lv2_shared::wordCast (inner.getHostWindowID()); } + void forceViewToSize() {} + void fitToView() {} + + ViewSizeListener listener; + }; + #elif JUCE_MAC + struct ViewComponent : public NSViewComponentWithParent + { + explicit ViewComponent (PhysicalResizeListener&) + : NSViewComponentWithParent (WantsNudge::no) {} + LV2UI_Widget getWidget() { return getView(); } + void forceViewToSize() {} + void fitToView() { resizeToFitView(); } + void prepareForDestruction() {} + }; + #elif JUCE_WINDOWS + struct ViewComponent : public HWNDComponent + { + explicit ViewComponent (PhysicalResizeListener&) + { + setOpaque (true); + inner.addToDesktop (0); + + if (auto* peer = inner.getPeer()) + setHWND (peer->getNativeHandle()); + } + + void paint (Graphics& g) override { g.fillAll (Colours::black); } + + LV2UI_Widget getWidget() { return getHWND(); } + + void forceViewToSize() { updateHWNDBounds(); } + void fitToView() { resizeToFit(); } + + void prepareForDestruction() {} + + private: + struct Inner : public Component + { + Inner() { setOpaque (true); } + void paint (Graphics& g) override { g.fillAll (Colours::black); } + }; + + Inner inner; + }; + #else + struct ViewComponent : public Component + { + explicit ViewComponent (PhysicalResizeListener&) {} + void* getWidget() { return nullptr; } + void forceViewToSize() {} + void fitToView() {} + void prepareForDestruction() {} + }; + #endif + + struct ScaleNotifierCallback + { + ConfiguredEditorComponent& window; + + void operator() (float platformScale) const + { + MessageManager::callAsync ([ref = Component::SafePointer (&window), platformScale] + { + if (auto* r = ref.getComponent()) + { + if (std::exchange (r->nativeScaleFactor, platformScale) == platformScale) + return; + + r->nativeScaleFactor = platformScale; + r->sendScaleFactorToPlugin(); + } + }); + } + }; + + LogicalResizeListener& resizeListener; + int lastWidth = 0, lastHeight = 0; + float nativeScaleFactor = 1.0f, userScaleFactor = 1.0f; + NativeScaleFactorNotifier scaleNotifier { this, ScaleNotifierCallback { *this } }; + ViewComponent viewComponent { *this }; + LV2_URID floatUrid, scaleFactorUrid; + std::unique_ptr uiInstance; + OptionalExtension resizeClient; + OptionalExtension optionsInterface; + PeerChangedListener peerListener { *this, [this] + { + applyLastRequestedPhysicalSize(); + } }; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ConfiguredEditorComponent) +}; + +//============================================================================== +/* Interface to receive notifications when the Editor changes. */ +struct EditorListener +{ + virtual ~EditorListener() = default; + + /* The editor needs to be recreated in a few different scenarios, such as: + - When the scale factor of the window changes, because we can only provide the + scale factor to the view during construction + - When the sample rate changes, because the processor also needs to be destroyed + and recreated in this case + + This function will be called whenever the editor has been recreated, in order to + allow the processor (or other listeners) to respond, e.g. by sending all of the + current port/parameter values to the view. + */ + virtual void viewCreated (UiEventListener* newListener) = 0; + + virtual void notifyEditorBeingDeleted() = 0; +}; + +/* We can't pass the InstanceWithSupports directly to the editor, because + it might be destroyed and reconstructed if the sample rate changes. +*/ +struct InstanceProvider +{ + virtual ~InstanceProvider() noexcept = default; + + virtual InstanceWithSupports* getInstanceWithSupports() const = 0; +}; + +class Editor : public AudioProcessorEditor, + public UiEventListener, + private LogicalResizeListener +{ +public: + Editor (World& worldIn, + AudioPluginInstance& p, + InstanceProvider& instanceProviderIn, + UiDescriptor& uiDescriptorIn, + TouchListener& touchListenerIn, + EditorListener& listenerIn, + const String& uiBundleUriIn, + RequiredFeatures requiredIn, + OptionalFeatures optionalIn) + : AudioProcessorEditor (p), + world (worldIn), + instanceProvider (&instanceProviderIn), + uiDescriptor (&uiDescriptorIn), + touchListener (&touchListenerIn), + listener (&listenerIn), + uiBundleUri (uiBundleUriIn), + required (std::move (requiredIn)), + optional (std::move (optionalIn)) + { + setResizable (isResizable (required, optional), false); + setSize (10, 10); + setOpaque (true); + + createView(); + + instanceProvider->getInstanceWithSupports()->processorToUi->addUi (*this); + } + + ~Editor() noexcept override + { + instanceProvider->getInstanceWithSupports()->processorToUi->removeUi (*this); + + listener->notifyEditorBeingDeleted(); + } + + void createView() + { + const auto initialScale = userScaleFactor * (float) [&] + { + if (auto* p = getPeer()) + return p->getPlatformScaleFactor(); + + return 1.0; + }(); + + const auto opts = UiFeaturesDataOptions{}.withInitialScaleFactor (initialScale) + .withSampleRate ((float) processor.getSampleRate()); + configuredEditor = nullptr; + configuredEditor = rawToUniquePtr (new ConfiguredEditorComponent (world, + *instanceProvider->getInstanceWithSupports(), + *uiDescriptor, + *this, + *touchListener, + uiBundleUri, + opts)); + parentHierarchyChanged(); + const auto initialSize = configuredEditor->getBounds(); + setSize (initialSize.getWidth(), initialSize.getHeight()); + + listener->viewCreated (this); + } + + void destroyView() + { + configuredEditor = nullptr; + } + + void paint (Graphics& g) override + { + g.fillAll (Colours::black); + } + + void resized() override + { + const ScopedValueSetter scope (resizeFromHost, true); + + if (auto* inner = configuredEditor.get()) + { + inner->setBounds (getLocalBounds()); + inner->updateViewBounds(); + } + } + + void parentHierarchyChanged() override + { + if (auto* comp = configuredEditor.get()) + { + if (isShowing()) + addAndMakeVisible (comp); + else + removeChildComponent (comp); + } + } + + void pushMessage (MessageHeader header, uint32_t size, const void* buffer) override + { + if (auto* comp = configuredEditor.get()) + comp->pushMessage (header, size, buffer); + } + + int idle() override + { + if (auto* comp = configuredEditor.get()) + return comp->idle(); + + return 0; + } + + void setScaleFactor (float newScale) override + { + userScaleFactor = newScale; + + if (configuredEditor != nullptr) + { + configuredEditor->setUserScaleFactor (userScaleFactor); + configuredEditor->sendScaleFactorToPlugin(); + } + } + +private: + bool isResizable (const RequiredFeatures& requiredFeatures, + const OptionalFeatures& optionalFeatures) const + { + const auto uriMatches = [] (const LilvNode* node) + { + const auto* uri = lilv_node_as_uri (node); + return std::strcmp (uri, LV2_UI__noUserResize) == 0; + }; + + return uiDescriptor->hasExtensionData (world, LV2_UI__resize) + && ! uiDescriptor->hasExtensionData (world, LV2_UI__noUserResize) + && noneOf (requiredFeatures.values, uriMatches) + && noneOf (optionalFeatures.values, uriMatches); + } + + bool isScalable() const + { + return uiDescriptor->hasExtensionData (world, LV2_OPTIONS__interface); + } + + void viewRequestedResizeInLogicalPixels (int width, int height) override + { + if (! resizeFromHost) + setSize (width, height); + } + + World& world; + InstanceProvider* instanceProvider; + UiDescriptor* uiDescriptor; + TouchListener* touchListener; + EditorListener* listener; + String uiBundleUri; + const RequiredFeatures required; + const OptionalFeatures optional; + std::unique_ptr configuredEditor; + float userScaleFactor = 1.0f; + bool resizeFromHost = false; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Editor) +}; + +class Uis +{ +public: + explicit Uis (const LilvPlugin* plugin) noexcept : uis (lilv_plugin_get_uis (plugin)) {} + + unsigned size() const noexcept { return lilv_uis_size (uis.get()); } + + UisIterator begin() const noexcept { return UisIterator { uis.get() }; } + UisIterator end() const noexcept { return UisIterator{}; } + + const LilvUI* getByUri (const NodeUri& uri) const + { + return lilv_uis_get_by_uri (uis.get(), uri.get()); + } + +private: + struct Free + { + void operator() (LilvUIs* ptr) const noexcept { lilv_uis_free (ptr); } + }; + + std::unique_ptr uis; +}; + +//============================================================================== +class PluginClass +{ +public: + explicit PluginClass (const LilvPluginClass* c) : pluginClass (c) {} + + NodeUri getParentUri() const noexcept { return NodeUri::copy (lilv_plugin_class_get_parent_uri (pluginClass)); } + NodeUri getUri() const noexcept { return NodeUri::copy (lilv_plugin_class_get_uri (pluginClass)); } + NodeString getLabel() const noexcept { return NodeString::copy (lilv_plugin_class_get_label (pluginClass)); } + OwningPluginClasses getChildren() const noexcept + { + return OwningPluginClasses { OwningPluginClasses::type { lilv_plugin_class_get_children (pluginClass) } }; + } + +private: + const LilvPluginClass* pluginClass = nullptr; +}; + +using FloatWriter = void (*) (LV2_Atom_Forge*, float); + +struct ParameterWriterUrids +{ + LV2_URID mLV2_PATCH__Set; + LV2_URID mLV2_PATCH__property; + LV2_URID mLV2_PATCH__value; + LV2_URID mLV2_ATOM__eventTransfer; +}; + +struct MessageHeaderAndSize +{ + MessageHeader header; + uint32_t size; +}; + +class ParameterWriter +{ +public: + ParameterWriter (ControlPort* p) + : data (PortBacking { p }), kind (Kind::port) {} + + ParameterWriter (FloatWriter write, LV2_URID urid, uint32_t controlPortIndex) + : data (PatchBacking { write, urid, controlPortIndex }), kind (Kind::patch) {} + + void writeToProcessor (const ParameterWriterUrids urids, LV2_Atom_Forge* forge, float value) const + { + switch (kind) + { + case Kind::patch: + { + if (forge != nullptr) + { + lv2_atom_forge_frame_time (forge, 0); + writeSetToForge (urids, *forge, value); + } + + break; + } + + case Kind::port: + data.port.port->currentValue = value; + break; + } + } + + MessageHeaderAndSize writeToUi (const ParameterWriterUrids urids, LV2_Atom_Forge& forge, float value) const + { + const auto getWrittenBytes = [&]() -> uint32_t + { + if (const auto* atom = convertToAtomPtr (forge.buf, forge.size)) + return (uint32_t) (atom->size + sizeof (LV2_Atom)); + + jassertfalse; + return 0; + }; + + switch (kind) + { + case Kind::patch: + writeSetToForge (urids, forge, value); + return { { data.patch.controlPortIndex, urids.mLV2_ATOM__eventTransfer }, getWrittenBytes() }; + + case Kind::port: + lv2_atom_forge_raw (&forge, &value, sizeof (value)); + return { { data.port.port->header.index, 0 }, sizeof (value) }; + } + + return { { 0, 0 }, 0 }; + } + + const LV2_URID* getUrid() const + { + return kind == Kind::patch ? &data.patch.urid : nullptr; + } + + const uint32_t* getPortIndex() const + { + return kind == Kind::port ? &data.port.port->header.index : nullptr; + } + +private: + void writeSetToForge (const ParameterWriterUrids urids, LV2_Atom_Forge& forge, float value) const + { + lv2_shared::ObjectFrame object { &forge, (uint32_t) 0, urids.mLV2_PATCH__Set }; + + lv2_atom_forge_key (&forge, urids.mLV2_PATCH__property); + lv2_atom_forge_urid (&forge, data.patch.urid); + + lv2_atom_forge_key (&forge, urids.mLV2_PATCH__value); + data.patch.write (&forge, value); + } + + struct PortBacking + { + ControlPort* port; + }; + + struct PatchBacking + { + FloatWriter write; + LV2_URID urid; + uint32_t controlPortIndex; + }; + + union Data + { + static_assert (std::is_trivial::value, "PortBacking must be trivial"); + static_assert (std::is_trivial::value, "PatchBacking must be trivial"); + + explicit Data (PortBacking p) : port (p) {} + explicit Data (PatchBacking p) : patch (p) {} + + PortBacking port; + PatchBacking patch; + }; + + enum class Kind { port, patch }; + + Data data; + Kind kind; + + JUCE_LEAK_DETECTOR (ParameterWriter) +}; + +static String lilvNodeToUriString (const LilvNode* node) +{ + return node != nullptr ? String::fromUTF8 (lilv_node_as_uri (node)) : String{}; +} + +static String lilvNodeToString (const LilvNode* node) +{ + return node != nullptr ? String::fromUTF8 (lilv_node_as_string (node)) : String{}; +} + +/* This holds all of the discovered groups in the plugin's manifest, and allows us to + add parameters to these groups as we discover them. + + Once all the parameters have been added with addParameter(), you can call + getTree() to convert this class' contents (which are optimised for fast lookup + and modification) into a plain old AudioProcessorParameterGroup. +*/ +class IntermediateParameterTree +{ +public: + explicit IntermediateParameterTree (World& worldIn) + : world (worldIn) + { + const auto groups = getGroups (world); + const auto symbolNode = world.newUri (LV2_CORE__symbol); + const auto nameNode = world.newUri (LV2_CORE__name); + + for (const auto& group : groups) + { + const auto symbol = lilvNodeToString (world.get (group.get(), symbolNode.get(), nullptr).get()); + const auto name = lilvNodeToString (world.get (group.get(), nameNode .get(), nullptr).get()); + owning.emplace (lilvNodeToUriString (group.get()), + std::make_unique (symbol, name, "|")); + } + } + + void addParameter (StringRef group, std::unique_ptr param) + { + if (param == nullptr) + return; + + const auto it = owning.find (group); + (it != owning.cend() ? *it->second : topLevel).addChild (std::move (param)); + } + + static AudioProcessorParameterGroup getTree (IntermediateParameterTree tree) + { + std::map nonowning; + + for (const auto& pair : tree.owning) + nonowning.emplace (pair.first, pair.second.get()); + + const auto groups = getGroups (tree.world); + const auto subgroupNode = tree.world.newUri (LV2_PORT_GROUPS__subGroupOf); + + for (const auto& group : groups) + { + const auto innerIt = tree.owning.find (lilvNodeToUriString (group.get())); + + if (innerIt == tree.owning.cend()) + continue; + + const auto outer = lilvNodeToUriString (tree.world.get (group.get(), subgroupNode.get(), nullptr).get()); + const auto outerIt = nonowning.find (outer); + + if (outerIt != nonowning.cend() && containsParameters (outerIt->second)) + outerIt->second->addChild (std::move (innerIt->second)); + } + + for (auto& subgroup : tree.owning) + if (containsParameters (subgroup.second.get())) + tree.topLevel.addChild (std::move (subgroup.second)); + + return std::move (tree.topLevel); + } + +private: + static std::vector getGroups (World& world) + { + std::vector names; + + for (auto* uri : { LV2_PORT_GROUPS__Group, LV2_PORT_GROUPS__InputGroup, LV2_PORT_GROUPS__OutputGroup }) + for (const auto* group : world.findNodes (nullptr, world.newUri (LILV_NS_RDF "type").get(), world.newUri (uri).get())) + names.push_back (OwningNode { lilv_node_duplicate (group) }); + + return names; + } + + static bool containsParameters (const AudioProcessorParameterGroup* g) + { + if (g == nullptr) + return false; + + for (auto* node : *g) + { + if (node->getParameter() != nullptr) + return true; + + if (auto* group = node->getGroup()) + if (containsParameters (group)) + return true; + } + + return false; + } + + World& world; + AudioProcessorParameterGroup topLevel; + std::map> owning; + + JUCE_LEAK_DETECTOR (IntermediateParameterTree) +}; + +struct BypassParameter : public LV2Parameter +{ + BypassParameter (const ParameterInfo& parameterInfo, ParameterValuesAndFlags& cacheIn) + : LV2Parameter ("Bypass", parameterInfo, cacheIn) {} + + float getValue() const noexcept override + { + return LV2Parameter::getValue() > 0.0f ? 0.0f : 1.0f; + } + + void setValue (float newValue) override + { + LV2Parameter::setValue (newValue > 0.0f ? 0.0f : 1.0f); + } + + float getDefaultValue() const override { return 0.0f; } + bool isAutomatable() const override { return true; } + bool isDiscrete() const override { return true; } + bool isBoolean() const override { return true; } + int getNumSteps() const override { return 2; } + StringArray getAllValueStrings() const override { return { TRANS ("Off"), TRANS ("On") }; } +}; + +struct ParameterData +{ + ParameterInfo info; + ParameterWriter writer; + String group; + String name; +}; + +template +static auto getPortPointers (SimpleSpan range) +{ + using std::begin; + std::vector result; + + for (auto& port : range) + { + result.resize (std::max ((size_t) (port.header.index + 1), result.size()), nullptr); + result[port.header.index] = &port; + } + + return result; +} + +static std::unique_ptr makeParameter (const uint32_t* enabledPortIndex, + const ParameterData& data, + ParameterValuesAndFlags& cache) +{ + // The bypass parameter is a bit special, in that JUCE expects the parameter to be a bypass + // (where 0 is active, 1 is inactive), but the LV2 version is called "enabled" and has + // different semantics (0 is inactive, 1 is active). + // To work around this, we wrap the LV2 parameter in a special inverting JUCE parameter. + + if (enabledPortIndex != nullptr) + if (auto* index = data.writer.getPortIndex()) + if (*index == *enabledPortIndex) + return std::make_unique (data.info, cache); + + return std::make_unique (data.name, data.info, cache); +} + +class ControlPortAccelerationStructure +{ +public: + ControlPortAccelerationStructure (SimpleSpan controlPorts) + : indexedControlPorts (getPortPointers (controlPorts)) + { + for (const auto& port : controlPorts) + if (port.header.direction == Port::Direction::output) + outputPorts.push_back (&port); + } + + const std::vector& getIndexedControlPorts() { return indexedControlPorts; } + + ControlPort* getControlPortByIndex (uint32_t index) const + { + if (isPositiveAndBelow (index, indexedControlPorts.size())) + return indexedControlPorts[index]; + + return nullptr; + } + + void writeOutputPorts (UiEventListener* target, MessageBufferInterface& uiMessages) const + { + if (target == nullptr) + return; + + for (const auto* port : outputPorts) + { + const auto chars = toChars (port->currentValue); + uiMessages.pushMessage ({ target, { port->header.index, 0 } }, (uint32_t) chars.size(), chars.data()); + } + } + +private: + std::vector indexedControlPorts; + std::vector outputPorts; +}; + +class ParameterValueCache +{ +public: + /* This takes some information about all the parameters that this plugin wants to expose, + then builds and installs the actual parameters. + */ + ParameterValueCache (AudioPluginInstance& processor, + World& world, + LV2_URID_Map mapFeature, + const std::vector& data, + ControlPort* enabledPort) + : uiForge (mapFeature), + cache (data.size()) + { + // Parameter indices are unknown until we add the parameters to the processor. + // This map lets us keep track of which ParameterWriter corresponds to each parameter. + // After the parameters have been added to the processor, we'll convert this + // to a simple vector that stores each ParameterWriter at the same index + // as the corresponding parameter. + std::map writerForParameter; + + IntermediateParameterTree tree { world }; + + const auto* enabledPortIndex = enabledPort != nullptr ? &enabledPort->header.index + : nullptr; + + for (const auto& item : data) + { + auto param = makeParameter (enabledPortIndex, item, cache); + + if (auto* urid = item.writer.getUrid()) + urids.emplace (*urid, param.get()); + + if (auto* index = item.writer.getPortIndex()) + portIndices.emplace (*index, param.get()); + + writerForParameter.emplace (param.get(), item.writer); + + tree.addParameter (item.group, std::move (param)); + } + + processor.setHostedParameterTree (IntermediateParameterTree::getTree (std::move (tree))); + + // Build the vector of writers + writers.reserve (data.size()); + + for (auto* param : processor.getParameters()) + { + const auto it = writerForParameter.find (param); + jassert (it != writerForParameter.end()); + writers.push_back (it->second); // The writer must exist at the same index as the parameter! + } + + // Duplicate port indices or urids? + jassert (processor.getParameters().size() == (int) (urids.size() + portIndices.size())); + + // Set parameters to default values + const auto setToDefault = [] (auto& container) + { + for (auto& item : container) + item.second->setDenormalisedValueWithoutTriggeringUpdate (item.second->getDenormalisedDefaultValue()); + }; + + setToDefault (urids); + setToDefault (portIndices); + } + + void postChangedParametersToProcessor (const ParameterWriterUrids helperUrids, + LV2_Atom_Forge* forge) + { + cache.ifProcessorValuesChanged ([&] (size_t index, float value) + { + writers[index].writeToProcessor (helperUrids, forge, value); + }); + } + + void postChangedParametersToUi (UiEventListener* target, + const ParameterWriterUrids helperUrids, + MessageBufferInterface& uiMessages) + { + if (target == nullptr) + return; + + cache.ifUiValuesChanged ([&] (size_t index, float value) + { + writeParameterToUi (target, writers[index], value, helperUrids, uiMessages); + }); + } + + void postAllParametersToUi (UiEventListener* target, + const ParameterWriterUrids helperUrids, + MessageBufferInterface& uiMessages) + { + if (target == nullptr) + return; + + const auto numWriters = writers.size(); + + for (size_t i = 0; i < numWriters; ++i) + writeParameterToUi (target, writers[i], cache.get (i), helperUrids, uiMessages); + + cache.clearUiFlags(); + } + + LV2Parameter* getParamByUrid (LV2_URID urid) const + { + const auto it = urids.find (urid); + return it != urids.end() ? it->second : nullptr; + } + + LV2Parameter* getParamByPortIndex (uint32_t portIndex) const + { + const auto it = portIndices.find (portIndex); + return it != portIndices.end() ? it->second : nullptr; + } + + void updateFromControlPorts (const ControlPortAccelerationStructure& ports) const + { + for (const auto& pair : portIndices) + if (auto* port = ports.getControlPortByIndex (pair.first)) + if (auto* param = pair.second) + param->setDenormalisedValueWithoutTriggeringUpdate (port->currentValue); + } + +private: + void writeParameterToUi (UiEventListener* target, + const ParameterWriter& writer, + float value, + const ParameterWriterUrids helperUrids, + MessageBufferInterface& uiMessages) + { + JUCE_ASSERT_MESSAGE_MANAGER_IS_LOCKED + + uiForge.setBuffer (forgeStorage.data(), forgeStorage.size()); + const auto messageHeader = writer.writeToUi (helperUrids, *uiForge.get(), value); + uiMessages.pushMessage ({ target, messageHeader.header }, messageHeader.size, forgeStorage.data()); + } + + SingleSizeAlignedStorage<8> forgeStorage { 256 }; + lv2_shared::AtomForge uiForge; + + ParameterValuesAndFlags cache; + std::vector writers; + std::map urids; + std::map portIndices; + + JUCE_LEAK_DETECTOR (ParameterValueCache) +}; + +struct PatchSetCallback +{ + explicit PatchSetCallback (ParameterValueCache& x) : cache (x) {} + + // If we receive a patch set from the processor, we can assume that the UI will + // put itself into the correct state when it receives the message. + void setParameter (LV2_URID property, float value) const noexcept + { + if (auto* param = cache.getParamByUrid (property)) + param->setDenormalisedValueWithoutTriggeringUpdate (value); + } + + // TODO gesture support will probably go here, once it's part of the LV2 spec + + ParameterValueCache& cache; +}; + +struct SupportedParameter +{ + ParameterInfo info; + bool supported; + LV2_URID type; +}; + +static SupportedParameter getInfoForPatchParameter (World& worldIn, + const UsefulUrids& urids, + const NodeUri& property) +{ + const auto rangeUri = worldIn.newUri (LILV_NS_RDFS "range"); + const auto type = worldIn.get (property.get(), rangeUri.get(), nullptr); + + if (type == nullptr) + return { {}, false, {} }; + + const auto typeUrid = urids.symap.map (lilv_node_as_uri (type.get())); + + const LV2_URID types[] { urids.mLV2_ATOM__Int, + urids.mLV2_ATOM__Long, + urids.mLV2_ATOM__Float, + urids.mLV2_ATOM__Double, + urids.mLV2_ATOM__Bool }; + + if (std::find (std::begin (types), std::end (types), typeUrid) == std::end (types)) + return { {}, false, {} }; + + const auto getValue = [&] (const char* uri, float fallback) + { + return Port::getFloatValue (worldIn.get (property.get(), worldIn.newUri (uri).get(), nullptr).get(), fallback); + }; + + const auto hasPortProperty = [&] (const char* uri) + { + return worldIn.ask (property.get(), + worldIn.newUri (LV2_CORE__portProperty).get(), + worldIn.newUri (uri).get()); + }; + + const auto metadataScalePoints = worldIn.findNodes (property.get(), + worldIn.newUri (LV2_CORE__scalePoint).get(), + nullptr); + SafeSortedSet parsedScalePoints; + + for (const auto* scalePoint : metadataScalePoints) + { + const auto label = worldIn.get (scalePoint, worldIn.newUri (LILV_NS_RDFS "label").get(), nullptr); + const auto value = worldIn.get (scalePoint, worldIn.newUri (LILV_NS_RDF "value").get(), nullptr); + + if (label != nullptr && value != nullptr) + parsedScalePoints.insert ({ lilv_node_as_string (label.get()), lilv_node_as_float (value.get()) }); + else + jassertfalse; // A ScalePoint must have both a rdfs:label and a rdf:value + } + + return { { std::move (parsedScalePoints), + "des:" + String::fromUTF8 (property.getTyped()), + getValue (LV2_CORE__default, 0.0f), + getValue (LV2_CORE__minimum, 0.0f), + getValue (LV2_CORE__maximum, 1.0f), + typeUrid == urids.mLV2_ATOM__Bool || hasPortProperty (LV2_CORE__toggled), + typeUrid == urids.mLV2_ATOM__Int || typeUrid == urids.mLV2_ATOM__Long, + hasPortProperty (LV2_CORE__enumeration) }, + true, + typeUrid }; +} + +static std::vector getPortBasedParameters (World& world, + const Plugin& plugin, + std::initializer_list hiddenPorts, + SimpleSpan controlPorts) +{ + std::vector result; + + const auto groupNode = world.newUri (LV2_PORT_GROUPS__group); + + for (auto& port : controlPorts) + { + if (port.header.direction != Port::Direction::input) + continue; + + if (std::find (std::begin (hiddenPorts), std::end (hiddenPorts), &port) != std::end (hiddenPorts)) + continue; + + const auto lilvPort = plugin.getPortByIndex (port.header.index); + const auto group = lilvNodeToUriString (lilvPort.get (groupNode.get()).get()); + + result.push_back ({ port.info, ParameterWriter { &port }, group, port.header.name }); + } + + return result; +} + +static void writeFloatToForge (LV2_Atom_Forge* forge, float value) { lv2_atom_forge_float (forge, value); } +static void writeDoubleToForge (LV2_Atom_Forge* forge, float value) { lv2_atom_forge_double (forge, (double) value); } +static void writeIntToForge (LV2_Atom_Forge* forge, float value) { lv2_atom_forge_int (forge, (int32_t) value); } +static void writeLongToForge (LV2_Atom_Forge* forge, float value) { lv2_atom_forge_long (forge, (int64_t) value); } +static void writeBoolToForge (LV2_Atom_Forge* forge, float value) { lv2_atom_forge_bool (forge, value > 0.5f); } + +static std::vector getPatchBasedParameters (World& world, + const Plugin& plugin, + const UsefulUrids& urids, + uint32_t controlPortIndex) +{ + // This returns our writable parameters in an indeterminate order. + // We want our parameters to be in a consistent order between runs, so + // we'll create all the parameters in one pass, sort them, and then + // add them in a separate pass. + const auto writableControls = world.findNodes (plugin.getUri().get(), + world.newUri (LV2_PATCH__writable).get(), + nullptr); + + struct DataAndUri + { + ParameterData data; + String uri; + }; + + std::vector resultWithUris; + + const auto groupNode = world.newUri (LV2_PORT_GROUPS__group); + + for (auto* ctrl : writableControls) + { + const auto labelString = [&] + { + if (auto label = world.get (ctrl, world.newUri (LILV_NS_RDFS "label").get(), nullptr)) + return String::fromUTF8 (lilv_node_as_string (label.get())); + + return String(); + }(); + + const auto uri = String::fromUTF8 (lilv_node_as_uri (ctrl)); + const auto info = getInfoForPatchParameter (world, urids, world.newUri (uri.toRawUTF8())); + + if (! info.supported) + continue; + + const auto write = [&] + { + if (info.type == urids.mLV2_ATOM__Int) + return writeIntToForge; + + if (info.type == urids.mLV2_ATOM__Long) + return writeLongToForge; + + if (info.type == urids.mLV2_ATOM__Double) + return writeDoubleToForge; + + if (info.type == urids.mLV2_ATOM__Bool) + return writeBoolToForge; + + return writeFloatToForge; + }(); + + const auto group = lilvNodeToUriString (world.get (ctrl, groupNode.get(), nullptr).get()); + resultWithUris.push_back ({ { info.info, + ParameterWriter { write, urids.symap.map (uri.toRawUTF8()), controlPortIndex }, + group, + labelString }, + uri }); + } + + const auto compareUris = [] (const DataAndUri& a, const DataAndUri& b) { return a.uri < b.uri; }; + std::sort (resultWithUris.begin(), resultWithUris.end(), compareUris); + + std::vector result; + + for (const auto& item : resultWithUris) + result.push_back (item.data); + + return result; +} + +static std::vector getJuceParameterInfo (World& world, + const Plugin& plugin, + const UsefulUrids& urids, + std::initializer_list hiddenPorts, + SimpleSpan controlPorts, + uint32_t controlPortIndex) +{ + auto port = getPortBasedParameters (world, plugin, hiddenPorts, controlPorts); + auto patch = getPatchBasedParameters (world, plugin, urids, controlPortIndex); + + port.insert (port.end(), patch.begin(), patch.end()); + return port; +} + +// Rather than sprinkle #ifdef everywhere, risking the wrath of the entire C++ +// standards committee, we put all of our conditionally-compiled stuff into a +// specialised template that compiles away to nothing when editor support is +// not available. +#if JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX || JUCE_BSD + constexpr auto editorFunctionalityEnabled = true; +#else + constexpr auto editorFunctionalityEnabled = false; +#endif + +template class OptionalEditor; + +template <> +class OptionalEditor +{ +public: + OptionalEditor (String uiBundleUriIn, UiDescriptor uiDescriptorIn, std::function timerCallback) + : uiBundleUri (std::move (uiBundleUriIn)), + uiDescriptor (std::move (uiDescriptorIn)), + changedParameterFlusher (std::move (timerCallback)) {} + + void createView() + { + if (auto* editor = editorPointer.getComponent()) + editor->createView(); + } + + void destroyView() + { + if (auto* editor = editorPointer.getComponent()) + editor->destroyView(); + } + + std::unique_ptr createEditor (World& world, + AudioPluginInstance& p, + InstanceProvider& instanceProviderIn, + TouchListener& touchListenerIn, + EditorListener& listenerIn) + { + if (! hasEditor()) + return nullptr; + + const auto queryFeatures = [this, &world] (const char* kind) + { + return world.findNodes (world.newUri (uiDescriptor.get()->URI).get(), + world.newUri (kind).get(), + nullptr); + }; + + auto newEditor = std::make_unique (world, + p, + instanceProviderIn, + uiDescriptor, + touchListenerIn, + listenerIn, + uiBundleUri, + RequiredFeatures { queryFeatures (LV2_CORE__requiredFeature) }, + OptionalFeatures { queryFeatures (LV2_CORE__optionalFeature) }); + + editorPointer = newEditor.get(); + + changedParameterFlusher.startTimerHz (60); + + return newEditor; + } + + bool hasEditor() const + { + return uiDescriptor.get() != nullptr; + } + + void prepareToDestroyEditor() + { + changedParameterFlusher.stopTimer(); + } + +private: + Component::SafePointer editorPointer = nullptr; + String uiBundleUri; + UiDescriptor uiDescriptor; + LambdaTimer changedParameterFlusher; +}; + +template <> +class OptionalEditor +{ +public: + OptionalEditor (String, UiDescriptor, std::function) {} + + void createView() {} + void destroyView() {} + + std::unique_ptr createEditor(World&, + AudioPluginInstance&, + InstanceProvider&, + TouchListener&, + EditorListener&) + { + return nullptr; + } + + bool hasEditor() const { return false; } + void prepareToDestroyEditor() {} +}; + +//============================================================================== +class LV2AudioPluginInstance : public AudioPluginInstance, + private TouchListener, + private EditorListener, + private InstanceProvider +{ +public: + LV2AudioPluginInstance (std::shared_ptr worldIn, + const Plugin& pluginIn, + const UsefulUris& uris, + std::unique_ptr&& in, + PluginDescription&& desc, + std::vector knownPresetUris, + PluginState stateToApply, + String uiBundleUriIn, + UiDescriptor uiDescriptorIn) + : LV2AudioPluginInstance (worldIn, + pluginIn, + std::move (in), + std::move (desc), + std::move (knownPresetUris), + std::move (stateToApply), + std::move (uiBundleUriIn), + std::move (uiDescriptorIn), + getParsedBuses (*worldIn, pluginIn, uris)) {} + + void fillInPluginDescription (PluginDescription& d) const override { d = description; } + + const String getName() const override { return description.name; } + + void prepareToPlay (double sampleRate, int numSamples) override + { + // In REAPER, changing the sample rate will deactivate the plugin, + // save its state, destroy it, create a new instance, restore the + // state, and then activate the new instance. + // We'll do the same, because there's no way to retroactively change the + // plugin sample rate. + // This is a bit expensive, so try to avoid changing the sample rate too + // frequently. + + // In addition to the above, we also need to destroy the custom view, + // and recreate it after creating the new plugin instance. + // Ideally this should all happen in the same Component. + + deactivate(); + destroyView(); + + MemoryBlock mb; + getStateInformation (mb); + + instance = std::make_unique (*world, + std::move (instance->symap), + plugin, + std::move (instance->ports), + numSamples, + sampleRate); + + setStateInformation (mb.getData(), (int) mb.getSize()); + + jassert (numSamples == instance->features.getMaxBlockSize()); + + optionalEditor.createView(); + activate(); + } + + void releaseResources() override { deactivate(); } + + using AudioPluginInstance::processBlock; + using AudioPluginInstance::processBlockBypassed; + + void processBlock (AudioBuffer& audio, MidiBuffer& midi) override + { + processBlockImpl (audio, midi); + } + + void processBlockBypassed (AudioBuffer& audio, MidiBuffer& midi) override + { + if (bypassParam != nullptr) + processBlockImpl (audio, midi); + else + AudioPluginInstance::processBlockBypassed (audio, midi); + } + + double getTailLengthSeconds() const override { return {}; } // TODO + + bool acceptsMidi() const override + { + if (instance == nullptr) + return false; + + auto ports = instance->ports.getAtomPorts(); + + return std::any_of (ports.begin(), ports.end(), [&] (const AtomPort& a) + { + if (a.header.direction != Port::Direction::input) + return false; + + return portAtIndexSupportsMidi (a.header.index); + }); + } + + bool producesMidi() const override + { + if (instance == nullptr) + return false; + + auto ports = instance->ports.getAtomPorts(); + + return std::any_of (ports.begin(), ports.end(), [&] (const AtomPort& a) + { + if (a.header.direction != Port::Direction::output) + return false; + + return portAtIndexSupportsMidi (a.header.index); + }); + } + + AudioProcessorEditor* createEditor() override + { + return optionalEditor.createEditor (*world, *this, *this, *this, *this).release(); + } + + bool hasEditor() const override + { + return optionalEditor.hasEditor(); + } + + int getNumPrograms() override { return (int) presetUris.size(); } + + int getCurrentProgram() override + { + return lastAppliedPreset; + } + + void setCurrentProgram (int newProgram) override + { + JUCE_ASSERT_MESSAGE_THREAD; + + if (! isPositiveAndBelow (newProgram, presetUris.size())) + return; + + lastAppliedPreset = newProgram; + applyStateWithAppropriateLocking (loadStateWithUri (presetUris[(size_t) newProgram])); + } + + const String getProgramName (int program) override + { + JUCE_ASSERT_MESSAGE_THREAD; + + if (isPositiveAndBelow (program, presetUris.size())) + return loadStateWithUri (presetUris[(size_t) program]).getLabel(); + + return {}; + } + + void changeProgramName (int program, const String& label) override + { + JUCE_ASSERT_MESSAGE_THREAD; + + if (isPositiveAndBelow (program, presetUris.size())) + loadStateWithUri (presetUris[(size_t) program]).setLabel (label); + } + + void getStateInformation (MemoryBlock& block) override + { + JUCE_ASSERT_MESSAGE_THREAD; + + // TODO where should the state URI come from? + PortMap portStateManager (instance->ports); + const auto stateUri = String::fromUTF8 (instance->instance.getUri()) + "/savedState"; + auto mapFeature = instance->symap->getMapFeature(); + auto unmapFeature = instance->symap->getUnmapFeature(); + const auto state = PluginState::SaveRestoreHandle (*instance, portStateManager).save (plugin.get(), &mapFeature); + const auto string = state.toString (world->get(), &mapFeature, &unmapFeature, stateUri.toRawUTF8()); + block.replaceAll (string.data(), string.size()); + } + + void setStateInformation (const void* data, int size) override + { + JUCE_ASSERT_MESSAGE_THREAD; + + if (data == nullptr || size == 0) + return; + + auto begin = static_cast (data); + std::vector copy (begin, begin + size); + copy.push_back (0); + auto mapFeature = instance->symap->getMapFeature(); + applyStateWithAppropriateLocking (PluginState { lilv_state_new_from_string (world->get(), &mapFeature, copy.data()) }); + } + + void setNonRealtime (bool newValue) noexcept override + { + JUCE_ASSERT_MESSAGE_THREAD; + + AudioPluginInstance::setNonRealtime (newValue); + instance->features.setNonRealtime (newValue); + } + + bool isBusesLayoutSupported (const BusesLayout& layout) const override + { + for (const auto& pair : { std::make_tuple (&layout.inputBuses, &declaredBusLayout.inputs), + std::make_tuple (&layout.outputBuses, &declaredBusLayout.outputs) }) + { + const auto& requested = *std::get<0> (pair); + const auto& allowed = *std::get<1> (pair); + + if ((size_t) requested.size() != allowed.size()) + return false; + + for (size_t busIndex = 0; busIndex < allowed.size(); ++busIndex) + { + const auto& requestedBus = requested[(int) busIndex]; + const auto& allowedBus = allowed[busIndex]; + + if (! allowedBus.isCompatible (requestedBus)) + return false; + } + } + + return true; + } + + void processorLayoutsChanged() override { ioMap = lv2_shared::PortToAudioBufferMap { getBusesLayout(), declaredBusLayout }; } + + AudioProcessorParameter* getBypassParameter() const override { return bypassParam; } + +private: + LV2AudioPluginInstance (std::shared_ptr worldIn, + const Plugin& pluginIn, + std::unique_ptr&& in, + PluginDescription&& desc, + std::vector knownPresetUris, + PluginState stateToApply, + String uiBundleUriIn, + UiDescriptor uiDescriptorIn, + const lv2_shared::ParsedBuses& parsedBuses) + : AudioPluginInstance (getBusesProperties (parsedBuses, *worldIn)), + declaredBusLayout (parsedBuses), + world (std::move (worldIn)), + plugin (pluginIn), + description (std::move (desc)), + presetUris (std::move (knownPresetUris)), + instance (std::move (in)), + optionalEditor (std::move (uiBundleUriIn), + std::move (uiDescriptorIn), + [this] { postChangedParametersToUi(); }) + { + applyStateWithAppropriateLocking (std::move (stateToApply)); + } + + // This does *not* destroy the editor component. + // If we destroy the processor, the view must also be destroyed to avoid dangling pointers. + // However, JUCE clients expect their editors to remain valid for the duration of the + // AudioProcessor's lifetime. + // As a compromise, this will create a new LV2 view into an existing editor component. + void destroyView() + { + optionalEditor.destroyView(); + } + + void activate() + { + if (! active) + instance->instance.activate(); + + active = true; + } + + void deactivate() + { + if (active) + instance->instance.deactivate(); + + active = false; + } + + void processBlockImpl (AudioBuffer& audio, MidiBuffer& midi) + { + preparePortsForRun (audio, midi); + + instance->instance.run (static_cast (audio.getNumSamples())); + instance->features.processResponses(); + + processPortsAfterRun (midi); + } + + bool portAtIndexSupportsMidi (uint32_t index) const noexcept + { + const auto port = plugin.getPortByIndex (index); + + if (! port.isValid()) + return false; + + return port.supportsEvent (world->newUri (LV2_MIDI__MidiEvent).get()); + } + + void controlGrabbed (uint32_t port, bool grabbed) override + { + if (auto* param = parameterValues.getParamByPortIndex (port)) + { + if (grabbed) + param->beginChangeGesture(); + else + param->endChangeGesture(); + } + } + + void viewCreated (UiEventListener* newListener) override + { + uiEventListener = newListener; + postAllParametersToUi(); + } + + ParameterWriterUrids getParameterWriterUrids() const + { + return { instance->urids.mLV2_PATCH__Set, + instance->urids.mLV2_PATCH__property, + instance->urids.mLV2_PATCH__value, + instance->urids.mLV2_ATOM__eventTransfer }; + } + + void postAllParametersToUi() + { + parameterValues.postAllParametersToUi (uiEventListener, getParameterWriterUrids(), *instance->processorToUi); + controlPortStructure.writeOutputPorts (uiEventListener, *instance->processorToUi); + } + + void postChangedParametersToUi() + { + parameterValues.postChangedParametersToUi (uiEventListener, getParameterWriterUrids(), *instance->processorToUi); + controlPortStructure.writeOutputPorts (uiEventListener, *instance->processorToUi); + } + + void notifyEditorBeingDeleted() override + { + optionalEditor.prepareToDestroyEditor(); + uiEventListener = nullptr; + editorBeingDeleted (getActiveEditor()); + } + + InstanceWithSupports* getInstanceWithSupports() const override + { + return instance.get(); + } + + void applyStateWithAppropriateLocking (PluginState&& state) + { + PortMap portStateManager (instance->ports); + + // If a plugin supports threadSafeRestore, its restore method is thread-safe + // and may be called concurrently with audio class functions. + if (hasThreadSafeRestore) + { + state.restore (*instance, portStateManager); + } + else + { + const ScopedLock lock (getCallbackLock()); + state.restore (*instance, portStateManager); + } + + parameterValues.updateFromControlPorts (controlPortStructure); + asyncFullUiParameterUpdate.triggerAsyncUpdate(); + } + + PluginState loadStateWithUri (const String& str) + { + auto mapFeature = instance->symap->getMapFeature(); + const auto presetUri = world->newUri (str.toRawUTF8()); + lilv_world_load_resource (world->get(), presetUri.get()); + return PluginState { lilv_state_new_from_world (world->get(), &mapFeature, presetUri.get()) }; + } + + void connectPorts (AudioBuffer& audio) + { + // Plugins that cannot process in-place will require the feature "inPlaceBroken". + // We don't support that feature, so if we made it to this point we can assume that + // in-place processing works. + for (const auto& port : instance->ports.getAudioPorts()) + { + const auto channel = ioMap.getChannelForPort (port.header.index); + auto* ptr = isPositiveAndBelow (channel, audio.getNumChannels()) ? audio.getWritePointer (channel) + : nullptr; + instance->instance.connectPort (port.header.index, ptr); + } + + for (const auto& port : instance->ports.getCvPorts()) + instance->instance.connectPort (port.header.index, nullptr); + + for (auto& port : instance->ports.getAtomPorts()) + instance->instance.connectPort (port.header.index, port.data()); + } + + void preparePortsForRun (AudioBuffer& audio, MidiBuffer& midiBuffer) + { + connectPorts (audio); + + for (auto& port : instance->ports.getAtomPorts()) + { + switch (port.header.direction) + { + case Port::Direction::input: + port.beginSequence(); + break; + + case Port::Direction::output: + port.replaceWithChunk(); + break; + + case Port::Direction::unknown: + jassertfalse; + break; + } + } + + auto* forge = controlPort != nullptr ? controlPort->getForge().get() + : nullptr; + + if (forge != nullptr) + { + // Write timing info to the control port + if (auto* playhead = getPlayHead()) + { + AudioPlayHead::CurrentPositionInfo info; + + if (playhead->getCurrentPosition (info)) + { + const auto& urids = instance->urids; + + lv2_atom_forge_frame_time (forge, 0); + + lv2_shared::ObjectFrame object { forge, (uint32_t) 0, urids.mLV2_TIME__Position }; + + lv2_atom_forge_key (forge, urids.mLV2_TIME__frame); + lv2_atom_forge_long (forge, info.timeInSamples); + + lv2_atom_forge_key (forge, urids.mLV2_TIME__speed); + lv2_atom_forge_float (forge, info.isPlaying ? 1.0f : 0.0f); + + lv2_atom_forge_key (forge, urids.mLV2_TIME__barBeat); + lv2_atom_forge_float (forge, (float) (info.ppqPosition - info.ppqPositionOfLastBarStart)); + + lv2_atom_forge_key (forge, urids.mLV2_TIME__beat); + lv2_atom_forge_double (forge, info.ppqPosition); + + lv2_atom_forge_key (forge, urids.mLV2_TIME__beatUnit); + lv2_atom_forge_int (forge, info.timeSigDenominator); + + lv2_atom_forge_key (forge, urids.mLV2_TIME__beatsPerBar); + lv2_atom_forge_float (forge, (float) info.timeSigNumerator); + + lv2_atom_forge_key (forge, urids.mLV2_TIME__beatsPerMinute); + lv2_atom_forge_float (forge, (float) info.bpm); + } + } + } + + parameterValues.postChangedParametersToProcessor (getParameterWriterUrids(), forge); + + instance->uiToProcessor.readAllAndClear ([this] (MessageHeader header, uint32_t size, const void* buffer) + { + pushMessage (header, size, buffer); + }); + + for (auto& port : instance->ports.getAtomPorts()) + { + if (port.header.direction == Port::Direction::input) + { + for (const auto meta : midiBuffer) + { + port.addEventToSequence (meta.samplePosition, + instance->urids.mLV2_MIDI__MidiEvent, + static_cast (meta.numBytes), + meta.data); + } + + port.endSequence(); + } + } + + if (freeWheelingPort != nullptr) + freeWheelingPort->currentValue = isNonRealtime() ? freeWheelingPort->info.max + : freeWheelingPort->info.min; + } + + void pushMessage (MessageHeader header, uint32_t size, const void* data) + { + ignoreUnused (size); + + if (header.protocol == 0 || header.protocol == instance->urids.mLV2_UI__floatProtocol) + { + const auto value = readUnaligned (data); + + if (auto* param = parameterValues.getParamByPortIndex (header.portIndex)) + { + param->setDenormalisedValueFromUi (value); + } + else if (auto* port = controlPortStructure.getControlPortByIndex (header.portIndex)) + { + // No parameter corresponds to this port, write to the port directly + port->currentValue = value; + } + } + else if (auto* atomPort = header.portIndex < atomPorts.size() ? atomPorts[header.portIndex] : nullptr) + { + if (header.protocol == instance->urids.mLV2_ATOM__eventTransfer) + { + if (const auto* atom = convertToAtomPtr (data, (size_t) size)) + { + atomPort->addAtomToSequence (0, atom); + + // Not UB; LV2_Atom_Object has LV2_Atom as its first member + if (atom->type == instance->urids.mLV2_ATOM__Object) + patchSetHelper.processPatchSet (reinterpret_cast (data), PatchSetCallback { parameterValues }); + } + } + else if (header.protocol == instance->urids.mLV2_ATOM__atomTransfer) + { + if (const auto* atom = convertToAtomPtr (data, (size_t) size)) + atomPort->replaceBufferWithAtom (atom); + } + } + } + + void processPortsAfterRun (MidiBuffer& midi) + { + midi.clear(); + + for (auto& port : instance->ports.getAtomPorts()) + processAtomPort (port, midi); + + if (latencyPort != nullptr) + setLatencySamples ((int) latencyPort->currentValue); + } + + void processAtomPort (const AtomPort& port, MidiBuffer& midi) + { + if (port.header.direction != Port::Direction::output) + return; + + // The port holds an Atom, by definition + const auto* atom = reinterpret_cast (port.data()); + + if (atom->type != instance->urids.mLV2_ATOM__Sequence) + return; + + // The Atom said that it was of sequence type, so this isn't UB + const auto* sequence = reinterpret_cast (port.data()); + + // http://lv2plug.in/ns/ext/atom#Sequence - run() stamps are always audio frames + jassert (sequence->body.unit == 0 || sequence->body.unit == instance->urids.mLV2_UNITS__frame); + + for (const auto* event : lv2_shared::SequenceIterator { lv2_shared::SequenceWithSize { sequence } }) + { + // At the moment, we forward all outgoing events to the UI. + instance->processorToUi->pushMessage ({ uiEventListener, { port.header.index, instance->urids.mLV2_ATOM__eventTransfer } }, + (uint32_t) (event->body.size + sizeof (LV2_Atom)), + &event->body); + + if (event->body.type == instance->urids.mLV2_MIDI__MidiEvent) + midi.addEvent (event + 1, static_cast (event->body.size), static_cast (event->time.frames)); + + if (lv2_atom_forge_is_object_type (port.getForge().get(), event->body.type)) + if (reinterpret_cast (event + 1)->otype == instance->urids.mLV2_STATE__StateChanged) + updateHostDisplay (ChangeDetails{}.withNonParameterStateChanged (true)); + + patchSetHelper.processPatchSet (event, PatchSetCallback { parameterValues }); + } + } + + // Check for duplicate channel designations, and convert the set to a discrete channel layout + // if any designations are duplicated. + static std::set validateAndRedesignatePorts (std::set info) + { + const auto channelSet = lv2_shared::ParsedGroup::getEquivalentSet (info); + + if ((int) info.size() == channelSet.size()) + return info; + + std::set result; + auto designation = (int) AudioChannelSet::discreteChannel0; + + for (auto& item : info) + { + auto copy = item; + copy.designation = (AudioChannelSet::ChannelType) designation++; + result.insert (copy); + } + + return result; + } + + static AudioChannelSet::ChannelType getPortDesignation (World& world, const Port& port, size_t indexInGroup) + { + const auto defaultResult = (AudioChannelSet::ChannelType) (AudioChannelSet::discreteChannel0 + indexInGroup); + const auto node = port.get (world.newUri (LV2_CORE__designation).get()); + + if (node == nullptr) + return defaultResult; + + const auto it = lv2_shared::channelDesignationMap.find (lilvNodeToUriString (node.get())); + + if (it == lv2_shared::channelDesignationMap.end()) + return defaultResult; + + return it->second; + } + + static lv2_shared::ParsedBuses getParsedBuses (World& world, const Plugin& p, const UsefulUris& uris) + { + const auto groupPropertyUri = world.newUri (LV2_PORT_GROUPS__group); + const auto optionalUri = world.newUri (LV2_CORE__connectionOptional); + + std::map> inputGroups, outputGroups; + std::set ungroupedInputs, ungroupedOutputs; + + for (uint32_t i = 0, numPorts = p.getNumPorts(); i < numPorts; ++i) + { + const auto port = p.getPortByIndex (i); + + if (port.getKind (uris) != Port::Kind::audio) + continue; + + const auto groupUri = lilvNodeToUriString (port.get (groupPropertyUri.get()).get()); + + auto& set = [&]() -> auto& + { + if (groupUri.isEmpty()) + return port.getDirection (uris) == Port::Direction::input ? ungroupedInputs : ungroupedOutputs; + + auto& group = port.getDirection (uris) == Port::Direction::input ? inputGroups : outputGroups; + return group[groupUri]; + }(); + + set.insert ({ port.getIndex(), getPortDesignation (world, port, set.size()), port.hasProperty (optionalUri) }); + } + + for (auto* groups : { &inputGroups, &outputGroups }) + for (auto& pair : *groups) + pair.second = validateAndRedesignatePorts (std::move (pair.second)); + + JUCE_BEGIN_IGNORE_WARNINGS_MSVC (4702) + const auto getMainGroupName = [&] (const char* propertyName) + { + for (const auto* item : p.getValue (world.newUri (propertyName).get())) + return lilvNodeToUriString (item); + + return String{}; + }; + JUCE_END_IGNORE_WARNINGS_MSVC + + return { findStableBusOrder (getMainGroupName (LV2_PORT_GROUPS__mainInput), inputGroups, ungroupedInputs), + findStableBusOrder (getMainGroupName (LV2_PORT_GROUPS__mainOutput), outputGroups, ungroupedOutputs) }; + } + + static String getNameForUri (World& world, StringRef uri) + { + if (uri.isEmpty()) + return String(); + + const auto node = world.get (world.newUri (uri).get(), + world.newUri (LV2_CORE__name).get(), + nullptr); + + if (node == nullptr) + return String(); + + return String::fromUTF8 (lilv_node_as_string (node.get())); + } + + static BusesProperties getBusesProperties (const lv2_shared::ParsedBuses& parsedBuses, World& world) + { + BusesProperties result; + + for (const auto& pair : { std::make_tuple (&parsedBuses.inputs, &result.inputLayouts), + std::make_tuple (&parsedBuses.outputs, &result.outputLayouts) }) + { + const auto& buses = *std::get<0> (pair); + auto& layout = *std::get<1> (pair); + + for (const auto& bus : buses) + { + layout.add (AudioProcessor::BusProperties { getNameForUri (world, bus.uid), + bus.getEquivalentSet(), + bus.isRequired() }); + } + } + + return result; + } + + LV2_URID map (const char* str) const + { + return instance != nullptr ? instance->symap->map (str) + : LV2_URID(); + } + + ControlPort* findControlPortWithIndex (uint32_t index) const + { + auto ports = instance->ports.getControlPorts(); + const auto indexMatches = [&] (const ControlPort& p) { return p.header.index == index; }; + const auto it = std::find_if (ports.begin(), ports.end(), indexMatches); + + return it != ports.end() ? &(*it) : nullptr; + } + + const lv2_shared::ParsedBuses declaredBusLayout; + lv2_shared::PortToAudioBufferMap ioMap { getBusesLayout(), declaredBusLayout }; + std::shared_ptr world; + Plugin plugin; + PluginDescription description; + std::vector presetUris; + std::unique_ptr instance; + AsyncFn asyncFullUiParameterUpdate { [this] { postAllParametersToUi(); } }; + + std::vector atomPorts = getPortPointers (instance->ports.getAtomPorts()); + + AtomPort* const controlPort = [&]() -> AtomPort* + { + const auto port = plugin.getPortByDesignation (world->newUri (LV2_CORE__InputPort).get(), + world->newUri (LV2_CORE__control).get()); + + if (! port.isValid()) + return nullptr; + + const auto index = port.getIndex(); + + if (! isPositiveAndBelow (index, atomPorts.size())) + return nullptr; + + return atomPorts[index]; + }(); + + ControlPort* const latencyPort = [&]() -> ControlPort* + { + if (! plugin.hasLatency()) + return nullptr; + + return findControlPortWithIndex (plugin.getLatencyPortIndex()); + }(); + + ControlPort* const freeWheelingPort = [&]() -> ControlPort* + { + const auto port = plugin.getPortByDesignation (world->newUri (LV2_CORE__InputPort).get(), + world->newUri (LV2_CORE__freeWheeling).get()); + + if (! port.isValid()) + return nullptr; + + return findControlPortWithIndex (port.getIndex()); + }(); + + ControlPort* const enabledPort = [&]() -> ControlPort* + { + const auto port = plugin.getPortByDesignation (world->newUri (LV2_CORE__InputPort).get(), + world->newUri (LV2_CORE_PREFIX "enabled").get()); + + if (! port.isValid()) + return nullptr; + + return findControlPortWithIndex (port.getIndex()); + }(); + + lv2_shared::PatchSetHelper patchSetHelper { instance->symap->getMapFeature(), plugin.getUri().getTyped() }; + ControlPortAccelerationStructure controlPortStructure { instance->ports.getControlPorts() }; + ParameterValueCache parameterValues { *this, + *world, + instance->symap->getMapFeature(), + getJuceParameterInfo (*world, + plugin, + instance->urids, + { latencyPort, freeWheelingPort }, + instance->ports.getControlPorts(), + controlPort != nullptr ? controlPort->header.index : 0), + enabledPort }; + LV2Parameter* bypassParam = enabledPort != nullptr ? parameterValues.getParamByPortIndex (enabledPort->header.index) + : nullptr; + + std::atomic uiEventListener { nullptr }; + OptionalEditor<> optionalEditor; + int lastAppliedPreset = 0; + bool hasThreadSafeRestore = plugin.hasExtensionData (world->newUri (LV2_STATE__threadSafeRestore)); + bool active { false }; + + JUCE_LEAK_DETECTOR (LV2AudioPluginInstance) +}; + +} // namespace lv2 + +//============================================================================== +class LV2PluginFormat::Pimpl +{ +public: + Pimpl() + { + world->loadAll(); + + const auto tempFile = lv2ResourceFolder.getFile(); + + if (tempFile.createDirectory()) + { + for (const auto& bundle : lv2::Bundle::getAllBundles()) + { + const auto pathToBundle = tempFile.getChildFile (bundle.name + String (".lv2")); + + if (! pathToBundle.createDirectory()) + continue; + + for (const auto& resource : bundle.contents) + pathToBundle.getChildFile (resource.name).replaceWithText (resource.contents); + + const auto pathString = File::addTrailingSeparator (pathToBundle.getFullPathName()); + world->loadBundle (world->newFileUri (nullptr, pathString.toRawUTF8())); + } + } + } + + ~Pimpl() + { + lv2ResourceFolder.getFile().deleteRecursively(); + } + + void findAllTypesForFile (OwnedArray& result, + const String& identifier) + { + auto desc = getDescription (findPluginByUri (identifier)); + + if (desc.fileOrIdentifier.isNotEmpty()) + result.add (std::make_unique (desc)); + } + + bool fileMightContainThisPluginType (const String& file) const + { + // If the string looks like a URI, then it could be a valid LV2 identifier + const auto* data = file.toRawUTF8(); + const auto numBytes = file.getNumBytesAsUTF8(); + std::vector vec (numBytes + 1, 0); + std::copy (data, data + numBytes, vec.begin()); + return serd_uri_string_has_scheme (vec.data()); + } + + String getNameOfPluginFromIdentifier (const String& identifier) + { + // We would have to actually load the bundle to get its name, + // and the bundle may contain multiple plugins + return identifier; + } + + bool pluginNeedsRescanning (const PluginDescription&) + { + return true; + } + + bool doesPluginStillExist (const PluginDescription& description) + { + return findPluginByUri (description.fileOrIdentifier) != nullptr; + } + + StringArray searchPathsForPlugins (const FileSearchPath&, bool, bool) + { + world->loadAll(); + + StringArray result; + + for (const auto* plugin : world->getAllPlugins()) + result.add (lv2_host::Plugin { plugin }.getUri().getTyped()); + + return result; + } + + FileSearchPath getDefaultLocationsToSearch() { return {}; } + + const LilvUI* findEmbeddableUi (const lv2_host::Uis* pluginUis, std::true_type) + { + if (pluginUis == nullptr) + return nullptr; + + const std::vector allUis (pluginUis->begin(), pluginUis->end()); + + if (allUis.empty()) + return nullptr; + + constexpr const char* rawUri = + #if JUCE_MAC + LV2_UI__CocoaUI; + #elif JUCE_WINDOWS + LV2_UI__WindowsUI; + #elif JUCE_LINUX || JUCE_BSD + LV2_UI__X11UI; + #else + nullptr; + #endif + + jassert (rawUri != nullptr); + const auto nativeUiUri = world->newUri (rawUri); + + struct UiWithSuitability + { + const LilvUI* ui; + unsigned suitability; + + bool operator< (const UiWithSuitability& other) const noexcept + { + return suitability < other.suitability; + } + + static unsigned uiIsSupported (const char* hostUri, const char* pluginUri) + { + if (strcmp (hostUri, pluginUri) == 0) + return 1; + + return 0; + } + }; + + std::vector uisWithSuitability; + uisWithSuitability.reserve (allUis.size()); + + std::transform (allUis.cbegin(), allUis.cend(), std::back_inserter (uisWithSuitability), [&] (const LilvUI* ui) + { + const LilvNode* type = nullptr; + return UiWithSuitability { ui, lilv_ui_is_supported (ui, UiWithSuitability::uiIsSupported, nativeUiUri.get(), &type) }; + }); + + std::sort (uisWithSuitability.begin(), uisWithSuitability.end()); + + if (uisWithSuitability.back().suitability != 0) + return uisWithSuitability.back().ui; + + return nullptr; + } + + const LilvUI* findEmbeddableUi (const lv2_host::Uis*, std::false_type) + { + return nullptr; + } + + const LilvUI* findEmbeddableUi (const lv2_host::Uis* pluginUis) + { + return findEmbeddableUi (pluginUis, std::integral_constant{}); + } + + static lv2_host::UiDescriptor getUiDescriptor (const LilvUI* ui) + { + if (ui == nullptr) + return {}; + + const auto libraryFile = StringPtr { lilv_file_uri_parse (lilv_node_as_uri (lilv_ui_get_binary_uri (ui)), nullptr) }; + + return lv2_host::UiDescriptor { lv2_host::UiDescriptorArgs{}.withLibraryPath (libraryFile.get()) + .withUiUri (lilv_node_as_uri (lilv_ui_get_uri (ui))) }; + } + + // Returns the name of a missing feature, if any. + template + static std::vector findMissingFeatures (RequiredFeatures&& required, + AvailableFeatures&& available) + { + std::vector result; + + for (const auto* node : required) + { + const auto nodeString = String::fromUTF8 (lilv_node_as_uri (node)); + + if (std::find (std::begin (available), std::end (available), nodeString) == std::end (available)) + result.push_back (nodeString); + } + + return result; + } + + void createPluginInstance (const PluginDescription& desc, + double initialSampleRate, + int initialBufferSize, + PluginCreationCallback callback) + { + const auto* pluginPtr = findPluginByUri (desc.fileOrIdentifier); + + if (pluginPtr == nullptr) + return callback (nullptr, "Unable to locate plugin with the requested URI"); + + const lv2_host::Plugin plugin { pluginPtr }; + + auto symap = std::make_unique(); + + const auto missingFeatures = findMissingFeatures (plugin.getRequiredFeatures(), + lv2_host::FeaturesData::getFeatureUris()); + + if (! missingFeatures.empty()) + { + const auto missingFeaturesString = StringArray (missingFeatures.data(), (int) missingFeatures.size()).joinIntoString (", "); + + return callback (nullptr, "plugin requires missing features: " + missingFeaturesString); + } + + auto stateToApply = [&] + { + if (! plugin.hasFeature (world->newUri (LV2_STATE__loadDefaultState))) + return lv2_host::PluginState{}; + + auto map = symap->getMapFeature(); + return lv2_host::PluginState { lilv_state_new_from_world (world->get(), &map, plugin.getUri().get()) }; + }(); + + auto ports = lv2_host::getPorts (uris, plugin, *symap); + + if (! ports.successful) + return callback (nullptr, "Plugin has ports of an unsupported type"); + + auto instance = std::make_unique (*world, + std::move (symap), + plugin, + std::move (ports.value), + (int32_t) initialBufferSize, + initialSampleRate); + + if (instance->instance == nullptr) + return callback (nullptr, "Plugin was located, but could not be opened"); + + auto potentialPresets = world->findNodes (nullptr, + world->newUri (LV2_CORE__appliesTo).get(), + plugin.getUri().get()); + + const lv2_host::Uis pluginUis { plugin.get() }; + + const auto uiToUse = [&]() -> const LilvUI* + { + const auto bestMatch = findEmbeddableUi (&pluginUis); + + if (bestMatch == nullptr) + return bestMatch; + + const auto uiUri = lilv_ui_get_uri (bestMatch); + lilv_world_load_resource (world->get(), uiUri); + + const auto queryUi = [&] (const char* featureUri) + { + const auto featureUriNode = world->newUri (featureUri); + return world->findNodes (uiUri, featureUriNode.get(), nullptr); + }; + + const auto missingUiFeatures = findMissingFeatures (queryUi (LV2_CORE__requiredFeature), + lv2_host::UiFeaturesData::getFeatureUris()); + + return missingUiFeatures.empty() ? bestMatch : nullptr; + }(); + + auto uiBundleUri = uiToUse != nullptr ? String::fromUTF8 (lilv_node_as_uri (lilv_ui_get_bundle_uri (uiToUse))) + : String(); + + auto wrapped = std::make_unique (world, + plugin, + uris, + std::move (instance), + getDescription (pluginPtr), + findPresetUrisForPlugin (plugin.get()), + std::move (stateToApply), + std::move (uiBundleUri), + getUiDescriptor (uiToUse)); + callback (std::move (wrapped), {}); + } + +private: + struct Free { void operator() (char* ptr) const noexcept { free (ptr); } }; + using StringPtr = std::unique_ptr; + + const LilvPlugin* findPluginByUri (const String& s) + { + return world->getAllPlugins().getByUri (world->newUri (s.toRawUTF8())); + } + + template + void visitParentClasses (const LilvPluginClass* c, Fn&& fn) const + { + if (c == nullptr) + return; + + const lv2_host::PluginClass wrapped { c }; + fn (wrapped); + + const auto parentUri = wrapped.getParentUri(); + + if (parentUri.get() != nullptr) + visitParentClasses (world->getPluginClasses().getByUri (parentUri), fn); + } + + std::vector collectPluginClassUris (const LilvPluginClass* c) const + { + std::vector results; + + visitParentClasses (c, [&results] (const lv2_host::PluginClass& wrapped) + { + results.emplace_back (wrapped.getUri()); + }); + + return results; + } + + PluginDescription getDescription (const LilvPlugin* plugin) + { + if (plugin == nullptr) + return {}; + + const auto wrapped = lv2_host::Plugin { plugin }; + const auto bundle = wrapped.getBundleUri().getTyped(); + const auto bundleFile = File { StringPtr { lilv_file_uri_parse (bundle, nullptr) }.get() }; + + const auto numInputs = wrapped.getNumPortsOfClass (uris.mLV2_CORE__AudioPort, uris.mLV2_CORE__InputPort); + const auto numOutputs = wrapped.getNumPortsOfClass (uris.mLV2_CORE__AudioPort, uris.mLV2_CORE__OutputPort); + + PluginDescription result; + result.name = wrapped.getName().getTyped(); + result.descriptiveName = wrapped.getName().getTyped(); + result.lastFileModTime = bundleFile.getLastModificationTime(); + result.lastInfoUpdateTime = Time::getCurrentTime(); + result.manufacturerName = wrapped.getAuthorName().getTyped(); + result.pluginFormatName = LV2PluginFormat::getFormatName(); + result.numInputChannels = static_cast (numInputs); + result.numOutputChannels = static_cast (numOutputs); + + const auto classPtr = wrapped.getClass(); + const auto classes = collectPluginClassUris (classPtr); + const auto isInstrument = std::any_of (classes.cbegin(), + classes.cend(), + [this] (const lv2_host::NodeUri& uri) + { + return uri.equals (uris.mLV2_CORE__GeneratorPlugin); + }); + + result.category = lv2_host::PluginClass { classPtr }.getLabel().getTyped(); + result.isInstrument = isInstrument; + + // The plugin URI is required to be globally unique, so a hash of it should be too + result.fileOrIdentifier = wrapped.getUri().getTyped(); + + const auto uid = DefaultHashFunctions::generateHash (result.fileOrIdentifier, std::numeric_limits::max());; + result.deprecatedUid = result.uniqueId = uid; + return result; + } + + std::vector findPresetUrisForPlugin (const LilvPlugin* plugin) + { + std::vector presetUris; + + lv2_host::OwningNodes potentialPresets { lilv_plugin_get_related (plugin, world->newUri (LV2_PRESETS__Preset).get()) }; + + for (const auto* potentialPreset : potentialPresets) + presetUris.push_back (lilv_node_as_string (potentialPreset)); + + return presetUris; + } + + TemporaryFile lv2ResourceFolder; + std::shared_ptr world = std::make_shared(); + lv2_host::UsefulUris uris { world->get() }; +}; + +//============================================================================== +LV2PluginFormat::LV2PluginFormat() + : pimpl (std::make_unique()) {} + +LV2PluginFormat::~LV2PluginFormat() = default; + +void LV2PluginFormat::findAllTypesForFile (OwnedArray& results, + const String& fileOrIdentifier) +{ + pimpl->findAllTypesForFile (results, fileOrIdentifier); +} + +bool LV2PluginFormat::fileMightContainThisPluginType (const String& fileOrIdentifier) +{ + return pimpl->fileMightContainThisPluginType (fileOrIdentifier); +} + +String LV2PluginFormat::getNameOfPluginFromIdentifier (const String& fileOrIdentifier) +{ + return pimpl->getNameOfPluginFromIdentifier (fileOrIdentifier); +} + +bool LV2PluginFormat::pluginNeedsRescanning (const PluginDescription& desc) +{ + return pimpl->pluginNeedsRescanning (desc); +} + +bool LV2PluginFormat::doesPluginStillExist (const PluginDescription& desc) +{ + return pimpl->doesPluginStillExist (desc); +} + +bool LV2PluginFormat::canScanForPlugins() const { return true; } +bool LV2PluginFormat::isTrivialToScan() const { return true; } + +StringArray LV2PluginFormat::searchPathsForPlugins (const FileSearchPath& directoriesToSearch, + bool recursive, + bool allowAsync) +{ + return pimpl->searchPathsForPlugins (directoriesToSearch, recursive, allowAsync); +} + +FileSearchPath LV2PluginFormat::getDefaultLocationsToSearch() +{ + return pimpl->getDefaultLocationsToSearch(); +} + +bool LV2PluginFormat::requiresUnblockedMessageThreadDuringCreation (const PluginDescription&) const +{ + return false; +} + +void LV2PluginFormat::createPluginInstance (const PluginDescription& desc, + double sampleRate, + int bufferSize, + PluginCreationCallback callback) +{ + pimpl->createPluginInstance (desc, sampleRate, bufferSize, std::move (callback)); +} + +} // namespace juce + +#endif diff --git a/modules/juce_audio_processors/format_types/juce_LV2PluginFormat.h b/modules/juce_audio_processors/format_types/juce_LV2PluginFormat.h new file mode 100644 index 0000000000..c4700ab4ec --- /dev/null +++ b/modules/juce_audio_processors/format_types/juce_LV2PluginFormat.h @@ -0,0 +1,71 @@ +/* + ============================================================================== + + This file is part of the JUCE 7 technical preview. + Copyright (c) 2022 - Raw Material Software Limited + + You may use this code under the terms of the GPL v3 + (see www.gnu.org/licenses). + + For the technical preview this file cannot be licensed commercially. + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +namespace juce +{ + +#if JUCE_PLUGINHOST_LV2 || DOXYGEN + +/** + Implements a plugin format for LV2 plugins. + + @tags{Audio} +*/ +class JUCE_API LV2PluginFormat : public AudioPluginFormat +{ +public: + LV2PluginFormat(); + ~LV2PluginFormat() override; + + static String getFormatName() { return "LV2"; } + String getName() const override { return getFormatName(); } + + void findAllTypesForFile (OwnedArray& results, + const String& fileOrIdentifier) override; + + bool fileMightContainThisPluginType (const String& fileOrIdentifier) override; + + String getNameOfPluginFromIdentifier (const String& fileOrIdentifier) override; + + bool pluginNeedsRescanning (const PluginDescription&) override; + + bool doesPluginStillExist (const PluginDescription&) override; + + bool canScanForPlugins() const override; + + bool isTrivialToScan() const override; + + StringArray searchPathsForPlugins (const FileSearchPath& directoriesToSearch, + bool recursive, + bool allowPluginsWhichRequireAsynchronousInstantiation = false) override; + + FileSearchPath getDefaultLocationsToSearch() override; + +private: + bool requiresUnblockedMessageThreadDuringCreation (const PluginDescription&) const override; + void createPluginInstance (const PluginDescription&, double, int, PluginCreationCallback) override; + + class Pimpl; + std::unique_ptr pimpl; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LV2PluginFormat) +}; + +#endif + +} // namespace juce diff --git a/modules/juce_audio_processors/format_types/juce_LV2PluginFormat_test.cpp b/modules/juce_audio_processors/format_types/juce_LV2PluginFormat_test.cpp new file mode 100644 index 0000000000..a3e6f6ae63 --- /dev/null +++ b/modules/juce_audio_processors/format_types/juce_LV2PluginFormat_test.cpp @@ -0,0 +1,265 @@ +/* + ============================================================================== + + This file is part of the JUCE 7 technical preview. + Copyright (c) 2022 - Raw Material Software Limited + + You may use this code under the terms of the GPL v3 + (see www.gnu.org/licenses). + + For the technical preview this file cannot be licensed commercially. + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +#include "juce_LV2Common.h" + +namespace juce +{ + +class LV2PluginFormatTests : public UnitTest +{ +public: + LV2PluginFormatTests() + : UnitTest ("LV2 Hosting", UnitTestCategories::audioProcessors) + { + } + + void runTest() override + { + using namespace lv2_shared; + + beginTest ("ChannelMapping for well-ordered stereo buses does no mapping"); + { + const AudioProcessor::BusesLayout host { { AudioChannelSet::stereo() }, { AudioChannelSet::stereo() } }; + const ParsedBuses client { { ParsedGroup { "a", { SinglePortInfo { 0, AudioChannelSet::left, false }, + SinglePortInfo { 1, AudioChannelSet::right, false } } } }, + { ParsedGroup { "b", { SinglePortInfo { 2, AudioChannelSet::left, false }, + SinglePortInfo { 3, AudioChannelSet::right, false } } } } }; + const PortToAudioBufferMap map { host, client }; + + expect (map.getChannelForPort (0) == 0); + expect (map.getChannelForPort (1) == 1); + + expect (map.getChannelForPort (2) == 0); + expect (map.getChannelForPort (3) == 1); + + expect (map.getChannelForPort (4) == -1); + } + + beginTest ("ChannelMapping for layout with backwards ports is converted to JUCE order"); + { + const AudioProcessor::BusesLayout host { { AudioChannelSet::stereo() }, { AudioChannelSet::stereo() } }; + const ParsedBuses client { { ParsedGroup { "a", { SinglePortInfo { 0, AudioChannelSet::right, false }, + SinglePortInfo { 1, AudioChannelSet::left, false } } } }, + { ParsedGroup { "b", { SinglePortInfo { 2, AudioChannelSet::right, false }, + SinglePortInfo { 3, AudioChannelSet::left, false } } } } }; + const PortToAudioBufferMap map { host, client }; + + expect (map.getChannelForPort (0) == 1); + expect (map.getChannelForPort (1) == 0); + + expect (map.getChannelForPort (2) == 1); + expect (map.getChannelForPort (3) == 0); + + expect (map.getChannelForPort (4) == -1); + } + + beginTest ("ChannelMapping for layout with multiple buses works as expected"); + { + const AudioProcessor::BusesLayout host { { AudioChannelSet::create5point1(), AudioChannelSet::mono() }, + { AudioChannelSet::mono(), AudioChannelSet::createLCRS(), AudioChannelSet::stereo() } }; + const ParsedBuses client { { ParsedGroup { "a", { SinglePortInfo { 0, AudioChannelSet::right, false }, + SinglePortInfo { 1, AudioChannelSet::left, false }, + SinglePortInfo { 2, AudioChannelSet::LFE, false }, + SinglePortInfo { 3, AudioChannelSet::centre, false }, + SinglePortInfo { 4, AudioChannelSet::rightSurround, false }, + SinglePortInfo { 5, AudioChannelSet::leftSurround, false } } }, + ParsedGroup { "b", { SinglePortInfo { 6, AudioChannelSet::centre, false } } } }, + { ParsedGroup { "c", { SinglePortInfo { 7, AudioChannelSet::centre, false } } }, + ParsedGroup { "d", { SinglePortInfo { 8, AudioChannelSet::surround, false }, + SinglePortInfo { 9, AudioChannelSet::centre, false }, + SinglePortInfo { 10, AudioChannelSet::right, false }, + SinglePortInfo { 11, AudioChannelSet::left, false } } }, + ParsedGroup { "e", { SinglePortInfo { 12, AudioChannelSet::left, false }, + SinglePortInfo { 13, AudioChannelSet::right, false } } } } }; + const PortToAudioBufferMap map { host, client }; + + expect (map.getChannelForPort ( 0) == 1); + expect (map.getChannelForPort ( 1) == 0); + expect (map.getChannelForPort ( 2) == 3); + expect (map.getChannelForPort ( 3) == 2); + expect (map.getChannelForPort ( 4) == 5); + expect (map.getChannelForPort ( 5) == 4); + expect (map.getChannelForPort ( 6) == 6); + + expect (map.getChannelForPort ( 7) == 0); + expect (map.getChannelForPort ( 8) == 4); + expect (map.getChannelForPort ( 9) == 3); + expect (map.getChannelForPort (10) == 2); + expect (map.getChannelForPort (11) == 1); + expect (map.getChannelForPort (12) == 5); + expect (map.getChannelForPort (13) == 6); + + expect (map.getChannelForPort (14) == -1); + } + + beginTest ("Optional client buses may correspond to a disabled host bus"); + { + const ParsedBuses client { { ParsedGroup { "a", { SinglePortInfo { 0, AudioChannelSet::right, true }, + SinglePortInfo { 1, AudioChannelSet::left, true }, + SinglePortInfo { 2, AudioChannelSet::LFE, true }, + SinglePortInfo { 3, AudioChannelSet::centre, true }, + SinglePortInfo { 4, AudioChannelSet::rightSurround, true }, + SinglePortInfo { 5, AudioChannelSet::leftSurround, true } } }, + ParsedGroup { "b", { SinglePortInfo { 6, AudioChannelSet::centre, true } } } }, + { ParsedGroup { "c", { SinglePortInfo { 7, AudioChannelSet::centre, true } } }, + ParsedGroup { "d", { SinglePortInfo { 8, AudioChannelSet::surround, true }, + SinglePortInfo { 9, AudioChannelSet::centre, true }, + SinglePortInfo { 10, AudioChannelSet::right, true }, + SinglePortInfo { 11, AudioChannelSet::left, true } } }, + ParsedGroup { "e", { SinglePortInfo { 12, AudioChannelSet::left, true }, + SinglePortInfo { 13, AudioChannelSet::right, true } } } } }; + + const PortToAudioBufferMap mapA { AudioProcessor::BusesLayout { { AudioChannelSet::disabled(), AudioChannelSet::mono() }, + { AudioChannelSet::mono(), AudioChannelSet::disabled(), AudioChannelSet::stereo() } }, + client }; + + expect (mapA.getChannelForPort ( 0) == -1); + expect (mapA.getChannelForPort ( 1) == -1); + expect (mapA.getChannelForPort ( 2) == -1); + expect (mapA.getChannelForPort ( 3) == -1); + expect (mapA.getChannelForPort ( 4) == -1); + expect (mapA.getChannelForPort ( 5) == -1); + expect (mapA.getChannelForPort ( 6) == 0); + + expect (mapA.getChannelForPort ( 7) == 0); + expect (mapA.getChannelForPort ( 8) == -1); + expect (mapA.getChannelForPort ( 9) == -1); + expect (mapA.getChannelForPort (10) == -1); + expect (mapA.getChannelForPort (11) == -1); + expect (mapA.getChannelForPort (12) == 1); + expect (mapA.getChannelForPort (13) == 2); + + expect (mapA.getChannelForPort (14) == -1); + + const PortToAudioBufferMap mapB { AudioProcessor::BusesLayout { { AudioChannelSet::create5point1(), AudioChannelSet::disabled() }, + { AudioChannelSet::disabled(), AudioChannelSet::disabled(), AudioChannelSet::stereo() } }, + client }; + + expect (mapB.getChannelForPort ( 0) == 1); + expect (mapB.getChannelForPort ( 1) == 0); + expect (mapB.getChannelForPort ( 2) == 3); + expect (mapB.getChannelForPort ( 3) == 2); + expect (mapB.getChannelForPort ( 4) == 5); + expect (mapB.getChannelForPort ( 5) == 4); + expect (mapB.getChannelForPort ( 6) == -1); + + expect (mapB.getChannelForPort ( 7) == -1); + expect (mapB.getChannelForPort ( 8) == -1); + expect (mapB.getChannelForPort ( 9) == -1); + expect (mapB.getChannelForPort (10) == -1); + expect (mapB.getChannelForPort (11) == -1); + expect (mapB.getChannelForPort (12) == 0); + expect (mapB.getChannelForPort (13) == 1); + + expect (mapB.getChannelForPort (14) == -1); + } + + beginTest ("A plugin with only grouped ports will have the same number of buses as groups"); + { + const auto parsed = findStableBusOrder ("foo", + { { "sidechain", { SinglePortInfo { 0, AudioChannelSet::left, false }, + SinglePortInfo { 1, AudioChannelSet::right, false } } }, + { "foo", { SinglePortInfo { 2, AudioChannelSet::centre, false } } } }, + {}); + expect (parsed.size() == 2); + + expect (parsed[0].uid == "foo"); // The main bus should always be first + expect (parsed[0].info.size() == 1); + + expect (parsed[1].uid == "sidechain"); + expect (parsed[1].info.size() == 2); + } + + beginTest ("A plugin with grouped and ungrouped ports will add a bus for each ungrouped port"); + { + const auto parsed = findStableBusOrder ("foo", + { { "sidechain", { SinglePortInfo { 0, AudioChannelSet::left, false }, + SinglePortInfo { 1, AudioChannelSet::right, false } } }, + { "foo", { SinglePortInfo { 2, AudioChannelSet::centre, false } } } }, + { SinglePortInfo { 3, AudioChannelSet::leftSurround, false }, + SinglePortInfo { 4, AudioChannelSet::centre, true }, + SinglePortInfo { 5, AudioChannelSet::rightSurround, false } }); + expect (parsed.size() == 5); + + expect (parsed[0].uid == "foo"); // The main bus should always be first + expect (parsed[0].info.size() == 1); + + expect (parsed[1].uid == "sidechain"); + expect (parsed[1].info.size() == 2); + + expect (parsed[2].uid == ""); + expect (parsed[2].info.size() == 1); + + expect (parsed[3].uid == ""); + expect (parsed[3].info.size() == 1); + + expect (parsed[4].uid == ""); + expect (parsed[4].info.size() == 1); + } + + beginTest ("A plugin with only ungrouped, required ports will have a single bus"); + { + const auto parsed = findStableBusOrder ("foo", + {}, + { SinglePortInfo { 0, AudioChannelSet::leftSurround, false }, + SinglePortInfo { 1, AudioChannelSet::rightSurround, false }, + SinglePortInfo { 2, AudioChannelSet::left, false }, + SinglePortInfo { 3, AudioChannelSet::right, false } }); + + expect (parsed == std::vector { { "", { SinglePortInfo { 0, AudioChannelSet::leftSurround, false }, + SinglePortInfo { 1, AudioChannelSet::rightSurround, false }, + SinglePortInfo { 2, AudioChannelSet::left, false }, + SinglePortInfo { 3, AudioChannelSet::right, false } } } }); + } + + beginTest ("A plugin with only ungrouped, optional ports will have a bus per port"); + { + const auto parsed = findStableBusOrder ("foo", + {}, + { SinglePortInfo { 0, AudioChannelSet::leftSurround, true }, + SinglePortInfo { 1, AudioChannelSet::rightSurround, true }, + SinglePortInfo { 2, AudioChannelSet::left, true }, + SinglePortInfo { 3, AudioChannelSet::right, true } }); + + expect (parsed == std::vector { { "", { SinglePortInfo { 0, AudioChannelSet::leftSurround, true } } }, + { "", { SinglePortInfo { 1, AudioChannelSet::rightSurround, true } } }, + { "", { SinglePortInfo { 2, AudioChannelSet::left, true } } }, + { "", { SinglePortInfo { 3, AudioChannelSet::right, true } } } }); + } + + beginTest ("A plugin with a mix of required and optional ports will have the required ports grouped together on a single bus"); + { + const auto parsed = findStableBusOrder ("foo", + {}, + { SinglePortInfo { 0, AudioChannelSet::leftSurround, true }, + SinglePortInfo { 1, AudioChannelSet::rightSurround, false }, + SinglePortInfo { 2, AudioChannelSet::left, true }, + SinglePortInfo { 3, AudioChannelSet::right, false } }); + + expect (parsed == std::vector { { "", { SinglePortInfo { 1, AudioChannelSet::rightSurround, false }, + SinglePortInfo { 3, AudioChannelSet::right, false } } }, + { "", { SinglePortInfo { 0, AudioChannelSet::leftSurround, true } } }, + { "", { SinglePortInfo { 2, AudioChannelSet::left, true } } } }); + } + } +}; + +static LV2PluginFormatTests lv2PluginFormatTests; + +} // namespace juce diff --git a/modules/juce_audio_processors/format_types/lv2/juce_LV2Resources.h b/modules/juce_audio_processors/format_types/juce_LV2Resources.h similarity index 96% rename from modules/juce_audio_processors/format_types/lv2/juce_LV2Resources.h rename to modules/juce_audio_processors/format_types/juce_LV2Resources.h index f9606e0ae7..7a81b15725 100644 --- a/modules/juce_audio_processors/format_types/lv2/juce_LV2Resources.h +++ b/modules/juce_audio_processors/format_types/juce_LV2Resources.h @@ -1,3 +1,25 @@ +/* + ============================================================================== + + This file is part of the JUCE 7 technical preview. + Copyright (c) 2022 - Raw Material Software Limited + + You may use this code under the terms of the GPL v3 + (see www.gnu.org/licenses). + + For the technical preview this file cannot be licensed commercially. + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +/* + This file is auto-generated by generate_lv2_bundle_sources.py. +*/ + #pragma once #include diff --git a/modules/juce_audio_processors/format_types/juce_LV2SupportLibs.cpp b/modules/juce_audio_processors/format_types/juce_LV2SupportLibs.cpp new file mode 100644 index 0000000000..9004d083e6 --- /dev/null +++ b/modules/juce_audio_processors/format_types/juce_LV2SupportLibs.cpp @@ -0,0 +1,93 @@ +/* + ============================================================================== + + This file is part of the JUCE 7 technical preview. + Copyright (c) 2022 - Raw Material Software Limited + + You may use this code under the terms of the GPL v3 + (see www.gnu.org/licenses). + + For the technical preview this file cannot be licensed commercially. + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +#include "juce_lv2_config.h" + +JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wc99-extensions", + "-Wcast-align", + "-Wconversion", + "-Wdeprecated-declarations", + "-Wextra-semi", + "-Wfloat-conversion", + "-Wimplicit-float-conversion", + "-Wimplicit-int-conversion", + "-Wmicrosoft-include", + "-Wmissing-field-initializers", + "-Wnullability-extension", + "-Wnullable-to-nonnull-conversion", + "-Wparentheses", + "-Wpedantic", + "-Wredundant-decls", + "-Wshorten-64-to-32", + "-Wsign-conversion", + "-Wswitch-enum", + "-Wunused-parameter", + "-Wzero-as-null-pointer-constant") +JUCE_BEGIN_IGNORE_WARNINGS_MSVC (4100 4200 4244 4267 4389 4702 4706 4800 4996 6308 28182 28183 6385 6386 6387 6011 6282 6323 6330 6001 6031) + +extern "C" +{ + +#define is_windows_path serd_is_windows_path + +#include "serd/src/base64.c" +#include "serd/src/byte_source.c" +#include "serd/src/env.c" +#include "serd/src/n3.c" +#undef TRY +#include "serd/src/node.c" +#include "serd/src/reader.c" +#include "serd/src/string.c" +#include "serd/src/system.c" +#include "serd/src/uri.c" +#include "serd/src/writer.c" + +#undef is_windows_path + +#include "sord/src/sord.c" +#include "sord/src/syntax.c" + +#include "lilv/src/collections.c" +#include "lilv/src/filesystem.c" +#include "lilv/src/instance.c" +#include "lilv/src/lib.c" +#include "lilv/src/node.c" +#include "lilv/src/plugin.c" +#include "lilv/src/pluginclass.c" +#include "lilv/src/port.c" +#include "lilv/src/query.c" +#include "lilv/src/scalepoint.c" +#include "lilv/src/state.c" +#include "lilv/src/ui.c" +#include "lilv/src/util.c" +#include "lilv/src/world.c" +#include "lilv/src/zix/tree.c" + +#undef NS_RDF +#undef NS_XSD +#undef USTR + +#define read_object sratom_read_object +#define read_literal sratom_read_literal + +#pragma push_macro ("nil") +#undef nil +#include "LV2_SDK/sratom/src/sratom.c" +#pragma pop_macro ("nil") + +} // extern "C" diff --git a/modules/juce_audio_processors/format_types/juce_VST3Common.h b/modules/juce_audio_processors/format_types/juce_VST3Common.h index d86da47349..482de6c714 100644 --- a/modules/juce_audio_processors/format_types/juce_VST3Common.h +++ b/modules/juce_audio_processors/format_types/juce_VST3Common.h @@ -1389,76 +1389,6 @@ private: }; //============================================================================== -class FloatCache -{ - using FlagType = uint32_t; - -public: - FloatCache() = default; - - explicit FloatCache (size_t sizeIn) - : values (sizeIn), - flags (divCeil (sizeIn, numFlagBits)) - { - std::fill (values.begin(), values.end(), 0.0f); - std::fill (flags.begin(), flags.end(), 0); - } - - size_t size() const noexcept { return values.size(); } - - void setWithoutNotifying (size_t index, float value) - { - jassert (index < size()); - values[index].store (value, std::memory_order_relaxed); - } - - void set (size_t index, float value) - { - jassert (index < size()); - const auto previous = values[index].exchange (value, std::memory_order_relaxed); - const auto bit = previous == value ? ((FlagType) 0) : ((FlagType) 1 << (index % numFlagBits)); - flags[index / numFlagBits].fetch_or (bit, std::memory_order_acq_rel); - } - - float get (size_t index) const noexcept - { - jassert (index < size()); - return values[index].load (std::memory_order_relaxed); - } - - /* Calls the supplied callback for any entries which have been modified - since the last call to this function. - */ - template - void ifSet (Callback&& callback) - { - for (size_t flagIndex = 0; flagIndex < flags.size(); ++flagIndex) - { - const auto prevFlags = flags[flagIndex].exchange (0, std::memory_order_acq_rel); - - for (size_t bit = 0; bit < numFlagBits; ++bit) - { - if (prevFlags & ((FlagType) 1 << bit)) - { - const auto itemIndex = (flagIndex * numFlagBits) + bit; - callback (itemIndex, values[itemIndex].load (std::memory_order_relaxed)); - } - } - } - } - -private: - static constexpr size_t numFlagBits = 8 * sizeof (FlagType); - - static constexpr size_t divCeil (size_t a, size_t b) - { - return (a / b) + ((a % b) != 0); - } - - std::vector> values; - std::vector> flags; -}; - /* Provides very quick polling of all parameter states. We must iterate all parameters on each processBlock call to check whether any @@ -1482,15 +1412,15 @@ public: Steinberg::Vst::ParamID getParamID (Steinberg::int32 index) const noexcept { return paramIds[(size_t) index]; } - void set (Steinberg::int32 index, float value) { floatCache.set ((size_t) index, value); } - void setWithoutNotifying (Steinberg::int32 index, float value) { floatCache.setWithoutNotifying ((size_t) index, value); } + void set (Steinberg::int32 index, float value) { floatCache.setValueAndBits ((size_t) index, value, 1); } + void setWithoutNotifying (Steinberg::int32 index, float value) { floatCache.setValue ((size_t) index, value); } float get (Steinberg::int32 index) const noexcept { return floatCache.get ((size_t) index); } template void ifSet (Callback&& callback) { - floatCache.ifSet ([&] (size_t index, float value) + floatCache.ifSet ([&] (size_t index, float value, uint32_t) { callback ((Steinberg::int32) index, value); }); @@ -1498,9 +1428,10 @@ public: private: std::vector paramIds; - FloatCache floatCache; + FlaggedFloatCache<1> floatCache; }; +//============================================================================== /* Ensures that a 'restart' call only ever happens on the main thread. */ class ComponentRestarter : private AsyncUpdater { diff --git a/modules/juce_audio_processors/format_types/lv2/generate_lv2_bundle_sources.py b/modules/juce_audio_processors/format_types/lv2/generate_lv2_bundle_sources.py deleted file mode 100644 index d9063e5da9..0000000000 --- a/modules/juce_audio_processors/format_types/lv2/generate_lv2_bundle_sources.py +++ /dev/null @@ -1,93 +0,0 @@ -import argparse -import os - -BUNDLE_TEMPLATE = """juce::lv2::Bundle -{{ -"{}", -{{ -{} -}} -}} -""" - -BUNDLE_RESOURCE_TEMPLATE = """juce::lv2::BundleResource -{{ -"{}", -{} -}} -""" - -FUNCTION_TEMPLATE = """#pragma once - -#include - -namespace juce -{{ -namespace lv2 -{{ - -struct BundleResource -{{ - const char* name; - const char* contents; -}}; - -struct Bundle -{{ - const char* name; - std::vector contents; - - static std::vector getAllBundles(); -}}; - -}} -}} - -std::vector juce::lv2::Bundle::getAllBundles() -{{ - return {{ -{} -}}; -}} -""" - - -def chunks(lst, n): - for i in range(0, len(lst), n): - yield lst[i:i + n] - - -def get_chunked_string_literal(s): - return ' '.join(map(lambda x: 'R"lv2ttl({})lv2ttl"'.format(''.join(x)), chunks(s, 8000))) - - -def get_file_source_string(ttl): - with open(ttl) as f: - return BUNDLE_RESOURCE_TEMPLATE.format(os.path.basename(ttl), - get_chunked_string_literal(f.read())) - - -def generate_bundle_source(root, files): - if len(files) == 0: - return "" - - return BUNDLE_TEMPLATE.format(os.path.basename(root), - ", ".join(get_file_source_string(os.path.join(root, ttl)) for ttl in files)) - -def filter_turtle(files): - return [f for f in files if f.endswith(".ttl")] - - -def filter_ttl_files(lv2_dir): - for root, _, files in os.walk(args.lv2_dir): - yield root, filter_turtle(files) - - -parser = argparse.ArgumentParser() -parser.add_argument("lv2_dir") -args = parser.parse_args() - -print(FUNCTION_TEMPLATE.format(", ".join(generate_bundle_source(root, files) - for root, files in filter_ttl_files(args.lv2_dir) - if len(files) != 0)), - end = "\r\n") diff --git a/modules/juce_audio_processors/format_types/lv2/lilv_config.h b/modules/juce_audio_processors/format_types/lv2/lilv_config.h deleted file mode 100644 index 9a10500203..0000000000 --- a/modules/juce_audio_processors/format_types/lv2/lilv_config.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -#include "juce_lv2_config.h" diff --git a/modules/juce_audio_processors/format_types/lv2/serd_config.h b/modules/juce_audio_processors/format_types/lv2/serd_config.h deleted file mode 100644 index 9a10500203..0000000000 --- a/modules/juce_audio_processors/format_types/lv2/serd_config.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -#include "juce_lv2_config.h" diff --git a/modules/juce_audio_processors/format_types/lv2/sord_config.h b/modules/juce_audio_processors/format_types/lv2/sord_config.h deleted file mode 100644 index 9a10500203..0000000000 --- a/modules/juce_audio_processors/format_types/lv2/sord_config.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -#include "juce_lv2_config.h" diff --git a/modules/juce_audio_processors/juce_audio_processors.cpp b/modules/juce_audio_processors/juce_audio_processors.cpp index 0ce3bb272c..80914cc0ab 100644 --- a/modules/juce_audio_processors/juce_audio_processors.cpp +++ b/modules/juce_audio_processors/juce_audio_processors.cpp @@ -50,7 +50,7 @@ #undef KeyPress #endif -#if ! JUCE_WINDOWS && ! JUCE_MAC && ! JUCE_LINUX && ! JUCE_BSD +#if ! JUCE_WINDOWS && ! JUCE_MAC && ! JUCE_LINUX #undef JUCE_PLUGINHOST_VST3 #define JUCE_PLUGINHOST_VST3 0 #endif @@ -59,11 +59,10 @@ #include #endif -//============================================================================== namespace juce { -#if JUCE_PLUGINHOST_VST || (JUCE_PLUGINHOST_LADSPA && (JUCE_LINUX || JUCE_BSD)) +#if JUCE_PLUGINHOST_VST || (JUCE_PLUGINHOST_LADSPA && JUCE_LINUX) static bool arrayContainsPlugin (const OwnedArray& list, const PluginDescription& desc) @@ -197,6 +196,7 @@ private: } // namespace juce +#include "utilities/juce_FlagCache.h" #include "format/juce_AudioPluginFormat.cpp" #include "format/juce_AudioPluginFormatManager.cpp" #include "format_types/juce_LegacyAudioParameter.cpp" @@ -225,6 +225,9 @@ private: #include "utilities/juce_PluginHostType.cpp" #include "utilities/juce_NativeScaleFactorNotifier.cpp" +#include "format_types/juce_LV2PluginFormat.cpp" + #if JUCE_UNIT_TESTS #include "format_types/juce_VST3PluginFormat_test.cpp" + #include "format_types/juce_LV2PluginFormat_test.cpp" #endif diff --git a/modules/juce_audio_processors/juce_audio_processors.h b/modules/juce_audio_processors/juce_audio_processors.h index 1b2acbbfe8..553e3d24b7 100644 --- a/modules/juce_audio_processors/juce_audio_processors.h +++ b/modules/juce_audio_processors/juce_audio_processors.h @@ -87,6 +87,13 @@ #define JUCE_PLUGINHOST_LADSPA 0 #endif +/** Config: JUCE_PLUGINHOST_LV2 + Enables the LV2 plugin hosting classes. + */ +#ifndef JUCE_PLUGINHOST_LV2 + #define JUCE_PLUGINHOST_LV2 0 +#endif + /** Config: JUCE_CUSTOM_VST3_SDK If enabled, the embedded VST3 SDK in JUCE will not be added to the project and instead you should add the path to your custom VST3 SDK to the project's header search paths. Most users shouldn't @@ -129,9 +136,10 @@ #include "scanning/juce_KnownPluginList.h" #include "format_types/juce_AudioUnitPluginFormat.h" #include "format_types/juce_LADSPAPluginFormat.h" +#include "format_types/juce_LV2PluginFormat.h" +#include "format_types/juce_VST3PluginFormat.h" #include "format_types/juce_VSTMidiEventList.h" #include "format_types/juce_VSTPluginFormat.h" -#include "format_types/juce_VST3PluginFormat.h" #include "scanning/juce_PluginDirectoryScanner.h" #include "scanning/juce_PluginListComponent.h" #include "utilities/juce_AudioProcessorParameterWithID.h" diff --git a/modules/juce_audio_processors/juce_audio_processors_lv2_libs.cpp b/modules/juce_audio_processors/juce_audio_processors_lv2_libs.cpp new file mode 100644 index 0000000000..b066f74bc7 --- /dev/null +++ b/modules/juce_audio_processors/juce_audio_processors_lv2_libs.cpp @@ -0,0 +1,28 @@ +/* + ============================================================================== + + This file is part of the JUCE 7 technical preview. + Copyright (c) 2022 - Raw Material Software Limited + + You may use this code under the terms of the GPL v3 + (see www.gnu.org/licenses). + + For the technical preview this file cannot be licensed commercially. + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +#if JUCE_PLUGINHOST_LV2 + #ifndef _CRT_SECURE_NO_WARNINGS + #define _CRT_SECURE_NO_WARNINGS + #endif + + #include + #include + + #include "format_types/juce_LV2SupportLibs.cpp" +#endif diff --git a/modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp b/modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp index 1f06538424..0c9aa6d620 100644 --- a/modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp +++ b/modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp @@ -204,18 +204,11 @@ void AudioPluginInstance::assertOnceOnDeprecatedMethodUse() const noexcept bool AudioPluginInstance::deprecationAssertiontriggered = false; AudioPluginInstance::Parameter::Parameter() + : onStrings { TRANS ("on"), TRANS ("yes"), TRANS ("true") }, + offStrings { TRANS ("off"), TRANS ("no"), TRANS ("false") } { - onStrings.add (TRANS("on")); - onStrings.add (TRANS("yes")); - onStrings.add (TRANS("true")); - - offStrings.add (TRANS("off")); - offStrings.add (TRANS("no")); - offStrings.add (TRANS("false")); } -AudioPluginInstance::Parameter::~Parameter() = default; - String AudioPluginInstance::Parameter::getText (float value, int maximumStringLength) const { if (isBoolean()) diff --git a/modules/juce_audio_processors/processors/juce_AudioPluginInstance.h b/modules/juce_audio_processors/processors/juce_AudioPluginInstance.h index a5ebe2c9a0..0ad7501607 100644 --- a/modules/juce_audio_processors/processors/juce_AudioPluginInstance.h +++ b/modules/juce_audio_processors/processors/juce_AudioPluginInstance.h @@ -143,13 +143,12 @@ protected: { public: Parameter(); - ~Parameter() override; String getText (float value, int maximumStringLength) const override; float getValueForText (const String& text) const override; private: - StringArray onStrings, offStrings; + const StringArray onStrings, offStrings; }; AudioPluginInstance() = default; diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp b/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp index b1ba994480..6b6921b30c 100644 --- a/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp +++ b/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp @@ -1245,6 +1245,7 @@ const char* AudioProcessor::getWrapperTypeDescription (AudioProcessor::WrapperTy case AudioProcessor::wrapperType_AAX: return "AAX"; case AudioProcessor::wrapperType_Standalone: return "Standalone"; case AudioProcessor::wrapperType_Unity: return "Unity"; + case AudioProcessor::wrapperType_LV2: return "LV2"; default: jassertfalse; return {}; } } diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessor.h b/modules/juce_audio_processors/processors/juce_AudioProcessor.h index 639f6522b2..361f13d9a2 100644 --- a/modules/juce_audio_processors/processors/juce_AudioProcessor.h +++ b/modules/juce_audio_processors/processors/juce_AudioProcessor.h @@ -493,12 +493,12 @@ public: /** Returns the audio bus with a given index and direction. If busIndex is invalid then this method will return a nullptr. */ - Bus* getBus (bool isInput, int busIndex) noexcept { return (isInput ? inputBuses : outputBuses)[busIndex]; } + Bus* getBus (bool isInput, int busIndex) noexcept { return getBusImpl (*this, isInput, busIndex); } /** Returns the audio bus with a given index and direction. If busIndex is invalid then this method will return a nullptr. */ - const Bus* getBus (bool isInput, int busIndex) const noexcept { return const_cast (this)->getBus (isInput, busIndex); } + const Bus* getBus (bool isInput, int busIndex) const noexcept { return getBusImpl (*this, isInput, busIndex); } //============================================================================== /** Callback to query if a bus can currently be added. @@ -897,7 +897,7 @@ public: processBlockBypassed but use the returned parameter to control the bypass state instead. - A plug-in can override this function to return a parameter which control's your + A plug-in can override this function to return a parameter which controls your plug-in's bypass. You should always check the value of this parameter in your processBlock callback and bypass any effects if it is non-zero. */ @@ -1241,7 +1241,8 @@ public: wrapperType_RTAS, wrapperType_AAX, wrapperType_Standalone, - wrapperType_Unity + wrapperType_Unity, + wrapperType_LV2 }; /** When loaded by a plugin wrapper, this flag will be set to indicate the type @@ -1490,6 +1491,12 @@ private: return layouts; } + template + static auto getBusImpl (This& t, bool isInput, int busIndex) -> decltype (t.getBus (isInput, busIndex)) + { + return (isInput ? t.inputBuses : t.outputBuses)[busIndex]; + } + //============================================================================== static BusesProperties busesPropertiesFromLayoutArray (const Array&); diff --git a/modules/juce_audio_processors/utilities/juce_FlagCache.h b/modules/juce_audio_processors/utilities/juce_FlagCache.h new file mode 100644 index 0000000000..1a1ebeba54 --- /dev/null +++ b/modules/juce_audio_processors/utilities/juce_FlagCache.h @@ -0,0 +1,175 @@ +/* + ============================================================================== + + This file is part of the JUCE 7 technical preview. + Copyright (c) 2022 - Raw Material Software Limited + + You may use this code under the terms of the GPL v3 + (see www.gnu.org/licenses). + + For the technical preview this file cannot be licensed commercially. + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +#if ! DOXYGEN + +namespace juce +{ + +template +class FlagCache +{ + using FlagType = uint32_t; + +public: + FlagCache() = default; + + explicit FlagCache (size_t items) + : flags (divCeil (items, groupsPerWord)) + { + std::fill (flags.begin(), flags.end(), 0); + } + + void set (size_t index, FlagType bits) + { + const auto flagIndex = index / groupsPerWord; + jassert (flagIndex < flags.size()); + const auto groupIndex = index - (flagIndex * groupsPerWord); + flags[flagIndex].fetch_or (moveToGroupPosition (bits, groupIndex), std::memory_order_acq_rel); + } + + /* Calls the supplied callback for any entries with non-zero flags, and + sets all flags to zero. + */ + template + void ifSet (Callback&& callback) + { + for (size_t flagIndex = 0; flagIndex < flags.size(); ++flagIndex) + { + const auto prevFlags = flags[flagIndex].exchange (0, std::memory_order_acq_rel); + + for (size_t group = 0; group < groupsPerWord; ++group) + { + const auto masked = moveFromGroupPosition (prevFlags, group); + + if (masked != 0) + callback ((flagIndex * groupsPerWord) + group, masked); + } + } + } + + void clear() + { + std::fill (flags.begin(), flags.end(), 0); + } + +private: + /* Given the flags for a single item, and a group index, shifts the flags + so that they are positioned at the appropriate location for that group + index. + + e.g. If the flag type is a uint32_t, and there are 2 flags per item, + then each uint32_t will hold flags for 16 items. The flags for item 0 + are the least significant two bits; the flags for item 15 are the most + significant two bits. + */ + static constexpr FlagType moveToGroupPosition (FlagType ungrouped, size_t groupIndex) + { + return (ungrouped & groupMask) << (groupIndex * bitsPerFlagGroup); + } + + /* Given a set of grouped flags for multiple items, and a group index, + extracts the flags set for an item at that group index. + + e.g. If the flag type is a uint32_t, and there are 2 flags per item, + then each uint32_t will hold flags for 16 items. Asking for groupIndex + 0 will return the least significant two bits; asking for groupIndex 15 + will return the most significant two bits. + */ + static constexpr FlagType moveFromGroupPosition (FlagType grouped, size_t groupIndex) + { + return (grouped >> (groupIndex * bitsPerFlagGroup)) & groupMask; + } + + static constexpr size_t findNextPowerOfTwoImpl (size_t n, size_t shift) + { + return shift == 32 ? n : findNextPowerOfTwoImpl (n | (n >> shift), shift * 2); + } + + static constexpr size_t findNextPowerOfTwo (size_t value) + { + return findNextPowerOfTwoImpl (value - 1, 1) + 1; + } + + static constexpr size_t divCeil (size_t a, size_t b) + { + return (a / b) + ((a % b) != 0); + } + + static constexpr size_t bitsPerFlagGroup = findNextPowerOfTwo (requiredFlagBitsPerItem); + static constexpr size_t groupsPerWord = (8 * sizeof (FlagType)) / bitsPerFlagGroup; + static constexpr FlagType groupMask = ((FlagType) 1 << requiredFlagBitsPerItem) - 1; + + std::vector> flags; +}; + +template +class FlaggedFloatCache +{ +public: + FlaggedFloatCache() = default; + + explicit FlaggedFloatCache (size_t sizeIn) + : values (sizeIn), + flags (sizeIn) + { + std::fill (values.begin(), values.end(), 0.0f); + } + + size_t size() const noexcept { return values.size(); } + + void setValue (size_t index, float value) + { + jassert (index < size()); + values[index].store (value, std::memory_order_relaxed); + } + + void setBits (size_t index, uint32_t bits) { flags.set (index, bits); } + + void setValueAndBits (size_t index, float value, uint32_t bits) + { + setValue (index, value); + setBits (index, bits); + } + + float get (size_t index) const noexcept + { + jassert (index < size()); + return values[index].load (std::memory_order_relaxed); + } + + /* Calls the supplied callback for any entries which have been modified + since the last call to this function. + */ + template + void ifSet (Callback&& callback) + { + flags.ifSet ([this, &callback] (size_t groupIndex, uint32_t bits) + { + callback (groupIndex, values[groupIndex].load (std::memory_order_relaxed), bits); + }); + } + +private: + std::vector> values; + FlagCache flags; +}; + +} // namespace juce + +#endif