Slamnig home

v. 1.04

ZONK is an algorithmic composer which uses the autoregressive model to create music. This is a fairly simple mathematical formula which predicts the future of a signal based on it's past. It is used for signal processing, for representing natural, economic or other processes, and in this case the signal is music.

ZONK is built like a simple multitrack recorder. The command console is at the top, and one or more tracks can be created below. Each track is like a player with an instrument, and has a zillion sliders and buttons to control its behavior. The console starts and stops the music, and gives a harmonic reference to the tracks so they can jam together.

Quick Start

The fastest way to hear ZONK playing is to try out the sample files. The samples are installed on the Desktop, in the ZONK songs folder. Doubleclick a song file and the project will open. Click the Play button, and listen to ZONK music. Now you can explore, fiddle with the sliders and hear what happens.

If you want to start a song from scratch, select Menu → File → New. An empty song opens, with one track. In the Seed box of the track write c d e f , with spaces. Click the Prepare button by the box and you will hear the seed motive. Now click the Play button up in the console. You will hear the seed melody again, but it will go on. Moving the sliders will change the character of the music.
Advice: the Green sliders are especially sensitive. If you move them, be sure to click the Normalize button (on the same track). Restarting the song is also a good idea.

1.  Tracks

Each track plays a monophonic instrument. A track has to be prepared before it can play. This involves writing a short melodic seed and setting the sliders to values that will hopefully produce the desired effect.  Since ZONK is a real-time machine, the sliders can be tweaked on the fly.

1.1  Seed

The seed is a short musical motive that starts off the composing process on a track. It can be up to 16 notes long. It sets the general character of the composed melody (although this also depends greatly on the slider settings). 0

Note entry is a pain. Each note is a group of letters and numbers. You can write simply C and the note C will be played, with octave, duration and velocity set to default values. But all these values can be set explicitly.

- To set the octave, write the octave number before the note letter. 2F is F in the second MIDI octave.
- To make the note sharp or flat, write # or b after the note letter. Gb is G flat.
- To set the duration of the note, write the duration number after the note letter and the optional flat or sharp. C#8 is C sharp with the duration of 8 ticks.
Ticks are shortest duration units. Tick length is set by the Speed slider in the Console. If a 16th note is one tick long, then an 8th will have 2 ticks, quarter-note 4 ticks, half-note 8 and a whole note 16 ticks.
- to set the velocity (loudness) of the note, write p (piano), m (mezzoforte) or f (forte) at the end of the note string. Af is A, forte.

Here's an example of an explicit note:

4C#16f means C# in the 4th octave, duration 16 ticks, forte.

The note fields are:

octave pitch pitch modifier duration velocity
0 - 9
C,  D,  E, F, G, A, B # -  sharp
b - flat

any number of ticks p - piano
m - mezzoforte
f - forte

Only the pitch field is obligatory, all other fields except the pitch modifier are retained from the previous note (or set to default).

E. g. 4c2f dp e 3fm g8

- C, D and E are in the 4th octave, F and G in the 3rd octave.
- The first 4 notes are 2 ticks long, the last G 8 ticks.
- C is forte, D and E piano, F and G mezzoforte. 

Two important durations are set by the seed:

- Shortest note length for the whole piece is set to the shortest note length in the seed.
- Longest note length for the whole piece is set as the duration of the whole seed.
Note: the composer may play notes longer than this anyway.

It is advisable that the shortest and longest note lengths are powers of 2, i.e. 1, 2, 4, 8, 16, 32, 64... ticks. ZONK does not understand triplets yet.

When you're done editing the seed, press the Prepare button beside it.

1.2  Vertical Sliders


The Volume slider sets the track playback volume.

Note: The change will affect only the notes that start after the slider is moved. If the volume is modified during playback, there will be a short lag until the change takes place.


These sliders are inactive. But you can place them in visually pleasing positions if you wish. Some of them will turn green after the Seed has been prepared.


These sliders represent the basic parameters for music generation, and are impossible to explain without going into math, of which we have already had quite enough. So suffice it to say that they can be moved up or down, and this changes the way music is produced in unpredictable ways.

One of the rare predictable cases is when you click the Clear button, which sets the green slider 0 to 100 and all the rest to 0. Also set all the pink, cyan and yellow sliders to 0.

Press play, and you'll most likely hear your seed repeating itself exactly. This is a good place to start experimenting with the green sliders.

Advice: make sure you Normalize the sliders before you click Play. You can use the Auto-normalize function when moving sliders during playback, but this usually leads to disaster anyway. The remedy is to restart playback.


The pink sliders control note pitch.

PC - Pitch Constant

Moves all the generated notes up or down by a certain interval (expressed in semitones).

Overdoing it with the PC slider will promptly send your melody sky-high or opposite. Advice would be to keep it close to 0, and tweak it so it counteracts the melody drift.

PR - Pitch Random

This gives some random spread to the generated note pitches. It is an essential ingredient, without some random the track goes into a melodic rote. Turn it way up, and you get R2D2.


