@chapter Reference Manual
This document describes GNU LilyPond and its input format. The last
-revision of this document was for LilyPond 1.3.138.
+revision of this document was for LilyPond 1.3.141.
@menu
LilyPond is linked to GUILE, GNU's Scheme library for extension. The
Scheme library provides the glue that holds together the low-level
-routines and separate modules general, which are C++
+routines and separate modules general, which are C++.
When lilypond is run to typeset sheet music, the following happens:
@itemize @bullet
Skips the amount of time specified by @var{duration}. If no other music
is played, a gap will be left for the skipped time with no notes
-printed. The short hand is only available in Note and Chord mode.
+printed. The shorthand is only available in Note and Chord mode.
@code{\slurBoth},
@code{\slurDown},
@code{\slurUp}.
-@cindex @code{\slurBoth}
-@cindex @code{\slurDown}
-@cindex @code{\slurUp}
-Aand for ties use
+
+@cindex @code{\tieBoth}
+@cindex @code{\tieDown}
+@cindex @code{\tieUp}
+For ties use
@code{\tieBoth},
@code{\tieDown},
@code{\tieUp}.
+@cindex @code{\dynacmicBoth}
+@cindex @code{\dynamicDown}
+@cindex @code{\dynamicUp}
+For dynamics use
+@code{\dynamicBoth},
+@code{\dynamicDown},
+@code{\dynamicUp}.
+
+@c text scripts? articulation scripts? fingering?
+
@cindex @code{\voiceOne}
@cindex @code{\voiceTwo}
@cindex @code{\voiceThree}
@code{Voice.noAutoBeaming} to true. You you may find this necessary for
a melody that goes with lyrics.
+@refbugs
+
+It is not possible to specify beaming for beams with mixed durations,
+that differs from the beaming of all separate durations, ie, you'll
+have to specify manual beams to get:
+@lilypond[fragment,singleline,relative]
+ \property Voice.autoBeamSettings
+ \override #'(end * * * *) = #(make-moment 3 8)
+ \time 12/8; c'8 c c c16 c c c c c [c c c c] c8 c c4
+@end lilypond
+
+
@c . {Manual beams}
@cindex Automatic beams
@subsection Manual beams
rests or bar lines, so if you want that, specify the begin and end point
manually using @code{[} and @code{]}:
-@quotation
@lilypond[fragment,relative,verbatim]
\context Staff {
r4 [r8 g'' a r8] r8 [g | a] r8
[f8 r16 \property Voice.stemLeftBeamCount = #1 f g a]
}
@end lilypond
-@end quotation
@cindex @code{stemRightBeamCount}
The beam symbol can be tweaked through @code{Voice.Beam}'s
Set @code{height} to zero, to get horizontal beams:
-@quotation
@lilypond[fragment,relative,verbatim]
\property Voice.Beam \set #'direction = #1
\property Voice.Beam \set #'height = #0
[a''8 e' d c]
@end lilypond
-@end quotation
Here's how you'd specify a weird looking beam that instead of being
horizontal, falls two staff spaces:
-@quotation
@lilypond[fragment,relative,verbatim]
\property Voice.Beam \set #'staff-position = #2
\property Voice.Beam \set #'height = #-2
[c'8 c]
@end lilypond
-@end quotation
@cindex @code{default-neutral-direction}
@node Expressive marks
Maybe reinclude other slur features and move back to tricks? Esp. the
second example, how to fix, can be very helpful.
-@quotation
@lilypond[fragment,relative,verbatim]
\property Voice.Slur \set #'direction = #1
\property Voice.Stem \set #'length = #5.5
\property Voice.Slur \set #'attachment = #'(stem . stem)
g8(g)g4
@end lilypond
-@end quotation
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:
-@quotation
@lilypond[fragment,relative,verbatim]
\property Voice.Stem \set #'direction = #1
\property Voice.Slur \set #'direction = #1
\property Voice.Slur \set #'attachment = #'(stem . stem)
d,32( d'4 )d8..
@end lilypond
-@end quotation
Similarly, the curvature of a slur is adjusted to stay clear of note
* Articulation::
* Text scripts::
* Grace notes::
+* Glissando ::
+* Dynamics::
@end menu
@c . {Articulation}
stem. This behavior can be controlled with the
@code{Stem}.@code{flag-style} property.
-@quotation
@lilypond[fragment,verbatim]
\relative c'' {
\grace c8 c4 \grace { [c16 c16] } c4
\grace { \property Grace.Stem \override #'flag-style = #'() c16 } c4
}
-
@end lilypond
-@end quotation
At present, nesting @code{\grace} notes is not supported. The following
@c . {Glissando}
@node Glissando
-@subsubsection Glissando
+@subsection Glissando
@cindex Glissando
@cindex @code{\glissando}
A glissando line can be requested by attaching a @code{\glissando} to a
note:
-@quotation
@lilypond[fragment,relative,verbatim]
c'' \glissando c'
@end lilypond
-@end quotation
@refbugs
@c . {Dynamics}
@node Dynamics
-@subsubsection Dynamics
+@subsection Dynamics
@cindex Dynamics
@code{\fff}, @code{\fff}, @code{\fp}, @code{\sf}, @code{\sff},
@code{\sp}, @code{\spp}, @code{\sfz}, and @code{\rfz}.
+@lilypond[verbatim,singleline,fragment,relative]
+ c''\ppp c\pp c \p c\mp c\mf c\f c\ff c\fff
+ c2\sf c\rfz
+@end lilypond
@cindex Crescendo and Decrescendo
@cindex crescendo
@lilypond[fragment,verbatim,center]
c'' \< \! c'' d'' \decr e'' \rced
- < f''1 { s4 \< \! s2 \> \! s4 } >
+ < f''1 { s4 s4 \< \! s4 \> \! s4 } >
@end lilypond
-[BUG in \> ! ]
-
You can also use a text saying @emph{cresc.} instead of hairpins. Here
is an example how to do it:
@end lilypond
+@refbugs
+When using spacer notes to subdivide note dynamics and @code{linewidth =
+-1}, starting a hairpin on the first spacer note (the one coinciding
+with the real note) exposes an embarassing bug.
@end lilypond
With alternative endings:
-@quotation
@lilypond[fragment,verbatim]
c'1
\repeat volta 2 {c'4 d' e' f'}
\alternative { {d'2 d'} {f' f} }
@end lilypond
-@end quotation
Folded repeats look like this:@footnote{Folded repeats offer little
more over simultaneous music. However, it is to be expected that
more functionality -- especially for the MIDI backend -- will be
implemented at some point in the future.}
-@quotation
@lilypond[fragment,verbatim]
c'1
\repeat fold 2 {c'4 d' e' f'}
\alternative { {d'2 d'} {f' f} }
@end lilypond
-@end quotation
-
If you don't give enough alternatives for all of the repeats, then
the first alternative is assumed to be repeated often enough to equal
the specified number of repeats.
-@quotation
@lilypond[fragment,verbatim]
\context Staff {
\relative c' {
}
}
@end lilypond
-@end quotation
@refbugs
printed once, and then the pattern is replaced with a special sign.
@lilypond[verbatim,singleline]
- \context Voice { \repeat "percent" 5 { c'1 } }
+ \context Voice { \repeat "percent" 4 { c'4 }
+ \repeat "percent" 2 { c'2 es'2 f'4 fis'4 g'4 c''4 }
+}
@end lilypond
-At present, only repeats of whole measures are supported.
+@refbugs
+
+You can not nest percent repeats, filling in the first measure with
+slashes, and repeating that measure with percents.
@node Rhythmic music
@section Rhythmic music
@code{\sustainDown}, @code{\sustainUp}, @code{\unaChorda},
@code{\treChorde}, @code{\sostenutoDown} and @code{\sostenutoUp}.
-These identifiers are short hands for spanner commands of the types
+These identifiers are shorthands for spanner commands of the types
@code{Sustain}, @code{UnaChorda} and @code{Sostenuto}:
@lilypond[fragment,verbatim]
@code{\arpeggio} to a note of the chord.
-@quotation
@lilypond[fragment,relative,verbatim]
\context Voice <c'\arpeggio e g c>
@end lilypond
-@end quotation
When an arpeggio crosses staffs in piano music, you attach an arpeggio
to the chords in both staffs, and set
@code{PianoStaff.connectArpeggios}.
-@quotation
@lilypond[fragment,relative,verbatim]
\context PianoStaff <
\property PianoStaff.connectArpeggios = ##t
\context Voice = other { \clef bass; <c,,\arpeggio e g>}
>
@end lilypond
-@end quotation
This command creates @code{Arpeggio} grobs.
can be printed automatically. This is enabled if the property
@code{PianoStaff.followVoice} is set to true:
-@quotation
@lilypond[fragment,relative,verbatim]
\context PianoStaff <
\property PianoStaff.followVoice = ##t
\context Staff=two {\clef bass; \skip 1*2;}
>
@end lilypond
-@end quotation
@c . {Lyrics}
Throughout these examples, chords have been shifted around the staff
using @code{\transpose}.
-
-@quotation
-
@lilypond[fragment,verbatim]
\transpose c'' {
\chords {
c:9 c:9-.5+.7+ c:3-.5- c:4.6.8
}
}
-
@end lilypond
-@end quotation
@cindex @code{aug}
@cindex @code{dim}
`@code{maj}' which adds a raised 7th, and `@code{sus}'
which replaces the 5th with a 4th.
-@quotation
-
@lilypond[fragment,verbatim]
\transpose c'' {
\chords {
c1:m c:min7 c:maj c:aug c:dim c:sus
}
}
-
@end lilypond
-@end quotation
Chord subtractions are used to eliminate notes from a chord. The
The chords may be entered either using the notation described above, or
directly using simultaneous music.
-@quotation
@lilypond[verbatim,singleline]
scheme = \notes {
\chords {a1 b c} <d f g> <e g b>
>
}
@end lilypond
-@end quotation
You can make the chord changes stand out by setting property
@code{ChordNames.chordChanges} to true. This will only display chord
names when there's a change in the chords scheme and at the start of the
line.
-@quotation
@lilypond[verbatim]
scheme = \chords {
c1:m \break c:m c:m c:m d
\context Staff \transpose c'' \scheme
> }
@end lilypond
-@end quotation
LilyPond examines chords specified as lists of notes to determine a name
to give the chord. LilyPond will not try to identify chord inversions or
[base vs. bass ?]
-@quotation
@lilypond[verbatim,center,singleline]
scheme = \notes {
<c'1 e' g'>
\score {
<
- \context ChordNamesVoice \scheme
+ \context ChordNames \scheme
\context Staff \scheme
>
}
@end lilypond
-@end quotation
By default LilyPond uses chord name system proposed by Harald Banter
a tone. The first version will print sharps and the second version
will print flats.
-@quotation
@lilypond[fragment,verbatim]
\context Staff {
\clef "F";
\transpose des'' { \key e \major; c d e f }
\transpose cis'' { \key e \major; c d e f }
}
-
@end lilypond
-@end quotation
If you want to use both @code{\transpose} and @code{\relative}, then
you must use @code{\transpose} first. @code{\relative} will have no
documentation. Look for @code{Thread_devnull_engraver}
@code{Voice_devnull_engraver} and @code{A2_engraver}.
+@refbugs
+
+In @code{soloADue} mode, when the two voices play the same notes on and
+off, the part combiner may typeset @code{a2} more than once in a
+measure.
+
+@lilypond[fragment,singleline]
+ \context Staff <
+ \context Voice=one \partcombine Voice
+ \context Thread=one \relative c'' {
+ c b c b c a c a
+ }
+ \context Thread=two \relative c'' {
+ b b b b f a f a
+ }
+ >
+@end lilypond
+
@cindex @code{Thread_devnull_engraver}
@cindex @code{Voice_engraver}
@cindex @code{A2_engraver}
thus helps the player or singer to manage line breaks during
performance, thus enhancing readability of a score.
-@quotation
@lilypond[verbatim]
\score {
\notes { c'1 d' e' d' \break c' d' e' d' }
}
}
@end lilypond
-@end quotation
Custodes were frequently used in music notation until the 16th century.
There were different appearences for different notation styles.
Here @var{symbol} is a Scheme expression of symbol type, @var{context}
and @var{grobname} are strings and @var{value} is a Scheme expression.
+If you want to be
+Correct nesting of @code{\override}, @code{\set}, @code{\revert} is as
+follows
+
+@example
+\override \set \set \set \set
+\revert
+@end example
+
+This is always correct, but if you know the default value, you can also use
+@example
+\set \set \set \set
+\set @var{to default value}
+@end example
+
+If there is no default (i.e. by default, the grob property is unset),
+then you can use
+@example
+\set \set \set \set \set
+\revert
+@end example
+
+
@refbugs
LilyPond will hang or crash if @var{value} contains cyclic references.
+The backend is not very strict in type-checking grob properties. If you
+@code{\revert} properties that are expected to be set by default,
+LilyPond may crash.
@cindex font magnification
@cindex @code{font-interface}
-@refbugs
-
@node Text markup
@subsection Text markup
@item @code{linewidth}
Sets the width of the lines.
-If set to a negative value, a single
- unjustified line is produced.
+If set to a negative value, a single unjustified line is produced.
+@c rename to singleLinePaper ?
+The shorthand @code{\singleLine} defines a default paper block that
+produces a single line.
@cindex @code{textheight}
of type @var{contexttype} and with name @var{contextname}. If this
context does not exist, it will be created.
-@quotation
-
@lilypond[verbatim,singleline]
\score {
\notes \relative c'' {
}
@end lilypond
-@end quotation
In this example, the @code{c} and @code{d} are printed on the
default staff. For the @code{e}, a context Staff called
such an identifier outside of @code{\score}, you must do
@quotation
-
@example
\paper @{
foo = \translator @{ @dots{} @}