Automatic Formatting of Music Sheets

Music formatting is one of the most relevant problems of program for music notation editing. Several written and non-written rules are typically applied by music engravers and composers. In this paper, an innovative approach for formalizing formatting rules is presented. The approach is based on insertion, position and priority rules and associated conditions for their activation. Conditions and rules formalized in the proposed approach are automatically executed by a formatting engine called MILLA (Music Intelligence Formatting Language). The approach is proposed by using several examples.

INTRODUCTION

The main problem of music formatting is represented by the adoption of a large number of rules and exceptions to produce correct music sheets. Rules and guidelines have been established by copyists and music engravers during centuries and can be recovered in informal form as examples of their work in several books. Relevant studies and experience on music notation formatting are presented in [12], [15] and [8] without considering the aspects of music notation modeling in computer science.

Music publisher’s copyists and most of the composers use music notation programs to produce music sheets for printing them. These programs describe the music notation by using a symbolic description. In order to make easier the music composition, composers and music copyists search in music notation programs both music formatting automation and format flexibility to cope with exceptions. Automation in the music formatting process helps composers and copyists to speed up the writing process of music score composition by facilitating complex evaluations needed to write correct music sheets in terms of symbol positioning, justification, etc.

The problems that an automatic system for music formatting has to address during the insertion and positioning of symbols in a music score have been outlined in [1], [4], [5], [10]. Several aspects and exceptions of music notation have been considered and commented. The main problems of the automatic formatting are related to the mechanisms that lead to the insertion and positioning of symbols in the music sheets. The main rules are related to the music notation symbol positioning with respect to the other symbols that are present in the music sheet. An automatic formatting engine has to evaluate parameters such as the stem direction of the note (upward or downward), and stem length, with respect to the note height. This has to be done by taking also into account the presence of polyphony, if the note belongs to a chord or to a beamed group, etc. The slope of beams depends on the note heights belonging to the beam and impacts on the notes stem length. The positioning of markers as accents, ornaments, expression, etc., symbols is influenced by the note height. The direction of the stem, the presence of slurs and of other eventual markers of the note, the positioning of fingering, bowing, etc., depends on the position of the symbols in the neighborhoods.

Relevant studies on music formatting processes are presented in [13], [9], [11], [2], [3], [16].

This article presents the solutions adopted for the formatting engine of WEDEL Music editor [14]. It has been developed in a research-oriented project founded by the European Commission, WEDELMUSIC. The formatting engine is divided in two main systems: the insertion and positioning module and the justification and line-breaking module. Please note that for the lack of space, justification and line-breaking algorithms are not explained in this paper [14].

For the insertion and positioning of music notation symbols a Music Intelligence Formatting Language (MILLA) has been defined and implemented. It can be used to describe a series of conditions that are interpreted in real time by an inferential engine in order to apply formatting rules. In MILLA formatting rules, positioning parameters of the symbols are estimated and assigned. For example, a rule may state that the stem must present a certain length under certain conditions. The conditional sentences are tested during symbol insertion and on window redrawing, leading to the application of certain rules. These sentences are context dependent conditions in the form of assertions about the music context. For example, if a note belongs to a chord and its height is -9 (with respect to the middle line of the staff, see later) then a corresponding rule for estimating the stem length is activated.

The paper is organized as follows. In Section 2, the general architecture of the automatic formatting engine of WEDELMUSIC editor is presented. In Section 3, the power of MILLA (Music Intelligence Formatting Language) is proposed by using several examples. These clearly show how is possible on the basis of the content to activate suitable formatting rules. In Section 4, conclusions are drawn.

The General architecture

In Figure 1, the general architecture of formatting and justification engines is drawn. The functionalities of each component of the architecture are outlined as follows.

The window of the music editor is both the source and the evidence of the formatting and justification engines. The editor window is used for showing music scores and by the user for sending commands to insert, delete symbols and for the general editing of the music score. The symbol and command selections are performed through the menu and toolbars of the user interface.

In WEDEL music editor, the music score is modeled by using an object-oriented model. The single parts are used to build the main score. Music notation symbols retain all the relationships among the notation symbols and music structure in general, without considering the values of graphic details regarding the music formatting on the screen (e.g., absolute of relative coordinates).

When the MILLA engine for the automatic formatting is activated, the process of inserting a symbol in the score involves some computation of conditions and activates corresponding rules. Conditions depend on the music context, for example the stem direction of notes may depend on the note height in the staff. In the object-oriented model, there are permanent parameters, for which the value is computed only one time at the insertion of the symbol in the score. In addition, some dynamic parameters are computed every time that the editor window is redrawn on the screen.

