Choosing Symbols for a Compact Musical Syntax

Here's a few principles I've used to determine how Cosy's syntax should be designed:

  • Pitch and rhythm are the most important musical parameters. It should be as easy as possible to input these parameters. This should be representable as a single letter.
  • Symbols for the basic musical parameters (pitch/rhythm) should be case-insensitive. I don't want to worry if I accidentally have the shift key down or caps lock is on
  • The meaning of symbols should not depend on context. An 'e' is an 'e' no matter where it occurs. Otherwise the rules for what an 'e' means create complications and add a learning curve barrier. Note the situation with 'p' explained below: 'p' and 'p5' are different symbols so they do not depend on context.

Given these principles, let's take a look at the alphabet and how it's mapping to musical concepts in Cosy.

A → pitch A [aug → augmented interval]
B → pitch B
C → pitch C
D → pitch D [dim → diminished interval]
E → pitch E [ei → eighth note duration]
F → pitch F [fo → forte intensity]
G → pitch G
H → duration half
I → numeric interval in semitones (i12 is an octave)
J → imaginary constant sqrt(-1) [tentative, for graphics and experimental music]
K → unused
L → unused
M → Major or minor interval (M3 is major 3rd, m3 is minor 3rd)
N → unused
O → unused
P → intensity piano [pN → perfect interval (p5 is perfect fifth)]
Q → duration quarter
R → duration thirty-second ['t' taken by triplet, 'h' by half, 'i' by interval]
S → duration sixteenth
T → duration modifier triplet
U → numeric duration value (u480 is 480 MIDI ticks) [deprecated, will switch to 'dur' / 'duration']
V → numeric velocity value (v100 is the MIDI velocity 100) [will also support 'vel' / 'velocity']
W → duration whole note
X → duration sixty-fourth note ['s' taken by sixteenth, 'i' by interval]
Y → numeric pitch (frequency) value (y60 is MIDI pitch 60) [deprecated, will switch to 'pit' / 'pitch']
Z → unused

For the most part, this mapping works out ok. But some things I don't like:

  • eighth note is not 'e'
  • forte is not 'f'

The weird mappings for thirty-second and sixty-fourth notes don't bother me too much, because these durations are not that common, and the mappings for these actually feel somewhat intuitive to me.

At first I imposed the requirement that all note names must have an octave number (C4, D3, F#5, etc), and eighth note was represented as 'e'. But very often a pitch is in the same octave as the previous pitch, so this resulted in a lot of extra typing that goes against what Cosy is all about (being as concise as possible). So it was a very nice improvement to make octave numbers optional. At this point I had to choose another symbol for eighth note. I tried 'i' but it didn't feel right. I decided I should always use the first letter or letters of a musical term, so I ended up going with 'ei' for eighth note.

I used similar reasoning for forte being 'fo'. It is possible to spell out 'eighth' and 'forte' instead of 'ei' and 'fo', but I prefer the double letter forms because I want to type as little as possible.