Skip to main content

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 three sections, in order:
  1. Global channel definitions — declare channels with their instruments, effects, and channel strips
  2. Arrangement — define the section order and bar counts
  3. Section definitions — write the musical content for each section
# 1. Global channel definitions
ch 1 kick
  plugin kick
  strip console1

ch 2 bass
  plugin mini
  fx delay

ch 3 lead
  plugin jup8

# 2. Arrangement
arr
  intro 4
  verse 8
  chorus 8

# 3. Section definitions
sec intro
  ch 1 kick
    p x _ x _ x _ x _
    v 100 - 80 - 90 - 85 -
    n C1

sec verse
  ch 2 bass
    p q q q q
    v 90 70 80 60
    n C2 - Eb2 G2

Tokens Reference

Structure

TokenPurposeSyntaxExample
chDefine a channelch <number> <name>ch 1 kick
pluginAssign instrument pluginplugin <keyword>plugin mini
fxAssign insert effectfx <keyword>fx delay
stripAssign channel stripstrip <keyword>strip console1
typeSet track typetype midi or type audiotype audio
arrStart arrangement blockarr then indented entriessee below
secStart section definitionsec <name>sec verse
bSet global bar countb <bars>b 4
keySet key signaturekey <root> [mode]key Eb min
contContinue pattern phase across section boundarycontcont

Arrangement

The arr block lists sections with their bar lengths, indented:
arr
  intro 4
  verse 8
  chorus 8
  verse 8
  chorus 8
  outro 4

Key Signature

Sets the musical key for the project. Supports all 12 roots with sharps/flats, major and minor:
key C            # C major
key Eb min       # Eb minor
key F# minor     # F# minor
key Bb           # Bb major

Pattern (p)

Defines the rhythmic grid. Each token is one note slot. Positive = note-on, _ = rest.

Duration Tokens

TokenDurationTicks
wwDouble whole note768
wWhole note (1 bar in 4/4)384
qqHalf note192
qQuarter note (1 beat)96
xxEighth note48
xSixteenth note24
Dotted (1.5× duration) — append d:
TokenDurationTicks
wdDotted whole576
qdDotted quarter144
xxdDotted eighth72
xdDotted sixteenth36
Triplet (⅔× duration) — append t:
TokenDurationTicks
wtWhole triplet256
qtQuarter triplet64
xxtEighth triplet32
xtSixteenth triplet16

Rests

  • _ — rest of the same length as the previous duration
  • _w, _q, _x, _xx etc. — explicit rest durations (same naming as above, prefixed with _)

Timing Rule

All p 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

p q q q q          # 4 quarter notes = 1 bar
p x x x x x x x x x x x x x x x x   # 16 sixteenths = 1 bar
p qq _ qq _        # half note, rest, half note, rest = 1 bar
p q _ q q          # quarter, rest, quarter, quarter
p qd xx q q        # dotted quarter + eighth + two quarters = 1 bar

Velocity (v)

Sets the MIDI velocity (0–127) for each note slot. Cycles through values when the pattern repeats.
SyntaxMeaningExample
80Absolute velocityv 80
-Repeat previous velocityv 80 - - -
+N / -NRelative offset from previousv 80 +10 -20
Values are clamped to 0–127. The velocity list cycles independently of the pattern length.
v 100 60 80 40      # cycling 4 velocities
v 90 -               # alternating: 90, 90, 90, ...
v 80 +10 +10 -30    # 80, 90, 100, 70, 80, 90, ...

Notes (n)

Specifies pitches for each pattern slot. Supports multiple formats that can be mixed.

Formats

FormatExampleDescription
MIDI numbern 60Middle C
Note namen C4Middle C (with octave)
Chord namen @Cm7C minor 7th chord (all notes play simultaneously)
Repeatn 60 -Repeat previous pitch
Relative offsetn 60 +7 +5Add/subtract semitones from previous
Simultaneous notesn 60 64 67All on one line = chord (C major triad)