The MILLA formatting engine can be regarded as divided in two parts: the Insertion Engine evaluates permanent parameters and is invoked only at the symbol insertion; the Positioning Engine is called every time that the music editor window is redrawn (for example on resizing or on score scrolling). This allows estimating dynamic parameters related to symbols positioning.
On the basis of the music symbol involved, the formatting engine estimates the context needed to assess the conditions. For context evaluation, the MILLA engine makes queries to the object-oriented model of music. The context evaluation permits to identify the rules to be applied for setting the parameters of the symbol being inserted or positioned with the appropriate values. Each activated rule indicates the value to be set for the parameter under evaluation. For example, the stem height, the starting position of the slur, etc.

Conditions and the rules are written in MILLA and reside in a unique file that is loaded when the music editor is opened. The entire set of MILLA rules and conditions can be reloaded to give the possibility to change rules and reapply them to the same music score without the needs of closing the music editor.

WEDEL music scores can be saved and loaded in symbolic

format. The music score is loaded and saved from the object-oriented model. WEDEL format is a XML compliant format for modeling music and includes constructs for the description of integrated music objects including audio, symbolic music, images, documents, cataloguing information [14]. The symbolic music section consists in a descriptive formal language used for saving the symbolic music scores. It does not include graphics details like the coordinates of symbols. WEDELMUSIC format describes the scoring information, the musical notation symbols (for example notes, markers, clefs), their relationships (for example beams, brackets).

Parameters related to the music visualization are computed by the system at run time, on the basis of the MILLA Positioning conditions. Some formatting parameters of the music notation symbols (for example direction of the note stems) are saved in the file in terms of simple symbolic relationships (for example, up and down of the stem, above and below for expressions with respect to the note they are referred). This is useful in order to cope with exceptions and to save their value once they are computed on the basis of MILLA rules. The context evaluation and the estimation of positioning parameters are related to the other symbols visualized on the screen. Therefore, the visualization is strictly dependent on the positioning module of the formatting engine. This is invoked every time the window is resized -- e.g., on score scrolling and in general when the visualization changes.

The estimation of the spaces among music symbols (in the following simply called the justification engine), is composed by the justification and the line breaking modules (see Figure 1).

The MILLA and justification engines operate independently. The parameters set by the justification engine are the spaces among the symbols of the score and are not related to the formatting parameters set with MILLA rules. When music symbols are horizontally spaced by the justification module and formatted by MILLA positioning engine the line-breaking module is capable of arranging music in order to fill the page/view margins. The three modules set different parameters contributing to the resulting visualization of the music score.

The MILLA Language and Approach

Music formatting must address a large number of cases. In addition, the solution taken allows forcing some values in order to cope with the most relevant exceptions. The decision process of inserting and positioning of music notation symbols in the music sheets must handle a huge number of variables which characterize the music score context. This lead us to abandon a strictly procedural organization of the formatting algorithms in favor of an inferential architecture for the formatting engine.

The MILLA formatting engine is a rule based system, on which the rules stating formatting actions for music notation symbols are interpreted in real-time. The formatting actions define the values for placing music notation symbols. The actions to be performed are activated by conditions based on the music context of the symbol under insertion and positioning.

For the evaluation of the music context a set of conditions has been defined to take into account the several aspects, such as: "is in polyphony", or "note belonging to a chord". These assertions can be true or false depending on the context. On the basis of their values different actions can be applied in different contexts. Single assertions can be combined with logical operators to specify more complex conditions to identify specific contexts in which rules have to be applied. This is a simple mechanism to insert/define specific rules for managing exceptions. They are always motivated and produced by a specific context.

The user can specify the conditions by combining the single assertions available and the rules to be applied in a certain context. This results in the ability of changing the formatting style of the score and thus in a flexibility of the formatting engine. The set of rules and conditions can be planned and programmed in advance, but also changed at run time to test/apply different layouts for a music score. The MILLA Language is composed by words belonging to musicians background and the syntax is quite simple that we believe it can be understood by users without specific background on information technology. This allows to implement different music style sheets according to the publisher and end-users' needs and tastes.

The MILLA formatting engine is invoked at the insertion of each symbol to set static formatting parameters. The rules activated during the insertion are the Insertion rules. If needed, the user can manually force the decisions through the user interface.

