From cf1b3907dd4e2b3b648c9d4bef824c1166661c1b Mon Sep 17 00:00:00 2001 From: falkTX Date: Tue, 30 Oct 2012 09:19:01 +0000 Subject: [PATCH] Carla: Properly set audio peaks on continuous-rack mode --- c++/carla-backend/carla_engine.cpp | 30 ++++++++++++++++++++++++++++++ doc/Carla-TODO | 5 +++-- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/c++/carla-backend/carla_engine.cpp b/c++/carla-backend/carla_engine.cpp index 23dacf7..70a2a61 100644 --- a/c++/carla-backend/carla_engine.cpp +++ b/c++/carla-backend/carla_engine.cpp @@ -20,6 +20,11 @@ CARLA_BACKEND_START_NAMESPACE +double abs_d(const double& value) +{ + return (value < 0.0) ? -value : value; +} + // ----------------------------------------------------------------------- unsigned short CarlaEngine::m_maxPluginNumber = 0; @@ -630,6 +635,31 @@ void CarlaEngine::processRack(float* inBuf[2], float* outBuf[2], uint32_t frames memcpy(rackMidiEventsOut, rackMidiEventsIn, sizeof(CarlaEngineMidiEvent)*MAX_ENGINE_MIDI_EVENTS); } + // set peaks + { + double inPeak1 = 0.0; + double inPeak2 = 0.0; + double outPeak1 = 0.0; + double outPeak2 = 0.0; + + for (uint32_t k=0; k < frames; k++) + { + if (abs_d(inBuf[0][k]) > inPeak1) + inPeak1 = abs_d(inBuf[0][k]); + if (abs_d(inBuf[1][k]) > inPeak2) + inPeak2 = abs_d(inBuf[1][k]); + if (abs_d(outBuf[0][k]) > outPeak1) + outPeak1 = abs_d(outBuf[0][k]); + if (abs_d(outBuf[1][k]) > outPeak2) + outPeak2 = abs_d(outBuf[1][k]); + } + + m_insPeak[i*MAX_PEAKS + 0] = inPeak1; + m_insPeak[i*MAX_PEAKS + 1] = inPeak2; + m_outsPeak[i*MAX_PEAKS + 0] = outPeak1; + m_outsPeak[i*MAX_PEAKS + 1] = outPeak2; + } + processed = true; } } diff --git a/doc/Carla-TODO b/doc/Carla-TODO index 0e74589..19f0fca 100644 --- a/doc/Carla-TODO +++ b/doc/Carla-TODO @@ -11,8 +11,9 @@ GENERAL: ENGINE: - complete RtAudio+RtMidi support - implement Haiku Media support (based from JACK?) - - implement latency in continuos-rack mode - - pre-allocate audio buffers in continuous-rack mode + - implement latency in continuous-rack mode + - pre-allocate audio buffers in continuous-rack mode (RtAudio only) + - DSSI/LV2/VST version (needs add-new support on control side) LADSPA: