[ << Musical notation ] | [Top][Contents][Index] | [ Specialist notation >> ] |
[ < Articulations and ornamentations ] | [ Up : Expressive marks attached to notes ] | [ New dynamic marks > ] |
Dynamics
Absolute dynamic marks are specified using a command after a note,
such as c4\ff
. The available dynamic marks are
\ppppp
, \pppp
, \ppp
, \pp
, \p
,
\mp
, \mf
, \f
, \ff
, \fff
,
\ffff
, \fffff
, \fp
, \sf
, \sff
,
\sp
, \spp
, \sfz
, \rfz
, and \n
.
Dynamic marks may be manually placed above or below the staff; see
Direction and placement.
\relative c'' { c2\ppp c\mp c2\rfz c^\mf c2_\spp c^\ff }
A crescendo mark is started with \<
and
terminated with \!
, an absolute dynamic, or an additional
crescendo or decrescendo mark. A decrescendo mark is
started with \>
and is also terminated with \!
, an
absolute dynamic, or another crescendo or decrescendo mark.
\cr
and \decr
may be used instead of \<
and
\>
; \endcr
and \enddecr
maybe used instead of
\!
to end a crescendo or decrescendo mark, respectively.
Hairpins are engraved by default using this notation.
\relative c'' { c2\< c\! d2\< d\f e2\< e\> f2\> f\! e2\> e\mp d2\> d\> c1\! }
A hairpin that is terminated with \!
will end at the
right edge of the note that has the \!
assigned to it. In the
case where it is terminated with the start of another crescendo
or decrescendo mark, it will end at the center of the note
that has the next \<
or \>
assigned to it. The next
hairpin will then start at the right edge of the same note
instead of the usual left edge had it been terminated with \!
before. A hairpin ending on a downbeat will stop at the preceding bar line.
\relative { c''1\< | c4 a c\< a | c4 a c\! a\< | c4 a c a\! }
Hairpins that are terminated with absolute dynamic marks instead of
\!
will also be engraved in a similar way. However, the length
of the absolute dynamic itself can alter where the preceding hairpin
ends.
\relative { c''1\< | c4 a c\mf a | c1\< | c4 a c\ffff a }
Often, marks like crescendo or decrescendo should
begin or end at some point of time during a sustained note. This can
be achieved with \after
, which can also be used to create
delayed articulations or text scripts:
<< \relative { \after 2 \< c'1 d4\f\> e f g \after 2. \pp c,1 \after 2. \fermata e \after 2. ^"Fine." f } \relative { \repeat unfold 12 c'4 c c c c\fermata c c c c } >>
Multiple instances of \after
can be used to engrave multiple marks
on one note. This is particularly useful when adding a crescendo
and decrescendo to the same note:
\relative { c''4\< d\! e\> c\! \after 4 \< \after 2\> \after 2. \! f1 \textLengthOn \after 4 \> \after 2. ^"hush!" c1 g4\pp }
If the first in such a sequence of marks on a single note is supposed
to coincide with the onset of the note, it is convenient to attach
it to an empty chord <>
. This way, all marks can be entered
in their natural visual order:
{ <>\< \after 4 \> \after 2 \! c'1 % easier to write and read than: \after 4 \> \after 2 \! c'1\< }
The \espressivo
command can also be used to indicate a crescendo
and decrescendo on the same note. However, be warned that this is
implemented as an articulation, not a dynamic.
\relative { c''2 b4 a g1\espressivo \after 2. \espressivo c }
Textual crescendo marks begin with \cresc
.
Textual decrescendos begin with \decresc
or \dim
.
Extender lines are engraved as required.
\relative { g'8\cresc a b c b c d e\mf | f8\decresc e d c e\> d c b | a1\dim ~ | a2. r4\! | }
Textual marks for dynamic changes can also replace hairpins:
\relative c'' { \crescTextCresc c4\< d e f\! | \dimTextDecresc g4\> e d c\! | \dimTextDecr e4\> d c b\! | \dimTextDim d4\> c b a\! | \crescHairpin \dimHairpin c4\< d\! e\> d\! | }
To create new absolute dynamic marks or text that should be aligned with dynamics, see New dynamic marks.
Vertical positioning of dynamics is handled by DynamicLineSpanner.
A Dynamics
context is available to engrave dynamics on
their own horizontal line. Use spacer rests to indicate timing.
(Notes in a Dynamics
context will also take up
musical time, but will not be engraved.)
The Dynamics
context can usefully contain some other
items such as text scripts, text spanners, and piano pedal marks.
<< \new Staff \relative { c'2 d4 e | c4 e e,2 | g'4 a g a | c1 | } \new Dynamics { s1\< | s1\f | s2\dim s2-"rit." | s1\p | } >>
Note: Even if there is only a single absolute dynamic mark like
\p
in a score, LilyPond always creates two
objects for it, a DynamicText
and a
DynamicLineSpanner
object, and the properties to control
the dynamic mark are shared between these two objects. For
example, the size can be changed with the
DynamicText.font-size
property, while the vertical position
is controlled by DynamicLineSpanner.Y-offset
.
As a consequence, code like
\tweak font-size 5 \p
works but
\tweak Y-offset 5 \p
does not. You have to say
\tweak DynamicLineSpanner.Y-offset 5 \p
instead.
Predefined commands
\dynamicUp
,
\dynamicDown
,
\dynamicNeutral
,
\crescTextCresc
,
\dimTextDim
,
\dimTextDecr
,
\dimTextDecresc
,
\crescHairpin
,
\dimHairpin
.
Selected Snippets
Setting hairpin behavior at bar lines
If the note which ends a hairpin falls on a downbeat, the hairpin stops
at the bar line immediately preceding. This behavior can be controlled
by overriding the 'to-barline
property.
\relative c'' { e4\< e2. e1\! \override Hairpin.to-barline = ##f e4\< e2. e1\! }
Setting the minimum length of hairpins
If hairpins are too short, they can be lengthened by modifying the
minimum-length
property of the Hairpin
object.
<< { \after 4 \< \after 2 \> \after 2. \! f'1 \override Hairpin.minimum-length = 8 \after 4 \< \after 2 \> \after 2. \! f'1 } { \repeat unfold 8 c'4 } >>
Aligning the ends of hairpins to NoteColumn directions
The ends of hairpins may be aligned to the LEFT
, CENTER
or RIGHT
of NoteColumn
grobs by overriding the property
endpoint-alignments
, which is a pair of numbers representing the
left and right ends of the hairpin. endpoint-alignments
are
expected to be directions (either -1, 0 or 1). Other values will
be transformed with a warning. The right end of a hairpin terminating
at a rest is not affected, always ending at the left edge of the rest.
{ c'2\< <c' d'>\! | \override Hairpin.endpoint-alignments = #'(1 . -1) c'2\< <c' d'>\! | \override Hairpin.endpoint-alignments = #`(,LEFT . ,CENTER) c'2\< <c' d'>\! | }
Moving the ends of hairpins
The ends of hairpins may be offset by setting the shorten-pair
property of the Hairpin
object. Positive values move endpoints
to the right, negative to the left. Unlike the minimum-length
property, this property only affects the appearance of the hairpin; it
does not adjust horizontal spacing (including the position of bounding
dynamics). This method is thus suitable for fine-tuning a hairpin
within its allotted space.
{ c'1~\< c'2~ c'\! \once \override Hairpin.shorten-pair = #'(2 . 2) c'1~\< c'2~ c'\! \once \override Hairpin.shorten-pair = #'(-2 . -2) c'1~\< c'2~ c'\! c'1~\p-\tweak shorten-pair #'(2 . 0)\< c'2~ c'\ffff }
Printing hairpins using al niente notation
Hairpin dynamics may be printed with a circled tip (“al niente”
notation) by setting the circled-tip
property of the
Hairpin
object to #t
.
\relative c'' { \override Hairpin.circled-tip = ##t c2\< c\! c4\> c\< c2\! }
Printing hairpins in various styles
Hairpin dynamics may be created in a variety of styles.
\paper { tagline = ##f } \relative c'' { \override Hairpin.stencil = #flared-hairpin a4\< a a a\f a4\p\< a a a\ff a4\sfz\< a a a\! \override Hairpin.stencil = #constante-hairpin a4\< a a a\f a4\p\< a a a\ff a4\sfz\< a a a\! \override Hairpin.stencil = #flared-hairpin a4\> a a a\f a4\p\> a a a\ff a4\sfz\> a a a\! \override Hairpin.stencil = #constante-hairpin a4\> a a a\f a4\p\> a a a\ff a4\sfz\> a a a\! }
Vertically aligned dynamics and textscripts
All DynamicLineSpanner
objects (hairpins and dynamic texts) are
placed with their reference line at least 'staff-padding
from
the staff, unless other notation forces them to be farther. Setting
'staff-padding
to a sufficiently large value aligns the
dynamics.
The same idea, together with \textLengthOn
, is used to align
the text scripts along their baseline.
music = \relative c' { a'2\p b\f e4\p f\f\> g, b\p c2^\markup { \huge gorgeous } c^\markup { \huge fantastic } } { \music \break \override DynamicLineSpanner.staff-padding = 3 \textLengthOn \override TextScript.staff-padding = 1 \music } \paper { tagline = ##f }
Breaking vertical alignment of dynamics and textscripts
By default, LilyPond uses DynamicLineSpanner
grobs to vertically
align successive dynamic objects like hairpins and dynamic
text. However, this is not always wanted. By inserting
\breakDynamicSpan
, which ends the alignment spanner
prematurely, this vertical alignment can be avoided.
{ g1\< | e''\f\> | c'\p } { g1\< | e''\breakDynamicSpan\f\> | c'\p } \paper { tagline = ##f }
Hiding the extender line for text dynamics
Text style dynamic changes (such as cresc. and dim.) are printed with a dashed line showing their extent. This line can be suppressed in the following way:
\relative c'' { \override DynamicTextSpanner.style = #'none \crescTextCresc c1\< | d | b | c\! }
Changing text and spanner styles for text dynamics
The text used for crescendos and decrescendos can be
changed by modifying the context properties crescendoText
and
decrescendoText
.
The style of the spanner line can be changed by modifying the
'style
property of DynamicTextSpanner
. The default value
is 'dashed-line
, and other possible values include 'line
,
'dotted-line
and 'none
.
\relative c'' { \set crescendoText = \markup { \italic { cresc. poco } } \set crescendoSpanner = #'text \override DynamicTextSpanner.style = #'dotted-line a2\< a a2 a a2 a a2 a\mf }
See also
Music Glossary: al niente, crescendo, decrescendo, hairpin.
Learning Manual: Articulations and dynamics.
Notation Reference: Direction and placement, New dynamic marks, Enhancing MIDI output, Controlling MIDI dynamics.
Snippets: Expressive marks.
Internals Reference: DynamicText, Hairpin, DynamicLineSpanner, Dynamics.
[ << Musical notation ] | [Top][Contents][Index] | [ Specialist notation >> ] |
[ < Articulations and ornamentations ] | [ Up : Expressive marks attached to notes ] | [ New dynamic marks > ] |