This chapter describes the encoding of indications of harmony ocurring within a music text, e.g., chord names, tablature grids, figured bass, or signs for harmonic analysis, and the methods by which these indications can be connected with their interpretations. For encoder-supplied analysis of intervallic content, please see chapter Analytical Information.
The module makes available the following components:
The following elements are provided by the harmony module:
The harmony module contains the following attribute classes:
The following model classes are enabled by the harmony module:
On the most basic level, chords in the musical text can be encoded using the chord element:
With only this kind of markup, harmonic information is implicit in the notes themselves. The elements and attributes of this module, however, provide for the encoding of explicit indications of harmony, such as chord symbols, tablature grids, figured bass signs, and the symbols of harmonic analysis like Roman numerals and their interpretation.
An harmonic label, such as “7”, may occur many times throughout an MEI instance. Where the goal is diplomatic transcription, simply recording the uninterpreted label is sufficient. Recording the precise meaning of such a label requires storing an interpretation. But, including the interpretation at every point of occurrence of the label would swell the size of the file and complicate the markup for those users who are not interested in the interpretation. Therefore, MEI separates the encoding of harmonic labels from the encoding of the interpretation of those labels.
The following elements enable the creation and re-use of interpreted chord data:
The chordTable element is a container for a set of chord definitions, while the chordDef element defines a single chord. Chord definitions may be created a priori or as the result of analysis of the pitch content of the music at hand, for instance, by examination of the notes occurring on the downbeat of each measure. In this way, the chord definitions serve as a record of the analysis.
Even though it is not required by the schema, an @xml:id attribute on chordDef is necessary to permit the creation of associations between harmonic indications in the musical text with the chord defined here. The @xml:id attribute provides a unique identifier for the chord definition that can be referenced by the harm element’s @chordref attribute.
Individual pitches of a chord are encoded using chordMember. The @inth attribute provides the means for indicating the number of half steps of the chord note above the bass note.
These simple resources allow for the detailed specification and interpretation of harmonic indications found in the musical text. For example, the harmonic label A can be equated with a fully spelled-out indication of functional harmony that can be substituted for the harmonic label, say, in an aural rendition:<div class="sampleCode" data-lang="false">
Alternatively, the non-bass chord tones may be indicated, not with pitch names, but with their intervallic distance above the bass note. Therefore, the example above may also be encoded:
The preceding encoding possibilities provide the detailed information necessary to create playable chord annotations. For more generic uses, however, the encoding can be taken one step further; that is, it can be reduced to its minimum intervallic content by eliminating octave duplications and expressing all chord members, including the bass note, using intervals above the bass. Of course, the @inth attribute for the bass note itself should be set to 0. For example:
The @pos attribute on chordDef, the @fing and @fret attributes on chordMember, and the barre element child of chordDef are provided in order to create displayable and performable chord tablature grids for guitar and other fretted string instruments. The fret at which a finger should be placed is recorded in the @fret attribute, while @fing indicates which finger, if any, should be used to play an individual string. The values x and o are used to indicate muffled and open strings, respectively.
The chordDef element may contain barre sub-elements when a single finger is used to stop multiple strings. Here the @fret attribute gives the fret position at which the barre should be created, while the @startid and @endid attributes are used to indicate the chordMember elements on which the barre starts and finishes.
With regard to indications of harmony, MEI attempts to strike a balance between very precise (interpreted) and very loose (uninterpreted) markup needs. Therefore, various kinds of harmonic labels are accommodated by the harm element. While some are more structured than others, in the final analyis they all function as labels. Therefore, MEI provides only a single element for the capture of harmonic indications of all kinds:
The harm element can be used to capture chord labels that consist entirely of text:
or labels that are chord tablature grids:
or labels that mix these styles:
The harm element must define a point of attachment using one of the following attributes: @startid, @tstamp, @tstamp.ges or @tstamp.real. The most commonly-used of these are @startid and @tstamp.
The @dur attribute encodes the logical and visual duration of the harmony. Please note that the @dur attribute here is not a true duration, but rather a time stamp for the end point of the harmony.
Precise placement of the harmonic label can be controlled through the use of attributes in the att.harm.vis attribute class.
Figured bass is a specialized form of harmonic indication. In order to support the capture of the semantics of figured bass, and not just its visual representation, MEI provides the following elements:
Figured bass, consisting as it does of text, can always be represented purely visually. This is probably how an OMR program or other naive encoder might deal with the markup of figured bass:
However, this kind of approach fails to recognize that a figured bass is being used and not some other system of harmonic indications. To capture this knowledge, the preceding example can also be marked more explicitly with:
In order to provide greater control over the individual components of the figured bass, each component can be treated as a figure. The natural symbol is encoded using the Unicode MUSIC NATURAL SIGN character.
Encoding order of the component f elements is significant as is the encoding order of the characters within each component. In the preceding example, the entire figured bass sign is encoded from top to bottom, in other words, just as the figure appears on the page. In the following examples, the encoding order of the characters in f explicitly locates the accidentals:
Characters with combining slashes can be handled using the Unicode characters COMBINING REVERSE SOLIDUS OVERLAY (6⃥) and COMBINING LONG SOLIDUS OVERLAY (6̸). The combining nature of these Unicode characters indicates very clearly that they “overstrike” the preceding character. The usual convention for slashes; that is, 6\ and 6/ for backslash and slash, respectively, may also be followed:
Each component of the figured bass sign may use the @extender attribute to indicate that horizontal lines are used to mark the extent of the figure’s harmonic influence. The @altsym attribute can be used to point to a user-defined symbol that better represents the figure component, for example, the combined “2” and “+” below. Similar to the slash in the preceding example before, the small curve over the “5” in example 6 can be represented by the Unicode COMBINING INVERTED BREVE.
Because the repertoire of signs is so large, figures which consist entirely of a mark indicating repetition of the preceding figure, should be represented by the character appearing in the document. For example, in some notational styles, the repetition sign is a dash (-), while in others it is a solidus (/). Using characters like this is also consistent with other existing figured bass encoding schemes.
Often, the distinction between extending lines and repetition signs is unclear. Treating what at first appear to be extenders as repetition signs, however, can sometimes help to simplify the required markup and to make the intent of the signs explicit. For example, in the following example the dashes on beat 4 and 4.5 are treated as repetition signs:
Using @extender attributes for this example may make it easier to render the figured bass symbol, but it is less explicit with regard to the intended harmony. For example, it is difficult to ascertain what harmony should be sounding on beat 4 and its after-beat.
The primary goal of fb is not the capture all the visual idiosyncracies that can be found in printed and manuscript scores throughout the centuries, but to provide a more-or-less standardized label. The markup below, or any markup in fact, cannot capture the exact look of the figured bass signs. The @altsym attribute may be used to provide access to a user-defined symbol for precise rendition. Similarly, the @facs attribute may be employed to point to the symbol as it occurs in the encoding source material.