void GridSlicerAudioProcessor::processBlock (juce::AudioBuffer& buffer, juce::MidiBuffer& midiMessages) { juce::ScopedNoDenormals noDenormals; auto totalNumInputChannels = getTotalNumInputChannels(); auto totalNumOutputChannels = getTotalNumOutputChannels(); //--std::cout << "processBlock called......"<< std::endl; if(fileBuffer.getNumSamples() == 0) return; //--std::cout << "samples in buffer "<lengthInSamples > 0) { if (reader->sampleRate != dOutSampleRate) { //find the out file number of samples juce::int64 iSamples = ceil(dOutSampleRate * reader->lengthInSamples / reader->sampleRate); juce::AudioSampleBuffer tempBuffer(reader->numChannels, iSamples); juce::AudioSampleBuffer readBuffer(reader->numChannels, reader->lengthInSamples); //read the samples from file reader->read(&readBuffer, 0, readBuffer.getNumSamples(), 0, true, true); juce::LagrangeInterpolator interpolator; int iResult = 0; for (int i = 0; i < reader->numChannels; i++) { iResult = interpolator.process(reader->sampleRate / dOutSampleRate, readBuffer.getReadPointer(i), tempBuffer.getWritePointer(i), tempBuffer.getNumSamples()); } juce::File sTempFile = juce::File::createTempFile(juce::String("temp_") + file.getFileNameWithoutExtension() + juce::String(".wav")); juce::AudioFormat* audioFormat = formatManager.findFormatForFileExtension(sTempFile.getFileExtension()); auto* stream = sTempFile.createOutputStream().release(); auto* writer = audioFormat->createWriterFor(stream, (double)dOutSampleRate, reader->numChannels, (int)(reader->bitsPerSample ? reader->bitsPerSample : 24), (const juce::StringPairArray)(reader->metadataValues), (int)(audioFormat->getQualityOptions().size() - 1)); if (writer == nullptr) { delete stream; return; } auto res = writer->writeFromAudioSampleBuffer(tempBuffer, 0, tempBuffer.getNumSamples()); writer->flush(); delete writer; jassert(res); delete reader; } } else { delete reader; //--AlertWindow::showMessageBox(AlertWindow::WarningIcon, "No Audio", "There is no enough audio for playing."); } } else { //--AlertWindow::showMessageBox(AlertWindow::WarningIcon, "Corrupt file Audio", "The audio file loaded is corrupted."); } }