GABC Notation


gabc is a simple notation based exclusively on ASCII characters that enables the user to describe Gregorian chant scores. The name gabc was given in reference to the ABC notation for modern music.

The gabc notation was developed by a monk of the Abbey of Sainte Madeleine du Barroux and has been improved by Élie Roux and by other monks of the same abbey to produce the best possible notation.


A small summary has been created, you can download it here. You must have basics of gabc to understand it, but it can help you remember some notations. It is made to be printed on A5 paper.

There is also a "cheat sheet" available at

Files written in gabc have the extension .gabc and have the following structure:

name: incipit;
gabc-copyright: copyright on this gabc file;
score-copyright: copyright on the source score;
office-part: introitus/...;
occasion: in church calendar;
meter: for metrical hymns;
commentary: source of words;
arranger: name of arranger;
author: if known;
date: xi c;
manuscript: ms name;
manuscript-reference: e.g. CAO reference;
manuscript-storage-place: library/monastery;
book: from which score taken;
language: of the lyrics;
transcriber: writer of gabc;
transcription-date: 2009;
mode: 6;
user-notes: whatever other comments you wish to make;
annotation: IN.;
annotation: 6;
(clef) text(notes)

In each case, replace whatever is between the colon and semi-colon (:...;) with the appropriate character string. Of these attributes, only name is mandatory. Descriptions of how these header fields are intended to be used are below. If you wish to write a value over several lines, omit the semicolon at the end of the first line, and end the attribute value with ;; (two semicolons).

Some headers have special meaning to Gregorio:

This is the name of the piece, in almost all cases the incipit, the first few words. In the case of the mass ordinary, the form as Kyrie X Alme Pater or Sanctus XI is recommended where appropriate.
This license is the copyright notice (in English) of the gabc file, as chosen by the person named in the transcriber field. As well as the notice itself, it may include a brief description of the license, such as public domain, CC-by-sa; for a list of commonly found open source licenses and exceptions, please see this page. A separate text file will be necessary for the complete legal license. For the legal issues about Gregorian chant scores, please see the legal issues page. An example of this field would be:
gabc-copyright: CC0-1.0 by Elie Roux, 2009 <>;
This license is the copyright notice (in english) of the score itself from which the gabc was transcribed. Like the gabc-license, there may be a brief description of the license too. In unclear or complex cases it may be omitted; it is most suitable for use when the transcriber is the copyright holder and licensor of the score as well. One again, reading the page on legal issues is recommended. An example of this field would be:
score-copyright: (C) Abbaye de Solesmes, 1934
The author of the piece, if known; of course, the author of most traditional chant is not known.
The language of the lyrics.
If legacy, the orientation of an unconnected oriscus must be set manually.
The mode of the piece. This should normally be an Arabic number between 1 and 8, but may be any text required for unusual cases. The mode number will be converted to Roman numerals and placed above the initial unless one of the following conditions are met:
  • There is a \greannotation defined immediately prior to \gregorioscore.
  • The annotation header field is defined.
The mode "modifier" of the piece. This may be any TeX code to typeset after the mode, if the mode is typeset. If the mode is not typeset, the mode-modifier will also not be typeset.
The mode or tone differentia of the piece. Typically, this expresses the variant of the psalm tone to use for the piece. This may be any TeX code to typeset after the mode-modifier, if the mode is typeset. If the mode is not typeset, the mode-differentia will also not be typeset.
The annotation is the text to appear above the initial letter. Usually this is an abbreviation of the office-part in the upper line, and an indication of the mode (and differentia for antiphons) in the lower. Either one or two annotation fields may be used; if two are used, the first is the upper line, the second the lower. Example:
annotation:Ad Magnif.;
annotation:VIII G;
Full TeX markup is accepted:
annotation:{\color{red}Ad Magnif.};
annotation:{\color{red}VIII G};
If the user already defined annotation(s) in the main TeX file via \greannotation then the annotation header field will not overwrite that definition.
The number of lines on the staff. You can have as few as 2 lines and as many as 5. If this header is left out, then the default will be the classic 4 line staff.

Although Gregorio ascribes no special meaning to them, other suggested headers are:

