Rendering
Live coding is the heart of resonon, but eventually you’ll want to capture a loop as a file — to drop into a DAW, hand to a collaborator, or release. Rendering bounces your patterns to stereo WAV offline: Resonon runs the audio graph as fast as your CPU allows rather than in real time, so a few cycles render in a fraction of their playback length.
Here’s a complete house beat bounced to disk:
use "std/instruments" { Sampler, Kit };use "std/effects" { Lowpass, Delay, Highpass };
project_title("House Beat");project_artist("RESONON");
let kicks = AudioTrack("kicks");kicks.instrument(Sampler(Kit("CR-78")));kicks << [bd*4];kicks.fx(#[Lowpass("lowpass", 600)]);
let snares = AudioTrack("snares");snares.instrument(Sampler(Kit("CR-78")));snares << [_ cp].fast(2);snares.fx(#[Delay("delay", 0.2, 0.3)]);
let hats = AudioTrack("hats");hats.instrument(Sampler(Kit("CR-78")));hats << [_ hh].fast(4);hats.fx(#[Highpass("highpass", 3000)]);
render(#[kicks, snares, hats, master], 4);The last line renders four cycles of each track and the combined master mix, writing one WAV per stem plus a full mixdown. Everything else is the ordinary track setup you’ve already seen — rendering captures your session exactly as it sounds.
Project Metadata
Section titled “Project Metadata”Set a title (and optionally an artist) before you render. The title decides the
output folder name; if you don’t set one, renders land under untitled.
project_title("House Beat");project_artist("RESONON");What to Render
Section titled “What to Render”render() is flexible about what it bounces. Pass a cycle count alone for the
master mix, a single track, or a list (#[...]) to get separate stems:
| Call | Output |
|---|---|
render(cycles) | Master mix |
render(track, cycles) | A single track |
render(#[tracks], cycles) | Each listed track as its own WAV |
render(#[tracks, master], cycles) | Each track plus the master mixdown |
render_master(cycles) | Master mix (a shorthand for render(cycles)) |
use "std/instruments" { Sampler, Kit };let drums = AudioTrack("drums");drums.instrument(Sampler(Kit("CR-78")));drums << [bd*4];
render(4); // master mix, 4 cyclesrender(drums, 4); // just the drums trackrender(#[drums], 4); // each listed track as its own filerender(#[drums, master], 4); // stems + master mixdownrender_master(4); // master mix shorthandStems and a master in one call is the usual move — you get mixable parts and a reference mix together.
Where Files Land
Section titled “Where Files Land”Renders land inside the project the piece belongs to — the folder holding your
resonon.toml — never beside the terminal you happened to start from. Each one
gets its own timestamped folder, so repeated renders never overwrite each other:
my_piece/ resonon.toml src/main.non renders/ my_piece_2026-09-07_18-00-00/ kicks.wav snares.wav hats.wav master.wav my_piece_2026-09-07_18-42-11/ master.wavThe folder is named after the piece: the title you gave it with
project_title(), or — when nothing set one, which is the usual case when you
execute a selection from the editor — the project’s name from resonon.toml.
Either way it is lowercased, with spaces and special characters collapsed into
underscores and the result capped at 50 characters. "Track #1 (Final)" becomes
track_1_final.
The files themselves are always 24-bit, 48 kHz stereo PCM WAV — fixed defaults, no configuration needed.
What Happens During a Render
Section titled “What Happens During a Render”Because rendering is offline, a few things differ from live playback:
- It runs at full speed, not locked to real time, so it finishes as quickly as your machine can manage.
- Live output pauses while the render runs and resumes automatically when it’s done — you won’t hear the bounce.
- A progress bar shows the current cycle, the total, and an ETA.
Next Steps
Section titled “Next Steps”You can now produce finished audio. Go deeper by building your own sound, or send your notes to other software and hardware.
- DSP Instruments — design synths and effects from scratch
- MIDI Export & MPE — export editable note data for a DAW