Rename member. Attempt clearing buffers more thoroughly but old audio still appears to be present when restarting playback...

This commit is contained in:
xenakios
2017-12-27 17:35:30 +02:00
parent f9cce79f49
commit a6ec40904c
6 changed files with 40 additions and 25 deletions

View File

@ -41,18 +41,22 @@ void ProcessedStretch::set_parameters(ProcessParameters *ppar)
}
void ProcessedStretch::setBufferSize(int sz)
{
jassert(sz > 0);
Stretch::setBufferSize(sz);
nfreq = bufsize;
infreq = floatvector(nfreq);
sumfreq = floatvector(nfreq);
tmpfreq1 = floatvector(nfreq);
tmpfreq2 = floatvector(nfreq);
//fbfreq=new REALTYPE[nfreq];
free_filter_freqs = floatvector(nfreq);
for (int i = 0; i<nfreq; i++) {
free_filter_freqs[i] = 1.0;
// fbfreq[i]=0.0;
};
//if (nfreq != sz)
{
nfreq = bufsize;
infreq = floatvector(nfreq);
sumfreq = floatvector(nfreq);
tmpfreq1 = floatvector(nfreq);
tmpfreq2 = floatvector(nfreq);
//fbfreq=new REALTYPE[nfreq];
free_filter_freqs = floatvector(nfreq);
for (int i = 0; i < nfreq; i++) {
free_filter_freqs[i] = 1.0;
// fbfreq[i]=0.0;
};
}
}

View File

@ -237,14 +237,15 @@ void Stretch::setBufferSize(int bufsize_)
outfft = std::make_unique<FFT>(bufsize * 2);
}
jassert(infft != nullptr && fft != nullptr && outfft != nullptr);
fill_container(outfft->smp, 0.0f);
for (int i = 0; i<bufsize * 2; i++) {
old_out_smps[i] = 0.0;
};
for (int i = 0; i<bufsize; i++) {
old_freq[i] = 0.0;
new_smps[i] = 0.0;
old_smps[i] = 0.0;
very_old_smps[i] = 0.0;
old_freq[i] = 0.0f;
new_smps[i] = 0.0f;
old_smps[i] = 0.0f;
very_old_smps[i] = 0.0f;
};
}

View File

@ -439,6 +439,7 @@ void StretchAudioSource::initObjects()
m_stretchers[i]->set_onset_detection_sensitivity(onsetsens);
m_stretchers[i]->set_parameters(&m_ppar);
m_stretchers[i]->set_freezing(m_freezing);
fill_container(m_stretchers[i]->out_buf, 0.0f);
m_stretchers[i]->m_spectrum_processes = m_specproc_order;
}
m_inbufs.resize(m_num_outchans);

View File

@ -187,3 +187,9 @@ private:
int m_avail = 0;
std::vector<T> m_buf;
};
template<typename Cont,typename T>
inline void fill_container(Cont& c, const T& x)
{
std::fill(std::begin(c), std::end(c), x);
}