The office-part is the category of chant (in latin), according to its liturgical rôle. Examples are: antiphona, hymnus, responsorium breve, responsorium prolixum, introitus, graduale, tractus, offertorium, communio, kyrie, gloria, credo, sanctus, benedictus, agnus dei.
The occasion is the liturgical occasion, in latin. For example, Dominica II Adventus, Commune doctorum, Feria secunda.
For hymns and anything else with repetitive stanzas, the meter, the numbers of syllables in each line of a stanza. For example, for typical Ambrosian-style hymns: 4 lines each of 8 syllables.
This is intended for notes about the source of the text, such as references to the Bible.
The name of a modern arranger, when a traditional chant melody has been adapted for new words, or when a manuscript is transcribed into square notation. This may be a corporate name, like Solesmes.
The date of composition, or the date of earliest attestation. With most traditional chant, this will only be approximate; e.g. XI. s. for eleventh century. The convention is to put it with the latin style, like the previous examples (capital letters, roman numerals, s for seculum and the dots).
For transcriptions direct from a manuscript, the text normally used to identify the manuscript, for example Montpellier H.159.
A unique reference for the piece, according to some well-known system. For example, the reference beginning cao in the Cantus database of office chants. If the reference is unclear as to which system it uses, it should be prefixed by the name of the system. Note that this should be a reference identifying the piece, not the manuscript as a whole; anything identifying the manuscript as a whole should be put in the manuscript field.
For transcriptions direct from a manuscript, where the manuscript is held; e.g. Bibliothèque Nationale, Paris.
For transcriptions from a modern book (such as Solesmes editions; modern goes back at least to the 19th century revival), the name of the book; e.g. Liber Usualis.
The name of the transcriber into gabc.
The date the gabc was written, with the following convention yyyymmdd, like 20090129 for january the 29th 2009.
This may contain any text in addition to the other headers -- any notes the transcriber may wish. However, it is recommended to use the specific header fields where they are suitable, so that it is easier to find particular information.

After the %% separator, (clef) text(notes) represents the description of the score. In the following sections, we will only talk about this section, which is the heart of the notation.

Notation fundamentals


We have chosen to represent pitch using a single character. One character corresponds to one written pitch: whatever the clef may be, a position on the staff will still be represented by the same character. With this system, anyone will be able to type scores, even people who are unfamiliar with solfege or do not know much about music theory.

There are 13 possible pitches in Gregorian chant scores, which are represented by letters from a to m that is, 13 characters. For the rare pieces with a broader range, the clef changes.

The inconvenience of this choice is that it only corresponds to English notation (notes A through G) when the do-clef is on the top line of the staff, and even then only for the low notes on the staff.

Correspondence between letter and staff position

One-note neumes

In the notation adopted, a lower-case letter from a to m, represents a punctum quadratum, a square note, and an upper-case letter (A through M), a punctum inclinatum, a diamond-shaped note, which are less frequently used.

For the oriscus pointing in the direction of the next non-unison note add an o or use o0 for an oriscus pointing down, o1 for an oriscus pointing up. A stropha is coded by adding a s, etc.

The different shapes

Nota Bene: There are actually three puncta inclinata glyphs: one shaped for an ascending series of such notes, one for a descending series, and one for a unison series (notes at the same pitch). While there are algorithms which should automatically select between these three glyphs based on the surrounding notes, you can force the selection of a particular shape with G0 (for descending), G1 (for ascending), and G2 (for unison).

Complex neumes

To compose a neume with more than one note, you simply type the letters corresponding to the notes, without worrying about the connections between them. These will be calculated automatically. In the following examples, the caption to each image shows the letters in gabc notation which correspond to the image.

Example of complex neume

When there is a quilisma within a neume, you type a w after the corresponding pitch.

Of course there are cases in which a sequence of notes can be written in more than one way. These cases are described in the section Determination of the neume according to the sequence of notes.


Gregorio will automatically add virgae (the thin vertical stems) to most note groups which require them. If you require a virga which does not normally appear it can be added to the note with v (virga on the right) or V (virga on the left). If an unwanted virga appears, it can be suppressed by prepending the note group with a @.

Adding and suppressing virgae

Separation bars

Separation bars indicate a pause in the chant, so punctuation signs have been chosen to represent them.

The separation bars

When a bar is located between two syllables, you must put it in as a separate syllable, as for example,  jus(g) (::) Di(g) .

When a colon ( : ) in the text is immediately followed by a bar, you must type the colon with the preceding word, and not after the note: for example,  jus :(g) (:)  instead of  jus(g) :(:) .

The clef

The way to notate the clef is using two or three characters:

Sample clefs

Starting in v4.1 it is possible to print two clefs at the same time. The clefs are linked by a @ and will be printed one over the other if there is room, otherwise the second clef (after the @) will be pushed to the right to prevent a collision. When determining the position of a custos automatically, GregorioTeX will always use the first clef.

Sample double clefs


It is very simple to write text and neumes: the letters corresponding to the notes are typed in parentheses after the syllable to which they correspond.

To delineate words, you simply put a space between them. We can now give an example of the final notation:

Po(eh/hi)pu(h)lus(h) Si(hi)on(hgh)

The text here is Populus Sion and each syllable is followed by the corresponding neume between brackets.

Here we have to consider the case of text characters located under a separation bar. These characters are principally asterisks indicating repeated sections and other signs indicating the structure of the piece. In those cases, we choose to treat such a character as if it were a syllable: for example,

Si(hi)on,(hgh) *(;) ec(hihi)ce(e).

When there is no character under a separation bar, we proceed the same way, but with a space instead of text:

su(iji)ae,(i) (;) in(e)

Text centering

