Lilypond
Lilypond
Lilypond
Han-Wen Nienhuys
Jan Nieuwenhuizen
Jürgen Reuter
Rune Zedeler
Copyright °c 1999–2004 by the authors
Permission is granted to copy, distribute and/or modify this document under the terms of
the GNU Free Documentation License, Version 1.1 or any later version published by the Free
Software Foundation; with no Invariant Sections. A copy of the license is included in the section
entitled “GNU Free Documentation License”.
Table of Contents
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Notes to version 2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1 Engraving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Automated engraving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 What symbols to engrave? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Music representation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5 Example applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.6 About this manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2 Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1 First steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Running LilyPond . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 More about pitches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4 Entering ties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5 Automatic and manual beams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.6 Octave entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.7 Music expressions explained . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.8 More staves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.9 Adding articulation marks to notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.10 Combining notes into chords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.11 Basic rhythmical commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.12 Commenting input files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.13 Printing lyrics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.14 A lead sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.15 Listening to output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.16 Titling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.17 Single staff polyphony . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.18 Piano staves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.19 Organizing larger pieces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.20 An orchestral part . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.21 Integrating text and music . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3 Notation manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.1 Note entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.1.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.1.2 Pitches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.1.3 Chromatic alterations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.1.4 Chords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.1.5 Rests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.1.6 Skips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.1.7 Durations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.1.8 Stems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.1.9 Ties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.1.10 Tuplets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2 Easier music entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
ii
3.12 Tablatures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.12.1 Tablatures basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.12.2 Non-guitar tablatures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.13 Chord names. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.13.1 Chords mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.13.2 Printing chord names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.14 Orchestral music . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.14.1 Multiple staff contexts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.14.2 Rehearsal marks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
3.14.3 Bar numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.14.4 Instrument names. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.14.5 Transpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.14.6 Instrument transpositions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.14.7 Multi measure rests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.14.8 Automatic part combining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.14.9 Hiding staves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
3.14.10 Different editions from one source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.14.11 Quoting other voices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.15 Ancient notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
3.15.1 Ancient note heads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
3.15.2 Ancient accidentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.15.3 Ancient rests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.15.4 Ancient clefs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
3.15.5 Ancient flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
3.15.6 Ancient time signatures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
3.15.7 Custodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
3.15.8 Divisiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
3.15.9 Ligatures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.15.9.1 White mensural ligatures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
3.15.9.2 Gregorian square neumes ligatures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
3.15.10 Vaticana style contexts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
3.15.11 Figured bass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
3.16 Contemporary notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
3.16.1 Clusters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
3.16.2 Fermatas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
3.17 Special notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
3.17.1 Balloon help. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
3.17.2 Easy Notation note heads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
3.18 Sound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
3.18.1 MIDI block. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
3.18.2 MIDI instrument names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Preface
It must have been during a rehearsal of the EJE (Eindhoven Youth Orchestra), somewhere
in 1995 that Jan, one of the cranked violists told Han-Wen, one of the distorted French horn
players, about the grand new project he was working on. It was an automated system for
printing music (to be precise, it was MPP, a preprocessor for MusiXTeX). As it happened,
Han-Wen accidentally wanted to print out some parts from a score, so he started looking at the
software, and he quickly got hooked. It was decided that MPP was a dead end. After lots of
philosophizing and heated email exchanges Han-Wen started LilyPond in 1996. This time, Jan
got sucked into Han-Wen’s new project.
In some ways, developing a computer program is like learning to play an instrument. In the
beginning, discovering how it works is fun, and the things you cannot do are challenging. After
the initial excitement, you have to practice and practice. Scales and studies can be dull, and
if you are not motivated by others—teachers, conductors or audience—it is very tempting to
give up. You continue, and gradually playing becomes a part of your life. Some days it comes
naturally, and it is wonderful, and on some days it just does not work, but you keep playing,
day after day.
Like making music, working on LilyPond is can be dull work, and on some days it feels like
plodding through a morass of bugs. Nevertheless, it has become a part of our life, and we keep
doing it. Probably the most important motivation is that our program actually does something
useful for people. When we browse around the net we find many people that use LilyPond, and
produce impressive pieces of sheet music. Seeing that feels unreal, but in a very pleasant way.
Our users not only give us good vibes by using our program, many of them also help us by
giving suggestions and sending bug reports, so we would like to thank all users that sent us bug
reports, gave suggestions or contributed in any other way to LilyPond.
Playing and printing music is more than nice analogy. Programming together is a lot of fun,
and helping people is deeply satisfying, but ultimately, working on LilyPond is a way to express
our deep love for music. May it help you create lots of beautiful music!
Han-Wen and Jan
Utrecht/Eindhoven, The Netherlands, July 2002.
1 Introduction
LilyPond is a system for formatting music prettily. This chapter discusses the backgrounds
of LilyPond. It explains the problem of printing music with computers, and our approach to
solving those problems.
1.1 Engraving
The art of music typography is called (plate) engraving. The term derives from the traditional
process of music printing. Just a few decades ago, sheet music was made by cutting and stamping
the music into a zinc or pewter plate in mirror image. The plate would be inked, the depressions
caused by the cutting and stamping would hold ink. An image was formed by pressing paper
to the plate. The stamping and cutting was completely done by hand. Making a correction was
cumbersome, if possible at all, so the engraving had to be perfect in one go. Engraving was
a highly specialized skill, a craftsman had to complete around ten years of practical training
before he could be a master engraver.
Nowadays, all newly printed music is produced with computers. This has obvious advantages;
prints are cheaper to make, editorial work can be delivered by email. Unfortunately, the pervasive
use of computers has also decreased the graphical quality of scores. Computer printouts have a
bland, mechanical look, which makes them unpleasant to play from.
The images below illustrate the difference between traditional engraving and typical computer
output, and the third picture shows how LilyPond mimics the traditional look. The left picture
shows a scan of a flat symbol from a Henle edition published in 2000. In the center show symbol
from a hand engraved Bärenreiter edition of the same music. The left scan illustrates typical
flaws of computer print: the staff lines are thin, the weight of the flat symbol matches the light
lines and it has a straight layout with sharp corners. By contrast, the Bärenreiter flat has a
bold, almost voluptuous rounded look. Our flat symbol is designed after, among others, this
one. It is rounded, and its weight harmonizes with the thickness of our staff lines, which are
also much thicker than Henle’s lines.
In spacing, the distribution of space should reflect the durations between notes. However,
many modern scores adhere to the durations with mathematical precision, which leads to a poor
result. In the next example a motive is printed twice. It is printed once using exact mathematical
spacing, and once with corrections. Can you spot which fragment is which?
Chapter 1: Introduction 3
> > > > > > > > > > > >
> >
> >
The fragment only uses quarter notes: notes that are played in a constant rhythm. The
spacing should reflect that. Unfortunately, the eye deceives us a little; not only does it notice
the distance between note heads, it also takes into account the distance between consecutive
stems. As a result, the notes of an up-stem/down-stem combination should be put farther apart,
and the notes of a down-up combination should be put closer together, all depending on the
combined vertical positions of the notes. The first two measures are printed with this correction,
the last two measures without. The notes in the last two measures form down-stem/up-stem
clumps of notes.
Musicians are usually more absorbed with performing than with studying the looks of piece
of music; nitpicking about typographical details may seem academical. But it is not. In larger
pieces with monotonous rhythms, spacing corrections lead to subtle variations in the layout of
every line, giving each one a distinct visual signature. Without this signature all lines would
look the same, they become like a labyrinth. If the musician looks away once or has a lapse in
his concentration, he will be lost on the page.
Similarly, the strong visual look of bold symbols on heavy staff lines stands out better when
music is far away from reader, for example, if it is on a music stand. A careful distribution of
white space allows music to be set very tightly without cluttering symbols together. The result
minimizes the number of page turns, which is a great advantage.
This is a common characteristic of typography. Layout should be pretty, not only for its
own sake, but especially because it helps the reader in his task. For performance material like
sheet music, this is doubly important: musicians have a limited amount of attention. The less
attention they need for reading, the more they can focus on playing itself. In other words, better
typography translates to better performances.
Hopefully, these examples also demonstrate that music typography is an art that is subtle
and complex, and to produce it requires considerable expertise, which musicians usually do not
have. LilyPond is our effort to bring the graphical excellence of hand-engraved music to the
computer age, and make it available to normal musicians. We have tuned our algorithms, font-
designs, and program settings to produce prints that match the quality of the old editions we
love to see and love to play from.
Formatting rules are also preset variables: each object has variables containing procedures.
These procedure perform the actual formatting, and by substituting different ones, we can
change behavior. In the following example, the rule that note head objects use to produce their
symbol is changed during the music fragment
\
2
4 >>> F
G JJJ c2 3> /c 2 /c
D m m
How can we get a grip on such a many-headed beast, and force it into the confines of a
computer program? We have broken up the problem of notation (as opposed to engraving, i.e.
typography) into digestible and programmable chunks: every type of symbol is handled by a
separate module, a so-called plug-in. Each plug-in is completely modular and independent, so
each can be developed and improved separately. People that translate musical ideas to graphic
symbols are called copyists or engravers, so by analogy, each plug-in is called engraver.
In the following example, we see how we start out with a plug-in for note heads, the Note_
heads_engraver.
> >>>>>
> > > >
Then a Staff_symbol_engraver adds the staff
> >>>>>
> > > >
The Clef_engraver defines a reference point for the staff
// V V V V >U
3> > > > > > > > >
This system works well for monophonic music, but what about polyphony? In polyphonic
V V V V U
notation, many voices can share a staff.
/ >>
/ 3 > 2 >> >> / >> >> >> >>
>>
>
>
2> U
V V V V
In this situation, the accidentals and staff are shared, but the stems, slurs, beams, etc. are
private to each voice. Hence, engravers should be grouped. The engravers for note heads, stems,
slurs, etc. go into a group called “Voice context,” while the engravers for key, accidental, bar,
etc. go into a group called “Staff context.” In the case of polyphony, a single Staff context
Chapter 1: Introduction 6
contains more than one Voice context. In polyphonic notation, many voices can share a staff.
V V V V U
Similarly, more Staff contexts can be put into a single Score context
// > >>
> >> > > >>>
2 3 >> 2 > / > > >>> >
U
V V V V V
V V
// * > ( * > +>* U
> * ( > * ( >
V V >
U
1.4 Music representation
Ideally, the input format for any high-level formatting system is an abstract description of the
content. In this case, that would be the music itself. This poses a formidable problem: how
can we define what music really is? Instead of trying to find an answer, we have reversed the
question. We write a program capable of producing sheet music, and adjust the format to be
as lean as possible. When the format can no longer be trimmed down, by definition we are left
with content itself. Our program serves as a formal definition of a music document.
The syntax is also the user-interface for LilyPond, hence it is easy to type
c’4 d’8
a quarter note C1 (middle C) and eighth note D1 (D above middle C)
> >
On a microscopic scale, such syntax is easy to use. On a larger scale, syntax also needs
structure. How else can you enter complex pieces like symphonies and operas? The structure is
formed by the concept of music expressions: by combining small fragments of music into larger
ones, more complex music can be expressed. For example
c4
>
Combine this simultaneously with two other notes by enclosing in << and >>
<<c4 d4 e4>>
>>
>
This expression is put in sequence by enclosing it in curly braces { ... }
{ <<c4 d4 e4>> f4 }
>>> >
Chapter 1: Introduction 7
The above is another expression, and therefore, it many combined again with a simultaneous
expression; in this case, a half note
<< { <<c4 d4 e4>> f4 } g2 >>
>> >
>=
Such recursive structures can be specified neatly and formally in a context-free grammar.
The parsing code is also generated from this grammar. In other words, the syntax of LilyPond
is clearly and unambiguously defined.
User-interfaces and syntax are what people see and deal with most. They are partly a matter
of taste, and also subject of much discussion. Although discussions on taste do have their merit,
they are not very productive. In the larger picture of LilyPond, the importance of input syntax
is small: inventing neat syntax is easy, writing decent formatting code is much harder. This
is also illustrated by the line-counts for the respective components: parsing and representation
take up less than 10% of the code.
2
> > > > =
4
> >
twin kle twin kle lit tle star
Polyphonic notation and piano music can also be printed. The following example combines
some more exotic constructs
>
> : 2 > / >> >
3
3
33 4 qq / 2 / >>>
8 qs 2 / >>
The fragments shown above have all been written by hand, but that is not a requirement.
Since the formatting engine is mostly automatic, it can serve as an output means for other
programs that manipulate music. For example, it can also be used to convert databases of
musical fragments to images for use on websites and multimedia presentations.
Chapter 1: Introduction 8
This manual also shows an application: the input format is text, and can therefore be easily
embedded in other text-based formats such as LaTEX, HTML or in the case of this manual,
Texinfo. By means of a special program, the input fragments can be replaced by music images
in the resulting PostScript or HTML output files. This makes it easy to mix music and text in
documents.
collected a number of often-used formats in example files. These files can be used as a start;
simply copy the template and add notes in the appropriate places.
• Various input examples
This collection of files shows various tips and tricks, and is available as a big HTML docu-
ment, with pictures and explanatory texts included.
• The regression tests
This collection of files tests each notation and engraving feature of LilyPond in one file.
The collection is primarily there to help us debug problems, but it can be instructive to see
how we exercise the program. The format is similar to the the tips and tricks document.
In all HTML documents that have music fragments embedded, the LilyPond input that was
used to produce that image can be viewed by clicking the image.
The location of the documentation files that are mentioned here can vary from system to
system. On occasion, this manual refers to initialization and example files. Throughout this
manual, we refer to input files relative to the top-directory of the source archive. For example,
‘input/test/bla.ly’ may refer to the file ‘lilypond-1.7.19/input/test/bla.ly’. On binary
packages for the Unix platform, the documentation and examples can typically be found some-
where below ‘/usr/share/doc/lilypond/’. Initialization files, for example ‘scm/lily.scm’, or
‘ly/engraver-init.ly’, are usually found in the directory ‘/usr/share/lilypond/’.
Finally, this and all other manuals, are available online both as PDF files and HTML from
the web site, which can be found at http://www.lilypond.org/.
Chapter 2: Tutorial 10
2 Tutorial
This tutorial starts with a short introduction to the LilyPond music language. After this first
contact we will show you how to produce printed output. Then you will be able to create and
print your own sheets of music.
By cutting and pasting the full input into a test file, you have a starting template for ex-
periments. If you like learning in this way, you will probably want to print out or bookmark
Appendix D [Cheat sheet], page 189, which is a table listing all commands for quick reference.
a1 a2 a4 a16 a32
> >>= =
Rests are entered just like notes, but with the name “r”
r2 r4 r8 r16
" ( * +
The meter (or time signature) can be set with the \time command
Chapter 2: Tutorial 11
\time 3/4
\time 6/8
\time 4/4
3 6
4 8
To recognize names like c and d as pitches, they have to be entered inside a so-called \notes
block. This block is formed by enclosing notes and commands are enclosed in curly braces {
... } and adding the keyword \notes before the opening brace
\notes {
\time 3/4
\clef bass
c2 e4 g2.
f4 e d c2 r4
}
Now the piece of music is almost ready to be printed. Enclose the \notes block in a \score
block
\score {
\notes {
\time 3/4
\clef bass
c2 e4 g2.
f4 e d c2 r4
}
}
and the music will be converted to printable output.
/ 22 3
/ < 33 <
Key signatures together with the pitches (including alterations) are used together to deter-
mine when to print accidentals. This is a feature that often causes confusion to newcomers, so
let us explain it in more detail
LilyPond makes a sharp distinction between musical content and layout. The alteration (flat,
natural or sharp) of a note is part of the pitch, and is therefore musical content. Whether an
accidental (a flat, natural or sharp sign) is a printed in front of the corresponding note is a ques-
tion of layout. Layout is something that follows rules, so accidentals are printed automatically
according to those rules. The pitches in your music are works of art, so they will not be added
automatically, and you must enter what you want to hear.
In this example
/
/ >
> >
no note gets an explicit accidental, but still you enter
\key d \major
d cis fis
The code d does not mean “print a black dot just below the staff.” Rather, it means: “a
note with pitch D-natural.” In the key of A-flat, it does get an accidental
3 33
3 2>
\key as \major
d
Adding all alterations explicitly might require a little more effort when typing, but the advan-
tage is that transposing is easier, and music can be printed according to different conventions.
See Section 3.6 [Accidentals], page 49 for some examples how accidentals can be printed accord-
ing to different rules.
For more information on
Accidentals
see Section 3.6 [Accidentals], page 49
Key signature
see Section 3.3.2 [Key signature], page 40
Chapter 2: Tutorial 14
33 ( * 2 >
> /> >
>: >: 2>
3
3 / > > > 2/ > > / > = "
3
Chapter 2: Tutorial 15
There are some interesting points to note in this example. Bar lines and beams are drawn
automatically. Line breaks are calculated automatically; it does not matter where the line breaks
are in the source file. Finally, the order in which time, key and clef changes are entered is not
relevant: in the printout, these are ordered according to standard notation conventions.
>
c’4 c’’ c’’’ \clef bass c c,
> >
> >
An example of the use of quotes is in the following Mozart fragment
\key a \major
\time 6/8
cis’’8. d’’16 cis’’8 e’’4 e’’8
b’8. cis’’16 b’8 d’’4 d’’8
This example shows that music in a high register needs lots of quotes. This makes the input
less readable, and it is a source of errors. The solution is to use “relative octave” mode. In
practice, this is the most convenient way to copy existing music. To use relative mode, add
\relative before the piece of music. You must also give a note from which relative starts, in
this case c’’. If you do not use octavation quotes (i.e. do not add ’ or , after a note), relative
mode chooses the note that is closest to the previous one. For example, c f goes up while c g
goes down
\relative c’’ {
c f c g c
}
> >
> > >
Since most music has small intervals, pieces can be written almost without octavation quotes
in relative mode. The previous example is entered as
\relative c’’ {
\key a \major
\time 6/8
cis8. d16 cis8 e4 e8
b8. cis16 b8 d4 d8
}
> >
Putting a bunch of music expressions (notes) in braces, means that they should be played in
sequence. The result again is a music expression, which can be grouped with other expressions
sequentially. Here, the expression from the previous example is combined with two notes
{ { a4 g } f g }
> >
> >
>
>
This mechanism is similar to mathematical formulas: a big formula is created by composing
small formulas. Such formulas are called expressions, and their definition is recursive, so you
can make arbitrarily complex and large expressions. For example,
1
1 + 2
(1 + 2) * 3
((1 + 2) * 3) / (4 * 5)
This example shows a sequence of expressions, where each expression is contained in the next
one. The simplest expressions are numbers and operators (like +, * and /). Parentheses are used
to group expressions.
Like mathematical expressions, music expressions can be nested arbitrarily deep, e.g.
{
c <<c e>>
<< { e f } { c <<b d>> } >>
}
<<
\new Staff { \clef violin c’’ }
\new Staff { \clef bass c }
>>
>
>
There are several types of contexts: Staff, Voice and Score handle normal music notation.
Other staves are also Lyrics (for setting lyric texts) and ChordNames (for printing chord names).
In terms of syntax, prepending \new to a music expression creates a bigger music expression.
In this way it resembles the minus sign in mathematics. The formula (4+5) is an expression, so
-(4+5) is a bigger expression.
\score {
\notes <<
\new Staff {
\time 3/4
\clef violin
\relative c’’ {
e2 d4 c2 b4 a8[ a]
b[ b] g[ g] a2. }
}
\new Staff {
\clef bass
c2 e4 g2.
f4 e d c2.
}
>>
}
Chapter 2: Tutorial 19
For more information on context see the description in Section 4.2 [Interpretation contexts],
page 109.
V Y U \ _ Z
> > > > > >
Similarly, fingering indications can be added to a note using a dash (‘-’) and the digit to be
printed
c-3 e-5 b-2 a-1
> >
>
1
>
3 5 2
Dynamic signs are made by adding the markings (with a backslash) to the note
c\ff c\mf
> >
ff mf
Crescendi and decrescendi are started with the commands \< and \>. An ending dynamic,
for example \f, will finish the crescendo, or the command \! can be used
c2\< c2\ff\> c2 c2\!
= = = =
ff
A slur is a curve drawn across many notes, and indicates legato articulation. The starting
note and ending note are marked with a “(” and a “)” respectively
d4( c16)( cis d e c cis d e)( d4)
> > /> > > 2> /> > > >
A slur looks like a tie, but it has a different meaning. A tie simply makes the first note
sound longer, and can only be used on pairs of notes with the same pitch. Slurs indicate the
Chapter 2: Tutorial 20
articulations of notes, and can be used on larger groups of notes. Slurs and ties are also nested
in practice
Slurs to indicate phrasing can be entered with \( and \), so you can have both legato slurs
and phrasing slurs at the same time.
a8(\( ais b c) cis2 b’2 a4 cis, c\)
= >
> /> > > /= /> >
( >> >>
> >
You can combine markings like beams and ties with chords. They must be placed outside
the angled brackets
r4 <c e g>8[ <c f a>]~ <c f a>
( >> >> >>
>>>
r4 <c e g>8\>( <c e g> <c e g> <c f a>8\!)
( >>> >>> >>> >>>
Chapter 2: Tutorial 21
> = = =
Tuplets are made with the \times keyword. It takes two arguments: a fraction and a piece
of music. The duration of the piece of music is multiplied by the fraction. Triplets make notes
occupy 2/3 of their notated duration, so a triplet has 2/3 as its fraction
\times 2/3 { f8 g a }
\times 2/3 { c r c }
Grace notes are also made by prefixing a music expression with the keyword \appoggiatura
or \acciaccatura
c4 \appoggiatura b16 c4
c4 \acciaccatura b16 c4
%{
This line, and the notes below
are ignored, since they are in a
block comment.
Chapter 2: Tutorial 22
g g f f e e d d c2
%}
There is a special statement that really is a kind of comment. The version statement marks
for which version of LilyPond the file was written. To mark a file for version 2.1.17, use
\version "2.1.17"
These annotations make future upgrades of LilyPond go more smoothly. Changes in the
syntax are handled with a special program, ‘convert-ly’ (see Section 7.1 [Invoking convert-ly],
page 145), and it uses \version to determine what rules to apply.
The lyrics can be set to these notes, combining both with the \lyricsto keyword
\lyricsto "name " \new Lyrics ...
where name identifies to which melody the lyrics should be aligned. In this case, there is
only one melody, so we can leave it empty.
The final result is
\score {
\notes <<
\partial 4
\relative c’ {
c4
\times 2/3 { f g g } \times 2/3 { g4( a2) }
}
\lyricsto "" \new Lyrics \lyrics { I want to break free }
>>
}
3
>
I want to break free
This melody ends on a melisma, a single syllable (“free”) sung to more than one note. This
is indicated with an extender line. It is entered as two underscores, i.e.
Chapter 2: Tutorial 23
>
I want to break free
Similarly, hyphens between words can be entered as two dashes, resulting in a centered
hyphen between two syllables
>
Twin -- kle twin -- kle
>
2
4 > >
Twin kle twin kle
More options, like putting multiple lines of lyrics below a melody are discussed in Section 3.11
[Vocal music], page 71.
>>
== >>> ::: >
=
Other chords can be created by adding modifiers after a colon. The following example shows
a few common modifiers
\chords { c2 f4:m g4:maj7 gis1:dim7 }
/ >> <<
== 3 >>> >> / <<
=
For lead sheets, chords are not printed on staves, but as names on a line of themselves. Hence,
we have to override the context with \new, rendering the music expression in a ChordNames
context
/
\new ChordNames \chords { c2 f4.:m g4.:maj7 gis8:dim7 }
o7
C Fm GM G
When put together, chord names, lyrics and a melody form a lead sheet, for example,
\score {
<<
Chapter 2: Tutorial 24
3
> >
I want to break free
A complete list of modifiers and other options for layout can be found in Section 3.1.4
[Chords], page 33.
2.16 Titling
Bibliographic information is entered in a separate block, the \header block. The name of the
piece, its composer, etc. are entered as an assignment, within \header { ... }. For example,
\header {
title = "Eight miniatures"
composer = "Igor Stravinsky"
tagline = "small is beautiful"
}
\score { ... }
Chapter 2: Tutorial 25
When the file is processed the title and composer are printed above the music. The ‘tagline’
is a short line printed at bottom of the last page which normally says “Engraved by LilyPond,
version . . . ”. In the example above it is replaced by the line “small is beautiful.”6
Normally, the \header is put at the top of the file. However, for a document that contains
multiple pieces (e.g. an etude book, or an orchestral part with multiple movements), the header
can be put in the \score block as follows; in this case, the name of each piece will be printed
before each movement
\header {
title = "Eight miniatures"
composer = "Igor Stravinsky"
tagline = "small is beautiful"
}
\score { ...
\header { piece = "Adagio" }
}
\score { ...
\header { piece = "Menuetto" }
}
More information on titling can be found in Section 5.1 [Invoking lilypond], page 133.
Entering such parts is done by entering each voice as a sequence (with { .. }), and combining
those simultaneously, separating the voices with \\
<< { a4 g2 f4~ f4 } \\
{ r4 g4 f2 f4 } >>
For polyphonic music typesetting, spacer rests can also be convenient: these are rests that
do not print. It is useful for filling up voices that temporarily do not play. Here is the same
example with a spacer rest instead of a normal rest
6
Nicely printed parts are good PR for us, so please leave the tagline if you can.
Chapter 2: Tutorial 26
More features of polyphonic typesetting in the notation manual in Section 3.4 [Polyphony],
page 45.
> >
2
2
4
> >
> > >
2 >
4
More information on formatting piano music is in Section 3.10 [Piano music], page 67.
The name of an identifier should have alphabetic characters only; no numbers, underscores
or dashes. The assignment should be outside of the \score block.
It is possible to use variables for many other types of objects in the input. For example,
width = 4.5\cm
name = "Wendy"
aFivePaper = \paper { paperheight = 21.0 \cm }
Depending on its contents, the identifier can be used in different places. The following
example uses the above variables
\score {
\notes { c4^\name }
\paper {
\aFivePaper
linewidth = \width
}
}
More information on the possible uses of identifiers is in the technical manual, in TODO.
2 (
> /> > > >
4
>
Chapter 2: Tutorial 28
In ensemble pieces, one of the voices often does not play for many measures. This is denoted
by a special rest, the multi-measure rest. It is entered with a capital R followed by a duration
(1 for a whole note, 2 for a half note, etc.) By multiplying the duration, longer rests can be
constructed. For example, this rest takes 3 measures in 2/4 time
R2*3
When printing the part, multi-rests must be condensed. This is done by setting a run-time
variable
\set Score.skipBars = ##t
This commands sets the property skipBars property in the Score context to true (##t).
Prepending the rest and this option to the music above, leads to the following result
2
>
4 >
The score is made by combining all of the music in a \score block. Assuming that the other
voice is in bassoonNotes in the file ‘bassoon-music.ly’, a score is made with
\include "bassoon-music.ly"
\include "horn-music.ly"
\score {
\simultaneous {
\new Staff \hornNotes
\new Staff \bassoonNotes
}
}
leading to
! ! ! (
/> > > >
2
>
4
>
> / > > > 3> > > > > /> >
2 ( > >
4
More in-depth information on preparing parts and scores in the notation manual, in Sec-
tion 3.14 [Orchestral music], page 81.
Setting run-time variables (“properties”) is discussed in ref-TODO.
\documentclass[a4paper]{article}
\begin{document}
Documents for lilypond-book may freely mix music and text. For
example,
\begin{lilypond}
\score { \notes \relative c’ {
c2 g’2 \times 2/3 { f8 e d } c’2 g4
} }
\end{lilypond}
\begin{lilypond}
c’4
\end{lilypond}
\begin[staffsize=26,verbatim]{lilypond}
c’4 f16
\end{lilypond}
\lilypondfile{screech-boink.ly}
\end{document}
Under Unix, you can view the results as follows
$ cd input/tutorial
$ mkdir -p out/
$ lilypond-book --output=out/ lilybook.tex
lilypond-book (GNU LilyPond) 2.1.19
Reading ‘input/tutorial/lilybook.tex’
Reading ‘input/screech-boink.ly’
lots of stuff deleted
Writing ‘out/lilybook.tex’
$ cd out
$ latex lilybook
lots of stuff deleted
$ xdvi lilybook
To convert the file into a nice PDF document, run the following commands
$ dvips -Ppdf -u +lilypond lilybook
Chapter 2: Tutorial 30
$ ps2pdf lilybook.ps
Running lilypond-book and running latex creates a lot of temporary files, which would clutter
up the working directory. To remedy this, use the output option. It will create the files in a
separate subdirectory ‘out’.
The result looks more or less like
Documents for lilypond-book may freely mix music and text. For example
= = >
3
= >>>
If you have no \score block in the fragment, lilypond-book will supply one
>
In this example two things happened: a score block was added, and the line width was set
to natural length.
Options are put in brackets.
c’4 f16
>
>
Larger examples can be put in a separate file, and introduced with \lilypondfile.
>
> : 2 > / >> >
3
3
33 4
qq / 2 / >>>
8
qs 2 / >>
Chapter 3: Notation manual 31
3 Notation manual
This chapter describes all the different types of notation supported by LilyPond. It is intended
as a reference for users that are already somewhat familiar with LilyPond.
3.1.1 Notes
A note is printed by specifying its pitch and then its duration1
cis’4 d’8 e’16 c’16
/> > > 2>
3.1.2 Pitches
The most common syntax for pitch entry is used in \chords and \notes mode. In these modes,
pitches may be designated by names. The notes are specified by the letters a through g, while
the octave is formed with notes ranging from c to b. The pitch c is an octave below middle C
and the letters span the octave above that C
\clef bass
>
5
A sharp is formed by adding -is to the end of a pitch name and a flat is formed by adding
-es. Double sharps and double flats are obtained by adding -isis or -eses. These names
are the Dutch note names. In Dutch, aes is contracted to as, but both forms are accepted.
Similarly, both es and ees are accepted.
Half-flats and half-sharps are formed by adding -eh and -ih; the following is a series of Cs
with increasing pitches
ceses4
ceseh
ces
ceh
c
1
Notes constitute the most basic elements of LilyPond input, but they do not form valid input on their own
without a \score block. However, for the sake of brevity and simplicity we will generally omit \score blocks
and \paper declarations in this manual.
Chapter 3: Notation manual 32
cih
cis
cisih
There are predefined sets of note names for various other languages. To use them, include
the language specific init file. For example: \include "english.ly". The available language
files and the note 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
-x (double)
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 sib si -d -b
catalan.ly do re mi fa sol la sib si -d/-s -b
espanol.ly do re mi fa sol la sib si -s -b
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’ c’’ es’ g’ as’ gisis’ ais’
See also
Program reference: NoteEvent, and NoteHead.
/ > > / > 9/8 >
Chapter 3: Notation manual 33
See also
The automatic production of accidentals can be tuned in many ways. For more information,
refer to Section 3.6 [Accidentals], page 49.
Bugs
There are no generally accepted standards for denoting three quarter flats, so LilyPond’s symbol
does not conform to any standard.
3.1.4 Chords
A chord is formed by a enclosing a set of pitches in < and >. A chord may be followed by a
duration, and a set of articulations, just like simple notes.
>>
> >
3.1.5 Rests
Rests are entered like notes, with the note name r
r1 r2 r4 r8
!
" ( *
Whole bar rests, centered in middle of the bar, must be done with multi-measure rests. They
are discussed in Section 3.14.7 [Multi measure rests], page 85.
A rest’s vertical position may be explicitly specified by entering a note with the \rest
keyword appended. This makes manual formatting in polyphonic music easier. Rest collision
testing will leave these rests alone
a’4\rest d’4\rest
( (
See also
Program reference: RestEvent, and Rest.
3.1.6 Skips
An invisible rest (also called a ‘skip’) can be entered like a note with note name ‘s’ or with
\skip duration
a2 s4 a4 \skip 1 a4
= > >
The s syntax is only available in note mode and chord mode. In other situations, you should
use the \skip command
Chapter 3: Notation manual 34
\score {
\new Staff <<
{ \time 4/8 \skip 2 \time 4/4 }
\notes\relative c’’ { a2 a1 }
>>
}
4 = <
8
The skip command is merely an empty musical placeholder. It does not produce any output,
not even transparent output.
The s skip command does create Staff and Voice when necessary, similar to note and rest
commands. For example, the following results in an empty staff.
\score { \notes { s4 } }
The same fragment using \skip results in an empty page.
See also
Program reference: SkipEvent, SkipMusic.
3.1.7 Durations
In Note, Chord, and Lyrics mode, durations are designated by numbers and dots: durations are
entered as their reciprocal values. For example, a quarter note is entered using a 4 (since it is a
1/4 note), while a half note is entered using a 2 (since it is a 1/2 note). For notes longer than
a whole you must use variables
c’\breve
c’1 c’2 c’4 c’8 c’16 c’32 c’64 c’64
r\longa r\breve
r1 r2 r4 r8 r16 r32 r64 r64
" ( * + ,--
7
If the duration is omitted then it is set to the previously entered duration. The default for
the first note is a quarter note. The duration can be followed by dots (‘.’) in order to obtain
dotted note lengths
a’ b’ c’’8 b’ a’4 a’4. b’4.. c’8.
Chapter 3: Notation manual 35
Predefined commands
Dots are normally moved up to avoid staff lines, except in polyphonic situations. The following
commands may be used to force a particular direction manually
\dotsUp, \dotsDown, \dotsBoth.
See also
This manual: Section 3.1.10 [Tuplets], page 36
Program reference: Dots, and DotColumn.
3.1.8 Stems
Whenever a note is found, a Stem object is created automatically. For whole notes and rests,
they are also created but made invisible.
Predefined commands
\stemUp, \stemDown, \stemBoth.
3.1.9 Ties
A tie connects two adjacent note heads of the same pitch. The tie in effect extends the length
of a note. Ties should not be confused with slurs, which indicate articulation, or phrasing slurs,
which indicate musical phrasing. A tie is entered using the tilde symbol ‘~’
e’ ~ e’ <c’ e’ g’> ~ <c’ e’ g’>
=:
3
4
= >
Chapter 3: Notation manual 36
If you need to tie a lot of notes over bars, it may be easier to use automatic note splitting
(see Section 3.2.5 [Automatic note splitting], page 39).
Predefined commands
\tieUp, \tieDown, \tieBoth, \tieDotted, \tieSolid.
See also
In this manual: Section 3.2.5 [Automatic note splitting], page 39.
Program reference: TieEvent, Tie.
For tying only a subset of the note heads of a pair of chords, see
‘input/regression/tie-chord-partial.ly’.
Bugs
Switching staves when a tie is active will not produce a slanted tie.
Formatting of ties is a difficult subject. The results are often not optimal.
3.1.10 Tuplets
Tuplets are made out of a music expression by multiplying all durations with a fraction
\times fraction musicexpr
The duration of musicexpr will be multiplied by the fraction. The fraction’s denominator will
be printed over the notes, optionally with a bracket. The most common tuplet is the triplet in
which 3 notes have the length of 2, so the notes are 2/3 of their written length
g’4 \times 2/3 {c’4 c’ c’} d’4 d’4
>
3
>>>>>>
3 3
Predefined commands
\tupletUp, \tupletDown, \tupletBoth.
See also
Program reference: TupletBracket, and TimeScaledMusic.
Examples: ‘input/regression/tuplet-nest.ly’.
Chapter 3: Notation manual 37
Bugs
Nested tuplets are not formatted automatically. In this case, outer tuplet brackets should be
moved manually, which is demonstrated in ‘input/regression/tuplet-nest.ly’.
>
> > > > >
>
If the preceding item is a chord, the first note of the chord is used to determine the first note
of the next chord
\relative c’ {
c <c e g>
<c’ e g>
<c, e’ g>
}
Chapter 3: Notation manual 38
>> >>
>> >
> > >
The pitch after the \relative contains a note name. To parse the note name as a pitch, it
must surrounded by \notes
The relative conversion will not affect \transpose, \chords or \relative sections in its
argument. If you want to use relative within transposed music, you must place an additional
\relative inside the \transpose.
\relative c’ {
e
\octave b
a
}
> >
>
> > > > 3 > > > =
3.2.5 Automatic note splitting
Long notes can be converted automatically to tied notes. This is done by replacing the Note_
heads_engraver by the Completion_heads_engraver. In the following examples, notes cross-
ing the bar line are split and tied.
\new Voice \with {
\remove "Note_heads_engraver"
\consists "Completion_heads_engraver"
} {
c2. c8 d4 e f g a b c8 c2 b4 a g16 f4 e d c8. c2
}
: > > > > > > > > > = > > > > :
= > >
> > :
5
> =
This engraver splits all running notes at the bar line, and inserts ties. One of its uses is to
debug complex scores: if the measures are not entirely filled, then the ties exactly show how
much each measure is off.
Bugs
Not all durations (especially those containing tuplets) can be represented exactly; the engraver
will not insert tuplets.
Chapter 3: Notation manual 40
See also
Examples: ‘input/regression/completion-heads.ly’.
Program reference: Completion_heads_engraver.
See also
Program reference: StaffSymbol.
Examples: ‘input/test/staff-lines.ly’, ‘input/test/staff-size.ly’.
Bugs
If a staff is ended halfway a piece, the staff symbol may not end exactly on the bar line.
Bugs
The ordering of a key cancellation is wrong when it is combined with repeat bar lines. The
cancellation is also printed after a line break.
See also
Program reference: KeyChangeEvent, and KeySignature.
3.3.3 Clef
The clef indicates which lines of the staff correspond to which pitches.
The clef can be set or changed with the \clef command
\key f\major c’’2 \clef alto g’2
=
3 =
Chapter 3: Notation manual 41
>
8
See also
Program reference: the object for this symbol is Clef.
= = = =
8va
= =
The set-octavation function also takes -1 (for 8va bassa) and 2 (for 15ma) as arguments.
Internally the function sets the properties ottavation (e.g. to "8va") and centralCPosition.
For overriding the text of the bracket, set ottavation after invoking set-octavation, i.e.,
#(set-octavation 1)
\set Staff.ottavation = #"8"
See also
Program reference: OttavaBracket.
Examples: ‘input/regression/ottava.ly’, ‘input/regression/ottava-broken.ly’.
Bugs
set-octavation will get confused when clef changes happen during an octavation bracket.
=:
2 3
4
= 4
The symbol that is printed can be customized with the style property. Setting it to #’()
uses fraction style for 4/4 and 2/2 time. There are many more options for its layout. See
‘input/test/time.ly’ for more examples.
This command sets the property timeSignatureFraction, beatLength and measureLength
in the Timing context, which is normally aliased to Score. The property measureLength de-
termines where bar lines should be inserted, and how automatic beams should be generated.
Changing the value of timeSignatureFraction also causes the symbol to be printed.
More options are available through the Scheme function set-time-signature. In combina-
tion with the Measure_grouping_engraver, it will create MeasureGrouping signs. Such signs
ease reading rhythmically complex modern music. In the following example, the 9/8 measure is
subdivided in 2, 2, 2 and 3. This is passed to set-time-signature as the third argument (2 2
2 3)
\score {
\notes \relative c’’ {
#(set-time-signature 9 8 ’(2 2 2 3))
g8[ g] d[ d] g[ g] a8[( bes g]) |
#(set-time-signature 5 8 ’(3 2))
a4. g4
}
\paper {
\context {
\StaffContext
\consists "Measure_grouping_engraver"
}
Chapter 3: Notation manual 43
}
}
9
8
> > > > > > > 3> > 5
8
>: >
See also
Program reference: TimeSignature, and Timing_engraver.
Bugs
Automatic beaming does not use the measure grouping specified with set-time-signature.
Predefined commands
\cadenzaOn, \cadenzaOff.
> :: >
The following bar types are available
Chapter 3: Notation manual 44
c4
\bar "|" c
\bar "" c
\bar "|:" c
\bar "||" c
\bar ":|" c
\bar ".|" c
\bar ".|." c
\bar ":|:" c
\bar "|." c
\bar ":" c
:: :: :: :: ::
:
> > > > > > > > > > :>
For allowing line breaks, there is a special command,
\bar "empty"
This will insert an invisible bar line, and allow line breaks at this point.
In scores with many staves, a \bar command in one staff is automatically applied to all
staves. The resulting bar lines are connected between different staves of a StaffGroup
<<
\context StaffGroup <<
\new Staff {
e’4 d’
\bar "||"
f’ e’
}
\new Staff { \clef bass c4 g e g }
>>
\new Staff { \clef bass c2 c2 }
>>
= =
A bar line is created whenever the whichBar property is set. At the start of a measure it is
set to the contents of defaultBarType. The contents of repeatCommands are used to override
default measure bars.
The command \bar bartype is a short cut for doing \set Timing.whichBar = bartype.
Whenever whichBar is set to a string, a bar line of that type is created.
Chapter 3: Notation manual 45
You are encouraged to use \repeat for repetitions. See Section 3.8 [Repeats], page 61.
See also
In this manual: Section 3.8 [Repeats], page 61.
Program reference: the bar line objects that are created at Staff level are called BarLine,
the bar lines that span staves are SpanBar objects.
The bar lines at the start of each system are SystemStartBar, SystemStartBrace, and
SystemStartBracket. Only one of these types is created in every context, and that type is
determined by the property systemStartDelimiter.
Examples: ‘input/test/bar-lines.ly’,
3.4 Polyphony
The easiest way to enter fragments with more than one voice on a staff is to split chords using
the separator \\. You can use it for small, short-lived voices or for single chords
\context Staff \relative c’’ {
c4 << { f d e } \\ { b c2 } >>
c4 << g’ \\ b, \\ f’ \\ d >>
}
The separator causes Voice contexts2 to be instantiated. They bear the names "1", "2",
etc. In each of these contexts, vertical direction of slurs, stems, etc. is set appropriately.
This can also be done by instantiating Voice contexts by hand, and using \voiceOne, up to
\voiceFour to assign a stem directions and horizontal shift for each part
\relative c’’
\context Staff <<
\new Voice { \voiceOne cis2 b }
\new Voice { \voiceThree b4 ais ~ ais4 gis4 }
\new Voice { \voiceTwo fis4~ fis4 f ~ f } >>
2
Polyphonic voices are sometimes called "layers" other notation packages
Chapter 3: Notation manual 46
c8 c4. } \\ { c2 c2 } >>
>
(
Predefined commands
\oneVoice, \voiceOne, \voiceTwo, \voiceThree, \voiceFour.
The following commands specify in what chords of the current voice should be shifted: the
outer voice has \shiftOff, and the inner voices have \shiftOn, \shiftOnn, etc.
\shiftOn, \shiftOnn, \shiftOnnn, \shiftOff.
See also
Program reference: the objects responsible for resolving collisions are NoteCollision and
RestCollision.
Examples: See also example files ‘input/regression/collision-dots.ly’,
‘input/regression/collision-head-chords.ly’, ‘input/regression/collision-heads.ly’,
‘input/regression/collision-mesh.ly’, and ‘input/regression/collisions.ly’.
Bugs
Resolving collisions is a intricate subject, and only a few situations are handled. When LilyPond
cannot cope, the force-hshift property of the NoteColumn object and pitched rests can be used
to override typesetting decisions.
When using merge-differently-headed with an upstem eighth or a shorter note, and a
downstem half note, the eighth note gets the wrong offset.
There is no support for clusters where the same note occurs with different accidentals in the
same chord. In this case, it is recommended to use enharmonic transcription, or to use special
cluster notation (see Section 3.16.1 [Clusters], page 104).
3.5 Beaming
Beams are used to group short notes into chunks that are aligned with the metrum. They are
inserted automatically
Chapter 3: Notation manual 47
2 > > > > 6 > > > >: > >
4 8
When these automatic decisions are not good enough, beaming can be entered explicitly. It
is also possible to define beaming patterns that differ from the defaults.
Individual notes may be marked with \noBeam, to prevent them from being beamed
\time 2/4 c8 c\noBeam c c
>>>>
2
4
See also
Program reference: Beam.
( *>>**> >*
Normally, beaming patterns within a beam are determined automatically. If necessary, the
properties stemLeftBeamCount and stemRightBeamCount can be used to override the defaults.
If either property is set, its value will be used only once, and then it is erased
\context Staff {
f8[ r16 f g a]
f8[ r16 \set stemLeftBeamCount = #1 f g a]
}
>>>>>>>>>>>>>>>> >>>>>>>>
Kneed beams are inserted automatically, when a large gap is detected between the note
heads. This behavior can be tuned through the object property auto-knee-gap.
Normally, line breaks are forbidden when beams cross bar lines. This behavior can be changed
by setting allowBeamBreak.
Bugs
Automatically kneed cross-staff beams cannot be used together with hidden staves.
Predefined commands
\autoBeamOff, \autoBeamOn.
Chapter 3: Notation manual 49
Bugs
If a score ends while an automatic beam has not been ended and is still accepting notes, this
last beam will not be typeset at all. The same holds polyphonic voices, entered with << ... \\
... >>. If a polyphonic voice ends while an automatic beam is still accepting notes, it is not
typeset.
The rules for ending a beam depend on the shortest note in a beam. So, while it is possible
to have different ending rules for eight beams and sixteenth beams, a beam that contains both
eight and sixteenth notes will use the rules for the sixteenth beam.
In the example below, the autobeamer makes eight beams and sixteenth end at 3 eights; the
third beam can only be corrected by specifying manual beaming.
It is not possible to specify beaming parameters that act differently in different parts of a
measure. This means that it is not possible to use automatic beaming in irregular meters such
as 5/8.
3.6 Accidentals
This section describes how to change the way that accidentals are inserted automatically before
the running notes.
Common rules for typesetting accidentals have been canned in a function. This function is
called as follows
#(set-accidental-style ’modern ’Voice)
The function takes two arguments: a symbol that denotes the style (in the example, modern),
and another symbol that denotes the context name (in this example, Voice). If no context name
is supplied, Staff is the default.
The following styles are supported
default This is the default typesetting behavior. It should correspond to 18th century
common practice: Accidentals are remembered to the end of the measure in which
they occur and only on their own octave.
voice The normal behavior is to remember the accidentals on Staff-level. This variable,
however, typesets accidentals individually for each voice. Apart from that, the rule
is similar to code.
This leads to some weird and often unwanted results because accidentals from one
voice do not get canceled in other voices
\context Staff <<
#(set-accidental-style ’voice)
<<
{ es g } \\
{ c, e }
>> >>
3 > >>
>
Chapter 3: Notation manual 50
Hence you should only use voice if the voices are to be read solely by individual
musicians. If the staff is to be used by one musician (e.g. a conductor) then you use
modern or modern-cautionary instead.
modern This rule corresponds to the common practice in the 20th century. This rule prints
the same accidentals as default, but temporary accidentals also are canceled in
other octaves. Furthermore, in the same octave, they also get canceled in the fol-
lowing measure
#(set-accidental-style ’modern)
cis’ c’’ cis’2 | c’’ c’
> =
/> /= 2=
modern-cautionary
This rule is similar to modern, but the “extra” accidentals (the ones not typeset by
default) are typeset as cautionary accidentals. They are printed in reduced size or
with parentheses
#(set-accidental-style ’modern-cautionary)
cis’ c’’ cis’2 | c’’ c’
> =
/> 9/8 = 928 =
modern-voice
This rule is used for multivoice accidentals to be read both by musicians playing
one voice and musicians playing all voices. Accidentals are typeset for each voice,
but they are canceled across voices in the same Staff.
modern-voice-cautionary
This rule is the same as modern-voice, but with the extra accidentals (the ones not
typeset by voice) typeset as cautionaries. Even though all accidentals typeset by
default are typeset by this variable then some of them are typeset as cautionaries.
piano This rule reflects 20th century practice for piano notation. Very similar to modern
but accidentals also get canceled across the staves in the same GrandStaff or
PianoStaff.
piano-cautionary
As #(set-accidental-style ’piano)’ , str) but with the extra accidentals type-
set as cautionaries.
no-reset This is the same as default but with accidentals lasting “forever” and not only
until the next measure
#(set-accidental-style ’no-reset)
c1 cis cis c
< /< /< <
Chapter 3: Notation manual 51
forget This is sort of the opposite of no-reset: Accidentals are not remembered at all—
and hence all accidentals are typeset relative to the key signature, regardless of what
was before in the music
#(set-accidental-style ’forget)
\key d\major c4 c cis cis d d dis dis
/
/ > > /> />
2> 2> > >
See also
Program reference: Accidental_engraver, Accidental, and AccidentalPlacement.
Bugs
Simultaneous notes are considered to be entered in sequential mode. This means that in a chord
the accidentals are typeset as if the notes in the chord happened once at a time - in the order
in which they appear in the input file.
This is only a problem when accidentals in a chord depend on each other. This problem can
be solved by manually inserting ! and ? for the problematic notes.
In the default scheme, accidentals only depend on other accidentals with the same pitch on
the same staff, so no conflicts are possible.
> = =
Slurs avoid crossing stems, and are generally attached to note heads. However, in some
situations with beams, slurs may be attached to stem ends. If you want to override this layout
you can do this through the object property attachment of Slur. Its value is a pair of symbols,
specifying the attachment type of the left and right end points
\slurUp
\override Stem #’length = #5.5
g’8(g g4)
\override Slur #’attachment = #’(stem . stem)
g8( g g4)
>>> >>>
If a slur would strike through a stem or beam, the slur will be moved away upward or
downward. If this happens, attaching the slur to the stems might look better
Chapter 3: Notation manual 52
\stemUp \slurUp
d32( d’4 d8..)
\override Slur #’attachment = #’(stem . stem)
d,32( d’4 d8..)
> > :: > > ::
> >
Predefined commands
\slurUp, \slurDown, \slurBoth, \slurDotted, \slurSolid.
See also
Program reference: internals document, Slur, and SlurEvent.
Bugs
Producing nice slurs is a difficult problem, and LilyPond uses a simple, empiric method to
produce slurs. In some cases, its results are ugly.
Typographically, the phrasing slur behaves almost exactly like a normal slur. However, they
are treated as different objects. A \slurUp will have no effect on a phrasing slur; instead, you
should use \phrasingSlurUp, \phrasingSlurDown, and \phrasingSlurBoth.
The commands \slurUp, \slurDown, and \slurBoth will only affect normal slurs and not
phrasing slurs.
Predefined commands
\phrasingSlurUp, \phrasingSlurDown, \phrasingSlurBoth.
See also
Program reference: see also PhrasingSlur, and PhrasingSlurEvent.
Bugs
Phrasing slurs have the same limitations in their formatting as normal slurs. Putting phrasing
slurs over rests leads to spurious warnings.
> m>
The glyph of the breath mark can be tuned by overriding the text property of the
BreathingSign layout object with any markup text. For example,
c’4
\override BreathingSign #’text
= #(make-musicglyph-markup "scripts-rvarcomma")
\breathe
d4
> o>
See also
Program reference: BreathingSign, BreathingSignEvent.
Examples: ‘input/regression/breathing-sign.ly’.
<
> : = 120
See also
Program reference: MetronomeChangeEvent.
< = = = =
rall
Chapter 3: Notation manual 54
See also
Internals TextSpanEvent, TextSpanner.
Examples: ‘input/regression/text-spanner.ly’.
See also
Program reference: HorizontalBracket, NoteGroupingEvent.
Examples: ‘input/regression/note-group-bracket.ly’.
3.7.7 Articulations
A variety of symbols can appear above and below notes to indicate different characteristics of
the performance. They are added to a note by adding a dash and the character signifying the
articulation. They are demonstrated here
_ U
V Y
> > > >W > >\ >Z
c-. c-- c-+ c-| c-> c^ c
The meanings of these shorthands can be changed. See ‘ly/script-init.ly’ for examples.
The script is automatically placed, but if you need to force directions, you can use _ to force
them down, or ^ to put them up
c’’4^^ c’’4_^
\ >
>
]
Other symbols can be added using the syntax note\name, e.g. c4\fermata. Again, they can
be forced up or down using ^ and _, e.g.
c\fermata c^\fermata c_\fermata
Chapter 3: Notation manual 55
Z i T e f
> >` >a > > > >
g h ^ _ c b
> > > > > > >d
v w x y z
> > > > >
} { ~ | Ä
> > > > >
>N >L
Õ
> >
P j k l
> >R > > >
Predefined commands
\scriptUp, \scriptDown, \scriptBoth.
See also
Program reference: ScriptEvent, and Script.
Bugs
These note ornaments appear in the printed output but have no effect on the MIDI rendering
of the music.
1 2 3 4 2-3
>>
<a’ a’’-3>8_\thumb <b’ b’’-3>_\thumb
3 3
>>
T T
Fingerings for chords can also be added to individual notes of the chord by adding them after
the pitches
< c-1 e-2 g-3 b-5 >4
>>>
5
3
>
2
1
iIn this case, setting fingeringOrientations will put fingerings next to note heads
\set fingeringOrientations = #’(left down)
<c-1 es-2 g-4 bes-5 > 4
\set fingeringOrientations = #’(up right down)
<c-1 es-2 g-4 bes-5 > 4
\set fingeringOrientations = #’(right)
<es-2>4
> >
5
4 4
2 2 2
1 1
The last note demonstrates how fingering instructions can be put close to note heads in
monophonic music, using this feature.
Chapter 3: Notation manual 57
See also
Program reference: FingerEvent, and Fingering.
Examples: ‘input/regression/finger-chords.ly’.
longtext
Predefined commands
\fatText, \emptyText.
See also
In this manual: Section 4.5 [Text markup], page 123.
Program reference: TextScriptEvent, TextScript.
Unlike \acciaccatura and \appoggiatura, the \grace command does not start a slur.
Internally, timing for grace notes is done using a second, ‘grace’ time. Every point in time
consists of two rational numbers: one denotes the logical time, one denotes the grace timing.
The above example is shown here with timing tuples
1 -1 1 2 -1 2 -1 2
(0,0) ( 4 , 16 ) ( 4 , 0 ) ( 4 , 8 ) ( 4 , 16 ) ( 4 , 0 )
The placement of grace notes is synchronized between different staves. In the following
example, there are two sixteenth graces notes for every eighth grace note
> >>
>>>
>U >
See also
Program reference: GraceMusic.
Bugs
A score that starts with an \grace section needs an explicit \context Voice declaration, oth-
erwise the main note and grace note end up on different staves.
Grace note synchronization can also lead to surprises. Staff notation, such as key signatures,
bar lines, etc. are also synchronized. Take care when you mix staves with grace notes and staves
without, for example,
<< \new Staff { e4 \bar "|:" \grace c16 d4 }
\new Staff { c4 \bar "|:" d4 } >>
>
: :: >
:
>
>
> :: ::
This can be remedied by inserting grace skips, for the above example
\new Staff { c4 \bar "|:" \grace s16 d4 } >>
Grace sections should only be used within sequential music expressions. Nesting or juxta-
posing grace sections is not supported, and might produce crashes or other errors.
3.7.11 Glissando
A glissando is a smooth change in pitch. It is denoted by a line or a wavy line between two
notes.
A glissando line can be requested by attaching a \glissando to a note
>
c’\glissando c’
>
Chapter 3: Notation manual 60
See also
Program reference: Glissando, and GlissandoEvent.
Example files: ‘input/regression,glissando.ly’
Bugs
Printing text over the line (such as gliss.) is not supported.
3.7.12 Dynamics
Absolute dynamic marks are specified using a command after a note c4\ff. The available
dynamic marks are \ppp, \pp, \p, \mp, \mf, \f, \ff, \fff, \fff, \fp, \sf, \sff, \sp, \spp,
\sfz, and \rfz
c’\ppp c\pp c \p c\mp c\mf c\f c\ff c\fff
c2\sf c\rfz
= = = =
cresc. poco mf
Predefined commands
\dynamicUp, \dynamicDown, \dynamicBoth.
See also
Program reference: CrescendoEvent, DecrescendoEvent, and AbsoluteDynamicEvent.
Dynamics DynamicText and Hairpin objects. Vertical positioning of these symbols is handled
by the DynamicLineSpanner object.
3.8 Repeats
Repetition is a central concept in music, and multiple notations exist for repetitions. In LilyPond,
most of these notations can be captured in a uniform syntax. One of the advantages is that they
can be rendered in MIDI accurately.
The following types of repetition are supported
unfold Repeated music is fully written (played) out. Useful for MIDI output, and entering
repetitive music.
volta This is the normal notation: Repeats are not written out, but alternative endings
(volte) are printed, left to right.
tremolo Make tremolo beams.
percent Make beat or measure repeats. These look like percent signs.
< =
\context Staff {
\partial 4
\repeat volta 4 { e | c2 d2 | e2 f2 | }
\alternative { { g4 g g } { a | a a a a | b2. } }
}
::
Bugs
A nested repeat like
\repeat ...
\repeat ...
\alternative
is ambiguous, since it is is not clear to which \repeat the \alternative belongs. This ambiguity
is resolved by always having the \alternative belong to the inner \repeat. For clarity, it is
advisable to use braces in such situations.
Bugs
Timing information is not remembered at the start of an alternative, so after a repeat timing
information must be reset by hand, for example by setting Score.measurePosition or entering
\partial. Similarly, slurs or ties are also not repeated.
c4 c4
\set Score.repeatCommands = #’((volta #f))
c4 c4
93
See also
Program reference: VoltaBracket, RepeatedMusic, VoltaRepeatedMusic,
UnfoldedRepeatedMusic, and FoldedRepeatedMusic.
< < = = >>
Tremolo marks can also be put on a single note. In this case, the note should not be
surrounded by braces.
\repeat "tremolo" 4 c’16
>
A similar mechanism is the tremolo subdivision, described in Section 3.8.5 [Tremolo subdi-
visions], page 63.
See also
In this manual: Section 3.8.5 [Tremolo subdivisions], page 63, Section 3.8 [Repeats], page 61.
Program reference: tremolo beams are Beam objects. Single stem tremolos are StemTremolo
objects. The music expression is TremoloEvent.
Example files: ‘input/regression/chord-tremolo.ly’, ‘input/regression/stem-tremolo.ly’.
= = = =
Bugs
Tremolos entered in this way do not carry over into the MIDI output.
See also
In this manual: Section 3.8.4 [Tremolo repeats], page 63.
Elsewhere: StemTremolo, TremoloEvent.
> : :
> = 3= > /> >
See also
Program reference: RepeatSlash, PercentRepeat, PercentRepeatedMusic, and
DoublePercentRepeat.
J J > >
See also
Program reference: DrumNoteEvent.
^
}
K JKJJJJ
> >> >>
*
The above example shows verbose polyphonic notation. The short polyphonic notation,
described in Section 3.4 [Polyphony], page 45, can also be used if the DrumVoices are instantiated
by hand first. For example,
K A J J J_ J^ K
J
cymc cyms cymr hh hhc hho hhho hhp
D
D > J > > > > >
> >
cb hc bd sn ss tomh tommh tomml toml tomfh tomfl
The drum scheme supports six different toms. When there fewer toms, simply select
the toms that produce the desired result, i.e. to get toms on the three middle lines
you use tommh, tomml and tomfh.
timbales-style
D
to typeset timbales on a two line staff
> J > J
timh ssh timl ssl cb
congas-style
to typeset congas on a two line staff
^
> > >_ J
> >^ >_ J
cgh cgho cghm ssh cgl cglo cglm ssl
bongos-style
to typeset bongos on a two line staff
^
> > >_ J
> >^ >_ J
boh boho bohm ssh bol bolo bolm ssl
percussion-style
to typeset all kinds of simple percussion on one line staves
_ _
}
See also
Init files: ‘ly/drumpitch-init.ly’.
Program reference: DrumStaff, DrumVoice.
Bugs
Because general MIDI does not contain rim shots, the sidestick is used for this purpose instead.
Bugs
There is no support for putting chords across staves. You can get this result by increasing the
length of the stem in the lower stave so it reaches the stem in the upper stave, or vice versa. An
example is included with the distribution as ‘input/test/stem-cross-staff.ly’.
Dynamics are not centered, but kludges do exist. See ‘input/template/piano-dynamics.ly’.
The distance between the two staves is normally fixed across the entire score. It is
possible to tune this per system, but it does require arcane command incantations. See
‘input/test/piano-staff-distance.ly’.
>
2 >
> > > (
> >
In this example, spacer rests are used to prevent the bottom staff from terminating too soon.
See also
In this manual: Section 3.10.2 [Manual staff switches], page 68.
Program reference: AutoChangeMusic.
Bugs
The staff switches often do not end up in optimal places. For high quality output, staff switches
should be specified manually.
\autochange cannot be inside \times.
Internally, the \partcombine interprets both arguments as Voices named one and two,
and then decides when the parts can be combined. Consequently, if the arguments switch to
differently named Voice contexts, the events in those will be ignored.
3.10.3 Pedals
Pianos have pedals that alter the way sound are produced. Generally, a piano has three pedals,
sustain, una corda, and sostenuto.
Piano pedal instruction can be expressed by attaching \sustainDown, \sustainUp,
\unaCorda, \treCorde, \sostenutoDown and \sostenutoUp to a note or chord
c’4\sustainDown c’4\sustainUp
> >
What is printed can be modified by setting pedalX Strings, where X is one of the pedal
types: Sustain, Sostenuto or UnaCorda. Refer to SustainPedal in the program reference for
more information.
Pedals can also be indicated by a sequence of brackets, by setting the pedalSustainStyle
property to bracket objects
\set Staff.pedalSustainStyle = #’bracket
c\sustainDown d e
b\sustainUp\sustainDown
b g \sustainUp a \sustainDown \bar "|."
> >
> > > >
>
Sost. Ped.
For fine-tuning of the appearance of a pedal bracket, the properties edge-width, edge-
height, and shorten-pair of PianoPedalBracket objects (see PianoPedalBracket in the
Program reference) can be modified. For example, the bracket may be extended to the end
of the note head
\override Staff.PianoPedalBracket
#’shorten-pair = #’(0 . -1.0)
Chapter 3: Notation manual 70
c\sostenutoDown d e c, f g a\sostenutoUp
> >
> > > >
>
Sost. Ped.
3.10.4 Arpeggio
You can specify an arpeggio sign on a chord by attaching an \arpeggio to a chord
<c e g c>\arpeggio
qqq >>>
q>
When an arpeggio crosses staves, you attach an arpeggio to the chords in both staves, and
set PianoStaff.connectArpeggios
\context PianoStaff <<
\set PianoStaff.connectArpeggios = ##t
\new Staff { <c’ e g c>\arpeggio }
\new Staff { \clef bass <c,, e g>\arpeggio }
qq >>
>>
qqq >>
qq
2 qq
qq
qq
qqqq >>>
The direction of the arpeggio is sometimes denoted by adding an arrowhead to the wiggly
line
\context Voice {
\arpeggioUp
<c e g c>\arpeggio
\arpeggioDown
<c e g c>\arpeggio
}
>>
<c’ e g c>\arpeggio
>
>
Chapter 3: Notation manual 71
Predefined commands
\arpeggio, \arpeggioUp, \arpeggioUp, \arpeggioBoth, \arpeggioBracket.
See also
Program reference: ArpeggioEvent music expressions lead to Arpeggio objects. Cross staff
arpeggios are PianoStaff.Arpeggio.
Bugs
It is not possible to mix connected arpeggios and unconnected arpeggios in one PianoStaff at
the same time.
2 <
= =
See also
The associated object is VoiceFollower.
Predefined commands
\showStaffSwitch, \hideStaffSwitch.
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 }. The following example is
usually a bug. The syllable includes a }, and hence the opening brace is not balanced
\lyrics { twinkle}
Similarly, a period following a alphabetic sequence, is included in the resulting string. As a
consequence, spaces must be inserted around property commands
\override Score . LyricText #’font-shape = #’italic
Any _ character which appears in an unquoted word is converted to a space. This provides
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 written with the above rules
\lyrics { He said: "\"Let" my peo ple "go\"" }
However, at least for english texts, you should use
\lyrics { He said: ‘‘Let my peo ple go’’ }
to get the correct shape of the starting and ending quote.
Centered hyphens are entered as ‘--’ between syllables. The hyphen will have variable length
depending on the space between the syllables and it will be centered between the syllables.
When a lyric is sung over many notes (this is called a melisma), this is indicated with a
horizontal line centered between a syllable and the next one. Such a line is called an extender
line, and it is entered as __.
See also
Program reference: events LyricEvent, HyphenEvent, and ExtenderEvent. Objects
LyricHyphen, LyricExtender and LyricText.
Examples: ‘input/test/lyric-hyphen-retain.ly’.
Bugs
The definition of lyrics mode is too complex.
> >>>> =
3
4
la di daah
In addition, notes are considered a melisma if they are manually beamed, and automatic
beaming (see Section 3.5.2 [Setting automatic beam behavior], page 48) is switched off. The
criteria for deciding melismata can be tuned with the property melismaBusyProperties. See
Melisma_translator in the program reference for more information.
When multiple stanzas are put on the same melody, it can happen that two stanzas have
melismata in different locations. This can be remedied by switching off melismata for one
Lyrics. This is achieved by setting the ignoreMelismata property to #t. An example is shown
in ‘input/regression/lyric-combine-new.ly’.
A complete example of a SATB score setup is in the file ‘input/template/satb.ly’.
Predefined commands
\melisma, \melismaEnd
See also
Program reference: Music expressions: LyricCombineMusic, Contexts: Lyrics, Melisma_
translator.
Examples: ‘input/template/satb.ly’, ‘input/regression/lyric-combine-new.ly’.
Chapter 3: Notation manual 74
Bugs
Melismata are not detected automatically, and extender lines must be inserted by hand.
For proper processing of extender lines, the Lyrics and Voice should be linked. This can be
achieved either by using \lyricsto or by setting corresponding names for both contexts. The
latter is explained in Section 3.11.3 [More stanzas], page 74.
3
4
= > = > =:
Bert Hi, my name is Bert.
Ernie Ooooo, ché ri, je t’aime.
Stanza numbers can be added by setting stanza, e.g.
<<
\context Voice = duet {
\time 3/4 g2 e4 a2 f4 g2. }
\lyrics \lyricsto "duet" \new Lyrics {
Chapter 3: Notation manual 75
3
4 = > = > =:
1. Hi, my name is Bert.
This example also demonstrates how names of the singers can be added using vocalName
analogous to instrument annotations for staves. A short version may be entered as vocNam.
To make empty spaces in lyrics, use \skip.
See also
Program reference: Layout objects LyricText and VocalName. Music expressions LyricEvent.
Bugs
Input for lyrics introduces a syntactical ambiguity
foo = bar
is interpreted as assigning a string identifier \foo such that it contains "bar". However, it could
also be interpreted as making or a music identifier \foo containing the syllable ‘bar’. The force
the latter interpretation, use
foo = \lyrics bar4
3.11.4 Ambitus
The term ambitus denotes a range of pitches for a given voice in a part of music. It also may
denote the pitch range that a musical instrument is capable of playing. Ambituses are printed
on vocal parts, so singers can easily determine if it meets his or her capabilities.
It denoted at the beginning of a piece near the initial clef. The range is graphically specified
by two note heads, that represent the minimum and maximum pitch. To print such ambituses,
add the Ambitus_engraver to the Voice context, for example,
\paper {
\context {
\VoiceContext
\consists Ambitus_engraver
}
}
> =
3> >
This results in the following output
/> /=
If you have multiple voices in a single staff, and you want a single ambitus per staff rather
than per each voice, add the Ambitus_engraver to the Staff context rather than to the Voice
context.
Chapter 3: Notation manual 76
It is possible to tune individual ambituses for multiple voices on a single staff, for example
by erasing or shifting them horizontally. An example is in ‘input/test/ambitus-mixed.ly’.
See also
Program reference: Ambitus.
Examples: ‘input/regression/ambitus.ly’, ‘input/test/ambitus-mixed.ly’.
Bugs
There is no collision handling in the case of multiple per-voice ambitus.
3.12 Tablatures
Tablature notation is used for notating music for plucked string instruments. It notates pitches
not by using note heads, but by indicating on which string and fret a note must be played.
LilyPond offers limited support for tablature.
0 0
1 1
2 2
2
0
When no string is specified, the first string that does not give a fret number less than
minimumFret is selected. The default value for minimumFret is 0
e16 fis gis a b4
\set TabStaff.minimumFret = #8
e16 fis gis a b4
////
> >
>>>> > >> >
8
1 2
0
2 4 9
9 11 12
12
See also
Program reference: TabStaff, TabVoice, and StringNumberEvent.
Bugs
Chords are not handled in a special way, and hence the automatic string selector may easily
select the same string to two notes in a chord.
Chapter 3: Notation manual 77
\notes {
a,4 c’ a e’ e c’ a e’
}
>>
0
5 2 9
2
5 2 9
Bugs
No guitar special effects have been implemented.
See also
Program reference: Tab_note_heads_engraver.
\score {
<< \context ChordNames \twoWays
3
\context Voice \twoWays >> }
3 <<<
Fsus4 Fsus4 F6/sus4
3 <<<
C B /F C
<<
<
<< 3 <<< 3 <<<
<
This example also shows that the chord printing routines do not try to be intelligent. The
last chord (f bes d) is not interpreted as an inversion.
Chapter 3: Notation manual 78
< <<
<<< / <<< <<
The first number following the root is taken to be the ‘type’ of the chord, thirds are added
to the root until it reaches the specified number
\chords { c:3 c:5 c:6 c:7 c:8 c:9 c:10 c:11 }
>
> 3 >> >
> > >
Modifiers can be used to change pitches. The following modifiers are supported
m is the minor chord. This modifier lowers the 3rd and (if present) the 7th step.
Chapter 3: Notation manual 79
dim is the diminished chord. This modifier lowers the 3rd, 5th and (if present) the 7th
step.
aug is the augmented chord. This modifier raises the 5th step.
maj is the major 7th chord. This modifier raises the 7th step if present.
sus is the suspended 4th or 2nd. This modifier removes the 3rd step. Append either 2
or 4 to add the 2nd or 4th step to the chord.
Modifiers can be mixed with additions
\chords { c:sus4 c:7sus4 c:dim7 c:m6 }
Bugs
Each step can only be present in a chord once. The following simply produces the augmented
chord, since 5+ is interpreted last
\chords { c:5.5-.5+ }
/ >>>
Chapter 3: Notation manual 80
3 <<< 3 <<<
/ <<<
Cm D
3
3 <<< 3 <<<
The default chord name layout is a system for Jazz music, proposed by Klaus Ignatzek (see
Appendix B [Literature list], page 182). It can be tuned through the following properties
chordNameExceptions
This is a list that contains the chords that have special formatting. For an example,
see ‘input/regression/chord-name-exceptions.ly’.
Chapter 3: Notation manual 81
majorSevenSymbol
This property contains the markup object used for the 7th step, when it is ma-
jor. Predefined options are whiteTriangleMarkup and blackTriangleMarkup. See
‘input/regression/chord-name-major7.ly’ for an example.
chordNameSeparator
Different parts of a chord name are normally separated by a slash. By setting
chordNameSeparator, you can specify other separators, e.g.
\context ChordNames \chords {
c:7sus4
\set chordNameSeparator
= \markup { \typewriter "|" }
c:7sus4
}
C7/sus4 C7|sus4
chordRootNamer
The root of a chord is usually printed as a letter with an optional alteration. The
transformation from pitch to letter is done by this function. Special note names (for
example, the German “H” for a B-chord) can be produced by storing a new function
in this property.
The predefined variables \germanChords, \semiGermanChords set these variables.
chordNoteNamer
The default is to print single pitch, e.g. the bass note, using the chordRootNamer.
The chordNoteNamer property can be set to a specialized function to change this
behavior. For example, the base can be printed in lower case.
There are also two other chord name schemes implemented: an alternate Jazz chord notation,
and a systematic scheme called Banter chords. The alternate jazz notation is also shown on the
chart in Section A.1 [Chord name chart], page 158. Turning on these styles is described in the
input file ‘input/test/chord-names-jazz.ly’.
Predefined commands
\germanChords, \semiGermanChords.
See also
Examples: ‘input/regression/chord-name-major7.ly’, ‘input/regression/chord-name-exceptions.ly’,
‘input/test/chord-names-jazz.ly’, ‘input/test/chord-names-german.ly’.
Init files: ‘scm/chords-ignatzek.scm’, and ‘scm/chord-entry.scm’.
Bugs
Chord names are determined solely from the list of pitches. Chord inversions are not identified,
and neither are added bass notes. This may result in strange chord names when chords are
entered with the < .. > syntax.
• The group is started with a brace at the left, and bar lines are connected. This is done with
the GrandStaff context.
• The group is started with a bracket, and bar lines are connected. This is done with the
StaffGroup context
• The group is started with a vertical line. Bar lines are not connected. This is the default
for the score.
L<
<
In the case of a line break, marks must also be printed at the end of the line, and not at the
beginning. Use the following to force that behavior
\override Score.RehearsalMark
#’break-visibility = #begin-of-line-invisible
See also
Program reference: MarkEvent, RehearsalMark.
Init files: ‘scm/translation-functions.scm’ contains the definition of format-mark-
numbers and format-mark-letters. They can be used as inspiration for other formatting
functions.
Examples: ‘input/regression/rehearsal-mark-letter.ly’, ‘input/regression/rehearsal-mark-numb
Bugs
Bar numbers can collide with the StaffGroup bracket, if there is one at the top. To solve this,
the padding property of BarNumber can be used to position the number correctly.
<
Ploink
Chapter 3: Notation manual 84
2
<
Plk
You can also use markup texts to construct more complicated instrument names, for example
\notes {
\set Staff.instrument = \markup {
\column < "Clarinetti" { "in B"
\smaller \flat } > }
{ c’’1 }
}
Clarinetti
in B 3 <
See also
Program reference: InstrumentName.
Bugs
When you put a name on a grand staff or piano staff the width of the brace is not taken into
account. You must add extra spaces to the end of the name to avoid a collision.
3.14.5 Transpose
A music expression can be transposed with \transpose. The syntax is
\transpose from to musicexpr
This means that musicexpr is transposed by the interval between the pitches from and to:
any note with pitch from is changed to to.
For example, consider a piece written in the key of D major. If this piece is a little too low
for its performer, it can be transposed up to E major with
\transpose d e ...
Consider a part written for violin (a C instrument). If this part is to be played on the A
clarinet, the following transposition will produce the appropriate part
\transpose a c ...
Since from and to are pitches, so \transpose must be inside a \notes section. \transpose
distinguishes between enharmonic pitches: both \transpose c cis or \transpose c des will
transpose up half a tone. The first version will print sharps and the second version will print
flats
mus =\notes { \key d \major cis d fis g }
\score { \notes \context Staff {
\clef "F" \mus
\clef "G"
\transpose c g’ \mus
\transpose c f’ \mus
}}
See also
Program reference: TransposedMusic, and UntransposableMusic.
Bugs
If you want to use both \transpose and \relative, you must put \transpose outside of
\relative, since \relative will have no effect music that appears inside a \transpose.
! ! ! !
17 4
&
The 1 in R1 is similar to the duration notation used for notes. Hence, for time signatures
other than 4/4, you must enter other durations. This can be done with augmentation dots or
fractions
\set Score.skipBars = ##t
\time 3/4
R2. | R2.*2
\time 13/8
R1*13/8
R1*13/8*12
! !
2 12
3 ' 13
4 8
An R spanning a single measure is printed as either a whole rest or a breve, centered in the
measure regardless of the time signature.
Texts can be added to multi-measure rests by using the note-markup syntax (see Section 4.5
[Text markup], page 123). In this case, the number is replaced. If you need both texts and
the number, you must add the number by hand. A variable (\fermataMarkup) is provided for
adding fermatas
Chapter 3: Notation manual 86
\time 3/4
R2._\markup { "Ad lib" }
R2.^\fermataMarkup
L
! !
3
4
Ad lib
If you want to have a text on the left end of a multi-measure rest, attach the text to a
zero-length skip note, i.e.
s1*0^"Allegro"
R1*4
See also
Program reference: MultiMeasureRestEvent, MultiMeasureTextEvent,
MultiMeasureRestMusicGroup, and MultiMeasureRest.
The layout object MultiMeasureRestNumber is for the default number, and
MultiMeasureRestText for user specified texts.
Bugs
It is not possible to use fingerings (e.g. R1-4) to put numbers over multi-measure rests.
There is no way to automatically condense multiple rests into a single multimeasure rest.
Multi measure rests do not take part in rest collisions.
Be careful when entering multimeasure rests followed by whole notes. The following will
enter two notes lasting four measures each
R1*4 cis cis
When skipBars is set, the result will look OK, but the bar numbering will be off.
The first g appears only once, although it was specified twice (once in each part). Stem, slur
and tie directions are set automatically, depending whether there is a solo or unisono. The first
part (with context called one) always gets up stems, and ‘solo’, while the second (called two)
always gets down stems and ‘Solo II’.
If you just want the merging parts, and not the textual markings, you may set the property
soloADue to false
\new Staff <<
\set Staff.soloADue = ##f
\partcombine
\relative g’ { g a( b) r }
\relative g’ { g r4 r f }
>>
See also
Program reference: PartCombineMusic, SoloOneEvent, and SoloTwoEvent, and UnisonoEvent.
Bugs
In soloADue mode, when the two voices play the same notes on and off, the part combiner may
typeset a2 more than once in a measure.
\partcombine cannot be inside \times.
\partcombine cannot be inside \relative.
Internally, the \partcombine interprets both arguments as Voices named one and two,
and then decides when the parts can be combined. Consequently, if the arguments switch to
differently named Voice contexts, the events in those will be ignored.
}
}
<
2
The first page shows all staves in full. If empty staves should be removed from the first page
too, set remove-first to false in RemoveEmptyVerticalGroup.
Another application is making ossia sections, i.e. alternative melodies on a separate piece of
staff, with help of a Frenched staff. See ‘input/test/ossia.ly’ for an example.
}
would yield
!!
< <
4
both >
> =
cue
!
< <
4
part >
> =
cue
!
score < <
The argument of the \tag command should be a symbol, or a list of symbols, for example,
\tag #’(original-part transposed-part) ...
See also
Examples: ‘input/regression/tag-filter.ly’.
Here, name is an identifying string. The music is any kind of music. This is an example of
\addquote
\addquote clarinet \notes\relative c’ {
f4 fis g gis
}
During a part, a piece of music can be quoted with the \quote command.
\quote clarinet 2.
This would cite 3 quarter notes (a dotted half note) of the previously added clarinet voice.
Quotations take into account the transposition both source and target instruments, if they
are specified using the \transposition command.
\addquote clarinet \notes\relative c’ {
\transposition bes
f4 fis g gis
}
\score {
\notes {
e’8 f’8 \quote clarinet 2
} }
Chapter 3: Notation manual 90
>>> >
Bugs
Only the contents of the first Voice occurring in an \addquote command will be considered for
quotation, so music can not contain \new and \context Voice statements that would switch to
a different Voice.
See also
In this manual: Section 3.14.6 [Instrument transpositions], page 85.
Examples: ‘input/regression/quote.ly’ ‘input/regression/quote-transposition.ly’
Program reference: QuoteMusic.
Bugs
Ligatures need special spacing that has not yet been implemented. As a result, there is too
much space between ligatures most of the time, and line breaking often is unsatisfactory. Also,
lyrics do not correctly align with ligatures.
Accidentals must not be printed within a ligature, but instead need to be collected and
printed in front of it.
Augmentum dots within ligatures are not handled correctly.
3 4 5
8
7 8 8 8
When typesetting a piece in Gregorian Chant notation, a Gregorian ligature engraver will
automatically select the proper note heads, such there is no need to explicitly set the note head
style. Still, the note head style can be set e.g. to vaticana_punctum to produce punctum
neumes. Similarly, a mensural ligature engraver is used to automatically assemble mensural
ligatures. See Section 3.15.9 [Ligatures], page 97 for how ligature engravers work.
See also
In this manual Section 3.9.3 [Percussion staves], page 65 use note head styles of their own that
are frequently used in contemporary music notation.
Examples: ‘input/regression/note-head-style.ly’ gives an overview over all available
note head styles.
See also
In this manual: Section 3.1.2 [Pitches], page 31, Section 3.1.3 [Chromatic alterations], page 32
and Section 3.6 [Accidentals], page 49 give a general introduction into the use of accidentals.
Section 3.3.2 [Key signature], page 40 gives a general introduction into the use of key signatures.
Program reference: KeySignature.
Examples: ‘input/test/ancient-accidentals.ly’.
There are no 32th and 64th rests specifically for the mensural or neo-mensural style. Instead,
the rests from the default style will be taken. See ‘input/test/rests.ly’ for a chart of all
rests.
There are no rests in Gregorian Chant notation; instead, it uses Section 3.15.8 [Divisiones],
page 96.
See also
In this manual: Section 3.1.5 [Rests], page 33 gives a general introduction into the use of rests.
clefs-petrucci_c1
clefs-petrucci_c2
petrucci style mensural C
clefs, for use on different
petrucci_c1 petrucci_
c2 petrucci_c3
j >
clefs-petrucci_c3 staff lines (the examples petrucci_c4
clefs-petrucci_c4 shows the 2nd staff line C petrucci_c5
clefs-petrucci_c5 clef).
>
clefs-petrucci_f petrucci style mensural F petrucci_f t
clef
x
>
clefs-petrucci_g petrucci style mensural G petrucci_g
clef
Chapter 3: Notation manual 93
>
clefs-mensural_f historic style mensural F mensural_f v
clef
z
>
clefs-mensural_g historic style mensural G mensural_g
clef
>
clefs-vaticana_fa Editio Vaticana style fa vaticana_fa1, `
clef vaticana_fa2
>
clefs-medicaea_fa Editio Medicaea style fa medicaea_fa1, d
clef medicaea_fa2
>
clefs-hufnagel_fa historic style hufnagel fa hufnagel_fa1, ~
clef hufnagel_fa2
>
clefs-hufnagel_do_fa historic style hufnagel hufnagel_do_fa
combined do/fa clef
Modern style means “as is typeset in contemporary editions of transcribed mensural music”.
Chapter 3: Notation manual 94
Petrucci style means “inspired by printings published by the famous engraver Petrucci (1466-
1539)”.
Historic style means “as was typeset or written in historic editions (other than those of
Petrucci)”.
Editio XXX style means “as is/was printed in Editio XXX”.
Petrucci used C clefs with differently balanced left-side vertical beams, depending on which
staff line it is printed.
See also
In this manual: see Section 3.3.3 [Clef], page 40.
Bugs
The mensural g clef is mapped to the Petrucci g clef, until a new mensural g clef is implemented.
¡ ¡ § §
¡ ? ? ? § ? ? ? ???
¡ §
? ? ?
? ? ? ? ? ? ? ? ????
2
¤ ¤ ¤ ¤ ª ª ª ª
° ° ° °
Note that the innermost flare of each mensural flag always is vertically aligned with a staff
line. If you do not like this behavior, you can set the adjust-if-on-staffline property of
grob Stem to ##f. Then, the vertical position of the end of each flare is different between notes
on staff lines and notes between staff lines
¡ ¡ § §
¡ ¡ § §
? ? ? ? ? ? ? ? ????
? ? ? ? ? ? ? ? ? ???
2
¤ ¤ ¤ ¤ ª ª ª ª
° ° ° °
There is no particular flag style for neo-mensural notation. Hence, when typesetting e.g. the
incipit of a transcribed piece of mensural music, the default flag style should be used. There are
no flags in Gregorian Chant notation.
Chapter 3: Notation manual 95
Ã Ä Æ É
\time 4/4 \time 2/2 \time 6/4 \time 6/8
Å È Ç Ê
\time 3/2 \time 3/4 \time 9/4 \time 9/8
Ë Í
\time 4/8 \time 2/4
Use the style property of grob TimeSignature to select ancient time signatures. Supported
styles are neo_mensural and mensural. The above table uses the neo_mensural style. This
style is appropriate e.g. for the incipit of transcriptions of mensural pieces. The mensural style
mimics the look of historical printings of the 16th century.
‘input/test/time.ly’ gives an overview over all available ancient and modern styles.
See also
Program reference: Section 3.3.5 [Time signature], page 42 gives a general introduction into the
use of time signatures.
Bugs
Mensural signature glyphs are mapped to time fractions in a hard-wired way. This mapping
is sensible, but still arbitrary: given a mensural time signature, the time fraction represents a
modern meter that usually will be a good choice when transcribing a mensural piece of music.
For a particular piece of mensural music, however, the mapping may be unsatisfactory. In
particular, the mapping assumes a fixed transcription of durations (e.g. brevis = half note in
2/2, i.e. 4:1). Some glyphs (such as the alternate glyph for 6/8 meter) are not at all accessible
through the \time command.
Mensural time signatures are supported typographically, but not yet musically. The internal
representation of durations is based on a purely binary system; a ternary division such as 1
brevis = 3 semibrevis (tempus perfectum) or 1 semibrevis = 3 minima (cum prolatione maiori)
is not correctly handled: event times in ternary modes will be badly computed, resulting e.g. in
horizontally misaligned note heads, and bar checks are likely to erroneously fail.
The syntax and semantics of the \time command for mensural music is subject to change.
3.15.7 Custodes
A custos (plural: custodes; Latin word for ‘guard’) is a symbol that appears at the end of a
staff. It anticipates the pitch of the first note(s) of the following line and thus helps the player
or singer to manage line breaks during performance, thus enhancing readability of a score.
Chapter 3: Notation manual 96
Custodes were frequently used in music notation until the 17th century. Nowadays, they
have survived only in a few particular forms of musical notation such as contemporary editions
of Gregorian chant like the editio vaticana. There are different custos glyphs used in different
flavors of notational style.
For typesetting custodes, just put a Custos_engraver into the Staff context when declaring
the \paper block, as shown in the following example
\paper {
\context {
\StaffContext
\consists Custos_engraver
Custos \override #’style = #’mensural
}
}
The result looks like this
<
<
The custos glyph is selected by the style property. The styles supported are vaticana,
medicaea, hufnagel and mensural. They are demonstrated in the following fragment
vaticana medicaea hufnagel mensural
See also
Program reference: Custos.
Examples: ‘input/regression/custos.ly’.
3.15.8 Divisiones
A divisio (plural: divisiones; Latin word for ‘division’) is a staff context symbol that is used to
structure Gregorian music into phrases and sections. The musical meaning of divisio minima,
divisio maior and divisio maxima can be characterized as short, medium and long pause, some-
what like Section 3.7.3 [Breath marks], page 52. The finalis sign not only marks the end of a
chant, but is also frequently used within a single antiphonal/responsorial chant to mark the end
of each section.
To use divisiones, include the file gregorian-init.ly. It contains definitions that you can
apply by just inserting \divisioMinima, \divisioMaior, \divisioMaxima, and \finalis at
proper places in the input. Some editions use virgula or caesura instead of divisio minima.
Therefore, gregorian-init.ly also defines \virgula and \caesura
divisio minima divisio maior
> > > > > > > > > > > >
Blah blub, blah blam. Blah blub, blah blam.
Chapter 3: Notation manual 97
> > > > > > > > > > > > >
Blah blub, blah blam. Blah blub, blah blam. Blah
virgula caesura
Predefined commands
\virgula, \caesura, \divisioMinima, \divisioMaior, \divisioMaxima, \finalis.
See also
In this manual: Section 3.7.3 [Breath marks], page 52.
Program reference: BreathingSign, BreathingSignEvent.
Examples: ‘input/test/divisiones.ly’.
3.15.9 Ligatures
A ligature is a coherent graphical symbol that represents at least two distinct notes. Ligatures
originally appeared in the manuscripts of Gregorian chant notation roughly since the 9th century
to denote ascending or descending sequences of notes.
Ligatures are entered by enclosing them in \[ and \]. Some ligature styles may need addi-
tional input syntax specific for this particular type of ligature. By default, the LigatureBracket
engraver just puts a square bracket above the ligature
\score {
\notes \transpose c c’ {
\[ g c a f d’ \]
a g f
\[ e f a g \]
}
}
> >
> > > > > > > > >
>
To select a specific style of ligatures, a proper ligature engraver has to be added to the Voice
context, as explained in the following subsections. Only white mensural ligatures are supported
with certain limitations.
Chapter 3: Notation manual 98
;
x à 9<
Without replacing Ligature_bracket_engraver with Mensural_ligature_engraver, the
same music transcribes to the following
3
x à 3 4 4 5 5 4 3
4
Bugs
The implementation is experimental; it may output strange warnings or even crash in some cases
or produce weird results on more complex ligatures.
a b c d e f
1. Punctum @ D Q R S P
g
2. Virga @
h i
3. Apostropha vel Stropha T U
j
4. Oriscus V
k l m n
5. Clivis vel Flexa @@ @R @Q NL
o p q r
6. Podatus vel Pes GE @R @Q JI
s t
7. Pes Quassus
V@ VR
u v
8. Quilisma Pes GO OR
w x
9. Podatus Initio Debilis
L@ LR
y z A
10. Torculus
@@@ @@R @ML
B C D
11. Torculus Initio Debilis
L@@ L@R LML
E F G
12. Porrectus G R I
Chapter 3: Notation manual 100
H I J
13. Climacus @ DD @ DS @ DP
K L M
14. Scandicus
HF@ @@R @KI
N O
15. Salicus
@V@ @VR
P
16. Trigonus T TT
Unlike most other neumes notation systems, the input language for neumes does not neces-
sarily reflect directly the typographical appearance, but is designed to solely focuse on musical
meaning. For example, \[ a \pes b \flexa g \] produces a Torculus consisting of three Punc-
tum heads, while \[ a \flexa g \pes b \] produces a Porrectus with a curved flexa shape and
only a single Punctum head. There is no command to explicitly typeset the curved flexa shape;
the decision of when to typeset a curved flexa shape is purely taken from the musical input.
The idea of this approach is to separate the musical aspects of the input from the notation style
of the output. This way, the same input can be reused to typeset the same music in a different
style of Gregorian chant notation.
The following table shows the code fragments that produce the ligatures in the above neumes
table. The letter in the first column in each line of the below table indicates to which ligature in
the above table it refers. The second column gives the name of the ligature. The third column
shows the code fragment that produces this ligature, using g, a and b as example pitches.
Predefined commands
The following head prefixes are supported
Head prefixes can be accumulated, though restrictions apply. For example, either
\descendens or \ascendens can be applied to a head, but not both to the same head.
Two adjacent heads can be tied together with the \pes and \flexa infix commands for a
rising and falling line of melody, respectively.
\include "gregorian-init.ly"
\score {
<<
\context VaticanaVoice = "cantus" {
\override Score.BarNumber #’transparent = ##t
\notes {
\[ c’\melisma c’ \flexa a \]
\[ a \flexa \deminutum g\melismaEnd \]
f \divisioMinima
\[ f\melisma \pes a c’ c’ \pes d’\melismaEnd \]
c’ \divisioMinima \break
\[ c’\melisma c’ \flexa a \]
\[ a \flexa \deminutum g\melismaEnd \] f \divisioMinima
}
}
\lyricsto "cantus" \new Lyrics \lyrics {
San- ctus, San- ctus, San- ctus
}
>>
}
^ @ @@ NL @FH @
@ EG
San- ctus, San- ctus,
Chapter 3: Notation manual 103
^ @ @@ NL @
San- ctus
6/6 7 6
5
6
The support for figured bass consists of two parts: there is an input mode, introduced
by \figures, where you can enter bass figures as numbers, and there is a context called
FiguredBass that takes care of making BassFigure objects.
In figures input mode, a group of bass figures is delimited by < and >. The duration is entered
after the >>
<4 6>
6
4
Accidentals are added when you append -, ! and + to the numbers
<4- 6+ 7!>
7 2
6 /
4 3
Spaces or dashes may be inserted by using _. Brackets are introduced with [ and ]
< [4 6] 8 [_! 12]>
2
12
8
6
4
Although the support for figured bass may superficially resemble chord support, it works
much simpler. The \figures mode simply stores the numbers , and FiguredBass context
prints them as entered. There is no conversion to pitches, and no realizations of the bass are
played in the MIDI file.
Internally, the code produces markup texts. You can use any of the markup text properties to
override formatting. For example, the vertical spacing of the figures may be set with baseline-
skip.
See also
Program reference: BassFigureEvent music, BassFigure object, and FiguredBass context.
Bugs
Slash notation for alterations is not supported.
Chapter 3: Notation manual 104
3.16.1 Clusters
A cluster indicates a continuous range of pitches to be played. They can be denoted as the
envelope of a set of notes. They are entered by applying the function notes-to-clusters to a
sequence of chords, e.g.
\apply #notes-to-clusters { <c e > <b f’> }
The following example (from ‘input/regression/cluster.ly’) shows what the result looks
like
Ordinary notes and clusters can be put together in the same staff, even simultaneously. In
such a case no attempt is made to automatically avoid collisions between ordinary notes and
clusters.
See also
Program reference: ClusterSpanner, ClusterSpannerBeacon, Cluster_spanner_engraver,
and ClusterNoteEvent.
Examples: ‘input/regression/cluster.ly’.
Bugs
Music expressions like << { g8 e8 } a4 >> are not printed accurately. Use <g a>8 <e a>8 instead.
3.16.2 Fermatas
Contemporary music notation frequently uses special fermata symbols to indicate fermatas of
differing lengths. The following fermatas are supported
N L P R
> ( > ( > ( > (
See Section 3.7.7 [Articulations], page 54 for general instructions how to apply scripts such
as fermatas to a \notes{} block.
>
heads, or tails?
The function add-balloon-text takes the name of a grob, the label to print and where to put
the label relative to the object. In the above example, the text “heads or tails?” ends 3 spaces
below the ‘balloon.’
See also
Program reference: text-balloon-interface.
Examples: ‘input/regression/balloon.ly’.
E
F
G
The command \setEasyHeads overrides settings for the NoteHead object. To make the letters
readable, it has to be printed in a large font size. To print with a larger font, see Section 4.6.1
[Setting global staff size], page 128.
If you view the result with Xdvi, staff lines may show through the letters. Printing the
PostScript file obtained does produce the correct result.
Predefined commands
\setEasyHeads
3.18 Sound
Entered music can also be converted to MIDI output. The performance is intended for proof-
hearing the music for errors.
Chapter 3: Notation manual 106
Ties, dynamics and tempo changes are interpreted. Dynamic marks, crescendi and de-
crescendi translate into MIDI volume levels. Dynamic marks translate to a fixed fraction of the
available MIDI volume range, crescendi and decrescendi make the volume vary linearly between
their two extremities. The fractions can be adjusted by dynamicAbsoluteVolumeFunction in
Voice context. For each type of MIDI instrument, a volume range can be defined. This gives
a basic equalizer control, which can enhance the quality of the MIDI output remarkably. The
equalizer can be controlled by setting instrumentEqualizer.
Bugs
Many musically interesting effects, such as swing, articulation, slurring, etc., are not translated
to MIDI.
The MIDI output allocates a channel for each Staff, and one for global settings. Hence, the
MIDI file should not have more than 15 staves (or 14 if you do not use drums). Other staves
will remain silent.
Bugs
If the selected string does not exactly match, the default is used, which is the Grand Piano.
Chapter 4: Changing defaults 107
4 Changing defaults
The purpose of LilyPond’s design is to provide the finest output quality as a default. Never-
theless, it may happen that you need to change this default layout. The layout is controlled
through a large number of proverbial “knobs and switches.” This chapter does not list each and
every knob. Rather, it outlines what groups of controls are available and explains how to lookup
which knob to use for a certain effect.
The controls available for tuning are described in a separate document, the Program
reference manual. This manual lists all different variables, functions and options
available in LilyPond. It is written as a HTML document, which is available on-line
(http://lilypond.org/doc/Documentation/user/out-www/lilypond-internals/), but is
also included with the LilyPond documentation package.
There are three areas where the default settings may be changed:
• Output: changing the appearance of individual objects. For example, changing stem direc-
tions, or the location of subscripts.
• Context: changing aspects of the translation from music events to notation. For example,
giving each staff a separate time signature.
• Global layout: changing the appearance of the spacing, line breaks and page dimensions.
Then, there are separate systems for typesetting text (like ritardando) and selecting different
fonts. This chapter also discusses these.
Internally, LilyPond uses Scheme (a LISP dialect) to provide infrastructure. Overriding
layout decisions in effect accesses the program internals, so it is necessary to learn a (very small)
subset of Scheme. That is why this chapter starts with a short tutorial on entering numbers,
lists, strings and symbols in Scheme.
Quotation marks and newlines can also be added with so-called escape sequences.
The string a said "b" is entered as
1
If you want to know more about Scheme, see http://www.schemers.org.
Chapter 4: Changing defaults 108
2
In Scheme terminology, the pair is called cons, and its two elements are called car and cdr respectively.
Chapter 4: Changing defaults 109
/> =: >
The input is rather sparse, but in the output, bar lines, accidentals, clef, and time signature
are added. LilyPond interprets the input. During this step, the musical information is inspected
in time order, similar to reading a score from left to right. While reading, the program remembers
where measure boundaries are, and what pitches need explicit accidentals. This information can
be presented on several levels. For example, the effect of an accidental is limited to a single
stave, while a bar line must be synchronized across the entire score.
Within LilyPond, these rules and bits of information are grouped in so-called Contexts.
Examples of context are Voice, Staff, and Score. They are hierarchical, for example, a Staff
can contain many Voices, and a Score can contain many Staff contexts.
Each context has the responsibility for enforcing some notation rules, creating some notation
objects and maintaining the associated properties. So, the synchronization of bar lines is handled
at Score context. The Voice may introduce an accidentals and then the Staff context maintains
the rule to show or suppress the accidental for the remainder of the measure.
For simple scores, contexts are created implicitly, and you need not be aware of them. For
larger pieces, such as piano music, they must be created explicitly to make sure that you get as
many staves as you need, and that they are in the correct order. For typesetting pieces with
specialized notation, it can be useful to modify existing or define new contexts.
Full description of all available contexts is in the program reference, see Translation ⇒
Context.
Chapter 4: Changing defaults 110
> >
> >
Like \new, the \context command also directs a music expression to a context object, but
gives the context an extra name. The syntax is
\context type = id music
This form will search for an existing context of type type called id. If that context does not
exist yet, it is created. This is useful if the context is referred to later on. For example, when
setting lyrics the melody is in a named context
\context Voice = "tenor" music
so the texts can be properly aligned to its notes,
\new Lyrics \lyricsto "tenor" lyrics
Another possibility is funneling two different music expressions into one context. In the
following example, articulations and notes are entered separately,
music = \notes { c4 c4 }
arts = \notes { s4-. s4-> }
They are combined by sending both to the same Voice context,
<< \new Staff \context Voice = "A" \music
\context Voice = "A" \arts
>>
V >U
>
The third command for creating contexts is
Chapter 4: Changing defaults 111
! !
2
'
This command skips measures that have no notes. The result is that multi rests are con-
densed. The value assigned is a Scheme object. In this case, it is #t, the boolean True value.
If the context argument is left out, then the current bottom-most context (typically
ChordNames, Voice, or Lyrics) is used. In this example,
c8 c c c
\set autoBeaming = ##f
c8 c c c
Settings that should only apply to a single time-step can be entered easily with \once, for
example in
c4
\once \set fontSize = #4.7
c4
c4
A full description of all available context properties is in the program reference, see Transla-
tion ⇒ Tunable context properties.
For a full a description of each plug-in, see Program reference ⇒ Translation ⇒ Engravers.
Every context described in Program reference ⇒ Translation ⇒ Context. lists the engravers
used for that context.
It can be useful to shuffle around these plug-ins. This is done by starting a new context, with
\new or \context, and modifying it like this,
where the . . . should be the name of an engraver. Here is a simple example which removes
Time_signature_engraver and Clef_engraver from a Staff context,
= =
= =
In the second stave there are no time signature or clef symbols. This is a rather crude method
of making objects disappear since it will affect the entire staff. The spacing will be adversely
influenced too. A more sophisticated methods of blanking objects is shown in Section 4.3.1
[Common tweaks], page 117.
The next example shows a practical application. Bar lines and time signatures are normally
synchronized across the score. This is done by the Timing_engraver. This plug-in keeps an
administration of time signature, location within the measure, etc. By moving the Timing_
engraver engraver from Score to Staff context, we can have a score where each staff has its own
time signature.
\new Score \with {
\remove "Timing_engraver"
} <<
\new Staff \with {
\consists "Timing_engraver"
} {
\time 3/4
c4 c c c c c
}
\new Staff \with {
\consists "Timing_engraver"
} {
\time 2/4
c4 c c c c c
}
>>
3
4
> > > > > >
2
4 > > > > > >
4.2.4 Layout tunings within contexts
Each context is responsible for creating certain types of graphical objects. The settings used for
printing these objects are also stored by context. By changing these settings, the appearance of
objects can be altered.
The syntax for this is
\override context.name #’property = #value
Here name is the name of a graphical object, like Stem or NoteHead, and property is an
internal variable of the formatting system (‘grob property’ or ‘layout property’). The latter is
a symbol, so it must be quoted. The subsection Section 4.3.2 [Constructing a tweak], page 118
Chapter 4: Changing defaults 114
explains what to fill in for name, property, and value. Here we only discuss functionality of this
command.
The command
\override Staff.Stem #’thickness = #4.0
makes stems thicker (the default is 1.3, with staff line thickness as a unit). Since the command
specifies Staff as context, it only applies to the current staff. Other staves will keep their
normal appearance. Here we see the command in action:
c4
\override Staff.Stem #’thickness = #4.0
c4
c4
c4
>>>>
the slur is fatter and the beam is not. This is because the command for Beam comes after the
Beam is started. Therefore it has no effect.
Analogous to \unset, the \revert command for a context undoes a \override command;
like with \unset, it only affects settings that were made in the same context. In other words,
the \revert in the next example does not do anything.
\override Voice.Stem #’thickness = #4.0
\revert Staff.Stem #’thickness
Chapter 4: Changing defaults 115
See also
Internals: OverrideProperty, RevertProperty, PropertySet, All-backend-properties, and
All-layout-objects.
Bugs
The back-end is not very strict in type-checking object properties. Cyclic references in Scheme
values for properties can cause hangs or crashes, or both.
Bugs
It is not possible to collect changes in a variable, and apply them to one \context definition by
referring to that variable.
These settings are again done within a \context block inside a \paper block,
\paper {
\context {
...
}
}
In the following discussion, the example input shown should go on the . . . in the previous
fragment.
First, name the context gets a name. Instead of Voice it will be called ImproVoice,
\name ImproVoice
Since it is similar to the Voice, we want commands that work on (existing) Voices to remain
working. This is achieved by giving the new context an alias Voice,
\alias Voice
The context will print notes, and instructive texts
\consists Note_heads_engraver
\consists Text_engraver
but only on the center line,
\consists Pitch_squash_engraver
squashedPosition = #0
The Pitch_squash_engraver modifies note heads (created by Note_heads_engraver) and
sets their vertical position to the value of squashedPosition, in this case 0, the center line.
The notes look like a slash, without a stem,
\override NoteHead #’style = #’slash
\override Stem #’transparent = ##t
All these plug-ins have to cooperate, and this is achieved with a special plug-in, which must
be marked with the keyword \type. This should always be Engraver_group_engraver,
\type "Engraver_group_engraver"
Putting together, we get
\context {
\name ImproVoice
\type "Engraver_group_engraver"
\consists "Note_heads_engraver"
\consists "Text_script_engraver"
\consists Pitch_squash_engraver
squashedPosition = #0
\override NoteHead #’style = #’slash
\override Stem #’transparent = ##t
\alias Voice
}
Contexts form hierarchies. We want to hang the ImproVoice under Staff, just like normal
Voices. Therefore, we modify the Staff definition with the \accepts command,3
\context {
\StaffContext
\accepts ImproVoice
}
Putting both into a \paper block, like
3
The opposite of \accepts is \denies, which is sometimes when reusing existing context definitions.
Chapter 4: Changing defaults 117
\paper {
\context {
\name ImproVoice
...
}
\context {
\StaffContext
\accepts "ImproVoice"
}
}
Then the output at the start of this subsection can be entered as
\score {
\notes \relative c’’ {
a4 d8 bes8
\new ImproVoice {
c4^"ad lib" c
c4 c^"undress"
c c_"while playing :)"
}
a1
}
}
> >
5
5
• Setting the transparent property will cause an object to be printed in ‘invisible ink’: the
object is not printed, but all its other behavior is retained. The object still takes up space,
it takes part in collisions, and slurs, and ties and beams can be attached to it.
The following example demonstrates how to connect different voices using ties. Normally,
ties only connect two notes in the same voice. By introducing a tie in a different voice,
> >>
and blanking a stem in that voice, the tie appears to cross voices:
<< {
\once \override Stem #’transparent = ##t
b8~ b8\noBeam
} \\ {
b[ g8]
} >>
> >>
• The padding property for objects with side-position-interface can be set to increase
distance between symbols that are printed above or below notes. We only give an example;
a more elaborate explanation is in Section 4.3.2 [Constructing a tweak], page 118:
c2\fermata
\override Script #’padding = #3
L
b2\fermata
L
= =
More specific overrides are also possible. The next section discusses in depth how to figure
out these statements for yourself.
>
>
2
If you visit the documentation of Fingering (in Section 3.7.8 [Fingering instructions],
page 56), you will notice that there is written:
See also
Program reference: FingerEvent and Fingering.
This fragments points to two parts of the program reference: a page on FingerEvent and on
Fingering.
The page on FingerEvent describes the properties of the music expression for the input -2.
The page contains many links forward. For example, it says
Accepted by: Fingering_engraver,
That link brings us to the documentation for the Engraver, the plug-in, which says
This engraver creates the following layout objects: Fingering.
In other words, once the FingerEvents are interpreted, the Fingering_engraver plug-in
will process them. The Fingering_engraver is also listed to create Fingering objects,
Lo and behold, that is also the second bit of information listed under See also in the Notation
manual. By clicking around in the program reference, we can follow the flow of information
within the program, either forward (like we did here), or backwards, following links like this:
• Fingering: Fingering objects are created by: Fingering_engraver
• Fingering_engraver: Music types accepted: fingering-event
• fingering-event: Music event type fingering-event is in Music objects of type
FingerEvent
This path goes against the flow of information in the program: it starts from the output, and
ends at the input event.
The program reference can also be browsed like a normal document. It contains a chapter
on Music definitions on Translation, and the Backend. Every chapter lists all the definitions
used, and all properties that may be tuned.
Chapter 4: Changing defaults 120
Each of these aspects is captured in a so-called interface, which are listed on the Fingering
page at the bottom
This object supports the following interfaces: item-interface, self-
alignment-interface, side-position-interface, text-interface,
text-script-interface, font-interface, finger-interface, and
grob-interface.
Clicking any of the links will take you to the page of the respective object interface. Each
interface has a number of properties. Some of them are not user-serviceable (“Internal proper-
ties”), but others are.
We have been talking of ‘the’ Fingering object, but actually it does not amount to much.
The initialization file ‘scm/define-grobs.scm’ shows the soul of the ‘object’,
(Fingering
. (
(print-function . ,Text_item::print)
(padding . 0.6)
(staff-padding . 0.6)
(self-alignment-X . 0)
(self-alignment-Y . 0)
(script-priority . 100)
(font-encoding . number)
(font-size . -5)
(meta . ((interfaces . (finger-interface font-interface
text-script-interface text-interface
side-position-interface self-alignment-interface
item-interface))))
))
as you can see, Fingering is nothing more than a bunch of variable settings, and the webpage
is directly generated from this definition.
Chapter 4: Changing defaults 121
>
>
2
Since the 2 is vertically positioned next to its note, we have to meddle with the interface
associated with this positioning. This is done using side-position-interface. The page for
this interface says
side-position-interface
Position a victim object (this one) next to other objects (the support).
The property direction signifies where to put the victim object relative
to the support (left or right, up or down?)
below this description, the variable padding is described as
padding (dimension, in staff space)
add this much extra space between objects that are next to
each other.
By increasing the value of padding, we can move away the fingering. The following command
inserts 3 staff spaces of white between the note and the fingering:
\once \override Fingering #’padding = #3
Inserting this command before the Fingering object is created, i.e. before c2, yields the
following result:
\once \override Fingering
#’padding = #3
c-2
\stemUp
f
>
2
>
In this case, the context for this tweak is Voice, which does not have to be specified for
\override. This fact can also be deduced from the program reference, for the page for the
Fingering_engraver plug-in says
Fingering engraver is part of contexts: . . . Voice
4.4 Fonts
4.4.1 Selecting font sizes
The most common thing to change about the appearance of fonts is their size. The font size of
any context can be easily changed by setting the fontSize property for that context. Its value
is a number: negative numbers make the font smaller, positive numbers larger. An example is
given below:
Chapter 4: Changing defaults 122
> > > >
This command will set font-size (see below) in all layout objects in the current context. It
does not change the size of variable symbols, such as beams or slurs.
The font size is set by modifying the font-size property. Its value is a number indicating
the size relative to the standard size. Each step up is an increase of approximately 12% of the
font size. Six steps is exactly a factor two. The Scheme function magstep converts a font-size
number to a scaling factor.
LilyPond has fonts in different design sizes: the music fonts for smaller sizes are chubbier,
while the text fonts are relatively wider. Font size changes are achieved by scaling the design
size that is closest to the desired size.
The font-size mechanism does not work for fonts selected through font-name. These may
be scaled with font-magnification.
One of the uses of fontSize is to get smaller symbols for cue notes. An elaborate example
of those is in ‘input/test/cue-notes.ly’.
Predefined commands
The following commands set fontSize for the current voice:
\tiny, \small, \normalsize.
See also
Init files: ‘ly/declarations-init.ly’ contains hints how new fonts may be added to LilyPond.
Chapter 4: Changing defaults 123
Bugs
No style sheet is provided for other fonts besides the TEX Computer Modern family.
hello hi there, is anyone home?
c c abc
See also
Init files: ‘scm/new-markup.scm’.
Chapter 4: Changing defaults 124
Bugs
Text layout is ultimately done by TEX, which does kerning of letters. LilyPond does not account
for kerning, so texts will be spaced slightly too wide.
Syntax errors for markup mode are confusing.
Markup texts cannot be used in the titling of the \header field. Titles are made by LaTEX,
so LaTEX commands should be used for formatting.
\flat
Draw a flat symbol.
\fontsize mag (number) arg (markup)
This sets the relative font size, e.g.
A \fontsize #2 { B C } D
This will enlarge the B and the C by two steps.
\fraction arg1 (markup) arg2 (markup)
Make a fraction of two markups.
\general-align axis (integer) dir (number) arg (markup)
Align arg in axis direction to the dir side.
\halign dir (number) arg (markup)
Set horizontal alignment. If dir is -1, then it is left-aligned, while+1 is right. Values
in between interpolate alignment accordingly.
\hbracket arg (markup)
Draw horizontal brackets around arg.
\hspace amount (number)
This produces a invisible object taking horizontal space.
\markup { A \hspace #2.0 B }
will put extra space between A and B, on top of the space that is normally inserted
before elements on a line.
\huge arg (markup)
Set font size to +2.
\italic arg (markup)
Use italic font-shape for arg.
\large arg (markup)
Set font size to +1.
\latin-i arg (markup)
TEST latin1 encoding.
\left-align arg (markup)
Align arg on its left edge.
\line args (list of markups)
Put args in a horizontal line. The property word-space determines the space be-
tween each markup in args.
\lookup glyph-name (string)
Lookup a glyph by name.
\magnify sz (number) arg (markup)
This sets the font magnification for the its argument. In the following example, the
middle A will be 10% larger:
A \magnify #1.1 { A } A
Note: magnification only works if a font-name is explicitly selected. Use \fontsize
otherwise.
\markletter num (integer)
Make a markup letter for num. The letters start with A to Z (skipping I), and
continues with double letters.
Chapter 4: Changing defaults 126
9/7+
C
<
The argument to \raise is the vertical displacement amount, measured in (global)
staff spaces. \raise and \super raise objects in relation to their surrounding
markups.
If the text object itself is positioned above or below the staff, then \raise cannot be
used to move it, since the mechanism that positions it next to the staff cancels any
shift made with \raise. For vertical positioning, use the padding and/or extra-
offset properties.
\right-align arg (markup)
\roman arg (markup)
Set font family to roman.
\sans arg (markup)
Switch to the sans-serif family
Chapter 4: Changing defaults 127
\semiflat
Draw a semiflat.
\semisharp
Draw a semi sharp symbol.
\sesquiflat
Draw a 3/2 flat symbol.
\sesquisharp
Draw a 3/2 sharp symbol.
\sharp
Draw a sharp symbol.
\simple str (string)
A simple text-string; \markup { foo } is equivalent with \markup { \simple
#"foo" }.
\small arg (markup)
Set font size to -1.
\smaller arg (markup)
Decrease the font size relative to current setting
\strut
Create a box of the same height as the space in the current font.
FIXME: is this working?
\sub arg (markup)
Set arg in subscript.
\super arg (markup)
Raising and lowering texts can be done with \super and \sub:
c1^\markup { E "=" mc \super "2" }
2
E = mc
<
\teeny arg (markup)
Set font size to -3.
\tiny arg (markup)
Set font size to -2.
\translate offset (pair of numbers) arg (markup)
This translates an object. Its first argument is a cons of numbers
A \translate #(cons 2 -3) { B C } D
This moves ‘B C’ 2 spaces to the right, and 3 down, relative to its surroundings.
This command cannot be used to move isolated scripts vertically, for the same reason
that \raise cannot be used for that.
.
\typewriter arg (markup)
Use font-family typewriter for arg.
\upright arg (markup)
Set font shape to upright.
Chapter 4: Changing defaults 128
See also
This manual: Section 4.4.1 [Selecting font sizes], page 121.
See also
Internals: Vertical alignment of staves is handled by the VerticalAlignment object.
= >: > >: > >: > > > > > >
Normally, spacing-increment is set to 1.2, which is the width of a note head, and shortest-
duration-space is set to 2.0, meaning that the shortest note gets 2 NHW of space. For normal
notes, this space is always counted from the left edge of the symbol, so the shortest notes are
generally followed by one NHW of space.
If one would follow the above procedure exactly, then adding a single 32th note to a score that
uses 8th and 16th notes, would widen up the entire score a lot. The shortest note is no longer a
16th, but a 32nd, thus adding 1 NHW to every note. To prevent this, the shortest duration for
spacing is not the shortest note in the score, but the most commonly found shortest note. Notes
that are even shorter this are followed by a space that is proportional to their duration relative
to the common shortest note. So if we were to add only a few 16th notes to the example above,
they would be followed by half a NHW:
Chapter 4: Changing defaults 130
= > : > > : > > > : > > > > > >
The most common shortest duration is determined as follows: in every measure, the shortest
duration is determined. The most common short duration, is taken as the basis for the spacing,
with the stipulation that this shortest duration should always be equal to or shorter than 1/8th
note. The shortest duration is printed when you run lilypond with --verbose. These durations
may also be customized. If you set the common-shortest-duration in SpacingSpanner, then
this sets the base duration for spacing. The maximum duration for this base (normally 1/8th),
is set through base-shortest-duration.
In the Introduction it was explained that stem directions influence spacing. This is controlled
with stem-spacing-correction property in NoteSpacing, which are generated for every Voice
context. The StaffSpacing object (generated at Staff context) contains the same property
for controlling the stem/bar line spacing. The following example shows these corrections, once
with default settings, and once with exaggerated corrections:
> > > > > > > > > > >
> >
>
> >
Properties of the SpacingSpanner must be overridden from the \paper block, since the
SpacingSpanner is created before any property commands are interpreted.
\paper { \context {
\ScoreContext
\override SpacingSpanner #’spacing-increment = #3.0
} }
See also
Internals: SpacingSpanner, NoteSpacing, StaffSpacing, SeparationItem, and
SeparatingGroupSpanner.
Bugs
Spacing is determined on a score wide basis. If you have a score that changes its character
(measured in durations) halfway during the score, the part containing the longer durations will
be spaced too widely.
There is no convenient mechanism to manually override spacing.
s1 \noBreak s1 \break }
the real music
>>
This makes the following 28 measures (assuming 4/4 time) be broken every 4 measures, and
only there.
Predefined commands
\break, and \noBreak.
See also
Internals: BreakEvent.
Predefined commands
\newpage.
See also
In this manual: Section 5.1 [Invoking lilypond], page 133.
Examples: ‘input/regression/between-systems.ly’.
Internals: NonMusicalPaperColumn.
Chapter 4: Changing defaults 132
Bugs
LilyPond has no concept of page layout, which makes it difficult to reliably choose page breaks
in longer pieces.
\def\lilypondpaperlastpagefill{}
\lineskip 5pt
\def\lilypondscoreshift{0.25\baselineskip}
\begin{document}
This is running text which includes an example music file
\input{foo.tex}
right here.
\end{document}
The file ‘foo.tex’ has been simply produced with
lilypond-bin foo.ly
The call to \lineskip assures that there is enough vertical space between the LilyPond box
and the surrounding text lines.
Chapter 5: Invoking LilyPond 133
5 Invoking LilyPond
This chapter details the technicalities of running LilyPond.
orientation
Set orientation. Choices are portrait or landscape. Is read from the \paper block,
if set.
textheight
The vertical extension of the music on the page. It is normally calculated automat-
ically, based on the paper size.
linewidth
The music line width. It is normally read from the \paper block.
papersize
The paper size (as a name, e.g. a4). It is normally read from the \paper block.
pagenumber
If set to no, no page numbers will be printed. If set to a positive integer, start with
this value as the first page number.
fontenc The font encoding, should be set identical to the font-encoding property in the
score.
-f,--format=format
Output format for sheet music. Choices are tex (for TEX output, to be pro-
cessed with plain TEX, or through lilypond), pdftex for PDFTEX input, ps (for
PostScript), scm (for a Scheme dump), sk (for Sketch) and as (for ASCII-art).
This option is only for developers. Only the TEX output of these is usable for real
work.
-h,--help
Show a summary of usage.
--include, -I=directory
Add directory to the search path for input files.
-i,--init=file
Set init file to file (default: ‘init.ly’).
-m,--no-paper
Disable TEX output. If you have a \midi definition MIDI output will be generated.
-M,--dependencies
Output rules to be included in Makefile.
-o,--output=FILE
Set the default output file to FILE.
-v,--version
Show version information.
-V,--verbose
Be verbose: show full paths of all files read, and give timing information.
-w,--warranty
Show the warranty with which GNU LilyPond comes. (It comes with NO WAR-
RANTY!)
GS_LIB For processing PostScript output (obtained with -f ps) with Ghostscript you have
to set GS_LIB to point to the directory containing library PS files.
GS_FONTPATH
For processing PostScript output (obtained with -f ps) with Ghostscript you have
to set GS_FONTPATH to point to the directory containing PFA files.
When you print direct PS output, remember to send the PFA files to the printer as
well.
LILYPONDPREFIX
This specifies a directory where locale messages and data files will be looked up by
default. The directory should contain subdirectories called ‘ly/’, ‘ps/’, ‘tex/’, etc.
Warning Something looks suspect. If you are requesting something out of the ordinary then
you will understand the message, and can ignore it. However, warnings usually
indicate that something is wrong with the input file.
Error Something is definitely wrong. The current processing step (parsing, interpreting,
or formatting) will be finished, but the next step will be skipped.
Fatal error
Something is definitely wrong, and LilyPond cannot continue. This happens rarely.
The most usual cause is misinstalled fonts.
Scheme error
Errors that occur while executing Scheme code are caught by the Scheme interpreter.
If running with the verbose option (-V or --verbose) then a call trace is printed of
the offending function call.
Programming error
There was some internal inconsistency. These error messages are intended to help
the programmers and debuggers. Usually, they can be ignored. Sometimes, they
come in such big quantities that they obscure other output. In this case, file a
bug-report.
If warnings and errors can be linked to some part of the input file, then error messages have
the following form
filename :lineno :columnno : message
offending input line
A line-break is inserted in offending line to indicate the column where the error was found.
For example,
test.ly:2:19: error: not a duration: 5:
\notes { c’4 e’5
g’ }
Chapter 5: Invoking LilyPond 138
Xdvi must be configured to find the TEX fonts and music fonts. Refer to the Xdvi documen-
tation for more information.
To use point-and-click, add one of these lines to the top of your .ly file:
#(ly:set-point-and-click ’line)
When viewing, Control-Mousebutton 1 will take you to the originating spot in the ‘.ly’ file.
Control-Mousebutton 2 will show all clickable boxes.
If you correct large files with point-and-click, be sure to start correcting at the end of the
file. When you start at the top, and insert one line, all following locations will be off by a line.
For using point-and-click with Emacs, add the following In your Emacs startup file (usually
‘~/.emacs’):
(server-start)
Make sure that the environment variable XEDITOR is set to
emacsclient --no-wait +%l %f
If you use XEmacs instead of Emacs, you use (gnuserve-start) in your ‘.emacs’, and set
XEDITOR to gnuclient -q +%l %f.
For using Vim, set XEDITOR to gvim --remote +%l %f, or use this argument with Xdvi’s
-editor option.
For using NEdit, set XEDITOR to nc -noask +%l %f, or use this argument with Xdvi’s -editor
option.
If can also make your editor jump to the exact location of the note you clicked. This
is only supported on Emacs and VIM. Users of Emacs version 20 must apply the patch
‘emacsclient.patch’. Users of version 21 must apply ‘server.el.patch’ (version 21.2 and
earlier). At the top of the ly file, replace the set-point-and-click line with the following line:
#(ly:set-point-and-click ’line-column)
and set XEDITOR to emacsclient --no-wait +%l:%c %f. Vim users can set XEDITOR to
gvim --remote +:%l:norm%c| %f.
Chapter 6: lilypond-book manual 140
6 lilypond-book manual
If you want to add pictures of music to a document, you can simply do it the way you would do
with other types of pictures. The pictures are created separately, yielding PostScript pictures
or PNG images, and those are included into a LaTEX or HTML document.
lilypond-book provides a way to automate this process: this program extracts snippets of
music from your document, runs LilyPond on them, and outputs the document with pictures
substituted for the music. The line width and font size definitions for the music are adjusted to
match the layout of your document.
This procedure may be applied to LaTEX, html or Texinfo documents. A tuto-
rial on using lilypond-book is in Section 2.21 [Integrating text and music], page 28.
For more information about LaTEX The not so Short Introduction to LaTeX
(http://www.ctan.org/tex-archive/info/lshort/english/) provides a introduction to
using LaTEX.
= =
> > > >
Then the short version:
@lilypond[staffsize=11]{<c’ e’ g’>}
produces
>>
>
When producing texinfo, lilypond-book also generates bitmaps of the music, so you can make
a HTML document with embedded music.
>>
>
The linewidth of the music will be adjust by examining the commands in the document
preamble, the part of the document before \begin{document}: lilypond-book sends these to
LaTEX to find out how wide the text is. The line width variable for the music fragments are
adjusted to the text width.
After \begin{document}, the column changing commands \onecolumn, \twocolumn com-
mands are also interpreted.
The titling from the \header section of the fragments can be imported by adding the following
to the top of the LaTEX file:
\input titledefs.tex
\def\preLilyPondExample{\def\mustmakelilypondtitle{}}
The music will be surrounded by \preLilyPondExample and \postLilyPondExample, which
are defined to be empty by default.
For printing the LaTeX document, you will need to use dvips. For producing PostScript with
scalable fonts, add the following options to the dvips command line:
-Ppdf -u +lilypond.map
PDF can then be produced with ps2pdf.
LilyPond does not use the LaTeX font handling scheme for lyrics and text markups, so if you
use characters in your lilypond-book documents that are not included in the standard US-ASCII
character set, include \usepackage[latin1]{inputenc} in the file header but do not include
\usepackage[[T1]{fontenc}. Character sets other than latin1 are not supported directly but
may be handled by explicitly specifying the font-name property in LilyPond and using the
corresponding LaTeX packages. Please consult the mailing list for more details.
3 >
3 3 * > 2> > > > > > > >
For inline pictures, use <lilypond ... /> syntax, e.g.
Some music in <lilypond a b c/> a line of text.
A special feature not (yet) available in other output formats, is the <lilypondfile> tag, for
example,
<lilypondfile>trip.ly</lilypondfile>
This runs ‘trip.ly’ through lilypond (see also Section 5.1 [Invoking lilypond], page 133),
and substitutes a preview image in the output. The image links to a separate HTML file, so
clicking it will take the viewer to a menu, with links to images, midi and printouts.
noindent sets indentation of the first music system to zero. This option affects LilyPond, not
the text layout.
quote sets linewidth to the width of a quotation and puts the output in a quotation block.
texidoc Includes the texidoc field, if defined in the file. This is only for Texinfo output.
In Texinfo, the music fragment is normally preceded by the texidoc field from the
\header. The LilyPond test documents are composed from small ‘.ly’ files in this
way:
\header {
texidoc = "this file demonstrates a single note"
}
\score { \notes { c’4 } }
relative, relative=N
uses relative octave mode. By default, notes are specified relative to middle C. The
optional integer argument specifies the octave of the
relative, relative=N
uses relative octave mode. By default, notes are specified relative to middle C. The
optional integer argument specifies the octave of the starting note, where the default
1 is middle C.
‘--version’
Print version information.
For LaTEX input, the file to give to LaTEX has extension ‘.latex’. Texinfo input will be
written to a file with extension ‘.texi’.
6.6 Bugs
The LaTEX \includeonly{...} command is ignored.
The Texinfo command pagesize is not interpreted. Almost all LaTEX commands that
change margins and line widths are ignored.
Only the first \score of a LilyPond block is processed.
The size of a music block is limited to 1.5 KB, due to technical problems with the Python
regular expression engine. For longer files, use \lilypondfile.
Chapter 7: Converting from other formats 145
Bugs
Not all language changes are handled. Only one output option can be specified.
trivial. midi2ly tries to compensate for these timing errors, but is not very good at this. It is
therefore not recommended to use midi2ly for human-generated midi files.
Hackers who know about signal processing are invited to write a more robust midi2ly. midi2ly
is written in Python, using a module written in C to parse the MIDI files.
It is invoked as follows:
midi2ly [option ]... midi-file
The following options are supported by midi2ly:
-a, --absolute-pitches
Print absolute pitches.
-d, --duration-quant=DUR
Quantize note durations on DUR.
-e, --explicit-durations
Print explicit durations.
-h,--help
Show summary of usage.
-k, --key=acc [:minor ]
Set default key. acc > 0 sets number of sharps; acc < 0 sets number of flats. A minor
key is indicated by ":1".
-o, --output=file
Write output to file.
-s, --start-quant=DUR
Quantize note starts on DUR.
-t, --allow-tuplet=DUR *NUM /DEN
Allow tuplet durations DUR*NUM /DEN.
-V, --verbose
Be verbose.
-v, --version
Print version number.
-w, --warranty
Show warranty and copyright.
-x, --text-lyrics
Treat every text as a lyric.
Bugs
The list of articulation scripts is incomplete. Empty measures confuse etf2ly. Sequences of grace
notes are ended improperly sometimes.
Bugs
The ABC standard is not very “standard”. For extended features (e.g. polyphonic music)
different conventions exist.
Multiple tunes in one file cannot be converted.
ABC synchronizes words and notes at the beginning of a line; abc2ly does not.
abc2ly ignores the ABC beaming.
-v,--version
version information
-r,--ref=reffile
read background information from ref-file reffile
Bugs
‘musedata2ly’ converts only a small subset of MuseData.
Bugs
Only plain notes (pitches, durations), voices, and staves are converted.
Chapter 7: Unified index 149
Unified index
# \cadenzaOn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
#(set-accidental-style ’piano-cautionary) . . . 50 \caesura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
\clef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
\context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
’ \deminutum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
\descendens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
\divisioMaior. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
\divisioMaxima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
( \divisioMinima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
\dorian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
(begin * * * *) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 \dotsBoth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
(end * * * *) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 \dotsDown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
\dotsUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
, \dynamicBoth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
\dynamicDown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
, . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 \dynamicUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
\emptyText . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
. \f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
\fatText . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 \ff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
\fff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
/ \ffff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
\finalis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 \flexa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
/+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 \fp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
\germanChords. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
\glissando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
? \grace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 \header in LaTEX documents . . . . . . . . . . . . . . . . . . 141
\hideNotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
\hideStaffSwitch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
[ \inclinatum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
[ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 \ionian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
\key . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
\locrian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
] \lydian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 \lyrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
\lyricsto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
\major . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
\mark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 \melisma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
\melismaEnd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
\mf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
\ \minor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
\"! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 \mixolydian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
\< . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 \mp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
\> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 \newpage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
\aeolian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 \noBreak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
\alternative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 \normalsize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
\arpeggio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70, 71 \notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
\arpeggioBoth. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 \oneVoice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45, 46
\arpeggioBracket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 \oriscus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
\arpeggioDown. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 \override . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
\arpeggioUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 \p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
\ascendens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 \partial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
\auctum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 \pes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
\autoBeamOff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 \phrasingSlurBoth . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
\autoBeamOn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 \phrasingSlurDown . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
\bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 \phrasingSlurUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
\break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 \phrygian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
\cadenzaOff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 \pp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Chapter 7: Unified index 150
\ppp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 1
\property, in \lyrics. . . . . . . . . . . . . . . . . . . . . . . . . . 72 15ma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
\quilisma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
\relative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
\repeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 A
\rfz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 ABC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
\scriptBoth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 AbsoluteDynamicEvent . . . . . . . . . . . . . . . . . . . . . . . . . 61
\scriptDown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 accacciatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
\scriptUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 accent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
\semiGermanChords . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 accents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
\set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 accessing Scheme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
\setEasyHeads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 acciaccatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21, 57
\sf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Accidental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51, 91
\sff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Accidental engraver . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
\sfz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 AccidentalPlacement . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
\shiftOff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 accidentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14, 91
Accidentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
\shiftOn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
additions, in chords . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
\shiftOnn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
adjusting output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
\shiftOnnn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Adjusting slurs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
\showStaffSwitch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 adjusting staff symbol . . . . . . . . . . . . . . . . . . . . . . . . . . 40
\slurBoth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 All-backend-properties . . . . . . . . . . . . . . . . . . . . . . . . . 115
\slurDotted . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 All-layout-objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
\slurDown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 allowBeamBreak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
\slurSolid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 alto clef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
\slurUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 ambiguity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62, 75
\small . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 ambitus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
\sp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Ambitus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
\spp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Ambitus engraver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
\stemBoth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 anacruse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
\stemDown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 anacrusis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
\stemUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 appoggiatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21, 57
\stropha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Arkkra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
\super . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Arpeggio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
\tempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Arpeggio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
\tieBoth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 ArpeggioEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
\tieDotted . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 articulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
articulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
\tieDown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Articulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
\tieSolid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
ASCII-art output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
\tieUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
aug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
\time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 auto-knee-gap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
\times . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 autobeam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
\tiny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 autoBeaming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
\transpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 autoBeamSettings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
\tupletBoth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 AutoChangeMusic. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
\tupletDown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 automatic beam generation . . . . . . . . . . . . . . . . . . . . . 48
\tupletUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Automatic beams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
\unHideNotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 automatic beams, tuning . . . . . . . . . . . . . . . . . . . . . . . 48
\virga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 automatic part combining. . . . . . . . . . . . . . . . . . . . . . . 86
\virgula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Automatic staff changes . . . . . . . . . . . . . . . . . . . . . . . . 67
\voiceFour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45, 46 automatic syllable durations . . . . . . . . . . . . . . . . . . . . 72
\voiceOne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45, 46
\voiceThree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
\voiceTwo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 B
Backend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
balance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
| balloon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Banter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38, 43
bar check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Bar check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Bar lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
~ bar lines at start of system . . . . . . . . . . . . . . . . . . . . . . 45
~ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 bar lines, putting symbols on . . . . . . . . . . . . . . . . . . . . 83
Chapter 7: Unified index 151
I lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
idiom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 lowering text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
ImproVoice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 LyricCombineMusic . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
indent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 LyricEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
indent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 LyricEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 LyricExtender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
installing LilyPond . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 LyricHyphen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
instrument names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 lyrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22, 48, 71
InstrumentName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Lyrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
internal documentation . . . . . . . . . . . . . . . . . . . . . . 9, 119 Lyrics . . . . . . . . . . . . . . . . . . . . . . 72, 73, 74, 87, 111, 167
international characters . . . . . . . . . . . . . . . . . . . . . . . . 141 lyrics and melodies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
interscoreline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 LyricText. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
interscorelinefill . . . . . . . . . . . . . . . . . . . . . . . . . . 131 LyricText. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
invisible objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Invisible rest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
invoking dvips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 M
Invoking LilyPond . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
italic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 magnification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
item-interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 magnify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
maj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
majorSevenSymbol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
J manual staff switches . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
jargon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 marcato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
jazz chords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 mark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
MarkEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
markletter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
K markup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
KDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 markup text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
KDVI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 measure lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Key signature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 measure numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
key signature, setting . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 measure repeats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
KeyChangeEvent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 measure, partial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
keySignature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Measure grouping engraver . . . . . . . . . . . . . . . . . . . . . 42
KeySignature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40, 91 MeasureGrouping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
kneed beams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Medicaea, Editio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
melisma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22, 72
Melisma translator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
L mensural . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
LANG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Mensural ligatures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Mensural ligature engraver . . . . . . . . . . . . . . . . . . . . . 98
large . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 meter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
lastpagefill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 metronome marking . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
latex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 MetronomeChangeEvent . . . . . . . . . . . . . . . . . . . . . . . . 53
LaTEX, music in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 mezzosoprano clef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
latin-i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 MIDI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24, 136, 145
latin1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 MIDI block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
layers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 minimumFret . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
lead sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 modern style accidentals . . . . . . . . . . . . . . . . . . . . . . . . 50
Lead sheets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 modern-cautionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
left-align . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 modern-voice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Ligature bracket engraver . . . . . . . . . . . . . . . . . . . . . . 98 modern-voice-cautionary . . . . . . . . . . . . . . . . . . . . . . 50
LigatureBracket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 modes, editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Ligatures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 modifiers, in chords. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
lilypond-book and titling . . . . . . . . . . . . . . . . . . . . . . 141 mordent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
lilypond-internals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 moving text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
lilypond-mode for Emacs . . . . . . . . . . . . . . . . . . . . . . 138 multi measure rests . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
LILYPONDPREFIX . . . . . . . . . . . . . . . . . . . . . . . . . . 137 MultiMeasureRest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 MultiMeasureRestEvent . . . . . . . . . . . . . . . . . . . . . . . . 86
line breaks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 MultiMeasureRestMusicGroup . . . . . . . . . . . . . . . . . . 86
line comment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 MultiMeasureRestNumber . . . . . . . . . . . . . . . . . . . . . . 86
line-column-location . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 MultiMeasureRestText . . . . . . . . . . . . . . . . . . . . . . . . . 86
line-location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 MultiMeasureTextEvent . . . . . . . . . . . . . . . . . . . . . . . . 86
linewidth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 multiple voices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
LISP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Mup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Chapter 7: Unified index 154
MuseData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 P
Music classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 padding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Music entry. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 padding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
music expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 page breaks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Music expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 page layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131, 134
Music properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 page size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Music Publisher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 paper block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
musical symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 paper file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
musicglyph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 paper size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
musicological analysis . . . . . . . . . . . . . . . . . . . . . . . . . . 54 papersize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
parenthesized accidental . . . . . . . . . . . . . . . . . . . . . . . . 32
part combiner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
N PartCombineMusic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Partial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
name of singer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
partial measure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21, 43
natural . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
NEdit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138, 139
PDFTeX output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
no-reset accidental style . . . . . . . . . . . . . . . . . . . . . . . 50
Pedals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
non-empty texts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
percent repeats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Non-guitar tablatures . . . . . . . . . . . . . . . . . . . . . . . . . . 77
PercentRepeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
NonMusicalPaperColumn . . . . . . . . . . . . . . . . . . . . . . 131
PercentRepeatedMusic . . . . . . . . . . . . . . . . . . . . . . . . . 64
normal-size-sub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
percussion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64, 65
normal-size-super . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Petrucci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
normalsize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 phrasing brackets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
notation, explaining . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 phrasing marks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
note . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 phrasing slurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20, 52
Note entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 phrasing, in lyrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
note grouping bracket . . . . . . . . . . . . . . . . . . . . . . . . . . 54 PhrasingSlur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
note heads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 PhrasingSlurEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
note names, Dutch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 piano accidentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Note specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 PianoPedalBracket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
note-by-number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 PianoStaff. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50, 67
note-collision-interface . . . . . . . . . . . . . . . . 176, 177, 178 PianoStaff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Note heads engraver . . . . . . . . . . . . . . . . . . . . . . . 39, 116 PianoStaff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71, 129
NoteCollision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45, 46 pickup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
NoteColumn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 picture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
NoteEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Pitch names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
NoteEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183, 184 Pitch squash engraver . . . . . . . . . . . . . . . . . . . . 116, 170
NoteGroupingEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 pitches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
NoteHead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 pixmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
NoteHead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105, 188 point and click . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
NoteSpacing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 polymetric scores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 polyphony. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25, 45
number of staff lines, setting . . . . . . . . . . . . . . . . . . . . 40 portato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
PostScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
PostScript output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
O prall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
prall, down . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
octavation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 prall, up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 prallmordent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
optical spacing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 prallprall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
options, command line . . . . . . . . . . . . . . . . . . . . . . . . . 135 preview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
organ pedal marks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 preview image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
ornaments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54, 57 printing chord names . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
ottava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 printing postscript . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
OttavaBracket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Program reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
outline fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 Programming error . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
output format, setting . . . . . . . . . . . . . . . . . . . . . . . . . 136 properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
override . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 PropertySet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
OverrideProperty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 punctuation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Chapter 7: Unified index 155
Q self-alignment-interface . . . . . . . . . . . . . . . . . . . . . . . . 120
quarter tones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 semi-flats, semi-sharps . . . . . . . . . . . . . . . . . . . . . . . . . . 31
QuoteMusic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 semiflat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
quotes, in lyrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 semisharp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
SeparatingGroupSpanner . . . . . . . . . . . . . . . . . . . . . . 130
SeparationItem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
R SequentialMusic. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
sesquiflat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 sesquisharp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 set-accidental-style . . . . . . . . . . . . . . . . . . . . . . . . . 49
raise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 setting object properties . . . . . . . . . . . . . . . . . . . . . . . 117
raising text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 sharp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Recording group engraver . . . . . . . . . . . . . . . . . . . . . 169 shorten measures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
regular line breaks . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 side-position-interface . . . . . . . . . . . . . . . . . . . . . . . . . 120
regular rhythms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 signature line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
regular spacing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Rehearsal marks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 SimultaneousMusic . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
RehearsalMark . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83, 123 singer’s names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Relative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Sketch output. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
relative octave specification . . . . . . . . . . . . . . . . . . . . . 37 Skip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
reminder accidental . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 SkipEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
removals, in chords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 SkipMusic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
RemoveEmptyVerticalGroup . . . . . . . . . . . . . . . . . . . . 88 skipTypesetting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
removing objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 slur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
repeat bars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Slur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
repeatCommands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Slur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
repeatCommands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 SlurEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
RepeatedMusic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Slurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
RepeatedMusic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 slurs versus ties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
repeats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 small . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
RepeatSlash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 smaller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
reporting bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 snippets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Rest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33, 91 SoloOneEvent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
RestCollision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 SoloTwoEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
RestEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Songs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
rests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10, 91 soprano clef. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Rests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 sound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Rests, multi measure . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Sound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
reverseturn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 source specials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
RevertProperty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 space between staves . . . . . . . . . . . . . . . . . . . . . . . . . . 128
RhythmicStaff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Space note. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
right-align . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 spaces, in lyrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
roman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 spacing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
root of chord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 spacing-spanner-interface . . . . . . . . . . . . . . . . . . 179, 180
SpacingSpanner . . . . . . . . . . . . . . . . . . . . . . . . . . 129, 130
SpacingSpanner, overriding properties . . . . . . . . . . 130
S SpanBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 specials, source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
sans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Square neumes ligatures . . . . . . . . . . . . . . . . . . . . . . . . 98
SATB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 staccatissimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Scalable fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 staccato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19, 55
Scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9, 107 Staff . . . . . . . . . . . . . . . . . . . . . . . . . 34, 40, 45, 50, 54, 68
Scheme dump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Staff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Scheme error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Staff. . . . . . . . . . . . . . . . . . . . . . . . . . . 83, 87, 96, 109, 111
Scheme, in-line code . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Staff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Score . . . . . . . . . . . . . . . . . . . . . . . . 42, 109, 111, 164, 166 Staff . . . . . . . . . . . . . . . . . . . . . . . 115, 116, 130, 145, 164
screen shot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 staff distance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 staff group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
script on multi-measure rest . . . . . . . . . . . . . . . . . . . . 85 staff lines, setting number of . . . . . . . . . . . . . . . . . . . . 40
ScriptEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 staff lines, setting thickness of . . . . . . . . . . . . . . . . . . . 40
scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54, 56 Staff notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
search in manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 staff size, setting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
search path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 staff switch, manual . . . . . . . . . . . . . . . . . . . . . . . . . 26, 68
segno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55, 83 staff switching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
segno on bar line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Staff, multiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Chapter 7: Unified index 156
V VoiceFollower . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
varbaritone clef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 voices, more – on a staff . . . . . . . . . . . . . . . . . . . . . . . . 25
varcoda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 VoltaBracket. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 VoltaRepeatedMusic . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Vaticana, Editio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
VaticanaStaffContext . . . . . . . . . . . . . . . . . . . . . . . . . . 102
VaticanaVoiceContext . . . . . . . . . . . . . . . . . . . . . . . . . 102 W
vcenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 warning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
vertical spacing . . . . . . . . . . . . . . . . . . . . . . . . . . . 128, 131 website . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
VerticalAlignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 whichBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Viewing music . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 White mensural ligatures . . . . . . . . . . . . . . . . . . . . . . . 98
vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 whole rests for a full measure . . . . . . . . . . . . . . . . . . . 86
Vim. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
violin clef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Writing parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
VocalName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Voice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34, 45
Voice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Voice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68, 72, 74
X
Voice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 xdvi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Voice . . . . . . . . . . 86, 87, 90, 97, 98, 106, 109, 110, 111 Xdvi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105, 138
Voice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 XEDITOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Voice . . . . . . . . . . . . . . . . . . 115, 116, 118, 121, 130, 145 XEmacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Appendix A: Notation manual details 158
3 / 3 3
Ignatzek (default) C Cm C+ Co
Alternative C C 3 C 5 C 3 5
/ 3 3 /
3
3 3 3 3
Def C7 Cm7 CM Co7 CmM/ 5
Alt C7 C7 3 C 7 C 3 5 7 C 3 5 7
/ /
/ 3 / / / 3 3
Def C7/ 5 CmM CM/ 5 Co/
Alt C7 5 C 3 7 C 5 7 C7 3 5
3 3
Def C6 Cm6 C9 Cm9
Alt C6 C 36 C9 C9 3
3 3
3 3 3 3 3
Def Cm13 Cm11 Cm7/ 5/9 C7/ 9
C13 3 C11 3 C9 3 5 C7 9
<<
Alt
< <
33 <<< 3 <<< <
3 33 <<< 3 3 <<<
18
/ /
/ /
Def C7/ 9 C11 C7/ 11 C13
C7 9 C11 C9 11 C13
<<
Alt
/ 3 / / / /
/ 3 / / / /
3
3
Def C7/ 11/ 13 C7/ 5/ 9 C7/ 9/ 11 C7/ 13
C9 11 13 C7 5 9 C7 9 11 C11 13
/ 3 <<< 3 <<
Alt
/
/ /
3 3 3
3 3 3
Def C7/ 9/ 13 C7/ 11 CM/9 C7/ 13
C11 9 13 C9 11 C9 7 C11 13
3< 3 <<
Alt
3 3 <<< /<
3 <<< << 3 <<<
30
/ /
3 3 3
3 3 3
Def C7/ 9/ 13 C7/ 9/13 CM/9 CM/13
C11 9 13 C13 9 C9 7 C13 7
3< < <<
Alt
/ <<
<<< 3 3 <<< 3 <<<
38
3
Def C9/sus4 Cadd9 Cmadd11
Alt C add4 5 7 9 C add9 C 3 add11
< 3 <<<
< <<
A.2 MIDI instruments
"acoustic grand" "contrabass" "lead 7 (fifths)"
"bright acoustic" "tremolo strings" "lead 8 (bass+lead)"
Appendix A: Notation manual details 160
! rests-0 # rests-0o
page 123.
" rests-1
$ rests-1o % rests--3 & rests--2
' rests--1 ( rests-2 ) rests-2classical
Appendix A: Notation manual details 161
flags-d3
flags-u5 flags-u6
flags-d5 clefs-C
flags-d6
¢ flags-mensuralu23
¥ flags-mensurald23
¦ £ flags-mensurald03 § ¤ flags-mensuralu14
flags-mensurald13
¨
flags-mensuralu04
¬© ª
flags-mensuralu24 flags-mensurald04 flags-mensurald14
« flags-mensurald24
®
flags-mensuralu05 flags-mensuralu15
flags-mensuralu25
¯² flags-mensurald05 °³ flags-mensurald15
± flags-mensurald25
´
flags-mensuralu06 flags-mensuralu16
µ flags-mensurald06 ¶ flags-mensurald16
flags-mensuralu26
¸ timesig-mensural4/4 ¹ timesig-mensural2/2
· flags-mensurald26
º timesig-mensural3/2 » timesig-mensural6/4 ¼ timesig-mensural9/4
½ timesig-mensural3/4 ¾ timesig-mensural6/8 ¿ timesig-mensural9/8
À timesig-mensural4/8 Á timesig-mensural6/8alt  timesig-mensural2/4
à timesig-neo mensural4/4 Ä timesig-neo mensural2/2 Å timesig-neo mensural3/2
Æ timesig-neo mensural6/4 Ç timesig-neo mensural9/4 È timesig-neo mensural3/4
É timesig-neo mensural6/8 Ê timesig-neo mensural9/8 Ë timesig-neo mensural4/8
Ì timesig-neo mensural6/8alt Í timesig-neo mensural2/4 Î scripts-ictus
Ï scripts-uaccentus Ð scripts-daccentus Ñ scripts-usemicirculus
Ò scripts-dsemicirculus Ó scripts-circulus Ô scripts-augmentum
Ö scripts-dsignumcongruentiae
Õ scripts-usignumcongruentiae
A.4 All context properties
aDueText (string)
Text to print at a unisono passage.
alignBassFigureAccidentals (boolean)
If true, then the accidentals are aligned in bass figure context.
allowBeamBreak (boolean)
If true allow line breaks for beams over bar lines.
associatedVoice (string)
Name of the Voice that has the melody for this Lyrics line.
autoAccidentals (list)
List of different ways to typeset an accidental.
For determining when to print an accidental, several different rules are tried. The
rule that gives the highest number of accidentals is used. Each rule consists of
context: In which context is the rule applied. For example, if context is Score
then all staves share accidentals, and if context is Staff then all voices
in the same staff share accidentals, but staves do not.
Appendix A: Notation manual details 165
octavation:
Whether the accidental changes all octaves or only the current octave.
Valid choices are
‘same-octave:’
This is the default algorithm. Accidentals are typeset if
the note changes the accidental of that note in that octave.
Accidentals lasts to the end of the measure and then as
many measures as specified in the value. I.e. 1 means to
the end of next measure, -1 means to the end of previous
measure (that is: no duration at all), etc. #t means forever.
‘any-octave:’
Accidentals are typeset if the note is different from the pre-
vious note on the same pitch in any octave. The value has
same meaning as in same-octave.
laziness
Over how many bar lines the accidental lasts. If laziness is -1 then the
accidental is forget immediately, and if laziness is #t then the accidental
lasts forever.
autoBeamSettings (list)
Specifies when automatically generated beams should begin and end. See Sec-
tion 3.5.2 [Setting automatic beam behavior], page 48 for more information.
autoBeaming (boolean)
If set to true then beams are generated automatically.
autoCautionaries (list)
List similar to autoAccidentals, but it controls cautionary accidentals rather than
normal ones. Both lists are tried, and the one giving the most accidentals wins. In
case of draw, a normal accidental is typeset.
automaticBars (boolean)
If set to true then bar lines will not be printed automatically; they must be explicitly
created with \bar command. Unlike the \cadenza keyword, measures are still
counted. Bar generation will resume according to that count if this property is
unset.
barAlways (boolean)
If set to true a bar line is drawn after each note.
barCheckSynchronize (boolean)
If true then reset measurePosition when finding a barcheck.
barNumberVisibility (procedure)
Procedure that takes an int and returns whether the corresponding bar number
should be printed
bassFigureFormatFunction (procedure)
Procedure that is called to produce the formatting for a BassFigure grob. It takes
a list of BassFigureEvents, a context, and the grob to format.
beatGrouping (list)
List of beatgroups, e.g., in 5/8 time ’(2 3).
beatLength (moment)
The length of one beat in this time signature.
Appendix A: Notation manual details 166
chordChanges (boolean)
Only show changes in chords scheme?
chordNameExceptions (list)
Alist of chord exceptions. Contains (chord . markup) entries.
chordNameExceptionsFull (list)
Alist of chord exceptions. Contains (chord . markup) entries.
chordNameExceptionsPartial (list)
Alist of partial chord exceptions. Contains (chord . (prefix-markup suffix-markup))
entries.
chordNameFunction (procedure)
The function that converts lists of pitches to chord names.
chordNameSeparator (markup)
The markup object used to separate parts of a chord name.
chordNoteNamer (procedure)
Function that converts from a pitch object to a text markup. Used for single pitches.
chordRootNamer (procedure)
Function that converts from a pitch object to a text markup. Used for chords.
clefGlyph (string)
Name of the symbol within the music font.
clefOctavation (integer)
Add this much extra octavation. Values of 7 and -7 are common.
clefPosition (number)
Where should the center of the clef symbol go, measured in half staff spaces from
the center of the staff.
connectArpeggios (boolean)
If set, connect arpeggios across piano staff.
createKeyOnClefChange (boolean)
Print a key signature whenever the clef is changed.
createSpacing (boolean)
Create StaffSpacing objects? Should be set for staves.
crescendoSpanner (symbol)
Type of spanner to be used for crescendi. One of: ‘hairpin’, ‘line’, ‘dashed-line’,
‘dotted-line’. If unset, hairpin type is used.
crescendoText (markup)
Text to print at start of non-hairpin crescendo, i.e.: ‘cresc.’
currentBarNumber (integer)
Contains the current barnumber. This property is incremented at every bar line.
decrescendoSpanner (symbol)
See crescendoSpanner.
decrescendoText (markup)
Text to print at start of non-hairpin decrescendo, i.e.: ‘dim.’
defaultBarType (string)
Sets the default type of bar line. See whichBar for information on available bar
types.
This variable is read by Timing_engraver at Score level.
Appendix A: Notation manual details 167
instrumentTransposition (pitch)
Define the transposition of the instrument. This is used to transpose the MIDI
output, and \quotes.
keyAccidentalOrder (list)
Alist that defines in what order alterations should be printed. The format is (name
. alter), where name is from 0 .. 6 and alter from -1, 1.
keySignature (list)
The current key signature. This is an alist containing (name . alter) or ((octave
. name) . alter). where name is from 0.. 6 and alter from -4 (double flat) to 4
(double sharp).
majorSevenSymbol (markup)
How should the major 7th be formatted in a chord name?
markFormatter (procedure)
Procedure taking as arguments context and rehearsal mark. It should return the
formatted mark as a markup object.
measureLength (moment)
Length of one measure in the current time signature.
measurePosition (moment)
How much of the current measure have we had. This can be set manually to create
incomplete measures.
melismaBusyProperties (list)
List of properties (symbols) to determine whether a melisma is playing. Set-
ting this property will influence how lyrics are aligned to notes. For example, if
set to #’(melismaBusy beamMelismaBusy), only manual melismata and manual
beams are considered. Possible values include melismaBusy, slurMelismaBusy,
tieMelismaBusy, and beamMelismaBusy
metronomeMarkFormatter (procedure)
How to produce a metronome markup. Called with 2 arguments, event and context.
middleCPosition (number)
Place of the middle C, measured in half staffspaces. Usually determined by looking
at clefPosition and clefGlyph.
midiInstrument (string)
Name of the MIDI instrument to use
midiMaximumVolume (number)
Analogous to midiMinimumVolume.
midiMinimumVolume (number)
Sets the minimum loudness for MIDI. Ranges from 0 to 1.
minimumFret (number)
The tablature auto string-selecting mechanism selects the highest string with a fret
at least minimumFret
minimumVerticalExtent (pair of numbers)
minimum vertical extent, same format as verticalExtent
ottavation (string)
If set, the text for an ottava spanner. Changing this creates a new text spanner.
pedalSostenutoStrings (list)
See pedalSustainStrings.
Appendix A: Notation manual details 169
pedalSostenutoStyle (symbol)
see pedalSustainStyle.
pedalSustainStrings (list)
List of string to print for sustain-pedal. Format is (up updown down), where each
of the three is the string to print when this is done with the pedal.
pedalSustainStyle (symbol)
A symbol that indicates how to print sustain pedals: text, bracket or mixed (both).
pedalUnaCordaStrings (list)
See pedalSustainStrings.
pedalUnaCordaStyle (symbol)
see pedalSustainStyle.
printKeyCancellation (boolean)
Print restoration alterations before a key signature change.
printOctaveNames (boolean)
Print octave marks for the NoteNames context.
recordEventSequence (procedure)
When Recording_group_engraver is in this context, then upon termination of the
context, this function is called with current context and a list of music objects.
The list of contains entries with start times, music objects and whether they are
processed in this context.
rehearsalMark (integer)
The last rehearsal mark printed.
repeatCommands (list)
This property is read to find any command of the form (volta . x ), where x is a
string or #f
restNumberThreshold (number)
If a multimeasure rest takes less than this number of measures, no number is printed.
skipBars (boolean)
If set to true, then skip the empty bars that are produced by multimeasure notes
and rests. These bars will not appear on the printed output. If not set (the default)
multimeasure notes and rests expand into their full length, printing the appropriate
number of empty bars so that synchronization with other voices is preserved.
@lilypond[fragment,verbatim,center]
r1 r1*3 R1*3 \\property Score.skipBars= ##t r1*3 R1*3
@end lilypond
skipTypesetting (boolean)
When true, all no typesetting is done, speeding up the interpretation phase. This
speeds up debugging large scores.
soloADue (boolean)
set Solo/A due texts in the part combiner?
soloIIText (string)
text for begin of solo for voice “two” when part-combining.
soloText (string)
text for begin of solo when part-combining.
Appendix A: Notation manual details 170
squashedPosition (integer)
Vertical position of squashing for Pitch_squash_engraver.
stanza (markup)
Stanza ‘number’ to print before the start of a verse. Use in Lyrics context.
stemLeftBeamCount (integer)
Specify the number of beams to draw on the left side of the next note. Overrides
automatic beaming. The value is only used once, and then it is erased.
stemRightBeamCount (integer)
See stemLeftBeamCount.
stringOneTopmost (boolean)
Whether the 1st string is printed on the top line of the tablature.
stringTunings (list)
The tablature strings tuning. It is a list of the pitch (in semitones) of each string
(starting with the lower one).
subdivideBeams (boolean)
If set, multiple beams will be subdivided at beat positions by only drawing one
beam over the beat.
systemStartDelimiter (symbol)
Which grob to make for the start of the system/staff? Set to SystemStartBrace,
SystemStartBracket or SystemStartBar.
tablatureFormat (procedure)
Function formatting a tab note head; it takes a string number, a list of string tunings
and Pitch object. It returns the text as a string.
timeSignatureFraction (pair of numbers)
pair of numbers, signifying the time signature. For example #’(4 . 4) is a 4/4 time
signature.
timing (boolean)
Keep administration of measure length, position, bar number, etc? Switch off for
cadenzas.
tonic (pitch)
The tonic of the current scale
tremoloFlags (integer)
Number of tremolo flags to add if no number is specified.
tupletNumberFormatFunction (procedure)
Function taking a music as input, producing a string. This function is called to
determine the text to print on a tuplet bracket.
tupletSpannerDuration (moment)
Normally a tuplet bracket is as wide as the \times expression that gave rise to it.
By setting this property, you can make brackets last shorter. Example
@lilypond[verbatim,fragment]
context Voice \times 2/3 {
property Voice.tupletSpannerDuration = #(ly:make-moment 1 4)
c-[8 c c-] c-[ c c-]
}
@end lilypond
.
Appendix A: Notation manual details 171
verticalAlignmentChildCallback (procedure)
What callback to add to children of a vertical alignment. It determines what pro-
cedure is used on the alignment itself.
verticalExtent (pair of numbers)
Hard coded vertical extent. The format is a pair of dimensions, for example, this
sets the sizes of a staff to 10 (5+5) staffspaces high.
\set Staff.verticalExtent = #’(-5.0 . 5.0)
This does not work for Voice or any other context that doesn’t form a vertical group.
vocNam (markup)
Name of a vocal line, short version.
vocalName (markup)
Name of a vocal line.
voltaOnThisStaff (boolean)
Normally, volta brackets are put only on the topmost staff. Setting this variable
will create a bracket on this staff as well.
voltaSpannerDuration (moment)
This specifies the maximum duration to use for the brackets printed for
\alternative. This can be used to shrink the length of brackets in the situation
where one alternative is very large.
whichBar (string)
This property is read to determine what type of bar line to create.
Example:
\set Staff.whichBar = "|:"
This will create a start-repeat bar in this staff only. Valid values are described in
bar-line-interface.
align-dir (direction)
Which side to align? -1: left side, 0: around center of width, 1: right side.
arch-angle (number)
Turning angle of the hook of a system brace
arch-height (dimension, in staff space)
Height of the hook of a system brace.
arch-thick (number)
Thickness of the hook of system brace.
arch-width (dimension, in staff space)
Width of the hook of a system brace.
arpeggio-direction (direction)
If set, put an arrow on the arpeggio squiggly line.
attachment (pair)
Pair of symbols indicating how a slur should be attached at the ends. The format is
’(left-type . right-type), where both types are symbols. The values of these symbols
may be alongside-stem, stem, head or loose-end.
attachment-offset (pair)
cons of offsets, ’(left-offset . right-offset). This offset is added to the attachments
to prevent ugly slurs. [fixme: we need more documentation here].
auto-knee-gap (dimension, in staff space)
If a gap is found between note heads where a horizontal beam fits that is larger than
this number, make a kneed beam.
avoid-note-head (boolean)
If set, the stem of a chord does not pass through all note heads, but starts at the
last note head.
axes (list) list of axis numbers. In the case of alignment grobs, this should contain only one
number.
balloon-original-callback (procedure)
The original stencil drawer to draw the balloon around.
balloon-padding (dimension, in staff space)
Text to add to help balloon
balloon-text (markup)
Text to add to help balloon
balloon-text-offset (pair of numbers)
Where to put text relative to balloon.
balloon-text-props (list)
Font properties for balloon text.
bar-size (dimension, in staff space)
size of a bar line.
bar-size-procedure (procedure)
Procedure that computes the size of a bar line.
base-shortest-duration (moment)
Spacing is based on the shortest notes in a piece. Normally, pieces are spaced as if
notes at least as short as this are present.
Appendix A: Notation manual details 173
dash-period (number)
the length of one dash + white space. If negative, no line is drawn at all.
dashed (number)
number representing the length of the dashes.
dir-function (procedure)
The function to determine the direction of a beam. Choices include:
beam-dir-majority
number count of up or down notes
beam-dir-mean
mean center distance of all notes
beam-dir-median.
mean center distance weighted per note
direction (direction)
Up or down, left or right?
dot-count (integer)
The number of dots.
duration-log (integer)
The 2-log of the note head duration, i.e. 0=whole note, 1 = half note, etc.
edge-height (pair)
A pair of number specifying the heights of the vertical edges ’(left-height . right-
height).
edge-text (pair)
A pair specifying the texts to be set at the edges ’(left-text . right-text).
enclose-bounds (number)
How much of the bound a spanner should enclose: +1 = completely, 0 = center, -1
not at all.
expand-limit (integer)
maximum number of measures expanded in church rests.
extra-X-extent (pair of numbers)
A grob is enlarged in X dimension by this much.
extra-Y-extent (pair of numbers)
See extra-Y-extent.
extra-offset (pair of numbers)
A pair representing an offset. This offset is added just before outputting the symbol,
so the typesetting engine is completely oblivious to it.
extremity-function (procedure)
A function that calculates the attachment of a slur-end. The function takes a slur
and direction argument and returns a symbol.
extremity-offset-alist (list)
The offset adds to the centre of the note head, or stem.
Format: alist (attachment stem-dir*dir slur-dir*dir) -> offset.
flag-count (number)
The number of tremolo beams.
Appendix A: Notation manual details 176
flag-style (symbol)
a string determining what style of flag-glyph is typeset on a Stem. Valid options
include () and mensural. Additionally, "no-flag" switches off the flag.
flag-width-function (procedure)
Procedure that computes the width of a half-beam (a non-connecting beam.).
font-encoding (symbol)
The font encoding is the broadest category for selecting a font. Options include:
music, number, text, math, braces, dynamic
font-family (symbol)
The font family is the broadest category for selecting text fonts. Options include:
sans, roman
font-magnification (number)
Magnification of the font, when it is selected with font-name.
font-name (string)
Specifies a file name (without extension) of the font to load. This setting override
selection using font-family, font-series and font-shape.
font-series (symbol)
Select the series of a font. Choices include medium, bold, bold-narrow, etc.
font-shape (symbol)
Select the shape of a font. Choices include upright, italic, caps.
font-size (number)
The font size, compared the ‘normal’ size. 0 is style-sheet’s normal size, -1 is smaller,
+1 is bigger. Each step of 1 is approximately 12% larger, 6 steps are exactly a factor
2 larger. Fractional values are allowed.
force-hshift (number)
This specifies a manual shift for notes in collisions. The unit is the note head width
of the first voice note. This is used by note-collision-interface.
forced-distance (dimension, in staff space)
A fixed distance between object reference points in an alignment.
fraction (pair of numbers)
Numerator and denominator of a time signature object.
french-beaming (boolean)
Use French beaming style for this stem. The stem will stop at the innermost beams.
full-size-change (boolean)
Don’t make a change clef smaller.
gap (dimension, in staff space)
Size of a gap in a variable symbol.
gap-count (integer)
Number of gapped beams for tremolo.
glyph (string)
a string determining what (style) of glyph is typeset. Valid choices depend on the
function that is reading this property.
glyph-name (string)
a name of character within font.
Appendix A: Notation manual details 177
glyph-name-procedure (procedure)
Return the name of a character within font, to use for printing a symbol.
grace-space-factor (number)
Space grace notes at this fraction of the spacing-increment.
grow-direction (direction)
Crescendo or decrescendo?
hair-thickness (number)
Thickness of the thin line in a bar line.
height (dimension, in staff space)
Height of an object in staffspace.
height-limit (dimension, in staff space)
Maximum slur height: the longer the slur, the closer it is to this height.
horizontal-shift (integer)
An integer that identifies ranking of note-column for horizontal shifting. This is
used by note-collision-interface.
kern (dimension, in staff space)
Amount of extra white space to add. For bar line, this is the amount of space after
a thick line.
knee (boolean)
Is this beam kneed?
knee-spacing-correction (number)
Factor for the optical correction amount for kneed beams. Set between 0 for no
correction and 1 for full correction.
layer (number)
The output layer [0..2]: layers define the order of printing objects. Objects in lower
layers are overprinted by objects in higher layers.
ledger-line-thickness (pair of numbers)
The thickness of ledger lines: it is the sum of 2 numbers. The first is the factor for
line thickness, and the second for staff space. Both contributions are added.
left-padding (dimension, in staff space)
The amount of space that is put left to a group of accidentals.
left-position (number)
Vertical position of left part of spanner.
length (dimension, in staff space)
User override for the stem length of unbeamed stems.
lengths (list)
Default stem lengths. The list gives a length for each flag-count.
line-count (integer)
The number of staff lines.
measure-count (integer)
The number of measures for a multimeasure rest.
measure-length (moment)
Length of a measure. Used in some spacing situations.
Appendix A: Notation manual details 178
merge-differently-dotted (boolean)
Merge note heads in collisions, even if they have a different number of dots. This
normal notation for some types of polyphonic music.
merge-differently-headed (boolean)
Merge note heads in collisions, even if they have different note heads. The smaller
of the two heads will be rendered invisible. This used polyphonic guitar notation.
The value of this setting is used by note-collision-interface .
minimum-X-extent (pair of numbers)
Minimum size of an object in X dimension, measured in staff space.
minimum-Y-extent (pair of numbers)
See minimum-Y-extent.
minimum-distance (dimension, in staff space)
Minimum distance between rest and notes or beam.
minimum-length (dimension, in staff space)
Try to make a spanner at least this long. This requires an appropriate routine for
the spacing-procedure property.
minimum-space (dimension, in staff space)
Minimum distance that the victim should move (after padding).
neutral-direction (direction)
Which direction to take in the center of the staff.
neutral-position (number)
Position (in half staff spaces) where to flip the direction of custos stem.
new-accidentals (list)
List of (pitch . accidental ) pairs.
no-spacing-rods (boolean)
Items with this property do not cause spacing constraints.
no-stem-extend (boolean)
If set, notes with ledger lines do not get stems extending to the middle staff line.
non-default (boolean)
Set for manually specified clefs.
note-names (hash table)
Vector of strings containing names for easy-notation note heads.
number-visibility (boolean or symbol)
Like bracket-visibility, but for the number.
old-accidentals (list)
List of (pitch . accidental ) pairs.
padding (dimension, in staff space)
Add this much extra space between objects that are next to each other.
penalty (number)
Penalty for breaking at this column. 10000 or more means forbid linebreak, -10000
or less means force linebreak. Other values influence linebreaking decisions as a real
penalty.
pitch-max (pitch)
Top pitch for ambitus.
Appendix A: Notation manual details 179
pitch-min (pitch)
Bottom pitch for ambitus.
positions (pair)
Pair of staff coordinates (left . right ), where both left and right are in the staff-
space unit of the current staff.
print-function (procedure)
Function taking grob as argument, returning a Stencil object.
ratio (number)
Parameter for slur shape. The higher this number, the quicker the slur attains it
height-limit.
remove-first (boolean)
Remove the first staff of a orchestral score?
right-padding (dimension, in staff space)
Space to insert between note and accidentals.
right-position (number)
Vertical position of right part of spanner.
script-priority (number)
A sorting key that determines in what order a script is within a stack of scripts.
self-alignment-X (number)
Specify alignment of an object. The value -1 means left aligned, 0 centered, and 1
right-aligned in X direction. Values in between may also be specified.
self-alignment-Y (number)
like self-alignment-X but for Y axis.
shorten-pair (pair of numbers)
The lengths to shorten a text-spanner on both sides, for example a pedal bracket
shortest-duration-space (dimension, in staff space)
Start with this much space for the shortest duration. This is expressed in spacing-
increment as unit. See also spacing-spanner-interface.
shortest-playing-duration (moment)
The duration of the shortest playing here.
shortest-starter-duration (moment)
The duration of the shortest note that starts here.
side-relative-direction (direction)
Multiply direction of direction-source with this to get the direction of this object.
slope (number)
The slope of this object.
slope-limit (number)
Set slope to zero if slope is running away steeper than this.
space-alist (list)
A table that specifies distances between prefatory items, like clef and time-signature.
The format is an alist of spacing tuples: (break-align-symbol type . distance ),
where type can be the symbols minimum-space or extra-space.
space-function (procedure)
Calculate the vertical space between two beams. This function takes a beam grob
and the maximum number of beams.
Appendix A: Notation manual details 180
spacing-increment (number)
Add this much space for a doubled duration. Typically, the width of a note head.
See also spacing-spanner-interface.
spacing-procedure (procedure)
Procedure for calculating spacing parameters. The routine is called after before-
line-breaking-callback.
stacking-dir (direction)
Stack objects in which direction?
staff-padding (dimension, in staff space)
Maintain this much space between reference points and the staff. Its effect is to
align objects of differing sizes (like the dynamic p and f) on their baselines.
staff-position (number)
Vertical position, measured in half staff spaces, counted from the middle line.
staff-space (dimension, in staff space)
Amount of space between staff lines, expressed in global staffspace.
staffline-clearance (dimension, in staff space)
How far away ties keep from staff lines.
stem-attachment-function (procedure)
A function that calculates where a stem attaches to the note head? This is a fallback
when this information is not specified in the font. The function takes a grob and
axis argument, and returns a (x . y) pair, specifying location in terms of note head
bounding box.
stem-end-position (number)
Where does the stem end (the end is opposite to the support-head.
stem-shorten (list)
How much a stem in a forced direction should be shortened. The list gives an
amount depending on the number of flags/beams.
stem-spacing-correction (number)
Optical correction amount for stems that are placed in tight configurations. For
opposite directions, this amount is the correction for two normal sized stems that
overlap completely.
stroke-style (string)
set to "grace" to turn stroke through flag on.
style (symbol)
This setting determines in what style a grob is typeset. Valid choices depend on the
print-function that is reading this property.
text (markup)
Text markup. See Section 4.5 [Text markup], page 123.
thick-thickness (number)
Bar line thickness, measured in linethickness.
thickness (number)
Bar line thickness, measured in linethickness.
thin-kern (number)
The space after a hair-line in a bar line.
Appendix A: Notation manual details 181
There is also a form of scoping: in the following example, the \paper block also contains a
traLaLa variable, which is independent of the outer \traLaLa.
traLaLa = \notes { c’4 d’4 }
\paper { traLaLa = 1.0 }
In effect, each input file is a scope, and all \header, \midi and \paper blocks are scopes
nested inside that toplevel scope.
Both variables and scoping are implemented in the GUILE module system. An anonymous
Scheme module is attached to each scope. An assignment of the form
traLaLa = \notes { c’4 d’4 }
is internally converted to a Scheme definition
(define traLaLa Scheme value of ‘‘\notes ... ’’ )
This means that input variables and Scheme variables may be freely mixed. In the following
example, a music fragment is stored in the variable traLaLa, and duplicated using Scheme. The
result is imported in a \score by means of a second variable twice:
traLaLa = \notes { c’4 d’4 }
\score { \twice }
In the above example, music expressions can be ‘exported’ from the input to the Scheme inter-
preter. The opposite is also possible. By wrapping a Scheme value in the function ly:export, a
Scheme value is interpreted as if it were entered in LilyPond syntax: instead of defining \twice,
the example above could also have been written as
...
\score { #(ly:export (make-sequential-music newLa)) }
• ‘type’ or interface: Each music name has several ‘types’ or interface, for example, a note is
an event, but it is also a note-event, a rhythmic-event and a melodic-event.
All classes of music are listed in the internals manual, under Music classes.
• C++ object: Each music object is represented by a C++ object. For technical reasons,
different music objects may be represented by different C++ object types. For example, a
note is Event object, while \grace creates a Grace_music object.
We expect that distinctions between different C++ types will disappear in the future.
The actual information of a music expression is stored in properties. For example, a
NoteEvent has pitch and duration properties that store the pitch and duration of that note.
A list of all properties available is in the internals manual, under Music properties.
A compound music expression is a music object that contains other music objects in its
properties. A list of objects can be stored in the elements property of a music object, or
a single ‘child’ music object in the element object. For example, SequentialMusic has its
children in elements, and GraceMusic has its single argument in element. The body of a
repeat is in element property of RepeatedMusic, and the alternatives in elements.
> >
The use of such a function is very limited. The effect of this function is void when applied to
an argument which is does not have multiple children. The following function application has
no effect:
\apply #rev-music-1 \grace { c4 d4 }
In this case, \grace is stored as GraceMusic, which has no elements, only a single element.
Every generally applicable function for \apply must – like music expressions themselves – be
recursive.
The following example is such a recursive function: It first extracts the elements of an
expression, reverses them and puts them back. Then it recurses, both on elements and element
children.
#(define (reverse-music music)
(let* ((elements (ly:music-property music ’elements))
(child (ly:music-property music ’element))
(reversed (reverse elements)))
Appendix C: Interfaces for programmers 185
; set children
(ly:music-set-property! music ’elements reversed)
; recurse
(if (ly:music? child) (reverse-music child))
(map reverse-music reversed)
music))
A slightly more elaborate example is in ‘input/test/reverse-music.ly’.
Some of the input syntax is also implemented as recursive music functions. For example, the
syntax for polyphony
<<a \\ b>>
is actually implemented as a recursive function that replaces the above by the internal equivalent
of
<< \context Voice = "1" { \voiceOne a }
\context Voice = "2" { \voiceTwo b } >>
Other applications of \apply are writing out repeats automatically
(‘input/test/unfold-all-repeats.ly’), saving keystrokes (‘input/test/music-box.ly’)
and exporting LilyPond input to other formats (‘input/test/to-xml.ly’)
See also
‘scm/music-functions.scm’, ‘scm/music-types.scm’, ‘input/test/add-staccato.ly’,
‘input/test/unfold-all-repeats.ly’, and ‘input/test/music-box.ly’.
Bugs
One can not feed the #:line (resp #:center, #:column) command with a variable or the result
of a function call. E.g.:
(markup #:line (fun-that-returns-markups))
is illegal. One should use the make-line-markup (resp make-center-markup, make-column-
markup) function instead:
(markup (make-line-markup (fun-that-returns-markups)))
make sure that this mechanism does not annihilate the vertical effect of our #:translate, we
add an empty string ("") before the translated text. Now the "" will be put above the notes,
and the name is moved in relation to that empty string. The net effect is that the text is moved
to the upper left.
The final result is as follows:
\score {
\notes { \fatText
c’’^\markup \character #"Cleopatra"
e’^\markup \character #"Giulio Cesare"
}
}
>
CLEOPATRA GIULIO CESARE
>
We have used the caps font shape, but suppose that our font that does not have a small-caps
variant. In that case, we have to fake the small caps font, by setting a string in upcase, with
the first letter a little larger:
#(def-markup-command (smallcaps paper props str) (string?)
"Print the string argument in small caps."
(interpret-markup paper props
(make-line-markup
(map (lambda (s)
(if (= (string-length s) 0)
s
(markup #:large (string-upcase (substring s 0 1))
#:translate (cons -0.6 0)
#:tiny (string-upcase (substring s 1)))))
(string-split str #\Space)))))
The smallcaps command first splits its string argument into tokens separated by spaces
((string-split str #\Space)); for each token, a markup is built with the first letter made
large and upcased (#:large (string-upcase (substring s 0 1))), and a second markup built
with the following letters made tiny and upcased (#:tiny (string-upcase (substring s 1))).
As LilyPond introduces a space between markups on a line, the second markup is translated to
the left (#:translate (cons -0.6 0) ...). Then, the markups built for each token are put in
a line by (make-line-markup ...). Finally, the resulting markup is passed to the interpret-
markup function, with the paper and props arguments.
(ly:context-property x ’currentBarNumber)))
\clef treble \clef bass clefs
r4 r8 rest ( *
> >
d~d tie
3 3
\key es \major key signature 3
Appendix D: Cheat sheet 190
>
note’ raise octave >
>
>
note, lower octave
>
c( d e) slur > >
<
<< \new Staff ... >> more staves
<
U V
c-> c-. articulations > >
>
<> chord >
> = = =
\partial 8 upstep
>>>
3
>>
\grace grace notes
> >
twin -- kle lyric hyphen
twin kle
>>
3 3 >> >>
>
\chords { c:dim f:maj7 } chords
>> >>
<<{e f} \\{c d}>> polyphony
s4 s8 s16 spacer rests
Appendix E: GNU Free Documentation License 192
format whose markup has been designed to thwart or discourage subsequent modification
by readers is not Transparent. A copy that is not “Transparent” is called “Opaque”.
Examples of suitable formats for Transparent copies include plain ascii without markup,
Texinfo input format, LaTEX input format, SGML or XML using a publicly available DTD,
and standard-conforming simple HTML designed for human modification. Opaque formats
include PostScript, PDF, proprietary formats that can be read and edited only by propri-
etary word processors, SGML or XML for which the DTD and/or processing tools are not
generally available, and the machine-generated HTML produced by some word processors
for output purposes only.
The “Title Page” means, for a printed book, the title page itself, plus such following pages
as are needed to hold, legibly, the material this License requires to appear in the title page.
For works in formats which do not have any title page as such, “Title Page” means the
text near the most prominent appearance of the work’s title, preceding the beginning of the
body of the text.
2. VERBATIM COPYING
You may copy and distribute the Document in any medium, either commercially or noncom-
mercially, provided that this License, the copyright notices, and the license notice saying
this License applies to the Document are reproduced in all copies, and that you add no
other conditions whatsoever to those of this License. You may not use technical measures
to obstruct or control the reading or further copying of the copies you make or distribute.
However, you may accept compensation in exchange for copies. If you distribute a large
enough number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and you may publicly
display copies.
3. COPYING IN QUANTITY
If you publish printed copies of the Document numbering more than 100, and the Docu-
ment’s license notice requires Cover Texts, you must enclose the copies in covers that carry,
clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-
Cover Texts on the back cover. Both covers must also clearly and legibly identify you as
the publisher of these copies. The front cover must present the full title with all words
of the title equally prominent and visible. You may add other material on the covers in
addition. Copying with changes limited to the covers, as long as they preserve the title of
the Document and satisfy these conditions, can be treated as verbatim copying in other
respects.
If the required texts for either cover are too voluminous to fit legibly, you should put the
first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto
adjacent pages.
If you publish or distribute Opaque copies of the Document numbering more than 100,
you must either include a machine-readable Transparent copy along with each Opaque
copy, or state in or with each Opaque copy a publicly-accessible computer-network location
containing a complete Transparent copy of the Document, free of added material, which
the general network-using public has access to download anonymously at no charge using
public-standard network protocols. If you use the latter option, you must take reasonably
prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that
this Transparent copy will remain thus accessible at the stated location until at least one
year after the last time you distribute an Opaque copy (directly or through your agents or
retailers) of that edition to the public.
It is requested, but not required, that you contact the authors of the Document well before
redistributing any large number of copies, to give them a chance to provide you with an
updated version of the Document.
Appendix E: GNU Free Documentation License 194
4. MODIFICATIONS
You may copy and distribute a Modified Version of the Document under the conditions
of sections 2 and 3 above, provided that you release the Modified Version under precisely
this License, with the Modified Version filling the role of the Document, thus licensing
distribution and modification of the Modified Version to whoever possesses a copy of it. In
addition, you must do these things in the Modified Version:
A. Use in the Title Page (and on the covers, if any) a title distinct from that of the
Document, and from those of previous versions (which should, if there were any, be
listed in the History section of the Document). You may use the same title as a previous
version if the original publisher of that version gives permission.
B. List on the Title Page, as authors, one or more persons or entities responsible for
authorship of the modifications in the Modified Version, together with at least five of
the principal authors of the Document (all of its principal authors, if it has less than
five).
C. State on the Title page the name of the publisher of the Modified Version, as the
publisher.
D. Preserve all the copyright notices of the Document.
E. Add an appropriate copyright notice for your modifications adjacent to the other copy-
right notices.
F. Include, immediately after the copyright notices, a license notice giving the public
permission to use the Modified Version under the terms of this License, in the form
shown in the Addendum below.
G. Preserve in that license notice the full lists of Invariant Sections and required Cover
Texts given in the Document’s license notice.
H. Include an unaltered copy of this License.
I. Preserve the section entitled “History”, and its title, and add to it an item stating at
least the title, year, new authors, and publisher of the Modified Version as given on the
Title Page. If there is no section entitled “History” in the Document, create one stating
the title, year, authors, and publisher of the Document as given on its Title Page, then
add an item describing the Modified Version as stated in the previous sentence.
J. Preserve the network location, if any, given in the Document for public access to a
Transparent copy of the Document, and likewise the network locations given in the
Document for previous versions it was based on. These may be placed in the “History”
section. You may omit a network location for a work that was published at least four
years before the Document itself, or if the original publisher of the version it refers to
gives permission.
K. In any section entitled “Acknowledgments” or “Dedications”, preserve the section’s
title, and preserve in the section all the substance and tone of each of the contributor
acknowledgments and/or dedications given therein.
L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their
titles. Section numbers or the equivalent are not considered part of the section titles.
M. Delete any section entitled “Endorsements”. Such a section may not be included in the
Modified Version.
N. Do not retitle any existing section as “Endorsements” or to conflict in title with any
Invariant Section.
If the Modified Version includes new front-matter sections or appendices that qualify as
Secondary Sections and contain no material copied from the Document, you may at your
option designate some or all of these sections as invariant. To do this, add their titles to
Appendix E: GNU Free Documentation License 195
the list of Invariant Sections in the Modified Version’s license notice. These titles must be
distinct from any other section titles.
You may add a section entitled “Endorsements”, provided it contains nothing but endorse-
ments of your Modified Version by various parties—for example, statements of peer review
or that the text has been approved by an organization as the authoritative definition of a
standard.
You may add a passage of up to five words as a Front-Cover Text, and a passage of up
to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified
Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added
by (or through arrangements made by) any one entity. If the Document already includes
a cover text for the same cover, previously added by you or by arrangement made by the
same entity you are acting on behalf of, you may not add another; but you may replace the
old one, on explicit permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License give permission to
use their names for publicity for or to assert or imply endorsement of any Modified Version.
5. COMBINING DOCUMENTS
You may combine the Document with other documents released under this License, under
the terms defined in section 4 above for modified versions, provided that you include in the
combination all of the Invariant Sections of all of the original documents, unmodified, and
list them all as Invariant Sections of your combined work in its license notice.
The combined work need only contain one copy of this License, and multiple identical
Invariant Sections may be replaced with a single copy. If there are multiple Invariant
Sections with the same name but different contents, make the title of each such section
unique by adding at the end of it, in parentheses, the name of the original author or
publisher of that section if known, or else a unique number. Make the same adjustment to
the section titles in the list of Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections entitled “History” in the various original
documents, forming one section entitled “History”; likewise combine any sections entitled
“Acknowledgments”, and any sections entitled “Dedications”. You must delete all sections
entitled “Endorsements.”
6. COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other documents released under
this License, and replace the individual copies of this License in the various documents with
a single copy that is included in the collection, provided that you follow the rules of this
License for verbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute it individually
under this License, provided you insert a copy of this License into the extracted document,
and follow this License in all other respects regarding verbatim copying of that document.
7. AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate and independent
documents or works, in or on a volume of a storage or distribution medium, does not as a
whole count as a Modified Version of the Document, provided no compilation copyright is
claimed for the compilation. Such a compilation is called an “aggregate”, and this License
does not apply to the other self-contained works thus compiled with the Document, on
account of their being thus compiled, if they are not themselves derivative works of the
Document.
If the Cover Text requirement of section 3 is applicable to these copies of the Document, then
if the Document is less than one quarter of the entire aggregate, the Document’s Cover Texts
may be placed on covers that surround only the Document within the aggregate. Otherwise
they must appear on covers around the whole aggregate.
Appendix E: GNU Free Documentation License 196
8. TRANSLATION
Translation is considered a kind of modification, so you may distribute translations of the
Document under the terms of section 4. Replacing Invariant Sections with translations
requires special permission from their copyright holders, but you may include translations
of some or all Invariant Sections in addition to the original versions of these Invariant
Sections. You may include a translation of this License provided that you also include the
original English version of this License. In case of a disagreement between the translation
and the original English version of this License, the original English version will prevail.
9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document except as expressly
provided for under this License. Any other attempt to copy, modify, sublicense or distribute
the Document is void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under this License will not
have their licenses terminated so long as such parties remain in full compliance.
10. FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions of the GNU Free Doc-
umentation License from time to time. Such new versions will be similar in spirit to
the present version, but may differ in detail to address new problems or concerns. See
http://www.gnu.org/copyleft/.
Each version of the License is given a distinguishing version number. If the Document
specifies that a particular numbered version of this License “or any later version” applies
to it, you have the option of following the terms and conditions either of that specified
version or of any later version that has been published (not as a draft) by the Free Software
Foundation. If the Document does not specify a version number of this License, you may
choose any version ever published (not as a draft) by the Free Software Foundation.
Appendix E: GNU Free Documentation License 197