The GUIDO Music Notation Format

Version 1.0 Specification Part 1: Basic GUIDO

Technical Report TI 20/97
Fachbereich Informatik

 Holger H. Hoos Fachbereich Informatik Technische Universität Darmstadt Alexanderstr. 10 D-64283 Darmstadt, Germany Email: hoos@informatik.th-darmstadt.de Keith A. Hamel School of Music University of British Columbia 6361 Memorial Road Vancouver, BC, V6T 1Z2, Canada Email: hamel@unixg.ubc.ca

1 Introduction

The GUIDO Notation Format is a general purpose formal language for representing score level music in a platform independent, plain-text and human-readable way. It is based on a conceptually simple but powerful formalism; its design concentrates on general musical concepts (as opposed to notational, i.e, graphical features). A key feature of the GUIDO design is adequacy, which means that simple musical concepts should be represented in a simple way and only complex notions should require complex representations.

In the present version, GUIDO supports most of the commonly used concepts of conventional music notation; however, it is designed to be a flexible and easily extendable open standard. Various extensions of the Basic GUIDO Notation Format include mechanisms for representing musical structure, abstract scores, micro-tonal music, and generalized timed events (for multi-media support). These extensions will be specified in subsequent versions of this document.

GUIDO has not been developed with a particular application in mind but to provide an adequate representation formalism for score-level music over a broad range of applications. The intended application areas include notation software, compositional and analytical systems and tools, large musical databases, performance systems, and music on the World Wide Web.

The GUIDO Notation Format has been developed by Holger H. Hoos, Technical University of Darmstadt, Germany and Keith Hamel, University of British Columbia in Vancouver, Canada; some features are based on discussions with Michael Fuhlbrügge, Kai Flade, Thomas Helbich and Jürgen Kilian. It is named after Guido d'Arezzo (990-1050), a renowned music theorist of his time and important contributor to today's conventional musical notation (CMN). His achievements include the perfection of the staff system for music notation and the invention of solmisation (solfege).

The GUIDO Notation Format is publicly and freely available; it can and should be freely used for arbitrary scientific, educational or commercial purposes. However, the GUIDO Notation Format specification remains the intellectual property of the authors of this document. It is our wish that every publicly available software supporting GUIDO and every extension of GUIDO as specified in this document should be brought to our attention.

2 Basic GUIDO Notation

Basic GUIDO Notation covers the representation of notes, rests, accidentals, single- and multi-voiced music and the most common concepts from conventional music notation such as clefs, meter, key, slurs, ties, beaming, stem directions, etc.

2.1 Notes and Rests

The general syntax for representing notes is

notename accidentals octave duration

the corresponding represention for rests is

'_' duration

Both notes and rests are instances of GUIDO events; in particular, rests are treated as special notes, which have a duration but neither accidentals nor an octave value.

Octave and duration can be omitted; if so, they are inferred from preceeding notes (or rests) within the same sequence or chord (for details, see below) or assumed to have standard values (see below) when required (such as for musical playback or notation).

2.1.1 Notenames

There are different systems of notenames:
1. c d e f g a h/b (diatonic)
2. c cis d dis e f fis g gis a ais h/b (chromatic)
3. do re me fa sol la si/ti (solfege)

Remarks:

• Arbitrarily mixing these systems is possible, but discouraged
• h and b denote the same pitch-class (b being used in the international system, h in the german system).
• si and te denote the same pitch-class (si being used in the french and italian, ti in the english solfege system).

2.1.2 Accidentals

accidentals is an arbitrary sequence of the symbols '#' and '&' (for sharp and flat); in particular, '##' is a double sharp, '&&' a double flat.

Remarks:

