diff --git a/Source/DSP/Delay.h b/Source/DSP/Delay.h index 639b127..b2e8851 100644 --- a/Source/DSP/Delay.h +++ b/Source/DSP/Delay.h @@ -36,10 +36,14 @@ public: float outR = bufferR[i0] * (1.0f - frac) + bufferR[i1] * frac; if (pingPong) { - // Classic ping-pong: each channel's echo bounces to the opposite - // channel on the next repeat, so the taps alternate L/R. - bufferL[writePos] = left + outR * feedback; - bufferR[writePos] = right + outL * feedback; + // Classic ping-pong: the (summed) input enters one line and each + // echo is bounced to the opposite channel on the next repeat, so the + // taps alternate L/R. Only the cross-coupled echo is fed into the + // opposite line (never the dry input) so the bounce is audible even + // for a mono source where L == R. + float in = 0.5f * (left + right); + bufferL[writePos] = in + outR * feedback; + bufferR[writePos] = outL * feedback; } else { bufferL[writePos] = left + outL * feedback; bufferR[writePos] = right + outR * feedback; diff --git a/Source/PluginEditor.cpp b/Source/PluginEditor.cpp index 4c29cd2..95aace3 100644 --- a/Source/PluginEditor.cpp +++ b/Source/PluginEditor.cpp @@ -578,7 +578,7 @@ MainContentComponent::MainContentComponent(ChromaFlockProcessor& p) : processorRef(p), vuMeter(p), waveformDisplay(p), pianoRoll(p), midiLed(p), arpEnabledLed(p.apvts, "arpEnabled", "ON", "OFF"), arpDirectionLed(p.apvts, "arpDirection", "ON", "OFF"), - delayPingPongLed(p.apvts, "delayPingPong", "ON", "OFF"), + delayPingPongLed(p.apvts, "delayPingPong", "PINGPONG", "OFF"), reverbOnLed(p.apvts, "reverbOn", "ON", "OFF"), lfo1SyncLed(p.apvts, "lfo1Sync", "SYNC ON", "SYNC OFF"), lfo2SyncLed(p.apvts, "lfo2Sync", "SYNC ON", "SYNC OFF"),