Browse Source

Update juce sources to stable juce6 release (DISTRHO version)

Signed-off-by: falkTX <falktx@falktx.com>
tags/v2.2.0-RC1
falkTX 4 years ago
parent
commit
0bd8c8175d
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
100 changed files with 1089 additions and 536 deletions
  1. +1
    -1
      source/modules/juce_audio_basics/juce_audio_basics.h
  2. +5
    -1
      source/modules/juce_audio_basics/midi/juce_MidiBuffer.h
  3. +6
    -10
      source/modules/juce_audio_basics/midi/juce_MidiKeyboardState.cpp
  4. +40
    -50
      source/modules/juce_audio_basics/midi/juce_MidiKeyboardState.h
  5. +11
    -4
      source/modules/juce_audio_basics/utilities/juce_GenericInterpolator.h
  6. +14
    -7
      source/modules/juce_audio_basics/utilities/juce_Interpolators.cpp
  7. +19
    -4
      source/modules/juce_audio_basics/utilities/juce_Interpolators.h
  8. +2
    -2
      source/modules/juce_audio_basics/utilities/juce_SmoothedValue.h
  9. +11
    -4
      source/modules/juce_audio_basics/utilities/juce_WindowedSincInterpolator.cpp
  10. +1
    -1
      source/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp
  11. +1
    -1
      source/modules/juce_audio_devices/juce_audio_devices.h
  12. +5
    -0
      source/modules/juce_audio_devices/midi_io/juce_MidiDevices.h
  13. +5
    -0
      source/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp
  14. +10
    -2
      source/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h
  15. +47
    -74
      source/modules/juce_audio_devices/native/juce_android_Oboe.cpp
  16. +1
    -1
      source/modules/juce_audio_devices/native/juce_android_OpenSL.cpp
  17. +6
    -6
      source/modules/juce_audio_devices/native/juce_win32_Midi.cpp
  18. +1
    -1
      source/modules/juce_audio_devices/native/juce_win32_WASAPI.cpp
  19. +11
    -4
      source/modules/juce_audio_processors/format/juce_AudioPluginFormat.cpp
  20. +12
    -5
      source/modules/juce_audio_processors/format/juce_AudioPluginFormat.h
  21. +11
    -4
      source/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp
  22. +11
    -4
      source/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h
  23. +11
    -4
      source/modules/juce_audio_processors/format_types/juce_AU_Shared.h
  24. +11
    -4
      source/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h
  25. +12
    -5
      source/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm
  26. +11
    -4
      source/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp
  27. +11
    -4
      source/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h
  28. +11
    -4
      source/modules/juce_audio_processors/format_types/juce_LegacyAudioParameter.cpp
  29. +11
    -4
      source/modules/juce_audio_processors/format_types/juce_VST3Common.h
  30. +11
    -4
      source/modules/juce_audio_processors/format_types/juce_VST3Headers.h
  31. +12
    -5
      source/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp
  32. +11
    -4
      source/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h
  33. +11
    -4
      source/modules/juce_audio_processors/format_types/juce_VSTCommon.h
  34. +11
    -4
      source/modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h
  35. +11
    -4
      source/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp
  36. +11
    -4
      source/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h
  37. +11
    -4
      source/modules/juce_audio_processors/juce_audio_processors.cpp
  38. +12
    -5
      source/modules/juce_audio_processors/juce_audio_processors.h
  39. +11
    -4
      source/modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp
  40. +11
    -4
      source/modules/juce_audio_processors/processors/juce_AudioPluginInstance.h
  41. +12
    -5
      source/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp
  42. +12
    -5
      source/modules/juce_audio_processors/processors/juce_AudioProcessor.h
  43. +11
    -4
      source/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp
  44. +11
    -4
      source/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h
  45. +17
    -11
      source/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp
  46. +13
    -6
      source/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h
  47. +11
    -4
      source/modules/juce_audio_processors/processors/juce_AudioProcessorListener.h
  48. +11
    -4
      source/modules/juce_audio_processors/processors/juce_AudioProcessorParameter.h
  49. +11
    -4
      source/modules/juce_audio_processors/processors/juce_AudioProcessorParameterGroup.cpp
  50. +11
    -4
      source/modules/juce_audio_processors/processors/juce_AudioProcessorParameterGroup.h
  51. +11
    -4
      source/modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.cpp
  52. +11
    -4
      source/modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.h
  53. +11
    -4
      source/modules/juce_audio_processors/processors/juce_PluginDescription.cpp
  54. +11
    -4
      source/modules/juce_audio_processors/processors/juce_PluginDescription.h
  55. +11
    -4
      source/modules/juce_audio_processors/scanning/juce_KnownPluginList.cpp
  56. +11
    -4
      source/modules/juce_audio_processors/scanning/juce_KnownPluginList.h
  57. +11
    -4
      source/modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.cpp
  58. +11
    -4
      source/modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.h
  59. +11
    -4
      source/modules/juce_audio_processors/scanning/juce_PluginListComponent.cpp
  60. +11
    -4
      source/modules/juce_audio_processors/scanning/juce_PluginListComponent.h
  61. +13
    -6
      source/modules/juce_audio_processors/utilities/juce_AudioParameterBool.cpp
  62. +15
    -8
      source/modules/juce_audio_processors/utilities/juce_AudioParameterBool.h
  63. +16
    -9
      source/modules/juce_audio_processors/utilities/juce_AudioParameterChoice.cpp
  64. +15
    -8
      source/modules/juce_audio_processors/utilities/juce_AudioParameterChoice.h
  65. +13
    -6
      source/modules/juce_audio_processors/utilities/juce_AudioParameterFloat.cpp
  66. +15
    -8
      source/modules/juce_audio_processors/utilities/juce_AudioParameterFloat.h
  67. +16
    -9
      source/modules/juce_audio_processors/utilities/juce_AudioParameterInt.cpp
  68. +15
    -8
      source/modules/juce_audio_processors/utilities/juce_AudioParameterInt.h
  69. +11
    -4
      source/modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.cpp
  70. +11
    -4
      source/modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.h
  71. +49
    -15
      source/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp
  72. +16
    -9
      source/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h
  73. +11
    -4
      source/modules/juce_audio_processors/utilities/juce_ParameterAttachments.cpp
  74. +21
    -6
      source/modules/juce_audio_processors/utilities/juce_ParameterAttachments.h
  75. +11
    -4
      source/modules/juce_audio_processors/utilities/juce_RangedAudioParameter.cpp
  76. +11
    -4
      source/modules/juce_audio_processors/utilities/juce_RangedAudioParameter.h
  77. +1
    -1
      source/modules/juce_core/containers/juce_Variant.h
  78. +7
    -1
      source/modules/juce_core/files/juce_RangedDirectoryIterator.h
  79. +1
    -1
      source/modules/juce_core/juce_core.h
  80. +8
    -4
      source/modules/juce_core/memory/juce_AllocationHooks.cpp
  81. +8
    -4
      source/modules/juce_core/memory/juce_AllocationHooks.h
  82. +1
    -1
      source/modules/juce_core/misc/juce_ConsoleApplication.h
  83. +1
    -1
      source/modules/juce_core/misc/juce_RuntimePermissions.h
  84. +3
    -3
      source/modules/juce_core/native/juce_android_JNIHelpers.cpp
  85. +1
    -1
      source/modules/juce_core/native/juce_android_JNIHelpers.h
  86. +1
    -1
      source/modules/juce_core/network/juce_Socket.cpp
  87. +1
    -1
      source/modules/juce_core/text/juce_CharacterFunctions.h
  88. +4
    -3
      source/modules/juce_core/text/juce_String.cpp
  89. +5
    -7
      source/modules/juce_core/unit_tests/juce_UnitTest.cpp
  90. +15
    -2
      source/modules/juce_core/unit_tests/juce_UnitTest.h
  91. +11
    -4
      source/modules/juce_data_structures/app_properties/juce_ApplicationProperties.cpp
  92. +11
    -4
      source/modules/juce_data_structures/app_properties/juce_ApplicationProperties.h
  93. +11
    -4
      source/modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp
  94. +11
    -4
      source/modules/juce_data_structures/app_properties/juce_PropertiesFile.h
  95. +11
    -4
      source/modules/juce_data_structures/juce_data_structures.cpp
  96. +12
    -5
      source/modules/juce_data_structures/juce_data_structures.h
  97. +11
    -4
      source/modules/juce_data_structures/undomanager/juce_UndoManager.cpp
  98. +11
    -4
      source/modules/juce_data_structures/undomanager/juce_UndoManager.h
  99. +11
    -4
      source/modules/juce_data_structures/undomanager/juce_UndoableAction.h
  100. +11
    -4
      source/modules/juce_data_structures/values/juce_CachedValue.cpp

+ 1
- 1
source/modules/juce_audio_basics/juce_audio_basics.h View File

@@ -25,7 +25,7 @@
The block below describes the properties of this module, and is read by The block below describes the properties of this module, and is read by
the Projucer to automatically generate project code that uses it. the Projucer to automatically generate project code that uses it.
For details about the syntax and how to create or use a module, see the For details about the syntax and how to create or use a module, see the
JUCE Module Format.txt file.
JUCE Module Format.md file.
BEGIN_JUCE_MODULE_DECLARATION BEGIN_JUCE_MODULE_DECLARATION


+ 5
- 1
source/modules/juce_audio_basics/midi/juce_MidiBuffer.h View File

