RTTTL explained for musicians — from staff notation to ringtone text
You read sheet music but RTTTL strings look like line noise? Here's the format mapped onto concepts you already know — durations, octaves, key limitations and all.
If you come to motor music from the music side rather than the drone side, RTTTL looks hostile: mountain:d=4,o=5,b=140:8e,8f#,8g,8a... — where's the staff? What's d=4? Why are there no flats?!
Good news: if you read notation, you already know everything RTTTL encodes. It's just a 1990s Nokia engineer's idea of a lead sheet. Here's the translation table.
The three sections
Every RTTTL string is name : defaults : notes.
mountain — an arbitrary label, max 10 characters. Ignore it musically.
d=4,o=5,b=140 — the defaults, and this is pure time-signature-and-clef thinking:
b=140is your tempo marking. Quarter note = 140. Exactly the metronome number on a score.d=4is the default duration — any note written without an explicit length is a quarter note (4 = quarter, 8 = eighth, 2 = half, just like note-value naming).o=5is the default octave — any note without an explicit octave lands here. Octave 5 starts at A4=concert... actually let's be precise, because this trips everyone up: RTTTL octave 5 runs from C5 to B5 in scientific pitch notation on most players, and RTTTL octave 6 notea6is the A above that. Middle C (C4) is RTTTL'sc4, the bottom of its range.
Reading a note token
16f#6. decodes right-to-left as a musician would:
16— sixteenth note (duration first, always)f#— the pitch class6— octave.— a dot, exactly your dotted-note dot: duration × 1.5
If duration or octave are missing, the defaults from section two apply. So in d=4,o=5, a bare g is a quarter-note G5. This is why well-chosen defaults make strings shorter — the same logic as choosing a sensible key signature instead of writing accidentals everywhere. (It also saves literal bytes of ESC memory — see the 128-byte budget explained.)
The limitations that will offend you
No flats. RTTTL is sharps-only. Your B♭ must be written a#. Enharmonic spelling is a luxury this format does not offer, and yes, writing a piece in D♭ major as C# feels wrong. Do it anyway.
Four octaves, total. Octaves 4–7. Nothing below middle C, nothing above B7. Bass lines get transposed up; piccolo lines get transposed down. Arrangement under constraint — treat it like writing for a clarinet's comfortable register.
No triplets. Durations are strictly binary: 1, 2, 4, 8, 16, 32, plus dots. A triplet feel has to be faked with swung eighths or abandoned. This is the single biggest musical loss in the format — 6/8 and swing survive; genuine tuplets don't.
No dynamics, no articulation, no ties across values that don't exist. Every note is the same volume (the motor plays at one amplitude). A "tie" is just writing one longer note — but only if the combined value exists in the binary set.
Monophonic. One line per string. Polyphony on a quad comes from running four strings on four motors simultaneously — which is genuinely more interesting than it sounds; see the Canon in D walkthrough.
Rests are notes named p. 8p is an eighth rest. They cost memory like notes do, so Baroque-density rest writing gets expensive.
A worked translation
First two bars of Grieg's Mountain King theme, E minor, 4/4 at ♩=140. On the staff: eighth notes E4-F#4-G4-A4, B4-G4, then quarter B4 — except we transpose up an octave for motor projection (octave 4 is the quiet basement of the range, as our loudness measurements showed).
mountain:d=4,o=5,b=140:8e,8f#,8g,8a,8b,8g,4b,8a#,8f#,4a#
Every 8x is an eighth at octave 5 (the default). The 4b writes the quarter explicitly — though with d=4 a bare b would've worked; the explicit form just reads clearer. a# is the spelled-as-sharp B♭ that E-minor's raised... fine, it's the D#-chord's third respelled. It hurts. It works.
Why bother learning this
Because hand-tweaking is where arrangements get good. The converter does the mechanical MIDI-to-RTTTL translation, but the final 10% — respelling an awkward octave jump, dotting a note the quantiser flattened, trimming a rest — is fastest done directly in the string. If you can read a lead sheet, thirty minutes with this format and you'll edit RTTTL like text. Our syntax-mistakes guide covers the parser quirks to avoid while you do.