• Accidentals cannot be used with rests.
• Accidentals are valid only for the note in the description of which the appear.
• The usage of arbitrary sequences of accidentals without a reasonable interpretation in CMN (such as #&#) is discouraged.
• Chromatic pitch-classes are assumed to be different from alterated diatonic ones, i.e., c# != cis.

2.1.3 Octave

octave is an integer number indicating the octave of the note, where a1 is the 440Hz a. All octaves start with the pitch-class c, so c1 is the c just below a1.

Remarks:

• The usage of octaves beyond the range of -3..+5 is discouraged.
• If octave is omitted from a note description, it is assumed to be identical to the last octave specified before in the current sequence.
• octave should always be specified at the beginning of each sequence; if this is not done, but an octave is required in the context of an application, a standard value of +1 is to be assumed.

2.1.4 Duration

duration is specified in one of the forms
1. '*'enum'/'denom dotting
2. '*'enum dotting
3. '/'denom dotting
where enum and denom are positive integers and dotting is either empty, '.', or '..'; if no dots are present, the relative duration of the notes is assumed to be
• enum/denom beats in case (1);
• enum/1 beats in case (2);
• 1/denom in case (3).
Succeeding the duration by
• one dot '.' is equivalent to multiplying it by 3/2
• two dots '..' is equivalent to multiplying it by 7/4
Remarks:
• Triplets are represented as *1/3, *1/6, ...; quintuplets, septuplets and so on are handled analogously.
• Durations which are specified by fractions that are equal, such as *2/4 and *1/2, are considered to be different.
• Although dotted durations have equivalent dot-less durations, these are considered to be different (*1/4. is not identical to *3/8).
• If duration is omitted from a note description, it is assumed to be identical to the last duration specified before in the current sequence.
• duration should always be specified at the beginning of each sequence; if this is not done, but a duration is required in the context of an application, a standard value of 1/4 is to be assumed.
General remarks:
• No white space (blank, newline or tab) should be used within note descriptions.
Examples:
  d1*3/4
c#-1/8
h&/6
_*2
c&&2/2.
cis/4..
fa##1
sol&0


2.2 Tags and Tagged Ranges

Tags are used to represent additional musical information, such as slurs, clefs, keys, etc. A tag has one of the forms
1. '\'id
2. '\'id'<'param-list'>'
3. '\'id'(' note-series ')'
4. '\'id'<'param-list'>' '(' note-series ')'
where
• id is one of a number of predefined tag-names (see section 2.7 below),
• arg-list is a list of string or numerical arguments, separated by commas (','),
• note-series is a series of note descriptions (as defined above) or chord descriptions (see Section 2.4) and tags separated by white space (spaces, newlines, and/or tabs).
Remarks:
• In general, tag-structures can be arbitrarily nested, since the note-series in (3) and (4) may contain other tags.
• The tags which are defined in Basic GUIDO are described in detail in section 2.7 (see below).
• Tags of the from (1) and (2) are used for elements of CMN like clefs, meter, key, etc.
• Tags of the from (3) and (4) are called tagged ranges, they define properties of series of notes such as slurs, beams, etc.
• Generally, tags have no duration; however, tagged ranges can be thought of extending over the duration of the note series they are associated with.
Examples:
  \bar  % barline
\clef<"g2"> % treble clef
\slur(c1/4 d e) % slurred group
\label<"motive A">(g1/2 f#/4 g g#/2)  % named sequence


2.3 Note Sequences

A note sequence is of the form '[' tagged-notes ']' where tagged-notes is a series of notes, tags, and tagged ranges separated by white space. Note sequences represent single-voiced scores. Remarks:
• If duration or octave values are omitted for notes within a sequence, they are assumed to be equal to the last value specified in the current sequence.
• Duration and octave values should be specified at the beginning of each sequence; if this is not done, they are assigned standard default values (see above) when this is required in the context of an application (such as playback or notation software).
Examples:
  [ a1*1 ]      % single note
[ c1/4 d e f g a h c2/2 ] % C major scale

% short motive with meter, barlines and a slur:
[\meter<"4/4"> f0/4 \bar c1/2 \slur(e&/4 c) \bar g/2]


2.4 Chords and Chord Sequences

A chord is denoted by '{' note-list '}' where note-list is a list of (possibly tagged) notes separated by commas. Remarks:
• All notes of a chord should have the same duration.
• If this is not the case, the duration of the chord is the duration of the longest note within the chord; all other notes are interpreted as being succeeded by rests which compensate for the difference between their duration and that of the chord.
• The notes within a chords do not have to be ordered with respect to their pitch; however, it is suggested to consistently order chords in either an ascending or descending fashion.
• If for some note of a chord, duration or octave values are omitted, these are assumed to be equal to the last respective value specified in the current sequence; this applies also to the case where this value was specified for a preceeding note of the same chord.
Examples:
  {c1/4., e&1/4., g1/4.}  % c minor triad , ascending order
{c1/4.,e&,g}      % same as above, abbreviated notation
{c#1/4,e#,g#}     % C-sharp major triad, ascending order
{c2, dis1, ais0, fis}   % four-voice chord, descending order


Chord Sequences

A chord sequence is a generalised note sequence, where instead of individual notes, chords may also appear. Remarks:
• Chord sequences may contain chords as well as notes and rests.
• The chords within a sequence need not all have the same number of notes.
Examples:
  [ {c1/4,e,g} {c,f,a} {d,f,h} {c1/2,g1,c2} ] % progression of triads
[ _/8 \slur(c1 d e) {fis/2, ais} e/2 ]    % mixed notes and chords


2.5 Note Segments

Note segments represent multi-voiced scores; they are denoted by '{' seq-list '}' where seq-list is a list of note sequences separated by commas. It is assumed that all voices start simultaneously. Normally, the sequences should have equal durations; if this is not the case, the duration of the segment is the duration of the longest voice within the segment; all other voices are interpreted as if they were succeeded by additional rests which compensate for the difference between their duration and that of the segment. Remarks:
• The voices within a segment don't have to be ordered according to their pitch-range; however, it is recommended that voices be specified in either an ascending or a descending order with respect to their compass.
• Octave and duration values should be specified at the beginning of each voice; if this is not done, default values will be assumed when required in the context of a specific application. In particular, octave and duration values don't carry over from one voice to the next.
Examples:
  { [a0/4 h \slur(c1/8 h0) a/4],    % first voice
[c1/4 d e/2],         % second voice
[e1/8. \slur(f/16 e/8) d c h0 a/4] }  % third voice


White space, i.e, any combination of blank-, newline-, or tab-characters, can be inserted everywhere except within note- or tag-names. The use of white space is discouraged in the following situations:
• within note specifications
• between tag-names and tag-argument-lists
White space is required in the following instances:
• between notes
• between tags
• between notes and tags and vice versa

Comments can be inserted everywhere where white space is allowed. A comment is preceeded by '%' and extends to the end of the line it started in. Thus, lines beginning with '%' are comment-lines. Alternately, '(*' comment '*)' can be used for specifying comments. This form of comments can include multiple lines and may be nested.

Examples:

% a comment-line

a0/4 h \slur(c1/8 h0) % a/4 <-- the last note is commented out

[ c1/4   (* comment starts here ...
d e f  <-- part of the comment!
... ends here *) d ]   % the sequence has only two notes!


2.7 Standard Tags

The following tags have standard interpretations in GUIDO Basic Notation:

These standard tags and their usage are explained in the following sections.

2.7.1 Dynamic markings

\intens<s>
indicates a dynamic marking s

\i<s>
shorthand for \intens<s>

\intens<s,r>
indicates a dynamic marking s and associates it with an absolute intensity value of r; r is a floating point number between 0.0 (minimal intensity) and 1.0 (maximal intensity) in standard (not scientific!) notation.

\i<s,r>
shorthand for \intens<s,r>

\cresc(notes)
indicates an unspecific crescendo on notes.

\cresc<s>(notes)
indicates a crescendo starting from the current dynamic marking to dynamic marking s on notes.

\cresc<s,r>(notes)
indicates a crescendo starting from the current dynamic marking to dynamic marking s with associated absolute intensity value of r (see above) on notes.

\crescBegin
indicates the beginning of a crescendo section which ends at the next \crescEnd tag; the crescendo starts from the current dynamic marking.

\crescEnd
indicates the end of an unspecific crescendo section which began at the last \crescBegin tag.

\crescEnd<s>
indicates the end of an crescendo section which began at the last \crescBegin tag; the crescendo ends with dynamic marking s.

\crescEnd<s,r>
indicates the end of an crescendo section which began at the last \crescBegin tag; the crescendo ends with dynamic marking s and associated absolute intensity value of r (see above).

\dim(notes)
indicates an unspecific diminuendo on notes.

\dim<s>(notes)
indicates a diminuendo starting from the current dynamic marking to dynamic marking s on notes.

\dim<s,r>(notes)
indicates a diminuendo starting from the current dynamic marking to dynamic marking s with associated absolute intensity value of r (see above) on notes.

\dimBegin
indicates the beginning of a crescendo section which ends at the next \dimEnd tag; the crescendo starts from the current dynamic marking.

\dimEnd
indicates the end of an unspecific diminuendo section which began at the last \dimBegin tag.

\dimEnd<s>
indicates the end of a diminuendo section which began at the last \dimBegin tag; the diminuendo ends with dynamic marking s.

\dimEnd<s,r>
indicates the end of an diminuendo section which began at the last \dimBegin tag; the diminuendo ends with dynamic marking s and associated absolute intensity value of r (see above).
Remarks:
• The \intens tag is associated with the metrical position of the note immediately following it and carries to the next dynamic marking.
• The s parameter is a string containing a dynamic marking like "f", "p", "mf", "fp", etc; it is recommended to use only markings from conventional music notation.
• For crescendos and diminuendos the appropriate tags and parameters should be used, using \cresc for representing diminuendos or \dim for crescendos should be avoided.
• For longer crescendo or diminuendo sections the \crescBegin and \crescEnd or the \dimBegin and \dimEnd tag combinations should be used; this applies also for situations, where the crescendo or diminuendo section overlaps with other tagged ranges such as slurs.
Examples:
[ \intens<"mf"> c2/2 \intens<"pp"> d1/2] % dynamic markings
[ \intens<"mf",0.5> c2/2 \intens<"pp",0.2> d1/2] % same with MIDI velocity
[ \cresc( a#0/4 g# c#1)] % unspecific crescendo
[ \intens<"mf"> \dim<"mp">( a#0/4 g# c#1)] % diminuendo with dynamic markings
[ \intens<"mf",0.6> \dim<"mp",0.3>( a#0/4 g# c#1)] % same with MIDI velocity
[ \intens<"mf",0.6> \dimBegin a#0/4 g# c#1 \dimEnd<"mp",0.3>] % same using \dimBegin, \dimEnd


2.7.2 Tempo indications

\tempo<s>
indicates a tempo marking s

\tempo<s,s2>
indicates a tempo marking s and associates it with an absolute tempo as specified by string s2; s2 is of the general form "x/y=n" where x/y is a duration value like 1/4 or 3/8 and n an integer number which indicates the number of these duration values per minute.

\accel(notes)
indicates an unspecific accelerando on notes.

\accel<s>(notes)
indicates an accelerando from the current tempo indication to s on notes.

\accel<s,s2>(notes)
indicates an accelerando from tempo current tempo to tempo indication s with associated absolute tempo as specified by string s2 (see above).

\accelBegin
indicates the beginning of a accelerando section which ends at the next \accelEnd tag; the accelerando starts from the current tempo.

\accelEnd
indicates the end of an unspecific accelerando section which began at the last \accelBegin tag.

\accelEnd<s>
indicates the end of an accelerando section which began at the last \accelBegin tag; the accelerando ends with tempo indication s.

\accelEnd<s,s2>
indicates the end of an accelerando section which began at the last \accelBegin tag; the accelerando ends with tempo indication s and associated absolute tempo as specified by string s2 (see above).

\rit(notes)
indicates an unspecific ritardando on notes.

\rit<s>(notes)
indicates a ritardando from the current tempo to tempo indication s on notes.

\rit<s,s2>(notes)
indicates a ritardando from the current tempo to tempo indication s with tempo indication s and associated absolute tempo as specified by string s2 (see above).

\ritBegin
indicates the beginning of a ritardando section which ends at the next \ritEnd tag; the ritardando starts from the current tempo.

\ritEnd
indicates the end of an unspecific ritardando section which began at the last \ritBegin tag.

\ritEnd<s>
indicates the end of a ritardando section which began at the last \ritBegin tag; the ritardando ends with tempo indication s.

\ritEnd<s,s2>
indicates the end of a ritardando section which began at the last \ritBegin tag; the ritardando ends with tempo indication s and associated absolute tempo as specified by string s2 (see above).
Remarks:
• The \tempo tag is associated with the metrical position of the note immediately following it and carries to the next tempo indication.
• The s parameter is a string containing a tempo indication like "Andante", "Allegro", "Fast", etc; it is recommended to use only markings from conventional music notation.
• For accelerandos and ritardandos the appropriate tags and parameters should be used, using \accel for representing ritardandos or \rit for accelerandos should be avoided.
• For longer accelerando or ritardando sections the \accelBegin and \accelEnd or the \ritBegin and \ritEnd tag combinations should be used; this applies also for situations, where the accelerando or ritardando section overlaps with other tagged ranges such as slurs.
Examples:
[ \tempo<"Moderato"> c2/2 d1/2] % tempo indication
[ \tempo<"Moderato","1/4=60"> c2/2 d1/2] % same with absolute tempo
[ \rit( a#0/4 g# c#1)] % unspecific ritardando
[ \accel<"Presto">( a#0/4 g# c#1)] % accelerando
[ \accel<"Presto","1/2=160">( a#0/4 g# c#1)] % same with absolute tempo
[ \accelBegin a#0/4 g# c#1 \accelEnd<"Presto","1/2=160">] % same using \accelBegin, \accelEnd


2.7.3 Instrument

\instr<s>
sets instrument for current voice to s.

\instr<s,s2>
sets instrument for current voice to s and associates it with the instrument specified by s2; MIDI instrument codes can be accessed by values like "MIDI 3" (= MIDI instrument 3).
Remarks:
• The \instr tag is usually used at the beginning of voices, but can also be used within voices to indicate instrument changes.
• The s parameter indicates the name of the instrument; it is recommended that the standard names or abbreviations commonly used in scores be used.
• The s2 parameter specifies the instrument used for playback; string values "MIDI x", where x is a number between 0 and 127 represent the standard MIDI instruments.
Examples:
[ \instr<"Flauto 1"> c1/2 e&/4 e& | _ f a&/2 ]
[ \instr<"Piano", "MIDI 0"> 0/8 h | c1/2 c/4 | c/2. ]   % with MIDI code
[ \instr<"Cl 1 (in A)">  d&/2 g&/4 _ \instr<"BCl"> e&-1/1 ] % instrument change


2.7.4 Ties

\tie(notes)
ties notes together, only to be used for two or more notes with identical pitch.
Remarks:
• Semantically, a group of tied notes is equivalent to a single note with the respective combined relative duration. However, ties are considered to be significant for applications in notation.
• Ties are neither identical nor equivalent to slurs between notes with identical pitches. Whereas a slur indicates a grouping, a tie actually merges the notes it encompasses.
Examples:
[ \tie(d1/4 d/16) e/8 ]  % ties the first two notes together
[ \tie(c#1/1 | c# | c#) ] % tied group with barlines


2.7.5 Slurs

\slur(notes)
slur encompassing the group notes

\sl(notes)
shorthand for \slur(notes)

\slur<dy1,dy2>(notes)
same as \slur(notes), but the slur begins dy1 halfspaces above the head of the first note and ends dy2 halfspaces above the head of the last note (upward slur for positive values, downward slur otherwise)

\slur<dy>(notes)
shorthand for \slur<dy,dy>(notes)

\sl<dy>(notes)
shorthand for \slur<dy,dy>(notes)

\slur<dx1,dy1, dx2,dy2,dx3,dy3>(notes)
three-control-point bezier slur encompassing notes; with control-points (x1+dx1,y1+dy1), (x1+dx2,y1+dy2), and (x2+dx3,y2+dy3), where (x1,y1) is the position of the head of the first note and (x2,y2) the position of the head of the last note in notes; the dx are measured in metric units (one metric unit always corresponds to a whole note), the dy in half-spaces.

\sl<dx1,dy1, dx2,dy2, dx3,dy3>(notes)
shorthand for \slur<dx1,dy1, dx2,dy2,dx3,dy3>(notes).
Remarks:
• Slurs between notes with identical pitches are neither identical nor equivalent to ties. Whereas a slur indicates a grouping, a tie actually merges the notes it encompasses.
• Slurs can be nested.
• The position parameters dx1,dy1,etc. are floating point numbers in standard (not scientific!) notation or integer numbers; the reference positions are at the center of the noteheads.
Examples:
[ \sl(d1/4 e/16) f0/8 ]     % slur between first two notes
[ \slur<+10,+12>(d1/4 _ e/16) f0/8 ] % non-standard slur
[ \slur<0,+10, 0.25,+16, 0,+12>(c#1/4 g f#) ]  % 3-control-point bezier slur

[ \sl(c#1/4 e) \sl(g f#)) ]         % nested slurs


2.7.6 Accents and Expressive Markings

\stacc(notes)
indicates that notes are marked staccato

\accent(notes)
indicates that notes are accented

\ten(notes)
indicates that notes are marked tenuto

\marcato(notes)
indicates that notes are marked marcato (strongly accented)
Remarks:
• (none)
Examples:
[ e1/4 \stacc(e&/8 e) e/2] % a staccato group
[ e1/4 \ten(e&/8 d&) e/2] %  a tenuto group
[ \marcato(e1/4 e) f#/2] %  a marcato group
[ \accent(e1/4 e) f#/2] %  an accented group


2.7.7 Trills and Ornaments

\trill(chords)
indicates trills for each note in the first voice of chords; the second voice notes are the auxiliary notes for the trills

\trill<i>(chords)
same as above but specifies the trills to be executed as a sequence of 1/i notes

\mord(chords)
indicates mordents for each note in the first voice of chords; the second voice notes are the auxiliary notes

\mord<i>(chords)
same as above but specifies the mordents to be executed using 1/i notes

\turn(chords)
indicates turns for each note in the first voice of chords; the second and third voice notes are the auxiliary notes

\turn<i>(chords)
same as above but specifies the turn to be executed as a sequence of 1/i notes
Remarks:
• For trills and mordents, each chord should have exactly two voices which specifiy the main and auxiliary note, respectively. Upward and downward trills as well as standard and inverse mordents can be realised by specifying these notes accordingly.
• For turns, each chord should have exactly three voices which specifiy the main, the first and the second auxiliary note, respectively. Standard and inverse turns can be realised by specifying these notes accordingly.
Examples:
[ e1/4 \trill({e&/4,f}) e/2] % an unspecific trill
[ e1/4 \trill<32>({e&/4,f}) e/2] % trill to be executed as 1/32 notes
[ e1/4 \trill<32>({e&/4,f} {c/2,c#}) e/2] % trill sequence
[ e1/4 \mord({e&/4,f}) e/2] % a mordent
[ e1/4 \mord<32>({e&/4,d}) e/2] % inverse mordent to be executed as 1/32 notes
[ e1/4 \turn({e&/4,f,d}) e/2] % a turn
[ e1/4 \turn<64>({e&/4,d,f}) e/2] % inverse turn to be executed as 1/64 notes


2.7.8 Tremolo

\trem(notes)
indicates (unmeasured) tremolo for all notes

\trem<i>(notes)
same as above but specifies the tremolo to be executed as a sequence of 1/i notes
Remarks:
• Fingered tremolo can be realised using \trill
Examples:
[ e1/4 \trem(e&/4) e/2] % unmeasured tremolo
[ e1/4 \trem<32>(e&/4) e/2] % measured tremolo
[ e1/4 \trem<32>(e&/4 c/2) e/2] % tremolo sequence


2.7.9 Fermatas

\fermata
indicates a fermata at the current metric position (for use between notes)

\fermata(notes)
indicates fermatas for all notes
Remarks:
• (none)
Examples:
[ e1/4 \fermata e/2] % fermata between notes
[ c0/4 e d \bar \fermata e/2] %  fermata on barline
[ c0/4 e \fermata(d/2)] %  fermata on single note
[ c0/4 e \fermata(d/2 d#/2 e#/1)] %  fermata sequence


2.7.10 Grace Notes and Cue Notes

\grace(notes)
marks notes as grace notes preceeding the first note after notes.

\grace<i>(notes)
marks notes as grace notes with value 1/i preceeding the first note after notes.

\cue(notes)
marks notes as cue notes for the current voice.

\cue<s>(notes)
marks notes as cue notes played by instrument s.
Remarks:
• For grace notes, no durations have to be specified.
• For the \cue tag, the s parameter indicates the name of the instrument; it is recommended to use the standard names or abbreviations as commonly used in scores.
Examples:
[ \grace(g1 f) e/4 \grace(f) e/2] % grace notes
[ \grace<32>(g1 f) e/4 \grace(f) e/2] % 1/32 grace notes

[ \cue(d#1/4 d# d#) g#/2] %  unspecific cue notes
[ \cue<"Ob 1">(d#1/4 d# d#) g#/2] %  cue notes played by Oboe 1


2.7.11 Repetitions

\repeatBegin
indicates the beginning of a repeated section

\repeatBegin<i>
indicates the beginning of section which is played i times (the standard \repeatBegin corresponds to \repeatBegin<2>)

\repeatEnd
indicates the end of a repeated section

\repeatEnd<i>(notes)
indicates the end of a repeated section where notes are only to be played in the ith repetition
Remarks:
• For simple repetitions with variant endings, \repeatEnd<1>(...) is used to indicate the ending for the first round (prima volta), while the notes immediately succeeding this tag represent the ending of the second round (2nda volta).
• For multiple repetitions with variant endings, one \repeatEnd<i>(...) tag is used to indicate the endings for all but the last round, which again is represented by the notes immediately succeeding the last \repeatEnd tag. Note that in this case, one \repeatBegin tag is followed by multiple \repeatEnd tags. The \repeatEnd tags are required to appear in the correct order, i.e., \repeatEnd<1>(...) before \repeatEnd<2>(...) and so on.
Examples:
[ \repeatBegin c1/2 g/4 f ... e/4 g/2 \repeatEnd ] % simple repetition
[ \repeatBegin c1/2 g/4 f ... \repeatEnd<1>(e/4 g/2) e&/4 f e& ] % simple repetition with variant ending
[ \repeatBegin<3> c1/2 g/4 f ... e/4 g/2 \repeatEnd ] % multiple repetition

[ \repeatBegin<3> c1/2 g/4 f ... \repeatEnd<1>( e/4 g/2 )
\repeatEnd<2>( e/4 g f ) e&/4 f e& ] % same with variant endings


2.7.12 Clefs

\clef<s>
sets clef s, where s is a string indicating the form of the clef ("g","f","c","perc" = percussion, "gg" = double g-clef) and the position within the staff ("1" for lowest line, ..., "5" for highest line). Optionally, this can be succeeded by "+8","-8", "+15","-15" for transposed clefs (octave or double octave up or down).
Remarks:
• If the staff-position is omitted, default values of "g2", "f4", "c3" are assumed
• For common clefs, the following synonymes can be used:
• "treble" = "violino" = "g2"
• "bass" = "basso" = "f4"
• "tenor" = "c4"
• "alto" = "c3"
• clefs can appear at the beginnig or in the middle of a voice, the latter indicating a clef change.
Examples:
  \clef<"f"> or \clef<"f3"> or \clef<"basso"> % bass clef
\clef<"g2-8">                    % transposed treble clef
\clef<"gg"> or \clef<"gg2">      % double g2 clef


2.7.13 Meter / Time Signatures

\meter<s>
sets time signature to s, where s is of the form "n/m" for positive integers n,m.
Remarks:
• Additionally, the following special time signature can be used:
• "C" or "c" for 4/4 with "C" symbol
• "C/" or "c/" for 2/2 with alla breve symbol
• The \meter tag can appear at the beginning or in the middle of a voice, the latter indicating a change in meter.
Examples:
  \meter<"2/4">   % 2/4 meter
\meter<"3/8">   % 3/8 meter
\meter<"C">   % 4/4 meter with C time signature


2.7.14 Key / Key Signatures

\key<i>
sets key signature to i sharps, if i is positive, to |i| flats, if i is negative. For i=0, the key signature contains no sharps or flats.

\key<s>
indicates a key of s, where s is of the form "n", "n#" or "n&" for any note name n. Uppercase and lowercase letters are used to denote major and minor modes, respectively.
Remarks:
• The \key tag can appear at the beginning or in the middle of a voice, the latter indicating a change in meter;
• Within one piece, one of the two formats of the key-tag should be used consistently.
Examples:
  \key<0>     % no sharps or flats
\key<-3>    % 3 flats, E& major or c minor
\key<+2> or \key<2>  % 2 sharps, D major or b minor
\key<"C">   % C major, no accidentals
\key<"e&">    % e& minor, 6 flats


2.7.15 Octava transpositions

\oct<i>
indicates beginning of a section which is transposed by i octaves upwards.

\oct<i>(notes)
indicates transposition of notes by i octaves upwards.
Remarks:
• Octave transposition does affect the notated pitches such that "\oct<+1>(c1)" is pitch-equivalent to "c2".
• Negative numbers i can be used to indicate downward transpositions.
• \oct<+1> corresponds to "8va" in standard notation, \oct<-1> to "8va bassa", \oct<+2> to "15ma" etc.
Examples:
[ h2/4  \oct<+1> c2 e/2 \oct<0> e1/2]  % 8va transposition
[ h2/4  \oct<+1>( c2 e/2 ) e1/2]  % same, using different notation
[ h1/4  \oct<-2>( d0 e/2 ) e1/2]  % 15ma bassa


2.7.16 Staves

\staff<i>
assigns the voice it appears in to staff number i

\staff<str>
assigns the voice it appears in to staff named str.
Remarks:
• Voices having the same \staff tag share the same staff.
• Standard usage for \staff tags is exactly one \staff tag per voice appearing before the first note or rest.
• Mid-voice \staff tags can be used to indicate voices changing staves.
Examples:
{ [\staff<1> e1/8. \slur(f/16 e/8) d c h0 a/4],  % first voice

[\staff<1> c1/4 d e/2],         % second voice, same staff
[\staff<2> a0/4 h \slur(c1/8 h0) a/4] }    % third voice, separate staff



2.7.17 Beams

\beamsAuto
sets beaming to automatic mode; automatic beaming usually depends on the meter.

\beamsOff
switches beaming off, i.e., only explicitly beamed notes will be beamed.

\beam(notes)
beam notes; can be nested to enforce non-standard beam groupings.

\bm(notes)
shorthand for \beam(notes)

\beam<dy1,dy2>(notes)
same as \beam(notes), but specifies the beam to begin dy1 half-spaces above (or below, depending on the sign) the first note and to end dy2 half-spaces above (or below) the last note; the stem lengths are automatically adjusted accordingly.

\bm<dy1,dy2>(notes)
shorthand for \beam<dy1,dy2>(notes)

\beam<dy>(notes)
shorthand for beam<dy,dy>(notes).

\bm<dy>(notes)
shorthand for beam<dy,dy>(notes).
Remarks:
• \beam tags always override \beamsAuto or \beamsOff;
• If \beam tags are not nested to account for each level of beaming, beams are assumed to be grouped according to standard rules;
• If \beam tags with explicit beam positions are used for multiple beams, all the beams are assumed to be parallel with a standard distance from one another and the beam positions refer to the toplevel beam;
• Rests can be included in the range of \beam tags, in this case they are assumed to be parted of the beamed structure.
• The position parameters {\it dy1,dy2} are floating point numbers in standard (not scientific!) notation or integer numbers; the reference position is at the center of the notehead; the stem lengths are automatically adjusted accordingly.
Examples:
[ \beam(d1/16 e c/8) \beamsOff d e ]  % beams the first group, while the last two eigth notes are not beamed
[ \beamsOff \beam(d1/16 e c/8) d e ]  % equivalent to the above
[ \beam( \beam(d1/16 e) \beam(c d))]  % explicitly group the 1/16th in 2+2
[ \beam<6,8>( d1/16 e c d))]  % unusual position of the beams


2.7.18 Stems

\stemsAuto
sets the stem direction to auto mode, i.e., notes have downward stems if they are lower than the 3rd line (if any), upward stems otherwise.

\stemsUp
sets stem directions to upward mode, i.e, all stems are drawn upwards.

\stemsDown
sets stem directions to downward mode, i.e, all stems are drawn downwards. Remarks:
• These tags determine the stem direction from where they occur to the next occurrence of a \stems* tag or the end of the note sequence (or voice of a segment);
• The stem directions inferred for \stemAuto depend on the current clef;
• If no \stems* tag is specified, \stemAuto is assumed.
Examples:
[\clef<"g"> \stemsAuto c1/4 e g h/2]
[\clef<"g"> \stemsDown c1/4 e g \stemsUp h/2] % same as above with explicit stem directions
[\clef<"g"> \stemsUp c1/4 e g h/2] % all stems upwards


2.7.19 Barlines and Tactus Strokes

\bar
indicates a barline at the position where it occurs.

'|'
shorthand for \bar.

\bar<i>
indicates barline and start of measure i

\doubleBar
indicates double barline

\doubleBar<i>
indicates double barline and start of measure i

\tactus
indicates tactus stroke (dotted line or comma mark)
Remarks:
• Barlines can be automatically inferred from the information provided by the \meter tag.
• If \meter information is present, explicit barlines can be used to facilitate metric consistency checking or to realise up-beats.
• If \meter information is present, explicit barlines can be used to enforce incomplete measures.
• If \meter information is not present, barlines can be used to place arbitrary barlines.
• Double barlines should only be explicitly specified if their usage cannot be inferred from the context such as for key and meter changes.
• Tactus strokes are used to indicates metrical subdivisions (such as beats).
Examples:
[ c1/2 e&/4 e& | _ f a&/2 ]   % two 4/4-measures
[ a0/8 h | c1/2 c/4 | c/2. ]   % two 3/4 with up-beat
[ \meter<"C"> c1/4 d e/2 \bar<2> e/4 f g \bar<3> _*1 ] % measure 3 starts 1/4 early
[ c1/2 \tactus e&/4 e& | _ f \tactus a&/2 ]   % two 4/4-measures with tactus strokes
[ c1/2 e&/4 e& \doubleBar _ f a&/2 ]   % two 4/4-measures with double barline
[ c1/2 e&/4 e& \doubleBar<15> _ f a&/2 ]   % same with measure number


2.7.20 Text

\text<s>
places text s at current metric position

\t<s>
shorthand for \text<s>

\text<s,dy>
same as above, but specifies vertical reference position as dy halfspaces below the lowest staff-line.

\t<s,dy>
shorthand for \text<s,dy>
Remarks:
• Although \text can be used to represent lyrics, Advanced GUIDO will provide a more appropriate and elaborate way for this.
• The position parameter dy is a floating point number in standard (not scientific!) notation or an integer number; the reference position is the bottom of the lowest staff line.
Examples:
[ a#0/2 \text<"l.h."> g# c#1)] % standard text
[ a#0/2 \text<"l.h.",-4> g# c#1)] % standard text 4 halfspaces below staff
[ a#0/2 \text<"Cara mia"> g# c#1)] % simple lyrics


2.7.21 Title and Composer

\title<s>
specifies the title of the piece as s

\composer<s>
specifies the composer of the piece as s
Remarks:
• Should be only used once at the beginning of the first voice.
Examples:
[ \title<"Aubade"> \composer<"Holger H. Hoos"> e&2/8 _ ] % title and composer


2.7.22 Markers and Named Sections

\mark<s>
sets a marker labelled s at the current metric position

\label<s>
sets a label s for the whole piece.

\label<s>(notes)
sets a label s for notes
<Remarks:
• Marks can be used for various purposes such as representing rehearsal numbers, optically marking chords or notes, and acoustically marking time positions; their actual usage depends on the specific software supporting GUIDO.
• Labels can be used to mark a whole piece (segment or sequence), in which case they should appear at the beginning of the first voice. Furthermore they can be used to mark arbitrary sections within a piece. This can be used to indicate motives, themes, or other analytical information.
Examples:
[ c1/2 g/4 \mark<"A"> f e f ] % simple marker
[ \mark<"ch:c7"> {c1/4,e&,g,b&} ] % marked chord
{[\label<"A"> c1/2 g/4 f],[c0/1]} % labeled segment
[c1/2 g/4 \label<"a1">(g1/8 f e/2 f/4 d/2) ] % labeled section (motive)


Advanced GUIDO Notation covers some of the more advanced concepts not covered in Basic GUIDO Notation such as glissando, arpeggio, clusters, microtonal alterations, different types of noteheads, different types of staves, and many features from contemporary notation. It also addresses issues of advanced score setting such as exact spacing and positioning of notation and graphical elements.

Advanced GUIDO Notation will be realised by an extended set of standard tags; the specification is currently under development and will be available soon.

4 Extended GUIDO Notation

Extended GUIDO Notation includes various features which extend Basic and Advanced GUIDO Notation beyond conventional music notation (CMN). Some of these features are generic pitch-classes, microtonal tuning systems and exact timing, generic tone descriptions, abstract and hierarchical scores, generalized events and user-defined tags.

Extended GUIDO Notation will be realised by introducing an extended set of event types; the specification is currently under development and will be available soon.

Acknowledgements

We wish to thank Michael Fuhlbrügge, Kai Flade, Jürgen Kilian and Thomas Helbich for their contributions to many discussions in the early stages of the GUIDO development and for their comments on earlier versions of this document.

The first author also wishes to thank the German National Merit Foundation (Studienstifung des deutschen Volkes) and Prof. Dr. Wolfgang Bibel (TU Darmstadt) who supported his stay at the University of British Columbia in Vancouver during which the main part of this work was done.