[ << Staff notation ] | [Top][Contents][Index][ ? ] | [ Text >> ] | ||
[ < ] | [ Up : Top ] | [ > ] |
Editorial annotations
These snippets illustrate the Notation Reference, section Editorial annotations.
[ << Editorial annotations ] | [Top][Contents][Index][ ? ] | [ Text >> ] | ||
[ < Editorial annotations ] | [ Up : Editorial annotations ] | [ > ] |
Adding fingerings to a score
Fingering instructions can be entered using a simple syntax.
\relative c'' { c4-1 d-2 f-4 e-3 }
[ << Editorial annotations ] | [Top][Contents][Index][ ? ] | [ Text >> ] | ||
[ < ] | [ Up : Editorial annotations ] | [ > ] |
Allowing fingerings to be printed inside the staff
By default, vertically oriented fingerings are positioned outside the staff. However, this behavior can be canceled.
\relative c' { <c-1 e-2 g-3 b-5>2 \once \override Fingering #'staff-padding = #'() <c-1 e-2 g-3 b-5>2 }
[ << Editorial annotations ] | [Top][Contents][Index][ ? ] | [ Text >> ] | ||
[ < ] | [ Up : Editorial annotations ] | [ > ] |
Analysis brackets above the staff
Simple horizontal analysis brackets are added below the staff by default. The following example shows a way to place them above the staff instead.
\layout { \context { \Voice \consists "Horizontal_bracket_engraver" } } \relative c'' { \once \override HorizontalBracket #'direction = #UP c2\startGroup d2\stopGroup }
[ << Editorial annotations ] | [Top][Contents][Index][ ? ] | [ Text >> ] | ||
[ < ] | [ Up : Editorial annotations ] | [ > ] |
Applying note head styles depending on the step of the scale
The shapeNoteStyles
property can be used to define various note
head styles for each step of the scale (as set by the key signature or
the "tonic" property). This property requires a set of symbols, which
can be purely arbitrary (geometrical expressions such as
triangle
, cross
, and xcircle
are allowed) or based
on old American engraving tradition (some latin note names are also
allowed).
That said, to imitate old American song books, there are several
predefined note head styles available through shortcut commands such as
\aikenHeads
or \sacredHarpHeads
.
This example shows different ways to obtain shape note heads, and demonstrates the ability to transpose a melody without losing the correspondence between harmonic functions and note head styles.
fragment = { \key c \major c2 d e2 f g2 a b2 c } \score { \new Staff { \transpose c d \relative c' { \set shapeNoteStyles = #'#(do re mi fa #f la ti) \fragment } \break \relative c' { \set shapeNoteStyles = #'#(cross triangle fa #f mensural xcircle diamond) \fragment } } \layout { ragged-right = ##t } }
[ << Editorial annotations ] | [Top][Contents][Index][ ? ] | [ Text >> ] | ||
[ < ] | [ Up : Editorial annotations ] | [ > ] |
Avoiding collisions with chord fingerings
Fingerings and string numbers applied to individual notes will automatically avoid beams and stems, but this is not true by default for fingerings and string numbers applied to the individual notes of chords. The following example shows how this default behavior can be overridden.
\relative c' { \set fingeringOrientations = #'(up) \set stringNumberOrientations = #'(up) \set strokeFingerOrientations = #'(up) % Default behavior r8 <f c'-5>8 <f c'\5>8 <f c'-\rightHandFinger #2 >8 % Corrected to avoid collisions r8 \override Fingering #'add-stem-support = ##t <f c'-5>8 \override StringNumber #'add-stem-support = ##t <f c'\5>8 \override StrokeFinger #'add-stem-support = ##t <f c'-\rightHandFinger #2 >8 }
[ << Editorial annotations ] | [Top][Contents][Index][ ? ] | [ Text >> ] | ||
[ < ] | [ Up : Editorial annotations ] | [ > ] |
Blanking staff lines using the \whiteout command
The \whiteout
command underlays a markup with a white box.
Since staff lines are in a lower layer than most other grobs, this
white box will not overlap any other grob.
\layout { ragged-right = ##f } \relative c' { \override TextScript #'extra-offset = #'(2 . 4) c2-\markup { \whiteout \pad-markup #0.5 "middle C" } c }
[ << Editorial annotations ] | [Top][Contents][Index][ ? ] | [ Text >> ] | ||
[ < ] | [ Up : Editorial annotations ] | [ > ] |
Changing a single note’s size in a chord
Individual note heads in a chord can be modified with the
\tweak
command inside a chord, by altering the font-size
property.
Inside the chord (within the brackets < >
), before the note to
be altered, place the \tweak
command, followed by
#'font-size
and define the proper size like #-2
(a tiny
notehead).
\layout { ragged-right = ##t } \relative { <\tweak #'font-size #+2 c e g c \tweak #'font-size #-2 e>1^\markup { A tiny e }_\markup { A big c } }
[ << Editorial annotations ] | [Top][Contents][Index][ ? ] | [ Text >> ] | ||
[ < ] | [ Up : Editorial annotations ] | [ > ] |
Changing the appearance of a slur from solid to dotted or dashed
The appearance of slurs may be changed from solid to dotted or dashed.
\relative c' { c4( d e c) \slurDotted c4( d e c) \slurSolid c4( d e c) \slurDashed c4( d e c) \slurSolid c4( d e c) }
[ << Editorial annotations ] | [Top][Contents][Index][ ? ] | [ Text >> ] | ||
[ < ] | [ Up : Editorial annotations ] | [ > ] |
Coloring notes depending on their pitch
It is possible to color note heads depending on their pitch and/or their names: the function used in this example even makes it possible to distinguish enharmonics.
%Association list of pitches to colors. #(define color-mapping (list (cons (ly:make-pitch 0 0 0) (x11-color 'red)) (cons (ly:make-pitch 0 0 1/2) (x11-color 'green)) (cons (ly:make-pitch 0 1 -1/2) (x11-color 'green)) (cons (ly:make-pitch 0 2 0) (x11-color 'red)) (cons (ly:make-pitch 0 2 1/2) (x11-color 'green)) (cons (ly:make-pitch 0 3 -1/2) (x11-color 'red)) (cons (ly:make-pitch 0 3 0) (x11-color 'green)) (cons (ly:make-pitch 0 4 1/2) (x11-color 'red)) (cons (ly:make-pitch 0 5 0) (x11-color 'green)) (cons (ly:make-pitch 0 5 -1/2) (x11-color 'red)) (cons (ly:make-pitch 0 6 1/2) (x11-color 'red)) (cons (ly:make-pitch 0 1 0) (x11-color 'blue)) (cons (ly:make-pitch 0 3 1/2) (x11-color 'blue)) (cons (ly:make-pitch 0 4 -1/2) (x11-color 'blue)) (cons (ly:make-pitch 0 5 1/2) (x11-color 'blue)) (cons (ly:make-pitch 0 6 -1/2) (x11-color 'blue)) )) %Compare pitch and alteration (not octave). #(define (pitch-equals? p1 p2) (and (= (ly:pitch-alteration p1) (ly:pitch-alteration p2)) (= (ly:pitch-notename p1) (ly:pitch-notename p2)))) #(define (pitch-to-color pitch) (let ((color (assoc pitch color-mapping pitch-equals?))) (if color (cdr color)))) #(define (color-notehead grob) (pitch-to-color (ly:event-property (ly:grob-property grob 'cause) 'pitch))) \score { \new Staff \relative c' { \override NoteHead #'color = #color-notehead c8 b d dis ees f g aes } }
[ << Editorial annotations ] | [Top][Contents][Index][ ? ] | [ Text >> ] | ||
[ < ] | [ Up : Editorial annotations ] | [ > ] |
Controlling the placement of chord fingerings
The placement of fingering numbers can be controlled precisely.
\relative c' { \set fingeringOrientations = #'(left) <c-1 e-3 a-5>4 \set fingeringOrientations = #'(down) <c-1 e-3 a-5>4 \set fingeringOrientations = #'(down right up) <c-1 e-3 a-5>4 \set fingeringOrientations = #'(up) <c-1 e-3 a-5>4 \set fingeringOrientations = #'(left) <c-1>2 \set fingeringOrientations = #'(down) <e-3>2 }
[ << Editorial annotations ] | [Top][Contents][Index][ ? ] | [ Text >> ] | ||
[ < ] | [ Up : Editorial annotations ] | [ > ] |
Creating a delayed turn
Creating a delayed turn, where the lower note of the
turn uses the accidental, requires several overrides. The
outside-staff-priority
property must be set to #f
,
as otherwise this would take precedence over the
avoid-slur property
. The value of halign
is used
to position the turn horizontally.
\relative c'' { \once \override TextScript #'avoid-slur = #'inside \once \override TextScript #'outside-staff-priority = ##f c2(^\markup \tiny \override #'(baseline-skip . 1) { \halign #-4 \center-column { \sharp \musicglyph #"scripts.turn" } } d4.) c8 }
[ << Editorial annotations ] | [Top][Contents][Index][ ? ] | [ Text >> ] | ||
[ < ] | [ Up : Editorial annotations ] | [ > ] |
Creating blank staves
To create blank staves, generate empty measures then remove the
Bar_number_engraver
from the Score
context, and the
Time_signature_engraver
, Clef_engraver
and
Bar_engraver
from the Staff
context.
#(set-global-staff-size 20) \score { { \repeat unfold 12 { s1 \break } } \layout { indent = 0\in \context { \Staff \remove "Time_signature_engraver" \remove "Clef_engraver" \remove "Bar_engraver" } \context { \Score \remove "Bar_number_engraver" } } } \paper { #(set-paper-size "letter") ragged-last-bottom = ##f line-width = 7.5\in left-margin = 0.5\in bottom-margin = 0.25\in top-margin = 0.25\in }
[ << Editorial annotations ] | [Top][Contents][Index][ ? ] | [ Text >> ] | ||
[ < ] | [ Up : Editorial annotations ] | [ > ] |
Default direction of stems on the center line of the staff
The default direction of stems on the center line of the staff is set
by the Stem
property neutral-direction
.
\relative c'' { a4 b c b \override Stem #'neutral-direction = #up a4 b c b \override Stem #'neutral-direction = #down a4 b c b }
[ << Editorial annotations ] | [Top][Contents][Index][ ? ] | [ Text >> ] | ||
[ < ] | [ Up : Editorial annotations ] | [ > ] |
Embedding native PostScript in a \markup block
PostScript code can be directly inserted inside a \markup
block.
% PostScript is a registered trademark of Adobe Systems Inc. \relative c'' { a4-\markup { \postscript #"3 4 moveto 5 3 rlineto stroke" } -\markup { \postscript #"[ 0 1 ] 0 setdash 3 5 moveto 5 -3 rlineto stroke " } b4-\markup { \postscript #"3 4 moveto 0 0 1 2 8 4 20 3.5 rcurveto stroke" } s2 a'1 }
[ << Editorial annotations ] | [Top][Contents][Index][ ? ] | [ Text >> ] | ||
[ < ] | [ Up : Editorial annotations ] | [ > ] |
Grid lines: changing their appearance
The appearance of grid lines can be changed by overriding some of their properties.
\score { \new ChoirStaff << \new Staff { \relative c'' { \stemUp c'4. d8 e8 f g4 } } \new Staff { \relative c { % this moves them up one staff space from the default position \override Score.GridLine #'extra-offset = #'(0.0 . 1.0) \stemDown \clef bass \once \override Score.GridLine #'thickness = #5.0 c4 \once \override Score.GridLine #'thickness = #1.0 g'4 \once \override Score.GridLine #'thickness = #3.0 f4 \once \override Score.GridLine #'thickness = #5.0 e4 } } >> \layout { \context { \Staff % set up grids \consists "Grid_point_engraver" % set the grid interval to one quarter note gridInterval = #(ly:make-moment 1 4) } \context { \Score \consists "Grid_line_span_engraver" % this moves them to the right half a staff space \override NoteColumn #'X-offset = #-0.5 } } }
[ << Editorial annotations ] | [Top][Contents][Index][ ? ] | [ Text >> ] | ||
[ < ] | [ Up : Editorial annotations ] | [ > ] |
Grid lines: emphasizing rhythms and notes synchronization
Regular vertical lines can be drawn between staves to show note synchronization; however, in case of monophonic music, you may want to make the second stave invisible, and make the lines shorter like in this snippet.
\score { \new ChoirStaff { \relative c'' << \new Staff { \time 12/8 \stemUp c4. d8 e8 f g4 f8 e8. d16 c8 } \new Staff { % hides staff and notes so that only the grid lines are visible \hideNotes \override Staff.BarLine #'transparent = ##t \override Staff.StaffSymbol #'line-count = #0 \override Staff.TimeSignature #'transparent = ##t \override Staff.Clef #'transparent = ##t % dummy notes to force regular note spacing \once \override Score.GridLine #'thickness = #4.0 c8 c c \once \override Score.GridLine #'thickness = #3.0 c8 c c \once \override Score.GridLine #'thickness = #4.0 c8 c c \once \override Score.GridLine #'thickness = #3.0 c8 c c } >> } \layout { \context { \Score \consists "Grid_line_span_engraver" % center grid lines horizontally below note heads \override NoteColumn #'X-offset = #-0.5 } \context { \Staff \consists "Grid_point_engraver" gridInterval = #(ly:make-moment 1 8) % set line length and positioning: % two staff spaces above center line on hidden staff % to four spaces below center line on visible staff \override GridPoint #'Y-extent = #'(2 . -4) } ragged-right = ##t } }
[ << Editorial annotations ] | [Top][Contents][Index][ ? ] | [ Text >> ] | ||
[ < ] | [ Up : Editorial annotations ] | [ > ] |
Making some staff lines thicker than the others
For pedagogical purposes, a staff line can be thickened (e.g., the
middle line, or to emphasize the line of the G clef). This can be
achieved by adding extra lines very close to the line that should be
emphasized, using the line-positions
property of the
StaffSymbol
object.
{ \override Staff.StaffSymbol #'line-positions = #'(-4 -2 -0.2 0 0.2 2 4) d'4 e' f' g' }
[ << Editorial annotations ] | [Top][Contents][Index][ ? ] | [ Text >> ] | ||
[ < ] | [ Up : Editorial annotations ] | [ > ] |
Marking notes of spoken parts with a cross on the stem
This example shows how to put crosses on stems. Mark the beginning
of a spoken section with the \speakOn
keyword, and end it
with the \speakOff
keyword.
speakOn = { \override Stem #'stencil = #(lambda (grob) (let* ((x-parent (ly:grob-parent grob X)) (is-rest? (ly:grob? (ly:grob-object x-parent 'rest)))) (if is-rest? empty-stencil (ly:stencil-combine-at-edge (ly:stem::print grob) Y (- (ly:grob-property grob 'direction)) (grob-interpret-markup grob (markup #:hspace -1.025 #:fontsize -4 #:musicglyph "noteheads.s2cross")) -2.3 0)))) } speakOff = { \revert Stem #'stencil } \score { \new Staff { \relative c'' { a4 b a c \speakOn g4 f r g b4 r d e \speakOff c4 a g f } } }
[ << Editorial annotations ] | [Top][Contents][Index][ ? ] | [ Text >> ] | ||
[ < ] | [ Up : Editorial annotations ] | [ > ] |
Measure counter
This snippet provides a workaround for emitting measure counters using transparent percent repeats.
<< \context Voice = "foo" { \clef bass c4 r g r c4 r g r c4 r g r c4 r g r } \context Voice = "foo" { \set countPercentRepeats = ##t \override PercentRepeat #'transparent = ##t \override PercentRepeatCounter #'staff-padding = #1 \repeat percent 4 { s1 } } >>
[ << Editorial annotations ] | [Top][Contents][Index][ ? ] | [ Text >> ] | ||
[ < ] | [ Up : Editorial annotations ] | [ > ] |
Positioning text markups inside slurs
Text markups need to have the outside-staff-priority
property
set to false in order to be printed inside slurs.
\relative c'' { \override TextScript #'avoid-slur = #'inside \override TextScript #'outside-staff-priority = ##f c2(^\markup { \halign #-10 \natural } d4.) c8 }
[ << Editorial annotations ] | [Top][Contents][Index][ ? ] | [ Text >> ] | ||
[ < ] | [ Up : Editorial annotations ] | [ Text > ] |
Using PostScript to generate special note head shapes
When a note head with a special shape cannot easily be generated with graphic markup, PostScript code can be used to generate the shape. This example shows how a parallelogram-shaped note head is generated.
parallelogram = #(ly:make-stencil (list 'embedded-ps "gsave currentpoint translate newpath 0 0.25 moveto 1.3125 0.75 lineto 1.3125 -0.25 lineto 0 -0.75 lineto closepath fill grestore" ) (cons 0 1.3125) (cons 0 0)) myNoteHeads = \override NoteHead #'stencil = \parallelogram normalNoteHeads = \revert NoteHead #'stencil \relative c'' { \myNoteHeads g4 d' \normalNoteHeads <f, \tweak #'stencil \parallelogram b e>4 d }
[ << Editorial annotations ] | [Top][Contents][Index][ ? ] | [ Text >> ] | ||
[ < ] | [ Up : Editorial annotations ] | [ Text > ] |