The file format being demonstrated here is under development, and subject to change. Last modified 17 Mar 2023.

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 most keyboards.

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 3m is the command that generates note Mo3. 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: 3m.c Command c is associated with note Mo3. Command c only affects one part.
Example: 3m.C Command C is associated with note Mo3. Command C acts upon the stave, and all its parts.
Example: 3m C Command C is a general 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. A position begins with @. Use + and - for vertical positions. Use > and < for horizontal adjustments in relation to an associated note/chord/tie/rest.

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

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:

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

As a proof of concept, experimental software has automatically produced the following document from the above code (updated 17 Mar 2023): springsongoutput.pdf

Examples of intervals and clusters:

--1--
=1 :1 4dp.C4.Knd.D3 4pr 4rn
=2 :1 4dp.C4.Knd.D3.- 4pr 4rn
--2--
=1 :1 4dr 4pn 4rm
=2 :1 4dr 4pn 4rm
--3--
=1 :1 4dn 4pm 4rf
=2 :1 4dn 4pm 4rf
--4--
=1 :1 4dm 4pf 4rv
=2 :1 4dm 4pf 4rv
--5--
=1 :1 4dpr 4prn 4rnm 4nmf 4mfv
=2 :1 4dpr 4prn 4rnm 4nmf 4mfv
--6--
=1 :1 4dprnmfvsglbtd 4prnmfvsglbtdp 4rnmfvsglbtdpr
=2 :1 4dprnmfvsglbtd 4prnmfvsglbtdp 4rnmfvsglbtdpr

The above code generates the following document (updated 17 Mar 2023): intervals.pdf

Modulo Notation can handle unusual rhythms while still showing the underlying beat structure. Fracanapa, by Astor Piazzolla, is an example of a 3+3+2 rhythm. In traditional notation you may have to resort to using accent marks to highlight this 3+3+2 pattern; and this is, of course, a stopgap solution. In the PDF below, the first measure is being repeated three times so that the 3+3+2 pattern can be contrasted against 1, 2, 4, and 3:3:2, beats per measure, respectively.

[Fracanapa]T [Piazzolla]C A1-2 [1]M
--1--
=1 :1 4t.Kns.C4/3t/4d/4l.i/3t/4d/4s.i/3t [2]M
=2 :1 2t.Kns.C3.-/?2/2t.i/?2/2t.i/?
--2--
=1 :1 4t/3t/4d/4l.i & 3t/4d/4s.i/3t [4]M
=2 :1 2t/?2/2t.i & ?2/2t.i/?
--3--
=1 :1 4t/3t & 4d/4l.i & 3t/4d 4s/3t [3:3:2]M
=2 :1 2t/? & ?/2t.i ? 2t/?
--4--
=1 :1 4t 3t 4d B
=2 :1 2t ?2
--5--
=1 :1 4l 3t 4d B
=2 :1 2t ?2
--6--
=1 :1 4s 3t
=2 :1 2t ?

The above code generates the following document (updated 17 Mar 2023): fracanapa.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

___\___ Mute

Write \ to to mute/disable a command (and any of its associated commands) temporarily. It can be used to indicate the measure number. See also the associated mute command, .\

Example: \3m This note command will be ignored by an interpreting application.

___--1--___ Measure

1→ Write -- (two hyphens/minus signs) to declare the beginning of a new measure.

2→ Add a measure label. The label can be any text that doesn't contain spaces. Each measure must have a unique label. The label can be used by a software application to indicate where an error is located in the source file.

3→ Add -- (two hyphens/minus signs) after the label.

Example: --3-- A new measure (with label 3) begins.
Example: --10A:02_(refrain)-- A new measure (with a more verbose label) begins.

___=___ Stave

Write = followed by a stave number. Example: =3 means 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.

___:___ 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 written in any particular order, and can have arbitrary numbers.

___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→ 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: 3m The note is Mo3.

