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:
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.