Write songs with an AI agent

A PIKOTO project is one plain text file, a .pikoto, in JSON. Anything that can write a file can write a song: you, a script, or an AI agent. Give an agent this page and an idea, and it can arrange all sixteen patterns, every lock and every effect, and hand you a song to open, play and change.

Agents: this page is written for you too. Read For agents, the file format and the reference, then build the song with a script. The DEMO is at https://pikoto.app/songs/DEMO.pikoto and every factory sound at https://pikoto.app/songs/sounds.json.

How it works

  1. Unlock PIKOTO. Importing and exporting project files are part of the unlock.
  2. Brief an agent. One that can write and run code does this best. Give it this page's address, the DEMO, and your idea. There's a brief to copy below.
  3. Import the song. Open ≡, tap the project name, then IMPORT and pick the file. It opens as a new project and replaces nothing. On iPhone and iPad, tapping a .pikoto in Files, AirDrop or Mail does the same.
  4. Listen and steer. Press ▶. With CHAIN on, the whole song plays through. The agent can't hear it, so tell it what you hear: the bass disappears on the phone speaker, the hats are too busy in P03, the break needs to drop out harder.
  5. Keep going together. Change things in the app, then EXPORT from the same projects list and give the agent that file, so its next version starts from yours.

The brief

Paste this into your agent and fill in the brackets:

Read https://pikoto.app/songs and follow it.
Start from the DEMO at https://pikoto.app/songs/DEMO.pikoto
and the sounds at https://pikoto.app/songs/sounds.json.

Write a PIKOTO song: [style and mood], [tempo] BPM, about [length],
in [key and scale]. Instruments: [kick, bass, keys, lead...].
Arrangement: [intro, verse, chorus, break, outro...].

Build it with a script, check it against the checklist on the page,
and give me the .pikoto file and a short map of each pattern.

Some ideas to start from:

For agents

