The file format being demonstrated here is still under development, and thus subject to change.

Last modified 31 May 2021

Nydana, Sweden. All rights reserved.

Modulo Notation File Format

This file format allows sheet music written in Modulo notation to be translated into characters that can be stored in a text file. It's not just intended to be understood by computers, but is also adapted to humans. Anyone who understands how it works will be able to translate sheet music into this new format, or vice versa. The format is intended for a future notation software application. The file format is case sensitive. So, for example, Q and q would be interpreted differently.

Modulo notation's file format consists of commands being supplied one after another. Commands can begin with a letter, number, or other sign. Only signs defined by the ASCII standard are used, and should consequently be convenient to write on any keyboard.

A stem-command begins the description of a beat. A stem could be a note/chord, a rest, or a tie-stem without note heads. Beats are separated by spaces. Then there are so-called associated commands. They begin with a point/period (.) and can be appended to stem-commands. Slashes (/) separate commands that belong to different stems within a beat.

Commands will follow the conventions below. In these examples, we assume that the letter C (or c) represents a command, and that m is the command that generates note Mo. A lowercase letter preceded by a point is used when the command affects a part. An uppercase letter preceded by a point is used when the command affects a stave (and consequently all parts on that stave). An uppercase letter without the point is a general command that isn't tied to any particular part or stave.
Example: m.c Command c is associated with note Mo. Command c only affects one part.
Example: m.C Command C is associated with note Mo. Command C acts upon the stave that the current part is routed to, and all other parts on that stave.
Example: C m Command C is a general command that is not associated with any particular part/stave/note.

Text commands will follow the same conventions.
Example: m.[some_text]c The text command is associated with note Mo. The command only affects one part.
Example: m.[some_text]C The text command is associated with note Mo. The command acts upon the stave that the current part is routed to, and all other parts on that stave.
Example: [some_text]C m The command is a general text command that is not associated with any particular part/stave/note.

Some commands may also include a vertical position expressed in stave units. Two stave units is equal to the height of a note head. The ledger line of Go, between the two stave lines, has vertical position 0. Use + and - for vertical positions. Use > and < for horizontal adjustments in relation to an associated note/chord/tie/rest.

Example: m.hc:+8 starts a crescendo wedge at vertical position 8.
Example: m.hc:<5 starts a crescendo wedge 5 stave units to the left of note Mo.
Example: m.hc:+8<5 starts a crescendo wedge at vertical position 8, and also moves it 5 stave units to the left of note Mo.

An excerpt from a composition for pipe organ, called Spring Song, can be downloaded from the page that presents Modulo Notation on this website. Here's how those ten measures would be written in this new format:

V1 [Spring_Song]T [MacFarlane]C
A1-2
:1 =1 (6f.C5.Knf.D5.+/6r) (b/f) (s/g)
:2 =2 3brf2.C4.Knf.D5.- ?
:3 =3 2b2.C3.Knf.D5.+ ?
#
:1 (l/6d) (s/6d) (f/6r)
:2 dfl/? 3bms/? 3ldf/?
:3 d3
#
:1 (6d/6r) (6d/6r) (6d/6r)
:2 3sbdf3.[ritard.]
:3 !3
#
:1 (6d/b) (s/m) (d/4b)
:2 3sbdm2.* ?
:3 !2 ?
#
:1 (4l.[a_tempo]/4b/d) (r/m/f) (s/l/b)
:2 dfl/? 3bms/? 3ldf/?
:3 f/? ? ?
#
:1 6d3.ow6r.of5t6d
:2 3sbdf3
:3 d3
#
:1 (7d.-/6b/6l) (6s/6f/6m) (6r/6d/b)
:2 3sbdm3.*
:3 !3
#
:1 (l.+.[ritard.]/s/f) (m/r/d) (4b/4l/4s)
:2 ?3
:3 p/? r/? m/?
#
:1 (4l.[a_tempo]/4b/d) (r/m/f) (s/l/b)
:2 dfl/? 3bms/? 3ldf/?
:3 f/? ? ?
#
:1 6d3.ow6r.of5t6d
:2 3sbdf3
:3 d3

As a proof of concept, experimental software automatically produces the following document from the above code (updated 5 Dec 2020): springsongoutput.pdf

Examples of intervals and clusters:

