Audio Time and Pitch Shifting

Cantabile now supports time stretching (speeding up/slowing down) and pitch shifting (transposing) audio files.

Time Stretching

To change the speed of any file played by a media player use the speed knob:

You can also use a binding:

Per-File Settings

To adjust these settings on a per-file basis. Right click on the media player, choose Edit Current File Settings and you’ll see the following settings:

Any changes you make here will only apply the selected file.

Pitch Shifting

There are two ways to pitch shift a file.

  1. Use the file settings as shown above and set a transpose setting.
  2. Use the file settings and turn off “Ignore Global Transpose Setting”

When Ignore Global Transpose Setting is turned off, the media player will transpose automatically as you change the global transpose setting.

Rough Demo Videos

I’ve made a couple of quick demo videos. (Sorry for the quality, but they give the general idea)

Caveats

There are a couple of caveats to all of this:

  1. Audio time and pitch shifting isn’t a sure thing. Take it too far and you’ll get weird sounds and artifacts.
  2. The time and pitch shifting all works in real-time mode and is computationally expensive. If you have a file that you want to permanently change its pitch or speed you’re better off using an external tool and rendering a new file.
  3. You could use Cantabile to play the stretched/shifted file to the recorder to capture a new recording however you’ll probably get a better result using an external tool that can pre-analyse the audio. Cantabile is setup to run in real-time mode and needs to make some compromises.
  4. For performance reasons when the speed is 100% and transpose disabled the audio stretching logic is completely disabled. You might notice a slight glitch if the file is playing when you first enable either feature as the audio engine needs needs to internally switch audio streams to support these features.

Affect on MIDI Files

MIDI files have always supported the speed setting — nothing has changed there however MIDI files now support the new per-file transpose and global transpose setting.

What About Synchronization?

Although the speed of audio files can now be adjusted there’s no support for syncing an audio file to a master transport. This will be added at some point but it’s going to take some work and experimentation so I’ve left it in order to get this basic functionality out.

Available Now!

This is all available now in the latest experimental build 3214. Enjoy!