[Clam-devel] improving SMSHarmonizer and another issue's

Pau Arumi parumi at iua.upf.edu
Wed Jul 4 06:05:04 PDT 2007

En/na Xavier Amatriain ha escrit:
> Hernan, have you looked at the ControlArray class in CLAM?
> http://www.clam.iua.upf.edu/doc/CLAM-devel-doxygen/classCLAM_1_1ControlArray.html 


>> another issue, what do you think is the best approach to add peaks and
>> spectrum for each voice? i mean after pitchshifting them with an
>> embedded SMSPitchShift transformation with something like:
>>     TData amount = mVoice1Factor.GetLastValue();
>>     TData gain = mVoice1Gain.GetLastValue();
>>     mPitchShift.GetInControl("PitchSteps").DoControl(amount);
>>     mPitchShift.Do( inPeaks,
>>             inFund,
>>             inSpectrum,
>>             mtmpSpectralPeaks,
>>             mtmpFundamental,
>>             mtmpSpectrum);
>> put all it in a temporary frame?
> Temporary frames are evil. This is a very complex data structure and you 
> should avoid using temporaries
> if you want to get some performance. If you need temporaries I would 
> advice to use as low level data structures
> as possible (like an std::vector). And remember to avoid 
> allocations/deletions in the Do.

For the Hernan's code I understand that he talks about a local
variable to hold pitch-shift outputs, not a temporary object (like
in myframe = Frame(..) ).

However, how are currently combined the different (pitch-shifted)
voices? if we could do the combination in a processing then we
would not need explicit variables and use ports instead.

> Also one of the tricky things about this effect is that it breaks the 
> "model". I mean if you have a monophonic
> sound with a pitch and you harmonize it, the peaks are no longer in 
> relation to each other and the sound does
> not have a single pitch but however many you added. This is tricky and 
> not addressed in the current implementation.

But you do not pitch-shift the harmonized sound, do you? so what is
the problem having in-harmonic output.
In the resynthesis, you mean?


More information about the clam-devel mailing list