Good Audio Time stretching in OF/C++ ?????

Hi OF lovers,

as you already know, perhaps, we (www.tangiblex.net) are working hard to make some audio-video-multitouch apps and setups.
One of my most requested features would be to be able to time stretch with good quality, beat detect, etc., as ableton live does, por example.

Anybody knows a good way to do that in OF/C++ ??

thanks!
miguel.
www.tangiblex.net

OF doesn’t internally implement any novel algorithms (like pitch-preserving time stretches). OF just wraps a number of libraries that do. the sound library behind OF is either OpenAL or FMod depending on how you have it set up. checking their documentation… it looks like OpenAL doesn’t really support time stretching, just some pitch shifting http://connect.creativelabs.com/openal/Documentation/OpenAL%201.1%20Specification.htm

the fmod forums have this suggestion http://www.fmod.org/forum/viewtopic.php?f=8&t=13596 which isn’t wrapped by OF – but you should make a wrapper :slight_smile:

finally, there’s this independent piece of time stretching/pitch shifting code http://www.dspdimension.com/download/

Hi kyle,

thank you very very much. I will have a look at what you wrote.

thanks!
miguel.

This is pretty easy to do with Maximilian https://github.com/micknoise/Maximilian. I uploaded a simple project that does timestretching using an object in Maximilian called maxiTimestretch here http://programminginteractivity.com/timestretch.zip so you can see how it’s used. Maximilian is really elegant and very powerful, might be just the thing you’re looking for.

i forgot to mention: time stretching is a really big topic, and josh linked to one technique based on granular synthesis. live includes this technique, but it also includes a few more. the one i posted above does a different kind of stretching the might work better on percussive samples. there’s one more very proprietary stretching technique inside of live, which balances the tradeoffs of both. it’s the one people use most often, but i have no clue how it works :slight_smile:

Hi, thank you for all the replays!

yes, i am aware of this is a big topic, but i am looking for one as good as the one in ableton live.
I tried a lot in pure data, max, etc. Got good results, but not as good as i need. It seems that almost everybody knows about it, but nobody has the “excellent” technique.
It seems that the trick is to choose the correct parameters and technique mixture depending on the sound…
I will try to combine those techniques, but specificly how???
Any ideas??

I think combining them is pretty tricky, you should try the one from http://www.dspdimension.com/download/ first and the Maximilian each and see how they work. If you need to join them that’s probably a non-trivial amount of work that requires some signal processing savvy. If you need a code sample using the dspdimension stuff I have one laying around that I can post for you.

Hi,

yes, thank you for your replay, mixing techniques, changing parametes, seems to be the complicated task.
joshua, If you have that code you mention, that would be very helpfull.

miguel.

Hi,

How about Rubber Band Library? http://breakfastquay.com/rubberband/

I’m not sure but maybe works on oF. (It workd in iOS)