mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
DSP: Update convolution
This commit is contained in:
parent
2c81da73f9
commit
fca3429e6e
48 changed files with 3692 additions and 1830 deletions
|
|
@ -4,6 +4,40 @@ JUCE breaking changes
|
||||||
Develop
|
Develop
|
||||||
=======
|
=======
|
||||||
|
|
||||||
|
Change
|
||||||
|
------
|
||||||
|
The Convolution class interface was changed:
|
||||||
|
- `loadImpulseResponse` member functions now take `enum class` parameters
|
||||||
|
instead of `bool`.
|
||||||
|
- `copyAndLoadImpulseResponseFromBlock` and
|
||||||
|
`copyAndLoadImpulseResponseFromBuffer` were replaced by a new
|
||||||
|
`loadImpulseResponse` overload.
|
||||||
|
|
||||||
|
Possible Issues
|
||||||
|
---------------
|
||||||
|
Code using the old interface will no longer compile, and will need to be
|
||||||
|
updated.
|
||||||
|
|
||||||
|
Workaround
|
||||||
|
----------
|
||||||
|
Code that was previously loading impulse responses from binary data or from
|
||||||
|
files can substitute old `bool` parameters with the newer `enum class`
|
||||||
|
equivalents. Code that was previously passing buffers or blocks will need
|
||||||
|
reworking so that the Convolution instance can take ownership of the buffer
|
||||||
|
containing the impulse response.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
---------
|
||||||
|
The newer `enum class` parameters make user code much more readable, e.g.
|
||||||
|
`loadImpulseResponse (file, Stereo::yes, Trim::yes, 0, Normalise::yes)` rather
|
||||||
|
than `loadImpulseResponse (file, true, true, 0, true);`. By taking ownership of
|
||||||
|
the passed buffer, the Convolution can avoid preallocating a large internal
|
||||||
|
buffer, reducing memory usage when short impulse responses are used. Changing
|
||||||
|
the ownership semantics of the buffer also makes it easier for users to avoid
|
||||||
|
copies/allocations on the audio thread, and gives more flexibility to the
|
||||||
|
implementation to run initialisation tasks on a background thread.
|
||||||
|
|
||||||
|
|
||||||
Change
|
Change
|
||||||
------
|
------
|
||||||
All references to ROLI Ltd. (ROLI) have been changed to Raw Material Software
|
All references to ROLI Ltd. (ROLI) have been changed to Raw Material Software
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,15 @@ struct ConvolutionDemoDSP
|
||||||
void process (ProcessContextReplacing<float> context)
|
void process (ProcessContextReplacing<float> context)
|
||||||
{
|
{
|
||||||
context.isBypassed = bypass;
|
context.isBypassed = bypass;
|
||||||
|
|
||||||
|
// Load a new IR if there's one available. Note that this doesn't lock or allocate!
|
||||||
|
if (auto buffer = bufferTransfer.get())
|
||||||
|
convolution.loadImpulseResponse (std::move (buffer->buffer),
|
||||||
|
buffer->sampleRate,
|
||||||
|
Convolution::Stereo::yes,
|
||||||
|
Convolution::Trim::yes,
|
||||||
|
Convolution::Normalise::yes);
|
||||||
|
|
||||||
convolution.process (context);
|
convolution.process (context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -76,39 +85,90 @@ struct ConvolutionDemoDSP
|
||||||
|
|
||||||
void updateParameters()
|
void updateParameters()
|
||||||
{
|
{
|
||||||
if (auto* cabinetTypeParameter = dynamic_cast<ChoiceParameter*> (parameters[0]))
|
auto* cabinetTypeParameter = dynamic_cast<ChoiceParameter*> (parameters[0]);
|
||||||
|
|
||||||
|
if (cabinetTypeParameter == nullptr)
|
||||||
{
|
{
|
||||||
if (cabinetTypeParameter->getCurrentSelectedID() == 1)
|
jassertfalse;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cabinetTypeParameter->getCurrentSelectedID() == 1)
|
||||||
|
{
|
||||||
|
bypass = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
bypass = false;
|
||||||
|
|
||||||
|
auto selectedType = cabinetTypeParameter->getCurrentSelectedID();
|
||||||
|
auto assetName = (selectedType == 2 ? "guitar_amp.wav" : "cassette_recorder.wav");
|
||||||
|
|
||||||
|
auto assetInputStream = createAssetInputStream (assetName);
|
||||||
|
|
||||||
|
if (assetInputStream == nullptr)
|
||||||
{
|
{
|
||||||
bypass = true;
|
jassertfalse;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
AudioFormatManager manager;
|
||||||
|
manager.registerBasicFormats();
|
||||||
|
std::unique_ptr<AudioFormatReader> reader { manager.createReaderFor (std::move (assetInputStream)) };
|
||||||
|
|
||||||
|
if (reader == nullptr)
|
||||||
{
|
{
|
||||||
bypass = false;
|
jassertfalse;
|
||||||
|
return;
|
||||||
auto maxSize = static_cast<size_t> (roundToInt (sampleRate * (8192.0 / 44100.0)));
|
|
||||||
auto selectedType = cabinetTypeParameter->getCurrentSelectedID();
|
|
||||||
auto assetName = (selectedType == 2 ? "guitar_amp.wav" : "cassette_recorder.wav");
|
|
||||||
|
|
||||||
if (auto assetInputStream = createAssetInputStream (assetName))
|
|
||||||
{
|
|
||||||
currentCabinetData.reset();
|
|
||||||
assetInputStream->readIntoMemoryBlock (currentCabinetData);
|
|
||||||
|
|
||||||
convolution.loadImpulseResponse (currentCabinetData.getData(), currentCabinetData.getSize(),
|
|
||||||
false, true, maxSize);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AudioBuffer<float> buffer (static_cast<int> (reader->numChannels),
|
||||||
|
static_cast<int> (reader->lengthInSamples));
|
||||||
|
reader->read (buffer.getArrayOfWritePointers(), buffer.getNumChannels(), 0, buffer.getNumSamples());
|
||||||
|
|
||||||
|
bufferTransfer.set (std::make_unique<BufferWithSampleRate> (std::move (buffer),
|
||||||
|
reader->sampleRate));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
struct BufferWithSampleRate
|
||||||
|
{
|
||||||
|
BufferWithSampleRate (AudioBuffer<float>&& bufferIn, double sampleRateIn)
|
||||||
|
: buffer (std::move (bufferIn)), sampleRate (sampleRateIn) {}
|
||||||
|
|
||||||
|
AudioBuffer<float> buffer;
|
||||||
|
double sampleRate = 0.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class BufferTransfer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void set (std::unique_ptr<BufferWithSampleRate> p)
|
||||||
|
{
|
||||||
|
const SpinLock::ScopedLockType lock (mutex);
|
||||||
|
ptr = std::move (p);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::unique_ptr<BufferWithSampleRate> get()
|
||||||
|
{
|
||||||
|
const SpinLock::ScopedTryLockType lock (mutex);
|
||||||
|
return lock.isLocked() ? std::move (ptr) : nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::unique_ptr<BufferWithSampleRate> ptr;
|
||||||
|
SpinLock mutex;
|
||||||
|
};
|
||||||
|
|
||||||
double sampleRate = 0.0;
|
double sampleRate = 0.0;
|
||||||
bool bypass = false;
|
bool bypass = false;
|
||||||
|
|
||||||
MemoryBlock currentCabinetData;
|
MemoryBlock currentCabinetData;
|
||||||
Convolution convolution;
|
Convolution convolution;
|
||||||
|
|
||||||
|
BufferTransfer bufferTransfer;
|
||||||
|
|
||||||
ChoiceParameter cabinetParam { { "Bypass", "Guitar amplifier 8''", "Cassette recorder" }, 1, "Cabinet Type" };
|
ChoiceParameter cabinetParam { { "Bypass", "Guitar amplifier 8''", "Cassette recorder" }, 1, "Cabinet Type" };
|
||||||
|
|
||||||
std::vector<DSPDemoParameterBase*> parameters { &cabinetParam };
|
std::vector<DSPDemoParameterBase*> parameters { &cabinetParam };
|
||||||
|
|
|
||||||
|
|
@ -828,6 +828,8 @@ add_library( ${BINARY_NAME}
|
||||||
"../../../../../modules/juce_core/maths/juce_Random.h"
|
"../../../../../modules/juce_core/maths/juce_Random.h"
|
||||||
"../../../../../modules/juce_core/maths/juce_Range.h"
|
"../../../../../modules/juce_core/maths/juce_Range.h"
|
||||||
"../../../../../modules/juce_core/maths/juce_StatisticsAccumulator.h"
|
"../../../../../modules/juce_core/maths/juce_StatisticsAccumulator.h"
|
||||||
|
"../../../../../modules/juce_core/memory/juce_AllocationHooks.cpp"
|
||||||
|
"../../../../../modules/juce_core/memory/juce_AllocationHooks.h"
|
||||||
"../../../../../modules/juce_core/memory/juce_Atomic.h"
|
"../../../../../modules/juce_core/memory/juce_Atomic.h"
|
||||||
"../../../../../modules/juce_core/memory/juce_ByteOrder.h"
|
"../../../../../modules/juce_core/memory/juce_ByteOrder.h"
|
||||||
"../../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h"
|
"../../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h"
|
||||||
|
|
@ -1048,6 +1050,8 @@ add_library( ${BINARY_NAME}
|
||||||
"../../../../../modules/juce_data_structures/juce_data_structures.h"
|
"../../../../../modules/juce_data_structures/juce_data_structures.h"
|
||||||
"../../../../../modules/juce_dsp/containers/juce_AudioBlock.h"
|
"../../../../../modules/juce_dsp/containers/juce_AudioBlock.h"
|
||||||
"../../../../../modules/juce_dsp/containers/juce_AudioBlock_test.cpp"
|
"../../../../../modules/juce_dsp/containers/juce_AudioBlock_test.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/containers/juce_FixedSizeFunction.h"
|
||||||
|
"../../../../../modules/juce_dsp/containers/juce_FixedSizeFunction_test.cpp"
|
||||||
"../../../../../modules/juce_dsp/containers/juce_SIMDRegister.h"
|
"../../../../../modules/juce_dsp/containers/juce_SIMDRegister.h"
|
||||||
"../../../../../modules/juce_dsp/containers/juce_SIMDRegister_Impl.h"
|
"../../../../../modules/juce_dsp/containers/juce_SIMDRegister_Impl.h"
|
||||||
"../../../../../modules/juce_dsp/containers/juce_SIMDRegister_test.cpp"
|
"../../../../../modules/juce_dsp/containers/juce_SIMDRegister_test.cpp"
|
||||||
|
|
@ -1055,6 +1059,7 @@ add_library( ${BINARY_NAME}
|
||||||
"../../../../../modules/juce_dsp/filter_design/juce_FilterDesign.h"
|
"../../../../../modules/juce_dsp/filter_design/juce_FilterDesign.h"
|
||||||
"../../../../../modules/juce_dsp/frequency/juce_Convolution.cpp"
|
"../../../../../modules/juce_dsp/frequency/juce_Convolution.cpp"
|
||||||
"../../../../../modules/juce_dsp/frequency/juce_Convolution.h"
|
"../../../../../modules/juce_dsp/frequency/juce_Convolution.h"
|
||||||
|
"../../../../../modules/juce_dsp/frequency/juce_Convolution_test.cpp"
|
||||||
"../../../../../modules/juce_dsp/frequency/juce_FFT.cpp"
|
"../../../../../modules/juce_dsp/frequency/juce_FFT.cpp"
|
||||||
"../../../../../modules/juce_dsp/frequency/juce_FFT.h"
|
"../../../../../modules/juce_dsp/frequency/juce_FFT.h"
|
||||||
"../../../../../modules/juce_dsp/frequency/juce_FFT_test.cpp"
|
"../../../../../modules/juce_dsp/frequency/juce_FFT_test.cpp"
|
||||||
|
|
@ -2577,6 +2582,8 @@ set_source_files_properties("../../../../../modules/juce_core/maths/juce_Random.
|
||||||
set_source_files_properties("../../../../../modules/juce_core/maths/juce_Random.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_core/maths/juce_Random.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_core/maths/juce_Range.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_core/maths/juce_Range.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_core/maths/juce_StatisticsAccumulator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_core/maths/juce_StatisticsAccumulator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_core/memory/juce_AllocationHooks.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_core/memory/juce_AllocationHooks.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_core/memory/juce_Atomic.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_core/memory/juce_Atomic.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_core/memory/juce_ByteOrder.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_core/memory/juce_ByteOrder.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
|
@ -2797,6 +2804,8 @@ set_source_files_properties("../../../../../modules/juce_data_structures/juce_da
|
||||||
set_source_files_properties("../../../../../modules/juce_data_structures/juce_data_structures.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_data_structures/juce_data_structures.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_AudioBlock.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_AudioBlock.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_AudioBlock_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_AudioBlock_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_FixedSizeFunction.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_FixedSizeFunction_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_SIMDRegister.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_SIMDRegister.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_SIMDRegister_Impl.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_SIMDRegister_Impl.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_SIMDRegister_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_SIMDRegister_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
|
@ -2804,6 +2813,7 @@ set_source_files_properties("../../../../../modules/juce_dsp/filter_design/juce_
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/filter_design/juce_FilterDesign.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/filter_design/juce_FilterDesign.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_Convolution.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_Convolution.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_Convolution.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_Convolution.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_Convolution_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_FFT.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_FFT.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_FFT.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_FFT.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_FFT_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_FFT_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
|
|
||||||
|
|
@ -1109,6 +1109,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1388,6 +1391,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction_test.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1397,6 +1403,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution_test.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2887,6 +2896,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
||||||
|
|
@ -3005,6 +3015,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_data_structures\values\juce_ValueWithDefault.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_data_structures\values\juce_ValueWithDefault.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_data_structures\juce_data_structures.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_data_structures\juce_data_structures.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_Impl.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_Impl.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\filter_design\juce_FilterDesign.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\filter_design\juce_FilterDesign.h"/>
|
||||||
|
|
|
||||||
|
|
@ -1576,6 +1576,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1879,6 +1882,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction_test.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1888,6 +1894,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution_test.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -4368,6 +4377,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -4722,6 +4734,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -1109,6 +1109,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1388,6 +1391,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction_test.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1397,6 +1403,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution_test.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2887,6 +2896,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
||||||
|
|
@ -3005,6 +3015,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_data_structures\values\juce_ValueWithDefault.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_data_structures\values\juce_ValueWithDefault.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_data_structures\juce_data_structures.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_data_structures\juce_data_structures.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_Impl.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_Impl.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\filter_design\juce_FilterDesign.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\filter_design\juce_FilterDesign.h"/>
|
||||||
|
|
|
||||||
|
|
@ -1576,6 +1576,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1879,6 +1882,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction_test.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1888,6 +1894,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution_test.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -4368,6 +4377,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -4722,6 +4734,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -1109,6 +1109,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1388,6 +1391,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction_test.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1397,6 +1403,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution_test.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2887,6 +2896,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
||||||
|
|
@ -3005,6 +3015,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_data_structures\values\juce_ValueWithDefault.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_data_structures\values\juce_ValueWithDefault.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_data_structures\juce_data_structures.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_data_structures\juce_data_structures.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_Impl.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_Impl.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\filter_design\juce_FilterDesign.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\filter_design\juce_FilterDesign.h"/>
|
||||||
|
|
|
||||||
|
|
@ -1576,6 +1576,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1879,6 +1882,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction_test.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1888,6 +1894,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution_test.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -4368,6 +4377,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -4722,6 +4734,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -667,6 +667,8 @@ add_library( ${BINARY_NAME}
|
||||||
"../../../../../modules/juce_core/maths/juce_Random.h"
|
"../../../../../modules/juce_core/maths/juce_Random.h"
|
||||||
"../../../../../modules/juce_core/maths/juce_Range.h"
|
"../../../../../modules/juce_core/maths/juce_Range.h"
|
||||||
"../../../../../modules/juce_core/maths/juce_StatisticsAccumulator.h"
|
"../../../../../modules/juce_core/maths/juce_StatisticsAccumulator.h"
|
||||||
|
"../../../../../modules/juce_core/memory/juce_AllocationHooks.cpp"
|
||||||
|
"../../../../../modules/juce_core/memory/juce_AllocationHooks.h"
|
||||||
"../../../../../modules/juce_core/memory/juce_Atomic.h"
|
"../../../../../modules/juce_core/memory/juce_Atomic.h"
|
||||||
"../../../../../modules/juce_core/memory/juce_ByteOrder.h"
|
"../../../../../modules/juce_core/memory/juce_ByteOrder.h"
|
||||||
"../../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h"
|
"../../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h"
|
||||||
|
|
@ -2076,6 +2078,8 @@ set_source_files_properties("../../../../../modules/juce_core/maths/juce_Random.
|
||||||
set_source_files_properties("../../../../../modules/juce_core/maths/juce_Random.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_core/maths/juce_Random.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_core/maths/juce_Range.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_core/maths/juce_Range.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_core/maths/juce_StatisticsAccumulator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_core/maths/juce_StatisticsAccumulator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_core/memory/juce_AllocationHooks.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_core/memory/juce_AllocationHooks.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_core/memory/juce_Atomic.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_core/memory/juce_Atomic.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_core/memory/juce_ByteOrder.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_core/memory/juce_ByteOrder.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
|
|
||||||
|
|
@ -895,6 +895,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2372,6 +2375,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
||||||
|
|
|
||||||
|
|
@ -1210,6 +1210,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -3504,6 +3507,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -684,6 +684,8 @@ add_library( ${BINARY_NAME}
|
||||||
"../../../../../modules/juce_core/maths/juce_Random.h"
|
"../../../../../modules/juce_core/maths/juce_Random.h"
|
||||||
"../../../../../modules/juce_core/maths/juce_Range.h"
|
"../../../../../modules/juce_core/maths/juce_Range.h"
|
||||||
"../../../../../modules/juce_core/maths/juce_StatisticsAccumulator.h"
|
"../../../../../modules/juce_core/maths/juce_StatisticsAccumulator.h"
|
||||||
|
"../../../../../modules/juce_core/memory/juce_AllocationHooks.cpp"
|
||||||
|
"../../../../../modules/juce_core/memory/juce_AllocationHooks.h"
|
||||||
"../../../../../modules/juce_core/memory/juce_Atomic.h"
|
"../../../../../modules/juce_core/memory/juce_Atomic.h"
|
||||||
"../../../../../modules/juce_core/memory/juce_ByteOrder.h"
|
"../../../../../modules/juce_core/memory/juce_ByteOrder.h"
|
||||||
"../../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h"
|
"../../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h"
|
||||||
|
|
@ -904,6 +906,8 @@ add_library( ${BINARY_NAME}
|
||||||
"../../../../../modules/juce_data_structures/juce_data_structures.h"
|
"../../../../../modules/juce_data_structures/juce_data_structures.h"
|
||||||
"../../../../../modules/juce_dsp/containers/juce_AudioBlock.h"
|
"../../../../../modules/juce_dsp/containers/juce_AudioBlock.h"
|
||||||
"../../../../../modules/juce_dsp/containers/juce_AudioBlock_test.cpp"
|
"../../../../../modules/juce_dsp/containers/juce_AudioBlock_test.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/containers/juce_FixedSizeFunction.h"
|
||||||
|
"../../../../../modules/juce_dsp/containers/juce_FixedSizeFunction_test.cpp"
|
||||||
"../../../../../modules/juce_dsp/containers/juce_SIMDRegister.h"
|
"../../../../../modules/juce_dsp/containers/juce_SIMDRegister.h"
|
||||||
"../../../../../modules/juce_dsp/containers/juce_SIMDRegister_Impl.h"
|
"../../../../../modules/juce_dsp/containers/juce_SIMDRegister_Impl.h"
|
||||||
"../../../../../modules/juce_dsp/containers/juce_SIMDRegister_test.cpp"
|
"../../../../../modules/juce_dsp/containers/juce_SIMDRegister_test.cpp"
|
||||||
|
|
@ -911,6 +915,7 @@ add_library( ${BINARY_NAME}
|
||||||
"../../../../../modules/juce_dsp/filter_design/juce_FilterDesign.h"
|
"../../../../../modules/juce_dsp/filter_design/juce_FilterDesign.h"
|
||||||
"../../../../../modules/juce_dsp/frequency/juce_Convolution.cpp"
|
"../../../../../modules/juce_dsp/frequency/juce_Convolution.cpp"
|
||||||
"../../../../../modules/juce_dsp/frequency/juce_Convolution.h"
|
"../../../../../modules/juce_dsp/frequency/juce_Convolution.h"
|
||||||
|
"../../../../../modules/juce_dsp/frequency/juce_Convolution_test.cpp"
|
||||||
"../../../../../modules/juce_dsp/frequency/juce_FFT.cpp"
|
"../../../../../modules/juce_dsp/frequency/juce_FFT.cpp"
|
||||||
"../../../../../modules/juce_dsp/frequency/juce_FFT.h"
|
"../../../../../modules/juce_dsp/frequency/juce_FFT.h"
|
||||||
"../../../../../modules/juce_dsp/frequency/juce_FFT_test.cpp"
|
"../../../../../modules/juce_dsp/frequency/juce_FFT_test.cpp"
|
||||||
|
|
@ -2248,6 +2253,8 @@ set_source_files_properties("../../../../../modules/juce_core/maths/juce_Random.
|
||||||
set_source_files_properties("../../../../../modules/juce_core/maths/juce_Random.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_core/maths/juce_Random.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_core/maths/juce_Range.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_core/maths/juce_Range.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_core/maths/juce_StatisticsAccumulator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_core/maths/juce_StatisticsAccumulator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_core/memory/juce_AllocationHooks.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_core/memory/juce_AllocationHooks.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_core/memory/juce_Atomic.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_core/memory/juce_Atomic.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_core/memory/juce_ByteOrder.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_core/memory/juce_ByteOrder.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
|
@ -2468,6 +2475,8 @@ set_source_files_properties("../../../../../modules/juce_data_structures/juce_da
|
||||||
set_source_files_properties("../../../../../modules/juce_data_structures/juce_data_structures.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_data_structures/juce_data_structures.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_AudioBlock.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_AudioBlock.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_AudioBlock_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_AudioBlock_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_FixedSizeFunction.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_FixedSizeFunction_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_SIMDRegister.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_SIMDRegister.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_SIMDRegister_Impl.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_SIMDRegister_Impl.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_SIMDRegister_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_SIMDRegister_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
|
@ -2475,6 +2484,7 @@ set_source_files_properties("../../../../../modules/juce_dsp/filter_design/juce_
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/filter_design/juce_FilterDesign.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/filter_design/juce_FilterDesign.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_Convolution.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_Convolution.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_Convolution.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_Convolution.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_Convolution_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_FFT.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_FFT.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_FFT.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_FFT.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_FFT_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_FFT_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
|
|
||||||
|
|
@ -902,6 +902,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1181,6 +1184,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction_test.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1190,6 +1196,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution_test.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2551,6 +2560,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
||||||
|
|
@ -2669,6 +2679,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_data_structures\values\juce_ValueWithDefault.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_data_structures\values\juce_ValueWithDefault.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_data_structures\juce_data_structures.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_data_structures\juce_data_structures.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_Impl.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_Impl.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\filter_design\juce_FilterDesign.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\filter_design\juce_FilterDesign.h"/>
|
||||||
|
|
|
||||||
|
|
@ -1291,6 +1291,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1594,6 +1597,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction_test.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1603,6 +1609,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution_test.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -3789,6 +3798,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -4143,6 +4155,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -902,6 +902,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1181,6 +1184,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction_test.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1190,6 +1196,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution_test.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2551,6 +2560,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
||||||
|
|
@ -2669,6 +2679,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_data_structures\values\juce_ValueWithDefault.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_data_structures\values\juce_ValueWithDefault.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_data_structures\juce_data_structures.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_data_structures\juce_data_structures.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_Impl.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_Impl.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\filter_design\juce_FilterDesign.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\filter_design\juce_FilterDesign.h"/>
|
||||||
|
|
|
||||||
|
|
@ -1291,6 +1291,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1594,6 +1597,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction_test.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1603,6 +1609,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution_test.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -3789,6 +3798,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -4143,6 +4155,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -902,6 +902,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1181,6 +1184,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction_test.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1190,6 +1196,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution_test.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2551,6 +2560,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
||||||
|
|
@ -2669,6 +2679,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_data_structures\values\juce_ValueWithDefault.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_data_structures\values\juce_ValueWithDefault.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_data_structures\juce_data_structures.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_data_structures\juce_data_structures.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_Impl.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_Impl.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\filter_design\juce_FilterDesign.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\filter_design\juce_FilterDesign.h"/>
|
||||||
|
|
|
||||||
|
|
@ -1291,6 +1291,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1594,6 +1597,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction_test.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1603,6 +1609,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution_test.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -3789,6 +3798,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -4143,6 +4155,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -217,6 +217,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -486,6 +489,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
||||||
|
|
|
||||||
|
|
@ -157,6 +157,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -522,6 +525,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -671,6 +671,8 @@ add_library( ${BINARY_NAME}
|
||||||
"../../../../../modules/juce_core/maths/juce_Random.h"
|
"../../../../../modules/juce_core/maths/juce_Random.h"
|
||||||
"../../../../../modules/juce_core/maths/juce_Range.h"
|
"../../../../../modules/juce_core/maths/juce_Range.h"
|
||||||
"../../../../../modules/juce_core/maths/juce_StatisticsAccumulator.h"
|
"../../../../../modules/juce_core/maths/juce_StatisticsAccumulator.h"
|
||||||
|
"../../../../../modules/juce_core/memory/juce_AllocationHooks.cpp"
|
||||||
|
"../../../../../modules/juce_core/memory/juce_AllocationHooks.h"
|
||||||
"../../../../../modules/juce_core/memory/juce_Atomic.h"
|
"../../../../../modules/juce_core/memory/juce_Atomic.h"
|
||||||
"../../../../../modules/juce_core/memory/juce_ByteOrder.h"
|
"../../../../../modules/juce_core/memory/juce_ByteOrder.h"
|
||||||
"../../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h"
|
"../../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h"
|
||||||
|
|
@ -2155,6 +2157,8 @@ set_source_files_properties("../../../../../modules/juce_core/maths/juce_Random.
|
||||||
set_source_files_properties("../../../../../modules/juce_core/maths/juce_Random.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_core/maths/juce_Random.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_core/maths/juce_Range.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_core/maths/juce_Range.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_core/maths/juce_StatisticsAccumulator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_core/maths/juce_StatisticsAccumulator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_core/memory/juce_AllocationHooks.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_core/memory/juce_AllocationHooks.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_core/memory/juce_Atomic.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_core/memory/juce_Atomic.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_core/memory/juce_ByteOrder.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_core/memory/juce_ByteOrder.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
|
|
||||||
|
|
@ -895,6 +895,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2457,6 +2460,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
||||||
|
|
|
||||||
|
|
@ -1240,6 +1240,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -3639,6 +3642,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -344,6 +344,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1721,6 +1724,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
||||||
|
|
|
||||||
|
|
@ -622,6 +622,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2577,6 +2580,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -344,6 +344,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1721,6 +1724,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
||||||
|
|
|
||||||
|
|
@ -622,6 +622,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2577,6 +2580,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -344,6 +344,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1721,6 +1724,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
||||||
|
|
|
||||||
|
|
@ -622,6 +622,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2577,6 +2580,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -965,6 +965,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1244,6 +1247,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction_test.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1253,6 +1259,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution_test.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2689,6 +2698,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
||||||
|
|
@ -2807,6 +2817,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_data_structures\values\juce_ValueWithDefault.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_data_structures\values\juce_ValueWithDefault.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_data_structures\juce_data_structures.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_data_structures\juce_data_structures.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_Impl.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_Impl.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\filter_design\juce_FilterDesign.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\filter_design\juce_FilterDesign.h"/>
|
||||||
|
|
|
||||||
|
|
@ -1384,6 +1384,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1687,6 +1690,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction_test.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1696,6 +1702,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution_test.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -4014,6 +4023,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -4368,6 +4380,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -965,6 +965,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1244,6 +1247,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction_test.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1253,6 +1259,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution_test.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2689,6 +2698,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
||||||
|
|
@ -2807,6 +2817,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_data_structures\values\juce_ValueWithDefault.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_data_structures\values\juce_ValueWithDefault.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_data_structures\juce_data_structures.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_data_structures\juce_data_structures.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_Impl.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_Impl.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\filter_design\juce_FilterDesign.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\filter_design\juce_FilterDesign.h"/>
|
||||||
|
|
|
||||||
|
|
@ -1384,6 +1384,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1687,6 +1690,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction_test.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1696,6 +1702,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_Convolution_test.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\frequency\juce_FFT.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
<Filter>JUCE Modules\juce_dsp\frequency</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -4014,6 +4023,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -4368,6 +4380,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_AudioBlock.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_FixedSizeFunction.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\containers\juce_SIMDRegister.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
<Filter>JUCE Modules\juce_dsp\containers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -894,6 +894,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2433,6 +2436,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Random.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_Range.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ByteOrder.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/>
|
||||||
|
|
|
||||||
|
|
@ -1237,6 +1237,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\maths\juce_Random.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_core\memory\juce_MemoryBlock.cpp">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -3606,6 +3609,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_StatisticsAccumulator.h">
|
||||||
<Filter>JUCE Modules\juce_core\maths</Filter>
|
<Filter>JUCE Modules\juce_core\maths</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_AllocationHooks.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Atomic.h">
|
||||||
<Filter>JUCE Modules\juce_core\memory</Filter>
|
<Filter>JUCE Modules\juce_core\memory</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -136,6 +136,7 @@
|
||||||
#include "maths/juce_Expression.cpp"
|
#include "maths/juce_Expression.cpp"
|
||||||
#include "maths/juce_Random.cpp"
|
#include "maths/juce_Random.cpp"
|
||||||
#include "memory/juce_MemoryBlock.cpp"
|
#include "memory/juce_MemoryBlock.cpp"
|
||||||
|
#include "memory/juce_AllocationHooks.cpp"
|
||||||
#include "misc/juce_RuntimePermissions.cpp"
|
#include "misc/juce_RuntimePermissions.cpp"
|
||||||
#include "misc/juce_Result.cpp"
|
#include "misc/juce_Result.cpp"
|
||||||
#include "misc/juce_Uuid.cpp"
|
#include "misc/juce_Uuid.cpp"
|
||||||
|
|
|
||||||
|
|
@ -177,6 +177,13 @@
|
||||||
#define JUCE_STRICT_REFCOUNTEDPOINTER 0
|
#define JUCE_STRICT_REFCOUNTEDPOINTER 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/** Config: JUCE_ENABLE_ALLOCATION_HOOKS
|
||||||
|
If enabled, this will add global allocation functions with built-in assertions, which may
|
||||||
|
help when debugging allocations in unit tests.
|
||||||
|
*/
|
||||||
|
#ifndef JUCE_ENABLE_ALLOCATION_HOOKS
|
||||||
|
#define JUCE_ENABLE_ALLOCATION_HOOKS 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef JUCE_STRING_UTF_TYPE
|
#ifndef JUCE_STRING_UTF_TYPE
|
||||||
#define JUCE_STRING_UTF_TYPE 8
|
#define JUCE_STRING_UTF_TYPE 8
|
||||||
|
|
@ -330,6 +337,7 @@ JUCE_END_IGNORE_WARNINGS_MSVC
|
||||||
#include "zip/juce_ZipFile.h"
|
#include "zip/juce_ZipFile.h"
|
||||||
#include "containers/juce_PropertySet.h"
|
#include "containers/juce_PropertySet.h"
|
||||||
#include "memory/juce_SharedResourcePointer.h"
|
#include "memory/juce_SharedResourcePointer.h"
|
||||||
|
#include "memory/juce_AllocationHooks.h"
|
||||||
|
|
||||||
#if JUCE_CORE_INCLUDE_OBJC_HELPERS && (JUCE_MAC || JUCE_IOS)
|
#if JUCE_CORE_INCLUDE_OBJC_HELPERS && (JUCE_MAC || JUCE_IOS)
|
||||||
#include "native/juce_osx_ObjCHelpers.h"
|
#include "native/juce_osx_ObjCHelpers.h"
|
||||||
|
|
|
||||||
100
modules/juce_core/memory/juce_AllocationHooks.cpp
Normal file
100
modules/juce_core/memory/juce_AllocationHooks.cpp
Normal file
|
|
@ -0,0 +1,100 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if JUCE_ENABLE_ALLOCATION_HOOKS
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
|
||||||
|
static AllocationHooks& getAllocationHooksForThread()
|
||||||
|
{
|
||||||
|
thread_local AllocationHooks hooks;
|
||||||
|
return hooks;
|
||||||
|
}
|
||||||
|
|
||||||
|
void notifyAllocationHooksForThread()
|
||||||
|
{
|
||||||
|
getAllocationHooksForThread().listenerList.call ([] (AllocationHooks::Listener& l)
|
||||||
|
{
|
||||||
|
l.newOrDeleteCalled();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void* operator new (size_t s)
|
||||||
|
{
|
||||||
|
juce::notifyAllocationHooksForThread();
|
||||||
|
return std::malloc (s);
|
||||||
|
}
|
||||||
|
|
||||||
|
void* operator new[] (size_t s)
|
||||||
|
{
|
||||||
|
juce::notifyAllocationHooksForThread();
|
||||||
|
return std::malloc (s);
|
||||||
|
}
|
||||||
|
|
||||||
|
void operator delete (void* p) noexcept
|
||||||
|
{
|
||||||
|
juce::notifyAllocationHooksForThread();
|
||||||
|
std::free (p);
|
||||||
|
}
|
||||||
|
|
||||||
|
void operator delete[] (void* p) noexcept
|
||||||
|
{
|
||||||
|
juce::notifyAllocationHooksForThread();
|
||||||
|
std::free (p);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if JUCE_CXX14_IS_AVAILABLE
|
||||||
|
|
||||||
|
void operator delete (void* p, size_t) noexcept
|
||||||
|
{
|
||||||
|
juce::notifyAllocationHooksForThread();
|
||||||
|
std::free (p);
|
||||||
|
}
|
||||||
|
|
||||||
|
void operator delete[] (void* p, size_t) noexcept
|
||||||
|
{
|
||||||
|
juce::notifyAllocationHooksForThread();
|
||||||
|
std::free (p);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
UnitTestAllocationChecker::UnitTestAllocationChecker (UnitTest& test)
|
||||||
|
: unitTest (test)
|
||||||
|
{
|
||||||
|
getAllocationHooksForThread().addListener (this);
|
||||||
|
}
|
||||||
|
|
||||||
|
UnitTestAllocationChecker::~UnitTestAllocationChecker() noexcept
|
||||||
|
{
|
||||||
|
getAllocationHooksForThread().removeListener (this);
|
||||||
|
unitTest.expectEquals (calls, (size_t) 0, "new or delete was incorrectly called while allocation checker was active");
|
||||||
|
}
|
||||||
|
|
||||||
|
void UnitTestAllocationChecker::newOrDeleteCalled() noexcept { ++calls; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
69
modules/juce_core/memory/juce_AllocationHooks.h
Normal file
69
modules/juce_core/memory/juce_AllocationHooks.h
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if JUCE_ENABLE_ALLOCATION_HOOKS
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
|
||||||
|
class AllocationHooks
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
struct Listener
|
||||||
|
{
|
||||||
|
virtual ~Listener() noexcept = default;
|
||||||
|
virtual void newOrDeleteCalled() noexcept = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
void addListener (Listener* l) { listenerList.add (l); }
|
||||||
|
void removeListener (Listener* l) noexcept { listenerList.remove (l); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
friend void notifyAllocationHooksForThread();
|
||||||
|
ListenerList<Listener> listenerList;
|
||||||
|
};
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Scoped checker which will cause a unit test failure if any new/delete calls
|
||||||
|
are made during the lifetime of the UnitTestAllocationChecker.
|
||||||
|
*/
|
||||||
|
class UnitTestAllocationChecker : private AllocationHooks::Listener
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/** Create a checker which will log a failure to the passed test if
|
||||||
|
any calls to new/delete are made.
|
||||||
|
|
||||||
|
Remember to call `UnitTest::beginTest` before constructing this checker!
|
||||||
|
*/
|
||||||
|
explicit UnitTestAllocationChecker (UnitTest& test);
|
||||||
|
|
||||||
|
/** Will add a failure to the test if the number of new/delete calls during
|
||||||
|
this object's lifetime was greater than zero.
|
||||||
|
*/
|
||||||
|
~UnitTestAllocationChecker() noexcept override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void newOrDeleteCalled() noexcept override;
|
||||||
|
|
||||||
|
UnitTest& unitTest;
|
||||||
|
size_t calls = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -143,6 +143,19 @@ public:
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Creates an AudioBlock that points to the data in an AudioBuffer.
|
||||||
|
AudioBlock does not copy nor own the memory pointed to by dataToUse.
|
||||||
|
Therefore it is the user's responsibility to ensure that the buffer is retained
|
||||||
|
throughout the life-time of the AudioBlock without being modified.
|
||||||
|
*/
|
||||||
|
template <typename OtherSampleType>
|
||||||
|
constexpr AudioBlock (const AudioBuffer<OtherSampleType>& buffer) noexcept
|
||||||
|
: channels (buffer.getArrayOfReadPointers()),
|
||||||
|
numChannels (static_cast<ChannelCountType> (buffer.getNumChannels())),
|
||||||
|
numSamples (static_cast<size_t> (buffer.getNumSamples()))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
/** Creates an AudioBlock that points to the data in an AudioBuffer.
|
/** Creates an AudioBlock that points to the data in an AudioBuffer.
|
||||||
AudioBlock does not copy nor own the memory pointed to by dataToUse.
|
AudioBlock does not copy nor own the memory pointed to by dataToUse.
|
||||||
Therefore it is the user's responsibility to ensure that the buffer is retained
|
Therefore it is the user's responsibility to ensure that the buffer is retained
|
||||||
|
|
|
||||||
230
modules/juce_dsp/containers/juce_FixedSizeFunction.h
Normal file
230
modules/juce_dsp/containers/juce_FixedSizeFunction.h
Normal file
|
|
@ -0,0 +1,230 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace detail
|
||||||
|
{
|
||||||
|
template <typename Ret, typename... Args>
|
||||||
|
struct Vtable
|
||||||
|
{
|
||||||
|
using Storage = void*;
|
||||||
|
|
||||||
|
using Move = void (*) (Storage, Storage);
|
||||||
|
using Call = Ret (*) (Storage, Args...);
|
||||||
|
using Clear = void (*) (Storage);
|
||||||
|
|
||||||
|
constexpr Vtable (Move moveIn, Call callIn, Clear clearIn) noexcept
|
||||||
|
: move (moveIn), call (callIn), clear (clearIn) {}
|
||||||
|
|
||||||
|
Move move = nullptr;
|
||||||
|
Call call = nullptr;
|
||||||
|
Clear clear = nullptr;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename Fn>
|
||||||
|
void move (void* from, void* to)
|
||||||
|
{
|
||||||
|
new (to) Fn (std::move (*reinterpret_cast<Fn*> (from)));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename Fn, typename Ret, typename... Args>
|
||||||
|
typename std::enable_if<std::is_same<Ret, void>::value, Ret>::type call (void* s, Args... args)
|
||||||
|
{
|
||||||
|
(*reinterpret_cast<Fn*> (s)) (args...);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename Fn, typename Ret, typename... Args>
|
||||||
|
typename std::enable_if<! std::is_same<Ret, void>::value, Ret>::type call (void* s, Args... args)
|
||||||
|
{
|
||||||
|
return (*reinterpret_cast<Fn*> (s)) (std::forward<Args> (args)...);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename Fn>
|
||||||
|
void clear (void* s)
|
||||||
|
{
|
||||||
|
auto& fn = *reinterpret_cast<Fn*> (s);
|
||||||
|
fn.~Fn();
|
||||||
|
// I know this looks insane, for some reason MSVC 14 sometimes thinks fn is unreferenced
|
||||||
|
juce::ignoreUnused (fn);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename Fn, typename Ret, typename... Args>
|
||||||
|
constexpr Vtable<Ret, Args...> makeVtable()
|
||||||
|
{
|
||||||
|
return { move <Fn>, call <Fn, Ret, Args...>, clear<Fn> };
|
||||||
|
}
|
||||||
|
} // namespace detail
|
||||||
|
|
||||||
|
template <size_t len, typename T>
|
||||||
|
class FixedSizeFunction;
|
||||||
|
|
||||||
|
/**
|
||||||
|
A type similar to `std::function` that holds a callable object.
|
||||||
|
|
||||||
|
Unlike `std::function`, the callable object will always be stored in
|
||||||
|
a buffer of size `len` that is internal to the FixedSizeFunction instance.
|
||||||
|
This in turn means that creating a FixedSizeFunction instance will never allocate,
|
||||||
|
making FixedSizeFunctions suitable for use in realtime contexts.
|
||||||
|
*/
|
||||||
|
template <size_t len, typename Ret, typename... Args>
|
||||||
|
class FixedSizeFunction<len, Ret (Args...)>
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
using Storage = typename std::aligned_storage<len>::type;
|
||||||
|
|
||||||
|
template <typename Item>
|
||||||
|
using Decay = typename std::decay<Item>::type;
|
||||||
|
|
||||||
|
template <typename Item, typename Fn = Decay<Item>>
|
||||||
|
using IntIfValidConversion = typename std::enable_if<sizeof (Fn) <= len
|
||||||
|
&& alignof (Fn) <= alignof (Storage)
|
||||||
|
&& ! std::is_same<FixedSizeFunction, Fn>::value,
|
||||||
|
int>::type;
|
||||||
|
|
||||||
|
public:
|
||||||
|
/** Create an empty function. */
|
||||||
|
FixedSizeFunction() noexcept = default;
|
||||||
|
|
||||||
|
/** Create an empty function. */
|
||||||
|
FixedSizeFunction (std::nullptr_t) noexcept
|
||||||
|
: FixedSizeFunction() {}
|
||||||
|
|
||||||
|
FixedSizeFunction (const FixedSizeFunction&) = delete;
|
||||||
|
|
||||||
|
/** Forwards the passed Callable into the internal storage buffer. */
|
||||||
|
template <typename Callable,
|
||||||
|
typename Fn = Decay<Callable>,
|
||||||
|
IntIfValidConversion<Callable> = 0>
|
||||||
|
FixedSizeFunction (Callable&& callable)
|
||||||
|
{
|
||||||
|
static_assert (sizeof (Fn) <= len,
|
||||||
|
"The requested function cannot fit in this FixedSizeFunction");
|
||||||
|
static_assert (alignof (Fn) <= alignof (Storage),
|
||||||
|
"FixedSizeFunction cannot accommodate the requested alignment requirements");
|
||||||
|
|
||||||
|
static constexpr auto vtableForCallable = detail::makeVtable<Fn, Ret, Args...>();
|
||||||
|
vtable = &vtableForCallable;
|
||||||
|
|
||||||
|
auto* ptr = new (&storage) Fn (std::forward<Callable> (callable));
|
||||||
|
jassert ((void*) ptr == (void*) &storage);
|
||||||
|
juce::ignoreUnused (ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Move constructor. */
|
||||||
|
FixedSizeFunction (FixedSizeFunction&& other) noexcept
|
||||||
|
: vtable (other.vtable)
|
||||||
|
{
|
||||||
|
move (std::move (other));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Converting constructor from smaller FixedSizeFunctions. */
|
||||||
|
template <size_t otherLen, typename std::enable_if<(otherLen < len), int>::type = 0>
|
||||||
|
FixedSizeFunction (FixedSizeFunction<otherLen, Ret (Args...)>&& other) noexcept
|
||||||
|
: vtable (other.vtable)
|
||||||
|
{
|
||||||
|
move (std::move (other));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Nulls this instance. */
|
||||||
|
FixedSizeFunction& operator= (std::nullptr_t) noexcept
|
||||||
|
{
|
||||||
|
return *this = FixedSizeFunction();
|
||||||
|
}
|
||||||
|
|
||||||
|
FixedSizeFunction& operator= (const FixedSizeFunction&) = delete;
|
||||||
|
|
||||||
|
/** Assigns a new callable to this instance. */
|
||||||
|
template <typename Callable, IntIfValidConversion<Callable> = 0>
|
||||||
|
FixedSizeFunction& operator= (Callable&& callable)
|
||||||
|
{
|
||||||
|
return *this = FixedSizeFunction (std::forward<Callable> (callable));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Move assignment from smaller FixedSizeFunctions. */
|
||||||
|
template <size_t otherLen, typename std::enable_if<(otherLen < len), int>::type = 0>
|
||||||
|
FixedSizeFunction& operator= (FixedSizeFunction<otherLen, Ret (Args...)>&& other) noexcept
|
||||||
|
{
|
||||||
|
return *this = FixedSizeFunction (std::move (other));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Move assignment operator. */
|
||||||
|
FixedSizeFunction& operator= (FixedSizeFunction&& other) noexcept
|
||||||
|
{
|
||||||
|
clear();
|
||||||
|
vtable = other.vtable;
|
||||||
|
move (std::move (other));
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Destructor. */
|
||||||
|
~FixedSizeFunction() noexcept { clear(); }
|
||||||
|
|
||||||
|
/** If this instance is currently storing a callable object, calls that object,
|
||||||
|
otherwise throws `std::bad_function_call`.
|
||||||
|
*/
|
||||||
|
Ret operator() (Args... args) const
|
||||||
|
{
|
||||||
|
if (vtable != nullptr)
|
||||||
|
return vtable->call (&storage, std::forward<Args> (args)...);
|
||||||
|
|
||||||
|
throw std::bad_function_call();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Returns true if this instance currently holds a callable. */
|
||||||
|
explicit operator bool() const noexcept { return vtable != nullptr; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
template <size_t, typename>
|
||||||
|
friend class FixedSizeFunction;
|
||||||
|
|
||||||
|
void clear() noexcept
|
||||||
|
{
|
||||||
|
if (vtable != nullptr)
|
||||||
|
vtable->clear (&storage);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <size_t otherLen, typename T>
|
||||||
|
void move (FixedSizeFunction<otherLen, T>&& other) noexcept
|
||||||
|
{
|
||||||
|
if (vtable != nullptr)
|
||||||
|
vtable->move (&other.storage, &storage);
|
||||||
|
}
|
||||||
|
|
||||||
|
const detail::Vtable<Ret, Args...>* vtable = nullptr;
|
||||||
|
mutable Storage storage;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <size_t len, typename T>
|
||||||
|
bool operator!= (const FixedSizeFunction<len, T>& fn, std::nullptr_t) { return bool (fn); }
|
||||||
|
|
||||||
|
template <size_t len, typename T>
|
||||||
|
bool operator!= (std::nullptr_t, const FixedSizeFunction<len, T>& fn) { return bool (fn); }
|
||||||
|
|
||||||
|
template <size_t len, typename T>
|
||||||
|
bool operator== (const FixedSizeFunction<len, T>& fn, std::nullptr_t) { return ! (fn != nullptr); }
|
||||||
|
|
||||||
|
template <size_t len, typename T>
|
||||||
|
bool operator== (std::nullptr_t, const FixedSizeFunction<len, T>& fn) { return ! (fn != nullptr); }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
345
modules/juce_dsp/containers/juce_FixedSizeFunction_test.cpp
Normal file
345
modules/juce_dsp/containers/juce_FixedSizeFunction_test.cpp
Normal file
|
|
@ -0,0 +1,345 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if JUCE_ENABLE_ALLOCATION_HOOKS
|
||||||
|
#define JUCE_FAIL_ON_ALLOCATION_IN_SCOPE const UnitTestAllocationChecker checker (*this)
|
||||||
|
#else
|
||||||
|
#define JUCE_FAIL_ON_ALLOCATION_IN_SCOPE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
|
||||||
|
class ConstructCounts
|
||||||
|
{
|
||||||
|
auto tie() const noexcept { return std::tie (constructions, copies, moves, calls, destructions); }
|
||||||
|
|
||||||
|
public:
|
||||||
|
int constructions = 0;
|
||||||
|
int copies = 0;
|
||||||
|
int moves = 0;
|
||||||
|
int calls = 0;
|
||||||
|
int destructions = 0;
|
||||||
|
|
||||||
|
ConstructCounts withConstructions (int i) const noexcept { auto c = *this; c.constructions = i; return c; }
|
||||||
|
ConstructCounts withCopies (int i) const noexcept { auto c = *this; c.copies = i; return c; }
|
||||||
|
ConstructCounts withMoves (int i) const noexcept { auto c = *this; c.moves = i; return c; }
|
||||||
|
ConstructCounts withCalls (int i) const noexcept { auto c = *this; c.calls = i; return c; }
|
||||||
|
ConstructCounts withDestructions (int i) const noexcept { auto c = *this; c.destructions = i; return c; }
|
||||||
|
|
||||||
|
bool operator== (const ConstructCounts& other) const noexcept { return tie() == other.tie(); }
|
||||||
|
bool operator!= (const ConstructCounts& other) const noexcept { return tie() != other.tie(); }
|
||||||
|
};
|
||||||
|
|
||||||
|
String& operator<< (String& str, const ConstructCounts& c)
|
||||||
|
{
|
||||||
|
return str << "{ constructions: " << c.constructions
|
||||||
|
<< ", copies: " << c.copies
|
||||||
|
<< ", moves: " << c.moves
|
||||||
|
<< ", calls: " << c.calls
|
||||||
|
<< ", destructions: " << c.destructions
|
||||||
|
<< " }";
|
||||||
|
}
|
||||||
|
|
||||||
|
class FixedSizeFunctionTest : public UnitTest
|
||||||
|
{
|
||||||
|
static void toggleBool (bool& b) { b = ! b; }
|
||||||
|
|
||||||
|
struct ConstructCounter
|
||||||
|
{
|
||||||
|
explicit ConstructCounter (ConstructCounts& countsIn)
|
||||||
|
: counts (countsIn) {}
|
||||||
|
|
||||||
|
ConstructCounter (const ConstructCounter& c)
|
||||||
|
: counts (c.counts)
|
||||||
|
{
|
||||||
|
counts.copies += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
ConstructCounter (ConstructCounter&& c) noexcept
|
||||||
|
: counts (c.counts)
|
||||||
|
{
|
||||||
|
counts.moves += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
~ConstructCounter() noexcept { counts.destructions += 1; }
|
||||||
|
|
||||||
|
void operator()() const noexcept { counts.calls += 1; }
|
||||||
|
|
||||||
|
ConstructCounts& counts;
|
||||||
|
};
|
||||||
|
|
||||||
|
public:
|
||||||
|
FixedSizeFunctionTest()
|
||||||
|
: UnitTest ("Fixed Size Function", UnitTestCategories::dsp)
|
||||||
|
{}
|
||||||
|
|
||||||
|
void runTest() override
|
||||||
|
{
|
||||||
|
beginTest ("Can be constructed and called from a lambda");
|
||||||
|
{
|
||||||
|
JUCE_FAIL_ON_ALLOCATION_IN_SCOPE;
|
||||||
|
|
||||||
|
const auto result = 5;
|
||||||
|
bool wasCalled = false;
|
||||||
|
const auto lambda = [&] { wasCalled = true; return result; };
|
||||||
|
|
||||||
|
const FixedSizeFunction<sizeof (lambda), int()> fn (lambda);
|
||||||
|
const auto out = fn();
|
||||||
|
|
||||||
|
expect (wasCalled);
|
||||||
|
expectEquals (result, out);
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("void fn can be constructed from function with return value");
|
||||||
|
{
|
||||||
|
JUCE_FAIL_ON_ALLOCATION_IN_SCOPE;
|
||||||
|
|
||||||
|
bool wasCalled = false;
|
||||||
|
const auto lambda = [&] { wasCalled = true; return 5; };
|
||||||
|
const FixedSizeFunction<sizeof (lambda), void()> fn (lambda);
|
||||||
|
|
||||||
|
fn();
|
||||||
|
expect (wasCalled);
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Can be constructed and called from a function pointer");
|
||||||
|
{
|
||||||
|
JUCE_FAIL_ON_ALLOCATION_IN_SCOPE;
|
||||||
|
|
||||||
|
bool state = false;
|
||||||
|
|
||||||
|
const FixedSizeFunction<sizeof (void*), void (bool&)> fn (toggleBool);
|
||||||
|
|
||||||
|
fn (state);
|
||||||
|
expect (state);
|
||||||
|
|
||||||
|
fn (state);
|
||||||
|
expect (! state);
|
||||||
|
|
||||||
|
fn (state);
|
||||||
|
expect (state);
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Default constructed functions throw if called");
|
||||||
|
{
|
||||||
|
const auto a = FixedSizeFunction<8, void()>();
|
||||||
|
expectThrowsType (a(), std::bad_function_call)
|
||||||
|
|
||||||
|
const auto b = FixedSizeFunction<8, void()> (nullptr);
|
||||||
|
expectThrowsType (b(), std::bad_function_call)
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Functions can be moved");
|
||||||
|
{
|
||||||
|
JUCE_FAIL_ON_ALLOCATION_IN_SCOPE;
|
||||||
|
|
||||||
|
ConstructCounts counts;
|
||||||
|
|
||||||
|
auto a = FixedSizeFunction<sizeof (ConstructCounter), void()> (ConstructCounter { counts });
|
||||||
|
expectEquals (counts, ConstructCounts().withMoves (1).withDestructions (1)); // The temporary gets destroyed
|
||||||
|
|
||||||
|
a();
|
||||||
|
expectEquals (counts, ConstructCounts().withMoves (1).withDestructions (1).withCalls (1));
|
||||||
|
|
||||||
|
const auto b = std::move (a);
|
||||||
|
expectEquals (counts, ConstructCounts().withMoves (2).withDestructions (1).withCalls (1));
|
||||||
|
|
||||||
|
b();
|
||||||
|
expectEquals (counts, ConstructCounts().withMoves (2).withDestructions (1).withCalls (2));
|
||||||
|
|
||||||
|
b();
|
||||||
|
expectEquals (counts, ConstructCounts().withMoves (2).withDestructions (1).withCalls (3));
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Functions are destructed properly");
|
||||||
|
{
|
||||||
|
JUCE_FAIL_ON_ALLOCATION_IN_SCOPE;
|
||||||
|
|
||||||
|
ConstructCounts counts;
|
||||||
|
const ConstructCounter toCopy { counts };
|
||||||
|
|
||||||
|
{
|
||||||
|
auto a = FixedSizeFunction<sizeof (ConstructCounter), void()> (toCopy);
|
||||||
|
expectEquals (counts, ConstructCounts().withCopies (1));
|
||||||
|
}
|
||||||
|
|
||||||
|
expectEquals (counts, ConstructCounts().withCopies (1).withDestructions (1));
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Avoid destructing functions that fail to construct");
|
||||||
|
{
|
||||||
|
struct BadConstructor
|
||||||
|
{
|
||||||
|
explicit BadConstructor (ConstructCounts& c)
|
||||||
|
: counts (c)
|
||||||
|
{
|
||||||
|
counts.constructions += 1;
|
||||||
|
throw std::runtime_error { "this was meant to happen" };
|
||||||
|
}
|
||||||
|
|
||||||
|
~BadConstructor() noexcept { counts.destructions += 1; }
|
||||||
|
|
||||||
|
void operator()() const noexcept { counts.calls += 1; }
|
||||||
|
|
||||||
|
ConstructCounts& counts;
|
||||||
|
};
|
||||||
|
|
||||||
|
ConstructCounts counts;
|
||||||
|
|
||||||
|
expectThrowsType ((FixedSizeFunction<sizeof (BadConstructor), void()> (BadConstructor { counts })),
|
||||||
|
std::runtime_error)
|
||||||
|
|
||||||
|
expectEquals (counts, ConstructCounts().withConstructions (1));
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Equality checks work");
|
||||||
|
{
|
||||||
|
JUCE_FAIL_ON_ALLOCATION_IN_SCOPE;
|
||||||
|
|
||||||
|
FixedSizeFunction<8, void()> a;
|
||||||
|
expect (! bool (a));
|
||||||
|
expect (a == nullptr);
|
||||||
|
expect (nullptr == a);
|
||||||
|
expect (! (a != nullptr));
|
||||||
|
expect (! (nullptr != a));
|
||||||
|
|
||||||
|
FixedSizeFunction<8, void()> b ([] {});
|
||||||
|
expect (bool (b));
|
||||||
|
expect (b != nullptr);
|
||||||
|
expect (nullptr != b);
|
||||||
|
expect (! (b == nullptr));
|
||||||
|
expect (! (nullptr == b));
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Functions can be cleared");
|
||||||
|
{
|
||||||
|
JUCE_FAIL_ON_ALLOCATION_IN_SCOPE;
|
||||||
|
|
||||||
|
FixedSizeFunction<8, void()> fn ([] {});
|
||||||
|
expect (bool (fn));
|
||||||
|
|
||||||
|
fn = nullptr;
|
||||||
|
expect (! bool (fn));
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Functions can be assigned");
|
||||||
|
{
|
||||||
|
JUCE_FAIL_ON_ALLOCATION_IN_SCOPE;
|
||||||
|
|
||||||
|
using Fn = FixedSizeFunction<8, void()>;
|
||||||
|
|
||||||
|
int numCallsA = 0;
|
||||||
|
int numCallsB = 0;
|
||||||
|
|
||||||
|
Fn x;
|
||||||
|
Fn y;
|
||||||
|
expect (! bool (x));
|
||||||
|
expect (! bool (y));
|
||||||
|
|
||||||
|
x = [&] { numCallsA += 1; };
|
||||||
|
y = [&] { numCallsB += 1; };
|
||||||
|
expect (bool (x));
|
||||||
|
expect (bool (y));
|
||||||
|
|
||||||
|
x();
|
||||||
|
expectEquals (numCallsA, 1);
|
||||||
|
expectEquals (numCallsB, 0);
|
||||||
|
|
||||||
|
y();
|
||||||
|
expectEquals (numCallsA, 1);
|
||||||
|
expectEquals (numCallsB, 1);
|
||||||
|
|
||||||
|
x = std::move (y);
|
||||||
|
expectEquals (numCallsA, 1);
|
||||||
|
expectEquals (numCallsB, 1);
|
||||||
|
|
||||||
|
x();
|
||||||
|
expectEquals (numCallsA, 1);
|
||||||
|
expectEquals (numCallsB, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Functions may mutate internal state");
|
||||||
|
{
|
||||||
|
JUCE_FAIL_ON_ALLOCATION_IN_SCOPE;
|
||||||
|
|
||||||
|
using Fn = FixedSizeFunction<64, void()>;
|
||||||
|
|
||||||
|
Fn x;
|
||||||
|
expect (! bool (x));
|
||||||
|
|
||||||
|
int numCalls = 0;
|
||||||
|
x = [&numCalls, counter = 0]() mutable { counter += 1; numCalls = counter; };
|
||||||
|
expect (bool (x));
|
||||||
|
|
||||||
|
expectEquals (numCalls, 0);
|
||||||
|
|
||||||
|
x();
|
||||||
|
expectEquals (numCalls, 1);
|
||||||
|
|
||||||
|
x();
|
||||||
|
expectEquals (numCalls, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Functions can sink move-only parameters");
|
||||||
|
{
|
||||||
|
JUCE_FAIL_ON_ALLOCATION_IN_SCOPE;
|
||||||
|
|
||||||
|
using Fn = FixedSizeFunction<64, int (std::unique_ptr<int>)>;
|
||||||
|
|
||||||
|
auto value = 5;
|
||||||
|
auto ptr = std::make_unique<int> (value);
|
||||||
|
|
||||||
|
Fn fn = [] (std::unique_ptr<int> p) { return *p; };
|
||||||
|
|
||||||
|
expect (value == fn (std::move (ptr)));
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Functions be converted from smaller functions");
|
||||||
|
{
|
||||||
|
JUCE_FAIL_ON_ALLOCATION_IN_SCOPE;
|
||||||
|
|
||||||
|
using SmallFn = FixedSizeFunction<20, void()>;
|
||||||
|
using LargeFn = FixedSizeFunction<21, void()>;
|
||||||
|
|
||||||
|
bool smallCalled = false;
|
||||||
|
bool largeCalled = false;
|
||||||
|
|
||||||
|
SmallFn small = [&smallCalled, a = std::array<char, 8>{}] { smallCalled = true; juce::ignoreUnused (a); };
|
||||||
|
LargeFn large = [&largeCalled, a = std::array<char, 8>{}] { largeCalled = true; juce::ignoreUnused (a); };
|
||||||
|
|
||||||
|
large = std::move (small);
|
||||||
|
|
||||||
|
large();
|
||||||
|
|
||||||
|
expect (smallCalled);
|
||||||
|
expect (! largeCalled);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
FixedSizeFunctionTest fixedSizedFunctionTest;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#undef JUCE_FAIL_ON_ALLOCATION_IN_SCOPE
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -22,18 +22,32 @@ namespace dsp
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Performs stereo uniform-partitioned convolution of an input signal with an
|
Performs stereo partitioned convolution of an input signal with an
|
||||||
impulse response in the frequency domain, using the juce FFT class.
|
impulse response in the frequency domain, using the JUCE FFT class.
|
||||||
|
|
||||||
It provides some thread-safe functions to load impulse responses as well,
|
This class provides some thread-safe functions to load impulse responses
|
||||||
from audio files or memory on the fly without any noticeable artefacts,
|
from audio files or memory on-the-fly without noticeable artefacts,
|
||||||
performing resampling and trimming if necessary.
|
performing resampling and trimming if necessary.
|
||||||
|
|
||||||
The processing is equivalent to the time domain convolution done in the
|
The processing performed by this class is equivalent to the time domain
|
||||||
class FIRFilter, with a FIRFilter::Coefficients object having as
|
convolution done in the FIRFilter class, with a FIRFilter::Coefficients
|
||||||
coefficients the samples of the impulse response. However, it is more
|
object having the samples of the impulse response as its coefficients.
|
||||||
efficient in general to do frequency domain convolution when the size of
|
However, in general it is more efficient to do frequency domain
|
||||||
the impulse response is higher than 64 samples.
|
convolution when the size of the impulse response is 64 samples or
|
||||||
|
greater.
|
||||||
|
|
||||||
|
Note: The default operation of this class uses zero latency and a uniform
|
||||||
|
partitioned algorithm. If the impulse response size is large, or if the
|
||||||
|
algorithm is too CPU intensive, it is possible to use either a fixed
|
||||||
|
latency version of the algorithm, or a simple non-uniform partitioned
|
||||||
|
convolution algorithm.
|
||||||
|
|
||||||
|
Threading: It is not safe to interleave calls to the methods of this
|
||||||
|
class. If you need to load new impulse responses during processing the
|
||||||
|
`load` calls must be synchronised with `process` calls, which in practice
|
||||||
|
means making the `load` call from the audio thread. The
|
||||||
|
`loadImpulseResponse` functions *are* wait-free and are therefore
|
||||||
|
suitable for use in a realtime context.
|
||||||
|
|
||||||
@see FIRFilter, FIRFilter::Coefficients, FFT
|
@see FIRFilter, FIRFilter::Coefficients, FFT
|
||||||
|
|
||||||
|
|
@ -46,117 +60,164 @@ public:
|
||||||
/** Initialises an object for performing convolution in the frequency domain. */
|
/** Initialises an object for performing convolution in the frequency domain. */
|
||||||
Convolution();
|
Convolution();
|
||||||
|
|
||||||
/** Destructor. */
|
/** Contains configuration information for a convolution with a fixed latency. */
|
||||||
~Convolution();
|
struct Latency { int latencyInSamples; };
|
||||||
|
|
||||||
|
/** Initialises an object for performing convolution with a fixed latency.
|
||||||
|
|
||||||
|
If the requested latency is zero, the actual latency will also be zero.
|
||||||
|
For requested latencies greater than zero, the actual latency will
|
||||||
|
always at least as large as the requested latency. Using a fixed
|
||||||
|
non-zero latency can reduce the CPU consumption of the convolution
|
||||||
|
algorithm.
|
||||||
|
|
||||||
|
@param requiredLatency the minimum latency
|
||||||
|
*/
|
||||||
|
explicit Convolution (const Latency& requiredLatency);
|
||||||
|
|
||||||
|
/** Contains configuration information for a non-uniform convolution. */
|
||||||
|
struct NonUniform { int headSizeInSamples; };
|
||||||
|
|
||||||
|
/** Initialises an object for performing convolution in the frequency domain
|
||||||
|
using a non-uniform partitioned algorithm.
|
||||||
|
|
||||||
|
A requiredHeadSize of 256 samples or greater will improve the
|
||||||
|
efficiency of the processing for IR sizes of 4096 samples or greater
|
||||||
|
(recommended for reverberation IRs).
|
||||||
|
|
||||||
|
@param requiredHeadSize the head IR size for two stage non-uniform
|
||||||
|
partitioned convolution
|
||||||
|
*/
|
||||||
|
explicit Convolution (const NonUniform& requiredHeadSize);
|
||||||
|
|
||||||
|
~Convolution() noexcept;
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
/** Must be called before loading any impulse response, to provide to the
|
/** Must be called before loading any impulse response. This provides the
|
||||||
convolution the maximumBufferSize to handle, and the sample rate useful for
|
maximumBufferSize and the sample rate required for any resampling.
|
||||||
optional resampling.
|
|
||||||
*/
|
*/
|
||||||
void prepare (const ProcessSpec&);
|
void prepare (const ProcessSpec&);
|
||||||
|
|
||||||
/** Resets the processing pipeline, ready to start a new stream of data. */
|
/** Resets the processing pipeline ready to start a new stream of data. */
|
||||||
void reset() noexcept;
|
void reset() noexcept;
|
||||||
|
|
||||||
/** Performs the filter operation on the given set of samples, with optional
|
/** Performs the filter operation on the given set of samples with optional
|
||||||
stereo processing.
|
stereo processing.
|
||||||
*/
|
*/
|
||||||
template <typename ProcessContext>
|
template <typename ProcessContext,
|
||||||
|
std::enable_if_t<std::is_same<typename ProcessContext::SampleType, float>::value, int> = 0>
|
||||||
void process (const ProcessContext& context) noexcept
|
void process (const ProcessContext& context) noexcept
|
||||||
{
|
{
|
||||||
static_assert (std::is_same<typename ProcessContext::SampleType, float>::value,
|
|
||||||
"Convolution engine only supports single precision floating point data");
|
|
||||||
|
|
||||||
processSamples (context.getInputBlock(), context.getOutputBlock(), context.isBypassed);
|
processSamples (context.getInputBlock(), context.getOutputBlock(), context.isBypassed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
enum class Stereo { yes, no };
|
||||||
|
enum class Trim { yes, no };
|
||||||
|
enum class Normalise { yes, no };
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
/** This function loads an impulse response audio file from memory, added in a
|
/** This function loads an impulse response audio file from memory, added in a
|
||||||
JUCE project with the Projucer as binary data. It can load any of the audio
|
JUCE project with the Projucer as binary data. It can load any of the audio
|
||||||
formats registered in JUCE, and performs some resampling and pre-processing
|
formats registered in JUCE, and performs some resampling and pre-processing
|
||||||
as well if needed.
|
as well if needed.
|
||||||
|
|
||||||
Note: Obviously, don't try to use this function on float samples, since the
|
Note: Don't try to use this function on float samples, since the data is
|
||||||
data is supposed to be an audio file in its binary format, and be sure that
|
expected to be an audio file in its binary format. Be sure that the original
|
||||||
the original data is not going to move at all its memory location during the
|
data remains constant throughout the lifetime of the Convolution object, as
|
||||||
process !!
|
the loading process will happen on a background thread once this function has
|
||||||
|
returned.
|
||||||
|
|
||||||
@param sourceData the block of data to use as the stream's source
|
@param sourceData the block of data to use as the stream's source
|
||||||
@param sourceDataSize the number of bytes in the source data block
|
@param sourceDataSize the number of bytes in the source data block
|
||||||
@param wantsStereo requests to process both stereo channels or only one mono channel
|
@param isStereo selects either stereo or mono
|
||||||
@param wantsTrimming requests to trim the start and the end of the impulse response
|
@param requiresTrimming optionally trim the start and the end of the impulse response
|
||||||
@param size the expected size for the impulse response after loading, can be
|
@param size the expected size for the impulse response after loading, can be
|
||||||
set to 0 for requesting maximum original impulse response size
|
set to 0 to requesting the original impulse response size
|
||||||
@param wantsNormalisation requests to normalise the impulse response amplitude
|
@param requiresNormalisation optionally normalise the impulse response amplitude
|
||||||
*/
|
*/
|
||||||
void loadImpulseResponse (const void* sourceData, size_t sourceDataSize,
|
void loadImpulseResponse (const void* sourceData, size_t sourceDataSize,
|
||||||
bool wantsStereo, bool wantsTrimming, size_t size,
|
Stereo isStereo, Trim requiresTrimming, size_t size,
|
||||||
bool wantsNormalisation = true);
|
Normalise requiresNormalisation = Normalise::yes);
|
||||||
|
|
||||||
/** This function loads an impulse response from an audio file on any drive. It
|
/** This function loads an impulse response from an audio file. It can load any
|
||||||
can load any of the audio formats registered in JUCE, and performs some
|
of the audio formats registered in JUCE, and performs some resampling and
|
||||||
resampling and pre-processing as well if needed.
|
pre-processing as well if needed.
|
||||||
|
|
||||||
@param fileImpulseResponse the location of the audio file
|
@param fileImpulseResponse the location of the audio file
|
||||||
@param wantsStereo requests to process both stereo channels or only one mono channel
|
@param isStereo selects either stereo or mono
|
||||||
@param wantsTrimming requests to trim the start and the end of the impulse response
|
@param requiresTrimming optionally trim the start and the end of the impulse response
|
||||||
@param size the expected size for the impulse response after loading, can be
|
@param size the expected size for the impulse response after loading, can be
|
||||||
set to 0 for requesting maximum original impulse response size
|
set to 0 to requesting the original impulse response size
|
||||||
@param wantsNormalisation requests to normalise the impulse response amplitude
|
@param requiresNormalisation optionally normalise the impulse response amplitude
|
||||||
*/
|
*/
|
||||||
void loadImpulseResponse (const File& fileImpulseResponse,
|
void loadImpulseResponse (const File& fileImpulseResponse,
|
||||||
bool wantsStereo, bool wantsTrimming, size_t size,
|
Stereo isStereo, Trim requiresTrimming, size_t size,
|
||||||
bool wantsNormalisation = true);
|
Normalise requiresNormalisation = Normalise::yes);
|
||||||
|
|
||||||
/** This function loads an impulse response from an audio buffer, which is
|
/** This function loads an impulse response from an audio buffer.
|
||||||
copied before doing anything else. Performs some resampling and
|
To avoid memory allocation on the audio thread, this function takes
|
||||||
pre-processing as well if needed.
|
ownership of the buffer passed in.
|
||||||
|
|
||||||
|
If calling this function during processing, make sure that the buffer is
|
||||||
|
not allocated on the audio thread (be careful of accidental copies!).
|
||||||
|
If you need to pass arbitrary/generated buffers it's recommended to
|
||||||
|
create these buffers on a separate thread and to use some wait-free
|
||||||
|
construct (a lock-free queue or a SpinLock/GenericScopedTryLock combination)
|
||||||
|
to transfer ownership to the audio thread without allocating.
|
||||||
|
|
||||||
@param buffer the AudioBuffer to use
|
@param buffer the AudioBuffer to use
|
||||||
@param bufferSampleRate the sampleRate of the data in the AudioBuffer
|
@param bufferSampleRate the sampleRate of the data in the AudioBuffer
|
||||||
@param wantsStereo requests to process both stereo channels or only one mono channel
|
@param isStereo selects either stereo or mono
|
||||||
@param wantsTrimming requests to trim the start and the end of the impulse response
|
@param requiresTrimming optionally trim the start and the end of the impulse response
|
||||||
@param wantsNormalisation requests to normalise the impulse response amplitude
|
@param requiresNormalisation optionally normalise the impulse response amplitude
|
||||||
@param size the expected size for the impulse response after loading, can be
|
|
||||||
set to 0 for requesting maximum original impulse response size
|
|
||||||
*/
|
*/
|
||||||
void copyAndLoadImpulseResponseFromBuffer (AudioBuffer<float>& buffer, double bufferSampleRate,
|
void loadImpulseResponse (AudioBuffer<float>&& buffer, double bufferSampleRate,
|
||||||
bool wantsStereo, bool wantsTrimming, bool wantsNormalisation,
|
Stereo isStereo, Trim requiresTrimming, Normalise requiresNormalisation);
|
||||||
size_t size);
|
|
||||||
|
|
||||||
/** This function loads an impulse response from an audio block, which is
|
/** This function returns the size of the current IR in samples. */
|
||||||
copied before doing anything else. Performs some resampling and
|
int getCurrentIRSize() const;
|
||||||
pre-processing as well if needed.
|
|
||||||
|
|
||||||
@param block the AudioBlock to use
|
/** This function returns the current latency of the process in samples.
|
||||||
@param bufferSampleRate the sampleRate of the data in the AudioBuffer
|
|
||||||
@param wantsStereo requests to process both stereo channels or only one channel
|
Note: This is the latency of the convolution engine, not the latency
|
||||||
@param wantsTrimming requests to trim the start and the end of the impulse response
|
associated with the current impulse response choice that has to be
|
||||||
@param wantsNormalisation requests to normalise the impulse response amplitude
|
considered separately (linear phase filters, for eaxmple).
|
||||||
@param size the expected size for the impulse response after loading,
|
|
||||||
-1 for maximum length
|
|
||||||
*/
|
*/
|
||||||
void copyAndLoadImpulseResponseFromBlock (AudioBlock<float> block, double bufferSampleRate,
|
int getLatency() const;
|
||||||
bool wantsStereo, bool wantsTrimming, bool wantsNormalisation,
|
|
||||||
size_t size);
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//==============================================================================
|
|
||||||
struct Pimpl;
|
|
||||||
std::unique_ptr<Pimpl> pimpl;
|
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
void processSamples (const AudioBlock<const float>&, AudioBlock<float>&, bool isBypassed) noexcept;
|
void processSamples (const AudioBlock<const float>&, AudioBlock<float>&, bool isBypassed) noexcept;
|
||||||
|
|
||||||
|
class Mixer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void prepare (const ProcessSpec&);
|
||||||
|
|
||||||
|
template <typename ProcessWet>
|
||||||
|
void processSamples (const AudioBlock<const float>&,
|
||||||
|
AudioBlock<float>&,
|
||||||
|
bool isBypassed,
|
||||||
|
ProcessWet&&) noexcept;
|
||||||
|
|
||||||
|
void reset();
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::array<SmoothedValue<float>, 2> volumeDry, volumeWet;
|
||||||
|
AudioBlock<float> dryBlock;
|
||||||
|
HeapBlock<char> dryBlockStorage;
|
||||||
|
double sampleRate = 0;
|
||||||
|
bool currentIsBypassed = false;
|
||||||
|
};
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
double sampleRate;
|
class Impl;
|
||||||
bool currentIsBypassed = false;
|
std::unique_ptr<Impl> pimpl;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
Mixer mixer;
|
||||||
bool isActive = false;
|
bool isActive = false;
|
||||||
SmoothedValue<float> volumeDry[2], volumeWet[2];
|
|
||||||
AudioBlock<float> dryBuffer;
|
|
||||||
HeapBlock<char> dryBufferStorage;
|
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Convolution)
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Convolution)
|
||||||
|
|
|
||||||
512
modules/juce_dsp/frequency/juce_Convolution_test.cpp
Normal file
512
modules/juce_dsp/frequency/juce_Convolution_test.cpp
Normal file
|
|
@ -0,0 +1,512 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if JUCE_ENABLE_ALLOCATION_HOOKS
|
||||||
|
#define JUCE_FAIL_ON_ALLOCATION_IN_SCOPE const UnitTestAllocationChecker checker (*this)
|
||||||
|
#else
|
||||||
|
#define JUCE_FAIL_ON_ALLOCATION_IN_SCOPE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
|
||||||
|
class ConvolutionTest : public UnitTest
|
||||||
|
{
|
||||||
|
template <typename Callback>
|
||||||
|
static void nTimes (int n, Callback&& callback)
|
||||||
|
{
|
||||||
|
for (auto i = 0; i < n; ++i)
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
|
||||||
|
static AudioBuffer<float> makeRamp (int length)
|
||||||
|
{
|
||||||
|
AudioBuffer<float> result (1, length);
|
||||||
|
result.clear();
|
||||||
|
|
||||||
|
const auto writePtr = result.getWritePointer (0);
|
||||||
|
std::fill (writePtr, writePtr + length, 1.0f);
|
||||||
|
result.applyGainRamp (0, length, 1.0f, 0.0f);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static AudioBuffer<float> makeStereoRamp (int length)
|
||||||
|
{
|
||||||
|
AudioBuffer<float> result (2, length);
|
||||||
|
result.clear();
|
||||||
|
|
||||||
|
auto** channels = result.getArrayOfWritePointers();
|
||||||
|
std::for_each (channels, channels + result.getNumChannels(), [&] (auto* channel)
|
||||||
|
{
|
||||||
|
std::fill (channel, channel + length, 1.0f);
|
||||||
|
});
|
||||||
|
|
||||||
|
result.applyGainRamp (0, 0, length, 1.0f, 0.0f);
|
||||||
|
result.applyGainRamp (1, 0, length, 0.0f, 1.0f);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void addDiracImpulse (const AudioBlock<float>& block)
|
||||||
|
{
|
||||||
|
block.clear();
|
||||||
|
|
||||||
|
for (size_t channel = 0; channel != block.getNumChannels(); ++channel)
|
||||||
|
block.setSample ((int) channel, 0, 1.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
void checkForNans (const AudioBlock<float>& block)
|
||||||
|
{
|
||||||
|
for (size_t channel = 0; channel != block.getNumChannels(); ++channel)
|
||||||
|
for (size_t sample = 0; sample != block.getNumSamples(); ++sample)
|
||||||
|
expect (! std::isnan (block.getSample ((int) channel, (int) sample)));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
void nonAllocatingExpectWithinAbsoluteError (const T& a, const T& b, const T& error)
|
||||||
|
{
|
||||||
|
expect (std::abs (a - b) < error);
|
||||||
|
}
|
||||||
|
|
||||||
|
enum class InitSequence { prepareThenLoad, loadThenPrepare };
|
||||||
|
|
||||||
|
void checkLatency (const Convolution& convolution, const Convolution::Latency& latency)
|
||||||
|
{
|
||||||
|
const auto reportedLatency = convolution.getLatency();
|
||||||
|
|
||||||
|
if (latency.latencyInSamples == 0)
|
||||||
|
expect (reportedLatency == 0);
|
||||||
|
|
||||||
|
expect (reportedLatency >= latency.latencyInSamples);
|
||||||
|
}
|
||||||
|
|
||||||
|
void checkLatency (const Convolution&, const Convolution::NonUniform&) {}
|
||||||
|
|
||||||
|
template <typename ConvolutionConfig>
|
||||||
|
void testConvolution (const ProcessSpec& spec,
|
||||||
|
const ConvolutionConfig& config,
|
||||||
|
const AudioBuffer<float>& ir,
|
||||||
|
double irSampleRate,
|
||||||
|
Convolution::Stereo stereo,
|
||||||
|
Convolution::Trim trim,
|
||||||
|
Convolution::Normalise normalise,
|
||||||
|
const AudioBlock<const float>& expectedResult,
|
||||||
|
InitSequence initSequence)
|
||||||
|
{
|
||||||
|
AudioBuffer<float> buffer (static_cast<int> (spec.numChannels),
|
||||||
|
static_cast<int> (spec.maximumBlockSize));
|
||||||
|
AudioBlock<float> block { buffer };
|
||||||
|
ProcessContextReplacing<float> context { block };
|
||||||
|
|
||||||
|
const auto numBlocksPerSecond = (int) std::ceil (spec.sampleRate / spec.maximumBlockSize);
|
||||||
|
const auto numBlocksForImpulse = (int) std::ceil ((double) expectedResult.getNumSamples() / spec.maximumBlockSize);
|
||||||
|
|
||||||
|
AudioBuffer<float> outBuffer (static_cast<int> (spec.numChannels),
|
||||||
|
numBlocksForImpulse * static_cast<int> (spec.maximumBlockSize));
|
||||||
|
|
||||||
|
Convolution convolution (config);
|
||||||
|
|
||||||
|
auto copiedIr = ir;
|
||||||
|
|
||||||
|
if (initSequence == InitSequence::loadThenPrepare)
|
||||||
|
convolution.loadImpulseResponse (std::move (copiedIr), irSampleRate, stereo, trim, normalise);
|
||||||
|
|
||||||
|
convolution.prepare (spec);
|
||||||
|
|
||||||
|
JUCE_FAIL_ON_ALLOCATION_IN_SCOPE;
|
||||||
|
|
||||||
|
if (initSequence == InitSequence::prepareThenLoad)
|
||||||
|
convolution.loadImpulseResponse (std::move (copiedIr), irSampleRate, stereo, trim, normalise);
|
||||||
|
|
||||||
|
checkLatency (convolution, config);
|
||||||
|
|
||||||
|
auto processBlocksWithDiracImpulse = [&]
|
||||||
|
{
|
||||||
|
for (auto i = 0; i != numBlocksForImpulse; ++i)
|
||||||
|
{
|
||||||
|
if (i == 0)
|
||||||
|
addDiracImpulse (block);
|
||||||
|
else
|
||||||
|
block.clear();
|
||||||
|
|
||||||
|
convolution.process (context);
|
||||||
|
|
||||||
|
for (auto c = 0; c != static_cast<int> (spec.numChannels); ++c)
|
||||||
|
{
|
||||||
|
outBuffer.copyFrom (c,
|
||||||
|
i * static_cast<int> (spec.maximumBlockSize),
|
||||||
|
block.getChannelPointer (static_cast<size_t> (c)),
|
||||||
|
static_cast<int> (spec.maximumBlockSize));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const auto time = Time::getMillisecondCounter();
|
||||||
|
|
||||||
|
// Wait 10 seconds to load the impulse response
|
||||||
|
while (Time::getMillisecondCounter() - time < 10'000)
|
||||||
|
{
|
||||||
|
processBlocksWithDiracImpulse();
|
||||||
|
|
||||||
|
// Check if the impulse response was loaded
|
||||||
|
if (block.getSample (0, 1) != 0.0f)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// At this point, our convolution should be loaded and the current IR size should
|
||||||
|
// match the expected result size
|
||||||
|
expect (convolution.getCurrentIRSize() == static_cast<int> (expectedResult.getNumSamples()));
|
||||||
|
|
||||||
|
// Make sure we get any smoothing out of the way
|
||||||
|
nTimes (numBlocksPerSecond, processBlocksWithDiracImpulse);
|
||||||
|
|
||||||
|
nTimes (5, [&]
|
||||||
|
{
|
||||||
|
processBlocksWithDiracImpulse();
|
||||||
|
|
||||||
|
const auto actualLatency = static_cast<size_t> (convolution.getLatency());
|
||||||
|
|
||||||
|
// The output should be the same as the IR
|
||||||
|
for (size_t c = 0; c != static_cast<size_t> (expectedResult.getNumChannels()); ++c)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i != static_cast<size_t> (expectedResult.getNumSamples()); ++i)
|
||||||
|
{
|
||||||
|
const auto equivalentSample = i + actualLatency;
|
||||||
|
|
||||||
|
if (static_cast<int> (equivalentSample) >= outBuffer.getNumSamples())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
nonAllocatingExpectWithinAbsoluteError (outBuffer.getSample ((int) c, (int) equivalentSample),
|
||||||
|
expectedResult.getSample ((int) c, (int) i),
|
||||||
|
0.01f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename ConvolutionConfig>
|
||||||
|
void testConvolution (const ProcessSpec& spec,
|
||||||
|
const ConvolutionConfig& config,
|
||||||
|
const AudioBuffer<float>& ir,
|
||||||
|
double irSampleRate,
|
||||||
|
Convolution::Stereo stereo,
|
||||||
|
Convolution::Trim trim,
|
||||||
|
Convolution::Normalise normalise,
|
||||||
|
const AudioBlock<const float>& expectedResult)
|
||||||
|
{
|
||||||
|
for (const auto sequence : { InitSequence::prepareThenLoad, InitSequence::loadThenPrepare })
|
||||||
|
testConvolution (spec, config, ir, irSampleRate, stereo, trim, normalise, expectedResult, sequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
ConvolutionTest()
|
||||||
|
: UnitTest ("Convolution", UnitTestCategories::dsp)
|
||||||
|
{}
|
||||||
|
|
||||||
|
void runTest() override
|
||||||
|
{
|
||||||
|
const ProcessSpec spec { 44100.0, 512, 2 };
|
||||||
|
AudioBuffer<float> buffer (static_cast<int> (spec.numChannels),
|
||||||
|
static_cast<int> (spec.maximumBlockSize));
|
||||||
|
AudioBlock<float> block { buffer };
|
||||||
|
ProcessContextReplacing<float> context { block };
|
||||||
|
|
||||||
|
const auto impulseData = [&]
|
||||||
|
{
|
||||||
|
Random random;
|
||||||
|
AudioBuffer<float> result (2, 1000);
|
||||||
|
|
||||||
|
for (auto channel = 0; channel != result.getNumChannels(); ++channel)
|
||||||
|
for (auto sample = 0; sample != result.getNumSamples(); ++sample)
|
||||||
|
result.setSample (channel, sample, random.nextFloat());
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}();
|
||||||
|
|
||||||
|
beginTest ("Impulse responses can be loaded without allocating on the audio thread");
|
||||||
|
{
|
||||||
|
Convolution convolution;
|
||||||
|
convolution.prepare (spec);
|
||||||
|
|
||||||
|
auto copy = impulseData;
|
||||||
|
|
||||||
|
JUCE_FAIL_ON_ALLOCATION_IN_SCOPE;
|
||||||
|
|
||||||
|
nTimes (100, [&]
|
||||||
|
{
|
||||||
|
convolution.loadImpulseResponse (std::move (copy),
|
||||||
|
1000,
|
||||||
|
Convolution::Stereo::yes,
|
||||||
|
Convolution::Trim::yes,
|
||||||
|
Convolution::Normalise::no);
|
||||||
|
addDiracImpulse (block);
|
||||||
|
convolution.process (context);
|
||||||
|
checkForNans (block);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Convolution can be reset without allocating on the audio thread");
|
||||||
|
{
|
||||||
|
Convolution convolution;
|
||||||
|
convolution.prepare (spec);
|
||||||
|
|
||||||
|
auto copy = impulseData;
|
||||||
|
|
||||||
|
convolution.loadImpulseResponse (std::move (copy),
|
||||||
|
1000,
|
||||||
|
Convolution::Stereo::yes,
|
||||||
|
Convolution::Trim::yes,
|
||||||
|
Convolution::Normalise::yes);
|
||||||
|
|
||||||
|
JUCE_FAIL_ON_ALLOCATION_IN_SCOPE;
|
||||||
|
|
||||||
|
nTimes (100, [&]
|
||||||
|
{
|
||||||
|
addDiracImpulse (block);
|
||||||
|
convolution.reset();
|
||||||
|
convolution.process (context);
|
||||||
|
convolution.reset();
|
||||||
|
});
|
||||||
|
|
||||||
|
checkForNans (block);
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Completely empty IRs don't crash");
|
||||||
|
{
|
||||||
|
AudioBuffer<float> emptyBuffer;
|
||||||
|
|
||||||
|
Convolution convolution;
|
||||||
|
convolution.prepare (spec);
|
||||||
|
|
||||||
|
auto copy = impulseData;
|
||||||
|
|
||||||
|
convolution.loadImpulseResponse (std::move (copy),
|
||||||
|
2000,
|
||||||
|
Convolution::Stereo::yes,
|
||||||
|
Convolution::Trim::yes,
|
||||||
|
Convolution::Normalise::yes);
|
||||||
|
|
||||||
|
JUCE_FAIL_ON_ALLOCATION_IN_SCOPE;
|
||||||
|
|
||||||
|
nTimes (100, [&]
|
||||||
|
{
|
||||||
|
addDiracImpulse (block);
|
||||||
|
convolution.reset();
|
||||||
|
convolution.process (context);
|
||||||
|
convolution.reset();
|
||||||
|
});
|
||||||
|
|
||||||
|
checkForNans (block);
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Short uniform convolutions work");
|
||||||
|
{
|
||||||
|
const auto ramp = makeRamp (static_cast<int> (spec.maximumBlockSize) / 2);
|
||||||
|
testConvolution (spec,
|
||||||
|
Convolution::Latency { 0 },
|
||||||
|
ramp,
|
||||||
|
spec.sampleRate,
|
||||||
|
Convolution::Stereo::yes,
|
||||||
|
Convolution::Trim::yes,
|
||||||
|
Convolution::Normalise::no,
|
||||||
|
ramp);
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Longer uniform convolutions work");
|
||||||
|
{
|
||||||
|
const auto ramp = makeRamp (static_cast<int> (spec.maximumBlockSize) * 8);
|
||||||
|
testConvolution (spec,
|
||||||
|
Convolution::Latency { 0 },
|
||||||
|
ramp,
|
||||||
|
spec.sampleRate,
|
||||||
|
Convolution::Stereo::yes,
|
||||||
|
Convolution::Trim::yes,
|
||||||
|
Convolution::Normalise::no,
|
||||||
|
ramp);
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Normalisation works");
|
||||||
|
{
|
||||||
|
const auto ramp = makeRamp (static_cast<int> (spec.maximumBlockSize) * 8);
|
||||||
|
|
||||||
|
auto copy = ramp;
|
||||||
|
const auto channels = copy.getArrayOfWritePointers();
|
||||||
|
const auto numChannels = copy.getNumChannels();
|
||||||
|
const auto numSamples = copy.getNumSamples();
|
||||||
|
|
||||||
|
const auto factor = 0.125f / std::sqrt (std::accumulate (channels, channels + numChannels, 0.0f, [&] (auto max, auto* channel)
|
||||||
|
{
|
||||||
|
return juce::jmax (max, std::accumulate (channel, channel + numSamples, 0.0f, [] (auto sum, auto sample)
|
||||||
|
{
|
||||||
|
return sum + sample * sample;
|
||||||
|
}));
|
||||||
|
}));
|
||||||
|
|
||||||
|
std::for_each (channels, channels + numChannels, [&] (auto* channel)
|
||||||
|
{
|
||||||
|
FloatVectorOperations::multiply (channel, factor, numSamples);
|
||||||
|
});
|
||||||
|
|
||||||
|
testConvolution (spec,
|
||||||
|
Convolution::Latency { 0 },
|
||||||
|
ramp,
|
||||||
|
spec.sampleRate,
|
||||||
|
Convolution::Stereo::yes,
|
||||||
|
Convolution::Trim::yes,
|
||||||
|
Convolution::Normalise::yes,
|
||||||
|
copy);
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Stereo convolutions work");
|
||||||
|
{
|
||||||
|
const auto ramp = makeStereoRamp (static_cast<int> (spec.maximumBlockSize) * 5);
|
||||||
|
testConvolution (spec,
|
||||||
|
Convolution::Latency { 0 },
|
||||||
|
ramp,
|
||||||
|
spec.sampleRate,
|
||||||
|
Convolution::Stereo::yes,
|
||||||
|
Convolution::Trim::yes,
|
||||||
|
Convolution::Normalise::no,
|
||||||
|
ramp);
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Stereo IRs only use first channel if stereo is disabled");
|
||||||
|
{
|
||||||
|
const auto length = static_cast<int> (spec.maximumBlockSize) * 5;
|
||||||
|
const auto ramp = makeStereoRamp (length);
|
||||||
|
|
||||||
|
const float* channels[] { ramp.getReadPointer (0), ramp.getReadPointer (0) };
|
||||||
|
|
||||||
|
testConvolution (spec,
|
||||||
|
Convolution::Latency { 0 },
|
||||||
|
ramp,
|
||||||
|
spec.sampleRate,
|
||||||
|
Convolution::Stereo::no,
|
||||||
|
Convolution::Trim::yes,
|
||||||
|
Convolution::Normalise::no,
|
||||||
|
AudioBlock<const float> (channels, numElementsInArray (channels), length));
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("IRs with extra silence are trimmed appropriately");
|
||||||
|
{
|
||||||
|
const auto length = static_cast<int> (spec.maximumBlockSize) * 3;
|
||||||
|
const auto ramp = makeRamp (length);
|
||||||
|
AudioBuffer<float> paddedRamp (ramp.getNumChannels(), ramp.getNumSamples() * 2);
|
||||||
|
paddedRamp.clear();
|
||||||
|
|
||||||
|
const auto offset = (paddedRamp.getNumSamples() - ramp.getNumSamples()) / 2;
|
||||||
|
|
||||||
|
for (auto channel = 0; channel != ramp.getNumChannels(); ++channel)
|
||||||
|
paddedRamp.copyFrom (channel, offset, ramp.getReadPointer (channel), length);
|
||||||
|
|
||||||
|
testConvolution (spec,
|
||||||
|
Convolution::Latency { 0 },
|
||||||
|
paddedRamp,
|
||||||
|
spec.sampleRate,
|
||||||
|
Convolution::Stereo::no,
|
||||||
|
Convolution::Trim::yes,
|
||||||
|
Convolution::Normalise::no,
|
||||||
|
ramp);
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("IRs are resampled if their sample rate is different to the playback rate");
|
||||||
|
{
|
||||||
|
for (const auto resampleRatio : { 0.1, 0.5, 2.0, 10.0 })
|
||||||
|
{
|
||||||
|
const auto length = static_cast<int> (spec.maximumBlockSize) * 2;
|
||||||
|
const auto ramp = makeStereoRamp (length);
|
||||||
|
|
||||||
|
const auto resampled = [&]
|
||||||
|
{
|
||||||
|
AudioBuffer<float> original = ramp;
|
||||||
|
MemoryAudioSource memorySource (original, false);
|
||||||
|
ResamplingAudioSource resamplingSource (&memorySource, false, original.getNumChannels());
|
||||||
|
|
||||||
|
const auto finalSize = roundToInt (original.getNumSamples() / resampleRatio);
|
||||||
|
resamplingSource.setResamplingRatio (resampleRatio);
|
||||||
|
resamplingSource.prepareToPlay (finalSize, spec.sampleRate * resampleRatio);
|
||||||
|
|
||||||
|
AudioBuffer<float> result (original.getNumChannels(), finalSize);
|
||||||
|
resamplingSource.getNextAudioBlock ({ &result, 0, result.getNumSamples() });
|
||||||
|
return result;
|
||||||
|
}();
|
||||||
|
|
||||||
|
testConvolution (spec,
|
||||||
|
Convolution::Latency { 0 },
|
||||||
|
ramp,
|
||||||
|
spec.sampleRate * resampleRatio,
|
||||||
|
Convolution::Stereo::yes,
|
||||||
|
Convolution::Trim::yes,
|
||||||
|
Convolution::Normalise::no,
|
||||||
|
resampled);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Non-uniform convolutions work");
|
||||||
|
{
|
||||||
|
const auto ramp = makeRamp (static_cast<int> (spec.maximumBlockSize) * 8);
|
||||||
|
|
||||||
|
for (auto headSize : { spec.maximumBlockSize / 2, spec.maximumBlockSize, spec.maximumBlockSize * 9 })
|
||||||
|
{
|
||||||
|
testConvolution (spec,
|
||||||
|
Convolution::NonUniform { static_cast<int> (headSize) },
|
||||||
|
ramp,
|
||||||
|
spec.sampleRate,
|
||||||
|
Convolution::Stereo::yes,
|
||||||
|
Convolution::Trim::yes,
|
||||||
|
Convolution::Normalise::no,
|
||||||
|
ramp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Convolutions with latency work");
|
||||||
|
{
|
||||||
|
const auto ramp = makeRamp (static_cast<int> (spec.maximumBlockSize) * 8);
|
||||||
|
using BlockSize = decltype (spec.maximumBlockSize);
|
||||||
|
|
||||||
|
for (auto latency : { /*static_cast<BlockSize> (0),
|
||||||
|
spec.maximumBlockSize / 3,
|
||||||
|
spec.maximumBlockSize,
|
||||||
|
spec.maximumBlockSize * 2, */
|
||||||
|
static_cast<BlockSize> (spec.maximumBlockSize * 2.5) })
|
||||||
|
{
|
||||||
|
testConvolution (spec,
|
||||||
|
Convolution::Latency { static_cast<int> (latency) },
|
||||||
|
ramp,
|
||||||
|
spec.sampleRate,
|
||||||
|
Convolution::Stereo::yes,
|
||||||
|
Convolution::Trim::yes,
|
||||||
|
Convolution::Normalise::no,
|
||||||
|
ramp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
ConvolutionTest convolutionUnitTest;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef JUCE_FAIL_ON_ALLOCATION_IN_SCOPE
|
||||||
|
|
@ -47,6 +47,8 @@
|
||||||
#define JUCE_IPP_AVAILABLE 1
|
#define JUCE_IPP_AVAILABLE 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "containers/juce_FixedSizeFunction.h"
|
||||||
|
|
||||||
#include "processors/juce_FIRFilter.cpp"
|
#include "processors/juce_FIRFilter.cpp"
|
||||||
#include "processors/juce_IIRFilter.cpp"
|
#include "processors/juce_IIRFilter.cpp"
|
||||||
#include "processors/juce_FirstOrderTPTFilter.cpp"
|
#include "processors/juce_FirstOrderTPTFilter.cpp"
|
||||||
|
|
@ -94,6 +96,8 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "containers/juce_AudioBlock_test.cpp"
|
#include "containers/juce_AudioBlock_test.cpp"
|
||||||
|
#include "containers/juce_FixedSizeFunction_test.cpp"
|
||||||
|
#include "frequency/juce_Convolution_test.cpp"
|
||||||
#include "frequency/juce_FFT_test.cpp"
|
#include "frequency/juce_FFT_test.cpp"
|
||||||
#include "processors/juce_FIRFilter_test.cpp"
|
#include "processors/juce_FIRFilter_test.cpp"
|
||||||
#include "processors/juce_ProcessorChain_test.cpp"
|
#include "processors/juce_ProcessorChain_test.cpp"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue