Phase Vocoder Part 1

Manipulating audio in the frequency domain

This lecture continues a series on block-based processing, and is the first of three lectures on the phase vocoder, a powerful tool for manipulating audio in the frequency domain. This lecture covers the overlap-add technique, a common approach to dividing a signal into blocks, manipulating it in the frequency domain, then reconstructing it.

This lecture also introduces multi-threaded audio processing, showing how to move time-consuming calculations into a lower priority real-time thread.

Table of contents

  1. What you’ll learn in this lecture
  2. What you’ll make in this lecture
  3. Code examples
  4. Recommended parts
  5. Additional references

Lecture 18: Phase Vocoder Part 1

What you’ll learn in this lecture

  • Segmenting a real-time signal into windows
  • Working with overlapping windows (overlap-add)
  • Multi-threaded audio processing

What you’ll make in this lecture

  • A phase vocoder framework with simple effects

Code examples

Find the code examples here

fft-overlap-add: This code provides a template for implementing the overlap-add block-based processing technique, with an optional simple example of a robotisation effect.

fft-overlap-add-threads: This example extends fft-overlap-add to move the FFT calculation to a lower-priority thread to allow glitch-free execution with small real-time audio buffer sizes.

Running the examples in this course assumes that you have a Bela Starter Kit or Bela Mini Starter Kit.

No external components are required for this lecture.

Additional references

Here are some textbooks and other resources related to the Fast Fourier Transform and spectral audio processing: