@c NOTE Tuplet brackets collide if notes are high on staff
@c See issue 509
@lilypond[quote,ragged-right,verbatim,fragment,relative=1]
-\times 2/3 { c8[ c c]}
+\times 2/3 { c8[ c c] }
\once \override TupletNumber
#'text = #tuplet-number::calc-fraction-text
\times 2/3 {
c[ c]
\once \override TupletNumber #'transparent = ##t
\times 2/3 { c8[ c c] }
-\times 2/3 { c8[ c c]}
+ \times 2/3 { c8[ c c] }
}
@end lilypond
{
\time 6/8
{
- r4 b8 b[( g]) g |
- g[( e]) e d[( f]) a |
- a g
+ r4 b8 b[( g]) g
+ g4[( e]) e d[( f]) a
+ a4 g
}
\addlyrics {
The man who feels love's sweet e -- mo -- tion
{
% Increase thickness of all following slurs from 1.2 to 5.0
\override Slur #'thickness = #5.0
- r4 b8 b[( g]) g |
- g[( e]) e d[( f]) a |
- a g
+ r4 b8 b[( g]) g
+ g4[( e]) e d[( f]) a
+ a4 g
}
\addlyrics {
The man who feels love's sweet e -- mo -- tion
r4 b8
% Increase thickness of immediately following slur only
\once \override Slur #'thickness = #5.0
- b[( g]) g |
- g[( e]) e d[( f]) a |
- a g
+ b4[( g]) g
+ g4[( e]) e d[( f]) a
+ a4 g
}
\addlyrics {
The man who feels love's sweet e -- mo -- tion
r4 b8
% Increase thickness of immediately following slur only
\once \override Slur #'thickness = #5.0
- b[( g]) g |
+ b4[( g]) g
% Increase thickness of immediately following slur only
\once \override Slur #'thickness = #5.0
- g[( e]) e d[( f]) a |
- a g
+ g4[( e]) e d[( f]) a
+ a4 g
}
\addlyrics {
The man who feels love's sweet e -- mo -- tion
r4 b8
% Increase thickness of all following slurs from 1.2 to 5.0
\override Slur #'thickness = #5.0
- b[( g]) g |
- g[( e])
+ b4[( g]) g
+ g4[( e])
% Revert thickness of all following slurs to default of 1.2
\revert Slur #'thickness
- e d[( f]) a |
- a g
+ e4 d[( f]) a
+ a4 g
}
\addlyrics {
The man who feels love's sweet e -- mo -- tion
{
\time 6/8
{
- r4 b8 b[( g]) g |
- g[( e]) e d[( f]) a |
- a g
+ r4 b8 b[( g]) g
+ g4[( e]) e d[( f]) a
+ a4 g
}
\addlyrics {
\override LyricText #'font-shape = #'italic
{
\time 12/16
\override BarLine #'stencil = ##f
- c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ c4 b8 c d16 c d8
+ g,8 a16 b8 c d4 e16
e8
}
@end lilypond
{
\time 12/16
\override Staff.BarLine #'stencil = ##f
- c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ c4 b8 c d16 c d8
+ g,8 a16 b8 c d4 e16
e8
}
@end lilypond
{
\time 12/16
\override Staff.BarLine #'break-visibility = #'#(#f #f #f)
- c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ c4 b8 c d16 c d8
+ g,8 a16 b8 c d4 e16
e8
}
@end lilypond
{
\time 12/16
\override Staff.TimeSignature #'transparent = ##t
- c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ c4 b8 c d16 c d8
+ g,8 a16 b8 c d4 e16
e8
}
@end lilypond
{
\time 12/16
\override Staff.TimeSignature #'stencil = ##f
- c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ c4 b8 c d16 c d8
+ g,8 a16 b8 c d4 e16
e8
}
@end lilypond
{
\time 12/16
\override Staff.BarLine #'color = #white
- c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ c4 b8 c d16 c d8
+ g,8 a16 b8 c d4 e16
e8
}
@end lilypond
{
\time 12/16
\override Staff.BarLine #'color = #(x11-color 'white)
- c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ c4 b8 c d16 c d8
+ g,8 a16 b8 c d4 e16
e8
}
@end lilypond
{
\time 12/16
\override Staff.BarLine #'color = #(rgb-color 1 1 1)
- c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ c4 b8 c d16 c d8
+ g,8 a16 b8 c d4 e16
e8
}
@end lilypond
\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, a16 b8 c d4 e16 |
+ c4 b8 c d16 c d8
+ g,8 a16 b8 c d4 e16
e8
}
@end lilypond
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\new Staff ="main" {
- \relative g' {
- r4 g8 g c4 c8 d |
- e4 r8
- <<
- { f c c }
- \new Staff \with {
- alignAboveContext = #"main" }
- { f8 f c }
- >>
- r4 |
- }
- }
+ \relative g' {
+ r4 g8 g c4 c8 d
+ e4 r8
+ <<
+ { f8 c c }
+ \new Staff \with {
+ alignAboveContext = #"main" }
+ { f8 f c }
+ >>
+ r4
+ }
+}
@end lilypond
Ossia are normally written without clef and time signature, and
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\new Staff ="main" {
\relative g' {
- r4 g8 g c4 c8 d |
+ r4 g8 g c4 c8 d
e4 r8
<<
- { f c c }
+ { f8 c c }
\new Staff \with {
alignAboveContext = #"main"
}
{ f8 f c }
}
>>
- r4 |
+ r4
}
}
@end lilypond
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\new Staff ="main" {
\relative g' {
- r4 g8 g c4 c8 d |
+ r4 g8 g c4 c8 d
e4 r8
<<
- { f c c }
+ { f8 c c }
\new Staff \with {
alignAboveContext = #"main"
% Don't print clefs in this staff
% Don't print time signatures in this staff
\override TimeSignature #'stencil = ##f
}
- { f8 f c }
+ { f8 f c }
>>
- r4 |
+ r4
}
}
@end lilypond
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\new Staff ="main" {
\relative g' {
- r4 g8 g c4 c8 d |
+ r4 g8 g c4 c8 d
e4 r8
<<
- { f c c }
+ { f8 c c }
\new Staff \with {
alignAboveContext = #"main"
\override Clef #'stencil = ##f
% Reduce all font sizes by ~24%
fontSize = #-2
}
- { f8 f c }
+ { f8 f c }
>>
- r4 |
+ r4
}
}
@end lilypond
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\new Staff ="main" {
\relative g' {
- r4 g8 g c4 c8 d |
+ r4 g8 g c4 c8 d
e4 r8
<<
- { f c c }
+ { f8 c c }
\new Staff \with {
alignAboveContext = #"main"
\override Clef #'stencil = ##f
% Reduce stem length and line spacing to match
\override StaffSymbol #'staff-space = #(magstep -2)
}
- { f8 f c }
+ { f8 f c }
>>
- r4 |
+ r4
}
}
@end lilypond
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
c2^"Text1"
-c^"Text2"
-c^"Text3"
-c^"Text4"
+c2^"Text2"
+c2^"Text3"
+c2^"Text4"
@end lilypond
Staves are also positioned, by default, as closely together as
@lilypond[quote,ragged-right,verbatim]
<<
\new Staff {
- \relative c' { c a, }
+ \relative c' { c4 a, }
}
\new Staff {
- \relative c'''' { c a, }
+ \relative c'''' { c4 a, }
}
>>
@end lilypond
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
a4 g c a
\override Stem #'direction = #DOWN
-a g c a
+a4 g c a
\override Stem #'direction = #UP
-a g c a
+a4 g c a
\revert Stem #'direction
-a g c a
+a4 g c a
@end lilypond
Here we use the constants @code{DOWN} and @code{UP}.
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
\set fingeringOrientations = #'(left)
<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<c-1 e-2 g-3 b-5>4
\set fingeringOrientations = #'(left)
<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<c-1 e-2 g-3 b-5>4
\set fingeringOrientations = #'(up left down)
<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<c-1 e-2 g-3 b-5>4
\set fingeringOrientations = #'(up left)
<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<c-1 e-2 g-3 b-5>4
\set fingeringOrientations = #'(right)
<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<c-1 e-2 g-3 b-5>4
@end lilypond
@noindent
\override Fingering #'font-size = #-7
\set fingeringOrientations = #'(left)
<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<c-1 e-2 g-3 b-5>4
\set fingeringOrientations = #'(left)
<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<c-1 e-2 g-3 b-5>4
\set fingeringOrientations = #'(up left down)
<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<c-1 e-2 g-3 b-5>4
\set fingeringOrientations = #'(up left)
<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<c-1 e-2 g-3 b-5>4
\set fingeringOrientations = #'(right)
<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<c-1 e-2 g-3 b-5>4
@end lilypond
@node Outside-staff objects
\dynamicUp
% Start Ottava Bracket
\ottava #1
-c' \startTextSpan
+c'4 \startTextSpan
% Add Dynamic Text and hairpin
-c\pp\<
-c
+c4\pp\<
+c4
% Add Text Script
-c^Text
-c c
+c4^Text
+c4 c
% Add Dynamic Text and terminate hairpin
-c\ff c \stopTextSpan
+c4\ff c \stopTextSpan
% Stop Ottava Bracket
\ottava #0
-c, c c c
+c,4 c c c
@end lilypond
This example also shows how to create Text Spanners --
\once \override Staff.OttavaBracket #'outside-staff-priority = #340
% Start Ottava Bracket
\ottava #1
-c' \startTextSpan
+c'4 \startTextSpan
% Add Dynamic Text
-c\pp
+c4\pp
% Add Dynamic Line Spanner
-c\<
+c4\<
% Add Text Script
-c^Text
-c c
+c4^Text
+c4 c
% Add Dynamic Text
-c\ff c \stopTextSpan
+c4\ff c \stopTextSpan
% Stop Ottava Bracket
\ottava #0
-c, c c c
+c,4 c c c
@end lilypond
@cindex slurs and outside-staff-priority
example showing the effect of the two methods:
@lilypond[quote,verbatim,relative=2]
-c4( c^\markup\tiny\sharp d4.) c8
+c4( c^\markup { \tiny \sharp } d4.) c8
c4(
\once \override TextScript #'avoid-slur = #'inside
\once \override TextScript #'outside-staff-priority = ##f
-c^\markup\tiny\sharp d4.) c8
+c4^\markup \tiny \sharp d4.) c8
\once \override Slur #'outside-staff-priority = #500
-c4( c^\markup\tiny\sharp d4.) c8
+c4( c^\markup { \tiny \sharp } d4.) c8
@end lilypond
Changing the @code{outside-staff-priority} can also be used to
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
c2^"Text1"
-c^"Text2"
+c2^"Text2"
\once \override TextScript #'outside-staff-priority = #500
-c^"Text3"
-c^"Text4"
+c2^"Text3"
+c2^"Text4"
@end lilypond
This certainly lifts @qq{Text3} above @qq{Text4} but it also lifts it
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\textLengthOn % Cause notes to space out to accommodate text
c2^"Text1"
-c^"Text2"
-c^"Text3"
-c^"Text4"
+c2^"Text2"
+c2^"Text3"
+c2^"Text4"
@end lilypond
The command to revert to the default behavior is
\key aes \major
\time 9/8
\dynamicUp
-bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
-ees,2.~\)\mf ees4 r8 |
+bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\!
+ees,2.~\)\mf ees4 r8
@end lilypond
However, if the notes and attached dynamics are close
@cindex padding property, example
@lilypond[quote,fragment,relative=1,verbatim]
-% This will not work, see below:
+% This will not work, see below
\override MetronomeMark #'padding = #3
\tempo 4=120
c1
-% This works:
+% This works
\override Score.MetronomeMark #'padding = #3
\tempo 4=80
d1
@lilypond[quote,ragged-right,verbatim]
sesquisharp = \markup { \sesquisharp }
\relative c'' {
- 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
- cis c
+ 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
- cis
+ cis4
}
@end lilypond
@lilypond[quote,fragment,ragged-right,verbatim,relative=3]
\voiceOne
-< a \2 >
+< a\2 >
\once \override StringNumber #'self-alignment-X = #RIGHT
-< a \2 >
+< a\2 >
@end lilypond
@subheading staff-position property
example of a collision of this type:
@lilypond[quote,verbatim,fragment,ragged-right, relative=1]
-<< {c c c c} \\ {R1} >>
+<< { c4 c c c } \\ { R1 } >>
@end lilypond
The best solution here is to move the multimeasure rest down, since
@lilypond[quote,verbatim,fragment,ragged-right, relative=1]
<<
- {c c c c}
-\\
+ { c4 c c c }
+ \\
\override MultiMeasureRest #'staff-position = #-8
- {R1}
+ { R1 }
>>
@end lilypond
@lilypond[quote,fragment,relative=1,verbatim]
\stemUp
-f-5
-\once \override Fingering
- #'extra-offset = #'(-0.3 . -1.8)
-f-5
+f4-5
+\once \override Fingering #'extra-offset = #'(-0.3 . -1.8)
+f4-5
@end lilypond
avoid the slur on the acciaccatura.
@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
-r4 \acciaccatura e8\( d8 c ~c d c d\)
+r4 \acciaccatura e8\( d8 c~ c d c d\)
@end lilypond
@noindent
@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
r4
\phrasingSlurUp
-\acciaccatura e8\( d8 c ~c d c d\)
+\acciaccatura e8\( d8 c~ c d c d\)
@end lilypond
@noindent
r4
\once \override PhrasingSlur #'positions = #'(-4 . -3)
\acciaccatura
-e8\( d8 c ~c d c d\)
+e8\( d8 c~ c d c d\)
@end lilypond
Here's a further example taken from the opening of the left-hand
@lilypond[quote,verbatim,fragment,ragged-right]
{
-\clef "bass"
-<< {b,8 ais, b, g,} \\ {e, g e, g} >>
-<< {b,8 ais, b, g,} \\ {e, g e, g} >>
+ \clef "bass"
+ << { b,8 ais, b, g, } \\ { e, g e, g } >>
+ << { b,8 ais, b, g, } \\ { e, g e, g } >>
}
@end lilypond
\clef "bass"
<<
\override Beam #'positions = #'(3 . 3)
- {b,8 ais, b, g,}
+ { b,8 ais, b, g, }
\\
- {e, g e, g}
+ { e,8 g e, g }
>>
- << {b,8 ais, b, g,} \\ {e, g e, g} >>
+ << { b,8 ais, b, g, } \\ { e, g e, g } >>
}
@end lilypond
@subheading force-hshift property
-@c FIXME: formatting stuff (ie not important right now IMO)
-@c @a nchor Chopin finally corrected TODOgp
-
We can now see how to apply the final corrections to the Chopin
example introduced at the end of @ref{I'm hearing Voices}, which
was left looking like this:
@node Avoiding tweaks with slower processing
@subsection Avoiding tweaks with slower processing
-LilyPond can perform extra checks while it processes input files. These
-checks will take extra time to perform, but fewer manual tweaks
+LilyPond can perform extra checks while it processes input files.
+These checks will take extra time to perform, but fewer manual tweaks
may be required to obtain an acceptable result. If a text script
or part of the lyrics extends over the margins these checks will
compress that line of the score just enough to fit within the
@}
@end example
+However, @code{keep-inside-line} is expensive and the recommendation
+is to not enable it, to allow for faster processing, until creating
+a final version. This way you do not need to manually add @code{\break}
+commands to avoid text running off the right-hand side of the page.
+
@node Advanced tweaks with Scheme
@subsection Advanced tweaks with Scheme
@end lilypond
Further examples showing the use of these programmable interfaces
-can be found in @rextend{Tweaking with Scheme}.
+can be found in @rextend{Callback functions}.