== Major JUCE features and updates == This file just lists the more notable headline features. For more detailed info about minor changes and bugfixes, please see the git log! Version 5.4.3 - Added a Visual Studio 2019 exporter to the Projucer - Added options to configure macOS Hardened Runtime in the Projucer - Fixed a potential memory corruption when drawing on macOS/iOS - Fixed file drag and drop for Windows 8 - Multiple DSP module enhancements - Various bug-fixes, improvements and documentation updates Version 5.4.2 - Restructured the low-level Android native code - Added an ADSR envelope class - AudioProcessorValueTreeState performance improvements - Improved Xcode 10 support - Improved VST3 hosting - Windows hiDPI scaling enhancements Version 5.4.1 - Fixed a VST2 compilation error in VS2013 - Fixed some live-build compilation errors in the Projucer - Fixed a bug in the Oversampling class - Made MPESynthesiserVoice::noteOnTime public - Fixed some bugs in the Unity plug-in wrapper - Fixed some VS2015 compiler errors Version 5.4.0 - macOS Mojave and iOS 12 support - Windows hiDPI support - Unity native plug-in support - Microsoft BLE MIDI support - Plug-in parameter groups - Support for production-ready Android OBOE - Video playback support on Android and iOS - AudioProcessorValueTreeState improvements - Support for Android Studio 3.2 - Various bug-fixes, improvements and documentation updates Version 5.3.2 - Removed the OSX 10.5 and 10.6 deployment target options from the Projucer and enabled more C++11 features across all platforms - Replaced all usage of ScopedPointer with std::unique_ptr - Added camera support for iOS and Android - Fixed some issues using an UndoManager with an AudioProcessorValueTreeState - Added MIDI input to IAA plug-ins - Made multiple calls to MidiInput::openDevice share the same underlying win32 MIDI handle - Added a config flag to juce_audio_processors for enabling LADSPA plugin hosting and enabled it in the AudioPluginHost - Added a "plug-in can do" callback to the VSTCallbackHandler interface - Fixed various undefined behavior in SIMDRegister - Added the methods AudioBlock::copyTo/AudioBlock::copyFrom which facilitate copying to/from an AudioBuffer - Added a lambda callback to OpenGLGraphicsContextCustomShader to allow custom set-up when the shader is activated - Fixed a bug causing an unintentional menu item highlight disco party when using a popup menu in a plug-in's UI - Marked as deprecated: String::empty, var::null, File::nonexistent, ValueTree::invalid and other problematic statically-initialised null values Version 5.3.1 - Add Android and iOS support to AudioPluginHost - Added support for Bela in the form of an AudioIODeviceType - Add bypass support to both hosting and plug-in client code - Added an isBoolean flag to APVTS parameters - Re-worked plug-in wrappers to all use new parameter system via LegacyAudioParameter wrapper class - Fixed an issue where opening the same midi device twice would cause a crash on Windows - Deprecated MouseInputSource::hasMouseMovedSignificantlySincePressed() and replaced with more descriptive methods - Added support for relative or special path symbolic links when compressing/uncompressing zip archives and creating/reading files - Ensured that File::replaceInternal does not fail with ACL errors on Windows - Merged-in some Ogg-Vorbis security fixes - Fixed a bug which would prevent a SystemTrayIconComponent from creating a native popup window on macOS - Various Android and iOS fixes - Added a "PIP Creator" utility tool to the Projucer - Added options for setting plugin categories and characteristics with MultiChoicePropertyComponent in the Projucer - Fixed a Projucer bug where the OSX base SDK version was not being set - Added a command-line option to use LF as linefeeds rather than CRLF in the Projucer cleanup tools - Multiple documentation updates Version 5.3.0 - Added support for Android OBOE (developer preview) - Updated JUCE's MPE classes to comply with the new MMA-adopted specification - Multiple documentation updates - Restructured the examples and extras directories and updated all JUCE examples - Multiple hosted parameter improvements - Overhauled the GenericAudioProcessorEditor - Added support for a subset of the Cockos VST extensions - Added support for loading VST3 preset files - Added boolean AudioProcessorParameters - Added thread safe methods for getting and setting the AudioProcessorValueTreeState state - Added customisable MacOS icons Version 5.2.1 - Added native content sharing support for iOS and Android - Added iOS and Android native file chooser support - Implemented WebBrowserComponent on Android - Added SystemStats::getDeviceManufacturer() - Ensured that JUCE will always use the high-performance audio path on Android if the device supports it - Added memory warning callbacks on iOS - Refactored iOSAudioDevice to support multi-channel audio devices and improve the handling of sample rate changes from other apps - Added SidePanel and BurgerMenu component classes - Added PushNotifications support on OSX - Added support for VST3 SDK 3.6.8 - Added support for loading VST3 preset files - Added higher-order ambisonics support - Added thread safe methods for getting and setting the AudioProcessorValueTreeState state - Cleanup and refactoring work on the AudioProcessorGraph and the audio plugin host demo - Changed the default language standard for new projects from C++11 to C++14 and set all JUCE projects to use C++14 - Made the ScopedPointer interface more compatible with std::unique_ptr - Changed Windows projects to use dynamic runtime linking by default - Added lambda callbacks to ListenerList, Slider, Button, Label, ComboBox and TextEditor - Fixed the live-build engine on Windows - Multiple DSP module fixes and features - Multiple threading and undefined behaviour fixes and improvements - Various graphics optimisations - Multiple Projucer UI and UX improvements - Various documentation tweaks and fixes Version 5.2.0 - Added a CMake exporter to the Projucer - JUCE analytics module - Added support for push notifications on iOS and Android - Added in-app purchase support for macOS - Added a plugin binary copy step to the Visual Studio exporter - Added an option to set the debug information format in the Visual Studio exporter - Added a link-time optimisation option to all exporters - Added support for adding asm files to Android projects - Improved the reliability of the Projucer's live-build engine - Added support for AUv2 Midi Effect plug-in hosting - Added support for Atmos 7.0.2 and 7.1.2 Surround formats - Added support for the OGG sub-format inside a WAV file - Added support for querying the audio hardware on how many overruns/underruns occurred - Implement Process::hide on mobile platforms - Added support for multi-touch drag and drop - Improved the performance of 3D rendering when multiple OpenGL contexts are used at the same time - Tweaked the rate at which EdgeTable grows its internal storage, to improve performance rendering large and complex paths Version 5.1.2 - Fixed multiple plugin-resizing bugs - Added support for AUv3 MIDI and screen size negotiation - Added support for Xcode 9 and iOS 11 - Added an In-App Purchases module - Added backwards compatible constexpr support - Standalone plug-in improvements - Better .jucer file change monitoring in the Projucer - Increased the speed of AU parameter lookup - Improved the Android thread management when dealing with web requests - Better denormal support - Plug-in parameters can be explicitly marked as continuous or discrete - Multiple documentation updates Version 5.1.1 - Fixed Windows live build engine on Visual Studio 2017 - Fixed a compiler error in juce_MathFunctions.h in Visual Studio 2013 - Fixed a potential crash when using the ProcessorDuplicator - Fixed a compiler-error in Filter::IIR - Fixed an issue where the WavFileFormatWriter could not create files with discrete channels - Fixed an issue where a window which is beneath a hidden window would not receive any clicks on Linux - Altered the format of BREAKING-CHANGES.txt to display better on GitHub - Projucer: Fixed an issue in exporter tilde expansion - Fixed compiler errors when building the DSP module with a static version of FFTW - Fixed an audio glitch when bypassing the convolution engine - Fixed an issue where a JUCE VST2 would not correctly report that it supports resizing of it’s plugin editor - Various documentation tweaks and fixes Version 5.1.0 - Release of the JUCE DSP module - Multichannel audio readers and writers - Plugin editor Hi-DPI scaling support - Major improvements to Projucer module search paths - Added Projucer support for iOS app groups - Added support for AVFoundation and deprecated the use of Quicktime - Added a new real-time audio thread priority for Android - Various Projucer UI fixes - Various documentation fixes - Various minor improvements and bug fixes Version 5.0.2 - Improved project save speed in the Projucer - Added option to save individual exporters in the Projucer - Added the ability to create custom colour schemes for the Projucer’s code editor - Minor fixes to JUCE’s SVG parser - Various bug fixes in the way JUCE handles Hi-DPI monitors - Improved code browsing in Visual Studio Exports - Improved the handling of audio device buffer size changes on iOS - Fixed bug in the Win32 FileChooser dialog when selecting a nonexistent root drive - Fixed a Projucer crash when saving projects with no targets - Fixed a bug where Projucer generated Makefiles would not trigger a recompilation when header files had changed - The standalone plugin target is now compatible with effect plug-ins - Fixed an issue where it was not possible to use the live build engine on plugin projects - Improved the way the Projucer’s live-build engine searches for platform headers on Windows - Fixed an issue where the Projucer would complain about not having internet even if the user had a license - Fixed a use-after-free in the AUv3 wrapper - Fixed an issue where the channel layout would not be reported correctly in the AUv3 wrapper - Fixed a potential memory overrun issue when hosting VST2 plugins with more than eight channels - Fixed a problem with the Mac main menu bar showing menus in the wrong position - Various Projucer UI fixes - Various documentation fixes - Various minor improvements and bug fixes Version 5.0.1 - Fixed Windows live build engine on Visual Studio 2017 - Fixed memory-leak in Projucer live build engine - Fixed an issue where you could not paste your redeem serial number with Cmd+V on macOS - Fixed an issue where the Projucer would crash on linux due to missing symbols in WebKit - Minor Projucer UI improvements - Various minor improvements and bug fixes Version 5.0.0 - New licensing model - Projucer UI/UX overhaul - New look and feel (version 4) - New standalone plug-in format - Added support for Visual Studio 2017 - Added support for VST3 SDK 3.6.7 - Added support for Apple Inter-App Audio on iOS - Various Android stability and performance improvements - Added support for non-experimental gradle plug-in versions >= 2.2 and Android Studio 2.3 - Added support for closed-source third-party modules - Added support for Windows 10 Bluetooth LE MIDI devices - Modernised JUCE codebase to use C++11/14 features - Added support for Linux embedded platforms - Added support for WebBrowserComponent on Linux - Added support for IPv6 - Various minor improvements and bug fixes - Various documentation improvements Version 4.3.1 - Added support for iOS download tasks - Added support for AAX plug-in meters - Added support for dynamically disabling/enabling sidechains in ProTools - Re-introduced support for VST3 plug-ins reporting which VST2 plug-in they can replace - Added withRightX and withBottomY methods to Rectangle - Added support for windows 10 on screen keyboard - Added move semantics to AudioBuffer - Added colour coding scheme to module icons in the Projucer to indicate which type of license a module uses - Removed all deprecation warnings for macOS Sierra - Fixed multiple touch, pen and mouse input related bugs on Windows - Added submenu support to ComboBoxes and simplified the usage of ComboBoxes - Various minor improvements and bug fixes - Various documentation improvements Version 4.3.0 - Added API and examples for ROLI Blocks - Multiple Projucer live-build UI and diagnostics improvements - JUCE now supports hosting multi-bus plug-ins - BufferingAudioSource now supports pre-buffering (useful for offline processing) - Added microphone permissions switch to Projucer for iOS targets - Standalone wrappers now correctly save and restore midi settings - Various performance improvements to BigInteger - Fixed various FlexBox bugs - Added a workaround for the broken “Open Recent…” menu on os x - Various minor improvements and bug fixes - Various documentation improvements Version 4.2.4 - Pre-release of live build engine on Windows - Added FlexBox layout engine - Removed dependency on external Steinberg SDK when building and/or hosting VST2 plug-ins - Added support for MIDI network sessions in the iOS simulator - Added support for symmetric skew to Slider, NormalisableRange and SliderPropertyComponent - Projucer now asks the user what to do when it detects that the .jucer file was modified outside of the Projucer - Improved support for Windows 10 touch devices - Added begin/end iterator methods for ValueTree, for handy range-based-for loops over its children - Added support for recent mingw-w64 compilers - Added useful proportional Rectangle utility methods - Significantly improved the performance of BigInteger - Added support for expiring licenses to juce_tracktion_marketplace - Added support for retina mouse cursors on OS X - Added a new low-quality mode for the CameraDevice - Added pkg-config support for Linux - Projucer will now wrap your AAX plug-in in the bundle format expected Pro Tools on Windows - Multiple bug-fixes for AudioUnit parameter ids - Fixed a bug where AlertWindows weren’t always on top - Multiple fixes for web InputStreams - Various improvements to the live build engine - Various minor improvements and bug fixes - Various documentation improvements Version 4.2.3 - Various VST3 improvements: resizing VST3 windows, plug-in compatibility issues - Use NSURLSession on newer OS X versions - Add compatibility for VST 3 SDK update 3.6.6 - Miscellaneous fixes and improvements Version 4.2.1 - New class CachedValue, for providing easy and efficient access to ValueTree properties - Reduced audio plug-in binary sizes on OS X and added symbol-stripping option - Miscellaneous fixes and improvements Version 4.2 - Added support for AudioUnit v3 on OS X and iOS - Simplified the JUCE module format. Removed the json module definition files, and made it easier to manually add modules to projects. The format is fully described in the document juce/modules/JUCE Module Format.txt - iOS project support: added custom resource folders, custom xcassets, app capabilities, and screen orientation settings. - Deleted the Introjucer.. But don't panic! All of its functionality is now supplied by a more open-source version of the Projucer. By refactoring the closed-source LLVM compilation code into a DLL, we've been able to unify the Introjucer and Projucer into a single open-source project. This will allow everyone to compile the Projucer's IDE themselves, and having just one app instead of two will make things a lot less confusing! Version 4.1 - Added multi-bus support for audio plug-in clients - Added support for MIDI effect plug-ins (AU and AAX). - Added new example: Network Graphics Demo Version 4.0.3 - Added MPE (Multidimensional Polyphonic Expression) classes - Added full support for generating and parsing Midi RPN/NRPN messages - Made the LinearSmoothedValue class public - Miscellaneous fixes and minor improvements Version 4.0.2 - Miscellaneous fixes and house-keeping Version 4.0.1 - Initial release of the Projucer! - Full OSC support! - Android Studio exporting from the Introjucer - Android-M pro-audio low-latency i/o support - Bluetooth MIDI device support on iOS and Android - AudioSampleBuffer refactored into a templated class AudioBuffer, to allow 32 or 64 bit float support - Audio plugin and hosting now supports 64-bit data - Support for force-touch and pen pressure on iOS and Windows - Added easy sound-file playing methods to AudioDeviceManager - Many updates to Introjucer - Many new tutorials and examples Version 3.3.0 - New functions for Base64 conversion - New command-line options in the introjucer for trimming whitespace and replacing tabs in source files Version 3.2.0 - Major OpenGL performance/stability improvements - Performance improvements to FloatVectorOperations math functions - New FloatVectorOperations: abs, min, max, addWithMultiply, clip - Midi channel pressure support - New example projects ComponentTutorialExample, SimpleFFTExample, PluckedStringsDemo - New class ValueTreeSynchroniser, for remote-syncing multiple ValueTrees - HTTPS/SSL support on Linux - Added methods for degrees to radians conversions - Added Neon instruction set support for Android targets - JUCE ValueTree performance improvements - Linux and Android multi-monitor HiDPI support - Support the “display=none” attribute in SVG files - Support for text elements in SVG files - Added Whirlpool hash class to the cryptography module - Various improvements for parameter automation in VST, VST-3, AudioUnits and AAX - Various improvements to JUCE Synthesiser - Linux Code::Blocks project support - Multicast support - Add support to generate project version numbers from project git tags - Various updates to example projects - Stability improvements to re-order and resize code of plug-in windows - Support for external third-party native libraries on Android - Introjucer’s auto-update now displays release notes - Various Introjucer usability improvements - Support for in-memory fonts on Android - New FFT class - WASAPI exclusive mode support - More C++11 feature support macros - Performance improvements to XML parsing - Add compatibility for AAX SDK 2.2.0 - Added parameters to the ValueTree::Listener::valueTreeChildRemoved() and valueTreeChildOrderChanged() methods to include more info about exactly what changed - Over 400 minor changes, bug-fixes, documentation improvements, etc.