CONSTELLATIONS User Manual

Constellations Sequencer

A VST3 MIDI sequencer built with JUCE. It generates rhythmic and harmonic patterns using dual-layer, concatenated Euclidean sequencing that locks perfectly to the DAW transport. Each of the 16 channels contains two parallel layers; each layer concatenates two Euclidean sub-sequences (A + B). Nine independent parameter tabs shape every aspect of the output — from rhythm and velocity to pitch, polyphony, strum, probability and ratcheting.

MIDI-out sequencer · no audio synthesis Sample-accurate host sync 16 channels · 2 layers · 2 sub-sequences each Windows VST3

1. Main window at a glance

The window is divided into three zones: transport bar (top), the Tracks / Harmony viewer (middle), and the detail panel for the selected channel (bottom).

Main window overview
  • 1Menu — opens the side menu (settings, about, etc.).
  • 2CONSTELLATIONS — clickable logo; shows about dialog.
  • 3BPM — host tempo (40-240, also works in standalone mode).
  • 4Play / Stop — mirrors the DAW transport.
  • 5Mode toggle — pill switch: Multi (multiple track lanes) or Single (one expanded track lane). Click the left or right half to switch.
  • 6Swing label.
  • 7Swing division — which grid receives the swing (1/4 … 1/32).
  • 8Swing amount — 0 % straight, 100 % maximum shuffle.
  • 9Key label.
  • 10Key dropdown — root note for scale snapping (C … B).
  • 11Scale label.
  • 12Scale dropdown — Ionian, Dorian, Phrygian, Lydian, Mixolydian, Aeolian, Locrian, Chromatic.
  • 13Global preset — built-in (Project / Init) or custom .cstlgnr files.
  • 14Save project preset — exports the entire plugin state to a file.
  • 15Load project preset.
  • 16Undo (Ctrl+Z).
  • 17Redo (Ctrl+Y).
  • 18Randomize All — dice button; drag vertically to control how much randomization is applied to every track at once.
  • 19Notes overlay toggle — shows note blocks in track lanes.
  • 20Modulation overlay toggle — shows combined modulation waveforms in track lanes.
  • 21Tracks tab — timeline view with 16 channel lanes.
  • 22Harmony tab — constellation-wheel view for harmonic relationships between tracks.
  • 23Track selector — coloured tile; click to select, drag to re-order. Right-click for copy/paste.
  • 24-26Additional track rows.
  • 27Track lane — live piano-roll / waveform preview. Shows Euclidean hits, pitch, duration, and modulation overlays.
  • 28Delete track (X).
  • 29Global playhead — follows the DAW song position.
  • 30Channel slot — which of the 16 channels is being edited in the bottom panel.
  • 31Steps — pattern length (8 / 16 / 32).
  • 32Div — step duration (1/4 … 1/32).
  • 33MIDI channel for this track (1-16).
  • 34Name — free-text label shown in the track list.
  • 35Preset dropdown — per-channel preset (built-in or custom).
  • 36Save channel preset.
  • 37Load channel preset.
  • 38-46Sub-tab bar — Rhythm · Velocity · Duration · Notes · Contour · Polyphony · Strum · Chance · Repeat.
  • 47Layer 1 controls — parameters for the first Euclidean layer (cyan accent).
  • 48Layer 2 controls — parameters for the second Euclidean layer (magenta accent), OR-merged with Layer 1.
  • 49Merged step grid — visual result: Layer 1 hits on the top row, Layer 2 hits on the bottom row.

1a. Single-track vs Multi-track view

The transport bar contains a Mode toggle (marker 5 in the overview above) that switches the plugin between two layouts:

Multi (default)

Shows up to 8 track lanes in a scrollable list. Each lane is a slim preview strip. Click any track tile to edit it in the bottom detail panel. Best for composing full arrangements.

Multi-track view

Single

Collapses the track list into one expanded lane that fills the entire main area. The selected channel's piano roll is much larger and easier to edit. Best for focused step-by-step programming of one channel.

Single-track view

Click the left half of the pill for Multi, the right half for Single. The same detail panel (Rhythm · Velocity · … · Repeat) remains at the bottom in both modes.

2. Core concepts

Dual-layer per channel

Every channel runs two Euclidean layers in parallel. Their step patterns are OR-merged — a hit on either layer produces a MIDI note. This creates denser, more complex rhythms than a single layer.

