k-l-lambda's picture
added node-addon-lilypond
f65fe85
;;;; This file is part of LilyPond, the GNU music typesetter.
;;;;
;;;; Copyright (C) 1998--2020 Han-Wen Nienhuys <[email protected]>
;;;; Jan Nieuwenhuizen <[email protected]>
;;;;
;;;; LilyPond is free software: you can redistribute it and/or modify
;;;; it under the terms of the GNU General Public License as published by
;;;; the Free Software Foundation, either version 3 of the License, or
;;;; (at your option) any later version.
;;;;
;;;; LilyPond is distributed in the hope that it will be useful,
;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;;; GNU General Public License for more details.
;;;;
;;;; You should have received a copy of the GNU General Public License
;;;; along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
;;;; distances are given in line-thickness (thicknesses) and
;;;; staff-space (distances)
;;;; WARNING: the meta field should be the last one.
;;;; WARNING: don't use anonymous functions for initialization.
;; TODO: junk the meta field in favor of something more compact?
(define all-grob-descriptions-data
`(
(Accidental
. (
(after-line-breaking . ,ly:accidental-interface::remove-tied)
(alteration . ,accidental-interface::calc-alteration)
(avoid-slur . inside)
(extra-spacing-width . (-0.2 . 0.0))
(glyph-name . ,accidental-interface::glyph-name)
(glyph-name-alist . ,standard-alteration-glyph-name-alist)
(stencil . ,ly:accidental-interface::print)
(horizontal-skylines . ,(ly:make-unpure-pure-container ly:accidental-interface::horizontal-skylines))
(vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil)
(X-offset . ,ly:grob::x-parent-positioning)
(Y-extent . ,accidental-interface::height)
(meta . ((class . Item)
(interfaces . (accidental-interface
inline-accidental-interface
font-interface))))))
(AccidentalCautionary
. (
(after-line-breaking . ,ly:accidental-interface::remove-tied)
(alteration . ,accidental-interface::calc-alteration)
(avoid-slur . inside)
(glyph-name-alist . ,standard-alteration-glyph-name-alist)
(parenthesized . #t)
(stencil . ,ly:accidental-interface::print)
(X-offset . ,ly:grob::x-parent-positioning)
(Y-extent . ,accidental-interface::height)
(meta . ((class . Item)
(interfaces . (accidental-interface
inline-accidental-interface
font-interface))))))
(AccidentalPlacement
. (
(direction . ,LEFT)
(positioning-done . ,ly:accidental-placement::calc-positioning-done)
;; this is quite small, but it is very ugly to have
;; accs closer to the previous note than to the next one.
(right-padding . 0.15)
;; for horizontally stacked scripts.
(script-priority . -100)
(X-extent . ,ly:axis-group-interface::width)
(meta . ((class . Item)
(interfaces . (accidental-placement-interface))))))
(AccidentalSuggestion
. (
(after-line-breaking . ,ly:accidental-interface::remove-tied)
(alteration . ,accidental-interface::calc-alteration)
(direction . ,UP)
(font-size . -2)
(glyph-name-alist . ,standard-alteration-glyph-name-alist)
(outside-staff-priority . 0)
(parent-alignment-X . ,CENTER)
(script-priority . 0)
(self-alignment-X . ,CENTER)
(side-axis . ,Y)
(staff-padding . 0.25)
(stencil . ,ly:accidental-interface::print)
(X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-extent . ,accidental-interface::height)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Item)
(interfaces . (accidental-interface
accidental-suggestion-interface
font-interface
outside-staff-interface
script-interface
self-alignment-interface
side-position-interface))))))
(Ambitus
. (
(axes . (,X ,Y))
(break-align-symbol . ambitus)
(break-visibility . ,begin-of-line-visible)
(non-musical . #t)
(space-alist . (
(cue-end-clef . (extra-space . 0.5))
(clef . (extra-space . 1.15))
(cue-clef . (extra-space . 0.5))
(key-signature . (extra-space . 1.15))
(staff-bar . (extra-space . 1.15))
(time-signature . (extra-space . 1.15))
(right-edge . (extra-space . 0.5))
(first-note . (extra-space . 1.15))))
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,axis-group-interface::height)
(meta . ((class . Item)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (ambitus-interface
axis-group-interface
break-aligned-interface))))))
(AmbitusAccidental
. (
(direction . ,LEFT)
(glyph-name-alist . ,standard-alteration-glyph-name-alist)
(padding . 0.5)
(side-axis . ,X)
(stencil . ,ly:accidental-interface::print)
(X-offset . ,ly:grob::x-parent-positioning)
(Y-extent . ,accidental-interface::height)
(meta . ((class . Item)
(interfaces . (accidental-interface
break-aligned-interface
font-interface
side-position-interface))))))
(AmbitusLine
. (
(gap . ,ambitus-line::calc-gap)
(length-fraction . 0.7)
(maximum-gap . 0.45)
(stencil . ,ambitus::print)
(thickness . 2)
(X-offset . ,ly:self-alignment-interface::centered-on-x-parent)
(meta . ((class . Item)
(interfaces . (ambitus-interface
font-interface))))))
(AmbitusNoteHead
. (
(duration-log . 2)
(glyph-name . ,note-head::calc-glyph-name)
(ignore-ambitus . #t)
(stencil . ,ly:note-head::print)
(Y-offset . ,staff-symbol-referencer::callback)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (ambitus-interface
font-interface
ledgered-interface
note-head-interface
rhythmic-head-interface
staff-symbol-referencer-interface))))))
(Arpeggio
. (
(cross-staff . ,ly:arpeggio::calc-cross-staff)
(direction . ,LEFT)
(line-thickness . 1)
(padding . 0.5)
(positions . ,ly:arpeggio::calc-positions)
(protrusion . 0.4)
(script-priority . 0)
(side-axis . ,X)
(staff-position . 0.0)
(stencil . ,ly:arpeggio::print)
(thickness . 1)
(X-extent . ,ly:arpeggio::width)
(Y-extent . ,(grob::unpure-Y-extent-from-stencil ly:arpeggio::pure-height))
(X-offset . ,ly:side-position-interface::x-aligned-side)
(Y-offset . ,staff-symbol-referencer::callback)
(meta . ((class . Item)
(interfaces . (arpeggio-interface
font-interface
side-position-interface
staff-symbol-referencer-interface))))))
(BalloonTextItem
. (
(annotation-balloon . #t)
(annotation-line . #t)
(extra-spacing-width . (+inf.0 . -inf.0))
(stencil . ,ly:balloon-interface::print)
(text . ,(grob::calc-property-by-copy 'text))
(X-offset . ,(grob::calc-property-by-copy 'X-offset))
(Y-offset . ,(grob::calc-property-by-copy 'Y-offset))
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (balloon-interface
font-interface
text-interface))))))
(BalloonTextSpanner
. (
(annotation-balloon . #t)
(annotation-line . #t)
(extra-spacing-width . (+inf.0 . -inf.0))
(stencil . ,ly:balloon-interface::print-spanner)
(text . ,(grob::calc-property-by-copy 'text))
(X-offset . ,(grob::calc-property-by-copy 'X-offset))
(Y-offset . ,(grob::calc-property-by-copy 'Y-offset))
(Y-extent . ,balloon::height)
(meta . ((class . Spanner)
(interfaces . (balloon-interface
font-interface
text-interface))))))
(BarLine
. (
(allow-span-bar . #t)
(bar-extent . ,ly:bar-line::calc-bar-extent)
(break-align-anchor . ,ly:bar-line::calc-anchor)
(break-align-symbol . staff-bar)
(break-visibility . ,bar-line::calc-break-visibility)
(extra-spacing-height . ,pure-from-neighbor-interface::account-for-span-bar)
(gap . 0.4)
(glyph . "|")
(glyph-name . ,bar-line::calc-glyph-name)
;;
;; Ross. page 151 lists other values, we opt for a leaner look
;;
;; TODO:
;; kern should scale with line-thickness too.
(kern . 3.0)
(segno-kern . 3.0)
(hair-thickness . 1.9)
(thick-thickness . 6.0)
(layer . 0)
(non-musical . #t)
(rounded . #f)
(space-alist . (
(ambitus . (extra-space . 1.0))
(time-signature . (extra-space . 0.75))
(custos . (minimum-space . 2.0))
(clef . (extra-space . 1.0))
(key-signature . (extra-space . 1.0))
(key-cancellation . (extra-space . 1.0))
(first-note . (fixed-space . 1.3))
(next-note . (semi-fixed-space . 0.9))
(right-edge . (extra-space . 0.0))))
(stencil . ,ly:bar-line::print)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:pure-from-neighbor-interface::calc-pure-relevant-grobs)))
(interfaces . (bar-line-interface
break-aligned-interface
font-interface
pure-from-neighbor-interface))))))
(BarNumber
. (
(after-line-breaking . ,ly:side-position-interface::move-to-extremal-staff)
;; want the bar number before the clef at line start.
(break-align-symbols . (left-edge staff-bar))
(break-visibility . ,begin-of-line-visible)
(direction . ,UP)
(extra-spacing-width . (+inf.0 . -inf.0))
(font-family . roman)
(font-size . -2)
(non-musical . #t)
;; w/o padding, bars numbers are not positioned over the staff as
;; they are slightly to the left. so we add just a bit.
(horizon-padding . 0.05)
(outside-staff-priority . 100)
(padding . 1.0)
(self-alignment-X . ,RIGHT)
(side-axis . ,Y)
(stencil . ,ly:text-interface::print)
(X-offset . ,self-alignment-interface::self-aligned-on-breakable)
(Y-offset . ,side-position-interface::y-aligned-side)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta .
((class . Item)
(interfaces . (break-alignable-interface
font-interface
outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
(BassFigure
. (
(stencil . ,ly:text-interface::print)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (bass-figure-interface
font-interface
rhythmic-grob-interface
text-interface))))))
(BassFigureAlignment
. (
(axes . (,Y))
(padding . 0.2)
(positioning-done . ,ly:align-interface::align-to-minimum-distances)
(stacking-dir . ,DOWN)
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,axis-group-interface::height)
(vertical-skylines . ,ly:axis-group-interface::calc-skylines)
(meta . ((class . Spanner)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (align-interface
axis-group-interface
bass-figure-alignment-interface))))))
(BassFigureAlignmentPositioning
. (
(axes . (,Y))
(direction . ,UP)
(padding . 0.5)
(side-axis . ,Y)
(add-stem-support . #t)
(staff-padding . 1.0)
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,axis-group-interface::height)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
outside-staff-interface
side-position-interface))))))
(BassFigureBracket
. (
(edge-height . (0.2 . 0.2))
(stencil . ,ly:enclosing-bracket::print)
(X-extent . ,ly:enclosing-bracket::width)
(meta . ((class . Item)
(interfaces . (enclosing-bracket-interface))))))
(BassFigureContinuation
. (
(stencil . ,ly:figured-bass-continuation::print)
(Y-offset . ,ly:figured-bass-continuation::center-on-figures)
(meta . ((class . Spanner)
(interfaces . (figured-bass-continuation-interface))))))
(BassFigureLine
. (
(adjacent-pure-heights . ,ly:axis-group-interface::adjacent-pure-heights)
(axes . (,Y))
(vertical-skylines . ,ly:axis-group-interface::calc-skylines)
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,axis-group-interface::height)
(meta . ((class . Spanner)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
outside-staff-axis-group-interface))))))
(Beam
. (
;; todo: clean this up a bit: the list is getting
;; rather long.
(auto-knee-gap . 5.5)
(beam-segments . ,ly:beam::calc-beam-segments)
(beam-thickness . 0.48) ; in staff-space
;; We have some unreferenced problems here.
;;
;; If we shorten beamed stems less than normal stems (1 staff-space),
;; or high order less than 8th beams, patterns like
;; c''4 [c''8 c''] c''4 [c''16 c]
;; are ugly (different stem lengths).
;;
;; But if we shorten 16th beams as much as 8th beams, a single
;; forced 16th beam looks *very* short.
;; We choose to shorten 8th beams the same as single stems,
;; and high order beams less than 8th beams, so that all
;; isolated shortened beams look nice and a bit shortened,
;; sadly possibly breaking patterns with high order beams.
(beamed-stem-shorten . (1.0 0.5 0.25))
(beaming . ,ly:beam::calc-beaming)
(clip-edges . #t)
(collision-interfaces . (beam-interface
clef-interface
clef-modifier-interface
flag-interface
inline-accidental-interface
key-signature-interface
note-head-interface
stem-interface
time-signature-interface))
(cross-staff . ,ly:beam::calc-cross-staff)
(damping . 1)
(details
.(
(secondary-beam-demerit . 10)
(stem-length-demerit-factor . 5)
(region-size . 2)
(beam-eps . 0.001)
(stem-length-limit-penalty . 5000)
(damping-direction-penalty . 800)
(hint-direction-penalty . 20)
(musical-direction-factor . 400)
(ideal-slope-factor . 10)
(collision-penalty . 500)
(collision-padding . 0.35)
(round-to-zero-slope . 0.02)))
(direction . ,ly:beam::calc-direction)
(normalized-endpoints . ,ly:spanner::calc-normalized-endpoints)
;; only for debugging.
(font-family . roman)
(gap . 0.8)
(neutral-direction . ,DOWN)
(positions . ,beam::place-broken-parts-individually)
(X-positions . ,ly:beam::calc-x-positions)
(transparent . ,(grob::inherit-parent-property
X 'transparent))
;; this is a hack to set stem lengths, if positions is set.
(quantized-positions . ,ly:beam::set-stem-lengths)
(shorten . ,ly:beam::calc-stem-shorten)
(vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil)
(stencil . ,ly:beam::print)
(meta . ((class . Spanner)
(object-callbacks . ((normal-stems . ,ly:beam::calc-normal-stems)))
(interfaces . (beam-interface
staff-symbol-referencer-interface
unbreakable-spanner-interface))))))
(BendAfter
. (
(minimum-length . 0.5)
(stencil . ,bend::print)
(thickness . 2.0)
(meta . ((class . Spanner)
(interfaces . (bend-after-interface
spanner-interface))))))
(BreakAlignGroup
. (
(axes . (,X))
(break-align-anchor . ,ly:break-aligned-interface::calc-average-anchor)
(break-align-anchor-alignment . ,ly:break-aligned-interface::calc-joint-anchor-alignment)
(break-visibility . ,ly:break-aligned-interface::calc-break-visibility)
(X-extent . ,ly:axis-group-interface::width)
(meta . ((class . Item)
(interfaces . (axis-group-interface
break-aligned-interface))))))
(BreakAlignment
. (
(axes . (,X))
(break-align-orders . ;; end of line
#((
left-edge
cue-end-clef
ambitus
breathing-sign
clef
cue-clef
staff-bar
key-cancellation
key-signature
time-signature
custos)
;; unbroken
(
left-edge
cue-end-clef
ambitus
breathing-sign
clef
cue-clef
staff-bar
key-cancellation
key-signature
time-signature
custos)
;; begin of line
(
left-edge
ambitus
breathing-sign
clef
key-cancellation
key-signature
time-signature
staff-bar
cue-clef
custos)))
(non-musical . #t)
(positioning-done . ,ly:break-alignment-interface::calc-positioning-done)
(stacking-dir . 1)
(X-extent . ,ly:axis-group-interface::width)
(meta . ((class . Item)
(interfaces . (axis-group-interface
break-alignment-interface))))))
(BreathingSign
. (
(break-align-symbol . breathing-sign)
(break-visibility . ,begin-of-line-invisible)
(non-musical . #t)
(space-alist . (
(ambitus . (extra-space . 2.0))
(custos . (minimum-space . 1.0))
(key-signature . (minimum-space . 1.5))
(time-signature . (minimum-space . 1.5))
(staff-bar . (minimum-space . 1.5))
(clef . (minimum-space . 2.0))
(cue-clef . (minimum-space . 2.0))
(cue-end-clef . (minimum-space . 2.0))
(first-note . (fixed-space . 1.0)) ;huh?
(right-edge . (extra-space . 0.1))))
(stencil . ,ly:text-interface::print)
(text . ,(make-musicglyph-markup "scripts.rcomma"))
(Y-offset . ,ly:breathing-sign::offset-callback)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (break-aligned-interface
breathing-sign-interface
font-interface
outside-staff-interface
text-interface))))))
(ChordName
. (
(after-line-breaking . ,ly:chord-name::after-line-breaking)
(font-family . sans)
(font-size . 1.5)
(stencil . ,ly:text-interface::print)
(extra-spacing-height . (0.2 . -0.2))
(extra-spacing-width . (-0.5 . 0.5))
(word-space . 0.0)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (chord-name-interface
font-interface
outside-staff-interface
rhythmic-grob-interface
text-interface))))))
(Clef
. (
(avoid-slur . inside)
(break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor)
(break-align-anchor-alignment . ,RIGHT)
(break-align-symbol . clef)
(break-visibility . ,begin-of-line-visible)
(extra-spacing-height . ,pure-from-neighbor-interface::extra-spacing-height-at-beginning-of-line)
(glyph-name . ,ly:clef::calc-glyph-name)
(non-musical . #t)
(space-alist . ((cue-clef . (extra-space . 2.0))
(staff-bar . (extra-space . 0.7))
(ambitus . (extra-space . 1.15))
(key-cancellation . (minimum-space . 3.5))
(key-signature . (minimum-space . 3.5))
(time-signature . (minimum-space . 4.2))
(first-note . (minimum-fixed-space . 5.0))
(next-note . (extra-space . 1.0))
(right-edge . (extra-space . 0.5))))
(stencil . ,ly:clef::print)
(vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
(Y-offset . ,staff-symbol-referencer::callback)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:pure-from-neighbor-interface::calc-pure-relevant-grobs)))
(interfaces . (break-aligned-interface
clef-interface
font-interface
pure-from-neighbor-interface
staff-symbol-referencer-interface))))))
(ClefModifier
. (
(break-visibility . ,(grob::inherit-parent-property
X 'break-visibility))
(clef-alignments . ((G . (-0.2 . 0.1))
(F . (-0.3 . -0.2))
(C . (0 . 0))))
(color . ,(grob::inherit-parent-property
X 'color))
(font-shape . italic)
(font-size . -4)
(parent-alignment-X . ,ly:clef-modifier::calc-parent-alignment)
(self-alignment-X . ,CENTER)
(staff-padding . 0.7)
(stencil . ,ly:text-interface::print)
(transparent . ,(grob::inherit-parent-property
X 'transparent))
(vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
(X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Item)
(interfaces . (clef-modifier-interface
font-interface
outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
(ClusterSpanner
. (
(cross-staff . ,ly:cluster::calc-cross-staff)
(minimum-length . 0.0)
(padding . 0.25)
(springs-and-rods . ,ly:spanner::set-spacing-rods)
(stencil . ,ly:cluster::print)
(style . ramp)
(meta . ((class . Spanner)
(interfaces . (cluster-interface))))))
(ClusterSpannerBeacon
. (
(Y-extent . ,ly:cluster-beacon::height)
(meta . ((class . Item)
(interfaces . (cluster-beacon-interface
rhythmic-grob-interface))))))
(CombineTextScript
. (
(avoid-slur . outside)
(baseline-skip . 2)
(direction . ,UP)
(extra-spacing-width . (+inf.0 . -inf.0))
(font-series . bold)
(outside-staff-priority . 450)
(padding . 0.5)
(parent-alignment-X . #f)
(script-priority . 200)
(self-alignment-X . #f)
(side-axis . ,Y)
(staff-padding . 0.5)
(stencil . ,ly:text-interface::print)
(X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-offset . ,side-position-interface::y-aligned-side)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (font-interface
outside-staff-interface
self-alignment-interface
side-position-interface
text-interface
text-script-interface))))))
(CueClef
. (
(avoid-slur . inside)
(break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor)
(break-align-symbol . cue-clef)
(break-visibility . ,begin-of-line-visible)
(extra-spacing-height . ,pure-from-neighbor-interface::extra-spacing-height-at-beginning-of-line)
(font-size . -4)
(glyph-name . ,ly:clef::calc-glyph-name)
(non-musical . #t)
(full-size-change . #t)
(space-alist . ((staff-bar . (minimum-space . 2.7))
(key-cancellation . (minimum-space . 3.5))
(key-signature . (minimum-space . 3.5))
(time-signature . (minimum-space . 4.2))
(custos . (minimum-space . 0.0))
(first-note . (minimum-fixed-space . 3.0))
(next-note . (extra-space . 1.0))
(right-edge . (extra-space . 0.5))))
(stencil . ,ly:clef::print)
(vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
(Y-offset . ,staff-symbol-referencer::callback)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:pure-from-neighbor-interface::calc-pure-relevant-grobs)))
(interfaces . (break-aligned-interface
clef-interface
font-interface
pure-from-neighbor-interface
staff-symbol-referencer-interface))))))
(CueEndClef
. (
(avoid-slur . inside)
(break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor)
(break-align-symbol . cue-end-clef)
(break-visibility . ,begin-of-line-invisible)
(extra-spacing-height . ,pure-from-neighbor-interface::extra-spacing-height-at-beginning-of-line)
(font-size . -4)
(glyph-name . ,ly:clef::calc-glyph-name)
(non-musical . #t)
(full-size-change . #t)
(space-alist . ((clef . (extra-space . 0.7))
(cue-clef . (extra-space . 0.7))
(staff-bar . (extra-space . 0.7))
(key-cancellation . (minimum-space . 3.5))
(key-signature . (minimum-space . 3.5))
(time-signature . (minimum-space . 4.2))
(first-note . (minimum-fixed-space . 5.0))
(next-note . (extra-space . 1.0))
(right-edge . (extra-space . 0.5))))
(stencil . ,ly:clef::print)
(Y-offset . ,staff-symbol-referencer::callback)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:pure-from-neighbor-interface::calc-pure-relevant-grobs)))
(interfaces . (break-aligned-interface
clef-interface
font-interface
pure-from-neighbor-interface
staff-symbol-referencer-interface))))))
(Custos
. (
(break-align-symbol . custos)
(break-visibility . ,end-of-line-visible)
(neutral-direction . ,DOWN)
(non-musical . #t)
(space-alist . (
(first-note . (minimum-fixed-space . 0.0))
(right-edge . (extra-space . 0.1))))
(stencil . ,ly:custos::print)
(style . vaticana)
(Y-offset . ,staff-symbol-referencer::callback)
(meta . ((class . Item)
(interfaces . (break-aligned-interface
custos-interface
font-interface
staff-symbol-referencer-interface))))))
(DotColumn
. (
(axes . (,X))
(chord-dots-limit . 3)
(direction . ,RIGHT)
(positioning-done . ,ly:dot-column::calc-positioning-done)
(X-extent . ,ly:axis-group-interface::width)
(meta . ((class . Item)
(interfaces . (axis-group-interface
dot-column-interface))))))
(Dots
. (
(avoid-slur . inside)
(dot-count . ,dots::calc-dot-count)
(staff-position . ,dots::calc-staff-position)
(stencil . ,ly:dots::print)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(extra-spacing-height . (-0.5 . 0.5))
(extra-spacing-width . (0.0 . 0.2))
(meta . ((class . Item)
(interfaces . (dots-interface
font-interface
staff-symbol-referencer-interface))))))
(DoublePercentRepeat
. (
(break-align-symbol . staff-bar)
(break-visibility . ,begin-of-line-invisible)
(dot-negative-kern . 0.75)
(font-encoding . fetaMusic)
(non-musical . #t)
(slash-negative-kern . 1.6)
(slope . 1.0)
(stencil . ,ly:percent-repeat-item-interface::double-percent)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(thickness . 0.48)
(meta . ((class . Item)
(interfaces . (break-aligned-interface
font-interface
percent-repeat-interface
percent-repeat-item-interface))))))
(DoublePercentRepeatCounter
. (
(direction . ,UP)
(font-encoding . fetaText)
(font-size . -2)
(padding . 0.2)
(parent-alignment-X . ,CENTER)
(self-alignment-X . ,CENTER)
(side-axis . ,Y)
(staff-padding . 0.25)
(stencil . ,ly:text-interface::print)
(X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Item)
(interfaces . (font-interface
outside-staff-interface
percent-repeat-interface
percent-repeat-item-interface
self-alignment-interface
side-position-interface
text-interface))))))
(DoubleRepeatSlash
. (
(dot-negative-kern . 0.75)
(font-encoding . fetaMusic)
(slash-negative-kern . 1.6)
(slope . 1.0)
(stencil . ,ly:percent-repeat-item-interface::beat-slash)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(thickness . 0.48)
(meta . ((class . Item)
(interfaces . (font-interface
outside-staff-interface
percent-repeat-interface
percent-repeat-item-interface
rhythmic-grob-interface))))))
(DurationLine
. (
(after-line-breaking . ,ly:spanner::kill-zero-spanned-time)
(arrow-width . 1.5)
(arrow-length . 2)
(bound-details
.
((right . ((end-on-accidental . #t)
(end-on-arpeggio . #t)
(padding . 0.4)
;; possible values for endstyle: arrow, hook
(end-style . #f)))
(right-broken . ((padding . 0.4)
(end-style . #f)))
(left-broken . ((padding . 0.4)))
(left . ((padding . -0.3)
(start-at-dot . #f)))))
(breakable . #t)
;; TODO needed/wished?
(cross-staff . ,ly:line-spanner::calc-cross-staff)
(details
.
((hook-height . 0.34)
;; Unless set by the user, grob's thickness is taken as default
(hook-thickness . #f)
(hook-direction . ,UP)))
(minimum-length . 2)
(minimum-length-after-break . 6)
(springs-and-rods . ,ly:spanner::set-spacing-rods)
(stencil . ,duration-line::print)
(style . beam)
(to-barline . #f)
(thickness . 4)
(vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil)
(Y-offset . 0)
(zigzag-length . 1)
(zigzag-width . 1)
(meta . ((class . Spanner)
(interfaces . (spanner-interface
line-interface
line-spanner-interface
duration-line-interface
font-interface
unbreakable-spanner-interface))))))
(DynamicLineSpanner
. (
(axes . (,Y))
(cross-staff . ,ly:side-position-interface::calc-cross-staff)
(direction . ,DOWN)
(minimum-space . 1.2)
(outside-staff-priority . 250)
(padding . 0.6)
(side-axis . ,Y)
(slur-padding . 0.3)
(staff-padding . 0.1)
(vertical-skylines . ,grob::always-vertical-skylines-from-element-stencils)
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,axis-group-interface::height)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
dynamic-interface
dynamic-line-spanner-interface
outside-staff-interface
side-position-interface))))))
(DynamicText
. (
;; todo.
(direction . ,ly:script-interface::calc-direction)
(extra-spacing-width . (+inf.0 . -inf.0))
(font-encoding . fetaText)
(font-series . bold)
(font-shape . italic)
(parent-alignment-X . ,CENTER)
(positioning-done . ,ly:script-interface::calc-positioning-done)
(right-padding . 0.5)
(self-alignment-X . ,CENTER)
(stencil . ,ly:text-interface::print)
(vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(X-align-on-main-noteheads . #t)
(X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-offset . ,(scale-by-font-size -0.6)) ; center on an 'm'
(meta . ((class . Item)
(interfaces . (dynamic-interface
dynamic-text-interface
font-interface
outside-staff-interface
script-interface
self-alignment-interface
text-interface))))))
(DynamicTextSpanner
. (
(before-line-breaking . ,dynamic-text-spanner::before-line-breaking)
(bound-details . ((right . ((attach-dir . ,LEFT)
(Y . 0)
(padding . 0.75)
))
(right-broken . ((attach-dir . ,RIGHT)
(padding . 0.0)
))
(left . ((attach-dir . ,LEFT)
(Y . 0)
(stencil-offset . (-0.75 . -0.5))
(padding . 0.75)
))
(left-broken . ((attach-dir . ,RIGHT)
))
))
(dash-fraction . 0.2)
(dash-period . 3.0)
;; rather ugh with NCSB
;; (font-series . bold)
(font-shape . italic)
;; need to blend with dynamic texts.
(font-size . 1)
(left-bound-info . ,ly:line-spanner::calc-left-bound-info-and-text)
(minimum-length . 2.0)
;; make sure the spanner doesn't get too close to notes
(minimum-Y-extent . (-1 . 1))
(right-bound-info . ,ly:line-spanner::calc-right-bound-info)
(skyline-horizontal-padding . 0.2)
(springs-and-rods . ,ly:spanner::set-spacing-rods)
(stencil . ,ly:line-spanner::print)
(style . dashed-line)
(vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil)
(meta . ((class . Spanner)
(interfaces . (dynamic-interface
dynamic-text-spanner-interface
font-interface
line-interface
line-spanner-interface
;; for now, LilyPond never will typeset
;; these without a DynamicLineSpanner
;; as their controlling element
;; so, they do not need the
;; outside-staff-interface
spanner-interface
text-interface))))))
(Episema
. (
(bound-details . ((left . ((Y . 0)
(padding . 0)
(attach-dir . ,LEFT)
))
(right . ((Y . 0)
(padding . 0)
(attach-dir . ,RIGHT)
))
))
(direction . ,UP)
(left-bound-info . ,ly:line-spanner::calc-left-bound-info)
(quantize-position . #t)
(right-bound-info . ,ly:line-spanner::calc-right-bound-info)
(side-axis . ,Y)
(stencil . ,ly:line-spanner::print)
(style . line)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(interfaces . (episema-interface
font-interface
line-interface
line-spanner-interface
side-position-interface))))))
(Fingering
. (
;; sync with TextScript (?)
(add-stem-support . ,only-if-beamed)
(avoid-slur . around)
(cross-staff . ,script-or-side-position-cross-staff)
(direction . ,ly:script-interface::calc-direction)
(font-encoding . fetaText)
(font-size . -5) ; don't overlap when next to heads.
(padding . 0.5)
(parent-alignment-X . ,CENTER)
(parent-alignment-Y . ,CENTER)
(positioning-done . ,ly:script-interface::calc-positioning-done)
(script-priority . 100)
(self-alignment-X . ,CENTER)
(self-alignment-Y . ,CENTER)
(slur-padding . 0.2)
(staff-padding . 0.5)
(stencil . ,ly:text-interface::print)
(text . ,fingering::calc-text)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (finger-interface
font-interface
outside-staff-interface
self-alignment-interface
side-position-interface
text-interface
text-script-interface))))))
(FingeringColumn
. (
(padding . 0.2)
(positioning-done . ,ly:fingering-column::calc-positioning-done)
(snap-radius . 0.3)
(meta . ((class . Item)
(interfaces . (fingering-column-interface))))))
(Flag
. (
(glyph-name . ,ly:flag::glyph-name)
(stencil . ,ly:flag::print)
(transparent . ,(grob::inherit-parent-property
X 'transparent))
(color . ,(grob::inherit-parent-property
X 'color))
(X-extent . ,ly:flag::width)
(X-offset . ,ly:flag::calc-x-offset)
(Y-offset . ,(ly:make-unpure-pure-container ly:flag::calc-y-offset ly:flag::pure-calc-y-offset))
(Y-extent . ,grob::always-Y-extent-from-stencil)
(vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
(meta . ((class . Item)
(interfaces . (flag-interface
font-interface))))))
(FootnoteItem
. (
(annotation-balloon . #f)
(annotation-line . #t)
(automatically-numbered . ,(grob::calc-property-by-copy 'automatically-numbered))
(break-visibility . ,(grob::inherit-parent-property
X 'break-visibility))
(footnote . #t)
(footnote-text . ,(grob::calc-property-by-copy 'footnote-text))
(stencil . ,ly:balloon-interface::print)
(text . ,(grob::calc-property-by-copy 'text))
(X-extent . #f)
(Y-extent . #f)
(X-offset . ,(grob::calc-property-by-copy 'X-offset))
(Y-offset . ,(grob::calc-property-by-copy 'Y-offset))
(meta . ((class . Item)
(interfaces . (balloon-interface
footnote-interface
font-interface
text-interface))))))
(FootnoteSpanner
. (
(annotation-balloon . #f)
(annotation-line . #t)
(automatically-numbered . ,(grob::calc-property-by-copy 'automatically-numbered))
(footnote . #t)
(footnote-text . ,(grob::calc-property-by-copy 'footnote-text))
(spanner-placement . ,LEFT)
(stencil . ,ly:balloon-interface::print-spanner)
(text . ,(grob::calc-property-by-copy 'text))
(X-extent . #f)
(Y-extent . #f)
(X-offset . ,(grob::calc-property-by-copy 'X-offset))
(Y-offset . ,(grob::calc-property-by-copy 'Y-offset))
(meta . ((class . Spanner)
(interfaces . (balloon-interface
footnote-interface
footnote-spanner-interface
font-interface
text-interface))))))
(FretBoard
. (
(after-line-breaking . ,ly:chord-name::after-line-breaking)
(fret-diagram-details . ((finger-code . below-string)))
(stencil . ,fret-board::calc-stencil)
(extra-spacing-height . (0.2 . -0.2))
(extra-spacing-width . (-0.5 . 0.5))
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (chord-name-interface
font-interface
fret-diagram-interface
outside-staff-interface
rhythmic-grob-interface))))))
(Glissando
. (
(after-line-breaking . ,ly:spanner::kill-zero-spanned-time)
(bound-details . ((right . ((attach-dir . ,LEFT)
(end-on-accidental . #t)
(padding . 0.5)
))
(left . ((attach-dir . ,RIGHT)
(padding . 0.5)
(start-at-dot . #t)
))
))
(cross-staff . ,ly:line-spanner::calc-cross-staff)
(gap . 0.5)
(left-bound-info . ,ly:line-spanner::calc-left-bound-info)
(normalized-endpoints . ,ly:spanner::calc-normalized-endpoints)
(right-bound-info . ,ly:line-spanner::calc-right-bound-info)
(simple-Y . #t)
(stencil . ,ly:line-spanner::print)
(style . line)
(vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil)
(X-extent . #f)
(Y-extent . #f)
(zigzag-width . 0.75)
(meta . ((class . Spanner)
(interfaces . (glissando-interface
line-interface
line-spanner-interface
unbreakable-spanner-interface))))))
(GraceSpacing
. (
(common-shortest-duration . ,grace-spacing::calc-shortest-duration)
(shortest-duration-space . 1.6)
(spacing-increment . 0.8)
(meta . ((class . Spanner)
(interfaces . (grace-spacing-interface
spacing-options-interface
spanner-interface))))))
(GridLine
. (
(layer . 0)
(parent-alignment-X . ,CENTER)
(self-alignment-X . ,CENTER)
(stencil . ,ly:grid-line-interface::print)
(X-extent . ,ly:grid-line-interface::width)
(X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(meta . ((class . Item)
(interfaces . (grid-line-interface
self-alignment-interface))))))
(GridPoint
. (
(X-extent . (0 . 0))
(Y-extent . (0 . 0))
(meta . ((class . Item)
(interfaces . (grid-point-interface))))))
(Hairpin
. (
(after-line-breaking . ,ly:spanner::kill-zero-spanned-time)
(bound-padding . 1.0)
(broken-bound-padding . ,ly:hairpin::broken-bound-padding)
(circled-tip . #f)
(grow-direction . ,hairpin::calc-grow-direction)
(height . 0.6666)
(minimum-length . 2.0)
(self-alignment-Y . ,CENTER)
(springs-and-rods . ,ly:spanner::set-spacing-rods)
(stencil . ,ly:hairpin::print)
(thickness . 1.0)
(to-barline . #t)
(vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil)
(Y-extent . ,(grob::unpure-Y-extent-from-stencil ly:hairpin::pure-height))
(Y-offset . ,self-alignment-interface::y-aligned-on-self)
(meta . ((class . Spanner)
(interfaces . (dynamic-interface
hairpin-interface
line-interface
outside-staff-interface
self-alignment-interface
spanner-interface))))))
(HorizontalBracket
. (
(bracket-flare . (0.5 . 0.5))
(connect-to-neighbor . ,ly:tuplet-bracket::calc-connect-to-neighbors)
(direction . ,DOWN)
(padding . 0.2)
(side-axis . ,Y)
(staff-padding . 0.2)
(stencil . ,ly:horizontal-bracket::print)
(thickness . 1.0)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(interfaces . (horizontal-bracket-interface
line-interface
outside-staff-interface
side-position-interface
spanner-interface))))))
(HorizontalBracketText
. (
(direction . ,ly:horizontal-bracket-text::calc-direction)
(font-size . -1)
(padding . 0.5)
(parent-alignment-X . ,CENTER)
(self-alignment-X . ,CENTER)
(side-axis . ,Y)
(stencil . ,ly:horizontal-bracket-text::print)
(X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(interfaces . (font-interface
horizontal-bracket-text-interface
outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
(InstrumentName
. (
(direction . ,LEFT)
(padding . 0.3)
(self-alignment-X . ,CENTER)
(self-alignment-Y . ,CENTER)
(stencil . ,system-start-text::print)
(X-offset . ,system-start-text::calc-x-offset)
(Y-offset . ,system-start-text::calc-y-offset)
(meta . ((class . Spanner)
(interfaces . (font-interface
self-alignment-interface
side-position-interface
system-start-text-interface
text-interface))))))
(InstrumentSwitch
. (
(direction . ,UP)
(extra-spacing-width . (+inf.0 . -inf.0))
(outside-staff-priority . 500)
(padding . 0.5)
(parent-alignment-X . #f)
(self-alignment-X . ,LEFT)
(side-axis . ,Y)
(staff-padding . 0.5)
(stencil . ,ly:text-interface::print)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Item)
(interfaces . (font-interface
outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
(KeyCancellation
. (
(break-align-symbol . key-cancellation)
(break-visibility . ,begin-of-line-invisible)
(glyph-name-alist . ,cancellation-glyph-name-alist)
(non-musical . #t)
(flat-positions . (2 3 4 2 1 2 1))
(sharp-positions . (4 5 4 2 3 2 3))
(space-alist . (
(time-signature . (extra-space . 1.25))
(staff-bar . (extra-space . 0.6))
(key-signature . (extra-space . 0.5))
(cue-clef . (extra-space . 0.5))
(right-edge . (extra-space . 0.5))
(first-note . (fixed-space . 2.5))
(custos . (extra-space . 1.0))))
(stencil . ,ly:key-signature-interface::print)
(vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(extra-spacing-width . (0.0 . 1.0))
(extra-spacing-height . ,pure-from-neighbor-interface::extra-spacing-height-including-staff)
(Y-offset . ,staff-symbol-referencer::callback)
(meta . ((class . Item)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:pure-from-neighbor-interface::calc-pure-relevant-grobs)))
(interfaces . (break-aligned-interface
font-interface
key-cancellation-interface
key-signature-interface
pure-from-neighbor-interface
staff-symbol-referencer-interface))))))
(KeySignature
. (
(avoid-slur . inside)
(break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor)
(break-align-anchor-alignment . ,RIGHT)
(break-align-symbol . key-signature)
(break-visibility . ,begin-of-line-visible)
(glyph-name-alist . ,standard-alteration-glyph-name-alist)
(non-musical . #t)
(flat-positions . (2 3 4 2 1 2 1))
(sharp-positions . (4 5 4 2 3 2 3))
(space-alist . (
(ambitus . (extra-space . 1.15))
(time-signature . (extra-space . 1.15))
(staff-bar . (extra-space . 1.1))
(cue-clef . (extra-space . 0.5))
(right-edge . (extra-space . 0.5))
(first-note . (fixed-space . 2.5))))
(stencil . ,ly:key-signature-interface::print)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(extra-spacing-width . (0.0 . 1.0))
(extra-spacing-height . ,pure-from-neighbor-interface::extra-spacing-height-including-staff)
(vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
(Y-offset . ,staff-symbol-referencer::callback)
(meta . ((class . Item)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:pure-from-neighbor-interface::calc-pure-relevant-grobs)))
(interfaces . (break-aligned-interface
font-interface
key-signature-interface
pure-from-neighbor-interface
staff-symbol-referencer-interface))))))
(KievanLigature
. (
(springs-and-rods . ,ly:spanner::set-spacing-rods)
(stencil . ,ly:kievan-ligature::print)
(padding . 0.5)
(meta . ((class . Spanner)
(interfaces . (font-interface
kievan-ligature-interface))))))
(LaissezVibrerTie
. (
(control-points . ,ly:semi-tie::calc-control-points)
(cross-staff . ,semi-tie::calc-cross-staff)
(details . ((ratio . 0.333)
(height-limit . 1.0)))
(direction . ,ly:tie::calc-direction)
(head-direction . ,LEFT)
(stencil . ,laissez-vibrer::print)
(thickness . 1.0)
(extra-spacing-height . (-0.5 . 0.5))
(vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (semi-tie-interface))))))
(LaissezVibrerTieColumn
. (
(head-direction . ,ly:semi-tie-column::calc-head-direction)
(positioning-done . ,ly:semi-tie-column::calc-positioning-done)
(X-extent . #f)
(Y-extent . #f)
(meta . ((class . Item)
(interfaces . (semi-tie-column-interface))))))
(LedgerLineSpanner
. (
(layer . 0)
(length-fraction . 0.25)
(minimum-length-fraction . 0.25)
(springs-and-rods . ,ly:ledger-line-spanner::set-spacing-rods)
(stencil . ,ly:ledger-line-spanner::print)
(vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil)
(X-extent . #f)
(Y-extent . #f)
(meta . ((class . Spanner)
(interfaces . (ledger-line-spanner-interface))))))
(LeftEdge
. (
(break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor)
(break-align-symbol . left-edge)
(break-visibility . ,begin-of-line-visible)
(non-musical . #t)
(space-alist . (
(ambitus . (extra-space . 1.15))
(breathing-sign . (minimum-space . 0.0))
(cue-end-clef . (extra-space . 0.8))
(clef . (extra-space . 0.8))
(cue-clef . (extra-space . 0.8))
(staff-bar . (extra-space . 0.0))
(key-cancellation . (extra-space . 0.0))
(key-signature . (extra-space . 0.8))
(time-signature . (extra-space . 1.0))
(custos . (extra-space . 0.0))
(first-note . (fixed-space . 2.0))
(right-edge . (extra-space . 0.0))
))
(X-extent . (0 . 0))
(Y-extent . (0 . 0))
(meta . ((class . Item)
(interfaces . (break-aligned-interface))))))
(LigatureBracket
. (
;; ugh. A ligature bracket is totally different from
;; a tuplet bracket.
(bracket-visibility . #t)
(connect-to-neighbor . ,ly:tuplet-bracket::calc-connect-to-neighbors)
(direction . ,UP)
(edge-height . (0.7 . 0.7))
(padding . 2.0)
(positions . ,ly:tuplet-bracket::calc-positions)
(shorten-pair . (-0.2 . -0.2))
(staff-padding . 0.25)
(stencil . ,ly:tuplet-bracket::print)
(thickness . 1.6)
(tuplet-slur . #f)
(X-positions . ,ly:tuplet-bracket::calc-x-positions)
(meta . ((class . Spanner)
(interfaces . (line-interface
tuplet-bracket-interface))))))
(LyricExtender
. (
(minimum-length . 1.5)
(stencil . ,ly:lyric-extender::print)
(thickness . 0.8) ; line-thickness
(Y-extent . (0 . 0))
(meta . ((class . Spanner)
(interfaces . (lyric-extender-interface
lyric-interface))))))
(LyricHyphen
. (
(after-line-breaking . ,ly:spanner::kill-zero-spanned-time)
(dash-period . 10.0)
(height . 0.42)
(length . 0.66)
(minimum-distance . 0.1)
(minimum-length . 0.3)
(padding . 0.07)
(springs-and-rods . ,ly:lyric-hyphen::set-spacing-rods)
(stencil . ,ly:lyric-hyphen::print)
(vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil)
(thickness . 1.3)
(Y-extent . (0 . 0))
(meta . ((class . Spanner)
(interfaces . (font-interface
lyric-hyphen-interface
lyric-interface
spanner-interface))))))
(LyricSpace
. (
(minimum-distance . 0.45)
(padding . 0.0)
(springs-and-rods . ,ly:lyric-hyphen::set-spacing-rods)
(X-extent . #f)
(Y-extent . #f)
(meta . ((class . Spanner)
(interfaces . (lyric-hyphen-interface
spanner-interface))))))
(LyricText
. (
(extra-spacing-width . (0.0 . 0.0))
;; Recede in height for purposes of note spacing,
;; so notes in melismata can be freely spaced above lyrics
(extra-spacing-height . (0.2 . -0.2))
(font-series . medium)
(font-size . 1.0)
(parent-alignment-X . ())
(self-alignment-X . ,CENTER)
(stencil . ,lyric-text::print)
(text . ,(grob::calc-property-by-copy 'text))
(word-space . 0.6)
(skyline-horizontal-padding . 0.1)
(vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
(X-align-on-main-noteheads . #t)
(X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (font-interface
lyric-syllable-interface
rhythmic-grob-interface
self-alignment-interface
text-interface))))))
(MeasureCounter
. (
(count-from . 1)
(direction . ,UP)
(font-encoding . fetaText)
(font-size . -2)
(outside-staff-horizontal-padding . 0.5)
(outside-staff-priority . 750)
(self-alignment-X . ,CENTER)
(side-axis . ,Y)
(spacing-pair . (break-alignment . break-alignment))
(staff-padding . 0.5)
(stencil . ,measure-counter-stencil)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(interfaces . (font-interface
measure-counter-interface
outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
(MeasureSpanner
. (
(connect-to-neighbor . ,ly:measure-spanner::calc-connect-to-neighbors)
(direction . ,UP)
(edge-height . (0.7 . 0.7))
(outside-staff-priority . 750)
(self-alignment-X . ,CENTER)
(side-axis . ,Y)
(spacing-pair . (staff-bar . staff-bar))
(staff-padding . 0.5)
(stencil . ,ly:measure-spanner::print)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(interfaces . (font-interface
measure-spanner-interface
line-interface
outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
(MeasureGrouping
. (
(direction . ,UP)
(height . 2.0)
(padding . 2)
(side-axis . ,Y)
(staff-padding . 3)
(stencil . ,ly:measure-grouping::print)
(thickness . 1)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(interfaces . (measure-grouping-interface
outside-staff-interface
side-position-interface))))))
(MelodyItem
. (
(neutral-direction . ,DOWN)
(meta . ((class . Item)
(interfaces . (melody-spanner-interface))))))
(MensuralLigature
. (
(springs-and-rods . ,ly:spanner::set-spacing-rods)
(stencil . ,ly:mensural-ligature::print)
(thickness . 1.3)
(meta . ((class . Spanner)
(interfaces . (font-interface
mensural-ligature-interface))))))
(MetronomeMark
. (
(after-line-breaking . ,ly:side-position-interface::move-to-extremal-staff)
(break-visibility . ,end-of-line-invisible)
(direction . ,UP)
(extra-spacing-width . (+inf.0 . -inf.0))
(flag-style . default)
(outside-staff-horizontal-padding . 0.2)
(outside-staff-priority . 1000)
(padding . 0.8)
(side-axis . ,Y)
(stencil . ,ly:text-interface::print)
(vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
(Y-offset . ,side-position-interface::y-aligned-side)
(X-offset . ,self-alignment-interface::self-aligned-on-breakable)
(self-alignment-X . ,LEFT)
(break-align-symbols . (time-signature))
(non-break-align-symbols . (paper-column-interface))
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (break-alignable-interface
font-interface
metronome-mark-interface
outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
(MultiMeasureRest
. (
(expand-limit . 10)
(hair-thickness . 2.0)
(round-up-exceptions . ())
(bound-padding . 0.5)
(max-symbol-separation . 8.0)
(space-increment . 2.0)
(spacing-pair . (break-alignment . break-alignment))
(springs-and-rods . ,ly:multi-measure-rest::set-spacing-rods)
(stencil . ,ly:multi-measure-rest::print)
(thick-thickness . 6.6)
;; See Wanske pp. 125
(usable-duration-logs . ,(iota 4 -3))
(voiced-position . 4)
(Y-extent . ,(ly:make-unpure-pure-container ly:multi-measure-rest::height))
(Y-offset . ,staff-symbol-referencer::callback)
(meta . ((class . Spanner)
(interfaces . (font-interface
multi-measure-interface
outside-staff-interface
multi-measure-rest-interface
rest-interface
staff-symbol-referencer-interface))))))
(MultiMeasureRestNumber
. (
(bound-padding . 1.0)
(direction . ,UP)
(font-encoding . fetaText)
(padding . 0.4)
(parent-alignment-X . ,CENTER)
(self-alignment-X . ,CENTER)
(side-axis . ,Y)
(springs-and-rods . ,ly:multi-measure-rest::set-text-rods)
(staff-padding . 0.4)
(stencil . ,ly:text-interface::print)
(vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil)
(X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(interfaces . (font-interface
multi-measure-interface
multi-measure-rest-number-interface
outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
(MultiMeasureRestText
. (
(direction . ,UP)
(outside-staff-priority . 450)
(padding . 0.2)
(parent-alignment-X . ,CENTER)
(self-alignment-X . ,CENTER)
(skyline-horizontal-padding . 0.2)
(staff-padding . 0.25)
(stencil . ,ly:text-interface::print)
(vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil)
(X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(interfaces . (font-interface
multi-measure-interface
outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
(MultiMeasureRestScript
. (
(direction . ,UP)
(outside-staff-padding . 0)
(outside-staff-priority . 40)
(parent-alignment-X . ,CENTER)
(self-alignment-X . ,CENTER)
(staff-padding . 0.25)
(stencil . ,ly:script-interface::print)
(vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil)
(X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(interfaces . (font-interface
multi-measure-interface
outside-staff-interface
script-interface
self-alignment-interface
side-position-interface))))))
(NonMusicalPaperColumn
. (
(allow-loose-spacing . #t)
(axes . (,X))
(before-line-breaking . ,ly:paper-column::before-line-breaking)
(bound-alignment-interfaces . (break-alignment-interface))
;; used by Paper_column::print when debugging columns:
(font-size . -7.5)
(full-measure-extra-space . 1.0)
(horizontal-skylines . ,ly:separation-item::calc-skylines)
;; (stencil . ,ly:paper-column::print)
(keep-inside-line . #t)
;; used by Paper_column::print when debugging columns:
(layer . 1000)
(line-break-permission . allow)
(non-musical . #t)
(page-break-permission . allow)
(X-extent . ,ly:axis-group-interface::width)
(meta . ((class . Paper_column)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
font-interface
paper-column-interface
separation-item-interface
spaceable-grob-interface))))))
(NoteCollision
. (
(axes . (,X ,Y))
(note-collision-threshold . 1)
(positioning-done . ,ly:note-collision-interface::calc-positioning-done)
(prefer-dotted-right . #t)
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,axis-group-interface::height)
(vertical-skylines . ,ly:axis-group-interface::calc-skylines)
(meta . ((class . Item)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
note-collision-interface))))))
(NoteColumn
. (
(axes . (,X ,Y))
(bound-alignment-interfaces . (rhythmic-head-interface stem-interface))
(horizontal-skylines . ,ly:separation-item::calc-skylines)
(skyline-vertical-padding . 0.15)
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,axis-group-interface::height)
(vertical-skylines . ,ly:axis-group-interface::calc-skylines)
(meta . ((class . Item)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
note-column-interface
separation-item-interface))))))
(NoteHead
. (
(flexa-width . 2.0)
(duration-log . ,note-head::calc-duration-log)
(extra-spacing-height . ,ly:note-head::include-ledger-line-height)
(glyph-name . ,note-head::calc-glyph-name)
(ligature-flexa . #f)
(parenthesis-friends . (accidental-grob dot))
(stem-attachment . ,ly:note-head::calc-stem-attachment)
(stencil . ,ly:note-head::print)
(X-offset . ,ly:note-head::stem-x-shift)
(Y-offset . ,staff-symbol-referencer::callback)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (font-interface
gregorian-ligature-interface
ledgered-interface
ligature-head-interface
mensural-ligature-interface
note-head-interface
rhythmic-grob-interface
rhythmic-head-interface
staff-symbol-referencer-interface
vaticana-ligature-interface))))))
(NoteName
. (
(stencil . ,ly:text-interface::print)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (font-interface
note-name-interface
text-interface))))))
(NoteSpacing
. (
;; Changed this from 0.75.
;; If you ever change this back, please document! --hwn
(knee-spacing-correction . 1.0)
(same-direction-correction . 0.25)
(space-to-barline . #t)
(stem-spacing-correction . 0.5)
(meta . ((class . Item)
(interfaces . (note-spacing-interface
spacing-interface))))))
(OttavaBracket
. (
(dash-fraction . 0.3)
(direction . ,UP)
(edge-height . (0 . 0.8))
(font-series . bold)
(font-shape . italic)
(minimum-length . 0.3)
(outside-staff-priority . 400)
(padding . 0.5)
(shorten-pair . (-0.8 . -0.6))
(staff-padding . 2.0)
(stencil . ,ly:ottava-bracket::print)
(style . dashed-line)
(vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(interfaces . (font-interface
horizontal-bracket-interface
line-interface
outside-staff-interface
ottava-bracket-interface
side-position-interface
text-interface))))))
(PaperColumn
. (
(allow-loose-spacing . #t)
(axes . (,X))
(before-line-breaking . ,ly:paper-column::before-line-breaking)
(bound-alignment-interfaces . (note-column-interface))
;; used by Paper_column::print when debugging columns:
(font-size . -7.5)
(horizontal-skylines . ,ly:separation-item::calc-skylines)
(keep-inside-line . #t)
;; used by Paper_column::print when debugging columns:
(layer . 1000)
;; 0.08 comes from spacing-horizontal-skyline.ly
;; allows double flat of F to be nestled over dots of C
(skyline-vertical-padding . 0.08)
;; (stencil . ,ly:paper-column::print)
(X-extent . ,ly:axis-group-interface::width)
(meta . ((class . Paper_column)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
font-interface
paper-column-interface
separation-item-interface
spaceable-grob-interface))))))
(ParenthesesItem
. (
(font-size . -6)
(padding . 0.2)
(stencil . ,parentheses-item::print)
(stencils . ,parentheses-item::calc-parenthesis-stencils)
;; X-extent needs to be non-empty in order to allow proper
;; horizontal attachment. ParenthesesItem does not reserve
;; space of its own, however.
(X-extent . (0 . 0))
(Y-extent . ,parentheses-item::y-extent)
(meta . ((class . Item)
(interfaces . (font-interface
parentheses-interface))))))
(PercentRepeat
. (
(dot-negative-kern . 0.75)
(font-encoding . fetaMusic)
(slope . 1.0)
(spacing-pair . (break-alignment . staff-bar))
(springs-and-rods . ,ly:multi-measure-rest::set-spacing-rods)
(stencil . ,ly:multi-measure-rest::percent)
(thickness . 0.48)
(meta . ((class . Spanner)
(interfaces . (font-interface
multi-measure-rest-interface
percent-repeat-interface))))))
(PercentRepeatCounter
. (
(direction . ,UP)
(font-encoding . fetaText)
(font-size . -2)
(padding . 0.2)
(parent-alignment-X . ,CENTER)
(self-alignment-X . ,CENTER)
(staff-padding . 0.25)
(stencil . ,ly:text-interface::print)
(X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(interfaces . (font-interface
percent-repeat-interface
outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
(PhrasingSlur
. (
(control-points . ,ly:slur::calc-control-points)
(cross-staff . ,ly:slur::calc-cross-staff)
(details . ,default-slur-details)
(direction . ,ly:slur::calc-direction)
(height-limit . 2.0)
(minimum-length . 1.5)
(ratio . 0.333)
(springs-and-rods . ,ly:spanner::set-spacing-rods)
(stencil . ,ly:slur::print)
(thickness . 1.1)
(vertical-skylines . ,(ly:make-unpure-pure-container ly:slur::vertical-skylines ly:grob::pure-simple-vertical-skylines-from-extents))
(Y-extent . ,slur::height)
(meta . ((class . Spanner)
(interfaces . (outside-staff-interface
slur-interface))))))
;; an example of a text spanner
(PianoPedalBracket
. (
(bound-padding . 1.0)
(bracket-flare . (0.5 . 0.5))
(direction . ,DOWN)
(edge-height . (1.0 . 1.0))
(shorten-pair . (0.0 . 0.0))
(stencil . ,ly:piano-pedal-bracket::print)
(style . line)
(thickness . 1.0)
(vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil)
(meta . ((class . Spanner)
(interfaces . (line-interface
piano-pedal-bracket-interface
piano-pedal-interface))))))
(RehearsalMark
. (
(after-line-breaking . ,ly:side-position-interface::move-to-extremal-staff)
(baseline-skip . 2)
(break-align-symbols . (staff-bar key-signature clef))
(break-visibility . ,end-of-line-invisible)
(direction . ,UP)
(extra-spacing-width . (+inf.0 . -inf.0))
(font-size . 2)
(non-musical . #t)
(outside-staff-horizontal-padding . 0.2)
(outside-staff-priority . 1500)
(padding . 0.8)
(self-alignment-X . ,break-alignable-interface::self-alignment-opposite-of-anchor)
(stencil . ,ly:text-interface::print)
(vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
(X-offset . ,self-alignment-interface::self-aligned-on-breakable)
(Y-offset . ,side-position-interface::y-aligned-side)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (break-alignable-interface
font-interface
mark-interface
outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
(RepeatSlash
. (
(slash-negative-kern . 0.85)
(slope . 1.7)
(stencil . ,ly:percent-repeat-item-interface::beat-slash)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(thickness . 0.48)
(meta . ((class . Item)
(interfaces . (percent-repeat-interface
percent-repeat-item-interface
rhythmic-grob-interface))))))
(RepeatTie
. (
(cross-staff . ,semi-tie::calc-cross-staff)
(control-points . ,ly:semi-tie::calc-control-points)
(details . ((ratio . 0.333)
(height-limit . 1.0)))
(direction . ,ly:tie::calc-direction)
(head-direction . ,RIGHT)
(stencil . ,ly:tie::print)
(thickness . 1.0)
(extra-spacing-height . (-0.5 . 0.5))
(Y-extent . ,grob::always-Y-extent-from-stencil)
(vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
(meta . ((class . Item)
(interfaces . (semi-tie-interface))))))
(RepeatTieColumn
. (
(head-direction . ,ly:semi-tie-column::calc-head-direction)
(positioning-done . ,ly:semi-tie-column::calc-positioning-done)
(X-extent . #f)
(Y-extent . #f)
(meta . ((class . Item)
(interfaces . (semi-tie-column-interface))))))
(Rest
. (
(cross-staff . ,ly:rest::calc-cross-staff)
(duration-log . ,stem::calc-duration-log)
(minimum-distance . 0.25)
(parenthesis-friends . (dot))
(stencil . ,ly:rest::print)
(voiced-position . 4)
(X-extent . ,ly:rest::width)
(Y-extent . ,(ly:make-unpure-pure-container ly:rest::height ly:rest::pure-height))
(Y-offset . ,(ly:make-unpure-pure-container ly:rest::y-offset-callback))
(vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil)
(meta . ((class . Item)
(interfaces . (font-interface
rest-interface
rhythmic-grob-interface
rhythmic-head-interface
staff-symbol-referencer-interface))))))
(RestCollision
. (
(minimum-distance . 0.75)
(positioning-done . ,ly:rest-collision::calc-positioning-done)
(meta . ((class . Item)
(interfaces . (rest-collision-interface))))))
(Script
. (
(add-stem-support . #t)
(cross-staff . ,ly:script-interface::calc-cross-staff)
(direction . ,ly:script-interface::calc-direction)
(font-encoding . fetaMusic)
(horizon-padding . 0.1) ; to avoid interleaving with accidentals
(positioning-done . ,ly:script-interface::calc-positioning-done)
(self-alignment-X . ,CENTER)
(side-axis . ,Y)
;; padding set in script definitions.
(slur-padding . 0.2)
(staff-padding . 0.25)
(stencil . ,ly:script-interface::print)
(vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(X-offset . ,script-interface::calc-x-offset)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Item)
(interfaces . (font-interface
outside-staff-interface
script-interface
self-alignment-interface
side-position-interface))))))
(ScriptColumn
. (
(before-line-breaking . ,ly:script-column::before-line-breaking)
(meta . ((class . Item)
(interfaces . (script-column-interface))))))
(ScriptRow
. (
(before-line-breaking . ,ly:script-column::row-before-line-breaking)
(meta . ((class . Item)
(interfaces . (script-column-interface))))))
(Slur
. (
(avoid-slur . inside)
(control-points . ,ly:slur::calc-control-points)
(cross-staff . ,ly:slur::calc-cross-staff)
(details . ,default-slur-details)
(direction . ,ly:slur::calc-direction)
(height-limit . 2.0)
(line-thickness . 0.8)
(minimum-length . 1.5)
(ratio . 0.25)
(springs-and-rods . ,ly:spanner::set-spacing-rods)
(stencil . ,ly:slur::print)
(thickness . 1.2)
(vertical-skylines . ,(ly:make-unpure-pure-container ly:slur::vertical-skylines ly:grob::pure-simple-vertical-skylines-from-extents))
(Y-extent . ,slur::height)
(meta . ((class . Spanner)
(interfaces . (outside-staff-interface
slur-interface))))))
(SostenutoPedal
. (
(direction . ,RIGHT)
(extra-spacing-width . (+inf.0 . -inf.0))
(font-shape . italic)
(padding . 0.0) ;; padding relative to SostenutoPedalLineSpanner
(parent-alignment-X . #f)
(self-alignment-X . ,CENTER)
(stencil . ,ly:text-interface::print)
(vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
(X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (font-interface
piano-pedal-script-interface
self-alignment-interface
text-interface))))))
(SostenutoPedalLineSpanner
. (
(axes . (,Y))
(direction . ,DOWN)
(minimum-space . 1.0)
(outside-staff-priority . 1000)
(padding . 1.2)
(side-axis . ,Y)
(staff-padding . 1.0)
(vertical-skylines . ,grob::always-vertical-skylines-from-element-stencils)
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,axis-group-interface::height)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
outside-staff-interface
piano-pedal-interface
side-position-interface))))))
(SpacingSpanner
. (
(average-spacing-wishes . #t)
(base-shortest-duration . ,(ly:make-moment 3 16))
(common-shortest-duration . ,ly:spacing-spanner::calc-common-shortest-duration)
(shortest-duration-space . 2.0)
(spacing-increment . 1.2)
(springs-and-rods . ,ly:spacing-spanner::set-springs)
(meta . ((class . Spanner)
(interfaces . (spacing-options-interface
spacing-spanner-interface))))))
(SpanBar
. (
(allow-span-bar . #t)
(bar-extent . ,axis-group-interface::height)
(before-line-breaking . ,ly:span-bar::before-line-breaking)
(break-align-symbol . staff-bar)
(cross-staff . #t)
(glyph-name . ,ly:span-bar::calc-glyph-name)
(layer . 0)
(non-musical . #t)
(stencil . ,ly:span-bar::print)
(X-extent . ,ly:span-bar::width)
(Y-extent . (+inf.0 . -inf.0))
(meta . ((class . Item)
(interfaces . (bar-line-interface
font-interface
span-bar-interface))))))
(SpanBarStub
. (
(X-extent . ,(grob::inherit-parent-property
X 'X-extent))
(extra-spacing-height . ,pure-from-neighbor-interface::extra-spacing-height)
;; we want this to be ignored, so empty, but the extra spacing height
;; should preserve the span bar's presence for horizontal spacing
(Y-extent . ,pure-from-neighbor-interface::height-if-pure)
(meta . ((class . Item)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:pure-from-neighbor-interface::calc-pure-relevant-grobs)))
(interfaces . (pure-from-neighbor-interface))))))
(StaffGrouper
. (
(staff-staff-spacing . ((basic-distance . 9)
(minimum-distance . 7)
(padding . 1)
(stretchability . 5)))
(staffgroup-staff-spacing . ((basic-distance . 10.5)
(minimum-distance . 8)
(padding . 1)
(stretchability . 9)))
(meta . ((class . Spanner)
(interfaces . (staff-grouper-interface))))))
(StaffSpacing
. (
(non-musical . #t)
(stem-spacing-correction . 0.4)
(meta . ((class . Item)
(interfaces . (spacing-interface
staff-spacing-interface))))))
(StaffSymbol
. (
(break-align-symbols . (staff-bar break-alignment))
(layer . 0)
(ledger-line-thickness . (1.0 . 0.1))
(line-count . 5)
(stencil . ,ly:staff-symbol::print)
(Y-extent . ,(ly:make-unpure-pure-container ly:staff-symbol::height))
(meta . ((class . Spanner)
(interfaces . (staff-symbol-interface))))))
(StanzaNumber
. (
(direction . ,LEFT)
(font-series . bold)
(padding . 1.0)
(side-axis . ,X)
(stencil . ,ly:text-interface::print)
(X-offset . ,ly:side-position-interface::x-aligned-side)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (font-interface
side-position-interface
stanza-number-interface
text-interface))))))
(Stem
. (
(beamlet-default-length . (1.1 . 1.1))
(beamlet-max-length-proportion . (0.75 . 0.75))
(cross-staff . ,ly:stem::calc-cross-staff)
(default-direction . ,ly:stem::calc-default-direction)
(details
. (
;; 3.5 (or 3 measured from note head) is standard length
;; 32nd, 64th, ..., 1024th flagged stems should be longer
(lengths . (3.5 3.5 3.5 4.25 5.0 6.0 7.0 8.0 9.0))
;; FIXME. 3.5 yields too long beams (according to Ross and
;; looking at Baerenreiter examples) for a number of common
;; boundary cases. Subtracting half a beam thickness fixes
;; this, but the bug may well be somewhere else.
;; FIXME this should come from 'lengths
(beamed-lengths . (3.26 3.5 3.6))
;; The 'normal' minima
(beamed-minimum-free-lengths . (1.83 1.5 1.25))
;;(beamed-minimum-free-lengths . (2.0 1.83 1.25))
;; The 'extreme case' minima
(beamed-extreme-minimum-free-lengths . (2.0 1.25))
;; Stems in unnatural (forced) direction should be shortened by
;; one staff space, according to [Roush & Gourlay].
;; Flagged stems we shorten only half a staff space.
(stem-shorten . (1.0 0.5 0.25))
))
;; We use the normal minima as minimum for the ideal lengths,
;; and the extreme minima as abolute minimum length.
(direction . ,ly:stem::calc-direction)
(double-stem-separation . 0.5)
(duration-log . ,stem::calc-duration-log)
(length . ,(ly:make-unpure-pure-container ly:stem::calc-length ly:stem::pure-calc-length))
(neutral-direction . ,DOWN)
(note-collision-threshold . 1)
(positioning-done . ,ly:stem::calc-positioning-done)
(stem-info . ,ly:stem::calc-stem-info)
(stem-begin-position . ,(ly:make-unpure-pure-container ly:stem::calc-stem-begin-position ly:stem::pure-calc-stem-begin-position))
(stencil . ,ly:stem::print)
(thickness . 1.3)
(X-extent . ,ly:stem::width)
(X-offset . ,ly:stem::offset-callback)
(Y-extent . ,(ly:make-unpure-pure-container ly:stem::height ly:stem::pure-height))
(Y-offset . ,staff-symbol-referencer::callback)
(meta . ((class . Item)
(interfaces . (stem-interface))))))
(StemStub
. (
(X-extent . ,stem-stub::width)
(extra-spacing-height . ,stem-stub::extra-spacing-height)
(Y-extent . ,(ly:make-unpure-pure-container #f stem-stub::pure-height))
(meta . ((class . Item)
(interfaces . ())))))
(StemTremolo
. (
(beam-thickness . 0.48) ; staff-space
(beam-width . ,ly:stem-tremolo::calc-width) ; staff-space
(direction . ,ly:stem-tremolo::calc-direction)
(parent-alignment-X . ,CENTER)
(slope . ,ly:stem-tremolo::calc-slope)
(stencil . ,ly:stem-tremolo::print)
(shape . ,ly:stem-tremolo::calc-shape)
(X-extent . ,ly:stem-tremolo::width)
(X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-extent . ,(grob::unpure-Y-extent-from-stencil ly:stem-tremolo::pure-height))
(Y-offset . ,(ly:make-unpure-pure-container ly:stem-tremolo::calc-y-offset ly:stem-tremolo::pure-calc-y-offset))
(meta . ((class . Item)
(interfaces . (self-alignment-interface
stem-tremolo-interface))))))
(StringNumber
. (
(add-stem-support . ,only-if-beamed)
(avoid-slur . around)
(cross-staff . ,script-or-side-position-cross-staff)
(font-encoding . fetaText)
(font-size . -5) ; don't overlap when next to heads.
(number-type . arabic)
(padding . 0.5)
(parent-alignment-X . ,CENTER)
(script-priority . 100)
(self-alignment-X . ,CENTER)
(self-alignment-Y . ,CENTER)
(staff-padding . 0.5)
(stencil . ,print-circled-text-callback)
(text . ,string-number::calc-text)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (font-interface
self-alignment-interface
outside-staff-interface
side-position-interface
number-interface
string-number-interface
text-interface
text-script-interface))))))
(StrokeFinger
. (
(add-stem-support . ,only-if-beamed)
(digit-names . #("p" "i" "m" "a" "x"))
(font-shape . italic)
(font-size . -4) ; don't overlap when next to heads.
(padding . 0.5)
(parent-alignment-X . ,CENTER)
(script-priority . 100)
(self-alignment-X . ,CENTER)
(self-alignment-Y . ,CENTER)
(staff-padding . 0.5)
(stencil . ,ly:text-interface::print)
(text . ,stroke-finger::calc-text)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (font-interface
outside-staff-interface
self-alignment-interface
side-position-interface
stroke-finger-interface
text-interface
text-script-interface))))))
(SustainPedal
. (
(extra-spacing-width . (+inf.0 . -inf.0))
(padding . 0.0) ;; padding relative to SustainPedalLineSpanner
(parent-alignment-X . #f)
(self-alignment-X . ,CENTER)
(stencil . ,ly:sustain-pedal::print)
(vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
(X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (font-interface
piano-pedal-interface
piano-pedal-script-interface
self-alignment-interface
text-interface))))))
(SustainPedalLineSpanner
. (
(axes . (,Y))
(direction . ,DOWN)
(minimum-space . 1.0)
(outside-staff-priority . 1000)
(padding . 1.2)
(side-axis . ,Y)
(staff-padding . 1.2)
(vertical-skylines . ,grob::always-vertical-skylines-from-element-stencils)
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,axis-group-interface::height)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
outside-staff-interface
piano-pedal-interface
side-position-interface))))))
(System
. (
(adjacent-pure-heights . ,ly:axis-group-interface::adjacent-pure-heights)
(axes . (,X ,Y))
(outside-staff-placement-directive . left-to-right-polite)
(skyline-horizontal-padding . 1.0)
(vertical-skylines . ,ly:axis-group-interface::calc-skylines)
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,(ly:make-unpure-pure-container ly:system::height ly:system::calc-pure-height))
(meta . ((class . System)
(object-callbacks . ((footnotes-before-line-breaking . ,ly:system::footnotes-before-line-breaking)
(footnotes-after-line-breaking . ,ly:system::footnotes-after-line-breaking)
(pure-relevant-grobs . ,ly:system::calc-pure-relevant-grobs)
(pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(vertical-skyline-elements . ,ly:system::vertical-skyline-elements)
(vertical-alignment . ,ly:system::get-vertical-alignment)))
(interfaces . (axis-group-interface
system-interface
outside-staff-axis-group-interface))))))
(SystemStartBar
. (
(collapse-height . 5.0)
(direction . ,LEFT)
;; ugh--hardcoded.
(padding . -0.1) ;; bar must cover rounded ending of staff line.
(stencil . ,ly:system-start-delimiter::print)
(style . bar-line)
(thickness . 1.6)
(X-offset . ,ly:side-position-interface::x-aligned-side)
(meta . ((class . Spanner)
(interfaces . (side-position-interface
system-start-delimiter-interface))))))
(SystemStartBrace
. (
(collapse-height . 5.0)
(direction . ,LEFT)
(font-encoding . fetaBraces)
(padding . 0.3)
(stencil . ,ly:system-start-delimiter::print)
(style . brace)
(X-offset . ,ly:side-position-interface::x-aligned-side)
(meta . ((class . Spanner)
(interfaces . (font-interface
side-position-interface
system-start-delimiter-interface))))))
(SystemStartBracket
. (
(collapse-height . 5.0)
(direction . ,LEFT)
(padding . 0.8)
(stencil . ,ly:system-start-delimiter::print)
(style . bracket)
(thickness . 0.45)
(X-offset . ,ly:side-position-interface::x-aligned-side)
(meta . ((class . Spanner)
(interfaces . (font-interface
side-position-interface
system-start-delimiter-interface))))))
(SystemStartSquare
. (
(collapse-height . 5.0)
(direction . ,LEFT)
(stencil . ,ly:system-start-delimiter::print)
(style . line-bracket)
(thickness . 1.0)
(X-offset . ,ly:side-position-interface::x-aligned-side)
(meta . ((class . Spanner)
(interfaces . (font-interface
side-position-interface
system-start-delimiter-interface))))))
(TabNoteHead
. (
(details . ((cautionary-properties . ((angularity . 0.4)
(half-thickness . 0.075)
(padding . 0)
(procedure . ,parenthesize-stencil)
(width . 0.25)))
(head-offset . 3/5)
(harmonic-properties . ((angularity . 2)
(half-thickness . 0.075)
(padding . 0)
(procedure . ,parenthesize-stencil)
(width . 0.25)))
(repeat-tied-properties . ((note-head-visible . #t)
(parenthesize . #t)))
(tied-properties . ((parenthesize . #t)))))
(direction . ,CENTER)
(duration-log . ,note-head::calc-duration-log)
(font-series . bold)
(font-size . -2)
(parenthesis-friends . (dot))
(stem-attachment . (0.0 . 1.35))
(stencil . ,tab-note-head::print)
(whiteout . #t)
(X-offset . ,ly:self-alignment-interface::x-aligned-on-self)
(Y-offset . ,staff-symbol-referencer::callback)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (font-interface
note-head-interface
rhythmic-grob-interface
rhythmic-head-interface
staff-symbol-referencer-interface
tab-note-head-interface
text-interface))))))
(TextScript
. (
(avoid-slur . around)
(cross-staff . #f)
(direction . ,DOWN)
(extra-spacing-width . (+inf.0 . -inf.0))
(outside-staff-horizontal-padding . 0.2)
(outside-staff-priority . 450)
;; sync with Fingering ?
(padding . 0.3)
(parent-alignment-X . #f)
(script-priority . 200)
;; self-alignment cannot be LEFT because of fingering diagrams.
(self-alignment-X . #f)
(side-axis . ,Y)
(slur-padding . 0.5)
(staff-padding . 0.5)
(stencil . ,ly:text-interface::print)
(vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(X-align-on-main-noteheads . #t)
(X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Item)
(interfaces . (font-interface
instrument-specific-markup-interface
outside-staff-interface
self-alignment-interface
side-position-interface
text-interface
text-script-interface))))))
(TextSpanner
. (
(bound-details . ((left . ((Y . 0)
(padding . 0.25)
(attach-dir . ,LEFT)
))
(left-broken . ((attach-dir . ,RIGHT)))
(right . ((Y . 0)
(padding . 0.25)
))
))
(dash-fraction . 0.2)
(dash-period . 3.0)
(direction . ,UP)
(font-shape . italic)
(left-bound-info . ,ly:line-spanner::calc-left-bound-info)
(outside-staff-priority . 350)
(right-bound-info . ,ly:line-spanner::calc-right-bound-info)
(side-axis . ,Y)
(staff-padding . 0.8)
(stencil . ,ly:line-spanner::print)
(style . dashed-line)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(interfaces . (font-interface
line-interface
line-spanner-interface
outside-staff-interface
side-position-interface))))))
(Tie
. (
(avoid-slur . inside)
(control-points . ,ly:tie::calc-control-points)
(details . (
;; for a full list, see tie-details.cc
(ratio . 0.333)
(center-staff-line-clearance . 0.6)
(tip-staff-line-clearance . 0.45)
(note-head-gap . 0.2)
(stem-gap . 0.35)
(height-limit . 1.0)
(horizontal-distance-penalty-factor . 10)
(same-dir-as-stem-penalty . 8)
(min-length-penalty-factor . 26)
(tie-tie-collision-distance . 0.45)
(tie-tie-collision-penalty . 25.0)
(intra-space-threshold . 1.25)
(outer-tie-vertical-distance-symmetry-penalty-factor . 10)
(outer-tie-length-symmetry-penalty-factor . 10)
(vertical-distance-penalty-factor . 7)
(outer-tie-vertical-gap . 0.25)
(multi-tie-region-size . 3)
(single-tie-region-size . 4)
(between-length-limit . 1.0)))
(direction . ,ly:tie::calc-direction)
(line-thickness . 0.8)
(neutral-direction . ,UP)
(springs-and-rods . ,ly:spanner::set-spacing-rods)
(stencil . ,ly:tie::print)
(vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil)
(thickness . 1.2)
(meta . ((class . Spanner)
(interfaces . (tie-interface))))))
(TieColumn
. (
(before-line-breaking . ,ly:tie-column::before-line-breaking)
(positioning-done . ,ly:tie-column::calc-positioning-done)
(X-extent . #f)
(Y-extent . #f)
(meta . ((class . Spanner)
(interfaces . (tie-column-interface))))))
(TimeSignature
. (
(avoid-slur . inside)
(break-align-anchor
. ,ly:break-aligned-interface::calc-extent-aligned-anchor)
(break-align-symbol . time-signature)
(break-align-anchor-alignment . ,LEFT)
(break-visibility . ,all-visible)
(extra-spacing-height . ,pure-from-neighbor-interface::extra-spacing-height-including-staff)
(extra-spacing-width . (0.0 . 0.8))
(non-musical . #t)
(space-alist . (
(ambitus . (extra-space . 1.0))
(cue-clef . (extra-space . 1.5))
(first-note . (fixed-space . 2.0))
(right-edge . (extra-space . 0.5))
(staff-bar . (extra-space . 1.0))))
(stencil . ,ly:time-signature::print)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(style . C)
(meta . ((class . Item)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:pure-from-neighbor-interface::calc-pure-relevant-grobs)))
(interfaces . (break-aligned-interface
font-interface
pure-from-neighbor-interface
time-signature-interface))))))
(TrillPitchAccidental
. (
(direction . ,LEFT)
(font-size . -4)
(glyph-name-alist . ,standard-alteration-glyph-name-alist)
(padding . 0.2)
(side-axis . ,X)
(stencil . ,ly:accidental-interface::print)
(X-offset . ,ly:side-position-interface::x-aligned-side)
(Y-extent . ,accidental-interface::height)
(meta . ((class . Item)
(interfaces . (accidental-interface
font-interface
inline-accidental-interface
side-position-interface
trill-pitch-accidental-interface))))))
(TrillPitchGroup
. (
(axes . (,X))
(direction . ,RIGHT)
(font-size . -4)
;; minimum shift to the right, in case the parent note has no stem
(minimum-space . 2.5)
(horizon-padding . 0.1) ; to avoid interleaving with augmentation dots
(padding . 0.3)
(side-axis . ,X)
(stencil . ,parenthesize-elements)
(stencils . ,parentheses-item::calc-parenthesis-stencils)
(X-offset . ,ly:side-position-interface::x-aligned-side)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (axis-group-interface
font-interface
note-head-interface
parentheses-interface
side-position-interface))))))
(TrillPitchHead
. (
(duration-log . 2)
(font-size . -4)
(stencil . ,ly:note-head::print)
(Y-offset . ,staff-symbol-referencer::callback)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (font-interface
ledgered-interface
pitched-trill-interface
rhythmic-head-interface
staff-symbol-referencer-interface))))))
(TrillSpanner
. (
(after-line-breaking . ,ly:spanner::kill-zero-spanned-time)
(bound-details . ((left . ((text . ,(make-musicglyph-markup "scripts.trill"))
(Y . 0)
(stencil-offset . (-0.5 . -1))
(padding . 0.5)
(attach-dir . ,CENTER)
))
(left-broken . ((end-on-note . #t)))
(right . ((Y . 0)))
))
(direction . ,UP)
(left-bound-info . ,ly:line-spanner::calc-left-bound-info)
(outside-staff-priority . 50)
(padding . 0.5)
(right-bound-info . ,ly:line-spanner::calc-right-bound-info)
(side-axis . ,Y)
(staff-padding . 1.0)
(stencil . ,ly:line-spanner::print)
(style . trill)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(interfaces . (font-interface
line-interface
line-spanner-interface
outside-staff-interface
side-position-interface
trill-spanner-interface))))))
(TupletBracket
. (
(avoid-scripts . #t)
(connect-to-neighbor . ,ly:tuplet-bracket::calc-connect-to-neighbors)
(cross-staff . ,ly:tuplet-bracket::calc-cross-staff)
(direction . ,ly:tuplet-bracket::calc-direction)
(edge-height . (0.7 . 0.7))
(full-length-to-extent . #t)
(padding . 1.1)
(positions . ,ly:tuplet-bracket::calc-positions)
(shorten-pair . (-0.2 . -0.2))
(staff-padding . 0.25)
(stencil . ,ly:tuplet-bracket::print)
(thickness . 1.6)
(tuplet-slur . #f)
(vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil)
(X-positions . ,ly:tuplet-bracket::calc-x-positions)
(meta . ((class . Spanner)
(interfaces . (line-interface
outside-staff-interface
tuplet-bracket-interface))))))
(TupletNumber
. (
(avoid-slur . inside)
(cross-staff . ,ly:tuplet-number::calc-cross-staff)
(direction . ,tuplet-number::calc-direction)
(font-shape . italic)
(font-size . -2)
(knee-to-beam . #t)
(stencil . ,ly:tuplet-number::print)
(text . ,tuplet-number::calc-denominator-text)
(X-offset . ,ly:tuplet-number::calc-x-offset)
(Y-offset . ,ly:tuplet-number::calc-y-offset)
(meta . ((class . Spanner)
(interfaces . (font-interface
outside-staff-interface
text-interface
tuplet-number-interface))))))
(UnaCordaPedal
. (
(direction . ,RIGHT)
(extra-spacing-width . (+inf.0 . -inf.0))
(font-shape . italic)
(padding . 0.0) ;; padding relative to UnaCordaPedalLineSpanner
(parent-alignment-X . #f)
(self-alignment-X . ,CENTER)
(stencil . ,ly:text-interface::print)
(vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(meta . ((class . Item)
(interfaces . (font-interface
piano-pedal-script-interface
self-alignment-interface
text-interface))))))
(UnaCordaPedalLineSpanner
. (
(axes . (,Y))
(direction . ,DOWN)
(minimum-space . 1.0)
(outside-staff-priority . 1000)
(padding . 1.2)
(side-axis . ,Y)
(staff-padding . 1.2)
(vertical-skylines . ,grob::always-vertical-skylines-from-element-stencils)
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,axis-group-interface::height)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
outside-staff-interface
piano-pedal-interface
side-position-interface))))))
(VaticanaLigature
. (
(flexa-width . 2.0)
(stencil . ,ly:vaticana-ligature::print)
(thickness . 0.6)
(meta . ((class . Spanner)
(interfaces . (font-interface
vaticana-ligature-interface))))))
(VerticalAlignment
. (
(axes . (,Y))
(positioning-done . ,ly:align-interface::align-to-ideal-distances)
(stacking-dir . -1)
(vertical-skylines . ,ly:axis-group-interface::combine-skylines)
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,axis-group-interface::height)
(meta . ((class . Spanner)
(object-callbacks . ((Y-common . ,ly:axis-group-interface::calc-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
(pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)))
(interfaces . (align-interface
axis-group-interface))))))
(VerticalAxisGroup
. (
(adjacent-pure-heights . ,ly:axis-group-interface::adjacent-pure-heights)
(axes . (,Y))
(default-staff-staff-spacing . ((basic-distance . 9)
(minimum-distance . 8)
(padding . 1)))
(nonstaff-unrelatedstaff-spacing . ((padding . 0.5)))
(outside-staff-placement-directive . left-to-right-polite)
(staff-staff-spacing . ,(ly:make-unpure-pure-container ly:axis-group-interface::calc-staff-staff-spacing ly:axis-group-interface::calc-pure-staff-staff-spacing))
(stencil . ,ly:axis-group-interface::print)
(skyline-horizontal-padding . 0.1)
(vertical-skylines . ,ly:hara-kiri-group-spanner::calc-skylines)
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,(ly:make-unpure-pure-container ly:hara-kiri-group-spanner::y-extent ly:hara-kiri-group-spanner::pure-height))
(Y-offset . ,ly:hara-kiri-group-spanner::force-hara-kiri-callback)
(meta . ((class . Spanner)
(object-callbacks . (
(X-common . ,ly:axis-group-interface::calc-x-common)
(pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
hara-kiri-group-spanner-interface
outside-staff-axis-group-interface))))))
(VoiceFollower
. (
(after-line-breaking . ,ly:spanner::kill-zero-spanned-time)
(bound-details . ((right . ((attach-dir . ,CENTER)
(padding . 1.5)
))
(left . ((attach-dir . ,CENTER)
(padding . 1.5)
))
))
(cross-staff . #t)
(gap . 0.5)
(left-bound-info . ,ly:line-spanner::calc-left-bound-info)
(non-musical . #t)
(right-bound-info . ,ly:line-spanner::calc-right-bound-info)
(stencil . ,ly:line-spanner::print)
(style . line)
(X-extent . #f)
(Y-extent . #f)
(meta . ((class . Spanner)
(interfaces . (line-interface
line-spanner-interface))))))
(VoltaBracket
. (
(baseline-skip . 1.7)
(direction . ,UP)
(edge-height . (2.0 . 2.0)) ;; staff-space;
(font-encoding . fetaText)
(font-size . -4)
(shorten-pair . ,ly:volta-bracket::calc-shorten-pair)
(stencil . ,ly:volta-bracket-interface::print)
(thickness . 1.6) ;; line-thickness
(word-space . 0.6)
(vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil)
(Y-extent . ,(grob::unpure-Y-extent-from-stencil volta-bracket-interface::pure-height))
(meta . ((class . Spanner)
(interfaces . (font-interface
horizontal-bracket-interface
line-interface
side-position-interface
text-interface
volta-bracket-interface
volta-interface))))))
(VoltaBracketSpanner
. (
(after-line-breaking . ,ly:side-position-interface::move-to-extremal-staff)
(axes . (,Y))
(direction . ,UP)
(no-alignment . #t)
(outside-staff-priority . 600)
(padding . 1)
(side-axis . ,Y)
(vertical-skylines . ,grob::always-vertical-skylines-from-element-stencils)
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,axis-group-interface::height)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
outside-staff-interface
side-position-interface
volta-interface))))))
(VowelTransition
. (
(after-line-breaking . ,ly:spanner::kill-zero-spanned-time)
(arrow-length . 0.5)
(arrow-width . 0.5)
(bound-details . ((left . ((Y . 0)
(padding . 0.14)
(attach-dir . ,RIGHT)
))
(right-broken . ((padding . 0)))
(left-broken . ((padding . 0)))
(right . ((Y . 0)
(padding . 0.14)
(attach-dir . ,LEFT)
(arrow . #t)
))))
(left-bound-info . ,ly:line-spanner::calc-left-bound-info)
(minimum-length . 1.0)
(right-bound-info . ,ly:line-spanner::calc-right-bound-info)
(springs-and-rods . ,ly:vowel-transition::set-spacing-rods)
(stencil . ,ly:line-spanner::print)
(style . line)
(vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil)
(Y-offset . 0.5)
(meta . ((class . Spanner)
(interfaces . (line-interface
line-spanner-interface
lyric-interface
spanner-interface))))))
))
(define (completize-grob-entry x)
"Transplant assoc key into 'name entry of 'meta of X. Set interfaces for Item, Spanner etc.
"
;; (display (car x))
;; (newline)
(let* ((name-sym (car x))
;; Make (shallow) copies of the list and its items because we modify
;; them below.
(grob-entry (map list-copy (cdr x)))
(meta-entry (map list-copy (assoc-get 'meta grob-entry)))
(class (assoc-get 'class meta-entry))
(ifaces-entry
(assoc-get 'interfaces meta-entry)))
(cond
((eq? 'Item class)
(set! ifaces-entry (cons 'item-interface ifaces-entry)))
((eq? 'Spanner class)
(set! ifaces-entry (cons 'spanner-interface ifaces-entry)))
((eq? 'Paper_column class)
(set! ifaces-entry (cons 'item-interface
(cons 'paper-column-interface ifaces-entry))))
((eq? 'System class)
(set! ifaces-entry (cons 'system-interface
(cons 'spanner-interface ifaces-entry))))
(else
(ly:warning "Unknown class ~a" class)))
(set! ifaces-entry (uniq-list (sort ifaces-entry symbol<?)))
(set! ifaces-entry (cons 'grob-interface ifaces-entry))
(set! meta-entry (assoc-set! meta-entry 'name name-sym))
(set! meta-entry (assoc-set! meta-entry 'interfaces ifaces-entry))
(set! grob-entry (assoc-set! grob-entry 'meta meta-entry))
;; make sure that \property Foo.Bar =\turnOff doesn't complain
(set-object-property! name-sym 'translation-type? ly:grob-properties?)
(set-object-property! name-sym 'is-grob? #t)
(cons name-sym grob-entry)))
(define-session-public all-grob-descriptions
(sort (map completize-grob-entry all-grob-descriptions-data) alist<?))