The Insertion rules indicate the position of a symbol referred to another symbols. The graphic elements that present values to be imposed by the Insertion formatting engine are reported in the following. For example: the stem direction of notes or chords, upward or downward; the stem direction for all the notes composing a beamed group; the relative position of markers (accents, expressions, ornaments, instrument symbols, bowing, fingering, etc.) with respect to the (i) note (up/down) they are referred considering or not the direction of the note stem (on stem, opposite to stem),.or to the (ii) staff (above/below), etc.; the automatic beaming of single notes depending on the time signature.
When redrawing the music editor window, for example for window resizing or for score scrolling, the Positioning formatting engine evaluates the context to set dynamic parameters by applying Positioning rules. Positioning rules indicate the position of symbols with respect to the current visualization. This is expressed in terms of distance among other symbols in a GUI independent unit of measure. This allows the correct visualization independently on the visualization magnitude.

The dynamic parameters estimated by Positioning rules are, for example: the stem length for notes, for chords and for notes and chords belonging to beams; the angle/slope of the lines of beamed notes or chords; the coordinates of the markers with respect to the note they are referred, expressed in terms of distance between the symbol bounding box (an area that delimitate the dimension of the symbol). The position of the symbols, inside or outside the staff, on the left of right the note head, etc. The coordinates of horizontal symbols such as: slurs, bend, crescendo, decrescendo, change of octave, etc.
When more than one marker is associated with a note, a special Priority Rule is used. This specifies the order in which the positioning rules have to be applied to draw symbols. Symbols with higher priority are drawn closer to the note even if they have been added to the score after lower priority symbols. The insertion of a high priority symbols implies the re-estimation of the position of the lower priority symbols. The priority rule has the form of a list, where the symbols have a decreasing order of priority as depicted in the following.

3.1 Syntax of rules and conditions

This section introduces the syntax of MILLA rules. In MILLA, there is a clear distinction between rules, which define the actions to be performed on parameters, and the conditions, that specifies the context in which the rules are activated.

The general form of conditions is:

<typeIF <condition THEN <rule name

The conditions can be of Insertion or Positioning. They are distinguished for the <type, which can be imm or pos, for insertion and positioning, respectively. The <condition is expressed on the basis of a set of assertions in ANDed form among them. For example, INMULTIVOICE and INCHORD, INSINGLELAYER, NUMUP-NUMD0 and INCHORD, etc. They state the music context as explained with several examples in the following sections. The condition activates the rules identified by the <rule name.

The general form of rules is:

<type <rule name :

[DEFAULT] <symbol <relationship <value

Where: <type identifies Insertion and Position rules and can be RULEIMM or RULEPOS, respectively; <rule name is used to associate the condition with the insertion rule; DEFAULT is a qualifier used in the case of conflicts among rules. When several conditions are true for the same symbol the MILLA engine considers the condition that presents the highest number of ANDed terms. When two conditions with the same number of terms are true in the same case (depending to the context), the rule with DEFAULT qualifier is applied; <symbol is the reference symbol of the rule. The rule is going to estimate a parameter for drawing and placing that symbol. For example: STEM, BEAM, TRILL, etc.; <relationship states the relationship that the rule is going to fix. For example, RELNOTE is a relationship of <symbols and the note; <value is a constraint that states the value to be imposed at the parameter identified by the combination of <symbol <relationship. For example, <symbol STAFF ABOVE, <symbol STAFF BELOW, STEM RELNOTE UP, STEM RELNOTE DOWN.
For example, an insertion rule "StemUp", applied to symbol "STEM" of the note, and with action the set of the stem upward with respect to the notehead can be stated as:

RULEIMM StemUp STEM RELNOTE UP

A condition to activate this rule can be very simple. The condition could state that rule "StemUp" is called if the note that has to be inserted is localized below the middle line of the staff (identified with an height equal to 0, see Figure 2):

immIF NOTE [VAR;0] THEN StemUp

The notation [var;y] means that the height of the note is lower than y. Similar meaning have the notations [y;var] and [x; y].

Figure 2 shows the numbers assigned to the note heights referred to the lines and spaces of the staff in MILLA language.
 
 

A different condition may state that rule "StemUp" is called if the note belongs to the upper voice for a measure where polyphony (INMULTIVOICEUPPER) is present:

immIF NOTE INMULTIVOICEUPPER THEN StemUp

In the following paragraphs, an overview of some rules and conditions handling parameters related to some important symbols of the editor is presented.

The presented rules and conditions are only a small part of those used in WEDELMUSIC editor. Therefore, they have to be considered examples of the potentiality of the MILLA approach.