Concatenated A + B

Each layer is split into two sub-sequences (A then B) whose step counts add up to the channel's total Steps. The A/B ratio knob controls the split. Each sub-sequence has its own fill percentage (density), letting you build asymmetric phrases impossible with a plain Euclidean circle.

Host-synced, sample-accurate

There is no internal free-running clock. Play, stop, song position, tempo and swing all follow the DAW exactly. MIDI timestamps are calculated to the sample.

Modulation system

Velocity, Duration, Notes, Contour, Polyphony and Strum share the same LFO architecture: four depth faders (1/2, 1/4, 1/6, 1/8 rate), four morphable wave-shape knobs, a phase offset, and an Intensity / Min / Max / Rate macro panel on the right. The resulting curve is drawn live in the centre view.

Randomize with drag amount

Every tab has one or two dice buttons. Click for a gentle randomize; click and drag vertically to increase the randomization strength. The further you drag, the more the values deviate from their current settings.

Wave shapes (0 → 3)

The small rotary knobs under each depth fader morph through four waveforms: 0 = sine, 1 = triangle, 2 = square, 3 = saw. Values between integers blend adjacent shapes.

3. Rhythm tab — the Euclidean engine

This is the heart of every channel. Four knobs per layer define the two concatenated Euclidean sub-patterns; the merged result is shown on the right-hand step grid.

Rhythm tab
  1. 1Channel slot — which channel these controls affect.
  2. 2Steps — total pattern length (8 / 16 / 32).
  3. 3Div — time division per step (1/4 … 1/32).
  4. 4MIDI ch — output MIDI channel (1-16).
  5. 5Name — track label.
  6. 6Preset — per-channel preset.
  7. 7Save channel preset.
  8. 8Load channel preset.
  9. 9Rhythm sub-tab active (teal).
  10. 10Layer 1 randomize — dice; drag for more.
  11. 11A/B ratio — how many steps belong to A vs B (0 % = all A, 100 % = all B).
  12. 12A-Fill % — density (hits) in sub-sequence A, 0-100 %.
  13. 13B-Fill % — density in sub-sequence B.
  14. 14Rotation — rotates the concatenated pattern by N steps (0 to Steps-1).
  15. 15Layer 2 randomize.
  16. 16Layer 2 knob group — same controls as Layer 1, independent values (magenta accent).
  17. 17Step grid — Layer 1 (top row). Green = A-hit, Blue = B-hit.
  18. 18Step grid — Layer 2 (bottom row).

4. Modulation tabs

Velocity, Duration, Notes, Contour, Polyphony and Strum all share the same template. Four vertical depth faders + four wave-shape knobs on the left, a live curve view in the centre, and an Intensity / Min / Max / Rate macro panel on the right. The numbered legend below is written for Velocity but applies identically to all six tabs (values simply mean different things).

Velocity

Velocity tab
  1. 1Velocity sub-tab active (pink).
  2. 2Fader randomize — randomizes the four depth faders; drag for amount.
  3. 3-6Depth faders (1/2, 1/4, 1/6, 1/8) — how much the LFO affects velocity at each subdivision rate. Range -1 … +1.
  4. 7-10Wave-shape knobs — morph between sine (0), triangle (1), square (2) and saw (3).
  5. 11Wave randomize — randomizes the four wave shapes; drag for amount.
  6. 12Phase bar — offsets the entire LFO in time (-1 … +1).
  7. 13Velocity curve view — the resulting per-step velocity modulation, drawn live.
  8. 14Playhead — vertical line showing current step position on the curve.
  9. 15Intensity label.
  10. 16Intensity value — overall modulation depth (-1 … +1).
  11. 17Min label — lower bound of output range.
  12. 18Min value — minimum velocity (0-127).
  13. 19Max label.
  14. 20Max value — maximum velocity (0-127).
  15. 21Min/Max link — chain icon; when active, Min and Max move together (fixed range width).
  16. 22Rate label.
  17. 23Rate value — speed multiplier for the LFO.
  18. 24Rate lock — globe icon; when active, locks Rate to 1× (host-synced one cycle per loop).

Duration

Min/Max are expressed in beats (0.05 – 32 bt). Controls how long each MIDI note is held. When Legato (16) is enabled, notes extend continuously until the next note triggers instead of using fixed duration values. Same layout as Velocity.

