SQUARES
A visual MIDI sequencer where you draw squares on a 2D plane to create musical patterns. Each square is a note — position sets timing and pitch, size sets duration and velocity. Four colour channels, per-colour pitch sequencers, scale sequencing, internal synth and granular sampler.
Overview
SQUARES is a MIDI sequencer that doesn't use a piano roll. You draw rectangles on a plane, and each one becomes a note. Vertical position sets pitch; horizontal position sets when it plays. Width sets how long it lasts; height sets how loud it is. Colour tells you which of four independent channels owns it.
Three things in one plugin
- Visual MIDI sequencer — the main idea. Draw squares, play squares.
- Internal bass synth — four monophonic voices (one per colour), each with a 5-waveform oscillator, ADSR, filter, pitch envelope, and distortion.
- Granular sampler — four granular voices, one per colour. Load a WAV or AIFF and play it back with grain size, decay, speed, and three playback modes.
Each colour can route to any of the three engines independently: the MIDI output, the internal synth, or the sampler. Mix and match.
Distinctive features
- Per-colour pitch sequencers — a continuous pitch-offset waveform per channel, with its own loop length separate from the main loop. Polyrhythmic pitch modulation without writing a single extra note.
- Scale sequencer — chain key and scale changes across bars. All squares re-harmonise as the timeline progresses.
- Four play modes — Forward, Backward, Pendulum, and a Probability mode with an XY pad for step-jump size and randomness.
- Per-colour loop lengths — each colour can have its own independent loop length for built-in polyrhythm.
- Reactive visualisation — a GPU-accelerated 3D wireframe over a CPU particle/fractal system, all responding to your notes.
Quick Start
- Load SQUARES on a MIDI or instrument track.
- Pick a colour on the left — say, red.
- Click and drag on the sequencing plane to draw a square.
- Draw a few more at different heights and widths.
- Open the SOUNDS tab on the right; set the output to Internal Synth.
- Press play (standalone) or run your DAW transport. The squares trigger as the playhead passes them.
- Switch to green and paint again — now you have two independent voices.
The Interface
A central sequencing plane, a column of colour buttons on the left, a tabbed configuration panel on the right, and a top bar with transport, play mode, and the scale sequencer timeline.
Top bar
- PLAY / STOP
- Standalone transport. Host transport wins when plugin-hosted.
- BPM
- 20–300. Drag the number.
- Time Signature
- Numerator 1–16 · Denominator 1, 2, 4, 8, 16.
- Play Mode
- Four buttons:
-->Forward,<--Backward,<-->Pendulum,--?>Probability. - Scale Sequencer
- Horizontal timeline of root-and-scale segments. Click
+to add, click a segment to edit. - Presets
- Dropdown with save and delete buttons.
- Settings / Help
- Visualisation intensity, theme, about info.
Left panel — Colour selector
Four colour buttons. Tap one to select that channel — squares you draw go into the selected colour, and the right-side config panel shows that channel's settings. Each button flashes on note triggers in its channel colour.
Centre — Sequencing plane
The main canvas. Grid lines mark beat positions; a vertical playhead sweeps left-to-right (or the other direction, depending on play mode). When the pitch sequencer is open, it overlays on top. The grid "breathes" subtly on each beat — a visual metronome.
Right panel — Config panel
Three tabs for the selected channel. Full detail in § Channel Config Panel.
Below the plane
- Loop Length Selector — global length, with a
Sync Allbutton to reset per-colour overrides. - Scale Controls — root note and scale type.
Squares — The Core Idea
Every note in SQUARES is literally a rectangle. Four properties, two axes, one intuitive mapping.
What each dimension means
- Left edge (X)
- When the note starts. The playhead crosses the left edge → note-on.
- Right edge (X)
- When it ends. Playhead crosses the right edge → note-off.
- Width
- Duration = how long the note sustains.
- Top edge (Y)
- Higher on the plane = higher pitch.
- Height
- Velocity. Taller squares are louder; shorter ones are quieter.
- Colour
- Which channel owns the square.
Coordinate system
Internally all coordinates are normalised 0–1. The left edge of the plane is time 0; the right edge is the end of the loop. The top is the channel's high note; the bottom is its low note. Everything scales proportionally if you change loop length or octave range.
The Four Color Channels
Four independent channels, each with its own colour, MIDI routing, pitch range, synthesis voice, sampler voice, loop length, pitch sequencer, and quantisation. Nothing is shared except the global scale and play mode.
What each channel owns
- Its squares on the plane.
- A MIDI channel (1–16) and a pitch range (a base note + 1–5 octaves).
- A quantisation setting — timing snap from 1/32 to 1 bar.
- An output route — MIDI / Internal Synth / Sampler.
- A full synth voice and a full sampler voice (always live — switching output route just changes what's audible).
- A pitch-sequencer waveform with its own loop length.
- Optionally, a local loop length that overrides the global one.
Drawing & Editing
Create
- Click and drag on an empty part of the plane to create a square in the selected colour. Drag determines width and height.
- Squares snap only where you put them; the grid is a visual reference, not a hard snap. Time quantisation happens at playback via the Quantization setting.
Edit
- Drag the body of an existing square to move it.
- Drag an edge to resize — width changes duration, height changes velocity.
- Click to select. Selected squares are highlighted.
Delete
- Double-click a square, or select and press Delete / Backspace.
- The Clear button on the SQUARES tab wipes every square in the current colour.
Navigation
- Mouse wheel — zoom the plane.
- Pan — move around when zoomed in (modifier depends on OS).
Channel Config Panel
The right-hand panel with three tabs. Every control applies only to the currently selected colour channel.
SQUARES tab
- Quantization
- Timing snap for note-on events:
1/32 · 1/16 · 1/8 · 1/4 · 1/2 · 1 bar. Applied at playback — doesn't move the squares. - Base note
- The channel's lowest note (C through B).
- Octave range
- How many octaves tall the channel's pitch range is (1–5). Larger range = more pitches span the Y axis.
- MIDI channel
- 1–16. Used when the output route is MIDI Output.
- Pitch sequencer length
- Loop length of the pitch waveform for this channel. Independent of the main loop.
- Main loop length
- Per-channel override. Zero uses the global setting.
- Clear
- Wipes every square in this colour.
PITCH tab
For the pitch-sequencer overlay. See § The Pitch Sequencer for how it works.
- Pitch base note
- Separate from the square base note — sets the zero point for the pitch-sequencer's vertical axis.
- Pitch octave range
- 1–5 octaves spanned by the overlay.
- Pitch sequencer length
- Same control as on the SQUARES tab, surfaced here too.
- Loop length
- Per-channel override.
SOUNDS tab
Parameters for the selected channel's synth and sampler voice, plus the output route. Detail in § Sound Engines.
- Output
MIDI Output · Internal Synth · Sampler. Per channel.- MIDI Channel
- Only shown when output is MIDI.
Sound Engines
Three possible routes per channel. Pick one on the SOUNDS tab.
MIDI Output
Forwards note events to the DAW on the channel's MIDI channel. Velocity scales to 1–127 from the square's height. Note numbers snap to the active scale after pitch-sequencer offsets are applied.
Internal Bass Synth
A focused monophonic voice with a classic subtractive signal chain.
Oscillator ─▶ Pitch Envelope ─▶ Filter ─▶ Distortion ─▶ Amp ADSR ─▶ Output (sin/tri/saw/sq/noise) (cutoff + env) (A D S R)
Oscillator — 5 waveforms
Sine · Triangle · Saw · Square · Noise. Each has its own 0–1 level fader — all five mix together, so you can run a sine + a bit of noise, or stack saw + square.
Pitch envelope
Attack 0–100 ms · Decay 1–2000 ms · Sustain 0–1 · Range ±48 semitones. A fast-decay pitch drop is the classic "808 thump"; a rising, slow-decay envelope gives a synth horn feel.
Amplitude ADSR
Attack 0–500 ms · Decay 1–2000 ms · Sustain 0–1 · Release 1–2000 ms. Drawable on the SOUNDS tab — click-edit the envelope curve directly.
Filter & distortion
- Freq
- Cutoff, 20 Hz – 20 kHz.
- Res
- Resonance, 0–1.
- Fenv
- Filter-envelope amount,
−1to+1(up to 6 octaves of modulation, in either direction). - Drive
- Distortion drive, 0–1.
- Level
- Output level 0–2 (200%).
Granular Sampler
Load a WAV or AIFF; the voice plays it back as a stream of grains.
- Load
- File chooser. Loads into the selected colour's sampler voice.
- Speed
0.0(freeze) →2.0(double-speed). Does not affect pitch.- Grain
- Grain size, 10–500 ms.
- Decay
- Grain window decay, 0 (hard, buzzy) → 1 (smooth, sustained).
- Pitch
- ±24 semitones, independent of speed.
- Drive
- Distortion on the output, 0–1.
- Level
- Output 0–2.
- Mode
- Grain-read strategy — see below.
Playback modes
- Steady
- Grains read sequentially from the current position. The closest to a "normal" time-stretched playback.
- Random
- Grains pull from random positions in the sample on every window. Good for clouds and textures.
- Scatter
- Grains scatter slightly around the current position. A hybrid — keeps the sense of progression with texture around it.
The Pitch Sequencer
Every colour channel has a continuous pitch-offset waveform drawn on its own loop. Notes triggered on that colour are transposed by whatever value the waveform holds at the moment of the note-on.
How it works
- Switch to the PITCH tab on the right panel.
- The sequencing plane shows the channel's pitch-sequencer overlay — draw a curve.
- Set the pitch sequencer loop length — it can be different from the main loop length. Say the main loop is 4 bars but the pitch loop is 3 bars. The pattern now sounds different every main-loop repeat for 12 bars before the two align again.
- Switch back to SQUARES and keep drawing — every note you trigger picks up the pitch offset at its start time.
What it's good for
- Arpeggio colour — a square on its own is flat, with a pitch waveform behind it it becomes musical.
- Built-in modulation without touching host automation.
- Polyrhythmic pitch change: run a 7-bar pitch loop over a 16-bar square pattern for long, evolving harmony.
Scales & Scale Sequencer
Every note — synth, sampler, or MIDI — is snapped to the active scale. You can set it manually below the plane, or chain scale changes across time with the scale sequencer.
Manual scale
Two dropdowns under the plane: Root (C through B) and Scale (16 options):
- Chromatic, Major, Natural Minor, Harmonic Minor, Melodic Minor
- Pentatonic Major, Pentatonic Minor, Blues
- Dorian, Phrygian, Lydian, Mixolydian, Locrian
- Whole Tone, Diminished H-W, Diminished W-H
Scale sequencer
Horizontal timeline in the top bar. Chain up to 16 segments; each has a root, a scale, and a length in bars (1–16).
- Add — click
+to insert. - Edit — click a segment to open its popup (touchpad editor with root and scale grids).
- Resize — drag a segment's right edge.
- Delete —
×in the segment popup. - Playhead — sweeps across; the active segment highlights, and SQUARES re-harmonises in real time.
Segment palette
Eight muted cool tones so segments never overpower the colour-channel visuals.
Loop Lengths & Play Modes
Loop lengths
The Loop Length Selector below the plane covers a wide range:
- Steps — 1 to 15 steps (1/16 bar each).
- Bars — 1 to 8 bars.
- Long — 16, 32, 64 bars.
Each channel can override the global value via its SQUARES tab. Different per-colour lengths is the fastest way to a polyrhythm. Hit Sync All to reset all channels back to the global value.
Play modes
-->Forward- Default. Left to right.
<--Backward- Right to left. Everything reverses, including retriggers.
<-->Pendulum- Forward then backward then forward — reflects at the loop edges.
--?>Probability- Random step jumps. See below.
Probability mode
Selecting Probability reveals an XY pad on the right side of the top bar:
- X — step jump size
- How far the playhead jumps when a jump happens. Musical divisions:
1 · 2 · 4 (1 beat) · 8 · 16 (1 bar)steps. - Y — probability
- 0–1. The chance, at each step, of jumping instead of advancing normally.
Low probability + short jump = gentle variation. High probability + long jump = stutter/teleport.
Presets & Settings
Presets
The preset ComboBox on the top bar saves and recalls the entire pattern state — squares, per-colour config, synth and sampler parameters, pitch sequencers, scale sequencer, play mode, loop lengths. Save and Delete buttons sit beside it.
Settings
Opens a dialog with:
- Visualisation — opacity, 3D intensity, bloom, rotation speed for the background.
- Theme — colour palette and per-channel hue options.
Theme and visualisation preferences are stored in %APPDATA%/SQUARES/settings.xml — isolated from the preset system so your visual preferences persist across preset swaps.
State persistence
Full plugin state saves with the DAW project. In standalone, state saves with the host's session mechanism.
Workflows & Recipes
Recipe 1 · A bassline in thirty seconds
- Pick RED. Switch to SOUNDS → Internal Synth. Set oscillator to Square + a little Triangle.
- Amp ADSR: short attack, medium decay, no sustain, short release.
- Cut the filter down to ~400 Hz; turn Fenv up to 0.7 for a pluck.
- Draw four narrow short squares at the bottom of the plane, evenly spaced. That's your root-note bassline.
Recipe 2 · Layer a melody in a second colour
- Pick GREEN. Set its pitch range up 2 octaves from RED.
- Draw taller, wider squares higher up for a sustained melody.
- On the PITCH tab, draw a slow rising-and-falling curve. GREEN's melody now gently modulates between scale tones.
Recipe 3 · Polyrhythm in one step
- RED loop =
4 bars. GREEN loop =3 bars. BLUE loop =5 steps. - Set the global loop length to the longest (
5 barsor16 bars, say). - Hit play. Three channels, three periodicities — evolves for ages.
Recipe 4 · Scale progression without rewriting
- Build a pattern you like in C Major.
- On the scale-sequencer timeline, add segments for
C Maj · 2 bars,A Min · 2 bars,F Maj · 2 bars,G Maj · 2 bars. - The same squares now play through a four-chord progression, snapping to each scale in turn.
Recipe 5 · Granular bed
- BLUE → Sampler. Load an ambient recording or pad.
- Speed
0.3, Grain250 ms, Decay0.8, ModeRandom. - Draw one wide, medium-tall BLUE square covering most of the bar — the sampler runs continuously as a generative pad.
Recipe 6 · Controlled chaos
- Write a dense pattern across all four channels.
- Switch play mode to Probability. Set X to
4 steps, Y to0.25. - 25% of the time the playhead jumps a beat — just enough to scramble the pattern without losing it.
Recipe 7 · Multi-instrument ensemble via MIDI
- Set each colour's output to MIDI Output, each on its own MIDI channel (1, 2, 3, 4).
- In the DAW, route each MIDI channel to a different instrument track.
- Now SQUARES is a four-piece arranger driving four synths.
Tips & Troubleshooting
Tips
- Keep each colour to a role. Bass on RED, pad on BLUE, melody on GREEN, percussion via sampler on YELLOW. The visual-plane paradigm is clearer when colour = instrument.
- Quantisation is a feel control. A tight 1/16 grid feels programmed; a loose 1/4 feels played. Try both on the same pattern.
- Use short squares for staccato, wide squares for drones. Width is duration — not just a cosmetic size.
- The PITCH tab is your secret weapon. A boring square pattern becomes musical when a pitch curve modulates it.
- Scale sequencer = song structure. Build a 4-chord loop in the scale sequencer and you've got a verse-chorus engine on top of any pattern.
- Pentatonic + Probability mode = instant improv. No wrong notes, unpredictable phrasing.
Troubleshooting
- Nothing plays
- Check: transport running, at least one square on the plane, the channel's output route (MIDI needs a receiver; Internal Synth and Sampler produce audio directly). Level faders on the SOUNDS tab not at zero.
- Samples load but the sampler is silent
- Sampler voice needs the channel's output route set to Sampler. Internal Synth and Sampler are both always active internally — only the routing determines what you hear.
- Scale Sequencer running but key won't change manually
- That's expected — the timeline is in charge. Turn it off or edit segments directly.
- Two notes on the same colour collide
- Channels are monophonic; overlapping squares retrigger the voice. Use a different colour for a parallel voice.
- MIDI not reaching external synth (VST)
- SQUARES needs to be on a MIDI-capable track (not just an instrument track) in your DAW, and the DAW's MIDI-routing must forward its output to the target track.
- Visuals too intense
- Settings → Visualisation. Lower opacity, bloom, 3D intensity, or turn off the visualisation entirely.
- Standalone app runs, VST3 doesn't appear in Ableton (macOS)
- A code-signing issue specific to Ableton. Re-sign with
codesign --force --deep --sign - <path-to-plugin>after installation and rescan.
Control Reference
| Control | Location | Values | Notes |
|---|---|---|---|
| Base Note | SQUARES tab | C–B | Lowest note of the channel's range. |
| BPM | Top bar | 20–300 | Host wins when plugin-hosted. |
| Clear | SQUARES tab | button | Wipes all squares in current colour. |
| Colour selector | Left panel | Red · Green · Blue · Yellow | Selects active channel. |
| Decay (sampler) | SOUNDS tab | 0–1 | Grain-window decay. |
| Drive | SOUNDS tab | 0–1 | Distortion drive. |
| Envelope (ADSR) | SOUNDS tab | drawable | Synth amp envelope. |
| Fenv | SOUNDS tab | −1 … +1 | Filter envelope amount. |
| Freq | SOUNDS tab | 20 Hz – 20 kHz | Filter cutoff. |
| Grain | SOUNDS tab · sampler | 10–500 ms | Grain size. |
| Level | SOUNDS tab | 0–2 | Per-voice output level. |
| Load | SOUNDS tab · sampler | file | WAV / AIFF. |
| Loop Length (global) | Below plane | steps · bars · long | Sync All resets overrides. |
| Loop Length (channel) | SQUARES / PITCH tab | override | 0 = use global. |
| MIDI Channel | SQUARES / SOUNDS tab | 1–16 | MIDI-output route only. |
| Mode (sampler) | SOUNDS tab | Steady · Random · Scatter | Grain-read strategy. |
| Octave Range | SQUARES tab | 1–5 | Channel pitch range. |
| Output Route | SOUNDS tab | MIDI · Synth · Sampler | Per colour. |
| Pitch (sampler) | SOUNDS tab | ±24 semi | Independent of speed. |
| Pitch Sequencer Length | SQUARES / PITCH tab | steps · bars | Independent of main loop. |
| Play Mode | Top bar | FWD · BWD · PEND · PROB | PROB shows an XY pad. |
| PLAY / STOP | Top bar | toggle | Standalone only. |
| Presets | Top bar | dropdown + save/del | Stores full state. |
| Quantization | SQUARES tab | 1/32 · 1/16 · 1/8 · 1/4 · 1/2 · 1 bar | Timing snap at playback. |
| Res | SOUNDS tab | 0–1 | Filter resonance. |
| Root | Below plane | C–B | Scale root. |
| Scale | Below plane | 16 scales | Dimmed when Scale Seq active. |
| Scale Sequencer | Top bar | timeline | Click + to add segments. |
| Speed (sampler) | SOUNDS tab | 0.0–2.0 | 0 = freeze. |
| Sync All | Below plane | button | Reset per-channel loop overrides. |
| Time Signature | Top bar | 1–16 / 1, 2, 4, 8, 16 | Default 4/4. |
| Waveforms (synth) | SOUNDS tab | Sine · Tri · Saw · Sq · Noise | Mixed independently 0–1. |