Ormer Modular · made in Guernsey

SHOAL for VCV Rack

USER MANUAL · v2.0.6

Shoal plays melodies you didn't write - but that always sound like you meant them. Eight tracks each generate a looping melody from a seed; every note is locked to one global scale; tracks can follow one another like fish. The name: eight fish, moving as one. A reseed is the shoal turning.

The tank: eight track lanes with the selected track's detail down the right-hand side - the same screen as the hardware original, drawn live on the module. Everything in this manual is visible here or one right-click away.

Installing

Shoal is available from the VCV Library:

  1. Buy Shoal on its page in the VCV Library, logged in to your VCV account.
  2. In Rack, open the Library menu (log in there if you aren't already) and let it update - Shoal downloads with your other plugins.
  3. Restart Rack if it asks. Three modules appear in the module browser under Ormer Modular: Shoal itself, and its two optional expanders, Shoal Expander and Shoal Outs.

Updates arrive the same way, through Rack's Library menu.

Also swims in hardware: Shoal began on the Expert Sleepers disting NT, where it is free - same engine, same seeds, same melodies. The hardware manual lives here.

Five minutes to a first melody

  1. Add Shoal. It's already ticking: the internal clock defaults to 120 BPM, and ×1 means one step per beat.
  2. Patch track 1. GATE 1 → an envelope or VCA, PITCH 1 → an oscillator's 1V/oct input. Each track has its own pair of jacks along the bottom.
  3. Pick a key. Right-click → Scale and Root note. Try Minor pentatonic to start - it always sounds good.
  4. You should already hear a melody - every seed carries a base line spanning two octaves centred on the root. The bipolar NOTE and OCTAVE knobs add random variation on top when you want it wilder (up for upward straying, down for downward); return them to centre to come home to the base melody.
  5. Reseed until you like it. Tap RSED. Each tap rolls a new melody for the selected track, landing at the top of its next loop (the button glows while the reseed is waiting). Reseed all lives in the right-click menu and on the RESEED jack.
  6. Bring in more fish. Patch further tracks' jacks when you're ready - build the shoal one voice at a time, deliberately.
  7. To sync to your rack, patch a clock into CLK IN. A cable in that jack is external mode - Shoal follows it immediately, one pulse per ×1 step, and returns to its internal clock when you unpatch.

That's the whole game. Everything else is refinement.

The big ideas

Seeds: randomness that repeats

The seed is the melody. A track's melody is completely determined by its Seed (a number, 0–999) - think of it as a recipe number, not a random amount. Same seed = same melody, every loop, every restart, every patch reload. Reseeding just picks a new number. Because the seed is an ordinary parameter, your patches and presets capture your exact patterns - and the SEED CV input can address it for pattern-switching madness.

Reseeds land on the grid

A reseed never interrupts mid-loop. It arms (the RSED button glows, the fish swims faster) and takes effect when the track wraps to step 1. Music stays on the rails; new sections start where sections should.

Chance shapes the rhythm

CHANCE - does this step play a note at all? 100% = every step, 50% = half rests. Seeded, so the same steps rest on every loop until you reseed.

The base melody, and non-destructive variation

Every seed produces a base melody - a line spanning two octaves of the scale, centred on the root, so melodies orbit their home note. That melody exists on its own: with NOTE and OCTAVE at centre (the defaults), it's exactly what you hear.

Turn them up for wildness, and back to centre to return to the pure base melody - nothing is ever destroyed. Notes are built from the scale, so nothing is ever out of key.

Tracks can follow each other

Set a track's Follow (right-click menu) to another track and it mirrors that track's material - same musical contour - filtered through its own settings: its own chance, note/octave amounts, octave, rate, length, gate. Reseed the source and the follower changes with it. Set it back to Off to unlink (the track's own seed is untouched underneath).

Direction: the same melody, walked differently

Because a track's melody is derived from its seed, Direction doesn't change the notes - it changes the walk. Reverse plays your exact melody backwards; Pendulum and Pong fold it into palindromes (ends played twice or once respectively); Drunk staggers through it (50% forward, 25% repeat, 25% back); Random abandons order entirely. Random, Drunk, Pools and Skitter are truly unpredictable - the others loop identically, and flipping back to Forwards always recovers the original line. There are fifteen walks in all; three of the most generative:

Tide

The rhythm holds steady while the melody drifts one step through it on every pass, realigning after length passes. Watch the lane: the pattern slides left each time the loop wraps. Fully deterministic - and it phases against a follower playing the un-shifted original.

Shuffle

Every step plays exactly once per pass, in a freshly dealt order each pass. Unlike Random, nothing repeats and nothing is skipped: the same notes, their story retold every loop. The deals are seeded, so even the shuffles are reproducible.

Pools

The playhead circles a small pocket of 3–4 adjacent steps for a few laps, then hops to another pocket. Motifs repeat, mutate position, move on - the closest a sequencer gets to sounding like it's thinking about a phrase. (Truly random, like Drunk.)

And six more:

Armed reseeds land at the mode's loop origin: step 1 (including Stride, Gravity, Converge and Anchor); the last step in Reverse; the pass boundary in Tide/Shuffle; the middle step in Diverge, where its cycle begins; immediately in Random/Drunk/Pools/Skitter.

Polymetre and rate

Each track has its own Length (1–64 steps) and RATE (/64 … ×64 of the master clock, 29 rates in ascending order). The dial runs /64 /32 /16 /8 /7 /6 /5.3 /5 /4 /3 /2.6 /2 /1.5 ×1 ×1.25 ×1.3 ×1.5 ×2 ×2.6 ×3 ×4 ×5 ×5.3 ×6 ×7 ×8 ×16 ×32 ×64 - the odd ratios (3, 5, 7, plus 6) sit right next to the even ones, so a track at ×3 or /5 pushes against the grid while the rest of the shoal holds it, and the fractional ones land between the grid for polyrhythms proper: ×1.5 is a true 3-over-2, ×1.25 the classic 5-against-4. Fractional rates are exact - their advances are spread as evenly as possible, so they never drift. Divided rates land on the downbeat: a /4 track steps with every fourth clock, starting on the first. A 16-step track over a 5-step track at /2 makes phrases that don't repeat for a long time; a 33-step track over anything makes phrases that never seem to. This is where the "generative" feeling really comes from.

The slow arts

Four controls made for long-form and ambient playing:

Evolve · per track

Each pass, that share of steps quietly re-roll themselves, pitch and rhythm alike. At 5%, a melody becomes a different melody over ten minutes without your hands. Seeded, so the evolution path is repeatable; reseeding starts a fresh lineage. Followers evolve with their source.

Breathe · per track

The chance that an entire pass rests. Steps rest with Chance; phrases rest with Breathe. The track's lane dims on the display while it sits out, and re-enters on its next pass.

Freeze · FRZE + gate input

The shoal holds its breath: nothing advances and every running track's current note is held, hanging as a chord until you release. Freeze blooms: engaging it raises every gate immediately - including tracks between notes - so the full chord always sounds the instant you freeze. A slow gate into FREEZE makes oceanic swells. By default the clock output keeps running through a freeze; set Frozen clock out to Stops to hold the whole patch's breath.

Weight · global

Consonance gravity: that share of notes snap to the scale's root, third or fifth. High weight turns wild settings lush instead of angular.

The panel

Shoal works on a selected-track basis: the TRACK buttons under the display choose which track the knobs and buttons address, and the knobs snap to show that track's values when you switch. Every control is a real Rack parameter, so MIDI-mapping and preset saving work as usual.

Big knobs - the performance trio

KnobRangeWhat it does
CHANCE0–100%Probability a step plays a note
NOTE±100%Random note variation: distance from centre = how often and how far, direction = up or down
OCTAVE±100%Random octave leaps, same principle

Small knobs

KnobRangeWhat it does
LENG1–64Steps in this track's loop
RATE/64…×64Speed relative to the master clock (×1 = one step per beat), 29 rates
DIRN15 modesThe walk (see Directions above)
TRNS−7…+7Fixed shift in scale degrees - always in key. +2 on a follower = parallel thirds
SHFT−63…+63Rotate the whole pattern - notes, gates, their timing - non-destructively (0 returns the original). On a follower, this is a canon
OCTA−3…+3Fixed octave shift for the whole track

OCTAVE the big knob adds random octave leaps; OCTA the small knob transposes the whole track by fixed octaves.

Buttons

ButtonActs onWhat it does
FRZEglobal, latchingHold every sounding note as a chord; nothing advances. Glows while frozen, including CV-driven freezes
MUTEselected trackSilence the track's gate; the pattern keeps running, and unmuting drops back in on the grid. Pitch CV holds its last note, so a gate-less voice (drone, self-oscillating filter) sustains rather than going quiet
SOLOselected trackMute everyone else. Solo another track to move it; press again to clear
RUNglobal, latchingMaster play/pause
RSETglobalAll tracks restart at step 1 on the next tick
RSEDselected trackReseed: rolls a fresh random seed, armed, landing at the loop origin. Glows while armed

Jacks

JackDirectionWhat it does
GATE 1–8outThe track's gate. High level per track (1–10V, default 10V, set in the menu). GATE 2/4/6/8 also carry poly channels if Poly output routing is set
PITCH 1–8outThe track's pitch CV, 1V/oct, 0V = C3. Per-track scale and offset in the menu. PITCH 2/4/6/8 also carry poly channels if Poly output routing is set
CLK OUToutShoal's master clock: 10V pulses at the ×1 step rate, 50% duty. Follows Run; during Freeze see Frozen clock out
CLK INinExternal clock. A cable here is external mode - one pulse advances ×1 tracks one step; unpatch to return to the internal clock
RST INinRising edge: all tracks restart at step 1 on the next tick
RESEEDinRising edge: reseed everything - a fresh random base, armed, each track landing at its own loop origin. Built for triggers
FREEZEinGate: freeze while high, OR-ed with the FRZE button
SEEDinCV addresses the selected track's seed: 0–10V maps to 0–999. Change the voltage and the track reseeds to that exact number (armed, on the grid)

The display

The screensaver: the shoal at rest

Leave the controls alone (five minutes by default; Off / 1 min / 5 min in the right-click menu) and the display dissolves into open water: eight fish, one per track, swimming the screen. Each fish darts forward whenever its track sounds a note, so the scene is your patch - busy tracks race, sparse tracks glide, muted tracks drift dim and slow, a breathing track fades while it rests. Freeze stills the whole shoal mid-water (the bubbles keep rising; the sea stays alive).

Touch any of the module's controls and the normal display returns - the waking touch is swallowed, so you can't reseed a track just by waking the screen. CV arriving at SEED, RESEED or FREEZE deliberately doesn't wake it: a generative patch can fall asleep and be watched.

The expanders

Two optional 4HP companions, included with Shoal. Each works on either side of Shoal, as long as it sits directly against it (or, for Expanders, against a chain leading to it) in the same row. A green light at the top of each shows it's connected. The conventional layout is inputs on the left, outputs on the right: Expander, then Shoal, then Outs.

Shoal Expander: CV in

Twelve CV inputs for the performance controls.

CV adds to the knob. Each input adds to that setting's current value and is clamped to its range - the knob is the centre, the CV moves around it. Unipolar settings (0–100%, like CHANCE or EVOLVE) take 0–10V for the full range; bipolar ones (NOTE, OCTAVE, TRNS, SHFT, OCTA) take ±5V. The one exception is ROOT, which is a 12-way choice rather than a range: it sets the root outright from 1V/oct, 0V = C, so a keyboard or quantised sequence changes key directly.

Modulation never moves Shoal's knobs and is never saved into your patch - saving mid-sweep stores the values you set. The display shows it instead, in amber.

Chaining: add more Expanders beside the first, working outward from Shoal (up to eight in all, on one side or split across both - the menu's Add another Shoal Expander grows the chain for you), each on its own TRACK. Several can address the same track; their CV adds up. WEIGHT inputs add up across the chain; for ROOT, the patched Expander nearest Shoal wins.

Shoal Outs: Currents and end-of-sequence

Sixteen outputs, one row per track: Current on the left, EOS on the right. One Shoal Outs carries all eight tracks.

Currents

A slow, smooth, seeded drift CV per track - the water the melody swims in. For filter cutoffs, VCA levels, send amounts: gentle ambient movement without a separate LFO. It comes from the track's own seed, so it repeats with every pass and returns with the seed. A new target lands each time the track advances, whether or not the step sounds, and the voltage eases towards it over the step, never jumping - so it moves at the track's own rate. A follower's Current is its own, not its source's. Currents hold through a Freeze. 0–10V by default, or ±5V via Shoal's Currents range menu item.

End-of-sequence

A 10V pulse, half a step long, every time the track completes a full cycle of its Length. Use it to advance another sequencer, ping an envelope once per phrase, or reseed the shoal. It counts advances, so every direction gets a steady once-per-Length pulse - even Random, Drunk, Pools and Skitter, which have no fixed loop of their own. It ignores Chance and Mute (it marks the structure, not which notes sound) and stays silent through a Freeze.

Recipes

A bass line that follows your melody

Track 1: your melody. Select track 2 and set it to follow.

Follow Track 1 · OCTA −2 · RATE /4 · CHANCE ≈50% · Gate length ≈80%

Parallel harmony

The same melody harmonises itself, in key, through every reseed. Thin it with CHANCE so the harmony only appears on some notes.

Follow Track 1 · same RATE/LENG · TRNS +2 (thirds) or +4

A true canon

The same melody enters four steps behind its leader, an octave down - a round that survives every reseed. Shift the follower, never the leader.

Follow Track 1 · same RATE/LENG · SHFT −4 · OCTA −1

Shoal as the master clock

Patch CLK OUT to drums, clocked LFOs and synced delays - everything rides Shoal's grid in either clock mode. During a Freeze the pulse keeps running by default, so delay tails stay in time while the melody hangs.

Evolving ambient

Two or three tracks at odd lengths, slow rates, low chance, slow-attack voices. Then don't touch anything for twenty minutes - Evolve/Breathe compose, Weight keeps it lush. A slow LFO into FREEZE swells chords out of whatever is playing.

lengths 16/11/7 · rates /2, /4 · CHANCE 30–50% · Breathe 20% · Evolve 5–10% · Tie 30% · Slop 10% · Weight 60% · In-Sen scale

Sequence the sequencer

A step sequencer into SEED switches the selected track between melodies you've chosen, each landing neatly at the loop start. 0–10V maps to seeds 0–999, about 10mV per seed - quantised sources work better than drifting ones.

Live key changes

MIDI-map Root note (or Scale). Each track adopts the new key on its next note, cascading over a beat or two.

A human drummer's hi-hat line

Take just the gate output. The seeded rests and drift make a repeating, groovy pattern.

CHANCE 65% · NOTE/OCTAVE centred · Gate length 10% · Slop 15% · RATE ×8

A new section every phrase

With Shoal Outs attached, patch one track's EOS into Shoal's own RESEED input. Every time that track completes its loop, the whole shoal turns.

EOS 8 → RESEED · track 8 LENG 64 for a new section every 64 steps

Water for the filters

Patch each voice's Current into its filter cutoff. Every track breathes at its own pace, and the movement comes back with the seed.

Shoal Outs CUR 1–8 → cutoffs · slow RATEs for long swells

Hands-free dynamics

A slow LFO into a Shoal Expander's CHANCE thins a track out and fills it back in; another into NOTE makes it wander further on the peaks.

Expander TRACK 1 · LFO (0–10V) → CHANCE with the CHANCE knob at 0

Fitting other voltage standards

Per-track Gate level, Pitch scale and Pitch offset remove the need for external attenuators: 5V gates for picky envelopes, 120% for 1.2V/oct gear, or compress the melody into a narrow window for video synthesis.

Troubleshooting

Nothing is moving on the display.
RUN is off, or there's a cable in CLK IN but no clock arriving - a patched clock input silences the internal clock entirely.
It's running but silent.
CHANCE at 0? MUTE lit? Another track solo'd (S on its lane)? Patched from the right track's jacks?
Notes seem out of time.
That's probably Slop - set it to 0 for machine timing.
The melody won't get wilder.
NOTE and OCTAVE are at (or near) centre - they're bipolar, and the centre is zero variation. Turn away from centre in either direction.
The knobs jumped when I pressed a TRACK button.
By design: the knobs always show the selected track's real values, so switching tracks moves them. Every track remembers its own settings.
An expander does nothing, and its light is off.
It isn't touching Shoal. Either expander can go on either side, but it must sit directly against Shoal in the same row (an Expander can also sit at the end of an unbroken chain of Expanders). The two types can't share a side, since only one module fits directly against Shoal there. The menu's Add items place them correctly.
Expander CV is patched but the knobs don't move.
By design - CV adds on top without moving the knobs. Watch the display: the modulated values show in amber. Also check the Expander's TRACK knob is on the track you expect.
My oscillator plays in a different octave than expected.
Shoal's 0V = C3, matching the hardware original. Tune your oscillator to taste, or use Pitch offset (+1V = up an octave).

Specifications