Notes

Min/Max are pitch names (e.g. C3, D#4). Output is snapped to the global Key/Scale. The base pitch from the Rhythm tab is offset by this LFO.

Contour

Macro-level shape applied across the pattern. Min/Max range is -24 … +24 (semitones). The Res field sets how many steps the contour is quantised to (1-64).

Polyphony

Min/Max are chord voicings (e.g. Root, Major, Dom13). Steps can output a single note or expand into a chord. 21 voicings available.

Strum

Min/Max are in milliseconds (0-50 ms min, 0-2000 ms max). Offsets chord notes in time so voicings arpeggiate instead of stacking instantly. Only Intensity and Rate are exposed on the right panel.

5. Chance tab

Probability gate per step. Uses the Rhythm knob layout as the modulation source and exposes per-step probability pads. A step only fires if it passes the probability test.

Chance tab
  1. 1Chance sub-tab active (gold).
  2. 2Rhythm source randomize — randomizes the A/B/Fill/Rotation knobs that drive the probability curve.
  3. 3A/B ratio — source pattern split.
  4. 4A-Fill.
  5. 5B-Fill.
  6. 6Rotation.
  7. 7Values readout (e.g. 100 % / 100 % / 71 % / 19).
  8. 8Wave-shape row — shapes the probability curve.
  9. 9Probability curve — visual result; each peak is a step with higher fire probability.
  10. 10Per-step chance pads — click individual pads to force a step to always fire (100 %) or never fire (0 %), overriding the curve.
  11. 11Intensity — scales the overall probability.
  12. 12Phase — offsets the probability pattern.
  13. 13Min % — floor probability (no step can be lower than this).
  14. 14Max % — ceiling probability.
  15. 15Rate — how fast the probability pattern cycles.
  16. 16Rate lock.

6. Repeat tab

Turns a single step into a ratchet / roll (also called "burst" or "flam"). Same layout as Chance, but Min/Max are expressed as a repeat multiplier (e.g. 3× = triplet roll within one step).

Repeat tab
  1. 1Repeat sub-tab active (pink).
  2. 2Rhythm source randomize.
  3. 3A/B ratio (source).
  4. 4A-Fill.
  5. 5B-Fill.
  6. 6Rotation.
  7. 7Values readout.
  8. 8Wave-shape row — shapes the repeat-count curve.
  9. 9Repeat-count curve — how many repeats each step gets.
  10. 10Per-step repeat pads — click to force a fixed repeat count for that step.
  11. 11Intensity.
  12. 12Phase.
  13. 13Min repeats (e.g. 3×).
  14. 14Max repeats.
  15. 15Rate.
  16. 16Rate lock.

7. Harmony — Constellations view

Switches the main panel to a grid of constellation wheels — one row per layer, four wheels per row (Ratio · A-Fill · B-Fill · Rotation). Each wheel positions the tracks (T1, T2, T3…) around a ring according to a selected harmonic mode. This lets you create harmonically-related polyrhythms between tracks without manually typing numbers.

Harmony constellations view
  1. 1Menu button.
  2. 2CONSTELLATIONS logo.
  3. 3BPM.
  4. 4Play.
  5. 5Swing.
  6. 6Swing division.
  7. 7Swing amount.
  8. 8-11Key / Scale controls.
  9. 12Harmony tab active.
  10. 13Layer 1 header (cyan bar) — collapse/expand; contains the rotation macro knob.
  11. 14Layer 1 rotation knob — drag to rotate all four L1 wheels simultaneously.
  12. 15Ratio wheel (L1) — T1/T2/T3 tokens positioned by the selected mode (e.g. Double C…).
  13. 16A-Fill wheel (L1) — mode e.g. Split C….
  14. 17B-Fill wheel (L1) — mode e.g. Equal.
  15. 18Rotation wheel (L1) — mode e.g. Analogous.
  16. 19Track tokens on the ring — their angular position is the parameter value for that track.
  17. 20Layer 2 header (magenta bar).
  18. 21Layer 2 rotation knob.
  19. 22-25Layer 2 wheels — Ratio, A-Fill, B-Fill, Rotation (same modes as L1).
  20. 26L2 track tokens — in Mono mode, all tracks collapse to one point.

8. Changelog

Latest version only. Full history is available in the repository.

v1.3.2 — 2026-05-19

Added

  • Linux VST3 plugin export to CI builds.
  • Apple Silicon (arm64) support for macOS builds.
  • AUv3 MIDI effect for macOS builds.

v1.2.1 — 2026-05-09

Added

  • Dice buttons in rhythm section now also randomize the rotation knob.

Changed

  • Rotation knob now uses bipolar range (centered at 0) instead of unipolar, allowing bidirectional rotation.

Fixed

  • Contour tab playhead not traversing the full graph width, especially when rate parameter is changed.
  • Contour MIDI modulation only going through part of its cycle instead of the full range when rate is adjusted.
  • Rotation knob so negative values rotate sequences to the left (positive values rotate right).

v1.2.0 — 2026-05-09

Added

  • Independent modulation clocks for velocity, duration, notes, polyphony, and strum tabs so each modulation type cycles at its own rate independent of the sequencer step position.

Changed

  • Repeat tab Max slider initial value from 9 to 0 to match the new default behavior of no flam repeats.

Fixed

  • Rotation knob ranges to dynamically update based on step count (now shows 0-15 for 16 steps, 0-31 for 32 steps, etc.).
  • Modulation cycles being cut short when the rate is reduced — the modulation now completes its full cycle even at slow rates, spanning multiple pattern loops if needed.
  • Playhead on Summation sine waves graph now correctly slows down when rate is reduced.
  • MIDI modulation now cycles through the full range at slower rates instead of only covering a small section.
  • Repeat (flam) modulation incorrectly forcing a minimum of 2 hits even when set to 0, causing unintended short notes before main notes.
  • Repeat parameter ranges to allow disabling flam by setting Min and Max to 0 (previously forced minimum of 2).
  • Repeat modulation defaults so flam is disabled by default (Min=0, Max=0, Intensity=0).
  • Swing offset sign to correctly delay offbeats (previously added offset instead of subtracting).
  • MIDI note timing offset where notes appeared slightly off-grid even with 0% swing.
  • First note disappearing during loop recording when the loop wraps back to the beginning.
  • Sequencer not resetting on loop wrap, causing the first note to be missed on subsequent loop passes.

v1.1.0 — 2026-05-04

Added

  • Focus + Context UI redesign — transport bar, tab bar, slim sidebar, compact channel strips, bottom detail panel.
  • Detail panel with rotary knobs and per-channel editing (Rhythm / Velocity / Duration / Notes tabs).
  • UI Zoom control in the side menu (burger icon) with 5 size presets: 50%, 75%, 100%, 125%, 150%.
  • Multi/Single instance mode. Multi mode shows multiple internal tracks; Single mode shows one track per instance, enabling cross-instance Harmony circles.
  • Cross-instance harmony circles in Single mode — Harmony tab displays dots from all active instances, colored by track, with full drag/link support.

Changed

  • Harmony polygon drawing now only uses outermost dots to close the shape; stacked dots connect radially.
  • Increased spacing between overlapping harmony-circle dots for clearer visual separation.
  • Streamlined channel strips and LeftPanelComponent for a cleaner layout.
  • Minimum window size reduced to 400×300.
  • UI now stretches to fill the full window on resize — no more empty black space.
  • Piano roll visualization uses the same modulation formulas as the audio engine for polyphony, strum, and repeat, keeping display and playback in sync.

Fixed

  • Harmony circle now draws a visible line between only two active tracks.
  • Overlapping track dots on the harmony circle spread inward toward the center instead of stacking.
  • Transport bar BPM display now updates in real time when host tempo changes.
  • Widened transport bar dropdowns for key, scale, swing rate, and project preset so their contents are readable.
  • Global Randomize button now only randomizes depth and phase parameters; Intensity sliders on all modulation tabs are left untouched.
  • Piano roll strum spreads smoothly across the intensity range instead of snapping between extremes.
  • Piano roll strum direction now follows the LFO curve dynamically instead of staying fixed.
  • Piano roll polyphony and repeat counts now follow the same LFO curve as the audio engine.
  • Chord-note counts corrected for certain polyphony levels to match actual playback.
  • Contour modulation offset sign corrected to fix the Y-axis inversion between the contour graph and actual pitch output.