Browse Source

Carla: Properly set audio peaks on continuous-rack mode

tags/v0.9.0
falkTX 13 years ago
parent
commit
cf1b3907dd
2 changed files with 33 additions and 2 deletions
  1. +30
    -0
      c++/carla-backend/carla_engine.cpp
  2. +3
    -2
      doc/Carla-TODO

+ 30
- 0
c++/carla-backend/carla_engine.cpp View File

@@ -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;
}
}


+ 3
- 2
doc/Carla-TODO View File

@@ -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:



Loading…
Cancel
Save