Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
When revising a translation, copy the HEAD committish of the
- version that you are working on. See TRANSLATION for details.
+ version that you are working on. For details, see the Contributors'
+ Guide, node Updating translation committishes..
@end ignore
@c \version "2.12.0"
@cindex NoteHead, example of overriding
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
-c d
+c4 d
\override NoteHead #'color = #red
-e f g
+e4 f |
\override NoteHead #'color = #green
-a b c
+g4 a b c |
@end lilypond
@strong{\revert command}
@cindex NoteHead, example of overriding
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
-c d
+c4 d
\override NoteHead #'color = #red
-e f g
+e4 f |
\override NoteHead #'color = #green
-a
+g4 a
\revert NoteHead #'color
-b c
+b4 c |
@end lilypond
@strong{\once prefix}
@cindex NoteHead, example of overriding
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
-c d
+c4 d
\once \override NoteHead #'color = #red
-e f g
+e4 f |
\once \override NoteHead #'color = #green
-a b c
+g4 a b c |
@end lilypond
@strong{\overrideProperty command}
There is another form of the override command,
@code{\overrideProperty}, which is occasionally required.
We mention it here for completeness, but for details see
-@ruser{Difficult tweaks}.
+@rextend{Difficult tweaks}.
@c Maybe explain in a later iteration -td
@strong{\tweak command}
@cindex NoteHead, example of overriding
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
- <c e g>4
- \once \override NoteHead #'font-size = #-3
- <c e g>
- <c e g>
+<c e g>4
+\once \override NoteHead #'font-size = #-3
+<c e g>4
+<c e g>4
@end lilypond
We see the override affects @emph{all} the note heads in the chord.
@cindex @code{\tweak}, example
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
- <c e g>4
- <c \tweak #'font-size #-3 e g>4
+<c e g>4
+<c \tweak #'font-size #-3 e g>4
@end lilypond
Note that the syntax of @code{\tweak} is different from that
@cindex @code{\tweak}, example
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
-a ^Black
- -\tweak #'color #red ^Red
- -\tweak #'color #green _Green
+a4^"Black"
+ -\tweak #'color #red ^"Red"
+ -\tweak #'color #green _"Green"
@end lilypond
@noindent
\tweak #'direction #up
\times 4/3 {
\tweak #'color #red
- \times 2/3 { c8[ c8 c8] }
- \times 2/3 { c8[ c8 c8] }
- \times 2/3 { c8[ c8 c8] }
+ \times 2/3 { c8[ c c] }
+ \times 2/3 { c8[ c c] }
+ \times 2/3 { c8[ c c] }
}
@end lilypond
@c NOTE Tuplet brackets collide if notes are high on staff
@c See issue 509
@lilypond[quote,ragged-right,verbatim,fragment,relative=1]
-\times 2/3 { c8[ c c]}
+\times 2/3 { c8[ c c] }
\once \override TupletNumber
#'text = #tuplet-number::calc-fraction-text
\times 2/3 {
- c[ c]
- c[ c]
+ c8[ c]
+ c8[ c]
\once \override TupletNumber #'transparent = ##t
\times 2/3 { c8[ c c] }
-\times 2/3 { c8[ c c]}
+ \times 2/3 { c8[ c c] }
}
@end lilypond
Let's use a concrete example with a simple fragment of real
music:
+@c Mozart, Die Zauberflöte Nr.7 Duett
+
@lilypond[quote,verbatim,relative=2]
{
+ \key es \major
\time 6/8
{
- r4 b8 b[( g]) g |
- g[( e]) e d[( f]) a |
- a g
+ r4 bes8 bes[( g]) g |
+ g8[( es]) es d[( f]) as |
+ as8 g
}
\addlyrics {
- The man who feels love's sweet e -- mo -- tion
+ The man who | feels love's sweet e -- | mo -- tion
}
}
@end lilypond
Line thickness, generally measured in @code{line-thickness}
@end example
-This looks a good bet to change the heaviness. It tells us that
+This looks a good bet to change the heaviness. It tells us that
the value of @code{thickness} is a simple @emph{number},
that the default value is 1.2, and that the units are
in another property called @code{line-thickness}.
@lilypond[quote,verbatim,relative=2]
{
+ \key es \major
\time 6/8
{
% Increase thickness of all following slurs from 1.2 to 5.0
\override Slur #'thickness = #5.0
- r4 b8 b[( g]) g |
- g[( e]) e d[( f]) a |
- a g
+ r4 bes8 bes[( g]) g |
+ g8[( es]) es d[( f]) as |
+ as8 g
}
\addlyrics {
- The man who feels love's sweet e -- mo -- tion
+ The man who | feels love's sweet e -- | mo -- tion
}
}
@end lilypond
@lilypond[quote,verbatim,relative=2]
{
+ \key es \major
\time 6/8
{
- r4 b8
+ r4 bes8
% Increase thickness of immediately following slur only
\once \override Slur #'thickness = #5.0
- b[( g]) g |
- g[( e]) e d[( f]) a |
- a g
+ bes8[( g]) g |
+ g8[( es]) es d[( f]) as |
+ as8 g
}
\addlyrics {
- The man who feels love's sweet e -- mo -- tion
+ The man who | feels love's sweet e -- | mo -- tion
}
}
@end lilypond
@lilypond[quote,verbatim,relative=2]
{
+ \key es \major
\time 6/8
{
- r4 b8
+ r4 bes8
% Increase thickness of immediately following slur only
\once \override Slur #'thickness = #5.0
- b[( g]) g |
+ bes[( g]) g |
% Increase thickness of immediately following slur only
\once \override Slur #'thickness = #5.0
- g[( e]) e d[( f]) a |
- a g
+ g8[( es]) es d[( f]) as |
+ as8 g
}
\addlyrics {
- The man who feels love's sweet e -- mo -- tion
+ The man who | feels love's sweet e -- | mo -- tion
}
}
@end lilypond
@lilypond[quote,verbatim,relative=2]
{
+ \key es \major
\time 6/8
{
- r4 b8
+ r4 bes8
% Increase thickness of all following slurs from 1.2 to 5.0
\override Slur #'thickness = #5.0
- b[( g]) g |
- g[( e])
+ bes[( g]) g |
+ g8[( es]) es
% Revert thickness of all following slurs to default of 1.2
\revert Slur #'thickness
- e d[( f]) a |
- a g
+ d8[( f]) as |
+ as8 g
}
\addlyrics {
- The man who feels love's sweet e -- mo -- tion
+ The man who | feels love's sweet e -- | mo -- tion
}
}
@end lilypond
@code{thickness} or @code{font-shape}, others are used as values that
can be given to properties, like @code{italic}. Note the distinction
from arbitrary text strings, which would appear as @code{"a text
-string"}; for more details about symbols and strings, see @ref{Scheme
-tutorial}.
+string"}; for more details about symbols and strings, see
+@rextend{Scheme tutorial}.
So we see that the @code{\override} command needed to print the lyrics
in italics is:
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
+ \key es \major
\time 6/8
{
- r4 b8 b[( g]) g |
- g[( e]) e d[( f]) a |
- a g
+ r4 bes8 bes[( g]) g |
+ g8[( es]) es d[( f]) as |
+ as8 g
}
\addlyrics {
\override LyricText #'font-shape = #'italic
- The man who feels love's sweet e -- mo -- tion
+ The man who | feels love's sweet e -- | mo -- tion
}
}
@end lilypond
@seealso
-Learning Manual: @ref{Scheme tutorial}.
+Extending: @rextend{Scheme tutorial}.
@node Types of properties
@seealso
-Learning Manual: @ref{Scheme tutorial}.
+Extending: @rextend{Scheme tutorial}.
@node Appearance of objects
\time 12/16
\override BarLine #'stencil = ##f
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
\time 12/16
\override Staff.BarLine #'stencil = ##f
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
@lilypond[quote,verbatim,relative=2]
{
- c c
+ c4 c
\once \override NoteHead #'stencil = #point-stencil
- c c
+ c4 c
}
@end lilypond
\time 12/16
\override Staff.BarLine #'break-visibility = #'#(#f #f #f)
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
\time 12/16
\override Staff.TimeSignature #'transparent = ##t
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
\time 12/16
\override Staff.TimeSignature #'stencil = ##f
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
\time 12/16
\override Staff.BarLine #'color = #white
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
\time 12/16
\override Staff.BarLine #'color = #(x11-color 'white)
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
\time 12/16
\override Staff.BarLine #'color = #(rgb-color 1 1 1)
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
\override Voice.Stem #'color = #(x11-color 'grey85)
\override Staff.BarLine #'color = #(x11-color 'grey10)
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\new Staff ="main" {
- \relative g' {
- r4 g8 g c4 c8 d |
- e4 r8
- <<
- { f c c }
- \new Staff \with {
- alignAboveContext = #"main" }
- { f8 f c }
- >>
- r4 |
- }
- }
+ \relative g' {
+ r4 g8 g c4 c8 d |
+ e4 r8
+ <<
+ { f8 c c }
+ \new Staff \with {
+ alignAboveContext = #"main" }
+ { f8 f c }
+ >>
+ r4 |
+ }
+}
@end lilypond
Ossia are normally written without clef and time signature, and
r4 g8 g c4 c8 d |
e4 r8
<<
- { f c c }
+ { f8 c c }
\new Staff \with {
alignAboveContext = #"main"
}
r4 g8 g c4 c8 d |
e4 r8
<<
- { f c c }
+ { f8 c c }
\new Staff \with {
alignAboveContext = #"main"
% Don't print clefs in this staff
% Don't print time signatures in this staff
\override TimeSignature #'stencil = ##f
}
- { f8 f c }
+ { f8 f c }
>>
r4 |
}
r4 g8 g c4 c8 d |
e4 r8
<<
- { f c c }
+ { f8 c c }
\new Staff \with {
alignAboveContext = #"main"
\override Clef #'stencil = ##f
% Reduce all font sizes by ~24%
fontSize = #-2
}
- { f8 f c }
+ { f8 f c }
>>
r4 |
}
hairpins are given a thickness of 1 unit of @code{line-thickness},
while the @code{thickness} of a note stem is 1.3. Note, though,
that some thickness properties are different; for example, the
-thickness of beams is measured in staff-spaces.
+thickness of beams is controlled by the value of the
+@code{beam-thickness} property, which is measured in staff-spaces.
So how are lengths to be scaled in proportion to the font size?
This can be done with the help of a special function called
r4 g8 g c4 c8 d |
e4 r8
<<
- { f c c }
+ { f8 c c }
\new Staff \with {
alignAboveContext = #"main"
\override Clef #'stencil = ##f
% Reduce stem length and line spacing to match
\override StaffSymbol #'staff-space = #(magstep -2)
}
- { f8 f c }
+ { f8 f c }
>>
r4 |
}
@code{outside-staff-priority}. The outside-staff objects are
taken one by one, beginning with the object with the lowest
@code{outside-staff-priority}, and placed so that they do not
-collide with any objects that have already been placed. That is,
+collide with any objects that have already been placed. That is,
if two outside-staff grobs are competing for the same space, the
one with the lower @code{outside-staff-priority} will be placed
closer to the staff. If two objects have the same
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
c2^"Text1"
-c^"Text2"
-c^"Text3"
-c^"Text4"
+c2^"Text2" |
+c2^"Text3"
+c2^"Text4" |
@end lilypond
Staves are also positioned, by default, as closely together as
@lilypond[quote,ragged-right,verbatim]
<<
\new Staff {
- \relative c' { c a, }
+ \relative c' { c4 a, }
}
\new Staff {
- \relative c'''' { c a, }
+ \relative c'''' { c4 a, }
}
>>
@end lilypond
@cindex direction property, example
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
-a4 g c a
+a4 g c a |
\override Stem #'direction = #DOWN
-a g c a
+a4 g c a |
\override Stem #'direction = #UP
-a g c a
+a4 g c a |
\revert Stem #'direction
-a g c a
+a4 g c a |
@end lilypond
Here we use the constants @code{DOWN} and @code{UP}.
followed after the affected note by the corresponding
@code{\xxxNeutral} command.
-@subheading Fingering
+@unnumberedsubsubsec Fingering
@cindex fingering, placement
@cindex fingering, chords
@cindex direction property, example
@lilypond[quote,verbatim,relative=2]
-c-5 a-3 f-1 c'-5
+c4-5 a-3 f-1 c'-5 |
\override Fingering #'direction = #DOWN
-c-5 a-3 f-1 c'-5
+c4-5 a-3 f-1 c'-5 |
\override Fingering #'direction = #UP
-c-5 a-3 f-1 c'-5
+c4-5 a-3 f-1 c'-5 |
@end lilypond
However, overriding the @code{direction} property is not the
@cindex fingering example
@lilypond[quote,verbatim,relative=2]
-c-5 a-3 f-1 c'-5
-c_5 a_3 f_1 c'_5
-c^5 a^3 f^1 c'^5
+c4-5 a-3 f-1 c'-5 |
+c4_5 a_3 f_1 c'_5 |
+c4^5 a^3 f^1 c'^5 |
@end lilypond
The @code{direction} property is ignored for chords, but the
@cindex fingering example
@lilypond[quote,verbatim,relative=2]
-<c-5 g-3>
-<c-5 g-3 e-2>
-<c-5 g-3 e-2 c-1>
+<c-5 g-3>4
+<c-5 g-3 e-2>4
+<c-5 g-3 e-2 c-1>4
@end lilypond
@noindent
@cindex fingering example
@lilypond[quote,verbatim,relative=2]
-<c-5 g-3 e-2 c-1>
-<c^5 g_3 e_2 c_1>
-<c^5 g^3 e^2 c_1>
+<c-5 g-3 e-2 c-1>4
+<c^5 g_3 e_2 c_1>4
+<c^5 g^3 e^2 c_1>4
@end lilypond
Even greater control over the placement of fingering of the
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
\set fingeringOrientations = #'(left)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4
\set fingeringOrientations = #'(left)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4 |
\set fingeringOrientations = #'(up left down)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4
\set fingeringOrientations = #'(up left)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4 |
\set fingeringOrientations = #'(right)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4
@end lilypond
@noindent
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
\override Fingering #'font-size = #-7
\set fingeringOrientations = #'(left)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4
\set fingeringOrientations = #'(left)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4 |
\set fingeringOrientations = #'(up left down)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4
\set fingeringOrientations = #'(up left)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4 |
\set fingeringOrientations = #'(right)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4
@end lilypond
@node Outside-staff objects
@code{grob-interface} and so is a property of all layout objects.
By default it is set to @code{#f} for all within-staff objects,
and to a numerical value appropriate to each outside-staff object
-when the object is created. The following table shows
-the default numerical values for some of the commonest
-outside-staff objects which are, by default, placed in the
-@code{Staff} or @code{Voice} contexts.
+when the object is created. The following table shows the default
+numerical values for some of the commonest outside-staff objects
+which are, by default, placed in the @code{Staff} or @code{Voice}
+contexts.
+
+@cindex spanners
+
+Note the unusual names for some of the objects: spanner objects
+are automatically created to control the vertical positioning of
+grobs which (might) start and end at different musical moments, so
+changing the @code{outside-staff-priority} of the underlying grob
+will have no effect. For example, changing
+@code{outside-staff-priority} of the @code{Hairpin} object will
+have no effect on the vertical positioning of hairpins -- you must
+change @code{outside-staff-priority} of the associated
+@code{DynamicLineSpanner} object instead. This override must be
+placed at the start of the spanner, which might include several
+linked hairpins and dynamics.
@multitable @columnfractions .3 .3 .3
@headitem Layout Object
\dynamicUp
% Start Ottava Bracket
\ottava #1
-c' \startTextSpan
-% Add Dynamic Text
-c\pp
-% Add Dynamic Line Spanner
-c\<
+c'4 \startTextSpan
+% Add Dynamic Text and hairpin
+c4\pp\<
+c4
% Add Text Script
-c^Text
-c c
-% Add Dynamic Text
-c\ff c \stopTextSpan
+c4^Text |
+c4 c
+% Add Dynamic Text and terminate hairpin
+c4\ff c \stopTextSpan |
% Stop Ottava Bracket
\ottava #0
-c, c c c
+c,4 c c c |
@end lilypond
This example also shows how to create Text Spanners --
@cindex rehearsal marks, tweaking placement
Note that bar numbers, metronome marks and rehearsal marks are not
-shown. By default these are created in the @code{Score} context and
+shown. By default these are created in the @code{Score} context and
their @code{outside-staff-priority} is ignored relative to the layout
objects which are created in the @code{Staff} context. If you wish to
place bar numbers, metronome marks or rehearsal marks in accordance
= \markup { \small \bold Slower }
% Place dynamics above staff
\dynamicUp
-%Place following Ottava Bracket below Text Spanners
+% Place following Ottava Bracket below Text Spanners
\once \override Staff.OttavaBracket #'outside-staff-priority = #340
% Start Ottava Bracket
\ottava #1
-c' \startTextSpan
+c'4 \startTextSpan
% Add Dynamic Text
-c\pp
+c4\pp
% Add Dynamic Line Spanner
-c\<
+c4\<
% Add Text Script
-c^Text
-c c
+c4^Text |
+c4 c
% Add Dynamic Text
-c\ff c \stopTextSpan
+c4\ff c \stopTextSpan |
% Stop Ottava Bracket
\ottava #0
-c, c c c
+c,4 c c c |
@end lilypond
@cindex slurs and outside-staff-priority
example showing the effect of the two methods:
@lilypond[quote,verbatim,relative=2]
-c4( c^\markup\tiny\sharp d4.) c8
+c4( c^\markup { \tiny \sharp } d4.) c8 |
c4(
\once \override TextScript #'avoid-slur = #'inside
\once \override TextScript #'outside-staff-priority = ##f
-c^\markup\tiny\sharp d4.) c8
+c4^\markup { \tiny \sharp } d4.) c8 |
\once \override Slur #'outside-staff-priority = #500
-c4( c^\markup\tiny\sharp d4.) c8
+c4( c^\markup { \tiny \sharp } d4.) c8 |
@end lilypond
Changing the @code{outside-staff-priority} can also be used to
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
c2^"Text1"
-c^"Text2"
+c2^"Text2" |
\once \override TextScript #'outside-staff-priority = #500
-c^"Text3"
-c^"Text4"
+c2^"Text3"
+c2^"Text4" |
@end lilypond
This certainly lifts @qq{Text3} above @qq{Text4} but it also lifts it
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\textLengthOn % Cause notes to space out to accommodate text
c2^"Text1"
-c^"Text2"
-c^"Text3"
-c^"Text4"
+c2^"Text2" |
+c2^"Text3"
+c2^"Text4" |
@end lilypond
The command to revert to the default behavior is
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
% This markup is short enough to fit without collision
-c2^"Tex"
-c''2
-R1
+c2^"Tex" c'' |
+R1 |
+
% This is too long to fit, so it is displaced upwards
-c,,2^"Text"
-c''2
-R1
+c,,2^"Text" c'' |
+R1 |
+
% Turn off collision avoidance
\once \override TextScript #'outside-staff-priority = ##f
-c,,2^"Long Text "
-c''2
-R1
+c,,2^"Long Text " c'' |
+R1 |
+
% Turn off collision avoidance
\once \override TextScript #'outside-staff-priority = ##f
-\textLengthOn % and turn on textLengthOn
+\textLengthOn % and turn on textLengthOn
c,,2^"Long Text " % Spaces at end are honored
-c''2
+c''2 |
@end lilypond
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\dynamicUp
\override DynamicText #'extra-spacing-width = #'(0 . 0)
-a4\f b\mf c\mp b\p
+a4\f b\mf c\mp b\p |
@end lilypond
@noindent
@ref{Within-staff objects}.
@item
-@code{padding}, @code{left-padding},
-@code{right-padding}, @code{staff-padding}
+@code{padding}, @code{right-padding}, @code{staff-padding}
@cindex padding
-@cindex left-padding property
@cindex padding property
@cindex right-padding property
@cindex staff-padding property
@code{side-position-interface}.
Instead of @code{padding}, the placement of groups of accidentals
-is controlled by @code{left-padding} and @code{right-padding}.
-These properties are to be found in the @code{AccidentalPlacement}
-object which, note, lives in the @strong{staff} context. In the
-type-setting process the note heads are type-set first and then
-the accidentals, if any, are added to the left of the note heads
-using the @code{right-padding} property to determine the separation
-from the note heads. So only the @code{right-padding} property of the
-@code{AccidentalPlacement} object has any effect on the placement
-of the accidentals.
+is controlled by @code{right-padding}. This property is to be found
+in the @code{AccidentalPlacement} object which, note, lives in the
+@strong{Staff} context. In the typesetting process the note heads
+are typeset first and then the accidentals, if any, are added to the
+left of the note heads using the @code{right-padding} property to determine
+the separation from the note heads and between individual accidentals.
+So only the @code{right-padding} property of the @code{AccidentalPlacement}
+object has any effect on the placement of the accidentals.
The @code{staff-padding} property is closely related to the
@code{padding} property: @code{padding} controls the minimum amount of
@cindex padding property, example
@lilypond[quote,fragment,relative=1,verbatim]
-% This will not work, see below:
+% This will not work, see below
\override MetronomeMark #'padding = #3
-\tempo 4=120
-c1
-% This works:
+\tempo 4 = 120
+c1 |
+% This works
\override Score.MetronomeMark #'padding = #3
-\tempo 4=80
-d1
+\tempo 4 = 80
+d1 |
@end lilypond
Note in the second example how important it is to figure out what
objects outside it are moved.
-@subheading left-padding and right-padding
+@subheading right-padding
-@cindex left-padding property
@cindex right-padding property
The @code{right-padding} property affects the spacing between the
accidental and the note to which it applies. It is not often
-required, but the following example shows one situation where it
-is needed. Suppose we wish to show a chord containing both
-a B-natural and a B-flat. To avoid ambiguity we would like to
-precede the notes with both a natural and a flat sign. Here
-are a few attempts to do this:
-
-@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
-<b bes>
-<b! bes>
-<b? bes>
-@end lilypond
-
-None work, with the second two showing bad collisions between
-the two signs.
-
-One way of achieving this is to override the accidental stencil
-with a markup containing the natural and flat symbols in the
-order we would like, like this:
+required, but the default spacing may be wrong for certain special
+accidental glyphs or combination of glyphs used in some microtonal
+music. These have to be entered by overriding the accidental
+stencil with a markup containing the desired symbol(s), like this:
@cindex Accidental, example of overriding
@cindex text property, example
@cindex right-padding property, example
@lilypond[quote,ragged-right,verbatim]
-naturalplusflat = \markup { \natural \flat }
+sesquisharp = \markup { \sesquisharp }
\relative c'' {
+ c4
+ % This prints a sesquisharp but the spacing is too small
\once \override Accidental
#'stencil = #ly:text-interface::print
- \once \override Accidental #'text = #naturalplusflat
- \once \override Score.AccidentalPlacement #'right-padding = #1.5
- <b bes>
+ \once \override Accidental #'text = #sesquisharp
+ cis4 c
+ % This improves the spacing
+ \once \override Score.AccidentalPlacement #'right-padding = #0.6
+ \once \override Accidental
+ #'stencil = #ly:text-interface::print
+ \once \override Accidental #'text = #sesquisharp
+ cis4 |
}
@end lilypond
This necessarily uses an override for the accidental stencil which
will not be covered until later. The stencil type must be a
procedure, here changed to print the contents of the @code{text}
-property of @code{Accidental}, which itself is set to be a natural
-sign followed by a flat sign. These are then moved further away
-from the note head by overriding @code{right-padding}.
+property of @code{Accidental}, which itself is set to be a
+sesquisharp sign. This sign is then moved further away from the
+note head by overriding @code{right-padding}.
@noindent
@lilypond[quote,fragment,ragged-right,verbatim,relative=3]
\voiceOne
-< a \2 >
+<a\2>
\once \override StringNumber #'self-alignment-X = #RIGHT
-< a \2 >
+<a\2>
@end lilypond
@subheading staff-position property
example of a collision of this type:
@lilypond[quote,verbatim,fragment,ragged-right, relative=1]
-<< {c c c c} \\ {R1} >>
+<< { c4 c c c } \\ { R1 } >>
@end lilypond
The best solution here is to move the multimeasure rest down, since
@lilypond[quote,verbatim,fragment,ragged-right, relative=1]
<<
- {c c c c}
-\\
+ { c4 c c c }
+ \\
\override MultiMeasureRest #'staff-position = #-8
- {R1}
+ { R1 }
>>
@end lilypond
@lilypond[quote,fragment,relative=1,verbatim]
\stemUp
-f-5
-\once \override Fingering
- #'extra-offset = #'(-0.3 . -1.8)
-f-5
+f4-5
+\once \override Fingering #'extra-offset = #'(-0.3 . -1.8)
+f4-5
@end lilypond
avoid the slur on the acciaccatura.
@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
-r4 \acciaccatura e8\( d8 c ~c d c d\)
+r4 \acciaccatura e8\( d8 c~ c d c d\)
@end lilypond
@noindent
@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
r4
\phrasingSlurUp
-\acciaccatura e8\( d8 c ~c d c d\)
+\acciaccatura e8\( d8 c~ c d c d\)
@end lilypond
@noindent
@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
r4
\once \override PhrasingSlur #'positions = #'(-4 . -3)
-\acciaccatura
-e8\( d8 c ~c d c d\)
+\acciaccatura e8\( d8 c~ c d c d\)
@end lilypond
Here's a further example taken from the opening of the left-hand
@lilypond[quote,verbatim,fragment,ragged-right]
{
-\clef "bass"
-<< {b,8 ais, b, g,} \\ {e, g e, g} >>
-<< {b,8 ais, b, g,} \\ {e, g e, g} >>
+ \clef "bass"
+ << { b,8 ais, b, g, } \\ { e,8 g e, g } >>
+ << { b,8 ais, b, g, } \\ { e,8 g e, g } >>
}
@end lilypond
\clef "bass"
<<
\override Beam #'positions = #'(3 . 3)
- {b,8 ais, b, g,}
+ { b,8 ais, b, g, }
\\
- {e, g e, g}
+ { e,8 g e, g }
>>
- << {b,8 ais, b, g,} \\ {e, g e, g} >>
+ << { b,8 ais, b, g, } \\ { e,8 g e, g } >>
}
@end lilypond
@subheading force-hshift property
-@c FIXME: formatting stuff (ie not important right now IMO)
-@c @a nchor Chopin finally corrected TODOgp
-
We can now see how to apply the final corrections to the Chopin
example introduced at the end of @ref{I'm hearing Voices}, which
was left looking like this:
\new Staff \relative c'' {
\key aes \major
<<
- { c2 aes4. bes8 } \\
- { aes2 f4 fes } \\
- { \voiceFour
- <ees c>2
- des2
+ { c2 aes4. bes8 }
+ \\
+ { aes2 f4 fes }
+ \\
+ {
+ \voiceFour
+ <ees c>2 des
}
>> |
<c ees aes c>1 |
\new Staff \relative c'' {
\key aes \major
<<
- { c2 aes4. bes8 } \\
- { aes2 f4 fes } \\
- { \voiceFour
- \once \override NoteColumn #'force-hshift = #0 <ees c>2
- \once \override NoteColumn #'force-hshift = #0.5 des2
+ { c2 aes4. bes8 }
+ \\
+ { aes2 f4 fes }
+ \\
+ {
+ \voiceFour
+ \once \override NoteColumn #'force-hshift = #0
+ <ees c>2
+ \once \override NoteColumn #'force-hshift = #0.5
+ des2
}
>> |
<c ees aes c>1 |
deal with a tricky example which needs several tweaks to produce
the desired output. The example has been deliberately chosen to
illustrate the use of the Notation Reference to resolve unusual
-problems with notation. It is not representative of more usual
+problems with notation. It is not representative of the more usual
engraving process, so please do not let these difficulties put
you off! Fortunately, difficulties like these are not very common!
@c The following should appear as music without code
@c This example should not be indexed
-@lilypond[quote,ragged-right]
+@c line-width ensures no break
+@lilypond[quote,ragged-right,line-width=6\in]
rhMusic = \relative c'' {
- r2
- c4.\( g8 |
- \once \override Tie #'staff-position = #3.5
- bes1~ |
- \bar "||"
- \time 6/4
- \mergeDifferentlyHeadedOn
- \mergeDifferentlyDottedOn
- bes2.^\markup {\bold "Moderato"} r8
- <<
- {c,8[ d fis bes a] | }
- \\
- % Reposition the c2 to the right of the merged note
- {c,8~ \once \override NoteColumn #'force-hshift = #1.0
- % Move the c2 out of the main note column so the merge will work
- \shiftOnn c2}
- \\
- % Stem on the d2 must be down to permit merging
- {s8 \stemDown \once \override Stem #'transparent = ##t d2}
- \\
- {s4 fis4.}
- >>
- \mergeDifferentlyHeadedOff
- \mergeDifferentlyDottedOff
- g2.\)
+ \new Voice {
+ r2 c4.\( g8 |
+ \once \override Tie #'staff-position = #3.5
+ bes1~ |
+ \bar "||"
+ \time 6/4
+ \mergeDifferentlyHeadedOn
+ \mergeDifferentlyDottedOn
+ bes2.^\markup { \bold "Moderato" } r8
+ <<
+ { c,8 d fis bes a }
+ \new Voice {
+ \voiceTwo
+ c,8~
+ % Reposition the c2 to the right of the merged note
+ \once \override NoteColumn #'force-hshift = #1.0
+ % Move the c2 out of the main note column so the merge will work
+ \shiftOnn
+ c2
+ }
+ \new Voice {
+ \voiceThree
+ s8
+ % Stem on the d2 must be down to permit merging
+ \stemDown
+ % Stem on the d2 should be invisible
+ \once \override Stem #'transparent = ##t
+ d2
+ }
+ \new Voice {
+ \voiceFour
+ s4 fis4.
+ }
+ >> |
+ \mergeDifferentlyHeadedOff
+ \mergeDifferentlyDottedOff
+ g2.\)
+ }
}
lhMusic = \relative c' {
the tied C, the half-note D which is merged with the eighth note
D, and the dotted quarter note F-sharp, which is also merged with
the eighth note at the same pitch. Everything else is in a single
-voice, so the easiest way is to introduce these four voices
+voice, so the easiest way is to introduce these extra three voices
temporarily at the time they are needed. If you have forgotten
-how to do this, look at @ref{I'm hearing Voices}. Let us begin
-by entering the notes as two variables and setting up the staff
-structure in a score block, and see what LilyPond produces by
-default:
-
-@lilypond[quote,verbatim,ragged-right]
+how to do this, look at @ref{I'm hearing Voices} and @ref{Explicitly
+instantiating voices}. Here we choose to use explicitly instantiated
+voices for the polyphonic passage, as LilyPond is better able to
+avoid collisions if all voices are instantiated explicitly in this
+way.
+
+So let us begin by entering the notes as two variables, setting up
+the staff structure in a score block, and seeing what LilyPond
+produces by default:
+
+@c line-width ensures no break
+@lilypond[quote,verbatim,ragged-right,line-width=6\in]
rhMusic = \relative c'' {
- r2 c4. g8 |
- bes1~ |
- \time 6/4
- bes2. r8
- % Start polyphonic section of four voices
- <<
- {c,8 d fis bes a | }
- \\
- {c,8~ c2 | }
- \\
- {s8 d2 | }
- \\
- {s4 fis4. | }
- >>
- g2.
+ \new Voice {
+ r2 c4. g8 |
+ bes1~ |
+ \time 6/4
+ bes2. r8
+ % Start polyphonic section of four voices
+ <<
+ { c,8 d fis bes a } % continuation of main voice
+ \new Voice {
+ \voiceTwo
+ c,8~ c2
+ }
+ \new Voice {
+ \voiceThree
+ s8 d2
+ }
+ \new Voice {
+ \voiceFour
+ s4 fis4.
+ }
+ >> |
+ g2. % continuation of main voice
+ }
}
lhMusic = \relative c' {
}
@end lilypond
-All the notes are right, but the appearance is far from satisfactory.
-The tie clashes with the change in time signature, the beaming in the
-third bar is wrong, the notes are not merged together, and several
-notation elements are missing. Let's first deal with the easier
-things. We can correct the beaming by inserting a beam manually, and
-we can easily add the left hand slur and the right hand phrasing slur,
+All the notes are right, but the appearance is far from
+satisfactory. The tie collides with the change in time signature,
+some notes are not merged together, and several notation elements
+are missing. Let's first deal with the easier things. We can
+easily add the left hand slur and the right hand phrasing slur,
since these were all covered in the Tutorial. Doing this gives:
-@lilypond[quote,verbatim,ragged-right]
+@c line-width ensures no break
+@lilypond[quote,verbatim,ragged-right,line-width=6\in]
rhMusic = \relative c'' {
- r2 c4.\( g8 |
- bes1~ |
- \time 6/4
- bes2. r8
- % Start polyphonic section of four voices
- <<
- {c,8[ d fis bes a] | }
- \\
- {c,8~ c2 | }
- \\
- {s8 d2 | }
- \\
- {s4 fis4. | }
- >>
- g2.\)
+ \new Voice {
+ r2 c4.\( g8 |
+ bes1~ |
+ \time 6/4
+ bes2. r8
+ % Start polyphonic section of four voices
+ <<
+ { c,8 d fis bes a } % continuation of main voice
+ \new Voice {
+ \voiceTwo
+ c,8~ c2
+ }
+ \new Voice {
+ \voiceThree
+ s8 d2
+ }
+ \new Voice {
+ \voiceFour
+ s4 fis4.
+ }
+ >> |
+ g2.\) % continuation of main voice
+ }
}
lhMusic = \relative c' {
next need to correct the collision of the tie with the time signature.
This is best done by moving the tie upwards. Moving objects was
covered earlier in @ref{Moving objects}, which says that objects
-positioned relative to the staff can be moved by overriding their
-@code{staff-position} property, which is specified in half staff
+positioned relative to the staff can be moved vertically by overriding
+their @code{staff-position} property, which is specified in half staff
spaces relative to the center line of the staff. So the following
override placed just before the first tied note would move the tie up
to 3.5 half staff spaces above the center line:
This completes bar two, giving:
-@lilypond[quote,verbatim,ragged-right]
+@c line-width ensures no break
+@lilypond[quote,verbatim,ragged-right,line-width=6\in]
rhMusic = \relative c'' {
- r2 c4.\( g8 |
- \once \override Tie #'staff-position = #3.5
- bes1~ |
- \bar "||"
- \time 6/4
- bes2. r8
- % Start polyphonic section of four voices
- <<
- {c,8[ d fis bes a] | }
- \\
- {c,8~ c2 | }
- \\
- {s8 d2 | }
- \\
- {s4 fis4. | }
- >>
- g2.\)
+ \new Voice {
+ r2 c4.\( g8 |
+ \once \override Tie #'staff-position = #3.5
+ bes1~ |
+ \bar "||"
+ \time 6/4
+ bes2. r8
+ % Start polyphonic section of four voices
+ <<
+ { c,8 d fis bes a } % continuation of main voice
+ \new Voice {
+ \voiceTwo
+ c,8~ c2
+ }
+ \new Voice {
+ \voiceThree
+ s8 d2
+ }
+ \new Voice {
+ \voiceFour
+ s4 fis4.
+ }
+ >> |
+ g2.\) % continuation of main voice
+ }
}
lhMusic = \relative c' {
@end lilypond
On to bar three and the start of the Moderato section. The tutorial
-showed how to add embolded text with the @code{\markup} command, so
-adding @q{Moderato} in bold is easy. But how do we merge notes in
-different voices together? This is where we need to turn to the
-Notation Reference for help. A search for @qq{merge} in the Notation
-Reference index quickly leads us to the commands for merging
-differently headed and differently dotted notes in @ruser{Collision
-resolution}. In our example we need to merge both types of note for
-the duration of the polyphonic section in bar 3, so using the
-information we find in the Notation Reference we add
+showed how to add bold text with the @code{\markup} command, so
+adding @qq{Moderato} in bold is easy. But how do we merge notes in
+different voices together? This is where we need to turn again to
+the Notation Reference for help. A search for @qq{merge} in the
+Notation Reference index quickly leads us to the commands for merging
+differently headed and differently dotted notes in
+@ruser{Collision resolution}. In our example we need to merge both
+types of note for the duration of the polyphonic section in bar 3,
+so using the information we find in the Notation Reference we add
@example
\mergeDifferentlyHeadedOn
@noindent
to the end, giving:
-@lilypond[quote,verbatim,ragged-right]
+@c line-width ensures no break
+@lilypond[quote,ragged-right,line-width=6\in]
rhMusic = \relative c'' {
- r2 c4.\( g8 |
- \once \override Tie #'staff-position = #3.5
- bes1~ |
- \bar "||"
- \time 6/4
- bes2.^\markup {\bold "Moderato"} r8
- \mergeDifferentlyHeadedOn
- \mergeDifferentlyDottedOn
- % Start polyphonic section of four voices
- <<
- {c,8[ d fis bes a] | }
- \\
- {c,8~ c2 | }
- \\
- {s8 d2 | }
- \\
- {s4 fis4. | }
- >>
- \mergeDifferentlyHeadedOff
- \mergeDifferentlyDottedOff
- g2.\)
+ \new Voice {
+ r2 c4.\( g8 |
+ \once \override Tie #'staff-position = #3.5
+ bes1~ |
+ \bar "||"
+ \time 6/4
+ bes2.^\markup { \bold "Moderato" } r8
+ \mergeDifferentlyHeadedOn
+ \mergeDifferentlyDottedOn
+ % Start polyphonic section of four voices
+ <<
+ { c,8 d fis bes a } % continuation of main voice
+ \new Voice {
+ \voiceTwo
+ c,8~ c2
+ }
+ \new Voice {
+ \voiceThree
+ s8 d2
+ }
+ \new Voice {
+ \voiceFour
+ s4 fis4.
+ }
+ >> |
+ \mergeDifferentlyHeadedOff
+ \mergeDifferentlyDottedOff
+ g2.\) % continuation of main voice
+ }
}
lhMusic = \relative c' {
@cindex Tie, example of overriding
@cindex staff-position property, example
-@lilypond[quote,verbatim,ragged-right]
+@c line-width ensures no break
+@lilypond[quote,verbatim,ragged-right,line-width=6\in]
rhMusic = \relative c'' {
- r2 c4.\( g8 |
- \once \override Tie #'staff-position = #3.5
- bes1~ |
- \bar "||"
- \time 6/4
- bes2.^\markup {\bold "Moderato"} r8
- \mergeDifferentlyHeadedOn
- \mergeDifferentlyDottedOn
- % Start polyphonic section of four voices
- <<
- {c,8[ d fis bes a] | }
- \\
- % Move the c2 out of the main note column so the merge will work
- {c,8~ \shiftOnn c2 | }
- \\
- % Stem on the d2 must be down to permit merging
- {s8 \stemDown d2 | }
- \\
- {s4 fis4. | }
- >>
- \mergeDifferentlyHeadedOff
- \mergeDifferentlyDottedOff
- g2.\)
+ \new Voice {
+ r2 c4.\( g8 |
+ \once \override Tie #'staff-position = #3.5
+ bes1~ |
+ \bar "||"
+ \time 6/4
+ bes2.^\markup { \bold "Moderato" } r8
+ \mergeDifferentlyHeadedOn
+ \mergeDifferentlyDottedOn
+ % Start polyphonic section of four voices
+ <<
+ { c,8 d fis bes a } % continuation of main voice
+ \new Voice {
+ \voiceTwo
+ % Move the c2 out of the main note column so the merge will work
+ c,8~ \shiftOnn c2
+ }
+ \new Voice {
+ \voiceThree
+ % Stem on the d2 must be down to permit merging
+ s8 \stemDown d2
+ }
+ \new Voice {
+ \voiceFour
+ s4 fis4.
+ }
+ >> |
+ \mergeDifferentlyHeadedOff
+ \mergeDifferentlyDottedOff
+ g2.\) % continuation of main voice
+ }
}
lhMusic = \relative c' {
@cindex Stem, example of overriding
@cindex transparent property, example
-@lilypond[quote,verbatim,ragged-right]
+@c line-width ensures no break
+@lilypond[quote,verbatim,ragged-right,line-width=6\in]
rhMusic = \relative c'' {
- r2
- c4.\( g8 |
- \once \override Tie #'staff-position = #3.5
- bes1~ |
- \bar "||"
- \time 6/4
- bes2.^\markup {\bold "Moderato"} r8
- \mergeDifferentlyHeadedOn
- \mergeDifferentlyDottedOn
- <<
- {c,8[ d fis bes a] | }
- \\
- % Reposition the c2 to the right of the merged note
- {c,8~ \once \override NoteColumn #'force-hshift = #1.0
- % Move the c2 out of the main note column so the merge will work
- \shiftOnn c2}
- \\
- % Stem on the d2 must be down to permit merging
- {s8 \stemDown \once \override Stem #'transparent = ##t d2}
- \\
- {s4 fis4.}
- >>
- \mergeDifferentlyHeadedOff
- \mergeDifferentlyDottedOff
- g2.\)
+ \new Voice {
+ r2 c4.\( g8 |
+ \once \override Tie #'staff-position = #3.5
+ bes1~ |
+ \bar "||"
+ \time 6/4
+ bes2.^\markup { \bold "Moderato" } r8
+ \mergeDifferentlyHeadedOn
+ \mergeDifferentlyDottedOn
+ % Start polyphonic section of four voices
+ <<
+ { c,8 d fis bes a } % continuation of main voice
+ \new Voice {
+ \voiceTwo
+ c,8~
+ % Reposition the c2 to the right of the merged note
+ \once \override NoteColumn #'force-hshift = #1.0
+ % Move the c2 out of the main note column so the merge will work
+ \shiftOnn
+ c2
+ }
+ \new Voice {
+ \voiceThree
+ s8
+ % Stem on the d2 must be down to permit merging
+ \stemDown
+ % Stem on the d2 should be invisible
+ \once \override Stem #'transparent = ##t
+ d2
+ }
+ \new Voice {
+ \voiceFour
+ s4 fis4.
+ }
+ >> |
+ \mergeDifferentlyHeadedOff
+ \mergeDifferentlyDottedOff
+ g2.\) % continuation of main voice
+ }
}
lhMusic = \relative c' {
with the tied notes in one of them
@lilypond[quote,fragment,relative=2]
-<< { b8~ b8\noBeam }
-\\ { b[ g8] }
->>
+<< { b8~ b\noBeam } \\ { b8[ g] } >>
@end lilypond
@noindent
<<
{
\once \override Stem #'transparent = ##t
- b8~ b8\noBeam
+ b8~ b\noBeam
}
\\
- { b[ g8] }
+ { b8[ g] }
>>
@end lilypond
{
\once \override Stem #'transparent = ##t
\once \override Stem #'length = #8
- b8~ b8\noBeam
+ b8~ b\noBeam
}
\\
- { b[ g8] }
+ { b8[ g] }
>>
@end lilypond
\once \override Score.MetronomeMark #'transparent = ##t
% Invisible tempo marking to lengthen fermata in MIDI
\tempo 4=80
- a\fermata
+ a4\fermata |
% New tempo for next section
\tempo 4=100
- a a a a
+ a4 a a a |
}
\layout { }
\midi { }
\once \override Score.MetronomeMark #'stencil = ##f
% Invisible tempo marking to lengthen fermata in MIDI
\tempo 4=80
- a\fermata
+ a4\fermata |
% New tempo for next section
\tempo 4=100
- a a a a
+ a4 a a a |
}
\layout { }
\midi { }
\override Lyrics.LyricText #'font-shape = #'italic
\override Lyrics.LyricText #'font-series = #'bold
}
+
normal = {
\revert Lyrics.LyricText #'font-shape
\revert Lyrics.LyricText #'font-series
}
-global = { \time 4/4 \partial 4 \key c \major}
-SopranoMusic = \relative c' { c4 | e4. e8 g4 g | a a g }
-AltoMusic = \relative c' { c4 | c4. c8 e4 e | f f e }
-TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
-BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
-VerseOne = \lyrics { E -- | ter -- nal \emphasize Fa -- ther, \normal | strong to save, }
-VerseTwo = \lyricmode { O | \emphasize Christ, \normal whose voice the | wa -- ters heard, }
-VerseThree = \lyricmode { O | \emphasize Ho -- ly Spi -- rit, \normal | who didst brood }
-VerseFour = \lyricmode { O | \emphasize Tri -- ni -- ty \normal of | love and pow'r }
+global = { \key c \major \time 4/4 \partial 4 }
+
+SopranoMusic = \relative c' { c4 | e4. e8 g4 g | a4 a g }
+AltoMusic = \relative c' { c4 | c4. c8 e4 e | f4 f e }
+TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
+BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
+
+VerseOne = \lyrics {
+ E -- | ter -- nal \emphasize Fa -- ther, | \normal strong to save,
+}
+
+VerseTwo = \lyricmode {
+ O | \emphasize Christ, \normal whose voice the | wa -- ters heard,
+}
+
+VerseThree = \lyricmode {
+ O | \emphasize Ho -- ly Spi -- rit, | \normal who didst brood
+}
+
+VerseFour = \lyricmode {
+ O | \emphasize Tri -- ni -- ty \normal of | love and pow'r
+}
\score {
\new ChoirStaff <<
\clef "treble"
\new Voice = "Soprano" { \voiceOne \global \SopranoMusic }
\new Voice = "Alto" { \voiceTwo \AltoMusic }
- \new Lyrics \lyricsto "Soprano" { \VerseOne }
- \new Lyrics \lyricsto "Soprano" { \VerseTwo }
+ \new Lyrics \lyricsto "Soprano" { \VerseOne }
+ \new Lyrics \lyricsto "Soprano" { \VerseTwo }
\new Lyrics \lyricsto "Soprano" { \VerseThree }
- \new Lyrics \lyricsto "Soprano" { \VerseFour }
+ \new Lyrics \lyricsto "Soprano" { \VerseFour }
>>
\new Staff <<
\clef "bass"
\new Voice = "Tenor" { \voiceOne \TenorMusic }
- \new Voice = "Bass" { \voiceTwo \BassMusic }
+ \new Voice = "Bass" { \voiceTwo \BassMusic }
>>
>>
}
@ref{Advanced tweaks with Scheme}.
@lilypond[quote,verbatim,ragged-right]
-mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
- #:line(#:dynamic "mp" #:text #:italic "dolce" )))
-
-inst = #(define-music-function (parser location string) (string?)
- (make-music
+mpdolce =
+#(make-dynamic-script
+ (markup #:hspace 0
+ #:translate '(5 . 0)
+ #:line (#:dynamic "mp"
+ #:text #:italic "dolce")))
+
+inst =
+#(define-music-function
+ (parser location string)
+ (string?)
+ (make-music
'TextScriptEvent
'direction UP
'text (markup #:bold (#:box string))))
\relative c'' {
\tempo 4=50
- a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
+ a4.\mpdolce d8 cis4--\glissando a |
+ b4 bes a2 |
\inst "Clarinet"
- cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
+ cis4.\< d8 e4 fis |
+ g8(\! fis)-. e( d)-. cis2 |
}
@end lilypond
@example
%%% save this to a file called "definitions.ily"
-mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
- #:line(#:dynamic "mp" #:text #:italic "dolce" )))
-
-inst = #(define-music-function (parser location string) (string?)
- (make-music
+mpdolce =
+#(make-dynamic-script
+ (markup #:hspace 0
+ #:translate '(5 . 0)
+ #:line (#:dynamic "mp"
+ #:text #:italic "dolce")))
+
+inst =
+#(define-music-function
+ (parser location string)
+ (string?)
+ (make-music
'TextScriptEvent
'direction UP
'text (markup #:bold (#:box string))))
@end example
We will refer to this file using the @code{\include} command near
-the top of the music file. (The extension @code{.ily} is used to
+the top of the music file. (The extension @code{.ily} is used to
distinguish this included file, which is not meant to be compiled
on its own, from the main file.)
Now let's modify our music (let's save this file as @file{"music.ly"}).
\relative c'' @{
\tempo 4=50
- a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
+ a4.\mpdolce d8 cis4--\glissando a |
+ b4 bes a2 |
\inst "Clarinet"
- cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
+ cis4.\< d8 e4 fis |
+ g8(\! fis)-. e( d)-. cis2 |
@}
@end example
@lilypond[quote,ragged-right]
-mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
- #:line(#:dynamic "mp" #:text #:italic "dolce" )))
-
-inst = #(define-music-function (parser location string) (string?)
- (make-music
+mpdolce =
+#(make-dynamic-script
+ (markup #:hspace 0
+ #:translate '(5 . 0)
+ #:line (#:dynamic "mp"
+ #:text #:italic "dolce")))
+
+inst =
+#(define-music-function
+ (parser location string)
+ (string?)
+ (make-music
'TextScriptEvent
'direction UP
'text (markup #:bold (#:box string))))
\relative c'' {
\tempo 4=50
- a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
+ a4.\mpdolce d8 cis4--\glissando a |
+ b4 bes a2 |
\inst "Clarinet"
- cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
+ cis4.\< d8 e4 fis |
+ g8(\! fis)-. e( d)-. cis2 |
}
@end lilypond
@example
%%% definitions.ily
-mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
- #:line( #:dynamic "mp" #:text #:italic "dolce" )))
-
-inst = #(define-music-function (parser location string) (string?)
- (make-music
+mpdolce =
+#(make-dynamic-script
+ (markup #:hspace 0
+ #:translate '(5 . 0)
+ #:line (#:dynamic "mp"
+ #:text #:italic "dolce")))
+
+inst =
+#(define-music-function
+ (parser location string)
+ (string?)
+ (make-music
'TextScriptEvent
'direction UP
'text (markup #:bold (#:box string))))
\layout@{
- \context @{ \Score
+ \context @{
+ \Score
\override MetronomeMark #'extra-offset = #'(-9 . 0)
\override MetronomeMark #'padding = #'3
@}
- \context @{ \Staff
+ \context @{
+ \Staff
\override TimeSignature #'style = #'numbered
@}
- \context @{ \Voice
+ \context @{
+ \Voice
\override Glissando #'thickness = #3
\override Glissando #'gap = #0.1
@}
@end example
@lilypond[quote,ragged-right]
-mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
- #:line( #:dynamic "mp" #:text #:italic "dolce" )))
-
-inst = #(define-music-function (parser location string) (string?)
- (make-music
+mpdolce =
+#(make-dynamic-script
+ (markup #:hspace 0
+ #:translate '(5 . 0)
+ #:line (#:dynamic "mp"
+ #:text #:italic "dolce")))
+
+inst =
+#(define-music-function
+ (parser location string)
+ (string?)
+ (make-music
'TextScriptEvent
'direction UP
'text (markup #:bold (#:box string))))
\layout{
- \context { \Score
+ \context {
+ \Score
\override MetronomeMark #'extra-offset = #'(-9 . 0)
\override MetronomeMark #'padding = #'3
}
- \context { \Staff
+ \context {
+ \Staff
\override TimeSignature #'style = #'numbered
}
- \context { \Voice
+ \context {
+ \Voice
\override Glissando #'thickness = #3
\override Glissando #'gap = #0.1
}
\relative c'' {
\tempo 4=50
- a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
+ a4.\mpdolce d8 cis4--\glissando a |
+ b4 bes a2 |
\inst "Clarinet"
- cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
+ cis4.\< d8 e4 fis |
+ g8(\! fis)-. e( d)-. cis2 |
}
@end lilypond
@example
%%% definitions.ily
-mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
- #:line( #:dynamic "mp" #:text #:italic "dolce" )))
-
-inst = #(define-music-function (parser location string) (string?)
- (make-music
+mpdolce =
+#(make-dynamic-script
+ (markup #:hspace 0
+ #:translate '(5 . 0)
+ #:line (#:dynamic "mp"
+ #:text #:italic "dolce")))
+
+inst =
+#(define-music-function
+ (parser location string)
+ (string?)
+ (make-music
'TextScriptEvent
'direction UP
'text (markup #:bold (#:box string))))
#(set-global-staff-size 23)
+
\layout@{
- \context @{ \Score
+ \context @{
+ \Score
\override MetronomeMark #'extra-offset = #'(-9 . 0)
\override MetronomeMark #'padding = #'3
@}
- \context @{ \Staff
+ \context @{
+ \Staff
@}
- \context @{ \Voice
+ \context @{
+ \Voice
\override Glissando #'thickness = #3
\override Glissando #'gap = #0.1
@}
@end example
@lilypond[quote,ragged-right]
-mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
- #:line( #:dynamic "mp" #:text #:italic "dolce" )))
-
-inst = #(define-music-function (parser location string) (string?)
- (make-music
+mpdolce =
+#(make-dynamic-script
+ (markup #:hspace 0
+ #:translate '(5 . 0)
+ #:line (#:dynamic "mp"
+ #:text #:italic "dolce")))
+
+inst =
+#(define-music-function
+ (parser location string)
+ (string?)
+ (make-music
'TextScriptEvent
'direction UP
'text (markup #:bold (#:box string))))
#(set-global-staff-size 23)
+
\layout{
\context { \Score
\override MetronomeMark #'extra-offset = #'(-9 . 0)
\relative c'' {
\tempo 4=50
- a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
+ a4.\mpdolce d8 cis4--\glissando a |
+ b4 bes a2 |
\inst "Clarinet"
- cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
+ cis4.\< d8 e4 fis |
+ g8(\! fis)-. e( d)-. cis2 |
}
@end lilypond
@example
%%% global.ily
\version @w{"@version{}"}
+
#(ly:set-option 'point-and-click #f)
+
\include "../init/init-defs.ly"
\include "../init/init-layout.ly"
\include "../init/init-headers.ly"
is currently outside the scope of this manual, as a knowledge of
the Scheme language is required. Users should be warned that
a substantial amount of technical knowledge or time is required
-to understand Scheme and these files (see @ref{Scheme tutorial}).
+to understand Scheme and these files (see @rextend{Scheme tutorial}).
If you have this knowledge, the Scheme files which may be of
interest are:
@node Avoiding tweaks with slower processing
@subsection Avoiding tweaks with slower processing
-LilyPond can perform extra checks while it processes input files. These
-checks will take extra time to perform, but fewer manual tweaks
+LilyPond can perform extra checks while it processes input files.
+These checks will take extra time to perform, but fewer manual tweaks
may be required to obtain an acceptable result. If a text script
or part of the lyrics extends over the margins these checks will
compress that line of the score just enough to fit within the
@}
@end example
+However, @code{keep-inside-line} is expensive and the recommendation
+is to not enable it, to allow for faster processing, until creating
+a final version. This way you do not need to manually add @code{\break}
+commands to avoid text running off the right-hand side of the page.
+
@node Advanced tweaks with Scheme
@subsection Advanced tweaks with Scheme
the Scheme programming language can be incorporated directly in
the internal operation of LilyPond. Of course, at least a basic
knowledge of programming in Scheme is required to do this, and an
-introduction is provided in the @ref{Scheme tutorial}.
+introduction is provided in the @rextend{Scheme tutorial}.
As an illustration of one of the many possibilities, instead of
setting a property to a constant it can be set to a Scheme
@lilypond[quote,verbatim,ragged-right]
#(define (color-notehead grob)
- "Color the notehead according to its position on the staff."
- (let ((mod-position (modulo (ly:grob-property grob 'staff-position) 7)))
- (case mod-position
- ;; Return rainbow colors
- ((1) (x11-color 'red )) ; for C
- ((2) (x11-color 'orange )) ; for D
- ((3) (x11-color 'yellow )) ; for E
- ((4) (x11-color 'green )) ; for F
- ((5) (x11-color 'blue )) ; for G
- ((6) (x11-color 'purple )) ; for A
- ((0) (x11-color 'violet )) ; for B
- )
- )
-)
+ "Color the notehead according to its position on the staff."
+ (let ((mod-position (modulo (ly:grob-property grob 'staff-position)
+ 7)))
+ (case mod-position
+ ;; Return rainbow colors
+ ((1) (x11-color 'red )) ; for C
+ ((2) (x11-color 'orange )) ; for D
+ ((3) (x11-color 'yellow )) ; for E
+ ((4) (x11-color 'green )) ; for F
+ ((5) (x11-color 'blue )) ; for G
+ ((6) (x11-color 'purple )) ; for A
+ ((0) (x11-color 'violet )) ; for B
+ )))
\relative c' {
% Arrange to obtain color from color-notehead procedure
\override NoteHead #'color = #color-notehead
- c2 c' |
- b4 g8 a b4 c |
- c,2 a' |
- g1 |
-}
-\addlyrics {
- Some -- where o -- ver the Rain -- bow, way up high,
+ a2 b | c2 d | e2 f | g2 a |
}
@end lilypond
Further examples showing the use of these programmable interfaces
-can be found in @ref{Tweaking with Scheme}.
-
-
-
-
-
-
-
-
-
-
-
-
+can be found in @rextend{Callback functions}.