<-- previous page     Table of Contents    Index    next page -->

Specifying chords

Staff and voice

The description of the music for one voice begins with the staff and voice number, followed by a colon. For example:

3 1:

indicates that the remainder of the line contains musical information for voice 1 of staff 3. If the "voice" number is omitted, voice 1 is assumed. Thus

is equivalent to the previous example. Both the staff and voice can be given as a list. This may be useful if several staffs have the same notes, or multiple voices on a staff have the same notes. For example:
1-4 2:		// voice 2 of staffs 1, 2, 3, and 4
1,2,4:		// voice 1 of staffs 1, 2, and 4,
1,3,6-7 1-2:	// voices 1 and 2 on staffs 1, 3, 6 and 7
5-8 1,2:	// voices 1 and 2 on staffs 5, 6, 7, and 8

If you want notes to go to one voice on some staffs and a different voice on others, this can be specified using an ampersand. For example:

1 1 & 3 2:

will cause the music to go to voice 1 of staff 1 as well as to voice 2 of staff 3. Various styles can be combined:
// Voices 1 and 2 on staff 2,
// as well as voice 2 on staff 4
// and voice 1 on staffs 6, 7, and 9
2 1-2 & 4 2 & 6-7,9 1:

It is possible to have up to 40 staffs and up to three voices per staff. While there can be voice crossings, in general voice 1 should be the "top" voice, voice 2 the "bottom" voice, and voice 3 the "middle" or "extra" voice. With the first two voices, Mup tries hard to avoid any "collisions" between notes, rests, and other things. Since voice 3 is an extra voice, there are some cases when overlap with the other voices is basically unavoidable, but there are some techniques discussed later that let you tweak placement when necessary.

As an alternative to this voice-at-a-time input style, there is also a chord-at-a-time input style, which will be covered later.

Chord duration information

The rest of the line contains a list of chords, with a semicolon at the end of each chord. Each chord has a time value. The time values of all the chords in the line must add up to no more than the time signature. Time values are given as follows:
Input Meaning
1/8 octuple whole
1/4 quadruple whole
1/2 double whole
1 whole
2 half
4 quarter
8 eighth
16 sixteenth
32 thirty-second
64 sixty-fourth
128 128th
256 256th

Any of these time values can be followed by one or more dots, to indicate a dotted note. Each dot increases the time value by 50% of the preceding note or dot.

It is also possible to specify time as two or more times to be added together. For example, 2+8 would indicate the time of a half note plus the time of an eighth note, or in other words, a half note tied to an eighth note. The expression can also include subtractions, like 2.-16. When subtractions are present, it isn't clear what time values you want Mup to use, so it will start with the largest possible time value and add enough additional chords to add up to the total. For example, if you were to use 1-4, indicating a whole note minus a quarter note, Mup will use a dotted half note, even though there are a number of other ways to represent that total time, such as a half note tied to a quarter note.

If a time value is not specified for the first chord in a measure for a given voice, the default timeunit value is used. You can set the default value using the "timeunit" parameter as described in the "Parameters" section. If that parameter is not set, the default is the denominator (bottom number) of the time signature. For chords after the first, if a time value is not specified, the time value for the previous chord is used.

Notes, rests, or spaces

There are three kinds of "chords." The first type consists of one or more pitches, given by the letters "a" through "g". Parentheses can be placed around the pitch if you want the note to be printed in parentheses. (If the pitch is modified by an accidental or octave, which will be discussed later, those must also be included inside the parentheses.) The second is a rest, which is designated by the letter r. The third type is a "space," designated by the letter s. Space is basically a placeholder that takes up time, but doesn't print anything. It is useful when a certain voice only has notes during part of the measure. It can also be useful for specifying "pickup" measures to account for the time before the first note in the measure. For example:

// a pickup measure
1: 2.s;8.c;16d;
1: e;g;e;c;

Picture of Mup output

If all voices contain spaces, no space is actually taken up on output. Most of the time, this will be what you want. For example, when you are using space for a pickup, the space is just to add up to a measure, and you don't want any actual blank space at the beginning of the piece. Once in a while, however, you may want space to actually be allocated on output, perhaps to be able to allow space for some special notation. In that case, you prefix the "s" with a "u" to indicate an uncollapsible space. For MIDI, normal space is squeezed out to take no time, whereas uncollapsible space essentially becomes a rest.

If a given voice is omitted for a particular measure, Mup normally defaults to a measure of space, but you can make it default to something else (most commonly a measure of rest) by setting the emptymeas parameter.

Measure duration

There is a special duration of "m," which means an entire measure. It can only be used with a rest, space, or "rpt" (repeat). For example:

1 1: mr;
1 2: ms;

A measure rest looks like a whole rest, but is centered in the measure. It should be used when an entire measure is a rest, regardless of the time signature. However, if you want to force use of a symbol other than the whole rest symbol, you can specify a duration before the mr, and the rest symbol for that duration will be drawn instead.

