Guide, node Updating translation committishes..
@end ignore
-@c \version "2.14.0"
+@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
@cindex tweaking methods
-@strong{\override command}
+@menu
+* The \override command::
+* The \revert command::
+* The \once prefix::
+* The \overrideProperty command::
+* The \tweak command::
+@end menu
+
+@node The \override command
+@unnumberedsubsubsec The @code{\override} command
@cindex override command
@cindex override syntax
The general syntax of this command is:
@example
-\override @var{Context}.@var{LayoutObject} #'@var{layout-property} =
-#@var{value}
+\override @var{Context}.@var{LayoutObject}.@var{layout-property} = #@var{value}
@end example
@noindent
layout object with the name @var{LayoutObject}, which is a member of
the @var{Context} context, to the value @var{value}.
-The @var{Context} can be omitted (and usually is) when the
+The @var{Context} may be omitted (and usually is) when the
required context is unambiguously implied and is one of lowest
level contexts, i.e., @code{Voice}, @code{ChordNames} or
@code{Lyrics}, and we shall omit it in many of the following
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.
-
-For now, don't worry about the @code{#'}, which must precede the
-layout property, and the@tie{}@code{#}, which must precede the value.
-These must always be present in exactly this form. This is the
-most common command used in tweaking, and most of the rest of
-this chapter will be directed to presenting examples of how it is
-used. Here is a simple example to change the color of the
-note head:
+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.
+
+LilyPond's primary expressions are musical items like notes,
+durations, and markups. More basic expressions like numbers,
+strings, and lists are processed in @q{Scheme mode}, which is
+invoked by prefixing the value with @samp{#}. Although the
+values may sometimes have a valid representation in LilyPond's
+musical mode, this manual will always use @samp{#} for their
+entry for the sake of consistency. For more information about
+Scheme mode, see @rextend{LilyPond Scheme syntax}.
+
+@code{\override} is the most common command used in tweaking, and
+most of the rest of this chapter will be directed to presenting
+examples of how it is used. Here is a simple example to change the
+color of the note head:
@cindex color property, example
@cindex NoteHead, example of overriding
@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
-@strong{\revert command}
+
+@node The \revert command
+@unnumberedsubsubsec The @code{\revert} command
@cindex revert command
commands have been issued.
@example
-\revert @var{Context}.@var{LayoutObject} #'@var{layout-property}
+\revert @var{Context}.@var{LayoutObject}.@var{layout-property}
@end example
Again, just like @var{Context} in the @code{\override} command,
@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
-@strong{\once prefix}
+
+@node The \once prefix
+@unnumberedsubsubsec The @code{\once} prefix
@funindex \once
@funindex once
-Both the @code{\override} and the @code{\set} commands may be
-prefixed by @code{\once}. This causes the following
-@code{\override} or @code{\set} command to be effective only
-during the current musical moment before the property reverts
-back to its default value. Using the same example, we can
-change the color of a single note like this:
+Both the @code{\override} and the @code{\set} commands may be prefixed
+by @code{\once}. This causes the following @code{\override} or
+@code{\set} command to be effective only during the current musical
+moment before the property reverts back to its previous value (this can
+be different from the default if another @code{\override} is still in
+effect). Using the same example, we can change the color of a single
+note like this:
@cindex color property, example
@cindex NoteHead, example of overriding
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
c4 d
-\once \override NoteHead #'color = #red
+\override NoteHead.color = #red
e4 f |
-\once \override NoteHead #'color = #green
-g4 a b c |
+\once \override NoteHead.color = #green
+g4 a
+\revert NoteHead.color
+b c |
@end lilypond
-@strong{\overrideProperty command}
+
+@node The \overrideProperty command
+@unnumberedsubsubsec The @code{\overrideProperty} command
@cindex overrideProperty command
@rextend{Difficult tweaks}.
@c Maybe explain in a later iteration -td
-@strong{\tweak command}
+
+@node The \tweak command
+@unnumberedsubsubsec The @code{\tweak} command
@cindex tweak command
@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}
+\tweak @var{layout-property} #@var{value}
@end example
A @code{\tweak} command can also be used to modify just one in
@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] }
@cindex transparent property, example
@cindex TupletNumber, example of overriding
-@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] }
-\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
-property name and a@tie{}@code{#} preceding the new value!
+Don't forget the@tie{}@code{#} preceding the new value!
The final question is, @q{Where should this command be
placed?} While you are unsure and learning, the best
\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
still need some practice. This is provided in the examples
which follow.
-@subheading Finding the context
+@subsubsubheading Finding the context
@cindex context, finding
@cindex context, identifying correct
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
the fact that we are entering notes, we can omit it in this
location.
-@subheading Overriding once only
+@subsubsubheading Overriding once only
@cindex overriding once only
@cindex once override
{
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
The @code{\once} command can also be used before the @code{\set}
command.
-@subheading Reverting
+@subsubsubheading Reverting
@cindex revert
@cindex default properties, reverting to
{
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
}
the property is @code{font-shape} and the value is
@code{italic}. As before, we'll omit the context.
-As an aside, although it is an important one, note that because the
-values of @code{font-shape} are symbols they must be introduced with a
-single apostrophe, @code{'}. That is why apostrophes are needed
-before @code{thickness} in the earlier example and @code{font-shape}.
-These are both symbols too. Symbols are then read internally by
-LilyPond. Some of them are the names of properties, like
-@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
-@rextend{Scheme tutorial}.
+As an aside, although it is an important one, note that some
+properties take values that are symbols, like @code{italic}, and
+must be preceded by an apostrophe, @code{'}. Symbols are then
+read internally by LilyPond. Note the distinction from arbitrary
+text strings, which would appear as @code{"a text 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:
@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
}
}
@noindent
and the lyrics are all printed in italics.
-@subheading Specifying the context in lyric mode
-
-@cindex context, specifying in lyric mode
-@cindex lyric mode, specifying context
-
-In the case of lyrics, if you try specifying the context in the
-format given earlier the command will fail. A syllable
-entered in lyricmode is terminated by either a space,
-a newline or a digit. All other characters are included
-as part of the syllable. For this reason a space or newline
-must appear before the terminating @code{@}} to prevent it being
-included as part of the final syllable. Similarly,
-spaces must be inserted before and after the
-period or dot, @q{.}, separating the context name from the
-object name, as otherwise the two names are run together and
-the interpreter cannot recognize them. So the command should be:
-
-@example
-\override Lyrics . LyricText #'font-shape = #'italic
-@end example
-
@warning{In lyrics always leave whitespace between the final
syllable and the terminating brace.}
-@warning{In overrides in lyrics always place spaces around
-the dot between the context name and the object name.}
-
@seealso
Extending: @rextend{Scheme tutorial}.
by extension, many other layout objects too.) Let's consider each of
these in turn.
-@subheading stencil
+@menu
+* The stencil property::
+* The break-visibility property::
+* The transparent property::
+* The color property::
+@end menu
+
+@node The stencil property
+@unnumberedsubsubsec The @code{stencil} property
@cindex stencil property
@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
}
@end lilypond
-Now the bar lines have vanished.
+Now the bar lines have vanished. Setting the @code{stencil}
+property to @code{#f} is such a frequent operation that there is a
+shorthand for it called @code{\omit}:
+@funindex \omit
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+{
+ \time 12/16
+ \omit Staff.BarLine
+ c4 b8 c d16 c d8 |
+ g,8 a16 b8 c d4 e16 |
+ e8
+}
+@end lilypond
Note, though, that setting the @code{stencil} property to @code{#f}
will cause errors when the dimensions of the object are required for
@lilypond[quote,verbatim,relative=2]
{
c4 c
- \once \override NoteHead #'stencil = #point-stencil
+ \once \override NoteHead.stencil = #point-stencil
c4 c
}
@end lilypond
-@subheading break-visibility
+@node The break-visibility property
+@unnumberedsubsubsec The @code{break-visibility} property
@cindex break-visibility property
These control respectively whether bar lines are printed at the end of
a line, in the middle of lines, and at the beginning of lines. For
our example we want all bar lines to be suppressed, so the value we
-need is @code{'#(#f #f #f)}. Let's try that, remembering to include
+need is @code{#(#f #f #f)} (also available
+under the name @code{all-invisible}). Let's try that, remembering to include
the @code{Staff} context. Note also that in writing this value we
-have @code{#'#} before the opening bracket. The @code{'#} is required
-as part of the value to introduce a vector, and the first@tie{}@code{#} is
+have @code{##} before the opening parenthesis. One @code{#} is required
+as part of vector constant syntax, and the first@tie{}@code{#} is
required, as always, to precede the value itself in the
@code{\override} command.
@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
And we see this too removes all the bar lines.
-@subheading transparent
+@node The transparent property
+@unnumberedsubsubsec The @code{transparent} property
@cindex transparent property
@cindex transparency
@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
+}
+@end lilypond
+
+@noindent
+Again, setting the @code{transparent} property is a rather
+frequent operation, so we have a shorthand for it called
+@code{\hide}:
+@funindex \hide
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+{
+ \time 12/16
+ \hide Staff.TimeSignature
c4 b8 c d16 c d8 |
g,8 a16 b8 c d4 e16 |
e8
@end lilypond
@noindent
-The time signature is gone, but this command leaves a gap where
+In either case, the time signature is gone, but this command
+leaves a gap where
the time signature should be. Maybe this is what is wanted for
an exercise for the student to fill it in, but in other
circumstances a gap might be undesirable. To remove it, the
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
\time 12/16
- \override Staff.TimeSignature #'stencil = ##f
+ \omit Staff.TimeSignature
c4 b8 c d16 c d8 |
g,8 a16 b8 c d4 e16 |
e8
@noindent
and the difference is obvious: setting the stencil to @code{#f}
+(possibly via @code{\omit})
removes the object entirely; making the object @code{transparent}
+(which can be done using @code{\hide})
leaves it where it is, but makes it invisible.
-@subheading color
+@node The color property
+@unnumberedsubsubsec The @code{color} property
@cindex color property
@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
@noindent
and again, we see the bar lines are not visible. Note that
@emph{white} is not preceded by an apostrophe -- it is not
-a symbol, but a @emph{function}. When called, it provides
+a symbol, but a @emph{variable}. When evaluated, it provides
the list of internal values required to set the color to
-white. The other colors in the normal list are functions
+white. The other colors in the normal list are variables
too. To convince yourself this is working you might like
-to change the color to one of the other functions in the
+to change the color to one of the other variables in the
list.
@cindex color, X11
The second way of changing the color is to use the list of
X11 color names in the second list in @ruser{List of colors}.
-However, these must be preceded by another function, which
-converts X11 color names into the list of internal values,
-@code{x11-color}, like this:
+However, these are mapped to the actual values by the function
+@code{x11-color} which
+converts X11 color symbols into the list of internal values like this:
@cindex BarLine, example of overriding
@cindex color property, example
@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
@noindent
Note that in this case the function @code{x11-color} takes
a symbol as an argument, so the symbol must be preceded by
-an apostrophe and the two enclosed in brackets.
+an apostrophe to keep it from being evaluated as a variable, and
+the whole function call has to be enclosed in parentheses.
@cindex rgb colors
@cindex color, rgb
@funindex rgb-color
-There is yet a third function, one which converts RGB values into
+There is another function, one which converts RGB values into
internal colors -- the @code{rgb-color} function. This takes
three arguments giving the intensities of the red, green and
blue colors. These take values in the range 0 to 1. So to
@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
@cindex alignAboveContext property, example
@cindex @code{\with}, example
-@cindex stencil property, example
+@funindex \omit
@cindex Clef, example of overriding
@cindex TimeSignature, example of overriding
alignAboveContext = #"main"
}
{
- \override Staff.Clef #'stencil = ##f
- \override Staff.TimeSignature #'stencil = ##f
+ \omit Staff.Clef
+ \omit Staff.TimeSignature
{ f8 f c }
}
>>
But what is the difference between modifying the staff context by
using @code{\with} and modifying the stencils of the clef and the
-time signature with \override? The main difference is that
+time signature with @code{\override}, or in this case
+@code{\omit}?
+The main difference is that
changes made in a @code{\with} clause are made at the time the
context is created, and remain in force as the @strong{default}
values for the duration of that context, whereas
\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 }
+ >>
+ r4 |
+ }
+}
+@end lilypond
+
+It turns out that we can also employ the shorthands @code{\hide}
+and @code{\omit} for setting the @code{transparent} property and
+clearing the @code{stencil} here, leading to the result
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+\new Staff ="main" {
+ \relative g' {
+ r4 g8 g c4 c8 d |
+ e4 r8
+ <<
+ { f8 c c }
+ \new Staff \with {
+ alignAboveContext = #"main"
+ % Don't print clefs in this staff
+ \omit Clef
+ % Don't print time signatures in this staff
+ \omit TimeSignature
}
{ 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
+ \omit Clef
+ \omit TimeSignature
% Reduce all font sizes by ~24%
fontSize = #-2
}
{ f8 c c }
\new Staff \with {
alignAboveContext = #"main"
- \override Clef #'stencil = ##f
- \override TimeSignature #'stencil = ##f
+ \omit Clef
+ \omit TimeSignature
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
right or left when they point up or down. This is controlled
automatically when @code{direction} is set.
+@menu
+* The direction property::
+* Fingering::
+@end menu
+
+@node The direction property
+@unnumberedsubsubsec The @code{direction} property
+
@cindex down
@cindex up
@cindex center
@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
@tab Tuplets are below/above notes
@end multitable
-Note that these predefined commands may @strong{not} be
+The neutral/normal variants of these commands are implemented
+using @code{\revert} and may @strong{not} be
preceded by @code{\once}. If you wish to limit the
-effect to a single note you must either use the equivalent
-@code{\once \override} command or use the predefined command
-followed after the affected note by the corresponding
-@code{\xxxNeutral} command.
+effect of the other commands (which are implemented using
+@code{\override}) to a single timestep, you can precede them with
+@code{\once} like you would do with explicit overrides.
+@node Fingering
@unnumberedsubsubsec Fingering
@cindex fingering, placement
@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
@subsection Outside-staff objects
Outside-staff objects are automatically placed to avoid collisions.
+There are several ways to override the automatic placement if the
+positioning is not optimum.
+
+@menu
+* The outside-staff-priority property::
+* The \textLengthOn command::
+* Dynamics placement::
+* Grob sizing::
+@end menu
+
+
+@node The outside-staff-priority property
+@unnumberedsubsubsec The @code{outside-staff-priority} property
+
Objects with the lower value of the @code{outside-staff-priority}
property are placed nearer to the staff, and other outside-staff
objects are then raised as far as necessary to avoid collisions.
@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
room for the text. This is done using the @code{textLengthOn}
command.
-@subheading \textLengthOn
+@node The \textLengthOn command
+@unnumberedsubsubsec The @code{\textLengthOn} command
@cindex notes, spreading out with text
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 |
@end lilypond
-
-@subheading Dynamics
+@node Dynamics placement
+@unnumberedsubsubsec Dynamics placement
@cindex tweaking dynamics placement
@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.
command, but there is no equivalent command for dynamic marks. So we
shall have to work out how to do this using @code{\override} commands.
-@subheading Grob sizing
+@node Grob sizing
+@unnumberedsubsubsec Grob sizing
@cindex grob sizing
@cindex sizing grobs
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
Let's now see how the properties in the previous section can
help to resolve overlapping notation.
-@subheading padding property
+@menu
+* The padding property::
+* The right-padding property::
+* The staff-padding property::
+* The self-alignment-X property::
+* The staff-position property::
+* The extra-offset property::
+* The positions property::
+* The force-hshift property::
+@end menu
+
+@node The padding property
+@unnumberedsubsubsec The @code{padding} property
@cindex padding
@cindex fixing overlapping notation
@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
objects outside it are moved.
-@subheading right-padding
+@node The right-padding property
+@unnumberedsubsubsec The @code{right-padding} property
@cindex right-padding property
\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
@noindent
-@subheading staff-padding property
+@node The staff-padding property
+@unnumberedsubsubsec The @code{staff-padding} property
@cindex aligning objects on a baseline
@cindex objects, aligning on a baseline
@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
-@subheading self-alignment-X property
+@node The self-alignment-X property
+@unnumberedsubsubsec The @code{self-alignment-X} property
The following example shows how this can resolve the collision
of a string fingering object with a note's stem by aligning the
@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
-@subheading staff-position property
+@node The staff-position property
+@unnumberedsubsubsec The @code{staff-position} property
@cindex object collision within a staff
<<
{ c4 c c c }
\\
- \override MultiMeasureRest #'staff-position = #-8
+ \override MultiMeasureRest.staff-position = #-8
{ R1 }
>>
@end lilypond
This is better than using, for example, @code{extra-offset},
because the ledger line above the rest is inserted automatically.
-@subheading extra-offset property
+@node The extra-offset property
+@unnumberedsubsubsec The @code{extra-offset} property
@cindex positioning objects
@cindex positioning grobs
@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
-@subheading positions property
+@node The positions property
+@unnumberedsubsubsec The @code{positions} property
@cindex controlling tuplets, slurs, phrasing slurs, and beams manually
@cindex manually controlling tuplets, slurs, phrasing slurs, and beams
@cindex phrasing slurs, controlling manually
@cindex beams, controlling manually
-The @code{positions} property allows the position and slope of
-tuplets, slurs, phrasing slurs and beams to be controlled manually.
-Here's an example which has an ugly phrasing slur due to its trying to
-avoid the slur on the acciaccatura.
+The @code{positions} property allows the vertical position and hence
+the slope of tuplets, slurs, phrasing slurs and beams to be controlled
+manually.
-@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
-r4 \acciaccatura e8\( d8 c~ c d c d\)
-@end lilypond
-
-@noindent
-We could simply move the phrasing slur above the notes, and this
-would be the preferred solution:
+Here's an example in which the phrasing slur and slur collide:
-@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
-r4
-\phrasingSlurUp
-\acciaccatura e8\( d8 c~ c d c d\)
+@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+a8 \( ( a'16 ) a \)
@end lilypond
-@noindent
-But if there were some reason why this could not be done the
-other alternative would be to move the left end of the phrasing
-slur down a little using the @code{positions} property. This
-also resolves the rather nasty shape.
-
@cindex PhrasingSlur, example of overriding
@cindex positions property, example
-@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
-r4
-\once \override PhrasingSlur #'positions = #'(-4 . -3)
-\acciaccatura e8\( d8 c~ c d c d\)
+@noindent
+One possibility would be to move the two ends of the phrasing slur
+higher. We can try setting the left end to 2.5 staff-spaces above the
+centre line and the right end to 4.5 above, and LilyPond will
+select the phrasing slur from the candidates it has found with its
+end points closest to these:
+
+@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+\once \override PhrasingSlur.positions = #'(2.5 . 4.5)
+a8 \( ( a'16 ) a \)
@end lilypond
+This is an improvement, but why not lower the right end of the slur
+a little? If you try it you'll find it can't be done in this way.
+That's because there are no candidate slurs lower than the one
+already selected, and in this case the @code{positions} property has
+no effect. However, ties, slurs and phrasing slurs @emph{can} be
+positioned and shaped very precisely when necessary. To learn how to
+do this, see @ruser{Modifying ties and slurs}.
+
Here's a further example. We see that the beams
collide with the ties:
{ 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''
}
>>
the second measure of eighth notes, but not to any of the beams in the
second voice.
-@subheading force-hshift property
+@node The force-hshift property
+@unnumberedsubsubsec The @code{force-hshift property}
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
<<
{ 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
- % Move the c2 out of the main note column so the merge will work
+ \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
\stemDown
% Stem on the d2 should be invisible
- \once \override Stem #'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
{ 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
+ % Move the c2 out of the main note column
+ % so the merge will work
c,8~ \shiftOnn c2
}
\new Voice {
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
- % Move the c2 out of the main note column so the merge will work
+ \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
\stemDown
% Stem on the d2 should be invisible
- \once \override Stem #'transparent = ##t
+ \tweak Stem.transparent ##t
+ \tweak Flag.transparent ##t
d2
}
\new Voice {
@node Other uses for tweaks
@subsection Other uses for tweaks
+@menu
+* Tying notes across voices::
+* Simulating a fermata in MIDI::
+@end menu
+
@cindex transparent property, use of
@cindex objects, making invisible
@cindex removing objects
@cindex objects, hiding
@cindex invisible objects
@cindex objects, invisible
-@cindex tying notes across voices
-@subheading Tying notes across voices
+@node Tying notes across voices
+@unnumberedsubsubsec Tying notes across voices
+
+@cindex tying notes across voices
The following example demonstrates how to connect notes in
different voices using ties. Normally, only two notes in the
@lilypond[quote,fragment,relative=2,verbatim]
<<
{
- \once \override Stem #'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 Stem #'length = #8
+ \tweak Stem.transparent ##t
+ \tweak Flag.transparent ##t
+ \tweak Stem.length #8
b8~ b\noBeam
}
\\
>>
@end lilypond
-@subheading Simulating a fermata in MIDI
+@funindex \single
+@cindex tweak, generated from override
+Now for @emph{overriding} the transparency of a graphical object,
+we could have used the shorthand @code{\hide} as explained above.
+Tweaking is a different operation, affecting only properties
+generated from a single music expression. It turns out that we
+can convert overrides into tweaks using @code{\single}, making it
+possible to rewrite the above example as
+
+@lilypond[quote,fragment,relative=2,verbatim]
+<<
+ {
+ \single \hide Stem
+ \single \hide Flag
+ \tweak Stem.length #8
+ b8~ b\noBeam
+ }
+\\
+ { b8[ g] }
+>>
+@end lilypond
+
+In this particular case, the difference to @code{\once \hide} is
+not apparent. It is important when there are several objects at
+the same point in musical time (like noteheads in a chord). In
+that case, @code{\once} will affect all of those objects while
+@code{\single} will only affect a single one, the one generated by
+the immediately following music expression.
+
+@node Simulating a fermata in MIDI
+@unnumberedsubsubsec Simulating a fermata in MIDI
@cindex stencil property, use of
@cindex fermata, implementing in MIDI
% Visible tempo marking
\tempo 4=120
a4 a a
- \once \override Score.MetronomeMark #'transparent = ##t
+ \once \hide Score.MetronomeMark
% 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 \omit Score.MetronomeMark
% 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}
+@subsubsubheading Downloaded from lilypond.org
@itemize @bullet
-@item Linux
+@item GNU/Linux
Navigate to
+@example
@file{@var{INSTALLDIR}/lilypond/usr/@/share/lilypond/current/}
+@end example
@item MacOS X
Navigate to
+@example
@file{@var{INSTALLDIR}/LilyPond.app/Contents/@/Resources/share/lilypond/current/}
+@end example
+
by either @code{cd}-ing into this directory from the
Terminal, or control-clicking on the LilyPond application and
selecting @q{Show Package Contents}.
@item Windows
Using Windows Explorer, navigate to
+@example
@file{@var{INSTALLDIR}/LilyPond/usr/@/share/lilypond/current/}
+@end example
@end itemize
-@strong{Installed from a package manager or compiled from source}
+@subsubsubheading Installed from a package manager or compiled from source
Navigate to
@file{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/}, where
@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