Phase Vocoder

Phase Vocoder

I made a cross-platform phase vocoder. This project is available on GitHub here. The PhaseVocoder allows for time expansion/compression and pitch shifting of audio with quite a good degree of quality. I wrote this in C++. It runs on Windows, macOS and Linux (please see download links below). Here are some examples of audio processed with my phase vocoder:

First a drum beat, stretched and compressed with respect to time:


Various other audio stretched or compressed with respect to time:


An example of the pitch shifting capabilities:


Download Link to the Software

If you're interested in giving it a try on your own audio, I have a command line executable that should work for all Intel 64 bit Windows, Mac OS and Debian-based Linux systems. Download links:

Note that these downloads are just zipped executables (not installers). The command line usage is quite simple. For example, to stretch audio by 25% use the following options:

 PhaseVocoder --input inputfile.wav --output outputfile.wav --stretch 1.25

The "stretch" argument takes its value as a ratio of the original audio. A stretch ratio of 1.0 results in output that is identical to its input. A ratio of 0.5 results in output half the length of the original audio, and a ratio of 2.0 results in output twice the length of the original audio.

To decrease pitch by two and a half semitones use the following options:

 PhaseVocoder --input inputfile.wav --output outputfile.wav --pitch -2.5

Additional options exist such as resampling, audio transient identification and specifying audio transient locations in the given input. To see all command line options please use the '--help' option. For extended help and additional usage examples please use '--longhelp'.

Also, please note that the Phase Vocoder currently only accepts mono (single channel) 16 bit uncompressed wave files as input.