Work on offline render stuff
This commit is contained in:
@ -526,24 +526,43 @@ void PaulstretchpluginAudioProcessor::saveCaptureBuffer()
|
||||
m_threadpool->addJob(task);
|
||||
}
|
||||
|
||||
String PaulstretchpluginAudioProcessor::offlineRender(File outputfile)
|
||||
String PaulstretchpluginAudioProcessor::offlineRender(OfflineRenderParams renderpars)
|
||||
{
|
||||
File outputfiletouse = outputfile.getNonexistentSibling();
|
||||
ValueTree state = getStateTree(false, false);
|
||||
File outputfiletouse = renderpars.outputfile.getNonexistentSibling();
|
||||
ValueTree state{ getStateTree(false, false) };
|
||||
auto processor = std::make_shared<PaulstretchpluginAudioProcessor>();
|
||||
|
||||
processor->setStateFromTree(state);
|
||||
int blocksize = 2048;
|
||||
double outsr{ renderpars.outsr };
|
||||
if (outsr < 10.0)
|
||||
outsr = processor->getStretchSource()->getInfileSamplerate();
|
||||
Logger::writeToLog(outputfiletouse.getFullPathName() + " " + String(outsr) + " " + String(renderpars.outputformat));
|
||||
return {};
|
||||
int blocksize{ 2048 };
|
||||
int numoutchans = *processor->getIntParameter(cpi_num_outchans);
|
||||
processor->prepareToPlay(44100.0, blocksize);
|
||||
processor->prepareToPlay(renderpars.outsr, blocksize);
|
||||
|
||||
double t0 = *processor->getFloatParameter(cpi_soundstart);
|
||||
double t1 = *processor->getFloatParameter(cpi_soundend);
|
||||
sanitizeTimeRange(t0, t1);
|
||||
double outsr = processor->getSampleRateChecked();
|
||||
|
||||
WavAudioFormat wavformat;
|
||||
FileOutputStream* outstream = outputfiletouse.createOutputStream();
|
||||
if (outstream == nullptr)
|
||||
return "Could not create output file";
|
||||
auto writer = wavformat.createWriterFor(outstream, getSampleRateChecked(), numoutchans, 32, StringPairArray(), 0);
|
||||
int oformattouse{ 16 };
|
||||
bool clipoutput{ false };
|
||||
if (renderpars.outputformat == 1)
|
||||
oformattouse = 24;
|
||||
if (renderpars.outputformat == 2)
|
||||
oformattouse = 32;
|
||||
if (renderpars.outputformat == 3)
|
||||
{
|
||||
oformattouse = 32;
|
||||
clipoutput = true;
|
||||
}
|
||||
auto writer = wavformat.createWriterFor(outstream, getSampleRateChecked(), numoutchans,
|
||||
oformattouse, StringPairArray(), 0);
|
||||
if (writer == nullptr)
|
||||
{
|
||||
delete outstream;
|
||||
|
Reference in New Issue
Block a user