Polymetric sequencer · macro oscillator
Version 2 · Operator's manual
Macro Lab
Four independent step sequencers, a twenty-model macro-oscillator synthesiser, and a playable keyboard — all in one page. Nothing to install, no MIDI hardware required.
Requires
Any current browser with Web Audio. Chrome, Edge and Opera add MIDI in and out; Safari and Firefox run the internal synth only.
Audio starts on a gesture
Browsers hold sound until you click or press a key. The first press wakes the engine — silence before that is expected.
Where the DSP runs
The Synth view's Output panel names it:
AudioWorklet means a dedicated audio thread,
ScriptProcessor is the fallback and is more prone to clicks.
Section one
The window at a glance
One fixed header, three views, a keyboard dock that stays put, and a status line. Everything else lives inside the view you have chosen.
MACRO LABCB SOUNDDESIGN
Pause
Stop
BPM120
SWING56%
KEYDDorian
OUTInternal macro oscillator
Panic
1
Sequencer
Synth
Routing
Keys
2
TRACKS
SEQ 1
SEQ 2
SEQ 3
DRUM 4
3
STEPS
16 steps · 1/16 · fwd
Mod lane
STEPStep 5
CHANCE80%
RATCHET2
Tie
4
OCTAVEC4
VEL100
Hold
CHORDTriad
Arp
5
▶ 120 BPM · 5/16 3/7 1/12 5/16
21:14:02 DSP running on an AudioWorklet thread.
Log
6
Figure 1 — The six zones, with the Sequencer view open
1Header — transport, tempo, swing, key, master output, panic. Always visible.
2View tabs — Sequencer, Synth, Routing. Keys hides or shows the dock.
3Track rail — everything about the selected track, plus pattern slots and files.
4Grid — steps, velocity lane, optional mod lane, and the step inspector along the bottom.
5Keyboard dock — play, chord, arpeggiate. Underlines mark notes in the current key.
6Status line — tempo and each track's position, the last log line, and the Log toggle.
Section two
How to use it — first pattern in ten steps
- Press a key or click anywhere. The engine wakes and the status line reports which audio thread it is running on.
- Set Key in the header — root note and scale. This governs scale lock, chords, the random generator and the underlines on the piano.
- Play the computer keyboard. Bottom two rows are the lower octave, top two rows the octave above; ← and → shift octaves.
- Open Synth and pick a Patch to hear what the engine does, then a Model to change its character. Timbre and Colour mean something different in every model — sweep them.
- Back in Sequencer, click steps in the grid to switch them on. Drag a step up or down to set its pitch; hold Shift and drag for velocity; right-click clears it.
- Press Play or Space. The playhead lights the current step and the track dots pulse in the rail.
- Select a step and use the inspector at the foot of the grid for Chance, Ratchet, Gate and Tie — that is where a straight pattern turns into a part.
- Switch to track four with Ctrl-4 for the drum lanes, then give tracks two and three different Steps counts — seven against sixteen is where polymeter starts.
- Shift-click a Pattern slot to store everything, including the patch. Click it later to recall; Ctrl-5…8 recalls the first four from the keyboard.
- Press Export .json to keep the session. Import restores pattern and patch together.
Two things worth knowing early
The internal synth answers note messages only — CC, mod lane and pitch bend go to external MIDI ports and are ignored by it. And a track set to Follow master out plays wherever the header's Out points, so switching Out moves the whole session at once.
Section three
Header and transport
Play / Stop
Space toggles as well. Starting resets every track to the head of its pattern; stopping releases held notes and sends All Notes Off.
BPM
20 to 300. Drives the sequencer, the arpeggiator and the outgoing clock.
Swing
50 to 75 per cent. Delays every odd-numbered step, per track, by a fraction of that track's own step length — so swing stays musical even at different rates.
Key
Root and scale — sixteen scales from chromatic and the seven modes to pentatonics, blues, whole tone, hirajoshi and insen. Used by scale lock, chord generation, the piano markings and Randomize.
Out
Master destination: the internal macro oscillator, or any MIDI output. Tracks can override it individually.
Vol
Internal synth level, up to 1.5. The output stage soft-limits, so pushing past one thickens rather than clips.
Panic
Escape does the same: kills every internal voice, sends All Sound Off, All Notes Off and sustain-off on all sixteen channels of every port in use, and clears held and latched notes.
Section four
Sequencer view
Four tracks run at once, each with its own length, rate, direction, channel and output. Track four starts as drum lanes; any track can be either.
The track rail
Tracks
Four tabs, or Ctrl-1…4. A tab reads SEQ or DRUM, turns red when muted, and its dot pulses while the track is sounding.
Mute / Solo
Solo is global: as soon as any track is soloed, only soloed tracks are heard.
Rec — Live
While the transport runs, anything you play lands on the nearest step of the selected track.
Rec — Step
Each key press writes to the cursor step and moves on, transport or not. Backspace clears the cursor step, / leaves a rest. The cursor position is shown in red under the buttons.
Type
Melodic — one voice, one note per step, with ties. Drum lanes — eight independent lanes, each with its own note number.
Steps
1 to 64, shown sixteen at a time; page buttons appear above the grid as needed.
Rate
1/1 down to 1/32, with triplet divisions. Per track — this plus Steps is what makes the polymeter.
Direction
Forward, Reverse, Pendulum (turns without repeating the ends), Random, or Drunk — a random walk that mostly moves one step, sometimes two.
Gate
Track-wide note length, 5 to 200 per cent of a step. Individual steps have their own gate on top.
Transpose
±24 semitones at output. Written notes are untouched, so you can transpose a part without rewriting it.
Scale lock
Snaps this track's notes into the header key as they play, choosing the nearest scale tone.
Port / Channel
Per-track destination. Follow master out, the internal synth, or a named MIDI port. The internal synth ignores the channel.
Edit
Clear empties the track. Randomize writes a pattern in the current key — sparse and musical, not noise. The arrows rotate the whole pattern one step left or right, mod lane included.
Pattern slots
Eight slots holding all four tracks, tempo, key and the synth patch. Click recalls, shift-click stores, Ctrl-5…8 recalls slots one to four. Slots live in the page only — export to keep them.
The grid
Note · velocitycentre of the cell — drag up and down to change pitch
Violet fillvelocity, as a level — Shift-drag to set it
Top rightchance, shown only below 100%
Bottom rightratchet count, shown only above one
Right edge bartie — this step extends the one before it
Top leftstep number within the pattern
Figure 2 — Anatomy of one step cell
Click
Toggles a step. A step switched on for the first time takes the pitch of the current keyboard octave rather than a fixed middle C.
Drag / Shift-drag
Pitch, and velocity. Dragging also switches the step on, so you can write a line in one gesture.
Right-click
Clears the step completely — note, velocity, chance, ratchet and tie.
Velocity lane
The bars under the grid. Drag them for velocity without touching pitch.
Mod lane
Switch it on above the grid, choose a controller, then draw a value per step. The value is sent as a CC at the top of each step — to MIDI ports only.
Drum lanes
Click to toggle a hit; right-click clears it with its chance and ratchet. Each lane's note number is editable at the left, with the note name beside it. A hit above velocity 100 is drawn in violet, so accents read at a glance.
Step inspector
Note
0 to 127 with its name. Melodic tracks only — a drum lane's pitch is the lane's note.
Velocity
1 to 127. On drum lanes, above 100 marks an accent.
Gate
Length of this note, 5 to 200 per cent of the step. Over 100 overlaps into the next step.
Chance
Probability the step fires at all, rolled fresh each pass. Sprinkle a few steps at 60–80 per cent and a sixteen-step loop stops repeating itself.
Ratchet
1 to 8 retriggers inside the step, dividing its length evenly.
Tie
A tied step does not trigger; it lends its time to the note before it. Chain several for long notes.
Clear step
Same as right-clicking it.
Polymeter, practically
Give track one sixteen steps at 1/16, track two seven steps at 1/16, and track three five steps at 1/8. Nothing lines up again for a long time, and the status line shows each position so you can see the cycle turning. Set the shortest track to something melodic and the longest to something percussive — the ear reads the short one as the pattern and the long one as variation.
Section five
Synth view
One synthesis engine with twenty models. Every model reads the same two macro controls, Timbre and Colour, but each interprets them in its own terms — the fastest way to learn the engine is to hold a note and sweep both.
Analogue
Csaw
Morph
Saw swarm
Sync
Buzz
FM
FM 2-op
Feedback FM
Chaotic FM
Shaping
Fold
Sine fold
Harmonic
Vowel
Vosim
Physical
Plucked
String
Bell
Drum
Modal
Figure 3 — The twenty models, by family
Model
timbre · colour · octave
→
Filter
state-variable, 4 modes
→
Fold · drive
wavefolder, saturation
→
Slew · flanger
slope limit, comb
→
Plate → out
stereo reverb, limiter
↑·↑·↑
Amp envelope
per voice → level
Filter envelope
per voice → cutoff, with key follow
LFO
global → cutoff, pitch, timbre
Figure 4 — Voice and post chain, with the three modulators
Patch
Twelve worked examples. Surprise me rolls a new patch on the model you are on — a fast way to find territory you would not have dialled. Init returns to neutral.
Model
The oscillator itself. Levels are matched across models, so switching does not jump in volume.
Octave / Voices
−3 to +3 octaves; one, four, eight or twelve voices. Mono plus glide is the setting for basses and leads.
Glide
0 to 400 ms of portamento. It only glides from a note that is still sounding.
Timbre · Colour
The two macros. Broadly, Timbre is how much the model is being pushed and Colour is which flavour of it — brightness in Csaw, detune width in Saw swarm, ratio in FM, damping in Plucked, grain density in Particle.
Output panel
A zero-crossing-triggered scope so the trace holds still, a peak meter in dB, the live voice count, and the DSP tag naming the thread and sample rate.
Filter
Lowpass, highpass, bandpass or notch. Cutoff 40 Hz to 12 kHz, resonance up to just under self-oscillation, envelope amount in either direction — negative amounts close the filter as the note develops — and key follow to track the keyboard.
Envelopes
Two ADSRs: one for level, one for the filter. Attack from one millisecond, release up to six seconds.
LFO
One global LFO — sine, triangle, saw, square or random — from 0.05 to 20 Hz, with its own amount into filter cutoff, pitch and Timbre. It is free-running, not synced to the transport.
Fold & drive
Three folder characters plus off, with depth up to eight; drive for asymmetric saturation; slew to limit how fast the signal may move, which dulls and thickens at once.
Flanger
Mix, rate, depth and feedback. Negative feedback inverts the comb for a hollower sweep.
Plate reverb
A true plate topology: mix, decay, damping and stereo width. Long decays plus damping give the dark tail; width at zero collapses it to mono.
Section six
Keyboard dock
The dock plays whatever the header's Out points at, on the channel set in Routing. Keys are labelled with the computer key that plays them; an underline marks notes belonging to the current key.
Octave
The −/+ buttons or the arrow keys. The readout names the bottom octave of the four shown.
Velocity · Human
A fixed velocity, and how far each note may drift from it at random. A little Human keeps repeated notes from sounding stamped out.
Hold
Tab. Latches what is sounding so you can leave a chord running under the arpeggiator or while you edit. Switching it off releases everything.
Scale lock
Every note you play is pulled to the nearest note of the header key. Wrong notes become impossible.
Chord
One key plays several notes: octaves, power, sus4 and quartal are fixed intervals; triad and seventh are built from the scale, so they follow the key as you move. Spread lifts alternate voices an octave.
Arp
Up, down, up-down, as played, or random, over one to four octaves, at its own division and gate. It runs on the master tempo and plays whatever is held — combine with Hold and it keeps going by itself.
Layout
Piano maps the rows like a keyboard. Chromatic gives each row an octave, Fourths tunes rows in fourths like a bass fretboard, and Scale degrees removes every note outside the key.
Labels
QWERTZ or QWERTY — this only relabels the drawn keys, so they match the caps you are actually looking at.
Transpose
±24 semitones on everything the dock plays, applied before scale lock.
Section seven
Routing
Output / Input
The same master output as the header, plus the input used for playing in and for external clock. Enable MIDI asks the browser again if the first attempt was refused.
Thru
Echoes incoming MIDI straight to the output. Incoming notes are also written when a record mode is armed.
Clock source
Internal, or external from MIDI in — then start, continue and stop follow the incoming transport and the tracks advance on its ticks.
Send clock
Transmits 24 ppqn clock plus start and stop on the master output, so a hardware box can follow this page.
Keyboard send
Channel for the dock, a shortlist of useful controllers with a value slider, and a pitch-bend slider that springs back to centre when released.
Section eight
Keyboard shortcuts
↑ ↓
Velocity in steps of eight
Ctrl 5–8
Recall pattern slots one to four
Backspace
Clear the cursor step (step record)
/
Leave a rest and advance (step record)
Note rows
Bottom two rows play the lower octave, top two the octave above
Section nine
When something goes wrong
No sound at all
Click the page once — audio is held until a gesture. Then check Vol, and check that Out is the internal oscillator rather than a MIDI port.
The transport runs but one track is silent
It is muted, another track is soloed, or its steps are all off. The track tab turns red when muted.
Steps fire unevenly
Chance is below 100 on those steps, or Direction is Random or Drunk.
Press Play and nothing moves
Clock source is set to External and no clock is arriving.
The mod lane does nothing
Its CC goes to MIDI ports only. On the internal synth there is nothing for it to reach.
Notes hang
Escape. Hold latches deliberately, so switch it off if notes keep sustaining.
Clicks and dropouts
If the DSP tag reads ScriptProcessor, the audio shares a thread with the interface. Reduce Voices, close other tabs, or use a browser with AudioWorklet.
Typing edits nothing
Shortcuts are ignored while a field has focus, and the note rows would type into it. Click empty space first.
Work disappeared
Nothing is saved to the browser. Recalling a slot or importing a file replaces the session — export before you experiment.
CB Sounddesign · Macro LabOperator's manual · v2