Zplane's advanced time‑stretching and pitch‑shifting algorithms are now available in Cakewalk.
There have been many updates to Cakewalk by BandLab since it was acquired, as well as multiple stability improvements. However, a big question on users' minds was whether there would continue to be any kind of major updates. The latest update (2018.09) answers that question.
One of Sonar's biggest limitations involved time‑stretching, and that carried over to Cakewalk. Although it was possible to change an entire project's tempo, it was a complicated, multi‑step process. Real‑time stretching was good enough only for a preview; rendering was necessary to find out what something really sounded like when stretched. Furthermore, the AudioSnap and VocalSync functionality based on the stretching engine exposed its limitations. I did find AudioSnap's stretching‑based functions very useful (although this often required correcting the transient detection manually, which is still an issue). However, the sound quality wasn't up to today's standards.
Zplane's élastique time‑stretching algorithms have become something of an industry standard; you'll find them in products from multiple companies. Now Cakewalk has incorporated these algorithms, and their inclusion touches the entire program — including AudioSnap, which has resulted in major improvements as well as significant bug fixes. In addition to improved sonic quality, élastique time‑stretching also uses memory more efficiently, preserves transients without phasing artifacts, processes audio faster than the previous Radius algorithm, and preserves formants for both monophonic and polyphonic material.
There are two zplane algorithms — élastique Pro and élastique Efficient. The names are pretty self‑explanatory, but after working with both versions, élastique Efficient sounds very close to élastique Pro. Choosing Efficient for online, real‑time rendering and Pro for offline rendering narrows the sonic gap between real‑time and rendered audio. In Preferences, you can specify either algorithm for online and offline rendering (see Screen 1).
Note that the pre‑2018.09 algorithms are still available. For example, when using VocalSync or stretching with narration, I still find Radius Solo (Vocal) optimum for offline rendering. Stretching algorithms are complex, and optimised for different tasks, so it's important to do a little trial‑and‑error to evaluate which algorithm is most appropriate for a particular application.
Zplane's élastique is now available for any stretch‑based functions — slip‑stretching, clips following project tempo, transposition, audio quantisation, length processing, fit to time, VocalSync and, of course, AudioSnap. These all benefit from the improved stretching. However, be aware that projects using élastique stretching won't sound as intended if opened in versions prior to the 2018.09 update. Of course, the easiest solution is to convince any collaborator to update to the latest version instead of trying to open a new file in an old program. Speaking of which, I don't understand why some people continue to use Sonar Platinum instead of Cakewalk — Platinum lacks several bug fixes, is no longer supported, and will never be updated. What's more, as long as it's installed on the same computer as Cakewalk, Cakewalk can access all the plug‑ins and other goodies that came with Sonar Platinum.
On the other hand, because the Radius algorithms remain available there's no problem with opening up older projects in the latest Cakewalk. However, you'll likely find it worthwhile to process any stretched audio with the new élastique algorithms instead.
Note that Cakewalk uses the default stretch options (as specified in Preferences) for the default mode set in the Track Properties or Clip Properties Inspector. You can override these in the Track Properties Inspector's Tracks field for Stretch Methods, and in the Clip Properties Inspector field for AudioSnap.
Suppose you recorded a project at 124 bpm, but decided that it would be better had it been recorded at 128 bpm. Until now there were two simple ways to solve this:
- Continue with the project until its conclusion, and then use a high‑quality stretching algorithm on the final mix.
- Load the final mix into the Loop Construction window, and raise the pitch to speed up the tempo. This is still valid if you want the tape‑style varispeed method that changes both tempo and pitch (and which also doesn't produce artifacts). However, you don't always want to change both pitch and tempo.
The following steps tell you how to change a project's tempo to a different tempo, assuming the project doesn't have to follow varying tempo changes (ie. you want a single, static change from one tempo to another):
1. Bounce the clips in each audio track to create one continuous WAV file per track, then slip‑stretch the beginning of each clip to the project's start (00:00:00).
2. Slip‑edit and snap the end of each audio track to the next measure after the end of the song, and note the measure (eg. measure 65).
3. Bounce each track to itself. Now every audio track should contain a WAV file of the same length. You needn't be concerned with MIDI tracks, which inherently follow tempo.
4. Change the tempo to the new tempo.
5. Slip‑stretch the end of each audio track's clip to measure 65 at the new tempo (to slip‑stretch, while holding Ctrl+Shift, click on the end and drag to measure 65, as in Screen 2).
Assuming you're using élastique Efficient as the online algorithm, you might be surprised at the sound quality. Now bounce each of the stretched clips to itself to invoke the élastique Pro offline algorithm to obtain the best possible audio.
With projects that follow tempo changes, you need to tell the program which files should be stretched, and Cakewalk is no different in this respect from other programs where audio can follow tempo changes. However, the more complex the project, the more you're asking Cakewalk to do. So, let's start with the most foolproof way to have a project change its fundamental tempo, and also, follow tempo changes:
1. Bounce all the clips in a track together to create a single WAV file. (You actually may not need to do this — but it can't hurt, and could help.)
2. Surprisingly, I had good luck with stretching clips that didn't start at the beginning of the song, and didn't end on measure boundaries. However, old habits die hard — so I slip‑stretch the beginning of each track's clip to the project start, and the end of all clips to the same end point, snapped to a measure boundary. You'll need to bounce each clip to itself again to make these changes permanent.
3. Click on a track and open the AudioSnap palette. For now it needs to follow the current project tempo (not the target tempo), so click on 'Clip Follows Project'.
4. Repeat step 3 for the project's other tracks. Now if there are tempo changes, the audio will follow them.
While most of the time you won't encounter any problems, I've run into two potential issues.
When you enable AudioSnap, the clip should show transients. However, in a couple of cases, even though the Edit Filter said Audio Transients, they weren't being displayed. This happened with tracks that had lots of Take Lanes, and who knows what was going on in there... There were muted clips and such. If you follow the steps above, stretching should still work, but if you want to see the transients, fold up the Take Lanes and delete any unused ones prior to bouncing the clip to itself.
In a few isolated cases, it wasn't possible to specify the current project tempo. For example, with a project at 92 bpm, the nearest option AudioSnap offered was 91 bpm, and choosing 'From Project' for the Average Tempo didn't help. I selected the nearest value, then tried selecting the Average Tempo again. This time 92 bpm was an option. I chose it, and all was well.
Although most users will probably consider time‑stretching as élastique's biggest benefit, transposition uses these algorithms too. The Radius algorithm was OK, but élastique lets you get away with transposing by greater intervals, and with fewer artifacts. (See Screen 3.)
élastique isn't the only change. Some people liked the one‑line opening affirmations (the notifications that appear when you open a project), and some didn't. Others wished they could add their own. Well, now you have control over this feature. Create a text file in Notepad called ProjectOpenNotification.txt, and place it in the AppData\ Cakewalk\ Cakewalk Core folder. You can have up to 100 affirmations, each up to 100 characters. Place one on each line. If you leave the text file blank, you'll see no affirmations. To return to the original set, just delete or rename the text file you created.