Cordial
MIDI generative VST3 - user manual
What is Cordial?
Cordial is a MIDI generator plugin. You give it a root key, a mode, a chord progression preset, and a seed number. It outputs four independent streams of MIDI — Chord, Arp, Bass, Melody — each on its own MIDI channel so you can route them to separate instruments in your DAW.
The four layers share the same harmonic backbone (progression + key + mode) but each has its own set of controls for rhythm, register, velocity, and style. Enable only the layers you need.
Key idea
The same seed + same parameters = identical output, every time. This is not a nicety — it is the point. Save a preset you like and it is version-controlled forever.
The five tabs at a glance
| Tab |
Purpose |
| Progression |
Set the key, mode, chord progression, base octave, and seed. This is the harmonic skeleton every other layer reads from. |
| Chord |
Block chords — full voicings with optional strum. |
| Arp |
Stepped chord-tone arpeggiator with 18 patterns. |
| Bass |
Bass line in one of four styles: Root, Root-Fifth, Walking, or a user-programmable step pattern. |
| Melody |
Single-voice melodic line using a noise-field pitch engine. |
Reaper routing
Cordial outputs on up to four MIDI channels simultaneously. Each channel must be routed to its own instrument track.
- Insert Cordial on a MIDI track (the "source" track).
- Create one virtual-instrument track for each layer you want (Chord, Arp, Bass, Melody).
- On each instrument track, open its routing and add a receive from the Cordial source track. Set the receive to only pass the MIDI channel for that layer (see the channel assigned in each tab's Ch control — defaults are Ch 1/2/3/4).
- Load your instruments on those tracks and arm/record as normal.
Tip
You can also use the Drag Export Bar at the bottom of the plugin window to drag a rendered MIDI clip (any single layer, full progression length) directly into a Reaper track for offline editing.
Seed contract
The Seed (0 to 999999) is the single master source of randomness for all four layers. Every arpeggiation choice, melody note, walking bass approach, and humanisation offset traces back to this one number.
Each layer uses its own derived sub-seed so changing one layer's parameters cannot disturb another layer's output. The sub-seeds are fixed transforms of the master seed — they do not drift over time.
Workflow tip
Treat the seed like a version number. When you find a phrase you want to keep, write down (or save a preset with) the seed plus every parameter. Restoring those values restores the identical phrase.
Use the Randomize button on the Progression tab to pick a new random seed. The Undo Seed button restores the previous value.
Progression tab
Progression
This tab defines the harmonic content that all other layers share. Changes here rebuild the entire progression and restart all generators.
Controls
| Control | Range | What it does |
| Key |
C to B (12 notes) |
The tonic pitch-class. Shifts every chord root chromatically. Middle C = MIDI 60 at the default octave setting. |
| Mode |
7 modes |
The scale/mode used to build chord roots and to constrain melody and bass. See the Modes reference section below. The preset you choose may require a specific mode for its borrowed chords to resolve correctly — the UI filters presets by mode compatibility. |
| Genre / Progression |
~227 presets across 20 categories |
Selects a preset chord progression. Genre groups them (Diatonic, Jazz, Neo-Soul, Latin, etc.). The preset defines the sequence of scale degrees, chord qualities, and any slash-bass or inversion instructions. Pick one that matches the mode shown — borrowed chord labels like bVII only land correctly when the preset's intended mode is active. |
| Octave |
1 to 7 (default 3) |
The base register for chord voicings. Raising this shifts all chord notes and the harmonic reference used by the arpeggiator and melody upward. Bass uses its own separate octave control. |
| Seed |
0 to 999999 |
Master randomness seed. See the Seed Contract section above. |
Chord editor
Switching to Custom mode reveals the chord editor, where you can hand-build a progression slot by slot. Each slot lets you set the degree (1-7 or a borrowed degree), quality override, inversion, and slash bass. Custom progressions are saved as part of the plugin state independently of the preset list.
Chord tab
Chord - default Ch 1
Plays full block chords at regular intervals. Each chord is voiced with smart inversion (minimising hand movement from the previous chord unless the preset specifies an inversion), and can be strummed.
Header
| Control | Range | What it does |
| Enable |
on / off |
Activates the Chord layer. Default on. |
| Ch |
1 to 16 |
MIDI channel this layer outputs on. Route your pad/piano instrument to receive only this channel. |
| Pattern |
1/bar, 2/bar, 4/bar |
How many chord stabs per bar. 1/bar plays each chord once per bar; 4/bar re-triggers every beat. |
Velocity
| Control | Range | What it does |
| Vel Base |
1 to 127 (default 96) |
MIDI velocity for every chord note before humanisation is applied. |
| Humanize |
0 to 40 |
Random +/- variation added to velocity each hit. 0 = machine-tight; 20+ starts to sound played. |
Strum
| Control | Range | What it does |
| Direction |
Up / Down |
Order in which chord notes are spread. Up = lowest note first; Down = highest note first. |
| Spread ms |
0 to 250 ms |
Time between successive chord notes during a strum. 0 = all notes simultaneous (no strum). 10-30 ms gives a light guitar feel; 60-120 ms is more theatrical. |
Arp tab
Arp - default Ch 2
A step arpeggiator that draws from the active chord's tones (optionally blended with the surrounding scale). Plays one note per step at the chosen rate and pattern.
Header
| Control | Range | What it does |
| Enable |
on / off |
Activates the Arp layer. Default off. |
| Ch |
1 to 16 |
MIDI output channel. |
Note pool
| Control | Range | What it does |
| Oct Low |
0 to 8 (default 3) |
Lowest octave included in the note pool. Notes below this octave are excluded. Raise to keep things out of mud. |
| Oct High |
0 to 8 (default 5) |
Highest octave included in the note pool. Narrowing the range between Oct Low and Oct High constrains motion to a smaller register. |
| Scale Blend |
0 to 100% (default 0) |
Blends diatonic scale tones into the note pool alongside strict chord tones. At 0, only notes belonging to the current chord are available. At 100, all scale degrees are equally available, making the arp sound more melodic and less harmonically locked. |
Pattern
| Control | Range | What it does |
| Pattern |
18 options |
The order in which notes from the pool are played. See below for descriptions of each.
|
| Rate |
1/4, 1/4T, 1/8, 1/8T, 1/16, 1/16T, 1/32 |
Duration of each arp step. 1/8 at 120 BPM = one note every 250 ms. See the Rate Values reference below. |
| Gate % |
5 to 100% (default 85) |
Fraction of the step duration the note is held on. 50% = staccato; 100% = legato (notes overlap into the next step at most rates). |
| Reset |
Reset on Chord / Reset on Bar / Free Running |
When the arp sequence restarts. Reset on Chord restarts the pattern every time the chord changes. Reset on Bar restarts at each bar boundary. Free Running never resets — the pattern continues regardless of chord changes or bar lines. |
| Swing |
0 to 100 (default 0) |
Delays even-numbered steps. At 0, all steps are evenly spaced. 50-70 gives a relaxed shuffle feel. |
Pattern descriptions
Up — low to high
Down — high to low
Up-Down — ascend then descend
Down-Up — descend then ascend
Random — random draw from pool each step
Chord — all tones simultaneously (block chord at arp rate)
Weave — ascending with alternating skips
Down-Weave — descending weave
Pedal — lowest note pedal between each ascending step
Top Pedal — highest note pedal between each descending step
Skip — every other note skipped upward
Skip-Reverse — skip pattern in reverse
Converge — outside notes moving inward
Diverge — inside notes moving outward
Alberti — low / high / mid / high (classical Alberti bass figure)
Random Walk — biased random steps up or down
Brownian — smoother random walk with momentum
Strum — rapid strum using Strum Direction and Spread settings
Probability
| Control | Range | What it does |
| Prob Free (toggle) |
on / off (default on) |
When on, all steps use the Default % probability. When off, beat-1 steps and accent-grid steps get their own separate probability values, enabling more rhythmically structured dropout. |
| Default % |
0 to 100 (default 100) |
Probability that any given step actually fires a note. 100 = always; 70 = occasional rests. |
| Beat 1 % |
0 to 100 (default 100) |
(Active when Prob Free is off.) Separate probability for the first beat of each bar — useful for ensuring the downbeat always lands. |
| Accent Rate |
same as Rate options |
(Active when Prob Free is off.) Grid rate at which "accent" positions are defined. Steps that fall on this grid use Accent % instead of Default %. |
| Accent % |
0 to 100 (default 100) |
Probability for steps that land on the accent grid. |
Velocity
| Control | Range | What it does |
| Base |
1 to 127 (default 100) |
Base MIDI velocity before humanisation. |
| Humanize |
0 to 40 (default 0) |
Random velocity variation per step. |
Strum (Strum pattern only)
| Control | Range | What it does |
| Direction |
Up / Down |
Note order for the Strum pattern. |
| Spread ms |
0 to 500 ms (default 15) |
Time between notes in the Strum pattern. |
Bass tab
Bass - default Ch 3
Generates a bass line using one of four independent styles. The style selector controls which sections below are active.
Header
| Control | Range | What it does |
| Enable |
on / off |
Activates the Bass layer. Default off. |
| Ch |
1 to 16 |
MIDI output channel. |
Style
| Style | What it plays |
| Root |
Plays the chord root on every chord change. Simple, locked feel. |
| Root-Fifth |
Alternates between the chord root and its perfect fifth. Classic bass movement. |
| Walking |
Diatonic scalar walk toward each chord change, with an optional chromatic approach note on the last beat before each new chord. Good for jazz/funk contexts. |
| Pattern |
A 16-step programmable pattern where each step is one of: Rest, Root, Fifth, or Oct+ (root an octave up). You set the number of active steps and the step rate. |
Register
| Control | Range | What it does |
| Octave |
0 to 5 (default 2) |
Register for the bass line, independent of the progression's global Octave setting. Octave 2 = C2 range. |
| Gate % |
5 to 100 (default 85) |
Note length as a fraction of the step duration. Lower values produce a more punchy, staccato feel. |
Velocity
| Control | Range | What it does |
| Base |
1 to 127 (default 96) |
Base MIDI velocity. |
| Humanize |
0 to 40 (default 0) |
Random velocity variation per note. |
Walking style options
| Control | Range | What it does |
| Chromatic % |
0 to 100 (default 50) |
Probability that the last step before a chord change uses a chromatic approach note (a semitone below the incoming root) rather than a diatonic one. 0 = fully diatonic; 100 = always chromatic approach. |
Pattern style options
| Control | Range | What it does |
| Step Rate |
1/4, 1/4T, 1/8, 1/8T, 1/16, 1/16T, 1/32 |
Duration of each step in the pattern. |
| Steps |
1 to 16 (default 8) |
How many steps in the active pattern. Steps beyond this count are ignored; the pattern loops from the beginning. |
| Swing |
0 to 100 (default 0) |
Shuffle feel — delays even steps. |
| Reset |
Reset on Chord / Reset on Bar / Free Running |
When the step counter resets. Same logic as the Arp reset mode. |
| Step 1 to Step 16 |
-- / R / 5 / +8 |
Per-step note assignment. -- = rest; R = chord root; 5 = perfect fifth above root; +8 = root an octave up. Steps beyond the active count (set by Steps above) are inactive. |
Melody tab
Melody - default Ch 4
Generates a single-voice melodic line using a noise-field pitch engine. Rhythm is produced by recursively subdividing bars; pitch is produced by integrating a fractal Brownian motion (fBm) signal over a chord-tone (or scale-tone) pool.
How it works
The melody is generated phrase-by-phrase at each new chord block. A rhythm grid is built first (bar subdivision), then each cell is assigned a pitch by sampling a continuously evolving noise landscape. The result is smooth, organic melodic contour with controllable density, leapiness, and harmonic adherence.
Header
| Control | Range | What it does |
| Enable |
on / off |
Activates the Melody layer. Default off. |
| Ch |
1 to 16 |
MIDI output channel. |
Window
Controls the pitch range the melody is allowed to move within.
| Control | Range | What it does |
| Anchor |
Fixed / Chord Root / Scale Root |
Determines the centre of the melody's pitch window.
Fixed — anchored to a fixed MIDI pitch set by Anchor Oct.
Chord Root — window follows the current chord's root note as the progression moves. Good for keeping melody sitting over each chord.
Scale Root — anchored to the global key root in the Anchor Oct octave; stays put regardless of chord movement.
|
| Anchor Oct |
3 to 6 (default 5) |
The octave of the anchor pitch. Octave 5 places the anchor near C5 (above middle C). |
| Range Up |
1 to 24 semitones (default 14) |
How many semitones above the anchor the melody is allowed to reach. 14 = roughly a major ninth. |
| Range Down |
1 to 24 semitones (default 7) |
How many semitones below the anchor the melody is allowed to reach. The default asymmetry (14 up / 7 down) biases motion upward. |
Rhythm
Controls note density and rest frequency via recursive bar subdivision.
| Control | Range | What it does |
| Cadence |
0 to 100 (default 40) |
Baseline subdivision probability. Low values produce long, sustained notes; high values produce busy, subdivided rhythms. Think of it as "how often does a note get split into two shorter notes." |
| Frenzy |
0 to 100 (default 30) |
Amplifies subdivision at high noise-slope regions in the phrase — creating bursts of faster notes at peaks of melodic energy. At 0, rhythm density is even; at high values, you get sudden fast fills followed by breathing space. |
| Space |
0 to 100 (default 20) |
Rest probability. Controls how frequently cells become rests rather than notes. Rests tend to cluster (correlated noise mask) so you get musical breathing phrases rather than random dropouts. Bar downbeats are immune to rests. |
| Max Note |
Whole / Half / 1/4 / 1/8 / 1/16 / 1/32 (default 1/4) |
Longest note the subdivision is allowed to produce. Notes longer than this are always split further. Useful for preventing long held notes when you want a more active line. |
| Min Note |
Whole / Half / 1/4 / 1/8 / 1/16 / 1/32 (default 1/16) |
Shortest note allowed. Subdivision stops at this depth. Raise Min Note to prevent very fast runs; lower it to allow 32nd-note bursts. |
Pitch
Controls melodic contour and harmonic character using a noise-field engine.
| Control | Range | What it does |
| Chaos |
0 to 100 (default 40) |
Controls two linked properties of the pitch landscape: how fast it undulates (speed of the fBm cursor) and how wide each step can leap (interval magnitude). Low chaos = stepwise, conjunct motion. High chaos = wide leaps, rapidly changing direction. |
| Frisson |
0 to 100 (default 60) |
Probability that bar downbeats land on a primary chord tone (root, third, or fifth) with a one-note approach. High Frisson gives each bar a clear harmonic arrival; low Frisson allows downbeats to land on any available scale tone. |
| Colour |
0 to 100 (default 0) |
Blends diatonic scale tones into the note pool alongside chord tones. At 0, only chord tones are available — the melody is purely harmonic. At 100, the full diatonic scale is always available. The blend is applied per-note via noise so it varies organically across the phrase rather than switching on or off globally. |
Note shape
| Control | Range | What it does |
| Vel Base |
1 to 127 (default 96) |
Base MIDI velocity for all melody notes. |
| Humanize |
0 to 40 (default 6) |
Random velocity variation per note. A small default (6) is on by default to immediately sound less robotic. |
| Gate % |
5 to 100 (default 90) |
Note length as a fraction of its rhythmic duration. 90% = nearly legato; 40% = articulated staccato. |
Getting started with melody
Start with Cadence 35-50, Frenzy 20-30, Space 15-25, Chaos 35-50, Frisson 50-70, Colour 0-20. These defaults sit in a "conversational" range. Then push Chaos up for more angular phrasing or Colour up for a more scale-based, lyrical feel.
Modes reference
| Mode | Semitone intervals from root | Character |
| Major (Ionian) |
0 2 4 5 7 9 11 |
Bright, resolved, conventional Western major. |
| Lydian |
0 2 4 6 7 9 11 |
Major with raised 4th. Dreamy, floating. |
| Lydian Dominant |
0 2 4 6 7 9 10 |
Lydian with flat 7. Jazz/fusion dominant feel. |
| Mixolydian |
0 2 4 5 7 9 10 |
Major with flat 7. Rock, blues, folk. |
| Minor (Natural) |
0 2 3 5 7 8 10 |
Dark, melancholic, most common minor. |
| Dorian |
0 2 3 5 7 9 10 |
Minor with raised 6th. Funky, hopeful minor. |
| Phrygian |
0 1 3 5 7 8 10 |
Minor with flat 2. Spanish, flamenco, metal. |
| Locrian |
0 1 3 5 6 8 10 |
Diminished root chord. Unstable, dissonant. |
| Harmonic Minor |
0 2 3 5 7 8 11 |
Natural minor with raised 7th. Classical, dramatic. |
Rate values
All rates are specified in beats (1 beat = 1 quarter note at any tempo).
| Label | Duration (beats) | At 120 BPM |
| 1/4 | 1.0 | 500 ms |
| 1/4T | 2/3 | 333 ms (triplet quarter) |
| 1/8 | 0.5 | 250 ms |
| 1/8T | 1/3 | 167 ms (triplet eighth) |
| 1/16 | 0.25 | 125 ms |
| 1/16T | 1/6 | 83 ms (triplet sixteenth) |
| 1/32 | 0.125 | 63 ms |
Default MIDI channels
| Layer | Default channel | Change in |
| Chord | Ch 1 | Chord tab header |
| Arp | Ch 2 | Arp tab header |
| Bass | Ch 3 | Bass tab header |
| Melody | Ch 4 | Melody tab header |
All four channels are remappable to any 1-16. If you route two layers to the same channel they will merge — this is intentional if you want one instrument to play both.