In Gregorian chant, aligning the neumes with the text is important so that the singer can match them up appropriately. By default, Gregorio automates this using the rules described on the page about the writing of chant. However, these rules, which are traditional to Latin text, may not give the desirable result in all cases. For instance, if the languages other than Latin may identify vowels in a different manner. To help with this you can use the language header field to specify a language for the lyrics other than Latin. When Gregorio encounters this field, it will look for for the language in gregorio-vowels.dat. This file uses a special syntax to describe how the vowels in a syllable are determined:

alias [english] to [en];
alias [English] to [en];
alias [eng] to [en];

language [en];

vowel aàáâAÀÁÂ;
vowel eèéêëEÈÉÊË;
vowel iìíîIÌÍÎ;
vowel oòóôOÒÓÔ;
vowel uùúûUÙÚÛ;
vowel yỳýYỲÝ;
vowel æǽÆǼ;
vowel œŒ;

prefix qu Qu qU QU;
prefix gu Gu gU GU;
prefix y Y;

suffix w W;
suffix we We wE WE;

secondary w W;

The alias keyword indicates that a name is an alias for a given language. The alias keyword must be followed by the name of the alias in square brackets, the to keyword, the name of the target language in square brackets, and a semicolon. For best performance, aliases should precede the language they are aliasing.

The language keyword indicates that the rules which follow are for the specified language. It must be followed by the language name enclosed in square brackets and a semicolon. The language specified applies until the next language statement.

The vowel keyword indicates that the characters which follow, until the next semicolon, should be considered vowels. There may be multiple vowel statements, and the characters following all of them will be considered vowels.

The prefix keyword lists strings of characters which end in a vowel, but when followed by a sequence of vowels, SHOULD NOT be considered part of the vowel sound. These strings follow the keyword and must be separated by space and end with a semicolon. There may be multiple prefix statements, and all will apply. Examples of prefixes include "i" and "u" in Latin and "qu" in English.

The suffix keyword lists strings of characters which don't start with a vowel, but when appearing after a sequence of vowels, SHOULD be considered part of the vowel sound. These strings follow the keyword and must be separated by space and end with a semicolon. There may be multiple suffix statements, and all will apply. Examples of suffixes include "w" and "we" in English and "y" in Spanish.

The secondary keyword lists strings of characters which do not contain vowels, but for which, when there are no vowels present in a syllable, define the center of the syllable. These strings follow the keyword and must be separated by space and end with a semicolon. Examples of secondary sequences include "w" from Welsh loanwords in English and the syllabic consonants "l" and "r" in Czech.

Gregorio comes with a gregorio-vowels.dat which defines rules for English (with the possible aliases shown above in the example) and the Slavic languages. The available aliases for the Slavic languages are:

For other languages (or to modify the rules for Latin, English, or the Slavic languages), you will have to write your own gregorio-vowels.dat and place it in some folder that can be found using kspewhich --all gregorio-vowels.dat. If you do write vowel definitions for a new language, you are invited to submit them for inclusion in future versions of Gregorio. See the the contributing guide for details.

Additionally, if it is necessary, it is possible to control the portion of a particular syllable which is identified as the vowel. To do this, put the part of the text to be considered the vowel between braces (in the gabc). For instance, in the following example the neumes will align with the center of "ve" instead of the first "e":


Finally, GregorioTeX provides two alternate rule sets which don't rely on vowel identification: centering the whole syllable under the first neume and centering the first letter of the syllable under the first neume. To use these rules you will need to use the \gresetlyriccentering{syllable} or \gresetlyriccentering{firstletter} command, respectively, in your TeX file. \gresetlyriccentering{vowel} will change things back to the default rules.

Initial determination

The initial is automatically recognized by gregorio as the first letter. You can the control how many lines it takes up with the \gresetinitiallines{<integer>} in your TeX file. Setting this value to 0 means that the initial will not be separated out and will appear with the rest of its syllable under its notes.

Note that in the case of a syllable composed of one letter only, GregorioTeX automatically adds a hyphen under the first notes. To disable this feature, use the command \gresetemptyfirstsyllablehyphen{auto}.

Special characters

It can happen that the texts of Gregorian chants contain unicode characters which are not easily accesible from the keyboard. Examples of this sort of character are ý, ǽ, œ́, the barred R (℟ for Response), and the barred V (℣ for Versicle). There is also the possibility of a non-unicode character such as the barred A (for Antiphon).

Gregorio will allow the use of any unicode character directly entered via your platform's character picker or a keyboard shortcut. In the case where it is not possible to insert special characters in either of these ways, you can be use <sp> markup tags, for example <sp>R/</sp> for the barred R, <sp>'ae</sp> for ǽ. This also works for the barred A, even though it is not in the unicode table: <sp>A/</sp>

Finally, you can make use of the <v> markup tags to enter a character using it's TeX code: <v>{\ae}</v> for æ.

Text style

Even though text is rarely styled in a chant score, gabc allows for some markup to apply styles to the text: they are <i> for italic, <b> for bold, <u> for underline (does not work in Plain TeX), <c> for colored (specifically in gregoriocolor), and <sc> for small capitals.

For example: <i>Ps.</i>(::)

You have now read the basics of the gabc notation, you can go on the details page if you want to know more!