I have 2 questions, sorry if I’m asking both in one thread. I want to read a sound file and make some analysis of it.I take the FFT example from the tutorial, the problem is that I think I’m not reading the whole file. I do this in the following way:

```
void MainComponent::getNextAudioBlock (const AudioSourceChannelInfo& bufferToFill) {
if(!analizeFile) {
bufferToFill.clearActiveBufferRegion();
return;
}
else {
if(fileBuffer.getNumChannels() > 0) {
auto* channelData = fileBuffer.getReadPointer(0);
int numSamples = fileBuffer.getNumSamples();
for(auto i = 0; i<numSamples; i++)
pushNextSampleIntoFifo (channelData[i]);
analizeFile = false;
}
}
}
```

and after that I’m filling the fifo;

```
void MainComponent::pushNextSampleIntoFifo(float sample) noexcept {
if(fifoIndex == BUFSIZE) {
analysis.emplace_back(std::make_shared<AnalysisData>());
myClass->analyze(fifo, chunk, analysis);
chunk++;
fifoIndex = 0;
}
fifo[fifoIndex++] = sample;
}
```

Where “analizeFile” is a boolean, it is set with the Menu. I’m counting the numbers of chunkData. I do the same with another library, libsndfile. With libsndfile i become 377 chunks of data, with Juce 375 chunks of data, for this reason I think I’m not reading the whole file.The Buffersize is now 1024, but I need to change the size on my own (f.e. 512 or 2048).

The second question is about the output the dsp::FFT. Inside from myClass I’m doing some FFT’s, for example the following:

```
myClass::myClass(float* input, int bufferSize) {
dataFFT = (float*)malloc(sizeof(float) * (bufferSize*2)); //float*
fftOrder = log2(bufferSize);
fftSize = 1 << fftOrder;
myFFT = std::make_unique<juce::dsp::FFT>(fftOrder);
}
doFFT(float* input) {
std::copy(input, input+bufferSize, dataFFT);
myFFT->performRealOnlyForwardTransform(dataFFT);
....more Code
}
```

Where is actually the output, in the second half of the array (dataFFT)? I need to process the FFT’s output, what I need is the same kind of function provided by FFTW’s `fftw_plan_r2r_1d`

Regards.