Early Preview · Kiwisonic, Kiwisynth, Kiwipulse and Kiwibass are free during early preview. Their shape is still being figured out, and feedback is what drives them forward.

Generated tracks

All docs / Kiwisonic / Generated tracks

Kiwisonic manual

Generated tracks

A generated track follows another track and writes its own part from it, again every time the track it follows changes. It is a backing layer that stays in step with what you are playing: edit the original and the generated part re-derives to match.

The clearest use is atmosphere over a pad. The pad holds the chords, a generated track set to Atmosphere lays a soft shimmer an octave above it, and changing a chord in the pad moves the shimmer on the next edit. You never touch the generated track.

Adding one

Add a track from the mixer or the arrangement and choose the generated option. Pick the track it should follow, its master; only melodic tracks can be followed. Then pick a recipe, which decides what kind of part it derives.

Atmosphere is a soft shimmer an octave above the master, held across each chord. Sub pad is a held layer an octave below, for body and weight. The four textures, Shimmer, Bed, Ambience and Gap fill, are companion sounds for a track that sounds thin, described below.

The generated track appears under its master and is filled in immediately. Give it an instrument, set its level in the mixer, and it plays and exports exactly like a part you played by hand.

It follows the master

When you edit the master's notes and the edit lands, the generated track re-derives. The same happens when you reorder or add sections, so the generated part keeps lining up.

It does not re-derive when you only change the chord strip. Touch the master itself to refresh it.

Removing the master removes the tracks that follow it. They have nothing left to derive from.

Textures

A texture is a generated track with a different job. The other recipes derive a part from the master. A texture is a companion sound for it, the way playing a guitar and a synth together is heard as one fuller sound rather than as two parts.

That is why a texture plays on the master's own attacks, as hard as the master plays them, and holds until the master moves again. It does not invent its own rhythm, and that is exactly what keeps it sounding like part of the track instead of something new arriving next to it.

There are four, and they are different answers to "this sounds thin" rather than settings on one thing.

Texture Reach for it when What it adds
Shimmer the track has no sparkle over it one soft colour tone on each attack, about an octave up
Bed the track has no weight behind it a sustained root underneath, holding through each chord
Ambience the track sounds dry or small one long, quiet note per phrase
Gap fill the part sounds sparse or static short plucks in the holes it leaves

Shimmer and Ambience sit above your track, Bed sits under it, and all three play with it.

Gap fill is the odd one out. It plays where your track is not, so it is heard as a second part arriving rather than as a fuller sound. That is sometimes what you want, but it changes the arrangement and not just the tone.

Bed is the one closest to doubling a guitar with a synth. It deliberately does not retrigger on every strum, because a bed that pumps along with the strumming stops sounding like part of the guitar, so it holds through a chord and moves when the chord does. With no chord strip it holds until the master's bass note changes.

Textures also listen to the rest of the mix and voice themselves where there is room. If another track is already busy up high, a shimmer moves further up rather than piling onto an octave that is already full. So unlike the other recipes, a texture can re-derive when you edit any track, not only its master.

A texture only writes notes. What it sounds like is down to the instrument you give it: a soft pad or a bell reads as air, a saw lead does not. Ambience in particular needs an instrument with a slow attack, because the swell comes from the instrument rather than from the texture. On a piano it is just a long quiet note.

It is read-only, and you shape it with a script

You cannot hand-edit a generated track's notes. They belong to its recipe.

Some recipes are scripts, and selecting one of those tracks opens the script so you can change it. Atmosphere, Sub pad and the textures are built in, so there is no script to show. You see what the recipe does instead, with a Customise with a script button if you want to take it over. Applying a script replaces the recipe, and clearing it puts the track back on the recipe.

The editor

When there is a script, the editor shows it on the right and two piano rolls on the left, one above the other: the source clip you are following on top, the generated notes below, lined up on the same pitch range so the relationship is visible. Both show a bar grid and refresh when you apply or when the master changes. Drag the divider to resize.

Give the track an instrument with the dropdown at the top. Audition then plays the generated track together with its source so you can hear them in context, with a cursor sweeping both grids in time. Press it again to stop.

One handler at a time

A script is built from handlers: one for each master note, one for each chord played in the master, one for each chord in the song's progression, one per bar, one per beat, and one that runs at the start.

The handler picker at the top lets you work on one at a time. Pick a handler and the editor shows just its body, so you write the contents and the wrapper is handled for you. A reference line above the editor names the values that handler can use. Choosing a handler you have not used yet drops in a starter. Pick the raw view to see and edit the whole script at once. Apply always runs the complete script, whichever view you are in.

The script is colour-coded as you write, with line numbers down the side, and it is checked as you type. A moment after you stop, the console shows how many notes it would produce, or the mistake and the line it is on. Click the error and the cursor jumps there. Reference lists every word the language knows, each with what it does, and clicking one drops its name in at the cursor.

Here is the octave shimmer script in full.

# A soft shimmer one octave above each note the master plays.
on source_note
    emit_note(source_pitch + 12, source_beat, source_length, source_velocity * 0.5)
end

The handler runs for every note the master plays. source_pitch is that note's pitch, so adding twelve puts it an octave up, and emit_note places it at the same spot for the same length at half the velocity, which keeps it behind the master. Change the twelve to seven for a fifth, or add a second emit_note line for a thicker sound. Apply, and the derived notes update across the song.

The console reports what happened: how many notes the script produced, anything you logged, and any mistakes with their line numbers, so a typo never silently empties the track.

A script can also mute the track, which is the only way to mute a generated track, since it owns its own output.

For the full language, every handler, value and function, see scripting.