The file format being demonstrated here is a draft, and thus subject to change!Last modified 25 Jan 2019
Nydana, Sweden. All rights reserved until further notice.
The Modulo Notation file format allows sheet music written in Modulo notation to be translated into characters which 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 could also be useful when to feed in musical symbols in possible future notation software applications. The file format could also allow such applications to exchange sheet music files between them. Further editing could be done in one of these applications before saving the file in the application's native format. Nydana Notation's file format is case sensitive. No default values are assumed (except stem direction). Computer programs can nevertheless have default settings which may be altered by the user.
Modulo Notation's file format simply consists of a number of commands being supplied one after another. Commands begin with a letter, sign, or number. Commands are generally separated by spaces (or line breaks), but sometimes the space is replaced with an underline sign ( _ ). When commands are tied together with an underline sign, they happen at the same time; that is, they will be vertically aligned on the stave. The order in which such "associated commands" are written will not have any effect on how they should be interpreted. So, for instance, 4m_f3 would be the same as f3_4m. An associated command only affects the note or chord that it is associated with.
The general approach with most of the commands is that when they are stated, they will have an effect upon successive notes and chords within the designated stave or part. If they are stated anew, it also means that the latest call (of that command) is terminated. If the call is to be terminated before the next measure begins, a semicolon is added to the command. In any case, commands of this kind are not valid in the next measure. However, if a call should be carried over to the next measure, the command is stated in the new measure, albeit with a colon added after the command. It is thus generally not necessary to keep track of what happened in any previous measures.
Global commands begin with a capital letter and are not specifically related to any one particular stave. They are not automatically ended when a new measure begins. They should be stated just before the new measure begins.
Text tags provide formatting to any text that follows directly after the tag. Any formatting signs will appear between < and >. Text tags are described at the bottom of this page.
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.
Now, let's begin with an example of what this format may look like. The example being used is an excerpt from music written for the pipe organ. The composition is called ”Spring Song”, and the excerpt can be downloaded from the Nydana website. The first eight measures are shown here:
@M1.0 <T>Spring+Song <C>MacFarlane
A[bothhands][pedals] Q43 KnFa
: * /e s b 6f 6r s b 5b 5f s b 5s 5g. * /h t: 3brf /q r
: * /h t: 2b /q r
: * /e s b 5l 6d s b 5s 6d s b 5f 6r * /e 4dfl r 3bms r 3ldf r
: * /h. t 3d
: * /e s b 6d 6r s b 6d 6r s b 6d 6r * /h. s t 3sbdf_<a,g>ritard.
: * /h. t: 3d
: * /e s b 6d 5b s b 5s 5m s b 5d 4b * /h s: t: 3sbdm /q r
: * /h t: 3d /q r
: * /e s nq b <t>a+tempo_4l 4b 5d s nq b 5r 5m 5f s nq b 5s 5l 5b * /e 4dfl r 3bms r 3ldf r
: * /e 3f r /q r r
: * /h. s 6d_ow6r_of5t.6d * /h. s t 3sbdf
: * /h. t 3d
: * /e s nq ! b 7d 6b 6l s nq b 6s 6f 6m s nq b 6r 6d 5b * /h. s: t: 3sbdm
: * /h. t: 3d
: * /e s nq b <b,g>ritard._5l 5s 5f s nq b 5m 5r 5d s nq b 4b 4l 4s * /h. r
: * /e 3p. r 3r r 3m r
1→ Write @
2→ Add M for Modulo notation.
3→ Add the version number of the file format. Example: @M2.0
The next measure begins.
The next stave begins.
1→ The next part begins. Each * has a positional number: the first * thus describes part 1 (its positional number is 1), and so on.
2→ If needed, add the positional number from the previous measure that this part is a continuation of. In other words, the part is a continuation of a part from the previous measure, and the corresponding * in the previous measure didn’t have the same positional number (that is, the order in which it was written). The number of parts can vary from measure to measure, but it will always be clear if a part is a possible continuation of a previous part. The positional number is useful for knowing what part in the next measure a tie or slur, that crosses a bar line, should be connected to.
Example: * 3d * 3p * 3r | *3 3r * 3p *1 3d means that the parts are yielded in reversed order (note that it was not necessary to write *2 in the second measure, since the positional number had not changed for that second part). Example: * 3d * 3d | *2 3d means that one part disappeared, and we also showed that the remaining part (which now has positional number 1) is a continuation of the second part from the previous measure. Example: * 3d | * 3d *1 3d means that a new part has been added, and that the second part is the one that picks up any tie or slur from the previous measure.
The default stem direction on a stave is up. If a stave has more than one part, the default direction for the part stated first, is up. The default for the next part is down. A third part would have up-stems by default; and so on, in an alternating fashion.
Write ! to flip the stem direction. The direction of each and every stem is thus always precisely regulated.
In this file format, it is not possible beforehand to know where a certain measure will appear on the page. A stave that contains no printable information for the duration of a whole measure can be flagged for potential omission with a question mark. Only if all measures of a specific stave happen to end up on the same line of music, and they all have this command, that stave on that line will be omitted. For example, in piano music it is common to sometimes have two staves per line, and then maybe three staves on the next line. As soon as there is no printable information for a certain stave throughout a line of music, these commands will remove that unnecessary stave.
The note value is valid for subsequent notes, chords and rests of an individual part on a stave. The note value is no longer valid when a measure has ended.
1→ Use one of the following: /d Double whole note; /w Whole note; /h Half note; /q Quarter note; /e Eight note; /s Sixteenth note; /t 1/32; /i 1/64; /x 1/128; /y 1/256; /z 1/512; /k 1/1024.
2→ Add a dot for augmented/dotted notes. Add two dots for doubly augmented/dotted notes, etc. Example: /e.. yields doubly augmented eight notes.
Note heads in a chord are analyzed from bottom to top and with respect to pitch. The note heads that belong to a specific octave, range from positions Do to Ta (referring to SaLaTa note names).
1→ Begin with the octave number for a note head (in a chord it refers to the lowest note head). Use scientific pitch notation (which means that Middle C belongs to octave 4). The octave number always reflects the actual sounding octave, even when all'ottava is used.
2→ Add a note (d p r n m f v s g l b t).
3→ If needed, add a dot for a sharp accidental sign. Add a comma for a flat accidental sign. Example: 2d. yields Do2 with a sharp accidental sign in front of the note head.
4→ Add ' if the gap to the next note head is more than twelve steps (an octave) above the previous note head. Add '' (write two single quotes in a row) 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 means Do2 Ro3.
5→ Repeat steps 2 to 4 for chords.
Write b if a beam should be started. Write b; if the next note or chord should not have a beam. Write b’ if there is a reduction of beams between groups of notes/chords. Write b: if a beam should be carried over from a previous measure.
1→ Write c 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, write the corresponding intervals in ascending order (X and Y should not be capital letters). Example: cd37x is a Do37X chord where 37X will be replaced with the corresponding SaLaTa sign.
4→ If the chord symbol only contains interval numbers, write a dot followed by the interval numbers. Example: cd.246 is Do246. Chord symbols can have both a SaLaTa sign and interval numbers. Example: cd57.x is 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: cd47%r37 puts Do47 over Ro37 (47 and 37 will be replaced with their respective SaLaTa signs).
A chord symbol command should normally be associated with a note/chord, or a rest (use the underline sign). A rest could also be invisible.
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. Example: 4m_f3 means that finger number 3 will be applied to note Mo4. Use two finger numbers separated by a plus sign for finger switches. Example: 4m_f2+3 means that note Mo4 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. Example: 4ltd_f234 means that La4 gets finger number 2, Ta4 gets finger number 3, and Do5 gets finger number 4. 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: 4lt_f23+4 means that note La4 gets finger number 2, and note Ta4 gets finger numbers 3 and 4, with a small tie between the numbers.
Write g for a piano pedal mark (a line will follow after the pedal mark). Write g; if the line finishes. Write g’ for a release/depress. Write g: if a piano pedal line should be carried over from a previous measure. Write g associated with a note if only a pedal mark without a line is needed. Example: g 4l g’ 4t g;
Write ha for All’ottava, and add text after a text tag. Each time ha is restated, a new All’ottava is created. Write ha; if the next note or chord should not have All’ottava. Write ha: at the beginning of a measure if an All’ottava should carry over from the previous measure. Example: ha<>+1 4m puts All’ottava over Mo4. Example: ha<>-2 4m ha; 4t lowers Mo4 (but not Ta4) two octaves.
• Horizontal Brackets:
Write hb for a (square) horizontal bracket, and if needed, add text after a text tag. Each time hb is restated, the horizontal bracket is terminated and a new horizontal bracket begins. Write hb; if the next note or chord should neither be included in the bracket, nor have a new bracket. Example: hb<>dolce 4m hb; 4t puts a horizontal bracket above note Mo4 (but not Ta4), with text dolce.
• Crescendo and Diminuendo Wedges:
Write hc for a crescendo wedge (or hd for a diminuendo/decrescendo) wedge. Each time hc is restated, the crescendo wedge is terminated and a new crescendo wedge begins. Write hb; if the next note or chord should neither be included by the crescendo wedge, nor have a new crescendo wedge. Example: hc 4m 4t hc; yields a crescendo wedge that begins at note Mo4 and ends at Ta4.
• Glissando Line:
Write hg for glissando line(s). All notes (or as many as possible) in a chord will have glissando lines. Each time hg is restated, the glissando line(s) are terminated and a new set of glissando line(s) begins. Write hg; if the next note or chord should neither be included in the glissando, nor have a new glissando. Example: hg 4m 4t hg; yields a glissando line that begins at note Mo4 and ends at Ta4. If needed, add an associated text after a text tag. Example: hg<>gliss. 4m 4t hg;
• Dotted Line:
Write hj for a dotted line. Each time hj is restated, the dotted line is terminated and a new dotted line begins. Write hj; if the next note or chord should neither be included by the dotted line, nor have a new dotted line. Example: hj 4m 4t hj; yields a dotted line between Mo4 and Ta4.
• Roman String Numerals:
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. Write hr; if the next note or chord should neither be included by the dashed line, nor have a new numeral with a dashed line. Each time hr is restated, the dashed line is terminated and a new Roman numeral begins. Example: hr3 4r 4r hr3; yields III, followed by a dashed line, above the two notes.
If command hr is instead associated with a note, only the numeral is written out above that note. Example: 4r_hr3 means that Ro4 gets Roman string numeral III.
• Tremolo Bars between Stems:
Write ht followed by a number to assign as many tremolo bars as the number indicates. The tremolo bars are applied to each note (or chord) couple until ht; is stated. Example: ht2 4m 4t ht2; puts two tremolo bars between Mo4 and Ta4.
When needed, <>trem. or <>non+trem. could be added as a separate text command.
• Wavy Line:
Write hw for a wavy line. Each time hw is restated, the wavy line is terminated and a new wavy line begins. If needed, add an associated text after a text tag. Write hw; if the next note or chord should neither be included by the wavy line, nor have a new wavy line. Example: hw<>shake 4m 4t hw; yields text Shake, followed by a wavy line, above Mo4 and Ta4.
A command that generates a sign can (but doesn't have to) be associated with a note/chord. If it is written on its own (that is, not associated), then all subsequent notes/chords will get the sign. Write the sign command on its own, followed by a semicolon, when the signs should no longer be applied. An associated sign (that is, use the underline sign) applies only one sign to the associated note or chord.
• Miscellaneous Signs:
Write iz for Firmata. Write ic for Caesura (&). Write ig for a grand pause (//). Write is for a single simile mark (. / .). Write is2 for a double simile mark (. // .). Write im for a mordent. Write im2 for an inverted mordent. Write it for a turn. Write it2 for a turn with a vertical line in the middle.
• Instrument Specific Signs:
Write ip for a left hand pizzicato (+). Write ip2 for a snap pizzicato. Write ib for Bouché (+). Write io for Ouvert (o). Write iu for Sull'arco = up bow (V). Write id for Giù arco = down bow. Example: 4m_id gives note Mo4 a down bow sign.
Write i for a staccato dot. Example: 4m_i
Write iw for a staccatissimo wedge. Example: 4m_iw
Write ie for a tenuto dash. Example: 4m_ie
Write ia for marcato (>). Write ir for a strong accent (^). Write iv for martelato (v). Example: 4m_ia adds a marcato sign to note Mo4.
Write if for a flageolet circle.
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: 4d j_4d_up yields Do4, and Do4 raised by a comma (see microtonal signs), joined by a horizontal bracket.
Write k followed by the key signature. Example: kbVo
Command k sets the key signature for a stave. To set a key signature that is valid for all staves, use command K. Command k is not valid in the next measure unless it is restated with a trailing semicolon in that next measure. The previous key signature will be printed at the beginning of the next measure (above the affected stave only) if the command is not restated.
Write m4q for a 4:4 time signature. Write m2h for a 2:2 time signature. Write m3q for a 3:4 time signature, and so on (q = quarter note, h = half note, e = eight note, etc). It's also possible to construct more complicated time signatures by introducing plus signs. Example: m2+3+3q yields 2+3+3:4. It's also possible to write double time signatures: m3hm2h writes the two time signatures in succession.
Command m sets the time signature for a stave. To set a time signature that is valid for all staves, use command M. Command m is not valid in the next measure unless it is restated with a trailing semicolon in that next measure. The previous time signature will be printed at the beginning of the next measure (on the affected stave only) if the command is not restated.
1→ Write n for tuplets.
2→ If needed, add a number that corresponds to a tuplet multiplier that should be printed to the left of a colon. Do not add a multiplier if the tuplet multiplier (along with a colon and a tuplet note value) should be invisible (the latest supplied tuplet multiplier within the current stave/part/measure will then be automatically assumed).
3→ Add a letter that corresponds to the tuplet note value that should be printed to the right of a colon (q = quarter note, h = half note, e = eight note, etc). Do not add a note value if the tuplet note value should be invisible (the latest supplied tuplet note value within the current stave/part/measure will be automatically assumed). The colon will be printed automatically. Each time command n is issued, the previous tuplet is closed, and a new one begins. To halt a previous tuplet command, write the tuplet command followed by a semicolon, while leaving out any numbers (that is, just write n;). Example: nq 4m 4m 4m n; 4m puts the first three notes in a tuplet marked :4. Example: n3e 4m 4m | creates a tuplet labeled 3:8, that will embrace the two notes.
For nested tuplets, simply add an apostrophe (’) after the command for each new tuplet. Example: /e n3q nq’ b 4m 4m 4m nq’ b 4m 4m 4m | creates two tuplets, with three beamed eight notes in each, marked :4, and then both those groups are included in a tuplet brace marked 3:4.
• Stemless Note Heads:
Write of for any stemless note heads that follow after a note or chord. Example: 4m_of4f applies a grace note Fa4 that follows after the note Mo4. Add as many stemless note heads as needed, using the same syntax as for regular notes or chords for each individual note (or chord). Example: 4m_of4f4v adds two stemless note heads in a row (Fa4 and Vo4) after the note Mo4. The of command should always be associated with the note or chord that it affects.
Write og for any stemless (grace) note heads that precede a note or chord. Example: 4m_og4n applies a grace note Na4 that precedes the note Mo4. Add as many stemless note heads as needed, using the same syntax as for regular notes or chords for each individual note (or chord). Example: 4m_og4r4n adds two stemless note heads in a row (Ro4 and Na4) before note Mo4. The og command should always be associated with the note or chord that it affects.
• 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: 4m_om3 puts three tremolo bars on the stem of note Mo4.
If the tremolo bar command is not associated, there will be tremolo bars applied to all subsequent notes and chords. Add a semicolon if the tremolo bars should no longer be applied to subsequent notes/chords.
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: 4m_ot4f is 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: 4m_ow4f is a trill with trill note Mo4, and auxiliary note Fa4.
Write q for a clef change and add the octave number that describes the clef. The clef change is only valid for the particular stave. The clef change is not valid in the next measure unless another q command with a trailing colon is stated in that next measure. Example: q4 changes the clef to a traditional-looking treble clef. See also command Q.
The local clef command stays valid until the end of the measure and only affects one stave. If the local clef command is not picked up at the beginning of the next measure, a new clef (according to the global clef command) will be printed just after the next bar line. The clef is not printed anew if simply picked up. If a new line of music happens to begin when a clef is picked up, the ordinary clef is replaced with the temporary clef and will expire when the next measure begins unless being picked up again. If it isn’t picked up, the original clef is automatically printed anew after the bar line. A clef can be inserted anywhere between bar lines (but not after the last note in the measure). If the change of a clef locally is to persist, a new global clef command (Q) should be inserted just before a ”next measure command” (|).
1→ Write r for a rest sign that corresponds to the note value being set. Write ri for an invisible rest.
2→ Optionally, add a number for a multi-rest that will last for as many measures as specified by the number. Example: r3 is a multi-rest that lasts three measures.
1→ Write s for a slur, or sp for a phrasing slur.
2→ If needed, add u to force the slur to arch upwards. Add d to force the slur to arch downwards. Example: su indicates a slur that arches upwards.
A slur command begins a new slur (any previously started slur is automatically closed). Add a semicolon if the application of slurs should end. If a slur should be picked up from a previous measure, write the slur command followed by a colon. Example: su 4m 4s 4d su; is an upwards arching slur, connecting three notes.
To su and sd, a vertical position can be added. Command su or sd should then be associated with a note or chord, as it is only being used for showing the vertical position of the slur between endpoints. Example: su 4m 4s_su5t 4d su; is an upwards arching slur with a vertical position Ta5 over note Sa4.
1→ Write t for a tie. All notes (or as many as possible) in a chord will be tied.
2→ If needed, add u to force the tie to arch upwards. Add d to force the tie to arch downwards. Example: tu indicates a tie that arches upwards.
A tie command begins a new tie (any previously started tie is automatically closed). Add a semicolon if the application of ties should end. If a tie should be picked up from a previous measure, write the tie command followed by a colon. Example: td 4m 4m 4m td; creates two downwards arching ties, connecting the three notes.
To tu and td, a vertical position can be added. Command tu or td should then be associated with a note or chord, as it is only being used for showing the vertical position of the tie between endpoints. Example: tu 4m 4m_tu5t 4m tu; is an upwards arching tie with a vertical position Ta5 over note Mo4.
The tie can also be ended directly after a note/chord, without reaching all the way to its destination. Associate the tie command with a note or chord to achieve this. Example: t_4m 4m
1→ Write ua for an asterisk. All notes in a chord are affected if step 2 is not followed through. Example: 4m_ua means that note Mo4 gets an asterisk.
2→ If needed, add the equivalent of a chord (albeit without any dots or commas) if individual note heads in a chord are targeted. Example: 4stdrm_ua4stdm means that notes Sa4, Ta4, Do5 and Mo5 get asterisks. Define what the asterisk means in a separate text command, like so: <>*Primo+Voce
If the asterisk command is not associated, it will be applied to subsequent notes/chords. Write ua; if the asterisk command should no longer be applied.
• Nydana's Microtonal Signs:
1→ Write u, and if needed, a number representing the number of microtonal signs (without the number, 1 is assumed). The number can also be followed by (or replaced with) a dot if the half-comma sign is desired.
2→ Add p (positive) or n (negative) to specify positive or negative pitch changes. Example: 4m_up raises note Mo4 one comma (=23 cents). 4m_u.n lowers note Mo4 by half a comma. 4m_u3n lowers note Mo4 by three commas. 4m_u2.p raises note Mo4 by two and a half comma.
3→ If needed, add the equivalent of a chord (albeit without any dots or commas) if individual note heads in a chord are targeted. Example: 4stdrm_up4stdm means that notes Sa4, Ta4, Do5 and Mo5 are raised by one comma.
If the microtonal command is not associated, it will be applied to subsequent notes/chords. Write the microtonal command followed by a semicolon if the microtonal sign should no longer be applied.
• Parenthesized Note Heads:
1→ For single notes: Write ub in association with a note command. Example: 4m_ub means that note Mo4 will be written inside parentheses. If the note command represents a chord, all notes in the chord will be parenthesized.
2→ If needed, add the equivalent of a chord (albeit without any dots or commas) if individual note heads in a chord are targeted. Example: 4gtd_ub4gt means that notes Go4 and Ta4 will be parenthesized.
If the parenthesis command is not associated, it will be applied to subsequent notes/chords. Write the parenthesis command followed by a semicolon if the parentheses should no longer be applied.
• Wavy Line Arpeggio:
Write va for a vertical wavy arpeggio line. Write vau for a vertical wavy arpeggio line that is specifically marked to be upwards directed. Write vad for a vertical wavy arpeggio line that is specifically marked to be downwards directed. Write vaa for a vertical wavy arpeggio line that is to be joined with the arpeggio on the stave above. Write vab 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: 4mtd_va yields a vertical wavy arpeggio line to the chord.
• Straight Line Arpeggio:
Write vru for a straight vertical arpeggio line with an upwards pointing arrow. Write vrd for a straight vertical arpeggio line with a downwards pointing arrow. Write vra for a straight vertical arpeggio line that is to be joined with the arpeggio line on the stave above. Write vrb for a vertical arpeggio line with a downwards pointing arrow, and that is to be joined with the arpeggio on the stave above. Example: 4dsd_vru
If an arpeggio command is not associated, it will be applied to subsequent notes/chords. Write the arpeggio command followed by a semicolon if arpeggio should no longer be applied.
• Dashed Bar Line:
Write vd for a dashed bar line (only applied to the particular stave).
• Repeat the Latest Command:
1→ Write x to repeat the latest command (or entire group of associated commands). Example: 4dms x is the same as 4dms 4dms
2→ If needed, add a number that describes how many times the command should be repeated. Example: 4dms x3 is the same as 4dms 4dms 4dms
• Transfer Down Function:
1→ Write xd to transfer a note (or all notes in a chord) to the next stave below. Example: 2m_xd puts note Mo2 on the next stave below (in a system of staves).
2→ If needed, add a number if a maximum number of notes should be transferred down. Example: 2mst_xd2 puts notes Mo2 and Sa2 on the next stave below.
If a transfer down command is not associated, it will be applied to all subsequent notes and chords. Write the transfer down command followed by a semicolon if the transfer down command should no longer apply.
• Transfer Up Function:
1→ Write xu to transfer a note (or all notes in a chord) to the next stave above. Example: 4m_xu puts note Mo4 on the next stave above (in a system of staves).
2→ If needed, add a number if a maximum number of notes should be transferred up. Example: 4mst_xu2 puts notes Sa4 and Ta4 on the next stave above.
If a transfer up command is not associated, it will be applied to all subsequent notes and chords. Write the transfer up command followed by a semicolon if the transfer up command should no longer apply.
Write y followed by a number that represents the desired stem length in stave units. Example: 4m_y12 means that note Mo4 will have a stem length equal to 12 stave units.
If a stem length command is not associated, it will be applied to subsequent notes/chords. Write the stem length command followed by a semicolon if it should no longer be applied.
The stem length command should only be applied to the first and last note/chord in a group of beamed notes/chords. For beams, the stem is said to end at the middle of the beam. If there is more than one beam, then it's the beam that is the most distant from the associated note head(s) that counts. For whole notes, half notes, and similar, the stem is said to end at a level where also any curved parts of the stem are included.
Write % followed by a number (and possibly a dot followed by any decimals) to alter the horizontal compression of the music. Example: %98 means that the overall horizontal compression will be 98% of the default compression that a particular software uses. Example: %102.5 means that there will be an expansion to 102.5%
The % command could be useful for adapting the music with respect to the pages. Let’s say that a computer program outputs two pages, where the the second page only has one measure in it. Then, if a suitable compression is applied, the whole composition could instead be rendered in just one page. Or, let’s say that a composition only almost reaches the end of the page, then a suitable expansion could be applied to fill the entire page. Please note that a compression that works well with one particular software version can not be expected to yield the same results with another version. To get the desired result, some trial and error with various numbers may be necessary.
Put stave id:s in square brackets to assign staves to individual groups where each group will have its own stave brace. Such stave braces will be linked together with straight vertical lines. Separate id:s with commas. Example: A[vi1,vi2][br1,br2] creates two groups with two staves in each. The topmost stave will be vi1, and so on. Note that a group could also just contain one stave.
Instrument labels for each group (that will appear to the left of staves and their stave braces) can be added after each stave or group. Example: Q[vi1,vi2]<>Violins[br1,br2]<>Brass creates two groups with two staves in each. Each group is also labeled. Each stave could additionally have its own instrument label.
1→ 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 next bar line (on all staves) into a double bar line.
1→ Write Font followed by a font number. This defines a font that can later be selected by adding an appropriate text tag. If font 0 is defined, it will be used as the default font.
2→ Add vertical text size in stave units (including decimals if needed) in square brackets.
3→ Add a text tag. The text tag can contain b to select a bold font, or i to select an italic font.
4→ Add the font name after the text tag. Example: Font2[2.3]<i,b>Times+New+Roman means that the bold and italic Times New Roman font, size 2.3, can later be set with tag <f2>. It is also possible to leave out the font name and just specify a text size. Example: Font3[2.6] will not specify what font will be used. Example: Font4[2.5]<i> will not specify what font will be used, but the size is 2.5, and it’s italic.
Write I to put the rehearsal number, according to the measure number, above the bar line. Write Ib for a rehearsal number in a box. Write Io for a rehearsal number in an oval.
Associate the command with a bar line command (command Bd).
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). Example: Jb1_Bd Example: Jf4-6,8_Bd Example: Je_Bd Example: Ja1_Bd
Write K followed by the key signature. Example: KbVo
If one or a few staves should have a deviating key signature, add the corresponding stave id:s, followed by an equals sign, followed by a key signature, and separate with commas. Example: KnDo,vi=nFa,br=nSa means that all staves except vi and br gets key signature nDo
Command K sets the key signature for all staves. If one particular stave should have a temporarily deviating key signature, use command k also.
Write M4q for a 4:4 time signature. Write M2h for a 2:2 time signature. Write M3q for a 3:4 time signature, and so on (q = quarter note, h = half note, e = eight note, etc). It's also possible to construct more complicated time signatures by introducing plus signs. Example: M2+3+3q yields 2+3+3:4. It's also possible to write double time signatures: M3hM2h writes the two time signatures in succession.
If one or a few staves should have a deviating time signature, add the corresponding stave id:s, followed by an equals sign, followed by a time signature, and separate with commas. Example: M4q,vi=3q,br=2h means that all staves except vi and br gets time signature 4q
Command M sets the time signature for all staves. If one particular stave should have a temporarily deviating time signature, use command m also.
Write Q followed by the clef numbers (0 to 9) for all staves. Example: Q24 means that the first stave gets clef 2, and the second stave gets clef 4. Use command q instead, for a temporary and stave specific clef change.
• Indent the Stave:
1→ Write VIndent for an arbitrary initial stave indentation.
2→ If needed, add the desired stave indentation in stave units (specifies how much the first line of music will be indented in comparison to the following lines of music; measured between points at which stave lines begin; the height of a note head equals two stave units). This command is only necessary when to override the interpreting computer program's preset indentation. Example: VIndent45 gives an indentation equal to 45 stave units.
• Smaller Stave:
Write VSmallstave and add the affected stave id:s (separated by commas) between square brackets. Example: VSmallstave[v1,v2] means that staves v1 and v2 will be of the smaller kind.
• Stave Space:
Write VStavespace followed by the number of stave units between two successive staves (the height of a note head equals two stave units). The distance is measured between the closest stave lines of two neighboring staves. Add the affected stave id:s (separated by commas) in square brackets. Example: VStavespace35[v1,v2] means that staves v1 and v2 will be 35 stave units apart.
1→ Write X followed by a local command which will then be applied to all available staves. Example: Xiz will write a Firmata sign above all staves. To write the Firmata sign above a double bar line on all staves, write: Xiz_Bd
Text is always preceded by a so-called text tag, < >. A text tag can also contain text formatting signs that will have an effect on the text that follows directly after the tag. There can be more than one such sign in a tag; in that case, separate the signs with commas. In a text, there should not be any line breaks, underline signs, > or <, so these signs must always be replaced by the corresponding tag (see the table below). Spaces/blanks should always be replaced with + signs.
If a text should no longer be affected by any previous formatting signs, simply insert a new (possibly empty) tag with all necessary signs needed to format the rest of the text. Tags are not valid in subsequent commands. If a text starts with an empty tag, the text should not be formatted in any way.
Describing vertical positions of signs etc is usually not necessary in this file format, but is often possible when using tags. For example, the tag <4m> indicates the same vertical position as that of a note head being written as 4m in this file format. For octave positions lower than 0, a minus sign can be used. A position for the note Sa, one octave below octave 0, is specified like this: <-1s>Some+text. Please note that clefs and all'ottava will alter how vertical positions relate to the stave.
• Regular text:
Examples: <>Some+text. <t>Adagio turns the text into a tempo markings text. <m>calmo turns the text into a mood markings (with a tempo connotation) text. <g>rallentando turns the text into a gradual tempo change text.
• Stretched out text:
A text can also be split into smaller segments, distributed across several notes. Examples: 4m_<4d>es <4d>- 4m_<4d>press <4d>- 4m_<4d>ivo means that espressivo is written between (and slightly below) the three notes, like this: es - press - ivo.
Write <d> to format the text into a dynamics mark. Examples: <d>p (piano), <d>pp (pianissimo), and so on. <d>f (forte), <d>ff (fortissimo), and so on. Other options to add after the text tag are: mf (mezzoforte), sf (sforzando), sfp (sforzandopiano), sfz (sforzato), fz (forzando/forzato), rf (rinforzando), rfz (rinforzato), fzp (forzatopiano), ffz, fffz, ffffz, sff, sfff, sffff.
A font, being defined with command Font, can be invoked like this: <f2>
<*> points to where an associated note/chord/rest etc will be situated in relation to the text (if not used, the text will instead begin at the associated note/chord/rest).
To include small notes (possibly having augmentation triangles and/or ties) in a text, use the question mark tag and supply note values as usual. The question mark means that the text should be evaluated as a regular expression in this file format. Replace the ordinary note command with just a zero. Example: <t>Vivace<?>/h+t+0+/e+0<t>+=+78 writes Vivace as a tempo text, followed by a half note tied to an eight note, followed by: = 78. Signs (commands beginning with i), can also be used in a text.
Comments (without any other function than being a comment) can be written like this: <!>A+comment
1→ Write a semicolon (for a single word), in a text tag, and if needed, add a verse number (from 2 and up). Write a colon for a word that spans more than one note, and if needed, add a verse number (from 2 and up); dashes will be inserted automatically when necessary.
2→ Add the text after the text tag. Example: 4m_<;>hello writes hello below note Mo4. Example: 4m_<:>so 4t_<:>lo 5d_<;>ist writes so - lo - ist below the notes.
Example: 4m_<:2>so 4t_<;2> writes so---- (in a second verse) below the notes.
More than one verse number can share the same text. Example: 4m_<;2-3>evening means that the word evening is shared by verses 2 to 3, and is thus only written once, and in between line 2 and 3.
The following example writes out a complete verse (add the verse number if necessary): <V2>It+was+a+sunny+morning<n>It+was+in+early+May
• Text that Applies to All Staves:
Write <A> followed by a text. It will write out the same text for each and every available stave.
• Text Area Specifiers:
|(room for music)|
TL = Top Left, TR = Top Right, T = Title, L = Lyrics, C = Composer, V = Verses, BL = Bottom Left, BR = Bottom Right. Text area specifiers need only be supplied once.
Put the desired text area, from the table above, in a tag. The table represents the page layout. Add text. Example: <T>Summer+Song <C>W.+Peterson-Berger <BL>Copyright<cr>Nydana
|<>||no formatting||<f2> etc||set a font|
|<ps>||plus sign||<;2> etc||lyrics word|
|<an>||above note||<:2> etc||melisma|
|<bn>||below note||<d>||dynamics mark|
|<as>||above stave||<*>||center indication|
|<bs>||below stave||<4a> etc||vertical position|
|<t>||tempo marking||<A>||applied to all|
|<m>||mood marking||<cr>||copyright sign|
|<g>||gradual tempo change||<tm>||trademark sign|