Hello,
I've just started playing with juce, I'm also a noob in field of c++ so forgive me if my question is stupid.
I wrote a function which resamples the audiobuffer to lower frequancy(for given numeber of samples) to "rBuffer".
Thi looks like this:
AudioSampleBuffer* AudioSampler::resample(int64 numSamples, int64 from, int64 into, int64 start) { DBG("resampluje"); //if(!bBuffer) return 0; rBuffer->setSize(2, numSamples + start, true, true); rBuffer->clear(); //!temp int spsPerPixel = bBuffer->getNumSamples() / numSamples; if(spsPerPixel < 1) spsPerPixel = 1; int64 c = 0; DBG("resampluje2"); float* l = new float[bBuffer->getNumChannels()]; float* s = new float[1]; DBG("ustawione tablice:" + String(bBuffer->getNumSamples())+ ":" + String(rBuffer->getNumSamples())+ ":" + String(spsPerPixel)); for (int i = 0; i < rBuffer->getNumSamples(); i++){ for (int j = 0; j < rBuffer->getNumChannels(); j++){ s[0] = *(bBuffer->getSampleData(j) + (i * spsPerPixel)); if(c > 695){ DBG("sampel:" + String(s[0]) + ":" + String(c));} rBuffer->addFrom(j, start + c, s,1); l[j] = s[0]; } c++; } return rBuffer; }
The rBuffer is created first in constructor of my class and set to 2 channel, 100 samples.
Then in my function I set it's size for given numeber of samples .
My problem is that when I dont call rBuffer->Clear(), only the first 100 samples are set to correct values and the rest are undefined values.
I don't want to always clear old samples. Can someone please explain me how it works?