Mudela 1.0.21 / LilyPond 1.1.49 Reference Manual

Mudela 1.0.21 / LilyPond 1.1.49 Reference Manual

Adrian Mariano, Han-Wen Nienhuys and Jan Nieuwenhuizen

(July 13, 1999 )

Table of Contents

1: Running LilyPond

2: Syntax

2.1: Basic Mudela

2.2: Identifiers

2.3: Modes

3: Note Description

3.1: Basic Note Specification

3.2: Automatic Beam Generation

3.3: Note Spanners: Beams, Slurs and Ties

3.4: Note Ornaments

4: Other Ways to Enter Pitches

4.1: Pitch Names in Other Languages

4.2: Relative Pitch Specification

4.3: Tranposition of Pitches

5: Chords

6: Lyrics

7: Time

8: Repeats

9: Keywords

10: Notation Contexts

11: Pre-defined Identifiers

12: Output

12.1: Paper variables

12.2: MIDI Instrument Names

12.3: Translators

12.3.1: Paper Types and Engravers and Pre-defined Translators
12.3.2: MIDI Types and Performers



Disclaimer

This document is written in Yodl and should foremost produce nice LaTeX output. In other formats, such as html, some things will look a bit different, while other things will be simply left out. Therefore, the authoritive version of this document is the PostScript version, produced via LaTeX. As you know, no gifs due to patent problems, but the PNG images should be viewable with any current browser .

This document is not up to date. All rendered examples of course are current, but the rest probably isn't. Adjusting the tutorial was considered more important than writing the reference manual. We apologize for the inconvenience. For a complete and up-to-date definition, see lily/parser.yy, lily/lexer.ll, and the init files.

This document describes the the GNU LilyPond input format, which is an effective language for defining music. We call this language (rather arrogantly) The Musical Definition Language or Mudela, for short. (If anybody comes up with a better name, we'd gladly take this. Gourlay already uses Musical Description Language, G-Sharp Score Definition Language. ISO standard 10743 defines a Standard Music Description Language. We're not being original here.)

The first aim of Mudela is to define a piece of music, being complete from both from a musical typesetting, as from a musical performing point of view.

The Musical Definition Language (Mudela), has a logical structure, making use of identifiers, that allows for flexible input, and definition reuse. See the documentation file MANIFESTO, included with the LilyPond sources for reasons and design considerations.

1: Running LilyPond

When invoked with a filename that has no extension, LilyPond will try adding a .fly extension first, and a .ly extension second. If the filename ends with .fly, LilyPond processes the file as music using init.fly. In this case, LilyPond does something like:

\score {
  \notes\relative c {
    \input "yourfile.fly"
  }
  \paper{}
  \midi{}
}
If you invoke LilyPond with a file foo.ext that doesn't have the .ly extension then LilyPond will look for a file called init.ext and process this file. The file init.ext must contain the \maininput keyword or LilyPond will not read the user specified file.

When LilyPond processes filename.ly it will produce filename.tex as output. If filename.ly contains a second \paper keyword, then LilyPond will produce filename-1.tex as well. Subsequent \paper keywords will produces sequentially numbered file names. Several files can be specified; they will each be processed independently.

2: Syntax

2.1: Basic Mudela

A Mudela file consists of keywords with arguments and identifier assignments separated by spaces, tabs or newlines. Semicolons are used by some keywords and are inconsistantly required in other circumstances. A one line comment is introduced by a % character. Block comments are started by %{ and ended by %}. They cannot be nested.

Mudela supports several types:

integer
Formed from an optional minus sign followed by digits. Arithmetic operations cannot be done with integers, and integers cannot be mixed with reals.

real
Formed from an optional minus sign and a sequence of digits followed by a emph(required) decimal point and an optional exponent such as -1.2e3. Reals can be built up using the usual operations: +, -, *, and /, with parentheses for grouping.

string
Begins and ends with the " character. To include a " character in a string write \". Various other backslash sequences have special interpretations as in the C language. A string that contains no spaces can be written without the quotes. See Section 2.3 for details on unquoted strings; their interpretation varies depending on the situation. On the right side of identifier assignments and within the \header keyword, strings can be concatenated using the + character.

dimension
Consists of a real followed by one of the dimension keywords: \mm, \pt, \in, or \cm. Dimensions are converted immediately to a real which gives the dimension in points, so they can be mixed with reals, but the result is no longer of type dimension. The keywords that require a dimension (\shape).

pitch
A pitch is a string which is the name of a pitch. Example: a. The pitch names can be redefined with the \notenames keyword. See Section(notelang) for pitch names in different languages. Pitches can only be specified inside note mode which is specified with \notes. Therefore, keywords which require pitch arguments must appear inside \notes.

music
Music is a compound type: arbitrarily complicated expressions with a hierarchical structure can be formed from simple building blocks. The simplest expression of type music is a single note. A note is formed from a pitch and an optional duration and must be specified within \notes. See Section 3 for details. More complicated expressions of type music are formed by surrounding a sequence of expressions of type music with braces { and } or with angle brackets < and >. Items appearing in braces will be treated as serial. Items in angle brackets will be simultaneous. So for example { c e g } represents an arpeggio and < c e g > represents a chord. These items can be nested any way you like. This simple example shows how three chords can be expressed in two different ways:
\notes{ c <a c' e'> <b d' f'> <c' e' g'> <{a b c'}{c' d' e'}{e' f' g'}> }[reference-manual.yo-0.2.1.png]

2.2: Identifiers

Identifiers allow names to be assigned to constants, music, or other Mudela structures. To assign an identifier you use name=value and to refer to an identifier, you preceed its name with a backslash: \name. It is legal to redefine an identifier in terms of its old value: foo = \foo * 2.0. Identifier assignments must appear at the top level in the Mudela file. Note that semicolons are forbidden after assignments appearing at the top level but they are obligatory after assignments appearing elsewhere. (Semicolons are also forbidden after \property assignments.)

An identifier can be created with any string for its name, but you will only be able to refer to identifiers whose names begin with a letter and are entirely alphanumeric. It is also impossible to refer to an identifier whose name is the same as the name of a keyword. The following words are keywords:

accepts         duration      midi          relative      textscript 
alternative     font          mm            remove        time       
bar                   musicalpitch  repeat        times      
cadenza         header        name          scm           translator 
chordmodifiers  in            notenames     scmfile       transpose  
chords          include       notes         score         type       
clef            key           paper         script        version
cm              keysignature  partial       shape      
consists        lyrics        penalty       skip       
consistsend     maininput     property      spanrequest
context         mark          pt            tempo

The right hand side of an identifier assignment is parsed completely when the assignment is made. It therefore must have any context specified in the definition. For example, you must write foo=\notes{a8 b c} rather than foo={a8 b c}. Even though the context is specified in the definition, you must refer to the identifier inside the correct context:

foo = \paper{ linewidth = 6.0\in; }
\score{
  \notes{ ... }
  \paper{ \foo }
}
If \foo is used here without the surrounding \paper then an error will result. Note however that the following is acceptible
foo = \notes { ... }
\score{ \foo }
It is not necessary to specify \notes.

