The big shift: from fixed wiring to a patch bay
On the stock PRO-800, modulation travels along paths printed on the panel: the LFO goes to pitch, pulse width or filter; poly-mod sends oscillator B and the filter envelope to oscillator A or the filter. Those are wonderful paths, and they're all still here. But they're fixed.
This firmware adds a mod matrix: any of 27 sources can be routed, with its own depth, to any of 46 destinations, 16 routes per layer, and two macros gather several sources into one hand. And because the voltages for pitch, filter and volume are worked out separately for each voice, most routes act per note: each note gets its own velocity, its own envelopes, its own random value, its own pressure, even its own LFO.
| Stock firmware | This firmware | |
|---|---|---|
| Sounds at once | One | Two layers: split, stacked, or by MIDI channel |
| LFOs | One | Two per layer, nine shapes, a delay and fade-in per note, locked to the clock in 15 divisions, optionally one per voice |
| Envelopes per voice | Two (filter, amp) | Four: ADSR or DAHDSR, from key down or key up, in seconds or note values, three curves, and any of them can loop, freely or in time, endlessly or a count of cycles |
| Modulation | The panel's fixed paths | The same paths, plus 16 routes per layer from 27 sources to 46 destinations, and two macros |
| Per-note expression | Velocity, aftertouch | Poly aftertouch per voice; MPE with per-note bend, pressure and slide; eight mono channels, each with its own bend and pressure |
| Sequencing | An arpeggiator and two sequences | A sequence inside every patch, played and transposed from the keys, with probability, ratchets, an arpeggiator and 4 automation lanes; steps can be recorded from the panel |
| Clock | Internal, MIDI or the SYNC IN jack, for the arpeggiator and sequencer | MIDI clock (USB or 5-pin), an internal clock with tap tempo, or the SYNC IN jack, driving the LFOs, looping envelopes and the sequence alike |
| Tuning (measured on one synth) | 2–8 cents off | within 0.7 cents, C1 to C8 |
| Patches | 400 | 128, each with its own sequence, and a 64-sound bank to start from |
| Trade-offs | No MIDI OUT or THRU yet, and SysEx (the editor, updates) over USB only; the sequencer, scales and morph are edited on the web page |
The stock column lists what's on the stock panel (firmware 1.4.6); its settings menu holds further options not compared here.
Two sounds at once
Every per-voice control now exists twice, as layer 1 and layer 2. Seq 1 and Seq 2 pick which one the knobs edit; a knob then waits until you turn it to the stored value before taking over, so nothing jumps. Each layer has its own oscillator tuning, filter, all four envelopes, glide, two LFOs, poly-mod envelope amount and 16 mod routes. Choose how notes reach them in Settings → 3 LAYr:
Some things stay shared, because the hardware has one wire for them: the waveform buttons, the mixer, resonance, pulse widths, poly-mod oscillator B and master volume. The art of layering here is to make the two layers different through what is per layer: tuning (an octave or a fifth apart), filter and envelopes, glide, LFOs and routes.
LFOs that keep time, and think per voice
Each layer has two LFOs (Arp Up-Dn picks which one the LFO knobs and buttons edit), so four in all. Each has nine shapes, and three settings that change what kind of movement you get:
- Sync (Settings → 1): free-running from 0.05 to 51 Hz, or locked to the clock: MIDI clock from USB or the 5-pin socket, the firmware's own clock (tap the tempo on Sync Clock), or the SYNC IN jack. Locked, LFO FREQ picks one of 15 divisions from 8bAr down to 1-32, including dotted and triplet values. MIDI Start, or holding Sync Clock, lines it up with the bar.
- Retrigger (Settings → 2): when the LFO's cycle restarts. The most interesting one is PoLY: every voice runs its own LFO, started by its own note.
- Delay and fade-in (Shift + LFO FREQ, Shift + LFO AMOUNT): the LFO waits after a note starts and then fades in, per voice, from 20 ms to about 5 s. Vibrato that arrives late, with no route needed.
Pick a shape and a retrigger mode below. Three notes start at different moments (▼) and are held, then released; a new note follows.
Three of the shapes are new kinds of movement rather than new waveforms. drFt glides smoothly from one random value to the next: slow, it's the wandering of old hardware; fast, it's a liquid, unpredictable wobble. nOIS picks a new random value sixteen times per cycle and glides to it: a rough wander at low rates, a fizzing jitter at the top, up to about 800 values a second. StEP plays a pattern of 1 to 16 on/off steps per cycle, which is the next section.
Rhythm from an LFO: step patterns
The StEP shape turns an LFO into a little rhythm programmer: up to 16 steps per cycle, each on or off, with an 8 ms slope at every change so nothing clicks. Route it to the VCA at full depth and you have a trance gate; to the filter, a rhythmic wah; to pitch, octave jumps. Each LFO of each layer has its own pattern, saved with the patch.
Click the steps to change the pattern, then press Listen. (A browser approximation of a gated chord at 124 BPM, one cycle per bar, so each step is a 16th note.)
1 0 1 0 1 1 0 0, twice). Bottom: the held chord's volume through the VCA. On the synth the pattern is edited on the web page's Sound tab, or with pro800 set steps.Four envelopes, and envelopes that loop
Every voice now has four ADSRs. Filter and amp work as always. Env 3 and Env 4 do nothing until a mod route uses them, and then they can shape anything per note: the depth of a vibrato, a pitch scoop, the poly-mod amount, an LFO's speed. Hold Shift (the Sync Source button) and the filter ADSR knobs edit Env 3, the amp ADSR knobs Env 4.
Better still, any envelope can cycle while the key is held: on Settings → 6, the envelope page, turn VALUE to CYCL or a clock division. The cycle is attack, hold at the top, fall, rest, and again: an LFO that belongs to one note and restarts with it. Free cycling uses the knob times. Synced cycling takes a clock division instead, and the four knobs become weights that share the cycle out, so it can never drift off the beat.
Envelopes that start when you let go
Settings → 6 shows one envelope at a time (En.A, En.F, En.3, En.4; press 6 again for the next) and VALUE picks its mode. Besides the classic ADSR, each envelope can be a DAHDSR, with a delay before the attack and a hold at the top. Arp Up-Dn steps on to the envelope's trigger (tr.A…): dn, from the key going down, or UP, from key up: it rests at zero while you hold the key and plays its whole shape when you release it, in any mode, cycling included. Then its timing (tI.A…): SEC, or SYnC, where the time knobs step through note values (0, 1/32 … 8 bars) at the tempo, so a decay can be exactly an eighth note and stay one when the tempo changes. Then its curve (CU.A…): the analog one, straight lines, or a swell that starts slowly and accelerates. Last, the cycles (Cn.A…) of a cycling envelope: LOOP, or a count of 1 to 99, after which it rests. All of it is per layer and saved in the patch.
What they're for:
- A key-up amp envelope is a note that sounds only after the key: a release "thump", or on a second layer, a note that answers the one you played.
- A key-up Env 3 → CUTOFF opens the filter as a note ends, so the tail blooms instead of fading.
- A key-up cycling amp envelope with a count plays a burst of repeats after each note: synced at 1-16 with 4 cycles, four sixteenths that follow the key's release, like a tempo echo that belongs to each voice.
- A DAHDSR with a long delay on Env 4 → pitch is a pitch blip that arrives late in a held note.
- The swell curve on a pad's amp attack rises like a bowed string; the linear curve gives even, synthetic fades.
Things to try with cycling:
- A synced amp envelope at 1-16: every held chord pulses in sixteenths, with shaped edges and on the beat.
- A cycling Env 3 routed to CUTOFF: each note gets its own filter "wah" that restarts with the note.
- A cycling Env 4 routed to pitch A with a long rest: a recurring blip, like a bird call inside a pad.
- A count of 2 or 3 on a cycling filter envelope: each note gets a short ratchet of filter hits, then settles closed.
- Env 3 with a slow attack routed to LFO AMOUNT: vibrato that fades in on long notes only (or use the LFO's own delay and fade, Shift + the LFO knobs).
The patch bay: the mod matrix
Each layer has 16 routes. Each route is a source, a destination and a depth from −99 to +99. You build them from the panel with MOD ASSIGN:
- Press Arp Assign. Its LED blinks and the display shows SrC. The knobs stay in pickup while you assign, so touching one won't change the sound.
- Pick the source. A number key (1 LFO, again for the other LFO; 2 filter env; 3 amp env; 4 velocity; 5 mod wheel; 6 aftertouch; 7 Env 3; 8 Env 4; 9 random; 0 note), or touch a knob that stands for one (an LFO knob, an ADSR knob), or turn VALUE to scroll through all 27.
- Pick the destination. Turn its knob a little, or press its LFO routing button; the knob you touched last before pressing Arp Assign is already offered. AMP SUS means the VCA, the other ADSR knobs mean that envelope's stage, and VALUE scrolls through the rest.
- Turn VALUE for the depth, then press Arp Assign to finish. Depth 0 removes the route. Hold Arp Assign for half a second to browse the layer's routes one by one.
Pick an idea below to see its routes in the patch bay:
Depths are tuned so the whole range is useful. Pitch routes follow a squared curve: depth 5 is 6 cents, 10 is a quarter of a semitone, 20 a semitone, 50 six semitones, 99 two octaves. Cutoff at 99 is eight octaves. An envelope stage or the glide time scales by up to 16× either way. The VCA destination is a gain on the amp envelope, so it can never open a voice that isn't playing: velocity → VCA at 99 is plain velocity sensitivity, and aftertouch → VCA at 99 keeps a note silent until you press.
Modulating the modulation
Some destinations aren't sounds at all: they're the other modulators. LFO rates and amounts, the LFO routing depths, the filter and poly-mod envelope amounts, every envelope stage and the glide time can all be routed to. That's where sounds start to feel alive, because the movement itself changes over time or from note to note.
Vibrato that arrives late
Env 3 with a slow attack opens the vibrato depth on held notes only. Short notes stay clean.
Faster vibrato for harder notes
With PoLY retrigger the rate is per voice, so each note's vibrato speed follows how hard you played it.
Brighter attacks when you dig in
The filter envelope sweeps further on loud notes, the way acoustic instruments get brighter as they get louder.
Different pitch blips up the keyboard
Low notes get a bigger pitch sweep from the poly-mod envelope than high notes, or the reverse with a negative depth.
A pad when stroked, a stab when hit
Envelope stages are destinations: velocity → amp attack at −60 shrinks a 1.5 s swell to about 200 ms on hard notes. Decay, release and glide work the same way, per voice.
Shorter notes up the keyboard
Like a marimba, whose high bars ring shorter: note number → amp decay at −40, and velocity → decay the other way so hard hits ring on.
Macros: one gesture, many knobs
A macro is a source and a destination at once. Route whatever you like into Macro 1 (the wheel, pressure, a CC, an LFO) and the sum, −1 to 1, becomes the macro's value; then route Macro 1 out to as many destinations as you want, each with its own depth and sign. The M TUNE knob is Macro 1's own hand knob (master tune is gone; autotune keeps the voices in tune), and Shift + CUTOFF sets a resting offset, so a macro can be a performance knob, a pedal and a modulator all at once. Macro 2 works the same, with its offset on Shift + RESONANCE.
Expression per note
Velocity, aftertouch, a random value and the note's position are all per voice sources. That's what lets a single route make every note of a chord different.
Poly aftertouch is the standout. A controller that sends per-note pressure (the Ableton Move's pads do) moves only the voice playing that note. Route aftertouch to cutoff and one finger can lean into a single note of a chord and open just that note's filter. Channel pressure still works too and moves all voices; each voice uses whichever is larger.
Two layer modes go further. MPE gives every note its own MIDI channel, so each has its own pitch bend (48 semitones), its own pressure and its own slide (CC 74, the tInb source) from an MPE controller. 8CH gives eight mono lines, one per channel, each with its own bend and pressure, for a sequencer that drives them.
Random, new every note
rAndA value from −1 to +1, rolled when the note starts. Small amounts to cutoff and pitch B give the slight unevenness of a real player. Large amounts make every note a surprise.
Note position
notEThe key, centred on middle C. Beyond keyboard tracking: route it to LFO rate (higher notes, faster vibrato), to the poly-mod amount, to envelope amounts, or negative to tame the top.
Gate
GAtE1 while the key is down, 0 in the release. Gate → cutoff makes the tail go dark the moment you let go; gate → LFO amount stops vibrato in the release.
Voice number
VoICWhere the voice sits in its layer, 0 to 1. Into pitch B it spreads a chord's voices a few cents apart; into cutoff, each a different brightness. In 8CH mode it tells the channels apart.
Drift and life
Autotune puts every oscillator within a cent, which is great for chords that stay in tune all evening, but perfect can sound static. Drift (Settings → 0, 0–99) puts the life back on purpose: each voice's pitch (up to 15 cents) and cutoff (up to a semitone) wander slowly and independently, picking a new target every second or so and gliding towards it.
Related controls: unison detune (Settings → 8, or Shift + M TUNE) sets how far apart the outermost unison voices are, 0–50 cents; Shift + GLIDE nudges the drift. An LFO on drFt or nOIS with PoLY retrigger, routed to pitch at a small amount, gives a faster, more obvious per-voice wander than the Drift setting. Voice modes per layer (poly, mono, legato, with last, low or high note priority) shape how lines connect.
Melodies from noise: scale quantize
Set a scale and root on the web page, and each voice's pitch snaps to the nearest note of that scale: the note itself plus the pitch modulation both oscillators get (LFO → Freq, LFO 2 → pitch, routes to pitch A + B). Suddenly random sources play tunes: a sample-and-hold LFO on pitch becomes a melody in key, and a sequence's transpositions can't go wrong. Twelve scales are built in, from major and minor through the modes to pentatonics, blues and whole tone.
A sequence inside every patch
The stock sequencers are replaced by something different: each of the 128 patches carries its own step sequence, played from the keyboard. Press a key and the sequence starts, transposed so that a step of 0 plays that key. Press another key while holding and it transposes from the next step without restarting. Let go and it stops. The notes go through the normal voices, envelopes and modulation, so the sequence is part of the sound, not a separate machine.
- Probability from 100 % down to 12.5 %: some steps sometimes don't play, so a loop never quite repeats.
- Ratchets: a step plays as 2, 3 or 4 quick notes.
- Arpeggio mode: instead of transposing, the steps walk the held notes (up, down, up-down, random or as played), and each step's offset shifts the note it plays (+12 for an octave jump).
- Automation lanes: up to four rows of values, optionally gliding between steps, routed like any mod source. Lane → cutoff gives a different brightness per step; lane → Morph gives a different sound per step.
- Recording on the panel: hold Rec and press Seq 1 (rSEq), then play the steps one by one, Seq 2 for a rest, and Rec to finish. The sequence is on, and Rec saves it with the patch.
- A pad with an arpeggio on top: in stack mode, a sequence on layer 2's keys plays layer 2 while layer 1 plays the keys as a pad. Put layer 2 in mono and the pad gets seven voices, the arp one.
- Timing: a clock division at the MIDI clock's tempo or the sequence's own BPM, with swing. Euclid fills, step recording and a layer filter (a sequenced bass in one half of a split, played normally in the other) are on the web page.
Morph: between two patches
Pick another patch as the morph target (web page, Voice section) and route any source to the Morph destination. That source now fades every knob of this patch towards the target's values: cutoff, envelopes, tuning, LFO rates, all at once. Buttons, routes and settings stay this patch's own.
Recipes
Sixty-four ready-made sounds cover all of this: the bank in presets/ (installed with presets/install.sh) fills P1–P64 with eight each of basses, leads, polys, pads, plucks, sequences, effects and curiosities, and its DESIGN.md explains the techniques. The recipes below are the same ideas by hand. Start from Perf (a plain sawtooth, filter open) unless it says otherwise. Display codes are what you'll see on the synth.
Shimmering ensemble pad
- Saw on A and B, FINE a few cents up; slow amp attack, long release.
- Arp Up-Dn to LFO 2; LFO Shape to drFt; LFO FREQ around 0.3 Hz.
- Settings 2 → PoLY. Press LFO → Freq (shows Fr.on), AMOUNT low.
- Settings 0 drift → 30.
Each note of a chord wanders on its own: wide, alive, never static.
Delayed vibrato
- LFO 1 → Freq on, LFO AMOUNT at 0, LFO FREQ about 5.5 Hz, retrigger EACH.
- Hold Shift (Sync Source): the filter ADSR knobs now edit Env 3. Attack about 1 s, sustain full.
- Arp Assign, 7, touch LFO AMOUNT, VALUE 5–10.
Short notes stay clean; held notes bloom into vibrato. The short way: Shift + LFO FREQ sets LFO 1's delay, Shift + LFO AMOUNT its fade-in.
Trance gate chords
- Send MIDI clock, or tap Sync Clock for the internal one. LFO 2: StEP, Sync CLoC, FREQ 1bAr, retrigger EACH.
- Draw a pattern on the web page, or keep the default.
- "Route to VCA" on the web page, or Arp Assign, 1 (the selected LFO 2), touch AMP SUS, VALUE 99.
Held chords chop in sixteenths, locked to the track.
Sample & hold filter
- Resonance up, cutoff mid, a bright saw.
- LFO 2: S-H, CLoC at 1-16.
- LFO 2 → Filter on (FL.on), AMOUNT to taste.
The bubbling computer-music filter, on the beat.
A melody from one held key
- LFO 2: S-H, CLoC at 1-8, retrigger 1St; LFO 2 → Freq, AMOUNT high.
- Settings 6 shows En.A: VALUE to 1-8, synced cycling. Short attack, short hold, medium fall.
- Web page: Scale minor pentatonic, root to taste.
Hold a note: a plucked line in key, a new pitch on every eighth.
Wobble that changes speed
- LFO 1 → Filter, synced at 1-8; resonance up.
- LFO 2: triangle, free, about 0.25 Hz.
- Arp Assign, 1 1 (LFO 2), with LFO 1 selected touch LFO FREQ (L.rt), VALUE 50.
The wobble accelerates to 1/32 and slows to 1/2, then lands back on the beat.
Bowed pressure pad
- A soft pad with a medium release.
- Arp Assign, 6, touch AMP SUS, VALUE 99.
- Still assigning: touch CUTOFF, VALUE 30.
Silent until you press. On the Move's pads every note swells and brightens on its own.
Sequenced bass, live lead
- Settings 3 → SPLt; 4, then play C3.
- Seq 1: a short, plucky bass. On the web page, a sequence for layer 1's keys only.
- Seq 2: a lead with GLIDE. Arp Assign, 8, touch FREQ A, VALUE −20; with Shift held, the amp ADSR knobs set Env 4: fast decay, no sustain.
Left hand starts and transposes the bass line; right hand plays a lead that scoops up a semitone into each note.
Pulsing chords
- Settings 6 → En.A, VALUE to 1-16.
- ATT low, SUS a little (hold), DEC most of it, REL 0.
- Optional: the filter envelope the same, at 1-8.
Every held chord pulses with shaped edges, on the beat however long you hold.
Two sounds on the mod wheel
- Save a bright, slow version of your sound to another slot.
- Web page, Voice: morph to that slot, by the mod wheel.
The wheel crossfades every knob: a pluck becomes a pad, a bass becomes a lead, mid-phrase.
Humanised section
- Saw pad, a little unison detune or drift 20.
- Arp Assign, 9: touch CUTOFF, VALUE 8; touch FINE, VALUE 5.
- 4 (velocity): touch AMP SUS, VALUE 60.
Every note a slightly different brightness and tuning, like a section rather than a machine.
Per-note wah
- Resonant filter, cutoff low.
- Settings 6, press 6 until En.3, VALUE to CYCL; with Shift held, set Env 3's times to a few hundred ms.
- Arp Assign, 7, touch CUTOFF, VALUE 40.
Each note gets its own wah cycle, out of step with the others, so chords ripple.
Release thump
- Settings 6 → En.A, Arp Up-Dn → tr.A, VALUE to UP.
- Amp envelope: attack short, decay 300 ms, sustain 0.
- Optional: in stack mode, give layer 2 this envelope and layer 1 a normal one.
Silent while you hold the key, a note when you let go: the second layer answers the first.
Touch swell
- A saw pad, amp attack about 1.5 s.
- Arp Assign, 4 (velocity), touch AMP ATT, VALUE −60.
- Still assigning: 4, touch CUTOFF, VALUE 30.
Stroke the keys for a pad, hit them for a stab. The same patch.
Press to scream
- Arp Assign, 6 (aftertouch), touch M TUNE (nAC1), VALUE 60; then 5 (wheel), M TUNE, VALUE 99.
- Turn VALUE through the sources to nAC1; touch CUTOFF, VALUE 40; again to nAC1, touch RESONANCE, VALUE 20; and LFO AMOUNT, VALUE 30.
One gesture opens the filter, adds bite and brings in vibrato. The M TUNE knob plays the same macro by hand.
Record a riff
- Hold Rec, press Seq 1: rSEq.
- Play the steps in order; Seq 2 for a rest.
- Press Rec (donE). Hold any key: the riff plays from it.
Then Rec, slot, Rec saves it with the patch.
Where the analog hardware draws the line
The firmware sets voltages; it can't rewire the voice board. Knowing the edges helps you design around them:
- Shared wires. Waveforms, sync, mixer levels, noise, resonance, pulse widths and the poly-mod oscillator B amount are one setting for all eight voices. Routes to them follow the most recently played note, which works well for mono lines and as a "last note sets the colour" effect in chords.
- One audio output. The voices are summed on the voice board, so the two layers can't go to separate outputs.
- Modulation speed. Software modulation updates every 0.3–2.4 ms (the VCAs fastest), plenty for LFOs, envelopes and gates, but not audio-rate FM. For that, the analog poly-mod path is still there: oscillator B and the filter envelope into oscillator A's pitch and the filter, at audio rate.
For how all of this works inside, see How the firmware works.