@@ -48,7 +48,7 @@ class FifoBuffer2
4848 return written;
4949 }
5050
51- int read (float * const * dest, int numChannels, int numSamples, bool advanceRead = true )
51+ int read (float * const * dest, int numChannels, int numSamples, bool advanceRead = true , bool addToBuffer = false )
5252 {
5353 jassert (buffer.getNumSamples () >= numSamples);
5454 jassert (buffer.getNumChannels () >= numChannels);
@@ -60,14 +60,34 @@ class FifoBuffer2
6060
6161 if (size1 > 0 )
6262 {
63- for (int ch = 0 ; ch < numChannels && ch < buffer.getNumChannels (); ++ch)
64- std::memcpy (dest[ch], buffer.getReadPointer (ch, start1), sizeof (float ) * size1);
63+ if (addToBuffer)
64+ {
65+ for (int ch = 0 ; ch < numChannels && ch < buffer.getNumChannels (); ++ch)
66+ for (int i = 0 ; i < size1; ++i)
67+ dest[ch][readCount + i] += buffer.getReadPointer (ch, start1)[i];
68+ }
69+ else
70+ {
71+ for (int ch = 0 ; ch < numChannels && ch < buffer.getNumChannels (); ++ch)
72+ std::memcpy (dest[ch], buffer.getReadPointer (ch, start1), sizeof (float ) * size1);
73+ }
74+
6575 readCount += size1;
6676 }
6777 if (size2 > 0 )
6878 {
69- for (int ch = 0 ; ch < numChannels && ch < buffer.getNumChannels (); ++ch)
70- std::memcpy (dest[ch] + readCount, buffer.getReadPointer (ch, start2), sizeof (float ) * size2);
79+ if (addToBuffer)
80+ {
81+ for (int ch = 0 ; ch < numChannels && ch < buffer.getNumChannels (); ++ch)
82+ for (int i = 0 ; i < size2; ++i)
83+ dest[ch][readCount + i] += buffer.getReadPointer (ch, start2)[i];
84+ }
85+ else
86+ {
87+ for (int ch = 0 ; ch < numChannels && ch < buffer.getNumChannels (); ++ch)
88+ std::memcpy (dest[ch] + readCount, buffer.getReadPointer (ch, start2), sizeof (float ) * size2);
89+ }
90+
7191 readCount += size2;
7292 }
7393
@@ -251,9 +271,9 @@ class SyncBuffer : public juce::Timer
251271 if (maxAvailable < samplesNeeded)
252272 return 0 ;
253273
254- #if defined(JUCE_DEBUG) && defined(JUCE_WINDOWS)
255- DBG (ratio);
256- #endif
274+ // #if defined(JUCE_DEBUG) && defined(JUCE_WINDOWS)
275+ // DBG(ratio);
276+ // #endif
257277
258278 auto samplesGot = fifoBuffer.read (tempBuffer.getArrayOfWritePointers (), numChannels, samplesNeeded, false );
259279
0 commit comments