The Score Edit Protocol — User Manual
SEP is how you edit music as text in the Music Theory Assistant. Instead of dragging noteheads, you state what a bar should contain, and the engine rebuilds it exactly. Every edit is checked before it touches your score, every mistake is named with your line number, and every step can be undone.
A score has three layers, and each answers one question:
| layer | the question it answers | edited as |
|---|---|---|
| CORE | which notes, and when | beats of Takadimi syllables |
| ROUTE | in what order, how many times | repeat spans and signs |
| MARKS | how it is played | the printed glyphs, in ASCII |
Open a saved piece and press SEP to see all three as tabs — the left pane shows the current state, the right pane is where you type. Or click any bar in the score to open the Inspector, which shows just that bar's layers beside the music.
CORE — the notes
The address system is the score's own: measure → beat → voice. Voices are numbered top-down (v1 is the highest line); the header of the CORE text tells you which is which.
Rhythm is written in Takadimi syllables — you write where notes attack, and durations follow automatically:
Measure 12 -> Beat 1 -> C4-E4-G3 [Ta-di-mi], R [Ta], D3 [Ta], G2 [Ta]
-> Beat 2 -> ~-G3 [Ta-ka], R [Ta], R [Ta], C3 [Ta]The essentials:
Ta= the beat,di= its half,ka/mi= quarters,Ta-ki-da= a triplet. A dotted-eighth + sixteenth is simply[Ta-mi]— no dot syntax, the attacks say it all.-joins sequential notes (one per syllable).+joins a chord:E3+G3 [Ta].Ris a rest — silence is always stated, never assumed.- Two continuations, by what the page prints — the ear cannot tell them apart, the ink can:
_— the previous note simply continues, as ONE printed notehead crossing into this beat (held minims, dotted values, syncopation):_ [Ta]holds it for the whole beat,_-E4 [Ta-di]holds through Ta and attacks E4 on di.~— the page prints a tied notehead here: two noteheads joined by a tie curve.C4 [Ta]then~-C4… [Ta-di]writes a crotchet tied to a quaver; the same sound written_would be one dotted crotchet. Write the ink. (Before Aug 2026~covered both and every rebuild merged the tie away — the m6 lesson.)
- A grace note is written in brackets in front of the note it decorates:
(B4/)A4is a small B4 crushed onto the A4. The slash is the one you see printed through the stem — leave it out,(B4)A4, for an appoggiatura, which is printed without one. A grace takes no metrical time of its own, so it never gets a syllable of its own: the bracket rides on its host and the host keeps its place in the rhythm. It works in front of a chord too,(A4/)C5+A5, and one grace note may decorate one note. Fermataafter a beat's content marks it.- The opening pickup bar is addressed as
Anacrusis, not measure 1.
The one rule: a CORE edit replaces the whole measure, not just the beats you state — so state every beat and every voice of each measure you touch. A measure you state is rebuilt to be exactly what you wrote; measures you don't mention cannot change — the engine checks this and refuses any edit that would leak outside your stated bars.
If a rhythm doesn't tile its beat, the edit is rejected before anything is written, with the line number and what went wrong. The error message is the lesson — fix the line and apply again.
Config lines — one-line changes
Typed alone in the SEP box, these change the piece's settings:
Key: 0 (C major) title: New name Composer: M. Clementi
Year: 1773 Tempo: 96 Transpose: Eb
Brace: on Stems: rebeam Marks: clear
Style: classical Texture: figuration Notes: <curator note>Year: renders the composer as "M. Clementi (1773)". Transpose: creates a new transposed copy and leaves the original untouched. Marks: clear strips the whole MARKS layer (notes, ties, fermatas, repeats and route signs all survive). Several config lines can be stacked in one apply.
ROUTE — repeats and jumps
The ROUTE tab states the printed roadmap, one line per sign:
Repeat 3-10 x2 -> Ending 1: 10 | Ending 2: 11
Segno at 5
Fine after 16
D.C. al Fine after 32A double barline — the printed division between sections — is stated the same way:
Double bar after 18and the block answers with a derived # SECTIONS: 1-18 | 19-76 line, so the piece's shape is readable at a glance (and the assistant can see it too).
Addresses are the printed measure numbers. Applying a ROUTE replaces the whole route — an omitted repeat means "there is no repeat", which is exactly how you delete a wrong one. You never write the play order yourself: it comes back derived, on the read-only # PATH: line, computed by the same engine that plays the piece. If the path sounds right, the route is right.
MARKS — how it is played
The MARKS convention is simple: the token is what the page prints, in ASCII.
| you see on the page | you type |
|---|---|
| staccato dot | . |
| staccatissimo | .. (doubling = "-issimo", like f → ff) |
| tenuto line | _ |
| accent | > |
| slur | ( … ) |
| crescendo hairpin | cresc( … )cresc |
| diminuendo hairpin | dim( … )dim |
| pedal | ped( … )ped |
| dynamics | pp p mp mf f ff sf sfz — as printed |
| expressive text (italic) | "espress." |
| tempo text (upright) | t"Largo" |
Marks attach to addresses. Note-marks name a voice; dynamics, hairpins, pedal and text name a staff:
Anacrusis -> Beat 1 -> v1: ( | staff1: t"Largo"
Measure 9 -> Beat 1 -> v1: ( . | staff1: dim(
Measure 9 -> Beat 2 -> staff1: )dim
Measure 12 -> Beat 2.4 -> v1: )Beat 2.4 means the fourth attack within beat 2 of that voice — when a beat holds several notes, the attack index picks one. In compound meters (6/8), beats are the dotted units, so a bar has beats 1 and 2.
Applying MARKS replaces per measure: a stated measure's marks become exactly your lines; unstated measures never change; Measure 5 -> clear empties one bar. To delete a slur or hairpin, state both of its measures (a bare clear on the other end is enough — and if you forget, the refusal message will tell you). Slurs pair per voice — two voices' overlapping slurs are simply ( … ) in each; the engine sorts out the bookkeeping.
One special statement covers the slur that travels between staves — musically one voice singing across both hands:
Slur: Measure 34 Beat 4.2 v1 -> Measure 35 Beat 1 v2Ornaments, fingerings and other marks the grammar doesn't cover are never deleted by your edits — they ride through untouched and are listed as # WARN lines so you always know they're there.
The Inspector — edit beside the music
Click a bar (shift-click for a range) and the floating Inspector shows that selection's CORE, ROUTE and MARKS — with an edit box that applies in place. The MARKS slice of a selection is itself a valid edit block: what you read is what you'd write. The panel stays open across applies, so the loop is: click, read the page, type, apply, listen.
Undo, always
Every apply — CORE, ROUTE, MARKS or config — saves a revision first. The Undo button walks back one step at a time. Nothing in SEP can half-apply: an edit either passes all its checks and lands whole, or it is refused with the reason named and your score untouched.
What SEP cannot carry
The protocol is honest about its edges: when the grammar has no word for something, the engine keeps the music safe and says so with a # WARN line — never silently. What still lives beyond the grammar:
More than one grace note on the same note, and a grace note with nothing after it to decorate. SEP writes one grace per host —
(B4/)A4— which is what the scores on this shelf use. A cluster of two or more crushed into a single note has no bracket yet: those notes stay safe in the stored score, a WARN names the bar and voice, and a CORE edit that restates that bar will drop them from the text.Ties across voices.
~sustains a note within its own voice. When a printed tie starts in one voice and lands in another, the text shows the arrival as a re-attacked pitch plus# WARN: TIED FROM ANOTHER VOICE. The stored score still holds the true tie — the WARN marks a place where the text and the score legitimately differ. Don't edit the bar just to make the warning go away: that would write the simplified text back into the score and lose the tie for real.(Mid-score pickup bars used to live on this list — no longer. A bar that starts past beat 1 now keeps its start through every edit and rebuild: the engine writes the position into the file itself. To make a partial bar a true pickup, restate it with its real start —
Measure 9 -> Beat 2 -> …— and it stays. An unmarked partial bar reads honestly as starting at beat 1, its silence written out as rests.)(Grace notes used to live on this list too — no longer. A single grace note now has a bracket of its own,
(B4/)A4, and survives a restated bar like any other note.)
These are gaps in the text, not in your score: the music itself is stored complete, and the WARN lines exist so nothing is lost without you knowing.
Three habits that make SEP pleasant
- Read before you write. The left pane (or the Inspector slice) is always the current truth — copy it, edit the lines, apply.
- Trust the refusals. They are not errors so much as the protocol teaching you its grammar; each one names the line, the address, or the dangling end.
- Verify by ear. Every apply re-renders and the playback is derived from the same data you just edited. If it sounds right and looks right, it is right — and it's saved.
