diff -Nru juce-6.1.4~ds0/BREAKING-CHANGES.txt juce-6.1.5~ds0/BREAKING-CHANGES.txt --- juce-6.1.4~ds0/BREAKING-CHANGES.txt 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/BREAKING-CHANGES.txt 2022-01-26 13:07:09.000000000 +0000 @@ -1,6 +1,28 @@ JUCE breaking changes ===================== +Version 6.1.5 +============= + +Change +------ +XWindowSystemUtilities::XSettings now has a private constructor. + +Possible Issues +--------------- +User code that uses XSettings::XSettings() will fail to build. + +Workaround +---------- +Use the XSettings::createXSettings() factory function. + +Rationale +--------- +The XSETTINGS facility is not available on all Linux distributions and the old +constructor would fail on such systems, potentially crashing the application. +The factory function will return nullptr in such situations instead. + + Version 6.1.3 ============= diff -Nru juce-6.1.4~ds0/ChangeList.txt juce-6.1.5~ds0/ChangeList.txt --- juce-6.1.4~ds0/ChangeList.txt 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/ChangeList.txt 2022-01-26 13:07:09.000000000 +0000 @@ -3,6 +3,15 @@ This file just lists the more notable headline features. For more detailed info about changes and bugfixes please see the git log and BREAKING-CHANGES.txt. +Version 6.1.5 + - Improved the accessibility framework + - Added handling of non-Latin virtual key codes on macOS + - Improved X11 compatibility + - Updated the iOS in-app purchases workflow + - Improved macOS windowing behaviour + - Improved MinGW-w64 compatibility + - Added an MPEKeyboardComponent class + Version 6.1.4 - Restored Projucer project saving behavior - Fixed a CGImage memory access violation on Monterey diff -Nru juce-6.1.4~ds0/CMakeLists.txt juce-6.1.5~ds0/CMakeLists.txt --- juce-6.1.4~ds0/CMakeLists.txt 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/CMakeLists.txt 2022-01-26 13:07:09.000000000 +0000 @@ -23,7 +23,7 @@ cmake_minimum_required(VERSION 3.15) -project(JUCE VERSION 6.1.4 LANGUAGES C CXX) +project(JUCE VERSION 6.1.5 LANGUAGES C CXX) include(CMakeDependentOption) diff -Nru juce-6.1.4~ds0/debian/changelog juce-6.1.5~ds0/debian/changelog --- juce-6.1.4~ds0/debian/changelog 2022-01-10 08:12:48.000000000 +0000 +++ juce-6.1.5~ds0/debian/changelog 2022-01-31 10:55:24.000000000 +0000 @@ -1,3 +1,12 @@ +juce (6.1.5~ds0-1) unstable; urgency=medium + + * New upstream version 6.1.5~ds0 + + Refresh patches + * Update dates in d/copyright + + Regenerate d/copyright_hints + + -- IOhannes m zmölnig (Debian/GNU) Mon, 31 Jan 2022 11:55:24 +0100 + juce (6.1.4~ds0-1) unstable; urgency=medium * New upstream version 6.1.4~ds0 diff -Nru juce-6.1.4~ds0/debian/copyright juce-6.1.5~ds0/debian/copyright --- juce-6.1.4~ds0/debian/copyright 2022-01-10 08:12:48.000000000 +0000 +++ juce-6.1.5~ds0/debian/copyright 2022-01-31 10:55:24.000000000 +0000 @@ -12,7 +12,7 @@ .git* Files: * -Copyright: 2015-2020, Raw Material Software Ltd +Copyright: 2015-2022, Raw Material Software Ltd License: GPL-3 Files: @@ -20,7 +20,7 @@ modules/juce_audio_devices/* modules/juce_audio_basics/* modules/juce_events/* -Copyright: 2015-2021, Raw Material Software Ltd +Copyright: 2015-2022, Raw Material Software Ltd License: ISC Files: modules/juce_box2d/box2d/* @@ -57,7 +57,7 @@ Files: debian/* Copyright: - 2015-2020, IOhannes m zmölnig + 2015-2022, IOhannes m zmölnig 2019, Olivier Humbert License: GPL-2+ or GPL-3 diff -Nru juce-6.1.4~ds0/debian/copyright_hints juce-6.1.5~ds0/debian/copyright_hints --- juce-6.1.4~ds0/debian/copyright_hints 2022-01-10 08:12:48.000000000 +0000 +++ juce-6.1.5~ds0/debian/copyright_hints 2022-01-31 10:55:24.000000000 +0000 @@ -451,6 +451,10 @@ ./modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.cpp ./modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.h ./modules/juce_audio_utils/gui/juce_BluetoothMidiDevicePairingDialogue.h + ./modules/juce_audio_utils/gui/juce_KeyboardComponentBase.cpp + ./modules/juce_audio_utils/gui/juce_KeyboardComponentBase.h + ./modules/juce_audio_utils/gui/juce_MPEKeyboardComponent.cpp + ./modules/juce_audio_utils/gui/juce_MPEKeyboardComponent.h ./modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp ./modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h ./modules/juce_audio_utils/juce_audio_utils.cpp @@ -855,6 +859,8 @@ ./modules/juce_gui_basics/misc/juce_BubbleComponent.h ./modules/juce_gui_basics/misc/juce_DropShadower.cpp ./modules/juce_gui_basics/misc/juce_DropShadower.h + ./modules/juce_gui_basics/misc/juce_FocusOutline.cpp + ./modules/juce_gui_basics/misc/juce_FocusOutline.h ./modules/juce_gui_basics/misc/juce_JUCESplashScreen.cpp ./modules/juce_gui_basics/misc/juce_JUCESplashScreen.h ./modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp @@ -885,6 +891,7 @@ ./modules/juce_gui_basics/native/accessibility/juce_win32_Accessibility.cpp ./modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.cpp ./modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.h + ./modules/juce_gui_basics/native/accessibility/juce_win32_ComInterfaces.h ./modules/juce_gui_basics/native/accessibility/juce_win32_UIAExpandCollapseProvider.h ./modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridItemProvider.h ./modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridProvider.h @@ -1164,6 +1171,7 @@ ./modules/juce_video/native/juce_mac_CameraDevice.h ./modules/juce_video/native/juce_mac_Video.h ./modules/juce_video/native/juce_win32_CameraDevice.h + ./modules/juce_video/native/juce_win32_ComTypes.h ./modules/juce_video/native/juce_win32_Video.h ./modules/juce_video/playback/juce_VideoComponent.cpp ./modules/juce_video/playback/juce_VideoComponent.h @@ -2645,6 +2653,7 @@ FIXME Files: ./LICENSE.md + ./README.md ./examples/Assets/juce_module_info ./examples/DemoRunner/Builds/Android/app/src/main/assets/juce_module_info ./extras/AudioPluginHost/Builds/Android/app/src/main/assets/juce_module_info @@ -2688,11 +2697,6 @@ License: GPL FIXME -Files: ./README.md -Copyright: restrictions -License: ISC - FIXME - Files: ./modules/juce_opengl/opengl/juce_khrplatform.h Copyright: 2008-2018, The Khronos Group Inc. License: Khronos diff -Nru juce-6.1.4~ds0/debian/patches/cross.patch juce-6.1.5~ds0/debian/patches/cross.patch --- juce-6.1.4~ds0/debian/patches/cross.patch 2022-01-10 08:12:48.000000000 +0000 +++ juce-6.1.5~ds0/debian/patches/cross.patch 2022-01-31 10:55:24.000000000 +0000 @@ -23,8 +23,8 @@ 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=0x60104" "-DJUCE_MODULE_AVAILABLE_juce_build_tools=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_LOG_ASSERTIONS=1" "-DJUCE_USE_CURL=1" "-DJUCE_LOAD_CURL_SYMBOLS_LAZILY=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=6.1.4" "-DJUCE_APP_VERSION_HEX=0x60104" $(shell pkg-config --cflags freetype2) -pthread -I../../JuceLibraryCode -I../../../Build -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=0x60104" "-DJUCE_MODULE_AVAILABLE_juce_build_tools=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_LOG_ASSERTIONS=1" "-DJUCE_USE_CURL=1" "-DJUCE_LOAD_CURL_SYMBOLS_LAZILY=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=6.1.4" "-DJUCE_APP_VERSION_HEX=0x60104" $(shell $(PKG_CONFIG) --cflags freetype2) -pthread -I../../JuceLibraryCode -I../../../Build -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=0x60105" "-DJUCE_MODULE_AVAILABLE_juce_build_tools=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_LOG_ASSERTIONS=1" "-DJUCE_USE_CURL=1" "-DJUCE_LOAD_CURL_SYMBOLS_LAZILY=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=6.1.5" "-DJUCE_APP_VERSION_HEX=0x60105" $(shell pkg-config --cflags freetype2) -pthread -I../../JuceLibraryCode -I../../../Build -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=0x60105" "-DJUCE_MODULE_AVAILABLE_juce_build_tools=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_LOG_ASSERTIONS=1" "-DJUCE_USE_CURL=1" "-DJUCE_LOAD_CURL_SYMBOLS_LAZILY=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=6.1.5" "-DJUCE_APP_VERSION_HEX=0x60105" $(shell $(PKG_CONFIG) --cflags freetype2) -pthread -I../../JuceLibraryCode -I../../../Build -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 := Projucer @@ -39,8 +39,8 @@ TARGET_ARCH := endif -- JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60104" "-DJUCE_MODULE_AVAILABLE_juce_build_tools=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_LOG_ASSERTIONS=1" "-DJUCE_USE_CURL=1" "-DJUCE_LOAD_CURL_SYMBOLS_LAZILY=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=6.1.4" "-DJUCE_APP_VERSION_HEX=0x60104" $(shell pkg-config --cflags freetype2) -pthread -I../../JuceLibraryCode -I../../../Build -I../../../../modules $(CPPFLAGS) -+ JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60104" "-DJUCE_MODULE_AVAILABLE_juce_build_tools=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_LOG_ASSERTIONS=1" "-DJUCE_USE_CURL=1" "-DJUCE_LOAD_CURL_SYMBOLS_LAZILY=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=6.1.4" "-DJUCE_APP_VERSION_HEX=0x60104" $(shell $(PKG_CONFIG) --cflags freetype2) -pthread -I../../JuceLibraryCode -I../../../Build -I../../../../modules $(CPPFLAGS) +- JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60105" "-DJUCE_MODULE_AVAILABLE_juce_build_tools=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_LOG_ASSERTIONS=1" "-DJUCE_USE_CURL=1" "-DJUCE_LOAD_CURL_SYMBOLS_LAZILY=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=6.1.5" "-DJUCE_APP_VERSION_HEX=0x60105" $(shell pkg-config --cflags freetype2) -pthread -I../../JuceLibraryCode -I../../../Build -I../../../../modules $(CPPFLAGS) ++ JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60105" "-DJUCE_MODULE_AVAILABLE_juce_build_tools=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_LOG_ASSERTIONS=1" "-DJUCE_USE_CURL=1" "-DJUCE_LOAD_CURL_SYMBOLS_LAZILY=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=6.1.5" "-DJUCE_APP_VERSION_HEX=0x60105" $(shell $(PKG_CONFIG) --cflags freetype2) -pthread -I../../JuceLibraryCode -I../../../Build -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 := Projucer diff -Nru "/tmp/tmpzt4s4sj6/nfoUB09olP/juce-6.1.4~ds0/docs/CMake API.md" "/tmp/tmpzt4s4sj6/kRZ7JcUIp2/juce-6.1.5~ds0/docs/CMake API.md" --- "/tmp/tmpzt4s4sj6/nfoUB09olP/juce-6.1.4~ds0/docs/CMake API.md" 2021-12-20 11:16:43.000000000 +0000 +++ "/tmp/tmpzt4s4sj6/kRZ7JcUIp2/juce-6.1.5~ds0/docs/CMake API.md" 2022-01-26 13:07:09.000000000 +0000 @@ -539,7 +539,7 @@ `USE_LEGACY_COMPATIBILITY_PLUGIN_CODE` - May be either TRUE or FALSE (defaults to FALSE). If TRUE, will override the value of the preprocessor definition "JucePlugin_ManufacturerCode" with the hex equivalent of "proj". This - option exists to maintain compatiblity with a previous, buggy version of JUCE's CMake support + option exists to maintain compatibility with a previous, buggy version of JUCE's CMake support which mishandled the manufacturer code property. Most projects should leave this option set to its default value. diff -Nru "/tmp/tmpzt4s4sj6/nfoUB09olP/juce-6.1.4~ds0/docs/JUCE Module Format.md" "/tmp/tmpzt4s4sj6/kRZ7JcUIp2/juce-6.1.5~ds0/docs/JUCE Module Format.md" --- "/tmp/tmpzt4s4sj6/nfoUB09olP/juce-6.1.4~ds0/docs/JUCE Module Format.md" 2021-12-20 11:16:43.000000000 +0000 +++ "/tmp/tmpzt4s4sj6/kRZ7JcUIp2/juce-6.1.5~ds0/docs/JUCE Module Format.md" 2022-01-26 13:07:09.000000000 +0000 @@ -17,7 +17,7 @@ juce_events juce_graphics -But any name that is a valid C++ identifer is OK. +But any name that is a valid C++ identifier is OK. Inside the root of this folder, there must be a set of public header and source files which the user's' project will include. The module may have as many other internal source files as diff -Nru "/tmp/tmpzt4s4sj6/nfoUB09olP/juce-6.1.4~ds0/docs/Linux Dependencies.md" "/tmp/tmpzt4s4sj6/kRZ7JcUIp2/juce-6.1.5~ds0/docs/Linux Dependencies.md" --- "/tmp/tmpzt4s4sj6/nfoUB09olP/juce-6.1.4~ds0/docs/Linux Dependencies.md" 2021-12-20 11:16:43.000000000 +0000 +++ "/tmp/tmpzt4s4sj6/kRZ7JcUIp2/juce-6.1.5~ds0/docs/Linux Dependencies.md" 2022-01-26 13:07:09.000000000 +0000 @@ -6,7 +6,7 @@ This has been tested on Ubuntu 16.04 LTS (Xenial Xerus), 18.04 LTS (Bionic Beaver), and 20.04 LTS (Focal Fossa). Packages may differ in name or not be -available on other distrubutions. +available on other distributions. ## Compiler A C++ compiler is required. JUCE has been tested thoroughly with Clang and GCC: diff -Nru juce-6.1.4~ds0/examples/Audio/MPEDemo.h juce-6.1.5~ds0/examples/Audio/MPEDemo.h --- juce-6.1.4~ds0/examples/Audio/MPEDemo.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/examples/Audio/MPEDemo.h 2022-01-26 13:07:09.000000000 +0000 @@ -48,6 +48,7 @@ #pragma once + //============================================================================== class ZoneColourPicker { @@ -94,251 +95,12 @@ }; //============================================================================== -class NoteComponent : public Component +class MPESetupComponent : public Component { public: - NoteComponent (const MPENote& n, Colour colourToUse) - : note (n), colour (colourToUse) - {} - - //============================================================================== - void update (const MPENote& newNote, Point newCentre) - { - note = newNote; - centre = newCentre; - - setBounds (getSquareAroundCentre (jmax (getNoteOnRadius(), getNoteOffRadius(), getPressureRadius())) - .getUnion (getTextRectangle()) - .getSmallestIntegerContainer() - .expanded (3)); - - repaint(); - } - - //============================================================================== - void paint (Graphics& g) override - { - if (note.keyState == MPENote::keyDown || note.keyState == MPENote::keyDownAndSustained) - drawPressedNoteCircle (g, colour); - else if (note.keyState == MPENote::sustained) - drawSustainedNoteCircle (g, colour); - else - return; - - drawNoteLabel (g, colour); - } - - //============================================================================== - MPENote note; - Colour colour; - Point centre; - -private: - //============================================================================== - void drawPressedNoteCircle (Graphics& g, Colour zoneColour) - { - g.setColour (zoneColour.withAlpha (0.3f)); - g.fillEllipse (translateToLocalBounds (getSquareAroundCentre (getNoteOnRadius()))); - g.setColour (zoneColour); - g.drawEllipse (translateToLocalBounds (getSquareAroundCentre (getPressureRadius())), 2.0f); - } - - //============================================================================== - void drawSustainedNoteCircle (Graphics& g, Colour zoneColour) - { - g.setColour (zoneColour); - Path circle, dashedCircle; - circle.addEllipse (translateToLocalBounds (getSquareAroundCentre (getNoteOffRadius()))); - float dashLengths[] = { 3.0f, 3.0f }; - PathStrokeType (2.0, PathStrokeType::mitered).createDashedStroke (dashedCircle, circle, dashLengths, 2); - g.fillPath (dashedCircle); - } - - //============================================================================== - void drawNoteLabel (Graphics& g, Colour /**zoneColour*/) - { - auto textBounds = translateToLocalBounds (getTextRectangle()).getSmallestIntegerContainer(); - - g.drawText ("+", textBounds, Justification::centred); - g.drawText (MidiMessage::getMidiNoteName (note.initialNote, true, true, 3), textBounds, Justification::centredBottom); - g.setFont (Font (22.0f, Font::bold)); - g.drawText (String (note.midiChannel), textBounds, Justification::centredTop); - } - - //============================================================================== - Rectangle getSquareAroundCentre (float radius) const noexcept - { - return Rectangle (radius * 2.0f, radius * 2.0f).withCentre (centre); - } - - Rectangle translateToLocalBounds (Rectangle r) const noexcept - { - return r - getPosition().toFloat(); - } - - Rectangle getTextRectangle() const noexcept - { - return Rectangle (30.0f, 50.0f).withCentre (centre); - } - - float getNoteOnRadius() const noexcept { return note.noteOnVelocity .asUnsignedFloat() * maxNoteRadius; } - float getNoteOffRadius() const noexcept { return note.noteOffVelocity.asUnsignedFloat() * maxNoteRadius; } - float getPressureRadius() const noexcept { return note.pressure .asUnsignedFloat() * maxNoteRadius; } - - const float maxNoteRadius = 100.0f; - - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (NoteComponent) -}; - -//============================================================================== -class Visualiser : public Component, - public MPEInstrument::Listener, - private AsyncUpdater -{ -public: - //============================================================================== - Visualiser (ZoneColourPicker& zoneColourPicker) - : colourPicker (zoneColourPicker) - {} - - //============================================================================== - void paint (Graphics& g) override - { - g.fillAll (Colours::black); - - auto noteDistance = float (getWidth()) / 128; - for (auto i = 0; i < 128; ++i) - { - auto x = noteDistance * (float) i; - auto noteHeight = int (MidiMessage::isMidiNoteBlack (i) ? 0.7 * getHeight() : getHeight()); - - g.setColour (MidiMessage::isMidiNoteBlack (i) ? Colours::white : Colours::grey); - g.drawLine (x, 0.0f, x, (float) noteHeight); - - if (i > 0 && i % 12 == 0) - { - g.setColour (Colours::grey); - auto octaveNumber = (i / 12) - 2; - g.drawText ("C" + String (octaveNumber), (int) x - 15, getHeight() - 30, 30, 30, Justification::centredBottom); - } - } - } - - //============================================================================== - void noteAdded (MPENote newNote) override - { - const ScopedLock sl (lock); - activeNotes.add (newNote); - triggerAsyncUpdate(); - } - - void notePressureChanged (MPENote note) override { noteChanged (note); } - void notePitchbendChanged (MPENote note) override { noteChanged (note); } - void noteTimbreChanged (MPENote note) override { noteChanged (note); } - void noteKeyStateChanged (MPENote note) override { noteChanged (note); } - - void noteChanged (MPENote changedNote) - { - const ScopedLock sl (lock); - - for (auto& note : activeNotes) - if (note.noteID == changedNote.noteID) - note = changedNote; - - triggerAsyncUpdate(); - } - - void noteReleased (MPENote finishedNote) override - { - const ScopedLock sl (lock); - - for (auto i = activeNotes.size(); --i >= 0;) - if (activeNotes.getReference(i).noteID == finishedNote.noteID) - activeNotes.remove (i); - - triggerAsyncUpdate(); - } - - -private: - //============================================================================== - const MPENote* findActiveNote (int noteID) const noexcept - { - for (auto& note : activeNotes) - if (note.noteID == noteID) - return ¬e; - - return nullptr; - } - - NoteComponent* findNoteComponent (int noteID) const noexcept - { - for (auto& noteComp : noteComponents) - if (noteComp->note.noteID == noteID) - return noteComp; - - return nullptr; - } - - //============================================================================== - void handleAsyncUpdate() override - { - const ScopedLock sl (lock); - - for (auto i = noteComponents.size(); --i >= 0;) - if (findActiveNote (noteComponents.getUnchecked(i)->note.noteID) == nullptr) - noteComponents.remove (i); - - for (auto& note : activeNotes) - if (findNoteComponent (note.noteID) == nullptr) - addAndMakeVisible (noteComponents.add (new NoteComponent (note, colourPicker.getColourForMidiChannel(note.midiChannel)))); - - for (auto& noteComp : noteComponents) - if (auto* noteInfo = findActiveNote (noteComp->note.noteID)) - noteComp->update (*noteInfo, getCentrePositionForNote (*noteInfo)); - } - - //============================================================================== - Point getCentrePositionForNote (MPENote note) const - { - auto n = float (note.initialNote) + float (note.totalPitchbendInSemitones); - auto x = (float) getWidth() * n / 128; - auto y = (float) getHeight() * (1 - note.timbre.asUnsignedFloat()); - - return { x, y }; - } - - //============================================================================== - OwnedArray noteComponents; - CriticalSection lock; - Array activeNotes; - ZoneColourPicker& colourPicker; - - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Visualiser) -}; - -//============================================================================== -class MPESetupComponent : public Component, - public ChangeBroadcaster -{ -public: - //============================================================================== - class Listener - { - public: - virtual ~Listener() {} - virtual void zoneChanged (bool isLower, int numMemberChans, int perNotePb, int masterPb) = 0; - virtual void allZonesCleared() = 0; - virtual void legacyModeChanged (bool legacyModeEnabled, int pitchbendRange, Range channelRange) = 0; - virtual void voiceStealingEnabledChanged (bool voiceStealingEnabled) = 0; - virtual void numberOfVoicesChanged (int numberOfVoices) = 0; - }; - - void addListener (Listener* listenerToAdd) { listeners.add (listenerToAdd); } - void removeListener (Listener* listenerToRemove) { listeners.remove (listenerToRemove); } - //============================================================================== - MPESetupComponent() + MPESetupComponent (MPEInstrument& instr) + : instrument (instr) { addAndMakeVisible (isLowerZoneButton); isLowerZoneButton.setToggleState (true, NotificationType::dontSendNotification); @@ -353,10 +115,13 @@ addAndMakeVisible (setZoneButton); setZoneButton.onClick = [this] { setZoneButtonClicked(); }; + addAndMakeVisible (clearAllZonesButton); clearAllZonesButton.onClick = [this] { clearAllZonesButtonClicked(); }; + addAndMakeVisible (legacyModeEnabledToggle); legacyModeEnabledToggle.onClick = [this] { legacyModeEnabledToggleClicked(); }; + addAndMakeVisible (voiceStealingEnabledToggle); voiceStealingEnabledToggle.onClick = [this] { voiceStealingEnabledToggleClicked(); }; @@ -402,6 +167,12 @@ numberOfVoices.setBounds (r.removeFromTop (h)); } + //============================================================================== + bool isVoiceStealingEnabled() const { return voiceStealingEnabledToggle.getToggleState(); } + int getNumVoices() const { return numberOfVoices.getText().getIntValue(); } + + std::function onSynthParametersChange; + private: //============================================================================== void initialiseComboBoxWithConsecutiveIntegers (ComboBox& comboBox, Label& labelToAttach, @@ -435,22 +206,21 @@ auto perNotePb = notePitchbendRange.getText().getIntValue(); auto masterPb = masterPitchbendRange.getText().getIntValue(); + auto zoneLayout = instrument.getZoneLayout(); + if (isLowerZone) zoneLayout.setLowerZone (numMemberChannels, perNotePb, masterPb); else zoneLayout.setUpperZone (numMemberChannels, perNotePb, masterPb); - listeners.call ([&] (Listener& l) { l.zoneChanged (isLowerZone, numMemberChannels, perNotePb, masterPb); }); + instrument.setZoneLayout (zoneLayout); } - //============================================================================== void clearAllZonesButtonClicked() { - zoneLayout.clearAllZones(); - listeners.call ([] (Listener& l) { l.allZonesCleared(); }); + instrument.setZoneLayout ({}); } - //============================================================================== void legacyModeEnabledToggleClicked() { auto legacyModeEnabled = legacyModeEnabledToggle.getToggleState(); @@ -466,38 +236,32 @@ legacyEndChannel .setVisible (legacyModeEnabled); legacyPitchbendRange.setVisible (legacyModeEnabled); - if (areLegacyModeParametersValid()) + if (legacyModeEnabled) { - listeners.call ([&] (Listener& l) { l.legacyModeChanged (legacyModeEnabledToggle.getToggleState(), - legacyPitchbendRange.getText().getIntValue(), - getLegacyModeChannelRange()); }); + if (areLegacyModeParametersValid()) + { + instrument.enableLegacyMode(); + + instrument.setLegacyModeChannelRange (getLegacyModeChannelRange()); + instrument.setLegacyModePitchbendRange (getLegacyModePitchbendRange()); + } + else + { + handleInvalidLegacyModeParameters(); + } } else { - handleInvalidLegacyModeParameters(); + instrument.setZoneLayout ({ MPEZone (MPEZone::Type::lower, 15) }); } } //============================================================================== - void voiceStealingEnabledToggleClicked() - { - auto newState = voiceStealingEnabledToggle.getToggleState(); - listeners.call ([=] (Listener& l) { l.voiceStealingEnabledChanged (newState); }); - } - - //============================================================================== - void numberOfVoicesChanged() - { - listeners.call ([this] (Listener& l) { l.numberOfVoicesChanged (numberOfVoices.getText().getIntValue()); }); - } - void legacyModePitchbendRangeChanged() { jassert (legacyModeEnabledToggle.getToggleState() == true); - listeners.call ([this] (Listener& l) { l.legacyModeChanged (true, - legacyPitchbendRange.getText().getIntValue(), - getLegacyModeChannelRange()); }); + instrument.setLegacyModePitchbendRange (getLegacyModePitchbendRange()); } void legacyModeChannelRangeChanged() @@ -505,18 +269,11 @@ jassert (legacyModeEnabledToggle.getToggleState() == true); if (areLegacyModeParametersValid()) - { - listeners.call ([this] (Listener& l) { l.legacyModeChanged (true, - legacyPitchbendRange.getText().getIntValue(), - getLegacyModeChannelRange()); }); - } + instrument.setLegacyModeChannelRange (getLegacyModeChannelRange()); else - { handleInvalidLegacyModeParameters(); - } } - //============================================================================== bool areLegacyModeParametersValid() const { return legacyStartChannel.getText().getIntValue() <= legacyEndChannel.getText().getIntValue(); @@ -531,15 +288,32 @@ "Got it"); } - //============================================================================== Range getLegacyModeChannelRange() const { return { legacyStartChannel.getText().getIntValue(), legacyEndChannel.getText().getIntValue() + 1 }; } + int getLegacyModePitchbendRange() const + { + return legacyPitchbendRange.getText().getIntValue(); + } + //============================================================================== - MPEZoneLayout zoneLayout; + void voiceStealingEnabledToggleClicked() + { + jassert (onSynthParametersChange != nullptr); + onSynthParametersChange(); + } + + void numberOfVoicesChanged() + { + jassert (onSynthParametersChange != nullptr); + onSynthParametersChange(); + } + + //============================================================================== + MPEInstrument& instrument; ComboBox memberChannels, masterPitchbendRange, notePitchbendRange; @@ -564,67 +338,49 @@ ComboBox numberOfVoices; Label numberOfVoicesLabel { {}, "Number of synth voices"}; - ListenerList listeners; - - const int defaultMemberChannels = 15, - defaultMasterPitchbendRange = 2, - defaultNotePitchbendRange = 48; + static constexpr int defaultMemberChannels = 15, + defaultMasterPitchbendRange = 2, + defaultNotePitchbendRange = 48; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MPESetupComponent) }; //============================================================================== class ZoneLayoutComponent : public Component, - public MPESetupComponent::Listener + private MPEInstrument::Listener { public: //============================================================================== - ZoneLayoutComponent (const ZoneColourPicker& zoneColourPicker) - : colourPicker (zoneColourPicker) - {} + ZoneLayoutComponent (MPEInstrument& instr, ZoneColourPicker& zoneColourPicker) + : instrument (instr), + colourPicker (zoneColourPicker) + { + instrument.addListener (this); + } + + ~ZoneLayoutComponent() override + { + instrument.removeListener (this); + } //============================================================================== void paint (Graphics& g) override { paintBackground (g); - if (legacyModeEnabled) + if (instrument.isLegacyModeEnabled()) paintLegacyMode (g); else paintZones (g); } +private: //============================================================================== - void zoneChanged (bool isLowerZone, int numMemberChannels, - int perNotePitchbendRange, int masterPitchbendRange) override + void zoneLayoutChanged() override { - if (isLowerZone) - zoneLayout.setLowerZone (numMemberChannels, perNotePitchbendRange, masterPitchbendRange); - else - zoneLayout.setUpperZone (numMemberChannels, perNotePitchbendRange, masterPitchbendRange); - repaint(); } - void allZonesCleared() override - { - zoneLayout.clearAllZones(); - repaint(); - } - - void legacyModeChanged (bool legacyModeShouldBeEnabled, int pitchbendRange, Range channelRange) override - { - legacyModeEnabled = legacyModeShouldBeEnabled; - legacyModePitchbendRange = pitchbendRange; - legacyModeChannelRange = channelRange; - - repaint(); - } - - void voiceStealingEnabledChanged (bool) override { /* not interested in this change */ } - void numberOfVoicesChanged (int) override { /* not interested in this change */ } - -private: //============================================================================== void paintBackground (Graphics& g) { @@ -646,6 +402,8 @@ { auto channelWidth = getChannelRectangleWidth(); + auto zoneLayout = instrument.getZoneLayout(); + Array activeZones; if (zoneLayout.getLowerZone().isActive()) activeZones.add (zoneLayout.getLowerZone()); if (zoneLayout.getUpperZone().isActive()) activeZones.add (zoneLayout.getUpperZone()); @@ -676,9 +434,9 @@ //============================================================================== void paintLegacyMode (Graphics& g) { - auto startChannel = legacyModeChannelRange.getStart() - 1; - auto numChannels = legacyModeChannelRange.getEnd() - startChannel - 1; - + auto channelRange = instrument.getLegacyModeChannelRange(); + auto startChannel = channelRange.getStart() - 1; + auto numChannels = channelRange.getEnd() - startChannel - 1; Rectangle zoneRect (int (getChannelRectangleWidth() * (float) startChannel), 0, int (getChannelRectangleWidth() * (float) numChannels), getHeight()); @@ -688,7 +446,7 @@ g.setColour (Colours::white); g.drawRect (zoneRect, 3); g.drawText ("LGCY", zoneRect.reduced (4, 4), Justification::topLeft, false); - g.drawText ("<>" + String (legacyModePitchbendRange), zoneRect.reduced (4, 4), Justification::bottomLeft, false); + g.drawText ("<>" + String (instrument.getLegacyModePitchbendRange()), zoneRect.reduced (4, 4), Justification::bottomLeft, false); } //============================================================================== @@ -698,13 +456,10 @@ } //============================================================================== - MPEZoneLayout zoneLayout; - const ZoneColourPicker& colourPicker; + static constexpr int numMidiChannels = 16; - bool legacyModeEnabled = false; - int legacyModePitchbendRange = 48; - Range legacyModeChannelRange = { 1, 17 }; - const int numMidiChannels = 16; + MPEInstrument& instrument; + ZoneColourPicker& colourPicker; }; //============================================================================== @@ -867,14 +622,11 @@ class MPEDemo : public Component, private AudioIODeviceCallback, private MidiInputCallback, - private MPESetupComponent::Listener + private MPEInstrument::Listener { public: //============================================================================== MPEDemo() - : audioSetupComp (audioDeviceManager, 0, 0, 0, 256, true, true, true, false), - zoneLayoutComp (colourPicker), - visualiserComp (colourPicker) { #ifndef JUCE_DEMO_RUNNER audioDeviceManager.initialise (0, 2, nullptr, true, {}, nullptr); @@ -884,22 +636,33 @@ audioDeviceManager.addAudioCallback (this); addAndMakeVisible (audioSetupComp); - addAndMakeVisible (MPESetupComp); + addAndMakeVisible (mpeSetupComp); addAndMakeVisible (zoneLayoutComp); - addAndMakeVisible (visualiserViewport); - - visualiserViewport.setScrollBarsShown (false, true); - visualiserViewport.setViewedComponent (&visualiserComp, false); - visualiserViewport.setViewPositionProportionately (0.5, 0.0); - - MPESetupComp.addListener (&zoneLayoutComp); - MPESetupComp.addListener (this); - visualiserInstrument.addListener (&visualiserComp); + addAndMakeVisible (keyboardComponent); synth.setVoiceStealingEnabled (false); for (auto i = 0; i < 15; ++i) synth.addVoice (new MPEDemoSynthVoice()); + mpeSetupComp.onSynthParametersChange = [this] + { + synth.setVoiceStealingEnabled (mpeSetupComp.isVoiceStealingEnabled()); + + auto numVoices = mpeSetupComp.getNumVoices(); + + if (numVoices < synth.getNumVoices()) + { + synth.reduceNumVoices (numVoices); + } + else + { + while (synth.getNumVoices() < numVoices) + synth.addVoice (new MPEDemoSynthVoice()); + } + }; + + instrument.addListener (this); + setSize (880, 720); } @@ -912,20 +675,17 @@ //============================================================================== void resized() override { - auto visualiserCompWidth = 2800; - auto visualiserCompHeight = 300; auto zoneLayoutCompHeight = 60; auto audioSetupCompRelativeWidth = 0.55f; auto r = getLocalBounds(); - visualiserViewport.setBounds (r.removeFromBottom (visualiserCompHeight)); - visualiserComp .setBounds ({ visualiserCompWidth, - visualiserViewport.getHeight() - visualiserViewport.getScrollBarThickness() }); + keyboardComponent.setBounds (r.removeFromBottom (150)); + r.reduce (10, 10); zoneLayoutComp.setBounds (r.removeFromBottom (zoneLayoutCompHeight)); audioSetupComp.setBounds (r.removeFromLeft (proportionOfWidth (audioSetupCompRelativeWidth))); - MPESetupComp .setBounds (r); + mpeSetupComp .setBounds (r); } //============================================================================== @@ -955,75 +715,34 @@ void handleIncomingMidiMessage (MidiInput* /*source*/, const MidiMessage& message) override { - visualiserInstrument.processNextMidiEvent (message); + instrument.processNextMidiEvent (message); midiCollector.addMessageToQueue (message); } //============================================================================== - void zoneChanged (bool isLowerZone, int numMemberChannels, - int perNotePitchbendRange, int masterPitchbendRange) override + void zoneLayoutChanged() override { - auto* midiOutput = audioDeviceManager.getDefaultMidiOutput(); - if (midiOutput != nullptr) + if (instrument.isLegacyModeEnabled()) { - if (isLowerZone) - midiOutput->sendBlockOfMessagesNow (MPEMessages::setLowerZone (numMemberChannels, perNotePitchbendRange, masterPitchbendRange)); - else - midiOutput->sendBlockOfMessagesNow (MPEMessages::setUpperZone (numMemberChannels, perNotePitchbendRange, masterPitchbendRange)); - } + colourPicker.setLegacyModeEnabled (true); - if (isLowerZone) - zoneLayout.setLowerZone (numMemberChannels, perNotePitchbendRange, masterPitchbendRange); + synth.enableLegacyMode (instrument.getLegacyModePitchbendRange(), + instrument.getLegacyModeChannelRange()); + } else - zoneLayout.setUpperZone (numMemberChannels, perNotePitchbendRange, masterPitchbendRange); - - visualiserInstrument.setZoneLayout (zoneLayout); - synth.setZoneLayout (zoneLayout); - colourPicker.setZoneLayout (zoneLayout); - } - - void allZonesCleared() override - { - auto* midiOutput = audioDeviceManager.getDefaultMidiOutput(); - if (midiOutput != nullptr) - midiOutput->sendBlockOfMessagesNow (MPEMessages::clearAllZones()); + { + colourPicker.setLegacyModeEnabled (false); - zoneLayout.clearAllZones(); - visualiserInstrument.setZoneLayout (zoneLayout); - synth.setZoneLayout (zoneLayout); - colourPicker.setZoneLayout (zoneLayout); - } + auto zoneLayout = instrument.getZoneLayout(); - void legacyModeChanged (bool legacyModeShouldBeEnabled, int pitchbendRange, Range channelRange) override - { - colourPicker.setLegacyModeEnabled (legacyModeShouldBeEnabled); + if (auto* midiOutput = audioDeviceManager.getDefaultMidiOutput()) + midiOutput->sendBlockOfMessagesNow (MPEMessages::setZoneLayout (zoneLayout)); - if (legacyModeShouldBeEnabled) - { - synth.enableLegacyMode (pitchbendRange, channelRange); - visualiserInstrument.enableLegacyMode (pitchbendRange, channelRange); - } - else - { synth.setZoneLayout (zoneLayout); - visualiserInstrument.setZoneLayout (zoneLayout); + colourPicker.setZoneLayout (zoneLayout); } } - void voiceStealingEnabledChanged (bool voiceStealingEnabled) override - { - synth.setVoiceStealingEnabled (voiceStealingEnabled); - } - - void numberOfVoicesChanged (int numberOfVoices) override - { - if (numberOfVoices < synth.getNumVoices()) - synth.reduceNumVoices (numberOfVoices); - else - while (synth.getNumVoices() < numberOfVoices) - synth.addVoice (new MPEDemoSynthVoice()); - } - //============================================================================== // if this PIP is running inside the demo runner, we'll use the shared device manager instead #ifndef JUCE_DEMO_RUNNER @@ -1032,19 +751,18 @@ AudioDeviceManager& audioDeviceManager { getSharedAudioDeviceManager (0, 2) }; #endif - MPEZoneLayout zoneLayout; - ZoneColourPicker colourPicker; + AudioDeviceSelectorComponent audioSetupComp { audioDeviceManager, 0, 0, 0, 256, true, true, true, false }; + MidiMessageCollector midiCollector; - AudioDeviceSelectorComponent audioSetupComp; - MPESetupComponent MPESetupComp; - ZoneLayoutComponent zoneLayoutComp; - - Visualiser visualiserComp; - Viewport visualiserViewport; - MPEInstrument visualiserInstrument; + MPEInstrument instrument { MPEZone (MPEZone::Type::lower, 15) }; - MPESynthesiser synth; - MidiMessageCollector midiCollector; + ZoneColourPicker colourPicker; + MPESetupComponent mpeSetupComp { instrument }; + ZoneLayoutComponent zoneLayoutComp { instrument, colourPicker}; + + MPESynthesiser synth { instrument }; + MPEKeyboardComponent keyboardComponent { instrument, MPEKeyboardComponent::horizontalKeyboard }; + //============================================================================== JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MPEDemo) }; diff -Nru juce-6.1.4~ds0/examples/DemoRunner/Builds/Android/app/CMakeLists.txt juce-6.1.5~ds0/examples/DemoRunner/Builds/Android/app/CMakeLists.txt --- juce-6.1.4~ds0/examples/DemoRunner/Builds/Android/app/CMakeLists.txt 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/examples/DemoRunner/Builds/Android/app/CMakeLists.txt 2022-01-26 13:07:09.000000000 +0000 @@ -12,7 +12,7 @@ add_library("cpufeatures" STATIC "${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c") set_source_files_properties("${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c" PROPERTIES COMPILE_FLAGS "-Wno-sign-conversion -Wno-gnu-statement-expression") -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.4]] [[-DJUCE_APP_VERSION_HEX=0x60104]]) +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.5]] [[-DJUCE_APP_VERSION_HEX=0x60105]]) include_directories( AFTER "../../../JuceLibraryCode" @@ -23,9 +23,9 @@ 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=0x60104]] [[-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_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.4]] [[-DJUCE_APP_VERSION_HEX=0x60104]] [[-DDEBUG=1]] [[-D_DEBUG=1]]) + add_definitions([[-DJUCE_DISPLAY_SPLASH_SCREEN=0]] [[-DJUCE_USE_DARK_SPLASH_SCREEN=1]] [[-DJUCE_PROJUCER_VERSION=0x60105]] [[-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_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.5]] [[-DJUCE_APP_VERSION_HEX=0x60105]] [[-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=0x60104]] [[-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_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.4]] [[-DJUCE_APP_VERSION_HEX=0x60104]] [[-DNDEBUG=1]]) + add_definitions([[-DJUCE_DISPLAY_SPLASH_SCREEN=0]] [[-DJUCE_USE_DARK_SPLASH_SCREEN=1]] [[-DJUCE_PROJUCER_VERSION=0x60105]] [[-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_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.5]] [[-DJUCE_APP_VERSION_HEX=0x60105]] [[-DNDEBUG=1]]) else() message( FATAL_ERROR "No matching build-configuration found." ) endif() @@ -653,8 +653,12 @@ "../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.cpp" "../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.h" "../../../../../modules/juce_audio_utils/gui/juce_BluetoothMidiDevicePairingDialogue.h" + "../../../../../modules/juce_audio_utils/gui/juce_KeyboardComponentBase.cpp" + "../../../../../modules/juce_audio_utils/gui/juce_KeyboardComponentBase.h" "../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp" "../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h" + "../../../../../modules/juce_audio_utils/gui/juce_MPEKeyboardComponent.cpp" + "../../../../../modules/juce_audio_utils/gui/juce_MPEKeyboardComponent.h" "../../../../../modules/juce_audio_utils/native/juce_android_BluetoothMidiDevicePairingDialogue.cpp" "../../../../../modules/juce_audio_utils/native/juce_ios_BluetoothMidiDevicePairingDialogue.mm" "../../../../../modules/juce_audio_utils/native/juce_linux_AudioCDReader.cpp" @@ -1529,6 +1533,8 @@ "../../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.h" "../../../../../modules/juce_gui_basics/misc/juce_DropShadower.cpp" "../../../../../modules/juce_gui_basics/misc/juce_DropShadower.h" + "../../../../../modules/juce_gui_basics/misc/juce_FocusOutline.cpp" + "../../../../../modules/juce_gui_basics/misc/juce_FocusOutline.h" "../../../../../modules/juce_gui_basics/misc/juce_JUCESplashScreen.cpp" "../../../../../modules/juce_gui_basics/misc/juce_JUCESplashScreen.h" "../../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp" @@ -1559,6 +1565,7 @@ "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_Accessibility.cpp" "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.cpp" "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.h" + "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_ComInterfaces.h" "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_UIAExpandCollapseProvider.h" "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridItemProvider.h" "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridProvider.h" @@ -1821,6 +1828,7 @@ "../../../../../modules/juce_video/native/juce_mac_CameraDevice.h" "../../../../../modules/juce_video/native/juce_mac_Video.h" "../../../../../modules/juce_video/native/juce_win32_CameraDevice.h" + "../../../../../modules/juce_video/native/juce_win32_ComTypes.h" "../../../../../modules/juce_video/native/juce_win32_Video.h" "../../../../../modules/juce_video/playback/juce_VideoComponent.cpp" "../../../../../modules/juce_video/playback/juce_VideoComponent.h" @@ -2462,8 +2470,12 @@ set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_BluetoothMidiDevicePairingDialogue.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_KeyboardComponentBase.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_KeyboardComponentBase.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_MPEKeyboardComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_MPEKeyboardComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_android_BluetoothMidiDevicePairingDialogue.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_ios_BluetoothMidiDevicePairingDialogue.mm" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_linux_AudioCDReader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -3338,6 +3350,8 @@ set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_DropShadower.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_DropShadower.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_FocusOutline.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_FocusOutline.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_JUCESplashScreen.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_JUCESplashScreen.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -3368,6 +3382,7 @@ set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_Accessibility.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_ComInterfaces.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_UIAExpandCollapseProvider.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridItemProvider.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridProvider.h" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -3630,6 +3645,7 @@ set_source_files_properties("../../../../../modules/juce_video/native/juce_mac_CameraDevice.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_video/native/juce_mac_Video.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_video/native/juce_win32_CameraDevice.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/native/juce_win32_ComTypes.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_video/native/juce_win32_Video.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_video/playback/juce_VideoComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_video/playback/juce_VideoComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) diff -Nru juce-6.1.4~ds0/examples/DemoRunner/Builds/Android/app/src/main/AndroidManifest.xml juce-6.1.5~ds0/examples/DemoRunner/Builds/Android/app/src/main/AndroidManifest.xml --- juce-6.1.4~ds0/examples/DemoRunner/Builds/Android/app/src/main/AndroidManifest.xml 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/examples/DemoRunner/Builds/Android/app/src/main/AndroidManifest.xml 2022-01-26 13:07:09.000000000 +0000 @@ -1,6 +1,6 @@ - diff -Nru juce-6.1.4~ds0/examples/DemoRunner/Builds/iOS/DemoRunner.xcodeproj/project.pbxproj juce-6.1.5~ds0/examples/DemoRunner/Builds/iOS/DemoRunner.xcodeproj/project.pbxproj --- juce-6.1.4~ds0/examples/DemoRunner/Builds/iOS/DemoRunner.xcodeproj/project.pbxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/examples/DemoRunner/Builds/iOS/DemoRunner.xcodeproj/project.pbxproj 2022-01-26 13:07:09.000000000 +0000 @@ -511,7 +511,7 @@ "JUCE_CONTENT_SHARING=1", "JUCE_DISPLAY_SPLASH_SCREEN=0", "JUCE_USE_DARK_SPLASH_SCREEN=1", - "JUCE_PROJUCER_VERSION=0x60104", + "JUCE_PROJUCER_VERSION=0x60105", "JUCE_MODULE_AVAILABLE_juce_analytics=1", "JUCE_MODULE_AVAILABLE_juce_audio_basics=1", "JUCE_MODULE_AVAILABLE_juce_audio_devices=1", @@ -540,8 +540,8 @@ "JUCE_DEMO_RUNNER=1", "JUCE_UNIT_TESTS=1", "JUCER_XCODE_IPHONE_5BC26AE3=1", - "JUCE_APP_VERSION=6.1.4", - "JUCE_APP_VERSION_HEX=0x60104", + "JUCE_APP_VERSION=6.1.5", + "JUCE_APP_VERSION_HEX=0x60105", "JucePlugin_Build_VST=0", "JucePlugin_Build_VST3=0", "JucePlugin_Build_AU=0", @@ -591,7 +591,7 @@ "JUCE_CONTENT_SHARING=1", "JUCE_DISPLAY_SPLASH_SCREEN=0", "JUCE_USE_DARK_SPLASH_SCREEN=1", - "JUCE_PROJUCER_VERSION=0x60104", + "JUCE_PROJUCER_VERSION=0x60105", "JUCE_MODULE_AVAILABLE_juce_analytics=1", "JUCE_MODULE_AVAILABLE_juce_audio_basics=1", "JUCE_MODULE_AVAILABLE_juce_audio_devices=1", @@ -620,8 +620,8 @@ "JUCE_DEMO_RUNNER=1", "JUCE_UNIT_TESTS=1", "JUCER_XCODE_IPHONE_5BC26AE3=1", - "JUCE_APP_VERSION=6.1.4", - "JUCE_APP_VERSION_HEX=0x60104", + "JUCE_APP_VERSION=6.1.5", + "JUCE_APP_VERSION_HEX=0x60105", "JucePlugin_Build_VST=0", "JucePlugin_Build_VST3=0", "JucePlugin_Build_AU=0", diff -Nru juce-6.1.4~ds0/examples/DemoRunner/Builds/iOS/Info-App.plist juce-6.1.5~ds0/examples/DemoRunner/Builds/iOS/Info-App.plist --- juce-6.1.4~ds0/examples/DemoRunner/Builds/iOS/Info-App.plist 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/examples/DemoRunner/Builds/iOS/Info-App.plist 2022-01-26 13:07:09.000000000 +0000 @@ -30,9 +30,9 @@ CFBundleSignature ???? CFBundleShortVersionString - 6.1.4 + 6.1.5 CFBundleVersion - 6.1.4 + 6.1.5 NSHumanReadableCopyright Copyright (c) 2020 - Raw Material Software Limited NSHighResolutionCapable diff -Nru juce-6.1.4~ds0/examples/DemoRunner/Builds/LinuxMakefile/Makefile juce-6.1.5~ds0/examples/DemoRunner/Builds/LinuxMakefile/Makefile --- juce-6.1.4~ds0/examples/DemoRunner/Builds/LinuxMakefile/Makefile 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/examples/DemoRunner/Builds/LinuxMakefile/Makefile 2022-01-26 13:07:09.000000000 +0000 @@ -35,7 +35,7 @@ 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=0x60104" "-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_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.4" "-DJUCE_APP_VERSION_HEX=0x60104" $(shell pkg-config --cflags alsa freetype2 libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -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=0x60105" "-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_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.5" "-DJUCE_APP_VERSION_HEX=0x60105" $(shell pkg-config --cflags alsa freetype2 libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -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 @@ -56,7 +56,7 @@ TARGET_ARCH := endif - JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60104" "-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_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.4" "-DJUCE_APP_VERSION_HEX=0x60104" $(shell pkg-config --cflags alsa freetype2 libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -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=0x60105" "-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_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.5" "-DJUCE_APP_VERSION_HEX=0x60105" $(shell pkg-config --cflags alsa freetype2 libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -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 diff -Nru juce-6.1.4~ds0/examples/DemoRunner/Builds/MacOSX/DemoRunner.xcodeproj/project.pbxproj juce-6.1.5~ds0/examples/DemoRunner/Builds/MacOSX/DemoRunner.xcodeproj/project.pbxproj --- juce-6.1.4~ds0/examples/DemoRunner/Builds/MacOSX/DemoRunner.xcodeproj/project.pbxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/examples/DemoRunner/Builds/MacOSX/DemoRunner.xcodeproj/project.pbxproj 2022-01-26 13:07:09.000000000 +0000 @@ -507,7 +507,7 @@ "NDEBUG=1", "JUCE_DISPLAY_SPLASH_SCREEN=0", "JUCE_USE_DARK_SPLASH_SCREEN=1", - "JUCE_PROJUCER_VERSION=0x60104", + "JUCE_PROJUCER_VERSION=0x60105", "JUCE_MODULE_AVAILABLE_juce_analytics=1", "JUCE_MODULE_AVAILABLE_juce_audio_basics=1", "JUCE_MODULE_AVAILABLE_juce_audio_devices=1", @@ -536,8 +536,8 @@ "JUCE_DEMO_RUNNER=1", "JUCE_UNIT_TESTS=1", "JUCER_XCODE_MAC_F6D2F4CF=1", - "JUCE_APP_VERSION=6.1.4", - "JUCE_APP_VERSION_HEX=0x60104", + "JUCE_APP_VERSION=6.1.5", + "JUCE_APP_VERSION_HEX=0x60105", "JucePlugin_Build_VST=0", "JucePlugin_Build_VST3=0", "JucePlugin_Build_AU=0", @@ -587,7 +587,7 @@ "DEBUG=1", "JUCE_DISPLAY_SPLASH_SCREEN=0", "JUCE_USE_DARK_SPLASH_SCREEN=1", - "JUCE_PROJUCER_VERSION=0x60104", + "JUCE_PROJUCER_VERSION=0x60105", "JUCE_MODULE_AVAILABLE_juce_analytics=1", "JUCE_MODULE_AVAILABLE_juce_audio_basics=1", "JUCE_MODULE_AVAILABLE_juce_audio_devices=1", @@ -616,8 +616,8 @@ "JUCE_DEMO_RUNNER=1", "JUCE_UNIT_TESTS=1", "JUCER_XCODE_MAC_F6D2F4CF=1", - "JUCE_APP_VERSION=6.1.4", - "JUCE_APP_VERSION_HEX=0x60104", + "JUCE_APP_VERSION=6.1.5", + "JUCE_APP_VERSION_HEX=0x60105", "JucePlugin_Build_VST=0", "JucePlugin_Build_VST3=0", "JucePlugin_Build_AU=0", diff -Nru juce-6.1.4~ds0/examples/DemoRunner/Builds/MacOSX/Info-App.plist juce-6.1.5~ds0/examples/DemoRunner/Builds/MacOSX/Info-App.plist --- juce-6.1.4~ds0/examples/DemoRunner/Builds/MacOSX/Info-App.plist 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/examples/DemoRunner/Builds/MacOSX/Info-App.plist 2022-01-26 13:07:09.000000000 +0000 @@ -24,9 +24,9 @@ CFBundleSignature ???? CFBundleShortVersionString - 6.1.4 + 6.1.5 CFBundleVersion - 6.1.4 + 6.1.5 NSHumanReadableCopyright Copyright (c) 2020 - Raw Material Software Limited NSHighResolutionCapable diff -Nru juce-6.1.4~ds0/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj juce-6.1.5~ds0/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj --- juce-6.1.4~ds0/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj 2022-01-26 13:07:09.000000000 +0000 @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\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=0x60104;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_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.4;JUCE_APP_VERSION_HEX=0x60104;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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_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.5;JUCE_APP_VERSION_HEX=0x60105;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,7 +106,7 @@ Full ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60104;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_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.4;JUCE_APP_VERSION_HEX=0x60104;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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_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.5;JUCE_APP_VERSION_HEX=0x60105;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 @@ -849,9 +849,15 @@ true + + true + true + + true + true @@ -2085,6 +2091,9 @@ true + + true + true @@ -2835,7 +2844,9 @@ + + @@ -3275,6 +3286,7 @@ + @@ -3291,6 +3303,7 @@ + @@ -3427,6 +3440,7 @@ + diff -Nru juce-6.1.4~ds0/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj.filters juce-6.1.5~ds0/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj.filters --- juce-6.1.4~ds0/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj.filters 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj.filters 2022-01-26 13:07:09.000000000 +0000 @@ -1300,9 +1300,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\native @@ -2596,6 +2602,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -4158,9 +4167,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\players @@ -5478,6 +5493,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -5526,6 +5544,9 @@ JUCE Modules\juce_gui_basics\native\accessibility + + JUCE Modules\juce_gui_basics\native\accessibility + JUCE Modules\juce_gui_basics\native\accessibility @@ -5934,6 +5955,9 @@ JUCE Modules\juce_video\native + + JUCE Modules\juce_video\native + JUCE Modules\juce_video\native diff -Nru juce-6.1.4~ds0/examples/DemoRunner/Builds/VisualStudio2015/resources.rc juce-6.1.5~ds0/examples/DemoRunner/Builds/VisualStudio2015/resources.rc --- juce-6.1.4~ds0/examples/DemoRunner/Builds/VisualStudio2015/resources.rc 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/examples/DemoRunner/Builds/VisualStudio2015/resources.rc 2022-01-26 13:07:09.000000000 +0000 @@ -9,7 +9,7 @@ #include VS_VERSION_INFO VERSIONINFO -FILEVERSION 6,1,4,0 +FILEVERSION 6,1,5,0 BEGIN BLOCK "StringFileInfo" BEGIN @@ -18,9 +18,9 @@ VALUE "CompanyName", "Raw Material Software Limited\0" VALUE "LegalCopyright", "Copyright (c) 2020 - Raw Material Software Limited\0" VALUE "FileDescription", "DemoRunner\0" - VALUE "FileVersion", "6.1.4\0" + VALUE "FileVersion", "6.1.5\0" VALUE "ProductName", "DemoRunner\0" - VALUE "ProductVersion", "6.1.4\0" + VALUE "ProductVersion", "6.1.5\0" END END diff -Nru juce-6.1.4~ds0/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj juce-6.1.5~ds0/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj --- juce-6.1.4~ds0/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj 2022-01-26 13:07:09.000000000 +0000 @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\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=0x60104;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_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.4;JUCE_APP_VERSION_HEX=0x60104;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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_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.5;JUCE_APP_VERSION_HEX=0x60105;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,7 +106,7 @@ Full ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60104;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_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.4;JUCE_APP_VERSION_HEX=0x60104;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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_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.5;JUCE_APP_VERSION_HEX=0x60105;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 @@ -849,9 +849,15 @@ true + + true + true + + true + true @@ -2085,6 +2091,9 @@ true + + true + true @@ -2835,7 +2844,9 @@ + + @@ -3275,6 +3286,7 @@ + @@ -3291,6 +3303,7 @@ + @@ -3427,6 +3440,7 @@ + diff -Nru juce-6.1.4~ds0/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters juce-6.1.5~ds0/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters --- juce-6.1.4~ds0/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters 2022-01-26 13:07:09.000000000 +0000 @@ -1300,9 +1300,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\native @@ -2596,6 +2602,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -4158,9 +4167,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\players @@ -5478,6 +5493,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -5526,6 +5544,9 @@ JUCE Modules\juce_gui_basics\native\accessibility + + JUCE Modules\juce_gui_basics\native\accessibility + JUCE Modules\juce_gui_basics\native\accessibility @@ -5934,6 +5955,9 @@ JUCE Modules\juce_video\native + + JUCE Modules\juce_video\native + JUCE Modules\juce_video\native diff -Nru juce-6.1.4~ds0/examples/DemoRunner/Builds/VisualStudio2017/resources.rc juce-6.1.5~ds0/examples/DemoRunner/Builds/VisualStudio2017/resources.rc --- juce-6.1.4~ds0/examples/DemoRunner/Builds/VisualStudio2017/resources.rc 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/examples/DemoRunner/Builds/VisualStudio2017/resources.rc 2022-01-26 13:07:09.000000000 +0000 @@ -9,7 +9,7 @@ #include VS_VERSION_INFO VERSIONINFO -FILEVERSION 6,1,4,0 +FILEVERSION 6,1,5,0 BEGIN BLOCK "StringFileInfo" BEGIN @@ -18,9 +18,9 @@ VALUE "CompanyName", "Raw Material Software Limited\0" VALUE "LegalCopyright", "Copyright (c) 2020 - Raw Material Software Limited\0" VALUE "FileDescription", "DemoRunner\0" - VALUE "FileVersion", "6.1.4\0" + VALUE "FileVersion", "6.1.5\0" VALUE "ProductName", "DemoRunner\0" - VALUE "ProductVersion", "6.1.4\0" + VALUE "ProductVersion", "6.1.5\0" END END diff -Nru juce-6.1.4~ds0/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj juce-6.1.5~ds0/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj --- juce-6.1.4~ds0/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj 2022-01-26 13:07:09.000000000 +0000 @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\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=0x60104;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_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.4;JUCE_APP_VERSION_HEX=0x60104;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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_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.5;JUCE_APP_VERSION_HEX=0x60105;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,7 +106,7 @@ Full ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60104;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_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.4;JUCE_APP_VERSION_HEX=0x60104;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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_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.5;JUCE_APP_VERSION_HEX=0x60105;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 @@ -849,9 +849,15 @@ true + + true + true + + true + true @@ -2085,6 +2091,9 @@ true + + true + true @@ -2835,7 +2844,9 @@ + + @@ -3275,6 +3286,7 @@ + @@ -3291,6 +3303,7 @@ + @@ -3427,6 +3440,7 @@ + diff -Nru juce-6.1.4~ds0/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters juce-6.1.5~ds0/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters --- juce-6.1.4~ds0/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters 2022-01-26 13:07:09.000000000 +0000 @@ -1300,9 +1300,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\native @@ -2596,6 +2602,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -4158,9 +4167,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\players @@ -5478,6 +5493,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -5526,6 +5544,9 @@ JUCE Modules\juce_gui_basics\native\accessibility + + JUCE Modules\juce_gui_basics\native\accessibility + JUCE Modules\juce_gui_basics\native\accessibility @@ -5934,6 +5955,9 @@ JUCE Modules\juce_video\native + + JUCE Modules\juce_video\native + JUCE Modules\juce_video\native diff -Nru juce-6.1.4~ds0/examples/DemoRunner/Builds/VisualStudio2019/resources.rc juce-6.1.5~ds0/examples/DemoRunner/Builds/VisualStudio2019/resources.rc --- juce-6.1.4~ds0/examples/DemoRunner/Builds/VisualStudio2019/resources.rc 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/examples/DemoRunner/Builds/VisualStudio2019/resources.rc 2022-01-26 13:07:09.000000000 +0000 @@ -9,7 +9,7 @@ #include VS_VERSION_INFO VERSIONINFO -FILEVERSION 6,1,4,0 +FILEVERSION 6,1,5,0 BEGIN BLOCK "StringFileInfo" BEGIN @@ -18,9 +18,9 @@ VALUE "CompanyName", "Raw Material Software Limited\0" VALUE "LegalCopyright", "Copyright (c) 2020 - Raw Material Software Limited\0" VALUE "FileDescription", "DemoRunner\0" - VALUE "FileVersion", "6.1.4\0" + VALUE "FileVersion", "6.1.5\0" VALUE "ProductName", "DemoRunner\0" - VALUE "ProductVersion", "6.1.4\0" + VALUE "ProductVersion", "6.1.5\0" END END diff -Nru juce-6.1.4~ds0/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj juce-6.1.5~ds0/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj --- juce-6.1.4~ds0/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj 2022-01-26 13:07:09.000000000 +0000 @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\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=0x60104;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_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.4;JUCE_APP_VERSION_HEX=0x60104;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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_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.5;JUCE_APP_VERSION_HEX=0x60105;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,7 +106,7 @@ Full ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60104;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_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.4;JUCE_APP_VERSION_HEX=0x60104;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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_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.5;JUCE_APP_VERSION_HEX=0x60105;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 @@ -849,9 +849,15 @@ true + + true + true + + true + true @@ -2085,6 +2091,9 @@ true + + true + true @@ -2835,7 +2844,9 @@ + + @@ -3275,6 +3286,7 @@ + @@ -3291,6 +3303,7 @@ + @@ -3427,6 +3440,7 @@ + diff -Nru juce-6.1.4~ds0/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters juce-6.1.5~ds0/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters --- juce-6.1.4~ds0/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters 2022-01-26 13:07:09.000000000 +0000 @@ -1300,9 +1300,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\native @@ -2596,6 +2602,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -4158,9 +4167,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\players @@ -5478,6 +5493,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -5526,6 +5544,9 @@ JUCE Modules\juce_gui_basics\native\accessibility + + JUCE Modules\juce_gui_basics\native\accessibility + JUCE Modules\juce_gui_basics\native\accessibility @@ -5934,6 +5955,9 @@ JUCE Modules\juce_video\native + + JUCE Modules\juce_video\native + JUCE Modules\juce_video\native diff -Nru juce-6.1.4~ds0/examples/DemoRunner/Builds/VisualStudio2022/resources.rc juce-6.1.5~ds0/examples/DemoRunner/Builds/VisualStudio2022/resources.rc --- juce-6.1.4~ds0/examples/DemoRunner/Builds/VisualStudio2022/resources.rc 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/examples/DemoRunner/Builds/VisualStudio2022/resources.rc 2022-01-26 13:07:09.000000000 +0000 @@ -9,7 +9,7 @@ #include VS_VERSION_INFO VERSIONINFO -FILEVERSION 6,1,4,0 +FILEVERSION 6,1,5,0 BEGIN BLOCK "StringFileInfo" BEGIN @@ -18,9 +18,9 @@ VALUE "CompanyName", "Raw Material Software Limited\0" VALUE "LegalCopyright", "Copyright (c) 2020 - Raw Material Software Limited\0" VALUE "FileDescription", "DemoRunner\0" - VALUE "FileVersion", "6.1.4\0" + VALUE "FileVersion", "6.1.5\0" VALUE "ProductName", "DemoRunner\0" - VALUE "ProductVersion", "6.1.4\0" + VALUE "ProductVersion", "6.1.5\0" END END diff -Nru juce-6.1.4~ds0/examples/DemoRunner/DemoRunner.jucer juce-6.1.5~ds0/examples/DemoRunner/DemoRunner.jucer --- juce-6.1.4~ds0/examples/DemoRunner/DemoRunner.jucer 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/examples/DemoRunner/DemoRunner.jucer 2022-01-26 13:07:09.000000000 +0000 @@ -1,7 +1,7 @@ (); header->addColumn ("Message", messageColumn, 200, 30, -1, TableHeaderComponent::notSortable); + header->addColumn ("Time", timeColumn, 100, 30, -1, TableHeaderComponent::notSortable); header->addColumn ("Channel", channelColumn, 100, 30, -1, TableHeaderComponent::notSortable); header->addColumn ("Data", dataColumn, 200, 30, -1, TableHeaderComponent::notSortable); return header; @@ -141,6 +142,7 @@ enum { messageColumn = 1, + timeColumn, channelColumn, dataColumn }; @@ -165,6 +167,7 @@ switch (columnId) { case messageColumn: return getEventString (message); + case timeColumn: return String (message.getTimeStamp()); case channelColumn: return String (message.getChannel()); case dataColumn: return getDataString (message); default: break; @@ -221,7 +224,7 @@ MidiLoggerPluginDemoProcessor() : AudioProcessor (getBusesLayout()) { - state.addChild ({ "uiState", { { "width", 500 }, { "height", 300 } }, {} }, -1, nullptr); + state.addChild ({ "uiState", { { "width", 600 }, { "height", 300 } }, {} }, -1, nullptr); startTimerHz (60); } diff -Nru juce-6.1.4~ds0/examples/Plugins/SamplerPluginDemo.h juce-6.1.5~ds0/examples/Plugins/SamplerPluginDemo.h --- juce-6.1.4~ds0/examples/Plugins/SamplerPluginDemo.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/examples/Plugins/SamplerPluginDemo.h 2022-01-26 13:07:09.000000000 +0000 @@ -605,22 +605,6 @@ namespace juce { -bool operator== (const MPEZoneLayout& a, const MPEZoneLayout& b) -{ - if (a.getLowerZone() != b.getLowerZone()) - return false; - - if (a.getUpperZone() != b.getUpperZone()) - return false; - - return true; -} - -bool operator!= (const MPEZoneLayout& a, const MPEZoneLayout& b) -{ - return ! (a == b); -} - template<> struct VariantConverter { diff -Nru juce-6.1.4~ds0/extras/AudioPerformanceTest/Builds/Android/app/build.gradle juce-6.1.5~ds0/extras/AudioPerformanceTest/Builds/Android/app/build.gradle --- juce-6.1.4~ds0/extras/AudioPerformanceTest/Builds/Android/app/build.gradle 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/AudioPerformanceTest/Builds/Android/app/build.gradle 2022-01-26 13:07:09.000000000 +0000 @@ -1,7 +1,7 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 29 + compileSdkVersion 30 externalNativeBuild { cmake { path "CMakeLists.txt" @@ -20,7 +20,7 @@ defaultConfig { applicationId "com.juce.audioperformancetest" minSdkVersion 23 - targetSdkVersion 29 + targetSdkVersion 30 externalNativeBuild { cmake { arguments "-DANDROID_TOOLCHAIN=clang", "-DANDROID_PLATFORM=android-23", "-DANDROID_STL=c++_static", "-DANDROID_CPP_FEATURES=exceptions rtti", "-DANDROID_ARM_MODE=arm", "-DANDROID_ARM_NEON=TRUE", "-DCMAKE_CXX_STANDARD=14", "-DCMAKE_CXX_EXTENSIONS=OFF" diff -Nru juce-6.1.4~ds0/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt juce-6.1.5~ds0/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt --- juce-6.1.4~ds0/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt 2022-01-26 13:07:09.000000000 +0000 @@ -23,9 +23,9 @@ 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=0x60104]] [[-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_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1]] [[-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=0x60105]] [[-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_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1]] [[-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=0x60104]] [[-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_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1]] [[-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=0x60105]] [[-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_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1]] [[-DJUCE_STANDALONE_APPLICATION=1]] [[-DJUCER_ANDROIDSTUDIO_7F0E4A25=1]] [[-DJUCE_APP_VERSION=1.0.0]] [[-DJUCE_APP_VERSION_HEX=0x10000]] [[-DNDEBUG=1]]) else() message( FATAL_ERROR "No matching build-configuration found." ) endif() @@ -634,8 +634,12 @@ "../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.cpp" "../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.h" "../../../../../modules/juce_audio_utils/gui/juce_BluetoothMidiDevicePairingDialogue.h" + "../../../../../modules/juce_audio_utils/gui/juce_KeyboardComponentBase.cpp" + "../../../../../modules/juce_audio_utils/gui/juce_KeyboardComponentBase.h" "../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp" "../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h" + "../../../../../modules/juce_audio_utils/gui/juce_MPEKeyboardComponent.cpp" + "../../../../../modules/juce_audio_utils/gui/juce_MPEKeyboardComponent.h" "../../../../../modules/juce_audio_utils/native/juce_android_BluetoothMidiDevicePairingDialogue.cpp" "../../../../../modules/juce_audio_utils/native/juce_ios_BluetoothMidiDevicePairingDialogue.mm" "../../../../../modules/juce_audio_utils/native/juce_linux_AudioCDReader.cpp" @@ -1315,6 +1319,8 @@ "../../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.h" "../../../../../modules/juce_gui_basics/misc/juce_DropShadower.cpp" "../../../../../modules/juce_gui_basics/misc/juce_DropShadower.h" + "../../../../../modules/juce_gui_basics/misc/juce_FocusOutline.cpp" + "../../../../../modules/juce_gui_basics/misc/juce_FocusOutline.h" "../../../../../modules/juce_gui_basics/misc/juce_JUCESplashScreen.cpp" "../../../../../modules/juce_gui_basics/misc/juce_JUCESplashScreen.h" "../../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp" @@ -1345,6 +1351,7 @@ "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_Accessibility.cpp" "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.cpp" "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.h" + "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_ComInterfaces.h" "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_UIAExpandCollapseProvider.h" "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridItemProvider.h" "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridProvider.h" @@ -2142,8 +2149,12 @@ set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_BluetoothMidiDevicePairingDialogue.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_KeyboardComponentBase.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_KeyboardComponentBase.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_MPEKeyboardComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_MPEKeyboardComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_android_BluetoothMidiDevicePairingDialogue.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_ios_BluetoothMidiDevicePairingDialogue.mm" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_linux_AudioCDReader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2823,6 +2834,8 @@ set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_DropShadower.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_DropShadower.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_FocusOutline.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_FocusOutline.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_JUCESplashScreen.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_JUCESplashScreen.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2853,6 +2866,7 @@ set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_Accessibility.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_ComInterfaces.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_UIAExpandCollapseProvider.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridItemProvider.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridProvider.h" PROPERTIES HEADER_FILE_ONLY TRUE) diff -Nru juce-6.1.4~ds0/extras/AudioPerformanceTest/Builds/iOS/AudioPerformanceTest.xcodeproj/project.pbxproj juce-6.1.5~ds0/extras/AudioPerformanceTest/Builds/iOS/AudioPerformanceTest.xcodeproj/project.pbxproj --- juce-6.1.4~ds0/extras/AudioPerformanceTest/Builds/iOS/AudioPerformanceTest.xcodeproj/project.pbxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/AudioPerformanceTest/Builds/iOS/AudioPerformanceTest.xcodeproj/project.pbxproj 2022-01-26 13:07:09.000000000 +0000 @@ -338,7 +338,7 @@ "JUCE_CONTENT_SHARING=1", "JUCE_DISPLAY_SPLASH_SCREEN=0", "JUCE_USE_DARK_SPLASH_SCREEN=1", - "JUCE_PROJUCER_VERSION=0x60104", + "JUCE_PROJUCER_VERSION=0x60105", "JUCE_MODULE_AVAILABLE_juce_audio_basics=1", "JUCE_MODULE_AVAILABLE_juce_audio_devices=1", "JUCE_MODULE_AVAILABLE_juce_audio_formats=1", @@ -399,7 +399,7 @@ "JUCE_CONTENT_SHARING=1", "JUCE_DISPLAY_SPLASH_SCREEN=0", "JUCE_USE_DARK_SPLASH_SCREEN=1", - "JUCE_PROJUCER_VERSION=0x60104", + "JUCE_PROJUCER_VERSION=0x60105", "JUCE_MODULE_AVAILABLE_juce_audio_basics=1", "JUCE_MODULE_AVAILABLE_juce_audio_devices=1", "JUCE_MODULE_AVAILABLE_juce_audio_formats=1", diff -Nru juce-6.1.4~ds0/extras/AudioPerformanceTest/Builds/LinuxMakefile/Makefile juce-6.1.5~ds0/extras/AudioPerformanceTest/Builds/LinuxMakefile/Makefile --- juce-6.1.4~ds0/extras/AudioPerformanceTest/Builds/LinuxMakefile/Makefile 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/AudioPerformanceTest/Builds/LinuxMakefile/Makefile 2022-01-26 13:07:09.000000000 +0000 @@ -35,7 +35,7 @@ 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=0x60104" "-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_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-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 webkit2gtk-4.0 gtk+-x11-3.0) -pthread -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=0x60105" "-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_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-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 webkit2gtk-4.0 gtk+-x11-3.0) -pthread -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 := AudioPerformanceTest @@ -56,7 +56,7 @@ TARGET_ARCH := endif - JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60104" "-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_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-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 webkit2gtk-4.0 gtk+-x11-3.0) -pthread -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=0x60105" "-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_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-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 webkit2gtk-4.0 gtk+-x11-3.0) -pthread -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 := AudioPerformanceTest diff -Nru juce-6.1.4~ds0/extras/AudioPerformanceTest/Builds/MacOSX/AudioPerformanceTest.xcodeproj/project.pbxproj juce-6.1.5~ds0/extras/AudioPerformanceTest/Builds/MacOSX/AudioPerformanceTest.xcodeproj/project.pbxproj --- juce-6.1.4~ds0/extras/AudioPerformanceTest/Builds/MacOSX/AudioPerformanceTest.xcodeproj/project.pbxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/AudioPerformanceTest/Builds/MacOSX/AudioPerformanceTest.xcodeproj/project.pbxproj 2022-01-26 13:07:09.000000000 +0000 @@ -325,7 +325,7 @@ "DEBUG=1", "JUCE_DISPLAY_SPLASH_SCREEN=0", "JUCE_USE_DARK_SPLASH_SCREEN=1", - "JUCE_PROJUCER_VERSION=0x60104", + "JUCE_PROJUCER_VERSION=0x60105", "JUCE_MODULE_AVAILABLE_juce_audio_basics=1", "JUCE_MODULE_AVAILABLE_juce_audio_devices=1", "JUCE_MODULE_AVAILABLE_juce_audio_formats=1", @@ -387,7 +387,7 @@ "NDEBUG=1", "JUCE_DISPLAY_SPLASH_SCREEN=0", "JUCE_USE_DARK_SPLASH_SCREEN=1", - "JUCE_PROJUCER_VERSION=0x60104", + "JUCE_PROJUCER_VERSION=0x60105", "JUCE_MODULE_AVAILABLE_juce_audio_basics=1", "JUCE_MODULE_AVAILABLE_juce_audio_devices=1", "JUCE_MODULE_AVAILABLE_juce_audio_formats=1", diff -Nru juce-6.1.4~ds0/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj juce-6.1.5~ds0/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj --- juce-6.1.4~ds0/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj 2022-01-26 13:07:09.000000000 +0000 @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\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=0x60104;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_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1;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,7 +105,7 @@ Full ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60104;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_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1;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 @@ -830,9 +830,15 @@ true + + true + true + + true + true @@ -1796,6 +1802,9 @@ true + + true + true @@ -2436,7 +2445,9 @@ + + @@ -2774,6 +2785,7 @@ + @@ -2790,6 +2802,7 @@ + diff -Nru juce-6.1.4~ds0/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters juce-6.1.5~ds0/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters --- juce-6.1.4~ds0/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters 2022-01-26 13:07:09.000000000 +0000 @@ -1150,9 +1150,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\native @@ -2170,6 +2176,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -3579,9 +3588,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\players @@ -4593,6 +4608,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -4641,6 +4659,9 @@ JUCE Modules\juce_gui_basics\native\accessibility + + JUCE Modules\juce_gui_basics\native\accessibility + JUCE Modules\juce_gui_basics\native\accessibility diff -Nru juce-6.1.4~ds0/extras/AudioPluginHost/AudioPluginHost.jucer juce-6.1.5~ds0/extras/AudioPluginHost/AudioPluginHost.jucer --- juce-6.1.4~ds0/extras/AudioPluginHost/AudioPluginHost.jucer 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/AudioPluginHost/AudioPluginHost.jucer 2022-01-26 13:07:09.000000000 +0000 @@ -6,9 +6,9 @@ reportAppUsage="0" companyCopyright="Raw Material Software Limited" useAppConfig="0" addUsingNamespaceToJuceHeader="1" jucerFormatVersion="1"> - diff -Nru juce-6.1.4~ds0/extras/AudioPluginHost/Builds/Android/app/build.gradle juce-6.1.5~ds0/extras/AudioPluginHost/Builds/Android/app/build.gradle --- juce-6.1.4~ds0/extras/AudioPluginHost/Builds/Android/app/build.gradle 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/AudioPluginHost/Builds/Android/app/build.gradle 2022-01-26 13:07:09.000000000 +0000 @@ -1,7 +1,7 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 29 + compileSdkVersion 30 externalNativeBuild { cmake { path "CMakeLists.txt" @@ -20,7 +20,7 @@ defaultConfig { applicationId "com.juce.pluginhost" minSdkVersion 23 - targetSdkVersion 29 + targetSdkVersion 30 externalNativeBuild { cmake { arguments "-DANDROID_TOOLCHAIN=clang", "-DANDROID_PLATFORM=android-23", "-DANDROID_STL=c++_static", "-DANDROID_CPP_FEATURES=exceptions rtti", "-DANDROID_ARM_MODE=arm", "-DANDROID_ARM_NEON=TRUE", "-DCMAKE_CXX_STANDARD=14", "-DCMAKE_CXX_EXTENSIONS=OFF" diff -Nru juce-6.1.4~ds0/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt juce-6.1.5~ds0/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt --- juce-6.1.4~ds0/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt 2022-01-26 13:07:09.000000000 +0000 @@ -24,9 +24,9 @@ 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=0x60104]] [[-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=0x60105]] [[-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]]) elseif(JUCE_BUILD_CONFIGURATION MATCHES "RELEASE") - add_definitions([[-DJUCE_DISPLAY_SPLASH_SCREEN=0]] [[-DJUCE_USE_DARK_SPLASH_SCREEN=1]] [[-DJUCE_PROJUCER_VERSION=0x60104]] [[-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=0x60105]] [[-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]]) 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") @@ -657,8 +657,12 @@ "../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.cpp" "../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.h" "../../../../../modules/juce_audio_utils/gui/juce_BluetoothMidiDevicePairingDialogue.h" + "../../../../../modules/juce_audio_utils/gui/juce_KeyboardComponentBase.cpp" + "../../../../../modules/juce_audio_utils/gui/juce_KeyboardComponentBase.h" "../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp" "../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h" + "../../../../../modules/juce_audio_utils/gui/juce_MPEKeyboardComponent.cpp" + "../../../../../modules/juce_audio_utils/gui/juce_MPEKeyboardComponent.h" "../../../../../modules/juce_audio_utils/native/juce_android_BluetoothMidiDevicePairingDialogue.cpp" "../../../../../modules/juce_audio_utils/native/juce_ios_BluetoothMidiDevicePairingDialogue.mm" "../../../../../modules/juce_audio_utils/native/juce_linux_AudioCDReader.cpp" @@ -1437,6 +1441,8 @@ "../../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.h" "../../../../../modules/juce_gui_basics/misc/juce_DropShadower.cpp" "../../../../../modules/juce_gui_basics/misc/juce_DropShadower.h" + "../../../../../modules/juce_gui_basics/misc/juce_FocusOutline.cpp" + "../../../../../modules/juce_gui_basics/misc/juce_FocusOutline.h" "../../../../../modules/juce_gui_basics/misc/juce_JUCESplashScreen.cpp" "../../../../../modules/juce_gui_basics/misc/juce_JUCESplashScreen.h" "../../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp" @@ -1467,6 +1473,7 @@ "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_Accessibility.cpp" "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.cpp" "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.h" + "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_ComInterfaces.h" "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_UIAExpandCollapseProvider.h" "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridItemProvider.h" "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridProvider.h" @@ -2319,8 +2326,12 @@ set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_BluetoothMidiDevicePairingDialogue.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_KeyboardComponentBase.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_KeyboardComponentBase.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_MPEKeyboardComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_MPEKeyboardComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_android_BluetoothMidiDevicePairingDialogue.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_ios_BluetoothMidiDevicePairingDialogue.mm" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_linux_AudioCDReader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -3099,6 +3110,8 @@ set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_DropShadower.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_DropShadower.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_FocusOutline.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_FocusOutline.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_JUCESplashScreen.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_JUCESplashScreen.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -3129,6 +3142,7 @@ set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_Accessibility.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_ComInterfaces.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_UIAExpandCollapseProvider.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridItemProvider.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridProvider.h" PROPERTIES HEADER_FILE_ONLY TRUE) diff -Nru juce-6.1.4~ds0/extras/AudioPluginHost/Builds/iOS/AudioPluginHost.xcodeproj/project.pbxproj juce-6.1.5~ds0/extras/AudioPluginHost/Builds/iOS/AudioPluginHost.xcodeproj/project.pbxproj --- juce-6.1.4~ds0/extras/AudioPluginHost/Builds/iOS/AudioPluginHost.xcodeproj/project.pbxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/AudioPluginHost/Builds/iOS/AudioPluginHost.xcodeproj/project.pbxproj 2022-01-26 13:07:09.000000000 +0000 @@ -442,7 +442,7 @@ "JUCE_CONTENT_SHARING=1", "JUCE_DISPLAY_SPLASH_SCREEN=0", "JUCE_USE_DARK_SPLASH_SCREEN=1", - "JUCE_PROJUCER_VERSION=0x60104", + "JUCE_PROJUCER_VERSION=0x60105", "JUCE_MODULE_AVAILABLE_juce_audio_basics=1", "JUCE_MODULE_AVAILABLE_juce_audio_devices=1", "JUCE_MODULE_AVAILABLE_juce_audio_formats=1", @@ -573,7 +573,7 @@ "JUCE_CONTENT_SHARING=1", "JUCE_DISPLAY_SPLASH_SCREEN=0", "JUCE_USE_DARK_SPLASH_SCREEN=1", - "JUCE_PROJUCER_VERSION=0x60104", + "JUCE_PROJUCER_VERSION=0x60105", "JUCE_MODULE_AVAILABLE_juce_audio_basics=1", "JUCE_MODULE_AVAILABLE_juce_audio_devices=1", "JUCE_MODULE_AVAILABLE_juce_audio_formats=1", diff -Nru juce-6.1.4~ds0/extras/AudioPluginHost/Builds/LinuxMakefile/Makefile juce-6.1.5~ds0/extras/AudioPluginHost/Builds/LinuxMakefile/Makefile --- juce-6.1.4~ds0/extras/AudioPluginHost/Builds/LinuxMakefile/Makefile 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/AudioPluginHost/Builds/LinuxMakefile/Makefile 2022-01-26 13:07:09.000000000 +0000 @@ -35,7 +35,7 @@ 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=0x60104" "-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=0x60105" "-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_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 @@ -56,7 +56,7 @@ TARGET_ARCH := endif - JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60104" "-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=0x60105" "-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_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 diff -Nru juce-6.1.4~ds0/extras/AudioPluginHost/Builds/MacOSX/AudioPluginHost.xcodeproj/project.pbxproj juce-6.1.5~ds0/extras/AudioPluginHost/Builds/MacOSX/AudioPluginHost.xcodeproj/project.pbxproj --- juce-6.1.4~ds0/extras/AudioPluginHost/Builds/MacOSX/AudioPluginHost.xcodeproj/project.pbxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/AudioPluginHost/Builds/MacOSX/AudioPluginHost.xcodeproj/project.pbxproj 2022-01-26 13:07:09.000000000 +0000 @@ -433,7 +433,7 @@ "NDEBUG=1", "JUCE_DISPLAY_SPLASH_SCREEN=0", "JUCE_USE_DARK_SPLASH_SCREEN=1", - "JUCE_PROJUCER_VERSION=0x60104", + "JUCE_PROJUCER_VERSION=0x60105", "JUCE_MODULE_AVAILABLE_juce_audio_basics=1", "JUCE_MODULE_AVAILABLE_juce_audio_devices=1", "JUCE_MODULE_AVAILABLE_juce_audio_formats=1", @@ -563,7 +563,7 @@ "DEBUG=1", "JUCE_DISPLAY_SPLASH_SCREEN=0", "JUCE_USE_DARK_SPLASH_SCREEN=1", - "JUCE_PROJUCER_VERSION=0x60104", + "JUCE_PROJUCER_VERSION=0x60105", "JUCE_MODULE_AVAILABLE_juce_audio_basics=1", "JUCE_MODULE_AVAILABLE_juce_audio_devices=1", "JUCE_MODULE_AVAILABLE_juce_audio_formats=1", diff -Nru juce-6.1.4~ds0/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj juce-6.1.5~ds0/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj --- juce-6.1.4~ds0/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj 2022-01-26 13:07:09.000000000 +0000 @@ -64,7 +64,7 @@ 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=0x60104;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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) MultiThreadedDebugDLL true NotUsing @@ -106,7 +106,7 @@ 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=0x60104;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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) MultiThreadedDLL true NotUsing @@ -837,9 +837,15 @@ true + + true + true + + true + true @@ -1932,6 +1938,9 @@ true + + true + true @@ -2617,7 +2626,9 @@ + + @@ -3009,6 +3020,7 @@ + @@ -3025,6 +3037,7 @@ + diff -Nru juce-6.1.4~ds0/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj.filters juce-6.1.5~ds0/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj.filters --- juce-6.1.4~ds0/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj.filters 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj.filters 2022-01-26 13:07:09.000000000 +0000 @@ -1222,9 +1222,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\native @@ -2377,6 +2383,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -3852,9 +3861,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\players @@ -5028,6 +5043,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -5076,6 +5094,9 @@ JUCE Modules\juce_gui_basics\native\accessibility + + JUCE Modules\juce_gui_basics\native\accessibility + JUCE Modules\juce_gui_basics\native\accessibility diff -Nru juce-6.1.4~ds0/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj juce-6.1.5~ds0/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj --- juce-6.1.4~ds0/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj 2022-01-26 13:07:09.000000000 +0000 @@ -64,7 +64,7 @@ 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=0x60104;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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) MultiThreadedDebugDLL true NotUsing @@ -106,7 +106,7 @@ 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=0x60104;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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) MultiThreadedDLL true NotUsing @@ -837,9 +837,15 @@ true + + true + true + + true + true @@ -1932,6 +1938,9 @@ true + + true + true @@ -2617,7 +2626,9 @@ + + @@ -3009,6 +3020,7 @@ + @@ -3025,6 +3037,7 @@ + diff -Nru juce-6.1.4~ds0/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters juce-6.1.5~ds0/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters --- juce-6.1.4~ds0/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters 2022-01-26 13:07:09.000000000 +0000 @@ -1222,9 +1222,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\native @@ -2377,6 +2383,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -3852,9 +3861,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\players @@ -5028,6 +5043,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -5076,6 +5094,9 @@ JUCE Modules\juce_gui_basics\native\accessibility + + JUCE Modules\juce_gui_basics\native\accessibility + JUCE Modules\juce_gui_basics\native\accessibility diff -Nru juce-6.1.4~ds0/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj juce-6.1.5~ds0/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj --- juce-6.1.4~ds0/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj 2022-01-26 13:07:09.000000000 +0000 @@ -64,7 +64,7 @@ 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=0x60104;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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) MultiThreadedDebugDLL true NotUsing @@ -106,7 +106,7 @@ 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=0x60104;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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) MultiThreadedDLL true NotUsing @@ -837,9 +837,15 @@ true + + true + true + + true + true @@ -1932,6 +1938,9 @@ true + + true + true @@ -2617,7 +2626,9 @@ + + @@ -3009,6 +3020,7 @@ + @@ -3025,6 +3037,7 @@ + diff -Nru juce-6.1.4~ds0/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters juce-6.1.5~ds0/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters --- juce-6.1.4~ds0/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters 2022-01-26 13:07:09.000000000 +0000 @@ -1222,9 +1222,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\native @@ -2377,6 +2383,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -3852,9 +3861,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\players @@ -5028,6 +5043,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -5076,6 +5094,9 @@ JUCE Modules\juce_gui_basics\native\accessibility + + JUCE Modules\juce_gui_basics\native\accessibility + JUCE Modules\juce_gui_basics\native\accessibility diff -Nru juce-6.1.4~ds0/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj juce-6.1.5~ds0/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj --- juce-6.1.4~ds0/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj 2022-01-26 13:07:09.000000000 +0000 @@ -64,7 +64,7 @@ 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=0x60104;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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) MultiThreadedDebugDLL true NotUsing @@ -106,7 +106,7 @@ 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=0x60104;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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) MultiThreadedDLL true NotUsing @@ -837,9 +837,15 @@ true + + true + true + + true + true @@ -1932,6 +1938,9 @@ true + + true + true @@ -2617,7 +2626,9 @@ + + @@ -3009,6 +3020,7 @@ + @@ -3025,6 +3037,7 @@ + diff -Nru juce-6.1.4~ds0/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters juce-6.1.5~ds0/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters --- juce-6.1.4~ds0/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters 2022-01-26 13:07:09.000000000 +0000 @@ -1222,9 +1222,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\native @@ -2377,6 +2383,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -3852,9 +3861,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\players @@ -5028,6 +5043,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -5076,6 +5094,9 @@ JUCE Modules\juce_gui_basics\native\accessibility + + JUCE Modules\juce_gui_basics\native\accessibility + JUCE Modules\juce_gui_basics\native\accessibility diff -Nru juce-6.1.4~ds0/extras/BinaryBuilder/BinaryBuilder.jucer juce-6.1.5~ds0/extras/BinaryBuilder/BinaryBuilder.jucer --- juce-6.1.4~ds0/extras/BinaryBuilder/BinaryBuilder.jucer 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/BinaryBuilder/BinaryBuilder.jucer 2022-01-26 13:07:09.000000000 +0000 @@ -6,8 +6,7 @@ companyCopyright="Raw Material Software Limited" useAppConfig="0" addUsingNamespaceToJuceHeader="1" jucerFormatVersion="1"> - + @@ -16,7 +15,7 @@ - + diff -Nru juce-6.1.4~ds0/extras/BinaryBuilder/Builds/LinuxMakefile/Makefile juce-6.1.5~ds0/extras/BinaryBuilder/Builds/LinuxMakefile/Makefile --- juce-6.1.4~ds0/extras/BinaryBuilder/Builds/LinuxMakefile/Makefile 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/BinaryBuilder/Builds/LinuxMakefile/Makefile 2022-01-26 13:07:09.000000000 +0000 @@ -35,7 +35,7 @@ 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=0x60104" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell pkg-config --cflags libcurl) -pthread -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=0x60105" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell pkg-config --cflags libcurl) -pthread -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 := BinaryBuilder @@ -56,7 +56,7 @@ TARGET_ARCH := endif - JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60104" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell pkg-config --cflags libcurl) -pthread -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=0x60105" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell pkg-config --cflags libcurl) -pthread -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 := BinaryBuilder diff -Nru juce-6.1.4~ds0/extras/BinaryBuilder/Builds/MacOSX/BinaryBuilder.xcodeproj/project.pbxproj juce-6.1.5~ds0/extras/BinaryBuilder/Builds/MacOSX/BinaryBuilder.xcodeproj/project.pbxproj --- juce-6.1.4~ds0/extras/BinaryBuilder/Builds/MacOSX/BinaryBuilder.xcodeproj/project.pbxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/BinaryBuilder/Builds/MacOSX/BinaryBuilder.xcodeproj/project.pbxproj 2022-01-26 13:07:09.000000000 +0000 @@ -201,7 +201,7 @@ "DEBUG=1", "JUCE_DISPLAY_SPLASH_SCREEN=0", "JUCE_USE_DARK_SPLASH_SCREEN=1", - "JUCE_PROJUCER_VERSION=0x60104", + "JUCE_PROJUCER_VERSION=0x60105", "JUCE_MODULE_AVAILABLE_juce_core=1", "JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1", "JUCE_STANDALONE_APPLICATION=1", @@ -299,7 +299,7 @@ "NDEBUG=1", "JUCE_DISPLAY_SPLASH_SCREEN=0", "JUCE_USE_DARK_SPLASH_SCREEN=1", - "JUCE_PROJUCER_VERSION=0x60104", + "JUCE_PROJUCER_VERSION=0x60105", "JUCE_MODULE_AVAILABLE_juce_core=1", "JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1", "JUCE_STANDALONE_APPLICATION=1", diff -Nru juce-6.1.4~ds0/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj juce-6.1.5~ds0/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj --- juce-6.1.4~ds0/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj 2022-01-26 13:07:09.000000000 +0000 @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\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=0x60104;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;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) + _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;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,7 +105,7 @@ Full ..\..\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=0x60104;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;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) + _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;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 diff -Nru juce-6.1.4~ds0/extras/Build/CMake/JUCEHelperTargets.cmake juce-6.1.5~ds0/extras/Build/CMake/JUCEHelperTargets.cmake --- juce-6.1.4~ds0/extras/Build/CMake/JUCEHelperTargets.cmake 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/Build/CMake/JUCEHelperTargets.cmake 2022-01-26 13:07:09.000000000 +0000 @@ -53,9 +53,9 @@ $<$:$,-GL,-flto>>) target_link_libraries(juce_recommended_lto_flags INTERFACE $<$:$<$:-LTCG>>) -elseif((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") - OR (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")) +elseif((NOT MINGW) AND ((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") + OR (CMAKE_CXX_COMPILER_ID STREQUAL "GNU"))) target_compile_options(juce_recommended_lto_flags INTERFACE $<$:-flto>) target_link_libraries(juce_recommended_lto_flags INTERFACE $<$:-flto>) endif() diff -Nru juce-6.1.4~ds0/extras/Build/CMake/JUCEModuleSupport.cmake juce-6.1.5~ds0/extras/Build/CMake/JUCEModuleSupport.cmake --- juce-6.1.4~ds0/extras/Build/CMake/JUCEModuleSupport.cmake 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/Build/CMake/JUCEModuleSupport.cmake 2022-01-26 13:07:09.000000000 +0000 @@ -497,6 +497,25 @@ target_compile_definitions(${module_name} INTERFACE LINUX=1) endif() + if((${module_name} STREQUAL "juce_audio_devices") AND (CMAKE_SYSTEM_NAME STREQUAL "Android")) + add_subdirectory("${module_path}/native/oboe") + target_link_libraries(${module_name} INTERFACE oboe) + endif() + + if((${module_name} STREQUAL "juce_opengl") AND (CMAKE_SYSTEM_NAME STREQUAL "Android")) + set(platform_supports_gl3 0) + + if(CMAKE_SYSTEM_VERSION VERSION_GREATER_EQUAL 18) + set(platform_supports_gl3 1) + endif() + + if(platform_supports_gl3) + target_compile_definitions(${module_name} INTERFACE JUCE_ANDROID_GL_ES_VERSION_3_0=1) + endif() + + target_link_libraries(${module_name} INTERFACE EGL $) + endif() + _juce_extract_metadata_block(JUCE_MODULE_DECLARATION "${module_path}/${module_header_name}" metadata_dict) _juce_get_metadata("${metadata_dict}" minimumCppStandard module_cpp_standard) diff -Nru juce-6.1.4~ds0/extras/Build/juceaide/CMakeLists.txt juce-6.1.5~ds0/extras/Build/juceaide/CMakeLists.txt --- juce-6.1.4~ds0/extras/Build/juceaide/CMakeLists.txt 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/Build/juceaide/CMakeLists.txt 2022-01-26 13:07:09.000000000 +0000 @@ -53,17 +53,20 @@ # environment variables, which is unfortunate because we really don't want to cross-compile # juceaide. If you really want to set the compilers for juceaide, pass the appropriate # CMAKE__COMPILER flags when configuring CMake. - unset(ENV{ASM}) - unset(ENV{CC}) - unset(ENV{CXX}) + if((CMAKE_SYSTEM_NAME STREQUAL "Android") OR (CMAKE_SYSTEM_NAME STREQUAL "iOS")) + unset(ENV{ASM}) + unset(ENV{CC}) + unset(ENV{CXX}) + endif() message(STATUS "Configuring juceaide") - # Looks like we're boostrapping, reinvoke CMake + # Looks like we're bootstrapping, reinvoke CMake execute_process(COMMAND "${CMAKE_COMMAND}" "." "-B${JUCE_BINARY_DIR}/tools" "-G${CMAKE_GENERATOR}" + "-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}" "-DCMAKE_BUILD_TYPE=Debug" "-DJUCE_BUILD_HELPER_TOOLS=ON" "-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}" diff -Nru juce-6.1.4~ds0/extras/Build/juce_build_tools/juce_build_tools.h juce-6.1.5~ds0/extras/Build/juce_build_tools/juce_build_tools.h --- juce-6.1.4~ds0/extras/Build/juce_build_tools/juce_build_tools.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/Build/juce_build_tools/juce_build_tools.h 2022-01-26 13:07:09.000000000 +0000 @@ -34,7 +34,7 @@ ID: juce_build_tools vendor: juce - version: 6.1.4 + version: 6.1.5 name: JUCE Build Tools description: Classes for generating intermediate files for JUCE projects. website: http://www.juce.com/juce diff -Nru juce-6.1.4~ds0/extras/NetworkGraphicsDemo/Builds/Android/app/build.gradle juce-6.1.5~ds0/extras/NetworkGraphicsDemo/Builds/Android/app/build.gradle --- juce-6.1.4~ds0/extras/NetworkGraphicsDemo/Builds/Android/app/build.gradle 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/NetworkGraphicsDemo/Builds/Android/app/build.gradle 2022-01-26 13:07:09.000000000 +0000 @@ -1,7 +1,7 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 29 + compileSdkVersion 30 externalNativeBuild { cmake { path "CMakeLists.txt" @@ -20,7 +20,7 @@ defaultConfig { applicationId "com.juce.networkgraphicsdemo" minSdkVersion 16 - targetSdkVersion 29 + targetSdkVersion 30 externalNativeBuild { cmake { arguments "-DANDROID_TOOLCHAIN=clang", "-DANDROID_PLATFORM=android-16", "-DANDROID_STL=c++_static", "-DANDROID_CPP_FEATURES=exceptions rtti", "-DANDROID_ARM_MODE=arm", "-DANDROID_ARM_NEON=TRUE", "-DCMAKE_CXX_STANDARD=14", "-DCMAKE_CXX_EXTENSIONS=OFF" diff -Nru juce-6.1.4~ds0/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt juce-6.1.5~ds0/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt --- juce-6.1.4~ds0/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt 2022-01-26 13:07:09.000000000 +0000 @@ -23,9 +23,9 @@ 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=0x60104]] [[-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_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_GLOBAL_MODULE_SETTINGS_INCLUDED=1]] [[-DJUCE_STANDALONE_APPLICATION=1]] [[-DJUCE_DEBUG=0]] [[-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=0x60105]] [[-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_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_GLOBAL_MODULE_SETTINGS_INCLUDED=1]] [[-DJUCE_STANDALONE_APPLICATION=1]] [[-DJUCE_DEBUG=0]] [[-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=0x60104]] [[-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_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_GLOBAL_MODULE_SETTINGS_INCLUDED=1]] [[-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=0x60105]] [[-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_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_GLOBAL_MODULE_SETTINGS_INCLUDED=1]] [[-DJUCE_STANDALONE_APPLICATION=1]] [[-DJUCER_ANDROIDSTUDIO_7F0E4A25=1]] [[-DJUCE_APP_VERSION=1.0.0]] [[-DJUCE_APP_VERSION_HEX=0x10000]] [[-DNDEBUG=1]]) else() message( FATAL_ERROR "No matching build-configuration found." ) endif() @@ -638,8 +638,12 @@ "../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.cpp" "../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.h" "../../../../../modules/juce_audio_utils/gui/juce_BluetoothMidiDevicePairingDialogue.h" + "../../../../../modules/juce_audio_utils/gui/juce_KeyboardComponentBase.cpp" + "../../../../../modules/juce_audio_utils/gui/juce_KeyboardComponentBase.h" "../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp" "../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h" + "../../../../../modules/juce_audio_utils/gui/juce_MPEKeyboardComponent.cpp" + "../../../../../modules/juce_audio_utils/gui/juce_MPEKeyboardComponent.h" "../../../../../modules/juce_audio_utils/native/juce_android_BluetoothMidiDevicePairingDialogue.cpp" "../../../../../modules/juce_audio_utils/native/juce_ios_BluetoothMidiDevicePairingDialogue.mm" "../../../../../modules/juce_audio_utils/native/juce_linux_AudioCDReader.cpp" @@ -1334,6 +1338,8 @@ "../../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.h" "../../../../../modules/juce_gui_basics/misc/juce_DropShadower.cpp" "../../../../../modules/juce_gui_basics/misc/juce_DropShadower.h" + "../../../../../modules/juce_gui_basics/misc/juce_FocusOutline.cpp" + "../../../../../modules/juce_gui_basics/misc/juce_FocusOutline.h" "../../../../../modules/juce_gui_basics/misc/juce_JUCESplashScreen.cpp" "../../../../../modules/juce_gui_basics/misc/juce_JUCESplashScreen.h" "../../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp" @@ -1364,6 +1370,7 @@ "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_Accessibility.cpp" "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.cpp" "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.h" + "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_ComInterfaces.h" "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_UIAExpandCollapseProvider.h" "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridItemProvider.h" "../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridProvider.h" @@ -2226,8 +2233,12 @@ set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_BluetoothMidiDevicePairingDialogue.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_KeyboardComponentBase.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_KeyboardComponentBase.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_MPEKeyboardComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_MPEKeyboardComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_android_BluetoothMidiDevicePairingDialogue.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_ios_BluetoothMidiDevicePairingDialogue.mm" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_linux_AudioCDReader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2922,6 +2933,8 @@ set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_DropShadower.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_DropShadower.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_FocusOutline.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_FocusOutline.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_JUCESplashScreen.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_JUCESplashScreen.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) @@ -2952,6 +2965,7 @@ set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_Accessibility.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_ComInterfaces.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_UIAExpandCollapseProvider.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridItemProvider.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridProvider.h" PROPERTIES HEADER_FILE_ONLY TRUE) diff -Nru juce-6.1.4~ds0/extras/NetworkGraphicsDemo/Builds/iOS/NetworkGraphicsDemo.xcodeproj/project.pbxproj juce-6.1.5~ds0/extras/NetworkGraphicsDemo/Builds/iOS/NetworkGraphicsDemo.xcodeproj/project.pbxproj --- juce-6.1.4~ds0/extras/NetworkGraphicsDemo/Builds/iOS/NetworkGraphicsDemo.xcodeproj/project.pbxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/NetworkGraphicsDemo/Builds/iOS/NetworkGraphicsDemo.xcodeproj/project.pbxproj 2022-01-26 13:07:09.000000000 +0000 @@ -378,7 +378,7 @@ "JUCE_CONTENT_SHARING=1", "JUCE_DISPLAY_SPLASH_SCREEN=0", "JUCE_USE_DARK_SPLASH_SCREEN=1", - "JUCE_PROJUCER_VERSION=0x60104", + "JUCE_PROJUCER_VERSION=0x60105", "JUCE_MODULE_AVAILABLE_juce_audio_basics=1", "JUCE_MODULE_AVAILABLE_juce_audio_devices=1", "JUCE_MODULE_AVAILABLE_juce_audio_formats=1", @@ -545,7 +545,7 @@ "JUCE_CONTENT_SHARING=1", "JUCE_DISPLAY_SPLASH_SCREEN=0", "JUCE_USE_DARK_SPLASH_SCREEN=1", - "JUCE_PROJUCER_VERSION=0x60104", + "JUCE_PROJUCER_VERSION=0x60105", "JUCE_MODULE_AVAILABLE_juce_audio_basics=1", "JUCE_MODULE_AVAILABLE_juce_audio_devices=1", "JUCE_MODULE_AVAILABLE_juce_audio_formats=1", diff -Nru juce-6.1.4~ds0/extras/NetworkGraphicsDemo/Builds/LinuxMakefile/Makefile juce-6.1.5~ds0/extras/NetworkGraphicsDemo/Builds/LinuxMakefile/Makefile --- juce-6.1.4~ds0/extras/NetworkGraphicsDemo/Builds/LinuxMakefile/Makefile 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/NetworkGraphicsDemo/Builds/LinuxMakefile/Makefile 2022-01-26 13:07:09.000000000 +0000 @@ -35,7 +35,7 @@ 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=0x60104" "-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_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_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-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 webkit2gtk-4.0 gtk+-x11-3.0) -pthread -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=0x60105" "-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_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_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-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 webkit2gtk-4.0 gtk+-x11-3.0) -pthread -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 := JUCE\ Network\ Graphics\ Demo @@ -56,7 +56,7 @@ TARGET_ARCH := endif - JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60104" "-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_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_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-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 webkit2gtk-4.0 gtk+-x11-3.0) -pthread -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=0x60105" "-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_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_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-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 webkit2gtk-4.0 gtk+-x11-3.0) -pthread -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 := JUCE\ Network\ Graphics\ Demo diff -Nru juce-6.1.4~ds0/extras/NetworkGraphicsDemo/Builds/MacOSX/NetworkGraphicsDemo.xcodeproj/project.pbxproj juce-6.1.5~ds0/extras/NetworkGraphicsDemo/Builds/MacOSX/NetworkGraphicsDemo.xcodeproj/project.pbxproj --- juce-6.1.4~ds0/extras/NetworkGraphicsDemo/Builds/MacOSX/NetworkGraphicsDemo.xcodeproj/project.pbxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/NetworkGraphicsDemo/Builds/MacOSX/NetworkGraphicsDemo.xcodeproj/project.pbxproj 2022-01-26 13:07:09.000000000 +0000 @@ -365,7 +365,7 @@ "NDEBUG=1", "JUCE_DISPLAY_SPLASH_SCREEN=0", "JUCE_USE_DARK_SPLASH_SCREEN=1", - "JUCE_PROJUCER_VERSION=0x60104", + "JUCE_PROJUCER_VERSION=0x60105", "JUCE_MODULE_AVAILABLE_juce_audio_basics=1", "JUCE_MODULE_AVAILABLE_juce_audio_devices=1", "JUCE_MODULE_AVAILABLE_juce_audio_formats=1", @@ -529,7 +529,7 @@ "DEBUG=1", "JUCE_DISPLAY_SPLASH_SCREEN=0", "JUCE_USE_DARK_SPLASH_SCREEN=1", - "JUCE_PROJUCER_VERSION=0x60104", + "JUCE_PROJUCER_VERSION=0x60105", "JUCE_MODULE_AVAILABLE_juce_audio_basics=1", "JUCE_MODULE_AVAILABLE_juce_audio_devices=1", "JUCE_MODULE_AVAILABLE_juce_audio_formats=1", diff -Nru juce-6.1.4~ds0/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj juce-6.1.5~ds0/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj --- juce-6.1.4~ds0/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj 2022-01-26 13:07:09.000000000 +0000 @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\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=0x60104;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_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_GLOBAL_MODULE_SETTINGS_INCLUDED=1;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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_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_GLOBAL_MODULE_SETTINGS_INCLUDED=1;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,7 +105,7 @@ Full ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60104;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_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_GLOBAL_MODULE_SETTINGS_INCLUDED=1;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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_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_GLOBAL_MODULE_SETTINGS_INCLUDED=1;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 @@ -830,9 +830,15 @@ true + + true + true + + true + true @@ -1817,6 +1823,9 @@ true + + true + true @@ -2527,7 +2536,9 @@ + + @@ -2872,6 +2883,7 @@ + @@ -2888,6 +2900,7 @@ + diff -Nru juce-6.1.4~ds0/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters juce-6.1.5~ds0/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters --- juce-6.1.4~ds0/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters 2022-01-26 13:07:09.000000000 +0000 @@ -1180,9 +1180,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\native @@ -2224,6 +2230,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -3720,9 +3729,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\players @@ -4755,6 +4770,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -4803,6 +4821,9 @@ JUCE Modules\juce_gui_basics\native\accessibility + + JUCE Modules\juce_gui_basics\native\accessibility + JUCE Modules\juce_gui_basics\native\accessibility diff -Nru juce-6.1.4~ds0/extras/Projucer/Builds/LinuxMakefile/Makefile juce-6.1.5~ds0/extras/Projucer/Builds/LinuxMakefile/Makefile --- juce-6.1.4~ds0/extras/Projucer/Builds/LinuxMakefile/Makefile 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/Projucer/Builds/LinuxMakefile/Makefile 2022-01-26 13:07:09.000000000 +0000 @@ -35,7 +35,7 @@ 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=0x60104" "-DJUCE_MODULE_AVAILABLE_juce_build_tools=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_LOG_ASSERTIONS=1" "-DJUCE_USE_CURL=1" "-DJUCE_LOAD_CURL_SYMBOLS_LAZILY=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=6.1.4" "-DJUCE_APP_VERSION_HEX=0x60104" $(shell pkg-config --cflags freetype2) -pthread -I../../JuceLibraryCode -I../../../Build -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=0x60105" "-DJUCE_MODULE_AVAILABLE_juce_build_tools=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_LOG_ASSERTIONS=1" "-DJUCE_USE_CURL=1" "-DJUCE_LOAD_CURL_SYMBOLS_LAZILY=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=6.1.5" "-DJUCE_APP_VERSION_HEX=0x60105" $(shell pkg-config --cflags freetype2) -pthread -I../../JuceLibraryCode -I../../../Build -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 := Projucer @@ -56,7 +56,7 @@ TARGET_ARCH := endif - JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60104" "-DJUCE_MODULE_AVAILABLE_juce_build_tools=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_LOG_ASSERTIONS=1" "-DJUCE_USE_CURL=1" "-DJUCE_LOAD_CURL_SYMBOLS_LAZILY=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=6.1.4" "-DJUCE_APP_VERSION_HEX=0x60104" $(shell pkg-config --cflags freetype2) -pthread -I../../JuceLibraryCode -I../../../Build -I../../../../modules $(CPPFLAGS) + JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60105" "-DJUCE_MODULE_AVAILABLE_juce_build_tools=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_LOG_ASSERTIONS=1" "-DJUCE_USE_CURL=1" "-DJUCE_LOAD_CURL_SYMBOLS_LAZILY=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=6.1.5" "-DJUCE_APP_VERSION_HEX=0x60105" $(shell pkg-config --cflags freetype2) -pthread -I../../JuceLibraryCode -I../../../Build -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 := Projucer diff -Nru juce-6.1.4~ds0/extras/Projucer/Builds/MacOSX/Info-App.plist juce-6.1.5~ds0/extras/Projucer/Builds/MacOSX/Info-App.plist --- juce-6.1.4~ds0/extras/Projucer/Builds/MacOSX/Info-App.plist 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/Projucer/Builds/MacOSX/Info-App.plist 2022-01-26 13:07:09.000000000 +0000 @@ -22,9 +22,9 @@ CFBundleSignature ???? CFBundleShortVersionString - 6.1.4 + 6.1.5 CFBundleVersion - 6.1.4 + 6.1.5 NSHumanReadableCopyright Raw Material Software Limited NSHighResolutionCapable diff -Nru juce-6.1.4~ds0/extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj juce-6.1.5~ds0/extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj --- juce-6.1.4~ds0/extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj 2022-01-26 13:07:09.000000000 +0000 @@ -126,7 +126,6 @@ 210CD22F25F2C22F9CEEB025 /* AVFoundation.framework */ /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; 21F4833C5B5C17B159B956F3 /* juce_events */ /* juce_events */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_events; path = ../../../../modules/juce_events; sourceTree = SOURCE_ROOT; }; 233C7FC5157176DB33FE2F27 /* RecentFilesMenuTemplate.nib */ /* RecentFilesMenuTemplate.nib */ = {isa = PBXFileReference; lastKnownFileType = file.nib; name = RecentFilesMenuTemplate.nib; path = ../../../Build/CMake/RecentFilesMenuTemplate.nib; sourceTree = SOURCE_ROOT; }; - 234251407CD1A499D8A816BB /* jucer_ValueWithDefaultWrapper.h */ /* jucer_ValueWithDefaultWrapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ValueWithDefaultWrapper.h; path = ../../Source/Utility/Helpers/jucer_ValueWithDefaultWrapper.h; sourceTree = SOURCE_ROOT; }; 23A8DE16C0CDB8EED18B008B /* jucer_CommandIDs.h */ /* jucer_CommandIDs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_CommandIDs.h; path = ../../Source/Application/jucer_CommandIDs.h; sourceTree = SOURCE_ROOT; }; 23D79A22569BEDF63B57DD36 /* jucer_CodeHelpers.h */ /* jucer_CodeHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_CodeHelpers.h; path = ../../Source/Utility/Helpers/jucer_CodeHelpers.h; sourceTree = SOURCE_ROOT; }; 247768B490B9D759DDA79359 /* jucer_UserAvatarComponent.h */ /* jucer_UserAvatarComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_UserAvatarComponent.h; path = ../../Source/Project/UI/jucer_UserAvatarComponent.h; sourceTree = SOURCE_ROOT; }; @@ -766,7 +765,6 @@ 58F1FF52E887887A93E84FC2, 6FD8DBC0FF42C87D8BEE2452, 00515BA4EC5A7D4DC078ED37, - 234251407CD1A499D8A816BB, FF3A6A384D536E1AEF47CD54, C16F9F479A3A5F6DAD7647A2, ); @@ -1131,7 +1129,7 @@ "NDEBUG=1", "JUCE_DISPLAY_SPLASH_SCREEN=0", "JUCE_USE_DARK_SPLASH_SCREEN=1", - "JUCE_PROJUCER_VERSION=0x60104", + "JUCE_PROJUCER_VERSION=0x60105", "JUCE_MODULE_AVAILABLE_juce_build_tools=1", "JUCE_MODULE_AVAILABLE_juce_core=1", "JUCE_MODULE_AVAILABLE_juce_cryptography=1", @@ -1149,8 +1147,8 @@ "JUCE_WEB_BROWSER=0", "JUCE_STANDALONE_APPLICATION=1", "JUCER_XCODE_MAC_F6D2F4CF=1", - "JUCE_APP_VERSION=6.1.4", - "JUCE_APP_VERSION_HEX=0x60104", + "JUCE_APP_VERSION=6.1.5", + "JUCE_APP_VERSION_HEX=0x60105", "JucePlugin_Build_VST=0", "JucePlugin_Build_VST3=0", "JucePlugin_Build_AU=0", @@ -1200,7 +1198,7 @@ "DEBUG=1", "JUCE_DISPLAY_SPLASH_SCREEN=0", "JUCE_USE_DARK_SPLASH_SCREEN=1", - "JUCE_PROJUCER_VERSION=0x60104", + "JUCE_PROJUCER_VERSION=0x60105", "JUCE_MODULE_AVAILABLE_juce_build_tools=1", "JUCE_MODULE_AVAILABLE_juce_core=1", "JUCE_MODULE_AVAILABLE_juce_cryptography=1", @@ -1218,8 +1216,8 @@ "JUCE_WEB_BROWSER=0", "JUCE_STANDALONE_APPLICATION=1", "JUCER_XCODE_MAC_F6D2F4CF=1", - "JUCE_APP_VERSION=6.1.4", - "JUCE_APP_VERSION_HEX=0x60104", + "JUCE_APP_VERSION=6.1.5", + "JUCE_APP_VERSION_HEX=0x60105", "JucePlugin_Build_VST=0", "JucePlugin_Build_VST3=0", "JucePlugin_Build_AU=0", diff -Nru juce-6.1.4~ds0/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj juce-6.1.5~ds0/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj --- juce-6.1.4~ds0/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj 2022-01-26 13:07:09.000000000 +0000 @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\JuceLibraryCode;..\..\..\Build;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60104;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=6.1.4;JUCE_APP_VERSION_HEX=0x60104;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=6.1.5;JUCE_APP_VERSION_HEX=0x60105;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,7 +106,7 @@ Full ..\..\JuceLibraryCode;..\..\..\Build;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60104;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=6.1.4;JUCE_APP_VERSION_HEX=0x60104;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=6.1.5;JUCE_APP_VERSION_HEX=0x60105;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 @@ -1221,6 +1221,9 @@ true + + true + true @@ -1656,7 +1659,6 @@ - @@ -2020,6 +2022,7 @@ + @@ -2036,6 +2039,7 @@ + diff -Nru juce-6.1.4~ds0/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj.filters juce-6.1.5~ds0/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj.filters --- juce-6.1.4~ds0/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj.filters 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj.filters 2022-01-26 13:07:09.000000000 +0000 @@ -1543,6 +1543,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -2337,9 +2340,6 @@ Projucer\Utility\Helpers - - Projucer\Utility\Helpers - Projucer\Utility\Helpers @@ -3429,6 +3429,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -3477,6 +3480,9 @@ JUCE Modules\juce_gui_basics\native\accessibility + + JUCE Modules\juce_gui_basics\native\accessibility + JUCE Modules\juce_gui_basics\native\accessibility diff -Nru juce-6.1.4~ds0/extras/Projucer/Builds/VisualStudio2015/resources.rc juce-6.1.5~ds0/extras/Projucer/Builds/VisualStudio2015/resources.rc --- juce-6.1.4~ds0/extras/Projucer/Builds/VisualStudio2015/resources.rc 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/Projucer/Builds/VisualStudio2015/resources.rc 2022-01-26 13:07:09.000000000 +0000 @@ -9,7 +9,7 @@ #include VS_VERSION_INFO VERSIONINFO -FILEVERSION 6,1,4,0 +FILEVERSION 6,1,5,0 BEGIN BLOCK "StringFileInfo" BEGIN @@ -18,9 +18,9 @@ VALUE "CompanyName", "Raw Material Software Limited\0" VALUE "LegalCopyright", "Raw Material Software Limited\0" VALUE "FileDescription", "Projucer\0" - VALUE "FileVersion", "6.1.4\0" + VALUE "FileVersion", "6.1.5\0" VALUE "ProductName", "Projucer\0" - VALUE "ProductVersion", "6.1.4\0" + VALUE "ProductVersion", "6.1.5\0" END END diff -Nru juce-6.1.4~ds0/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj juce-6.1.5~ds0/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj --- juce-6.1.4~ds0/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj 2022-01-26 13:07:09.000000000 +0000 @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\JuceLibraryCode;..\..\..\Build;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60104;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=6.1.4;JUCE_APP_VERSION_HEX=0x60104;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=6.1.5;JUCE_APP_VERSION_HEX=0x60105;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) MultiThreadedDebug true NotUsing @@ -106,7 +106,7 @@ Full ..\..\JuceLibraryCode;..\..\..\Build;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60104;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=6.1.4;JUCE_APP_VERSION_HEX=0x60104;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=6.1.5;JUCE_APP_VERSION_HEX=0x60105;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 @@ -1221,6 +1221,9 @@ true + + true + true @@ -1656,7 +1659,6 @@ - @@ -2020,6 +2022,7 @@ + @@ -2036,6 +2039,7 @@ + diff -Nru juce-6.1.4~ds0/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters juce-6.1.5~ds0/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters --- juce-6.1.4~ds0/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters 2022-01-26 13:07:09.000000000 +0000 @@ -1543,6 +1543,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -2337,9 +2340,6 @@ Projucer\Utility\Helpers - - Projucer\Utility\Helpers - Projucer\Utility\Helpers @@ -3429,6 +3429,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -3477,6 +3480,9 @@ JUCE Modules\juce_gui_basics\native\accessibility + + JUCE Modules\juce_gui_basics\native\accessibility + JUCE Modules\juce_gui_basics\native\accessibility diff -Nru juce-6.1.4~ds0/extras/Projucer/Builds/VisualStudio2017/resources.rc juce-6.1.5~ds0/extras/Projucer/Builds/VisualStudio2017/resources.rc --- juce-6.1.4~ds0/extras/Projucer/Builds/VisualStudio2017/resources.rc 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/Projucer/Builds/VisualStudio2017/resources.rc 2022-01-26 13:07:09.000000000 +0000 @@ -9,7 +9,7 @@ #include VS_VERSION_INFO VERSIONINFO -FILEVERSION 6,1,4,0 +FILEVERSION 6,1,5,0 BEGIN BLOCK "StringFileInfo" BEGIN @@ -18,9 +18,9 @@ VALUE "CompanyName", "Raw Material Software Limited\0" VALUE "LegalCopyright", "Raw Material Software Limited\0" VALUE "FileDescription", "Projucer\0" - VALUE "FileVersion", "6.1.4\0" + VALUE "FileVersion", "6.1.5\0" VALUE "ProductName", "Projucer\0" - VALUE "ProductVersion", "6.1.4\0" + VALUE "ProductVersion", "6.1.5\0" END END diff -Nru juce-6.1.4~ds0/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj juce-6.1.5~ds0/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj --- juce-6.1.4~ds0/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj 2022-01-26 13:07:09.000000000 +0000 @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\JuceLibraryCode;..\..\..\Build;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60104;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=6.1.4;JUCE_APP_VERSION_HEX=0x60104;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=6.1.5;JUCE_APP_VERSION_HEX=0x60105;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) MultiThreadedDebug true NotUsing @@ -106,7 +106,7 @@ Full ..\..\JuceLibraryCode;..\..\..\Build;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60104;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=6.1.4;JUCE_APP_VERSION_HEX=0x60104;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=6.1.5;JUCE_APP_VERSION_HEX=0x60105;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 @@ -1221,6 +1221,9 @@ true + + true + true @@ -1656,7 +1659,6 @@ - @@ -2020,6 +2022,7 @@ + @@ -2036,6 +2039,7 @@ + diff -Nru juce-6.1.4~ds0/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters juce-6.1.5~ds0/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters --- juce-6.1.4~ds0/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters 2022-01-26 13:07:09.000000000 +0000 @@ -1543,6 +1543,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -2337,9 +2340,6 @@ Projucer\Utility\Helpers - - Projucer\Utility\Helpers - Projucer\Utility\Helpers @@ -3429,6 +3429,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -3477,6 +3480,9 @@ JUCE Modules\juce_gui_basics\native\accessibility + + JUCE Modules\juce_gui_basics\native\accessibility + JUCE Modules\juce_gui_basics\native\accessibility diff -Nru juce-6.1.4~ds0/extras/Projucer/Builds/VisualStudio2019/resources.rc juce-6.1.5~ds0/extras/Projucer/Builds/VisualStudio2019/resources.rc --- juce-6.1.4~ds0/extras/Projucer/Builds/VisualStudio2019/resources.rc 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/Projucer/Builds/VisualStudio2019/resources.rc 2022-01-26 13:07:09.000000000 +0000 @@ -9,7 +9,7 @@ #include VS_VERSION_INFO VERSIONINFO -FILEVERSION 6,1,4,0 +FILEVERSION 6,1,5,0 BEGIN BLOCK "StringFileInfo" BEGIN @@ -18,9 +18,9 @@ VALUE "CompanyName", "Raw Material Software Limited\0" VALUE "LegalCopyright", "Raw Material Software Limited\0" VALUE "FileDescription", "Projucer\0" - VALUE "FileVersion", "6.1.4\0" + VALUE "FileVersion", "6.1.5\0" VALUE "ProductName", "Projucer\0" - VALUE "ProductVersion", "6.1.4\0" + VALUE "ProductVersion", "6.1.5\0" END END diff -Nru juce-6.1.4~ds0/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj juce-6.1.5~ds0/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj --- juce-6.1.4~ds0/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj 2022-01-26 13:07:09.000000000 +0000 @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\JuceLibraryCode;..\..\..\Build;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60104;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=6.1.4;JUCE_APP_VERSION_HEX=0x60104;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=6.1.5;JUCE_APP_VERSION_HEX=0x60105;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) MultiThreadedDebug true NotUsing @@ -106,7 +106,7 @@ Full ..\..\JuceLibraryCode;..\..\..\Build;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60104;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=6.1.4;JUCE_APP_VERSION_HEX=0x60104;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) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=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_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=6.1.5;JUCE_APP_VERSION_HEX=0x60105;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 @@ -1221,6 +1221,9 @@ true + + true + true @@ -1656,7 +1659,6 @@ - @@ -2020,6 +2022,7 @@ + @@ -2036,6 +2039,7 @@ + diff -Nru juce-6.1.4~ds0/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters juce-6.1.5~ds0/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters --- juce-6.1.4~ds0/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters 2022-01-26 13:07:09.000000000 +0000 @@ -1543,6 +1543,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -2337,9 +2340,6 @@ Projucer\Utility\Helpers - - Projucer\Utility\Helpers - Projucer\Utility\Helpers @@ -3429,6 +3429,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -3477,6 +3480,9 @@ JUCE Modules\juce_gui_basics\native\accessibility + + JUCE Modules\juce_gui_basics\native\accessibility + JUCE Modules\juce_gui_basics\native\accessibility diff -Nru juce-6.1.4~ds0/extras/Projucer/Builds/VisualStudio2022/resources.rc juce-6.1.5~ds0/extras/Projucer/Builds/VisualStudio2022/resources.rc --- juce-6.1.4~ds0/extras/Projucer/Builds/VisualStudio2022/resources.rc 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/Projucer/Builds/VisualStudio2022/resources.rc 2022-01-26 13:07:09.000000000 +0000 @@ -9,7 +9,7 @@ #include VS_VERSION_INFO VERSIONINFO -FILEVERSION 6,1,4,0 +FILEVERSION 6,1,5,0 BEGIN BLOCK "StringFileInfo" BEGIN @@ -18,9 +18,9 @@ VALUE "CompanyName", "Raw Material Software Limited\0" VALUE "LegalCopyright", "Raw Material Software Limited\0" VALUE "FileDescription", "Projucer\0" - VALUE "FileVersion", "6.1.4\0" + VALUE "FileVersion", "6.1.5\0" VALUE "ProductName", "Projucer\0" - VALUE "ProductVersion", "6.1.4\0" + VALUE "ProductVersion", "6.1.5\0" END END diff -Nru juce-6.1.4~ds0/extras/Projucer/JuceLibraryCode/JuceHeader.h juce-6.1.5~ds0/extras/Projucer/JuceLibraryCode/JuceHeader.h --- juce-6.1.4~ds0/extras/Projucer/JuceLibraryCode/JuceHeader.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/Projucer/JuceLibraryCode/JuceHeader.h 2022-01-26 13:07:09.000000000 +0000 @@ -44,7 +44,7 @@ { const char* const projectName = "Projucer"; const char* const companyName = "Raw Material Software Limited"; - const char* const versionString = "6.1.4"; - const int versionNumber = 0x60104; + const char* const versionString = "6.1.5"; + const int versionNumber = 0x60105; } #endif diff -Nru juce-6.1.4~ds0/extras/Projucer/Projucer.jucer juce-6.1.5~ds0/extras/Projucer/Projucer.jucer --- juce-6.1.4~ds0/extras/Projucer/Projucer.jucer 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/Projucer/Projucer.jucer 2022-01-26 13:07:09.000000000 +0000 @@ -1,13 +1,12 @@ - @@ -620,8 +619,6 @@ file="Source/Utility/Helpers/jucer_TranslationHelpers.h"/> - Disabled ProgramDatabase ..\..\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=0x60104;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_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) + _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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_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 @@ -107,7 +107,7 @@ Full ..\..\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=0x60104;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_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) + _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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_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 @@ -846,9 +846,15 @@ true + + true + true + + true + true @@ -1941,6 +1947,9 @@ true + + true + true @@ -2685,7 +2694,9 @@ + + @@ -3077,6 +3088,7 @@ + @@ -3093,6 +3105,7 @@ + @@ -3229,6 +3242,7 @@ + diff -Nru juce-6.1.4~ds0/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters juce-6.1.5~ds0/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters --- juce-6.1.4~ds0/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters 2022-01-26 13:07:09.000000000 +0000 @@ -1249,9 +1249,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\native @@ -2404,6 +2410,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -3948,9 +3957,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\players @@ -5124,6 +5139,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -5172,6 +5190,9 @@ JUCE Modules\juce_gui_basics\native\accessibility + + JUCE Modules\juce_gui_basics\native\accessibility + JUCE Modules\juce_gui_basics\native\accessibility @@ -5580,6 +5601,9 @@ JUCE Modules\juce_video\native + + JUCE Modules\juce_video\native + JUCE Modules\juce_video\native diff -Nru juce-6.1.4~ds0/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj juce-6.1.5~ds0/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj --- juce-6.1.4~ds0/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj 2022-01-26 13:07:09.000000000 +0000 @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\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=0x60104;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_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) + _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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_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 @@ -107,7 +107,7 @@ Full ..\..\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=0x60104;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_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) + _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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_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 @@ -846,9 +846,15 @@ true + + true + true + + true + true @@ -1941,6 +1947,9 @@ true + + true + true @@ -2685,7 +2694,9 @@ + + @@ -3077,6 +3088,7 @@ + @@ -3093,6 +3105,7 @@ + @@ -3229,6 +3242,7 @@ + diff -Nru juce-6.1.4~ds0/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters juce-6.1.5~ds0/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters --- juce-6.1.4~ds0/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters 2022-01-26 13:07:09.000000000 +0000 @@ -1249,9 +1249,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\native @@ -2404,6 +2410,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -3948,9 +3957,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\players @@ -5124,6 +5139,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -5172,6 +5190,9 @@ JUCE Modules\juce_gui_basics\native\accessibility + + JUCE Modules\juce_gui_basics\native\accessibility + JUCE Modules\juce_gui_basics\native\accessibility @@ -5580,6 +5601,9 @@ JUCE Modules\juce_video\native + + JUCE Modules\juce_video\native + JUCE Modules\juce_video\native diff -Nru juce-6.1.4~ds0/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj juce-6.1.5~ds0/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj --- juce-6.1.4~ds0/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj 2022-01-26 13:07:09.000000000 +0000 @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\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=0x60104;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_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) + _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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_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 @@ -107,7 +107,7 @@ Full ..\..\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=0x60104;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_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) + _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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_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 @@ -846,9 +846,15 @@ true + + true + true + + true + true @@ -1941,6 +1947,9 @@ true + + true + true @@ -2685,7 +2694,9 @@ + + @@ -3077,6 +3088,7 @@ + @@ -3093,6 +3105,7 @@ + @@ -3229,6 +3242,7 @@ + diff -Nru juce-6.1.4~ds0/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters juce-6.1.5~ds0/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters --- juce-6.1.4~ds0/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters 2022-01-26 13:07:09.000000000 +0000 @@ -1249,9 +1249,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\native @@ -2404,6 +2410,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -3948,9 +3957,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\players @@ -5124,6 +5139,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -5172,6 +5190,9 @@ JUCE Modules\juce_gui_basics\native\accessibility + + JUCE Modules\juce_gui_basics\native\accessibility + JUCE Modules\juce_gui_basics\native\accessibility @@ -5580,6 +5601,9 @@ JUCE Modules\juce_video\native + + JUCE Modules\juce_video\native + JUCE Modules\juce_video\native diff -Nru juce-6.1.4~ds0/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj juce-6.1.5~ds0/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj --- juce-6.1.4~ds0/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj 2022-01-26 13:07:09.000000000 +0000 @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\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=0x60104;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_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_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DLL_BUILD=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;_LIB;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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_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_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DLL_BUILD=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;_LIB;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -105,7 +105,7 @@ Full ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60104;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_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_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DLL_BUILD=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;_LIB;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60105;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_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_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DLL_BUILD=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;_LIB;%(PreprocessorDefinitions) MultiThreadedDLL true NotUsing @@ -829,9 +829,15 @@ true + + true + true + + true + true @@ -1816,6 +1822,9 @@ true + + true + true @@ -2503,7 +2512,9 @@ + + @@ -2848,6 +2859,7 @@ + @@ -2864,6 +2876,7 @@ + @@ -2985,6 +2998,7 @@ + diff -Nru juce-6.1.4~ds0/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters juce-6.1.5~ds0/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters --- juce-6.1.4~ds0/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters 2022-01-26 13:07:09.000000000 +0000 @@ -1177,9 +1177,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\native @@ -2221,6 +2227,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -3687,9 +3696,15 @@ JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\gui + + JUCE Modules\juce_audio_utils\gui + JUCE Modules\juce_audio_utils\players @@ -4722,6 +4737,9 @@ JUCE Modules\juce_gui_basics\misc + + JUCE Modules\juce_gui_basics\misc + JUCE Modules\juce_gui_basics\misc @@ -4770,6 +4788,9 @@ JUCE Modules\juce_gui_basics\native\accessibility + + JUCE Modules\juce_gui_basics\native\accessibility + JUCE Modules\juce_gui_basics\native\accessibility @@ -5133,6 +5154,9 @@ JUCE Modules\juce_video\native + + JUCE Modules\juce_video\native + JUCE Modules\juce_video\native diff -Nru juce-6.1.4~ds0/modules/juce_analytics/juce_analytics.h juce-6.1.5~ds0/modules/juce_analytics/juce_analytics.h --- juce-6.1.4~ds0/modules/juce_analytics/juce_analytics.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_analytics/juce_analytics.h 2022-01-26 13:07:09.000000000 +0000 @@ -35,7 +35,7 @@ ID: juce_analytics vendor: juce - version: 6.1.4 + version: 6.1.5 name: JUCE analytics classes description: Classes to collect analytics and send to destinations website: http://www.juce.com/juce diff -Nru juce-6.1.4~ds0/modules/juce_audio_basics/buffers/juce_AudioProcessLoadMeasurer.cpp juce-6.1.5~ds0/modules/juce_audio_basics/buffers/juce_AudioProcessLoadMeasurer.cpp --- juce-6.1.4~ds0/modules/juce_audio_basics/buffers/juce_AudioProcessLoadMeasurer.cpp 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_basics/buffers/juce_AudioProcessLoadMeasurer.cpp 2022-01-26 13:07:09.000000000 +0000 @@ -36,6 +36,8 @@ cpuUsageProportion = 0; xruns = 0; + samplesPerBlock = blockSize; + if (sampleRate > 0.0 && blockSize > 0) { msPerSample = 1000.0 / sampleRate; @@ -77,6 +79,9 @@ AudioProcessLoadMeasurer::ScopedTimer::ScopedTimer (AudioProcessLoadMeasurer& p, int numSamplesInBlock) : owner (p), startTime (Time::getMillisecondCounterHiRes()), samplesInBlock (numSamplesInBlock) { + // numSamplesInBlock should never be zero. Did you remember to call AudioProcessLoadMeasurer::reset(), + // passing the expected samples per block? + jassert (numSamplesInBlock); } AudioProcessLoadMeasurer::ScopedTimer::~ScopedTimer() diff -Nru juce-6.1.4~ds0/modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp juce-6.1.5~ds0/modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp --- juce-6.1.4~ds0/modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp 2022-01-26 13:07:09.000000000 +0000 @@ -104,13 +104,13 @@ #define JUCE_BEGIN_VEC_OP \ using Mode = FloatVectorHelpers::ModeType::Mode; \ { \ - const int numLongOps = num / Mode::numParallel; + const auto numLongOps = num / Mode::numParallel; #define JUCE_FINISH_VEC_OP(normalOp) \ num &= (Mode::numParallel - 1); \ if (num == 0) return; \ } \ - for (int i = 0; i < num; ++i) normalOp; + for (auto i = (decltype (num)) 0; i < num; ++i) normalOp; #define JUCE_PERFORM_VEC_OP_DEST(normalOp, vecOp, locals, setupOp) \ JUCE_BEGIN_VEC_OP \ @@ -268,13 +268,13 @@ using Mode = FloatVectorHelpers::ModeType::Mode; \ if (Mode::numParallel > 1) \ { \ - const int numLongOps = num / Mode::numParallel; + const auto numLongOps = num / Mode::numParallel; #define JUCE_FINISH_VEC_OP(normalOp) \ num &= (Mode::numParallel - 1); \ if (num == 0) return; \ } \ - for (int i = 0; i < num; ++i) normalOp; + for (auto i = (decltype (num)) 0; i < num; ++i) normalOp; #define JUCE_PERFORM_VEC_OP_DEST(normalOp, vecOp, locals, setupOp) \ JUCE_BEGIN_VEC_OP \ @@ -304,22 +304,22 @@ //============================================================================== #else #define JUCE_PERFORM_VEC_OP_DEST(normalOp, vecOp, locals, setupOp) \ - for (int i = 0; i < num; ++i) normalOp; + for (auto i = (decltype (num)) 0; i < num; ++i) normalOp; #define JUCE_PERFORM_VEC_OP_SRC_DEST(normalOp, vecOp, locals, increment, setupOp) \ - for (int i = 0; i < num; ++i) normalOp; + for (auto i = (decltype (num)) 0; i < num; ++i) normalOp; #define JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST(normalOp, vecOp, locals, increment, setupOp) \ - for (int i = 0; i < num; ++i) normalOp; + for (auto i = (decltype (num)) 0; i < num; ++i) normalOp; #define JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST_DEST(normalOp, vecOp, locals, increment, setupOp) \ - for (int i = 0; i < num; ++i) normalOp; + for (auto i = (decltype (num)) 0; i < num; ++i) normalOp; #endif //============================================================================== #define JUCE_VEC_LOOP(vecOp, srcLoad, dstLoad, dstStore, locals, increment) \ - for (int i = 0; i < numLongOps; ++i) \ + for (auto i = (decltype (numLongOps)) 0; i < numLongOps; ++i) \ { \ locals (srcLoad, dstLoad); \ dstStore (dest, vecOp); \ @@ -327,7 +327,7 @@ } #define JUCE_VEC_LOOP_TWO_SOURCES(vecOp, src1Load, src2Load, dstStore, locals, increment) \ - for (int i = 0; i < numLongOps; ++i) \ + for (auto i = (decltype (numLongOps)) 0; i < numLongOps; ++i) \ { \ locals (src1Load, src2Load); \ dstStore (dest, vecOp); \ @@ -335,7 +335,7 @@ } #define JUCE_VEC_LOOP_TWO_SOURCES_WITH_DEST_LOAD(vecOp, src1Load, src2Load, dstLoad, dstStore, locals, increment) \ - for (int i = 0; i < numLongOps; ++i) \ + for (auto i = (decltype (numLongOps)) 0; i < numLongOps; ++i) \ { \ locals (src1Load, src2Load, dstLoad); \ dstStore (dest, vecOp); \ @@ -362,9 +362,10 @@ using Type = typename Mode::Type; using ParallelType = typename Mode::ParallelType; - static Type findMinOrMax (const Type* src, int num, const bool isMinimum) noexcept + template + static Type findMinOrMax (const Type* src, Size num, const bool isMinimum) noexcept { - int numLongOps = num / Mode::numParallel; + auto numLongOps = num / Mode::numParallel; if (numLongOps > 1) { @@ -421,20 +422,24 @@ num &= (Mode::numParallel - 1); src += Mode::numParallel; - for (int i = 0; i < num; ++i) + for (auto i = (decltype (num)) 0; i < num; ++i) result = isMinimum ? jmin (result, src[i]) : jmax (result, src[i]); return result; } - return isMinimum ? juce::findMinimum (src, num) - : juce::findMaximum (src, num); + if (num <= 0) + return 0; + + return isMinimum ? *std::min_element (src, src + num) + : *std::max_element (src, src + num); } - static Range findMinAndMax (const Type* src, int num) noexcept + template + static Range findMinAndMax (const Type* src, Size num) noexcept { - int numLongOps = num / Mode::numParallel; + auto numLongOps = num / Mode::numParallel; if (numLongOps > 1) { @@ -475,7 +480,7 @@ num &= (Mode::numParallel - 1); src += Mode::numParallel; - for (int i = 0; i < num; ++i) + for (auto i = (decltype (num)) 0; i < num; ++i) result = result.getUnionWith (src[i]); return result; @@ -485,547 +490,941 @@ } }; #endif -} //============================================================================== namespace { - #if JUCE_USE_VDSP_FRAMEWORK - // This casts away constness to account for slightly different vDSP function signatures - // in OSX 10.8 SDK and below. Can be safely removed once those SDKs are obsolete. - template - ValueType* osx108sdkCompatibilityCast (const ValueType* arg) noexcept { return const_cast (arg); } - #endif -} + template + void clear (float* dest, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vclr (dest, 1, (vDSP_Length) num); + #else + zeromem (dest, (size_t) num * sizeof (float)); + #endif + } -//============================================================================== -void JUCE_CALLTYPE FloatVectorOperations::clear (float* dest, int num) noexcept -{ - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vclr (dest, 1, (size_t) num); - #else - zeromem (dest, (size_t) num * sizeof (float)); - #endif -} + template + void clear (double* dest, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vclrD (dest, 1, (vDSP_Length) num); + #else + zeromem (dest, (size_t) num * sizeof (double)); + #endif + } -void JUCE_CALLTYPE FloatVectorOperations::clear (double* dest, int num) noexcept -{ - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vclrD (dest, 1, (size_t) num); - #else - zeromem (dest, (size_t) num * sizeof (double)); - #endif -} + template + void fill (float* dest, float valueToFill, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vfill (&valueToFill, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_DEST (dest[i] = valueToFill, + val, + JUCE_LOAD_NONE, + const Mode::ParallelType val = Mode::load1 (valueToFill);) + #endif + } -void JUCE_CALLTYPE FloatVectorOperations::fill (float* dest, float valueToFill, int num) noexcept -{ - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vfill (&valueToFill, dest, 1, (size_t) num); - #else - JUCE_PERFORM_VEC_OP_DEST (dest[i] = valueToFill, val, JUCE_LOAD_NONE, - const Mode::ParallelType val = Mode::load1 (valueToFill);) - #endif -} + template + void fill (double* dest, double valueToFill, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vfillD (&valueToFill, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_DEST (dest[i] = valueToFill, + val, + JUCE_LOAD_NONE, + const Mode::ParallelType val = Mode::load1 (valueToFill);) + #endif + } -void JUCE_CALLTYPE FloatVectorOperations::fill (double* dest, double valueToFill, int num) noexcept -{ - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vfillD (&valueToFill, dest, 1, (size_t) num); - #else - JUCE_PERFORM_VEC_OP_DEST (dest[i] = valueToFill, val, JUCE_LOAD_NONE, - const Mode::ParallelType val = Mode::load1 (valueToFill);) - #endif -} + template + void copyWithMultiply (float* dest, const float* src, float multiplier, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vsmul (src, 1, &multiplier, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = src[i] * multiplier, + Mode::mul (mult, s), + JUCE_LOAD_SRC, + JUCE_INCREMENT_SRC_DEST, + const Mode::ParallelType mult = Mode::load1 (multiplier);) + #endif + } -void JUCE_CALLTYPE FloatVectorOperations::copy (float* dest, const float* src, int num) noexcept -{ - memcpy (dest, src, (size_t) num * sizeof (float)); -} + template + void copyWithMultiply (double* dest, const double* src, double multiplier, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vsmulD (src, 1, &multiplier, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = src[i] * multiplier, + Mode::mul (mult, s), + JUCE_LOAD_SRC, + JUCE_INCREMENT_SRC_DEST, + const Mode::ParallelType mult = Mode::load1 (multiplier);) + #endif + } -void JUCE_CALLTYPE FloatVectorOperations::copy (double* dest, const double* src, int num) noexcept -{ - memcpy (dest, src, (size_t) num * sizeof (double)); -} + template + void add (float* dest, float amount, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vsadd (dest, 1, &amount, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_DEST (dest[i] += amount, + Mode::add (d, amountToAdd), + JUCE_LOAD_DEST, + const Mode::ParallelType amountToAdd = Mode::load1 (amount);) + #endif + } -void JUCE_CALLTYPE FloatVectorOperations::copyWithMultiply (float* dest, const float* src, float multiplier, int num) noexcept -{ - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vsmul (src, 1, &multiplier, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = src[i] * multiplier, Mode::mul (mult, s), - JUCE_LOAD_SRC, JUCE_INCREMENT_SRC_DEST, - const Mode::ParallelType mult = Mode::load1 (multiplier);) - #endif -} + template + void add (double* dest, double amount, Size num) noexcept + { + JUCE_PERFORM_VEC_OP_DEST (dest[i] += amount, + Mode::add (d, amountToAdd), + JUCE_LOAD_DEST, + const Mode::ParallelType amountToAdd = Mode::load1 (amount);) + } -void JUCE_CALLTYPE FloatVectorOperations::copyWithMultiply (double* dest, const double* src, double multiplier, int num) noexcept -{ - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vsmulD (src, 1, &multiplier, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = src[i] * multiplier, Mode::mul (mult, s), - JUCE_LOAD_SRC, JUCE_INCREMENT_SRC_DEST, - const Mode::ParallelType mult = Mode::load1 (multiplier);) - #endif -} + template + void add (float* dest, const float* src, float amount, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vsadd (src, 1, &amount, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = src[i] + amount, + Mode::add (am, s), + JUCE_LOAD_SRC, + JUCE_INCREMENT_SRC_DEST, + const Mode::ParallelType am = Mode::load1 (amount);) + #endif + } -void JUCE_CALLTYPE FloatVectorOperations::add (float* dest, float amount, int num) noexcept -{ - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vsadd (dest, 1, &amount, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_DEST (dest[i] += amount, Mode::add (d, amountToAdd), JUCE_LOAD_DEST, - const Mode::ParallelType amountToAdd = Mode::load1 (amount);) - #endif -} + template + void add (double* dest, const double* src, double amount, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vsaddD (src, 1, &amount, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = src[i] + amount, + Mode::add (am, s), + JUCE_LOAD_SRC, + JUCE_INCREMENT_SRC_DEST, + const Mode::ParallelType am = Mode::load1 (amount);) + #endif + } -void JUCE_CALLTYPE FloatVectorOperations::add (double* dest, double amount, int num) noexcept -{ - JUCE_PERFORM_VEC_OP_DEST (dest[i] += amount, Mode::add (d, amountToAdd), JUCE_LOAD_DEST, - const Mode::ParallelType amountToAdd = Mode::load1 (amount);) -} + template + void add (float* dest, const float* src, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vadd (src, 1, dest, 1, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] += src[i], + Mode::add (d, s), + JUCE_LOAD_SRC_DEST, + JUCE_INCREMENT_SRC_DEST, ) + #endif + } -void JUCE_CALLTYPE FloatVectorOperations::add (float* dest, const float* src, float amount, int num) noexcept -{ - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vsadd (osx108sdkCompatibilityCast (src), 1, &amount, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = src[i] + amount, Mode::add (am, s), - JUCE_LOAD_SRC, JUCE_INCREMENT_SRC_DEST, - const Mode::ParallelType am = Mode::load1 (amount);) - #endif -} + template + void add (double* dest, const double* src, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vaddD (src, 1, dest, 1, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] += src[i], + Mode::add (d, s), + JUCE_LOAD_SRC_DEST, + JUCE_INCREMENT_SRC_DEST, ) + #endif + } -void JUCE_CALLTYPE FloatVectorOperations::add (double* dest, const double* src, double amount, int num) noexcept -{ - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vsaddD (osx108sdkCompatibilityCast (src), 1, &amount, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = src[i] + amount, Mode::add (am, s), - JUCE_LOAD_SRC, JUCE_INCREMENT_SRC_DEST, - const Mode::ParallelType am = Mode::load1 (amount);) - #endif -} + template + void add (float* dest, const float* src1, const float* src2, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vadd (src1, 1, src2, 1, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST (dest[i] = src1[i] + src2[i], + Mode::add (s1, s2), + JUCE_LOAD_SRC1_SRC2, + JUCE_INCREMENT_SRC1_SRC2_DEST, ) + #endif + } -void JUCE_CALLTYPE FloatVectorOperations::add (float* dest, const float* src, int num) noexcept -{ - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vadd (src, 1, dest, 1, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] += src[i], Mode::add (d, s), JUCE_LOAD_SRC_DEST, JUCE_INCREMENT_SRC_DEST, ) - #endif -} + template + void add (double* dest, const double* src1, const double* src2, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vaddD (src1, 1, src2, 1, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST (dest[i] = src1[i] + src2[i], + Mode::add (s1, s2), + JUCE_LOAD_SRC1_SRC2, + JUCE_INCREMENT_SRC1_SRC2_DEST, ) + #endif + } -void JUCE_CALLTYPE FloatVectorOperations::add (double* dest, const double* src, int num) noexcept -{ - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vaddD (src, 1, dest, 1, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] += src[i], Mode::add (d, s), JUCE_LOAD_SRC_DEST, JUCE_INCREMENT_SRC_DEST, ) - #endif -} + template + void subtract (float* dest, const float* src, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vsub (src, 1, dest, 1, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] -= src[i], + Mode::sub (d, s), + JUCE_LOAD_SRC_DEST, + JUCE_INCREMENT_SRC_DEST, ) + #endif + } -void JUCE_CALLTYPE FloatVectorOperations::add (float* dest, const float* src1, const float* src2, int num) noexcept -{ - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vadd (src1, 1, src2, 1, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST (dest[i] = src1[i] + src2[i], Mode::add (s1, s2), JUCE_LOAD_SRC1_SRC2, JUCE_INCREMENT_SRC1_SRC2_DEST, ) - #endif -} + template + void subtract (double* dest, const double* src, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vsubD (src, 1, dest, 1, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] -= src[i], + Mode::sub (d, s), + JUCE_LOAD_SRC_DEST, + JUCE_INCREMENT_SRC_DEST, ) + #endif + } -void JUCE_CALLTYPE FloatVectorOperations::add (double* dest, const double* src1, const double* src2, int num) noexcept -{ - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vaddD (src1, 1, src2, 1, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST (dest[i] = src1[i] + src2[i], Mode::add (s1, s2), JUCE_LOAD_SRC1_SRC2, JUCE_INCREMENT_SRC1_SRC2_DEST, ) - #endif -} + template + void subtract (float* dest, const float* src1, const float* src2, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vsub (src2, 1, src1, 1, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST (dest[i] = src1[i] - src2[i], + Mode::sub (s1, s2), + JUCE_LOAD_SRC1_SRC2, + JUCE_INCREMENT_SRC1_SRC2_DEST, ) + #endif + } -void JUCE_CALLTYPE FloatVectorOperations::subtract (float* dest, const float* src, int num) noexcept -{ - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vsub (src, 1, dest, 1, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] -= src[i], Mode::sub (d, s), JUCE_LOAD_SRC_DEST, JUCE_INCREMENT_SRC_DEST, ) - #endif -} + template + void subtract (double* dest, const double* src1, const double* src2, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vsubD (src2, 1, src1, 1, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST (dest[i] = src1[i] - src2[i], + Mode::sub (s1, s2), + JUCE_LOAD_SRC1_SRC2, + JUCE_INCREMENT_SRC1_SRC2_DEST, ) + #endif + } -void JUCE_CALLTYPE FloatVectorOperations::subtract (double* dest, const double* src, int num) noexcept -{ - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vsubD (src, 1, dest, 1, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] -= src[i], Mode::sub (d, s), JUCE_LOAD_SRC_DEST, JUCE_INCREMENT_SRC_DEST, ) - #endif -} + template + void addWithMultiply (float* dest, const float* src, float multiplier, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vsma (src, 1, &multiplier, dest, 1, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] += src[i] * multiplier, + Mode::add (d, Mode::mul (mult, s)), + JUCE_LOAD_SRC_DEST, + JUCE_INCREMENT_SRC_DEST, + const Mode::ParallelType mult = Mode::load1 (multiplier);) + #endif + } -void JUCE_CALLTYPE FloatVectorOperations::subtract (float* dest, const float* src1, const float* src2, int num) noexcept -{ - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vsub (src2, 1, src1, 1, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST (dest[i] = src1[i] - src2[i], Mode::sub (s1, s2), JUCE_LOAD_SRC1_SRC2, JUCE_INCREMENT_SRC1_SRC2_DEST, ) - #endif -} + template + void addWithMultiply (double* dest, const double* src, double multiplier, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vsmaD (src, 1, &multiplier, dest, 1, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] += src[i] * multiplier, + Mode::add (d, Mode::mul (mult, s)), + JUCE_LOAD_SRC_DEST, + JUCE_INCREMENT_SRC_DEST, + const Mode::ParallelType mult = Mode::load1 (multiplier);) + #endif + } -void JUCE_CALLTYPE FloatVectorOperations::subtract (double* dest, const double* src1, const double* src2, int num) noexcept -{ - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vsubD (src2, 1, src1, 1, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST (dest[i] = src1[i] - src2[i], Mode::sub (s1, s2), JUCE_LOAD_SRC1_SRC2, JUCE_INCREMENT_SRC1_SRC2_DEST, ) - #endif -} + template + void addWithMultiply (float* dest, const float* src1, const float* src2, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vma ((float*) src1, 1, (float*) src2, 1, dest, 1, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST_DEST (dest[i] += src1[i] * src2[i], + Mode::add (d, Mode::mul (s1, s2)), + JUCE_LOAD_SRC1_SRC2_DEST, + JUCE_INCREMENT_SRC1_SRC2_DEST, ) + #endif + } -void JUCE_CALLTYPE FloatVectorOperations::addWithMultiply (float* dest, const float* src, float multiplier, int num) noexcept -{ - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vsma (src, 1, &multiplier, dest, 1, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] += src[i] * multiplier, Mode::add (d, Mode::mul (mult, s)), - JUCE_LOAD_SRC_DEST, JUCE_INCREMENT_SRC_DEST, - const Mode::ParallelType mult = Mode::load1 (multiplier);) - #endif -} + template + void addWithMultiply (double* dest, const double* src1, const double* src2, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vmaD ((double*) src1, 1, (double*) src2, 1, dest, 1, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST_DEST (dest[i] += src1[i] * src2[i], + Mode::add (d, Mode::mul (s1, s2)), + JUCE_LOAD_SRC1_SRC2_DEST, + JUCE_INCREMENT_SRC1_SRC2_DEST, ) + #endif + } -void JUCE_CALLTYPE FloatVectorOperations::addWithMultiply (double* dest, const double* src, double multiplier, int num) noexcept -{ - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vsmaD (src, 1, &multiplier, dest, 1, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] += src[i] * multiplier, Mode::add (d, Mode::mul (mult, s)), - JUCE_LOAD_SRC_DEST, JUCE_INCREMENT_SRC_DEST, - const Mode::ParallelType mult = Mode::load1 (multiplier);) - #endif -} + template + void subtractWithMultiply (float* dest, const float* src, float multiplier, Size num) noexcept + { + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] -= src[i] * multiplier, + Mode::sub (d, Mode::mul (mult, s)), + JUCE_LOAD_SRC_DEST, + JUCE_INCREMENT_SRC_DEST, + const Mode::ParallelType mult = Mode::load1 (multiplier);) + } -void JUCE_CALLTYPE FloatVectorOperations::addWithMultiply (float* dest, const float* src1, const float* src2, int num) noexcept -{ - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vma ((float*) src1, 1, (float*) src2, 1, dest, 1, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST_DEST (dest[i] += src1[i] * src2[i], Mode::add (d, Mode::mul (s1, s2)), - JUCE_LOAD_SRC1_SRC2_DEST, - JUCE_INCREMENT_SRC1_SRC2_DEST, ) - #endif -} + template + void subtractWithMultiply (double* dest, const double* src, double multiplier, Size num) noexcept + { + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] -= src[i] * multiplier, + Mode::sub (d, Mode::mul (mult, s)), + JUCE_LOAD_SRC_DEST, + JUCE_INCREMENT_SRC_DEST, + const Mode::ParallelType mult = Mode::load1 (multiplier);) + } -void JUCE_CALLTYPE FloatVectorOperations::addWithMultiply (double* dest, const double* src1, const double* src2, int num) noexcept -{ - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vmaD ((double*) src1, 1, (double*) src2, 1, dest, 1, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST_DEST (dest[i] += src1[i] * src2[i], Mode::add (d, Mode::mul (s1, s2)), - JUCE_LOAD_SRC1_SRC2_DEST, - JUCE_INCREMENT_SRC1_SRC2_DEST, ) - #endif -} + template + void subtractWithMultiply (float* dest, const float* src1, const float* src2, Size num) noexcept + { + JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST_DEST (dest[i] -= src1[i] * src2[i], + Mode::sub (d, Mode::mul (s1, s2)), + JUCE_LOAD_SRC1_SRC2_DEST, + JUCE_INCREMENT_SRC1_SRC2_DEST, ) + } -void JUCE_CALLTYPE FloatVectorOperations::subtractWithMultiply (float* dest, const float* src, float multiplier, int num) noexcept -{ - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] -= src[i] * multiplier, Mode::sub (d, Mode::mul (mult, s)), - JUCE_LOAD_SRC_DEST, JUCE_INCREMENT_SRC_DEST, + template + void subtractWithMultiply (double* dest, const double* src1, const double* src2, Size num) noexcept + { + JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST_DEST (dest[i] -= src1[i] * src2[i], + Mode::sub (d, Mode::mul (s1, s2)), + JUCE_LOAD_SRC1_SRC2_DEST, + JUCE_INCREMENT_SRC1_SRC2_DEST, ) + } + + template + void multiply (float* dest, const float* src, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vmul (src, 1, dest, 1, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] *= src[i], + Mode::mul (d, s), + JUCE_LOAD_SRC_DEST, + JUCE_INCREMENT_SRC_DEST, ) + #endif + } + + template + void multiply (double* dest, const double* src, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vmulD (src, 1, dest, 1, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] *= src[i], + Mode::mul (d, s), + JUCE_LOAD_SRC_DEST, + JUCE_INCREMENT_SRC_DEST, ) + #endif + } + + template + void multiply (float* dest, const float* src1, const float* src2, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vmul (src1, 1, src2, 1, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST (dest[i] = src1[i] * src2[i], + Mode::mul (s1, s2), + JUCE_LOAD_SRC1_SRC2, + JUCE_INCREMENT_SRC1_SRC2_DEST, ) + #endif + } + + template + void multiply (double* dest, const double* src1, const double* src2, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vmulD (src1, 1, src2, 1, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST (dest[i] = src1[i] * src2[i], + Mode::mul (s1, s2), + JUCE_LOAD_SRC1_SRC2, + JUCE_INCREMENT_SRC1_SRC2_DEST, ) + #endif + } + + template + void multiply (float* dest, float multiplier, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vsmul (dest, 1, &multiplier, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_DEST (dest[i] *= multiplier, + Mode::mul (d, mult), + JUCE_LOAD_DEST, const Mode::ParallelType mult = Mode::load1 (multiplier);) -} + #endif + } -void JUCE_CALLTYPE FloatVectorOperations::subtractWithMultiply (double* dest, const double* src, double multiplier, int num) noexcept -{ - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] -= src[i] * multiplier, Mode::sub (d, Mode::mul (mult, s)), - JUCE_LOAD_SRC_DEST, JUCE_INCREMENT_SRC_DEST, + template + void multiply (double* dest, double multiplier, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vsmulD (dest, 1, &multiplier, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_DEST (dest[i] *= multiplier, + Mode::mul (d, mult), + JUCE_LOAD_DEST, const Mode::ParallelType mult = Mode::load1 (multiplier);) -} + #endif + } -void JUCE_CALLTYPE FloatVectorOperations::subtractWithMultiply (float* dest, const float* src1, const float* src2, int num) noexcept -{ - JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST_DEST (dest[i] -= src1[i] * src2[i], Mode::sub (d, Mode::mul (s1, s2)), - JUCE_LOAD_SRC1_SRC2_DEST, - JUCE_INCREMENT_SRC1_SRC2_DEST, ) -} + template + void multiply (float* dest, const float* src, float multiplier, Size num) noexcept + { + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = src[i] * multiplier, + Mode::mul (mult, s), + JUCE_LOAD_SRC, + JUCE_INCREMENT_SRC_DEST, + const Mode::ParallelType mult = Mode::load1 (multiplier);) + } + + template + void multiply (double* dest, const double* src, double multiplier, Size num) noexcept + { + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = src[i] * multiplier, + Mode::mul (mult, s), + JUCE_LOAD_SRC, + JUCE_INCREMENT_SRC_DEST, + const Mode::ParallelType mult = Mode::load1 (multiplier);) + } -void JUCE_CALLTYPE FloatVectorOperations::subtractWithMultiply (double* dest, const double* src1, const double* src2, int num) noexcept + template + void negate (float* dest, const float* src, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vneg ((float*) src, 1, dest, 1, (vDSP_Length) num); + #else + copyWithMultiply (dest, src, -1.0f, num); + #endif + } + + template + void negate (double* dest, const double* src, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vnegD ((double*) src, 1, dest, 1, (vDSP_Length) num); + #else + copyWithMultiply (dest, src, -1.0f, num); + #endif + } + + template + void abs (float* dest, const float* src, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vabs ((float*) src, 1, dest, 1, (vDSP_Length) num); + #else + FloatVectorHelpers::signMask32 signMask; + signMask.i = 0x7fffffffUL; + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = std::abs (src[i]), + Mode::bit_and (s, mask), + JUCE_LOAD_SRC, + JUCE_INCREMENT_SRC_DEST, + const Mode::ParallelType mask = Mode::load1 (signMask.f);) + + ignoreUnused (signMask); + #endif + } + + template + void abs (double* dest, const double* src, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vabsD ((double*) src, 1, dest, 1, (vDSP_Length) num); + #else + FloatVectorHelpers::signMask64 signMask; + signMask.i = 0x7fffffffffffffffULL; + + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = std::abs (src[i]), + Mode::bit_and (s, mask), + JUCE_LOAD_SRC, + JUCE_INCREMENT_SRC_DEST, + const Mode::ParallelType mask = Mode::load1 (signMask.d);) + + ignoreUnused (signMask); + #endif + } + + template + void min (float* dest, const float* src, float comp, Size num) noexcept + { + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = jmin (src[i], comp), + Mode::min (s, cmp), + JUCE_LOAD_SRC, + JUCE_INCREMENT_SRC_DEST, + const Mode::ParallelType cmp = Mode::load1 (comp);) + } + + template + void min (double* dest, const double* src, double comp, Size num) noexcept + { + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = jmin (src[i], comp), + Mode::min (s, cmp), + JUCE_LOAD_SRC, + JUCE_INCREMENT_SRC_DEST, + const Mode::ParallelType cmp = Mode::load1 (comp);) + } + + template + void min (float* dest, const float* src1, const float* src2, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vmin ((float*) src1, 1, (float*) src2, 1, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST (dest[i] = jmin (src1[i], src2[i]), + Mode::min (s1, s2), + JUCE_LOAD_SRC1_SRC2, + JUCE_INCREMENT_SRC1_SRC2_DEST, ) + #endif + } + + template + void min (double* dest, const double* src1, const double* src2, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vminD ((double*) src1, 1, (double*) src2, 1, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST (dest[i] = jmin (src1[i], src2[i]), + Mode::min (s1, s2), + JUCE_LOAD_SRC1_SRC2, + JUCE_INCREMENT_SRC1_SRC2_DEST, ) + #endif + } + + template + void max (float* dest, const float* src, float comp, Size num) noexcept + { + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = jmax (src[i], comp), + Mode::max (s, cmp), + JUCE_LOAD_SRC, + JUCE_INCREMENT_SRC_DEST, + const Mode::ParallelType cmp = Mode::load1 (comp);) + } + + template + void max (double* dest, const double* src, double comp, Size num) noexcept + { + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = jmax (src[i], comp), + Mode::max (s, cmp), + JUCE_LOAD_SRC, + JUCE_INCREMENT_SRC_DEST, + const Mode::ParallelType cmp = Mode::load1 (comp);) + } + + template + void max (float* dest, const float* src1, const float* src2, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vmax ((float*) src1, 1, (float*) src2, 1, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST (dest[i] = jmax (src1[i], src2[i]), + Mode::max (s1, s2), + JUCE_LOAD_SRC1_SRC2, + JUCE_INCREMENT_SRC1_SRC2_DEST, ) + #endif + } + + template + void max (double* dest, const double* src1, const double* src2, Size num) noexcept + { + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vmaxD ((double*) src1, 1, (double*) src2, 1, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST (dest[i] = jmax (src1[i], src2[i]), + Mode::max (s1, s2), + JUCE_LOAD_SRC1_SRC2, + JUCE_INCREMENT_SRC1_SRC2_DEST, ) + #endif + } + + template + void clip (float* dest, const float* src, float low, float high, Size num) noexcept + { + jassert (high >= low); + + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vclip ((float*) src, 1, &low, &high, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = jmax (jmin (src[i], high), low), + Mode::max (Mode::min (s, hi), lo), + JUCE_LOAD_SRC, + JUCE_INCREMENT_SRC_DEST, + const Mode::ParallelType lo = Mode::load1 (low); + const Mode::ParallelType hi = Mode::load1 (high);) + #endif + } + + template + void clip (double* dest, const double* src, double low, double high, Size num) noexcept + { + jassert (high >= low); + + #if JUCE_USE_VDSP_FRAMEWORK + vDSP_vclipD ((double*) src, 1, &low, &high, dest, 1, (vDSP_Length) num); + #else + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = jmax (jmin (src[i], high), low), + Mode::max (Mode::min (s, hi), lo), + JUCE_LOAD_SRC, + JUCE_INCREMENT_SRC_DEST, + const Mode::ParallelType lo = Mode::load1 (low); + const Mode::ParallelType hi = Mode::load1 (high);) + #endif + } + + template + Range findMinAndMax (const float* src, Size num) noexcept + { + #if JUCE_USE_SSE_INTRINSICS || JUCE_USE_ARM_NEON + return FloatVectorHelpers::MinMax::findMinAndMax (src, num); + #else + return Range::findMinAndMax (src, num); + #endif + } + + template + Range findMinAndMax (const double* src, Size num) noexcept + { + #if JUCE_USE_SSE_INTRINSICS || JUCE_USE_ARM_NEON + return FloatVectorHelpers::MinMax::findMinAndMax (src, num); + #else + return Range::findMinAndMax (src, num); + #endif + } + + template + float findMinimum (const float* src, Size num) noexcept + { + #if JUCE_USE_SSE_INTRINSICS || JUCE_USE_ARM_NEON + return FloatVectorHelpers::MinMax::findMinOrMax (src, num, true); + #else + return juce::findMinimum (src, num); + #endif + } + + template + double findMinimum (const double* src, Size num) noexcept + { + #if JUCE_USE_SSE_INTRINSICS || JUCE_USE_ARM_NEON + return FloatVectorHelpers::MinMax::findMinOrMax (src, num, true); + #else + return juce::findMinimum (src, num); + #endif + } + + template + float findMaximum (const float* src, Size num) noexcept + { + #if JUCE_USE_SSE_INTRINSICS || JUCE_USE_ARM_NEON + return FloatVectorHelpers::MinMax::findMinOrMax (src, num, false); + #else + return juce::findMaximum (src, num); + #endif + } + + template + double findMaximum (const double* src, Size num) noexcept + { + #if JUCE_USE_SSE_INTRINSICS || JUCE_USE_ARM_NEON + return FloatVectorHelpers::MinMax::findMinOrMax (src, num, false); + #else + return juce::findMaximum (src, num); + #endif + } + + template + void convertFixedToFloat (float* dest, const int* src, float multiplier, Size num) noexcept + { + #if JUCE_USE_ARM_NEON + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = (float) src[i] * multiplier, + vmulq_n_f32 (vcvtq_f32_s32 (vld1q_s32 (src)), multiplier), + JUCE_LOAD_NONE, + JUCE_INCREMENT_SRC_DEST, ) + #else + JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = (float) src[i] * multiplier, + Mode::mul (mult, _mm_cvtepi32_ps (_mm_loadu_si128 (reinterpret_cast (src)))), + JUCE_LOAD_NONE, + JUCE_INCREMENT_SRC_DEST, + const Mode::ParallelType mult = Mode::load1 (multiplier);) + #endif + } + +} // namespace +} // namespace FloatVectorHelpers + +//============================================================================== +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::clear (FloatType* dest, + CountType numValues) noexcept { - JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST_DEST (dest[i] -= src1[i] * src2[i], Mode::sub (d, Mode::mul (s1, s2)), - JUCE_LOAD_SRC1_SRC2_DEST, - JUCE_INCREMENT_SRC1_SRC2_DEST, ) + FloatVectorHelpers::clear (dest, numValues); } -void JUCE_CALLTYPE FloatVectorOperations::multiply (float* dest, const float* src, int num) noexcept +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::fill (FloatType* dest, + FloatType valueToFill, + CountType numValues) noexcept { - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vmul (src, 1, dest, 1, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] *= src[i], Mode::mul (d, s), JUCE_LOAD_SRC_DEST, JUCE_INCREMENT_SRC_DEST, ) - #endif + FloatVectorHelpers::fill (dest, valueToFill, numValues); } -void JUCE_CALLTYPE FloatVectorOperations::multiply (double* dest, const double* src, int num) noexcept +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::copy (FloatType* dest, + const FloatType* src, + CountType numValues) noexcept { - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vmulD (src, 1, dest, 1, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] *= src[i], Mode::mul (d, s), JUCE_LOAD_SRC_DEST, JUCE_INCREMENT_SRC_DEST, ) - #endif + memcpy (dest, src, (size_t) numValues * sizeof (FloatType)); } -void JUCE_CALLTYPE FloatVectorOperations::multiply (float* dest, const float* src1, const float* src2, int num) noexcept +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::copyWithMultiply (FloatType* dest, + const FloatType* src, + FloatType multiplier, + CountType numValues) noexcept { - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vmul (src1, 1, src2, 1, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST (dest[i] = src1[i] * src2[i], Mode::mul (s1, s2), JUCE_LOAD_SRC1_SRC2, JUCE_INCREMENT_SRC1_SRC2_DEST, ) - #endif + FloatVectorHelpers::copyWithMultiply (dest, src, multiplier, numValues); } -void JUCE_CALLTYPE FloatVectorOperations::multiply (double* dest, const double* src1, const double* src2, int num) noexcept +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::add (FloatType* dest, + FloatType amountToAdd, + CountType numValues) noexcept { - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vmulD (src1, 1, src2, 1, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST (dest[i] = src1[i] * src2[i], Mode::mul (s1, s2), JUCE_LOAD_SRC1_SRC2, JUCE_INCREMENT_SRC1_SRC2_DEST, ) - #endif + FloatVectorHelpers::add (dest, amountToAdd, numValues); } -void JUCE_CALLTYPE FloatVectorOperations::multiply (float* dest, float multiplier, int num) noexcept +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::add (FloatType* dest, + const FloatType* src, + FloatType amount, + CountType numValues) noexcept { - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vsmul (dest, 1, &multiplier, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_DEST (dest[i] *= multiplier, Mode::mul (d, mult), JUCE_LOAD_DEST, - const Mode::ParallelType mult = Mode::load1 (multiplier);) - #endif + FloatVectorHelpers::add (dest, src, amount, numValues); } -void JUCE_CALLTYPE FloatVectorOperations::multiply (double* dest, double multiplier, int num) noexcept +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::add (FloatType* dest, + const FloatType* src, + CountType numValues) noexcept { - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vsmulD (dest, 1, &multiplier, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_DEST (dest[i] *= multiplier, Mode::mul (d, mult), JUCE_LOAD_DEST, - const Mode::ParallelType mult = Mode::load1 (multiplier);) - #endif + FloatVectorHelpers::add (dest, src, numValues); } -void JUCE_CALLTYPE FloatVectorOperations::multiply (float* dest, const float* src, float multiplier, int num) noexcept +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::add (FloatType* dest, + const FloatType* src1, + const FloatType* src2, + CountType num) noexcept { - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = src[i] * multiplier, Mode::mul (mult, s), - JUCE_LOAD_SRC, JUCE_INCREMENT_SRC_DEST, - const Mode::ParallelType mult = Mode::load1 (multiplier);) + FloatVectorHelpers::add (dest, src1, src2, num); } -void JUCE_CALLTYPE FloatVectorOperations::multiply (double* dest, const double* src, double multiplier, int num) noexcept +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::subtract (FloatType* dest, + const FloatType* src, + CountType numValues) noexcept { - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = src[i] * multiplier, Mode::mul (mult, s), - JUCE_LOAD_SRC, JUCE_INCREMENT_SRC_DEST, - const Mode::ParallelType mult = Mode::load1 (multiplier);) + FloatVectorHelpers::subtract (dest, src, numValues); } -void FloatVectorOperations::negate (float* dest, const float* src, int num) noexcept +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::subtract (FloatType* dest, + const FloatType* src1, + const FloatType* src2, + CountType num) noexcept { - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vneg ((float*) src, 1, dest, 1, (vDSP_Length) num); - #else - copyWithMultiply (dest, src, -1.0f, num); - #endif + FloatVectorHelpers::subtract (dest, src1, src2, num); } -void FloatVectorOperations::negate (double* dest, const double* src, int num) noexcept +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::addWithMultiply (FloatType* dest, + const FloatType* src, + FloatType multiplier, + CountType numValues) noexcept { - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vnegD ((double*) src, 1, dest, 1, (vDSP_Length) num); - #else - copyWithMultiply (dest, src, -1.0f, num); - #endif + FloatVectorHelpers::addWithMultiply (dest, src, multiplier, numValues); } -void FloatVectorOperations::abs (float* dest, const float* src, int num) noexcept +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::addWithMultiply (FloatType* dest, + const FloatType* src1, + const FloatType* src2, + CountType num) noexcept { - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vabs ((float*) src, 1, dest, 1, (vDSP_Length) num); - #else - FloatVectorHelpers::signMask32 signMask; - signMask.i = 0x7fffffffUL; - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = std::abs (src[i]), Mode::bit_and (s, mask), - JUCE_LOAD_SRC, JUCE_INCREMENT_SRC_DEST, - const Mode::ParallelType mask = Mode::load1 (signMask.f);) - - ignoreUnused (signMask); - #endif + FloatVectorHelpers::addWithMultiply (dest, src1, src2, num); } -void FloatVectorOperations::abs (double* dest, const double* src, int num) noexcept +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::subtractWithMultiply (FloatType* dest, + const FloatType* src, + FloatType multiplier, + CountType numValues) noexcept { - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vabsD ((double*) src, 1, dest, 1, (vDSP_Length) num); - #else - FloatVectorHelpers::signMask64 signMask; - signMask.i = 0x7fffffffffffffffULL; - - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = std::abs (src[i]), Mode::bit_and (s, mask), - JUCE_LOAD_SRC, JUCE_INCREMENT_SRC_DEST, - const Mode::ParallelType mask = Mode::load1 (signMask.d);) - - ignoreUnused (signMask); - #endif + FloatVectorHelpers::subtractWithMultiply (dest, src, multiplier, numValues); } -void JUCE_CALLTYPE FloatVectorOperations::convertFixedToFloat (float* dest, const int* src, float multiplier, int num) noexcept +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::subtractWithMultiply (FloatType* dest, + const FloatType* src1, + const FloatType* src2, + CountType num) noexcept { - #if JUCE_USE_ARM_NEON - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = (float) src[i] * multiplier, - vmulq_n_f32 (vcvtq_f32_s32 (vld1q_s32 (src)), multiplier), - JUCE_LOAD_NONE, JUCE_INCREMENT_SRC_DEST, ) - #else - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = (float) src[i] * multiplier, - Mode::mul (mult, _mm_cvtepi32_ps (_mm_loadu_si128 (reinterpret_cast (src)))), - JUCE_LOAD_NONE, JUCE_INCREMENT_SRC_DEST, - const Mode::ParallelType mult = Mode::load1 (multiplier);) - #endif + FloatVectorHelpers::subtractWithMultiply (dest, src1, src2, num); } -void JUCE_CALLTYPE FloatVectorOperations::min (float* dest, const float* src, float comp, int num) noexcept +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::multiply (FloatType* dest, + const FloatType* src, + CountType numValues) noexcept { - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = jmin (src[i], comp), Mode::min (s, cmp), - JUCE_LOAD_SRC, JUCE_INCREMENT_SRC_DEST, - const Mode::ParallelType cmp = Mode::load1 (comp);) + FloatVectorHelpers::multiply (dest, src, numValues); } -void JUCE_CALLTYPE FloatVectorOperations::min (double* dest, const double* src, double comp, int num) noexcept +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::multiply (FloatType* dest, + const FloatType* src1, + const FloatType* src2, + CountType numValues) noexcept { - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = jmin (src[i], comp), Mode::min (s, cmp), - JUCE_LOAD_SRC, JUCE_INCREMENT_SRC_DEST, - const Mode::ParallelType cmp = Mode::load1 (comp);) + FloatVectorHelpers::multiply (dest, src1, src2, numValues); } -void JUCE_CALLTYPE FloatVectorOperations::min (float* dest, const float* src1, const float* src2, int num) noexcept +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::multiply (FloatType* dest, + FloatType multiplier, + CountType numValues) noexcept { - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vmin ((float*) src1, 1, (float*) src2, 1, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST (dest[i] = jmin (src1[i], src2[i]), Mode::min (s1, s2), JUCE_LOAD_SRC1_SRC2, JUCE_INCREMENT_SRC1_SRC2_DEST, ) - #endif + FloatVectorHelpers::multiply (dest, multiplier, numValues); } -void JUCE_CALLTYPE FloatVectorOperations::min (double* dest, const double* src1, const double* src2, int num) noexcept +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::multiply (FloatType* dest, + const FloatType* src, + FloatType multiplier, + CountType num) noexcept { - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vminD ((double*) src1, 1, (double*) src2, 1, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST (dest[i] = jmin (src1[i], src2[i]), Mode::min (s1, s2), JUCE_LOAD_SRC1_SRC2, JUCE_INCREMENT_SRC1_SRC2_DEST, ) - #endif + FloatVectorHelpers::multiply (dest, src, multiplier, num); } -void JUCE_CALLTYPE FloatVectorOperations::max (float* dest, const float* src, float comp, int num) noexcept +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::negate (FloatType* dest, + const FloatType* src, + CountType numValues) noexcept { - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = jmax (src[i], comp), Mode::max (s, cmp), - JUCE_LOAD_SRC, JUCE_INCREMENT_SRC_DEST, - const Mode::ParallelType cmp = Mode::load1 (comp);) + FloatVectorHelpers::negate (dest, src, numValues); } -void JUCE_CALLTYPE FloatVectorOperations::max (double* dest, const double* src, double comp, int num) noexcept +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::abs (FloatType* dest, + const FloatType* src, + CountType numValues) noexcept { - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = jmax (src[i], comp), Mode::max (s, cmp), - JUCE_LOAD_SRC, JUCE_INCREMENT_SRC_DEST, - const Mode::ParallelType cmp = Mode::load1 (comp);) + FloatVectorHelpers::abs (dest, src, numValues); } -void JUCE_CALLTYPE FloatVectorOperations::max (float* dest, const float* src1, const float* src2, int num) noexcept +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::min (FloatType* dest, + const FloatType* src, + FloatType comp, + CountType num) noexcept { - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vmax ((float*) src1, 1, (float*) src2, 1, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST (dest[i] = jmax (src1[i], src2[i]), Mode::max (s1, s2), JUCE_LOAD_SRC1_SRC2, JUCE_INCREMENT_SRC1_SRC2_DEST, ) - #endif + FloatVectorHelpers::min (dest, src, comp, num); } -void JUCE_CALLTYPE FloatVectorOperations::max (double* dest, const double* src1, const double* src2, int num) noexcept +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::min (FloatType* dest, + const FloatType* src1, + const FloatType* src2, + CountType num) noexcept { - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vmaxD ((double*) src1, 1, (double*) src2, 1, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC1_SRC2_DEST (dest[i] = jmax (src1[i], src2[i]), Mode::max (s1, s2), JUCE_LOAD_SRC1_SRC2, JUCE_INCREMENT_SRC1_SRC2_DEST, ) - #endif + FloatVectorHelpers::min (dest, src1, src2, num); } -void JUCE_CALLTYPE FloatVectorOperations::clip (float* dest, const float* src, float low, float high, int num) noexcept +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::max (FloatType* dest, + const FloatType* src, + FloatType comp, + CountType num) noexcept { - jassert(high >= low); - - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vclip ((float*) src, 1, &low, &high, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = jmax (jmin (src[i], high), low), Mode::max (Mode::min (s, hi), lo), - JUCE_LOAD_SRC, JUCE_INCREMENT_SRC_DEST, - const Mode::ParallelType lo = Mode::load1 (low); const Mode::ParallelType hi = Mode::load1 (high);) - #endif + FloatVectorHelpers::max (dest, src, comp, num); } -void JUCE_CALLTYPE FloatVectorOperations::clip (double* dest, const double* src, double low, double high, int num) noexcept +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::max (FloatType* dest, + const FloatType* src1, + const FloatType* src2, + CountType num) noexcept { - jassert(high >= low); - - #if JUCE_USE_VDSP_FRAMEWORK - vDSP_vclipD ((double*) src, 1, &low, &high, dest, 1, (vDSP_Length) num); - #else - JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = jmax (jmin (src[i], high), low), Mode::max (Mode::min (s, hi), lo), - JUCE_LOAD_SRC, JUCE_INCREMENT_SRC_DEST, - const Mode::ParallelType lo = Mode::load1 (low); const Mode::ParallelType hi = Mode::load1 (high);) - #endif + FloatVectorHelpers::max (dest, src1, src2, num); } -Range JUCE_CALLTYPE FloatVectorOperations::findMinAndMax (const float* src, int num) noexcept +template +void JUCE_CALLTYPE detail::FloatVectorOperationsBase::clip (FloatType* dest, + const FloatType* src, + FloatType low, + FloatType high, + CountType num) noexcept { - #if JUCE_USE_SSE_INTRINSICS || JUCE_USE_ARM_NEON - return FloatVectorHelpers::MinMax::findMinAndMax (src, num); - #else - return Range::findMinAndMax (src, num); - #endif + FloatVectorHelpers::clip (dest, src, low, high, num); } -Range JUCE_CALLTYPE FloatVectorOperations::findMinAndMax (const double* src, int num) noexcept +template +Range JUCE_CALLTYPE detail::FloatVectorOperationsBase::findMinAndMax (const FloatType* src, + CountType numValues) noexcept { - #if JUCE_USE_SSE_INTRINSICS || JUCE_USE_ARM_NEON - return FloatVectorHelpers::MinMax::findMinAndMax (src, num); - #else - return Range::findMinAndMax (src, num); - #endif + return FloatVectorHelpers::findMinAndMax (src, numValues); } -float JUCE_CALLTYPE FloatVectorOperations::findMinimum (const float* src, int num) noexcept +template +FloatType JUCE_CALLTYPE detail::FloatVectorOperationsBase::findMinimum (const FloatType* src, + CountType numValues) noexcept { - #if JUCE_USE_SSE_INTRINSICS || JUCE_USE_ARM_NEON - return FloatVectorHelpers::MinMax::findMinOrMax (src, num, true); - #else - return juce::findMinimum (src, num); - #endif + return FloatVectorHelpers::findMinimum (src, numValues); } -double JUCE_CALLTYPE FloatVectorOperations::findMinimum (const double* src, int num) noexcept +template +FloatType JUCE_CALLTYPE detail::FloatVectorOperationsBase::findMaximum (const FloatType* src, + CountType numValues) noexcept { - #if JUCE_USE_SSE_INTRINSICS || JUCE_USE_ARM_NEON - return FloatVectorHelpers::MinMax::findMinOrMax (src, num, true); - #else - return juce::findMinimum (src, num); - #endif + return FloatVectorHelpers::findMaximum (src, numValues); } -float JUCE_CALLTYPE FloatVectorOperations::findMaximum (const float* src, int num) noexcept +template struct detail::FloatVectorOperationsBase; +template struct detail::FloatVectorOperationsBase; +template struct detail::FloatVectorOperationsBase; +template struct detail::FloatVectorOperationsBase; + +void JUCE_CALLTYPE FloatVectorOperations::convertFixedToFloat (float* dest, const int* src, float multiplier, size_t num) noexcept { - #if JUCE_USE_SSE_INTRINSICS || JUCE_USE_ARM_NEON - return FloatVectorHelpers::MinMax::findMinOrMax (src, num, false); - #else - return juce::findMaximum (src, num); - #endif + FloatVectorHelpers::convertFixedToFloat (dest, src, multiplier, num); } -double JUCE_CALLTYPE FloatVectorOperations::findMaximum (const double* src, int num) noexcept +void JUCE_CALLTYPE FloatVectorOperations::convertFixedToFloat (float* dest, const int* src, float multiplier, int num) noexcept { - #if JUCE_USE_SSE_INTRINSICS || JUCE_USE_ARM_NEON - return FloatVectorHelpers::MinMax::findMinOrMax (src, num, false); - #else - return juce::findMaximum (src, num); - #endif + FloatVectorHelpers::convertFixedToFloat (dest, src, multiplier, num); } intptr_t JUCE_CALLTYPE FloatVectorOperations::getFpStatusRegister() noexcept @@ -1033,14 +1432,16 @@ intptr_t fpsr = 0; #if JUCE_INTEL && JUCE_USE_SSE_INTRINSICS fpsr = static_cast (_mm_getcsr()); - #elif defined (__arm64__) || defined (__aarch64__) || JUCE_USE_ARM_NEON - #if defined (__arm64__) || defined (__aarch64__) - asm volatile("mrs %0, fpcr" : "=r" (fpsr)); + #elif defined(__arm64__) || defined(__aarch64__) || JUCE_USE_ARM_NEON + #if defined(__arm64__) || defined(__aarch64__) + asm volatile("mrs %0, fpcr" + : "=r"(fpsr)); #elif JUCE_USE_ARM_NEON - asm volatile("vmrs %0, fpscr" : "=r" (fpsr)); + asm volatile("vmrs %0, fpscr" + : "=r"(fpsr)); #endif #else - #if ! (defined (JUCE_INTEL) || defined (JUCE_ARM)) + #if ! (defined(JUCE_INTEL) || defined(JUCE_ARM)) jassertfalse; // No support for getting the floating point status register for your platform #endif #endif @@ -1055,14 +1456,18 @@ // which aggressively optimises away the variable otherwise volatile auto fpsr_w = static_cast (fpsr); _mm_setcsr (fpsr_w); - #elif defined (__arm64__) || defined (__aarch64__) || JUCE_USE_ARM_NEON - #if defined (__arm64__) || defined (__aarch64__) - asm volatile("msr fpcr, %0" : : "ri" (fpsr)); + #elif defined(__arm64__) || defined(__aarch64__) || JUCE_USE_ARM_NEON + #if defined(__arm64__) || defined(__aarch64__) + asm volatile("msr fpcr, %0" + : + : "ri"(fpsr)); #elif JUCE_USE_ARM_NEON - asm volatile("vmsr fpscr, %0" : : "ri" (fpsr)); + asm volatile("vmsr fpscr, %0" + : + : "ri"(fpsr)); #endif #else - #if ! (defined (JUCE_INTEL) || defined (JUCE_ARM)) + #if ! (defined(JUCE_INTEL) || defined(JUCE_ARM)) jassertfalse; // No support for getting the floating point status register for your platform #endif ignoreUnused (fpsr); @@ -1071,7 +1476,7 @@ void JUCE_CALLTYPE FloatVectorOperations::enableFlushToZeroMode (bool shouldEnable) noexcept { - #if JUCE_USE_SSE_INTRINSICS || (JUCE_USE_ARM_NEON || defined (__arm64__) || defined (__aarch64__)) + #if JUCE_USE_SSE_INTRINSICS || (JUCE_USE_ARM_NEON || defined(__arm64__) || defined(__aarch64__)) #if JUCE_USE_SSE_INTRINSICS intptr_t mask = _MM_FLUSH_ZERO_MASK; #else /*JUCE_USE_ARM_NEON*/ @@ -1079,7 +1484,7 @@ #endif setFpStatusRegister ((getFpStatusRegister() & (~mask)) | (shouldEnable ? mask : 0)); #else - #if ! (defined (JUCE_INTEL) || defined (JUCE_ARM)) + #if ! (defined(JUCE_INTEL) || defined(JUCE_ARM)) jassertfalse; // No support for flush to zero mode on your platform #endif ignoreUnused (shouldEnable); @@ -1088,7 +1493,7 @@ void JUCE_CALLTYPE FloatVectorOperations::disableDenormalisedNumberSupport (bool shouldDisable) noexcept { - #if JUCE_USE_SSE_INTRINSICS || (JUCE_USE_ARM_NEON || defined (__arm64__) || defined (__aarch64__)) + #if JUCE_USE_SSE_INTRINSICS || (JUCE_USE_ARM_NEON || defined(__arm64__) || defined(__aarch64__)) #if JUCE_USE_SSE_INTRINSICS intptr_t mask = 0x8040; #else /*JUCE_USE_ARM_NEON*/ @@ -1099,7 +1504,7 @@ #else ignoreUnused (shouldDisable); - #if ! (defined (JUCE_INTEL) || defined (JUCE_ARM)) + #if ! (defined(JUCE_INTEL) || defined(JUCE_ARM)) jassertfalse; // No support for disable denormals mode on your platform #endif #endif @@ -1107,7 +1512,7 @@ bool JUCE_CALLTYPE FloatVectorOperations::areDenormalsDisabled() noexcept { - #if JUCE_USE_SSE_INTRINSICS || (JUCE_USE_ARM_NEON || defined (__arm64__) || defined (__aarch64__)) + #if JUCE_USE_SSE_INTRINSICS || (JUCE_USE_ARM_NEON || defined(__arm64__) || defined(__aarch64__)) #if JUCE_USE_SSE_INTRINSICS intptr_t mask = 0x8040; #else /*JUCE_USE_ARM_NEON*/ @@ -1122,7 +1527,7 @@ ScopedNoDenormals::ScopedNoDenormals() noexcept { - #if JUCE_USE_SSE_INTRINSICS || (JUCE_USE_ARM_NEON || defined (__arm64__) || defined (__aarch64__)) + #if JUCE_USE_SSE_INTRINSICS || (JUCE_USE_ARM_NEON || defined(__arm64__) || defined(__aarch64__)) #if JUCE_USE_SSE_INTRINSICS intptr_t mask = 0x8040; #else /*JUCE_USE_ARM_NEON*/ @@ -1136,9 +1541,9 @@ ScopedNoDenormals::~ScopedNoDenormals() noexcept { - #if JUCE_USE_SSE_INTRINSICS || (JUCE_USE_ARM_NEON || defined (__arm64__) || defined (__aarch64__)) + #if JUCE_USE_SSE_INTRINSICS || (JUCE_USE_ARM_NEON || defined(__arm64__) || defined(__aarch64__)) FloatVectorOperations::setFpStatusRegister (fpsr); - #endif + #endif } diff -Nru juce-6.1.4~ds0/modules/juce_audio_basics/buffers/juce_FloatVectorOperations.h juce-6.1.5~ds0/modules/juce_audio_basics/buffers/juce_FloatVectorOperations.h --- juce-6.1.4~ds0/modules/juce_audio_basics/buffers/juce_FloatVectorOperations.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_basics/buffers/juce_FloatVectorOperations.h 2022-01-26 13:07:09.000000000 +0000 @@ -32,187 +32,123 @@ #endif class ScopedNoDenormals; -//============================================================================== -/** - A collection of simple vector operations on arrays of floats, accelerated with - SIMD instructions where possible. - - @tags{Audio} -*/ -class JUCE_API FloatVectorOperations +#if ! DOXYGEN +namespace detail { -public: - //============================================================================== - /** Clears a vector of floats. */ - static void JUCE_CALLTYPE clear (float* dest, int numValues) noexcept; - - /** Clears a vector of doubles. */ - static void JUCE_CALLTYPE clear (double* dest, int numValues) noexcept; - - /** Copies a repeated value into a vector of floats. */ - static void JUCE_CALLTYPE fill (float* dest, float valueToFill, int numValues) noexcept; - - /** Copies a repeated value into a vector of doubles. */ - static void JUCE_CALLTYPE fill (double* dest, double valueToFill, int numValues) noexcept; - - /** Copies a vector of floats. */ - static void JUCE_CALLTYPE copy (float* dest, const float* src, int numValues) noexcept; - - /** Copies a vector of doubles. */ - static void JUCE_CALLTYPE copy (double* dest, const double* src, int numValues) noexcept; - - /** Copies a vector of floats, multiplying each value by a given multiplier */ - static void JUCE_CALLTYPE copyWithMultiply (float* dest, const float* src, float multiplier, int numValues) noexcept; - - /** Copies a vector of doubles, multiplying each value by a given multiplier */ - static void JUCE_CALLTYPE copyWithMultiply (double* dest, const double* src, double multiplier, int numValues) noexcept; - - /** Adds a fixed value to the destination values. */ - static void JUCE_CALLTYPE add (float* dest, float amountToAdd, int numValues) noexcept; - - /** Adds a fixed value to the destination values. */ - static void JUCE_CALLTYPE add (double* dest, double amountToAdd, int numValues) noexcept; - - /** Adds a fixed value to each source value and stores it in the destination array. */ - static void JUCE_CALLTYPE add (float* dest, const float* src, float amount, int numValues) noexcept; - - /** Adds a fixed value to each source value and stores it in the destination array. */ - static void JUCE_CALLTYPE add (double* dest, const double* src, double amount, int numValues) noexcept; - - /** Adds the source values to the destination values. */ - static void JUCE_CALLTYPE add (float* dest, const float* src, int numValues) noexcept; - - /** Adds the source values to the destination values. */ - static void JUCE_CALLTYPE add (double* dest, const double* src, int numValues) noexcept; - - /** Adds each source1 value to the corresponding source2 value and stores the result in the destination array. */ - static void JUCE_CALLTYPE add (float* dest, const float* src1, const float* src2, int num) noexcept; - - /** Adds each source1 value to the corresponding source2 value and stores the result in the destination array. */ - static void JUCE_CALLTYPE add (double* dest, const double* src1, const double* src2, int num) noexcept; - - /** Subtracts the source values from the destination values. */ - static void JUCE_CALLTYPE subtract (float* dest, const float* src, int numValues) noexcept; - - /** Subtracts the source values from the destination values. */ - static void JUCE_CALLTYPE subtract (double* dest, const double* src, int numValues) noexcept; - - /** Subtracts each source2 value from the corresponding source1 value and stores the result in the destination array. */ - static void JUCE_CALLTYPE subtract (float* dest, const float* src1, const float* src2, int num) noexcept; - /** Subtracts each source2 value from the corresponding source1 value and stores the result in the destination array. */ - static void JUCE_CALLTYPE subtract (double* dest, const double* src1, const double* src2, int num) noexcept; - - /** Multiplies each source value by the given multiplier, then adds it to the destination value. */ - static void JUCE_CALLTYPE addWithMultiply (float* dest, const float* src, float multiplier, int numValues) noexcept; - - /** Multiplies each source value by the given multiplier, then adds it to the destination value. */ - static void JUCE_CALLTYPE addWithMultiply (double* dest, const double* src, double multiplier, int numValues) noexcept; - - /** Multiplies each source1 value by the corresponding source2 value, then adds it to the destination value. */ - static void JUCE_CALLTYPE addWithMultiply (float* dest, const float* src1, const float* src2, int num) noexcept; - - /** Multiplies each source1 value by the corresponding source2 value, then adds it to the destination value. */ - static void JUCE_CALLTYPE addWithMultiply (double* dest, const double* src1, const double* src2, int num) noexcept; - - /** Multiplies each source value by the given multiplier, then subtracts it to the destination value. */ - static void JUCE_CALLTYPE subtractWithMultiply (float* dest, const float* src, float multiplier, int numValues) noexcept; - - /** Multiplies each source value by the given multiplier, then subtracts it to the destination value. */ - static void JUCE_CALLTYPE subtractWithMultiply (double* dest, const double* src, double multiplier, int numValues) noexcept; - - /** Multiplies each source1 value by the corresponding source2 value, then subtracts it to the destination value. */ - static void JUCE_CALLTYPE subtractWithMultiply (float* dest, const float* src1, const float* src2, int num) noexcept; - - /** Multiplies each source1 value by the corresponding source2 value, then subtracts it to the destination value. */ - static void JUCE_CALLTYPE subtractWithMultiply (double* dest, const double* src1, const double* src2, int num) noexcept; - - /** Multiplies the destination values by the source values. */ - static void JUCE_CALLTYPE multiply (float* dest, const float* src, int numValues) noexcept; - - /** Multiplies the destination values by the source values. */ - static void JUCE_CALLTYPE multiply (double* dest, const double* src, int numValues) noexcept; - - /** Multiplies each source1 value by the correspinding source2 value, then stores it in the destination array. */ - static void JUCE_CALLTYPE multiply (float* dest, const float* src1, const float* src2, int numValues) noexcept; - - /** Multiplies each source1 value by the correspinding source2 value, then stores it in the destination array. */ - static void JUCE_CALLTYPE multiply (double* dest, const double* src1, const double* src2, int numValues) noexcept; - - /** Multiplies each of the destination values by a fixed multiplier. */ - static void JUCE_CALLTYPE multiply (float* dest, float multiplier, int numValues) noexcept; - - /** Multiplies each of the destination values by a fixed multiplier. */ - static void JUCE_CALLTYPE multiply (double* dest, double multiplier, int numValues) noexcept; +template +struct FloatVectorOperationsBase +{ + static void JUCE_CALLTYPE clear (FloatType* dest, CountType numValues) noexcept; + static void JUCE_CALLTYPE fill (FloatType* dest, FloatType valueToFill, CountType numValues) noexcept; + static void JUCE_CALLTYPE copy (FloatType* dest, const FloatType* src, CountType numValues) noexcept; + static void JUCE_CALLTYPE copyWithMultiply (FloatType* dest, const FloatType* src, FloatType multiplier, CountType numValues) noexcept; + static void JUCE_CALLTYPE add (FloatType* dest, FloatType amountToAdd, CountType numValues) noexcept; + static void JUCE_CALLTYPE add (FloatType* dest, const FloatType* src, FloatType amount, CountType numValues) noexcept; + static void JUCE_CALLTYPE add (FloatType* dest, const FloatType* src, CountType numValues) noexcept; + static void JUCE_CALLTYPE add (FloatType* dest, const FloatType* src1, const FloatType* src2, CountType num) noexcept; + static void JUCE_CALLTYPE subtract (FloatType* dest, const FloatType* src, CountType numValues) noexcept; + static void JUCE_CALLTYPE subtract (FloatType* dest, const FloatType* src1, const FloatType* src2, CountType num) noexcept; + static void JUCE_CALLTYPE addWithMultiply (FloatType* dest, const FloatType* src, FloatType multiplier, CountType numValues) noexcept; + static void JUCE_CALLTYPE addWithMultiply (FloatType* dest, const FloatType* src1, const FloatType* src2, CountType num) noexcept; + static void JUCE_CALLTYPE subtractWithMultiply (FloatType* dest, const FloatType* src, FloatType multiplier, CountType numValues) noexcept; + static void JUCE_CALLTYPE subtractWithMultiply (FloatType* dest, const FloatType* src1, const FloatType* src2, CountType num) noexcept; + static void JUCE_CALLTYPE multiply (FloatType* dest, const FloatType* src, CountType numValues) noexcept; + static void JUCE_CALLTYPE multiply (FloatType* dest, const FloatType* src1, const FloatType* src2, CountType numValues) noexcept; + static void JUCE_CALLTYPE multiply (FloatType* dest, FloatType multiplier, CountType numValues) noexcept; + static void JUCE_CALLTYPE multiply (FloatType* dest, const FloatType* src, FloatType multiplier, CountType num) noexcept; + static void JUCE_CALLTYPE negate (FloatType* dest, const FloatType* src, CountType numValues) noexcept; + static void JUCE_CALLTYPE abs (FloatType* dest, const FloatType* src, CountType numValues) noexcept; + static void JUCE_CALLTYPE min (FloatType* dest, const FloatType* src, FloatType comp, CountType num) noexcept; + static void JUCE_CALLTYPE min (FloatType* dest, const FloatType* src1, const FloatType* src2, CountType num) noexcept; + static void JUCE_CALLTYPE max (FloatType* dest, const FloatType* src, FloatType comp, CountType num) noexcept; + static void JUCE_CALLTYPE max (FloatType* dest, const FloatType* src1, const FloatType* src2, CountType num) noexcept; + static void JUCE_CALLTYPE clip (FloatType* dest, const FloatType* src, FloatType low, FloatType high, CountType num) noexcept; + static Range JUCE_CALLTYPE findMinAndMax (const FloatType* src, CountType numValues) noexcept; + static FloatType JUCE_CALLTYPE findMinimum (const FloatType* src, CountType numValues) noexcept; + static FloatType JUCE_CALLTYPE findMaximum (const FloatType* src, CountType numValues) noexcept; +}; - /** Multiplies each of the source values by a fixed multiplier and stores the result in the destination array. */ - static void JUCE_CALLTYPE multiply (float* dest, const float* src, float multiplier, int num) noexcept; +template +struct NameForwarder; - /** Multiplies each of the source values by a fixed multiplier and stores the result in the destination array. */ - static void JUCE_CALLTYPE multiply (double* dest, const double* src, double multiplier, int num) noexcept; +template +struct NameForwarder : Head {}; - /** Copies a source vector to a destination, negating each value. */ - static void JUCE_CALLTYPE negate (float* dest, const float* src, int numValues) noexcept; +template +struct NameForwarder : Head, NameForwarder +{ + using Head::clear; + using NameForwarder::clear; - /** Copies a source vector to a destination, negating each value. */ - static void JUCE_CALLTYPE negate (double* dest, const double* src, int numValues) noexcept; + using Head::fill; + using NameForwarder::fill; - /** Copies a source vector to a destination, taking the absolute of each value. */ - static void JUCE_CALLTYPE abs (float* dest, const float* src, int numValues) noexcept; + using Head::copy; + using NameForwarder::copy; - /** Copies a source vector to a destination, taking the absolute of each value. */ - static void JUCE_CALLTYPE abs (double* dest, const double* src, int numValues) noexcept; + using Head::copyWithMultiply; + using NameForwarder::copyWithMultiply; - /** Converts a stream of integers to floats, multiplying each one by the given multiplier. */ - static void JUCE_CALLTYPE convertFixedToFloat (float* dest, const int* src, float multiplier, int numValues) noexcept; + using Head::add; + using NameForwarder::add; - /** Each element of dest will be the minimum of the corresponding element of the source array and the given comp value. */ - static void JUCE_CALLTYPE min (float* dest, const float* src, float comp, int num) noexcept; + using Head::subtract; + using NameForwarder::subtract; - /** Each element of dest will be the minimum of the corresponding element of the source array and the given comp value. */ - static void JUCE_CALLTYPE min (double* dest, const double* src, double comp, int num) noexcept; + using Head::addWithMultiply; + using NameForwarder::addWithMultiply; - /** Each element of dest will be the minimum of the corresponding source1 and source2 values. */ - static void JUCE_CALLTYPE min (float* dest, const float* src1, const float* src2, int num) noexcept; + using Head::subtractWithMultiply; + using NameForwarder::subtractWithMultiply; - /** Each element of dest will be the minimum of the corresponding source1 and source2 values. */ - static void JUCE_CALLTYPE min (double* dest, const double* src1, const double* src2, int num) noexcept; + using Head::multiply; + using NameForwarder::multiply; - /** Each element of dest will be the maximum of the corresponding element of the source array and the given comp value. */ - static void JUCE_CALLTYPE max (float* dest, const float* src, float comp, int num) noexcept; + using Head::negate; + using NameForwarder::negate; - /** Each element of dest will be the maximum of the corresponding element of the source array and the given comp value. */ - static void JUCE_CALLTYPE max (double* dest, const double* src, double comp, int num) noexcept; + using Head::abs; + using NameForwarder::abs; - /** Each element of dest will be the maximum of the corresponding source1 and source2 values. */ - static void JUCE_CALLTYPE max (float* dest, const float* src1, const float* src2, int num) noexcept; + using Head::min; + using NameForwarder::min; - /** Each element of dest will be the maximum of the corresponding source1 and source2 values. */ - static void JUCE_CALLTYPE max (double* dest, const double* src1, const double* src2, int num) noexcept; + using Head::max; + using NameForwarder::max; - /** Each element of dest is calculated by hard clipping the corresponding src element so that it is in the range specified by the arguments low and high. */ - static void JUCE_CALLTYPE clip (float* dest, const float* src, float low, float high, int num) noexcept; + using Head::clip; + using NameForwarder::clip; - /** Each element of dest is calculated by hard clipping the corresponding src element so that it is in the range specified by the arguments low and high. */ - static void JUCE_CALLTYPE clip (double* dest, const double* src, double low, double high, int num) noexcept; + using Head::findMinAndMax; + using NameForwarder::findMinAndMax; - /** Finds the minimum and maximum values in the given array. */ - static Range JUCE_CALLTYPE findMinAndMax (const float* src, int numValues) noexcept; + using Head::findMinimum; + using NameForwarder::findMinimum; - /** Finds the minimum and maximum values in the given array. */ - static Range JUCE_CALLTYPE findMinAndMax (const double* src, int numValues) noexcept; + using Head::findMaximum; + using NameForwarder::findMaximum; +}; - /** Finds the minimum value in the given array. */ - static float JUCE_CALLTYPE findMinimum (const float* src, int numValues) noexcept; +} // namespace detail +#endif - /** Finds the minimum value in the given array. */ - static double JUCE_CALLTYPE findMinimum (const double* src, int numValues) noexcept; +//============================================================================== +/** + A collection of simple vector operations on arrays of floats, accelerated with + SIMD instructions where possible. - /** Finds the maximum value in the given array. */ - static float JUCE_CALLTYPE findMaximum (const float* src, int numValues) noexcept; + @tags{Audio} +*/ +class JUCE_API FloatVectorOperations : public detail::NameForwarder, + detail::FloatVectorOperationsBase, + detail::FloatVectorOperationsBase, + detail::FloatVectorOperationsBase> +{ +public: + static void JUCE_CALLTYPE convertFixedToFloat (float* dest, const int* src, float multiplier, int num) noexcept; - /** Finds the maximum value in the given array. */ - static double JUCE_CALLTYPE findMaximum (const double* src, int numValues) noexcept; + static void JUCE_CALLTYPE convertFixedToFloat (float* dest, const int* src, float multiplier, size_t num) noexcept; /** This method enables or disables the SSE/NEON flush-to-zero mode. */ static void JUCE_CALLTYPE enableFlushToZeroMode (bool shouldEnable) noexcept; diff -Nru juce-6.1.4~ds0/modules/juce_audio_basics/juce_audio_basics.h juce-6.1.5~ds0/modules/juce_audio_basics/juce_audio_basics.h --- juce-6.1.4~ds0/modules/juce_audio_basics/juce_audio_basics.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_basics/juce_audio_basics.h 2022-01-26 13:07:09.000000000 +0000 @@ -32,7 +32,7 @@ ID: juce_audio_basics vendor: juce - version: 6.1.4 + version: 6.1.5 name: JUCE audio and MIDI data classes description: Classes for audio buffer manipulation, midi message handling, synthesis, etc. website: http://www.juce.com/juce diff -Nru juce-6.1.4~ds0/modules/juce_audio_basics/midi/ump/juce_UMPSysEx7.h juce-6.1.5~ds0/modules/juce_audio_basics/midi/ump/juce_UMPSysEx7.h --- juce-6.1.4~ds0/modules/juce_audio_basics/midi/ump/juce_UMPSysEx7.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_basics/midi/ump/juce_UMPSysEx7.h 2022-01-26 13:07:09.000000000 +0000 @@ -28,7 +28,7 @@ { /** - This struct acts as a single-file namespace for Univeral MIDI Packet + This struct acts as a single-file namespace for Universal MIDI Packet functionality related to 7-bit SysEx. @tags{Audio} diff -Nru juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPEInstrument.cpp juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPEInstrument.cpp --- juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPEInstrument.cpp 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPEInstrument.cpp 2022-01-26 13:07:09.000000000 +0000 @@ -43,16 +43,20 @@ mpeInstrumentFill (isMemberChannelSustained, false); pitchbendDimension.value = &MPENote::pitchbend; - pressureDimension.value = &MPENote::pressure; - timbreDimension.value = &MPENote::timbre; + pressureDimension.value = &MPENote::pressure; + timbreDimension.value = &MPENote::timbre; resetLastReceivedValues(); - legacyMode.isEnabled = false; - legacyMode.pitchbendRange = 2; legacyMode.channelRange = allChannels; } +MPEInstrument::MPEInstrument (MPEZoneLayout layout) + : MPEInstrument() +{ + setZoneLayout (layout); +} + MPEInstrument::~MPEInstrument() = default; //============================================================================== @@ -84,21 +88,30 @@ const ScopedLock sl (lock); legacyMode.isEnabled = false; - zoneLayout = newLayout; - resetLastReceivedValues(); + if (zoneLayout != newLayout) + { + zoneLayout = newLayout; + listeners.call ([=] (Listener& l) { l.zoneLayoutChanged(); }); + } } //============================================================================== void MPEInstrument::enableLegacyMode (int pitchbendRange, Range channelRange) { + if (legacyMode.isEnabled) + return; + releaseAllNotes(); const ScopedLock sl (lock); + legacyMode.isEnabled = true; legacyMode.pitchbendRange = pitchbendRange; legacyMode.channelRange = channelRange; + zoneLayout.clearAllZones(); + listeners.call ([=] (Listener& l) { l.zoneLayoutChanged(); }); } bool MPEInstrument::isLegacyModeEnabled() const noexcept @@ -117,7 +130,12 @@ releaseAllNotes(); const ScopedLock sl (lock); - legacyMode.channelRange = channelRange; + + if (legacyMode.channelRange != channelRange) + { + legacyMode.channelRange = channelRange; + listeners.call ([=] (Listener& l) { l.zoneLayoutChanged(); }); + } } int MPEInstrument::getLegacyModePitchbendRange() const noexcept @@ -131,7 +149,12 @@ releaseAllNotes(); const ScopedLock sl (lock); - legacyMode.pitchbendRange = pitchbendRange; + + if (legacyMode.pitchbendRange != pitchbendRange) + { + legacyMode.pitchbendRange = pitchbendRange; + listeners.call ([=] (Listener& l) { l.zoneLayoutChanged(); }); + } } //============================================================================== @@ -242,7 +265,7 @@ if (legacyMode.isEnabled && legacyMode.channelRange.contains (message.getChannel())) { - for (auto i = notes.size(); --i >= 0;) + for (int i = notes.size(); --i >= 0;) { auto& note = notes.getReference (i); @@ -260,7 +283,7 @@ auto zone = (message.getChannel() == 1 ? zoneLayout.getLowerZone() : zoneLayout.getUpperZone()); - for (auto i = notes.size(); --i >= 0;) + for (int i = notes.size(); --i >= 0;) { auto& note = notes.getReference (i); @@ -348,11 +371,11 @@ int midiNoteNumber, MPEValue midiNoteOffVelocity) { + const ScopedLock sl (lock); + if (notes.isEmpty() || ! isUsingChannel (midiChannel)) return; - const ScopedLock sl (lock); - if (auto* note = getNotePtr (midiChannel, midiNoteNumber)) { note->keyState = (note->keyState == MPENote::keyDownAndSustained) ? MPENote::sustained : MPENote::off; @@ -401,7 +424,7 @@ { const ScopedLock sl (lock); - for (auto i = notes.size(); --i >= 0;) + for (int i = notes.size(); --i >= 0;) { auto& note = notes.getReference (i); @@ -435,7 +458,7 @@ { if (dimension.trackingMode == allNotesOnChannel) { - for (auto i = notes.size(); --i >= 0;) + for (int i = notes.size(); --i >= 0;) { auto& note = notes.getReference (i); @@ -464,7 +487,7 @@ if (! zone.isActive()) return; - for (auto i = notes.size(); --i >= 0;) + for (int i = notes.size(); --i >= 0;) { auto& note = notes.getReference (i); @@ -573,7 +596,7 @@ auto zone = (midiChannel == 1 ? zoneLayout.getLowerZone() : zoneLayout.getUpperZone()); - for (auto i = notes.size(); --i >= 0;) + for (int i = notes.size(); --i >= 0;) { auto& note = notes.getReference (i); @@ -605,11 +628,15 @@ if (! legacyMode.isEnabled) { if (zone.isLowerZone()) - for (auto i = zone.getFirstMemberChannel(); i <= zone.getLastMemberChannel(); ++i) + { + for (int i = zone.getFirstMemberChannel(); i <= zone.getLastMemberChannel(); ++i) isMemberChannelSustained[i - 1] = isDown; + } else - for (auto i = zone.getFirstMemberChannel(); i >= zone.getLastMemberChannel(); --i) + { + for (int i = zone.getFirstMemberChannel(); i >= zone.getLastMemberChannel(); --i) isMemberChannelSustained[i - 1] = isDown; + } } } } @@ -664,6 +691,17 @@ return notes[index]; } +MPENote MPEInstrument::getNoteWithID (uint16 noteID) const noexcept +{ + const ScopedLock sl (lock); + + for (auto& note : notes) + if (note.noteID == noteID) + return note; + + return {}; +} + //============================================================================== MPENote MPEInstrument::getMostRecentNote (int midiChannel) const noexcept { @@ -727,6 +765,8 @@ //============================================================================== const MPENote* MPEInstrument::getLastNotePlayedPtr (int midiChannel) const noexcept { + const ScopedLock sl (lock); + for (auto i = notes.size(); --i >= 0;) { auto& note = notes.getReference (i); diff -Nru juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPEInstrument.h juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPEInstrument.h --- juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPEInstrument.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPEInstrument.h 2022-01-26 13:07:09.000000000 +0000 @@ -38,10 +38,8 @@ MPE. If you pass it a message, it will know what notes on what channels (if any) should be affected by that message. - The class has a Listener class with the three callbacks MPENoteAdded, - MPENoteChanged, and MPENoteFinished. Implement such a - Listener class to react to note changes and trigger some functionality for - your application that depends on the MPE note state. + The class has a Listener class that can be used to react to note and + state changes and trigger some functionality for your application. For example, you can use this class to write an MPE visualiser. If you want to write a real-time audio synth with MPE functionality, @@ -59,11 +57,14 @@ This will construct an MPE instrument with inactive lower and upper zones. - In order to process incoming MIDI, call setZoneLayout, define the layout - via MIDI RPN messages, or set the instrument to legacy mode. + In order to process incoming MIDI messages call setZoneLayout, use the MPEZoneLayout + constructor, define the layout via MIDI RPN messages, or set the instrument to legacy mode. */ MPEInstrument() noexcept; + /** Constructs an MPE instrument with the specified zone layout. */ + MPEInstrument (MPEZoneLayout layout); + /** Destructor. */ virtual ~MPEInstrument(); @@ -229,6 +230,9 @@ */ MPENote getNote (int midiChannel, int midiNoteNumber) const noexcept; + /** Returns the note with a given ID. */ + MPENote getNoteWithID (uint16 noteID) const noexcept; + /** Returns the most recent note that is playing on the given midiChannel (this will be the note which has received the most recent note-on without a corresponding note-off), if there is such a note. Otherwise, this returns an @@ -244,8 +248,8 @@ MPENote getMostRecentNoteOtherThan (MPENote otherThanThisNote) const noexcept; //============================================================================== - /** Derive from this class to be informed about any changes in the expressive - MIDI notes played by this instrument. + /** Derive from this class to be informed about any changes in the MPE notes played + by this instrument, and any changes to its zone layout. Note: This listener type receives its callbacks immediately, and not via the message thread (so you might be for example in the MIDI thread). @@ -297,6 +301,11 @@ and should therefore stop playing. */ virtual void noteReleased (MPENote finishedNote) { ignoreUnused (finishedNote); } + + /** Implement this callback to be informed whenever the MPE zone layout + or legacy mode settings of this instrument have been changed. + */ + virtual void zoneLayoutChanged() {} }; //============================================================================== @@ -307,7 +316,9 @@ void removeListener (Listener* listenerToRemove); //============================================================================== - /** Puts the instrument into legacy mode. + /** Puts the instrument into legacy mode. If legacy mode is already enabled this method + does nothing. + As a side effect, this will discard all currently playing notes, and call noteReleased for all of them. @@ -360,9 +371,9 @@ struct LegacyMode { - bool isEnabled; + bool isEnabled = false; Range channelRange; - int pitchbendRange; + int pitchbendRange = 2; }; struct MPEDimension diff -Nru juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPENote.h juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPENote.h --- juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPENote.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPENote.h 2022-01-26 13:07:09.000000000 +0000 @@ -115,7 +115,7 @@ */ MPEValue noteOnVelocity { MPEValue::minValue() }; - /** Current per-note pitchbend of the note (in units of MIDI pitchwheel + /** Current per-note pitchbend of the note (in units of MIDI pitchwheel position). This dimension can be modulated while the note sounds. Note: This value is not aware of the currently used pitchbend range, diff -Nru juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPESynthesiserBase.cpp juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPESynthesiserBase.cpp --- juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPESynthesiserBase.cpp 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPESynthesiserBase.cpp 2022-01-26 13:07:09.000000000 +0000 @@ -24,80 +24,79 @@ { MPESynthesiserBase::MPESynthesiserBase() - : instrument (new MPEInstrument) + : instrument (defaultInstrument) { - instrument->addListener (this); + instrument.addListener (this); } -MPESynthesiserBase::MPESynthesiserBase (MPEInstrument* inst) +MPESynthesiserBase::MPESynthesiserBase (MPEInstrument& inst) : instrument (inst) { - jassert (instrument != nullptr); - instrument->addListener (this); + instrument.addListener (this); } //============================================================================== MPEZoneLayout MPESynthesiserBase::getZoneLayout() const noexcept { - return instrument->getZoneLayout(); + return instrument.getZoneLayout(); } void MPESynthesiserBase::setZoneLayout (MPEZoneLayout newLayout) { - instrument->setZoneLayout (newLayout); + instrument.setZoneLayout (newLayout); } //============================================================================== void MPESynthesiserBase::enableLegacyMode (int pitchbendRange, Range channelRange) { - instrument->enableLegacyMode (pitchbendRange, channelRange); + instrument.enableLegacyMode (pitchbendRange, channelRange); } bool MPESynthesiserBase::isLegacyModeEnabled() const noexcept { - return instrument->isLegacyModeEnabled(); + return instrument.isLegacyModeEnabled(); } Range MPESynthesiserBase::getLegacyModeChannelRange() const noexcept { - return instrument->getLegacyModeChannelRange(); + return instrument.getLegacyModeChannelRange(); } void MPESynthesiserBase::setLegacyModeChannelRange (Range channelRange) { - instrument->setLegacyModeChannelRange (channelRange); + instrument.setLegacyModeChannelRange (channelRange); } int MPESynthesiserBase::getLegacyModePitchbendRange() const noexcept { - return instrument->getLegacyModePitchbendRange(); + return instrument.getLegacyModePitchbendRange(); } void MPESynthesiserBase::setLegacyModePitchbendRange (int pitchbendRange) { - instrument->setLegacyModePitchbendRange (pitchbendRange); + instrument.setLegacyModePitchbendRange (pitchbendRange); } //============================================================================== void MPESynthesiserBase::setPressureTrackingMode (TrackingMode modeToUse) { - instrument->setPressureTrackingMode (modeToUse); + instrument.setPressureTrackingMode (modeToUse); } void MPESynthesiserBase::setPitchbendTrackingMode (TrackingMode modeToUse) { - instrument->setPitchbendTrackingMode (modeToUse); + instrument.setPitchbendTrackingMode (modeToUse); } void MPESynthesiserBase::setTimbreTrackingMode (TrackingMode modeToUse) { - instrument->setTimbreTrackingMode (modeToUse); + instrument.setTimbreTrackingMode (modeToUse); } //============================================================================== void MPESynthesiserBase::handleMidiEvent (const MidiMessage& m) { - instrument->processNextMidiEvent (m); + instrument.processNextMidiEvent (m); } //============================================================================== @@ -148,7 +147,7 @@ if (sampleRate != newRate) { const ScopedLock sl (noteStateLock); - instrument->releaseAllNotes(); + instrument.releaseAllNotes(); sampleRate = newRate; } } diff -Nru juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPESynthesiserBase.h juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPESynthesiserBase.h --- juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPESynthesiserBase.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPESynthesiserBase.h 2022-01-26 13:07:09.000000000 +0000 @@ -52,13 +52,12 @@ /** Constructor. - If you use this constructor, the synthesiser will take ownership of the - provided instrument object, and will use it internally to handle the - MPE note state logic. + If you use this constructor, the synthesiser will use the provided instrument + object to handle the MPE note state logic. This is useful if you want to use an instance of your own class derived from MPEInstrument for the MPE logic. */ - MPESynthesiserBase (MPEInstrument* instrument); + MPESynthesiserBase (MPEInstrument& instrument); //============================================================================== /** Returns the synthesiser's internal MPE zone layout. @@ -200,10 +199,12 @@ protected: //============================================================================== /** @internal */ - std::unique_ptr instrument; + MPEInstrument& instrument; private: //============================================================================== + MPEInstrument defaultInstrument { MPEZone (MPEZone::Type::lower, 15) }; + CriticalSection noteStateLock; double sampleRate = 0.0; int minimumSubBlockSize = 32; diff -Nru juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPESynthesiser.cpp juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPESynthesiser.cpp --- juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPESynthesiser.cpp 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPESynthesiser.cpp 2022-01-26 13:07:09.000000000 +0000 @@ -25,12 +25,10 @@ MPESynthesiser::MPESynthesiser() { - MPEZoneLayout zoneLayout; - zoneLayout.setLowerZone (15); - setZoneLayout (zoneLayout); } -MPESynthesiser::MPESynthesiser (MPEInstrument* mpeInstrument) : MPESynthesiserBase (mpeInstrument) +MPESynthesiser::MPESynthesiser (MPEInstrument& mpeInstrument) + : MPESynthesiserBase (mpeInstrument) { } @@ -314,7 +312,7 @@ } // finally make sure the MPE Instrument also doesn't have any notes anymore. - instrument->releaseAllNotes(); + instrument.releaseAllNotes(); } //============================================================================== diff -Nru juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPESynthesiser.h juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPESynthesiser.h --- juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPESynthesiser.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPESynthesiser.h 2022-01-26 13:07:09.000000000 +0000 @@ -65,11 +65,10 @@ /** Constructor to pass to the synthesiser a custom MPEInstrument object to handle the MPE note state, MIDI channel assignment etc. (in case you need custom logic for this that goes beyond MIDI and MPE). - The synthesiser will take ownership of this object. @see MPESynthesiserBase, MPEInstrument */ - MPESynthesiser (MPEInstrument* instrumentToUse); + MPESynthesiser (MPEInstrument& instrumentToUse); /** Destructor. */ ~MPESynthesiser() override; @@ -303,7 +302,7 @@ private: //============================================================================== - bool shouldStealVoices = false; + std::atomic shouldStealVoices { false }; uint32 lastNoteOnCounter = 0; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MPESynthesiser) diff -Nru juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPEUtils.cpp juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPEUtils.cpp --- juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPEUtils.cpp 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPEUtils.cpp 2022-01-26 13:07:09.000000000 +0000 @@ -52,25 +52,25 @@ if (numChannels <= 1) return firstChannel; - for (auto ch = firstChannel; (isLegacy || zone->isLowerZone() ? ch <= lastChannel : ch >= lastChannel); ch += channelIncrement) + for (int ch = firstChannel; (isLegacy || zone->isLowerZone() ? ch <= lastChannel : ch >= lastChannel); ch += channelIncrement) { - if (midiChannels[ch].isFree() && midiChannels[ch].lastNotePlayed == noteNumber) + if (midiChannels[(size_t) ch].isFree() && midiChannels[(size_t) ch].lastNotePlayed == noteNumber) { midiChannelLastAssigned = ch; - midiChannels[ch].notes.add (noteNumber); + midiChannels[(size_t) ch].notes.add (noteNumber); return ch; } } - for (auto ch = midiChannelLastAssigned + channelIncrement; ; ch += channelIncrement) + for (int ch = midiChannelLastAssigned + channelIncrement; ; ch += channelIncrement) { if (ch == lastChannel + channelIncrement) // loop wrap-around ch = firstChannel; - if (midiChannels[ch].isFree()) + if (midiChannels[(size_t) ch].isFree()) { midiChannelLastAssigned = ch; - midiChannels[ch].notes.add (noteNumber); + midiChannels[(size_t) ch].notes.add (noteNumber); return ch; } @@ -79,11 +79,21 @@ } midiChannelLastAssigned = findMidiChannelPlayingClosestNonequalNote (noteNumber); - midiChannels[midiChannelLastAssigned].notes.add (noteNumber); + midiChannels[(size_t) midiChannelLastAssigned].notes.add (noteNumber); return midiChannelLastAssigned; } +int MPEChannelAssigner::findMidiChannelForExistingNote (int noteNumber) noexcept +{ + const auto iter = std::find_if (midiChannels.cbegin(), midiChannels.cend(), [&] (auto& ch) + { + return std::find (ch.notes.begin(), ch.notes.end(), noteNumber) != ch.notes.end(); + }); + + return iter != midiChannels.cend() ? (int) std::distance (midiChannels.cbegin(), iter) : -1; +} + void MPEChannelAssigner::noteOff (int noteNumber, int midiChannel) { const auto removeNote = [] (MidiChannel& ch, int noteNum) @@ -99,7 +109,7 @@ if (midiChannel >= 0 && midiChannel <= 16) { - removeNote (midiChannels[midiChannel], noteNumber); + removeNote (midiChannels[(size_t) midiChannel], noteNumber); return; } @@ -126,9 +136,9 @@ auto channelWithClosestNote = firstChannel; int closestNoteDistance = 127; - for (auto ch = firstChannel; (isLegacy || zone->isLowerZone() ? ch <= lastChannel : ch >= lastChannel); ch += channelIncrement) + for (int ch = firstChannel; (isLegacy || zone->isLowerZone() ? ch <= lastChannel : ch >= lastChannel); ch += channelIncrement) { - for (auto note : midiChannels[ch].notes) + for (auto note : midiChannels[(size_t) ch].notes) { auto noteDistance = std::abs (note - noteNumber); @@ -296,24 +306,35 @@ // check that channels are assigned in correct order int noteNum = 60; for (int ch = 2; ch <= 16; ++ch) - expectEquals (channelAssigner.findMidiChannelForNewNote (noteNum++), ch); + { + expectEquals (channelAssigner.findMidiChannelForNewNote (noteNum), ch); + expectEquals (channelAssigner.findMidiChannelForExistingNote (noteNum), ch); + + ++noteNum; + } // check that note-offs are processed channelAssigner.noteOff (60); expectEquals (channelAssigner.findMidiChannelForNewNote (60), 2); + expectEquals (channelAssigner.findMidiChannelForExistingNote (60), 2); channelAssigner.noteOff (61); expectEquals (channelAssigner.findMidiChannelForNewNote (61), 3); + expectEquals (channelAssigner.findMidiChannelForExistingNote (61), 3); // check that assigned channel was last to play note channelAssigner.noteOff (65); channelAssigner.noteOff (66); expectEquals (channelAssigner.findMidiChannelForNewNote (66), 8); expectEquals (channelAssigner.findMidiChannelForNewNote (65), 7); + expectEquals (channelAssigner.findMidiChannelForExistingNote (66), 8); + expectEquals (channelAssigner.findMidiChannelForExistingNote (65), 7); // find closest channel playing nonequal note expectEquals (channelAssigner.findMidiChannelForNewNote (80), 16); expectEquals (channelAssigner.findMidiChannelForNewNote (55), 2); + expectEquals (channelAssigner.findMidiChannelForExistingNote (80), 16); + expectEquals (channelAssigner.findMidiChannelForExistingNote (55), 2); // all notes off channelAssigner.allNotesOff(); @@ -323,10 +344,16 @@ expectEquals (channelAssigner.findMidiChannelForNewNote (65), 7); expectEquals (channelAssigner.findMidiChannelForNewNote (80), 16); expectEquals (channelAssigner.findMidiChannelForNewNote (55), 2); + expectEquals (channelAssigner.findMidiChannelForExistingNote (66), 8); + expectEquals (channelAssigner.findMidiChannelForExistingNote (65), 7); + expectEquals (channelAssigner.findMidiChannelForExistingNote (80), 16); + expectEquals (channelAssigner.findMidiChannelForExistingNote (55), 2); // normal assignment expectEquals (channelAssigner.findMidiChannelForNewNote (101), 3); expectEquals (channelAssigner.findMidiChannelForNewNote (20), 4); + expectEquals (channelAssigner.findMidiChannelForExistingNote (101), 3); + expectEquals (channelAssigner.findMidiChannelForExistingNote (20), 4); } // upper @@ -339,24 +366,35 @@ // check that channels are assigned in correct order int noteNum = 60; for (int ch = 15; ch >= 1; --ch) - expectEquals (channelAssigner.findMidiChannelForNewNote (noteNum++), ch); + { + expectEquals (channelAssigner.findMidiChannelForNewNote (noteNum), ch); + expectEquals (channelAssigner.findMidiChannelForExistingNote (noteNum), ch); + + ++noteNum; + } // check that note-offs are processed channelAssigner.noteOff (60); expectEquals (channelAssigner.findMidiChannelForNewNote (60), 15); + expectEquals (channelAssigner.findMidiChannelForExistingNote (60), 15); channelAssigner.noteOff (61); expectEquals (channelAssigner.findMidiChannelForNewNote (61), 14); + expectEquals (channelAssigner.findMidiChannelForExistingNote (61), 14); // check that assigned channel was last to play note channelAssigner.noteOff (65); channelAssigner.noteOff (66); expectEquals (channelAssigner.findMidiChannelForNewNote (66), 9); expectEquals (channelAssigner.findMidiChannelForNewNote (65), 10); + expectEquals (channelAssigner.findMidiChannelForExistingNote (66), 9); + expectEquals (channelAssigner.findMidiChannelForExistingNote (65), 10); // find closest channel playing nonequal note expectEquals (channelAssigner.findMidiChannelForNewNote (80), 1); expectEquals (channelAssigner.findMidiChannelForNewNote (55), 15); + expectEquals (channelAssigner.findMidiChannelForExistingNote (80), 1); + expectEquals (channelAssigner.findMidiChannelForExistingNote (55), 15); // all notes off channelAssigner.allNotesOff(); @@ -366,10 +404,16 @@ expectEquals (channelAssigner.findMidiChannelForNewNote (65), 10); expectEquals (channelAssigner.findMidiChannelForNewNote (80), 1); expectEquals (channelAssigner.findMidiChannelForNewNote (55), 15); + expectEquals (channelAssigner.findMidiChannelForExistingNote (66), 9); + expectEquals (channelAssigner.findMidiChannelForExistingNote (65), 10); + expectEquals (channelAssigner.findMidiChannelForExistingNote (80), 1); + expectEquals (channelAssigner.findMidiChannelForExistingNote (55), 15); // normal assignment expectEquals (channelAssigner.findMidiChannelForNewNote (101), 14); expectEquals (channelAssigner.findMidiChannelForNewNote (20), 13); + expectEquals (channelAssigner.findMidiChannelForExistingNote (101), 14); + expectEquals (channelAssigner.findMidiChannelForExistingNote (20), 13); } // legacy @@ -379,24 +423,35 @@ // check that channels are assigned in correct order int noteNum = 60; for (int ch = 1; ch <= 16; ++ch) - expectEquals (channelAssigner.findMidiChannelForNewNote (noteNum++), ch); + { + expectEquals (channelAssigner.findMidiChannelForNewNote (noteNum), ch); + expectEquals (channelAssigner.findMidiChannelForExistingNote (noteNum), ch); + + ++noteNum; + } // check that note-offs are processed channelAssigner.noteOff (60); expectEquals (channelAssigner.findMidiChannelForNewNote (60), 1); + expectEquals (channelAssigner.findMidiChannelForExistingNote (60), 1); channelAssigner.noteOff (61); expectEquals (channelAssigner.findMidiChannelForNewNote (61), 2); + expectEquals (channelAssigner.findMidiChannelForExistingNote (61), 2); // check that assigned channel was last to play note channelAssigner.noteOff (65); channelAssigner.noteOff (66); expectEquals (channelAssigner.findMidiChannelForNewNote (66), 7); expectEquals (channelAssigner.findMidiChannelForNewNote (65), 6); + expectEquals (channelAssigner.findMidiChannelForExistingNote (66), 7); + expectEquals (channelAssigner.findMidiChannelForExistingNote (65), 6); // find closest channel playing nonequal note expectEquals (channelAssigner.findMidiChannelForNewNote (80), 16); expectEquals (channelAssigner.findMidiChannelForNewNote (55), 1); + expectEquals (channelAssigner.findMidiChannelForExistingNote (80), 16); + expectEquals (channelAssigner.findMidiChannelForExistingNote (55), 1); // all notes off channelAssigner.allNotesOff(); @@ -406,10 +461,16 @@ expectEquals (channelAssigner.findMidiChannelForNewNote (65), 6); expectEquals (channelAssigner.findMidiChannelForNewNote (80), 16); expectEquals (channelAssigner.findMidiChannelForNewNote (55), 1); + expectEquals (channelAssigner.findMidiChannelForExistingNote (66), 7); + expectEquals (channelAssigner.findMidiChannelForExistingNote (65), 6); + expectEquals (channelAssigner.findMidiChannelForExistingNote (80), 16); + expectEquals (channelAssigner.findMidiChannelForExistingNote (55), 1); // normal assignment expectEquals (channelAssigner.findMidiChannelForNewNote (101), 2); expectEquals (channelAssigner.findMidiChannelForNewNote (20), 3); + expectEquals (channelAssigner.findMidiChannelForExistingNote (101), 2); + expectEquals (channelAssigner.findMidiChannelForExistingNote (20), 3); } } diff -Nru juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPEUtils.h juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPEUtils.h --- juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPEUtils.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPEUtils.h 2022-01-26 13:07:09.000000000 +0000 @@ -63,6 +63,11 @@ */ int findMidiChannelForNewNote (int noteNumber) noexcept; + /** If a note has been added using findMidiChannelForNewNote() this will return the channel + to which it was assigned, otherwise it will return -1. + */ + int findMidiChannelForExistingNote (int initialNoteOnNumber) noexcept; + /** You must call this method for all note-offs that you receive so that this class can keep track of the currently playing notes internally. @@ -86,7 +91,7 @@ int lastNotePlayed = -1; bool isFree() const noexcept { return notes.isEmpty(); } }; - MidiChannel midiChannels[17]; + std::array midiChannels; //============================================================================== int findMidiChannelPlayingClosestNonequalNote (int noteNumber) noexcept; diff -Nru juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPEValue.cpp juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPEValue.cpp --- juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPEValue.cpp 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPEValue.cpp 2022-01-26 13:07:09.000000000 +0000 @@ -43,6 +43,18 @@ return { value }; } +MPEValue MPEValue::fromUnsignedFloat (float value) noexcept +{ + jassert (0.0f <= value && value <= 1.0f); + return { roundToInt (value * 16383.0f) }; +} + +MPEValue MPEValue::fromSignedFloat (float value) noexcept +{ + jassert (-1.0f <= value && value <= 1.0f); + return { roundToInt (((value + 1.0f) * 16383.0f) / 2.0f) }; +} + //============================================================================== MPEValue MPEValue::minValue() noexcept { return MPEValue::from7BitInt (0); } MPEValue MPEValue::centreValue() noexcept { return MPEValue::from7BitInt (64); } @@ -121,26 +133,34 @@ beginTest ("zero/minimum value"); { - expectValuesConsistent (MPEValue::from7BitInt (0), 0, 0, -1.0f, 0.0f); - expectValuesConsistent (MPEValue::from14BitInt (0), 0, 0, -1.0f, 0.0f); + expectValuesConsistent (MPEValue::from7BitInt (0), 0, 0, -1.0f, 0.0f); + expectValuesConsistent (MPEValue::from14BitInt (0), 0, 0, -1.0f, 0.0f); + expectValuesConsistent (MPEValue::fromUnsignedFloat (0.0f), 0, 0, -1.0f, 0.0f); + expectValuesConsistent (MPEValue::fromSignedFloat (-1.0f), 0, 0, -1.0f, 0.0f); } beginTest ("maximum value"); { - expectValuesConsistent (MPEValue::from7BitInt (127), 127, 16383, 1.0f, 1.0f); - expectValuesConsistent (MPEValue::from14BitInt (16383), 127, 16383, 1.0f, 1.0f); + expectValuesConsistent (MPEValue::from7BitInt (127), 127, 16383, 1.0f, 1.0f); + expectValuesConsistent (MPEValue::from14BitInt (16383), 127, 16383, 1.0f, 1.0f); + expectValuesConsistent (MPEValue::fromUnsignedFloat (1.0f), 127, 16383, 1.0f, 1.0f); + expectValuesConsistent (MPEValue::fromSignedFloat (1.0f), 127, 16383, 1.0f, 1.0f); } beginTest ("centre value"); { - expectValuesConsistent (MPEValue::from7BitInt (64), 64, 8192, 0.0f, 0.5f); - expectValuesConsistent (MPEValue::from14BitInt (8192), 64, 8192, 0.0f, 0.5f); + expectValuesConsistent (MPEValue::from7BitInt (64), 64, 8192, 0.0f, 0.5f); + expectValuesConsistent (MPEValue::from14BitInt (8192), 64, 8192, 0.0f, 0.5f); + expectValuesConsistent (MPEValue::fromUnsignedFloat (0.5f), 64, 8192, 0.0f, 0.5f); + expectValuesConsistent (MPEValue::fromSignedFloat (0.0f), 64, 8192, 0.0f, 0.5f); } beginTest ("value halfway between min and centre"); { - expectValuesConsistent (MPEValue::from7BitInt (32), 32, 4096, -0.5f, 0.25f); - expectValuesConsistent (MPEValue::from14BitInt (4096), 32, 4096, -0.5f, 0.25f); + expectValuesConsistent (MPEValue::from7BitInt (32), 32, 4096, -0.5f, 0.25f); + expectValuesConsistent (MPEValue::from14BitInt (4096), 32, 4096, -0.5f, 0.25f); + expectValuesConsistent (MPEValue::fromUnsignedFloat (0.25f), 32, 4096, -0.5f, 0.25f); + expectValuesConsistent (MPEValue::fromSignedFloat (-0.5f), 32, 4096, -0.5f, 0.25f); } } diff -Nru juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPEValue.h juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPEValue.h --- juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPEValue.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPEValue.h 2022-01-26 13:07:09.000000000 +0000 @@ -53,6 +53,12 @@ */ static MPEValue from14BitInt (int value) noexcept; + /** Constructs an MPEValue from a float between 0.0f and 1.0f. */ + static MPEValue fromUnsignedFloat (float value) noexcept; + + /** Constructs an MPEValue from a float between -1.0f and 1.0f. */ + static MPEValue fromSignedFloat (float value) noexcept; + /** Constructs an MPEValue corresponding to the centre value. */ static MPEValue centreValue() noexcept; diff -Nru juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPEZoneLayout.cpp juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPEZoneLayout.cpp --- juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPEZoneLayout.cpp 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPEZoneLayout.cpp 2022-01-26 13:07:09.000000000 +0000 @@ -23,7 +23,17 @@ namespace juce { -MPEZoneLayout::MPEZoneLayout() noexcept {} +MPEZoneLayout::MPEZoneLayout (MPEZone lower, MPEZone upper) + : lowerZone (lower), upperZone (upper) +{ +} + +MPEZoneLayout::MPEZoneLayout (MPEZone zone) + : lowerZone (zone.isLowerZone() ? zone : MPEZone()), + upperZone (! zone.isLowerZone() ? zone : MPEZone()) +{ +} + MPEZoneLayout::MPEZoneLayout (const MPEZoneLayout& other) : lowerZone (other.lowerZone), @@ -54,9 +64,9 @@ checkAndLimitZoneParameters (0, 96, masterPitchbendRange); if (isLower) - lowerZone = { true, numMemberChannels, perNotePitchbendRange, masterPitchbendRange }; + lowerZone = { MPEZone::Type::lower, numMemberChannels, perNotePitchbendRange, masterPitchbendRange }; else - upperZone = { false, numMemberChannels, perNotePitchbendRange, masterPitchbendRange }; + upperZone = { MPEZone::Type::upper, numMemberChannels, perNotePitchbendRange, masterPitchbendRange }; if (numMemberChannels > 0) { @@ -86,8 +96,8 @@ void MPEZoneLayout::clearAllZones() { - lowerZone = { true, 0 }; - upperZone = { false, 0 }; + lowerZone = { MPEZone::Type::lower, 0 }; + upperZone = { MPEZone::Type::upper, 0 }; sendLayoutChangeMessage(); } @@ -128,7 +138,7 @@ } } -void MPEZoneLayout::updateMasterPitchbend (Zone& zone, int value) +void MPEZoneLayout::updateMasterPitchbend (MPEZone& zone, int value) { if (zone.masterPitchbendRange != value) { @@ -138,7 +148,7 @@ } } -void MPEZoneLayout::updatePerNotePitchbendRange (Zone& zone, int value) +void MPEZoneLayout::updatePerNotePitchbendRange (MPEZone& zone, int value) { if (zone.perNotePitchbendRange != value) { diff -Nru juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPEZoneLayout.h juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPEZoneLayout.h --- juce-6.1.4~ds0/modules/juce_audio_basics/mpe/juce_MPEZoneLayout.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_basics/mpe/juce_MPEZoneLayout.h 2022-01-26 13:07:09.000000000 +0000 @@ -25,6 +25,83 @@ //============================================================================== /** + This struct represents an MPE zone. + + It can either be a lower or an upper zone, where: + - A lower zone encompasses master channel 1 and an arbitrary number of ascending + MIDI channels, increasing from channel 2. + - An upper zone encompasses master channel 16 and an arbitrary number of descending + MIDI channels, decreasing from channel 15. + + It also defines a pitchbend range (in semitones) to be applied for per-note pitchbends and + master pitchbends, respectively. +*/ +struct MPEZone +{ + enum class Type { lower, upper }; + + MPEZone() = default; + MPEZone (const MPEZone& other) = default; + + MPEZone (Type type, int memberChannels = 0, int perNotePitchbend = 48, int masterPitchbend = 2) + : zoneType (type), + numMemberChannels (memberChannels), + perNotePitchbendRange (perNotePitchbend), + masterPitchbendRange (masterPitchbend) + {} + + bool isLowerZone() const noexcept { return zoneType == Type::lower; } + bool isUpperZone() const noexcept { return zoneType == Type::upper; } + + bool isActive() const noexcept { return numMemberChannels > 0; } + + int getMasterChannel() const noexcept { return isLowerZone() ? lowerZoneMasterChannel : upperZoneMasterChannel; } + int getFirstMemberChannel() const noexcept { return isLowerZone() ? lowerZoneMasterChannel + 1 : upperZoneMasterChannel - 1; } + int getLastMemberChannel() const noexcept { return isLowerZone() ? (lowerZoneMasterChannel + numMemberChannels) + : (upperZoneMasterChannel - numMemberChannels); } + + bool isUsingChannelAsMemberChannel (int channel) const noexcept + { + return isLowerZone() ? (lowerZoneMasterChannel < channel && channel <= getLastMemberChannel()) + : (channel < upperZoneMasterChannel && getLastMemberChannel() <= channel); + } + + bool isUsing (int channel) const noexcept + { + return isUsingChannelAsMemberChannel (channel) || channel == getMasterChannel(); + } + + static auto tie (const MPEZone& z) + { + return std::tie (z.zoneType, + z.numMemberChannels, + z.perNotePitchbendRange, + z.masterPitchbendRange); + } + + bool operator== (const MPEZone& other) const + { + return tie (*this) == tie (other); + } + + bool operator!= (const MPEZone& other) const + { + return tie (*this) != tie (other); + } + + //============================================================================== + static constexpr int lowerZoneMasterChannel = 1, + upperZoneMasterChannel = 16; + + Type zoneType = Type::lower; + + int numMemberChannels = 0; + int perNotePitchbendRange = 48; + int masterPitchbendRange = 2; +}; + +//============================================================================== +/** This class represents the current MPE zone layout of a device capable of handling MPE. An MPE device can have up to two zones: a lower zone with master channel 1 and @@ -44,89 +121,28 @@ class JUCE_API MPEZoneLayout { public: - /** Default constructor. - - This will create a layout with inactive lower and upper zones, representing - a device with MPE mode disabled. + //============================================================================== + /** Creates a layout with inactive upper and lower zones. */ + MPEZoneLayout() = default; - You can set the lower or upper MPE zones using the setZone() method. + /** Creates a layout with the given upper and lower zones. */ + MPEZoneLayout (MPEZone lower, MPEZone upper); - @see setZone - */ - MPEZoneLayout() noexcept; + /** Creates a layout with a single upper or lower zone, leaving the other zone uninitialised. */ + MPEZoneLayout (MPEZone singleZone); - /** Copy constuctor. - This will not copy the listeners registered to the MPEZoneLayout. - */ MPEZoneLayout (const MPEZoneLayout& other); - - /** Copy assignment operator. - This will not copy the listeners registered to the MPEZoneLayout. - */ MPEZoneLayout& operator= (const MPEZoneLayout& other); - //============================================================================== - /** - This struct represents an MPE zone. - - It can either be a lower or an upper zone, where: - - A lower zone encompasses master channel 1 and an arbitrary number of ascending - MIDI channels, increasing from channel 2. - - An upper zone encompasses master channel 16 and an arbitrary number of descending - MIDI channels, decreasing from channel 15. - - It also defines a pitchbend range (in semitones) to be applied for per-note pitchbends and - master pitchbends, respectively. - */ - struct Zone - { - Zone (const Zone& other) = default; - - bool isLowerZone() const noexcept { return lowerZone; } - bool isUpperZone() const noexcept { return ! lowerZone; } - - bool isActive() const noexcept { return numMemberChannels > 0; } + bool operator== (const MPEZoneLayout& other) const { return lowerZone == other.lowerZone && upperZone == other.upperZone; } + bool operator!= (const MPEZoneLayout& other) const { return ! operator== (other); } - int getMasterChannel() const noexcept { return lowerZone ? 1 : 16; } - int getFirstMemberChannel() const noexcept { return lowerZone ? 2 : 15; } - int getLastMemberChannel() const noexcept { return lowerZone ? (1 + numMemberChannels) - : (16 - numMemberChannels); } - - bool isUsingChannelAsMemberChannel (int channel) const noexcept - { - return lowerZone ? (channel > 1 && channel <= 1 + numMemberChannels) - : (channel < 16 && channel >= 16 - numMemberChannels); - } - - bool isUsing (int channel) const noexcept - { - return isUsingChannelAsMemberChannel (channel) || channel == getMasterChannel(); - } - - bool operator== (const Zone& other) const noexcept { return lowerZone == other.lowerZone - && numMemberChannels == other.numMemberChannels - && perNotePitchbendRange == other.perNotePitchbendRange - && masterPitchbendRange == other.masterPitchbendRange; } - - bool operator!= (const Zone& other) const noexcept { return ! operator== (other); } - - int numMemberChannels; - int perNotePitchbendRange; - int masterPitchbendRange; - - private: - friend class MPEZoneLayout; - - Zone (bool lower, int memberChans = 0, int perNotePb = 48, int masterPb = 2) noexcept - : numMemberChannels (memberChans), - perNotePitchbendRange (perNotePb), - masterPitchbendRange (masterPb), - lowerZone (lower) - { - } + //============================================================================== + /** Returns a struct representing the lower MPE zone. */ + MPEZone getLowerZone() const noexcept { return lowerZone; } - bool lowerZone; - }; + /** Returns a struct representing the upper MPE zone. */ + MPEZone getUpperZone() const noexcept { return upperZone; } /** Sets the lower zone of this layout. */ void setLowerZone (int numMemberChannels = 0, @@ -138,17 +154,14 @@ int perNotePitchbendRange = 48, int masterPitchbendRange = 2) noexcept; - /** Returns a struct representing the lower MPE zone. */ - const Zone getLowerZone() const noexcept { return lowerZone; } - - /** Returns a struct representing the upper MPE zone. */ - const Zone getUpperZone() const noexcept { return upperZone; } - /** Clears the lower and upper zones of this layout, making them both inactive and disabling MPE mode. */ void clearAllZones(); + /** Returns true if either of the zones are active. */ + bool isActive() const { return lowerZone.isActive() || upperZone.isActive(); } + //============================================================================== /** Pass incoming MIDI messages to an object of this class if you want the zone layout to properly react to MPE RPN messages like an @@ -200,10 +213,14 @@ /** Removes a listener. */ void removeListener (Listener* const listenerToRemove) noexcept; + #ifndef DOXYGEN + using Zone = MPEZone; + #endif + private: //============================================================================== - Zone lowerZone { true, 0 }; - Zone upperZone { false, 0 }; + MPEZone lowerZone { MPEZone::Type::lower, 0 }; + MPEZone upperZone { MPEZone::Type::upper, 0 }; MidiRPNDetector rpnDetector; ListenerList listeners; @@ -215,8 +232,8 @@ void processZoneLayoutRpnMessage (MidiRPNMessage); void processPitchbendRangeRpnMessage (MidiRPNMessage); - void updateMasterPitchbend (Zone&, int); - void updatePerNotePitchbendRange (Zone&, int); + void updateMasterPitchbend (MPEZone&, int); + void updatePerNotePitchbendRange (MPEZone&, int); void sendLayoutChangeMessage(); void checkAndLimitZoneParameters (int, int, int&) noexcept; diff -Nru juce-6.1.4~ds0/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp juce-6.1.5~ds0/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp --- juce-6.1.4~ds0/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp 2022-01-26 13:07:09.000000000 +0000 @@ -715,11 +715,7 @@ currentDeviceType = currentAudioDevice->getTypeName(); currentAudioDevice->start (callbackHandler.get()); - - currentSetup.sampleRate = currentAudioDevice->getCurrentSampleRate(); - currentSetup.bufferSize = currentAudioDevice->getCurrentBufferSizeSamples(); - currentSetup.inputChannels = currentAudioDevice->getActiveInputChannels(); - currentSetup.outputChannels = currentAudioDevice->getActiveOutputChannels(); + updateCurrentSetup(); for (int i = 0; i < availableDeviceTypes.size(); ++i) if (availableDeviceTypes.getUnchecked (i)->getTypeName() == currentDeviceType) @@ -965,6 +961,8 @@ loadMeasurer.reset (device->getCurrentSampleRate(), device->getCurrentBufferSizeSamples()); + updateCurrentSetup(); + { const ScopedLock sl (audioCallbackLock); @@ -972,7 +970,6 @@ callbacks.getUnchecked(i)->audioDeviceAboutToStart (device); } - updateCurrentSetup(); sendChangeMessage(); } @@ -1444,6 +1441,48 @@ enableInputChannels (manager); closeDeviceByRequestingEmptyNames (manager); } + + beginTest ("AudioDeviceManager updates its current settings before notifying callbacks when device restarts itself"); + { + AudioDeviceManager manager; + auto deviceType = std::make_unique ("foo", + StringArray { "foo in a", "foo in b" }, + StringArray { "foo out a", "foo out b" }); + auto* ptr = deviceType.get(); + manager.addAudioDeviceType (std::move (deviceType)); + + AudioDeviceManager::AudioDeviceSetup setup; + setup.sampleRate = 48000.0; + setup.bufferSize = 256; + setup.inputDeviceName = "foo in a"; + setup.outputDeviceName = "foo out a"; + setup.useDefaultInputChannels = true; + setup.useDefaultOutputChannels = true; + manager.setAudioDeviceSetup (setup, true); + + const auto currentSetup = manager.getAudioDeviceSetup(); + expectEquals (currentSetup.sampleRate, setup.sampleRate); + expectEquals (currentSetup.bufferSize, setup.bufferSize); + + MockCallback callback; + manager.addAudioCallback (&callback); + + constexpr auto newSr = 10000.0; + constexpr auto newBs = 1024; + auto numCalls = 0; + + // Compilers disagree about whether newSr and newBs need to be captured + callback.aboutToStart = [&] + { + ++numCalls; + const auto current = manager.getAudioDeviceSetup(); + expectEquals (current.sampleRate, newSr); + expectEquals (current.bufferSize, newBs); + }; + + ptr->restartDevices (newSr, newBs); + expectEquals (numCalls, 1); + } } private: @@ -1608,11 +1647,26 @@ const String mockBName = "mockB"; const String emptyName = "empty"; - class MockDevice : public AudioIODevice + struct Restartable + { + virtual ~Restartable() = default; + virtual void restart (double newSr, int newBs) = 0; + }; + + class MockDevice : public AudioIODevice, + private Restartable { public: - MockDevice (String typeNameIn, String outNameIn, String inNameIn) - : AudioIODevice ("mock", typeNameIn), outName (outNameIn), inName (inNameIn) {} + MockDevice (ListenerList& l, String typeNameIn, String outNameIn, String inNameIn) + : AudioIODevice ("mock", typeNameIn), listeners (l), outName (outNameIn), inName (inNameIn) + { + listeners.add (this); + } + + ~MockDevice() override + { + listeners.remove (this); + } StringArray getOutputChannelNames() override { return { "o1", "o2", "o3" }; } StringArray getInputChannelNames() override { return { "i1", "i2", "i3" }; } @@ -1634,8 +1688,19 @@ void close() override { on = false; } bool isOpen() override { return on; } - void start (AudioIODeviceCallback*) override { playing = true; } - void stop() override { playing = false; } + void start (AudioIODeviceCallback* c) override + { + callback = c; + callback->audioDeviceAboutToStart (this); + playing = true; + } + + void stop() override + { + playing = false; + callback->audioDeviceStopped(); + } + bool isPlaying() override { return playing; } String getLastError() override { return {}; } @@ -1650,6 +1715,16 @@ int getInputLatencyInSamples() override { return 0; } private: + void restart (double newSr, int newBs) override + { + stop(); + close(); + open (inChannels, outChannels, newSr, newBs); + start (callback); + } + + ListenerList& listeners; + AudioIODeviceCallback* callback = nullptr; String outName, inName; BigInteger outChannels, inChannels; double sampleRate = 0.0; @@ -1668,6 +1743,12 @@ inNames (std::move (inputNames)), outNames (std::move (outputNames)) {} + ~MockDeviceType() override + { + // A Device outlived its DeviceType! + jassert (listeners.isEmpty()); + } + void scanForDevices() override {} StringArray getDeviceNames (bool isInput) const override @@ -1687,15 +1768,37 @@ AudioIODevice* createDevice (const String& outputName, const String& inputName) override { if (inNames.contains (inputName) || outNames.contains (outputName)) - return new MockDevice (getTypeName(), outputName, inputName); + return new MockDevice (listeners, getTypeName(), outputName, inputName); return nullptr; } + // Call this to emulate the device restarting itself with new settings. + // This might happen e.g. when a user changes the ASIO settings. + void restartDevices (double newSr, int newBs) + { + listeners.call ([&] (auto& l) { return l.restart (newSr, newBs); }); + } + private: const StringArray& getNames (bool isInput) const { return isInput ? inNames : outNames; } const StringArray inNames, outNames; + ListenerList listeners; + }; + + class MockCallback : public AudioIODeviceCallback + { + public: + std::function callback; + std::function aboutToStart; + std::function stopped; + std::function error; + + void audioDeviceIOCallback (const float**, int, float**, int, int) override { NullCheckedInvocation::invoke (callback); } + void audioDeviceAboutToStart (AudioIODevice*) override { NullCheckedInvocation::invoke (aboutToStart); } + void audioDeviceStopped() override { NullCheckedInvocation::invoke (stopped); } + void audioDeviceError (const String&) override { NullCheckedInvocation::invoke (error); } }; void initialiseManager (AudioDeviceManager& manager) diff -Nru juce-6.1.4~ds0/modules/juce_audio_devices/juce_audio_devices.h juce-6.1.5~ds0/modules/juce_audio_devices/juce_audio_devices.h --- juce-6.1.4~ds0/modules/juce_audio_devices/juce_audio_devices.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_devices/juce_audio_devices.h 2022-01-26 13:07:09.000000000 +0000 @@ -32,7 +32,7 @@ ID: juce_audio_devices vendor: juce - version: 6.1.4 + version: 6.1.5 name: JUCE audio and MIDI I/O device classes description: Classes to play and record from audio and MIDI I/O devices website: http://www.juce.com/juce diff -Nru juce-6.1.4~ds0/modules/juce_audio_devices/native/juce_linux_ALSA.cpp juce-6.1.5~ds0/modules/juce_audio_devices/native/juce_linux_ALSA.cpp --- juce-6.1.4~ds0/modules/juce_audio_devices/native/juce_linux_ALSA.cpp 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_devices/native/juce_linux_ALSA.cpp 2022-01-26 13:07:09.000000000 +0000 @@ -50,7 +50,7 @@ static void getDeviceSampleRates (snd_pcm_t* handle, Array& rates) { - const int ratesToTry[] = { 22050, 32000, 44100, 48000, 88200, 96000, 176400, 192000, 0 }; + const int ratesToTry[] = { 22050, 24000, 32000, 44100, 48000, 88200, 96000, 176400, 192000, 0 }; snd_pcm_hw_params_t* hwParams; snd_pcm_hw_params_alloca (&hwParams); diff -Nru juce-6.1.4~ds0/modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp juce-6.1.5~ds0/modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp --- juce-6.1.4~ds0/modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp 2022-01-26 13:07:09.000000000 +0000 @@ -294,7 +294,7 @@ if (OK (AudioObjectGetPropertyData (deviceID, &pa, 0, nullptr, &size, ranges))) { - for (auto r : { 8000, 11025, 16000, 22050, 32000, + for (auto r : { 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000, 705600, 768000 }) { @@ -683,10 +683,14 @@ { const ScopedLock sl (callbackLock); - if (! started) + if (callback == nullptr && callbackToNotify != nullptr) { - callback = nullptr; + callback = callbackToNotify; + callback->audioDeviceAboutToStart (&owner); + } + if (! started) + { if (deviceID != 0) { if (OK (AudioDeviceCreateIOProcID (deviceID, audioIOProc, this, &audioProcID))) @@ -702,14 +706,6 @@ } } } - - if (started) - { - callback = callbackToNotify; - - if (callback != nullptr) - callback->audioDeviceAboutToStart (&owner); - } } playing = started && callback != nullptr; diff -Nru juce-6.1.4~ds0/modules/juce_audio_devices/native/juce_win32_ASIO.cpp juce-6.1.5~ds0/modules/juce_audio_devices/native/juce_win32_ASIO.cpp --- juce-6.1.4~ds0/modules/juce_audio_devices/native/juce_win32_ASIO.cpp 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_devices/native/juce_win32_ASIO.cpp 2022-01-26 13:07:09.000000000 +0000 @@ -350,7 +350,7 @@ if (asioObject != nullptr) { - for (auto rate : { 8000, 11025, 16000, 22050, 32000, + for (auto rate : { 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000, 705600, 768000 }) if (asioObject->canSampleRate ((double) rate) == 0) diff -Nru juce-6.1.4~ds0/modules/juce_audio_devices/native/juce_win32_WASAPI.cpp juce-6.1.5~ds0/modules/juce_audio_devices/native/juce_win32_WASAPI.cpp --- juce-6.1.4~ds0/modules/juce_audio_devices/native/juce_win32_WASAPI.cpp 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_devices/native/juce_win32_WASAPI.cpp 2022-01-26 13:07:09.000000000 +0000 @@ -336,7 +336,28 @@ JUCE_COMCALL UnregisterAudioSessionNotification (IAudioSessionEvents*) = 0; }; +} // namespace juce + +#ifdef __CRT_UUID_DECL +__CRT_UUID_DECL (juce::IPropertyStore, 0x886d8eeb, 0x8cf2, 0x4446, 0x8d, 0x02, 0xcd, 0xba, 0x1d, 0xbd, 0xcf, 0x99) +__CRT_UUID_DECL (juce::IMMDevice, 0xD666063F, 0x1587, 0x4E43, 0x81, 0xF1, 0xB9, 0x48, 0xE8, 0x07, 0x36, 0x3F) +__CRT_UUID_DECL (juce::IMMEndpoint, 0x1BE09788, 0x6894, 0x4089, 0x85, 0x86, 0x9A, 0x2A, 0x6C, 0x26, 0x5A, 0xC5) +__CRT_UUID_DECL (juce::IMMNotificationClient, 0x7991EEC9, 0x7E89, 0x4D85, 0x83, 0x90, 0x6C, 0x70, 0x3C, 0xEC, 0x60, 0xC0) +__CRT_UUID_DECL (juce::IMMDeviceEnumerator, 0xA95664D2, 0x9614, 0x4F35, 0xA7, 0x46, 0xDE, 0x8D, 0xB6, 0x36, 0x17, 0xE6) +__CRT_UUID_DECL (juce::MMDeviceEnumerator, 0xBCDE0395, 0xE52F, 0x467C, 0x8E, 0x3D, 0xC4, 0x57, 0x92, 0x91, 0x69, 0x2E) +__CRT_UUID_DECL (juce::IAudioClient, 0x1CB9AD4C, 0xDBFA, 0x4c32, 0xB1, 0x78, 0xC2, 0xF5, 0x68, 0xA7, 0x03, 0xB2) +__CRT_UUID_DECL (juce::IAudioClient2, 0x726778CD, 0xF60A, 0x4eda, 0x82, 0xDE, 0xE4, 0x76, 0x10, 0xCD, 0x78, 0xAA) +__CRT_UUID_DECL (juce::IAudioClient3, 0x1CB9AD4C, 0xDBFA, 0x4c32, 0xB1, 0x78, 0xC2, 0xF5, 0x68, 0xA7, 0x03, 0xB2) +__CRT_UUID_DECL (juce::IAudioCaptureClient, 0xC8ADBD64, 0xE71E, 0x48a0, 0xA4, 0xDE, 0x18, 0x5C, 0x39, 0x5C, 0xD3, 0x17) +__CRT_UUID_DECL (juce::IAudioRenderClient, 0xF294ACFC, 0x3146, 0x4483, 0xA7, 0xBF, 0xAD, 0xDC, 0xA7, 0xC2, 0x60, 0xE2) +__CRT_UUID_DECL (juce::IAudioEndpointVolume, 0x5CDF2C82, 0x841E, 0x4546, 0x97, 0x22, 0x0C, 0xF7, 0x40, 0x78, 0x22, 0x9A) +__CRT_UUID_DECL (juce::IAudioSessionEvents, 0x24918ACC, 0x64B3, 0x37C1, 0x8C, 0xA9, 0x74, 0xA6, 0x6E, 0x99, 0x57, 0xA8) +__CRT_UUID_DECL (juce::IAudioSessionControl, 0xF4B1A599, 0x7266, 0x4319, 0xA8, 0xCA, 0xE7, 0x0A, 0xCB, 0x11, 0xE8, 0xCD) +#endif + //============================================================================== +namespace juce +{ namespace WasapiClasses { @@ -655,7 +676,7 @@ void querySupportedSampleRates (WAVEFORMATEXTENSIBLE format, ComSmartPtr& audioClient) { - for (auto rate : { 8000, 11025, 16000, 22050, 32000, + for (auto rate : { 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000, 705600, 768000 }) { diff -Nru juce-6.1.4~ds0/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp juce-6.1.5~ds0/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp --- juce-6.1.4~ds0/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp 2022-01-26 13:07:09.000000000 +0000 @@ -26,6 +26,24 @@ namespace juce { +using StringMap = std::unordered_map; + +static auto toMap (const StringPairArray& array) +{ + StringMap result; + + for (auto i = 0; i < array.size(); ++i) + result[array.getAllKeys()[i]] = array.getAllValues()[i]; + + return result; +} + +static auto getValueWithDefault (const StringMap& m, const String& key, const String& fallback = {}) +{ + const auto iter = m.find (key); + return iter != m.cend() ? iter->second : fallback; +} + static const char* const wavFormatName = "WAV file"; //============================================================================== @@ -177,43 +195,42 @@ uint8 reserved[190]; char codingHistory[1]; - void copyTo (StringPairArray& values, const int totalSize) const + void copyTo (StringMap& values, const int totalSize) const { - values.set (WavAudioFormat::bwavDescription, String::fromUTF8 (description, sizeof (description))); - values.set (WavAudioFormat::bwavOriginator, String::fromUTF8 (originator, sizeof (originator))); - values.set (WavAudioFormat::bwavOriginatorRef, String::fromUTF8 (originatorRef, sizeof (originatorRef))); - values.set (WavAudioFormat::bwavOriginationDate, String::fromUTF8 (originationDate, sizeof (originationDate))); - values.set (WavAudioFormat::bwavOriginationTime, String::fromUTF8 (originationTime, sizeof (originationTime))); + values[WavAudioFormat::bwavDescription] = String::fromUTF8 (description, sizeof (description)); + values[WavAudioFormat::bwavOriginator] = String::fromUTF8 (originator, sizeof (originator)); + values[WavAudioFormat::bwavOriginatorRef] = String::fromUTF8 (originatorRef, sizeof (originatorRef)); + values[WavAudioFormat::bwavOriginationDate] = String::fromUTF8 (originationDate, sizeof (originationDate)); + values[WavAudioFormat::bwavOriginationTime] = String::fromUTF8 (originationTime, sizeof (originationTime)); auto timeLow = ByteOrder::swapIfBigEndian (timeRefLow); auto timeHigh = ByteOrder::swapIfBigEndian (timeRefHigh); auto time = (((int64) timeHigh) << 32) + timeLow; - values.set (WavAudioFormat::bwavTimeReference, String (time)); - values.set (WavAudioFormat::bwavCodingHistory, - String::fromUTF8 (codingHistory, totalSize - (int) offsetof (BWAVChunk, codingHistory))); + values[WavAudioFormat::bwavTimeReference] = String (time); + values[WavAudioFormat::bwavCodingHistory] = String::fromUTF8 (codingHistory, totalSize - (int) offsetof (BWAVChunk, codingHistory)); } - static MemoryBlock createFrom (const StringPairArray& values) + static MemoryBlock createFrom (const StringMap& values) { - MemoryBlock data (roundUpSize (sizeof (BWAVChunk) + values[WavAudioFormat::bwavCodingHistory].getNumBytesAsUTF8())); + MemoryBlock data (roundUpSize (sizeof (BWAVChunk) + getValueWithDefault (values, WavAudioFormat::bwavCodingHistory).getNumBytesAsUTF8())); data.fillWith (0); auto* b = (BWAVChunk*) data.getData(); // Allow these calls to overwrite an extra byte at the end, which is fine as long - // as they get called in the right order.. - values[WavAudioFormat::bwavDescription] .copyToUTF8 (b->description, 257); - values[WavAudioFormat::bwavOriginator] .copyToUTF8 (b->originator, 33); - values[WavAudioFormat::bwavOriginatorRef] .copyToUTF8 (b->originatorRef, 33); - values[WavAudioFormat::bwavOriginationDate].copyToUTF8 (b->originationDate, 11); - values[WavAudioFormat::bwavOriginationTime].copyToUTF8 (b->originationTime, 9); + // as they get called in the right order. + getValueWithDefault (values, WavAudioFormat::bwavDescription) .copyToUTF8 (b->description, 257); + getValueWithDefault (values, WavAudioFormat::bwavOriginator) .copyToUTF8 (b->originator, 33); + getValueWithDefault (values, WavAudioFormat::bwavOriginatorRef) .copyToUTF8 (b->originatorRef, 33); + getValueWithDefault (values, WavAudioFormat::bwavOriginationDate).copyToUTF8 (b->originationDate, 11); + getValueWithDefault (values, WavAudioFormat::bwavOriginationTime).copyToUTF8 (b->originationTime, 9); - auto time = values[WavAudioFormat::bwavTimeReference].getLargeIntValue(); + auto time = getValueWithDefault (values, WavAudioFormat::bwavTimeReference).getLargeIntValue(); b->timeRefLow = ByteOrder::swapIfBigEndian ((uint32) (time & 0xffffffff)); b->timeRefHigh = ByteOrder::swapIfBigEndian ((uint32) (time >> 32)); - values[WavAudioFormat::bwavCodingHistory].copyToUTF8 (b->codingHistory, 0x7fffffff); + getValueWithDefault (values, WavAudioFormat::bwavCodingHistory).copyToUTF8 (b->codingHistory, 0x7fffffff); if (b->description[0] != 0 || b->originator[0] != 0 @@ -270,17 +287,17 @@ SampleLoop loops[1]; template - static void setValue (StringPairArray& values, NameType name, uint32 val) + static void setValue (StringMap& values, NameType name, uint32 val) { - values.set (name, String (ByteOrder::swapIfBigEndian (val))); + values[name] = String (ByteOrder::swapIfBigEndian (val)); } - static void setValue (StringPairArray& values, int prefix, const char* name, uint32 val) + static void setValue (StringMap& values, int prefix, const char* name, uint32 val) { setValue (values, "Loop" + String (prefix) + name, val); } - void copyTo (StringPairArray& values, const int totalSize) const + void copyTo (StringMap& values, const int totalSize) const { setValue (values, "Manufacturer", manufacturer); setValue (values, "Product", product); @@ -307,20 +324,20 @@ } template - static uint32 getValue (const StringPairArray& values, NameType name, const char* def) + static uint32 getValue (const StringMap& values, NameType name, const char* def) { - return ByteOrder::swapIfBigEndian ((uint32) values.getValue (name, def).getIntValue()); + return ByteOrder::swapIfBigEndian ((uint32) getValueWithDefault (values, name, def).getIntValue()); } - static uint32 getValue (const StringPairArray& values, int prefix, const char* name, const char* def) + static uint32 getValue (const StringMap& values, int prefix, const char* name, const char* def) { return getValue (values, "Loop" + String (prefix) + name, def); } - static MemoryBlock createFrom (const StringPairArray& values) + static MemoryBlock createFrom (const StringMap& values) { MemoryBlock data; - auto numLoops = jmin (64, values.getValue ("NumSampleLoops", "0").getIntValue()); + auto numLoops = jmin (64, getValueWithDefault (values, "NumSampleLoops", "0").getIntValue()); data.setSize (roundUpSize (sizeof (SMPLChunk) + (size_t) (jmax (0, numLoops - 1)) * sizeof (SampleLoop)), true); @@ -362,12 +379,12 @@ int8 lowVelocity; int8 highVelocity; - static void setValue (StringPairArray& values, const char* name, int val) + static void setValue (StringMap& values, const char* name, int val) { - values.set (name, String (val)); + values[name] = String (val); } - void copyTo (StringPairArray& values) const + void copyTo (StringMap& values) const { setValue (values, "MidiUnityNote", baseNote); setValue (values, "Detune", detune); @@ -378,17 +395,17 @@ setValue (values, "HighVelocity", highVelocity); } - static int8 getValue (const StringPairArray& values, const char* name, const char* def) + static int8 getValue (const StringMap& values, const char* name, const char* def) { - return (int8) values.getValue (name, def).getIntValue(); + return (int8) getValueWithDefault (values, name, def).getIntValue(); } - static MemoryBlock createFrom (const StringPairArray& values) + static MemoryBlock createFrom (const StringMap& values) { MemoryBlock data; - auto& keys = values.getAllKeys(); - if (keys.contains ("LowNote", true) && keys.contains ("HighNote", true)) + if ( values.find ("LowNote") != values.cend() + && values.find ("HighNote") != values.cend()) { data.setSize (8, true); auto* inst = static_cast (data.getData()); @@ -422,14 +439,14 @@ uint32 numCues; Cue cues[1]; - static void setValue (StringPairArray& values, int prefix, const char* name, uint32 val) + static void setValue (StringMap& values, int prefix, const char* name, uint32 val) { - values.set ("Cue" + String (prefix) + name, String (ByteOrder::swapIfBigEndian (val))); + values["Cue" + String (prefix) + name] = String (ByteOrder::swapIfBigEndian (val)); } - void copyTo (StringPairArray& values, const int totalSize) const + void copyTo (StringMap& values, const int totalSize) const { - values.set ("NumCuePoints", String (ByteOrder::swapIfBigEndian (numCues))); + values["NumCuePoints"] = String (ByteOrder::swapIfBigEndian (numCues)); for (int i = 0; i < (int) numCues; ++i) { @@ -445,10 +462,10 @@ } } - static MemoryBlock createFrom (const StringPairArray& values) + static MemoryBlock createFrom (const StringMap& values) { MemoryBlock data; - const int numCues = values.getValue ("NumCuePoints", "0").getIntValue(); + const int numCues = getValueWithDefault (values, "NumCuePoints", "0").getIntValue(); if (numCues > 0) { @@ -468,23 +485,23 @@ for (int i = 0; i < numCues; ++i) { auto prefix = "Cue" + String (i); - auto identifier = (uint32) values.getValue (prefix + "Identifier", "0").getIntValue(); + auto identifier = (uint32) getValueWithDefault (values, prefix + "Identifier", "0").getIntValue(); #if JUCE_DEBUG jassert (! identifiers.contains (identifier)); identifiers.add (identifier); #endif - auto order = values.getValue (prefix + "Order", String (nextOrder)).getIntValue(); + auto order = getValueWithDefault (values, prefix + "Order", String (nextOrder)).getIntValue(); nextOrder = jmax (nextOrder, order) + 1; auto& cue = c->cues[i]; cue.identifier = ByteOrder::swapIfBigEndian ((uint32) identifier); cue.order = ByteOrder::swapIfBigEndian ((uint32) order); - cue.chunkID = ByteOrder::swapIfBigEndian ((uint32) values.getValue (prefix + "ChunkID", dataChunkID).getIntValue()); - cue.chunkStart = ByteOrder::swapIfBigEndian ((uint32) values.getValue (prefix + "ChunkStart", "0").getIntValue()); - cue.blockStart = ByteOrder::swapIfBigEndian ((uint32) values.getValue (prefix + "BlockStart", "0").getIntValue()); - cue.offset = ByteOrder::swapIfBigEndian ((uint32) values.getValue (prefix + "Offset", "0").getIntValue()); + cue.chunkID = ByteOrder::swapIfBigEndian ((uint32) getValueWithDefault (values, prefix + "ChunkID", dataChunkID).getIntValue()); + cue.chunkStart = ByteOrder::swapIfBigEndian ((uint32) getValueWithDefault (values, prefix + "ChunkStart", "0").getIntValue()); + cue.blockStart = ByteOrder::swapIfBigEndian ((uint32) getValueWithDefault (values, prefix + "BlockStart", "0").getIntValue()); + cue.offset = ByteOrder::swapIfBigEndian ((uint32) getValueWithDefault (values, prefix + "Offset", "0").getIntValue()); } } @@ -496,20 +513,20 @@ //============================================================================== namespace ListChunk { - static int getValue (const StringPairArray& values, const String& name) + static int getValue (const StringMap& values, const String& name) { - return values.getValue (name, "0").getIntValue(); + return getValueWithDefault (values, name, "0").getIntValue(); } - static int getValue (const StringPairArray& values, const String& prefix, const char* name) + static int getValue (const StringMap& values, const String& prefix, const char* name) { return getValue (values, prefix + name); } - static void appendLabelOrNoteChunk (const StringPairArray& values, const String& prefix, + static void appendLabelOrNoteChunk (const StringMap& values, const String& prefix, const int chunkType, MemoryOutputStream& out) { - auto label = values.getValue (prefix + "Text", prefix); + auto label = getValueWithDefault (values, prefix + "Text", prefix); auto labelLength = (int) label.getNumBytesAsUTF8() + 1; auto chunkLength = 4 + labelLength + (labelLength & 1); @@ -522,9 +539,9 @@ out.writeByte (0); } - static void appendExtraChunk (const StringPairArray& values, const String& prefix, MemoryOutputStream& out) + static void appendExtraChunk (const StringMap& values, const String& prefix, MemoryOutputStream& out) { - auto text = values.getValue (prefix + "Text", prefix); + auto text = getValueWithDefault (values, prefix + "Text", prefix); auto textLength = (int) text.getNumBytesAsUTF8() + 1; // include null terminator auto chunkLength = textLength + 20 + (textLength & 1); @@ -544,7 +561,7 @@ out.writeByte (0); } - static MemoryBlock createFrom (const StringPairArray& values) + static MemoryBlock createFrom (const StringMap& values) { auto numCueLabels = getValue (values, "NumCueLabels"); auto numCueNotes = getValue (values, "NumCueNotes"); @@ -668,7 +685,7 @@ return true; } - static void addToMetadata (StringPairArray& values, InputStream& input, int64 chunkEnd) + static void addToMetadata (StringMap& values, InputStream& input, int64 chunkEnd) { while (input.getPosition() < chunkEnd) { @@ -688,8 +705,8 @@ { MemoryBlock mb; input.readIntoMemoryBlock (mb, (ssize_t) infoLength); - values.set (type, String::createStringFromData ((const char*) mb.getData(), - (int) mb.getSize())); + values[type] = String::createStringFromData ((const char*) mb.getData(), + (int) mb.getSize()); break; } } @@ -697,9 +714,9 @@ } } - static bool writeValue (const StringPairArray& values, MemoryOutputStream& out, const char* paramName) + static bool writeValue (const StringMap& values, MemoryOutputStream& out, const char* paramName) { - auto value = values.getValue (paramName, {}); + auto value = getValueWithDefault (values, paramName, {}); if (value.isEmpty()) return false; @@ -717,7 +734,7 @@ return true; } - static MemoryBlock createFrom (const StringPairArray& values) + static MemoryBlock createFrom (const StringMap& values) { MemoryOutputStream out; out.writeInt (chunkName ("INFO")); @@ -741,7 +758,7 @@ input.read (this, (int) jmin (sizeof (*this), length)); } - AcidChunk (const StringPairArray& values) + AcidChunk (const StringMap& values) { zerostruct (*this); @@ -751,18 +768,20 @@ | getFlagIfPresent (values, WavAudioFormat::acidDiskBased, 0x08) | getFlagIfPresent (values, WavAudioFormat::acidizerFlag, 0x10); - if (values[WavAudioFormat::acidRootSet].getIntValue() != 0) - rootNote = ByteOrder::swapIfBigEndian ((uint16) values[WavAudioFormat::acidRootNote].getIntValue()); + if (getValueWithDefault (values, WavAudioFormat::acidRootSet).getIntValue() != 0) + rootNote = ByteOrder::swapIfBigEndian ((uint16) getValueWithDefault (values, WavAudioFormat::acidRootNote).getIntValue()); - numBeats = ByteOrder::swapIfBigEndian ((uint32) values[WavAudioFormat::acidBeats].getIntValue()); - meterDenominator = ByteOrder::swapIfBigEndian ((uint16) values[WavAudioFormat::acidDenominator].getIntValue()); - meterNumerator = ByteOrder::swapIfBigEndian ((uint16) values[WavAudioFormat::acidNumerator].getIntValue()); + numBeats = ByteOrder::swapIfBigEndian ((uint32) getValueWithDefault (values, WavAudioFormat::acidBeats).getIntValue()); + meterDenominator = ByteOrder::swapIfBigEndian ((uint16) getValueWithDefault (values, WavAudioFormat::acidDenominator).getIntValue()); + meterNumerator = ByteOrder::swapIfBigEndian ((uint16) getValueWithDefault (values, WavAudioFormat::acidNumerator).getIntValue()); - if (values.containsKey (WavAudioFormat::acidTempo)) - tempo = swapFloatByteOrder (values[WavAudioFormat::acidTempo].getFloatValue()); + const auto iter = values.find (WavAudioFormat::acidTempo); + + if (iter != values.cend()) + tempo = swapFloatByteOrder (iter->second.getFloatValue()); } - static MemoryBlock createFrom (const StringPairArray& values) + static MemoryBlock createFrom (const StringMap& values) { return AcidChunk (values).toMemoryBlock(); } @@ -773,7 +792,7 @@ ? MemoryBlock (this, sizeof (*this)) : MemoryBlock(); } - void addToMetadata (StringPairArray& values) const + void addToMetadata (StringMap& values) const { setBoolFlag (values, WavAudioFormat::acidOneShot, 0x01); setBoolFlag (values, WavAudioFormat::acidRootSet, 0x02); @@ -782,22 +801,22 @@ setBoolFlag (values, WavAudioFormat::acidizerFlag, 0x10); if (flags & 0x02) // root note set - values.set (WavAudioFormat::acidRootNote, String (ByteOrder::swapIfBigEndian (rootNote))); + values[WavAudioFormat::acidRootNote] = String (ByteOrder::swapIfBigEndian (rootNote)); - values.set (WavAudioFormat::acidBeats, String (ByteOrder::swapIfBigEndian (numBeats))); - values.set (WavAudioFormat::acidDenominator, String (ByteOrder::swapIfBigEndian (meterDenominator))); - values.set (WavAudioFormat::acidNumerator, String (ByteOrder::swapIfBigEndian (meterNumerator))); - values.set (WavAudioFormat::acidTempo, String (swapFloatByteOrder (tempo))); + values[WavAudioFormat::acidBeats] = String (ByteOrder::swapIfBigEndian (numBeats)); + values[WavAudioFormat::acidDenominator] = String (ByteOrder::swapIfBigEndian (meterDenominator)); + values[WavAudioFormat::acidNumerator] = String (ByteOrder::swapIfBigEndian (meterNumerator)); + values[WavAudioFormat::acidTempo] = String (swapFloatByteOrder (tempo)); } - void setBoolFlag (StringPairArray& values, const char* name, uint32 mask) const + void setBoolFlag (StringMap& values, const char* name, uint32 mask) const { - values.set (name, (flags & ByteOrder::swapIfBigEndian (mask)) ? "1" : "0"); + values[name] = (flags & ByteOrder::swapIfBigEndian (mask)) ? "1" : "0"; } - static uint32 getFlagIfPresent (const StringPairArray& values, const char* name, uint32 flag) + static uint32 getFlagIfPresent (const StringMap& values, const char* name, uint32 flag) { - return values[name].getIntValue() != 0 ? ByteOrder::swapIfBigEndian (flag) : 0; + return getValueWithDefault (values, name).getIntValue() != 0 ? ByteOrder::swapIfBigEndian (flag) : 0; } static float swapFloatByteOrder (const float x) noexcept @@ -826,10 +845,10 @@ //============================================================================== struct TracktionChunk { - static MemoryBlock createFrom (const StringPairArray& values) + static MemoryBlock createFrom (const StringMap& values) { MemoryOutputStream out; - auto s = values[WavAudioFormat::tracktionLoopInfo]; + auto s = getValueWithDefault (values, WavAudioFormat::tracktionLoopInfo); if (s.isNotEmpty()) { @@ -846,7 +865,7 @@ //============================================================================== namespace AXMLChunk { - static void addToMetadata (StringPairArray& destValues, const String& source) + static void addToMetadata (StringMap& destValues, const String& source) { if (auto xml = parseXML (source)) { @@ -861,7 +880,7 @@ auto ISRCCode = xml4->getAllSubText().fromFirstOccurrenceOf ("ISRC:", false, true); if (ISRCCode.isNotEmpty()) - destValues.set (WavAudioFormat::ISRC, ISRCCode); + destValues[WavAudioFormat::ISRC] = ISRCCode; } } } @@ -869,9 +888,9 @@ } } - static MemoryBlock createFrom (const StringPairArray& values) + static MemoryBlock createFrom (const StringMap& values) { - auto ISRC = values.getValue (WavAudioFormat::ISRC, {}); + auto ISRC = getValueWithDefault (values, WavAudioFormat::ISRC); MemoryOutputStream xml; if (ISRC.isNotEmpty()) @@ -941,6 +960,8 @@ int cueLabelIndex = 0; int cueRegionIndex = 0; + StringMap dict; + auto streamStartPos = input->getPosition(); auto firstChunkType = input->readInt(); @@ -1019,7 +1040,7 @@ { input->skipNextBytes (4); // skip over size and bitsPerSample auto channelMask = input->readInt(); - metadataValues.set ("ChannelMask", String (channelMask)); + dict["ChannelMask"] = String (channelMask); channelLayout = getChannelLayoutFromMask (channelMask, numChannels); ExtensibleWavSubFormat subFormat; @@ -1074,34 +1095,34 @@ HeapBlock bwav; bwav.calloc (jmax ((size_t) length + 1, sizeof (BWAVChunk)), 1); input->read (bwav, (int) length); - bwav->copyTo (metadataValues, (int) length); + bwav->copyTo (dict, (int) length); } else if (chunkType == chunkName ("smpl")) { HeapBlock smpl; smpl.calloc (jmax ((size_t) length + 1, sizeof (SMPLChunk)), 1); input->read (smpl, (int) length); - smpl->copyTo (metadataValues, (int) length); + smpl->copyTo (dict, (int) length); } else if (chunkType == chunkName ("inst") || chunkType == chunkName ("INST")) // need to check which... { HeapBlock inst; inst.calloc (jmax ((size_t) length + 1, sizeof (InstChunk)), 1); input->read (inst, (int) length); - inst->copyTo (metadataValues); + inst->copyTo (dict); } else if (chunkType == chunkName ("cue ")) { HeapBlock cue; cue.calloc (jmax ((size_t) length + 1, sizeof (CueChunk)), 1); input->read (cue, (int) length); - cue->copyTo (metadataValues, (int) length); + cue->copyTo (dict, (int) length); } else if (chunkType == chunkName ("axml")) { MemoryBlock axml; input->readIntoMemoryBlock (axml, (ssize_t) length); - AXMLChunk::addToMetadata (metadataValues, axml.toString()); + AXMLChunk::addToMetadata (dict, axml.toString()); } else if (chunkType == chunkName ("LIST")) { @@ -1109,7 +1130,7 @@ if (subChunkType == chunkName ("info") || subChunkType == chunkName ("INFO")) { - ListInfoChunk::addToMetadata (metadataValues, *input, chunkEnd); + ListInfoChunk::addToMetadata (dict, *input, chunkEnd); } else if (subChunkType == chunkName ("adtl")) { @@ -1134,8 +1155,8 @@ MemoryBlock textBlock; input->readIntoMemoryBlock (textBlock, stringLength); - metadataValues.set (prefix + "Identifier", String (identifier)); - metadataValues.set (prefix + "Text", textBlock.toString()); + dict[prefix + "Identifier"] = String (identifier); + dict[prefix + "Text"] = textBlock.toString(); } else if (adtlChunkType == chunkName ("ltxt")) { @@ -1152,14 +1173,14 @@ MemoryBlock textBlock; input->readIntoMemoryBlock (textBlock, (int) stringLength); - metadataValues.set (prefix + "Identifier", String (identifier)); - metadataValues.set (prefix + "SampleLength", String (sampleLength)); - metadataValues.set (prefix + "Purpose", String (purpose)); - metadataValues.set (prefix + "Country", String (country)); - metadataValues.set (prefix + "Language", String (language)); - metadataValues.set (prefix + "Dialect", String (dialect)); - metadataValues.set (prefix + "CodePage", String (codePage)); - metadataValues.set (prefix + "Text", textBlock.toString()); + dict[prefix + "Identifier"] = String (identifier); + dict[prefix + "SampleLength"] = String (sampleLength); + dict[prefix + "Purpose"] = String (purpose); + dict[prefix + "Country"] = String (country); + dict[prefix + "Language"] = String (language); + dict[prefix + "Dialect"] = String (dialect); + dict[prefix + "CodePage"] = String (codePage); + dict[prefix + "Text"] = textBlock.toString(); } input->setPosition (adtlChunkEnd); @@ -1168,13 +1189,13 @@ } else if (chunkType == chunkName ("acid")) { - AcidChunk (*input, length).addToMetadata (metadataValues); + AcidChunk (*input, length).addToMetadata (dict); } else if (chunkType == chunkName ("Trkn")) { MemoryBlock tracktion; input->readIntoMemoryBlock (tracktion, (ssize_t) length); - metadataValues.set (WavAudioFormat::tracktionLoopInfo, tracktion.toString()); + dict[WavAudioFormat::tracktionLoopInfo] = tracktion.toString(); } else if (chunkEnd <= input->getPosition()) { @@ -1185,10 +1206,12 @@ } } - if (cueLabelIndex > 0) metadataValues.set ("NumCueLabels", String (cueLabelIndex)); - if (cueNoteIndex > 0) metadataValues.set ("NumCueNotes", String (cueNoteIndex)); - if (cueRegionIndex > 0) metadataValues.set ("NumCueRegions", String (cueRegionIndex)); - if (metadataValues.size() > 0) metadataValues.set ("MetaDataSource", "WAV"); + if (cueLabelIndex > 0) dict["NumCueLabels"] = String (cueLabelIndex); + if (cueNoteIndex > 0) dict["NumCueNotes"] = String (cueNoteIndex); + if (cueRegionIndex > 0) dict["NumCueRegions"] = String (cueRegionIndex); + if (dict.size() > 0) dict["MetaDataSource"] = "WAV"; + + metadataValues.addUnorderedMap (dict); } //============================================================================== @@ -1312,15 +1335,17 @@ // key should be removed (or set to "WAV") once this has been done jassert (metadataValues.getValue ("MetaDataSource", "None") != "AIFF"); - bwavChunk = BWAVChunk::createFrom (metadataValues); - axmlChunk = AXMLChunk::createFrom (metadataValues); - smplChunk = SMPLChunk::createFrom (metadataValues); - instChunk = InstChunk::createFrom (metadataValues); - cueChunk = CueChunk ::createFrom (metadataValues); - listChunk = ListChunk::createFrom (metadataValues); - listInfoChunk = ListInfoChunk::createFrom (metadataValues); - acidChunk = AcidChunk::createFrom (metadataValues); - trckChunk = TracktionChunk::createFrom (metadataValues); + const auto map = toMap (metadataValues); + + bwavChunk = BWAVChunk::createFrom (map); + axmlChunk = AXMLChunk::createFrom (map); + smplChunk = SMPLChunk::createFrom (map); + instChunk = InstChunk::createFrom (map); + cueChunk = CueChunk ::createFrom (map); + listChunk = ListChunk::createFrom (map); + listInfoChunk = ListInfoChunk::createFrom (map); + acidChunk = AcidChunk::createFrom (map); + trckChunk = TracktionChunk::createFrom (map); } headerPosition = out->getPosition(); @@ -1792,7 +1817,7 @@ if (bwavSize > 0) { - auto chunk = BWAVChunk::createFrom (newMetadata); + auto chunk = BWAVChunk::createFrom (toMap (newMetadata)); if (chunk.getSize() <= (size_t) bwavSize) { @@ -1834,31 +1859,34 @@ { beginTest ("Setting up metadata"); - StringPairArray metadataValues = WavAudioFormat::createBWAVMetadata ("description", - "originator", - "originatorRef", - Time::getCurrentTime(), - numTestAudioBufferSamples, - "codingHistory"); + auto metadataValues = toMap (WavAudioFormat::createBWAVMetadata ("description", + "originator", + "originatorRef", + Time::getCurrentTime(), + numTestAudioBufferSamples, + "codingHistory")); for (int i = numElementsInArray (WavFileHelpers::ListInfoChunk::types); --i >= 0;) - metadataValues.set (WavFileHelpers::ListInfoChunk::types[i], - WavFileHelpers::ListInfoChunk::types[i]); + metadataValues[WavFileHelpers::ListInfoChunk::types[i]] = WavFileHelpers::ListInfoChunk::types[i]; if (metadataValues.size() > 0) - metadataValues.set ("MetaDataSource", "WAV"); + metadataValues["MetaDataSource"] = "WAV"; - metadataValues.addArray (createDefaultSMPLMetadata()); + const auto smplMetadata = createDefaultSMPLMetadata(); + metadataValues.insert (smplMetadata.cbegin(), smplMetadata.cend()); WavAudioFormat format; MemoryBlock memoryBlock; + StringPairArray metadataArray; + metadataArray.addUnorderedMap (metadataValues); + { beginTest ("Creating a basic wave writer"); std::unique_ptr writer (format.createWriterFor (new MemoryOutputStream (memoryBlock, false), 44100.0, numTestAudioBufferChannels, - 32, metadataValues, 0)); + 32, metadataArray, 0)); expect (writer != nullptr); AudioBuffer buffer (numTestAudioBufferChannels, numTestAudioBufferSamples); @@ -1873,7 +1901,7 @@ std::unique_ptr reader (format.createReaderFor (new MemoryInputStream (memoryBlock, false), false)); expect (reader != nullptr); - expect (reader->metadataValues == metadataValues, "Somehow, the metadata is different!"); + expect (reader->metadataValues == metadataArray, "Somehow, the metadata is different!"); } } @@ -1884,19 +1912,19 @@ numTestAudioBufferSamples = 256 }; - StringPairArray createDefaultSMPLMetadata() const + static StringMap createDefaultSMPLMetadata() { - StringPairArray m; + StringMap m; - m.set ("Manufacturer", "0"); - m.set ("Product", "0"); - m.set ("SamplePeriod", "0"); - m.set ("MidiUnityNote", "60"); - m.set ("MidiPitchFraction", "0"); - m.set ("SmpteFormat", "0"); - m.set ("SmpteOffset", "0"); - m.set ("NumSampleLoops", "0"); - m.set ("SamplerData", "0"); + m["Manufacturer"] = "0"; + m["Product"] = "0"; + m["SamplePeriod"] = "0"; + m["MidiUnityNote"] = "60"; + m["MidiPitchFraction"] = "0"; + m["SmpteFormat"] = "0"; + m["SmpteOffset"] = "0"; + m["NumSampleLoops"] = "0"; + m["SamplerData"] = "0"; return m; } diff -Nru juce-6.1.4~ds0/modules/juce_audio_formats/juce_audio_formats.h juce-6.1.5~ds0/modules/juce_audio_formats/juce_audio_formats.h --- juce-6.1.4~ds0/modules/juce_audio_formats/juce_audio_formats.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_formats/juce_audio_formats.h 2022-01-26 13:07:09.000000000 +0000 @@ -35,7 +35,7 @@ ID: juce_audio_formats vendor: juce - version: 6.1.4 + version: 6.1.5 name: JUCE audio file format codecs description: Classes for reading and writing various audio file formats. website: http://www.juce.com/juce diff -Nru juce-6.1.4~ds0/modules/juce_audio_plugin_client/juce_audio_plugin_client.h juce-6.1.5~ds0/modules/juce_audio_plugin_client/juce_audio_plugin_client.h --- juce-6.1.4~ds0/modules/juce_audio_plugin_client/juce_audio_plugin_client.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_plugin_client/juce_audio_plugin_client.h 2022-01-26 13:07:09.000000000 +0000 @@ -35,7 +35,7 @@ ID: juce_audio_plugin_client vendor: juce - version: 6.1.4 + version: 6.1.5 name: JUCE audio plugin wrapper classes description: Classes for building VST, VST3, AudioUnit, AAX and RTAS plugins. website: http://www.juce.com/juce diff -Nru juce-6.1.4~ds0/modules/juce_audio_plugin_client/Standalone/juce_StandaloneFilterWindow.h juce-6.1.5~ds0/modules/juce_audio_plugin_client/Standalone/juce_StandaloneFilterWindow.h --- juce-6.1.4~ds0/modules/juce_audio_plugin_client/Standalone/juce_StandaloneFilterWindow.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_plugin_client/Standalone/juce_StandaloneFilterWindow.h 2022-01-26 13:07:09.000000000 +0000 @@ -979,8 +979,17 @@ if (auto* editorConstrainer = editor->getConstrainer()) { const auto borders = owner.getContentComponentBorder(); - const auto extraWindowWidth = borders.getLeftAndRight(); - const auto extraWindowHeight = extraHeight + borders.getTopAndBottom(); + + const auto windowBorders = [&]() -> BorderSize + { + if (auto* peer = owner.getPeer()) + return peer->getFrameSize(); + + return {}; + }(); + + const auto extraWindowWidth = borders.getLeftAndRight() + windowBorders.getLeftAndRight(); + const auto extraWindowHeight = extraHeight + borders.getTopAndBottom() + windowBorders.getTopAndBottom(); owner.setResizeLimits (jmax (10, editorConstrainer->getMinimumWidth() + extraWindowWidth), jmax (10, editorConstrainer->getMinimumHeight() + extraWindowHeight), diff -Nru juce-6.1.4~ds0/modules/juce_audio_plugin_client/utility/juce_CheckSettingMacros.h juce-6.1.5~ds0/modules/juce_audio_plugin_client/utility/juce_CheckSettingMacros.h --- juce-6.1.4~ds0/modules/juce_audio_plugin_client/utility/juce_CheckSettingMacros.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_plugin_client/utility/juce_CheckSettingMacros.h 2022-01-26 13:07:09.000000000 +0000 @@ -73,11 +73,6 @@ #define JucePlugin_Build_RTAS 0 #endif -#if ! (defined (_MSC_VER) || defined (__APPLE_CPP__) || defined (__APPLE_CC__) || defined (LINUX) || defined (__linux__)) - #undef JucePlugin_Build_VST3 - #define JucePlugin_Build_VST3 0 -#endif - //============================================================================== #if JucePlugin_Build_LV2 && ! defined (JucePlugin_LV2URI) #error "You need to define the JucePlugin_LV2URI value!" diff -Nru juce-6.1.4~ds0/modules/juce_audio_plugin_client/utility/juce_PluginUtilities.cpp juce-6.1.5~ds0/modules/juce_audio_plugin_client/utility/juce_PluginUtilities.cpp --- juce-6.1.4~ds0/modules/juce_audio_plugin_client/utility/juce_PluginUtilities.cpp 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_plugin_client/utility/juce_PluginUtilities.cpp 2022-01-26 13:07:09.000000000 +0000 @@ -46,7 +46,7 @@ #define VST3_REPLACEMENT_AVAILABLE 1 // NB: Nasty old-fashioned code in here because it's copied from the Steinberg example code. - void JUCE_API getUUIDForVST2ID (bool forControllerUID, uint8 uuid[16]) + void getUUIDForVST2ID (bool forControllerUID, uint8 uuid[16]) { #if JUCE_MSVC const auto juce_sprintf = [] (auto&& head, auto&&... tail) { sprintf_s (head, numElementsInArray (head), tail...); }; diff -Nru juce-6.1.4~ds0/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp juce-6.1.5~ds0/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp --- juce-6.1.4~ds0/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp 2022-01-26 13:07:09.000000000 +0000 @@ -58,7 +58,7 @@ #if JUCE_VST3_CAN_REPLACE_VST2 - #if ! JUCE_MSVC + #if ! JUCE_MSVC && ! defined (__cdecl) #define __cdecl #endif @@ -3155,9 +3155,27 @@ return kResultFalse; } - if (processSetup.symbolicSampleSize == Vst::kSample32) processAudio (data, channelListFloat); - else if (processSetup.symbolicSampleSize == Vst::kSample64) processAudio (data, channelListDouble); - else jassertfalse; + // If all of these are zero, the host is attempting to flush parameters without processing audio. + if (data.numSamples != 0 || data.numInputs != 0 || data.numOutputs != 0) + { + if (processSetup.symbolicSampleSize == Vst::kSample32) processAudio (data, channelListFloat); + else if (processSetup.symbolicSampleSize == Vst::kSample64) processAudio (data, channelListDouble); + else jassertfalse; + } + + if (auto* changes = data.outputParameterChanges) + { + comPluginInstance->forAllChangedParameters ([&] (Vst::ParamID paramID, float value) + { + Steinberg::int32 queueIndex = 0; + + if (auto* queue = changes->addParameterData (paramID, queueIndex)) + { + Steinberg::int32 pointIndex = 0; + queue->addPoint (0, value, pointIndex); + } + }); + } #if JucePlugin_ProducesMidiOutput if (isMidiOutputBusEnabled && data.outputEvents != nullptr) @@ -3381,20 +3399,6 @@ jassert (midiBuffer.getNumEvents() <= numMidiEventsComingIn); #endif } - - if (auto* changes = data.outputParameterChanges) - { - comPluginInstance->forAllChangedParameters ([&] (Vst::ParamID paramID, float value) - { - Steinberg::int32 queueIndex = 0; - - if (auto* queue = changes->addParameterData (paramID, queueIndex)) - { - Steinberg::int32 pointIndex = 0; - queue->addPoint (0, value, pointIndex); - } - }); - } } //============================================================================== @@ -3541,10 +3545,12 @@ DEF_CLASS_IID (JuceAudioProcessor) #if JUCE_VST3_CAN_REPLACE_VST2 + // Defined in PluginUtilities.cpp + void getUUIDForVST2ID (bool, uint8[16]); + FUID getFUIDForVST2ID (bool forControllerUID) { TUID uuid; - extern JUCE_API void getUUIDForVST2ID (bool, uint8[16]); getUUIDForVST2ID (forControllerUID, (uint8*) uuid); return FUID (uuid); } diff -Nru juce-6.1.4~ds0/modules/juce_audio_processors/format_types/juce_AU_Shared.h juce-6.1.5~ds0/modules/juce_audio_processors/format_types/juce_AU_Shared.h --- juce-6.1.4~ds0/modules/juce_audio_processors/format_types/juce_AU_Shared.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_processors/format_types/juce_AU_Shared.h 2022-01-26 13:07:09.000000000 +0000 @@ -38,22 +38,19 @@ class ChannelRemapper { public: - ChannelRemapper (AudioProcessor& p) : processor (p), inputLayoutMap (nullptr), outputLayoutMap (nullptr) {} - ~ChannelRemapper() {} - - void alloc() + void alloc (AudioProcessor& processor) { const int numInputBuses = AudioUnitHelpers::getBusCount (processor, true); const int numOutputBuses = AudioUnitHelpers::getBusCount (processor, false); - initializeChannelMapArray (true, numInputBuses); - initializeChannelMapArray (false, numOutputBuses); + initializeChannelMapArray (processor, true, numInputBuses); + initializeChannelMapArray (processor, false, numOutputBuses); for (int busIdx = 0; busIdx < numInputBuses; ++busIdx) - fillLayoutChannelMaps (true, busIdx); + fillLayoutChannelMaps (processor, true, busIdx); for (int busIdx = 0; busIdx < numOutputBuses; ++busIdx) - fillLayoutChannelMaps (false, busIdx); + fillLayoutChannelMaps (processor, false, busIdx); } void release() @@ -69,14 +66,13 @@ private: //============================================================================== - AudioProcessor& processor; HeapBlock inputLayoutMapPtrStorage, outputLayoutMapPtrStorage; HeapBlock inputLayoutMapStorage, outputLayoutMapStorage; - int** inputLayoutMap; - int** outputLayoutMap; + int** inputLayoutMap = nullptr; + int** outputLayoutMap = nullptr; //============================================================================== - void initializeChannelMapArray (bool isInput, const int numBuses) + void initializeChannelMapArray (AudioProcessor& processor, bool isInput, const int numBuses) { HeapBlock& layoutMapPtrStorage = isInput ? inputLayoutMapPtrStorage : outputLayoutMapPtrStorage; HeapBlock& layoutMapStorage = isInput ? inputLayoutMapStorage : outputLayoutMapStorage; @@ -88,7 +84,7 @@ layoutMapPtrStorage.calloc (static_cast (numBuses)); layoutMapStorage.calloc (static_cast (isInput ? totalInChannels : totalOutChannels)); - layoutMap = layoutMapPtrStorage. get(); + layoutMap = layoutMapPtrStorage.get(); int ch = 0; for (int busIdx = 0; busIdx < numBuses; ++busIdx) @@ -98,7 +94,7 @@ } } - void fillLayoutChannelMaps (bool isInput, int busNr) + void fillLayoutChannelMaps (AudioProcessor& processor, bool isInput, int busNr) { int* layoutMap = (isInput ? inputLayoutMap : outputLayoutMap)[busNr]; auto channelFormat = processor.getChannelLayoutOfBus (isInput, busNr); @@ -166,7 +162,9 @@ jassert (channels[(size_t) i] != nullptr); #endif - mutableBuffer.setDataToReferTo (channels.data(), (int) channels.size(), static_cast (frames)); + if (! channels.empty()) + mutableBuffer.setDataToReferTo (channels.data(), (int) channels.size(), static_cast (frames)); + return mutableBuffer; } diff -Nru juce-6.1.4~ds0/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp juce-6.1.5~ds0/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp --- juce-6.1.4~ds0/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp 2022-01-26 13:07:09.000000000 +0000 @@ -581,7 +581,7 @@ tresult getInt (Steinberg::int64& result) const { - if (kind != Kind::Int) + if (kind != Kind::tagInt) return kResultFalse; result = storage.storedInt; @@ -590,7 +590,7 @@ tresult getFloat (double& result) const { - if (kind != Kind::Float) + if (kind != Kind::tagFloat) return kResultFalse; result = storage.storedFloat; @@ -599,7 +599,7 @@ tresult getString (Vst::TChar* data, Steinberg::uint32 numBytes) const { - if (kind != Kind::String) + if (kind != Kind::tagString) return kResultFalse; std::memcpy (data, @@ -610,7 +610,7 @@ tresult getBinary (const void*& data, Steinberg::uint32& numBytes) const { - if (kind != Kind::Binary) + if (kind != Kind::tagBinary) return kResultFalse; data = storage.storedBinary.data(); @@ -619,19 +619,19 @@ } private: - void constructFrom (Int x) noexcept { kind = Kind::Int; new (&storage.storedInt) Int (std::move (x)); } - void constructFrom (Float x) noexcept { kind = Kind::Float; new (&storage.storedFloat) Float (std::move (x)); } - void constructFrom (String x) noexcept { kind = Kind::String; new (&storage.storedString) String (std::move (x)); } - void constructFrom (Binary x) noexcept { kind = Kind::Binary; new (&storage.storedBinary) Binary (std::move (x)); } + void constructFrom (Int x) noexcept { kind = Kind::tagInt; new (&storage.storedInt) Int (std::move (x)); } + void constructFrom (Float x) noexcept { kind = Kind::tagFloat; new (&storage.storedFloat) Float (std::move (x)); } + void constructFrom (String x) noexcept { kind = Kind::tagString; new (&storage.storedString) String (std::move (x)); } + void constructFrom (Binary x) noexcept { kind = Kind::tagBinary; new (&storage.storedBinary) Binary (std::move (x)); } void reset() noexcept { switch (kind) { - case Kind::Int: break; - case Kind::Float: break; - case Kind::String: storage.storedString.~vector(); break; - case Kind::Binary: storage.storedBinary.~vector(); break; + case Kind::tagInt: break; + case Kind::tagFloat: break; + case Kind::tagString: storage.storedString.~vector(); break; + case Kind::tagBinary: storage.storedBinary.~vector(); break; } } @@ -639,14 +639,14 @@ { switch (other.kind) { - case Kind::Int: constructFrom (std::move (other.storage.storedInt)); break; - case Kind::Float: constructFrom (std::move (other.storage.storedFloat)); break; - case Kind::String: constructFrom (std::move (other.storage.storedString)); break; - case Kind::Binary: constructFrom (std::move (other.storage.storedBinary)); break; + case Kind::tagInt: constructFrom (std::move (other.storage.storedInt)); break; + case Kind::tagFloat: constructFrom (std::move (other.storage.storedFloat)); break; + case Kind::tagString: constructFrom (std::move (other.storage.storedString)); break; + case Kind::tagBinary: constructFrom (std::move (other.storage.storedBinary)); break; } } - enum class Kind { Int, Float, String, Binary }; + enum class Kind { tagInt, tagFloat, tagString, tagBinary }; union Storage { diff -Nru juce-6.1.4~ds0/modules/juce_audio_processors/juce_audio_processors.cpp juce-6.1.5~ds0/modules/juce_audio_processors/juce_audio_processors.cpp --- juce-6.1.4~ds0/modules/juce_audio_processors/juce_audio_processors.cpp 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_processors/juce_audio_processors.cpp 2022-01-26 13:07:09.000000000 +0000 @@ -40,7 +40,6 @@ #include "juce_audio_processors.h" #include -#include //============================================================================== #if JUCE_MAC diff -Nru juce-6.1.4~ds0/modules/juce_audio_processors/juce_audio_processors.h juce-6.1.5~ds0/modules/juce_audio_processors/juce_audio_processors.h --- juce-6.1.4~ds0/modules/juce_audio_processors/juce_audio_processors.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_processors/juce_audio_processors.h 2022-01-26 13:07:09.000000000 +0000 @@ -35,7 +35,7 @@ ID: juce_audio_processors vendor: juce - version: 6.1.4 + version: 6.1.5 name: JUCE audio processor classes description: Classes for loading and playing VST, AU, LADSPA, or internally-generated audio processors. website: http://www.juce.com/juce diff -Nru juce-6.1.4~ds0/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h juce-6.1.5~ds0/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h --- juce-6.1.4~ds0/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h 2022-01-26 13:07:09.000000000 +0000 @@ -174,7 +174,7 @@ A pointer to the object you pass in will be kept, but it won't be deleted by this object, so it's the caller's responsibility to manage it. - If you pass a nullptr, then no contraints will be placed on the positioning of the window. + If you pass a nullptr, then no constraints will be placed on the positioning of the window. */ void setConstrainer (ComponentBoundsConstrainer* newConstrainer); diff -Nru juce-6.1.4~ds0/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h juce-6.1.5~ds0/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h --- juce-6.1.4~ds0/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h 2022-01-26 13:07:09.000000000 +0000 @@ -175,7 +175,7 @@ std::make_unique ("b", "Parameter B", 0, 5, 2) }) @endcode - To add parameters programatically you can call `add` repeatedly on a + To add parameters programmatically you can call `add` repeatedly on a ParameterLayout instance: @code diff -Nru juce-6.1.4~ds0/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp juce-6.1.5~ds0/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp --- juce-6.1.4~ds0/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp 2022-01-26 13:07:09.000000000 +0000 @@ -35,10 +35,6 @@ inputLevelGetter = manager.getInputLevelGetter(); } - ~SimpleDeviceManagerInputLevelMeter() override - { - } - void timerCallback() override { if (isShowing()) diff -Nru juce-6.1.4~ds0/modules/juce_audio_utils/gui/juce_AudioThumbnailCache.h juce-6.1.5~ds0/modules/juce_audio_utils/gui/juce_AudioThumbnailCache.h --- juce-6.1.4~ds0/modules/juce_audio_utils/gui/juce_AudioThumbnailCache.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_utils/gui/juce_AudioThumbnailCache.h 2022-01-26 13:07:09.000000000 +0000 @@ -64,7 +64,7 @@ */ bool loadThumb (AudioThumbnailBase& thumb, int64 hashCode); - /** Stores the cachable data from the specified thumb in this cache. + /** Stores the cacheable data from the specified thumb in this cache. This is called automatically by the AudioThumbnail class, so you shouldn't normally need to call it directly. diff -Nru juce-6.1.4~ds0/modules/juce_audio_utils/gui/juce_BluetoothMidiDevicePairingDialogue.h juce-6.1.5~ds0/modules/juce_audio_utils/gui/juce_BluetoothMidiDevicePairingDialogue.h --- juce-6.1.4~ds0/modules/juce_audio_utils/gui/juce_BluetoothMidiDevicePairingDialogue.h 2021-12-20 11:16:43.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_utils/gui/juce_BluetoothMidiDevicePairingDialogue.h 2022-01-26 13:07:09.000000000 +0000 @@ -36,7 +36,7 @@ Only after a Bluetooth MIDI device has been paired will its MIDI ports be available through JUCE's MidiInput and MidiOutput classes. - This dialogue is currently only available on macOS targetting versions 10.11+, + This dialogue is currently only available on macOS targeting versions 10.11+, iOS and Android. When targeting older versions of macOS you should instead pair Bluetooth MIDI devices using the "Audio MIDI Setup" app (located in /Applications/Utilities). On Windows, you should use the system settings. On diff -Nru juce-6.1.4~ds0/modules/juce_audio_utils/gui/juce_KeyboardComponentBase.cpp juce-6.1.5~ds0/modules/juce_audio_utils/gui/juce_KeyboardComponentBase.cpp --- juce-6.1.4~ds0/modules/juce_audio_utils/gui/juce_KeyboardComponentBase.cpp 1970-01-01 00:00:00.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_utils/gui/juce_KeyboardComponentBase.cpp 2022-01-26 13:07:09.000000000 +0000 @@ -0,0 +1,462 @@ +/* + ============================================================================== + + 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. + + ============================================================================== +*/ + +namespace juce +{ + +constexpr uint8 whiteNotes[] = { 0, 2, 4, 5, 7, 9, 11 }; +constexpr uint8 blackNotes[] = { 1, 3, 6, 8, 10 }; + +//============================================================================== +struct KeyboardComponentBase::UpDownButton : public Button +{ + UpDownButton (KeyboardComponentBase& c, int d) + : Button ({}), owner (c), delta (d) + { + } + + void clicked() override + { + auto note = owner.getLowestVisibleKey(); + + note = delta < 0 ? (note - 1) / 12 : note / 12 + 1; + + owner.setLowestVisibleKey (note * 12); + } + + using Button::clicked; + + void paintButton (Graphics& g, bool shouldDrawButtonAsHighlighted, bool shouldDrawButtonAsDown) override + { + owner.drawUpDownButton (g, getWidth(), getHeight(), + shouldDrawButtonAsHighlighted, shouldDrawButtonAsDown, + delta > 0); + } + +private: + KeyboardComponentBase& owner; + int delta; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (UpDownButton) +}; + +//============================================================================== +KeyboardComponentBase::KeyboardComponentBase (Orientation o) : orientation (o) +{ + scrollDown = std::make_unique (*this, -1); + scrollUp = std::make_unique (*this, 1); + + addChildComponent (*scrollDown); + addChildComponent (*scrollUp); + + colourChanged(); +} + +//============================================================================== +void KeyboardComponentBase::setKeyWidth (float widthInPixels) +{ + jassert (widthInPixels > 0); + + if (keyWidth != widthInPixels) // Prevent infinite recursion if the width is being computed in a 'resized()' callback + { + keyWidth = widthInPixels; + resized(); + } +} + +void KeyboardComponentBase::setScrollButtonWidth (int widthInPixels) +{ + jassert (widthInPixels > 0); + + if (scrollButtonWidth != widthInPixels) + { + scrollButtonWidth = widthInPixels; + resized(); + } +} + +void KeyboardComponentBase::setOrientation (Orientation newOrientation) +{ + if (orientation != newOrientation) + { + orientation = newOrientation; + resized(); + } +} + +void KeyboardComponentBase::setAvailableRange (int lowestNote, int highestNote) +{ + jassert (lowestNote >= 0 && lowestNote <= 127); + jassert (highestNote >= 0 && highestNote <= 127); + jassert (lowestNote <= highestNote); + + if (rangeStart != lowestNote || rangeEnd != highestNote) + { + rangeStart = jlimit (0, 127, lowestNote); + rangeEnd = jlimit (0, 127, highestNote); + firstKey = jlimit ((float) rangeStart, (float) rangeEnd, firstKey); + resized(); + } +} + +void KeyboardComponentBase::setLowestVisibleKey (int noteNumber) +{ + setLowestVisibleKeyFloat ((float) noteNumber); +} + +void KeyboardComponentBase::setLowestVisibleKeyFloat (float noteNumber) +{ + noteNumber = jlimit ((float) rangeStart, (float) rangeEnd, noteNumber); + + if (noteNumber != firstKey) + { + bool hasMoved = (((int) firstKey) != (int) noteNumber); + firstKey = noteNumber; + + if (hasMoved) + sendChangeMessage(); + + resized(); + } +} + +float KeyboardComponentBase::getWhiteNoteLength() const noexcept +{ + return (orientation == horizontalKeyboard) ? (float) getHeight() : (float) getWidth(); +} + +void KeyboardComponentBase::setBlackNoteLengthProportion (float ratio) noexcept +{ + jassert (ratio >= 0.0f && ratio <= 1.0f); + + if (blackNoteLengthRatio != ratio) + { + blackNoteLengthRatio = ratio; + resized(); + } +} + +float KeyboardComponentBase::getBlackNoteLength() const noexcept +{ + auto whiteNoteLength = orientation == horizontalKeyboard ? getHeight() : getWidth(); + return (float) whiteNoteLength * blackNoteLengthRatio; +} + +void KeyboardComponentBase::setBlackNoteWidthProportion (float ratio) noexcept +{ + jassert (ratio >= 0.0f && ratio <= 1.0f); + + if (blackNoteWidthRatio != ratio) + { + blackNoteWidthRatio = ratio; + resized(); + } +} + +void KeyboardComponentBase::setScrollButtonsVisible (bool newCanScroll) +{ + if (canScroll != newCanScroll) + { + canScroll = newCanScroll; + resized(); + } +} + +//============================================================================== +Range KeyboardComponentBase::getKeyPos (int midiNoteNumber) const +{ + return getKeyPosition (midiNoteNumber, keyWidth) + - xOffset + - getKeyPosition (rangeStart, keyWidth).getStart(); +} + +float KeyboardComponentBase::getKeyStartPosition (int midiNoteNumber) const +{ + return getKeyPos (midiNoteNumber).getStart(); +} + +float KeyboardComponentBase::getTotalKeyboardWidth() const noexcept +{ + return getKeyPos (rangeEnd).getEnd(); +} + +KeyboardComponentBase::NoteAndVelocity KeyboardComponentBase::getNoteAndVelocityAtPosition (Point pos, bool children) +{ + if (! reallyContains (pos, children)) + return { -1, 0.0f }; + + auto p = pos; + + if (orientation != horizontalKeyboard) + { + p = { p.y, p.x }; + + if (orientation == verticalKeyboardFacingLeft) + p = { p.x, (float) getWidth() - p.y }; + else + p = { (float) getHeight() - p.x, p.y }; + } + + return remappedXYToNote (p + Point (xOffset, 0)); +} + +KeyboardComponentBase::NoteAndVelocity KeyboardComponentBase::remappedXYToNote (Point pos) const +{ + auto blackNoteLength = getBlackNoteLength(); + + if (pos.getY() < blackNoteLength) + { + for (int octaveStart = 12 * (rangeStart / 12); octaveStart <= rangeEnd; octaveStart += 12) + { + for (int i = 0; i < 5; ++i) + { + auto note = octaveStart + blackNotes[i]; + + if (rangeStart <= note && note <= rangeEnd) + { + if (getKeyPos (note).contains (pos.x - xOffset)) + { + return { note, jmax (0.0f, pos.y / blackNoteLength) }; + } + } + } + } + } + + for (int octaveStart = 12 * (rangeStart / 12); octaveStart <= rangeEnd; octaveStart += 12) + { + for (int i = 0; i < 7; ++i) + { + auto note = octaveStart + whiteNotes[i]; + + if (note >= rangeStart && note <= rangeEnd) + { + if (getKeyPos (note).contains (pos.x - xOffset)) + { + auto whiteNoteLength = (orientation == horizontalKeyboard) ? getHeight() : getWidth(); + return { note, jmax (0.0f, pos.y / (float) whiteNoteLength) }; + } + } + } + } + + return { -1, 0 }; +} + +Rectangle KeyboardComponentBase::getRectangleForKey (int note) const +{ + jassert (note >= rangeStart && note <= rangeEnd); + + auto pos = getKeyPos (note); + auto x = pos.getStart(); + auto w = pos.getLength(); + + if (MidiMessage::isMidiNoteBlack (note)) + { + auto blackNoteLength = getBlackNoteLength(); + + switch (orientation) + { + case horizontalKeyboard: return { x, 0, w, blackNoteLength }; + case verticalKeyboardFacingLeft: return { (float) getWidth() - blackNoteLength, x, blackNoteLength, w }; + case verticalKeyboardFacingRight: return { 0, (float) getHeight() - x - w, blackNoteLength, w }; + default: jassertfalse; break; + } + } + else + { + switch (orientation) + { + case horizontalKeyboard: return { x, 0, w, (float) getHeight() }; + case verticalKeyboardFacingLeft: return { 0, x, (float) getWidth(), w }; + case verticalKeyboardFacingRight: return { 0, (float) getHeight() - x - w, (float) getWidth(), w }; + default: jassertfalse; break; + } + } + + return {}; +} + +//============================================================================== +void KeyboardComponentBase::setOctaveForMiddleC (int octaveNum) +{ + octaveNumForMiddleC = octaveNum; + repaint(); +} + +//============================================================================== +void KeyboardComponentBase::drawUpDownButton (Graphics& g, int w, int h, bool mouseOver, bool buttonDown, bool movesOctavesUp) +{ + g.fillAll (findColour (upDownButtonBackgroundColourId)); + + float angle = 0; + + switch (getOrientation()) + { + case horizontalKeyboard: angle = movesOctavesUp ? 0.0f : 0.5f; break; + case verticalKeyboardFacingLeft: angle = movesOctavesUp ? 0.25f : 0.75f; break; + case verticalKeyboardFacingRight: angle = movesOctavesUp ? 0.75f : 0.25f; break; + default: jassertfalse; break; + } + + Path path; + path.addTriangle (0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.5f); + path.applyTransform (AffineTransform::rotation (MathConstants::twoPi * angle, 0.5f, 0.5f)); + + g.setColour (findColour (upDownButtonArrowColourId) + .withAlpha (buttonDown ? 1.0f : (mouseOver ? 0.6f : 0.4f))); + + g.fillPath (path, path.getTransformToScaleToFit (1.0f, 1.0f, (float) w - 2.0f, (float) h - 2.0f, true)); +} + +Range KeyboardComponentBase::getKeyPosition (int midiNoteNumber, float targetKeyWidth) const +{ + auto ratio = getBlackNoteWidthProportion(); + + static const float notePos[] = { 0.0f, 1 - ratio * 0.6f, + 1.0f, 2 - ratio * 0.4f, + 2.0f, + 3.0f, 4 - ratio * 0.7f, + 4.0f, 5 - ratio * 0.5f, + 5.0f, 6 - ratio * 0.3f, + 6.0f }; + + auto octave = midiNoteNumber / 12; + auto note = midiNoteNumber % 12; + + auto start = (float) octave * 7.0f * targetKeyWidth + notePos[note] * targetKeyWidth; + auto width = MidiMessage::isMidiNoteBlack (note) ? blackNoteWidthRatio * targetKeyWidth : targetKeyWidth; + + return { start, start + width }; +} + +//============================================================================== +void KeyboardComponentBase::paint (Graphics& g) +{ + drawKeyboardBackground (g, getLocalBounds().toFloat()); + + for (int octaveBase = 0; octaveBase < 128; octaveBase += 12) + { + for (auto noteNum : whiteNotes) + { + const auto key = octaveBase + noteNum; + + if (rangeStart <= key && key <= rangeEnd) + drawWhiteKey (key, g, getRectangleForKey (key)); + } + + for (auto noteNum : blackNotes) + { + const auto key = octaveBase + noteNum; + + if (rangeStart <= key && key <= rangeEnd) + drawBlackKey (key, g, getRectangleForKey (key)); + } + } +} + +void KeyboardComponentBase::resized() +{ + auto w = getWidth(); + auto h = getHeight(); + + if (w > 0 && h > 0) + { + if (orientation != horizontalKeyboard) + std::swap (w, h); + + auto kx2 = getKeyPos (rangeEnd).getEnd(); + + if ((int) firstKey != rangeStart) + { + auto kx1 = getKeyPos (rangeStart).getStart(); + + if (kx2 - kx1 <= (float) w) + { + firstKey = (float) rangeStart; + sendChangeMessage(); + repaint(); + } + } + + scrollDown->setVisible (canScroll && firstKey > (float) rangeStart); + + xOffset = 0; + + if (canScroll) + { + auto scrollButtonW = jmin (scrollButtonWidth, w / 2); + auto r = getLocalBounds(); + + if (orientation == horizontalKeyboard) + { + scrollDown->setBounds (r.removeFromLeft (scrollButtonW)); + scrollUp ->setBounds (r.removeFromRight (scrollButtonW)); + } + else if (orientation == verticalKeyboardFacingLeft) + { + scrollDown->setBounds (r.removeFromTop (scrollButtonW)); + scrollUp ->setBounds (r.removeFromBottom (scrollButtonW)); + } + else + { + scrollDown->setBounds (r.removeFromBottom (scrollButtonW)); + scrollUp ->setBounds (r.removeFromTop (scrollButtonW)); + } + + auto endOfLastKey = getKeyPos (rangeEnd).getEnd(); + + auto spaceAvailable = w; + auto lastStartKey = remappedXYToNote ({ endOfLastKey - (float) spaceAvailable, 0 }).note + 1; + + if (lastStartKey >= 0 && ((int) firstKey) > lastStartKey) + { + firstKey = (float) jlimit (rangeStart, rangeEnd, lastStartKey); + sendChangeMessage(); + } + + xOffset = getKeyPos ((int) firstKey).getStart(); + } + else + { + firstKey = (float) rangeStart; + } + + scrollUp->setVisible (canScroll && getKeyPos (rangeEnd).getStart() > (float) w); + repaint(); + } +} + +//============================================================================== +void KeyboardComponentBase::mouseWheelMove (const MouseEvent&, const MouseWheelDetails& wheel) +{ + auto amount = (orientation == horizontalKeyboard && wheel.deltaX != 0) + ? wheel.deltaX : (orientation == verticalKeyboardFacingLeft ? wheel.deltaY + : -wheel.deltaY); + + setLowestVisibleKeyFloat (firstKey - amount * keyWidth); +} + +} // namespace juce diff -Nru juce-6.1.4~ds0/modules/juce_audio_utils/gui/juce_KeyboardComponentBase.h juce-6.1.5~ds0/modules/juce_audio_utils/gui/juce_KeyboardComponentBase.h --- juce-6.1.4~ds0/modules/juce_audio_utils/gui/juce_KeyboardComponentBase.h 1970-01-01 00:00:00.000000000 +0000 +++ juce-6.1.5~ds0/modules/juce_audio_utils/gui/juce_KeyboardComponentBase.h 2022-01-26 13:07:09.000000000 +0000 @@ -0,0 +1,295 @@ +/* + ============================================================================== + + 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. + + ============================================================================== +*/ + +namespace juce +{ + +//============================================================================== +/** + A base class for drawing a custom MIDI keyboard component. + + Implement the drawKeyboardBackground(), drawWhiteKey(), and drawBlackKey() methods + to draw your content and this class will handle the underlying keyboard logic. + + The component is a ChangeBroadcaster, so if you want to be informed when the + keyboard is scrolled, you can register a ChangeListener for callbacks. + + @tags{Audio} +*/ +class JUCE_API KeyboardComponentBase : public Component, + public ChangeBroadcaster +{ +public: + //============================================================================== + /** The direction of the keyboard. + + @see setOrientation + */ + enum Orientation + { + horizontalKeyboard, + verticalKeyboardFacingLeft, + verticalKeyboardFacingRight, + }; + + //============================================================================== + /** Constructor. + + @param orientation whether the keyboard is horizontal or vertical + */ + explicit KeyboardComponentBase (Orientation orientation); + + /** Destructor. */ + ~KeyboardComponentBase() override = default; + + //============================================================================== + /** Changes the width used to draw the white keys. */ + void setKeyWidth (float widthInPixels); + + /** Returns the width that was set by setKeyWidth(). */ + float getKeyWidth() const noexcept { return keyWidth; } + + /** Changes the width used to draw the buttons that scroll the keyboard up/down in octaves. */ + void setScrollButtonWidth (int widthInPixels); + + /** Returns the width that was set by setScrollButtonWidth(). */ + int getScrollButtonWidth() const noexcept { return scrollButtonWidth; } + + /** Changes the keyboard's current direction. */ + void setOrientation (Orientation newOrientation); + + /** Returns the keyboard's current direction. */ + Orientation getOrientation() const noexcept { return orientation; } + + /** Returns true if the keyboard's orientation is horizontal. */ + bool isHorizontal() const noexcept { return orientation == horizontalKeyboard; } + + /** Sets the range of midi notes that the keyboard will be limited to. + + By default the range is 0 to 127 (inclusive), but you can limit this if you + only want a restricted set of the keys to be shown. + + Note that the values here are inclusive and must be between 0 and 127. + */ + void setAvailableRange (int lowestNote, int highestNote); + + /** Returns the first note in the available range. + + @see setAvailableRange + */ + int getRangeStart() const noexcept { return rangeStart; } + + /** Returns the last note in the available range. + + @see setAvailableRange + */ + int getRangeEnd() const noexcept { return rangeEnd; } + + /** If the keyboard extends beyond the size of the component, this will scroll + it to show the given key at the start. + + Whenever the keyboard's position is changed, this will use the ChangeBroadcaster + base class to send a callback to any ChangeListeners that have been registered. + */ + void setLowestVisibleKey (int noteNumber); + + /** Returns the number of the first key shown in the component. + + @see setLowestVisibleKey + */ + int getLowestVisibleKey() const noexcept { return (int) firstKey; } + + /** Returns the absolute length of the white notes. + + This will be their vertical or horizontal length, depending on the keyboard's orientation. + */ + float getWhiteNoteLength() const noexcept; + + /** Sets the length of the black notes as a proportion of the white note length. */ + void setBlackNoteLengthProportion (float ratio) noexcept; + + /** Returns the length of the black notes as a proportion of the white note length. */ + float getBlackNoteLengthProportion() const noexcept { return blackNoteLengthRatio; } + + /** Returns the absolute length of the black notes. + + This will be their vertical or horizontal length, depending on the keyboard's orientation. + */ + float getBlackNoteLength() const noexcept; + + /** Sets the width of the black notes as a proportion of the white note width. */ + void setBlackNoteWidthProportion (float ratio) noexcept; + + /** Returns the width of the black notes as a proportion of the white note width. */ + float getBlackNoteWidthProportion() const noexcept { return blackNoteWidthRatio; } + + /** Returns the absolute width of the black notes. + + This will be their vertical or horizontal width, depending on the keyboard's orientation. + */ + float getBlackNoteWidth() const noexcept { return keyWidth * blackNoteWidthRatio; } + + /** If set to true, then scroll buttons will appear at either end of the keyboard + if there are too many notes to fit them all in the component at once. + */ + void setScrollButtonsVisible (bool canScroll); + + //============================================================================== + /** Colour IDs to use to change the colour of the octave scroll buttons. + + These constants can be used either via the Component::setColour(), or LookAndFeel::setColour() + methods. + + @see Component::setColour, Component::findColour, LookAndFeel::setColour, LookAndFeel::findColour + */ + enum ColourIds + { + upDownButtonBackgroundColourId = 0x1004000, + upDownButtonArrowColourId = 0x1004001 + }; + + /** Returns the position within the component of the left-hand edge of a key. + + Depending on the keyboard's orientation, this may be a horizontal or vertical + distance, in either direction. + */ + float getKeyStartPosition (int midiNoteNumber) const; + + /** Returns the total width needed to fit all the keys in the available range. */ + float getTotalKeyboardWidth() const noexcept; + + /** This structure is returned by the getNoteAndVelocityAtPosition() method. + */ + struct JUCE_API NoteAndVelocity + { + int note; + float velocity; + }; + + /** Returns the note number and velocity for a given position within the component. + + If includeChildComponents is true then this will return a key obscured by any child + components. + */ + NoteAndVelocity getNoteAndVelocityAtPosition (Point position, bool includeChildComponents = false); + + #ifndef DOXYGEN + /** Returns the key at a given coordinate, or -1 if the position does not intersect a key. */ + [[deprecated ("This method has been deprecated in favour of getNoteAndVelocityAtPosition.")]] + int getNoteAtPosition (Point p) { return getNoteAndVelocityAtPosition (p).note; } + #endif + + /** Returns the rectangle for a given key. */ + Rectangle getRectangleForKey (int midiNoteNumber) const; + + //============================================================================== + /** This sets the octave number which is shown as the octave number for middle C. + + This affects only the default implementation of getWhiteNoteText(), which + passes this octave number to MidiMessage::getMidiNoteName() in order to + get the note text. See MidiMessage::getMidiNoteName() for more info about + the parameter. + + By default this value is set to 3. + + @see getOctaveForMiddleC + */ + void setOctaveForMiddleC (int octaveNumForMiddleC); + + /** This returns the value set by setOctaveForMiddleC(). + + @see setOctaveForMiddleC + */ + int getOctaveForMiddleC() const noexcept { return octaveNumForMiddleC; } + + //============================================================================== + /** Use this method to draw the background of the keyboard that will be drawn under + the white and black notes. This can also be used to draw any shadow or outline effects. + */ + virtual void drawKeyboardBackground (Graphics& g, Rectangle area) = 0; + + /** Use this method to draw a white key of the keyboard in a given rectangle. + + When doing this, be sure to note the keyboard's orientation. + */ + virtual void drawWhiteKey (int midiNoteNumber, Graphics& g, Rectangle area) = 0; + + /** Use this method to draw a black key of the keyboard in a given rectangle. + + When doing this, be sure to note the keyboard's orientation. + */ + virtual void drawBlackKey (int midiNoteNumber, Graphics& g, Rectangle area) = 0; + + /** This can be overridden to draw the up and down buttons that scroll the keyboard + up/down in octaves. + */ + virtual void drawUpDownButton (Graphics& g, int w, int h, bool isMouseOver, bool isButtonPressed, bool movesOctavesUp); + + /** Calculates the position of a given midi-note. + + This can be overridden to create layouts with custom key-widths. + + @param midiNoteNumber the note to find + @param keyWidth the desired width in pixels of one key - see setKeyWidth() + @returns the start and length of the key along the axis of the keyboard + */ + virtual Range getKeyPosition (int midiNoteNumber, float keyWidth) const; + + //============================================================================== + /** @internal */ + void paint (Graphics&) override; + /** @internal */ + void resized() override; + /** @internal */ + void mouseWheelMove (const MouseEvent&, const MouseWheelDetails&) override; + +private: + //============================================================================== + struct UpDownButton; + + Range getKeyPos (int midiNoteNumber) const; + NoteAndVelocity remappedXYToNote (Point) const; + void setLowestVisibleKeyFloat (float noteNumber); + + //============================================================================== + Orientation orientation; + + float blackNoteLengthRatio = 0.7f, blackNoteWidthRatio = 0.7f; + float xOffset = 0.0f; + float keyWidth = 16.0f; + float firstKey = 12 * 4.0f; + + int scrollButtonWidth = 12; + int rangeStart = 0, rangeEnd = 127; + int octaveNumForMiddleC = 3; + + bool canScroll = true; + std::unique_ptr