Bird Notation
Bird is a musical notation designed for composition of modern electronic music. Think of it as Markdown for music.File Structure
A.bird file has these sections, in order:
- Signature — set BPM, key, and scale
- Global track definitions — declare tracks with their instruments, effects, and channel strips
- Motif definitions (optional) — reusable MIDI pattern fragments
- Arrangement — define the section order and bar counts
- Section definitions — write the musical content for each section
[!NOTE] The olderchandchannelskeywords are still accepted by the parser for backward compatibility, but new files should usetrkandtracks.
Motif Definitions
Motifs are reusable MIDI pattern fragments defined at the top level of a bird file. They appear between track definitions and the arrangement. A motif is a namedPatternGroup — it supports the full pattern vocabulary (p/v/n/t/sw/MPE/voice layers).
motif <name> <length_beats>. The body uses the same 2-space indent as sections and tracks. All pattern features work inside motifs: bracket subdivisions, euclidean rhythms, dotted/triplet durations, voice layers, MPE, swing, groove.
Motif Operations
When referencing a motif with@name(ops), operations are applied left to right, comma-separated:
Tokens Reference
Structure
Arrangement
Thearr block lists sections with their bar lengths, indented:
Key Signature
Sets the musical key for the project. Supports all 12 roots with sharps/flats, major and minor:Pattern (p)
Defines the rhythmic grid. Each token is one note slot. Positive = note-on, _ = rest.
Duration Tokens
Dotted (1.5× duration) — append
. or d:
Double dotted:
q.. = 1.75 beats (qdd).
Triplet (⅔× duration) — append , or t:
Rests
.or_— rest of the same length as the previous duration_w,_q,_x,_xx,_s,_ssetc. — explicit rest durations (same naming as above, prefixed with_)
Note:.as a standalone token (space-separated) means rest..immediately after a duration letter (no space) means dotted:q.= dotted quarter (1.5 beats),q .= quarter then rest.
Duration Multiplier
Append a number to any duration token to multiply its length. Works for both note-ons and rests:
This is useful for held notes that span multiple bars, or for compactly expressing long rests:
Timing Rule
Allp lines in a section must sum to the same total bar length. A 4/4 bar = 384 ticks = 4 quarters = 8 eighths = 16 sixteenths. Mismatched lengths cause desync.
Examples
Ties
Combine durations with~ (tilde) to express held notes that span standard note values — just like ties in sheet music:
Tuplets (Bracket Subdivision)
Divide any duration into N equal parts using bracket notation. Inside brackets,- (or x) marks a hit, . (or _) marks a rest:
v, n, and t lines are visual grouping only — the parser strips them. They keep tuplet values visually aligned with the p line.
Euclidean Rhythms
Distribute K hits evenly across N slots using the Bjorklund algorithm. Syntax:duration(k,n) or duration(k,n,r) where r is an optional rotation offset:
duration / n beats. Hits and rests are distributed as evenly as possible by the Bjorklund algorithm.
Motif References
Reference a named motif as a pattern token. The motif occupies itslength_beats on the timeline and brings its own notes, velocities, and timing:
... on v/n lines for visual alignment (no-op, purely cosmetic):
Velocity (v)
Sets the MIDI velocity (0–127) for each note slot. Cycles through values when the pattern repeats.
Values are clamped to 0–127. The velocity list cycles independently of the pattern length. Omitting the
v line entirely also yields velocity 80 — the same value . produces.
Notes (n)
Specifies pitches for each pattern slot. Supports multiple formats that can be mixed.
Formats
Note Names
Standard note names with optional accidentals and octave:Chord Names
Prefix with@. Optionally prefix octave before root letter.
Octave prefix:
@3Cm7 = C minor 7th starting at octave 3.
Simultaneous Notes (Chords)
Multiple plain notes on onen line play simultaneously as a chord:
Bracket Chords (Explicit Voicings)
Use[note note note] on an n line for per-step chord voicings. Each bracketed group counts as one note step that cycles with the pattern:
Sequential Notes
When using-, +N, or @chords, each token is a separate step that cycles with the pattern:
Layering
Multiple velocity + note groups can share one pattern (multi-layer voicings):Swing (sw)
Adds groove by shifting every other note later. Applied per channel per section.
The optional
~N adds random ±N ticks of jitter to all notes for extra humanization.
Per-Note Timing (t)
Fine-grained timing offsets per pattern slot. Values are in ticks (1 tick ≈ 1/96 of a beat). Cycles like velocity.
- Start offset — shifts the note-on position:
- Positive = late (behind the beat / laid back)
- Negative = early (ahead of the beat / pushing)
0= on grid
- End offset (optional, after
/) — adjusts the note-off (release) by N ticks:- Positive = longer held note
- Negative = shorter (more staccato)
- Defaults to
0if omitted
CC Curves (cc)
Define MIDI continuous controller curves. Supports both multi-line (preferred) and single-line (legacy) formats.
Multi-line format (preferred)
Uses the same position/value/shape sub-lines asauto blocks:
Single-line format (legacy, still supported)
Pitch Bend (pb)
Same multi-line format as cc but without a controller number. Values range from -8191 to +8191.
pb 0 ramp q2 8191 ramp q2 0
Aftertouch (at)
Channel aftertouch (key pressure). Same format as pb. Values 0–127.
at 0 ramp q2 90 hold q ramp q 0
Automation (auto)
Define automation curves using breakpoints with positions, values, and interpolation shapes. Each block has a header line and up to three sub-lines:
Sub-Lines
Shape Keywords
Examples
Automation Macro Names
Semantic macro names are mapped to real plugin parameter names automatically:Plugin Keywords
Instruments
Effects
Channel Strips
Automation Macro Names
Semantic macro names are mapped to real plugin parameter names automatically. Use these in step or ramp automation.Synth Macros
Drum/Bass Macros
Effect Macros
Channel Strip Macros (Console 1)
cont — Pattern Continuity
Use cont in a section to continue a channel’s pattern phase from the previous section (rather than restarting from beat 1):
cont, each section resets the pattern/note/velocity counters to 0. With cont, the counters pick up where the previous section left off, creating seamless transitions.
Track Types
Complete Example
Tick Reference
All timing in Bird is based on a 384-tick bar (96 ticks per beat in 4/4):
The
sw and t timing features operate in this tick space.