The cyan sliders control note duration.

DC - Duration Constant

This adds/subtracts a number of ticks to/from the note duration. Turn it up, the notes get longer and the melody slows down. Conversely, a value less than 0 will make the notes shorter, but caution is indicated because notes may start to disappear (I think).

DR - Duration Random

Randomizes note duration. This slider has a strong influence on the rhythmic character of the track melody. Treat it with respect.


The yellow sliders control note velocity, which is volume in MIDI lingo.

VC - Velocity Constant

This makes all notes louder or softer. Use it to prevent fading out to pianissimo or swelling to fortissimo.

VR - Velocity Random

Adds dynamic diversity to the track melody.

Red and Blue

These sliders are "high level" controls, they have a final say on what is finally played.

H (red) - Harmony

This slider determines how "harmonic" the music will be. If set to 100, ZONK will play only the notes in the current chord (set in the Scales and Chords window). If set to 0, the pitches will be completely random.

Note 1: Even the random pitches will be in the current scale.
Note 2: If no chords are set, the Harmony slider has no effect.

R (blue) - Rhythm

Similar to the H slider, the R slider makes the melody more or less "rhythmic". However, "rhythmic" is much more difficult to explain than "harmonic". Let's say that with the slider set to 100 the notes are more or less on the beat, at 0 they are random, and at 50 they are syncopated.

1.3  Track Buttons


This button prepares the seed and makes it active. It also activates a number of gray parameter sliders, turning them green. The number of green sliders is equal the number of notes in the seed. The seed is played once.


Sets the green slider 0 to 100 and the rest to 0.


Adjusts the green sliders so the sum of their values is 100. Playing a track with non-normalized sliders results in a fast melody death.

Auto (normalize)

Normalizes the green sliders as they are moved. Useful for changing parameter values in real time during playback, but don't expect miracles.

Move Up

Moves the track up in the list.

Move Down

Moves the track down in the list.

Delete Track

Deletes the track for good.

1.4  Track Checkboxes


Mutes the track.

Bar Bound

Hmmm. Forces the melody to follow the bar boundary...???
Squares the melody...???

Seed Loop

Continuosly forces the seed melody as the input of the composer...???
The composed melody is more similar to the original seed, and more stable.

Raw Feedback

If checked, feeds the raw composer output back to input...???
If unchecked, feeds back harmonically and rhyhmically cooked values...???

1.5  Instrument Selector

Sets the General MIDI program for the track.
Note: Each track's MIDI channel is the same as it's track ID. This is hardwired for now.

  1.6  Range Sliders

Set the track instrument range.

2. Console

The console does fairly simple things like starting and stopping music and setting the tempo. But it also contains the Central Harmonizer, which keeps all the tracks in key.

2.1 Scales and Chords

Here you set the scale for the piece, and the chord progression (optional).


The scale token starts with '&' (treble clef?) followed by the scale root letter (C, D, E, F, G, A, B), followed by an optional # or b sign, followed by an optional letter 'm' denoting minor.

So &C#m is C# minor.

If there is no scale specified, ZONK defaults to C major.


The chords are written in a slightly restricted version of the standard jazz notation. The chord root is the same as the scale root: letter and alteration sign. The root is followed by chord interval numbers (4, 5, 6, 7, 9, 11, 13). Each number may be prefixed with '+' or '-', modifying the interval in the standard way. No space or other symbols may be used. 'maj7' is written as '+7'.
So Ebm-5+713 is E-flat minor with a diminished fifth, a major seventh and a 13th (ugh).

Note: A major 3rd and perfect 5th are implied if not specified. If a 4th or a perfect 5th are specified, there is no third in the chord. A '+' or '-' with no interval number applies to the implied perfect 5th.

All this can be followed by a '*', followed by a duration value.

So C7*128 means "play C7 for 128 ticks". Again you have to write in machine code.

If a chord does not have a duration, it is retained from the previous chord. There is no default duration, however, so the first chord has to have one.

It should be possible to change scale between chords, I'm not sure.

After you're done with the scales and chords, click the Prepare button above.

2.2  Console Buttons


Starts composing/playback. Only the tracks which have their Seeds prepared will be played.


Stops playback.

Add Tracks

Adds a new ZONK track to the list.


Prepares and activates the scales and chords.

2.3  Tempo Slider

Sets the tempo for the piece. The tempo number is BPM if a quarter note is 4 ticks long. If you use a different number of ticks for a quarter note, you can calculate BPM like this:

    BPM = Tempo * 4 / TicksPerQuarter

3.  Menu


The File menu works exactly as you would expect it to.


Select Device

Opens a dialog for MIDI device selection. The devices can be software synthesizers installed on your computer or hardware synthesizers connected to MIDI ports.

Note: If you want to route different MIDI channels to different devices, or otherwise manipulate them by some external means, please bear in mind that ZONK track MIDI channel numbers are the same as their track IDs. This is hardwired for now.

Davor Slamnig, 3/2013

Slamnig home