[Clam-devel] Spectral Analysis/Synthesis

Karsten Krispin karsten.mailinglists at krispin.de
Mon Feb 18 12:40:25 PST 2008


Am Montag, 18. Februar 2008 15:39:54 schrieb Xavier Amatriain:
> Comments below...
>
> > Configure-Stuff:
>
> I can't see anything wrong with configuration but I am wondering... why
> did you decide to use KaiserBessel35??
>
> > This is the way I create the temporary buffer in WindowSize (package is a
> > CLAM::Frame) :
> >
> > Analysis:
> > CLAM::Audio tmpAudio;
> > tmpAudio.SetSize(package->frameSize()*4);
> > CLAM::TIndex index = (package->frameSize()*2)-(package->frameSize()/2);
> > tmpAudio.SetAudioChunk(index, package->GetAudioFrame());
>
> Wait! index is constant? That means you are using some sort of zero
> padding but then not
> removing it properly at synthesis. What you should do is concatenate all
> the frameSize samples
> you get into your tmpAudio until you got enough to send it to the
> analysis (i.e. do it four times and then
> start sending). After that, you need to append the new frameSize samples
> at the end of your buffer while
> keeping the last frameSize*3 before those.
Okay... I see. That means that I have an extra latency of3*frameSize. But if 
It's the way to get a working synthesis, I have to come along with that.
I will elobarote on it. But that will mean some extra work somewhere else. 
Currently I will avoid this. ;) 

> Also this is not correct :-( You can't just take the first frameSize*2
> samples and feed them to the OLA.
> You need to take the center frameSize*2. Else the inverse window you are
> applying does not correspond to
> the one you applied in the analysis (in terms of where the center is).

Well, but I looked up the code and SSynth does take the centerFreq +/- hopSize 
by itself. So the Audio size after the _specSynth.Do() is 1024 and not 2048. 

Or, what else do you mean?

> Hope it helps!
I had a look at the synthesied samples and understand how that change of 
amplitude happen. It has something todo with the zero-padding, I think.

But I suppose it will work then. :)

Karsten




More information about the clam-devel mailing list