@@ -30,6 +30,8 @@ namespace juce
Instances of this class do *not* own the midi data bytes that they point to. Instances of this class do *not* own the midi data bytes that they point to.
Instead, they expect the midi data to live in a separate buffer that outlives Instead, they expect the midi data to live in a separate buffer that outlives
the MidiMessageMetadata instance. the MidiMessageMetadata instance.
@tags{Audio}
*/ */
struct MidiMessageMetadata final struct MidiMessageMetadata final
{ {
@@ -70,6 +72,8 @@ struct MidiMessageMetadata final
Logger::writeToLog (metadata.getMessage().getDescription()); Logger::writeToLog (metadata.getMessage().getDescription());
} }
@endcode @endcode
@tags{Audio}
*/ */
class JUCE_API MidiBufferIterator class JUCE_API MidiBufferIterator
{ {
@@ -92,7 +96,7 @@ public:
using value_type = MidiMessageMetadata; using value_type = MidiMessageMetadata;
using reference = MidiMessageMetadata; using reference = MidiMessageMetadata;
using pointer = void; using pointer = void;
using iterator_category = std::bidirectional_iterator_tag;
using iterator_category = std::input_iterator_tag;
/** Make this iterator point to the next message in the buffer. */ /** Make this iterator point to the next message in the buffer. */
MidiBufferIterator& operator++() noexcept; MidiBufferIterator& operator++() noexcept;


+ 6
- 10
source/modules/juce_audio_basics/midi/juce_MidiKeyboardState.cpp View File

@@ -76,9 +76,7 @@ void MidiKeyboardState::noteOnInternal (const int midiChannel, const int midiNo
if (isPositiveAndBelow (midiNoteNumber, 128)) if (isPositiveAndBelow (midiNoteNumber, 128))
{ {
noteStates[midiNoteNumber] = static_cast<uint16> (noteStates[midiNoteNumber] | (1 << (midiChannel - 1))); noteStates[midiNoteNumber] = static_cast<uint16> (noteStates[midiNoteNumber] | (1 << (midiChannel - 1)));
for (int i = listeners.size(); --i >= 0;)
listeners.getUnchecked(i)->handleNoteOn (this, midiChannel, midiNoteNumber, velocity);
listeners.call ([&] (Listener& l) { l.handleNoteOn (this, midiChannel, midiNoteNumber, velocity); });
} }
} }
@@ -101,9 +99,7 @@ void MidiKeyboardState::noteOffInternal (const int midiChannel, const int midiN
if (isNoteOn (midiChannel, midiNoteNumber)) if (isNoteOn (midiChannel, midiNoteNumber))
{ {
noteStates[midiNoteNumber] = static_cast<uint16> (noteStates[midiNoteNumber] & ~(1 << (midiChannel - 1))); noteStates[midiNoteNumber] = static_cast<uint16> (noteStates[midiNoteNumber] & ~(1 << (midiChannel - 1)));
for (int i = listeners.size(); --i >= 0;)
listeners.getUnchecked(i)->handleNoteOff (this, midiChannel, midiNoteNumber, velocity);
listeners.call ([&] (Listener& l) { l.handleNoteOff (this, midiChannel, midiNoteNumber, velocity); });
} }
} }
@@ -166,16 +162,16 @@ void MidiKeyboardState::processNextMidiBuffer (MidiBuffer& buffer,
} }
//============================================================================== //==============================================================================
void MidiKeyboardState::addListener (MidiKeyboardStateListener* const listener)
void MidiKeyboardState::addListener (Listener* listener)
{ {
const ScopedLock sl (lock); const ScopedLock sl (lock);
listeners.addIfNotAlreadyThere (listener);
listeners.add (listener);
} }
void MidiKeyboardState::removeListener (MidiKeyboardStateListener* const listener)
void MidiKeyboardState::removeListener (Listener* listener)
{ {
const ScopedLock sl (lock); const ScopedLock sl (lock);
listeners.removeFirstMatchingValue (listener);
listeners.remove (listener);
} }
} // namespace juce } // namespace juce

+ 40
- 50
source/modules/juce_audio_basics/midi/juce_MidiKeyboardState.h View File

@@ -23,51 +23,6 @@
namespace juce namespace juce
{ {
class MidiKeyboardState;
//==============================================================================
/**
Receives events from a MidiKeyboardState object.
@see MidiKeyboardState
@tags{Audio}
*/
class JUCE_API MidiKeyboardStateListener
{
public:
//==============================================================================
MidiKeyboardStateListener() = default;
virtual ~MidiKeyboardStateListener() = default;
//==============================================================================
/** Called when one of the MidiKeyboardState's keys is pressed.
This will be called synchronously when the state is either processing a
buffer in its MidiKeyboardState::processNextMidiBuffer() method, or
when a note is being played with its MidiKeyboardState::noteOn() method.
Note that this callback could happen from an audio callback thread, so be
careful not to block, and avoid any UI activity in the callback.
*/
virtual void handleNoteOn (MidiKeyboardState* source,
int midiChannel, int midiNoteNumber, float velocity) = 0;
/** Called when one of the MidiKeyboardState's keys is released.
This will be called synchronously when the state is either processing a
buffer in its MidiKeyboardState::processNextMidiBuffer() method, or
when a note is being played with its MidiKeyboardState::noteOff() method.
Note that this callback could happen from an audio callback thread, so be
careful not to block, and avoid any UI activity in the callback.
*/
virtual void handleNoteOff (MidiKeyboardState* source,
int midiChannel, int midiNoteNumber, float velocity) = 0;
};
//============================================================================== //==============================================================================
/** /**
Represents a piano keyboard, keeping track of which keys are currently pressed. Represents a piano keyboard, keeping track of which keys are currently pressed.
@@ -180,27 +135,62 @@ public:
bool injectIndirectEvents); bool injectIndirectEvents);
//============================================================================== //==============================================================================
/** Receives events from a MidiKeyboardState object. */
class Listener
{
public:
//==============================================================================
virtual ~Listener() = default;
//==============================================================================
/** Called when one of the MidiKeyboardState's keys is pressed.
This will be called synchronously when the state is either processing a
buffer in its MidiKeyboardState::processNextMidiBuffer() method, or
when a note is being played with its MidiKeyboardState::noteOn() method.
Note that this callback could happen from an audio callback thread, so be
careful not to block, and avoid any UI activity in the callback.
*/
virtual void handleNoteOn (MidiKeyboardState* source,
int midiChannel, int midiNoteNumber, float velocity) = 0;
/** Called when one of the MidiKeyboardState's keys is released.
This will be called synchronously when the state is either processing a
buffer in its MidiKeyboardState::processNextMidiBuffer() method, or
when a note is being played with its MidiKeyboardState::noteOff() method.
Note that this callback could happen from an audio callback thread, so be
careful not to block, and avoid any UI activity in the callback.
*/
virtual void handleNoteOff (MidiKeyboardState* source,
int midiChannel, int midiNoteNumber, float velocity) = 0;
};
/** Registers a listener for callbacks when keys go up or down. /** Registers a listener for callbacks when keys go up or down.
@see removeListener @see removeListener
*/ */
void addListener (MidiKeyboardStateListener* listener);
void addListener (Listener* listener);
/** Deregisters a listener. /** Deregisters a listener.
@see addListener @see addListener
*/ */
void removeListener (MidiKeyboardStateListener* listener);
void removeListener (Listener* listener);
private: private:
//============================================================================== //==============================================================================
CriticalSection lock; CriticalSection lock;
uint16 noteStates[128];
std::atomic<uint16> noteStates[128];
MidiBuffer eventsToAdd; MidiBuffer eventsToAdd;
Array <MidiKeyboardStateListener*> listeners;
ListenerList<Listener> listeners;
void noteOnInternal (int midiChannel, int midiNoteNumber, float velocity);
void noteOnInternal (int midiChannel, int midiNoteNumber, float velocity);
void noteOffInternal (int midiChannel, int midiNoteNumber, float velocity); void noteOffInternal (int midiChannel, int midiNoteNumber, float velocity);
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MidiKeyboardState) JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MidiKeyboardState)
}; };
using MidiKeyboardStateListener = MidiKeyboardState::Listener;
} // namespace juce } // namespace juce

