Date: Friday, June 24, 2022 @ 18:15:31 Author: dvzrv Revision: 1239385
archrelease: copy trunk to community-testing-x86_64 Added: juce/repos/community-testing-x86_64/ juce/repos/community-testing-x86_64/PKGBUILD (from rev 1239384, juce/trunk/PKGBUILD) juce/repos/community-testing-x86_64/juce-6.1.2-cmake_install.patch (from rev 1239384, juce/trunk/juce-6.1.2-cmake_install.patch) juce/repos/community-testing-x86_64/juce-6.1.2-cmake_juce_utils.patch (from rev 1239384, juce/trunk/juce-6.1.2-cmake_juce_utils.patch) juce/repos/community-testing-x86_64/juce-6.1.2-devendor_libs.patch (from rev 1239384, juce/trunk/juce-6.1.2-devendor_libs.patch) juce/repos/community-testing-x86_64/juce-6.1.2-fst_vst.patch (from rev 1239384, juce/trunk/juce-6.1.2-fst_vst.patch) juce/repos/community-testing-x86_64/juce-6.1.2-projucer_disable_update_check.patch (from rev 1239384, juce/trunk/juce-6.1.2-projucer_disable_update_check.patch) juce/repos/community-testing-x86_64/juce-6.1.2-projucer_juce_paths.patch (from rev 1239384, juce/trunk/juce-6.1.2-projucer_juce_paths.patch) juce/repos/community-testing-x86_64/juce-6.1.3-cmake_link_against_system_deps.patch (from rev 1239384, juce/trunk/juce-6.1.3-cmake_link_against_system_deps.patch) juce/repos/community-testing-x86_64/juce_VSTInterface.h (from rev 1239384, juce/trunk/juce_VSTInterface.h) -------------------------------------------------+ PKGBUILD | 116 +++ juce-6.1.2-cmake_install.patch | 48 + juce-6.1.2-cmake_juce_utils.patch | 20 juce-6.1.2-devendor_libs.patch | 87 ++ juce-6.1.2-fst_vst.patch | 27 juce-6.1.2-projucer_disable_update_check.patch | 11 juce-6.1.2-projucer_juce_paths.patch | 22 juce-6.1.3-cmake_link_against_system_deps.patch | 88 ++ juce_VSTInterface.h | 814 ++++++++++++++++++++++ 9 files changed, 1233 insertions(+) Copied: juce/repos/community-testing-x86_64/PKGBUILD (from rev 1239384, juce/trunk/PKGBUILD) =================================================================== --- community-testing-x86_64/PKGBUILD (rev 0) +++ community-testing-x86_64/PKGBUILD 2022-06-24 18:15:31 UTC (rev 1239385) @@ -0,0 +1,116 @@ +# Maintainer: David Runge <dv...@archlinux.org> + +_name=JUCE +pkgbase=juce +pkgname=(juce juce-docs) +pkgver=7.0.0 +pkgrel=1 +pkgdesc="Cross-platform C++ framework" +arch=(x86_64) +url="https://github.com/juce-framework/juce/" +license=(Apache BSD GPL3 ISC) +makedepends=(alsa-lib cmake freetype2 doxygen flac gendesk graphviz gtk3 jack +ladspa libjpeg-turbo libpng libvorbis python webkit2gtk zlib) +options=(debug) +source=( + $pkgname-$pkgver.tar.gz::https://github.com/juce-framework/$pkgname/archive/$pkgver.tar.gz + $pkgname-6.1.2-cmake_install.patch + $pkgname-6.1.2-cmake_juce_utils.patch + $pkgname-6.1.3-cmake_link_against_system_deps.patch + $pkgname-6.1.2-devendor_libs.patch + $pkgname-6.1.2-fst_vst.patch + $pkgname-6.1.2-projucer_disable_update_check.patch + $pkgname-6.1.2-projucer_juce_paths.patch + ${pkgname}_VSTInterface.h +) +sha512sums=('0347380fce37eae58a2cfd2d14cf3d8025b37e8de87104656cc0699a8de914762199d4e6a214d24afd99cee548ec6aec198a7a04d804a97d0f4ceed49bf9a969' + '52aba043ad3e5154b67f4d140f1d1e936962325763b47bbec57e1ef0a9cccbe6fa0b99598a756cb76853b5c1c5084b32055fc6a76f992b10323d867c82023399' + '91ef9ced3a72db3b24d5892149cb3ac19fd132a0cc48a36afe1664864e7deb4928a3a19a92aee11f277beccbb8e500e4fa1aba74d77a52b3517ce4bb429904c6' + '8d5105e7ea0977cba598c13e53708ca88cdea52c3fc92cca8849eb4e64209d4902d8eef6a1bda0894138f2e1fe4247156b1d39e74207d978534768f92490f2e8' + 'ccec528a1daaf255a4686dad2d59314adab03a935a79893b04a8f04256179a2b1ba84fa563fd6781b314b9d2fc1ddf4892576f77d748e40577747013b3a60bc3' + 'dddf5510f9391fc663db29174215e9575e9ec3956bb649c8a83564b0dcfa1202cc430fadd8faafa390b45c3a2e79ba75e3cdfb118db1e5c35836fad954b67e32' + '2e1b823d9e5611e2c9efa1459f309f9add76d163411bb32cbd8c93f9751c6b97842af430f866f9ebce02d7602a655fd1f9d62f0530e5dc4d2621cbbd5444aad8' + '766b761bf60a09fd01e9e6422df5b34c5305d41672b82b2c54819c581a952af5d7c8c39868c8615b57b14f772624bae4545ec878f2098ab5b8afb2ecf59146a1' + '36a244740872cd203db3e1cebba5a5e245a3300a8c6c76046455ecc38083348f069987d0cba8f569390b4f0ba855799b8ff559cb540f02382b67a46d5b9cc420') +b2sums=('3d5edb5d9bd9cd2ed828a39e025caab9273bccc21ce733d7dca9028a905f52a90c38a8f99b00caf5293f5848c9f447351a249ada23a1d05dbee8d59616ae9a17' + '2419fd707b03a5e33cef03576cbeddb99ab4fd67f4fbec8047668ffb1daf78803cd608d7255893394e6d83dce5afd51608793384567228130a0082bcc9a67f60' + '8accc2bb2def2b6c91084879071299c0d94e652dad61f15457d8a3c49507db30dcbd25f0311cc044661470ff986d7566ef503ec183b6ada535341dcb456d8e6d' + 'cc766ff15858ed1d66c4f79b182903931e9bcfb0c83ab7ef5fccb487185b9ea31284764c232df962b1438671d79710f9a8d5a0e1d36ffeea43fca23b446c80e8' + 'ee72102ecdf57490e9aec0fe6368d61e3c9f86a8b13fd35b3889eac591d716cc98c19b87d6d09360848202b4a108bbc39639d36e28d69908c80ee514b2cf40ee' + 'b0a8758f6a97a487b7734839d59f0c0684d69ac67acba168a707296eeb82fb13c630506dcb05f45e1eaf9620adc881c6c467fdc3f3cfbb0326a4e6ebf36407e8' + 'cd6c59deed414529c49dbf8506905cc7848bb48073e054d4cf2450c17c7268860330bd2d2e6d30e5a2a68cec2106e3498619e85ce602439f75ba9393084498f6' + '4d42e73b4d15f0ef16a55d927de43127518f4420fe54f78b2c2a0e57a08eb192138f65f381017d0f1e6ca286009f63f16c269b58e7405c35894c0bc3ac91de7b' + 'f56e59984bde66d482fdeae3cefc0d4dc9e25c9c170f2f0b46ec53bd63ec72432b1764ff282ef8093c1029a427852c09087827d22023b526786a03977cbb7a32') + +prepare() { + gendesk \ + -n \ + --pkgname "com.juce_projucer" \ + --name "Projucer" \ + --pkgdesc "Cross-platform project manager and C++ code editor" \ + --exec "Projucer" \ + --icon "Projucer" \ + --genericname "Code manager and editor" \ + --categories "Development" + + cd $_name-$pkgver + for _patch in ../*.patch; do + printf "Applying patch %s\n" "${_patch}" + patch -Np1 -i "${_patch}" + done + + # remove bundled sources for flac, libogg, vorbis, libjpeg, libpng and zlib + # as we are linking against system libs + rm -rvf modules/juce_audio_formats/codecs/flac/ \ + modules/juce_audio_formats/codecs/oggvorbis/ \ + modules/juce_audio_plugin_client/AU/ \ + modules/juce_graphics/image_formats/jpglib/ \ + modules/juce_graphics/image_formats/pnglib/ \ + modules/juce_core/zip/zlib/ +} + +build() { + # enable GPL mode via CPPFLAGS + export CPPFLAGS+=" -DJUCER_ENABLE_GPL_MODE=1" + + cmake -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_BUILD_TYPE=None \ + -DJUCE_BUILD_EXTRAS=ON \ + -DJUCE_TOOL_INSTALL_DIR=bin \ + -Wno-dev \ + -B build \ + -S $_name-$pkgver + make VERBOSE=1 -C build + make -C $_name-$pkgver/docs/doxygen +} + +package_juce() { + depends=(gcc-libs glibc hicolor-icon-theme libpng libfreetype.so libjpeg.so + ttf-font zlib) + optdepends=( + 'fst: for building FST plugins' + 'python: for building LV2 plugins' + ) + + make DESTDIR="$pkgdir" VERBOSE=1 -C build install + # projucer has no install target + install -vDm 755 build/extras/Projucer/Projucer_artefacts/None/Projucer -t "$pkgdir/usr/bin/" + # install custom vst2 handling from juce < 5.4.1 + install -vDm 644 juce_VSTInterface.h -t "$pkgdir/usr/share/juce/modules/juce_audio_processors/format_types/" + # xdg desktop integration + install -vDm 644 *.desktop -t "$pkgdir/usr/share/applications/" + install -vDm 644 $_name-$pkgver/examples/Assets/juce_icon.png "$pkgdir/usr/share/icons/hicolor/512x512/apps/Projucer.png" + # docs + install -vDm 644 $_name-$pkgver/{{BREAKING-CHANGES,ChangeList}.txt,README.md} -t "$pkgdir/usr/share/doc/$pkgname/" + # license + install -vDm 644 $_name-$pkgver/LICENSE.md -t "$pkgdir/usr/share/licenses/$pkgname/" +} + +package_juce-docs() { + ( + cd $_name-$pkgver/docs/doxygen/doc + find . -type f -exec install -vDm 644 {} "$pkgdir/usr/share/doc/$pkgbase/html/"{} \; + ) + # license + install -vDm 644 $_name-$pkgver/LICENSE.md -t "$pkgdir/usr/share/licenses/$pkgname/" +} Copied: juce/repos/community-testing-x86_64/juce-6.1.2-cmake_install.patch (from rev 1239384, juce/trunk/juce-6.1.2-cmake_install.patch) =================================================================== --- community-testing-x86_64/juce-6.1.2-cmake_install.patch (rev 0) +++ community-testing-x86_64/juce-6.1.2-cmake_install.patch 2022-06-24 18:15:31 UTC (rev 1239385) @@ -0,0 +1,48 @@ +diff -ruN a/CMakeLists.txt b/CMakeLists.txt +--- a/CMakeLists.txt 2021-09-20 14:26:04.000000000 +0200 ++++ b/CMakeLists.txt 2021-09-25 23:53:15.171028235 +0200 +@@ -119,10 +119,10 @@ + COMPATIBILITY ExactVersion + ${extra_version_arg}) + +-set(JUCE_INSTALL_DESTINATION "lib/cmake/JUCE-${JUCE_VERSION}" CACHE STRING ++set(JUCE_INSTALL_DESTINATION "lib/cmake/juce" CACHE STRING + "The location, relative to the install prefix, where the JUCE config file will be installed") + +-set(JUCE_MODULE_PATH "include/JUCE-${JUCE_VERSION}/modules") ++set(JUCE_MODULE_PATH "share/juce/modules") + set(UTILS_INSTALL_DIR "${JUCE_INSTALL_DESTINATION}") + set(JUCEAIDE_PATH "${JUCE_TOOL_INSTALL_DIR}/${JUCE_JUCEAIDE_NAME}") + configure_package_config_file("${JUCE_CMAKE_UTILS_DIR}/JUCEConfig.cmake.in" +@@ -130,7 +130,6 @@ + PATH_VARS UTILS_INSTALL_DIR JUCEAIDE_PATH JUCE_MODULE_PATH + INSTALL_DESTINATION "${JUCE_INSTALL_DESTINATION}") + +-set(JUCE_MODULE_PATH "${JUCE_MODULES_DIR}") + set(UTILS_INSTALL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/extras/Build/CMake") + get_target_property(JUCEAIDE_PATH juceaide IMPORTED_LOCATION) + configure_package_config_file("${JUCE_CMAKE_UTILS_DIR}/JUCEConfig.cmake.in" +diff -ruN a/extras/Build/juceaide/CMakeLists.txt b/extras/Build/juceaide/CMakeLists.txt +--- a/extras/Build/juceaide/CMakeLists.txt 2021-09-20 14:26:04.000000000 +0200 ++++ b/extras/Build/juceaide/CMakeLists.txt 2021-09-25 21:41:25.590399181 +0200 +@@ -100,7 +100,7 @@ + + add_executable(juce::juceaide ALIAS juceaide) + +- set(JUCE_TOOL_INSTALL_DIR "bin/JUCE-${JUCE_VERSION}" CACHE STRING ++ set(JUCE_TOOL_INSTALL_DIR "bin" CACHE STRING + "The location, relative to the install prefix, where juceaide will be installed") + + install(PROGRAMS "${imported_location}" DESTINATION "${JUCE_TOOL_INSTALL_DIR}") +diff -ruN a/modules/CMakeLists.txt b/modules/CMakeLists.txt +--- a/modules/CMakeLists.txt 2021-09-20 14:26:04.000000000 +0200 ++++ b/modules/CMakeLists.txt 2021-09-25 21:39:39.876766842 +0200 +@@ -22,7 +22,7 @@ + # ============================================================================== + + juce_add_modules( +- INSTALL_PATH "include/JUCE-${JUCE_VERSION}/modules" ++ INSTALL_PATH "share/juce/modules" + ALIAS_NAMESPACE juce + juce_analytics + juce_audio_basics Copied: juce/repos/community-testing-x86_64/juce-6.1.2-cmake_juce_utils.patch (from rev 1239384, juce/trunk/juce-6.1.2-cmake_juce_utils.patch) =================================================================== --- community-testing-x86_64/juce-6.1.2-cmake_juce_utils.patch (rev 0) +++ community-testing-x86_64/juce-6.1.2-cmake_juce_utils.patch 2022-06-24 18:15:31 UTC (rev 1239385) @@ -0,0 +1,20 @@ +diff -ruN a/extras/Build/CMake/JUCEUtils.cmake b/extras/Build/CMake/JUCEUtils.cmake +--- a/extras/Build/CMake/JUCEUtils.cmake 2021-09-20 14:26:04.000000000 +0200 ++++ b/extras/Build/CMake/JUCEUtils.cmake 2021-09-25 19:28:31.202649065 +0200 +@@ -83,6 +83,7 @@ + if((CMAKE_SYSTEM_NAME STREQUAL "Linux") OR (CMAKE_SYSTEM_NAME MATCHES ".*BSD")) + _juce_create_pkgconfig_target(JUCE_CURL_LINUX_DEPS libcurl) + _juce_create_pkgconfig_target(JUCE_BROWSER_LINUX_DEPS webkit2gtk-4.0 gtk+-x11-3.0) ++ _juce_create_pkgconfig_target(JUCE_IMG_LINUX_DEPS libjpeg libpng) + elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin") + find_program(JUCE_XCRUN xcrun) + +@@ -225,6 +226,8 @@ + if(needs_browser) + target_link_libraries(${target} PRIVATE juce::pkgconfig_JUCE_BROWSER_LINUX_DEPS) + endif() ++ ++ target_link_libraries(${target} PRIVATE juce::pkgconfig_JUCE_IMG_LINUX_DEPS) + elseif(APPLE) + get_target_property(needs_storekit ${target} JUCE_NEEDS_STORE_KIT) + Copied: juce/repos/community-testing-x86_64/juce-6.1.2-devendor_libs.patch (from rev 1239384, juce/trunk/juce-6.1.2-devendor_libs.patch) =================================================================== --- community-testing-x86_64/juce-6.1.2-devendor_libs.patch (rev 0) +++ community-testing-x86_64/juce-6.1.2-devendor_libs.patch 2022-06-24 18:15:31 UTC (rev 1239385) @@ -0,0 +1,87 @@ +diff -ruN a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp +--- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp 2021-09-20 14:26:04.000000000 +0200 ++++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp 2021-09-26 21:02:34.760731676 +0200 +@@ -528,6 +528,39 @@ + packages.add ("gtk+-x11-3.0"); + } + ++ // as vendored libraries were removed, we need to link against system libraries ++ if (project.getEnabledModules().isModuleEnabled ("juce_core")) ++ { ++ packages.add ("zlib"); ++ } ++ if (project.getEnabledModules().isModuleEnabled ("juce_graphics")) ++ { ++ packages.add ("libjpeg"); ++ packages.add ("libpng"); ++ } ++ if (project.getEnabledModules().isModuleEnabled ("juce_audio_formats")) ++ { ++ if(project.isConfigFlagEnabled ("JUCE_USE_FLAC", true)) ++ { ++ packages.add ("flac"); ++ } ++ ++ if(project.isConfigFlagEnabled ("JUCE_USE_OGGVORBIS", true)) ++ { ++ packages.add ("vorbis"); ++ packages.add ("vorbisfile"); ++ packages.add ("vorbisenc"); ++ packages.add ("ogg"); ++ } ++ } ++ if (project.getEnabledModules().isModuleEnabled ("juce_audio_devices")) ++ { ++ if(project.isConfigFlagEnabled ("JUCE_JACK", true)) ++ { ++ packages.add ("jack"); ++ } ++ } ++ + packages.removeEmptyStrings(); + packages.removeDuplicates (false); + +diff -ruN a/modules/juce_core/juce_core.h b/modules/juce_core/juce_core.h +--- a/modules/juce_core/juce_core.h 2021-09-20 14:26:04.000000000 +0200 ++++ b/modules/juce_core/juce_core.h 2021-09-26 21:16:41.501526112 +0200 +@@ -65,6 +65,31 @@ + + #include "system/juce_TargetPlatform.h" + ++#ifdef JUCE_INCLUDE_ZLIB_CODE ++# undef JUCE_INCLUDE_ZLIB_CODE ++#endif ++#define JUCE_INCLUDE_ZLIB_CODE 0 ++ ++#ifdef JUCE_INCLUDE_FLAC_CODE ++# undef JUCE_INCLUDE_FLAC_CODE ++#endif ++#define JUCE_INCLUDE_FLAC_CODE 0 ++ ++#ifdef JUCE_INCLUDE_OGGVORBIS_CODE ++# undef JUCE_INCLUDE_OGGVORBIS_CODE ++#endif ++#define JUCE_INCLUDE_OGGVORBIS_CODE 0 ++ ++#ifdef JUCE_INCLUDE_JPEGLIB_CODE ++# undef JUCE_INCLUDE_JPEGLIB_CODE ++#endif ++#define JUCE_INCLUDE_JPEGLIB_CODE 0 ++ ++#ifdef JUCE_INCLUDE_PNGLIB_CODE ++# undef JUCE_INCLUDE_PNGLIB_CODE ++#endif ++#define JUCE_INCLUDE_PNGLIB_CODE 0 ++ + //============================================================================== + /** Config: JUCE_FORCE_DEBUG + +@@ -124,7 +149,7 @@ + specify the path where your zlib headers live. + */ + #ifndef JUCE_INCLUDE_ZLIB_CODE +- #define JUCE_INCLUDE_ZLIB_CODE 1 ++ #define JUCE_INCLUDE_ZLIB_CODE 0 + #endif + + #ifndef JUCE_ZLIB_INCLUDE_PATH Copied: juce/repos/community-testing-x86_64/juce-6.1.2-fst_vst.patch (from rev 1239384, juce/trunk/juce-6.1.2-fst_vst.patch) =================================================================== --- community-testing-x86_64/juce-6.1.2-fst_vst.patch (rev 0) +++ community-testing-x86_64/juce-6.1.2-fst_vst.patch 2022-06-24 18:15:31 UTC (rev 1239385) @@ -0,0 +1,27 @@ +diff -ruN a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp +--- a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp 2021-09-20 14:26:04.000000000 +0200 ++++ b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp 2021-09-26 00:58:02.047887074 +0200 +@@ -84,8 +84,7 @@ + // field in the Projucer. The VST2 SDK can be obtained from the + // vstsdk3610_11_06_2018_build_37 (or older) VST3 SDK or JUCE version 5.3.2. You + // also need a VST2 license from Steinberg to distribute VST2 plug-ins. +-#include "pluginterfaces/vst2.x/aeffect.h" +-#include "pluginterfaces/vst2.x/aeffectx.h" ++#include "../../juce_audio_processors/format_types/juce_VSTInterface.h" + } + + JUCE_END_IGNORE_WARNINGS_MSVC +diff -ruN a/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp b/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp +--- a/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp 2021-09-20 14:26:04.000000000 +0200 ++++ b/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp 2021-09-26 01:03:15.142161924 +0200 +@@ -46,8 +46,8 @@ + // paths or use the "VST (Legacy) SDK Folder" field in the Projucer. The VST2 + // SDK can be obtained from the vstsdk3610_11_06_2018_build_37 (or older) VST3 + // SDK or JUCE version 5.3.2. +-#include <pluginterfaces/vst2.x/aeffect.h> +-#include <pluginterfaces/vst2.x/aeffectx.h> ++#define FST2VST 1 ++#include <pluginterfaces/fst/fst.h> + } + + #include "juce_VSTCommon.h" Copied: juce/repos/community-testing-x86_64/juce-6.1.2-projucer_disable_update_check.patch (from rev 1239384, juce/trunk/juce-6.1.2-projucer_disable_update_check.patch) =================================================================== --- community-testing-x86_64/juce-6.1.2-projucer_disable_update_check.patch (rev 0) +++ community-testing-x86_64/juce-6.1.2-projucer_disable_update_check.patch 2022-06-24 18:15:31 UTC (rev 1239385) @@ -0,0 +1,11 @@ +diff -ruN a/extras/Projucer/Source/Application/jucer_AutoUpdater.cpp b/extras/Projucer/Source/Application/jucer_AutoUpdater.cpp +--- a/extras/Projucer/Source/Application/jucer_AutoUpdater.cpp 2021-09-20 14:26:04.000000000 +0200 ++++ b/extras/Projucer/Source/Application/jucer_AutoUpdater.cpp 2021-09-26 00:16:57.933901901 +0200 +@@ -41,6 +41,7 @@ + + void LatestVersionCheckerAndUpdater::checkForNewVersion (bool background) + { ++ return; + if (! isThreadRunning()) + { + backgroundCheck = background; Copied: juce/repos/community-testing-x86_64/juce-6.1.2-projucer_juce_paths.patch (from rev 1239384, juce/trunk/juce-6.1.2-projucer_juce_paths.patch) =================================================================== --- community-testing-x86_64/juce-6.1.2-projucer_juce_paths.patch (rev 0) +++ community-testing-x86_64/juce-6.1.2-projucer_juce_paths.patch 2022-06-24 18:15:31 UTC (rev 1239385) @@ -0,0 +1,22 @@ +diff -ruN a/extras/Projucer/Source/Settings/jucer_StoredSettings.cpp b/extras/Projucer/Source/Settings/jucer_StoredSettings.cpp +--- a/extras/Projucer/Source/Settings/jucer_StoredSettings.cpp 2021-09-20 14:26:04.000000000 +0200 ++++ b/extras/Projucer/Source/Settings/jucer_StoredSettings.cpp 2021-09-26 00:35:56.119917679 +0200 +@@ -358,15 +358,15 @@ + { + if (key == Ids::jucePath) + { +- return (os == TargetOS::windows ? "C:\\JUCE" : "~/JUCE"); ++ return (os == TargetOS::windows ? "C:\\JUCE" : "/usr/share/doc/juce"); + } + else if (key == Ids::defaultJuceModulePath) + { +- return (os == TargetOS::windows ? "C:\\JUCE\\modules" : "~/JUCE/modules"); ++ return (os == TargetOS::windows ? "C:\\JUCE\\modules" : "/usr/share/juce/modules"); + } + else if (key == Ids::defaultUserModulePath) + { +- return (os == TargetOS::windows ? "C:\\modules" : "~/modules"); ++ return (os == TargetOS::windows ? "C:\\modules" : "~/.local/share/juce/modules"); + } + else if (key == Ids::vstLegacyPath) + { Copied: juce/repos/community-testing-x86_64/juce-6.1.3-cmake_link_against_system_deps.patch (from rev 1239384, juce/trunk/juce-6.1.3-cmake_link_against_system_deps.patch) =================================================================== --- community-testing-x86_64/juce-6.1.3-cmake_link_against_system_deps.patch (rev 0) +++ community-testing-x86_64/juce-6.1.3-cmake_link_against_system_deps.patch 2022-06-24 18:15:31 UTC (rev 1239385) @@ -0,0 +1,88 @@ +diff -ruN a/extras/AudioPerformanceTest/CMakeLists.txt b/extras/AudioPerformanceTest/CMakeLists.txt +--- a/extras/AudioPerformanceTest/CMakeLists.txt 2021-12-08 16:31:22.000000000 +0100 ++++ b/extras/AudioPerformanceTest/CMakeLists.txt 2021-12-12 00:06:59.963753084 +0100 +@@ -32,6 +32,11 @@ + JUCE_USE_CURL=0 JUCE_WEB_BROWSER=0) + + target_link_libraries(AudioPerformanceTest PRIVATE ++ "FLAC" ++ "ogg" ++ "vorbis" ++ "vorbisenc" ++ "vorbisfile" + juce::juce_audio_utils + juce::juce_recommended_config_flags + juce::juce_recommended_lto_flags +diff -ruN a/extras/AudioPluginHost/CMakeLists.txt b/extras/AudioPluginHost/CMakeLists.txt +--- a/extras/AudioPluginHost/CMakeLists.txt 2021-12-08 16:31:22.000000000 +0100 ++++ b/extras/AudioPluginHost/CMakeLists.txt 2021-12-12 00:08:03.473979636 +0100 +@@ -63,6 +63,10 @@ + JUCE_WEB_BROWSER=0) + + target_link_libraries(AudioPluginHost PRIVATE ++ "ogg" ++ "vorbis" ++ "vorbisenc" ++ "vorbisfile" + AudioPluginHostData + juce::juce_audio_utils + juce::juce_cryptography +diff -ruN a/extras/Build/juceaide/CMakeLists.txt b/extras/Build/juceaide/CMakeLists.txt +--- a/extras/Build/juceaide/CMakeLists.txt 2021-12-08 16:31:22.000000000 +0100 ++++ b/extras/Build/juceaide/CMakeLists.txt 2021-12-12 00:06:59.970419777 +0100 +@@ -37,6 +37,9 @@ + JUCE_USE_CURL=0) + + target_link_libraries(juceaide PRIVATE ++ "jpeg" ++ "png16" ++ "z" + juce::juce_build_tools + juce::juce_recommended_config_flags + juce::juce_recommended_lto_flags +diff -ruN a/extras/NetworkGraphicsDemo/CMakeLists.txt b/extras/NetworkGraphicsDemo/CMakeLists.txt +--- a/extras/NetworkGraphicsDemo/CMakeLists.txt 2021-12-08 16:31:22.000000000 +0100 ++++ b/extras/NetworkGraphicsDemo/CMakeLists.txt 2021-12-12 00:06:59.963753084 +0100 +@@ -31,6 +31,13 @@ + JUCE_USE_CURL=0 JUCE_WEB_BROWSER=0) + + target_link_libraries(NetworkGraphicsDemo PRIVATE ++ "FLAC" ++ "ogg" ++ "png" ++ "vorbis" ++ "vorbisenc" ++ "vorbisfile" ++ "z" + juce::juce_audio_utils + juce::juce_cryptography + juce::juce_opengl +diff -ruN a/extras/Projucer/CMakeLists.txt b/extras/Projucer/CMakeLists.txt +--- a/extras/Projucer/CMakeLists.txt 2021-12-08 16:31:22.000000000 +0100 ++++ b/extras/Projucer/CMakeLists.txt 2021-12-12 00:06:59.970419777 +0100 +@@ -158,6 +158,8 @@ + ../Build/CMake/juce_runtime_arch_detection.cpp) + + target_link_libraries(Projucer PRIVATE ++ "png16" ++ "jpeg" + ProjucerData + juce::juce_build_tools + juce::juce_cryptography +diff -ruN a/extras/UnitTestRunner/CMakeLists.txt b/extras/UnitTestRunner/CMakeLists.txt +--- a/extras/UnitTestRunner/CMakeLists.txt 2021-12-08 16:31:22.000000000 +0100 ++++ b/extras/UnitTestRunner/CMakeLists.txt 2021-12-12 00:06:59.963753084 +0100 +@@ -33,6 +33,13 @@ + JUCE_WEB_BROWSER=0) + + target_link_libraries(UnitTestRunner PRIVATE ++ "FLAC" ++ "ogg" ++ "png16" ++ "vorbis" ++ "vorbisenc" ++ "vorbisfile" ++ "z" + juce::juce_analytics + juce::juce_audio_utils + juce::juce_dsp Copied: juce/repos/community-testing-x86_64/juce_VSTInterface.h (from rev 1239384, juce/trunk/juce_VSTInterface.h) =================================================================== --- community-testing-x86_64/juce_VSTInterface.h (rev 0) +++ community-testing-x86_64/juce_VSTInterface.h 2022-06-24 18:15:31 UTC (rev 1239385) @@ -0,0 +1,814 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2017 - ROLI Ltd. + + 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 5 End-User License + Agreement and JUCE 5 Privacy Policy (both updated and effective as of the + 27th April 2017). + + End User License Agreement: www.juce.com/juce-5-licence + Privacy Policy: www.juce.com/juce-5-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. + + ============================================================================== +*/ + +/* + Copyright © 2019 IOhannes m zmölnig + + Provide additional structs & enum-aliases, to allow compilation with JUCE-5.4.1 + + The names of the struct-members and enum-aliases have been derived by comparing + juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp of + both JUCE-5.3.2 and JUCE-5.4.1 + */ + +#define JUCE_VSTINTERFACE_H_INCLUDED + +using namespace juce; + +#if JUCE_MSVC + #define VSTINTERFACECALL __cdecl + #pragma pack(push) + #pragma pack(8) +#elif JUCE_MAC || JUCE_IOS + #define VSTINTERFACECALL + #if JUCE_64BIT + #pragma options align=power + #else + #pragma options align=mac68k + #endif +#else + #define VSTINTERFACECALL + #pragma pack(push, 8) +#endif + +#define VSTCALLBACK VSTINTERFACECALL + +const int32 juceVstInterfaceVersion = 2400; +#define kVstVersion 2400 +const int32 juceVstInterfaceIdentifier = 0x56737450; // The "magic" identifier in the SDK is 'VstP'. + +//============================================================================== +/** Structure used for VSTs + + @tags{Audio} +*/ +struct VstEffectInterface +{ + int32 interfaceIdentifier; + pointer_sized_int (VSTINTERFACECALL* dispatchFunction) (VstEffectInterface*, int32 op, int32 index, pointer_sized_int value, void* ptr, float opt); + void (VSTINTERFACECALL* processAudioFunction) (VstEffectInterface*, float** inputs, float** outputs, int32 numSamples); + void (VSTINTERFACECALL* setParameterValueFunction) (VstEffectInterface*, int32 parameterIndex, float value); + float (VSTINTERFACECALL* getParameterValueFunction) (VstEffectInterface*, int32 parameterIndex); + int32 numPrograms; + int32 numParameters; + int32 numInputChannels; + int32 numOutputChannels; + int32 flags; + pointer_sized_int hostSpace1; + pointer_sized_int hostSpace2; + int32 latency; + int32 deprecated1; + int32 deprecated2; + float deprecated3; + void* effectPointer; + void* userPointer; + int32 plugInIdentifier; + int32 plugInVersion; + void (VSTINTERFACECALL* processAudioInplaceFunction) (VstEffectInterface*, float** inputs, float** outputs, int32 numSamples); + void (VSTINTERFACECALL* processDoubleAudioInplaceFunction) (VstEffectInterface*, double** inputs, double** outputs, int32 numSamples); + char emptySpace[56]; +}; + +struct AEffect; +typedef pointer_sized_int (VSTINTERFACECALL*AEffectDispatcherProc)(AEffect*, int32 op, int32 index, pointer_sized_int value, void* ptr, float opt); +typedef void (VSTINTERFACECALL*AEffectProcessProc)(AEffect*, float** inputs, float** outputs, int32 numSamples); +typedef void (VSTINTERFACECALL*AEffectProcessDoubleProc)(AEffect*, double** inputs, double** outputs, int32 numSamples); +typedef float (VSTINTERFACECALL*AEffectGetParameterProc)(AEffect*, int32 parameterIndex); +typedef void (VSTINTERFACECALL*AEffectSetParameterProc)(AEffect*, int32 parameterIndex, float value); + +struct AEffect +{ + int32 magic; + AEffectDispatcherProc dispatcher; + AEffectProcessProc process; + AEffectSetParameterProc setParameter; + AEffectGetParameterProc getParameter; + int32 numPrograms; + int32 numParams; + int32 numInputs; + int32 numOutputs; + int32 flags; + pointer_sized_int hostSpace1; + pointer_sized_int hostSpace2; + int32 initialDelay; + int32 deprecated1; + int32 deprecated2; + float deprecated3; + void* object; + void* userPointer; + int32 uniqueID; + int32 version; + AEffectProcessProc processReplacing; + AEffectProcessDoubleProc processDoubleReplacing; + char emptySpace[56]; +}; + + +typedef pointer_sized_int (VSTINTERFACECALL* VstHostCallback) (VstEffectInterface*, int32 op, int32 index, pointer_sized_int value, void* ptr, float opt); +typedef pointer_sized_int (VSTINTERFACECALL* audioMasterCallback) (AEffect*, int32 op, int32 index, pointer_sized_int value, void* ptr, float opt); + +enum VstEffectInterfaceFlags +{ + vstEffectFlagHasEditor = 1, + vstEffectFlagInplaceAudio = 16, + vstEffectFlagDataInChunks = 32, + vstEffectFlagIsSynth = 256, + vstEffectFlagInplaceDoubleAudio = 4096 + + , effFlagsHasEditor = vstEffectFlagHasEditor + , effFlagsNoSoundInStop = 0 // FIXXME + , effFlagsProgramChunks = vstEffectFlagDataInChunks + + , effFlagsCanReplacing = vstEffectFlagInplaceAudio + , effFlagsIsSynth = vstEffectFlagIsSynth + , effFlagsCanDoubleReplacing = vstEffectFlagInplaceDoubleAudio +}; + +//============================================================================== +enum VstHostToPlugInOpcodes +{ + plugInOpcodeOpen, + plugInOpcodeClose, + plugInOpcodeSetCurrentProgram, + plugInOpcodeGetCurrentProgram, + plugInOpcodeSetCurrentProgramName, + plugInOpcodeGetCurrentProgramName, + plugInOpcodeGetParameterLabel, + plugInOpcodeGetParameterText, + plugInOpcodeGetParameterName, + plugInOpcodeSetSampleRate = plugInOpcodeGetParameterName + 2, + plugInOpcodeSetBlockSize, + plugInOpcodeResumeSuspend, + plugInOpcodeGetEditorBounds, + plugInOpcodeOpenEditor, + plugInOpcodeCloseEditor, + plugInOpcodeDrawEditor, + plugInOpcodeGetMouse, + plugInOpcodeEditorIdle = plugInOpcodeGetMouse + 2, + plugInOpcodeeffEditorTop, + plugInOpcodeSleepEditor, + plugInOpcodeIdentify, + plugInOpcodeGetData, + plugInOpcodeSetData, + plugInOpcodePreAudioProcessingEvents, + plugInOpcodeIsParameterAutomatable, + plugInOpcodeParameterValueForText, + plugInOpcodeGetProgramName = plugInOpcodeParameterValueForText + 2, + plugInOpcodeConnectInput = plugInOpcodeGetProgramName + 2, + plugInOpcodeConnectOutput, + plugInOpcodeGetInputPinProperties, + plugInOpcodeGetOutputPinProperties, + plugInOpcodeGetPlugInCategory, + plugInOpcodeSetSpeakerConfiguration = plugInOpcodeGetPlugInCategory + 7, + plugInOpcodeSetBypass = plugInOpcodeSetSpeakerConfiguration + 2, + plugInOpcodeGetPlugInName, + plugInOpcodeGetManufacturerName = plugInOpcodeGetPlugInName + 2, + plugInOpcodeGetManufacturerProductName, + plugInOpcodeGetManufacturerVersion, + plugInOpcodeManufacturerSpecific, + plugInOpcodeCanPlugInDo, + plugInOpcodeGetTailSize, + plugInOpcodeIdle, + plugInOpcodeKeyboardFocusRequired = plugInOpcodeIdle + 4, + plugInOpcodeGetVstInterfaceVersion, + plugInOpcodeGetCurrentMidiProgram = plugInOpcodeGetVstInterfaceVersion + 5, + plugInOpcodeGetSpeakerArrangement = plugInOpcodeGetCurrentMidiProgram + 6, + plugInOpcodeNextPlugInUniqueID, + plugInOpcodeStartProcess, + plugInOpcodeStopProcess, + plugInOpcodeSetNumberOfSamplesToProcess, + plugInOpcodeSetSampleFloatType = plugInOpcodeSetNumberOfSamplesToProcess + 4, + pluginOpcodeGetNumMidiInputChannels, + pluginOpcodeGetNumMidiOutputChannels, + plugInOpcodeMaximum = pluginOpcodeGetNumMidiOutputChannels + + , effOpen = plugInOpcodeOpen + , effClose = plugInOpcodeClose + , effSetProgram = plugInOpcodeSetCurrentProgram + , effGetProgram = plugInOpcodeGetCurrentProgram + , effSetProgramName = plugInOpcodeSetCurrentProgramName + , effGetProgramName = plugInOpcodeGetCurrentProgramName + , effGetParamLabel = plugInOpcodeGetParameterLabel + , effGetParamDisplay = plugInOpcodeGetParameterText + , effGetParamName = plugInOpcodeGetParameterName + , effSetSampleRate = plugInOpcodeSetSampleRate + , effSetBlockSize = plugInOpcodeSetBlockSize + , effMainsChanged = plugInOpcodeResumeSuspend + , effEditGetRect = plugInOpcodeGetEditorBounds + , effEditOpen = plugInOpcodeOpenEditor + , effEditClose = plugInOpcodeCloseEditor + , effIdentify = plugInOpcodeIdentify + , effGetChunk = plugInOpcodeGetData + , effSetChunk = plugInOpcodeSetData + , effProcessEvents = plugInOpcodePreAudioProcessingEvents + , effCanBeAutomated = plugInOpcodeIsParameterAutomatable + , effString2Parameter = plugInOpcodeParameterValueForText + , effGetProgramNameIndexed = plugInOpcodeGetProgramName + , effGetInputProperties = plugInOpcodeGetInputPinProperties + , effGetOutputProperties = plugInOpcodeGetOutputPinProperties + , effGetPlugCategory = plugInOpcodeGetPlugInCategory + , effSetSpeakerArrangement = plugInOpcodeSetSpeakerConfiguration + , effSetBypass = plugInOpcodeSetBypass + , effGetEffectName = plugInOpcodeGetPlugInName + , effGetProductString = plugInOpcodeGetManufacturerProductName + , effGetVendorString = plugInOpcodeGetManufacturerName + , effGetVendorVersion = plugInOpcodeGetManufacturerVersion + , effVendorSpecific = plugInOpcodeManufacturerSpecific + , effCanDo = plugInOpcodeCanPlugInDo + , effGetTailSize = plugInOpcodeGetTailSize + , effKeysRequired = plugInOpcodeKeyboardFocusRequired + , effGetVstVersion = plugInOpcodeGetVstInterfaceVersion + , effGetCurrentMidiProgram = plugInOpcodeGetCurrentMidiProgram + , effGetSpeakerArrangement = plugInOpcodeGetSpeakerArrangement + , effSetTotalSampleToProcess = plugInOpcodeSetNumberOfSamplesToProcess + , effSetProcessPrecision = plugInOpcodeSetSampleFloatType + , effGetNumMidiInputChannels = pluginOpcodeGetNumMidiInputChannels + , effGetNumMidiOutputChannels = pluginOpcodeGetNumMidiOutputChannels + + , effConnectInput = plugInOpcodeConnectInput + , effConnectOutput = plugInOpcodeConnectOutput + , effEditIdle = plugInOpcodeEditorIdle + , effIdle = plugInOpcodeIdle + , effShellGetNextPlugin = plugInOpcodeNextPlugInUniqueID + , effStartProcess = plugInOpcodeStartProcess + , effStopProcess = plugInOpcodeStopProcess +}; + + +enum VstPlugInToHostOpcodes +{ + hostOpcodeParameterChanged, + hostOpcodeVstVersion, + hostOpcodeCurrentId, + hostOpcodeIdle, + hostOpcodePinConnected, + hostOpcodePlugInWantsMidi = hostOpcodePinConnected + 2, + hostOpcodeGetTimingInfo, + hostOpcodePreAudioProcessingEvents, + hostOpcodeSetTime, + hostOpcodeTempoAt, + hostOpcodeGetNumberOfAutomatableParameters, + hostOpcodeGetParameterInterval, + hostOpcodeIOModified, + hostOpcodeNeedsIdle, + hostOpcodeWindowSize, + hostOpcodeGetSampleRate, + hostOpcodeGetBlockSize, + hostOpcodeGetInputLatency, + hostOpcodeGetOutputLatency, + hostOpcodeGetPreviousPlugIn, + hostOpcodeGetNextPlugIn, + hostOpcodeWillReplace, + hostOpcodeGetCurrentAudioProcessingLevel, + hostOpcodeGetAutomationState, + hostOpcodeOfflineStart, + hostOpcodeOfflineReadSource, + hostOpcodeOfflineWrite, + hostOpcodeOfflineGetCurrentPass, + hostOpcodeOfflineGetCurrentMetaPass, + hostOpcodeSetOutputSampleRate, + hostOpcodeGetOutputSpeakerConfiguration, + hostOpcodeGetManufacturerName, + hostOpcodeGetProductName, + hostOpcodeGetManufacturerVersion, + hostOpcodeManufacturerSpecific, + hostOpcodeSetIcon, + hostOpcodeCanHostDo, + hostOpcodeGetLanguage, + hostOpcodeOpenEditorWindow, + hostOpcodeCloseEditorWindow, + hostOpcodeGetDirectory, + hostOpcodeUpdateView, + hostOpcodeParameterChangeGestureBegin, + hostOpcodeParameterChangeGestureEnd + + , audioMasterProcessEvents = hostOpcodePreAudioProcessingEvents + , audioMasterWantMidi = hostOpcodePlugInWantsMidi + , audioMasterVendorSpecific = hostOpcodeManufacturerSpecific + , audioMasterAutomate = hostOpcodeParameterChanged + , audioMasterBeginEdit = hostOpcodeParameterChangeGestureBegin + , audioMasterEndEdit = hostOpcodeParameterChangeGestureEnd + , audioMasterUpdateDisplay = hostOpcodeUpdateView + , audioMasterIOChanged = hostOpcodeIOModified + , audioMasterCanDo = hostOpcodeCanHostDo + , audioMasterGetCurrentProcessLevel = hostOpcodeGetCurrentAudioProcessingLevel + , audioMasterGetTime = hostOpcodeGetTimingInfo + , audioMasterSizeWindow = hostOpcodeWindowSize + , audioMasterVersion = hostOpcodeVstVersion + + , audioMasterCloseWindow = hostOpcodeCloseEditorWindow + , audioMasterCurrentId = hostOpcodeCurrentId + , audioMasterGetAutomationState = hostOpcodeGetAutomationState + , audioMasterGetBlockSize = hostOpcodeGetBlockSize + , audioMasterGetDirectory = hostOpcodeGetDirectory + , audioMasterGetInputLatency = hostOpcodeGetInputLatency + , audioMasterGetLanguage = hostOpcodeGetLanguage + , audioMasterGetNextPlug = hostOpcodeGetNextPlugIn + , audioMasterGetNumAutomatableParameters = hostOpcodeGetNumberOfAutomatableParameters + , audioMasterGetOutputLatency = hostOpcodeGetOutputLatency + , audioMasterGetOutputSpeakerArrangement = hostOpcodeGetOutputSpeakerConfiguration + , audioMasterGetParameterQuantization = hostOpcodeGetParameterInterval + , audioMasterGetPreviousPlug = hostOpcodeGetPreviousPlugIn + , audioMasterGetProductString = hostOpcodeGetProductName + , audioMasterGetSampleRate = hostOpcodeGetSampleRate + , audioMasterGetVendorString = hostOpcodeGetManufacturerName + , audioMasterGetVendorVersion = hostOpcodeGetManufacturerVersion + , audioMasterIdle = hostOpcodeIdle + , audioMasterNeedIdle = hostOpcodeNeedsIdle + , audioMasterOfflineGetCurrentMetaPass = hostOpcodeOfflineGetCurrentMetaPass + , audioMasterOfflineGetCurrentPass = hostOpcodeOfflineGetCurrentPass + , audioMasterOfflineRead = hostOpcodeOfflineReadSource + , audioMasterOfflineStart = hostOpcodeOfflineStart + , audioMasterOfflineWrite = hostOpcodeOfflineWrite + , audioMasterOpenWindow = hostOpcodeOpenEditorWindow + , audioMasterPinConnected = hostOpcodePinConnected + , audioMasterSetIcon = hostOpcodeSetIcon + , audioMasterSetOutputSampleRate = hostOpcodeSetOutputSampleRate + , audioMasterSetTime = hostOpcodeSetTime + , audioMasterTempoAt = hostOpcodeTempoAt + , audioMasterWillReplaceOrAccumulate = hostOpcodeWillReplace + +}; +typedef enum VstPlugInToHostOpcodes AudioMasterOpcodesX; + +//============================================================================== +enum VstProcessingSampleType +{ + vstProcessingSampleTypeFloat, + vstProcessingSampleTypeDouble + + , kVstProcessPrecision32 = vstProcessingSampleTypeFloat + , kVstProcessPrecision64 = vstProcessingSampleTypeDouble +}; + +//============================================================================== +// These names must be identical to the Steinberg SDK so JUCE users can set +// exactly what they want. +typedef enum VstPlugInCategory +{ + kPlugCategUnknown, + kPlugCategEffect, + kPlugCategSynth, + kPlugCategAnalysis, + kPlugCategMastering, + kPlugCategSpacializer, + kPlugCategRoomFx, + kPlugSurroundFx, + kPlugCategRestoration, + kPlugCategOfflineProcess, + kPlugCategShell, + kPlugCategGenerator +} VstPlugCategory; + +//============================================================================== +/** Structure used for VSTs + + @tags{Audio} +*/ +struct VstEditorBounds +{ + int16 upper; + int16 leftmost; + int16 lower; + int16 rightmost; +}; +struct ERect { + int16 top; + int16 left; + int16 bottom; + int16 right; +}; + +//============================================================================== +enum VstMaxStringLengths +{ + vstMaxNameLength = 64, + vstMaxParameterOrPinLabelLength = 64, + vstMaxParameterOrPinShortLabelLength = 8, + vstMaxCategoryLength = 24, + vstMaxManufacturerStringLength = 64, + vstMaxPlugInNameStringLength = 64 + + , kVstMaxLabelLen = vstMaxParameterOrPinLabelLength + , kVstMaxShortLabelLen = vstMaxParameterOrPinShortLabelLength + , kVstMaxProductStrLen = vstMaxPlugInNameStringLength + , kVstMaxVendorStrLen = vstMaxManufacturerStringLength +}; + +//============================================================================== +/** Structure used for VSTs + + @tags{Audio} +*/ +struct VstPinInfo +{ + char text[vstMaxParameterOrPinLabelLength]; + int32 flags; + int32 configurationType; + char shortText[vstMaxParameterOrPinShortLabelLength]; + char unused[48]; +}; +struct VstPinProperties +{ + char label[vstMaxParameterOrPinLabelLength]; + int32 flags; + int32 arrangementType; + char shortLabel[vstMaxParameterOrPinShortLabelLength]; + char unused[48]; +}; + +enum VstPinInfoFlags +{ + vstPinInfoFlagIsActive = 1, + vstPinInfoFlagIsStereo = 2, + vstPinInfoFlagValid = 4 + + , kVstPinIsActive = vstPinInfoFlagIsActive + , kVstPinUseSpeaker = vstPinInfoFlagValid + , kVstPinIsStereo = vstPinInfoFlagIsStereo +}; + +//============================================================================== +/** Structure used for VSTs + + @tags{Audio} +*/ +struct VstEvent +{ + int32 type; + int32 byteSize; // size; + int32 deltaFrames; //? sampleOffset; + int32 flags; + char content[16]; +}; + +enum VstEventTypes +{ + vstMidiEventType = 1, + vstSysExEventType = 6, + kVstMidiType = vstMidiEventType, + kVstSysExType = vstSysExEventType +}; + +/** Structure used for VSTs + + @tags{Audio} +*/ +struct VstEvents +{ + int32 numEvents; + pointer_sized_int future; + VstEvent* events[2]; +}; + +/** Structure used for VSTs + + @tags{Audio} +*/ +struct VstMidiEvent +{ + int32 type; + int32 byteSize; // size; + int32 deltaFrames; //? sampleOffset; + int32 flags; + int32 noteLength; // noteSampleLength; + int32 noteOffset; // noteSampleOffset; + char midiData[4]; + char detune; // tuning; + char noteOffVelocity; // noteVelocityOff; + char future1; + char future2; +}; + +enum VstMidiEventFlags +{ + vstMidiEventIsRealtime = 1 +}; + +/** Structure used for VSTs + + @tags{Audio} +*/ +struct VstSysExEvent +{ + int32 type; + int32 byteSize; // size; + int32 deltaFrames; //? offsetSamples; + int32 flags; + int32 dumpBytes; // sysExDumpSize; + pointer_sized_int resvd1; // future1; + char* sysexDump; // sysExDump; + pointer_sized_int resvd2; // future2; +}; +typedef VstSysExEvent VstMidiSysexEvent; + +//============================================================================== +/** Structure used for VSTs + + @tags{Audio} +*/ +struct VstTimingInformation +{ + double samplePosition; + double sampleRate; + double systemTimeNanoseconds; + double musicalPosition; + double tempoBPM; + double lastBarPosition; + double loopStartPosition; + double loopEndPosition; + int32 timeSignatureNumerator; + int32 timeSignatureDenominator; + int32 smpteOffset; + int32 smpteRate; + int32 samplesToNearestClock; + int32 flags; +}; +struct VstTimeInfo +{ + double samplePos; + double sampleRate; + double systemTimeNanoseconds; + double ppqPos; + double tempo; + double barStartPos; + double cycleStartPos; + double cycleEndPos; + int32 timeSigNumerator; + int32 timeSigDenominator; + int32 smpteOffset; + int32 smpteFrameRate; + int32 samplesToNearestClock; + int32 flags; +}; + +enum VstTimingInformationFlags +{ + vstTimingInfoFlagTransportChanged = 1, + vstTimingInfoFlagCurrentlyPlaying = 2, + vstTimingInfoFlagLoopActive = 4, + vstTimingInfoFlagCurrentlyRecording = 8, + vstTimingInfoFlagAutomationWriteModeActive = 64, + vstTimingInfoFlagAutomationReadModeActive = 128, + vstTimingInfoFlagNanosecondsValid = 256, + vstTimingInfoFlagMusicalPositionValid = 512, + vstTimingInfoFlagTempoValid = 1024, + vstTimingInfoFlagLastBarPositionValid = 2048, + vstTimingInfoFlagLoopPositionValid = 4096, + vstTimingInfoFlagTimeSignatureValid = 8192, + vstTimingInfoFlagSmpteValid = 16384, + vstTimingInfoFlagNearestClockValid = 32768 + + , kVstTransportPlaying = vstTimingInfoFlagCurrentlyPlaying + , kVstTransportCycleActive = vstTimingInfoFlagLoopActive + , kVstTransportRecording = vstTimingInfoFlagCurrentlyRecording + , kVstPpqPosValid = vstTimingInfoFlagMusicalPositionValid + , kVstTempoValid = vstTimingInfoFlagTempoValid + , kVstBarsValid = vstTimingInfoFlagLastBarPositionValid + , kVstCyclePosValid = vstTimingInfoFlagLoopPositionValid + , kVstTimeSigValid = vstTimingInfoFlagTimeSignatureValid + , kVstSmpteValid = vstTimingInfoFlagSmpteValid + , kVstClockValid = vstTimingInfoFlagNearestClockValid + + , kVstAutomationReading = vstTimingInfoFlagAutomationReadModeActive + , kVstAutomationWriting = vstTimingInfoFlagAutomationWriteModeActive + , kVstNanosValid = vstTimingInfoFlagNanosecondsValid + , kVstTransportChanged = vstTimingInfoFlagTransportChanged +}; + +//============================================================================== +enum VstSmpteRates +{ + vstSmpteRateFps24, + vstSmpteRateFps25, + vstSmpteRateFps2997, + vstSmpteRateFps30, + vstSmpteRateFps2997drop, + vstSmpteRateFps30drop, + + vstSmpteRate16mmFilm, + vstSmpteRate35mmFilm, + + vstSmpteRateFps239 = vstSmpteRate35mmFilm + 3, + vstSmpteRateFps249, + vstSmpteRateFps599, + vstSmpteRateFps60 + + , kVstSmpte239fps = vstSmpteRateFps239 + , kVstSmpte24fps = vstSmpteRateFps24 + , kVstSmpte25fps = vstSmpteRateFps25 + , kVstSmpte2997fps = vstSmpteRateFps2997 + , kVstSmpte30fps = vstSmpteRateFps30 + , kVstSmpte2997dfps = vstSmpteRateFps2997drop + , kVstSmpte30dfps = vstSmpteRateFps30drop + , kVstSmpteFilm16mm = vstSmpteRate16mmFilm + , kVstSmpteFilm35mm = vstSmpteRate35mmFilm + , kVstSmpte249fps = vstSmpteRateFps249 + , kVstSmpte599fps = vstSmpteRateFps599 + , kVstSmpte60fps = vstSmpteRateFps60 +}; + +//============================================================================== +/** Structure used for VSTs + + @tags{Audio} +*/ +struct VstIndividualSpeakerInfo +{ + float azimuthalAngle; + float elevationAngle; + float radius; + float reserved; + char label[vstMaxNameLength]; + int32 type; + char unused[28]; +}; +typedef VstIndividualSpeakerInfo VstSpeakerProperties; + +enum VstIndividualSpeakerType +{ + vstIndividualSpeakerTypeUndefined = 0x7fffffff, + vstIndividualSpeakerTypeMono = 0, + vstIndividualSpeakerTypeLeft, + vstIndividualSpeakerTypeRight, + vstIndividualSpeakerTypeCentre, + vstIndividualSpeakerTypeLFE, + vstIndividualSpeakerTypeLeftSurround, + vstIndividualSpeakerTypeRightSurround, + vstIndividualSpeakerTypeLeftCentre, + vstIndividualSpeakerTypeRightCentre, + vstIndividualSpeakerTypeSurround, + vstIndividualSpeakerTypeCentreSurround = vstIndividualSpeakerTypeSurround, + vstIndividualSpeakerTypeLeftRearSurround, + vstIndividualSpeakerTypeRightRearSurround, + vstIndividualSpeakerTypeTopMiddle, + vstIndividualSpeakerTypeTopFrontLeft, + vstIndividualSpeakerTypeTopFrontCentre, + vstIndividualSpeakerTypeTopFrontRight, + vstIndividualSpeakerTypeTopRearLeft, + vstIndividualSpeakerTypeTopRearCentre, + vstIndividualSpeakerTypeTopRearRight, + vstIndividualSpeakerTypeLFE2 + + , kSpeakerL = vstIndividualSpeakerTypeLeft + , kSpeakerR = vstIndividualSpeakerTypeRight + , kSpeakerC = vstIndividualSpeakerTypeCentre + , kSpeakerLfe = vstIndividualSpeakerTypeLFE + , kSpeakerLs = vstIndividualSpeakerTypeLeftSurround + , kSpeakerRs = vstIndividualSpeakerTypeRightSurround + , kSpeakerLc = vstIndividualSpeakerTypeLeftCentre + , kSpeakerRc = vstIndividualSpeakerTypeRightCentre + , kSpeakerS = vstIndividualSpeakerTypeSurround + , kSpeakerSl = vstIndividualSpeakerTypeLeftRearSurround + , kSpeakerSr = vstIndividualSpeakerTypeRightRearSurround + , kSpeakerTm = vstIndividualSpeakerTypeTopMiddle + , kSpeakerTfl = vstIndividualSpeakerTypeTopFrontLeft + , kSpeakerTfc = vstIndividualSpeakerTypeTopFrontCentre + , kSpeakerTfr = vstIndividualSpeakerTypeTopFrontRight + , kSpeakerTrl = vstIndividualSpeakerTypeTopRearLeft + , kSpeakerTrc = vstIndividualSpeakerTypeTopRearCentre + , kSpeakerTrr = vstIndividualSpeakerTypeTopRearRight + , kSpeakerLfe2 = vstIndividualSpeakerTypeLFE2 +}; + +/** Structure used for VSTs + + @tags{Audio} +*/ +struct VstSpeakerConfiguration +{ + int32 type; + int32 numChannels; // numberOfChannels; + VstIndividualSpeakerInfo speakers[8]; +}; +typedef VstSpeakerConfiguration VstSpeakerArrangement; + +enum VstSpeakerConfigurationType +{ + vstSpeakerConfigTypeUser = -2, + vstSpeakerConfigTypeEmpty = -1, + vstSpeakerConfigTypeMono = 0, + vstSpeakerConfigTypeLR, + vstSpeakerConfigTypeLsRs, + vstSpeakerConfigTypeLcRc, + vstSpeakerConfigTypeSlSr, + vstSpeakerConfigTypeCLfe, + vstSpeakerConfigTypeLRC, + vstSpeakerConfigTypeLRS, + vstSpeakerConfigTypeLRCLfe, + vstSpeakerConfigTypeLRLfeS, + vstSpeakerConfigTypeLRCS, + vstSpeakerConfigTypeLRLsRs, + vstSpeakerConfigTypeLRCLfeS, + vstSpeakerConfigTypeLRLfeLsRs, + vstSpeakerConfigTypeLRCLsRs, + vstSpeakerConfigTypeLRCLfeLsRs, + vstSpeakerConfigTypeLRCLsRsCs, + vstSpeakerConfigTypeLRLsRsSlSr, + vstSpeakerConfigTypeLRCLfeLsRsCs, + vstSpeakerConfigTypeLRLfeLsRsSlSr, + vstSpeakerConfigTypeLRCLsRsLcRc, + vstSpeakerConfigTypeLRCLsRsSlSr, + vstSpeakerConfigTypeLRCLfeLsRsLcRc, + vstSpeakerConfigTypeLRCLfeLsRsSlSr, + vstSpeakerConfigTypeLRCLsRsLcRcCs, + vstSpeakerConfigTypeLRCLsRsCsSlSr, + vstSpeakerConfigTypeLRCLfeLsRsLcRcCs, + vstSpeakerConfigTypeLRCLfeLsRsCsSlSr, + vstSpeakerConfigTypeLRCLfeLsRsTflTfcTfrTrlTrrLfe2 + + , kSpeakerArrMono = vstSpeakerConfigTypeMono + , kSpeakerArrStereo = vstSpeakerConfigTypeLR + , kSpeakerArrStereoCLfe = vstSpeakerConfigTypeCLfe + , kSpeakerArrStereoCenter = vstSpeakerConfigTypeLcRc + , kSpeakerArrStereoSide = vstSpeakerConfigTypeSlSr + , kSpeakerArrStereoSurround = vstSpeakerConfigTypeLsRs + , kSpeakerArr30Cine = vstSpeakerConfigTypeLRC + , kSpeakerArr31Cine = vstSpeakerConfigTypeLRCLfe + , kSpeakerArr40Cine = vstSpeakerConfigTypeLRCS + , kSpeakerArr41Cine = vstSpeakerConfigTypeLRCLfeS + , kSpeakerArr60Cine = vstSpeakerConfigTypeLRCLsRsCs + , kSpeakerArr61Cine = vstSpeakerConfigTypeLRCLfeLsRsCs + , kSpeakerArr70Cine = vstSpeakerConfigTypeLRCLsRsLcRc // create7point0SDDS + , kSpeakerArr71Cine = vstSpeakerConfigTypeLRCLfeLsRsLcRc + , kSpeakerArr80Cine = vstSpeakerConfigTypeLRCLsRsLcRcCs + , kSpeakerArr81Cine = vstSpeakerConfigTypeLRCLfeLsRsLcRcCs + , kSpeakerArr30Music = vstSpeakerConfigTypeLRS + , kSpeakerArr31Music = vstSpeakerConfigTypeLRLfeS + , kSpeakerArr40Music = vstSpeakerConfigTypeLRLsRs + , kSpeakerArr41Music = vstSpeakerConfigTypeLRLfeLsRs + , kSpeakerArr60Music = vstSpeakerConfigTypeLRLsRsSlSr + , kSpeakerArr61Music = vstSpeakerConfigTypeLRLfeLsRsSlSr + , kSpeakerArr70Music = vstSpeakerConfigTypeLRCLsRsSlSr // create7point0 + , kSpeakerArr71Music = vstSpeakerConfigTypeLRCLfeLsRsSlSr + , kSpeakerArr80Music = vstSpeakerConfigTypeLRCLsRsCsSlSr + , kSpeakerArr81Music = vstSpeakerConfigTypeLRCLfeLsRsCsSlSr + , kSpeakerArr50 = vstSpeakerConfigTypeLRCLsRs + , kSpeakerArr51 = vstSpeakerConfigTypeLRCLfeLsRs + , kSpeakerArr102 = vstSpeakerConfigTypeLRCLfeLsRsTflTfcTfrTrlTrrLfe2 + , kSpeakerArrEmpty = vstSpeakerConfigTypeEmpty + , kSpeakerArrUserDefined = vstSpeakerConfigTypeUser +}; + +#if JUCE_BIG_ENDIAN + #define JUCE_MULTICHAR_CONSTANT(a, b, c, d) (a | (((uint32) b) << 8) | (((uint32) c) << 16) | (((uint32) d) << 24)) +#else + #define JUCE_MULTICHAR_CONSTANT(a, b, c, d) (d | (((uint32) c) << 8) | (((uint32) b) << 16) | (((uint32) a) << 24)) +#endif + +enum PresonusExtensionConstants +{ + presonusVendorID = JUCE_MULTICHAR_CONSTANT ('P', 'r', 'e', 'S'), + presonusSetContentScaleFactor = JUCE_MULTICHAR_CONSTANT ('A', 'e', 'C', 's') +}; + +//============================================================================== +/** Structure used for VSTs + + @tags{Audio} +*/ +struct vst2FxBank +{ + int32 magic1; + int32 size; + int32 magic2; + int32 version1; + int32 fxID; + int32 version2; + int32 elements; + int32 current; + char shouldBeZero[124]; + int32 chunkSize; + char chunk[1]; +}; + +#if JUCE_MSVC + #pragma pack(pop) +#elif JUCE_MAC || JUCE_IOS + #pragma options align=reset +#else + #pragma pack(pop) +#endif