:1 =1 dp.C4 pr rn
:2 =2 dp.C4.- pr rn
#
:1 dr pn rm
:2 dr pn rm
#
:1 dn pm rf
:2 dn pm rf
#
:1 dm pf rv
:2 dm pf rv
#
:1 dprnmfvsglbtd prnmfvsglbtdp rnmfvsglbtdpr
:2 dprnmfvsglbtd prnmfvsglbtdp rnmfvsglbtdpr

The above code generates the following document (updated 5 Dec 2020): intervalsoutput.pdf

Tip: Use your browser’s Find function to locate the definition of any particular command in this document. Since every description of a command begins with three underline signs, put, for example, ___C in the search field to find the definition of a command that begins with C.

File Format Commands

___#___ Measure

Write # to declare the beginning of a new measure.

Mnemonic: The hashtag (#) looks like a stave, limited by two bar lines.

___:___ Part

Write : followed by a number to address the corresponding part.

Example: :3 The third part is being addressed in any commands that follow.

Parts do not have to be yielded in any particular order, and can have arbitrary numbers.

___=___ Stave

Write = followed by a stave number. The latest part being addressed will now be written on a stave with this stave number. Example: :5 =3 means that part 5 is routed to stave 3.

The higher a stave number, the further down the corresponding stave will be written on the page. It is not necessary to use each consecutive stave number. For example, instead of using staves 1 2 3, one could use staves 10 20 30. This would allow easy insertion of new staves between the previously stated ones.

Mnemonic: The equals sign (=) looks like a stave.

___d p r n m f v s g l b t and 0-9___ Note Stem

Note heads in a chord are analyzed from bottom to top, and with respect to pitch.

Use scientific pitch notation (which means that Middle C belongs to Do-range 4).

1→ If the range number of the note/chord differs from the clef number, then begin with a range number to address the corresponding Do-range (a Do-range goes from Do to Ta).

2→ Add one or more notes (d p r n m f v s g l b t), referring to the corresponding SaLaTa note names.

Example: m The note is Mo. Its range number is the same as the clef number.
Example: 3m The third Do-range is intended for this note, Mo.

3→ Add % if the gap to the next note head is more than twelve steps (an octave) above the previous note head. Add %% if the gap to the next note head is more than 24 steps above the previous note head, and so on. This generally means that % will be used when the interval between two neighboring notes in a chord exceeds one octave.

Example: 2d%r Prints Do2 and Ro3 (not Do2 and Ro2).

4→ Add a + if a note should have an up-comma specifier/accidental. Add a - if the note should have a down-comma specifier/accidental. Once a key signature has been set, all notes that require specifiers will get those according to what has been set with command S. Here, however, they can be explicitly changed, or added as courtesy specifiers.

Example: n+ d-r Adds an up-comma to Na, and a down-comma to Do (Ro is unaffected).

5→ If needed, add a stem value number (2 or higher). The appropriate symbols (dots, triangles, or numbers) will be printed automatically.

Example: m5 Note Mo will have a triangle and a dot near its stem.

___!___ Tie Stem

1→ Write ! for a stem without note heads, to which a tie arc arrives from a previous note/chord. All notes in a chord will be tied. If the behavior of a tie should be controlled, use command t also.

2→ If needed, add % to only show an abbreviated tie arc after the note/chord where the tie starts, and a second abbreviated tie arc at the receiving stem that has no note heads.

Example: m !% The tie arc is split into two abbreviated tie arcs.

3→ If needed, add a stem value number (2 or higher). The appropriate symbols (dots, triangles, or numbers) will be printed automatically.

Example: m !3 The receiving stem without note heads, will have a triangle.

Mnemonic: The exclamation mark (!) looks a bit like the receiving stem that has no note heads.

___?___ Rest Stem

1→ Write ? for a rest stem. Write ?i for an invisible rest stem.

2→ If needed, add a stem value number (2 or higher). The appropriate symbols (dots, triangles, or numbers) will be printed automatically.

Example: ?2 The rest will have a dot near its stem.
Example: ?5 The rest will have a triangle and a dot near its stem.

If no data for a stave in a stave group is specified for one or more measures, and if those measures happen to stretch across a whole line of music, that stave would not be shown. A stave in a line of music will be visible if there is music in the stave during at least one of its measures. In that case a rest sign will be displayed automatically in each measure for which no information was provided. Such a rest sign will have a stem value that corresponds to the number of beats per measure. If the intention is to make sure a measure always shows up, even if it ends up in an empty stave in a line of music, explicitly add a rest command with a stem value that equals the beats per measure, to force the stave to appear.

Write ?? for a multi-rest, and add a number (2 or higher) that represents for how many measures the rest will last.

Example: ??3 A multi-rest that lasts for three measures.

Although rarely needed, by creating a part with invisible rests, it becomes possible to position, for example, chord symbols, in relation to any imaginable stem within a beat, even though the visible parts within the stave do not have any divided beats. So, if a part on another stave has a stem within a beat, it is possible to position the chord symbol in relation to that particular stem by using this kind of "ghost part" that only uses invisible rests.

___/___ Stem Separator

Separates commands belonging to different stems within a beat.

Example: d/m Notes Do and Mo belong to the same beat and share the same beam.

___&___ Beat Connector Brace

Write & for a connector brace. A connector brace will create rhythmical groups of stems in which not all stems belong to the same beat.

Example: m/m & m/m Applies a connector between the two beams.

Mnemonic: beam & beam become connected.

___( )___ Slur

Insert parentheses to show where slurs begin and end. If more control is needed, use command s also.

Example: (d/m)/f Puts a slur between Do and Mo.

A parenthesis sign should either be the first sign or the last sign around a note or tie command (including any associated commands).

___.*___ Pointer

1→ Write .* to create a pointer that will start from the preceding note/chord, and finish at the associated note/chord. A pointer looks like a slur with an arrowhead. A pointer indicates that notes that can be tied should be tied, and that notes that cannot be tied should be slurred. If needed, use command p to control the behavior of a pointer.

Example: mvg mgb.* Applies a pointer between the two chords.

2→ If needed, add % to only show an abbreviated pointer arc after the note/chord where the pointer starts, and a second abbreviated pointer arc at the receiving stem.

Example: mv mg.*% The pointer arc is split into two abbreviated pointer arcs.

___.+ or .-___ Stem Direction

Add .+ to specify up-stems.

Example: m.+ Specifies an up-stem for this note, and for any subsequent stems within the part.

Add .- to specify down-stems.

Example: m.- Specifies a down-stem for this note, and for any subsequent stems within the part.

___.[___ Associated Text

1→ Write associated text between square brackets.

2→ If needed, add i to specify Italics. Add d to format the text into a dynamics mark. Add b to make the text bold and slightly bigger. Add s to make the text size smaller.

Example: m.[Adagio] The text starts above or below note Mo.
Example: m.[rallentando]i Text written in Italics.

Examples of dynamics: .[p]d (piano), .[pp]d (pianissimo), .[f]d (forte), .[ff]d (fortissimo), .[mf]d (mezzoforte), .[sf]d (sforzando), .[sfp]d (sforzandopiano), .[sfz]d (sforzato), .[fz]d (forzando/forzato), .[rf]d (rinforzando), .[rfz]d (rinforzato), .[fzp]d (forzatopiano), .[ffz]d, .[fffz]d, .[ffffz]d, .[sff]d, .[sfff]d, .[sffff]d

The first character in a text will be positioned at an associated note/chord/rest. If needed, use positions to move the text.

Example: m.[some_arbitrary_text]<5 Starts the text 5 stave units ahead of the associated note.
Example: m.[some_arbitrary_text]+8 Puts the text at vertical position 8.

Note that blanks/spaces must always be replaced with an underscore sign (_).

A text can also be split into smaller segments, and distributed across several notes. Adding the vertical position ensures that all segments will appear along the same line:

Example: m.[es-]-10 m.[-press-]-10 m.[-ivo]-10 Prints the text segments at vertical position -10.

Texts can be concatenated by writing them together:

Example: m.[some_]i[text] Prints some text

Use a backslash (\) to request a line break:

Example: m.[some]\[text] Prints
some
text

If a square bracket should be included in a text, write it twice:

Example: [[[a]]] Prints [a]

___.f___ Fingering Number

Fingers are always numbered the same way in Modulo notation. The thumb equals 0, and the remaining fingers are 1, 2, 3, and 4, for both hands, and irrespective of musical instrument. A loose string on a stringed instrument is marked as n.

• For Single Notes:

Write .f followed by the finger number that the note will get. Associate with a note. Use two finger numbers separated by a plus sign for finger switches.

Example: m.f3 Finger number 3 will be applied to note Mo.
Example: m.f2+3 Note Mo gets finger numbers 2 and 3, with a small tie between the numbers.

• For Chords:

Write .f followed by the finger numbers one after another. Use two finger numbers separated by a plus sign for finger switches. The two numbers will be assigned to a single note in the chord.

Example: ltd.f234 La gets finger number 2, Ta gets finger number 3, and Do gets finger number 4.
Example: lt.f23+4 Note La gets finger number 2, and note Ta gets finger numbers 3 and 4, with a small tie between the numbers.

___.h___ Horizontally Extending Object

Horizontally extending objects can begin by adding a colon (:), or end by adding a semicolon (;). They can also have positions added.

• Horizontal Bracket:

Write .hb for a (square) horizontal bracket. If needed, add text inside brackets.

Example: m.hb:[dolce] f.hb; Puts a horizontal bracket above notes Mo and Fa, with text dolce.

• Crescendo and Diminuendo Wedge:

Write .hc for a crescendo wedge. Write .hd for a diminuendo/decrescendo wedge.

Example: m.hc: t.hc; Prints a crescendo wedge that begins at note Mo, and ends at note Ta.

• Glissando Line:

Write .hg for glissando line(s). All notes (or as many as possible) in a chord will have glissando lines. If needed, add text inside brackets.

Example: m.hg:[gliss.] t.hg; Prints a glissando line that begins at note Mo, and ends at Ta.

• Dotted Line:

Write .hj for a dotted line.

Example: m.hj: t.hj; Prints a dotted line between Mo and Ta.

• Roman String Numeral:

Write .hr followed by the string number. The string number will be translated into the corresponding Roman numeral. A dashed line follows after the numeral.

Example: r.hr:3 r.hr; Prints III, followed by a dashed line, above the two notes.

• Wavy Line:

Write .hw for a wavy line. If needed, add text inside brackets.

Example: m.hw:[shake] t.hw; Prints the text, followed by a wavy line above Mo and Ta.

___.i___ Beam Break

Write .i for a beam break.

Example: m/g.i Breaks the beam between notes Mo and Go.

Mnemonic: i as in interruption.

___.j___ Join Notes/Chords with a Horizontal Bracket

If two note heads in a chord occupy the same vertical position on the stave and cannot be handled by the default procedure (see the note/chord command), write this instead as two separate notes/chords joined by a horizontal bracket. Write .j in association with the second note/chord. The second note/chord will thus be played at the same time as the first note/chord.

Example: d d.j.up Prints Do, and Do raised by a comma (see microtonal signs), joined by a horizontal bracket.

___.n___ Beam Courtesy Number

Write .n for an explicit beam courtesy number.

Example: m.n/m/m/m/m Prints out beam courtesy number 5.

___.o___ Ornaments

• Stemless Note Heads:

Write .of for any stemless note heads that follow after a note or chord. Add as many stemless note heads as needed, using the same syntax as for regular notes or chords.

Example: m.of4f4v Adds two stemless note heads in a row (Fa4 and Vo4) after the note Mo4.

Write .og for any stemless (grace) note heads that precede a note or chord. Add as many stemless note heads as needed, using the same syntax as for regular notes or chords.

Example: m.og4r4n Adds two stemless note heads in a row (Ro4 and Na4) before note Mo.

• Tremolo Bars on a Stem:

Write .om followed by a number to put as many tremolo bars on the stem of a note as the number indicates.

Example: m.om3 Puts three tremolo bars on the stem of note Mo.

• Trill:

Write .ot for a trill. The command should be associated with a trill note. Add an auxiliary note (the auxiliary note will be written as a stemless note head inside parentheses).

Example: m.ot4f A trill with trill note Mo4, and auxiliary note Fa4.

Write .ow for a trill followed by a wavy line. The command should be associated with a trill note. Add an auxiliary note (the auxiliary note will be written as a stemless note head inside parentheses).

Example: m.ow4f A trill with trill note Mo4, and auxiliary note Fa4.

___.p___ Pointer Control

1→ Write .p to control a pointer, and add a number from 0 to 9 to specify how the pointer should behave. Odd numbers make the pointer arch upwards. Even numbers make the pointer arch downwards. 0 or 1 makes the pointer start/stop near the lowest point of the stem. 8 or 9 makes the pointer start/stop near the highest point of the stem. 4 or 5 makes the pointer start/stop at the midpoint of the stem. All other values (2, 3, 6, and 7) are intermediary.

Example: mv.p0 mg.*.p8 Forces the pointer to arch downwards, and start near the lowest point of the stem. The pointer then ends near the highest point of the receiving stem.

2→ If needed, add a position.

Example: mv.p0+15 mg.* Forces the pointer to reach vertical position 15, at a point halfway along its horizontal extension.

___.s___ Slur Control

Write .s to control a slur, and add a number from 0 to 9 to specify how the slur should behave. Odd numbers make the slur arch upwards. Even numbers make the slur arch downwards. 0 or 1 makes the slur start/stop near the lowest point of the stem. 8 or 9 makes the slur start/stop near the highest point of the stem. 4 or 5 makes the slur start/stop near the midpoint of the stem. All other values (2, 3, 6, and 7) are intermediary.

Example: (d.s0 r.s4) Forces the slur to arch downwards, and start near the lowest point of the stem. The slur then ends near the midpoint of the receiving stem.

Write .s and add a vertical position if a slur that passes by another note should be controlled at that point.

Example: (d r.s+15 m) Forces the slur that passes above Ro to have vertical position 15

___.t___ Tie Control

1→ Write .t to control a tie, and add a number from 0 to 9 to specify how the tie should behave. Odd numbers make the tie arch upwards. Even numbers make the tie arch downwards. 0 or 1 makes the tie start near the lowest point of the stem. 8 or 9 makes the tie start near the highest point of the stem. 4 or 5 makes the tie start at the midpoint of the stem. All other values (2, 3, 6, and 7) are intermediary.

Example: m.t0 ! Forces the tie to arch downwards, and start near the lowest point of the stem.

2→ If needed, add a position.

Example: m.t0+15 ! Forces the tie to reach vertical position 15, at a point halfway along its horizontal extension.

___.u___ Signs that Affect Individual Note Heads

• Asterisk:

1→ Write .ua for an asterisk. All notes in a chord are affected if step 2 is not followed through.

Example: m.ua Note Mo gets an asterisk.

2→ If needed, add the equivalent of a chord (preceded by an octave number) if individual note heads in a chord are targeted. Define what the asterisk means with a separate text command, for example: m.[*Prima Voce]

Example: stdrm.ua4stdm Notes Sa, Ta, Do and Mo get asterisks.

Alternatively, write .un to use the letter N instead of an asterisk.

• Microtonal Signs:

1→ Write .u followed by a number that represents the number of half comma signs that the microtonal signs are equal to.

2→ Add + for a raised pitch. Add - for a lowered pitch.

Example: m.u2+ Raises note Mo one comma (23 cents).
Example: m.u1- Lowers note Mo by half a comma.
Example: m.u6- Lowers note Mo by three commas.
Example: m.u5+ Raises note Mo by two and a half comma.

3→ If needed, add the equivalent of a chord, preceded by a range (octave) number, if individual note heads in a chord are targeted.

Example: stdrm.u2+3stdm Notes Sa, Ta, Do and Mo are all raised by one comma. Ro is unaffected.

• Parenthesized Note Head:

1→ For single notes: Write .ub in association with a note command. If the note command represents a chord, all notes in the chord will be parenthesized.

Example: m.ub Note Mo will be written inside parentheses.

2→ If needed, add the equivalent of a chord, preceded by the range (octave) number, if individual note heads in a chord are targeted.

Example: 3gtd.ub3gt Notes Go3 and Ta3 will be parenthesized.

___.v___ Vertically Extending Object

• Wavy Line Arpeggio:

Write .va for a vertical wavy arpeggio line. Write .va+ for a vertical wavy arpeggio line that is specifically marked to be upwards directed. Write .va- for a vertical wavy arpeggio line that is specifically marked to be downwards directed. Write .vau for a vertical wavy arpeggio line that is to be joined with the arpeggio on the stave above. Write .vad for a vertical wavy arpeggio line that is marked to be downwards directed, and that is to be joined with the arpeggio on the stave above.

Example: mtd.va Applies a vertical wavy arpeggio line to the chord.

• Straight Line Arpeggio:

Write .vr+ for a straight vertical arpeggio line with an upwards pointing arrow. Write .vr- for a straight vertical arpeggio line with a downwards pointing arrow. Write .vru for a straight vertical arpeggio line that is to be joined with the arpeggio line on the stave above. Write .vrd for a vertical arpeggio line with a downwards pointing arrow, and that is to be joined with the arpeggio on the stave above.

Example: dsd.vru

___.x___ Signs that affect a Part

Signs can also have positions added.

• Regularly used Signs. See command u, and I, also.

Write .xz for Firmata. Write .xm for a mordent. Write .xm2 for an inverted mordent. Write .xt for a turn. Write .xt2 for a turn with a vertical line in the middle.

• Instrument Specific Signs:

Write .xp for a left hand pizzicato (+). Write .xp2 for a snap pizzicato. Write .xb for Bouché (+). Write .xo for Ouvert (o). Write .xu for Sull'arco = up bow (V). Write .xd for Giù arco = down bow.

• Staccato:

Write .x for a staccato dot. Write .xw for a staccatissimo wedge.

• Tenuto/Portamento:

Write .xn for a tenuto dash.

• Accents:

Write .xa for marcato (>). Write .xr for a strong accent (^). Write .xv for martelato (v).

• Flageolet:

Write .xf for a flageolet circle.

• Piano Pedal Marks:

Write .xj for a piano pedal mark. Write .xk for a piano pedal release sign (that will be printed to the right of the associated note/chord).

___.y___ Optional Stem Length Control

Write .y followed by a number that represents the desired stem length in stave units.

Example: m.y12 Note Mo will have a stem length equal to 12 stave units.

The stem length command can only be applied to the first or last stem of a beam. The height of the beam itself does not make part of stem length.

___[___ General Text

Text can be written in a specific area on the page:

TL
TR

T
L
C

(room for music)

V
BL
BR

TL = Top Left, TR = Top Right, T = Title, L = Lyrics, C = Composer, V = Verses, BL = Bottom Left, BR = Bottom Right.

State the desired text area, from the table above, after the finishing bracket. The table represents the page layout. Examples:
[Summer_Song]T [W. Peterson-Berger]C [Copyright©Nydana]BL

Note that blanks/spaces must always be replaced with an underscore sign (_).

Each stave can have an instrument label. Write the label as a text inside brackets, and add N (as in Name):

Example: :2 [Guitar]N The stave that part 2 is routed to, will be assigned this stave label.

Comments (without any other function than being a comment) can be written like this: [A_comment]

A text command can be used for occasional rehearsal boxes (see also command R). For example, [A]R prints the letter A inside a box, and above the preceding bar line. In case a text command and an automatically generated measure number coincides at the beginning of a line of music, the text command would replace the rehearsal number.

Use a backslash (\) to request a line break:

Example: [Electric]\[Guitar]N Prints
Electric
Guitar

If a square bracket should be included in a text, write it twice:

Example: [[[Violin]]]N Prints [Violin]

A computer program could check if all measures have the same number of beats. In that case the number would be printed automatically at the beginning of the piece, just above the topmost stave, and put inside square brackets. For example: [3]. If, on the other hand, the number turns out to vary, a question mark would replace the number, like this: [?]. It is possible to override this text by adding a new meter text. A new meter text can be added to any measure. The meter text is then written above the bar line that begins the measure (only once, and above the topmost stave).

Example: [3]M Prints the text [3], indicating that each measure that follows will have 3 beats in it.
Example: [3+2]M Prints the text [3+2], indicating that each measure that follows will have 3+2 beats in it.

A tempo text would have P appended lastly (P as in pace). For example: [Allegro]P

In order to write a small note symbol (black note head with stem up) in a text (which could be useful in a metronome mark indication), add a text command to which n is appended. The note symbol will then be added as the last character in that text. After that, another text can be concatenated with the initial text.

Example: []n[_=_120]P Prints a small note followed by = 120
Example: [Allegro_]n[_=_135]P Prints Allegro followed by a small note and = 135
Example: [(Allegro_]n[_=_135)]P Prints Allegro followed by a small note and = 135, all inside parentheses.

___{___ Lyrics

Write the lyrics for a complete measure inside curly brackets ({}), and state the lyrics row number.

Each word, or unit of a divided word, is matched against each stem from the corresponding part/measure. Hyphens (-) separate word units. Underscore signs (_) separate words.

Example: m/m m m/m m {know-ing_me,_know-ing_you}1

For the unusual event that a curly bracket, hyphen or underscore sign should actually be printed as part of a word, it must be written twice. Note also that dashes can not be used as a substitute for hyphens (dashes are somewhat longer than hyphens).

Example: {a--b} Prints a-b
Example: {a{{b}}} Prints a{b}

For a melisma (when a word is held longer and/or modulated), write an exclamation mark (!) instead of a word or word unit. An exclamation mark can be preceded by a hyphen, and followed by either a hyphen or an underscore sign.

Example: m ! {you-!}1 The word lasts for two beats.

If a stem has no word, word unit or melisma, write a question mark (?) instead. A question mark can not be preceded or followed by a hyphen.

Example: m ? m {say_?_yes}1 A short pause between the words.

Lyrics can also extend beyond the next bar line:

Example: # 1: m m {so_wonder-}1 # 1: m ? {-ful_?}1 The word "wonderful" extends beyond the bar line.
Example: # 1: m ! {you-!-}1 # 1: ! ! {-!-!}1 The word "you" stretches across two measures.

If two texts are concatenated when describing lyrics, the first text has no other function than to precede the actual lyrics text:

Example: m m {2.}{yeah_yeah}2 A label for the verse number.

Lyrics can also be merged:

Example: {what_a_wonderful_day}2%3 The words are shared between verses 2 and 3, and will only be written once (between lyrics lines 2 and 3).

The lyrics command relates to the most recently stated part, and consequently to the stave that is associated with that part.

Complete verses to be added after the music can also be provided. Write V, and add a number that indicates the verse number:

Example: {It_was_a_sunny_day}\{It_was_in_early_May}V2 Prints out the complete second verse. The backslash (\) indicates a line break.

___.C___ Clef

Write .C followed by the clef number (0 to 9). The clef relates to the most recently stated part, and consequently to the stave that is associated with that part. A clef can be placed between beats or be associated with a stem.

Example: :5 m.C3 The stave that part 5 is routed to, is assigned clef 3.

A clef will automatically appear (for each stave) at the beginning of each new line of music. Whenever there is a clef change, the clef will point up or down to show in what way the pitches are affected. A clef at the beginning of a new line of music will point up or down, too, if the change happened to occur at that point. Courtesy clefs, at the end of a line of music, are not used.

When a clef change occurs on a stave, all previous specifiers on that stave (and within the measure) will cease to be valid. All kinds of arcs (slurs, ties, pointers, and connector braces) will not cross the clef. Instead they will be split in the same way as when a line of music has a line break.

___.D___ Specifier Default Direction

This command determines the default direction of any automatically generated specifiers (in relation to the key signature as set by command .K). Tones that are diatonic to the key signature could be called key-tones, while tones that can have comma signs could be referred to as comma-tones.

Write .D followed by a number between 0 and 5. The number determines which comma-tones will have up-commas. .D0 means that all comma-tones per default will have down-commas. .D5 means that all comma-tones per default will have up-commas. To force courtesy specifiers for all applicable notes, add % lastly to the command.

Once a key signature has been established, the sequence of seven steps (cf. circle of fifths) will have five comma-tones, followed by seven key-tones, and then another five comma-tones. The first five comma-tones will have down-commas, and the last five will have up-commas.

Example: :5 m.D3 Means that (in the stave that part 5 is routed to) the first three comma-tones out of five in the sequence of seven steps will have up-commas, and that consequently the last two comma-tones will have down-commas. If, in this example, the key is that of nDo, the key-tones are Fa Do Sa Ro La Mo Ta, and will not have any comma signs. The comma-tones are then Vo Pa Go Na Bo. The first three of these will have up-commas, and the last two will have down-commas. In other words, the comma-tones, if rearranged into rising pitch order, will be bPa dNa bVo bGo dBo. The direction of any comma-sign can also be changed directly in the note/chord command.

So, which number should one pick? It is okay to choose any number between 0 and 5. However, some choices will usually require fewer manual adjustments of individual specifiers in the note/chord commands. Numbers 2 or 3 will often be the most efficient choices.

___.I___ Signs that affect a Stave

Write .Ia for an ampersand (&).

Example: m m.Ia Puts an ampersand between the two notes. The ampersand is inserted between phrases.

Write .Ib for a breath mark (drop-shaped).

Example: m m.Ib Puts a breath mark between the two notes. The breath mark borrows time from the preceding note/chord.

Write .Ic for a caesura mark (//). The caesura inserts a short pause that will slightly delay the rhythm.

Example: m m.Ic Puts a caesura mark between the two notes.

Write .Id for three vertically aligned dots.

Example: m m.Id Puts three vertically aligned dots between the two notes. This command may be used together with command .Ia

Write .Ir for a dotted polyrhythm delimiter. A polyrhythm delimiter should consist of only four points: two points between the stave lines, one point just above the upper stave line, and one point just below the lower stave line.

Example: m m.Ir Puts a delimiter between the two notes.

Write .Is for a simile mark (/) that repeats the latest beat. The simile mark is a bold slash that fits perfectly between the two stave lines.

Example: m m.Is Puts a simile mark between the two notes.

___.K___ Key

Write .K followed by the key in lower-case letters (leave out a and o). Write .K? for a key symbol with a question mark in it (if there is no key symbol command, the question mark will be printed out anyway). The key symbol command relates to the most recently stated part, and consequently to the stave that is associated with that part. A key symbol can be placed between beats, or associated with a certain stem within a beat.

Example: :2 m.Kbv The stave that part 2 is routed to, is assigned key bVo. A key text inside a key frame will be written above the stave.

A key symbol will automatically appear (for each stave) at the beginning of each new line of music. Whenever there is a key symbol change, the key symbol text will be written in italics. A key symbol at the beginning of a new line of music will have its text in italics, too, if the change happened to occur at that point. Courtesy key symbols are not used.

When a key symbol change occurs on a stave, all previous specifiers on that stave and within the measure will cease to be valid.

___.S___ SaLaTa Chord Symbol

1→ Write .S for a chord symbol.

2→ Add the note name (d p r n m f v s g l b t).

3→ If one of the SaLaTa signs (circle = 369, tilde = 57, or the signs for chords 37 47 37X 47X) should be used, simply write the corresponding intervals in ascending order and the appropriate chord symbol will be printed automatically (X and Y should not be capital letters when written in this format).

Example: m.Sd37x Prints a Do37X chord (in which 37X will be replaced with the corresponding SaLaTa sign).

4→ If the chord symbol should only contain interval numbers, write * followed by the interval numbers.

Example: m.Sd*246 Prints chord symbol Do246

Chord symbols can have both a SaLaTa sign and interval numbers.

Example: m.Sd57*x Prints a Do chord symbol, with a tilde sign, followed by X.

5→ If needed, add % and repeat steps 2 to 4 to write a compound chord (written on two rows with a horizontal divider line).

Example: m.Sd47%r37 Puts Do47 over Ro37 (47 and 37 will be replaced with their respective SaLaTa signs).

___A___ Assign Stave Braces and Labels

Assign staves to individual groups, where each group will have its own stave brace. All braces that belong to the same line of music are then automatically linked together with vertical lines.

1→ Write A followed by a groups of staves. Write the command anew for each group to be created. Any previous conflicting command is automatically seen as obsolete and thereby discarded.

Example: A2-3 Staves 2 and 3 will have a brace. All other staves will have individual braces.

2→ If needed, add a label that will appear to the left of the stave group brace as an instrument category label. The brace will then also have a small < incorporated.

Example: A2-3[Violins] This example is the same as the previous, but now the group also has a label.

Each stave can still have its own instrument label. Write the label as a text inside brackets, and add N (as in Name):

Example: :2 [Guitar]N The stave that part 2 is routed to, will be assigned this stave label.

___B___ Specific Bar Line

1→ Write B to address the beginning bar line of the measure being currently addressed. Write B' to address the next bar line.

2→ Add d for a double bar line. Add e for a (double) ending bar line. Add i for an invisible bar line.

Example: Bd Turns the beginning bar line of the currently addressed measure into a double bar line (on all staves).

An ending bar line will be printed automatically at the end of the music, without the need for any command to do that. If that ending bar line should be manipulated somehow, write, for example, B'i at the end of the file to hide the ending bar line.

___J___ Jump Instruction

This command puts a jump instruction or an anchor at the beginning of the measure being currently addressed. The bar line where the jump instruction is placed will automatically turn into a double bar line.

1→ Write Jb for a ← (jump back) instruction. Write Jf for a → (jump forward) instruction. Write Je for a ⊣ (jump to the end bar) instruction. Write Ja for a jump anchor.

2→ Add the anchor designations (the appropriate arrow, or the rotated T, or the colon, will be automatically added).

Examples:
Jb1 Prints instruction to jump back to anchor 1.
Jf4-6,8 Prints instruction to jump forward to the designated anchors.
Je Prints instruction to jump to the end bar.
Ja1 Prints anchor 1.

Alternatively, in the above commands, write J' instead of J in order to address the next bar line.

___R___ Rehearsal Measure Numbers

Write R to put the rehearsal number (inside a box/rectangle), according to the measure number, at the beginning of each new line of music. Write R% if the application of rehearsal numbers should be discontinued.

In addition to this command there is also a text command that can be used for rehearsal boxes (see General Text commands). For example, [A]R prints the letter A, inside a box. If such a text command and an automatically generated measure number coincides, the text command would replace the rehearsal number.

___V___ File Format Version

Write V and add the file format version number.

Example: V2 Indicates version 2.

___Z___ Controlling Staves

• Reduced Stave Size:

Write Zr to reduce the size of the stave.

Example: Zr Turns the stave that the most recently stated part is routed to, into a stave of the smaller kind.

©Nydana, Sweden