Note Names

Standard note names with optional accidentals and octave:
C4  D4  E4  F4  G4  A4  B4     # naturals
C#4 D#4 F#4 G#4 A#4            # sharps
Db4 Eb4 Gb4 Ab4 Bb4            # flats
Octave 4 starts at MIDI 60 (Middle C). Omitting octave defaults to 4.

Chord Names

Prefix with @. Optionally prefix octave before root letter.
ChordSyntaxNotes
Major@C, @Cmaj, @CMC E G
Minor@Cm, @Cmin, @C-C Eb G
Dominant 7th@C7, @Cdom7C E G Bb
Major 7th@Cmaj7, @CM7C E G B
Minor 7th@Cm7, @Cmin7, @C-7C Eb G Bb
Diminished@Cdim, @CoC Eb Gb
Diminished 7th@Cdim7, @Co7C Eb Gb A
Half-diminished@Cm7b5, @CøC Eb Gb Bb
Augmented@Caug, @C+C E G#
Augmented 7th@Caug7, @C+7C E G# Bb
Suspended 2nd@Csus2C D G
Suspended 4th@Csus4, @CsusC F G
Dominant 9th@C9C E G Bb D
Minor 9th@Cm9, @Cmin9C Eb G Bb D
Major 9th@Cmaj9, @CM9C E G B D
Power chord@C5, @CpowerC G
Octave prefix: @3Cm7 = C minor 7th starting at octave 3.

Simultaneous Notes (Chords)

Multiple plain notes on one n line play simultaneously as a chord:
n 41 48 53 56       # MIDI numbers = chord
n E2 C3 F3 Ab3      # note names = chord

Sequential Notes

When using -, +N, or @chords, each token is a separate step that cycles with the pattern:
n C4 - Eb4 G4       # step 1: C4, step 2: C4, step 3: Eb4, step 4: G4
n 60 +7 +5 -12      # step 1: 60, step 2: 67, step 3: 72, step 4: 60
n @Cm7 @Fm7 @G7     # step 1: Cm7 chord, step 2: Fm7, step 3: G7

Layering

Multiple velocity + note groups can share one pattern (multi-layer voicings):
p w _ w _
  v 70 90 100
    n @Cm7 @Fm7 @G7
  v 60
    n +7 +7 +8        # second layer at different velocity
  v 30
    n +12              # third layer (higher octave, soft)

Swing (sw)

Adds groove by shifting every other note later. Applied per channel per section.
sw <percent> [~<humanize>]
ValueFeel
50Perfectly straight (default)
55Light swing
60Medium swing
67Triplet swing (classic MPC feel)
75Heavy swing
The optional ~N adds random ±N ticks of jitter to all notes for extra humanization.
sw 60           # medium swing
sw 67 ~5        # triplet swing + ±5 tick humanize
sw 50 ~3        # straight timing + slight random jitter

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.
t <offset> <offset> ...
  • Positive = late (behind the beat / laid back)
  • Negative = early (ahead of the beat / pushing)
  • 0 = on grid
p x  x  x  x
v 90 60 80 50
n C4 Eb4 G4 Bb4
t 0  +5 -3  0       # C4 on grid, Eb4 late, G4 early, Bb4 on grid
One tick = 1/24 of a sixteenth note = 1/96 of a quarter note.

Automation

Step-Based Automation

Any unrecognized keyword inside a channel block is treated as a step automation macro. Values cycle with the pattern.
brightness 80 40 60 90     # brightness cycles: 80, 40, 60, 90
cutoff 100 50 75 25        # cutoff cycles similarly

Continuous Automation (Ramp)

Use ramp for time-based sweeps across a section:
brightness ramp 0.0 1.0     # sweep brightness from 0% to 100% over 1 bar
drive ramp 0.5 0.8          # subtle drive increase

Plugin Keywords

Instruments

