Search code examples
superpowered

Implementing Autotune with Superpowered


I have been using the Superpowered library for writing an iOS app for applying audio effects to recordings of users singing songs. Its been super easy to use thus far for pitch shifting and effects.

I'm now trying to write an autotune feature for my app. I have a sample audio piece sung by a professional, and I am trying to autotune a user's voice recording to match the sample audio.

I can detect key, shift pitch, and apply FFT, but I am not able to do pitch modulation to match a given key.

I am thinking of deep diving into FFT. Am I heading in the right direction? How should I be thinking about this?

Thanks!


Solution

  • SuperpoweredTimeStretching can do pitch shifting and it also handles the time domain to frequency domain transformation with windowing (so it has SuperpoweredFrequencyDomain inside). It also handles transients. If you don't modify rate just pitch, then the delay is 512 samples (FFT is 2048 inside with 4:1 overlap).