Tonic Midi
This page is a personal project demonstrating how to build generative
music with chord swells, evolving drums, and melodic phrases. It reacts to
an
external MIDI clock , so press play on a hardware or software
sequencer that sends clock, and the patterns will sync up automatically.
Colorful Chord Swell Pattern
This pattern selects a musical scale based on “color” and creates chords
that swell into each other. Adjust how long chords last
(swellDuration ), how they overlap, and how many chord
extensions (chordComplexity ) are added.
color:
Warm
Bright
Dark
Mysterious
swellDuration (steps):
overlap (steps):
chordComplexity (0..1):
Update Chord Pattern
Evolving Drum Pattern
This drum pattern morphs in real time while holding onto a core groove.
drumIntensity controls how dense the hits get, and
flavor picks the characteristic style.
drumIntensity (0..1):
flavor:
ambient
tribal
electronic
lofi
Update Drum Pattern
PhraseContourMelody (Melody on channel 5)
A multi-bar melodic line divided into subSections like “build” or
“peak.” You can define how many bars the phrase lasts, steps per bar,
and how often “spice” (approach notes) appears. The pattern re-shapes
each time it completes a phrase.
phraseBars:
subSections (comma-sep):
stepsPerBar:
cadenceBeats:
melodicDensity (0..1):
baseVelocity (1..127):
tensionEmbellishProb (0..1):
Update Melody Pattern
Energy Manager Controls
These quick switches alter “hype” (how busy/loud everything is) and
“tension” (how dissonant or stable chord/melody structures become). This
is a handy shortcut for performing live arrangement changes.
Set Hype: LOW
Set Hype: MEDIUM
Set Hype: HIGH
Set Tension: NONE
Set Tension: LOW
Set Tension: MID
Set Tension: HIGH
Real-Time LFOs
Add continuous LFO modulation to any MIDI channel, layered on top of
your existing patterns. Multiple LFOs can affect the same channel.
MIDI Channel:
Channel 1
Channel 2
Channel 3
Channel 4
Channel 5
Channel 6
Channel 7
Channel 8
Channel 9
Channel 10
Channel 11
Channel 12
Channel 13
Channel 14
Channel 15
Channel 16
LFO Preset:
Light Vibrato
Rapid Filter Flutter
Square-Wave Tremolo
Ping-Pong Pan
Wobbly Resonance
Subtle Chorus
Stutter Gate
FM Clang
Add LFO
Active LFOs:
Arrangement Sweeps / One-Shots
Schedule a single, multi-step sweep (e.g., slowly opening a filter) that
starts at the next bar boundary, runs once, and then finishes. Choose a
channel, a duration in steps, and a preset.
MIDI Channel:
Channel 1
Channel 2
Channel 3
Channel 4
Channel 5
Channel 6
Channel 7
Channel 8
Channel 9
Channel 10
Channel 11
Channel 12
Channel 13
Channel 14
Channel 15
Channel 16
Duration (steps):
16 Steps
32 Steps
64 Steps
Sweep Preset:
Slow Filter Rise
Deep Breathing Pad
Swelling Resonance
Very Slow Random Drift
Enqueue Sweep
Queued Sweeps:
Try changing flavors, note durations, chord complexities, or hype/tension
levels at any time. I'm continuing to build out new pattern ideas and ways
of chaining them together. The goal is a simple browser-based setup that
hooks to your hardware via Web MIDI, letting you spontaneously jam
evolving tracks without a DAW.