KeywordPluginType
synthsPigmentsGeneral synth
miniMini V3Analog mono synth
cs80CS-80 V4Poly synth
prophetProphet-5 VPoly synth
jup8Jup-8 V4Poly synth
dx7DX7 VFM synth
buchlaBuchla Easel VWest coast
surgeSurge XTOpen source synth
kickKick 3Kick drum synth
drumsHeartbeatDrum machine
bassMini V3Bass (uses Mini V)
sublabSubLabXLSub bass
monomentMonoment BassBass synth

Effects

KeywordPlugin
delayTube Delay
valhallaValhallaRoom
widenerSoftube Widener
soothesoothe2
tubeDist TUBE-CULTURE

Channel Strips

KeywordPlugin
console1Console 1

Automation Macro Names

Semantic macro names are mapped to real plugin parameter names automatically. Use these in step or ramp automation.

Synth Macros

MacroControls
brightness / cutoffFilter cutoff frequency
resonanceFilter resonance
attackAmp/filter attack time
decayAmp/filter decay time
releaseAmp/filter release time

Drum/Bass Macros

MacroControls
pitchOscillator/sound pitch
decaySound decay time
volumeOutput level
driveDistortion/harmonics amount

Effect Macros

MacroControls
mixWet/dry mix
decayReverb decay / delay feedback
widthStereo width

Channel Strip Macros (Console 1)

MacroControls
input_gainInput gain
comp_threshCompressor threshold
comp_ratioCompressor ratio
eq_mid_gainEQ mid band gain
low_cutHigh-pass filter

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):
sec verse
  ch 1 arp
    cont
    p x x x x x x x x
    v 80 60 70 50
    n C4 E4 G4 C5
Without 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

TypeDescription
midiMIDI track (default) — plays notes through instrument plugin
audioAudio track — plays audio samples or Lyria-generated audio
ch 4 pad
  type audio

Complete Example

key Eb min
b 4

ch 1 kick
  plugin kick
  strip console1

ch 2 hihat
  plugin drums

ch 3 bass
  plugin mini
  fx delay

ch 4 chords
  plugin jup8
  strip console1

arr
  intro 4
  verse 8
  chorus 8

sec intro
  ch 1 kick
    p q _ q _
    v 100 - 80 -
    n C1

  ch 2 hihat
    sw 60
    p x x x x x x x x x x x x x x x x
    v 60 40 80 40 60 40 80 40 60 40 80 40 60 40 80 40
    n F#2

sec verse
  ch 1 kick
    p q _ q q
    v 110 - 90 100
    n C1

  ch 2 hihat
    sw 60 ~3
    p x x x x x x x x x x x x x x x x
    v 70 40 90 40 70 40 90 50 70 40 90 40 70 40 90 50
    n F#2
    t 0 +3 -2 0 +1 +4 -1 0 0 +2 -3 0 +1 +3 -2 0

  ch 3 bass
    p xx xx _ xx xx xx _ xx
    v 100 80 - 90 85 100 - 70
    n Eb2 - - Gb2 Ab2 Bb2 - Eb2
    brightness ramp 0.3 0.8

  ch 4 chords
    p w _ w _
    v 70
    n @Ebm7 - @Abm7 @Bb7

sec chorus
  ch 1 kick
    p q q q q
    v 120
    n C1

  ch 3 bass
    cont
    p xx xx xx xx xx xx _ xx
    v 110 90 100 80 110 90 - 70
    n Eb2 Gb2 Ab2 Bb2 Eb3 Bb2 - Gb2

  ch 4 chords
    p qq qq qq qq
    v 85 75 90 80
    n @Ebm7 @Abm7 @Bb7 @Gbmaj7

Tick Reference

All timing in Bird is based on a 384-tick bar (96 ticks per beat in 4/4):
UnitTicks
Whole note (bar)384
Half note192
Quarter note (beat)96
Eighth note48
Sixteenth note24
One t tick1
The sw and t timing features operate in this tick space.