3→ Add % if the gap to the next note head is more than a 12-step (an octave) above the previous note head. Add %% if the gap to the next note head is more than a 24-step 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: 2n+ 2d-r Adds an up-comma to Na2, and a down-comma to Do2 (Ro2 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: 3m5 Note Mo3 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: 3m !% 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: 3m !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 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: 3d/3m Notes Do3 and Mo3 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: 3m/3m & 3m/3m 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: (3d/3m)/3f Puts a slur between Do3 and Mo3.

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

___.\___ Associated Mute

Write .\ to mute/disable an associated command temporarily. See also the non-associated mute command, \

Example: 3m.\+ The associated command (.+) will be ignored by an interpreting application.

___.*___ 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: 3mvg 3mgb.* 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: 3mv 3mg.*% The pointer arc is split into two abbreviated pointer arcs.

___.+ or .-___ Stem Direction

Add .+ to specify up-stems.

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

Add .- to specify down-stems.

Example: 3m.- 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 b to make the text bold and slightly bigger. Add s to make the text size smaller. Add d to print a diamond at the beginning of the text (used with command .Z).

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

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

Example: 3m.[some_arbitrary_text]@<5 Starts the text 5 stave units ahead of the associated note.
Example: 3m.[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: 3m.[es-]-10 3m.[-press-]-10 3m.[-ivo]-10 Prints the text segments at vertical position -10.

Texts can be concatenated by writing them together:

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

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

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

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

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

___.a___ Accent

1→ Write .a for a positive accent. Write .an for a negative accent.

2→ Add a number (1-7) that represents the level of the accent.

Example: 3m.a4 A positive accent that is turned up halfway.

3→ If needed, add explicit positions.

Example: 3m.an3@+18 A negative accent at 18 stave units vertically.

___.b___ Beat Container

1→ Write .b: to begin a beat container brace. Add a number to specify how many beats the container should claim. For some note that occurs later, write .b; to end the brace.

Example: 3m.b2: 3m.b; A container brace with numeral 2 will embrace the two notes.

2→ If needed, add explicit positions.

Example: 3m.b2:@+15 3m.b@+20; Creates a sloping container brace that starts at 15 stave units vertically, and finishes at 20 stave units vertically.

___.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 (no finger).

• 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: 3m.f3 Finger number 3 will be applied to note Mo3.
Example: 3m.f2+3 Note Mo3 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: 3ltd.f234 La3 gets finger number 2, Ta gets finger number 3, and Do3 gets finger number 4.
Example: 3lt.f23+4 Note La3 gets finger number 2, and note Ta3 gets finger numbers 3 and 4, with a small tie between the numbers.

___.h___ Horizontally Extending Objects

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: 3m.hb:[dolce] 3f.hb; Puts a horizontal bracket above notes Mo3 and Fa3, with text dolce.

• 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: 3m.hg:[gliss.] 3t.hg; Prints a glissando line that begins at note Mo3, and ends at Ta3.

• Dotted Line:

Write .hj for a dotted line.

Example: 3m.hj: 3t.hj; Prints a dotted line between Mo3 and Ta3.

• Roman Numeral that Indicates a String:

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: 3r.hr:3 3r.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: 3m.hw:[shake] 3t.hw; Prints the text, followed by a wavy line above Mo3 and Ta3.

___.i___ Beam Break

Write .i for a beam break.

Example: 3m/3g.i Breaks the beam between notes Mo3 and Go3.

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: 3d 3d.j.up Prints Do3, and another Do3 raised by a comma (see microtonal signs), joined by a horizontal bracket.

___.m___ Move Notes:

1→ Write .mu to move a note stem to the next stave above.

Example: 4ds.mu moves a chord with Do4 and Sa4 to the next stave above (in a system of staves).

2→ If only one or a few note heads should be moved, add those note heads as a note/chord command directly after .mu

Example: 4dsb.mu4sb puts notes Sa4 and Bo4 on the next stave above. All three note heads share the same stem.

1→ Write .md to move a note stem to the next stave below.

Example: 4ds.md moves a chord with Do4 and Sa4 to the next stave below (in a system of staves).

2→ If only one or a few note heads should be moved, add those note heads as a note/chord command directly after .md

Example: 4dsb.md4ds puts notes Do4 and Sa4 on the next stave below. All three note heads share the same stem.

___.n___ Beam Courtesy Numeral

1→ Write .n for a beam courtesy numeral. The value of the numeral can be automatically calculated by an application. The numeral will be centered along the extension of the beam.

2→ If needed, add 0 to make the numeral appear right above the associated stem, if it's an up-stem (or right below the associated stem if it's a down-stem). Add 1 to make the numeral appear to the left of the associated stem, and centered between the associated stem and the next stem to the left of it. Add 2 to make the numeral appear to the right of the associated stem, and centered between the associated stem and the next stem to the right of it.

Example: 3m.n/3m/3m/3m/3m Prints beam courtesy numeral 5 in a central position.
Example: 3m.n2/3m/3m/3m/3m Prints beam courtesy numeral 5 to the right of the first stem in the beam, and centered between the first and second stem.

___.o___ Ornaments

• Stemless Note Heads:

Write .o 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. The range (octave) number in each note command should always be included.

Example: 3m.o3r3n Adds two stemless consecutive note heads (Ro3 and Na3) before note Mo3.

Write .ot for any stemless trailing note heads (cf. nachschlag) that follow after a note or chord. Add as many stemless note heads as needed, using the same syntax as for regular notes. The range (octave) number in each note command should always be included.

Example: 3m.ot4f4v Adds two stemless consecutive note heads (Fa4 and Vo4) after note Mo3.

• Alternation:

1→ Write .oa for a stemless auxiliary alternation note head to follow after a note. Specify its pitch by adding a note command, using the same syntax as for a regular note. The range (octave) number in the note command should always be included.

2→ If needed, add one or more ordinary stemless note heads, using the same syntax as for regular notes. The range (octave) number in each note command should always be included.

Example: 3m.oa3r Adds a stemless note head (Ro3) after note Mo3. A tilde sign (~) will automatically appear above the note head.
Example: 3m.oa3r3n Adds two stemless consecutive note heads (Ro3 and Na3) after note Mo3. Ro3 will have a tilde sign.

3→ If a text (intended to follow directly after the tilde sign) is provided, the alternation could be specified further:

Example: 3m.oa3m[5] An alternation with five repetitions. The same note (Mo3) should thus be played ten times.

___.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: 3mv.p0 3mg.*.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: 3mv.p0@+15 3mg.* 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: (3d.s0 3r.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: (3d 3r.s@+15 3m) Forces the slur that passes above Ro3 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: 3m.t0 ! Forces the tie to arch downwards, and start near the lowest point of the stem.

2→ If needed, add a position.

Example: 3m.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: 3m.ua Note Mo3 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: 3m.[*Prima Voce]

Example: 3stdrm.ua3stdm Notes Sa3, Ta3, Do4 and Mo4 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: 3m.u2+ Raises note Mo3 one comma (23 cents).
Example: 3m.u1- Lowers note Mo3 by half a comma.
Example: 3m.u6- Lowers note Mo3 by three commas.
Example: 3m.u5+ Raises note Mo3 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: 3stdrm.u2+3stdm Notes Sa3, Ta3, Do4 and Mo4 are all raised by one comma. Ro4 is unaffected.

___.v___ Straight Line Arpeggio

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

Example: 3dsd.v+ Applies a straight vertical arpeggio line with an upwards pointing arrow, to the chord.

___.w___ Wavy Line Arpeggio

Write .w for a vertical wavy arpeggio line. Write .w+ for a vertical wavy arpeggio line that is specifically marked to be upwards directed. Write .w- for a vertical wavy arpeggio line that is specifically marked to be downwards directed. Write .wu for a vertical wavy arpeggio line that is to be joined with the arpeggio on the stave above. Write .wd 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: 3mtd.w Applies a vertical wavy arpeggio line to the chord.

___.x___ Signs that affect a Part

The signs as listed below, can also have positions added.

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

Write .xf for Firmata. Write .xm for a mordent. Write .xi for an inverted mordent. Write .xn for a turn. Write .xe for a turn with a vertical line in the middle.

• Instrument Specific Signs:

Write .xp for a left hand pizzicato (+). Write .xz 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 .xt for a tenuto dash.

• Flageolet:

Write .xc 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: 3m.y12 Note Mo3 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 :1 [Guitar]N Stave number 2 will be assigned this stave label.

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.

___{___ 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: 3m/3m 3m 3m/3m 3m {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: 3m ! {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: 3m ? 3m {say_?_yes}1 A short pause between the words.

Lyrics can also extend beyond the next bar line:

Example: --1-- =1 :1 3m 3m {so_wonder-}1 --2-- =1 :1 3m ? {-ful_?}1 The word "wonderful" extends beyond the bar line.
Example: --1-- =1 :1 3m ! {you-!-}1 --2-- =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: 3m 3m {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.

___/* */___ Comment

Any commands, or any text between /* and */ will be ignored by an interpreting application.

Example: /* 3m 3m 3m hello world */ All of this will be ignored.

___.B___ Specific Bar Line

1→ Write .B to address the bar line at the end of the measure being currently handled. Only one stave in a system of staves is affected by this command. See also command B, which will affect all staves.

2→ Add d for a double bar line. Add e for an ending bar line. Add i for an invisible bar line. Add r for a regular bar line. If nothing is added in this second step, command .B will yield a dotted bar line (:).

Example: 3m.Bd Turns the bar line at the end of the currently handled measure into a double bar line, on the current stave.
Example: 3m.Bi makes the next bar line invisible.

___.C___ Clef

Write .C followed by the clef number (0 to 9). The clef relates to the current stave. The clef will precede its associated stem.

Example: =1 :1 3m.C3 Stave 1 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 7-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: =1 :1 3m.D3 Means that in stave 1 the first three comma-tones out of five in the sequence of 7-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 nD, 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 bP dN bV bG dB. 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

The ampersand is inserted between musical phrases.

Write .Ia for an ampersand (&). Write .If for an ampersand that is followed by a hyphen (&-). Write .Ip for an ampersand that is preceded by a hyphen (-&).

Example: 3m 3m.Ia Puts an ampersand between the two notes.

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

Example: 3m 3m.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: 3m 3m.Ic Puts a caesura mark between the two notes.

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

Example: 3m 3m.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? to have a key symbol that displays a question mark (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: =1 :2 3m.Kbv Stave 1 is assigned key bV. 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.

___.L___ Dynamics Level Symbol

1→ Write .L for a dynamics symbol (volume knob).

2→ Add a number (1-7) that represents the level of the volume knob.

3→ If needed, add % followed by a percentage number (0-100). The number will be written to the right of the volume knob.

4→ If needed, add c to feature a clockwise arrow above the volume knob. Add a to feature an anti-clockwise arrow above the volume knob.

Example: 3m.L3 A volume knob that is turned up halfway.
Example: 3m.L2%35 A volume knob followed by 35.
Example: 3m.L3c A volume knob with a clockwise arrow.
Example: 3m.L4%70a A volume knob followed by 70, and with an anti-clockwise arrow.

5→ If needed, add explicit positions.

Example: 3m.L3@+18 A volume knob at 18 stave units vertically.

___.S___ SaLaTa Chord Symbol

1→ Write .S for a chord symbol.

2→ If needed, write a note name that should be printed on the left side of the chord symbol. The corresponding interval will be printed automatically. Use one of these: d p r n m f v s g l b t
Alternatively, write instead the interval number. In this case the corresponding note name will be printed automatically on the left side of the chord symbol.

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

4→ If one of the SaLaTa superscript signs should be used, add a number from 0 to 6 that will be matched against these, respectively: 0, 027, 036, 037, 048, 057, asterisk. If no number is added, 047 is assumed.

5→ If needed, add % followed by any intervals (in ascending order) to be printed in subscript.

Example: 3m.Sd Prints D.
Example: 3m.Sd3 Prints D, along with the sign that represents 37.
Example: 3m.Sd3%9Y Prints D, along with the sign that represents 37, and also with 9Y in subscript.
Example: 3m.Sd0%9Y Prints D and "-" in superscript, along with 9Y in subscript.
Example: 3m.Sbd3 Prints D, along with the sign that represents 37, and also prints B on the left side of the chord symbol, and automatically adds the corresponding interval (X) below B.
Example: 3m.SXd3 Prints D, along with the sign that represents 37, and also prints X, and automatically adds the corresponding note name (B) above X (yields the same result as in the previous example).

___.T___ Tempo Symbol

1→ Write .T for a tempo symbol (square) to be placed above the stave; or above the topmost stave in a system of staves.

2→ Add a number (1-7) that represents the level of the needle in the square.

3→ If needed, add one of three options: % followed by a BPM number; or % followed by a number to be printed above a division bar and then % followed by a number to be printed below the division bar; or %% followed by a number to be printed below the division bar. The numbers will be printed on the right side of the square.

4→ If needed, add c to feature a clockwise arrow above the square. Add a to feature an anti-clockwise arrow above the square.

Example: 3m.T4 A square that is turned up halfway.
Example: 3m.T3%80 A square followed by 80.
Example: 3m.T3%80%2 A square followed by 80/2.
Example: 3m.T3%%2 A square followed by /2.
Example: 3m.T4c A square with a clockwise arrow.
Example: 3m.T5%160a A square followed by 160, and with an anti-clockwise arrow.

5→ If needed, add explicit positions.

Example: 3m.T4@+18 A square at 18 stave units vertically.

___.Z___ Diamond

1→ Write .Z for a diamond symbol to be placed above the stave; or above the topmost stave in a system of staves.

2→ Add a number (1-7) that represents the level of the needle in the diamond.

3→ If needed, add a text that will appear to the right of the diamond.

4→ If needed, add c to feature a clockwise arrow above the diamond. Add a to feature an anti-clockwise arrow above the diamond.

Example: 3m.Z4 A diamond that is turned up halfway.
Example: 3m.Z3[+3] A diamond followed by +3.
Example: 3m.Z4c A diamond with a clockwise arrow.
Example: 3m.Z5[15]a A diamond followed by 15, and with an anti-clockwise arrow.

5→ If needed, add explicit positions.

Example: 3m.Z4@+18 A diamond at 18 stave units vertically.

Define the function of the diamond in a separate text. Use text command .[]d

___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 :1 [Guitar]N Stave number 2 will be assigned this stave label.

___B___ Specific Bar Line

1→ Write B to address the bar line(s) at the end of the measure being currently handled. See also command .B which will affect only one stave. Regular bar lines are generated automatically without this command.

2→ Add d for a double bar line. Add e for an ending bar line. Add i for an invisible bar line. Add r for a regular bar line. If nothing is added in this second step, command B will yield a dotted bar line (:).

Example: Bd Turns the bar line at the end of the currently handled measure into a double bar line (on all staves).
Example: Be Put this command in the last measure to apply ending bar line(s) at the end of the composition.

___E___ Padding between Lines

Write E followed by a plus or minus sign, and a number between 1 and 99 (that is, from 1%, up to 99%), to affect the default padding between lines of music.

Example: E+50 will increase the default padding between lines by 50% (a line can also be a system of staves).

___F___ Padding between Staves within Stave Systems

Write F followed by a plus or minus sign, and a number between 1 and 99 (that is, from 1%, up to 99%), to affect the default padding between the staves within a system of staves.

Example: F+50 will increase the default padding between staves (within a system of staves) by 50%.

___H___ Horizontal Spacing

Write H followed by a plus or minus sign, and a number between 1 and 999 (that is, from 0.1%, up to 99.9%), to affect the default spacing between notes.

Example: H+500 will increase the default spacing by 50%.

___J___ Jump Instruction

This command puts a jump instruction or an anchor at the end of the measure being currently handled. The bar line where the jump instruction is placed should always be 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 final bar line) 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 an instruction to jump back to anchor 1.
Jf4-6,8 Prints an instruction to jump forward to the designated anchors.
Je Prints an instruction to jump to the final bar line.
Ja1 Prints anchor 1.

___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.

___T___ Transpose

1→ Write T to transpose. Add 0, or a number preceded by + or - to transpose the music a certain number of step units up or down, respectively. If the number is even, the transposition is done using successive n2-steps. If the number is odd, the first step is d1, and then any additional successive steps will be n2.

2→ If needed, add % followed by a number preceded by + or - to additionally transpose the music a certain number of Pythagorean commas up or down, respectively.

Example: T+1 transposes the music up one step unit (d1). A key signature nM then becomes nF
Example: T+3 transposes the music up three step units (d1 + n2). A key signature nM then becomes nS
Example: T-2 transposes the music down two step units (n2). A key signature nM then becomes nR
Example: T-2%+1 transposes the music down two step units (n2), and then up a Pythagorean comma. A key signature nM then becomes bR

___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