Preliminary work to play the sound source unprocessed
This commit is contained in:
parent
d91182c614
commit
e6a7d26d27
@ -23,7 +23,7 @@ StretchAudioSource::~StretchAudioSource()
|
||||
|
||||
}
|
||||
|
||||
void StretchAudioSource::prepareToPlay(int /*samplesPerBlockExpected*/, double sampleRate)
|
||||
void StretchAudioSource::prepareToPlay(int samplesPerBlockExpected, double sampleRate)
|
||||
{
|
||||
m_outsr = sampleRate;
|
||||
m_vol_smoother.reset(sampleRate, 0.5);
|
||||
@ -34,7 +34,7 @@ void StretchAudioSource::prepareToPlay(int /*samplesPerBlockExpected*/, double s
|
||||
m_stream_end_reached = false;
|
||||
m_firstbuffer = true;
|
||||
m_output_has_begun = false;
|
||||
|
||||
m_drypreviewbuf.setSize(m_num_outchans, 65536);
|
||||
initObjects();
|
||||
|
||||
}
|
||||
@ -161,9 +161,36 @@ void StretchAudioSource::setLoopXFadeLength(double lenseconds)
|
||||
}
|
||||
}
|
||||
|
||||
void StretchAudioSource::setPreviewDry(bool b)
|
||||
{
|
||||
if (b == m_preview_dry)
|
||||
return;
|
||||
if (m_cs.tryEnter())
|
||||
{
|
||||
m_preview_dry = b;
|
||||
++m_param_change_count;
|
||||
m_cs.exit();
|
||||
}
|
||||
}
|
||||
|
||||
bool StretchAudioSource::isPreviewingDry() const
|
||||
{
|
||||
return m_preview_dry;
|
||||
}
|
||||
|
||||
void StretchAudioSource::getNextAudioBlock(const AudioSourceChannelInfo & bufferToFill)
|
||||
{
|
||||
ScopedLock locker(m_cs);
|
||||
double maingain = Decibels::decibelsToGain(m_main_volume);
|
||||
if (m_preview_dry == true && m_inputfile!=nullptr && m_inputfile->info.nsamples>0)
|
||||
{
|
||||
m_inputfile->setXFadeLenSeconds(m_loopxfadelen);
|
||||
m_inputfile->readNextBlock(m_drypreviewbuf, bufferToFill.numSamples, m_num_outchans);
|
||||
for (int i = 0; i < m_num_outchans; ++i)
|
||||
bufferToFill.buffer->copyFrom(i, bufferToFill.startSample, m_drypreviewbuf, i, 0, bufferToFill.numSamples);
|
||||
bufferToFill.buffer->applyGain(bufferToFill.startSample, bufferToFill.numSamples, maingain);
|
||||
return;
|
||||
}
|
||||
if (m_pause_state == 2)
|
||||
{
|
||||
bufferToFill.buffer->clear(bufferToFill.startSample,bufferToFill.numSamples);
|
||||
@ -181,7 +208,7 @@ void StretchAudioSource::getNextAudioBlock(const AudioSourceChannelInfo & buffer
|
||||
e->set_freezing(m_freezing);
|
||||
}
|
||||
|
||||
double maingain = Decibels::decibelsToGain(m_main_volume);
|
||||
|
||||
if (m_vol_smoother.getTargetValue() != maingain)
|
||||
m_vol_smoother.setValue(maingain);
|
||||
FloatVectorOperations::disableDenormalisedNumberSupport();
|
||||
|
@ -99,6 +99,8 @@ public:
|
||||
double getMainVolume() const { return m_main_volume; }
|
||||
void setLoopXFadeLength(double lenseconds);
|
||||
double getLoopXFadeLengtj() const { return m_loopxfadelen; }
|
||||
void setPreviewDry(bool b);
|
||||
bool isPreviewingDry() const;
|
||||
int m_param_change_count = 0;
|
||||
private:
|
||||
CircularBuffer<float> m_stretchoutringbuf{ 1024 * 1024 };
|
||||
@ -153,4 +155,6 @@ private:
|
||||
File requested_file;
|
||||
} m_xfadetask;
|
||||
int m_pause_fade_counter = 0;
|
||||
bool m_preview_dry = false;
|
||||
AudioBuffer<float> m_drypreviewbuf;
|
||||
};
|
||||
|
@ -151,6 +151,7 @@ PaulstretchpluginAudioProcessor::PaulstretchpluginAudioProcessor()
|
||||
setPreBufferAmount(2);
|
||||
startTimer(1, 50);
|
||||
m_show_technical_info = m_propsfile->m_props_file->getBoolValue("showtechnicalinfo", false);
|
||||
m_stretch_source->setPreviewDry(true);
|
||||
}
|
||||
|
||||
PaulstretchpluginAudioProcessor::~PaulstretchpluginAudioProcessor()
|
||||
|
Loading…
Reference in New Issue
Block a user