Guide, node Updating translation committishes..
@end ignore
-@c \version "2.15.10"
+@c \version "2.17.6"
@node Tweaking output
@chapter Tweaking output
@tab direction, beam-thickness
@end multitable
-As we shall see shortly, the properties of different types of
-object are modified by different commands, so it is useful to
-be able to recognize the type of object from the names of its
-properties.
+As we shall see shortly, the properties of different types of object are
+modified by different commands, so it is useful to be able to recognize
+the types of objects and properties from their names.
@node Tweaking methods
examples. We shall see later when it must be specified.
Later sections deal comprehensively with properties and their
-values, but to illustrate the format and use of these commands
-we shall use just a few simple properties and values which are
-easily understood.
+values, see @ref{Types of properties}. But in this section we shall
+use just a few simple properties and values which are easily
+understood in order to illustrate the format and use of these
+commands.
For now, don't worry about the @code{#'}, which must precede the
layout property, and the@tie{}@code{#}, which must precede the value.
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
c4 d
-\override NoteHead #'color = #red
+\override NoteHead.color = #red
e4 f |
-\override NoteHead #'color = #green
+\override NoteHead.color = #green
g4 a b c |
@end lilypond
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
c4 d
-\override NoteHead #'color = #red
+\override NoteHead.color = #red
e4 f |
-\override NoteHead #'color = #green
+\override NoteHead.color = #green
g4 a
-\revert NoteHead #'color
+\revert NoteHead.color
b4 c |
@end lilypond
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
c4 d
-\override NoteHead #'color = #red
+\override NoteHead.color = #red
e4 f |
-\once \override NoteHead #'color = #green
+\once \override NoteHead.color = #green
g4 a
-\revert NoteHead #'color
+\revert NoteHead.color
b c |
@end lilypond
@funindex \tweak
@funindex tweak
-The final tweaking command which is available is @code{\tweak}.
-This should be used to change the properties of objects which
-occur at the same musical moment, such as the notes within a
-chord. Using @code{\override} would affect all the notes
-within a chord, whereas @code{\tweak} affects just the following
+The final tweaking command which is available is @code{\tweak}. This
+should be used when several objects occur at the same musical moment,
+but you only want to change the properties of selected ones, such as a
+single note within a chord. Using @code{\override} would affect all the
+notes within a chord, whereas @code{\tweak} affects just the following
item in the input stream.
Here's an example. Suppose we wish to change the size of the
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
<c e g>4
-\once \override NoteHead #'font-size = #-3
+\once \override NoteHead.font-size = #-3
<c e g>4
<c e g>4
@end lilypond
which occur at the same musical moment as the @code{\override}
command itself.
-The @code{\tweak} command operates in a different way. It acts
-on the immediately following item in the input stream. However,
-it is effective only on objects which are created directly from
-the input stream, essentially note heads and articulations;
-objects such as stems and accidentals are created later and
-cannot be tweaked in this way. Furthermore, when it is applied
-to note heads these @emph{must} be within a chord, i.e., within
-single angle brackets, so to tweak a single note the @code{\tweak}
-command must be placed inside single angle brackets with the
-note.
+The @code{\tweak} command operates in a different way. It acts on
+the immediately following item in the input stream. In its simplest
+form, it is effective only on objects which are created directly
+from the following item, essentially note heads and articulations.
So to return to our example, the size of the middle note of
a chord would be changed in this way:
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
<c e g>4
-<c \tweak #'font-size #-3 e g>4
+<c \tweak font-size #-3 e g>4
@end lilypond
-Note that the syntax of @code{\tweak} is different from that
-of the @code{\override} command. Neither the context nor the
-layout object should be specified; in fact, it would generate
-an error to do so. These are both implied by the following
-item in the input stream. Note also that an equals sign should
-not be present. So the general syntax of the
-@code{\tweak} command is simply
+Note that the syntax of @code{\tweak} is different from that of the
+@code{\override} command. The context should not be specified; in
+fact, it would generate an error to do so. Both context and layout
+object are implied by the following item in the input stream. Note
+also that an equals sign should not be present. So the simple form
+of the @code{\tweak} command is
@example
\tweak #'@var{layout-property} #@var{value}
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
a4^"Black"
- -\tweak #'color #red ^"Red"
- -\tweak #'color #green _"Green"
+ -\tweak color #red ^"Red"
+ -\tweak color #green _"Green"
@end lilypond
@noindent
-Note that the @code{\tweak} command must be preceded by an
-articulation mark as if it were an articulation itself.
+Note that the @code{\tweak} command must be preceded by an articulation
+mark since the tweaked expression needs to be applied as an articulation
+itself. In case of multiple direction overrides (@code{^} or @code{_}),
+the leftmost override wins since it is applied last.
+
+@cindex @code{\tweak}, Accidental
+@cindex @code{\tweak}, specific layout object
+
+Objects such as stems and accidentals are created later, and not
+directly from the following event. It is still possible to use
+@code{\tweak} on such indirectly created objects by explicitly naming
+the layout object, provided that LilyPond can trace its origin back to
+the original event:
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+<\tweak Accidental.color #red cis4
+ \tweak Accidental.color #green es
+ g>
+@end lilypond
+
+This long form of the @code{\tweak} command can be described as
+@example
+\tweak @var{layout-object} #'@var{layout-property} @var{value}
+@end example
@cindex tuplets, nested
@cindex triplets, nested
@cindex color property, example
@lilypond[quote,ragged-right,verbatim,fragment,relative=2]
-\tweak #'direction #up
+\tweak direction #up
\times 4/3 {
- \tweak #'color #red
+ \tweak color #red
\times 2/3 { c8[ c c] }
\times 2/3 { c8[ c c] }
\times 2/3 { c8[ c c] }
@c See issue 509
@lilypond[quote,ragged-right,verbatim,fragment,relative=1]
\times 2/3 { c8[ c c] }
-\once \override TupletNumber
- #'text = #tuplet-number::calc-fraction-text
+\once \override TupletNumber.text = #tuplet-number::calc-fraction-text
\times 2/3 {
c8[ c]
c8[ c]
- \once \override TupletNumber #'transparent = ##t
+ \once \override TupletNumber.transparent = ##t
\times 2/3 { c8[ c c] }
\times 2/3 { c8[ c c] }
}
to be tweaked, it is easier to go straight to the IR and search there.
This Slur page in the IR tells us first that Slur objects are created
-by the Slur_engraver. Then it lists the standard settings. Note
-these are @strong{not} in alphabetic order. Browse down them looking
-for a property that might control the heaviness of slurs, and you
-should find
+by the Slur_engraver. Then it lists the standard settings. Browse
+through them looking for a property that might control the heaviness of
+slurs, and you should find
@example
@code{thickness} (number)
at first, so we can be sure the command is working. We get:
@example
-\override Slur #'thickness = #5.0
+\override Slur.thickness = #5.0
@end example
Don't forget the @code{#'} preceding the
\time 6/8
{
% Increase thickness of all following slurs from 1.2 to 5.0
- \override Slur #'thickness = #5.0
+ \override Slur.thickness = #5.0
r4 bes8 bes[( g]) g |
g8[( es]) es d[( f]) as |
as8 g
engraver}. So slurs will be created in whichever context
the @code{Slur_engraver} is in. Follow the link to the
@code{Slur_engraver} page. At the very bottom it tells
-us that @code{Slur_engraver} is part of five Voice contexts,
+us that @code{Slur_engraver} is part of seven Voice contexts,
including the standard voice context, @code{Voice}, so our
guess was correct. And because @code{Voice} is one of the
lowest level contexts which is implied unambiguously by
{
r4 bes8
% Increase thickness of immediately following slur only
- \once \override Slur #'thickness = #5.0
+ \once \override Slur.thickness = #5.0
bes8[( g]) g |
g8[( es]) es d[( f]) as |
as8 g
{
r4 bes8
% Increase thickness of immediately following slur only
- \once \override Slur #'thickness = #5.0
+ \once \override Slur.thickness = #5.0
bes[( g]) g |
% Increase thickness of immediately following slur only
- \once \override Slur #'thickness = #5.0
+ \once \override Slur.thickness = #5.0
g8[( es]) es d[( f]) as |
as8 g
}
{
r4 bes8
% Increase thickness of all following slurs from 1.2 to 5.0
- \override Slur #'thickness = #5.0
+ \override Slur.thickness = #5.0
bes[( g]) g |
g8[( es]) es
% Revert thickness of all following slurs to default of 1.2
- \revert Slur #'thickness
+ \revert Slur.thickness
d8[( f]) as |
as8 g
}
in italics is:
@example
-\override LyricText #'font-shape = #'italic
+\override LyricText.font-shape = #'italic
@end example
@noindent
as8 g
}
\addlyrics {
- \override LyricText #'font-shape = #'italic
+ \override LyricText.font-shape = #'italic
The man who | feels love's sweet e -- | mo -- tion
}
}
the interpreter cannot recognize them. So the command should be:
@example
-\override Lyrics . LyricText #'font-shape = #'italic
+\override Lyrics.LyricText.font-shape = #'italic
@end example
@warning{In lyrics always leave whitespace between the final
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
\time 12/16
- \override BarLine #'stencil = ##f
+ \override BarLine.stencil = ##f
c4 b8 c d16 c d8 |
g,8 a16 b8 c d4 e16 |
e8
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
\time 12/16
- \override Staff.BarLine #'stencil = ##f
+ \override Staff.BarLine.stencil = ##f
c4 b8 c d16 c d8 |
g,8 a16 b8 c d4 e16 |
e8
@lilypond[quote,verbatim,relative=2]
{
c4 c
- \once \override NoteHead #'stencil = #point-stencil
+ \once \override NoteHead.stencil = #point-stencil
c4 c
}
@end lilypond
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
\time 12/16
- \override Staff.BarLine #'break-visibility = #'#(#f #f #f)
+ \override Staff.BarLine.break-visibility = #'#(#f #f #f)
c4 b8 c d16 c d8 |
g,8 a16 b8 c d4 e16 |
e8
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
\time 12/16
- \override Staff.TimeSignature #'transparent = ##t
+ \override Staff.TimeSignature.transparent = ##t
c4 b8 c d16 c d8 |
g,8 a16 b8 c d4 e16 |
e8
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
\time 12/16
- \override Staff.TimeSignature #'stencil = ##f
+ \override Staff.TimeSignature.stencil = ##f
c4 b8 c d16 c d8 |
g,8 a16 b8 c d4 e16 |
e8
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
\time 12/16
- \override Staff.BarLine #'color = #white
+ \override Staff.BarLine.color = #white
c4 b8 c d16 c d8 |
g,8 a16 b8 c d4 e16 |
e8
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
\time 12/16
- \override Staff.BarLine #'color = #(x11-color 'white)
+ \override Staff.BarLine.color = #(x11-color 'white)
c4 b8 c d16 c d8 |
g,8 a16 b8 c d4 e16 |
e8
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
\time 12/16
- \override Staff.BarLine #'color = #(rgb-color 1 1 1)
+ \override Staff.BarLine.color = #(rgb-color 1 1 1)
c4 b8 c d16 c d8 |
g,8 a16 b8 c d4 e16 |
e8
@end lilypond
Finally, there is also a grey scale available as part of the
-X11 set of colors. These range from black, @code{'grey0'},
+X11 set of colors. These range from black, @code{'grey0},
to white, @code{'grey100}, in steps of 1. Let's illustrate
this by setting all the layout objects in our example to
various shades of grey:
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
\time 12/16
- \override Staff.StaffSymbol #'color = #(x11-color 'grey30)
- \override Staff.TimeSignature #'color = #(x11-color 'grey60)
- \override Staff.Clef #'color = #(x11-color 'grey60)
- \override Voice.NoteHead #'color = #(x11-color 'grey85)
- \override Voice.Stem #'color = #(x11-color 'grey85)
- \override Staff.BarLine #'color = #(x11-color 'grey10)
+ \override Staff.StaffSymbol.color = #(x11-color 'grey30)
+ \override Staff.TimeSignature.color = #(x11-color 'grey60)
+ \override Staff.Clef.color = #(x11-color 'grey60)
+ \override Voice.NoteHead.color = #(x11-color 'grey85)
+ \override Voice.Stem.color = #(x11-color 'grey85)
+ \override Staff.BarLine.color = #(x11-color 'grey10)
c4 b8 c d16 c d8 |
g,8 a16 b8 c d4 e16 |
e8
@cindex objects, changing size of
Let us begin by looking again at the earlier example
-see @ref{Nesting music expressions}) which showed
+(see @ref{Nesting music expressions}) which showed
how to introduce a new temporary staff, as in an @rglos{ossia}.
@cindex alignAboveContext property, example
alignAboveContext = #"main"
}
{
- \override Staff.Clef #'stencil = ##f
- \override Staff.TimeSignature #'stencil = ##f
+ \override Staff.Clef.stencil = ##f
+ \override Staff.TimeSignature.stencil = ##f
{ f8 f c }
}
>>
\new Staff \with {
alignAboveContext = #"main"
% Don't print clefs in this staff
- \override Clef #'stencil = ##f
+ \override Clef.stencil = ##f
% Don't print time signatures in this staff
- \override TimeSignature #'stencil = ##f
+ \override TimeSignature.stencil = ##f
}
{ f8 f c }
>>
like
@example
-\override NoteHead #'font-size = #-2
+\override NoteHead.font-size = #-2
@end example
or we can change the size of all fonts by setting a special
{ f8 c c }
\new Staff \with {
alignAboveContext = #"main"
- \override Clef #'stencil = ##f
- \override TimeSignature #'stencil = ##f
+ \override Clef.stencil = ##f
+ \override TimeSignature.stencil = ##f
% Reduce all font sizes by ~24%
fontSize = #-2
}
{ f8 c c }
\new Staff \with {
alignAboveContext = #"main"
- \override Clef #'stencil = ##f
- \override TimeSignature #'stencil = ##f
+ \override Clef.stencil = ##f
+ \override TimeSignature.stencil = ##f
fontSize = #-2
% Reduce stem length and line spacing to match
- \override StaffSymbol #'staff-space = #(magstep -2)
+ \override StaffSymbol.staff-space = #(magstep -2)
}
{ f8 f c }
>>
@node Within-staff objects
@subsection Within-staff objects
-We have already seen how the commands @code{\voiceXXX} affect
-the direction of slurs, ties, fingering and
-everything else which depends on the direction of the stems.
-These commands are essential when writing polyphonic music to
-permit interweaving melodic lines to be distinguished.
-But occasionally it may be necessary to override this automatic
-behavior. This can be done for whole sections of music or even
-for an individual note. The property which controls this
-behavior is the @code{direction} property of each layout object.
-We first explain what this does, and then introduce a number of
-ready-made commands which avoid your having to code explicit
+We have already seen how the commands @code{\voiceXXX} affect the
+direction of slurs, ties, fingering and everything else which depends on
+the direction of the stems -- see @ref{Explicitly instantiating voices}.
+These commands are essential when writing polyphonic music to permit
+interweaving melodic lines to be distinguished. But occasionally it may
+be necessary to override this automatic behavior. This can be done for
+whole sections of music or even for an individual note. The property
+which controls this behavior is the @code{direction} property of each
+layout object. We first explain what this does, and then introduce a
+number of ready-made commands which avoid your having to code explicit
overrides for the more common modifications.
Some layout objects like slurs and ties curve, bend or point
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
a4 g c a |
-\override Stem #'direction = #DOWN
+\override Stem.direction = #DOWN
a4 g c a |
-\override Stem #'direction = #UP
+\override Stem.direction = #UP
a4 g c a |
-\revert Stem #'direction
+\revert Stem.direction
a4 g c a |
@end lilypond
@lilypond[quote,verbatim,relative=2]
c4-5 a-3 f-1 c'-5 |
-\override Fingering #'direction = #DOWN
+\override Fingering.direction = #DOWN
c4-5 a-3 f-1 c'-5 |
-\override Fingering #'direction = #UP
+\override Fingering.direction = #UP
c4-5 a-3 f-1 c'-5 |
@end lilypond
try @w{@code{-7}}:
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
-\override Fingering #'font-size = #-7
+\override Fingering.font-size = #-7
\set fingeringOrientations = #'(left)
<f-2>4
<c-1 e-2 g-3 b-5>4
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
% Set details for later Text Spanner
-\override TextSpanner #'(bound-details left text)
+\override TextSpanner.bound-details.left.text
= \markup { \small \bold Slower }
% Place dynamics above staff
\dynamicUp
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
% Set details for later Text Spanner
-\override TextSpanner #'(bound-details left text)
+\override TextSpanner.bound-details.left.text
= \markup { \small \bold Slower }
% Place dynamics above staff
\dynamicUp
% Place following Ottava Bracket below Text Spanners
-\once \override Staff.OttavaBracket #'outside-staff-priority = #340
+\once \override Staff.OttavaBracket.outside-staff-priority = #340
% Start Ottava Bracket
\ottava #1
c'4 \startTextSpan
@lilypond[quote,verbatim,relative=2]
c4( c^\markup { \tiny \sharp } d4.) c8 |
c4(
-\once \override TextScript #'avoid-slur = #'inside
-\once \override TextScript #'outside-staff-priority = ##f
+\once \override TextScript.avoid-slur = #'inside
+\once \override TextScript.outside-staff-priority = ##f
c4^\markup { \tiny \sharp } d4.) c8 |
-\once \override Slur #'outside-staff-priority = #500
+\once \override Slur.outside-staff-priority = #500
c4( c^\markup { \tiny \sharp } d4.) c8 |
@end lilypond
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
c2^"Text1"
c2^"Text2" |
-\once \override TextScript #'outside-staff-priority = #500
+\once \override TextScript.outside-staff-priority = #500
c2^"Text3"
c2^"Text4" |
@end lilypond
The command to revert to the default behavior is
@code{\textLengthOff}. Remember @code{\once} only works with
-@code{\override}, @code{\set}, @code{\revert} or @code{unset},
+@code{\override}, @code{\set}, @code{\revert} or @code{\unset},
so cannot be used with @code{\textLengthOn}.
@cindex markup text, allowing collisions
R1 |
% Turn off collision avoidance
-\once \override TextScript #'outside-staff-priority = ##f
+\once \override TextScript.outside-staff-priority = ##f
c,,2^"Long Text " c'' |
R1 |
% Turn off collision avoidance
-\once \override TextScript #'outside-staff-priority = ##f
+\once \override TextScript.outside-staff-priority = ##f
\textLengthOn % and turn on textLengthOn
c,,2^"Long Text " % Spaces at end are honored
c''2 |
@cindex dynamics, tweaking placement
Dynamic markings will normally be positioned beneath the
-staff, but may be positioned above with the @code{dynamicUp}
+staff, but may be positioned above with the @code{\dynamicUp}
command. They will be positioned vertically relative to the
note to which they are attached, and will float below (or above)
all within-staff objects such as phrasing slurs and bar numbers.
the command to do this for dynamic text:
@example
-\override DynamicText #'extra-spacing-width = #'(0 . 0)
+\override DynamicText.extra-spacing-width = #'(0 . 0)
@end example
@noindent
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\dynamicUp
-\override DynamicText #'extra-spacing-width = #'(0 . 0)
+\override DynamicText.extra-spacing-width = #'(0 . 0)
a4\f b\mf c\mp b\p |
@end lilypond
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\dynamicUp
% Extend width by 1 staff space
-\override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
+\override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
a4\f b\mf c\mp b\p
@end lilypond
@lilypond[quote,fragment,relative=1,verbatim]
c2\fermata
-\override Script #'padding = #3
+\override Script.padding = #3
b2\fermata
@end lilypond
@lilypond[quote,fragment,relative=1,verbatim]
% This will not work, see below
-\override MetronomeMark #'padding = #3
+\override MetronomeMark.padding = #3
\tempo 4 = 120
c1 |
% This works
-\override Score.MetronomeMark #'padding = #3
+\override Score.MetronomeMark.padding = #3
\tempo 4 = 80
d1 |
@end lilypond
\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 = #sesquisharp
+ \once \override Accidental.stencil = #ly:text-interface::print
+ \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
+ \once \override Score.AccidentalPlacement.right-padding = #0.6
+ \once \override Accidental.stencil = #ly:text-interface::print
+ \once \override Accidental.text = #sesquisharp
cis4 |
}
@end lilypond
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\dynamicUp
% Extend width by 1 unit
-\override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
+\override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
% Align dynamics to a base line 2 units above staff
-\override DynamicLineSpanner #'staff-padding = #2
+\override DynamicLineSpanner.staff-padding = #2
a4\f b\mf c\mp b\p
@end lilypond
@lilypond[quote,fragment,ragged-right,verbatim,relative=3]
\voiceOne
<a\2>
-\once \override StringNumber #'self-alignment-X = #RIGHT
+\once \override StringNumber.self-alignment-X = #RIGHT
<a\2>
@end lilypond
<<
{ c4 c c c }
\\
- \override MultiMeasureRest #'staff-position = #-8
+ \override MultiMeasureRest.staff-position = #-8
{ R1 }
>>
@end lilypond
@lilypond[quote,fragment,relative=1,verbatim]
\stemUp
f4-5
-\once \override Fingering #'extra-offset = #'(-0.3 . -1.8)
+\once \override Fingering.extra-offset = #'(-0.3 . -1.8)
f4-5
@end lilypond
@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
r4
-\once \override PhrasingSlur #'positions = #'(-4 . -3)
+\once \override PhrasingSlur.positions = #'(-4 . -3)
\acciaccatura e8\( d8 c~ c d c d\)
@end lilypond
{ c'1 ~ c'2. e'8 f' }
\\
{
- \override Beam #'positions = #'(-1 . -1)
+ \override Beam.positions = #'(-1 . -1)
e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g''
}
>>
<<
{ c2 aes4. bes8 }
\\
- { aes2 f4 fes }
+ { <ees, c>2 des }
\\
- {
- \voiceFour
- <ees c>2 des
- }
+ \\
+ { aes'2 f4 fes }
>> |
<c ees aes c>1 |
}
@end lilypond
@noindent
-The lower two notes of the first chord (i.e, those in the third voice)
-should not be shifted away from the note column of the higher two
-notes. To correct this we set @code{force-hshift}, which is a
-property of @code{NoteColumn}, of these notes to zero. The lower note
-of the second chord is best placed just to the right of the higher
-notes. We achieve this by setting @code{force-hshift} of this note to
-0.5, ie half a note head's width to the right of the note column of
-the higher notes.
+The inner note of the first chord (i.e. the A-flat in the fourth
+Voice) need not be shifted away from the note column of the higher
+note. To correct this we set @code{force-hshift}, which is a property
+of @code{NoteColumn}, of this note to zero.
+
+In the second chord we prefer the F to line up with the A-flat and the
+lowest note to be positioned slightly right to avoid a collision of
+stems. We achieve this by setting @code{force-hshift} in the
+@code{NoteColumn} of the low D-flat to move it to the right by half
+a staff-space.
Here's the final result:
<<
{ c2 aes4. bes8 }
\\
- { aes2 f4 fes }
- \\
{
- \voiceFour
- \once \override NoteColumn #'force-hshift = #0
- <ees c>2
- \once \override NoteColumn #'force-hshift = #0.5
+ <ees, c>2
+ \once \override NoteColumn.force-hshift = #0.5
des2
}
+ \\
+ \\
+ {
+ \override NoteColumn.force-hshift = #0
+ aes'2 f4 fes
+ }
>> |
<c ees aes c>1 |
}
rhMusic = \relative c'' {
\new Voice {
r2 c4.\( g8 |
- \once \override Tie #'staff-position = #3.5
+ \once \override Tie.staff-position = #3.5
bes1~ |
\bar "||"
\time 6/4
\voiceTwo
c,8~
% Reposition the c2 to the right of the merged note
- \once \override NoteColumn #'force-hshift = #1.0
+ \once \override NoteColumn.force-hshift = #1.0
% Move the c2 out of the main note column
% so the merge will work
\shiftOnn
% Stem on the d2 must be down to permit merging
\stemDown
% Stem on the d2 should be invisible
- \once \override Stem #'transparent = ##t
- \once \override Flag #'transparent = ##t
+ \tweak Stem.transparent ##t
+ \tweak Flag.transparent ##t
d2
}
\new Voice {
override placed just before the first tied note would move the tie up
to 3.5 half staff spaces above the center line:
-@code{\once \override Tie #'staff-position = #3.5}
+@code{\once \override Tie.staff-position = #3.5}
This completes bar two, giving:
rhMusic = \relative c'' {
\new Voice {
r2 c4.\( g8 |
- \once \override Tie #'staff-position = #3.5
+ \once \override Tie.staff-position = #3.5
bes1~ |
\bar "||"
\time 6/4
rhMusic = \relative c'' {
\new Voice {
r2 c4.\( g8 |
- \once \override Tie #'staff-position = #3.5
+ \once \override Tie.staff-position = #3.5
bes1~ |
\bar "||"
\time 6/4
rhMusic = \relative c'' {
\new Voice {
r2 c4.\( g8 |
- \once \override Tie #'staff-position = #3.5
+ \once \override Tie.staff-position = #3.5
bes1~ |
\bar "||"
\time 6/4
rhMusic = \relative c'' {
\new Voice {
r2 c4.\( g8 |
- \once \override Tie #'staff-position = #3.5
+ \once \override Tie.staff-position = #3.5
bes1~ |
\bar "||"
\time 6/4
\voiceTwo
c,8~
% Reposition the c2 to the right of the merged note
- \once \override NoteColumn #'force-hshift = #1.0
+ \once \override NoteColumn.force-hshift = #1.0
% Move the c2 out of the main note column
% so the merge will work
\shiftOnn
% Stem on the d2 must be down to permit merging
\stemDown
% Stem on the d2 should be invisible
- \once \override Stem #'transparent = ##t
- \once \override Flag #'transparent = ##t
+ \tweak Stem.transparent ##t
+ \tweak Flag.transparent ##t
d2
}
\new Voice {
@lilypond[quote,fragment,relative=2,verbatim]
<<
{
- \once \override Stem #'transparent = ##t
- \once \override Flag #'transparent = ##t
+ \tweak Stem.transparent ##t
+ \tweak Flag.transparent ##t
b8~ b\noBeam
}
\\
@lilypond[quote,fragment,relative=2,verbatim]
<<
{
- \once \override Stem #'transparent = ##t
- \once \override Flag #'transparent = ##t
- \once \override Stem #'length = #8
+ \tweak Stem.transparent ##t
+ \tweak Flag.transparent ##t
+ \tweak Stem.length #8
b8~ b\noBeam
}
\\
% Visible tempo marking
\tempo 4=120
a4 a a
- \once \override Score.MetronomeMark #'transparent = ##t
+ \once \override Score.MetronomeMark.transparent = ##t
% Invisible tempo marking to lengthen fermata in MIDI
\tempo 4=80
a4\fermata |
% Visible tempo marking
\tempo 4=120
a4 a a
- \once \override Score.MetronomeMark #'stencil = ##f
+ \once \override Score.MetronomeMark.stencil = ##f
% Invisible tempo marking to lengthen fermata in MIDI
\tempo 4=80
a4\fermata |
alternative can we use @code{\override} and @code{\revert} commands?
@example
-@code{\override Lyrics . LyricText #'font-shape = #'italic}
-@code{\override Lyrics . LyricText #'font-series = #'bold}
+@code{\override Lyrics.LyricText.font-shape = #'italic}
+@code{\override Lyrics.LyricText.font-series = #'bold}
-@code{\revert Lyrics . LyricText #'font-shape}
-@code{\revert Lyrics . LyricText #'font-series}
+@code{\revert Lyrics.LyricText.font-shape}
+@code{\revert Lyrics.LyricText.font-series}
@end example
These would also be extremely tedious to enter if there were many
@lilypond[quote,verbatim]
emphasize = {
- \override Lyrics.LyricText #'font-shape = #'italic
- \override Lyrics.LyricText #'font-series = #'bold
+ \override Lyrics.LyricText.font-shape = #'italic
+ \override Lyrics.LyricText.font-series = #'bold
}
normal = {
- \revert Lyrics.LyricText #'font-shape
- \revert Lyrics.LyricText #'font-series
+ \revert Lyrics.LyricText.font-shape
+ \revert Lyrics.LyricText.font-series
}
global = { \key c \major \time 4/4 \partial 4 }
}
VerseTwo = \lyricmode {
- O | \emphasize Christ, \normal whose voice the | wa -- ters heard,
+ O | \once \emphasize Christ, whose voice the | wa -- ters heard,
}
VerseThree = \lyricmode {
@lilypond[quote,verbatim,ragged-right]
mpdolce =
#(make-dynamic-script
- (markup #:hspace 0
- #:translate '(5 . 0)
- #:line (#:dynamic "mp"
- #:text #:italic "dolce")))
+ #{ \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))))
+ #{ ^\markup \bold \box #string #})
\relative c'' {
\tempo 4=50
}
@end lilypond
-There are some problems with overlapping output; we'll fix those using
-the techniques in @ref{Moving objects}. But let's also
-do something about the @code{mpdolce} and @code{inst}
-definitions. They produce the output we desire, but we might want
-to use them in another piece. We could simply copy-and-paste them
-at the top of every file, but that's an annoyance. It also leaves
-those definitions in our input files, and I personally find all
-the @code{#()} somewhat ugly. Let's hide them in another file:
+Let's do something about the @code{mpdolce} and @code{inst} definitions.
+They produce the output we desire, but we might want to use them in
+another piece. We could simply copy-and-paste them at the top of every
+file, but that's an annoyance. It also leaves those definitions in our
+input files, and I personally find all the @code{#()} somewhat ugly.
+Let's hide them in another file:
@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")))
+ #@{ \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))))
+ #@{ ^\markup \bold \box #string #@})
@end example
We will refer to this file using the @code{\include} command near
@lilypond[quote,ragged-right]
mpdolce =
#(make-dynamic-script
- (markup #:hspace 0
- #:translate '(5 . 0)
- #:line (#:dynamic "mp"
- #:text #:italic "dolce")))
+ #{ \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))))
+ #{ ^\markup \bold \box #string #})
\relative c'' {
\tempo 4=50
%%% definitions.ily
mpdolce =
#(make-dynamic-script
- (markup #:hspace 0
- #:translate '(5 . 0)
- #:line (#:dynamic "mp"
- #:text #:italic "dolce")))
+ #@{ \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))))
+ #@{ ^\markup \bold \box #string #@})
\layout@{
\context @{
\Score
- \override MetronomeMark #'extra-offset = #'(-9 . 0)
- \override MetronomeMark #'padding = #'3
+ \override MetronomeMark.extra-offset = #'(-9 . 0)
+ \override MetronomeMark.padding = #'3
@}
\context @{
\Staff
- \override TimeSignature #'style = #'numbered
+ \override TimeSignature.style = #'numbered
@}
\context @{
\Voice
- \override Glissando #'thickness = #3
- \override Glissando #'gap = #0.1
+ \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")))
+ #{ \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))))
+ #{ ^\markup \bold \box #string #})
\layout{
\context {
\Score
- \override MetronomeMark #'extra-offset = #'(-9 . 0)
- \override MetronomeMark #'padding = #'3
+ \override MetronomeMark.extra-offset = #'(-9 . 0)
+ \override MetronomeMark.padding = #'3
}
\context {
\Staff
- \override TimeSignature #'style = #'numbered
+ \override TimeSignature.style = #'numbered
}
\context {
\Voice
- \override Glissando #'thickness = #3
- \override Glissando #'gap = #0.1
+ \override Glissando.thickness = #3
+ \override Glissando.gap = #0.1
}
}
overall size of the output.
@example
-%%% definitions.ily
+%%% web-publish.ily
mpdolce =
#(make-dynamic-script
- (markup #:hspace 0
- #:translate '(5 . 0)
- #:line (#:dynamic "mp"
- #:text #:italic "dolce")))
+ #@{ \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))))
+ #@{ ^\markup \bold \box #string #@})
#(set-global-staff-size 23)
\layout@{
\context @{
\Score
- \override MetronomeMark #'extra-offset = #'(-9 . 0)
- \override MetronomeMark #'padding = #'3
+ \override MetronomeMark.extra-offset = #'(-9 . 0)
+ \override MetronomeMark.padding = #'3
@}
\context @{
\Staff
@}
\context @{
\Voice
- \override Glissando #'thickness = #3
- \override Glissando #'gap = #0.1
+ \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")))
+ #{ \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))))
+ #{ ^\markup \bold \box #string #})
#(set-global-staff-size 23)
\layout{
\context { \Score
- \override MetronomeMark #'extra-offset = #'(-9 . 0)
- \override MetronomeMark #'padding = #'3
+ \override MetronomeMark.extra-offset = #'(-9 . 0)
+ \override MetronomeMark.padding = #'3
}
\context { \Voice
- \override Glissando #'thickness = #3
- \override Glissando #'gap = #0.1
+ \override Glissando.thickness = #3
+ \override Glissando.gap = #0.1
}
}
of this directory depends (a) on whether you obtained LilyPond
by downloading a precompiled binary from lilypond.org
or whether you installed it from a package manager (i.e.
-distributed with Linux, or installed under fink or cygwin) or
+distributed with GNU/Linux, or installed under fink or cygwin) or
compiled it from source, and (b) on which operating system it is
being used:
@strong{Downloaded from lilypond.org}
@itemize @bullet
-@item Linux
+@item GNU/Linux
Navigate to
@example
@example
tieDotted = @{
- \override Tie #'dash-period = #0.75
- \override Tie #'dash-fraction = #0.1
+ \override Tie.dash-period = #0.75
+ \override Tie.dash-fraction = #0.1
@}
@end example
\relative c' {
% Arrange to obtain color from color-notehead procedure
- \override NoteHead #'color = #color-notehead
+ \override NoteHead.color = #color-notehead
a2 b | c2 d | e2 f | g2 a |
}
@end lilypond