This month, we present everything you ever wanted to know about SysEx but were afraid to ask, plus the whys and wherefores of Sonar 4 's cool new Freeze functions...
It's hard to believe we're starting our fourth year of Sonar Notes. During the past three years, Sonar has acquired its own fanatical devotees, and now that Cakewalk have started user forums, other Sonar users can get in touch with them directly. These forums not only serve as a direct pipeline to other users, but to Cakewalk themselves. The company's engineers are both active and responsive in the forums, and they suffer the occasional Internet idiot with patience and grace. If you haven't yet checked out the forums, at www.cakewalk.com, they contain essential information for Sonar aficionados.
Recording & Playing Back SysEx
Here's a tip that applies to older versions of Sonar as well as Sonar 4. If you use outboard MIDI gear with Sonar, you're probably taking advantage of system exclusive messages to save their patches and setups. If 'System Exclusive' is ticked under Options / Global / MIDI, Sonar can record SysEx data into a MIDI track and play it back. Unfortunately, the message length limit is 255 bytes — enough to send a control setting or similar, but certainly not enough for even the most modestly-sized MIDI synthesizer preset. However, if you use the Sysx View (which can store up to 8192 banks of SysEx messages), there is a way to 'embed' triggers for the SysEx banks in a track, and have them play back at any time.
If you're not familiar with the Sysx View, see the July 2002 Sonar Notes; it's a window you call up by going View / Sysx, and it serves as a recorder/playback library for MIDI SysEx messages. It also lets you rename, store, load, auto-send (ie. certain messages can be sent when you open a project), and even edit SysEx messages, which can be as short as a single preset or as long as an entire bulk dump. The contents of the Sysx View are saved with a project.
To play back a SysEx bank from within a track, place the 'Now' time where you want Sonar to send the data, then open up the MIDI track's Event List view by going View / Event List (or typing Alt-4). Next, hit the computer keyboard's Insert key to insert an Event into the Event List at the 'Now' time position.
Double-click in the Event's 'Kind' field. When the 'Kind of Event' window appears, check 'Sysx Bank' under Special, then click on 'OK'. In the Event List entry's Data field, enter the number of the SysEx bank that should play back at this particular 'Now' time. When the project plays back and the 'Now' time arrives at the position you specified, the SysEx data will play back.
Sending a big bulk dump will take a while, and some instruments may 'choke' when receiving one from Sonar. If all you need to do is change a patch, you're probably better off saving individual patches as SysEx banks and triggering them. So wouldn't it be easier just to insert program changes instead? Yes, except that this assumes you have the same presets loaded into your instrument that were loaded when you inserted the program change command. If you edit and tweak programs a lot, that may not be the case. By sending SysEx, you're sending the actual program data itself, not just something that calls up a particular memory slot. If you save your outboard gear parameters in Sonar, as long as you back up your project you've also backed up the data needed to recreate the project — which is highly recommended.
Closing The Gap
Although few programs can reach the standard set by Ableton's Live 4 for audio that never stops, Sonar has made tremendous strides in reducing interruptions in the audio stream during playback, especially with complex projects. However, even with version 4, audio can be interrupted for a few seconds during routing changes, particularly if a lot of delay compensation is being applied to plug-ins.
Now the 4.0.1 maintenance update addresses this issue by adding a new variable to the AUD.INI file. This variable allows bypassing of nearly all of the CPU-intensive work that's required to recompute delay compensation after an audio-signal routing change, thus reducing gapping or eliminating it entirely.
The downside is that the audio will be slightly out of sync (although you probably won't notice this at low latencies). The loss of sync is only temporary, however, as the delay compensation is always recomputed anyway when you stop, then restart, playback.
Open the AUD.INI file in Notepad, then look for the following variable:
[Wave]EnableLiveADCRecalc=<0 or 1> (default = 1)
Set this to zero for minimal gapping, then save the AUD.INI file. Done!
You can see the list of bug-fixes and new features in 4.0.1 by going to http://www.cakewalk.com/Support/kb/kb2004239.asp. In particular, note that Prosoniq's MPEX2 timestretch algorithm has been upgraded to MPEX3, which alone is worth the download time. So what are you waiting for?
It's Freezing In Here!
This seems like an appropriate Winter topic: Sonar 4 has added a freeze function. (Actually, astute Sonar Notes readers already know that Sonar has had a freeze function since version 1, but it wasn't called that, and it required you to pre-mix the track you wanted to freeze, then archive it, instead of being a 'one click' process.)
Sonar 4 now has that one-click freeze solution for virtual instruments, tracks and processors, that not only reclaims CPU power, but in the case of instruments that load samples into RAM (such as samplers that don't stream from hard disk), reclaims the RAM as well. There's little advantage to freezing an audio track unless it uses effects that cause a CPU hit, but freezing virtual instrument tracks can save a huge amount of CPU power.
Freezing is simple. In the Track View, right-click on the blank space in a track (or on its track number) and you'll see these choices if the track hasn't already been frozen:
- Freeze Synth or Freeze Track Freeze Options
(If you click on what you think is a standard audio track and see 'Freeze Synth', don't worry: this simply means that an effect in the track has synth properties, such as sync'ing to the host tempo. When it has been frozen, you'll hear the effect sync'd to tempo.)
If the track has been frozen (shown by a tiny snowflake and an indicator for the track type next to the track name), you'll instead see 'Unfreeze Track', 'Quick Unfreeze Track', and 'Freeze Options'. Interestingly, you can right-click on any MIDI tracks feeding a synth and be able to initiate freezing; there's also a freeze button on the synth rack view itself (see screen below).
Clicking on 'Freeze' automatically pre-mixes the track or instrument audio (with any effects). The original audio-clip display disappears and what is then displayed may differ from the original audio, because it reflects any changes to the waveform caused by processing. The FX bin is also disabled.
Under Freeze Options, tick 'Fast Bounce', as this will freeze the track faster than real time. If a synth works only in real time, though, this should be unticked. I leave 'Hide MIDI Tracks' unticked, as I want to see MIDI tracks even if an Instrument track is frozen, so that I know what's going on the song. But if you really have finished fiddling with a track, hiding any associated MIDI tracks will unclutter your workspace.
'Single Bounce Per Track' pre-mixes the clips into a single frozen clip. If this is unticked, Sonar will create separate clips for each clip when you freeze, but you'll need to define the 'Remove Silence' gate settings so that Sonar recognises the silence between clips as the place to separate the clips. This seems unnecessarily complex for what should be a quick operation, so I always leave 'Single Bounce Per Track' ticked. The final option in the list of Freeze Options is the ability to set a duration that extends beyond the last clip, to accommodate tails from delays, reverb, and so on. The default is five seconds, but there's no real limit on this length.
Once a track has been frozen, you can, of course, unfreeze it. This discards the pre-mix, returns the audio clip display to normal, and re-enables the FX bin. But there's also the ability to do a 'Quick Unfreeze'. This keeps the pre-mixed audio, but shows the original audio and enables the FX bin, which is useful if you want to test a change on the unfrozen track for comparison. For example, if you're not sure you like a particular effect and also want to perhaps change an envelope, do a Quick Unfreeze. Disable the effect, change the envelope, then listen. To compare this to the frozen version, just select Quick Freeze. You can toggle back and forth between the two until you make up your mind. Note, however, that you can only Freeze or Quick Freeze while the transport is stopped. It's possible to Unfreeze or Quick Unfreeze any time you like.
One limitation is that if you make a change during the 'quick unfrozen' stage and like it, you can't go directly to Freeze Track to freeze the changed version — you need to Quick Freeze, Unfreeze, then Freeze again (any changes you made to the track while in the 'quickly unfrozen' state are retained when you Unfreeze). Perhaps Cakewalk could add a 'Freeze Edited' command to save a couple of clicks?
You can do a lot with a frozen track: move it, split it, cut pieces, copy pieces, and even convert a frozen track — or a part that has been cut into its own clip — into a groove clip. As you'd expect, because this all affects the pre-mixed audio, unfreezing discards the pre-mixed audio, so that you lose any edits. However, before unfreezing you can always bounce the edited, frozen track to a new track, or even more simply, go Edit / Bounce to Clip(s) and drag the audio to a standard audio track. When you do that, unfreezing the original track does not unfreeze the copy. Very, er... cool!
What about freezing multiple tracks at the same time? In theory you can't — but I do have a workaround. Drag the audio from the tracks you want to freeze all into one track, then freeze it. If you decide you want to separate these tracks out again, no problem. Unfreeze the track, then, in the Track View, right-click on a blank space in the track and select 'Show Layers'. Each of the tracks you dragged in will be shown as its own clip. You can then freely drag out whichever clips you want.