Guide, node Updating translation committishes..
@end ignore
-@c \version "2.12.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
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 @code{#}, which must precede the value.
+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
@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
@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}
@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
-property name and a @code{#} preceding the new value!
+property name and a@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
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
@tab A valid direction constant or its numerical equivalent (decimal
values between -1 and 1 are allowed)
@tab @code{LEFT}, @code{CENTER}, @code{UP},
- @code{1}, @code{-1}
+ @code{1}, @w{@code{-1}}
@item Integer
@tab A positive whole number
@tab @code{3}, @code{1}
@code{(ly:make-moment 3 8)}
@item Number
@tab Any positive or negative decimal value
- @tab @code{3.5}, @code{-2.45}
+ @tab @code{3.5}, @w{@code{-2.45}}
@item Pair (of numbers)
@tab Two numbers separated by a @q{space . space} and enclosed
in brackets preceded by an apostrophe
@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
need is @code{'#(#f #f #f)}. 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 @code{#} is
+as part of the value to introduce a vector, 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
@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
Here we use the constants @code{DOWN} and @code{UP}.
-These have the values @code{-1} and @code{+1} respectively, and
+These have the values @w{@code{-1}} and @code{+1} respectively, and
these numerical values may be used instead. The value @code{0}
may also be used in some cases. It is simply treated as meaning
@code{UP} for stems, but for some objects it means @q{center}.
@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
@noindent
If the fingering seems a little crowded the @code{font-size}
could be reduced. The default value can be seen from the
-@code{Fingering} object in the IR to be @code{-5}, so let's
-try @code{-7}:
+@code{Fingering} object in the IR to be @w{@code{-5}}, so let's
+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
By default it is set to @code{#f} for all within-staff objects,
and to a numerical value appropriate to each outside-staff object
when the object is created. The following table shows the default
-numerical values for some of the commonest outside-staff objects
-which are, by default, placed in the @code{Staff} or @code{Voice}
-contexts.
+numerical values for some of the commonest outside-staff objects.
@cindex spanners
@headitem Layout Object
@tab Priority
@tab Controls position of:
-@item @code{MultiMeasureRestText}
- @tab @code{450}
- @tab Text over full-bar rests
+@item @code{RehearsalMark}
+ @tab @code{1500}
+ @tab Rehearsal marks
+@item @code{MetronomeMark}
+ @tab @code{1000}
+ @tab Metronome marks
+@item @code{VoltaBracketSpanner}
+ @tab @code{600}
+ @tab Volta brackets
@item @code{TextScript}
@tab @code{450}
@tab Markup text
+@item @code{MultiMeasureRestText}
+ @tab @code{450}
+ @tab Markup text over full-bar rests
@item @code{OttavaBracket}
@tab @code{400}
@tab Ottava brackets
@item @code{DynamicLineSpanner}
@tab @code{250}
@tab All dynamic markings
-@item @code{VoltaBracketSpanner}
- @tab @code{100}
- @tab Volta brackets
+@item @code{BarNumber}
+ @tab @code{ 100}
+ @tab Bar numbers
@item @code{TrillSpanner}
@tab @code{50}
@tab Spanning trills
@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
@cindex tweaking rehearsal mark placement
@cindex rehearsal marks, tweaking placement
-Note that bar numbers, metronome marks and rehearsal marks are not
-shown. By default these are created in the @code{Score} context and
-their @code{outside-staff-priority} is ignored relative to the layout
-objects which are created in the @code{Staff} context. If you wish to
-place bar numbers, metronome marks or rehearsal marks in accordance
-with the value of their @code{outside-staff-priority} the
-@code{Bar_number_engraver}, @code{Metronome_mark_engraver} or
-@code{Mark_engraver} respectively should be removed from the
-@code{Score} context and placed in the top @code{Staff} context. If
-this is done, these marks will be given the following default
-@code{outside-staff-priority} values:
-
-@multitable @columnfractions .3 .3
-@headitem Layout Object @tab Priority
-@item @code{RehearsalMark} @tab @code{1500}
-@item @code{MetronomeMark} @tab @code{1000}
-@item @code{BarNumber} @tab @code{ 100}
-@end multitable
-
If the default values of @code{outside-staff-priority} do not give you
the placing you want, the priority of any of the objects may be
overridden. Suppose we would like the ottava bracket to be placed
@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
c,4 c c c |
@end lilypond
+Note that some of these objects, in particular bar numbers,
+metronome marks and rehearsal marks, live by default in the
+@code{Score} context, so be sure to use the correct context
+when these are being overriden.
+
@cindex slurs and outside-staff-priority
@cindex slurs and articulations
@cindex articulations and slurs
@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
the @code{self-alignment-interface}. In general these are objects
that contain text. The values are @code{LEFT}, @code{RIGHT}
or @code{CENTER}. Alternatively, a numerical value between
-@code{-1} and @code{+1} may be specified, where @code{-1} is
+@w{@code{-1}} and @code{+1} may be specified, where @w{@code{-1}} is
left-aligned, @code{+1} is right-aligned, and numbers in between
move the text progressively from left-aligned to right-aligned.
Numerical values greater than @code{1} may be specified to move
-the text even further to the left, or less than @code{-1} to
+the text even further to the left, or less than @w{@code{-1}} to
move the text even further to the right. A change of @code{1}
in the value corresponds to a movement of half the text's length.
@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
the rest is in voice two. The default in @code{\voiceTwo} (i.e. in
the second voice of a @code{<<@{...@} \\ @{...@}>>} construct) is that
@code{staff-position} is set to -4 for MultiMeasureRest, so we need to
-move it, say, four half-staff spaces down to @code{-8}.
+move it, say, four half-staff spaces down to @w{@code{-8}}.
@cindex MultiMeasureRest, example of overriding
@cindex staff-position property, example
<<
{ 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
-Here's a further example taken from the opening of the left-hand
-staff of Chopin's Prelude Op 28 No. 2. We see that the beam
-collides with the upper notes:
+Here's a further example. We see that the beams
+collide with the ties:
@lilypond[quote,verbatim,fragment,ragged-right]
{
- \clef "bass"
- << { b,8 ais, b, g, } \\ { e,8 g e, g } >>
- << { b,8 ais, b, g, } \\ { e,8 g e, g } >>
+ \time 4/2
+ <<
+ { c'1 ~ c'2. e'8 f' }
+ \\
+ { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
+ >>
+ <<
+ { c'1 ~ c'2. e'8 f' }
+ \\
+ { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
+ >>
}
@end lilypond
@noindent
This can be resolved by manually moving both ends of the beam
-up from their position at 2 staff-spaces above the center line to,
-say, 3:
+up from their position at 1.81 staff-spaces below the center line to,
+say, 1:
@cindex Beam, example of overriding
@cindex positions property, example
@lilypond[quote,verbatim,fragment,ragged-right]
{
- \clef "bass"
+ \time 4/2
<<
- \override Beam #'positions = #'(3 . 3)
- { b,8 ais, b, g, }
- \\
- { e,8 g e, g }
+ { c'1 ~ c'2. e'8 f' }
+ \\
+ {
+ \override Beam.positions = #'(-1 . -1)
+ e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g''
+ }
+ >>
+ <<
+ { c'1 ~ c'2. e'8 f' }
+ \\
+ { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
>>
- << { b,8 ais, b, g, } \\ { e,8 g e, g } >>
}
@end lilypond
@noindent
Note that the override continues to apply in the first voice of
-the second block of quavers, but not to any of the beams in the
+the second measure of eighth notes, but not to any of the beams in the
second voice.
@subheading force-hshift property
<<
{ 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
the Notation Reference for help. A search for @qq{merge} in the
Notation Reference index quickly leads us to the commands for merging
differently headed and differently dotted notes in
-@ruser{Collision resolution}. In our example we need to merge both
+@ruser{Collision resolution}. In our example we need to merge both
types of note for the duration of the polyphonic section in bar 3,
so using the information we find in the Notation Reference we add
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 {
* Using variables for tweaks::
* Style sheets::
* Other sources of information::
-* Avoiding tweaks with slower processing::
* Advanced tweaks with Scheme::
@end menu
@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
}
\\
% 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 |
forces the following tempo indication too high while the
second (with the stencil removed) does not.
+@seealso
+Music Glossary:
+@rglos{system}.
+
@node Using variables for tweaks
@subsection Using variables for tweaks
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
-the top of the music file. (The extension @code{.ily} is used to
+the top of the music file. (The extension @file{.ily} is used to
distinguish this included file, which is not meant to be compiled
on its own, from the main file.)
-Now let's modify our music (let's save this file as @file{"music.ly"}).
+Now let's modify our music (let's save this file as @file{music.ly}).
@c We have to do this awkward example/lilypond-non-verbatim
@c because we can't do the \include stuff in the manual.
@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
-@file{@var{INSTALLDIR}/lilypond/usr/share/lilypond/current/}
+@example
+@file{@var{INSTALLDIR}/lilypond/usr/@/share/lilypond/current/}
+@end example
@item MacOS X
Navigate to
-@file{@var{INSTALLDIR}/LilyPond.app/Contents/Resources/share/lilypond/current/}
+@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
-@file{@var{INSTALLDIR}/LilyPond/usr/share/lilypond/current/}
+@example
+@file{@var{INSTALLDIR}/LilyPond/usr/@/share/lilypond/current/}
+@end example
@end itemize
@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
@end multitable
Other settings (such as the definitions of markup commands) are
-stored as @code{.scm} (Scheme) files. The Scheme programming
+stored as @file{.scm} (Scheme) files. The Scheme programming
language is used to provide a programmable interface into
LilyPond internal operation. Further explanation of these files
is currently outside the scope of this manual, as a knowledge of
@end multitable
-
-@node Avoiding tweaks with slower processing
-@subsection Avoiding tweaks with slower processing
-
-LilyPond can perform extra checks while it processes input files.
-These checks will take extra time to perform, but fewer manual tweaks
-may be required to obtain an acceptable result. If a text script
-or part of the lyrics extends over the margins these checks will
-compress that line of the score just enough to fit within the
-margins.
-
-To be effective under all circumstances these checks must be enabled
-by placing the overrides in a Score @code{\with} block, rather than
-in-line in music, as follows:
-
-@example
-\new Score \with @{
- % Makes sure text scripts and lyrics are within the paper margins
- \override PaperColumn #'keep-inside-line = ##t
- \override NonMusicalPaperColumn #'keep-inside-line = ##t
-@} @{
- ..
-@}
-@end example
-
-However, @code{keep-inside-line} is expensive and the recommendation
-is to not enable it, to allow for faster processing, until creating
-a final version. This way you do not need to manually add @code{\break}
-commands to avoid text running off the right-hand side of the page.
-
@node Advanced tweaks with Scheme
@subsection Advanced tweaks with Scheme
\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