@@ -112,6 +112,7 @@ public: | |||||
double getLastSeekPos() const { return m_seekpos; } | double getLastSeekPos() const { return m_seekpos; } | ||||
CriticalSection* getMutex() { return &m_cs; } | CriticalSection* getMutex() { return &m_cs; } | ||||
int64_t getLastSourcePosition() const { return m_last_filepos; } | int64_t getLastSourcePosition() const { return m_last_filepos; } | ||||
int m_prebuffersize = 0; | |||||
private: | private: | ||||
CircularBuffer<float> m_stretchoutringbuf{ 1024 * 1024 }; | CircularBuffer<float> m_stretchoutringbuf{ 1024 * 1024 }; | ||||
AudioBuffer<float> m_file_inbuf; | AudioBuffer<float> m_file_inbuf; | ||||
@@ -702,8 +702,10 @@ void WaveformComponent::paint(Graphics & g) | |||||
if (CursorPosCallback) | if (CursorPosCallback) | ||||
{ | { | ||||
double timediff = (Time::getMillisecondCounterHiRes() - m_last_source_pos_update_time)*(1.0/m_sas->getRate()); | double timediff = (Time::getMillisecondCounterHiRes() - m_last_source_pos_update_time)*(1.0/m_sas->getRate()); | ||||
double curpos = ((double)m_last_source_pos / m_sas->getOutputSamplerate()) + (timediff/1000.0); | |||||
curpos = 1.0 / m_sas->getInfileLengthSeconds()*curpos; | |||||
double curpos = ((double)m_last_source_pos / m_sas->getOutputSamplerate()); | |||||
double prebufoffset = (double)m_sas->m_prebuffersize / m_sas->getOutputSamplerate(); | |||||
curpos -= prebufoffset; | |||||
curpos = 1.0 / m_sas->getInfileLengthSeconds()*(curpos+(timediff / 1000.0)); | |||||
g.fillRect(normalizedToViewX<int>(curpos), m_topmargin, 1, getHeight() - m_topmargin); | g.fillRect(normalizedToViewX<int>(curpos), m_topmargin, 1, getHeight() - m_topmargin); | ||||
g.drawText(String(curpos), 1, 30, 200,30, Justification::left); | g.drawText(String(curpos), 1, 30, 200,30, Justification::left); | ||||
//g.fillRect(normalizedToViewX<int>(CursorPosCallback()), m_topmargin, 1, getHeight() - m_topmargin); | //g.fillRect(normalizedToViewX<int>(CursorPosCallback()), m_topmargin, 1, getHeight() - m_topmargin); | ||||
@@ -226,7 +226,8 @@ void PaulstretchpluginAudioProcessor::setPreBufferAmount(int x) | |||||
String err; | String err; | ||||
startplay({ *getFloatParameter(cpi_soundstart),*getFloatParameter(cpi_soundend) }, | startplay({ *getFloatParameter(cpi_soundstart),*getFloatParameter(cpi_soundend) }, | ||||
m_cur_num_out_chans, m_curmaxblocksize, err); | m_cur_num_out_chans, m_curmaxblocksize, err); | ||||
m_prebuffering_inited = true; | |||||
m_prebuffering_inited = true; | |||||
} | } | ||||
} | } | ||||
@@ -422,6 +423,7 @@ void PaulstretchpluginAudioProcessor::startplay(Range<double> playrange, int num | |||||
m_stretch_source->setNumOutChannels(numoutchans); | m_stretch_source->setNumOutChannels(numoutchans); | ||||
m_stretch_source->setFFTSize(m_fft_size_to_use); | m_stretch_source->setFFTSize(m_fft_size_to_use); | ||||
m_stretch_source->setProcessParameters(&m_ppar); | m_stretch_source->setProcessParameters(&m_ppar); | ||||
m_stretch_source->m_prebuffersize = bufamt; | |||||
m_last_outpos_pos = 0.0; | m_last_outpos_pos = 0.0; | ||||
m_last_in_pos = playrange.getStart()*m_stretch_source->getInfileLengthSeconds(); | m_last_in_pos = playrange.getStart()*m_stretch_source->getInfileLengthSeconds(); | ||||
m_buffering_source->prepareToPlay(maxBlockSize, getSampleRateChecked()); | m_buffering_source->prepareToPlay(maxBlockSize, getSampleRateChecked()); | ||||