Smoothing tempo changes

kimberleegk's icon

Hi all,

I've got a patch working that takes in data from the Kinect through Synapse and outputs it as amplitude and as speed of wav file playback (using sfplay~). I've noticed there are crunchy sounds whenever the playback speed changes (I'm passing it through an fft and back to keep it at the same pitch). I have a smoothing algorithm on it. I'm wondering if anybody has any ideas of how to make the crunchiness go away as much as possible. I've attached the two patches that work in conjunction with Synapse; the smoothing algorithm is the "p smooth" patch in "Kinect_LH."

Any ideas would be much appreciated!

kinect_LH.maxpat
Max Patch
switch.maxpat
Max Patch
spectro's icon

The smoothing algorithm you mention won't help (with this issue at least) as the values coming from the slider (ints) that control both playback rate of splay~ and the transposition value of gizmo~ 'jump' every time the slider value changes, so they require smoothing (as well) - It may be better to get the slider out of that 'circuit' altogether, but either way, something like message-[$1 200] -> [line 0.] inserted immediately after the float number box coming from the slider (and before the sig~ and [!/1]) should help.

kimberleegk's icon

Ok I understand the problem with the slider. Now I need some kind of object that interpolates the changes in tempo in hundredths of seconds between two instances of the Kinect sending information. For example, in one sample it goes from 22.186 to 21.226. This happens in the space of 29-40 ms. So my question is: is there an object that adds a set amount to a number every #ms? That is, adds 3 hundredths to the number every ms?

Roman Thilenius's icon

thats exactly what [line] does.

otherwise you might also look into [accum] in case you plan to build something very special.