Back to Home

RhythML

A plaintext markup language for sequencing pitch and control voltage patterns in modular synthesizers. Think tracker notation meets CSV.


What Is RhythML?

RhythML is a plaintext format for writing musical sequences in modular synthesizer environments, particularly VCV Rack. It's designed to be human-readable, easy to edit, and trivially shareable—you can write it in any text editor, paste it into Discord, or commit it to version control.

Rather than trying to replace traditional sheet music, RhythML embraces its niche: modular-oriented tablature for voltage-controlled sequencing. It's agnostic about what you're controlling—pitch, gates, velocity, filter cutoff, or any other CV parameter.

The Format

RhythML uses a simple grid structure, like a spreadsheet or CSV file:

  • Rows represent sequence steps (no inherent duration—external clocking determines speed)
  • Columns represent output signals, separated by commas
  • Cells contain values in various formats

Simple Example: 4-Step Arpeggio

C4 ? Pitch, W ? Gate, 100% ? Velocity
D4,          W,        80%
E4,          W,        60%
G4,          W,        100%

The first row defines three outputs: pitch, gate, and velocity. Each subsequent row advances the sequence one step. Text after ? is a comment and ignored by the parser.

Supported Value Formats

RhythML is flexible about how you express voltages:

Decimal Voltages
Direct specification: 5, -3.5, 12
Scientific Pitch
Standard note names: C4, G#3, Db5 (1V/octave)
MIDI Notes
MIDI note numbers: m60, m72
Semitones
Relative pitch: s0, s7, s-12
Cents
Microtonal pitch: 0ct, 7ct, -12ct
Hertz
Frequency: 440Hz, 32Hz, 1Hz
Percentages
Scaled values: 50%, 100%, -12.5% (÷10 for voltage)
Gates & Triggers
W or | = full-width gate (10V)
T or ^ = trigger pulse (1ms low, 1ms high)
X, R, or _ = retrigger (1ms low, then 10V)
Empty Cells
Hold previous voltage (except after gates, which revert to 0V)

Design Philosophy

Modular-First Thinking

RhythML doesn't try to be sheet music. There are no sections, repeats, or explicit timing. Instead, each cell is parsed as a discrete voltage output. You decide what to do with those voltages.

"You should think in a modular synth way: each cell is parsed and converted into an output value."

Inspired by Trackers

The format draws from tracker software's emphasis on directness and efficiency. If you've used FastTracker, Renoise, or LSDj, RhythML will feel familiar—but adapted for modular synthesis rather than sample playback.

No Universal Standard

RhythML acknowledges that "there is never going to be a universal standard for music." Rather than trying to be everything to everyone, it prioritizes interoperability over centralization. It's plaintext, so you can use it anywhere, with or without specialized software.

Example Use Cases

8-Bar Chord Progression (2-5-1)

0 ? I,    W,  100% ? v
0,        ,   80%
0,        ,   60%
0,        W,  40%
s2 ? ii,  W,  100%
s2,       ,   80%
s2,       ,   60%
s2,       W,  40%
s7 ? V,   W,  100%
s7,       ,   80%
s7,       ,   60%
s7,       W,  40%

Polyrhythmic Drums

W ? Kick, T ? Snare, W ? HiHat
,         ,         W
W,        ,         W
,         T,        W
W,        ,         W
,         ,         W
W,        ,         W
,         T,        W

Audio-Rate Waveform (Sine Wave)

0%
38.2%
70.7%
92.4%
100%
92.4%
70.7%
38.2%
0%
-38.2%
-70.7%
-92.4%
-100%
-92.4%
-70.7%
-38.2%

Why Plaintext?

  • Universal: Edit in any text editor, no special software required
  • Shareable: Copy-paste into chat, email, forums, or version control
  • Human-readable: Understand at a glance what a sequence does
  • Composable: Use your favorite text manipulation tools—sed, awk, vim macros
  • Versionable: Track changes in git, see diffs between versions
  • Archival: No proprietary formats to decode in 20 years

Current Implementation

RhythML is currently implemented in Spellbook, a module in T's Musical Tools for VCV Rack. Spellbook provides a text editor interface where you can write and edit RhythML sequences directly in your modular patches.

The format is designed to be implementation-agnostic, though—anyone could write a parser for it in any environment that needs CV sequencing.

The Vision

RhythML exists because modular synthesis deserves a text format. MIDI has standard files. DAWs have project formats. But voltage-controlled sequences? Those were locked in proprietary modules or fleeting patch cable configurations.

By making sequences plaintext, RhythML makes them first-class citizens—things you can save, share, discuss, and iterate on. It's infrastructure for a more collaborative modular synthesis community.

Back to Home