[Clam-devel] Spectral Analysis/Synthesis

Xavier Amatriain xavier at amatriain.net
Wed Feb 13 09:17:11 PST 2008


Karsten Krispin wrote:
> But this would not only mean that my latency-time is higher, but also twice or 
> even more of CPU usage, because the FFT/iFFT will run at window-size... 
> Just for the table, we bought an intel quadcore with 4Gigs of ram... But I 
> don't know how much the load will gonna be with twice the window-size.
>   
For a project I am working on I am running a real-time, non-network
spectral analysis/synthesis (and even SMS analysis/synthesis) with those
settings (75% overlap). I am able to run it on a lousy G4 at 50% CPU so this
should not be an issue if you do things right.

> How ever, if I run into distorted  sound, I will stick to this advice.
>
> But that thingy that you have to push two buffers to get out a spectrum or 
> such is not quite straight-lined to me. If I use ports and set up a 
> transformchain, I have to use the supervised Do()-Command. But that would 
> mean, that some processings in the chain are unfeeded after the first 
> Do()-Cycle... and would fail... Like "nothing to read in reading region" ...? 
> Or do I get something wrong here
That is more or less right...

Look, for example, at SMSAnalysis uses the SpectralAnalysis::Do

http://clam.iua.upf.edu/doc/CLAM-doxygen/SMSAnalysisCore_8cxx-source.html#l00177

Line 179 is the key here, it checks whether (both) spectral analysis can 
consume and produce and if not it waits for the next Do
cycle. Also note that in line  95 ports are configured with a size that 
equals window size -1 and their hop size is equal hopsize.

Hope it helps. In any case I recommend that you feed to the process a 
pure sinusoid, or better still a sweep. This will give you an exact idea 
of what is going on in the process and you might be able to post a 
screenshot :-)






More information about the clam-devel mailing list