Skip to content

The score language

One of the two ways to write a song in dew: a text description of the whole piece, compiled to real patterns, notes and clips.

What it is for

Sketching a whole arrangement faster than you can draw it. You say what the music is — a key, a metre, a progression, a rhythm, a voicing, a melody, a counterpoint answering another voice — and the compiler works out the notes. It is the fifth tab, checked as you type, compiled with ⌘R. The text is stored in the project, so recompiling updates what it wrote last time and leaves anything you have since edited by hand alone.

song {
  title "Late Rhodes"
  tempo 78 bpm
  meter 4/4
  grid  auto
  key   Eb major
  seed  0x5A17ED0C0A
}

channel rhodes {
  mixer    1
  range    Eb3..Eb5
  velocity 38 +- 11 per note
}

channel bass {
  mixer    2
  range    Eb1..Eb3
  velocity 47 +- 6 per bar
}

channel pad {
  mixer    3
  range    Bb3..Bb5
examples/rhodes.score

No expressions

There is no expression language: no arithmetic, no variables, no conditionals. Completion is therefore a table lookup, and the grid is worked out before a note is generated.

Durations

p/q is always a note value. 1/8t is an eighth-note triplet, 1/4. a dotted quarter. xN is a share of what is left over and anything else is an exact length.

| is a bar-line assertion, checked once the shares are known. It turns “the section length changed and everything shifted” into one message.

rhythm swung   { 1/4t 1/8t 1/4t 1/8t 1/4t 1/8t 1/4t 1/8t }
rhythm comp    { 1/4 - 1/8 1/8 1/4 1/4 }
rhythm hold    { 1/1 }
rhythm walk    { 1/4 1/4 1/4 1/8 1/8 }
rhythm fill    { 1/8t x6 1/16 x4 1/4 }

harmony head {
  I 1 bar | vi 1 bar | ii 2 bars | V7 2 bars | I 2 bars
}

harmony turn {
  iii 1 bar | V7/ii 1 bar | ii 2 bars | bII7 1 bar | I 1 bar | IV 1 bar | V7 1 bar
}

Chords

Case carries quality, ^ carries inversion and / carries tonicisation, as in V7/iv. An uppercase A–G starts an absolute chord; a b, # or roman letter starts a numeral.

What it cannot say

dew stores one tempo and one metre for a whole project, so a section in 3/4 inside a 4/4 project is not expressible. A note’s position is a whole number of steps, so the grid is the least common multiple of what the durations need: sixteenths and eighth-note triplets meet at twelve, and a thirty-second against any triplet is refused.

Every block and key