Project: Phase 1

This page describes both an overview of the entire project and a detailed description of the first phase.

I. The virtual hymnal

Your project in this course is to produce a program which typesets and displays music and text for four-part chorales (as are typically used in hymns and metrical Psalms). The program will allow a user to select the text and music independently and dynamically, and the program will produce a professional-quality image of the music and text integrated as would be found in a hymnal.

The project will be divided into three phases, with these basic goals:

On phases 1 and 2, you will be working in randomly chosen groups of size 2, 2, and 3. You will work with different people during those two phases. In phase 3, you will be working together as a group of 7.

II. Phase 1: Typesetting music

There are two primary tasks for phase 1: devising an encoding for the musical information, and rendering the music.

1. Four-part chorales

Encoding and rendering general music would be a tall task indeed. For the purposes of this project, we have a more limited goal, that of typesetting a fairly simple and orderly musical form.

The four-part chorale developed mainly in Reformational Germany, and eventually became the dominant form for hymns in the western European churches. They tended to be more melodious than earler forms such as Gregorian Chant (from which the chorale can be seen as a descendant), but were still simple enough to be useful for congregational singing.

Typically four voices (sophrano, alto, tenor, bass) sing in rythmic unison. The music for the voices (or accompaniment on a keyboard) is comprised of a sequence of pairs of intervals. Each syllable in the text corresponds to one interval in the treble clef and one interval in the bass clef.

(Note here that "interval" basically means a chord, except that chord is three or more notes played together; an interval is only two notes.)

Thus the chorale can be considered a sequence of units, each of which corresponds to one syllable in the text, and each unit is comprised of one note for each of the four voices. There are exceptions to this, however. In a given syllable, any of the voices could have two or three notes, rather than a single note. For example, in the third syllabus of "New Britain" (the tune for "Amazing Grace"), the sophrano and bass voices each sing two notes, but the alto and tenor voices hold a single note.


The Book of Psalms for Singing, 1973

For this phase, we will assume that even if there is a syllable where some voices have more than one note, it will still be the case that the total length of the notes will be the same for all voices. In the "New Britain" example above, the sophrano and bass have two eighth notes and the alto and tenor have one quarter note, each summing to one beat. In some chorales, the voices syncopate at some point, but we will not be considering such cases in this phase.

2. The encoding

Your task is to devise a notation to encode this information. The relevant information for a chorale includes

Files formatted with this encoding will be the input for your program. The encoding must be documented so that others easily can encode more tunes for your program.

3. The typesetting

Your other task is to render or typeset the encoded music by drawing a series of staffs. This is a very difficult task, which must attend to such details as

As an example of the difficulty, look at this snippet. Quick, can you tell which note the dot applies to?


The Book of Psalms for Singing, 1973

Make sure your rendering doesn't make this sort of mistake. Of course, this example is unfair because the voices are actually syncopated (the soprano holds that note longer than the other voices.

4. Resources

Here are some sources for information on musical notation, typsetting, etc

5. Mechanics

I will set up subversion repositories for you. Details are forthcoming. We will also decide teams in class.


Last modified: Mon Jan 26 16:34:23 CST 2009