Identifiers can be set equal to integers, reals, strings, music, durations (specified with \duration), note ornaments (specified with \script, dynamics commands, or :), note name tables (specified with \notenames, translator definitions, the \paper block, the \midi block or the \score block. When identifiers are used for translators, the \paper, \midi, and \score blocks, they may only be referred to as the first item in a block. So \paper{\one \two} is illegal because the identifier \two is not the first thing in the block. Unlike other identifier definitions, translator identifier definitions can only appear within \midi or \paper blocks. See Section 12.3 for more information.

2.3: Modes

To simplify different aspects of music definition (entering the notes and manipulating them) Mudela has three different input modes which affect how unquoted strings are interpreted. In each mode, words are identified on the input. If "word" is encountered, it is treated as a string. If \word is encountered it is treated as a keyword or as an identifier. The behavior of the modes differs in two ways: different modes treat unquoted words different, and different modes have different rules for deciding what is a word.

Normal mode
At the start of parsing, Mudela is in normal mode. In normal mode, a word is an alphabetic character followed by alphanumeric characters. If word is encountered on the input it is treated as a string.

Note mode
Note mode is introduced by the keyword \notes. In Note mode, words can only contain alphabetic characters. If word is encountered, LilyPond first checks for a notename of word. If no notename is found, then word is treated as a string. If you mistype a notename, the parser will most likely complain that you should be in \lyrics mode to do lyrics.

Chord mode
Chord mode is instroduced by the keyword \chords. Very similar to Note mode.

Lyric mode
Lyrics mode is introduced by the keyword \lyrics. This mode is has rules that make it easy to include punctuation and diacritical marks in words. A word in Lyrics mode begins with: an alphabetic character, _, ?, !, :, ', the control characters ^A through ^F, ^Q through ^W, ^Y, ^^, any 8-bit character with ASCII code over 127, or a two character combination of a backslash followed by one of `, ', " or ^. Subsequent characters of a word can be any character that is not a digit and not white space. One important consequence of this is that a word can end with }, which may be confusing if you thought the } was going to terminate lyrics mode. Any _ characters which appear in an unquoted word are converted to spaces, providing a mechanism for introducing spaces into words without using quotes. Quoted words can also be used in lyrics mode to specify words that cannot be specified with the above rules. Here are some examples. Not all of these words are printable by TeX.
a&@&@&TSI|{[    % a word
NOTRANS(&aacute;)foo}         % a word
1THtrhortho     % not a word because it starts with a digit
``Hello''       % not a word because it starts with `
Leise Fl\"u\ss{}teren meine Sapfe       % 4 words
_ _ _ _         % 4 words, each one a space

It is possible to create words that break the rules by prefixing them with the dollar sign $. Regardless of the context, a word beginning with $ extends until the next white space character. Such words can contain numbers (even in Note mode), or other forbidden characters. The dollar sign can be used to create and access identifiers that could not otherwise be used.

3: Note Description

3.1: Basic Note Specification

A note specification has the form pitch[octavespec][!][?][duration]. The pitch of the note is specified by the note's name.

LilyPond has predefined note names for various languages. The default names are the Dutch note names. The notes are specified by the letters c through b, where c is an octave below middle C and the letters span the ocatave above that C. In Dutch, a sharp is formed by adding -is to the end of a pitch name. A flat is formed by adding -es. Double sharps and double flats are obtained by adding -isis or -eses. Lily has predefined sets of notenames for various languages. See Section 4.1 for details. Rests are specified with the note name r or R. There is also a note name s which produces a nonprinting note of the specified duration.

The optional octave specification takes the form of a series of single quote ' characters or a series of comma , characters. Each ' raises the pitch by one octave; each , lowers the pitch by an octave.

c' d' e' f' g' a' b' c'' [reference-manual.yo-0.3.1.png]

cis' dis' eis' fis' gis' ais' bis' [reference-manual.yo-0.3.2.png]

ces' des' es' fes' ges' as' bes' [reference-manual.yo-0.3.3.png]

cisis' eisis' gisis' aisis' beses' [reference-manual.yo-0.3.4.png]

ceses' eses' geses' ases' beses' [reference-manual.yo-0.3.5.png]

Whenever a C-sharp is desired, you must specify a C-sharp. LilyPond will determine what accidentals to typeset depending on the key and context. A reminder accidental can be forced by using the optional exclamation mark `!' on the pitch. A cautionary accidental, i.e., an accidental within paranthesis can be obtained using the optional question mark `?' on the pitch.

cis' d' e' cis' c'? d' e' c'! [reference-manual.yo-0.3.6.png]

Durations are entered as their reciprocal values

a'1 a'2 a'4 a a'8 a a'16 a'32 a'64 [reference-manual.yo-0.3.7.png]

r1 r2 r4 r8 r16 r32 [reference-manual.yo-0.3.8.png]

If the duration is omitted then it is set equal to the previous duration. If there is no previous duration, then a quarter note is assumed. The duration can be followed by a dot . to obtain dotted note lengths.

a'4. b'4. [reference-manual.yo-0.3.9.png]

Extra long notes can be obtained using the \breve and longa durations:

c'\breve gis'\longa [reference-manual.yo-0.3.10.png]

In order to get triplets and other tuplets, you must use the \times keyword which multiplies the duration by a fraction. The syntax is \times fraction music. The length of all of the specified music will be multiplied by the fraction and the fraction's denominator will be printed over the notes. The most common tuplet is the triplet in which 3 notes have the length of 2, so the notes are 2/3 their written length:

b'4 \times 2/3 {c'4 c' c'} d'4 d'4 [reference-manual.yo-0.3.11.png]

If you try to use \times as the first thing in your music, you may encounter the warning ``No one to print a tuplet start bracket''. This happens because the Tuplet-engraver is in Voice and no Voice has been created yet. You must explicitly specify the Voice context in this situation

\context Voice { \times 2/3 {c'4 d' e'}} [reference-manual.yo-0.3.12.png]

A shorthand for \times is to write *fraction after a duration. This shorthand will not label triplets correctly, but it is convenient for long rests. For long rests with durations equal to an integer number of whole notes, LilyPond produces output that indicates the duration of the rest. If you use r then one rest symbol will be printed and several measures left blank. If you use R then all of the measure will be filled with whole rests.

r1 r1*3 R1*3 [reference-manual.yo-0.3.13.png]

If you set the Score.skipBars property, then only one measure will be printed; with R, a number indicating the length of the rest will be displayed.

\property Score.skipBars=1 r1 r1*3 R1*3 [reference-manual.yo-0.3.14.png]

Even though the \times command is not explicit, it is still necessary to specify a Voice context if the music begins with rests lengthened using *. Otherwise, the following will result:

R1*3 c'1 d' [reference-manual.yo-0.3.15.png]

3.2: Automatic Beam Generation

By default, Lilypond will generate beams automatically. This feature can be disabled by setting the Voice.beamAuto property to 0. It can be overridden for specific cases by specifying explicit beams as described in Section 3.3.

In order to decide how to generate beams, Lilypond uses a large number of Voice properties, whose default values appear in auto-beam-settings.ly. In general, beams can begin anywhere, but their ending location is significant. Beams can end on a beat, or at durations specified by the Voice.beamAutoEnd property. To end beams every quarter note, for example, you could use set Voice.beamAutoEnd equal to "1/4". To end beams every three eighth notes you would set it to "3/8". The same syntax can be used to specify beam starting points using Voice.beamAutoBegin.

To allow different settings for different time signatures, these property names can start with timeN_M to restrict the definition to N/M time. So for example, to specify beams ending only for 6/8 time you would use the property Voice.time6_8beamAutoEnd. To allow different endings for notes of different durations, the duration can be tacked onto the end of the property. To specify beam endings for beams that contain 32nd notes, you would use Voice.beamAutoEnd_32.

3.3: Note Spanners: Beams, Slurs and Ties

A beam is specified by surrounding the beamed notes with brackets [ and ].

[a'8 a'] [a'16 a' a' a'] [reference-manual.yo-0.3.16.png]

Some more elaborate constructions:

[a'16 <a' c''> c'' <a' c''>] \times 2/3 { [e'8 f' g'] } [reference-manual.yo-0.3.17.png]

Another type of spanner is the slur. Slurs connects chords and try to avoid crossing stems. A slur is started with ( and stopped with ). The starting ( appears to the right of the first note in the slur. The terminal ) apppears to the left of the first note in the slur. This makes it possible to put a note in slurs from both sides:

f'()g'()a' [a'8 b'(] a'4 g' )f' [reference-manual.yo-0.3.18.png]

A tie connects two adjacent note heads of the same pitch. When used with chords, it connects all of the note heads whose pitches match. Ties are indicated using the tilde symbol ~ by analogy with TeX's tie which connects words. Note that if you try to tie together chords which have no common pitches, then a warning message will appear and no tie will be created. (Note that ties between different pitches can be enabled using the property Voice.oldTieBehavior.)

e' ~ e' <c' e' g'> ~ <c' e' g'> [reference-manual.yo-0.3.19.png]

It is possible to create beams and slurs that cross staffs by switching the context:

\context PianoStaff < \context Staff=one \notes\relative c'{ \stemup [c8 c \translator Staff=two \stemup c c] \translator Staff=one d4( \translator Staff=two )a4 } \context Staff=two \notes{ \clef bass; s1} > [reference-manual.yo-0.3.20.png]

3.4: Note Ornaments

A variety of symbols can appear above and below notes to indicate different characteristics of the performance. These symbols can be added to a note with `note-\name'. Numerous symbols are defined in script.ly and script.scm. Symbols can be forced to appear above the note by writing `note^\name', and they can be forced to appear below by writing `note_\name'. Here is a chart showing symbols above notes, with the name of the corresponding symbol appearing underneath.

[reference-manual.yo-0.3.21.png]

In addition, it is possible to place arbitrary strings of text or TeX above or below notes by using a string instead of an identifier: `c^"text"'. Fingerings can be placed by simply using digits. All of these note ornaments appear in the printed output but have no effect on the MIDI rendering of the music.

To save typing, a few common symbols can be abbreviated with single characters:

[reference-manual.yo-0.3.22.png]

Dynamic marks are specified by using an identifier after a note without a dash: c4 \ff. Note that this syntax is inconsistent with the syntax for other types of ornaments. The available dynamic marks are: \pppppp, \ppppp, \pppp, \ppp, \pp, \p, \mp, \mf, \f, \ff, \fff, \ffff, \fffff, \ffffff, \fp, \sf, \sff, \sp, \spp, \sfz and \rfz.

A crescendo mark is started with \cr and terminated with \rc. A decrescendo mark is started with \decr and terminated with \rced. There are also shorthands for these marks. A crescendo can be started with \< and a decrescendo can be started with \>. Either one can be terminated with \!. Note that \! must go before the last note of the dynamic mark whereas \rc and \rced go after the last note. Because these marks are bound to notes, if you want to get several marks during one note, you must use spacer notes.

Tremolo marks can be printed by a note by adding :[length] after the note. The length must be at least 8. A length value of 8 gives one line across the note stem. If the length is omitted, then the last value is used, or the value of the Abbrev property if there was no last value. To place tremolo marks in between two notes, begin with [:length and end with ]. The tremolo marks will appear instead of beams. Putting more than two notes in such a construction will produce odd effects.

[TREMOLO BEAMS TEMPORARILY OUT OF ORDER]

4: Other Ways to Enter Pitches

4.1: Pitch Names in Other Languages

The pitch names can be easily redefined using the \notenames command. Note name definitions have been provided in various languages. Simply include the language specific init file. For example: \include "english.ly". The available language files and the names they define are:

                        Note Names               sharp       flat
nederlands.ly  c   d   e   f   g   a   bes b   -is         -es
english.ly     c   d   e   f   g   a   bf  b   -s/-sharp   -f/-flat
deutsch.ly     c   d   e   f   g   a   b   h   -is         -es
norsk.ly       c   d   e   f   g   a   b   h   -iss/-is    -ess/-es
svenska.ly     c   d   e   f   g   a   b   h   -iss        -ess
italiano.ly    do  re  mi  fa  sol la  sid si  -d          -b
catalan.ly     do  re  mi  fa  sol la  sid si  -d/-s       -b

4.2: Relative Pitch Specification

One very common error when entering music is to place notes in the wrong octave. One way to avoid being confused by large numbers of octave changing marks is to use the \relative keyword. Music which appears within \relative is interpreted differently. The octave of a note is determined by making it as close to the previous note as possible. The octave changing marks ' and , can then be added to raise or lower this note by octaves. You have to specify a starting pitch because the first note of a list has no predecessor.

\relative c'' { c d b c, d b c' d b c,, d b } [reference-manual.yo-0.4.1.png]

When the preceeding item is a chord, the first note of the chord is used to determine the first note of the next chord. But other notes within the second chord are determined by looking at the immediately preceeding note.

\relative c' { c <c e g> <c' e g> <c, e' g> } [reference-manual.yo-0.4.2.png]

The \relative keyword can only appear in music, so there must be a surrounding \notes keyword which does not appear in the fragments shown above. Also note that if the music passed to a \relative keyword contains a \transpose keyword, the tranposed music will not be processed in relative mode. An additional \relative must be placed inside the \transpose. If \relative will be used several times, or if it will be used in the same music with \transpose, then you may get bizarre effects. This can be fixed by using an explicit Staff context.

4.3: Tranposition of Pitches

Another way to modify the meaning of the note names is to use the \transpose keyword. This keyword allows you to transpose music. To use transposition, specify the pitch that middle C should be tranposed to. It is important to distinguish between enharmonic pitches as they can produce different transpositions. To transpose up half a step, for example, either \transpose cis' or \transpose des' will work. But the first version will print sharps and the second version will print flats. In this example, a scale in the key of E is transposed to F, or to E-sharp with odd results.

\relative c' { \key e; e fis gis a b cis dis e } [reference-manual.yo-0.4.3.png]

\transpose des' \relative c' { \key e; e fis gis a b cis dis e } [reference-manual.yo-0.4.4.png]

\transpose cis' \relative c' { \key e; e fis gis a b cis dis e } [reference-manual.yo-0.4.5.png]

If you want to use both \transpose and \relative, then you must use \transpose first. Any \relative keywords that are outside the \transpose have no effect on notes that appear inside the \transpose. As with \relative, using \transpose repeatedly can cause bizarre effects. An explicit Staff context will eliminate the problems.

5: Chords

Chords can be entered either by name or by listing the notes in angle brackets. Chords can be displayed either as notes or by name. To enter chords by name, either place them inside the \chords keyword. Chord names have the form tonic[duration][-modifier][^subtractions][/inversion] The tonic should be the tonic note of the chord, and the duration is the chord duration in the usual notation. There are two kinds of modifiers. One type is chord additions, which are obtained by listing intervals separated by dots. An interval is written by its number with an optional + or - to indicate raising or lowering by half a step. A chord additions has two effects: it adds the specified interval and all lower odd numbered intervals to the chord, and it may lower or raise the specified interval. Intervals must be separated by a dot (.). Repeating a - character will remove a half step from the preceeding interval.

\transpose c''{ \chords{ c1 c-3- c-7 c-8 c-9 c-9-.5+.7+ c-3-.5- c-4.6.8 }}[reference-manual.yo-0.5.1.png]

The second type of modifier that may appear after the - is a named modifier. Named modifiers are listed in the file chord-modifiers.ly. The available modifiers are m and min which lower the 3rd half a step, aug which raises the 5th, dim which lowers the 5th, maj which adds a raised 7th, and sus which replaces the 5th with a 4th.

\transpose c''{ \chords{ c1-m c-min c-maj c-aug c-dim c-sus }}[reference-manual.yo-0.5.2.png]

Chord subtractions are used to eliminate notes from a chord. The notes to be subtracted are listed after a ^ character, separated by dots.

\transpose c''{ \chords{ c1^3 c-7^5.3 c-8^7 }}[reference-manual.yo-0.5.3.png]

Chord inversions can be specified by appending / and the name of a single note to a chord. This has the effect of lowering the specified note by an octave so it becomes the lowest note in the chord. If the specified note is not in the chord then a warning will be printed.

\transpose c'''{ \chords { c1 c/e c/g c-7/e } }[reference-manual.yo-0.5.4.png]

Throughout these examples, chords have been shifted around the staff using \transpose. The \relative keyword has odd effects when combined with named chords.

For displaying printed chord names, use the ChordNames context. The chords may be entered either using the notation described above, or directly using angle brackets.

< \context ChordNames { \chords{ a b c} \notes{ < d f g > < e g b > } } \context Staff \notes{ a b c' d' e' } >

[reference-manual.yo-0.5.5.png]

Lilypond examines chords specified as lists of notes to determine a name to give the chord. By default, LilyPond will not try to identify chord inversions:

< \context ChordNames { \notes{ < e' g' c'' > } } \context Staff \notes{ c' } >[reference-manual.yo-0.5.6.png]

If you want inversions to be recognized, you must set the property Score.chordInversion:

< \property Score.chordInversion = 1 \context ChordNames { \notes{ < e' g' c'' > } } \context Staff \notes{ c' } >[reference-manual.yo-0.5.7.png]

6: Lyrics

Lyrics are entered like notes, with pitches replaced by text. For example Twin-4 kle4 twin-4 kle4 enters four syllables, each with quarter note duration. Note that the hyphen has no special meaning for lyrics, and does not introduce special symbols. See Section 2.3 for a description of what is interpreted as a lyric.

In order to instruct LilyPond to write lyrics underneath the staff, you must enter the lyrics context with \context Lyrics. Lyrics should be entered in lyrics mode which is entered with \lyrics.

Spaces can be introduced into a lyric either by using quotes (") or by using an underscore without quotes: He_could4 not4. All unquoted underscores are converted to spaces. Here is a full example:

\score{ < \notes \transpose c'' {c d e c | c d e c | e f g'2 | e'4 f g'2 \bar "|."; } \context Lyrics \lyrics { Fr\`e-4 re Ja- que Fr\`e- re Ja- que Dor- mez vous?2 Dor-4 mez vous?2 } > }

[reference-manual.yo-0.6.1.png]

When one word is attached to many notes, you may want a continuous line after the lyric to show this. To achieve this effect, add a __ lyric as a separate word after the lyric to be extended. This will create an extender, a line that extends over the entire duration of the lyric. This line will run all the way to the start of the next lyric, so you may want to shorten it by using a blank lyric.

\score{ < \notes \relative c''{ a4()b()c()d c()d()b()a c()d()b()a } \context Lyrics \lyrics { foo1 __ bar2. __ _4 baz1 __ } > }

[reference-manual.yo-0.6.2.png]

If you want to have hyphens centred between syllables (rather than attached to the end of the first syllable) you can use the special -- lyric as separate word between syllables. This will result in a hyphen whose length varies depending on the space between syllables, and centred between the syllables. For example:

\score{ < \notes \transpose c'' {c d e c | c d e c | e f g'2 | e'4 f g'2 \bar "|."; } \context Lyrics \lyrics { Fr\`e4 -- re Ja -- que Fr\`e -- re Ja -- que Dor -- mez vous?2 Dor4 -- mez vous?2 } > }

[reference-manual.yo-0.6.3.png]

7: Time

LilyPond aligns all musical objects according to the amount of time they occupy. All musical objects have a duration. When music is written sequentially using braces the duration is the sum of the durations of the elements. When music is stacked into simultaneous music using angle brackets, the duration is the maximum of the durations of the elements.

Because LilyPond knows the durations of all musical elements, the time signature enables LilyPond to draw bar lines automatically. The time signature is specified with the \time keyword: \time 3/4. If no time signature is given, LilyPond assumes 4/4. The automatic generation of bar lines can toggled with the \cadenza keyword or the Staff.barNonAuto property, and an incomplete measure at the start of the music can be created using the \partial keyword: \partial 8*2; creates a starting measure lasting two eighth notes.

In order to help with error checking, you can insert bar markers in your music by typing |. Whenever LilyPond encounters a | that doesn't fall at a measure boundary, she prints a warning message.

8: Repeats

In order to specify repeats, use the \repeat keyword. By default, repeats are printed with repeat symbols.

c'1 \repeat semi 2 { c'4 d' e' f' } \repeat semi 2 { f' e' d' c' }[reference-manual.yo-0.8.1.png]

In order to specify alternate endings, use the \alternative keyword.

c'1 \repeat semi 2 {c'4 d' e' f'} \alternative { {d'2 d'} {f' f} }[reference-manual.yo-0.8.2.png]

The semi specifies that normal repeats will be printed. If fold is used instead then the alternatives will be stacked:

c'1 \repeat fold 2 {c'4 d' e' f'} \alternative { {d'2 d'} {f' f} }[reference-manual.yo-0.8.3.png]

When the repeats involve partial measures, it will be necessary to use \partial keywords in a somewhat unexpected way to indicate some measure lengths.

\context Staff { \relative c'{ \repeat semi 2 { \partial 4; e | c2 d2 | e2 f2 | } \alternative { { g4 g g } {\partial 1; a a a a | b1 } } }}

[reference-manual.yo-0.8.4.png]

Repeats can be unfolded by setting the property Staff.unfoldRepeats. Note also that if your music begins with \repeat, you must place it in an explicit Staff context or you will get bizarre results.

If you don't give enough alternatives for all of the repeats, then the first alternative is assumed to be repeated enough to equal to specified number of repeats.

\context Staff { \relative c'{ \repeat semi 3 { \partial 4; e | c2 d2 | e2 f2 | } \alternative { { g4 g g } {\partial 1; e4 e e } {\partial 1; a a a a | b1 } } }}

[reference-manual.yo-0.8.5.png]

9: Keywords

Keywords sometimes appear alone, but usually they require arguments. A keyword may have a single argument, a sequence of arguments in braces, or a sequence of arguments separated by spaces and terminated by a semicolon. The precise syntax of each keyword is shown below. Keywords must appear in the right context. If you use a keyword in the wrong place, even if the usage is syntactically correct, you will get the message ``parse error'' from LilyPond.

\absdynamic { code }
Internal keyword for printing dynamic marks such as $f$ under music. The parameter code is unsigned and specifies the dynamic mark to print. Normally you should use the more user friendly abbreviations defined in the init file dynamic.ly.

FIXME: Changed to \textscript text style. Defines a text-request.

\accepts string;
This keyword can appear only within a \translator block. It specifies what contexts are allowed with the context that is being defined. See Section 12.3.

\alternative { music1 music2 ... }
Specifies alternative endings. Must come after a \repeat keyword.

\bar bartype;
Prints a special bar symbol, or at measure boundaries, replaces the regular bar symbol with a special symbol. The argument bartype is a string which specifies the kind of bar to print. Options are ":|", "|:", ":|:", "||", "|.", ".|", or ".|.". These produce respectively a right repeat, a left repeat, a double repeat, a double bar, a start bar, an end bar, or a thick double bar. If bartype is set to "empty" then nothing is printed, but a line break is allowed at that spot. Note that the printing of special bars has no effect on the MIDI output.

\cadenza togglevalue;
Toggles the automatic generation of bar lines. If togglevalue is 0 then bar line generation is turned off. If togglevalue is 1 then a bar is immediately printed and bar generation is turned on.

\clef clefname;
Allowed only in music. Sets the current clef. The argument is a string which specifies the name of the clef. Several clef names are supported. If _8 or ^8 is added to the end of a clef name then the clef lowered or raised an octave will be generated. Here are the supported clef names with middle C shown in each clef:
[reference-manual.yo-0.9.1.png]

[reference-manual.yo-0.9.2.png]

The treble clef can also be obtained using the names G or violin. The bass clef is also available by \clef F.

\chord chordlist
Parse chordlist in chords mode.

\chordmodifiers modifierlist
Specify the text chord modifiers that may appear after chord names. These are specified in the file chord-modifiers.ly.

\cm
Specify a dimension in centimeters.

\consists string;
This keyword can appear only within a \translator block. It specifies that an engraver or performer named string should be added to the translator. See Section 12.3.

\consistsend string;
Unknown function.

\context contexttype [= contextname] music or \context translatortype;
The first variant is used only within music to create an instance of a context. The new context can optionally be given a name. The specified music is processed in the new context. The second variant appears within a \translator block and specifies the type of translator being created.

\duration { length dotcount }
Specify note duration. The parameter length is the negative logarithm (base 2) of duration: 1 is a half note, 2 is a quarter note, 3 is an eighth note, etc. The number of dots after the note is given by dotcount.

\font string
Internal keyword. Used within \paper to specify the font.

\header { key1 = val1; key2 = val2; ... }
Specifies information about the music. A header should appear at the top of the file describing the file's contents. If a file has multiple \score blocks, then a header should appear in each score block describing its contents. Tools like ly2dvi can use this information for generating titles. Key values that are used by ly2dvi are: title, subtitle, composer, opus, poet, instrument, metre, arranger, piece and tagline.

\in
Specify a dimension in inches.

\include file
Include the specified file. The argument file is a string. The full filename including the .ly extension must be given, and the filename must be quoted. (An unquoted string will not work here.)

\key pitch type ;
Change the key signature. type should be \major or \minor to get pitch-major or pitch-minor, respectively. The second argument is optional, the default is major keys. The \context argument can also be given as an integer, which tells the number of semitones that should be added to the pitch given in the subsequent \key commands to get the corresponding major key, e.g. \minor is defined as 3. The standard mode names \ionian, \locrian, \aeolian, \mixolydian, \lydian, \phrygian, and \dorian are also defined.

\keysignature pitchseq;
Specify an arbitrary key signature. The pitches from pitch will be printed in the key signature in the order that they appear on the list.

\lyrics lyriclist
Parse lyriclist in lyrics mode.

\maininput
Internal command. This command is used for creating init files like init.fly that read the user file into the middle of another file. It is illegal to use this command in a user file.

\mark unsigned; or \mark string;
Allowed in music only. Prints a mark over or under (depending on the markDirection property) the staff. You must add Mark_engraver to the Score context.

\midi statementlist
Appears in a score block to indicate that musical output should be produced and to set output parameters. Can also appear at the top level to set default output parameters. See \tempo.

\mm
Specify a dimension in millimeters.

\musicalpitch { octave note shift }
Specify note pitch. The octave is specified by an integer, zero for the octave containing middle C. The note is a number from 0 to 7, with 0 corresponding to C and 7 corresponding to B. The shift is zero for a natural, negative to add flats, or positive to add sharps.

\name context;
Appears within \translator to specify the name of the context that the translator handles. See Section 12.3.

\notenames assignmentlist
Define new note names. This keyword can appear only at the top level. The argument is a list of definitions of the form name = pitch, where pitch is specified with the \musicalpitch keyword.

\notes music
Enter note mode and process the specified music.

\paper statmentlist
Appears in a score block to indicate that the music should be printed or to set output parameters. Can also appear at the top level to set default output parameters for all of the score blocks. The statmentlist contains statements that change features of the output. See Section 12.

\partial duration;
Specify that the first measure of the music lasts only for the specified duration. Use also to specify the duration of the first measure of the argument to \alternative.

\penalty int;
Allowed only in music. Discourage or encourage line breaks. See identifiers \break and \nobreak in Section 11.

\property contextname.propname = value
Sets the propname property of the context contextname to the specified value. All three arguments are strings. Depending on the context it may be necessary to quote the strings or to leave space on both sides of the dot.

\pt
Specify a dimension in points.

\relative pitch music
Processes the specified music in relative pitch mode. In this mode, the octave of a pitch is chosen so that the pitch is closest to the preceeding pitch. The argument pitch is the starting pitch for this comparision. In the case of chords, the first note of a chord is used as the base for the first pitches in the next chord. See Section 4.2.

\remove string;
Can appear only in a \translator block. Specifies that a performer or engraver named string should be removed. See Section 12.3.

\repeat style count { music }
Repeats the specified music count times. Alternative endings can be specified by adding a \alternative keyword after the \repeat. The style parameter should be either semi, for regular repeats, or fold for repeats displayed vertically.

\scm scheme;
Embeds specified Scheme code.

\scmfile filename;
Reads Scheme code from the specified file.

\score statementlist
Create a Score context. This is the top level notation context.

\script alias
Prints a symbol above or below a note. The argument is a string which points into the script-alias table defined in script.scm. The scheme definitions specify whether the symbol follows notes into the staff, dependence of symbol placement on staff direction, and a priority for placing several symbols over one note. Usually the \script keyword is not used directly. Various helpful identifier definitions appear in script.ly.

\shape = indent1 width1 indent2 width2 ... ;
Allowed only within \paper. Each pair of indent and width values is a dimension specifying how far to indent and how wide to make the line. The indentation and width of successive lines are specified by the successive pairs of dimensions. The last pair of dimensions will define the characeristics of all lines beyond those explicitly specified.

\skip duration;
Skips the amount of time specified by duration. A gap will be left for the skipped time with no notes printed. It works in Note Mode or Lyrics Mode (but generates a mysterious error in lyrics).

\spanrequest startstop type
. Define a spanning request startstop is either -1 (\start) or 1 (\stop). The type parameter is a string that describes what should be started. Supported types are "crescendo", "decrescendo", "beam", "slur". This is an internal command. Users should use the abbreviations which are defined in the initialization file dynamic.ly.

\tempo duration = perminute;
Used within \midi or within music to specify the tempo. For example, `\midi { \tempo 4 = 76;}' requests output with 76 quarter notes per minute. Note that if the music contains several tempo commands, only the last one is used to set the tempo for the entire MIDI output.

\textscript text style
Print the specified text as a script in the specified style.

\time numerator/denominator;
Change the time signature. The default time signature is 4/4.

\times numerator/denominator music
Multiply the duration of music by the specified fraction.

\translator statements or \translator context = name
The first variant appears only within \paper and specifies a translator for converting music to notation. The translator is specified with a single \context statement and a series of \accepts, and \consists statements. See Section 12.3. The second variant appears in music. It specifies that the current the contexts contained within the specified context should be shifted to the context with the specified name.

\transpose pitch music
Transposes the specified music. Middle C is tranposed to pitch. This is allowed in music only, and if it appears inside \relative, then any notes specified for transposition should be specified inside another \relative. See Section 4.3.

\type string;
Use inside \translator to specify the type of the translator.

\version string
Specify the version of Mudela that a file was written for. The argument is the version number, for example "1.0.1". Note that the Mudela version is different from the LilyPond version.

10: Notation Contexts

Notation contexts provide information that appears in printed music but not in the music itself. A new musical context is created using the \context keyword: `\context contexttype [= contextname] music'. The following context types are allowed.

LyricVoice
Corresponds to a voice with lyrics. Handles the printing of a single line of lyrics.

Voice
Corresponds to a voice on a staff. This context handles the conversion of noteheads, dynamic signs, stems, beams, super- and subscripts, slurs, ties and rests.

ChordNamesVoice
A voice with chord names. Handles printing of a line of chord names.

ChordNames
Typesets chord names. Can contain ChordNamesVoice contexts.

Lyrics
Typesets lyrics. It can contain LyricVoice contexts.

Staff
Handles clefs, bar lines, keys, accidentals. It can contain Voice contexts.

RhythmicStaff
A context like Staff but for printing rhythms. Pitches are ignored; the notes are printed on one line. It can contain Voice contexts.

GrandStaff
Contains Staff or RhythmicStaff contexts. It adds a brace on the left side grouping the staffs together. The bar lines of the contained staffs are connected vertically. It can contain Staff contexts.

PianoStaff
Just like GrandStaff but with minVerticalAlign set equal to maxVerticalAlign so that interstaff beaming and slurring can be used.

StaffGroup
Contains Staff or RhythmicStaff contexsts. Adds a bracket on the left side, grouping the staffs together. The bar lines of the contained staffs are connected vertically. It can contain Staff, RhythmicStaff, GrandStaff or Lyrics contexts.

ChoirStaff
Identical to StaffGroup except that the contained staffs are not connected vertically.

Score
This is the top level notation context. It is specified with the \score keyword rather than the \context command. No other context can contain a Score context. This context handles the administration of time signatures. It also makes sure that items such as clefs, time signatures, and key-signatures are aligned across staffs. It can contain Lyrics, Staff, RhythmicStaff, GrandStaff, StaffGroup, and ChoirStaff contexts.

The various contexts have properties associated with them. These properties can be changed using the \property command: `\property context.propname = value'. Properties can also be set within the \translator block corresponding to the appropriate context. In this case, they are assigned by `propname = value'. The settings made with \property are processed after settings made in the \translator block, so the \property settings will override \translator settings.

The \property keyword will create any property you specify. There is no guarantee that a property will actually be used. If you spell a property name wrong, there will be no error message. In order to find out what properties are used, you must search the source code for get_property. Properties that are set in one context are inherited by all of the contained contexts. This means that a property valid for the Voice context can be set in the Score context (for example) and thus take effect in all Voice contexts.

Lyrics properties

textStyle
Set the font for lyrics. The available font choices are roman, italic, bold, large, Large, typewriter, and finger. The finger font can only display numbers. Note also that you must be careful when using \property in Lyrics mode. Because of the way strings are parsed, either put quotes around the arguments to \property or be sure to leave a space on both sides of the dot.

Voice properties

stemLeftBeamCount
Specify the number of beams to draw on the left side of the next note.

stemRightBeamCount
Specify the number of beams to draw on the right side of the next note.

beamAuto
If set to 1 then beams are generated automatically. If set to zero then no beams will be automatically generated. The default value is 1.

beamAutoEnd
Specifies when automatically generated beams can end. See Section 3.2.

beamAutoBegin
Specifies when automatically generated beams can start. See Section 3.2.

textEmptyDimension
If set to 1 then text placed above or below the staff is assumed to have zero width.

noteheadStyle
Selects type of note head. Choices are cross, diamond, harmonic, transparent, and "". They are shown in that order below.
[reference-manual.yo-0.10.1.png]

restStyle
Change the layout of rests shorter than quarter notes. Currently, the standard layout restStyle="" and mensural notation restStyle="mensural" are available.

"midiInstrument"
Sets the instrument for MIDI output. This property name must be quoted because of the embedded underscore. If this property is not set then LilyPond will use the instrument property. This must be set to one of the strings on the list of MIDI instruments that appears in Section 12.2. If you use a string which is not listed, LilyPond will silently substitute piano.

transposing
Tranpose the MIDI output. Set this property to the number of half-steps to transpose by.

oldTieBehavior
Set to 1 in order to get old tie behavior where ties would connect unequal pitches.

verticalDirection
Determines the direction of stems, subscripts, beams, slurs, and ties. Set to \down to force them down, \up to force them up, or \free to let LilyPond decide. This can be used to distinguish between voices on the same staff. The \stemdown, \stemup, and \stemboth identifiers set this property. See also the identifiers \voiceone, \voicetwo, \voicethree and \voicefour.

slurVerticalDirection
Set to \free for free choice of slur direction, set to \up to force slurs up, set to \down to force slurs down. The shorthands \slurup, \slurdown, and \slurboth are available.

tieVerticalDirection
Set to \free for free choice of tie direction, set to \up to force ties up, set to \down to force ties down.

slurdash
Set to 0 for normal slurs, 1 for dotted slurs, and a larger value for dashed slurs. Identifiers \slurnormal and \slurdotted are predefined to set the first two settings.

horizontalNoteShift
Set to 1 to enable LilyPond to shift notes horizontally if they collide with other notes. This is useful when typesetting many voices on one staff. The identifier \shift is defined to enable this. If there are several voices, every voice must have a distinct value of this property or no shifting will occur.

dynamicDir
Determines location of dynamic marks. Set to \up to print marks above the staff; set to \down to print marks below the staff.

dynamicStyle
Set the text style for dynamics.

textStyle
Set the text style for superscripts and subscripts. See above for list of text styles.

textScriptPadding
Determines the extra space added between super-/subscripted text and the closest staff line or note.

fontSize
Can be used to select smaller font sizes for music. The normal font size is 0, and the two smaller sizes are -1 and -2.

abbrev
Set length for tremolo to be used if no length is explicitly specified.

tupletDirection
Determines the direction of triplets and other tuplets. Set to \down to force them below the staff, \up to force them above, or \free to let LilyPond decide.

tupletVisibility
Determines whether tuplets of notes are labelled. Setting to 0 shows nothing; setting to 1 shows a number; setting to 2 shows a number and a bracket if there is no beam; setting to 3 shows a number, and if there is no beam it adds a bracket; setting to 4 shows both a number and a bracket unconditionally. The pletoff and pleton identifiers set the property to 0 and 3, respectively.

markScriptPadding
Determines the extra space added between the mark and the closest staff line or note.

markDirection
Determines if marks should be printed above or below the staff. Set to \up to print marks above the staff; set to \down to print marks below the staff.

articulationScriptPadding
Determines the extra space added between articulation marks, such as staccato, tenuto, trill, up/down bow or fermata, and the closest staff line or note.

Staff properties

createInitdefaultClef
Specify whether clefs are created on default? (Doesn't seem to do anything.)

barNumberDirection
Set to \up or \down to put bar numbers above or below the staff.

barNumberHangOnClef
Set to 1 to cause bar numbers to appear above or below the clef instead of on the bar line.

barNumberScriptPadding
Sets extra space between the bar number and the bar it labels.

barSize
Specify the height of the bar lines if it should be different than the staff height.

markHangOnClef
Set to 1 to cause marks to appear by clefs instead of by bar lines.

marginDirection
Set to \left or \right to specify location of marginal scripts.

marginScriptPadding
Specify extra space for marginal scripts.

forgetAccidentals
Causes accidentals to be printed at every note instead of remembered for the duration of a measure.

noResetKey
Do not reset the key at the start of a measure. Accidentals will be printed only once and are in effect until overridden, possibly many measures later.

staffLineLeading
Specifies the distance (in points) between lines of the staff.

numberOfStaffLines
Specifies the number of staff lines. The default is 5.

postBreakPadding
Extra space in points to be added after the clef, time signature and key signature on the staff.

barAtLineStart
Set to 1 to produce a bar line after the clef at the start of each line (but not at the beginning of the music).

voltaVisibility
Set to 0 to suppress the printing of brackets over alternate endings specified by \alternative.

voltaSpannerDuration
Set to an integer to control the size of the brackets printed by \alternative. The integer specifies the number of whole notes duration to use for the brackets. It seems to be rounded to the nearest measure. This can be used to shrink the length of brackets in the situation where one alternative is very large. It may have odd effects if the specified duration is longer than the music given in an \alternative.

barNonAuto
If set to 1 then bar lines will not be printed automatically; they must be explicitly created with \bar keywords. Unlike with the \cadenza keyword, measures are still counted. Bar generation will resume according to that count if this property is set to zero.

defaultClef
Determines the default clef. See \clef keyword.

nuberOfStaffLines
Sets the number of lines that the staff has.

barAlways
If set to 1 a bar line is drawn after each note.

defaultBarType
Sets the default type of bar line. See \bar keyword.

keyoctaviation
If set to 1, then keys are the same in all octaves. If set to 0 then the key signature for different octaves can be different and is specified independently: \keysignature bes fis'. The default value is 1. Can be set to zero with \specialkey or reset to 1 with \normalkey.

instrument and instr
If Staff_margin_engraver is added to the Staff translator, then the instrument property is used to label the first line of the staff and the instr property is used to label subsequent lines. If the midiInstrument property is not set then instrument is used to determine the instrument for MIDI output.

createKeyOnClefChange
Set to a nonempty string if you want key signatures to be printed when the clef changes. Set to the empty string (the default) if you do not want key signatures printed.

timeSignatureStyle
Changes the default two-digit layout for time signatures. The following values are recognized:

C
4/4 and 2/2 are typeset as C and struck C, respectively. All other time signatures are written with two digits.

old
2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8 and 9/8 are typeset with old-style mensuration marks. All other time signatures are written with two digits.

1
All time signatures are typeset with a single digit, e.g. 3/2 is written as 3.

C2/2, C4/4, old2/2, old3/2, old2/4, old3/4, old4/4, old6/4, old9/4, old4/8, old6/8, old6/8alt or old9/8
Tells Lilypond to use a specific symbol as time signature.
The different time signature characters are shown below with their names:
[reference-manual.yo-0.10.2.png]

clefStyle
Determines how clefs are typeset. When set to transparent, the clefs are not printed at all, when set to fullSizeChanges, clef changes in the middle of a line are typeset with a full size clef. By default, clef changes are typeset in smaller size.

GrandStaff properties

alignmentReference
Set to \center for vertical alignment reference point to be in the center of the vertical group. Set to \up to put the reference point at the top of the group.

maxVerticalAlign
Set the maximum vertical distance between staffs.

minVerticalAlign
Set the minimum vertical distance between staffs.

Score properties

skipBars
Set to 1 to skip the empty bars that are produced by multimeasure notes and rests. These bars will not appear on the printed output. Set to zero (the default) to expand multimeasure notes and rests into their full length, printing the appropriate number of empty bars so that synrchonization with other voices is preserved.

beamquantisation
Set to \none for no quantization. Set to \normal to quantize position and slope. Set to \traditional to avoid wedges. These three settings are available via \beamposfree, \beamposnormal, and \beampostraditional.

beamslopedamping
Set to \none for undamped beams. Set to \normal for damped beams. Set to \infinity for beams with zero slope. The identifiers \beamslopeproportional, \beamslopedamped, and \beamslopezero each set the corresponding value.

chordInversion
Determines whether LilyPond should look for chord inversions when translating from notes to chord names. Set to 1 to find inversions. The default is 0 which does not look for inversions.

11: Pre-defined Identifiers

Various identifiers are defined in the initialization files to provide shorthands for some settings.

\aeolian
Used as the second argument of the \key keyword to get an aeolian mode.

\break
Force a line break in music by using a large argument for the keyword \penalty.

\center
Used for setting textalignment property. Is set to 0.

\cr
Start a crescendo.

\decr
Start a decrescendo.

\dorian
Used as the second argument of the \key keyword to get a dorian mode.

\down
Used for setting direction setting properties. Is equal to -1.

\f
Print forte symbol on the preceeding note.

\ff
Print fortissimo symbol on the preceeding note.

\fff
Print fortississimo symbol on preceeding note.

\ffff
Print fortissississimo symbol on preceeding note.

\fffff
Print fffff symbol on preceeding note.

\ffffff
Print ffffff symbol on preceeding note.

\fp
Print fortepiano symbol on preceeding note.

\free
Used for setting direction setting properties. Is equal to 0.

\Gourlay
Used for setting the paper variable castingalgorithm. Is equal to 1.0.

\infinity
Used for setting the Score.beamslopedamping property. Is actually equal to 10000.

\ionian
Used as the second argument of the \key keyword to get an ionian mode.

\left
Used for setting textalignment property. Is equal to -1.

\locrian
Used as the second argument of the \key keyword to get a locrian mode.

\lydian
Used as the second argument of the \key keyword to get a lydian mode.

\major
Used as the second argument of the \key keyword to get a major key.

\minor
Used as the second argument of the \key keyword to get a minor key.

\mixolydian
Used as the second argument of the \key keyword to get a mixolydian mode.

\mf
Print mezzoforte symbol on preceeding note.

\mp
Print mezzopiano symbol on preceeding note.

\nobreak
Prevent a line break in music by using a large negative argument for the keyword \penalty.

\none
Used for setting Score.beamslopedamping and Score.beamquantisation properties. Is equal to 0.

\normal
Used for setting Score.beamslopedamping and Score.beamquantisation properties. Is equal to 1.

\normalkey
Select normal key signatures where each octave has the same key signature. This sets the Staff.keyoctaviation property.

\p
Print a piano symbol on preceeding note.

\phrygian
Used as the second argument of the \key keyword to get a phrygian mode.

\pp
Print pianissimo symbol on preceeding note.

\ppp
Print pianississimo symbol on preceeding note.

\pppp
Print pianissississimo symbol on preceeding note.

\ppppp
Print ppppp symbol on preceeding note. dir(\pppppp) Print pppppp symbol on preceeding note.

\rc
Terminate a crescendo.

\rced
Terminate a decrescendo

\rfz
Print a rinforzato symbol on preceeding note.

\right
Used for setting textalignment property. Is set to 1.

\sf
Print a subito-forte symbol on preceeding note.

\sff
Print a subito-fortissimo symbol on preceeding note.

\sfz
Print a sforzato symbol on preceeding note.

\shiftoff
Disable horizontal shifting of note heads that collide. Sets the Voice.horizontalNoteShift property.

\shifton
Enable note heads that collide with other note heads to be shifted horiztonally. Sets the Voice.horizontalNoteShift property.

\slurboth
Allow slurs to be above or below notes. This sets the Voice.slurVerticalDirection property.

\slurdown
Force slurs to be below notes. This sets the Voice.slurVerticalDirection property.

\slurup
Force slurs to be above notes. This sets the Voice.slurVerticalDirection property.

\sp
Print a subito-piano symbol on preceeding note.

\spp
Print a subito-forte symbol on preceeding note.

\specialkey
Allow keys signatures do differ in different octaves. This sets the Staff.keyoctaviation property.

\stemboth
Allow stems, beams, and slurs to point either direction. This sets the Voice.verticalDirection property.

\stemdown
Force stems, beams, and slurs to point down. This sets the Voice.verticalDirection property.

\stemup
Force stems, beams and slurs to point up. This sets the Voice.verticalDirection property.

\traditional
Used for setting the Score.beamquantisation property. Is equal to 2.

\up
Used for setting various direction properties. Is equal to 1.

\voiceone
Enter Voice context called one and force stems down. (See \stemdown.)

\voicetwo
Enter Voice context called two and force stems up. (See \stemup.)

\voicethree
Enter Voice context called three and force stems up.

\voicefour
Enter Voice context called four, force stems down and turn on horizontal shifting. (See \stemdown and \shifton.)

\Wordwrap
Used for setting the paper variable castingalgorithm. Equal to 0.0.

12: Output

The output produced by LilyPond is controlled by the \paper and \midi keywords. These keywords appear in the \score block to indicate that printed or musical output should be produced. If neither keyword appears in a \score block, then paper output is produced but MIDI output is not produced.

The contents of the \paper and \midi blocks can change the output in various ways. These blocks can appear at the top level of a Mudela file to set default parameters for each type of output. It is still necessary to explicitly specify the output type in the \score blocks if you don't want the default behavior of producing only paper output.

The \paper and \midi blocks may begin with an optional identifier reference. No identifier references are allowed anywhere else in the block. The \paper block can contain the \shape keyword; the \midi block can contain the \tempo keyword. Both of them can contain \translator keywords. The \paper block can also contain identifier assignments and parameter assignments. Unlike at the top level, these assignments must be terminated by a semicolon.

12.1: Paper variables

Warning: this section is outdated and inaccurate.

There are a large number of paper variables that are used to control details of the layout. Usually you will not want to change these variables; they are set by default to vaules that depend on the font size in use. The only way to find out what variables are supported is to search the source code for get_var. Two variables that you may want to change are linewidth and indent.

In order to change the font size used for the output, many variables need to be changed. Some identifiers and initialization files can simplify this process. The default size is 20pt. In order to select a different size, you must do two things. At the top level, do \include "paperSZ.ly" where SZ is the height of the staff in points. Values presently allowed are 11, 13, 16, 20, and 26. This loads some definitions, but does not cause them to take effect. In order to actually change the size, you must use one of the identifiers: \paper_eleven, \paper_thirteen, \paper_sixteen, \paper_twenty or \paper_twentysix inside a \paper block.

integer
If an integer appears on the left side of an assignment then a \font keyword must appear on the right side. This defines a music font at a particular size. See Voice property fontSize.

arithmetic_basicspace and arithmetic_multiplier
The space taken by a note is determined by the formula
arithmetic_multiplier * ( c + log2 (time) )
where time is the amount of time a note occupies. The value of c is chosen such that the smallest space within a measure is arithmetic_basicspace. The smallest space is the one following the shortest note in the measure. Typically arithmetic_basicspace is set to the width of a quarter note head.

beam_dir_algorithm
Specify algorithm for determining whether beams go up or down. It is real valued. If set to 2.0 then majority selection is used. If set to 3.0, then mean selection is used based on the mean center distance. If set to 4.0 then median selection is used, based on the median center distance.

castingalgorithm

crescendo_shorten

forced_stem_shorten
Stems that have been forced to go the unnatural direction are shortened by this amount. Equal to

forced_stem_shorten0

gourlay_energybound

gourlay_maxmeasures
Maximum number of measures per line when using Gourlay method. Decreasing this greatly reduces computation time. Default value: 10.

indent
Sets the indentation of the first line of music.

interbeam

interbeam4

interline
The distance between two staff lines, calculated from the center of the lines.

linewidth
Sets the width of the lines. If it is set to -1.0, then a single unjustified line is produced.

notewidth
Width of an average note head.

output
Specifies an alternate name for the TeX output. A .tex extension will be added to the string you specify.

rulethickness
Determines thickness of staff lines and bars.

slur_clip_angle

slur_clip_height

slur_clip_ratio

slur_height_limit
Specifies the maximum height of slurs. Normally equal to staff_height.

slur_ratio
Specifes the ratio of slur hight to slur width to aim for. Default value is 0.3.

slur_rc_factor

slur_slope_damping
Allows slurs to start and end at different heights ???? Default value is 0.5.

slur_thickness
Specify slur thickness. Equal to 1.4 * \staffline by default.

slur_x_gap
Horizontal space between note and slur. Set to \interline / 5 by default.

slur_x_minimum

staffheight
The height of the staff from the center of the bottom line to the center of the top line. Equal to to 4 * \interline.

stem_length
Specify length of stems for notes in the staff that don't have beams.

stemthickness
Specifies the thickness of the stem lines.

tie_slope_damping

tie_x_minimum

12.2: MIDI Instrument Names

The MIDI instrument name is set by the Staff.midiInstrument property or, if that property is not set, the Staff.instrument property. The instrument name should be chosen from this list. If string does not exactly match one from this list then LilyPond uses the default piano.

"acoustic grand"               "contrabass"             "lead 7 (fifths)"
"bright acoustic"              "tremolo strings"        "lead 8 (bass+lead)"
"electric grand"               "pizzicato strings"      "pad 1 (new age)"
"honky-tonk"                   "orchestral strings"     "pad 2 (warm)"
"electric piano 1"             "timpani"                "pad 3 (polysynth)"
"electric piano 2"             "string ensemble 1"      "pad 4 (choir)"
"harpsichord"                  "string ensemble 2"      "pad 5 (bowed)"
"clav"                         "synthstrings 1"         "pad 6 (metallic)"
"celesta"                      "synthstrings 2"         "pad 7 (halo)"
"glockenspiel"                 "choir aahs"             "pad 8 (sweep)"
"music box"                    "voice oohs"             "fx 1 (rain)"
"vibraphone"                   "synth voice"            "fx 2 (soundtrack)"
"marimba"                      "orchestra hit"          "fx 3 (crystal)"
"xylophone"                    "trumpet"                "fx 4 (atmosphere)"
"tubular bells"                "trombone"               "fx 5 (brightness)"
"dulcimer"                     "tuba"                   "fx 6 (goblins)"
"drawbar organ"                "muted trumpet"          "fx 7 (echoes)"
"percussive organ"             "french horn"            "fx 8 (sci-fi)"
"rock organ"                   "brass section"          "sitar"
"church organ"                 "synthbrass 1"           "banjo"
"reed organ"                   "synthbrass 2"           "shamisen"
"accordion"                    "soprano sax"            "koto"
"harmonica"                    "alto sax"               "kalimba"
"concertina"                   "tenor sax"              "bagpipe"
"acoustic guitar (nylon)"      "baritone sax"           "fiddle"
"acoustic guitar (steel)"      "oboe"                   "shanai"
"electric guitar (jazz)"       "english horn"           "tinkle bell"
"electric guitar (clean)"      "bassoon"                "agogo"
"electric guitar (muted)"      "clarinet"               "steel drums"
"overdriven guitar"            "piccolo"                "woodblock"
"distorted guitar"             "flute"                  "taiko drum"
"guitar harmonics"             "recorder"               "melodic tom"
"acoustic bass"                "pan flute"              "synth drum"
"electric bass (finger)"       "blown bottle"           "reverse cymbal"
"electric bass (pick)"         "skakuhachi"             "guitar fret noise"
"fretless bass"                "whistle"                "breath noise"
"slap bass 1"                  "ocarina"                "seashore"
"slap bass 2"                  "lead 1 (square)"        "bird tweet"
"synth bass 1"                 "lead 2 (sawtooth)"      "telephone ring"
"synth bass 2"                 "lead 3 (calliope)"      "helicopter"
"violin"                       "lead 4 (chiff)"         "applause"
"viola"                        "lead 5 (charang)"       "gunshot"
"cello"                        "lead 6 (voice)"

12.3: Translators

The behavior of notation contexts is defined by the translators for those contexts. The translator for a context specifies what notations are handled by the context, it specifies what other contexts the context can contain, and it sets property values for the context. There are different translators for each type of output. The translators for paper output are defined in engraver.ly. The translators for MIDI output are defined in performer.ly.

The first thing that appears inside a \translator definition is the type of the context being created. This is specified with the \type keyword: \type typename;. After the type of the context is specified, property assignments, the \name keyword and \consists, \accepts, and \remove keywords can appear in any order. The \name keyword specifies the name of the context that is handled by the translator. If the name is not specified, the translator won't do anything. Each \accepts keyword specifies what contexts can be contained inside this one. The \consists keywords specify which notations are handled by the context. Each \consists keyword specifies the name of an engraver (for paper ouput) or performer (for MIDI output) which handles a certain notation. The \remove keyword can be used to remove a performer or engraver from the translator.

In the \paper block, it is also possible to define translator identifiers. Like other block identifiers, the identifier can only be used as the very first item of a translator. In order to define such an identifier outside of \score, you must do

\paper{ foo=\translator{ ... }
\score{
  \notes{ ... }
  \paper{ \translator{ \foo ... } }
}

Some All of the standard translators have predefined identifiers, making it easy to redefine these contexts by adding or removing items. The predefined identifiers are: StaffContext, RhythmicStaffContext, VoiceContext, ScoreContext, ScoreWithNumbers

12.3.1: Paper Types and Engravers and Pre-defined Translators

Some pre-defined identifiers can simplify modification of translators. The pre-defined identifiers are:

StaffContext
Default Staff context.

RhythmicStaffContext
Default RhythmicStaff context.

VoiceContext
Default Voice context.

ScoreContext
Default Score context.

ScoreWithNumbers
Score context with numbering at the Score level.

BarNumberingStaffContext
Staff context with numbering at the Staff level.

HaraKiriStaffContext

OrchestralPartStaffContext

OrchestralScoreContext
Using these pre-defined values, you can remove or add items to the translator
\paper{ \translator{ \StaffContext
                     \remove Some_engraver;
                     \consists Different_engraver;  }}

There are four types for paper translators:

Engraver_group_engraver

Hara_kiri_line_group_engraver

Line_group_engraver_group

Score_engraver

The engravers for paper output are:

Abbreviation_beam_engraver

Bar_engraver
Engraves bar lines. Normally in Staff and RhythmicStaff.

Bar_number_engraver
Engrave bar numbers. These numbers appear at the start of each line. Not normally in any translator. Can be added to Score for Score-wide numbering or to Staff for numbering on each staff.

Beam_engraver
Handles beam requests by engraving beams. Normally appears in the Voice translator. If omitted, then notes will be printed with flags instead of beams.

Beam_req_swallow_translator
Swallows beam requests. In LyricVoice.

Chord_name_engraver
Engraves chord names. Normally in ChordNameVoice

Clef_engraver
Engraves the clef symbol. Normally in Staff.

Collision_engraver

Dot_column_engraver
Engraves dots on dotted notes shifted to the right of the note. Normally in Voice. If omitted, then dots appear on top of the notes.

Dynamic_engraver
Engraves dynamics symbols. Normally in Voice.

Font_size_engraver

Key_engraver
Engraves the key signature. Normally in Staff.

Local_key_engraver

Lyric_engraver
Engraves lyrics. Normally in LyricVoice.

Multi_measure_rest_engraver
Engraves multi-measure rests that are produced with R. Normally in Voice.

Piano_bar_engraver

Pitch_squash_engraver
Treat all pitches as middle C. Used in RhythmicStaff. Note that the notes move, but the locations of accidentals stay the same.

Priority_horizontal_align_engraver

Repeat_engraver
Handles repeats? In Staff and RhythmicStaff.

Rest_collision_engraver
Handles collisions of rests. In Staff.

Rest_engraver
Engraves rests. Normally in Voice.

Rhythmic_column_engraver

Score_priority_engraver

Script_engraver
Handles note ornaments generated by \script. Normally in Voice.

Separating_line_group_engraver

Skip_req_swallow_translator

Slur_engraver
Engraves slurs. Normally in Voice.

Span_bar_engraver
Engraves lines across multiple staffs. Normally in Staffgroup and GrandStaff. Removing this from StaffGroup gives the definition of ChoirStaff.

Span_score_bar_engraver

Staff_group_bar_engraver

Staff_margin_engraver
Prints the name of the instrument (specified by Staff.instrument and Staff.instr) at the left of the staff.

Staff_sym_engraver

Stem_engraver
Engraves stems. Normally in Voice.

Ties_engraver
Engraves ties. Normally in Voice.

Time_signature_engraver
Engraves the time signature. Normally in Staff and RhythmicStaff.

Timing_engraver
Responsible for synchronizing timing information from staffs. Normally in Score. In order to create polyrhythmic music, this engraver should be removed from Score and placed in Staff.

Tuplet_engraver
Engraves tuplet brackets? In Staff.

Vertical_align_engraver

12.3.2: MIDI Types and Performers

The types available for MIDI translators are:

Performer_group_performer

Score_performer

Staff_performer

The performers for MIDI translators are:

Key_performer

Time_signature_performer

Note_performer

Lyric_performer

Swallow_performer


Return to GNU LilyPond's home page.

Please send GNU LilyPond questions and comments to gnu-music-discuss@gnu.org.

Please send comments on these web pages to (address unknown), send other FSF & GNU inquiries and questions to gnu@gnu.org.

Copyright (c) 1997, 1998, 1999 Han-Wen Nienhuys and Jan Nieuwenhuizen.

Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.


This page was built from GNU LilyPond-1.1.57 by

root <(address unknown)>, at Tue Jul 13 11:51:16 1999 CDT.