3.2 Rules and conditions for note stems

In the following, insertion and positioning rules and conditions are reported.

Insertion Rules and Conditions for note stem

The insertion rules for the notes specify the direction of the stem of a note or chord, which can be upward (UP) or downward (DOWN).

RULEIMM StemUp STEM RELNOTE UP;

RULEIMM StemDwn STEM RELNOTE DOWN;

These rules can be activated by the following conditions

immIF NOTE [0;VAR] THEN StemDwn;

immIF NOTE [VAR;-1] THEN StemUp;

The above two conditions represent the typical situation of note insertion. Condition NOTE [0;VAR] is true when the note highness is comprised between 0 and infinity (VAR). If the note is localized in the middle line of staff or upper (NOTE [0;VAR]) rule "StemDwn" is called. In the opposite case (NOTE [VAR;-1]), rule "StemUp" is activated. In Figure 3, these two conditions are applied in the first measure.

Figure 3 – the stem of notes and chords in single layer and in polyphony

In the presence of more voices on the same staff, the following conditions can be used:

immIF NOTE INMULTIVOICELOWER THEN StemDwn;

immIF NOTE INMULTIVOICEUPPER THEN StemUp;

These conditions activate the appropriate rules depending on which voice the note is being inserted. The stem of the notes on the upper voice (INMULTIVOICEUPPER) must be upward, while the stem of the notes in the lower voice (INMULTIVOICELOWER) must be downward. In Figure 3, these conditions have been applied in the third measure for the single notes and also for the chords.

Another case is when the note is in a single layer and is included in a chord:

immIF NOTE INSINGLELAYER AND INCHORD AND UPESTD-LOWESTD0 THEN StemDwn;

immIF NOTE INSINGLELAYER AND INCHORD AND UPESTD-LOWESTD<0 THEN StemUp;

The conditions are satisfied in the second measure of Figure 3. The notes belong to a chord (INCHORD), and only one voice is present (INSINGLELAYER), and the difference between the highest and the lowest notes of the chord locates the "center of gravity" of the chord above or below the middle line, that is (UPESTD-LOWESTD0). Where: UPESTD is the absolute value of the distance between the highest note of the chord from the middle line of the staff, with the values stated according to Figure 2. LOWESTD is the absolute value of the distance between the lowest note of the chord from the middle line of the staff.

Positioning Rules and Conditions for note stem

The positioning rules of the stem affect its length. The basic unit for stem length is the space defined as the distance between two staff lines [6]. In this way, the standard length of the stem is 3.5 spaces, but it has to assume different values depending on the note height. In Figure 4, the following conditions have been used for some notes:

posIF NOTE[0;7] AND NOTE STEMDOWN THEN Stem3_5;

posIF NOTE[8;VAR] AND NOTE STEMDOWN THEN StemHeight;

The first condition is verified for the second note of the first measure of Figure 4, while the second conditions is true for the first notes of all the measures.

Figure 4 – the stem length for notes in single layer

The above-presented conditions are only a small part of those that are needed to manage all the possible scenarios. The positioning rules are defined to impose the stem length:

RULEPOS Stem2_5 STEM RELNOTE LENGTH=2.5;

…

RULEPOS Stem3_5 STEM RELNOTE LENGTH=3.5;

…

RULEPOS StemHeight STEM RELNOTE LENGTH=STEMHEIGHT;

The last rule is based on a special variable "STEMHEIGHT" that is dynamically estimated as the note height divided by two. This parametric rule is valid for all notes localized above the second additional staff line.

The following condition takes into account the case of polyphony and occurs, for example, in the first note of the first measure of Figure 5 in the upper voice.

posIF NOTE[1;VAR] AND NOTE INMULTIVOICEUPPER THEN Stem2_5;

Figure 5 – the stem length for notes in polyphony

The above conditions activate one of the already presented rules. The others are not presented for the lack of space.

3.3 Rules and conditions for beams

Beamed notes are a group of notes of duration of 1/8 or shorter that are drawn with a beam that groups them together. For beams, it is very important to have flexible rules to impose the automatic beaming and for estimating the slope of the beam.

Insertion Rules and Conditions for beams

Insertion rules for beamed notes have effect on the direction of the note stems belonging to the beam. All the stems of the beamed notes have to present the same direction (except for some specific case, depending on the presence of multistaff parts). The context parameters that have to be evaluated to determine the stem direction of the beam depend on the note heights belonging to the group. For example, the group in the second measure of Figure 6 satisfies the following condition:

immIF MEAN<0.0 AND NOTE INSINGLELAYER THEN Beam0;

where MEAN is the mean value of note height:

in which the number of notes is the number of notes in the beam.

In Figure 6, the effects of the following Insertion Rules for beaming are shown, in the 2nd and 4th measures.

RULEIMM Beam1 BEAM RELNOTE UP;

RULEIMM Beam0 BEAM RELNOTE DOWN;

Figure 6 – the stem direction of a group of notes

In the estimation of conditions, the status condition BEAMDIS can be used. It is the distance in terms of height/spaces between the position of the highest and lowest notes:

BEAMDIS= highest - lowest

Positioning Rules and Conditions for beams

Positioning rules are used to impose the slope of the beams. It ranges from 0 (horizontal beam) to 0.5 (maximum slope corresponding to a 45&deg; angle).

In Figure 7, beams with different slopes are shown. The slopes are typically decided on the basis of the values of parameters such as the difference between the heights of the highest and lowest notes of the beam. For example, the following condition is used:

posIF DELTA<0.5 THEN BeamMin;

where DELTA is calculated as:

This condition activates the following rule:

RULEPOS BeamMin BEAM RELNOTE ANYWHERE ANGLE=0.0;

Please note that the qualifier "RELNOTE ANYWHERE" is a <relationship stating that the beam may cross the staff of can be located every where in or out the staff.

Figure 7 – some beams with different slopes

The Positioning rule can be used to fix the beam slope assigning a variable value to the ANGLE parameter of the beam:

RULEPOS BeamS1 BEAM RELNOTE ANYWHERE ANGLE=BSLOPE;

The value of BSLOPE is calculated by dividing the difference between the Y coordinates of the first and last notes of the group on by those on the X-axis.

3.4 Rules and conditions for automatic beaming

Depending on the time signature of each measure the MILLA engine automatically beams notes with hook/flag when a precise fraction of the time signature is reached during note insertion. For example, for the time signature of 4/4, the following condition can be imposed to activate rule "NumBeat4":

immIF TIME=4;4 THEN NumBeat4;

The referred insertion rule imposes the division of the measure in 4 beams:

RULEIMM NumBeat4 MEASURE RELSTAFF NBEAT=4;

3.5 Rules and conditions for markers

In music notation, there exist several symbols (called in this context markers) that can be associated with the note. They are typically positioned above or below the note head. Among them: The expression symbols: Staccato dot, Sforzato, Accento, Martellato o Staccatissimo, Tenuto o Sostenuto, Martellato dolce, Punto allungato, Htimme, Ntimme, smear, etc. The ornaments: turn, turn back, mordent, trill, tremolo, gliss, etc. The indication symbols: with mute, without mute, harmonics, fingering, etc. The instruments symbols: Tastiera, bridge, Punta, Tallone, bowing, Arc, Pizzicato, string number, pedals, hell, toe, etc.
Insertion Rules and Conditions for Markers

Insertion rules are used to estimate the position of markers. Their position is typically related to the direction of the note stem, if any. For example, the insertion rule for the staccato-dot has been used by the first note of the first measure of Figure 8:

RULEIMM Stac0 STAC RELNOTE OPPOSITETOSTEM;

It states that the staccato has to be drawn on the opposite side with respect to the direction of the note stem. The opposite constraint is ONSTEM.

Figure 8 – notes with markers

A condition that activated the above rule is:

immIF NOTE INSINGLELAYER THEN Stac0;

Positioning Rules and Conditions for Markers

Positioning rules of these symbols are used to impose parameters that state specific relative positions: in the space between staff lines or on the staff line: ONSPACE, ONLINE; outside or inside the staff: OUTSIDESTAFF, ONSTAFF; at an estimated distance from the note stem or from the note head: DX, DY; above or below the staff: ABOVE, BELOW.
These constraints can be composed for specifying the exact position of the symbols with respect to the note and the staff. For example, for the staccato dot associated with the first note of the first measure of Figure 8, the following rule has been applied:

RULEPOS Stac2 STAC RELNOTE ONSPACE OUTSIDESTAFF DX=0 DY=0;

The rule has been activated by condition:

posIF OPPOSITETOSTEM THEN Stac2;

The above conditions and rules are examples of how is possible with MILLA to transform in rule classical exceptions.

3.6 Priority rule for symbols referred to notes

