Announce: Fast real-time-stretching and resampling algorithms (Procrustes/Sylea)

Started by DSP team May 21, 2006
Here are some excerpts from an old comp.dsp thread article:

> What I did was using the Pitch Shifter example from the page > (finetuned it/speeded it up a bit with some different FFT algorithm) > to change the pitch. Afterwards I altered the samplerate so the pitch > would be back to where it was, but now the duration has changed.
Instead of shifting the pitch and resampling, you can do it at once! E.g., there is a real-time-stretching algorithm called "Procrustes" available at our web site - http://www.dspteam.com/ - with demo players showing how fast yet good sounding it can be done if written 100% in Assembler and optimised to extremes by utilising the x86 SIMD instruction sets 3DNow! and SSE while taking care of the transients. It's available for licensing.
>> For my final year project I need to understand how CD mixers work. I >> know they alter the sample rate to change the speed (pitch) of the >> track being output thus allowing the DJ to mix the tracks (getting >> the tempo's to match). >> >> How is this done? Are there specific DSP processors to alter the >> sample rate? Or can any standard audio DSP processor be programmed >> to perform this task?
Some resampling techniques are described at the same web site of ours - http://www.dspteam.com/resample.html - and a high-quality yet fast real-time resampling algorithm called "Sylea" (the wife of Procrustes :) with demo players is available there for licensing too. Audio DSP team
DSP team wrote:

> Some resampling techniques are described at the same web site of ours - > http://www.dspteam.com/resample.html - and a high-quality yet fast > real-time resampling algorithm called "Sylea" (the wife of Procrustes :) > with demo players is available there for licensing too.
How does your resampler compare to Secret Rabbit Code: http://www.mega-nerd.com/SRC/ Secret Rabbit Code gives specs for signal to noise ratio and bandwidth as well as speed. Paul
Paul Toritz wrote:
> DSP team wrote: > > > Some resampling techniques are described at the same web site of ours - > > http://www.dspteam.com/resample.html - and a high-quality yet fast > > real-time resampling algorithm called "Sylea" (the wife of Procrustes :) > > with demo players is available there for licensing too. > > How does your resampler compare to Secret Rabbit Code: > > http://www.mega-nerd.com/SRC/ > > Secret Rabbit Code gives specs for signal to noise ratio and bandwidth > as well as speed.
Some audio rate resamplers were tested and the results are available here (select the resampler type from the "NAVIGATION" drop-down box): http://src.infinitewave.ca/ I don't know if either of the above was included in the test. Perhaps Erik knows if his code was used in one of the products from that webpage? Regards, Andor
Paul Toritz wrote:

> How does your resampler compare to Secret Rabbit Code: > > http://www.mega-nerd.com/SRC/
Let the others say this :)
> Secret Rabbit Code gives specs for signal to noise ratio and bandwidth > as well as speed.
Our bandwidth is 47.7% of the sampling rate. You can see the SNR + spectrum on our now updated resampling page (http://www.dspteam.com/resample.html) as well as some speed measurements. You can measure the speed on your PC too by trying the demo player (FPU version only) or the Winamp plugin (FPU + SIMD versions). I can't see speed results on the SRC site (says the page is still incomplete). Audio DSP team
HI all,

Sorry for dragging this post back up.My ISP's usenet service was
dodgy for a couple of weeks and I was too busy to muck about with
this google thing. It looks like my ISP might now have its issues
sorted out so I can follow comp.dsp again.

Andor wrote:

> Some audio rate resamplers were tested and the results are available > here (select the resampler type from the "NAVIGATION" drop-down box): > > http://src.infinitewave.ca/
I can't find any definitive details of how this testing was performed, but it looks like they just generated a 1kHz sine wave at 96kHz and then downsampled it to 44.1kHz and FFT-ed the result. If that is indeed the case, then I would call this a particularly poor test that bears little to no resemblance to real world uses of sample rate converters. Its also not a very good methodology for measuring sample rate converters. The main problem is that real world signals sampled at 96 khz *will* have audio signals above 22.05 kHz and these *must* be attenuated when downsampling to 44.1kHz A better test would be to have a 1 khz since wave at -0.1 db Fs and a 22.06kHz sine wave at say -60 dB Fs. The idea here is that if the converter is doing its job properly, the 22.06 kHz sine wave will be attenuated sufficiently so that any alias frequencies it produces will be below the noise floor of the conversion process. At least some of the converters at the above link will fail miserably on this test I am suggesting. For instance, if you go to the above link and select the "Transition" display mode, you will see that the Ableton Live converter does a very poor job of attenuating alias frequencies above 22.05 kHz in comparison to say the converter in Adobe Audition. The Ableton Live converter is not the only one with this problem, just the first one I noticed. In fact some were even worse.
> I don't know if either of the above was included in the test. Perhaps > Erik knows if his code was used in one of the products from that > webpage?
No, none of the products tested on that web page use Secret Rabbit Code. Cheers, Erik
DSP team wrote:
> Paul Toritz wrote: > > > How does your resampler compare to Secret Rabbit Code: > > > > http://www.mega-nerd.com/SRC/ > > Let the others say this :) > > > Secret Rabbit Code gives specs for signal to noise ratio and bandwidth > > as well as speed. > > Our bandwidth is 47.7% of the sampling rate. You can see the SNR + > spectrum on our now updated resampling page
How are you measuring this? If you are simply downsampling a low frequency sine wave you are testing the converter under the most ideal conditions imaginable. It gets far more interesting to try and find the worse case behaviour.
> I can't see speed results on the SRC site (says the page is still > incomplete).
Yeah, I've been meaning to get back to that for ages. Too much to do and too little time to do it in. Erik
DSP team wrote:

> Instead of shifting the pitch and resampling, you can do it at once! E.g., > there is a real-time-stretching algorithm called "Procrustes" available at > our web site - http://www.dspteam.com/ - with demo players showing how > fast yet good sounding it can be done if written 100% in Assembler and > optimised to extremes by utilising the x86 SIMD instruction sets 3DNow! > and SSE while taking care of the transients. It's available for > licensing.
Gotta compliment you on the sound quality of your time/tempo stretching demo players. I would also be interested to hear players that do real time frequency/pitch scaling. A more complete demo would be a player and plugin that does both scalings simultaneously controlled by 2 sliders having time/tempo on one and frequency/pitch on the other. Bob -- "Things should be described as simply as possible, but no simpler." A. Einstein
erikd wrote:

>Sorry for dragging this post back up.My ISP's usenet service was >dodgy for a couple of weeks and I was too busy to muck about with >this google thing. It looks like my ISP might now have its issues >sorted out so I can follow comp.dsp again.
You're still lucky - my ISP stopped all their NNTP (news) servers since "nobody uses Usenet anymore", as they explained! And this (according to themselves) was the only ISP here who had ever had such servers...
>How are you measuring this? If you are simply downsampling a low >frequency sine wave you are testing the converter under the most >ideal conditions imaginable. It gets far more interesting to try and >find the worse case behaviour.
There are spectra for both 440 Hz and 16 kHz sine waves there. While 16 kHz isn't the worst case, it's close. See http://www.dspteam.com/resample.html and click on the "440 Hz" and "16 kHz" links to see these spectra. Bob Cain wrote:
>Gotta compliment you on the sound quality of your time/tempo >stretching demo players.
Thank you! :)
>I would also be interested to hear players that do real time >frequency/pitch scaling. > >A more complete demo would be a player and plugin that does both >scalings simultaneously controlled by 2 sliders having time/tempo on >one and frequency/pitch on the other.
Well, that's *exactly* the next thing we are now working on - stay tuned... Audio DSP team
Bob Cain wrote:
> DSP team wrote: > >> Instead of shifting the pitch and resampling, you can do it at once! E.g., >> there is a real-time-stretching algorithm called "Procrustes" available at >> our web site - http://www.dspteam.com/ - with demo players showing how >> fast yet good sounding it can be done if written 100% in Assembler and >> optimised to extremes by utilising the x86 SIMD instruction sets 3DNow! >> and SSE while taking care of the transients. It's available for >> licensing. > > Gotta compliment you on the sound quality of your time/tempo > stretching demo players. > > I would also be interested to hear players that do real time > frequency/pitch scaling. > > A more complete demo would be a player and plugin that does both > scalings simultaneously controlled by 2 sliders having time/tempo on > one and frequency/pitch on the other. > > > Bob
Did you try different content? I tried a couple of orchestral things, and it sounded pretty good. Then I tried a piano sonata. Speedup there sounds OK, but even small amounts of slow down sounds awful. It sounds very watery, like the algorithm really can't get a grip on the pitch. That said, the orchestral bits I tried were pretty neat. Steve
>Did you try different content? I tried a couple of orchestral things, >and it sounded pretty good. Then I tried a piano sonata. Speedup there >sounds OK, but even small amounts of slow down sounds awful. It sounds >very watery, like the algorithm really can't get a grip on the pitch. >That said, the orchestral bits I tried were pretty neat.
This is very strange, because I hear nothing of the kind with the Beethoven's Moonlight sonata (available for download for example at http://multimedia.utsa.edu:16080/technology/students/021/JVanAntwerp/Moonlight_Sonata.mp3) - it sounds quite normal to me, including when slowed down. What is the sonata you tested? Is it available for download? Audio DSP team