From d4762f1d9a8b4cd39d669997dd09df3f215a7fc6 Mon Sep 17 00:00:00 2001 From: jules Date: Wed, 9 May 2018 16:47:21 +0100 Subject: [PATCH 01/12] Fix for compile error with JUCE_ALLOW_STATIC_NULL_VARIABLES=0 --- examples/DemoRunner/DemoRunner.jucer | 4 ++-- examples/DemoRunner/JuceLibraryCode/AppConfig.h | 2 +- extras/Projucer/JuceLibraryCode/AppConfig.h | 2 +- extras/Projucer/Projucer.jucer | 4 ++-- modules/juce_core/containers/juce_Variant.cpp | 2 +- modules/juce_core/containers/juce_Variant.h | 2 +- modules/juce_core/files/juce_File.cpp | 2 +- modules/juce_core/files/juce_File.h | 6 +++--- modules/juce_core/native/juce_posix_SharedCode.h | 6 ++---- modules/juce_core/native/juce_win32_Files.cpp | 6 ++---- modules/juce_core/system/juce_PlatformDefs.h | 2 +- modules/juce_core/text/juce_String.cpp | 2 +- modules/juce_core/text/juce_String.h | 2 +- modules/juce_data_structures/values/juce_ValueTree.cpp | 2 +- modules/juce_data_structures/values/juce_ValueTree.h | 2 +- modules/juce_graphics/geometry/juce_AffineTransform.cpp | 2 +- modules/juce_graphics/geometry/juce_AffineTransform.h | 2 +- modules/juce_graphics/images/juce_Image.cpp | 2 +- modules/juce_graphics/images/juce_Image.h | 2 +- 19 files changed, 25 insertions(+), 29 deletions(-) diff --git a/examples/DemoRunner/DemoRunner.jucer b/examples/DemoRunner/DemoRunner.jucer index f4729cd8ce..32cb9a43b0 100644 --- a/examples/DemoRunner/DemoRunner.jucer +++ b/examples/DemoRunner/DemoRunner.jucer @@ -1,6 +1,6 @@ - @@ -258,7 +258,7 @@ useGlobalPath="0"/> - + diff --git a/examples/DemoRunner/JuceLibraryCode/AppConfig.h b/examples/DemoRunner/JuceLibraryCode/AppConfig.h index de08905c2f..8312cc5afd 100644 --- a/examples/DemoRunner/JuceLibraryCode/AppConfig.h +++ b/examples/DemoRunner/JuceLibraryCode/AppConfig.h @@ -203,7 +203,7 @@ #endif #ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES - //#define JUCE_ALLOW_STATIC_NULL_VARIABLES 1 + #define JUCE_ALLOW_STATIC_NULL_VARIABLES 0 #endif //============================================================================== diff --git a/extras/Projucer/JuceLibraryCode/AppConfig.h b/extras/Projucer/JuceLibraryCode/AppConfig.h index 1846127fb2..be68fba614 100644 --- a/extras/Projucer/JuceLibraryCode/AppConfig.h +++ b/extras/Projucer/JuceLibraryCode/AppConfig.h @@ -108,7 +108,7 @@ #endif #ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES - //#define JUCE_ALLOW_STATIC_NULL_VARIABLES 1 + #define JUCE_ALLOW_STATIC_NULL_VARIABLES 0 #endif //============================================================================== diff --git a/extras/Projucer/Projucer.jucer b/extras/Projucer/Projucer.jucer index 9444f7102f..bc95b51087 100644 --- a/extras/Projucer/Projucer.jucer +++ b/extras/Projucer/Projucer.jucer @@ -1,7 +1,7 @@ @@ -717,7 +717,7 @@ resource="0" file="Source/Wizards/jucer_TemplateThumbnailsComponent.h"/> - + diff --git a/modules/juce_core/containers/juce_Variant.cpp b/modules/juce_core/containers/juce_Variant.cpp index 43b8180ddc..4818cf7966 100644 --- a/modules/juce_core/containers/juce_Variant.cpp +++ b/modules/juce_core/containers/juce_Variant.cpp @@ -435,7 +435,7 @@ var::var() noexcept : type (&VariantType_Void::instance) {} var::var (const VariantType& t) noexcept : type (&t) {} var::~var() noexcept { type->cleanUp (value); } -JUCE_DECLARE_DEPRECATED_STATIC (const var var::null); +JUCE_DECLARE_DEPRECATED_STATIC (const var var::null;) //============================================================================== var::var (const var& valueToCopy) : type (valueToCopy.type) diff --git a/modules/juce_core/containers/juce_Variant.h b/modules/juce_core/containers/juce_Variant.h index 975c6781f0..a50118c8ec 100644 --- a/modules/juce_core/containers/juce_Variant.h +++ b/modules/juce_core/containers/juce_Variant.h @@ -282,7 +282,7 @@ public: empty var from a function by reference, but if you need to do that, it's easy enough to use a function-local static var and return that, avoiding any order-of-initialisation issues. */ - JUCE_DEPRECATED_STATIC (static const var null); + JUCE_DEPRECATED_STATIC (static const var null;) private: //============================================================================== diff --git a/modules/juce_core/files/juce_File.cpp b/modules/juce_core/files/juce_File.cpp index 1bf3258964..6d0b44c92b 100644 --- a/modules/juce_core/files/juce_File.cpp +++ b/modules/juce_core/files/juce_File.cpp @@ -63,7 +63,7 @@ File& File::operator= (File&& other) noexcept return *this; } -JUCE_DECLARE_DEPRECATED_STATIC (const File File::nonexistent); +JUCE_DECLARE_DEPRECATED_STATIC (const File File::nonexistent;) //============================================================================== static String removeEllipsis (const String& path) diff --git a/modules/juce_core/files/juce_File.h b/modules/juce_core/files/juce_File.h index 5c11921964..12a6ad799f 100644 --- a/modules/juce_core/files/juce_File.h +++ b/modules/juce_core/files/juce_File.h @@ -1053,9 +1053,9 @@ public: Use File::getSeparatorChar() and File::getSeparatorString(), and instead of File::nonexistent, just use File() or {}. */ - JUCE_DEPRECATED_STATIC (static const juce_wchar separator); - JUCE_DEPRECATED_STATIC (static const StringRef separatorString); - JUCE_DEPRECATED_STATIC (static const File nonexistent); + JUCE_DEPRECATED_STATIC (static const juce_wchar separator;) + JUCE_DEPRECATED_STATIC (static const StringRef separatorString;) + JUCE_DEPRECATED_STATIC (static const File nonexistent;) private: //============================================================================== diff --git a/modules/juce_core/native/juce_posix_SharedCode.h b/modules/juce_core/native/juce_posix_SharedCode.h index b10a127938..ce89f5ffe8 100644 --- a/modules/juce_core/native/juce_posix_SharedCode.h +++ b/modules/juce_core/native/juce_posix_SharedCode.h @@ -188,10 +188,8 @@ static MaxNumFileHandlesInitialiser maxNumFileHandlesInitialiser; #endif //============================================================================== -#ifndef JUCE_GCC - const juce_wchar File::separator = '/'; - const StringRef File::separatorString ("/"); -#endif +JUCE_DECLARE_DEPRECATED_STATIC (const juce_wchar File::separator = '/';) +JUCE_DECLARE_DEPRECATED_STATIC (const StringRef File::separatorString ("/");) juce_wchar File::getSeparatorChar() { return '/'; } StringRef File::getSeparatorString() { return "/"; } diff --git a/modules/juce_core/native/juce_win32_Files.cpp b/modules/juce_core/native/juce_win32_Files.cpp index 85e7f27a95..76ebcee0e1 100644 --- a/modules/juce_core/native/juce_win32_Files.cpp +++ b/modules/juce_core/native/juce_win32_Files.cpp @@ -158,10 +158,8 @@ namespace WindowsFileHelpers } //============================================================================== -#ifndef JUCE_GCC - const juce_wchar File::separator = '\\'; - const StringRef File::separatorString ("\\"); -#endif +JUCE_DECLARE_DEPRECATED_STATIC (const juce_wchar File::separator = '\\';) +JUCE_DECLARE_DEPRECATED_STATIC (const StringRef File::separatorString ("\\");) juce_wchar File::getSeparatorChar() { return '\\'; } StringRef File::getSeparatorString() { return "\\"; } diff --git a/modules/juce_core/system/juce_PlatformDefs.h b/modules/juce_core/system/juce_PlatformDefs.h index 0666bccf3e..995c2e8113 100644 --- a/modules/juce_core/system/juce_PlatformDefs.h +++ b/modules/juce_core/system/juce_PlatformDefs.h @@ -275,7 +275,7 @@ namespace juce #if JUCE_ALLOW_STATIC_NULL_VARIABLES #if ! (defined (DOXYGEN) || defined (JUCE_GCC) || (JUCE_MSVC && _MSC_VER <= 1900)) - #define JUCE_DEPRECATED_STATIC(valueDef) JUCE_DEPRECATED (valueDef) + #define JUCE_DEPRECATED_STATIC(valueDef) JUCE_DEPRECATED_ATTRIBUTE valueDef #if JUCE_MSVC #define JUCE_DECLARE_DEPRECATED_STATIC(valueDef) \ diff --git a/modules/juce_core/text/juce_String.cpp b/modules/juce_core/text/juce_String.cpp index 88d530aec5..5b52e8e4b7 100644 --- a/modules/juce_core/text/juce_String.cpp +++ b/modules/juce_core/text/juce_String.cpp @@ -235,7 +235,7 @@ private: } }; -JUCE_DECLARE_DEPRECATED_STATIC (const String String::empty); +JUCE_DECLARE_DEPRECATED_STATIC (const String String::empty;) //============================================================================== String::String() noexcept : text (&(emptyString.text)) diff --git a/modules/juce_core/text/juce_String.h b/modules/juce_core/text/juce_String.h index a778be1ce5..13686eb0d6 100644 --- a/modules/juce_core/text/juce_String.h +++ b/modules/juce_core/text/juce_String.h @@ -1247,7 +1247,7 @@ public: empty string from a function by reference, but if you need to do that, it's easy enough to use a function-local static String object and return that, avoiding any order-of-initialisation issues. */ - JUCE_DEPRECATED_STATIC (static const String empty); + JUCE_DEPRECATED_STATIC (static const String empty;) private: //============================================================================== diff --git a/modules/juce_data_structures/values/juce_ValueTree.cpp b/modules/juce_data_structures/values/juce_ValueTree.cpp index e40410d93f..90602687eb 100644 --- a/modules/juce_data_structures/values/juce_ValueTree.cpp +++ b/modules/juce_data_structures/values/juce_ValueTree.cpp @@ -579,7 +579,7 @@ ValueTree::ValueTree() noexcept { } -JUCE_DECLARE_DEPRECATED_STATIC (const ValueTree ValueTree::invalid); +JUCE_DECLARE_DEPRECATED_STATIC (const ValueTree ValueTree::invalid;) ValueTree::ValueTree (const Identifier& type) : object (new ValueTree::SharedObject (type)) { diff --git a/modules/juce_data_structures/values/juce_ValueTree.h b/modules/juce_data_structures/values/juce_ValueTree.h index b1cffbdae8..cf3533b93c 100644 --- a/modules/juce_data_structures/values/juce_ValueTree.h +++ b/modules/juce_data_structures/values/juce_ValueTree.h @@ -592,7 +592,7 @@ public: /* An invalid ValueTree that can be used if you need to return one as an error condition, etc. @deprecated If you need an empty ValueTree object, just use ValueTree() or {}. */ - JUCE_DEPRECATED_STATIC (static const ValueTree invalid); + JUCE_DEPRECATED_STATIC (static const ValueTree invalid;) private: //============================================================================== diff --git a/modules/juce_graphics/geometry/juce_AffineTransform.cpp b/modules/juce_graphics/geometry/juce_AffineTransform.cpp index e1c6b3fd55..1b508dad99 100644 --- a/modules/juce_graphics/geometry/juce_AffineTransform.cpp +++ b/modules/juce_graphics/geometry/juce_AffineTransform.cpp @@ -84,7 +84,7 @@ bool AffineTransform::isIdentity() const noexcept && mat11 == 1.0f; } -JUCE_DECLARE_DEPRECATED_STATIC (const AffineTransform AffineTransform::identity); +JUCE_DECLARE_DEPRECATED_STATIC (const AffineTransform AffineTransform::identity;) //============================================================================== AffineTransform AffineTransform::followedBy (const AffineTransform& other) const noexcept diff --git a/modules/juce_graphics/geometry/juce_AffineTransform.h b/modules/juce_graphics/geometry/juce_AffineTransform.h index e7461bc21f..77d747c6a5 100644 --- a/modules/juce_graphics/geometry/juce_AffineTransform.h +++ b/modules/juce_graphics/geometry/juce_AffineTransform.h @@ -273,7 +273,7 @@ public: /* A ready-to-use identity transform - now depracated. @deprecated If you need an identity transform, just use AffineTransform() or {}. */ - JUCE_DEPRECATED_STATIC (static const AffineTransform identity); + JUCE_DEPRECATED_STATIC (static const AffineTransform identity;) //============================================================================== /* The transform matrix is: diff --git a/modules/juce_graphics/images/juce_Image.cpp b/modules/juce_graphics/images/juce_Image.cpp index 6b478349b2..197839dda4 100644 --- a/modules/juce_graphics/images/juce_Image.cpp +++ b/modules/juce_graphics/images/juce_Image.cpp @@ -262,7 +262,7 @@ Image::~Image() { } -JUCE_DECLARE_DEPRECATED_STATIC (const Image Image::null); +JUCE_DECLARE_DEPRECATED_STATIC (const Image Image::null;) int Image::getReferenceCount() const noexcept { return image == nullptr ? 0 : image->getSharedCount(); } int Image::getWidth() const noexcept { return image == nullptr ? 0 : image->width; } diff --git a/modules/juce_graphics/images/juce_Image.h b/modules/juce_graphics/images/juce_Image.h index 74de5addf5..e9c8e83b57 100644 --- a/modules/juce_graphics/images/juce_Image.h +++ b/modules/juce_graphics/images/juce_Image.h @@ -417,7 +417,7 @@ public: /* A null Image object that can be used when you need to return an invalid image. @deprecated If you need a default-constructed var, just use Image() or {}. */ - JUCE_DEPRECATED_STATIC (static const Image null); + JUCE_DEPRECATED_STATIC (static const Image null;) private: //============================================================================== From 06c3674e510f991d88f881203aedd85a60fbced9 Mon Sep 17 00:00:00 2001 From: Lukasz Kozakiewicz Date: Tue, 29 May 2018 17:27:21 +0200 Subject: [PATCH 02/12] Camera: fix broken CameraDevice listener on Mac that would trigger only once always. --- modules/juce_video/native/juce_mac_CameraDevice.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/juce_video/native/juce_mac_CameraDevice.h b/modules/juce_video/native/juce_mac_CameraDevice.h index e60b59b095..60dc38d168 100644 --- a/modules/juce_video/native/juce_mac_CameraDevice.h +++ b/modules/juce_video/native/juce_mac_CameraDevice.h @@ -177,6 +177,9 @@ struct CameraDevice::Pimpl { const ScopedLock sl (listenerLock); listeners.call ([=] (Listener& l) { l.imageReceived (image); }); + + if (! listeners.isEmpty()) + triggerImageCapture(); } void triggerImageCapture() From fe6fa12f551357c2ba5a5cf1ca6041d084c9dee8 Mon Sep 17 00:00:00 2001 From: Tom Poole Date: Thu, 12 Jul 2018 08:46:49 +0100 Subject: [PATCH 03/12] AUv3: Fixed a bug enforcing legacy parameter IDs --- modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm b/modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm index 4950554957..d6dccab30e 100644 --- a/modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm +++ b/modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm @@ -1224,7 +1224,7 @@ private: AUParameterAddress address = generateAUParameterAddress (juceParam); - #if ! JUCE_FORCE_LEGACY_PARAMETER_AUTOMATION_TYPE + #if ! JUCE_FORCE_USE_LEGACY_PARAM_IDS // Consider yourself very unlucky if you hit this assertion. The hash codes of your // parameter ids are not unique. jassert (! paramMap.contains (static_cast (address))); From 97aa77961eeccc2fa661092a19526f9b6a10fc34 Mon Sep 17 00:00:00 2001 From: Tom Poole Date: Mon, 6 Aug 2018 16:37:00 +0100 Subject: [PATCH 04/12] AUv3: Fixed a bug setting discrete parameters from the GUI --- modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm | 4 +++- .../utilities/juce_AudioProcessorValueTreeState.cpp | 7 ++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm b/modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm index d6dccab30e..86e4193904 100644 --- a/modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm +++ b/modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm @@ -930,10 +930,12 @@ public: return; } - if (isPositiveAndBelow (idx, juceParameters.getNumParameters())) + if (auto* juceParam = juceParameters.getParamForIndex (idx)) { if (AUParameter* param = [paramTree.get() parameterWithAddress: getAUParameterAddressForIndex (idx)]) { + newValue *= getMaximumParameterValue (juceParam); + if (editorObserverToken != nullptr) [param setValue: newValue originator: editorObserverToken]; else diff --git a/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp b/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp index af86714488..3ef228a079 100644 --- a/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp +++ b/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp @@ -68,10 +68,11 @@ struct AudioProcessorValueTreeState::Parameter : public AudioProcessorParamete : text.getFloatValue()); } - String getText (float v, int length) const override + String getText (float normalisedValue, int /*length*/) const override { - return valueToTextFunction != nullptr ? valueToTextFunction (range.convertFrom0to1 (v)) - : AudioProcessorParameter::getText (v, length); + auto v = range.convertFrom0to1 (normalisedValue); + return valueToTextFunction != nullptr ? valueToTextFunction (v) + : String (v, 2); } int getNumSteps() const override From e3233ae230ac0c13f73ee2d08bd8f2c9b12c4b19 Mon Sep 17 00:00:00 2001 From: Tom Poole Date: Tue, 7 Aug 2018 11:24:59 +0100 Subject: [PATCH 05/12] APVTS: Fixed a bug mapping parameters defined by a NormalisableRange to a SliderAttachment --- .../utilities/juce_AudioProcessorValueTreeState.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp b/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp index 3ef228a079..1848ff2835 100644 --- a/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp +++ b/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp @@ -454,7 +454,7 @@ struct AudioProcessorValueTreeState::SliderAttachment::Pimpl : private Attached { NormalisableRange range (state.getParameterRange (paramID)); - if (range.interval != 0 || range.skew != 0) + if (range.interval != 0.0f || range.skew != 1.0f) { slider.setRange (range.start, range.end, range.interval); slider.setSkewFactor (range.skew, range.symmetricSkew); From 8ac062239173497a37b01a1439da7025e9464611 Mon Sep 17 00:00:00 2001 From: Tom Poole Date: Mon, 13 Aug 2018 11:10:30 +0100 Subject: [PATCH 06/12] AU: Fixed a bug with JUCE_FORCE_LEGACY_PARAM_IDS enabled --- modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm b/modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm index 68b25b757e..90e9cc307f 100644 --- a/modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm +++ b/modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm @@ -1928,7 +1928,9 @@ private: AudioProcessorParameter* getParameterForAUParameterID (AudioUnitParameterID address) const noexcept { - return paramMap[static_cast (address)]; + auto index = static_cast (address); + return forceUseLegacyParamIDs ? juceParameters.getParamForIndex (index) + : paramMap[index]; } //============================================================================== From 914870b57310340cd39f090935185a05b129d350 Mon Sep 17 00:00:00 2001 From: ed Date: Mon, 14 May 2018 17:01:54 +0100 Subject: [PATCH 07/12] Projucer: Fixed a crash when opening the editor colour scheme window --- .../jucer_EditorColourSchemeWindowComponent.h | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/extras/Projucer/Source/Application/Windows/jucer_EditorColourSchemeWindowComponent.h b/extras/Projucer/Source/Application/Windows/jucer_EditorColourSchemeWindowComponent.h index 9783247458..ac8a48e5dd 100644 --- a/extras/Projucer/Source/Application/Windows/jucer_EditorColourSchemeWindowComponent.h +++ b/extras/Projucer/Source/Application/Windows/jucer_EditorColourSchemeWindowComponent.h @@ -35,11 +35,9 @@ public: EditorColourSchemeWindowComponent() { if (getAppSettings().monospacedFontNames.size() == 0) - content.reset (new AppearanceEditor::FontScanPanel()); + changeContent (new AppearanceEditor::FontScanPanel()); else - content.reset (new AppearanceEditor::EditorPanel()); - - changeContent (content.get()); + changeContent (new AppearanceEditor::EditorPanel()); } void paint (Graphics& g) override @@ -115,9 +113,9 @@ private: const auto width = font.getStringWidth ("...."); return width == font.getStringWidth ("WWWW") - && width == font.getStringWidth ("0000") - && width == font.getStringWidth ("1111") - && width == font.getStringWidth ("iiii"); + && width == font.getStringWidth ("0000") + && width == font.getStringWidth ("1111") + && width == font.getStringWidth ("iiii"); } StringArray fontsToScan, fontsFound; From a88fb32b59ccbb22a48f6cc96196c73e732c411d Mon Sep 17 00:00:00 2001 From: ed Date: Fri, 11 May 2018 10:51:29 +0100 Subject: [PATCH 08/12] Projucer: Added a missing .get() to LabelHandler --- .../Source/ComponentEditor/Components/jucer_LabelHandler.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extras/Projucer/Source/ComponentEditor/Components/jucer_LabelHandler.h b/extras/Projucer/Source/ComponentEditor/Components/jucer_LabelHandler.h index 2bfc6bde3f..50872603a6 100644 --- a/extras/Projucer/Source/ComponentEditor/Components/jucer_LabelHandler.h +++ b/extras/Projucer/Source/ComponentEditor/Components/jucer_LabelHandler.h @@ -168,8 +168,8 @@ public: const String userCodeComment ("UserLabelCode_" + memberVariableName); callback - << "if (labelThatHasChanged == " << memberVariableName - << ")\n{\n //[" << userCodeComment << "] -- add your label text handling code here..\n //[/" << userCodeComment << "]\n}\n"; + << "if (labelThatHasChanged == " << memberVariableName << ".get())\n" + << "{\n //[" << userCodeComment << "] -- add your label text handling code here..\n //[/" << userCodeComment << "]\n}\n"; } } From 095a0db589b2b1a19ef54eee7cf19c4785094bf8 Mon Sep 17 00:00:00 2001 From: jules Date: Fri, 31 Aug 2018 16:52:54 +0100 Subject: [PATCH 09/12] Fixes to AudioBlock::copyTo and copyFrom --- modules/juce_dsp/containers/juce_AudioBlock.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/juce_dsp/containers/juce_AudioBlock.h b/modules/juce_dsp/containers/juce_AudioBlock.h index 36d710daa8..011de80077 100644 --- a/modules/juce_dsp/containers/juce_AudioBlock.h +++ b/modules/juce_dsp/containers/juce_AudioBlock.h @@ -275,7 +275,7 @@ public: auto maxChannels = jmin (static_cast (src.getNumChannels()), static_cast (numChannels)); for (size_t ch = 0; ch < maxChannels; ++ch) - FloatVectorOperations::copy (channelPtr (ch), + FloatVectorOperations::copy (channelPtr (ch) + dstPos, src.getReadPointer (static_cast (ch), static_cast (srcPos * sizeFactor)), n); @@ -299,7 +299,7 @@ public: for (size_t ch = 0; ch < maxChannels; ++ch) FloatVectorOperations::copy (dst.getWritePointer (static_cast (ch), static_cast (dstPos * sizeFactor)), - channelPtr (ch), n); + channelPtr (ch) + srcPos, n); return *this; } From 2be9bc95c2f2b0b25b09c562c26895ca580dd0c2 Mon Sep 17 00:00:00 2001 From: Tom Poole Date: Wed, 5 Sep 2018 16:31:35 +0100 Subject: [PATCH 10/12] Clarified the documentation for some LittleFoot functions --- modules/juce_blocks_basics/juce_LittleFootFunctions.dox | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/modules/juce_blocks_basics/juce_LittleFootFunctions.dox b/modules/juce_blocks_basics/juce_LittleFootFunctions.dox index eb6dd03680..1bd00b25d7 100644 --- a/modules/juce_blocks_basics/juce_LittleFootFunctions.dox +++ b/modules/juce_blocks_basics/juce_LittleFootFunctions.dox @@ -272,21 +272,25 @@ void handleButtonDown (int index); */ void handleButtonUp (int index); -/** Called when a control block button is pressed. +/** Call this when a control block button is pressed to trigger the buttons default behaviour. @param buttonIndex the index of the button @note Requires >= 0.2.5 firmware @note Only valid with a control block + + @see initControl onControlRelease */ void onControlPress (int buttonIndex); -/** Called when a control block button is released. +/** Call this when a control block button is released to trigger the buttons default behaviour. @param buttonIndex the index of the button @note Requires >= 0.2.5 firmware @note Only valid with a control block + + @see initControl onControlPress */ void onControlRelease (int buttonIndex); From efddea0effc31f0b24423aabb8b21cf97863938b Mon Sep 17 00:00:00 2001 From: Tom Poole Date: Mon, 10 Sep 2018 09:47:23 +0100 Subject: [PATCH 11/12] DSP: Fixed an uninitialised memory issue in the Convolution class --- modules/juce_dsp/frequency/juce_Convolution.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/juce_dsp/frequency/juce_Convolution.cpp b/modules/juce_dsp/frequency/juce_Convolution.cpp index 469985d895..b739de986d 100644 --- a/modules/juce_dsp/frequency/juce_Convolution.cpp +++ b/modules/juce_dsp/frequency/juce_Convolution.cpp @@ -104,6 +104,7 @@ struct ConvolutionEngine buffersInputSegments.clear(); buffersImpulseSegments.clear(); + bufferOutput.clear(); for (size_t i = 0; i < numInputSegments; ++i) { From 04c931ad569da9944aa7ac5f7e471fcfe15c5966 Mon Sep 17 00:00:00 2001 From: ed Date: Tue, 30 Oct 2018 12:49:28 +0000 Subject: [PATCH 12/12] Update README.md and add LICENSE.md --- LICENSE.md | 43 +++++++++++++++++++++ README.md | 110 ++++++++++++++++++++++++++++++----------------------- 2 files changed, 106 insertions(+), 47 deletions(-) create mode 100644 LICENSE.md diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000000..c60278be1e --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,43 @@ +# The JUCE 5 Library + +**BY DOWNLOADING, INSTALLING OR USING ANY PART OF THE JUCE LIBRARY, YOU AGREE +TO THE [JUCE 5 END-USER LICENSE AGREEMENT](https://www.juce.com/juce-5-licence) +AND [JUCE 5 PRIVACY POLICY](https://www.juce.com/juce-5-privacy-policy), WHICH +ARE BINDING AGREEMENTS BETWEEN YOU AND ROLI, LTD. IF YOU DO NOT AGREE TO THE +TERMS, DO NOT USE THE JUCE LIBRARY.** + +We now have tier-leveled license terms for JUCE 5, with different terms for +each available license: JUCE Personal (for developers or startup businesses +with revenue under 50K USD "Revenue Limit"; free), JUCE Indie (for small +businesses with under 200K Revenue Limit; $35/month), JUCE Pro (no Revenue +Limit; $65/month), and JUCE Educational (no Revenue Limit; free for bona fide +educational institutes). All licenses allow you to commercially release +applications so long as you do not exceed the Revenue Limit and pay applicable +Fees. Once your business hits the Revenue Limit for your JUCE license, you will +either have to upgrade your JUCE license or release your Applications under the +[GNU General Public License v.3](https://www.gnu.org/licenses/gpl-3.0.en.html), +which means, among other things, that your code can be freely copied and +distributed. + +You agree to give notice to the end-users of your Applications that we may +track the IP addresses associated with their use of the Applications using JUCE +solely for our internal purposes in providing JUCE, unless you are a paying +JUCE customer and opt-out of such tracking. You agree to fully comply with all +laws, including relating to the collection of information from children and the +[Children’s Online Privacy Protection Act +(COPPA)](https://www.ftc.gov/enforcement/rules/rulemaking-regulatory-reform-proceedings/childrens-online-privacy-protection-rule). + +JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER +EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE, ARE DISCLAIMED. + +The juce_audio_basics, juce_audio_devices, juce_blocks_basics, juce_core and +juce_events modules are permissively licensed under the terms of the [ISC +license](http://www.isc.org/downloads/software-support-policy/isc-license). + +For more information, visit the website: +[www.juce.com](https://www.juce.com) + +FULL JUCE TERMS: +- [JUCE 5 END-USER LICENSE AGREEMENT](https://www.juce.com/juce-5-licence) +- [JUCE 5 PRIVACY POLICY](https://www.juce.com/juce-5-privacy-policy) \ No newline at end of file diff --git a/README.md b/README.md index 2bfc4c7bc4..7cd17e04ee 100644 --- a/README.md +++ b/README.md @@ -1,47 +1,63 @@ -# The JUCE 5 Library - -**BY DOWNLOADING, INSTALLING OR USING ANY PART OF THE JUCE LIBRARY, YOU AGREE -TO THE [JUCE 5 END-USER LICENSE AGREEMENT](https://www.juce.com/juce-5-licence) -AND [JUCE 5 PRIVACY POLICY](https://www.juce.com/juce-5-privacy-policy), WHICH -ARE BINDING AGREEMENTS BETWEEN YOU AND ROLI, LTD. IF YOU DO NOT AGREE TO THE -TERMS, DO NOT USE THE JUCE LIBRARY.** - -JUCE is an all-encompassing C++ framework for developing cross-platform -software. JUCE is used by hundreds of companies to develop powerful, -cross-platform audio, interactive, embedded or graphic applications. - -We now have tier-leveled license terms for JUCE 5, with different terms for -each available license: JUCE Personal (for developers or startup businesses -with revenue under 50K USD "Revenue Limit"; free), JUCE Indie (for small -businesses with under 200K Revenue Limit; $35/month), JUCE Pro (no Revenue -Limit; $65/month), and JUCE Educational (no Revenue Limit; free for bona fide -educational institutes). All licenses allow you to commercially release -applications so long as you do not exceed the Revenue Limit and pay applicable -Fees. Once your business hits the Revenue Limit for your JUCE license, you will -either have to upgrade your JUCE license or release your Applications under the -[GNU General Public License v.3](https://www.gnu.org/licenses/gpl-3.0.en.html), -which means, among other things, that your code can be freely copied and -distributed. - -You agree to give notice to the end-users of your Applications that we may -track the IP addresses associated with their use of the Applications using JUCE -solely for our internal purposes in providing JUCE, unless you are a paying -JUCE customer and opt-out of such tracking. You agree to fully comply with all -laws, including relating to the collection of information from children and the -[Children’s Online Privacy Protection Act -(COPPA)](https://www.ftc.gov/enforcement/rules/rulemaking-regulatory-reform-proceedings/childrens-online-privacy-protection-rule). - -JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER -EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE, ARE DISCLAIMED. - -The juce_audio_basics, juce_audio_devices, juce_blocks_basics, juce_core and -juce_events modules are permissively licensed under the terms of the [ISC -license](http://www.isc.org/downloads/software-support-policy/isc-license). - -For more information, visit the website: -[www.juce.com](https://www.juce.com) - -FULL JUCE TERMS: -- [JUCE 5 END-USER LICENSE AGREEMENT](https://www.juce.com/juce-5-licence) -- [JUCE 5 PRIVACY POLICY](https://www.juce.com/juce-5-privacy-policy) +![alt text](https://d30pueezughrda.cloudfront.net/juce/JUCE_banner.png "JUCE") + +JUCE is an open-source cross-platform C++ application framework used for rapidly +developing high quality desktop and mobile applications, including VST, AU (and AUv3), +RTAS and AAX audio plug-ins. JUCE can be easily integrated with existing projects or can +be used as a project generation tool via the [Projucer](https://juce.com/discover/projucer), +which supports exporting projects for Xcode (macOS and iOS), Visual Studio, Android Studio, +Code::Blocks, CLion and Linux Makefiles as well as containing a source code editor and +live-coding engine which can be used for rapid prototyping. + +## Getting Started +The JUCE repository contains a [master](https://github.com/weareroli/JUCE/tree/master) +and [develop](https://github.com/weareroli/JUCE/tree/develop) branch. The develop branch +contains the latest bugfixes and features and is periodically merged into the master +branch in stable [tagged releases](https://github.com/WeAreROLI/JUCE/releases) +(the latest release containing pre-built binaries can be also downloaded from the +[JUCE website](https://shop.juce.com/get-juce)). + +The repository doesn't contain a pre-built Projucer so you will need to build it +for your platform - Xcode, Visual Studio and Linux Makefile projects are located in +[extras/Projucer/Builds](/extras/Projucer/Builds) +(the minumum system requirements are listed in the __System Requirements__ section below). +The Projucer can then be used to create new JUCE projects, view tutorials and run examples. +It is also possible to include the JUCE modules source code in an existing project directly, +or build them into a static or dynamic library which can be linked into a project. + +For further help getting started, please refer to the JUCE +[documentation](https://juce.com/learn/documentation) and +[tutorials](https://juce.com/learn/tutorials). + +## System Requirements +#### Building JUCE Projects +- __macOS__: macOS 10.11 and Xcode 7.3.1 +- __Windows__: Windows 8.1 and Visual Studio 2013 64-bit +- __Linux__: GCC 5.0 + +#### Minimum Deployment Targets +- __macOS__: macOS 10.7 +- __Windows__: Windows Vista +- __Linux__: Mainstream Linux distributions + +## Contributing +For bug reports and features requests, please visit the [JUCE Forum](https://forum.juce.com/) - +the JUCE developers are active there and will read every post and respond accordingly. When +submitting a bug report, please ensure that it follows the +[issue template](/.github/ISSUE_TEMPLATE.txt). +We don't accept third party GitHub pull requests directly due to copyright restrictions +but if you would like to contribute any changes please contact us. + +## License +The core JUCE modules (juce_audio_basics, juce_audio_devices, juce_blocks_basics, juce_core +and juce_events) are permissively licensed under the terms of the +[ISC license](http://www.isc.org/downloads/software-support-policy/isc-license/). +Other modules are covered by a +[GPL/Commercial license](https://www.gnu.org/licenses/gpl-3.0.en.html). + +There are multiple commercial licensing tiers for JUCE 5, with different terms for each: +- JUCE Personal (developers or startup businesses with revenue under 50K USD) - free +- JUCE Indie (small businesses with revenue under 200K USD) - $35/month +- JUCE Pro (no revenue limit) - $65/month +- JUCE Eductational (no revenue limit) - free for bona fide educational institutes + +For full terms see [LICENSE.md](LICENSE.md). \ No newline at end of file