@@ -47,11 +47,11 @@ namespace Kaixo::Processing {
4747
4848 // ------------------------------------------------
4949
50- m_EstimatedSteps = bufferSize * 3 + resultSize ;
50+ m_EstimatedSteps = buffer. size () * 5 - 1 ;
5151
5252 // ------------------------------------------------
5353
54- return rotateOnce (buffer, direction, originalBuffer );
54+ return rotateOnce (buffer, direction);
5555
5656 // ------------------------------------------------
5757
@@ -80,7 +80,7 @@ namespace Kaixo::Processing {
8080
8181 // ------------------------------------------------
8282
83- bool usingOriginal = false ; // originalBuffer.size() != 0;
83+ bool usingOriginal = originalBuffer.size () != 0 ;
8484 const std::size_t bufferSize = (usingOriginal ? originalBuffer.size () : buffer.size ());
8585 const std::size_t resultSize = 2 * bufferSize - 1 ;
8686
@@ -97,28 +97,30 @@ namespace Kaixo::Processing {
9797 AudioBufferResampler resampler{};
9898 resampler.samplerate .in = buffer.sampleRate ;
9999 resampler.samplerate .out = originalBuffer.sampleRate ;
100+ resampler.reverse = reverseInput;
100101 auto get = [&](std::size_t index) {
101102 if (usingOriginal && buffer.sampleRate != originalBuffer.sampleRate ) {
102103 return resampler.generate (buffer);
103104 } else {
104- return Stereo{ buffer[index].l , buffer[index].r };
105+ auto i = reverseInput ? buffer.size () - index - 1 : index;
106+ return Stereo{ buffer[i].l , buffer[i].r };
105107 }
106108 };
107109
108110 Stereo sumInput{};
109111 for (std::size_t i = 0 ; i < bufferSize; ++i) {
110- auto index = reverseInput ? bufferSize - i - 1 : i;
111112 auto out = get (i);
112- result.l [index ] = out.l ;
113- result.r [index ] = out.r ;
113+ result.l [i ] = out.l ;
114+ result.r [i ] = out.r ;
114115
115116 if (i != 0 ) {
116- result.l [resultSize - index ] = out.l ;
117- result.r [resultSize - index ] = out.r ;
117+ result.l [resultSize - i ] = out.l ;
118+ result.r [resultSize - i ] = out.r ;
118119 }
119120
120121 if (usingOriginal) { // When using original we want to maintain power of the original buffer
121- auto level = Math::Fast::abs (Stereo{ originalBuffer[i].l , originalBuffer[i].r });
122+ auto index = reverseInput ? bufferSize - i - 1 : i;
123+ auto level = Math::Fast::abs (Stereo{ originalBuffer[index].l , originalBuffer[index].r });
122124 sumInput += level * level;
123125 } else {
124126 auto level = Math::Fast::abs (out);
0 commit comments