Timestretching made simple

The request for timestretching has been made before, so I just wanted to dump a suggestion on a user friendly (?) way to implement it.

Pattern effect: 0Txx where xx is the number of lines the remainder of the sample aims to occupy. C-4 0T04 would make sure that the sample is fully played in exactly four lines.

I feel this would be pretty consistent and practical with how everything else works in Renoise (snaps available in the sample editor helps setting everything up to the exact effect you want on longer samples). The con is that it would not be automatable via an envelope, but on the other hand floating realtime precision might not be needed for this effect.

Feel free to suggest any other alternatives.

Biggest problem is, good quality time stretching requires a LOT of processing power, unless you have dedicated DSP’s that are designed and optimized expressly for this kind of task. Another problem is the various, very complex algorithms required to implement it in a reasonable way.

c’mon, next year we will get 12- core- cpus.
you wont even recognize that pre-rendering in the background.

EDIT: and we even have 16 cores nowadays

That might be a valid point. Perhaps the realtime routine could be a faster one, while rendering would use the best algorithm available.

Consider Ableton Live, you can have a stretch-fest going on in there without it being too taxing. Also melodyne manages it without breaking a sweat on current gen CPUs

Yes, including Kontakt and the range of Granular synth/samplers out there. I like Joule’s suggestion, seems like a very trackerish way of doing things, that combined with slice markers would give something very close to Live’s warp markers.
I really hope v3 has some kind of timestretch/pitch shift, it doesn’t have to be perfect as it’s still useful as sound design tool. Super bonus points would be awarded if they added support for Melodyne ARA but that is probably too niche…

We need more FPU’s for this kind of realtime shit…
Core cpu’s won’t cut it here.

we really DO have enough cpu power in most conventional computers to support a few tracks doing tempo/pitch shifting at a time, you could make a control parameter that lets a user scale the performance of the algorithm, and have it bake at full quality when you render to disk.

i suspect the biggest issue would be expanding the ui to accomodate an instrument with these features.

ie: do i toggle pitch/tempo lock on a sample, and then when I issue pitch commands from the pattern or envelope editors, the tempo stays the same while the pitch shifts? Are there a whole new set of controls? Maybe it could be part of a new Renoise Native Instrument library, ie: a sampler that has independent control of these features and you just load sounds into it. renoise’s ui is where a lot of the magic happens. if a feature like this were to exist in renoise, i’d want it to logically fit into the grander interface concept, not just bolted onto the whole thang. :)

From the performance side, while this was totally an issue in the early 90s when trackers were written in assembly. Ableton was supporting “real-time” pitch remapping in 2002. There are plenty of libraries and APIs around for quickly implementing this on current hardware.

Here’s an article on real-time pitch shift DSP from 1999:
http://www.dspdimension.com/admin/time-pitch-overview/

Using the GPU’s CUDA cores, yes, there is a lot more power than meets the eye, but this also brings up requirements for graphic cards to have some powers working optimal…

Select sample —> Select number of lines you want it to occupy —> whatever your current BPM is, Renoise will make it fit

Check out ‘beatsync’, it will change pitch though…