@@ -22,17 +22,6 @@ | |||
#include "CarlaMathUtils.hpp" | |||
#include "CarlaMIDI.h" | |||
#include "AppConfig.h" | |||
#include "juce_audio_basics/juce_audio_basics.h" | |||
using juce::AudioBuffer; | |||
using juce::FloatVectorOperations; | |||
using juce::MemoryBlock; | |||
using juce::String; | |||
using juce::StringArray; | |||
using juce::jmin; | |||
using juce::jmax; | |||
CARLA_BACKEND_START_NAMESPACE | |||
// ----------------------------------------------------------------------- | |||
@@ -799,7 +788,6 @@ void RackGraph::process(CarlaEngine::ProtectedData* const data, const float* inB | |||
uint32_t oldAudioOutCount = 0; | |||
uint32_t oldMidiOutCount = 0; | |||
bool processed = false; | |||
juce::Range<float> range; | |||
// process plugins | |||
for (uint i=0; i < data->curPluginCount; ++i) | |||
@@ -866,11 +854,8 @@ void RackGraph::process(CarlaEngine::ProtectedData* const data, const float* inB | |||
if (oldAudioInCount > 0) | |||
{ | |||
range = FloatVectorOperations::findMinAndMax(inBuf0, frames); | |||
pluginData.insPeak[0] = carla_maxLimited<float>(std::abs(range.getStart()), std::abs(range.getEnd()), 1.0f); | |||
range = FloatVectorOperations::findMinAndMax(inBuf1, frames); | |||
pluginData.insPeak[1] = carla_maxLimited<float>(std::abs(range.getStart()), std::abs(range.getEnd()), 1.0f); | |||
pluginData.insPeak[0] = carla_findMaxNormalizedFloat(inBuf0, frames); | |||
pluginData.insPeak[1] = carla_findMaxNormalizedFloat(inBuf1, frames); | |||
} | |||
else | |||
{ | |||
@@ -880,11 +865,8 @@ void RackGraph::process(CarlaEngine::ProtectedData* const data, const float* inB | |||
if (oldAudioOutCount > 0) | |||
{ | |||
range = FloatVectorOperations::findMinAndMax(outBuf[0], frames); | |||
pluginData.outsPeak[0] = carla_maxLimited<float>(std::abs(range.getStart()), std::abs(range.getEnd()), 1.0f); | |||
range = FloatVectorOperations::findMinAndMax(outBuf[1], frames); | |||
pluginData.outsPeak[1] = carla_maxLimited<float>(std::abs(range.getStart()), std::abs(range.getEnd()), 1.0f); | |||
pluginData.outsPeak[0] = carla_findMaxNormalizedFloat(outBuf[0], frames); | |||
pluginData.outsPeak[1] = carla_findMaxNormalizedFloat(outBuf[1], frames); | |||
} | |||
else | |||
{ | |||
@@ -35,13 +35,10 @@ | |||
#include "CarlaNative.hpp" | |||
#include "AppConfig.h" | |||
#include "juce_audio_basics/juce_audio_basics.h" | |||
#include "juce_core/juce_core.h" | |||
using juce::File; | |||
using juce::FloatVectorOperations; | |||
using juce::MemoryOutputStream; | |||
using juce::ScopedPointer; | |||
using juce::SharedResourcePointer; | |||
using juce::String; | |||
using juce::XmlDocument; | |||
using juce::XmlElement; | |||
@@ -1348,10 +1345,10 @@ protected: | |||
if (pData->curPluginCount == 0) | |||
{ | |||
if (outBuffer[0] != inBuffer[0]) | |||
FloatVectorOperations::copy(outBuffer[0], inBuffer[0], static_cast<int>(frames)); | |||
carla_copyFloats(outBuffer[0], inBuffer[0], frames); | |||
if (outBuffer[1] != inBuffer[1]) | |||
FloatVectorOperations::copy(outBuffer[1], inBuffer[1], static_cast<int>(frames)); | |||
carla_copyFloats(outBuffer[1], inBuffer[1], frames); | |||
for (uint32_t i=0; i < midiEventCount; ++i) | |||
{ | |||
@@ -1,6 +1,6 @@ | |||
/* | |||
* Carla VST Plugin | |||
* Copyright (C) 2011-2016 Filipe Coelho <falktx@falktx.com> | |||
* Copyright (C) 2011-2017 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License as | |||
@@ -23,8 +23,6 @@ | |||
#include "CarlaMathUtils.hpp" | |||
#include "CarlaPluginUI.hpp" | |||
#include "juce_core/juce_core.h" | |||
#include <pthread.h> | |||
#undef VST_FORCE_DEPRECATED | |||
@@ -33,8 +31,6 @@ | |||
#undef kEffectMagic | |||
#define kEffectMagic (CCONST( 'V', 's', 't', 'P' )) | |||
using juce::File; | |||
CARLA_BACKEND_START_NAMESPACE | |||
// ----------------------------------------------------- | |||
@@ -1891,7 +1887,9 @@ protected: | |||
ret = kVstProcessLevelRealtime; | |||
} | |||
else | |||
{ | |||
ret = kVstProcessLevelUser; | |||
} | |||
break; | |||
case audioMasterGetAutomationState: | |||
@@ -27,9 +27,8 @@ | |||
#include "CarlaLv2Utils.hpp" | |||
#include "CarlaUtils.h" | |||
#include "juce_audio_basics/juce_audio_basics.h" | |||
using juce::FloatVectorOperations; | |||
#include "AppConfig.h" | |||
#include "juce_core/juce_core.h" | |||
// --------------------------------------------------------------------------------------------------------------------- | |||
@@ -21,6 +21,7 @@ | |||
#include "CarlaMIDI.h" | |||
#include "LinkedList.hpp" | |||
#include "AppConfig.h" | |||
#include "juce_core/juce_core.h" | |||
#include <string> | |||
@@ -21,8 +21,6 @@ | |||
#include "CarlaMIDI.h" | |||
#include "LinkedList.hpp" | |||
#include "AppConfig.h" | |||
#ifdef BUILD_BRIDGE | |||
# undef HAVE_FLUIDSYNTH | |||
# undef HAVE_LINUXSAMPLER | |||
@@ -47,6 +45,7 @@ | |||
#include <iostream> | |||
#include "AppConfig.h" | |||
#include "juce_core/juce_core.h" | |||
#define DISCOVERY_OUT(x, y) std::cout << "\ncarla-discovery::" << x << "::" << y << std::endl; | |||
@@ -259,90 +259,6 @@ static const NativePluginDescriptor sNativePluginDescriptors[] = { | |||
/* copyright */ "GNU GPL v2+", | |||
DESCFUNCS | |||
}, | |||
{ | |||
/* category */ NATIVE_PLUGIN_CATEGORY_OTHER, | |||
/* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH | |||
|NATIVE_PLUGIN_HAS_UI | |||
//|NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS | |||
|NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD | |||
|NATIVE_PLUGIN_USES_STATE | |||
|NATIVE_PLUGIN_USES_TIME), | |||
/* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING), | |||
/* audioIns */ 2, | |||
/* audioOuts */ 2, | |||
/* midiIns */ 1, | |||
/* midiOuts */ 1, | |||
/* paramIns */ 0, | |||
/* paramOuts */ 0, | |||
/* name */ "Carla-Patchbay", | |||
/* label */ "carlapatchbay", | |||
/* maker */ "falkTX", | |||
/* copyright */ "GNU GPL v2+", | |||
DESCFUNCS | |||
}, | |||
{ | |||
/* category */ NATIVE_PLUGIN_CATEGORY_OTHER, | |||
/* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH | |||
|NATIVE_PLUGIN_HAS_UI | |||
//|NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS | |||
|NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD | |||
|NATIVE_PLUGIN_USES_STATE | |||
|NATIVE_PLUGIN_USES_TIME), | |||
/* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING), | |||
/* audioIns */ 3, | |||
/* audioOuts */ 2, | |||
/* midiIns */ 1, | |||
/* midiOuts */ 1, | |||
/* paramIns */ 0, | |||
/* paramOuts */ 0, | |||
/* name */ "Carla-Patchbay (sidechain)", | |||
/* label */ "carlapatchbay3s", | |||
/* maker */ "falkTX", | |||
/* copyright */ "GNU GPL v2+", | |||
DESCFUNCS | |||
}, | |||
{ | |||
/* category */ NATIVE_PLUGIN_CATEGORY_OTHER, | |||
/* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH | |||
|NATIVE_PLUGIN_HAS_UI | |||
//|NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS | |||
|NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD | |||
|NATIVE_PLUGIN_USES_STATE | |||
|NATIVE_PLUGIN_USES_TIME), | |||
/* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING), | |||
/* audioIns */ 16, | |||
/* audioOuts */ 16, | |||
/* midiIns */ 1, | |||
/* midiOuts */ 1, | |||
/* paramIns */ 0, | |||
/* paramOuts */ 0, | |||
/* name */ "Carla-Patchbay (16chan)", | |||
/* label */ "carlapatchbay16", | |||
/* maker */ "falkTX", | |||
/* copyright */ "GNU GPL v2+", | |||
DESCFUNCS | |||
}, | |||
{ | |||
/* category */ NATIVE_PLUGIN_CATEGORY_OTHER, | |||
/* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH | |||
|NATIVE_PLUGIN_HAS_UI | |||
//|NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS | |||
|NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD | |||
|NATIVE_PLUGIN_USES_STATE | |||
|NATIVE_PLUGIN_USES_TIME), | |||
/* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING), | |||
/* audioIns */ 32, | |||
/* audioOuts */ 32, | |||
/* midiIns */ 1, | |||
/* midiOuts */ 1, | |||
/* paramIns */ 0, | |||
/* paramOuts */ 0, | |||
/* name */ "Carla-Patchbay (32chan)", | |||
/* label */ "carlapatchbay32", | |||
/* maker */ "falkTX", | |||
/* copyright */ "GNU GPL v2+", | |||
DESCFUNCS | |||
}, | |||
#endif | |||
// ----------------------------------------------------------------------- | |||
@@ -1,6 +1,6 @@ | |||
/* | |||
* Carla DSSI utils | |||
* Copyright (C) 2013-2016 Filipe Coelho <falktx@falktx.com> | |||
* Copyright (C) 2013-2017 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License as | |||
@@ -17,6 +17,7 @@ | |||
#include "CarlaDssiUtils.hpp" | |||
#include "AppConfig.h" | |||
#include "juce_core/juce_core.h" | |||
// -------------------------------------------------------------------------------------------------------------------- | |||
@@ -200,6 +200,36 @@ void carla_zeroFloats(float floats[], const std::size_t count) noexcept | |||
std::memset(floats, 0, count*sizeof(float)); | |||
} | |||
/* | |||
* Find the highest absolute and normalized value within a float array. | |||
*/ | |||
static inline | |||
float carla_findMaxNormalizedFloat(float floats[], const std::size_t count) | |||
{ | |||
CARLA_SAFE_ASSERT_RETURN(floats != nullptr, 0.0f); | |||
CARLA_SAFE_ASSERT_RETURN(count > 0, 0.0f); | |||
static const float kEmptyFloats[8192] = { 0.0f }; | |||
if (count <= 8192 && std::memcmp(floats, kEmptyFloats, count) == 0) | |||
return 0.0f; | |||
float tmp, maxf2 = std::abs(floats[0]); | |||
for (std::size_t i=1; i<count; ++i) | |||
{ | |||
tmp = std::abs(floats[i]); | |||
if (maxf2 > tmp) | |||
maxf2 = tmp; | |||
} | |||
if (maxf2 > 1.0f) | |||
maxf2 = 1.0f; | |||
return maxf2; | |||
} | |||
// -------------------------------------------------------------------------------------------------------------------- | |||
// Missing functions in old OSX versions. | |||