KXStudio : Applications : Cadence-Render
NOTE: Parts of this website are currently being rewritten, some links might not work at the moment.
Cadence-Render is a tool to record (or 'render') a JACK project using jack-capture, controlled by JACK Transport.
It supports a vast number of file types and can render in both realtime and freewheel modes.
This tool can be executed as 'cadence_render' or within Catia and
Claudia from their 'Tools' menu.
The minimum required version of jack-capture is 0.9.60. If jack-capture is not found in $PATH, Cadence-Render will refuse to run.
You have two render modes: Realtime and Freewheel (more on that below).
The Start and End Time specifies what part of the JACK project to record. The "now" buttons will change their values to the current JACK Transport location.
Which encoding formats are available will depend on your current jack-capture version. Newer versions should support more formats. mp3 is not an option for the time being.
When recording, the 'Render' button will change to 'Stop', and the progress bar will slowly fill indicating how much percentage of the project has been rendered so far.
The rest of the interface is pretty straight forward.
Cadence-Render uses jack-capture to do the actual recording in the background.
When 'Render' is pressed it will change the JACK buffer-size first (if modified), relocate Transport to the position specified in "Start Time" and then start recording.
The recording will automatically stop when JACK Transport reaches the time set in "End Time". If the buffer-size was changed, it will be changed back.
This makes it particularly useful to render projects in freewheel mode with apps that don't support it directly.
Changing the buffer size before recording might be useful if you use plugin automation in hosts that don't support per-sample automation.
The way this works is that a plugin process() call is only called once per JACK callback and thus a plugin parameter will have low precision.
Having a lower buffer size means the host will have to call process() more often (thus increasing precision), but at a cost of higher CPU usage.
But note that, if the host or plugin takes too much time in the JACK callback, the audio buffer will not be filled properly and you'll most likely hear "cracks" (aka xruns). Freewheel mode avoids these issues (see below).
The recordings will be saved in the "Output folder" named as "jack_capture_#.ext", where '#' is a number suffix and '.ext' the appropriate extension for the selected encoding format.
NOTE: We recommend the use of padding in your songs (ie, put some silence before the beginning and end of a song).
This is because the very first sounds at the beginning of a song might not be timed properly (JACK apps need to catch up with the transport and start rolling). A padding of 8 beats is usually enough here.
Also, when some applications reach their song end they might start-over transport at 0:00, which will cause the recording to never reach the "End Time" and thus never stop.
Realtime vs. Freewheel
In short, Realtime is the "live" version of audio you hear when making music. If you hear what you're doing, you're on realtime mode.
Freewheel is the "offline" version, where audio (and midi) is processed as fast as possible. You won't hear anything when in this mode.
During freewheel JACK will not allow new clients to be registered or connections to be made. It's literally meant to be used for recordings.
Rendering in freewheel is sometimes useful because both host and plugins can take as much time as they need to process, independently of the buffer size.
This is also useful when your project gets too big and can no longer play in realtime without xruns.
Not all applications work in freewheel mode though, for example if it relies on any kind of event communication other than JACK-MIDI (like ALSA-MIDI or OSC).
This is because JACK is running faster than realtime, so any external events can't catch up in time.
We encourage you to use JACK-MIDI whenever possible. Not only does it allow freewheel rendering but also provides perfect timing between applications.
Cadence-Render is available in the KXStudio repositories and ArchLinux AUR ('cadence-tools' package in the KXStudio repositories, 'cadence' in AUR).
Debian/Ubuntu (via KXStudio repositories)