I finally did it: real-time, zero-latency pitch-shifting software.
After many years of contemplating it, with ideas marinating in my mind, I found the right opportunity to write this. What finally pushed me? I couldn’t find a good plugin for the eWhammy!
All the ingredients were already in place. I have a superb pitch and onset detector, backed by the Q DSP library, which has matured over the years: a cross-platform C++ library for audio digital signal processing.
Here’s a demo:
Zero latency means there is no delay in generating the pitch-shifted signal. The pitch shifter does not wait for a buffer to fill before processing begins; the first sample is streamed out the moment it is received.
To be clear, most audio applications, such as digital audio workstations (DAWs), always use an audio buffer, but that is a separate matter.
The waveforms below show the original signal (top) and the pitch-shifted signal (bottom):

Last Frontier!!! You did it!!! After this, everything is near! Chapeau!!!
Still a lot of work to do. Now I need to tie it all together.
you madman! pure genius! congraaaaaaaaaaaats! can’t wait to try it <3
🙂 LOL
That was the first pitch shifter I’ve ever heard where I enjoyed the tone. How does it sound on bass?
Bass sounds magnificent! But you be the judge. I’ll post some sound clips soon.
This is absolutely stunning, you did it!!
Nice! How does it work?
Eleven secret herbs and spices 🙂
Wowwwwwww!
I can’t believe it just WORKS. I ported this into an opcode for Csound and it works flawlessly. Tried long and hard to make a PSOLA but of course getting clicks/pops regularly. Great job!
Interesting. I haven’t even published my latest pitch detection code, yet. Which components in Q did you port it from?