In my very first post, I mentioned that the FFT has many applications in audio signal processing. In fact, the main reason I ported my old C++ FFT to ActionScript is so that I could implement AudioStretch, a real-time time-stretcher / pitch-shifter that runs in Flash, in your web browser.
I first put AudioStretch online in late 2009, and I got a lot of traffic for a while, especially after André-Michelle tweeted about it. In retrospect, though, it really didn’t sound very good. I think people were just intrigued that stuff like this could be done at all in Flash.
Since then, I’ve made some huge improvements to the sound quality – better bass response, better transient handling, vastly better inter-channel phase coherence. I’ve added more speed options as well – you can even go to 0% speed, which can be pretty cool for working out notes of chords. (The UI is still really basic. Improvements coming soon!). So if you haven’t tried it in a while, or if you’ve never tried it at all, I invite you to give it a go:
Let me know what you think!
Incidentally, I have no plans to publicly release the code for AudioStretch. If you’re wondering how it works, here’s what I can tell you: it’s loosely based on the phase vocoder technique, but also embodies loads of proprietary tricks which I might write up one day…
If you’ve got an iPhone try AudioStretch for iOS. Free download. Runs on iOS 5.1 and later. Way cooler than the Flash version.