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.

  1. Insert Cordial on a MIDI track (the "source" track).
  2. Create one virtual-instrument track for each layer you want (Chord, Arp, Bass, Melody).
  3. 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).
  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

ControlRangeWhat 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

ControlRangeWhat 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

ControlRangeWhat 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

ControlRangeWhat 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

ControlRangeWhat it does
Enable on / off Activates the Arp layer. Default off.
Ch 1 to 16 MIDI output channel.

Note pool

ControlRangeWhat 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

ControlRangeWhat 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

ControlRangeWhat 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

ControlRangeWhat 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)

ControlRangeWhat 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

ControlRangeWhat it does
Enable on / off Activates the Bass layer. Default off.
Ch 1 to 16 MIDI output channel.

Style

StyleWhat 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

ControlRangeWhat 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

ControlRangeWhat 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

ControlRangeWhat 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

ControlRangeWhat 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

ControlRangeWhat 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.

ControlRangeWhat 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.

ControlRangeWhat 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.

ControlRangeWhat 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

ControlRangeWhat 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

ModeSemitone intervals from rootCharacter
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).

LabelDuration (beats)At 120 BPM
1/41.0500 ms
1/4T2/3333 ms (triplet quarter)
1/80.5250 ms
1/8T1/3167 ms (triplet eighth)
1/160.25125 ms
1/16T1/683 ms (triplet sixteenth)
1/320.12563 ms

Default MIDI channels

LayerDefault channelChange in
ChordCh 1Chord tab header
ArpCh 2Arp tab header
BassCh 3Bass tab header
MelodyCh 4Melody 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.