Browse Source

I changed the algorithm to (mostly) the older one, because it has better quality.

master
Nasca Octavian PAUL 12 years ago
parent
commit
6263436911
1 changed files with 16 additions and 9 deletions
  1. +16
    -9
      Stretch.cpp

+ 16
- 9
Stretch.cpp View File

@@ -217,8 +217,6 @@ void Stretch::do_next_inbuf_smps(REALTYPE *smps){
void Stretch::process(REALTYPE *smps,int nsmps){
if (bypass){
for (int i=0;i<bufsize;i++) out_buf[i]=smps[i];
//post-process the output
// process_output(out_buf,bufsize);
return;
};

@@ -233,13 +231,7 @@ void Stretch::process(REALTYPE *smps,int nsmps){
};


//compute the output spectrum
#warning sa fac output spectrum ca la versiunea veche prin reanaliza a bufferului very_old_smps,old_smps,new_smps
for (int i=0;i<bufsize;i++) {
outfft->freq[i]=infft->freq[i]*remained_samples+old_freq[i]*(1.0-remained_samples);
};


//#warning sa fac output spectrum ca la versiunea veche prin reanaliza a bufferului very_old_smps,old_smps,new_smps
//move the buffers
if (nsmps!=0){//new data arrived: update the frequency components
do_next_inbuf_smps(smps);
@@ -247,6 +239,21 @@ void Stretch::process(REALTYPE *smps,int nsmps){
do_next_inbuf_smps(smps+bufsize);
};
};
//construct the input fft
int start_pos=(int)(floor(remained_samples*bufsize));
if (start_pos>=bufsize) start_pos=bufsize-1;
for (int i=0;i<bufsize-start_pos;i++) fft->smp[i]=very_old_smps[i+start_pos];
for (int i=0;i<bufsize;i++) fft->smp[i+bufsize-start_pos]=old_smps[i];
for (int i=0;i<start_pos;i++) fft->smp[i+2*bufsize-start_pos]=new_smps[i];
//compute the output spectrum
fft->applywindow(window_type);
fft->smp2freq();
for (int i=0;i<bufsize;i++) outfft->freq[i]=fft->freq[i];
// for (int i=0;i<bufsize;i++) outfft->freq[i]=infft->freq[i]*remained_samples+old_freq[i]*(1.0-remained_samples);


process_spectrum(outfft->freq);

outfft->freq2smp();


Loading…
Cancel
Save