I'm assuming this algorithm is an overlap-add granular method, but it doesn't sound like it's working correctly. All of the optional window sizes and fade times have occasional clicking artifacts which sounds to me like the windowing of each grain going slightly off-sync. This really makes it pretty unusable for sound design and creation of textural sounds, for which it would otherwise be useful for mangling sounds (mangling yes, but nobody wants random clicking artifacts). I know it's called (low quality), but out of sync windowing isn't low quality, it's just a broken algorithm, so I really hope this can be fixed. Also, the Soundtouch algorithm isn't really smooth enough nor does it allow slow enough speeds to really be useful for time-stretching as an effect. It is unrealistic to think that another algorithm could be implemented that's aimed less at short time-stretching for timing-editing and aimed more at the extreme end of the stretch-spectrum? I've attached a recording of such an algorithm I made in max/msp which I'm sure the Cockos team would find very easy to implement and improve if there was enough interest from users. It's not designed to sound good near normal speed, but this is what it could sound like if the playback speed wasn't limited to a minimum of 0.1. The clip is just a solo piano recording of Arabesque 2 by Debussey, played back at a speed of 0.01. It would be great if there are more people who would like this feature!
------------------------ 03M3 AA Stage I S/C, Dinan Stage II Suspension
The current implementation is actually open source as part of WDL (simple_pitchshift.h). If you want to convert your algorithm into C/C++ and open source it, or provide a good description of what it does, we'd be happy to look at integrating it.
Hmm actually yes there does appear to be a bug in the LQW mode.. lemme see if I can fix that, but also your example sounds great, so give us whatever you have that you want to ;)
I'd like to be able to slow down things by that much and that it still sounds nice, just like in the example above. So, whatever makes it work, I'm for it! :)
Would love this too! (and here opens the "can of worms" ;) I'd be interested in a stretch algo that ignores transients. Have you heard the flex time stretch in logic? It seems to ignore the initial transient then starts to stretch (what seems to be) below a certain threshold so transients are ignored and the ambience is stretched only. It might only work by not stretching just the first bit of each split drum (flex marker in logic) but it's still cool. This is very powerful way of stretching split drums, acoustic guitars or anything percussive. just putting it out there! ;)
------------------------ New Single Turbo Build, DONE!!! Congratulation to (Felix Medina) my tuner SFWD Tuner Shootout Champion @ E-Town. Sat13/14 click for video MiR Oct 9 Video Compilation.
mmmmm +1 for investigation of available transient-preserving stretching algorithms. If it was done granularly it might be similar to a pitch-synchronous method, but granular wouldn't be the best way to implement that type of stretching; it's only really good for cpu-efficient low-quality short stretches or the extreme-length stretching and time-freezing, for which it tends to have pretty recognisable characteristics. That would require going down the Fourier route, something I'm still not too familiar with so I wouldn't be able to help much :P But it would be great! It's by far the most transparent sounding concept for time-alignment. I don't know just how complex that type of algorithm is to achieve good sound quality (it would likely be more complex than Elastique 2 pro), but it took Apple aaaages to implement something like it. I do know that the TC-electronic stuff is generally considered to have high-quality time/pitch processing, and I'm fairly sure that they use wavelet techniques rather than Fourier for various reasons............but it's pretty **** hard to find any information on wavelet theory that doesn't require a maths degree to understand, and there certainly won't be any help available from other DAW developers!
from what I can hear in the logic ones when it's stretched extreme amounts you can hear the repeating of the "windows" like granular rather than the "glassy" sound you get with fft sine waves that have stretchable amplitude envelopes for each sine wave. BUT still the logic windowed flex time works really well for most small edits but can sound a bit weird on long stretches (although still interesting). One thing they might do is lock the window size on to the fundamental of the current waveform and in that way avoiding a lot of the aliasing/formanting of granular. You could even adjust window edge shape depending on the complexity of the wave and this could be done in real time (but way past me!) ;) as part of the options for a transient avoiding stretch algo, you could have two options, window size and "transient time", this last setting would just be a time to give the algo to avoid stretching the start of each "cut" sample. This would make things easier. anyway.. I'm no programmer!
Tim, I like the way your talking! ;) Justin, If you could "wrangle" something like that using Elastique pro for the actual stretch part, it would be quite a popular feature (maybe for reaper 4) and pull quite a few people in (along with the other goodies Reaper 4 will no doubt bring!) ;)