examples. We shall see later when it must be specified.
Later sections deal comprehensively with properties and their
-values, but to illustrate the format and use of these commands
-we shall use just a few simple properties and values which are
-easily understood.
+values, see @ref{Types of properties}. But in this section we shall
+use just a few simple properties and values which are easily
+understood in order to illustrate the format and use of these
+commands.
For now, don't worry about the @code{#'}, which must precede the
layout property, and the@tie{}@code{#}, which must precede the value.
@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 |
+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
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.
+cannot be tweaked in this way.
So to return to our example, the size of the middle note of
a chord would be changed in this way:
@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 tuplets, nested
@cindex triplets, nested
<<
{ 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 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
+ <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 |
}
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
+ % Move the c2 out of the main note column
+ % so the merge will work
\shiftOnn
c2
}
{ 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 {
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
+ % Move the c2 out of the main note column
+ % so the merge will work
\shiftOnn
c2
}
{
\once \override Stem #'transparent = ##t
\once \override Flag #'transparent = ##t
- \once \override Flag #'transparent = ##t
b8~ b\noBeam
}
\\
{
\once \override Stem #'transparent = ##t
\once \override Flag #'transparent = ##t
- \once \override Flag #'transparent = ##t
\once \override Stem #'length = #8
b8~ b\noBeam
}
}
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 @{
@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 {
%%% 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 #@})
#(set-global-staff-size 23)
@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)
@item 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