PIKOTO is an FM groovebox. It has four tracks, and each plays one four-operator FM sound. A project holds sixteen patterns; each has its own four sounds, tempo, swing and up to 64 steps per track. A chain plays patterns in order, and that is the song.

  1. Read the DEMO. Download DEMO.pikoto and look at how it's built: six patterns, a chain of [0, 1, 1, 2, 3, 4, 4, 5], chords on track 4, and hats, clap, rim and shaker played on the snare track through sound locks.
  2. Write a script, not the JSON. A song is thousands of steps. Write a program in Python or JavaScript that builds the project from functions like drums(pattern, style) and chord(step, notes, length), and writes the file. Changes are then a line, not a rewrite.
  3. Start sounds from the factory. Take sounds from sounds.json (each entry's patch) or the DEMO's patches, and change a few parameters. Sound designed from defaults usually sounds thin.
  4. Check, then hand over. Run the checklist in your script. Name the file after the song, like NIGHT_DRIVE.pikoto.
  5. Explain it. Tell the human what each pattern is and what the chain does, so they can ask for changes by pattern: P05 is the drop.

You can't hear the result. Lean on what's known to work: the DEMO's levels, factory sounds, kick on track 1, three-note chords. Then ask the human what to change.

The file

One JSON object. Everything but patterns can be left out, and anything left out takes its default: missing patterns, tracks and steps are empty, missing parameters take their defaults. Here is the shape, cut short:

{
  "name": "NIGHT DRIVE",
  "version": 1,
  "chain": [0, 1, 1, 2],
  "chainOn": true,
  "activePattern": 0,
  "fx": { "params": { "Delay Time": 8, "Reverb Size": 0.7, "Master Duck": 0.25 } },
  "soundPool": [
    { "name": "HIHAT CL", "chromatic": true, "params": { "Algorithm": 3, ... } }
  ],
  "patterns": [
    {
      "tempo": 118,
      "swing": 0.12,
      "scale": 2,
      "key": 9,
      "patches": [ {KICK 808}, {SNARE}, {FM BASS}, {E PIANO} ],
      "tracks": [
        {
          "length": 64,
          "speed": 1,
          "defaultNote": 60,
          "steps": [
            { "active": true, "notes": [60], "velocity": 0.9, "length": 1 },
            { "active": false },
            { "active": true, "notes": [60], "micro": 0.04, "ratchet": 2,
              "condition": 5, "locks": { "41": 0.62, "64": 0.4 } },
            { "active": true, "sound": 0, "velocity": 0.5 }
          ]
        }
      ]
    }
  ]
}

Project

FieldWhat it is
nameUp to 16 letters, digits and spaces, shown in capitals. Anything else is dropped.
version1. A higher number is refused with UPDATE PIKOTO TO OPEN IT.
patternsUp to 16 patterns. They are named P01 to P16 by position, whatever the file says.
chainUp to 64 pattern indices, 0 to 15, played in order. Each entry plays its pattern once through its longest track. Repeat an index to play a pattern again. After the last entry the chain starts again from the first, until the player stops it.
chainOntrue to play the chain from its first entry when ▶ is pressed.
activePatternThe pattern open on import, 0 to 15.
fx{"params": {...}}: the shared delay, reverb and grain, and the master. See effect parameters.
soundPoolUp to 16 extra sounds that steps can play through a sound lock.

Pattern

FieldWhat it is
tempo40 to 300 BPM. Each pattern plays at its own, but changing BPM in the app sets all sixteen at once, so keep them equal unless the song changes tempo.
swing0 to 1. The DEMO uses 0.12. The arp isn't swung, so keep it small where an arp plays.
scale, keyA scale 0 to 14 and a key 0 to 11 (0 is C). They shape the pads in KEYS mode and note editing in the app. Notes in the file play as written.
patchesFour sounds, one per track. Give a pattern different ones to change instruments between sections.
tracksFour tracks.
punchesOptional. FX pads held on every track, one bitmask per sixteenth of the pattern, up to 256.

Track

FieldWhat it is
stepsUp to 64 steps. Fewer are filled up with empty ones.
length1 to 64 steps. Default 16.
speed0.25, 0.5, 1, 2 or 4. At 1 a step is a sixteenth note, so 64 steps are four bars.
defaultNoteThe MIDI note for steps with no notes of their own. Default 60.
transpose-24 to 24 semitones, for every note the track plays.
mutedtrue or false.
punchesOptional. FX pads held on this track, one bitmask per step, up to 64.

Step

FieldWhat it is
activetrue plays a note.
notesUp to four MIDI notes, 0 to 127. Empty plays the track's defaultNote.
velocity0 to 1. Default 1.
lengthHow long the note is held, in steps, 0.1 to 64. Default 1.
micro-0.5 to 0.5 of a step: negative is early, positive late.
ratchet1 to 8 hits inside the step.
conditionWhen the step plays, a condition 0 to 19. Default 0, ALL: always.
locksParameter locks: {"key": value}, keys from the sound parameters. Values for this step only.
soundA sound lock: an index into soundPool. Leave it out for the track's own sound.
lockTrigWith active false and some locks: a lock trig, which changes the notes already sounding without playing a new one.

Sound

A sound in patches or soundPool is {"name": "WARM PAD", "chromatic": false, "params": {...}}. The params are named as in the sound parameters. chromatic is true for drums: the pads stay a chromatic keyboard for it whatever the scale. Keep names short and in capitals.

What makes a file fail

Each of these is refused with NOT A PIKOTO PROJECT, except the version (UPDATE PIKOTO TO OPEN IT) and the size (FILE TOO BIG).

Everything else opens without a word, so a mistake plays wrong rather than failing:

Tips

What makes a PIKOTO song sound finished, and how to write it in the file.

Arrange with patterns and the chain

Write each section as a pattern: intro, verse, chorus, break, outro. At speed 1 a 64-step track is four bars, and the chain repeats a pattern by naming it twice. Change a pattern's patches to bring in new instruments, as the DEMO does with STRINGS in its fourth pattern. Thin out the drums before a drop, and bring them back all at once.

Lock parameters on steps

Locks are what make a loop move. Open the filter over sixteen steps (41, Cutoff), shorten the decay on off-beat hats (49, Amp Decay), brighten one chord with a modulator's level (18, Op 2 Level), or throw one snare into the delay (64, Delay Send). A lock trig, a step with locks and lockTrig but no note, moves a held pad or bass note without playing it again.

Track parameters (the LFOs, SLOPE, the arp, chord, voice mode, unison and width) hold a lock until the next trig on that track, and a trig without the lock puts them back. For a whole section, set them in the pattern's sound instead.

Micro-timing and velocity

Straight steps sound like a machine, which is sometimes the point. For a groove, play the snare a little late (micro 0.03 to 0.08), push ghost notes and some hats early, and vary hat velocity in a pattern rather than at random. The DEMO plays its claps 0.04 late and pulls a few chords 0.04 early. A ratchet of 2 to 4 rolls a hat or snare into the next bar.

The master compressor evens out velocity, so halving it across a section barely changes its level. For dynamics, change the arrangement or lock Volume (55).

Variation with conditions

One pattern can play differently every time round. Conditions count the loops of the step's own track, from when the pattern starts: 1:2 and 2:2 alternate, 1:4 to 4:4 take turns in four, 1ST plays only on the first loop, and 25% or 50% make ghost notes that come and go.

On a track as long as the pattern's longest, a loop is a pass of the pattern. There 1:2 and 2:2 give the pattern two endings, 1ST is a crash at the start of a section, and a chain that names the pattern twice in a row keeps counting, so 1:2 and 2:2 tell the two passes apart. A shorter track counts its own loops: a 16-step track in a 64-step pattern goes round four times a pass, so its 1:2 and 2:2 alternate every bar, and its 1ST plays only in the first bar. Give a track the pattern's full length when its conditions should follow the song.

FILL steps play only while the player has FILL on, so write some for them to perform.

Chords and the arpeggiator

A step plays up to four notes. Three-note voicings with a long length make pads; the Chord parameter stacks intervals on one note. Sixteen voices are shared by all four tracks, and a four-note chord with a long release holds eight while it overlaps the next one. The Chord parameter takes a voice for each interval it adds, and Voice Mode UNISON two for every note, so four notes with Chord MIN7 already take all sixteen.

For an arpeggio, set Arp Mode in the track's sound (1 to 5) with Arp On Trigs at 1, and give it chord trigs with a long length: the arp plays the chord for as long as the trig lasts. Arp Speed, Range and Gate shape it. Lock Arp Mode to 0 on one trig to play that chord straight.

More sounds than tracks

Put extra sounds in soundPool and set sound on a step to play one there. The DEMO plays hats, clap, rim and shaker on its snare track this way, and a kalimba between the chords on its keys track. A sound-locked step keeps the track's LFOs, SLOPE, arp and voice mode.

Polymeter and speed

Tracks of different lengths drift against each other: a 12-step percussion line over a 16-step beat lines up again every three bars. Speed 2 makes 32nd-note hats, 0.5 a slow bass line with room for long notes.

Modulation

Each track has two LFOs and a SLOPE. Point a destination at a parameter and set a depth: a slow LFO on Cutoff breathes a pad, a fast one on PITCH is vibrato. SLOPE in ENV mode is a shaped rise and fall on each note, and SYNC ties it to the tempo.

Effects

Delay, reverb and grain are shared; each sound sends to them. Keep kick and bass dry, give keys and leads some reverb, and lock sends on single steps for throws. Delay Time is in note divisions, so echoes stay in time. Master Duck pumps the mix under track 1, so put the kick there. Grain turns whatever is sent to it into a cloud, good on pads and in breaks.

FX pads

The sixteen FX pads can be written into a pattern as if a player held them. A track's punches holds one bitmask per step of that track; a pattern's holds one per sixteenth for every track at once. A pad is held while the clock is on a step with its bit, so set the bit on each step it should last.

REPEAT 1 or 2 on the last beat before a drop, ROLL on a snare build, REVERSE for half a bar, FILTER LOW on an intro, DELAY or REVERB on a last chord, CUT for a gap, and BRAKE on the last bar of the song.

Mix for phone speakers

KICK 808 and FM BASS play two octaves down, so note 60 sounds as C2, and KALIMBA one octave up. Bass notes under about 55 disappear on phone speakers. An intro, break or outro should sit a little under the main sections. Leave Master Volume near the DEMO's 0.8.

Checklist

For agents, before handing a file over. Check it in your script:

  1. It parses as JSON, has "version": 1 and a patterns list of at most 16.
  2. Whole numbers and booleans are written as such, with no fractions or 0 and 1 for true and false.
  3. Every lock key is in the table, and every value is in the file's range: 0 to 1 for cutoff and times, not hertz or milliseconds.
  4. Steps have at most four notes, 0 to 127. Every sound is less than the length of soundPool.
  5. Track lengths are what you meant, and the chain plays every section, with chainOn true.
  6. Every pattern has the same tempo, unless the song changes it on purpose.
  7. No moment needs more than 16 voices: count the notes sounding at once, releases included, with each note's Chord intervals and twice for UNISON.
  8. The kick is on track 1, and every pattern in the chain has its four patches.

Reference

Conditions

The values of a step's condition. A:B plays on loop A of every B, counting the loops of the step's own track (see variation with conditions).

0 ALL (always) ·1 FILL · 2 !FILL (not with FILL) · 3 1ST (first loop only) · 4 !1ST (never the first) · 5 1:2 · 6 2:2 · 7 1:3 · 8 2:3 · 9 3:3 · 10 1:4 · 11 2:4 · 12 3:4 · 13 4:4 · 14 1:8 · 15 10% · 16 25% · 17 50% · 18 75% · 19 90%

Scales

The values of a pattern's scale. Keys are 0 C, 1 C#, 2 D, and so on to 11 B.

0 chromatic · 1 major · 2 minor · 3 dorian · 4 phrygian · 5 lydian · 6 mixolydian · 7 locrian · 8 harmonic minor · 9 major pentatonic · 10 minor pentatonic · 11 blues · 12 whole tone · 13 hirajoshi · 14 in sen

FX pad bits

Add the values of the pads to hold together: 4096 + 16 is DELAY with HALF SPEED. The first eight bend timing, the last eight the sound.

1 REPEAT 1 STEP · 2 REPEAT 2 STEPS · 4 REPEAT 4 STEPS · 8 ROLL 1/32 · 16 HALF SPEED · 32 DOUBLE SPEED · 64 REVERSE · 128 RANDOM STEPS · 256 FILTER LOW · 512 FILTER HIGH · 1024 OCTAVE DOWN · 2048 OCTAVE UP · 4096 DELAY SEND · 8192 REVERB SEND · 16384 CUT · 32768 BRAKE

Chord parameter

The intervals the Chord parameter adds to each note, in semitones.

0 OFF · 1 OCT +12 · 2 5TH +7 · 3 OCT5 +7 +12 · 4 MIN +3 +7 · 5 MAJ +4 +7 · 6 SUS4 +5 +7 · 7 MIN7 +3 +7 +10 · 8 MAJ7 +4 +7 +11 · 9 STACK +12 +19 +24

Sound parameters

A sound's params and a step's locks. Locks use the key, sounds the name. Values are what the file holds, not what the screen shows. Track marks the parameters a track reads once rather than per note: a lock on one holds until the next trig on that track.

KeyNamePageValuesDefaultTrack
0AlgorithmALGO ALGO0 CHAIN · 1 TWIN · 2 SPLIT · 3 TRIPLE · 4 PAIRS · 5 FAN · 6 SOLO · 7 ADD0 (CHAIN)
1FeedbackALGO FDBK0 … 10
2Ratio ModeALGO HARM0 FREE · 1 HARM · 2 ODD · 3 OCT0 (FREE)
3Detune SpreadALGO DTUN-1 … 10
4Pitch Env AmountALGO PENV-48 … 48 semitones0
5Pitch Env DecayALGO PDEC0 … 1, on the time curve0.2 (6 ms)
6ChordALGO CHRD0 OFF · 1 OCT · 2 5TH · 3 OCT5 · 4 MIN · 5 MAJ · 6 SUS4 · 7 MIN7 · 8 MAJ7 · 9 STACK0 (OFF)yes
7Transient ClickALGO CLIK0 … 10
8Op 1 RatioOP1 RAT0 … 37, a ratio3 (×1)
9Op 1 FineOP1 FINE-100 … 100 cents0
10Op 1 LevelOP1 LEV0 … 11
11Op 1 WaveOP1 WAVE0 SINE · 1 TRI · 2 SAW · 3 SQR · 4 HALF · 5 FOLD0 (SINE)
12Op 1 AttackOP1 ATK0 … 1, on the time curve0 (1 ms)
13Op 1 DecayOP1 DEC0 … 1, on the time curve0.5 (100 ms)
14Op 1 SustainOP1 SUS0 … 11
15Op 1 ReleaseOP1 REL0 … 1, on the time curve0.3 (16 ms)
16Op 2 RatioOP2 RAT0 … 37, a ratio3 (×1)
17Op 2 FineOP2 FINE-100 … 100 cents0
18Op 2 LevelOP2 LEV0 … 10.5
19Op 2 WaveOP2 WAVE0 SINE · 1 TRI · 2 SAW · 3 SQR · 4 HALF · 5 FOLD0 (SINE)
20Op 2 AttackOP2 ATK0 … 1, on the time curve0 (1 ms)
21Op 2 DecayOP2 DEC0 … 1, on the time curve0.5 (100 ms)
22Op 2 SustainOP2 SUS0 … 11
23Op 2 ReleaseOP2 REL0 … 1, on the time curve0.3 (16 ms)
24Op 3 RatioOP3 RAT0 … 37, a ratio3 (×1)
25Op 3 FineOP3 FINE-100 … 100 cents0
26Op 3 LevelOP3 LEV0 … 10.5
27Op 3 WaveOP3 WAVE0 SINE · 1 TRI · 2 SAW · 3 SQR · 4 HALF · 5 FOLD0 (SINE)
28Op 3 AttackOP3 ATK0 … 1, on the time curve0 (1 ms)
29Op 3 DecayOP3 DEC0 … 1, on the time curve0.5 (100 ms)
30Op 3 SustainOP3 SUS0 … 11
31Op 3 ReleaseOP3 REL0 … 1, on the time curve0.3 (16 ms)
32Op 4 RatioOP4 RAT0 … 37, a ratio3 (×1)
33Op 4 FineOP4 FINE-100 … 100 cents0
34Op 4 LevelOP4 LEV0 … 10.5
35Op 4 WaveOP4 WAVE0 SINE · 1 TRI · 2 SAW · 3 SQR · 4 HALF · 5 FOLD0 (SINE)
36Op 4 AttackOP4 ATK0 … 1, on the time curve0 (1 ms)
37Op 4 DecayOP4 DEC0 … 1, on the time curve0.5 (100 ms)
38Op 4 SustainOP4 SUS0 … 11
39Op 4 ReleaseOP4 REL0 … 1, on the time curve0.3 (16 ms)
40Filter TypeFLTR TYPE0 LP2 · 1 LP4 · 2 BP · 3 HP · 4 NOTCH · 5 OFF0 (LP2)
41CutoffFLTR FREQ0 … 1, on the frequency curve1 (20.0 kHz)
42ResonanceFLTR RESO0 … 10.1
43Filter Env AmountFLTR ENV-1 … 10
44Filter AttackFLTR ATK0 … 1, on the time curve0 (1 ms)
45Filter DecayFLTR DEC0 … 1, on the time curve0.4 (40 ms)
46Filter SustainFLTR SUS0 … 10
47Filter ReleaseFLTR REL0 … 1, on the time curve0.3 (16 ms)
48Amp AttackAMP ATK0 … 1, on the time curve0.01 (1 ms)
49Amp DecayAMP DEC0 … 1, on the time curve0.5 (100 ms)
50Amp SustainAMP SUS0 … 10.8
51Amp ReleaseAMP REL0 … 1, on the time curve0.3 (16 ms)
52Velocity AmountAMP VEL0 … 10.5
53PanAMP PAN-1 … 10
54DriveAMP DRIV0 … 10
55VolumeAMP VOL0 … 10.8
56LFO 1 RateLFO RATE0 … 1, on the rate curve0.3 (0.37 Hz)yes
57LFO 1 DepthLFO DEP-1 … 10yes
58LFO 1 DestLFO DEST0 … 65, a destination0yes
59LFO 1 WaveLFO WAVE0 TRI · 1 SINE · 2 SAW · 3 SQR · 4 S&H · 5 RAMP0 (TRI)yes
60LFO 2 RateLFO RATE0 … 1, on the rate curve0.5 (1.41 Hz)yes
61LFO 2 DepthLFO DEP-1 … 10yes
62LFO 2 DestLFO DEST0 … 65, a destination0yes
63LFO 2 WaveLFO WAVE0 TRI · 1 SINE · 2 SAW · 3 SQR · 4 S&H · 5 RAMP1 (SINE)yes
64Delay SendFX DLY0 … 10
65Reverb SendFX REV0 … 10.1
66Grain SendFX GRN0 … 10
67Voice ModeFX MODE0 POLY · 1 MONO · 2 LEGATO · 3 UNISON0 (POLY)yes
68GlideFX GLID0 … 1, on the time curve0 (1 ms)
69OctaveFX OCT-3 … 30
70Unison DetuneFX UDET0 … 10.2yes
71Stereo WidthFX WIDE0 … 10.5yes
72Slope RateSLOPE RATE0 … 1, on the rate curve0.3 (0.37 Hz)yes
73Slope ShapeSLOPE SHAP0 … 10.25yes
74Slope SkewSLOPE SLOP0 … 10.5yes
75Slope SmoothSLOPE SMTH0 … 10.5yes
76Slope ModeSLOPE MODE0 LOOP · 1 ENV · 2 TRIG · 3 HOLD0 (LOOP)yes
77Slope SyncSLOPE SYNC0 FREE · 1 SYNC0 (FREE)yes
78Slope DepthSLOPE DEP-1 … 10yes
79Slope DestSLOPE DEST0 … 65, a destination0yes
80Arp ModeARP MODE0 OFF · 1 UP · 2 DOWN · 3 UPDN · 4 RAND · 5 PLAY0 (OFF)yes
81Arp SpeedARP SPD0 1/32 · 1 1/16T · 2 1/16 · 3 1/8T · 4 1/8 · 5 1/42 (1/16)yes
82Arp RangeARP OCT1 … 41yes
83Arp GateARP GATE0.05 … 10.5yes
84Arp LatchARP HOLD0 OFF · 1 LATCH · 2 ADD0 (OFF)yes
85Arp On TrigsARP SEQ0 OFF · 1 ON1 (ON)yes
86Arp RepeatARP RPT1 … 41yes
87Arp Vel DecayARP VDEC0 … 10yes

Effect parameters

The project's fx.params: the delay, reverb and grain every track sends to, and the master. They can't be locked.

NamePageValuesDefault
Delay TimeDELAY TIME0 1/64 · 1 1/32 · 2 1/16T · 3 1/16 · 4 1/8T · 5 1/16. · 6 1/8 · 7 1/4T · 8 1/8. · 9 1/4 · 10 1/2T · 11 1/4. · 12 1/2 · 13 1/18 (1/8.)
Delay FeedbackDELAY FDBK0 … 10.45
Ping PongDELAY PING0 OFF · 1 ON1 (ON)
Delay Low CutDELAY LOW0 … 1, on the frequency curve0.2 (80 Hz)
Delay High CutDELAY HIGH0 … 1, on the frequency curve0.7 (2.5 kHz)
Delay ModulationDELAY MOD0 … 10.1
Delay WidthDELAY WIDE0 … 10.8
Delay LevelDELAY LEV0 … 10.7
Reverb Pre-delayREVERB PRE0 … 1, on the time curve0.1 (3 ms)
Reverb SizeREVERB SIZE0 … 10.6
Reverb DecayREVERB DEC0 … 10.6
Reverb DampingREVERB DAMP0 … 10.4
Reverb ShimmerREVERB SHIM0 … 10
Reverb ModulationREVERB MOD0 … 10.3
Reverb Low CutREVERB LOW0 … 1, on the frequency curve0.2 (80 Hz)
Reverb LevelREVERB LEV0 … 10.7
Grain SizeGRAIN SIZE0 … 10.3
Grain DensityGRAIN DENS0 … 10.4
Grain PitchGRAIN PTCH-24 … 24 semitones0
Grain SpreadGRAIN SPRD0 … 10.5
Grain RandomGRAIN RAND0 … 10.2
Grain ShapeGRAIN SHAP0 … 10.25
Grain FeedbackGRAIN FDBK0 … 10.2
Grain LevelGRAIN LEV0 … 10.7
Master VolumeMASTER VOL0 … 10.8
Master DriveMASTER DRIV0 … 10
CompressorMASTER COMP0 … 10.3
Master Low CutMASTER LOW0 … 1, on the frequency curve0 (20 Hz)
Master High CutMASTER HIGH0 … 1, on the frequency curve1 (20.0 kHz)
Master WidthMASTER WIDE0 … 10.5
Master CrushMASTER CRSH0 … 1, 16 bit down to 20 (16 bit)
Master DuckMASTER DUCK0 … 10

Modulation destinations

The values of LFO 1 Dest, LFO 2 Dest and Slope Dest. A depth of 1 or -1 sweeps the destination across its whole range, and PITCH by 12 semitones.

0 OFF · 1 PITCH · 2 ALGO ALGO · 3 ALGO FDBK · 4 ALGO HARM · 5 ALGO DTUN · 6 ALGO PENV · 7 ALGO PDEC · 8 ALGO CHRD · 9 ALGO CLIK · 10 OP1 RAT · 11 OP1 FINE · 12 OP1 LEV · 13 OP1 WAVE · 14 OP1 ATK · 15 OP1 DEC · 16 OP1 SUS · 17 OP1 REL · 18 OP2 RAT · 19 OP2 FINE · 20 OP2 LEV · 21 OP2 WAVE · 22 OP2 ATK · 23 OP2 DEC · 24 OP2 SUS · 25 OP2 REL · 26 OP3 RAT · 27 OP3 FINE · 28 OP3 LEV · 29 OP3 WAVE · 30 OP3 ATK · 31 OP3 DEC · 32 OP3 SUS · 33 OP3 REL · 34 OP4 RAT · 35 OP4 FINE · 36 OP4 LEV · 37 OP4 WAVE · 38 OP4 ATK · 39 OP4 DEC · 40 OP4 SUS · 41 OP4 REL · 42 FLTR TYPE · 43 FLTR FREQ · 44 FLTR RESO · 45 FLTR ENV · 46 FLTR ATK · 47 FLTR DEC · 48 FLTR SUS · 49 FLTR REL · 50 AMP ATK · 51 AMP DEC · 52 AMP SUS · 53 AMP REL · 54 AMP VEL · 55 AMP PAN · 56 AMP DRIV · 57 AMP VOL · 58 FX DLY · 59 FX REV · 60 FX GRN · 61 FX MODE · 62 FX GLID · 63 FX OCT · 64 FX UDET · 65 FX WIDE

Operator ratios

An operator's Ratio is an index into this list: 3 is ×1, the note itself.

0 ×0.25 · 1 ×0.5 · 2 ×0.75 · 3 ×1 · 4 ×1.5 · 5 ×2 · 6 ×2.5 · 7 ×3 · 8 ×3.5 · 9 ×4 · 10 ×4.5 · 11 ×5 · 12 ×5.5 · 13 ×6 · 14 ×6.5 · 15 ×7 · 16 ×7.5 · 17 ×8 · 18 ×8.5 · 19 ×9 · 20 ×9.5 · 21 ×10 · 22 ×10.5 · 23 ×11 · 24 ×11.5 · 25 ×12 · 26 ×12.5 · 27 ×13 · 28 ×13.5 · 29 ×14 · 30 ×14.5 · 31 ×15 · 32 ×15.5 · 33 ×16 · 34 ×18 · 35 ×20 · 36 ×24 · 37 ×32

Curves

Times, frequencies and rates are stored as 0 … 1 and mapped like this:

CurveFrom v00.250.50.751
Time1 ms × 10000v1 ms10 ms100 ms1.00 s10.00 s
Frequency20 Hz × 1000v20 Hz112 Hz632 Hz3.6 kHz20.0 kHz
Rate0.05 Hz × 800v0.05 Hz0.27 Hz1.41 Hz7.52 Hz40.00 Hz

To go the other way: v = log10(seconds / 0.001) / 4 for a time, and v = log10(hertz / 20) / 3 for a frequency.