+ 11
- 4
source/modules/juce_audio_basics/utilities/juce_GenericInterpolator.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 14
- 7
source/modules/juce_audio_basics/utilities/juce_Interpolators.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
@@ -33,7 +40,7 @@ private:
template<typename InterpolatorType> template<typename InterpolatorType>
void runInterplatorTests (const String& interpolatorName) void runInterplatorTests (const String& interpolatorName)
{ {
auto createGaussian = [](std::vector<float>& destination, float scale, float centreInSamples, float width)
auto createGaussian = [] (std::vector<float>& destination, float scale, float centreInSamples, float width)
{ {
for (size_t i = 0; i < destination.size(); ++i) for (size_t i = 0; i < destination.size(); ++i)
{ {
@@ -44,7 +51,7 @@ private:
FloatVectorOperations::multiply (destination.data(), scale, (int) destination.size()); FloatVectorOperations::multiply (destination.data(), scale, (int) destination.size());
}; };
auto findGaussianPeak = [](const std::vector<float>& input) -> float
auto findGaussianPeak = [] (const std::vector<float>& input) -> float
{ {
auto max = std::max_element (std::begin (input), std::end (input)); auto max = std::max_element (std::begin (input), std::end (input));
auto maxPrev = max - 1; auto maxPrev = max - 1;
@@ -55,7 +62,7 @@ private:
return quadraticMaxLoc + (float) std::distance (std::begin (input), max); return quadraticMaxLoc + (float) std::distance (std::begin (input), max);
}; };
auto expectAllElementsWithin = [this](const std::vector<float>& v1, const std::vector<float>& v2, float tolerance)
auto expectAllElementsWithin = [this] (const std::vector<float>& v1, const std::vector<float>& v2, float tolerance)
{ {
expectEquals ((int) v1.size(), (int) v2.size()); expectEquals ((int) v1.size(), (int) v2.size());


+ 19
- 4
source/modules/juce_audio_basics/utilities/juce_Interpolators.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
@@ -19,6 +26,14 @@
namespace juce namespace juce
{ {
/**
A collection of different interpolators for resampling streams of floats.
@see GenericInterpolator, WindowedSincInterpolator, LagrangeInterpolator,
CatmullRomInterpolator, LinearInterpolator, ZeroOrderHoldInterpolator
@tags{Audio}
*/
class Interpolators class Interpolators
{ {
private: private:


+ 2
- 2
source/modules/juce_audio_basics/utilities/juce_SmoothedValue.h View File

@@ -522,8 +522,8 @@ public:
return result; return result;
}; };
auto compareData = [this](const AudioBuffer<float>& test,
const AudioBuffer<float>& reference)
auto compareData = [this] (const AudioBuffer<float>& test,
const AudioBuffer<float>& reference)
{ {
for (int i = 0; i < test.getNumSamples(); ++i) for (int i = 0; i < test.getNumSamples(); ++i)
expectWithinAbsoluteError (test.getSample (0, i), expectWithinAbsoluteError (test.getSample (0, i),


+ 11
- 4
source/modules/juce_audio_basics/utilities/juce_WindowedSincInterpolator.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 1
- 1
source/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp View File

@@ -517,7 +517,7 @@ AudioIODeviceType* AudioDeviceManager::getCurrentDeviceTypeObject() const
static void updateSetupChannels (AudioDeviceManager::AudioDeviceSetup& setup, int defaultNumIns, int defaultNumOuts) static void updateSetupChannels (AudioDeviceManager::AudioDeviceSetup& setup, int defaultNumIns, int defaultNumOuts)
{ {
auto updateChannels = [](const String& deviceName, BigInteger& channels, int defaultNumChannels)
auto updateChannels = [] (const String& deviceName, BigInteger& channels, int defaultNumChannels)
{ {
if (deviceName.isEmpty()) if (deviceName.isEmpty())
{ {


+ 1
- 1
source/modules/juce_audio_devices/juce_audio_devices.h View File

@@ -25,7 +25,7 @@
The block below describes the properties of this module, and is read by The block below describes the properties of this module, and is read by
the Projucer to automatically generate project code that uses it. the Projucer to automatically generate project code that uses it.
For details about the syntax and how to create or use a module, see the For details about the syntax and how to create or use a module, see the
JUCE Module Format.txt file.
JUCE Module Format.md file.
BEGIN_JUCE_MODULE_DECLARATION BEGIN_JUCE_MODULE_DECLARATION


+ 5
- 0
source/modules/juce_audio_devices/midi_io/juce_MidiDevices.h View File

@@ -337,6 +337,11 @@ public:
*/ */
void stopBackgroundThread(); void stopBackgroundThread();
/** Returns true if the background thread used to send blocks of data is running.
@see startBackgroundThread, stopBackgroundThread
*/
bool isBackgroundThreadRunning() const noexcept { return isThreadRunning(); }
//============================================================================== //==============================================================================
/** Deprecated. */ /** Deprecated. */
static StringArray getDevices(); static StringArray getDevices();


+ 5
- 0
source/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp View File

@@ -128,6 +128,11 @@ void MidiMessageCollector::removeNextBlockOfMessages (MidiBuffer& destBuffer,
} }
} }
void MidiMessageCollector::ensureStorageAllocated (size_t bytes)
{
incomingMessages.ensureSize (bytes);
}
//============================================================================== //==============================================================================
void MidiMessageCollector::handleNoteOn (MidiKeyboardState*, int midiChannel, int midiNoteNumber, float velocity) void MidiMessageCollector::handleNoteOn (MidiKeyboardState*, int midiChannel, int midiNoteNumber, float velocity)
{ {


+ 10
- 2
source/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h View File

@@ -28,14 +28,14 @@ namespace juce
Collects incoming realtime MIDI messages and turns them into blocks suitable for Collects incoming realtime MIDI messages and turns them into blocks suitable for
processing by a block-based audio callback. processing by a block-based audio callback.
The class can also be used as either a MidiKeyboardStateListener or a MidiInputCallback
The class can also be used as either a MidiKeyboardState::Listener or a MidiInputCallback
so it can easily use a midi input or keyboard component as its source. so it can easily use a midi input or keyboard component as its source.
@see MidiMessage, MidiInput @see MidiMessage, MidiInput
@tags{Audio} @tags{Audio}
*/ */
class JUCE_API MidiMessageCollector : public MidiKeyboardStateListener,
class JUCE_API MidiMessageCollector : public MidiKeyboardState::Listener,
public MidiInputCallback public MidiInputCallback
{ {
public: public:
@@ -80,6 +80,14 @@ public:
*/ */
void removeNextBlockOfMessages (MidiBuffer& destBuffer, int numSamples); void removeNextBlockOfMessages (MidiBuffer& destBuffer, int numSamples);
/** Preallocates storage for collected messages.
This can be called before audio processing begins to ensure that there
is sufficient space for the expected MIDI messages, in order to avoid
allocations within the audio callback.
*/
void ensureStorageAllocated (size_t bytes);
//============================================================================== //==============================================================================
/** @internal */ /** @internal */


+ 47
- 74
source/modules/juce_audio_devices/native/juce_android_Oboe.cpp View File

@@ -91,33 +91,43 @@ struct OboeAudioIODeviceBufferHelpers<float>
static void convertFromOboe (const float* srcInterleaved, AudioBuffer<float>& audioBuffer, int numSamples) static void convertFromOboe (const float* srcInterleaved, AudioBuffer<float>& audioBuffer, int numSamples)
{ {
// No need to convert, we instructed the buffer to point to the src data directly already
jassert (audioBuffer.getWritePointer (0) != srcInterleaved);
auto numChannels = audioBuffer.getNumChannels();
for (int i = 0; i < audioBuffer.getNumChannels(); ++i)
if (numChannels > 0)
{ {
using DstSampleType = AudioData::Pointer<AudioData::Float32, AudioData::NativeEndian, AudioData::NonInterleaved, AudioData::NonConst>;
using SrcSampleType = AudioData::Pointer<AudioData::Float32, AudioData::NativeEndian, AudioData::Interleaved, AudioData::Const>;
// No need to convert, we instructed the buffer to point to the src data directly already
jassert (audioBuffer.getWritePointer (0) != srcInterleaved);
DstSampleType dstData (audioBuffer.getWritePointer (i));
SrcSampleType srcData (srcInterleaved + i, audioBuffer.getNumChannels());
dstData.convertSamples (srcData, numSamples);
for (int i = 0; i < numChannels; ++i)
{
using DstSampleType = AudioData::Pointer<AudioData::Float32, AudioData::NativeEndian, AudioData::NonInterleaved, AudioData::NonConst>;
using SrcSampleType = AudioData::Pointer<AudioData::Float32, AudioData::NativeEndian, AudioData::Interleaved, AudioData::Const>;
DstSampleType dstData (audioBuffer.getWritePointer (i));
SrcSampleType srcData (srcInterleaved + i, audioBuffer.getNumChannels());
dstData.convertSamples (srcData, numSamples);
}
} }
} }
static void convertToOboe (const AudioBuffer<float>& audioBuffer, float* dstInterleaved, int numSamples) static void convertToOboe (const AudioBuffer<float>& audioBuffer, float* dstInterleaved, int numSamples)
{ {
// No need to convert, we instructed the buffer to point to the src data directly already
jassert (audioBuffer.getReadPointer (0) != dstInterleaved);
auto numChannels = audioBuffer.getNumChannels();
for (int i = 0; i < audioBuffer.getNumChannels(); ++i)
if (numChannels > 0)
{ {
using DstSampleType = AudioData::Pointer<AudioData::Float32, AudioData::NativeEndian, AudioData::Interleaved, AudioData::NonConst>;
using SrcSampleType = AudioData::Pointer<AudioData::Float32, AudioData::NativeEndian, AudioData::NonInterleaved, AudioData::Const>;
// No need to convert, we instructed the buffer to point to the src data directly already
jassert (audioBuffer.getReadPointer (0) != dstInterleaved);
DstSampleType dstData (dstInterleaved + i, audioBuffer.getNumChannels());
SrcSampleType srcData (audioBuffer.getReadPointer (i));
dstData.convertSamples (srcData, numSamples);
for (int i = 0; i < numChannels; ++i)
{
using DstSampleType = AudioData::Pointer<AudioData::Float32, AudioData::NativeEndian, AudioData::Interleaved, AudioData::NonConst>;
using SrcSampleType = AudioData::Pointer<AudioData::Float32, AudioData::NativeEndian, AudioData::NonInterleaved, AudioData::Const>;
DstSampleType dstData (dstInterleaved + i, audioBuffer.getNumChannels());
SrcSampleType srcData (audioBuffer.getReadPointer (i));
dstData.convertSamples (srcData, numSamples);
}
} }
} }
}; };
@@ -148,8 +158,6 @@ public:
supportedOutputSampleRates (supportedOutputSampleRatesToUse), supportedOutputSampleRates (supportedOutputSampleRatesToUse),
maxNumOutputChannels (maxNumOutputChannelsToUse) maxNumOutputChannels (maxNumOutputChannelsToUse)
{ {
// At least an input or an output has to be supported by the device!
jassert (inputDeviceId != -1 || outputDeviceId != -1);
} }
~OboeAudioIODevice() override ~OboeAudioIODevice() override
@@ -380,7 +388,7 @@ private:
// We initially try to open a stream with a buffer size returned from // We initially try to open a stream with a buffer size returned from
// android.media.property.OUTPUT_FRAMES_PER_BUFFER property, but then we verify the actual // android.media.property.OUTPUT_FRAMES_PER_BUFFER property, but then we verify the actual
// size after the stream is open. // size after the stream is open.
OboeAudioIODevice::OboeStream tempStream (-1,
OboeAudioIODevice::OboeStream tempStream (oboe::kUnspecified,
oboe::Direction::Output, oboe::Direction::Output,
oboe::SharingMode::Exclusive, oboe::SharingMode::Exclusive,
2, 2,
@@ -695,7 +703,7 @@ private:
ignoreUnused (deviceId, numChannels, sampleRate, expectedBufferSize); ignoreUnused (deviceId, numChannels, sampleRate, expectedBufferSize);
ignoreUnused (streamFormat, bitDepth); ignoreUnused (streamFormat, bitDepth);
jassert (numChannels == nativeStream->getChannelCount());
jassert (numChannels == 0 || numChannels == nativeStream->getChannelCount());
jassert (expectedSampleRate == 0 || expectedSampleRate == nativeStream->getSampleRate()); jassert (expectedSampleRate == 0 || expectedSampleRate == nativeStream->getSampleRate());
jassert (format == nativeStream->getFormat()); jassert (format == nativeStream->getFormat());
} }
@@ -951,7 +959,7 @@ private:
Thread::sleep (1); Thread::sleep (1);
outputStream = nullptr; outputStream = nullptr;
outputStream.reset (new OboeStream (-1,
outputStream.reset (new OboeStream (oboe::kUnspecified,
oboe::Direction::Output, oboe::Direction::Output,
oboe::SharingMode::Exclusive, oboe::SharingMode::Exclusive,
numOutputChannels, numOutputChannels,
@@ -1058,9 +1066,6 @@ public:
StringArray getDeviceNames (bool wantInputNames) const override StringArray getDeviceNames (bool wantInputNames) const override
{ {
if (inputDevices.isEmpty() && outputDevices.isEmpty())
return StringArray (OboeAudioIODevice::oboeTypeName);
StringArray names; StringArray names;
for (auto& device : wantInputNames ? inputDevices : outputDevices) for (auto& device : wantInputNames ? inputDevices : outputDevices)
@@ -1069,36 +1074,8 @@ public:
return names; return names;
} }
int getDefaultDeviceIndex (bool forInput) const override
int getDefaultDeviceIndex (bool) const override
{ {
// No need to create a stream when only one default device is created.
if (! supportsDevicesInfo())
return 0;
if (forInput && (! RuntimePermissions::isGranted (RuntimePermissions::recordAudio)))
return 0;
// Create stream with a default device ID and query the stream for its device ID
using OboeStream = OboeAudioIODevice::OboeStream;
OboeStream tempStream (-1,
forInput ? oboe::Direction::Input : oboe::Direction::Output,
oboe::SharingMode::Shared,
forInput ? 1 : 2,
getAndroidSDKVersion() >= 21 ? oboe::AudioFormat::Float : oboe::AudioFormat::I16,
(int) AndroidHighPerformanceAudioHelpers::getNativeSampleRate(),
AndroidHighPerformanceAudioHelpers::getNativeBufferSizeHint(),
nullptr);
if (auto* nativeStream = tempStream.getNativeStream())
{
auto& devices = forInput ? inputDevices : outputDevices;
for (int i = 0; i < devices.size(); ++i)
if (devices.getReference (i).id == nativeStream->getDeviceId())
return i;
}
return 0; return 0;
} }
@@ -1127,12 +1104,8 @@ public:
auto outputDeviceInfo = getDeviceInfoForName (outputDeviceName, false); auto outputDeviceInfo = getDeviceInfoForName (outputDeviceName, false);
auto inputDeviceInfo = getDeviceInfoForName (inputDeviceName, true); auto inputDeviceInfo = getDeviceInfoForName (inputDeviceName, true);
if (outputDeviceInfo.name.isEmpty() && inputDeviceInfo.name.isEmpty())
{
// Invalid device name passed. It must be one of the names returned by getDeviceNames().
jassertfalse;
if (outputDeviceInfo.id < 0 && inputDeviceInfo.id < 0)
return nullptr; return nullptr;
}
auto& name = outputDeviceInfo.name.isNotEmpty() ? outputDeviceInfo.name auto& name = outputDeviceInfo.name.isNotEmpty() ? outputDeviceInfo.name
: inputDeviceInfo.name; : inputDeviceInfo.name;
@@ -1156,15 +1129,13 @@ public:
private: private:
void checkAvailableDevices() void checkAvailableDevices()
{ {
if (! supportsDevicesInfo())
{
auto sampleRates = OboeAudioIODevice::getDefaultSampleRates();
auto sampleRates = OboeAudioIODevice::getDefaultSampleRates();
inputDevices .add ({ OboeAudioIODevice::oboeTypeName, -1, sampleRates, 1 });
outputDevices.add ({ OboeAudioIODevice::oboeTypeName, -1, sampleRates, 2 });
inputDevices .add ({ "System Default (Input)", oboe::kUnspecified, sampleRates, 1 });
outputDevices.add ({ "System Default (Output)", oboe::kUnspecified, sampleRates, 2 });
if (! supportsDevicesInfo())
return; return;
}
auto* env = getEnv(); auto* env = getEnv();
@@ -1309,19 +1280,21 @@ public:
struct DeviceInfo struct DeviceInfo
{ {
String name; String name;
int id;
int id = -1;
Array<int> sampleRates; Array<int> sampleRates;
int numChannels; int numChannels;
}; };
DeviceInfo getDeviceInfoForName (const String& name, bool isInput) DeviceInfo getDeviceInfoForName (const String& name, bool isInput)
{ {
if (name.isEmpty())
return {};
for (auto& device : isInput ? inputDevices : outputDevices)
if (device.name == name)
return device;
if (name.isNotEmpty())
{
for (auto& device : isInput ? inputDevices : outputDevices)
{
if (device.name == name)
return device;
}
}
return {}; return {};
} }
@@ -1349,7 +1322,7 @@ class OboeRealtimeThread : private oboe::AudioStreamCallback
public: public:
OboeRealtimeThread() OboeRealtimeThread()
: testStream (new OboeStream (-1,
: testStream (new OboeStream (oboe::kUnspecified,
oboe::Direction::Output, oboe::Direction::Output,
oboe::SharingMode::Exclusive, oboe::SharingMode::Exclusive,
1, 1,
@@ -1362,7 +1335,7 @@ public:
// Fallback to I16 stream format if Float has not worked // Fallback to I16 stream format if Float has not worked
if (! testStream->openedOk()) if (! testStream->openedOk())
{ {
testStream.reset (new OboeStream (-1,
testStream.reset (new OboeStream (oboe::kUnspecified,
oboe::Direction::Output, oboe::Direction::Output,
oboe::SharingMode::Exclusive, oboe::SharingMode::Exclusive,
1, 1,
@@ -1415,7 +1388,7 @@ public:
threadEntryProc (threadUserPtr); threadEntryProc (threadUserPtr);
threadEntryProc = nullptr; threadEntryProc = nullptr;
MessageManager::callAsync ([this] () { delete this; });
MessageManager::callAsync ([this]() { delete this; });
return oboe::DataCallbackResult::Stop; return oboe::DataCallbackResult::Stop;
} }


+ 1
- 1
source/modules/juce_audio_devices/native/juce_android_OpenSL.cpp View File

@@ -1260,7 +1260,7 @@ public:
threadEntryProc = nullptr; threadEntryProc = nullptr;
(*player)->SetPlayState (player, SL_PLAYSTATE_STOPPED); (*player)->SetPlayState (player, SL_PLAYSTATE_STOPPED);
MessageManager::callAsync ([this] () { delete this; });
MessageManager::callAsync ([this]() { delete this; });
} }
} }


+ 6
- 6
source/modules/juce_audio_devices/native/juce_win32_Midi.cpp View File

@@ -990,19 +990,19 @@ private:
watcher->add_Added ( watcher->add_Added (
Callback<ITypedEventHandler<DeviceWatcher*, DeviceInformation*>> ( Callback<ITypedEventHandler<DeviceWatcher*, DeviceInformation*>> (
[handlerPtr](IDeviceWatcher*, IDeviceInformation* info) { return handlerPtr->addDevice (info); }
[handlerPtr] (IDeviceWatcher*, IDeviceInformation* info) { return handlerPtr->addDevice (info); }
).Get(), ).Get(),
&deviceAddedToken); &deviceAddedToken);
watcher->add_Removed ( watcher->add_Removed (
Callback<ITypedEventHandler<DeviceWatcher*, DeviceInformationUpdate*>> ( Callback<ITypedEventHandler<DeviceWatcher*, DeviceInformationUpdate*>> (
[handlerPtr](IDeviceWatcher*, IDeviceInformationUpdate* infoUpdate) { return handlerPtr->removeDevice (infoUpdate); }
[handlerPtr] (IDeviceWatcher*, IDeviceInformationUpdate* infoUpdate) { return handlerPtr->removeDevice (infoUpdate); }
).Get(), ).Get(),
&deviceRemovedToken); &deviceRemovedToken);
watcher->add_Updated ( watcher->add_Updated (
Callback<ITypedEventHandler<DeviceWatcher*, DeviceInformationUpdate*>> ( Callback<ITypedEventHandler<DeviceWatcher*, DeviceInformationUpdate*>> (
[handlerPtr](IDeviceWatcher*, IDeviceInformationUpdate* infoUpdate) { return handlerPtr->updateDevice (infoUpdate); }
[handlerPtr] (IDeviceWatcher*, IDeviceInformationUpdate* infoUpdate) { return handlerPtr->updateDevice (infoUpdate); }
).Get(), ).Get(),
&deviceUpdatedToken); &deviceUpdatedToken);
@@ -1118,7 +1118,7 @@ private:
if (devices.contains (removedDeviceId)) if (devices.contains (removedDeviceId))
{ {
auto& info = devices.getReference (removedDeviceId); auto& info = devices.getReference (removedDeviceId);
listeners.call ([&info](Listener& l) { l.bleDeviceDisconnected (info.containerID); });
listeners.call ([&info] (Listener& l) { l.bleDeviceDisconnected (info.containerID); });
devices.remove (removedDeviceId); devices.remove (removedDeviceId);
JUCE_WINRT_MIDI_LOG ("Removed BLE device: " << removedDeviceId); JUCE_WINRT_MIDI_LOG ("Removed BLE device: " << removedDeviceId);
} }
@@ -1165,7 +1165,7 @@ private:
if (info.isConnected && ! isConnected) if (info.isConnected && ! isConnected)
{ {
JUCE_WINRT_MIDI_LOG ("BLE device connection status change: " << updatedDeviceId << " " << info.containerID << " " << (isConnected ? "connected" : "disconnected")); JUCE_WINRT_MIDI_LOG ("BLE device connection status change: " << updatedDeviceId << " " << info.containerID << " " << (isConnected ? "connected" : "disconnected"));
listeners.call ([&info](Listener& l) { l.bleDeviceDisconnected (info.containerID); });
listeners.call ([&info] (Listener& l) { l.bleDeviceDisconnected (info.containerID); });
} }
info.isConnected = isConnected; info.isConnected = isConnected;
@@ -1580,7 +1580,7 @@ private:
auto hr = midiPort->add_MessageReceived ( auto hr = midiPort->add_MessageReceived (
Callback<ITypedEventHandler<MidiInPort*, MidiMessageReceivedEventArgs*>> ( Callback<ITypedEventHandler<MidiInPort*, MidiMessageReceivedEventArgs*>> (
[this](IMidiInPort*, IMidiMessageReceivedEventArgs* args) { return midiInMessageReceived (args); }
[this] (IMidiInPort*, IMidiMessageReceivedEventArgs* args) { return midiInMessageReceived (args); }
).Get(), ).Get(),
&midiInMessageToken); &midiInMessageToken);


+ 1
- 1
source/modules/juce_audio_devices/native/juce_win32_WASAPI.cpp View File

@@ -1430,7 +1430,7 @@ private:
closeDevices(); closeDevices();
initialise(); initialise();
auto changedSampleRate = [this, sampleRateChangedByInput] ()
auto changedSampleRate = [this, sampleRateChangedByInput]()
{ {
if (inputDevice != nullptr && sampleRateChangedByInput) if (inputDevice != nullptr && sampleRateChangedByInput)
return inputDevice->defaultSampleRate; return inputDevice->defaultSampleRate;


+ 11
- 4
source/modules/juce_audio_processors/format/juce_AudioPluginFormat.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 12
- 5
source/modules/juce_audio_processors/format/juce_AudioPluginFormat.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
@@ -67,7 +74,7 @@ public:
String& errorMessage); String& errorMessage);
/** A callback lambda that is passed to createPluginInstanceAsync() */ /** A callback lambda that is passed to createPluginInstanceAsync() */
using PluginCreationCallback = std::function<void(std::unique_ptr<AudioPluginInstance>, const String&)>;
using PluginCreationCallback = std::function<void (std::unique_ptr<AudioPluginInstance>, const String&)>;
/** Tries to recreate a type from a previously generated PluginDescription. /** Tries to recreate a type from a previously generated PluginDescription.
When the plugin has been created, it will be passed to the caller via an When the plugin has been created, it will be passed to the caller via an


+ 11
- 4
source/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/format_types/juce_AU_Shared.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 12
- 5
source/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
@@ -1439,7 +1446,7 @@ public:
|| info.unit == kAudioUnitParameterUnit_Boolean); || info.unit == kAudioUnitParameterUnit_Boolean);
bool isBoolean = info.unit == kAudioUnitParameterUnit_Boolean; bool isBoolean = info.unit == kAudioUnitParameterUnit_Boolean;
auto label = [info] () -> String
auto label = [info]() -> String
{ {
if (info.unit == kAudioUnitParameterUnit_Percent) return "%"; if (info.unit == kAudioUnitParameterUnit_Percent) return "%";
if (info.unit == kAudioUnitParameterUnit_Seconds) return "s"; if (info.unit == kAudioUnitParameterUnit_Seconds) return "s";


+ 11
- 4
source/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/format_types/juce_LegacyAudioParameter.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/format_types/juce_VST3Common.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/format_types/juce_VST3Headers.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 12
- 5
source/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
@@ -2788,7 +2795,7 @@ private:
bypassParam = param; bypassParam = param;
std::function<AudioProcessorParameterGroup*(Vst::UnitID)> findOrCreateGroup; std::function<AudioProcessorParameterGroup*(Vst::UnitID)> findOrCreateGroup;
findOrCreateGroup = [&groupMap, &infoMap, &findOrCreateGroup](Vst::UnitID groupID)
findOrCreateGroup = [&groupMap, &infoMap, &findOrCreateGroup] (Vst::UnitID groupID)
{ {
auto existingGroup = groupMap.find (groupID); auto existingGroup = groupMap.find (groupID);


+ 11
- 4
source/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/format_types/juce_VSTCommon.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/juce_audio_processors.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 12
- 5
source/modules/juce_audio_processors/juce_audio_processors.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
@@ -21,7 +28,7 @@
The block below describes the properties of this module, and is read by The block below describes the properties of this module, and is read by
the Projucer to automatically generate project code that uses it. the Projucer to automatically generate project code that uses it.
For details about the syntax and how to create or use a module, see the For details about the syntax and how to create or use a module, see the
JUCE Module Format.txt file.
JUCE Module Format.md file.
BEGIN_JUCE_MODULE_DECLARATION BEGIN_JUCE_MODULE_DECLARATION


+ 11
- 4
source/modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/processors/juce_AudioPluginInstance.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 12
- 5
source/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
@@ -775,7 +782,7 @@ void AudioProcessor::audioIOChanged (bool busNumberChanged, bool channelNumChang
bus->updateChannelCount(); bus->updateChannelCount();
} }
auto countTotalChannels = [](const OwnedArray<AudioProcessor::Bus>& buses) noexcept
auto countTotalChannels = [] (const OwnedArray<AudioProcessor::Bus>& buses) noexcept
{ {
int n = 0; int n = 0;


+ 12
- 5
source/modules/juce_audio_processors/processors/juce_AudioProcessor.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
@@ -1174,7 +1181,7 @@ public:
Unknown = -1 Unknown = -1
}; };
std::function<float(float)> curve; // a function which represents your curve (such as an eq)
std::function<float (float)> curve; // a function which represents your curve (such as an eq)
Range<float> xRange, yRange; // the data range of your curve Range<float> xRange, yRange; // the data range of your curve
// For some curve types, your plug-in may already measure the current input and output values. // For some curve types, your plug-in may already measure the current input and output values.


+ 11
- 4
source/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 17
- 11
source/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
@@ -961,7 +968,7 @@ AudioProcessorGraph::Node::Ptr AudioProcessorGraph::addNode (std::unique_ptr<Aud
return n; return n;
} }
std::unique_ptr<AudioProcessor> AudioProcessorGraph::removeNode (NodeID nodeId)
AudioProcessorGraph::Node::Ptr AudioProcessorGraph::removeNode (NodeID nodeId)
{ {
const ScopedLock sl (getCallbackLock()); const ScopedLock sl (getCallbackLock());
@@ -970,23 +977,22 @@ std::unique_ptr<AudioProcessor> AudioProcessorGraph::removeNode (NodeID nodeId)
if (nodes.getUnchecked (i)->nodeID == nodeId) if (nodes.getUnchecked (i)->nodeID == nodeId)
{ {
disconnectNode (nodeId); disconnectNode (nodeId);
auto internalProcessor = nodes[i] != nullptr ? std::move (nodes[i]->processor) : nullptr;
nodes.remove (i);
auto node = nodes.removeAndReturn (i);
topologyChanged(); topologyChanged();
return internalProcessor;
return node;
} }
} }
return nullptr;
return {};
} }
std::unique_ptr<AudioProcessor> AudioProcessorGraph::removeNode (Node* node)
AudioProcessorGraph::Node::Ptr AudioProcessorGraph::removeNode (Node* node)
{ {
if (node != nullptr) if (node != nullptr)
return removeNode (node->nodeID); return removeNode (node->nodeID);
jassertfalse; jassertfalse;
return nullptr;
return {};
} }
//============================================================================== //==============================================================================


+ 13
- 6
source/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
@@ -231,12 +238,12 @@ public:
/** Deletes a node within the graph which has the specified ID. /** Deletes a node within the graph which has the specified ID.
This will also delete any connections that are attached to this node. This will also delete any connections that are attached to this node.
*/ */
std::unique_ptr<AudioProcessor> removeNode (NodeID);
Node::Ptr removeNode (NodeID);
/** Deletes a node within the graph. /** Deletes a node within the graph.
This will also delete any connections that are attached to this node. This will also delete any connections that are attached to this node.
*/ */
std::unique_ptr<AudioProcessor> removeNode (Node*);
Node::Ptr removeNode (Node*);
/** Returns the list of connections in the graph. */ /** Returns the list of connections in the graph. */
std::vector<Connection> getConnections() const; std::vector<Connection> getConnections() const;


+ 11
- 4
source/modules/juce_audio_processors/processors/juce_AudioProcessorListener.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/processors/juce_AudioProcessorParameter.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/processors/juce_AudioProcessorParameterGroup.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/processors/juce_AudioProcessorParameterGroup.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/processors/juce_PluginDescription.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/processors/juce_PluginDescription.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/scanning/juce_KnownPluginList.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/scanning/juce_KnownPluginList.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/scanning/juce_PluginListComponent.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/scanning/juce_PluginListComponent.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 13
- 6
source/modules/juce_audio_processors/utilities/juce_AudioParameterBool.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
@@ -21,8 +28,8 @@ namespace juce
AudioParameterBool::AudioParameterBool (const String& idToUse, const String& nameToUse, AudioParameterBool::AudioParameterBool (const String& idToUse, const String& nameToUse,
bool def, const String& labelToUse, bool def, const String& labelToUse,
std::function<String(bool, int)> stringFromBool,
std::function<bool(const String&)> boolFromString)
std::function<String (bool, int)> stringFromBool,
std::function<bool (const String&)> boolFromString)
: RangedAudioParameter (idToUse, nameToUse, labelToUse), : RangedAudioParameter (idToUse, nameToUse, labelToUse),
value (def ? 1.0f : 0.0f), value (def ? 1.0f : 0.0f),
defaultValue (value), defaultValue (value),


+ 15
- 8
source/modules/juce_audio_processors/utilities/juce_AudioParameterBool.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
@@ -44,8 +51,8 @@ public:
*/ */
AudioParameterBool (const String& parameterID, const String& parameterName, bool defaultValue, AudioParameterBool (const String& parameterID, const String& parameterName, bool defaultValue,
const String& parameterLabel = String(), const String& parameterLabel = String(),
std::function<String(bool value, int maximumStringLength)> stringFromBool = nullptr,
std::function<bool(const String& text)> boolFromString = nullptr);
std::function<String (bool value, int maximumStringLength)> stringFromBool = nullptr,
std::function<bool (const String& text)> boolFromString = nullptr);
/** Destructor. */ /** Destructor. */
~AudioParameterBool() override; ~AudioParameterBool() override;
@@ -82,8 +89,8 @@ private:
const NormalisableRange<float> range { 0.0f, 1.0f, 1.0f }; const NormalisableRange<float> range { 0.0f, 1.0f, 1.0f };
std::atomic<float> value; std::atomic<float> value;
const float defaultValue; const float defaultValue;
std::function<String(bool, int)> stringFromBoolFunction;
std::function<bool(const String&)> boolFromStringFunction;
std::function<String (bool, int)> stringFromBoolFunction;
std::function<bool (const String&)> boolFromStringFunction;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioParameterBool) JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioParameterBool)
}; };


+ 16
- 9
source/modules/juce_audio_processors/utilities/juce_AudioParameterChoice.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
@@ -21,15 +28,15 @@ namespace juce
AudioParameterChoice::AudioParameterChoice (const String& idToUse, const String& nameToUse, AudioParameterChoice::AudioParameterChoice (const String& idToUse, const String& nameToUse,
const StringArray& c, int def, const String& labelToUse, const StringArray& c, int def, const String& labelToUse,
std::function<String(int, int)> stringFromIndex,
std::function<int(const String&)> indexFromString)
std::function<String (int, int)> stringFromIndex,
std::function<int (const String&)> indexFromString)
: RangedAudioParameter (idToUse, nameToUse, labelToUse), choices (c), : RangedAudioParameter (idToUse, nameToUse, labelToUse), choices (c),
range ([this] range ([this]
{ {
NormalisableRange<float> rangeWithInterval { 0.0f, choices.size() - 1.0f, NormalisableRange<float> rangeWithInterval { 0.0f, choices.size() - 1.0f,
[](float, float end, float v) { return jlimit (0.0f, end, v * end); },
[](float, float end, float v) { return jlimit (0.0f, 1.0f, v / end); },
[](float start, float end, float v) { return (float) roundToInt (juce::jlimit (start, end, v)); } };
[] (float, float end, float v) { return jlimit (0.0f, end, v * end); },
[] (float, float end, float v) { return jlimit (0.0f, 1.0f, v / end); },
[] (float start, float end, float v) { return (float) roundToInt (juce::jlimit (start, end, v)); } };
rangeWithInterval.interval = 1.0f; rangeWithInterval.interval = 1.0f;
return rangeWithInterval; return rangeWithInterval;
}()), }()),


+ 15
- 8
source/modules/juce_audio_processors/utilities/juce_AudioParameterChoice.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
@@ -48,8 +55,8 @@ public:
const StringArray& choices, const StringArray& choices,
int defaultItemIndex, int defaultItemIndex,
const String& parameterLabel = String(), const String& parameterLabel = String(),
std::function<String(int index, int maximumStringLength)> stringFromIndex = nullptr,
std::function<int(const String& text)> indexFromString = nullptr);
std::function<String (int index, int maximumStringLength)> stringFromIndex = nullptr,
std::function<int (const String& text)> indexFromString = nullptr);
/** Destructor. */ /** Destructor. */
~AudioParameterChoice() override; ~AudioParameterChoice() override;
@@ -94,8 +101,8 @@ private:
const NormalisableRange<float> range; const NormalisableRange<float> range;
std::atomic<float> value; std::atomic<float> value;
const float defaultValue; const float defaultValue;
std::function<String(int, int)> stringFromIndexFunction;
std::function<int(const String&)> indexFromStringFunction;
std::function<String (int, int)> stringFromIndexFunction;
std::function<int (const String&)> indexFromStringFunction;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioParameterChoice) JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioParameterChoice)
}; };


+ 13
- 6
source/modules/juce_audio_processors/utilities/juce_AudioParameterFloat.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
@@ -22,8 +29,8 @@ namespace juce
AudioParameterFloat::AudioParameterFloat (const String& idToUse, const String& nameToUse, AudioParameterFloat::AudioParameterFloat (const String& idToUse, const String& nameToUse,
NormalisableRange<float> r, float def, NormalisableRange<float> r, float def,
const String& labelToUse, Category categoryToUse, const String& labelToUse, Category categoryToUse,
std::function<String(float, int)> stringFromValue,
std::function<float(const String&)> valueFromString)
std::function<String (float, int)> stringFromValue,
std::function<float (const String&)> valueFromString)
: RangedAudioParameter (idToUse, nameToUse, labelToUse, categoryToUse), : RangedAudioParameter (idToUse, nameToUse, labelToUse, categoryToUse),
range (r), value (def), defaultValue (def), range (r), value (def), defaultValue (def),
stringFromValueFunction (stringFromValue), stringFromValueFunction (stringFromValue),


+ 15
- 8
source/modules/juce_audio_processors/utilities/juce_AudioParameterFloat.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
@@ -51,8 +58,8 @@ public:
float defaultValue, float defaultValue,
const String& parameterLabel = String(), const String& parameterLabel = String(),
Category parameterCategory = AudioProcessorParameter::genericParameter, Category parameterCategory = AudioProcessorParameter::genericParameter,
std::function<String(float value, int maximumStringLength)> stringFromValue = nullptr,
std::function<float(const String& text)> valueFromString = nullptr);
std::function<String (float value, int maximumStringLength)> stringFromValue = nullptr,
std::function<float (const String& text)> valueFromString = nullptr);
/** Creates a AudioParameterFloat with an ID, name, and range. /** Creates a AudioParameterFloat with an ID, name, and range.
On creation, its value is set to the default value. On creation, its value is set to the default value.
@@ -100,8 +107,8 @@ private:
std::atomic<float> value; std::atomic<float> value;
const float defaultValue; const float defaultValue;
std::function<String(float, int)> stringFromValueFunction;
std::function<float(const String&)> valueFromStringFunction;
std::function<String (float, int)> stringFromValueFunction;
std::function<float (const String&)> valueFromStringFunction;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioParameterFloat) JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioParameterFloat)
}; };


+ 16
- 9
source/modules/juce_audio_processors/utilities/juce_AudioParameterInt.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
@@ -22,15 +29,15 @@ namespace juce
AudioParameterInt::AudioParameterInt (const String& idToUse, const String& nameToUse, AudioParameterInt::AudioParameterInt (const String& idToUse, const String& nameToUse,
int minValue, int maxValue, int def, int minValue, int maxValue, int def,
const String& labelToUse, const String& labelToUse,
std::function<String(int, int)> stringFromInt,
std::function<int(const String&)> intFromString)
std::function<String (int, int)> stringFromInt,
std::function<int (const String&)> intFromString)
: RangedAudioParameter (idToUse, nameToUse, labelToUse), : RangedAudioParameter (idToUse, nameToUse, labelToUse),
range ([minValue, maxValue] range ([minValue, maxValue]
{ {
NormalisableRange<float> rangeWithInterval { (float) minValue, (float) maxValue, NormalisableRange<float> rangeWithInterval { (float) minValue, (float) maxValue,
[](float start, float end, float v) { return jlimit (start, end, v * (end - start) + start); },
[](float start, float end, float v) { return jlimit (0.0f, 1.0f, (v - start) / (end - start)); },
[](float start, float end, float v) { return (float) roundToInt (juce::jlimit (start, end, v)); } };
[] (float start, float end, float v) { return jlimit (start, end, v * (end - start) + start); },
[] (float start, float end, float v) { return jlimit (0.0f, 1.0f, (v - start) / (end - start)); },
[] (float start, float end, float v) { return (float) roundToInt (juce::jlimit (start, end, v)); } };
rangeWithInterval.interval = 1.0f; rangeWithInterval.interval = 1.0f;
return rangeWithInterval; return rangeWithInterval;
}()), }()),


+ 15
- 8
source/modules/juce_audio_processors/utilities/juce_AudioParameterInt.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
@@ -49,8 +56,8 @@ public:
int minValue, int maxValue, int minValue, int maxValue,
int defaultValue, int defaultValue,
const String& parameterLabel = String(), const String& parameterLabel = String(),
std::function<String(int value, int maximumStringLength)> stringFromInt = nullptr,
std::function<int(const String& text)> intFromString = nullptr);
std::function<String (int value, int maximumStringLength)> stringFromInt = nullptr,
std::function<int (const String& text)> intFromString = nullptr);
/** Destructor. */ /** Destructor. */
~AudioParameterInt() override; ~AudioParameterInt() override;
@@ -90,8 +97,8 @@ private:
const NormalisableRange<float> range; const NormalisableRange<float> range;
std::atomic<float> value; std::atomic<float> value;
const float defaultValue; const float defaultValue;
std::function<String(int, int)> stringFromIntFunction;
std::function<int(const String&)> intFromStringFunction;
std::function<String (int, int)> stringFromIntFunction;
std::function<int (const String&)> intFromStringFunction;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioParameterInt) JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioParameterInt)
}; };


+ 11
- 4
source/modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 49
- 15
source/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
@@ -25,8 +32,8 @@ AudioProcessorValueTreeState::Parameter::Parameter (const String& parameterID,
const String& labelText, const String& labelText,
NormalisableRange<float> valueRange, NormalisableRange<float> valueRange,
float defaultParameterValue, float defaultParameterValue,
std::function<String(float)> valueToTextFunction,
std::function<float(const String&)> textToValueFunction,
std::function<String (float)> valueToTextFunction,
std::function<float (const String&)> textToValueFunction,
bool isMetaParameter, bool isMetaParameter,
bool isAutomatableParameter, bool isAutomatableParameter,
bool isDiscrete, bool isDiscrete,
@@ -38,8 +45,8 @@ AudioProcessorValueTreeState::Parameter::Parameter (const String& parameterID,
defaultParameterValue, defaultParameterValue,
labelText, labelText,
parameterCategory, parameterCategory,
valueToTextFunction == nullptr ? std::function<String(float v, int)>()
: [valueToTextFunction](float v, int) { return valueToTextFunction (v); },
valueToTextFunction == nullptr ? std::function<String (float v, int)>()
: [valueToTextFunction] (float v, int) { return valueToTextFunction (v); },
std::move (textToValueFunction)), std::move (textToValueFunction)),
unsnappedDefault (valueRange.convertTo0to1 (defaultParameterValue)), unsnappedDefault (valueRange.convertTo0to1 (defaultParameterValue)),
metaParameter (isMetaParameter), metaParameter (isMetaParameter),
@@ -155,7 +162,7 @@ private:
return; return;
unnormalisedValue = newValue; unnormalisedValue = newValue;
listeners.call ([=](Listener& l) { l.parameterChanged (parameter.paramID, unnormalisedValue); });
listeners.call ([=] (Listener& l) { l.parameterChanged (parameter.paramID, unnormalisedValue); });
listenersNeedCalling = false; listenersNeedCalling = false;
needsUpdate = true; needsUpdate = true;
} }
@@ -178,8 +185,35 @@ private:
parameter.setValueNotifyingHost (value); parameter.setValueNotifyingHost (value);
} }
class LockedListeners
{
public:
template <typename Fn>
void call (Fn&& fn)
{
const CriticalSection::ScopedLockType lock (mutex);
listeners.call (std::forward<Fn> (fn));
}
void add (Listener* l)
{
const CriticalSection::ScopedLockType lock (mutex);
listeners.add (l);
}
void remove (Listener* l)
{
const CriticalSection::ScopedLockType lock (mutex);
listeners.remove (l);
}
private:
CriticalSection mutex;
ListenerList<Listener> listeners;
};
RangedAudioParameter& parameter; RangedAudioParameter& parameter;
ListenerList<Listener> listeners;
LockedListeners listeners;
std::atomic<float> unnormalisedValue { 0.0f }; std::atomic<float> unnormalisedValue { 0.0f };
std::atomic<bool> needsUpdate { true }, listenersNeedCalling { true }; std::atomic<bool> needsUpdate { true }, listenersNeedCalling { true };
bool ignoreParameterChangedCallbacks { false }; bool ignoreParameterChangedCallbacks { false };
@@ -261,8 +295,8 @@ RangedAudioParameter* AudioProcessorValueTreeState::createAndAddParameter (const
const String& labelText, const String& labelText,
NormalisableRange<float> range, NormalisableRange<float> range,
float defaultVal, float defaultVal,
std::function<String(float)> valueToTextFunction,
std::function<float(const String&)> textToValueFunction,
std::function<String (float)> valueToTextFunction,
std::function<float (const String&)> textToValueFunction,
bool isMetaParameter, bool isMetaParameter,
bool isAutomatableParameter, bool isAutomatableParameter,
bool isDiscreteParameter, bool isDiscreteParameter,
@@ -512,7 +546,7 @@ struct ParameterAdapterTests : public UnitTest
beginTest ("Denormalised parameter values can be retrieved"); beginTest ("Denormalised parameter values can be retrieved");
{ {
const auto test = [&](NormalisableRange<float> range, float value)
const auto test = [&] (NormalisableRange<float> range, float value)
{ {
AudioParameterFloat param ({}, {}, range, {}, {}); AudioParameterFloat param ({}, {}, range, {}, {});
AudioProcessorValueTreeState::ParameterAdapter adapter (param); AudioProcessorValueTreeState::ParameterAdapter adapter (param);
@@ -529,7 +563,7 @@ struct ParameterAdapterTests : public UnitTest
beginTest ("Floats can be converted to text"); beginTest ("Floats can be converted to text");
{ {
const auto test = [&](NormalisableRange<float> range, float value, String expected)
const auto test = [&] (NormalisableRange<float> range, float value, String expected)
{ {
AudioParameterFloat param ({}, {}, range, {}, {}); AudioParameterFloat param ({}, {}, range, {}, {});
AudioProcessorValueTreeState::ParameterAdapter adapter (param); AudioProcessorValueTreeState::ParameterAdapter adapter (param);
@@ -545,7 +579,7 @@ struct ParameterAdapterTests : public UnitTest
beginTest ("Text can be converted to floats"); beginTest ("Text can be converted to floats");
{ {
const auto test = [&](NormalisableRange<float> range, String text, float expected)
const auto test = [&] (NormalisableRange<float> range, String text, float expected)
{ {
AudioParameterFloat param ({}, {}, range, {}, {}); AudioParameterFloat param ({}, {}, range, {}, {});
AudioProcessorValueTreeState::ParameterAdapter adapter (param); AudioProcessorValueTreeState::ParameterAdapter adapter (param);


+ 16
- 9
source/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
@@ -254,8 +261,8 @@ public:
const String& labelText, const String& labelText,
NormalisableRange<float> valueRange, NormalisableRange<float> valueRange,
float defaultValue, float defaultValue,
std::function<String(float)> valueToTextFunction,
std::function<float(const String&)> textToValueFunction,
std::function<String (float)> valueToTextFunction,
std::function<float (const String&)> textToValueFunction,
bool isMetaParameter = false, bool isMetaParameter = false,
bool isAutomatableParameter = true, bool isAutomatableParameter = true,
bool isDiscrete = false, bool isDiscrete = false,
@@ -394,8 +401,8 @@ public:
const String& labelText, const String& labelText,
NormalisableRange<float> valueRange, NormalisableRange<float> valueRange,
float defaultValue, float defaultValue,
std::function<String(float)> valueToTextFunction,
std::function<float(const String&)> textToValueFunction,
std::function<String (float)> valueToTextFunction,
std::function<float (const String&)> textToValueFunction,
bool isMetaParameter = false, bool isMetaParameter = false,
bool isAutomatableParameter = true, bool isAutomatableParameter = true,
bool isDiscrete = false, bool isDiscrete = false,
@@ -514,7 +521,7 @@ private:
@endcode @endcode
*/ */
JUCE_DEPRECATED (std::unique_ptr<RangedAudioParameter> createParameter (const String&, const String&, const String&, NormalisableRange<float>, JUCE_DEPRECATED (std::unique_ptr<RangedAudioParameter> createParameter (const String&, const String&, const String&, NormalisableRange<float>,
float, std::function<String(float)>, std::function<float(const String&)>,
float, std::function<String (float)>, std::function<float (const String&)>,
bool, bool, bool, AudioProcessorParameter::Category, bool)); bool, bool, bool, AudioProcessorParameter::Category, bool));
//============================================================================== //==============================================================================


+ 11
- 4
source/modules/juce_audio_processors/utilities/juce_ParameterAttachments.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 21
- 6
source/modules/juce_audio_processors/utilities/juce_ParameterAttachments.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
@@ -33,6 +40,8 @@ namespace juce
Make sure to call `sendInitialUpdate` at the end of your new attachment's Make sure to call `sendInitialUpdate` at the end of your new attachment's
constructor, so that the UI immediately reflects the state of the parameter. constructor, so that the UI immediately reflects the state of the parameter.
@tags{Audio}
*/ */
class ParameterAttachment : private AudioProcessorParameter::Listener, class ParameterAttachment : private AudioProcessorParameter::Listener,
private AsyncUpdater private AsyncUpdater
@@ -49,7 +58,7 @@ public:
requests a parameter change. requests a parameter change.
*/ */
ParameterAttachment (RangedAudioParameter& parameter, ParameterAttachment (RangedAudioParameter& parameter,
std::function<void(float)> parameterChangedCallback,
std::function<void (float)> parameterChangedCallback,
UndoManager* undoManager = nullptr); UndoManager* undoManager = nullptr);
/** Destructor. */ /** Destructor. */
@@ -105,7 +114,7 @@ private:
RangedAudioParameter& parameter; RangedAudioParameter& parameter;
std::atomic<float> lastValue { 0.0f }; std::atomic<float> lastValue { 0.0f };
UndoManager* undoManager = nullptr; UndoManager* undoManager = nullptr;
std::function<void(float)> setValue;
std::function<void (float)> setValue;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ParameterAttachment) JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ParameterAttachment)
}; };
@@ -118,6 +127,8 @@ private:
it easy to connect a slider to a parameter. When this object is deleted, the it easy to connect a slider to a parameter. When this object is deleted, the
connection is broken. Make sure that your parameter and Slider are not connection is broken. Make sure that your parameter and Slider are not
deleted before this object! deleted before this object!
@tags{Audio}
*/ */
class SliderParameterAttachment : private Slider::Listener class SliderParameterAttachment : private Slider::Listener
{ {
@@ -164,6 +175,8 @@ private:
easy to connect a combo box to a parameter. When this object is deleted, the easy to connect a combo box to a parameter. When this object is deleted, the
connection is broken. Make sure that your parameter and ComboBox are not deleted connection is broken. Make sure that your parameter and ComboBox are not deleted
before this object! before this object!
@tags{Audio}
*/ */
class ComboBoxParameterAttachment : private ComboBox::Listener class ComboBoxParameterAttachment : private ComboBox::Listener
{ {
@@ -202,6 +215,8 @@ private:
easy to connect a button to a parameter. When this object is deleted, the easy to connect a button to a parameter. When this object is deleted, the
connection is broken. Make sure that your parameter and Button are not deleted connection is broken. Make sure that your parameter and Button are not deleted
before this object! before this object!
@tags{Audio}
*/ */
class ButtonParameterAttachment : private Button::Listener class ButtonParameterAttachment : private Button::Listener
{ {


+ 11
- 4
source/modules/juce_audio_processors/utilities/juce_RangedAudioParameter.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_audio_processors/utilities/juce_RangedAudioParameter.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 1
- 1
source/modules/juce_core/containers/juce_Variant.h View File

@@ -54,7 +54,7 @@ public:
int numArguments; int numArguments;
}; };
using NativeFunction = std::function<var(const NativeFunctionArgs&)>;
using NativeFunction = std::function<var (const NativeFunctionArgs&)>;
//============================================================================== //==============================================================================
/** Creates a void variant. */ /** Creates a void variant. */


+ 7
- 1
source/modules/juce_core/files/juce_RangedDirectoryIterator.h View File

@@ -24,7 +24,11 @@ namespace juce
{ {
//============================================================================== //==============================================================================
/** Describes the attributes of a file or folder. */
/**
Describes the attributes of a file or folder.
@tags{Core}
*/
class DirectoryEntry final class DirectoryEntry final
{ {
public: public:
@@ -80,6 +84,8 @@ inline const DirectoryEntry& operator* (const DirectoryEntry& e) noexcept { retu
if (entry.isHidden()) if (entry.isHidden())
hiddenFiles.push_back (entry.getFile()); hiddenFiles.push_back (entry.getFile());
@endcode @endcode
@tags{Core}
*/ */
class RangedDirectoryIterator final class RangedDirectoryIterator final
{ {


+ 1
- 1
source/modules/juce_core/juce_core.h View File

@@ -25,7 +25,7 @@
The block below describes the properties of this module, and is read by The block below describes the properties of this module, and is read by
the Projucer to automatically generate project code that uses it. the Projucer to automatically generate project code that uses it.
For details about the syntax and how to create or use a module, see the For details about the syntax and how to create or use a module, see the
JUCE Module Format.txt file.
JUCE Module Format.md file.
BEGIN_JUCE_MODULE_DECLARATION BEGIN_JUCE_MODULE_DECLARATION


+ 8
- 4
source/modules/juce_core/memory/juce_AllocationHooks.cpp View File

@@ -1,13 +1,17 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial licensing.
The code included in this file is provided under the terms of the ISC license
http://www.isc.org/downloads/software-support-policy/isc-license. Permission
To use, copy, modify, and/or distribute this software for any purpose with or
without fee is hereby granted provided that the above copyright notice and
this permission notice appear in all copies.
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 8
- 4
source/modules/juce_core/memory/juce_AllocationHooks.h View File

@@ -1,13 +1,17 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial licensing.
The code included in this file is provided under the terms of the ISC license
http://www.isc.org/downloads/software-support-policy/isc-license. Permission
To use, copy, modify, and/or distribute this software for any purpose with or
without fee is hereby granted provided that the above copyright notice and
this permission notice appear in all copies.
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 1
- 1
source/modules/juce_core/misc/juce_ConsoleApplication.h View File

@@ -264,7 +264,7 @@ struct ConsoleApplication
String longDescription; String longDescription;
/** The actual command that should be invoked to perform this action. */ /** The actual command that should be invoked to perform this action. */
std::function<void(const ArgumentList&)> command;
std::function<void (const ArgumentList&)> command;
}; };
//============================================================================== //==============================================================================


+ 1
- 1
source/modules/juce_core/misc/juce_RuntimePermissions.h View File

@@ -91,7 +91,7 @@ public:
//============================================================================== //==============================================================================
/** Function type of runtime permission request callbacks. */ /** Function type of runtime permission request callbacks. */
using Callback = std::function<void(bool)>;
using Callback = std::function<void (bool)>;
//============================================================================== //==============================================================================
/** Call this method to request a runtime permission. /** Call this method to request a runtime permission.


+ 3
- 3
source/modules/juce_core/native/juce_android_JNIHelpers.cpp View File

@@ -620,7 +620,7 @@ class ActivityLauncher : public FragmentOverlay
public: public:
ActivityLauncher (const LocalRef<jobject>& intentToUse, ActivityLauncher (const LocalRef<jobject>& intentToUse,
int requestCodeToUse, int requestCodeToUse,
std::function<void(int, int, LocalRef<jobject>)> && callbackToUse)
std::function<void (int, int, LocalRef<jobject>)> && callbackToUse)
: intent (intentToUse), requestCode (requestCodeToUse), callback (std::move (callbackToUse)) : intent (intentToUse), requestCode (requestCodeToUse), callback (std::move (callbackToUse))
{} {}
@@ -642,11 +642,11 @@ public:
private: private:
GlobalRef intent; GlobalRef intent;
int requestCode; int requestCode;
std::function<void(int, int, LocalRef<jobject>)> callback;
std::function<void (int, int, LocalRef<jobject>)> callback;
}; };
void startAndroidActivityForResult (const LocalRef<jobject>& intent, int requestCode, void startAndroidActivityForResult (const LocalRef<jobject>& intent, int requestCode,
std::function<void(int, int, LocalRef<jobject>)> && callback)
std::function<void (int, int, LocalRef<jobject>)> && callback)
{ {
auto* activityLauncher = new ActivityLauncher (intent, requestCode, std::move (callback)); auto* activityLauncher = new ActivityLauncher (intent, requestCode, std::move (callback));
activityLauncher->open(); activityLauncher->open();


+ 1
- 1
source/modules/juce_core/native/juce_android_JNIHelpers.h View File

@@ -983,7 +983,7 @@ public:
//============================================================================== //==============================================================================
// Allows you to start an activity without requiring to have an activity // Allows you to start an activity without requiring to have an activity
void startAndroidActivityForResult (const LocalRef<jobject>& intent, int requestCode, void startAndroidActivityForResult (const LocalRef<jobject>& intent, int requestCode,
std::function<void(int, int, LocalRef<jobject>)> && callback);
std::function<void (int, int, LocalRef<jobject>)> && callback);
//============================================================================== //==============================================================================
bool androidHasSystemFeature (const String& property); bool androidHasSystemFeature (const String& property);


+ 1
- 1
source/modules/juce_core/network/juce_Socket.cpp View File

@@ -280,7 +280,7 @@ namespace SocketHelpers
if (! lock.isLocked()) if (! lock.isLocked())
return -1; return -1;
auto hasErrorOccurred = [&handle] () -> bool
auto hasErrorOccurred = [&handle]() -> bool
{ {
auto h = (SocketHandle) handle.load(); auto h = (SocketHandle) handle.load();


+ 1
- 1
source/modules/juce_core/text/juce_CharacterFunctions.h View File

@@ -343,7 +343,7 @@ public:
c = *text; c = *text;
auto writeExponentDigits = [](int exponent, char* destination)
auto writeExponentDigits = [] (int exponent, char* destination)
{ {
auto exponentDivisor = 100; auto exponentDivisor = 100;


+ 4
- 3
source/modules/juce_core/text/juce_String.cpp View File

@@ -812,9 +812,10 @@ namespace StringHelpers
} }
} }
String& String::operator+= (const int number) { return StringHelpers::operationAddAssign<int> (*this, number); }
String& String::operator+= (const int64 number) { return StringHelpers::operationAddAssign<int64> (*this, number); }
String& String::operator+= (const uint64 number) { return StringHelpers::operationAddAssign<uint64> (*this, number); }
String& String::operator+= (const int number) { return StringHelpers::operationAddAssign<int> (*this, number); }
String& String::operator+= (const long number) { return StringHelpers::operationAddAssign<long> (*this, number); }
String& String::operator+= (const int64 number) { return StringHelpers::operationAddAssign<int64> (*this, number); }
String& String::operator+= (const uint64 number) { return StringHelpers::operationAddAssign<uint64> (*this, number); }
//============================================================================== //==============================================================================
JUCE_API String JUCE_CALLTYPE operator+ (const char* s1, const String& s2) { String s (s1); return s += s2; } JUCE_API String JUCE_CALLTYPE operator+ (const char* s1, const String& s2) { String s (s1); return s += s2; }


+ 5
- 7
source/modules/juce_core/unit_tests/juce_UnitTest.cpp View File

@@ -199,15 +199,11 @@ void UnitTestRunner::beginNewTest (UnitTest* const test, const String& subCatego
endTest(); endTest();
currentTest = test; currentTest = test;
auto* r = new TestResult();
results.add (r);
r->unitTestName = test->getName();
r->subcategoryName = subCategory;
r->passes = 0;
r->failures = 0;
auto testName = test->getName();
results.add (new TestResult (testName, subCategory));
logMessage ("-----------------------------------------------------------------"); logMessage ("-----------------------------------------------------------------");
logMessage ("Starting test: " + r->unitTestName + " / " + subCategory + "...");
logMessage ("Starting test: " + testName + " / " + subCategory + "...");
resultsUpdated(); resultsUpdated();
} }
@@ -216,6 +212,8 @@ void UnitTestRunner::endTest()
{ {
if (auto* r = results.getLast()) if (auto* r = results.getLast())
{ {
r->endTime = Time::getCurrentTime();
if (r->failures > 0) if (r->failures > 0)
{ {
String m ("FAILED!! "); String m ("FAILED!! ");


+ 15
- 2
source/modules/juce_core/unit_tests/juce_UnitTest.h View File

@@ -376,18 +376,31 @@ public:
*/ */
struct TestResult struct TestResult
{ {
TestResult() = default;
explicit TestResult (const String& name, const String& subCategory)
: unitTestName (name),
subcategoryName (subCategory)
{
}
/** The main name of this test (i.e. the name of the UnitTest object being run). */ /** The main name of this test (i.e. the name of the UnitTest object being run). */
String unitTestName; String unitTestName;
/** The name of the current subcategory (i.e. the name that was set when UnitTest::beginTest() was called). */ /** The name of the current subcategory (i.e. the name that was set when UnitTest::beginTest() was called). */
String subcategoryName; String subcategoryName;
/** The number of UnitTest::expect() calls that succeeded. */ /** The number of UnitTest::expect() calls that succeeded. */
int passes;
int passes = 0;
/** The number of UnitTest::expect() calls that failed. */ /** The number of UnitTest::expect() calls that failed. */
int failures;
int failures = 0;
/** A list of messages describing the failed tests. */ /** A list of messages describing the failed tests. */
StringArray messages; StringArray messages;
/** The time at which this test was started. */
Time startTime = Time::getCurrentTime();
/** The time at which this test ended. */
Time endTime;
}; };
/** Returns the number of TestResult objects that have been performed. /** Returns the number of TestResult objects that have been performed.


+ 11
- 4
source/modules/juce_data_structures/app_properties/juce_ApplicationProperties.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_data_structures/app_properties/juce_ApplicationProperties.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_data_structures/app_properties/juce_PropertiesFile.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_data_structures/juce_data_structures.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 12
- 5
source/modules/juce_data_structures/juce_data_structures.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
@@ -21,7 +28,7 @@
The block below describes the properties of this module, and is read by The block below describes the properties of this module, and is read by
the Projucer to automatically generate project code that uses it. the Projucer to automatically generate project code that uses it.
For details about the syntax and how to create or use a module, see the For details about the syntax and how to create or use a module, see the
JUCE Module Format.txt file.
JUCE Module Format.md file.
BEGIN_JUCE_MODULE_DECLARATION BEGIN_JUCE_MODULE_DECLARATION


+ 11
- 4
source/modules/juce_data_structures/undomanager/juce_UndoManager.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_data_structures/undomanager/juce_UndoManager.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_data_structures/undomanager/juce_UndoableAction.h View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


+ 11
- 4
source/modules/juce_data_structures/values/juce_CachedValue.cpp View File

@@ -1,13 +1,20 @@
/* /*
============================================================================== ==============================================================================
This file is part of the JUCE 6 technical preview.
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited Copyright (c) 2020 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
JUCE is an open source library subject to commercial or open-source
licensing.
For this technical preview, this file is not subject to commercial 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 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save