4mr;   // use a quarter rest symbol
1/4mr;  // use a quadruple whole rest symbol
2.. mr;  // use a double-dotted half rest

Using "m rpt" will cause the measure repeat symbol to be printed, indicating the measure is just like the previous measure. Measures repeats will automatically be numbered, unless the numbermrpt parameter is set to n. If there is more than one voice, you only need to specify the mrpt on voice 1. If you do specify other voices as well, they must be either a mrpt or ms.

1: c;d;e;f;

// another measure just like the first
1: m rpt;

// the space between m and rpt is optional
1: mrpt;

Picture of Mup output

It is also possible to specify "dbl m rpt" for a double measure repeat, or "quad m rpt" for a quad measure repeat. The subsequent measures that are part of a multi-measure repeat must be either all spaces ("ms" or "mus") or not specified at all. There must, of course, be at least two measures of music before a dbl and at least four before a quad, as well as at least one measure after a dbl and at least three measures after a quad.

The measures associated with a mprt are not allowed to contain changes in time signature, key, clef, transpose, addtranspose, or vscheme, and the number of staffs cannot be reduced to eliminate the staff with the mrpt. For the purposes of counting measures, invisbar counts just like visible ones. Bar types of repeatstart, repeatend, or repeatboth are not allowed.


Each pitch letter in a chord may be followed by up to 4 accidentals, although typically no more than one is used. (Probably the most common uses of more than one would be either something like n# to remind the user that the note had had a double sharp earlier, or when using non-standard tunings.) The standard accidentals are:
Input Meaning
# sharp
& flat
x double sharp
&& double flat
n natural

Note that a double flat or double sharp counts as a single accidental, so this is one place where the use of spaces matters: & & with a space between is two flat accidentals, whereas && with no space between is one double flat accidental. It is possible to define your own custom accidentals, which is covered in the chapter on Custom Accidentals and Alternate Tunings. The accidental(s) can be placed inside parentheses if you want them to be printed within parentheses. All accidentals have to be within a single set of parentheses in that case; you can't put just a subset in parentheses.


An octave indicator may be specified after the pitch letter or optional accidentals. The octave can be specified in either of two ways: absolute or relative. A number from 0 to 9 is used to specify an absolute octave. Octaves run from C up to B. Octave 4 is the octave starting on middle C. Octave 3 is the octave below that, etc. A relative octave is specified by one or more plus or minus signs, and indicates that number of octaves above or below the default octave. For example:

c	// c in the default octave
e++	// e two octaves above default octave
f#---	// f# three octaves below default octave
b&6	// b flat in octave 6

The default octave can be set using the "defoct" parameter, which is described in the "Parameters" section. If that parameter is not set, the default octave is the octave containing the note associated with the middle line of the staff, based on the current clef. In other words, the default octaves are:
Clef Octave
frenchviolin 5
8treble 5
treble 4
soprano 4
mezzosoprano 4
alto 4
8bass 4
treble8 3
tenor 3
baritone 3
bass 3
bass8 2
subbass 2

Shorthand notations

If a chord is omitted, then most of the values for the previous chord are reused. This includes duration, pitch/rest/space, and octave, as well as notehead size and shape (which are described in the next section). For normal, 5-line staffs, the pitches for the first chord of every measure must always be specified, since there is no previous chord.

Putting all these things together, here are some examples:

// Two eighth notes, each b#, followed by an eighth
// note d, eighth note e, and half note e, with the
// last 3 notes being in the next higher octave.
1 1: 8b#; ; d+; e+; 2;

// Whole note C-E-G chord in default octave
// for voice 2 of staff 1
1 2: 1ceg;

// Four quarter notes on staff 2, voice 1.
// The last is in the octave above the default octave.
2: 4g; a; b; c+;

Picture of Mup output

For 1-line staffs, it is never necessary to specify a pitch, since all notes go on the single staff line. You can, however, specify a pitch if you wish. The pitch will be ignored for the purposes of printing, but will be used for MIDI output. If you don't specify a pitch, it is arbitrarily set to middle C.

If you have several notes in a chord, it is generally convenient to input them in order, either top-down, or bottom-up, as you prefer. If you like to always use a particular order, there is an alternate input mode, set via the noteinputdir parameter, that may save some typing. If this is set to "up" or "down" then the octave of each note in a chord after the first is determined relative to the previous note in that chord. If a note letter is an octave or less from the previous, you list it without any octave specified. Mup will then use the next instance of that letter in the appropriate direction. If it is farther than that, you use plus signs (when noteinputdir=up) or minus signs (when noteinputdir=down) to say how many octaves away it should be. Here is an example:


1: ceg;ece;a-a;a-e+;

1: acfc;c+c;2cgec;

Picture of Mup output

   <-- previous page    Table of Contents    Index    next page -->