diff --git a/samplebrain/src/block.cpp b/samplebrain/src/block.cpp index b2855ac..7312c3b 100644 --- a/samplebrain/src/block.cpp +++ b/samplebrain/src/block.cpp @@ -68,12 +68,20 @@ void block::init_fft(u32 block_size) #define FFT_BIAS 200 -double block::compare(const block &other, float ratio) const { +double block::compare(const block &other, float ratio, int fftwack) const { double mfcc_acc=0; double fft_acc=0; +/* s32 fft_start = fftwack-10; + s32 fft_end = fftwack+10; + if (fft_start<0) fft_start=0; + if (fft_end>m_fft.get_length()) fft_end=m_fft.get_length(); +*/ + s32 fft_start = 0; + s32 fft_end = m_fft.get_length(); + if (ratio==0) { - for (u32 i=0; i::const_iterator i=m_blocks.begin(); i!=m_blocks.end(); ++i) { - double diff = target.compare(*i,ratio); + double diff = target.compare(*i,ratio,fftwack); if (diff::iterator i=m_blocks.begin(); i!=m_blocks.end(); ++i) { cerr<<'\r'; cerr<<"searching: "<=m_target.get_num_blocks()) { m_render_time=0; m_render_blocks.clear(); @@ -38,7 +41,7 @@ void renderer::process(u32 nframes, float *buf) { // get indices for current buffer for (u32 tgt_index = tgt_start; tgt_index<=tgt_end; tgt_index++) { u32 time=tgt_index*tgt_shift; - u32 src_index = m_source.search(m_target.get_block(tgt_index), m_ratio); + u32 src_index = m_source.search(m_target.get_block(tgt_index), m_ratio, fftwack); // put them in the index list m_render_blocks.push_back(render_block(src_index,time)); }