Markers and other symbols may refer to the same note. In these cases, the order in which these symbols are drawn is significant. The Priority Rule states the order of positioning in which the symbols must be drawn above and/or below the note. The positioning is independent on the order in which they have been inserted. The Priority Rule is applied when the editor window is redrawn.

The editing of the priority rule can be used to change the order of symbols without modifying the symbolic description of music score. The form of the priority rule is a list of symbol identifiers in decreasing order of priority. For example,
RULEPRI STAC TENUTO SLUR MARTFORTE ACCE SFORZATO MARTELLATO PUNTOALLUNGATO ARC PUNTA BRIDGE TASTIERA ARCUP ARCDOWN STRING PIZZICATO,….., DYNAMICTEXT, CRESCENDO, DECRESCENDO, OCATAVE, …….., etc.;
The above priority rule is applied in the example of Figure 9. The staccato-dot presented a higher priority with respect to the other symbols, as can be seen in the first six notes. The PUNTA (a big P) marker has a higher priority than the BRIDGE (pont.) marker as results in the first note of the third measure. The slur (SLUR) has less priority than the staccato-dot and the tenuto marker, but higher than any other symbol as results from the slur between the second and third measure of Figure 9.

Figure 9 – the order of appearance of the symbols is established in the priority rule

Conclusions
Music formatting is an extremely complex task to be automatically performed since it involves the evaluation of a huge number of parameters. The solution proposed in this paper solves many of the most common problems of music formatting. It allows specifying music formatting styles in terms of MILLA conditions and rules. A customized set of rules can be used to personalize the music formatting process. Therefore, the users may change the music format by changing the music style without manually reformatting the music score. Currently the MILLA rules and conditions cover many aspects of music formatting. Scores as "La Primavera" of Vivaldi, "K581" trio of Mozart, "La Traviata" of Verdi can be automatically formatted for the main score and for the single parts. MILLA language can be enhanced by implementing new tokens and writing new rules and conditions.

REFERENCES
  Byrd, Donald, A., Music Notation by Computer, Indiana University, Dept. Of Computer Science, Ph. D. Thesis, 1984. Dannenberg, R., "A Structure for Representing, Disaplaying and Editing Music", In P. Berg (editor), Proceedings of the International Computer Music Conference 1986, pages 153-160. International Computer Music Association, 1986. Dannenberg, R., "A Brief Survey of Music Representation Issues, Techniques, and Systems", published as: Dannenberg, "Music Representation Issues, Techniques, and Systems," Computer Music Journal, 17(3), pp. 20-30., 1993. Gourlay John S., Allen Parrish, Dean K. Roush, F. Javier Sola, and Yiling Tien, "Computer Formatting of Music," Technical Report, OSU-CISRC-2/87-TR3, Department of Computer and Information Science, The Ohio State University, 1987. Gourlay, John S., "A Language for Music Printing", Communications of the ACM, Vol 29, May, pp.388-401, 1986. Gourlay, John S., "Spacing a Line of Music", Technical Report, OSU-CISRC-10/87-TR35, Department of Computer and Information Science, The Ohio State University, 1987. Hegazy, Wael A., and Gourlay, John S., "Optimal Line Breaking in Music," Ohio State University, Department Of Computer and Information Science, OSU-CISRC-10/87-TR33, 1987. Heussenstamm, G., "The Norton Manual of Music Notation", Ed. W. W. Norton & Company, Inc., 1987. Gourlay, John S. and Parrish, Allen, "Computer Formatting of Musical Simultaneities," Ohio State University, Dept. Of Computer and Info. Science, OSU-CISRC-10/87-TR28, 1987. Allen Parrish, Wael A. Hegazy, John S. Gourlay, Dean K. Roush and F. Javier Sola, "Musicopy: An Automated Music Formatting System," Ohio State University, Dept. Of Computer and Info. Science, OSU-CISRC-10/87-TR29, 1987. Rader, Gary M., "Creating Printed Music Automatically", Computer, June 1996, 1996. Ross, Ted, The Art of Music Engraving and Processing, Hansen Books, Miami, 1970. Roush D., "Music Formatting Guidelines" Ohio State University, Dept. Of Computer and Info. Science, OSU-CISRC-3/88-TR10, 1988. WEDELMUSIC prog. http://www.wedelmusic.org D. Wood, ``Hemidemisemiquavers...and other such things. A concise guide to music notation,'' The Heritag Music Press, Dayton, Ohio, USA, 1989. A. Wolff, "Problems of Representation in Musical Computing," Computers and the Humanities, Vol. 11, 1977, pp. 3-12