X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fdefine-grobs.scm;h=0ddc677a04185ca7462a65a809d59023d04aeb34;hb=e90f0536f9be39ada0bef0aeb0d275dec3b2fb5b;hp=f458290be5661e539625ffcee57489cdcb90e0d4;hpb=a8c9e8a7ca320ab0df5fd32e717fd62cd7635ce6;p=lilypond.git diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index f458290be5..0ddc677a04 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -1,9 +1,20 @@ -;;;; define-grobs.scm -- +;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; source file of the GNU LilyPond music typesetter -;;;; -;;;; (c) 1998--2009 Han-Wen Nienhuys +;;;; Copyright (C) 1998--2011 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen +;;;; +;;;; 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 . ;;;; distances are given in line-thickness (thicknesses) and ;;;; staff-space (distances) @@ -13,191 +24,182 @@ ;; TODO: junk the meta field in favor of something more compact? -;;; todo:: reorder sensibly. - (define-public all-grob-descriptions `( (Accidental . ( + (alteration . ,accidental-interface::calc-alteration) (avoid-slur . inside) (glyph-name-alist . ,standard-alteration-glyph-name-alist) - (alteration . ,accidental-interface::calc-alteration) (stencil . ,ly:accidental-interface::print) - (Y-extent . ,ly:accidental-interface::height) (X-extent . ,ly:accidental-interface::width) + (Y-extent . ,ly:accidental-interface::height) (meta . ((class . Item) (interfaces . (accidental-interface + inline-accidental-interface font-interface)))))) (AccidentalCautionary . ( + (alteration . ,accidental-interface::calc-alteration) (avoid-slur . inside) - (parenthesized . #t) (glyph-name-alist . ,standard-alteration-glyph-name-alist) - (alteration . ,accidental-interface::calc-alteration) + (parenthesized . #t) (stencil . ,ly:accidental-interface::print) (Y-extent . ,ly: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 . ( + (alteration . ,accidental-interface::calc-alteration) + (direction . ,UP) + (font-size . -2) + (glyph-name-alist . ,standard-alteration-glyph-name-alist) + (outside-staff-priority . 0) + (script-priority . 0) + (self-alignment-X . ,CENTER) + (side-axis . ,Y) + (staff-padding . 0.25) (stencil . ,ly:accidental-interface::print) - (X-extent . ,ly:accidental-interface::width) - (Y-extent . ,ly:accidental-interface::height) + (X-extent . ,ly:accidental-interface::width) (X-offset . ,(ly:make-simple-closure `(,+ ,(ly:make-simple-closure (list ly:self-alignment-interface::centered-on-x-parent)) ,(ly:make-simple-closure (list ly:self-alignment-interface::x-aligned-on-self))))) - (self-alignment-X . ,CENTER) - (font-size . -2) - (glyph-name-alist . ,standard-alteration-glyph-name-alist) - (alteration . ,accidental-interface::calc-alteration) + (Y-extent . ,ly:accidental-interface::height) (Y-offset . ,ly:side-position-interface::y-aligned-side) - (direction . ,UP) - (staff-padding . 0.25) - (outside-staff-priority . 0) - (script-priority . 0) - (side-axis . ,Y) (meta . ((class . Item) - (interfaces . (side-position-interface - script-interface - accidental-interface + (interfaces . (accidental-interface accidental-suggestion-interface + font-interface + script-interface self-alignment-interface - font-interface)))))) - - (AccidentalPlacement - . ( - (left-padding . 0.2) + side-position-interface)))))) - ;; for horizontally stacked scripts. - (script-priority . -100) - (direction . ,LEFT) - - (positioning-done . ,ly:accidental-placement::calc-positioning-done) - (X-extent . ,ly:axis-group-interface::width) - - ;; 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) - (meta . ((class . Item) - (interfaces . (accidental-placement-interface)))))) - (Ambitus . ( (axes . (,X ,Y)) - (X-extent . ,ly:axis-group-interface::width) - (Y-extent . ,ly:axis-group-interface::height) + (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 . 0.5)) + (cue-clef . (extra-space . 0.5)) (key-signature . (extra-space . 0.0)) (staff-bar . (extra-space . 0.0)) (time-signature . (extra-space . 0.0)) (first-note . (fixed-space . 0.0)))) - (non-musical . #t) - (break-align-symbol . ambitus) - (break-visibility . ,begin-of-line-visible) - (meta . ((class . Item) - (interfaces . (axis-group-interface - break-aligned-interface - ambitus-interface)))))) - - (AmbitusLine - . ( - (stencil . ,ly:ambitus::print) - (join-heads . #t) - (thickness . 2) - (X-offset . ,ly:self-alignment-interface::centered-on-x-parent) + (X-extent . ,ly:axis-group-interface::width) + (Y-extent . ,ly: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 - staff-symbol-referencer-interface - font-interface)))))) + axis-group-interface + break-aligned-interface)))))) + (AmbitusAccidental . ( - (font-family . music) - (padding . 0.5) - (X-offset . ,ly:side-position-interface::x-aligned-side) (direction . ,LEFT) + (glyph-name-alist . ,standard-alteration-glyph-name-alist) + (padding . 0.5) + (side-axis . ,X) (stencil . ,ly:accidental-interface::print) + (X-offset . ,ly:side-position-interface::x-aligned-side) (Y-extent . ,ly:accidental-interface::height) - (glyph-name-alist . ,standard-alteration-glyph-name-alist) - (side-axis . ,X) (meta . ((class . Item) - (interfaces . ( - accidental-interface + (interfaces . (accidental-interface break-aligned-interface - side-position-interface + font-interface + side-position-interface)))))) + + (AmbitusLine + . ( + (gap . 0.35) + (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) - (stencil . ,ly:note-head::print) (glyph-name . ,note-head::calc-glyph-name) + (stencil . ,ly:note-head::print) (Y-offset . ,ly:staff-symbol-referencer::callback) (meta . ((class . Item) - (interfaces . (font-interface + (interfaces . (ambitus-interface + font-interface + ledgered-interface note-head-interface - ambitus-interface - staff-symbol-referencer-interface rhythmic-head-interface - ledgered-interface)))))) + staff-symbol-referencer-interface)))))) (Arpeggio - . ((X-extent . ,ly:arpeggio::width) - (stencil . ,ly:arpeggio::print) - (Y-offset . ,ly:staff-symbol-referencer::callback) - (X-offset . ,ly:side-position-interface::x-aligned-side) + . ( (direction . ,LEFT) - (positions . ,ly:arpeggio::calc-positions) (padding . 0.5) + (positions . ,ly:arpeggio::calc-positions) (script-priority . 0) (side-axis . ,X) (staff-position . 0.0) - (Y-extent . ,ly:arpeggio::height) + (stencil . ,ly:arpeggio::print) + (X-extent . ,ly:arpeggio::width) + (X-offset . ,ly:side-position-interface::x-aligned-side) + (Y-offset . ,ly:staff-symbol-referencer::callback) (meta . ((class . Item) (interfaces . (arpeggio-interface - staff-symbol-referencer-interface + font-interface side-position-interface - font-interface)))))) + staff-symbol-referencer-interface)))))) - (BalloonTextItem - . ((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)) + (BalloonTextItem + . ( + (annotation-balloon . #t) + (annotation-line . #t) + (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)) (meta . ((class . Item) (interfaces . (balloon-interface - text-interface - font-interface)))))) + font-interface + text-interface)))))) + (BarLine . ( - (break-align-symbol . staff-bar) + (allow-span-bar . #t) + (bar-extent . ,ly:bar-line::calc-bar-extent) (break-align-anchor . ,ly:bar-line::calc-anchor) - (glyph . "|") - (gap . 0.4) - (layer . 0) + (break-align-symbol . staff-bar) (break-visibility . ,bar-line::calc-break-visibility) - (non-musical . #t) - (stencil . ,ly:bar-line::print) + (gap . 0.4) + (glyph . "|") (glyph-name . ,bar-line::calc-glyph-name) - (bar-size . ,ly:bar-line::calc-bar-size) - (bar-extent . ,ly:bar-line::calc-bar-extent) - (allow-span-bar . #t) - - (space-alist . ( - (time-signature . (extra-space . 0.75)) - (custos . (minimum-space . 2.0)) - (clef . (minimum-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)))) ;; ;; Ross. page 151 lists other values, we opt for a leaner look @@ -208,6 +210,19 @@ (thin-kern . 3.0) (hair-thickness . 1.9) (thick-thickness . 6.0) + + (layer . 0) + (non-musical . #t) + (space-alist . ( + (time-signature . (extra-space . 0.75)) + (custos . (minimum-space . 2.0)) + (clef . (minimum-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) (meta . ((class . Item) (interfaces . (bar-line-interface break-aligned-interface @@ -215,74 +230,78 @@ (BarNumber . ( - (stencil . ,ly:text-interface::print) - (non-musical . #t) + (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) - (padding . 1.0) (direction . ,UP) (font-family . roman) (font-size . -2) - (Y-offset . ,ly:side-position-interface::y-aligned-side) - (side-axis . ,Y) + (non-musical . #t) (outside-staff-priority . 100) + (padding . 1.0) + (self-alignment-X . ,RIGHT) + (side-axis . ,Y) + (stencil . ,ly:text-interface::print) (X-offset . ,(ly:make-simple-closure `(,+ ,(ly:make-simple-closure (list ly:break-alignable-interface::self-align-callback)) ,(ly:make-simple-closure (list ly:self-alignment-interface::x-aligned-on-self))))) - - (self-alignment-X . ,RIGHT) - - ;; want the bar number before the clef at line start. - (break-align-symbols . (left-edge staff-bar)) + (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Item) - (interfaces . (side-position-interface - text-interface - break-alignable-interface + (interfaces . (break-alignable-interface + font-interface self-alignment-interface - font-interface)))))) + side-position-interface + text-interface)))))) (BassFigure . ( (stencil . ,ly:text-interface::print) (meta . ((class . Item) - (interfaces . (text-interface + (interfaces . (bass-figure-interface + font-interface rhythmic-grob-interface - bass-figure-interface - font-interface)))))) + text-interface)))))) (BassFigureAlignment . ( (axes . (,Y)) - (threshold . (2 . 1000)) - (positioning-done . ,ly:align-interface::calc-positioning-done) - (Y-extent . ,ly:axis-group-interface::height) - (stacking-dir . ,DOWN) (padding . 0.2) + (positioning-done . ,ly:align-interface::align-to-minimum-distances) + (stacking-dir . ,DOWN) + (Y-extent . ,ly: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 . (align-interface - bass-figure-alignment-interface - axis-group-interface)))))) + axis-group-interface + bass-figure-alignment-interface)))))) (BassFigureAlignmentPositioning - . ((Y-offset . ,ly:side-position-interface::y-aligned-side) - (side-axis . ,Y) - (direction . ,UP) - (Y-extent . ,ly:axis-group-interface::height) + . ( (axes . (,Y)) - (staff-padding . 1.0) + (direction . ,UP) (padding . 0.5) + (side-axis . ,Y) + (staff-padding . 1.0) + (Y-extent . ,ly:axis-group-interface::height) + (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Spanner) - (interfaces . (side-position-interface - axis-group-interface)))))) - + (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 + side-position-interface)))))) + (BassFigureBracket . ( + (edge-height . (0.2 . 0.2)) (stencil . ,ly:enclosing-bracket::print) (X-extent . ,ly:enclosing-bracket::width) - (edge-height . (0.2 . 0.2)) (meta . ((class . Item) (interfaces . (enclosing-bracket-interface)))))) @@ -295,11 +314,13 @@ (BassFigureLine . ( + (adjacent-pure-heights . ,ly:axis-group-interface::adjacent-pure-heights) (axes . (,Y)) - (Y-extent . ,ly:axis-group-interface::height) (vertical-skylines . ,ly:axis-group-interface::calc-skylines) - (adjacent-pure-heights . ,ly:axis-group-interface::adjacent-pure-heights) + (Y-extent . ,ly: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)))))) @@ -307,33 +328,10 @@ . ( ;; todo: clean this up a bit: the list is getting ;; rather long. - (gap . 0.8) - (positions . ,(ly:make-simple-closure - (ly:make-simple-closure - (list chain-grob-member-functions - `(,cons 0 0) - ly:beam::calc-least-squares-positions - ly:beam::slope-damping - ly:beam::shift-region-to-valid - ly:beam::quanting - )))) - - ;; this is a hack to set stem lengths, if positions is set. - (quantized-positions . ,ly:beam::set-stem-lengths) - (concaveness . ,ly:beam::calc-concaveness) - (direction . ,ly:beam::calc-direction) - (shorten . ,ly:beam::calc-stem-shorten) - (beaming . ,ly:beam::calc-beaming) - (stencil . ,ly:beam::print) - (clip-edges . #t) - (cross-staff . ,ly:beam::calc-cross-staff) - - (details . ((hint-direction-penalty . 20))) - ;; TODO: should be in SLT. - (thickness . 0.48) ; in staff-space - (neutral-direction . ,DOWN) + (auto-knee-gap . 5.5) + (beam-thickness . 0.48) ; in staff-space - ;; Whe have some unreferenced problems here. + ;; 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 @@ -348,39 +346,94 @@ ;; 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 + inline-accidental-interface + key-signature-interface + note-head-interface + stem-interface + time-signature-interface)) + (concaveness . ,ly:beam::calc-concaveness) + (cross-staff . ,ly:beam::calc-cross-staff) (damping . 1) - (auto-knee-gap . 5.5) + (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) - (meta . ((class . Spanner) - (object-callbacks . ((normal-stems . ,ly:beam::calc-normal-stems))) - (interfaces . (staff-symbol-referencer-interface - unbreakable-spanner-interface - beam-interface - font-interface)))))) - (BendAfter - . ( - (stencil . ,bend::print) + (gap . 0.8) + (neutral-direction . ,DOWN) + (positions . ,(ly:make-simple-closure + (ly:make-simple-closure + (list chain-grob-member-functions + `(,cons 0 0) + ly:beam::calc-least-squares-positions + ly:beam::slope-damping + ly:beam::shift-region-to-valid + ly:beam::quanting + )))) + + ;; 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) + (stencil . ,ly:beam::print) + + (meta . ((class . Spanner) + (object-callbacks . ((normal-stems . ,ly:beam::calc-normal-stems))) + (interfaces . (beam-interface + font-interface + staff-symbol-referencer-interface + unbreakable-spanner-interface)))))) + + (BendAfter + . ( (minimum-length . 0.5) + (stencil . ,bend::print) (thickness . 2.0) (meta . ((class . Spanner) - (interfaces . (spanner-interface - bend-after-interface)))))) + (interfaces . (bend-after-interface + spanner-interface)))))) - (BreakAlignment + (BreakAlignGroup . ( - (non-musical . #t) - (stacking-dir . 1) - (positioning-done . ,ly:break-alignment-interface::calc-positioning-done) + (axes . (,X)) + (break-align-anchor . ,ly:break-aligned-interface::calc-average-anchor) + (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 @@ -390,14 +443,16 @@ ;; unbroken ( left-edge + cue-end-clef ambitus breathing-sign clef + cue-clef staff-bar key-cancellation key-signature - staff - time-signature custos) + time-signature + custos) ;; begin of line ( @@ -409,25 +464,20 @@ key-signature staff-bar time-signature + cue-clef custos))) - (axes . (,X)) - (meta . ((class . Item) - (interfaces . (break-alignment-interface - axis-group-interface)))))) - - (BreakAlignGroup - . ( - (axes . (,X)) + (non-musical . #t) + (positioning-done . ,ly:break-alignment-interface::calc-positioning-done) + (stacking-dir . 1) (X-extent . ,ly:axis-group-interface::width) - (break-align-anchor . ,ly:break-aligned-interface::calc-average-anchor) - (break-visibility . ,ly:break-aligned-interface::calc-break-visibility) (meta . ((class . Item) - (interfaces . (break-aligned-interface - axis-group-interface)))))) + (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)) @@ -436,29 +486,42 @@ (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) - (break-visibility . ,begin-of-line-invisible) (meta . ((class . Item) (interfaces . (break-aligned-interface breathing-sign-interface - text-interface - font-interface)))))) + font-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)) + (word-space . 0.0) + (meta . ((class . Item) + (interfaces . (chord-name-interface + font-interface + rhythmic-grob-interface + text-interface)))))) (Clef . ( - (stencil . ,ly:clef::print) - (glyph-name . ,ly:clef::calc-glyph-name) - (non-musical . #t) (avoid-slur . inside) - (font-family . music) - (break-align-symbol . clef) (break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor) + (break-align-symbol . clef) (break-visibility . ,begin-of-line-visible) - (space-alist . ((ambitus . (extra-space . 2.0)) + (glyph-name . ,ly:clef::calc-glyph-name) + (non-musical . #t) + (space-alist . ((cue-clef . (extra-space . 2.0)) (staff-bar . (extra-space . 0.7)) (key-cancellation . (minimum-space . 3.5)) (key-signature . (minimum-space . 3.5)) @@ -466,123 +529,172 @@ (first-note . (minimum-fixed-space . 5.0)) (next-note . (extra-space . 0.5)) (right-edge . (extra-space . 0.5)))) + (stencil . ,ly:clef::print) (Y-offset . ,ly:staff-symbol-referencer::callback) (meta . ((class . Item) - (interfaces . (clef-interface - staff-symbol-referencer-interface + (interfaces . (break-aligned-interface + clef-interface font-interface - break-aligned-interface)))))) - - (ClusterSpannerBeacon - . ( - (Y-extent . ,ly:cluster-beacon::height) - (meta . ((class . Item) - (interfaces . (rhythmic-grob-interface - cluster-beacon-interface)))))) + staff-symbol-referencer-interface)))))) (ClusterSpanner . ( - (springs-and-rods . ,ly:spanner::set-spacing-rods) - (stencil . ,ly:cluster::print) + (cross-staff . ,ly:cluster::calc-cross-staff) (minimum-length . 0.0) (padding . 0.25) - (cross-staff . ,ly:cluster::calc-cross-staff) + (springs-and-rods . ,ly:spanner::set-spacing-rods) + (stencil . ,ly:cluster::print) (style . ramp) (meta . ((class . Spanner) (interfaces . (cluster-interface)))))) - (ChordName + (ClusterSpannerBeacon . ( - (stencil . ,ly:text-interface::print) - (after-line-breaking . ,ly:chord-name::after-line-breaking) - (word-space . 0.0) - (font-family . sans) - (font-size . 1.5) + (Y-extent . ,ly:cluster-beacon::height) (meta . ((class . Item) - (interfaces . (font-interface - rhythmic-grob-interface - text-interface - chord-name-interface)))))) + (interfaces . (cluster-beacon-interface + rhythmic-grob-interface)))))) (CombineTextScript . ( - (stencil . ,ly:text-interface::print) - (extra-spacing-width . (+inf.0 . -inf.0)) - (Y-offset . ,ly:side-position-interface::y-aligned-side) - (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) + (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) - (staff-padding . 0.5) (script-priority . 200) - ;; todo: add X self alignment? - (baseline-skip . 2) (side-axis . ,Y) - (avoid-slur . outside ) - (font-series . bold) + (staff-padding . 0.5) + ;; todo: add X self alignment? + (stencil . ,ly:text-interface::print) + (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) + (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Item) - (interfaces . (text-script-interface - text-interface + (interfaces . (font-interface side-position-interface - font-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) + (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 . 0.5)) + (right-edge . (extra-space . 0.5)))) + (stencil . ,ly:clef::print) + (Y-offset . ,ly:staff-symbol-referencer::callback) + (meta . ((class . Item) + (interfaces . (break-aligned-interface + clef-interface + font-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) + (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 . 0.5)) + (right-edge . (extra-space . 0.5)))) + (stencil . ,ly:clef::print) + (Y-offset . ,ly:staff-symbol-referencer::callback) + (meta . ((class . Item) + (interfaces . (break-aligned-interface + clef-interface + font-interface + staff-symbol-referencer-interface)))))) (Custos . ( (break-align-symbol . custos) - (non-musical . #t) - (stencil . ,ly:custos::print) (break-visibility . ,end-of-line-visible) - (style . vaticana) (neutral-direction . ,DOWN) - (Y-offset . ,ly:staff-symbol-referencer::callback) + (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 . ,ly:staff-symbol-referencer::callback) (meta . ((class . Item) - (interfaces . (custos-interface - staff-symbol-referencer-interface + (interfaces . (break-aligned-interface + custos-interface font-interface - break-aligned-interface)))))) + staff-symbol-referencer-interface)))))) (DotColumn . ( (axes . (,X)) (direction . ,RIGHT) - (positioning-done . ,ly:dot-column::calc-positioning-done) + (positioning-done . ,ly:dot-column::calc-positioning-done) (X-extent . ,ly:axis-group-interface::width) (meta . ((class . Item) - (interfaces . (dot-column-interface - axis-group-interface)))))) + (interfaces . (axis-group-interface + dot-column-interface)))))) (Dots . ( - (stencil . ,ly:dots::print) (dot-count . ,dots::calc-dot-count) (staff-position . ,dots::calc-staff-position) + (stencil . ,ly:dots::print) + (extra-spacing-height . (-0.5 . 0.5)) (meta . ((class . Item) - (interfaces . (font-interface - staff-symbol-referencer-interface - dots-interface)))))) + (interfaces . (dots-interface + font-interface + staff-symbol-referencer-interface)))))) (DoublePercentRepeat . ( - (stencil . ,ly:percent-repeat-item-interface::double-percent) - (non-musical . #t) - (slope . 1.0) + (break-align-symbol . staff-bar) + (break-visibility . ,begin-of-line-invisible) (dot-negative-kern . 0.75) - (slash-negative-kern . 1.6) (font-encoding . fetaMusic) - (width . 2.0) + (non-musical . #t) + (slash-negative-kern . 1.6) + (slope . 1.0) + (stencil . ,ly:percent-repeat-item-interface::double-percent) (thickness . 0.48) - (break-align-symbol . staff-bar) - (break-visibility . ,begin-of-line-invisible) (meta . ((class . Item) - (interfaces . (font-interface - break-aligned-interface + (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) + (self-alignment-X . ,CENTER) + (side-axis . ,Y) + (staff-padding . 0.25) (stencil . ,ly:text-interface::print) (X-offset . ,(ly:make-simple-closure `(,+ @@ -591,36 +703,45 @@ ,(ly:make-simple-closure (list ly:self-alignment-interface::x-aligned-on-self))))) (Y-offset . ,ly:side-position-interface::y-aligned-side) - (font-encoding . fetaNumber) - (self-alignment-X . ,CENTER) - (font-size . -2) - (direction . ,UP) - (padding . 0.2) - (staff-padding . 0.25) - (side-axis . ,Y) (meta . ((class . Item) - (interfaces . (side-position-interface - self-alignment-interface - percent-repeat-item-interface + (interfaces . (font-interface percent-repeat-interface - font-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) + (thickness . 0.48) + (meta . ((class . Item) + (interfaces . (font-interface + percent-repeat-interface + percent-repeat-item-interface + rhythmic-grob-interface)))))) + (DynamicLineSpanner . ( (axes . (,Y)) - (Y-offset . ,ly:side-position-interface::y-aligned-side) - (staff-padding . 0.1) - (padding . 0.6) - (slur-padding . 0.3) - (minimum-space . 1.2) + (cross-staff . ,ly:side-position-interface::calc-cross-staff) (direction . ,DOWN) - (side-axis . ,Y) + (minimum-space . 1.2) (outside-staff-priority . 250) - (Y-extent . ,ly:axis-group-interface::height) + (padding . 0.6) + (side-axis . ,Y) + (slur-padding . 0.3) + (staff-padding . 0.1) (X-extent . ,ly:axis-group-interface::width) - (cross-staff . ,ly:side-position-interface::calc-cross-staff) + (Y-extent . ,ly:axis-group-interface::height) + (Y-offset . ,ly: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 @@ -631,35 +752,30 @@ ;; todo. - (stencil . ,ly:text-interface::print) (direction . ,ly:script-interface::calc-direction) - (positioning-done . ,ly:script-interface::calc-positioning-done) - - (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) - (self-alignment-X . ,CENTER) - (Y-offset . ,ly:self-alignment-interface::y-aligned-on-self) - (self-alignment-Y . ,CENTER) + (extra-spacing-width . (+inf.0 . -inf.0)) + (font-encoding . fetaText) (font-series . bold) - (font-encoding . fetaDynamic) (font-shape . italic) - (extra-spacing-width . (+inf.0 . -inf.0)) (outside-staff-priority . 250) + (positioning-done . ,ly:script-interface::calc-positioning-done) + (right-padding . 0.5) + (self-alignment-X . ,CENTER) + (self-alignment-Y . ,CENTER) + (stencil . ,ly:text-interface::print) + (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) + (Y-offset . ,ly:self-alignment-interface::y-aligned-on-self) (meta . ((class . Item) - (interfaces . (font-interface - text-interface + (interfaces . (dynamic-interface + dynamic-text-interface + font-interface + script-interface self-alignment-interface - dynamic-interface - script-interface)))))) + text-interface)))))) (DynamicTextSpanner . ( - ;; rather ugh with NCSB - ;; (font-series . bold) - (font-shape . italic) - (style . dashed-line) - - ;; make sure the spanner doesn't get too close to notes - (minimum-Y-extent . (-1 . 1)) + (before-line-breaking . ,dynamic-text-spanner::before-line-breaking) (bound-details . ((right . ((attach-dir . ,LEFT) (Y . 0) (padding . 0.75) @@ -667,76 +783,150 @@ (right-broken . ((attach-dir . ,RIGHT) (padding . 0.0) )) - + (left . ((attach-dir . ,LEFT) (Y . 0) - (stencil-offset . (0 . -0.5)) - (padding . 0.5) + (stencil-offset . (-0.75 . -0.5)) + (padding . 0.75) )) (left-broken . ((attach-dir . ,RIGHT) )) )) - (stencil . ,ly:line-spanner::print) - (left-bound-info . ,ly:line-spanner::calc-left-bound-info-and-text) - (right-bound-info . ,ly:line-spanner::calc-right-bound-info) + (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) - (dash-fraction . 0.2) - (dash-period . 3.0) + + (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) + (springs-and-rods . ,ly:spanner::set-spacing-rods) + (stencil . ,ly:line-spanner::print) + (style . dashed-line) (meta . ((class . Spanner) - (interfaces . (font-interface - text-interface + (interfaces . (dynamic-interface + dynamic-text-spanner-interface + font-interface + line-interface line-spanner-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 . ,ly:side-position-interface::y-aligned-side) + (meta . ((class . Spanner) + (interfaces . (episema-interface + font-interface line-interface - dynamic-interface - dynamic-text-spanner-interface - spanner-interface)))))) + line-spanner-interface + side-position-interface)))))) + - (Fingering . ( ;; sync with TextScript (?) - (padding . 0.5) (avoid-slur . around) - (slur-padding . 0.2) - (staff-padding . 0.5) + (cross-staff . ,ly:side-position-interface::calc-cross-staff) + (direction . ,ly:script-interface::calc-direction) + (font-encoding . fetaText) + (font-size . -5) ; don't overlap when next to heads. + (padding . 0.5) + (positioning-done . ,ly:script-interface::calc-positioning-done) + (script-priority . 100) (self-alignment-X . ,CENTER) (self-alignment-Y . ,CENTER) - (script-priority . 100) + (slur-padding . 0.2) + (staff-padding . 0.5) (stencil . ,ly:text-interface::print) - (direction . ,ly:script-interface::calc-direction) - (positioning-done . ,ly:script-interface::calc-positioning-done) - (cross-staff . ,ly:side-position-interface::calc-cross-staff) - - (text . ,fingering::calc-text) - (font-encoding . fetaNumber) - (font-size . -5) ; don't overlap when next to heads. + (text . ,fingering::calc-text) (meta . ((class . Item) (interfaces . (finger-interface font-interface - text-script-interface - text-interface + self-alignment-interface side-position-interface - self-alignment-interface)))))) + text-interface + text-script-interface)))))) + + (FootnoteItem + . ( + (annotation-balloon . #f) + (annotation-line . #t) + (break-visibility . ,inherit-y-parent-visibility) + (footnote-text . ,(grob::calc-property-by-copy 'footnote-text)) + (stencil . ,ly:balloon-interface::print) + (text . ,(grob::calc-property-by-copy 'text)) + (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) + (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)) + (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 - . ((stencil . ,fret-board::calc-stencil) + . ( + (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)) (meta . ((class . Item) - (interfaces . (fret-diagram-interface - font-interface)))))) + (interfaces . (chord-name-interface + font-interface + fret-diagram-interface + rhythmic-grob-interface)))))) (Glissando . ( - (style . line) - (gap . 0.5) - (zigzag-width . 0.75) - (X-extent . #f) - (Y-extent . #f) + (after-line-breaking . ,ly:spanner::kill-zero-spanned-time) (bound-details . ((right . ((attach-dir . ,CENTER) (padding . 1.5) )) @@ -744,216 +934,231 @@ (padding . 1.5) )) )) - (stencil . ,ly:line-spanner::print) + (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) + (stencil . ,ly:line-spanner::print) + (style . line) + (X-extent . #f) + (Y-extent . #f) + (zigzag-width . 0.75) (meta . ((class . Spanner) - (interfaces . (line-interface - unbreakable-spanner-interface - line-spanner-interface)))))) + (interfaces . (glissando-interface + line-interface + line-spanner-interface + unbreakable-spanner-interface)))))) (GraceSpacing . ( (common-shortest-duration . ,grace-spacing::calc-shortest-duration) - (spacing-increment . 0.8) (shortest-duration-space . 1.6) + (spacing-increment . 0.8) (meta . ((class . Spanner) (interfaces . (grace-spacing-interface spacing-options-interface spanner-interface)))))) - (GridPoint - . ( - (X-extent . (0 . 0)) - (Y-extent . (0 . 0)) - (meta . ((class . Item) - (interfaces . (grid-point-interface)))))) - (GridLine . ( - (X-extent . ,ly:grid-line-interface::width) - (stencil . ,ly:grid-line-interface::print) + (layer . 0) (self-alignment-X . ,CENTER) + (stencil . ,ly:grid-line-interface::print) + (X-extent . ,ly:grid-line-interface::width) (X-offset . ,(ly:make-simple-closure `(,+ ,(ly:make-simple-closure (list ly:self-alignment-interface::centered-on-x-parent)) ,(ly:make-simple-closure (list ly:self-alignment-interface::x-aligned-on-self))))) - (layer . 0) (meta . ((class . Item) - (interfaces . (self-alignment-interface - grid-line-interface)))))) + (interfaces . (grid-line-interface + self-alignment-interface)))))) + + (GridPoint + . ( + (X-extent . (0 . 0)) + (Y-extent . (0 . 0)) + (meta . ((class . Item) + (interfaces . (grid-point-interface)))))) (Hairpin . ( - (stencil . ,ly:hairpin::print) - (springs-and-rods . ,ly:spanner::set-spacing-rods) - (after-line-breaking . ,ly:hairpin::after-line-breaking) - (grow-direction . ,hairpin::calc-grow-direction) + (after-line-breaking . ,ly:spanner::kill-zero-spanned-time) + (bound-padding . 1.0) (circled-tip . #f) - (to-barline . #t) - (thickness . 1.0) + (grow-direction . ,hairpin::calc-grow-direction) (height . 0.6666) (minimum-length . 2.0) - (bound-padding . 1.0) (self-alignment-Y . ,CENTER) + (springs-and-rods . ,ly:spanner::set-spacing-rods) + (stencil . ,ly:hairpin::print) + (thickness . 1.0) + (to-barline . #t) (Y-offset . ,ly:self-alignment-interface::y-aligned-on-self) (meta . ((class . Spanner) - (interfaces . (hairpin-interface + (interfaces . (dynamic-interface + hairpin-interface line-interface self-alignment-interface - dynamic-interface spanner-interface)))))) (HorizontalBracket . ( - (thickness . 1.0) - (stencil . ,ly:horizontal-bracket::print) - (Y-offset . ,ly:side-position-interface::y-aligned-side) + (bracket-flare . (0.5 . 0.5)) (connect-to-neighbor . ,ly:tuplet-bracket::calc-connect-to-neighbors) - - (padding . 0.2) - (staff-padding . 0.2) (direction . ,DOWN) + (padding . 0.2) (side-axis . ,Y) - (bracket-flare . (0.5 . 0.5)) + (staff-padding . 0.2) + (stencil . ,ly:horizontal-bracket::print) + (thickness . 1.0) + (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Spanner) (interfaces . (horizontal-bracket-interface - side-position-interface line-interface + side-position-interface spanner-interface)))))) (InstrumentName . ( - (padding . 0.3) - (stencil . ,ly:system-start-text::print) - (X-offset . ,ly:side-position-interface::x-aligned-side) (direction . ,LEFT) - (self-alignment-Y . ,CENTER) + (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 . (system-start-text-interface - side-position-interface + (interfaces . (font-interface self-alignment-interface - font-interface)))))) + side-position-interface + system-start-text-interface)))))) (InstrumentSwitch . ( + (direction . ,UP) + (extra-spacing-width . (+inf.0 . -inf.0)) + (outside-staff-priority . 500) (padding . 0.5) + (self-alignment-X . ,LEFT) + (side-axis . ,Y) + (staff-padding . 0.5) (stencil . ,ly:text-interface::print) - (Y-offset . ,ly:side-position-interface::y-aligned-side) (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) - (staff-padding . 0.5) - (direction . ,UP) - (side-axis . ,Y) - (self-alignment-X . ,LEFT) - (outside-staff-priority . 500) - (extra-spacing-width . (+inf.0 . -inf.0)) + (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Item) - (interfaces . (side-position-interface + (interfaces . (font-interface self-alignment-interface - text-interface - font-interface)))))) + side-position-interface + text-interface)))))) + - (KeyCancellation . ( - (stencil . ,ly:key-signature-interface::print) + (break-align-symbol . key-cancellation) + (break-visibility . ,begin-of-line-invisible) (glyph-name-alist . ,cancellation-glyph-name-alist) + (non-musical . #t) (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)))) + (stencil . ,ly:key-signature-interface::print) + (extra-spacing-width . (0.0 . 0.5)) (Y-offset . ,ly:staff-symbol-referencer::callback) - (break-align-symbol . key-cancellation) - (break-visibility . ,begin-of-line-invisible) - (non-musical . #t) (meta . ((class . Item) - (interfaces . (key-cancellation-interface - key-signature-interface - staff-symbol-referencer-interface + (interfaces . (break-aligned-interface font-interface - break-aligned-interface)))))) + key-cancellation-interface + key-signature-interface + staff-symbol-referencer-interface)))))) (KeySignature . ( - (stencil . ,ly:key-signature-interface::print) (avoid-slur . inside) + (break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor) + (break-align-symbol . key-signature) + (break-visibility . ,begin-of-line-visible) (glyph-name-alist . ,standard-alteration-glyph-name-alist) + (non-musical . #t) (space-alist . ( (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) + (extra-spacing-width . (0.0 . 0.5)) (Y-offset . ,ly:staff-symbol-referencer::callback) - (break-align-symbol . key-signature) - (break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor) - (break-visibility . ,begin-of-line-visible) - (non-musical . #t) (meta . ((class . Item) - (interfaces . (key-signature-interface - staff-symbol-referencer-interface + (interfaces . (break-aligned-interface font-interface - break-aligned-interface)))))) - - + key-signature-interface + staff-symbol-referencer-interface)))))) + + (LaissezVibrerTie . ( - (stencil . ,ly:tie::print) (control-points . ,ly:semi-tie::calc-control-points) - (direction . ,ly:tie::calc-direction) (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)) (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) - (head-direction . ,LEFT) - (positioning-done . ,ly:semi-tie-column::calc-positioning-done) (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) (X-extent . #f) (Y-extent . #f) - (minimum-length-fraction . 0.25) - (length-fraction . 0.25) - (layer . 0) (meta . ((class . Spanner) (interfaces . (ledger-line-spanner-interface)))))) (LeftEdge . ( - (break-align-symbol . left-edge) (break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor) - (X-extent . (0 . 0)) - (non-musical . #t) + (break-align-symbol . left-edge) (break-visibility . ,center-invisible) + (non-musical . #t) + (extra-spacing-height . (+inf.0 . -inf.0)) (space-alist . ( - (custos . (extra-space . 0.0)) (ambitus . (extra-space . 2.0)) - (time-signature . (extra-space . 1.0)) - (staff-bar . (extra-space . 0.0)) (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)) - (key-signature . (extra-space . 0.0)) - (key-cancellation . (extra-space . 0.0)) )) + (X-extent . (0 . 0)) (meta . ((class . Item) (interfaces . (break-aligned-interface)))))) @@ -962,89 +1167,94 @@ ;; ugh. A ligature bracket is totally different from ;; a tuplet bracket. - (padding . 2.0) - (thickness . 1.6) - (edge-height . (0.7 . 0.7)) - (shorten-pair . (-0.2 . -0.2)) + (connect-to-neighbor . ,ly:tuplet-bracket::calc-connect-to-neighbors) + (control-points . ,ly:tuplet-bracket::calc-control-points) (direction . ,UP) + (edge-height . (0.7 . 0.7)) + (padding . 2.0) (positions . ,ly:tuplet-bracket::calc-positions) - (stencil . ,ly:tuplet-bracket::print) + (shorten-pair . (-0.2 . -0.2)) (staff-padding . 0.25) - (connect-to-neighbor . ,ly:tuplet-bracket::calc-connect-to-neighbors) - (control-points . ,ly:tuplet-bracket::calc-control-points) + (stencil . ,ly:tuplet-bracket::print) + (thickness . 1.6) (meta . ((class . Spanner) (interfaces . (line-interface tuplet-bracket-interface)))))) (LyricExtender . ( + (minimum-length . 1.5) (stencil . ,ly:lyric-extender::print) (thickness . 0.8) ; line-thickness - (minimum-length . 1.5) (Y-extent . (0 . 0)) (meta . ((class . Spanner) - (interfaces . (lyric-interface - lyric-extender-interface)))))) + (interfaces . (lyric-extender-interface + lyric-interface)))))) (LyricHyphen . ( - (thickness . 1.3) - (height . 0.42) + (after-line-breaking . ,ly:spanner::kill-zero-spanned-time) (dash-period . 10.0) + (height . 0.42) (length . 0.66) - (minimum-length . 0.3) (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) + (thickness . 1.3) (Y-extent . (0 . 0)) (meta . ((class . Spanner) - (interfaces . (lyric-interface - font-interface + (interfaces . (font-interface lyric-hyphen-interface + lyric-interface spanner-interface)))))) (LyricSpace - . ((minimum-distance . 0.45) - (springs-and-rods . ,ly:lyric-hyphen::set-spacing-rods) + . ( + (minimum-distance . 0.45) (padding . 0.0) - (Y-extent . #f) + (springs-and-rods . ,ly:lyric-hyphen::set-spacing-rods) (X-extent . #f) + (Y-extent . #f) (meta . ((class . Spanner) - (interfaces . (spanner-interface - lyric-hyphen-interface)))))) - + (interfaces . (lyric-hyphen-interface + spanner-interface)))))) + (LyricText . ( - (stencil . ,lyric-text::print) - (text . ,(grob::calc-property-by-copy 'text)) - (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) + (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) (self-alignment-X . ,CENTER) + (stencil . ,lyric-text::print) + (text . ,(grob::calc-property-by-copy 'text)) (word-space . 0.6) - (font-series . bold-narrow) - (font-size . 1.0) - (extra-spacing-width . (0.0 . 0.0)) + (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (meta . ((class . Item) - (interfaces . (rhythmic-grob-interface + (interfaces . (font-interface lyric-syllable-interface + rhythmic-grob-interface self-alignment-interface - text-interface - font-interface)))))) + text-interface)))))) (MeasureGrouping . ( - (Y-offset . ,ly:side-position-interface::y-aligned-side) - (side-axis . ,Y) - (stencil . ,ly:measure-grouping::print) - (padding . 2) (direction . ,UP) - (thickness . 1) (height . 2.0) + (padding . 2) + (side-axis . ,Y) (staff-padding . 3) + (stencil . ,ly:measure-grouping::print) + (thickness . 1) + (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Spanner) - (interfaces . (side-position-interface - measure-grouping-interface)))))) + (interfaces . (measure-grouping-interface + side-position-interface)))))) (MelodyItem . ( @@ -1054,49 +1264,68 @@ (MensuralLigature . ( - (thickness . 1.4) - (flexa-width . 2.0) (stencil . ,ly:mensural-ligature::print) + (thickness . 1.4) (meta . ((class . Spanner) - (interfaces . (mensural-ligature-interface - font-interface)))))) + (interfaces . (font-interface + mensural-ligature-interface)))))) (MetronomeMark . ( - (stencil . ,ly:text-interface::print) - (Y-offset . ,ly:side-position-interface::y-aligned-side) + (after-line-breaking . ,ly:side-position-interface::move-to-extremal-staff) + (break-visibility . ,end-of-line-invisible) (direction . ,UP) - (padding . 0.8) - (side-axis . ,Y) (extra-spacing-width . (+inf.0 . -inf.0)) (outside-staff-priority . 1000) + (padding . 0.8) + (side-axis . ,Y) + (stencil . ,ly:text-interface::print) + (Y-offset . ,ly:side-position-interface::y-aligned-side) + (X-offset . ,(ly:make-simple-closure + `(,+ + ,(ly:make-simple-closure + (list ly:break-alignable-interface::self-align-callback)) + ,(ly:make-simple-closure + (list ly:self-alignment-interface::x-aligned-on-self))))) + (self-alignment-X . ,LEFT) + (break-align-symbols . (time-signature)) + (non-break-align-symbols . (multi-measure-rest-interface)) (meta . ((class . Item) - (interfaces . (text-interface - side-position-interface + (interfaces . (break-alignable-interface font-interface - metronome-mark-interface)))))) + metronome-mark-interface + self-alignment-interface + side-position-interface + text-interface)))))) (MultiMeasureRest . ( - (stencil . ,ly:multi-measure-rest::print) - (springs-and-rods . ,ly:multi-measure-rest::set-spacing-rods) - (Y-offset . ,ly:staff-symbol-referencer::callback) - (staff-position . 0) (expand-limit . 10) - (thick-thickness . 6.6) (hair-thickness . 2.0) (padding . 1) + (spacing-pair . (break-alignment . break-alignment)) + (springs-and-rods . ,ly:multi-measure-rest::set-spacing-rods) + (staff-position . 0) + (stencil . ,ly:multi-measure-rest::print) + (thick-thickness . 6.6) + (Y-offset . ,ly:staff-symbol-referencer::callback) (meta . ((class . Spanner) - (interfaces . (multi-measure-rest-interface + (interfaces . (font-interface multi-measure-interface + multi-measure-rest-interface rest-interface - font-interface staff-symbol-referencer-interface)))))) (MultiMeasureRestNumber . ( (bound-padding . 2.0) + (direction . ,UP) + (font-encoding . fetaText) + (padding . 0.4) + (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) (X-offset . ,(ly:make-simple-closure `(,+ @@ -1105,21 +1334,20 @@ ,(ly:make-simple-closure (list ly:self-alignment-interface::x-centered-on-y-parent))))) (Y-offset . ,ly:side-position-interface::y-aligned-side) - (side-axis . ,Y) - (self-alignment-X . ,CENTER) - (direction . ,UP) - (padding . 0.4) - (staff-padding . 0.4) - (font-encoding . fetaNumber) (meta . ((class . Spanner) - (interfaces . (side-position-interface + (interfaces . (font-interface multi-measure-interface self-alignment-interface - font-interface + side-position-interface text-interface)))))) (MultiMeasureRestText . ( + (direction . ,UP) + (outside-staff-priority . 450) + (padding . 0.2) + (self-alignment-X . ,CENTER) + (staff-padding . 0.25) (stencil . ,ly:text-interface::print) (X-offset . ,(ly:make-simple-closure `(,+ @@ -1128,16 +1356,11 @@ ,(ly:make-simple-closure (list ly:self-alignment-interface::x-aligned-on-self))))) (Y-offset . ,ly:side-position-interface::y-aligned-side) - (self-alignment-X . ,CENTER) - (direction . ,UP) - (padding . 0.2) - (staff-padding . 0.25) - (outside-staff-priority . 450) (meta . ((class . Spanner) - (interfaces . (side-position-interface + (interfaces . (font-interface multi-measure-interface self-alignment-interface - font-interface + side-position-interface text-interface)))))) @@ -1146,194 +1369,198 @@ (allow-loose-spacing . #t) (axes . (,X)) (before-line-breaking . ,ly:paper-column::before-line-breaking) - (X-extent . ,ly:axis-group-interface::width) + (full-measure-extra-space . 1.0) (horizontal-skylines . ,ly:separation-item::calc-skylines) + ;; sufficient padding to prevent ledger lines from moving over/under + (skyline-vertical-padding . 0.6) ;; (stencil . ,ly:paper-column::print) - - (non-musical . #t) + + (keep-inside-line . #t) (line-break-permission . allow) + (non-musical . #t) (page-break-permission . allow) - (full-measure-extra-space . 1.0) ;; debugging stuff: print column number. ;; (font-size . -6) (font-name . "sans") (Y-extent . #f) + (X-extent . ,ly:axis-group-interface::width) (meta . ((class . Paper_column) - (interfaces . (paper-column-interface - axis-group-interface + (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 - font-interface)))))) + spaceable-grob-interface)))))) (NoteCollision . ( (axes . (,X ,Y)) + (positioning-done . ,ly:note-collision-interface::calc-positioning-done) + (prefer-dotted-right . #t) (X-extent . ,ly:axis-group-interface::width) (Y-extent . ,ly:axis-group-interface::height) - (prefer-dotted-right . #t) - (positioning-done . ,ly:note-collision-interface::calc-positioning-done) (meta . ((class . Item) - (interfaces . (note-collision-interface - axis-group-interface)))))) + (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)) + (horizontal-skylines . ,ly:separation-item::calc-skylines) + (skyline-vertical-padding . 0.15) (X-extent . ,ly:axis-group-interface::width) (Y-extent . ,ly:axis-group-interface::height) - (horizontal-skylines . ,ly:separation-item::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 - separation-item-interface - note-column-interface)))))) + note-column-interface + separation-item-interface)))))) (NoteHead . ( - (stencil . ,ly:note-head::print) + (flexa-width . 2.0) (duration-log . ,note-head::calc-duration-log) - (stem-attachment . ,ly:note-head::calc-stem-attachment) + (extra-spacing-height . ,ly:note-head::include-ledger-line-height) (glyph-name . ,note-head::calc-glyph-name) - (Y-offset . ,ly:staff-symbol-referencer::callback) + (ligature-flexa . #f) + (stem-attachment . ,ly:note-head::calc-stem-attachment) + (stencil . ,ly:note-head::print) (X-offset . ,ly:note-head::stem-x-shift) + (Y-offset . ,ly:staff-symbol-referencer::callback) (meta . ((class . Item) - (interfaces . (rhythmic-grob-interface - rhythmic-head-interface - font-interface - note-head-interface - ledgered-interface - staff-symbol-referencer-interface + (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) + (meta . ((class . Item) + (interfaces . (font-interface + note-name-interface + text-interface)))))) + (NoteSpacing . ( - (stem-spacing-correction . 0.5) - (same-direction-correction . 0.25) - (space-to-barline . #t) ;; 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 . (spacing-interface - note-spacing-interface)))))) - - (NoteName - . ( - (stencil . ,ly:text-interface::print) - (meta . ((class . Item) - (interfaces . (note-name-interface - text-interface - font-interface)))))) + (interfaces . (note-spacing-interface + spacing-interface)))))) (OctavateEight . ( + (break-visibility . ,inherit-x-parent-visibility) + (font-shape . italic) + (font-size . -4) (self-alignment-X . ,CENTER) - (break-visibility . ,begin-of-line-visible) + (staff-padding . 0.2) + (stencil . ,ly:text-interface::print) (X-offset . ,(ly:make-simple-closure `(,+ ,(ly:make-simple-closure (list ly:self-alignment-interface::x-aligned-on-self)) ,(ly:make-simple-closure - (list ly:self-alignment-interface::centered-on-x-parent))))) + (list ly:self-alignment-interface::centered-on-x-parent))))) (Y-offset . ,ly:side-position-interface::y-aligned-side) - (stencil . ,ly:text-interface::print) - (font-shape . italic) - (staff-padding . 0.2) - (font-size . -4) (meta . ((class . Item) - (interfaces . (text-interface + (interfaces . (font-interface self-alignment-interface side-position-interface - font-interface)))))) + text-interface)))))) (OttavaBracket . ( - (Y-offset . ,ly:side-position-interface::y-aligned-side) - (stencil . ,ly:ottava-bracket::print) + (dash-fraction . 0.3) + (direction . ,UP) + (edge-height . (0 . 1.2)) (font-shape . italic) + (minimum-length . 1.0) + (outside-staff-priority . 400) + (padding . 0.5) (shorten-pair . (0.0 . -0.6)) (staff-padding . 1.0) - (padding . 0.5) - (minimum-length . 1.0) + (stencil . ,ly:ottava-bracket::print) (style . dashed-line) - (dash-fraction . 0.3) - (edge-height . (0 . 1.2)) - (direction . ,UP) - (outside-staff-priority . 400) + (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Spanner) - (interfaces . (ottava-bracket-interface + (interfaces . (font-interface horizontal-bracket-interface line-interface + ottava-bracket-interface side-position-interface - font-interface text-interface)))))) (PaperColumn . ( - (axes . (,X)) (allow-loose-spacing . #t) + (axes . (,X)) (before-line-breaking . ,ly:paper-column::before-line-breaking) (horizontal-skylines . ,ly:separation-item::calc-skylines) + (keep-inside-line . #t) ;; (stencil . ,ly:paper-column::print) (X-extent . ,ly:axis-group-interface::width) - + ;; debugging ;; (font-size . -6) (font-name . "sans") (Y-extent . #f) (meta . ((class . Paper_column) - (interfaces . (paper-column-interface + (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 - axis-group-interface - spaceable-grob-interface - font-interface)))))) + spaceable-grob-interface)))))) (ParenthesesItem - . ((stencil . ,parentheses-item::print) - (stencils . ,parentheses-item::calc-parenthesis-stencils) + . ( (font-size . -6) (padding . 0.2) + (stencil . ,parentheses-item::print) + (stencils . ,parentheses-item::calc-parenthesis-stencils) (meta . ((class . Item) - (interfaces . (parentheses-interface font-interface)))))) - - (HarmonicParenthesesItem - . ((stencil . ,parentheses-item::print) - (padding . 0) - (stencils . ,parentheses-item::calc-angled-bracket-stencils) - (meta . ((class . Item) - (interfaces . (parentheses-interface font-interface)))))) - - (PhrasingSlur - . ((details . ,default-slur-details) - (control-points . ,ly:slur::calc-control-points) - (direction . ,ly:slur::calc-direction) - (springs-and-rods . ,ly:spanner::set-spacing-rods) - (Y-extent . ,ly:slur::height) - (stencil . ,ly:slur::print) - (thickness . 1.1) - (minimum-length . 1.5) - (height-limit . 2.0) - (ratio . 0.333) - (cross-staff . ,ly:slur::calc-cross-staff) - (meta . ((class . Spanner) - (interfaces . (slur-interface)))))) + (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) - (slope . 1.0) (thickness . 0.48) - (dot-negative-kern . 0.75) - (font-encoding . fetaMusic) (meta . ((class . Spanner) - (interfaces . (multi-measure-rest-interface - font-interface + (interfaces . (font-interface + multi-measure-rest-interface percent-repeat-interface)))))) (PercentRepeatCounter . ( + (direction . ,UP) + (font-encoding . fetaText) + (font-size . -2) + (padding . 0.2) + (self-alignment-X . ,CENTER) + (staff-padding . 0.25) (stencil . ,ly:text-interface::print) (X-offset . ,(ly:make-simple-closure `(,+ @@ -1342,38 +1569,60 @@ ,(ly:make-simple-closure (list ly:self-alignment-interface::x-aligned-on-self))))) (Y-offset . ,ly:side-position-interface::y-aligned-side) - (self-alignment-X . ,CENTER) - (direction . ,UP) - (padding . 0.2) - (staff-padding . 0.25) - (font-size . -2) - (font-encoding . fetaNumber) (meta . ((class . Spanner) - (interfaces . (side-position-interface - self-alignment-interface + (interfaces . (font-interface percent-repeat-interface - font-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) + (spanner-id . "") + (springs-and-rods . ,ly:spanner::set-spacing-rods) + (stencil . ,ly:slur::print) + (thickness . 1.1) + (Y-extent . ,ly:slur::height) + (meta . ((class . Spanner) + (interfaces . (slur-interface)))))) + ;; an example of a text spanner (PianoPedalBracket . ( - (stencil . ,ly:piano-pedal-bracket::print) - (style . line) (bound-padding . 1.0) - (direction . ,DOWN) (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) (meta . ((class . Spanner) (interfaces . (line-interface - piano-pedal-interface - piano-pedal-bracket-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 clef)) + (break-visibility . ,end-of-line-invisible) + (direction . ,UP) + (extra-spacing-width . (+inf.0 . -inf.0)) + (font-size . 2) + (non-musical . #t) + (outside-staff-priority . 1500) + (padding . 0.8) + (self-alignment-X . ,CENTER) (stencil . ,ly:text-interface::print) (X-offset . ,(ly:make-simple-closure `(,+ @@ -1382,72 +1631,63 @@ ,(ly:make-simple-closure (list ly:self-alignment-interface::x-aligned-on-self))))) (Y-offset . ,ly:side-position-interface::y-aligned-side) - (extra-spacing-width . (+inf.0 . -inf.0)) - (self-alignment-X . ,CENTER) - (direction . ,UP) - (non-musical . #t) - (font-size . 2) - (baseline-skip . 2) - (break-visibility . ,end-of-line-invisible) - (break-align-symbols . (staff-bar clef)) - (padding . 0.8) - (outside-staff-priority . 1500) (meta . ((class . Item) - (interfaces . (text-interface - side-position-interface - break-alignable-interface + (interfaces . (break-alignable-interface font-interface mark-interface - self-alignment-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) (thickness . 0.48) - (slope . 1.7) (meta . ((class . Item) - (interfaces . (rhythmic-grob-interface - percent-repeat-interface - percent-repeat-item-interface)))))) + (interfaces . (percent-repeat-interface + percent-repeat-item-interface + rhythmic-grob-interface)))))) (RepeatTie . ( - (stencil . ,ly:tie::print) (control-points . ,ly:semi-tie::calc-control-points) - (direction . ,ly:tie::calc-direction) (details . ((ratio . 0.333) (height-limit . 1.0))) - (thickness . 1.0) + (direction . ,ly:tie::calc-direction) (head-direction . ,RIGHT) + (stencil . ,ly:tie::print) + (thickness . 1.0) + (extra-spacing-height . (-0.5 . 0.5)) (meta . ((class . Item) (interfaces . (semi-tie-interface)))))) (RepeatTieColumn . ( - (X-extent . #f) - (Y-extent . #f) (direction . ,ly:tie::calc-direction) (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 . ( - (stencil . ,ly:rest::print) + (cross-staff . ,ly:rest::calc-cross-staff) (duration-log . ,stem::calc-duration-log) + (minimum-distance . 0.25) + (stencil . ,ly:rest::print) (X-extent . ,ly:rest::width) (Y-extent . ,ly:rest::height) (Y-offset . ,ly:rest::y-offset-callback) - (minimum-distance . 0.25) - (cross-staff . ,ly:rest::calc-cross-staff) (meta . ((class . Item) (interfaces . (font-interface - rhythmic-head-interface + rest-interface rhythmic-grob-interface - staff-symbol-referencer-interface - rest-interface)))))) + rhythmic-head-interface + staff-symbol-referencer-interface)))))) (RestCollision . ( @@ -1459,23 +1699,23 @@ (Script . ( - ;; don't set direction here: it breaks staccato. + (add-stem-support . #t) + (cross-staff . ,ly:script-interface::calc-cross-staff) + (direction . ,ly:script-interface::calc-direction) + (font-encoding . fetaMusic) + (positioning-done . ,ly:script-interface::calc-positioning-done) + (side-axis . ,Y) ;; padding set in script definitions. (staff-padding . 0.25) - (X-offset . ,script-interface::calc-x-offset) - (Y-offset . ,ly:side-position-interface::y-aligned-side) - (side-axis . ,Y) (stencil . ,ly:script-interface::print) - (direction . ,ly:script-interface::calc-direction) - (positioning-done . ,ly:script-interface::calc-positioning-done) - (font-encoding . fetaMusic) - (cross-staff . ,ly:script-interface::calc-cross-staff) + (X-offset . ,script-interface::calc-x-offset) + (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Item) - (interfaces . (script-interface - side-position-interface - font-interface)))))) + (interfaces . (font-interface + script-interface + side-position-interface)))))) (ScriptColumn . ( @@ -1489,96 +1729,81 @@ (meta . ((class . Item) (interfaces . (script-column-interface)))))) - (SeparationItem - . ( - (avoid-slur . inside) - (X-extent . ,ly:axis-group-interface::width) - (Y-extent . ,ly:axis-group-interface::height) - (horizontal-skylines . ,ly:separation-item::calc-skylines) - (stencil . ,ly:separation-item::print) - (meta . ((class . Item) - (interfaces . (separation-item-interface)))))) - (Slur . ( - (details . ,default-slur-details) + (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) - (springs-and-rods . ,ly:spanner::set-spacing-rods) - (Y-extent . ,ly:slur::height) - (stencil . ,ly:slur::print) - (thickness . 1.2) + (height-limit . 2.0) (line-thickness . 0.8) (minimum-length . 1.5) - (height-limit . 2.0) (ratio . 0.25) - (avoid-slur . inside) - (cross-staff . ,ly:slur::calc-cross-staff) + (spanner-id . "") + (springs-and-rods . ,ly:spanner::set-spacing-rods) + (stencil . ,ly:slur::print) + (thickness . 1.2) + (Y-extent . ,ly:slur::height) (meta . ((class . Spanner) (interfaces . (slur-interface)))))) (SostenutoPedal . ( - (stencil . ,ly:text-interface::print) (direction . ,RIGHT) - (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) (extra-spacing-width . (+inf.0 . -inf.0)) - (padding . 0.0) ;; padding relative to SostenutoPedalLineSpanner (font-shape . italic) + (padding . 0.0) ;; padding relative to SostenutoPedalLineSpanner (self-alignment-X . ,CENTER) + (stencil . ,ly:text-interface::print) + (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) (meta . ((class . Item) - (interfaces . (text-interface - self-alignment-interface + (interfaces . (font-interface piano-pedal-script-interface - font-interface)))))) + self-alignment-interface + text-interface)))))) (SostenutoPedalLineSpanner . ( (axes . (,Y)) - (Y-extent . ,ly:axis-group-interface::height) - (X-extent . ,ly:axis-group-interface::width) - (Y-offset . ,ly:side-position-interface::y-aligned-side) + (direction . ,DOWN) + (minimum-space . 1.0) (outside-staff-priority . 1000) + (padding . 1.2) (side-axis . ,Y) (staff-padding . 1.0) - (padding . 1.2) - (minimum-space . 1.0) - (direction . ,DOWN) + (X-extent . ,ly:axis-group-interface::width) + (Y-extent . ,ly:axis-group-interface::height) + (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Spanner) - (interfaces . (piano-pedal-interface - axis-group-interface + (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 + piano-pedal-interface side-position-interface)))))) (SpacingSpanner . ( - (springs-and-rods . ,ly:spacing-spanner::set-springs) - (common-shortest-duration . ,ly:spacing-spanner::calc-common-shortest-duration) (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) - - (base-shortest-duration . ,(ly:make-moment 3 16)) + (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 . ,ly:axis-group-interface::height) + (before-line-breaking . ,ly:span-bar::before-line-breaking) (break-align-symbol . staff-bar) - (Y-extent . ,ly:axis-group-interface::height) (cross-staff . #t) - (layer . 0) - (non-musical . #t) - (stencil . ,ly:span-bar::print) - (bar-size . ,ly:span-bar::calc-bar-size) - (bar-extent . ,ly:axis-group-interface::height) - (X-extent . ,ly:span-bar::width) (glyph-name . ,ly:span-bar::calc-glyph-name) - (before-line-breaking . ,ly:span-bar::before-line-breaking) - (allow-span-bar . #t) - - ;; ugh duplication! + ;; ugh duplication! (these 4 properties were copied from Barline) ;; ;; Ross. page 151 lists other values, we opt for a leaner look ;; @@ -1586,24 +1811,31 @@ (thin-kern . 3.0) (hair-thickness . 1.6) (thick-thickness . 6.0) - (meta . ((class . Item) - (interfaces . (span-bar-interface - font-interface - bar-line-interface)))))) - (StanzaNumber - . ( - (stencil . ,ly:text-interface::print) - (font-series . bold) - (padding . 1.0) - (X-offset . ,ly:side-position-interface::x-aligned-side) - (side-axis . ,X) - (direction . ,LEFT) + (layer . 0) + (non-musical . #t) + (stencil . ,ly:span-bar::print) + (X-extent . ,ly:span-bar::width) + (Y-extent . ,ly:axis-group-interface::height) (meta . ((class . Item) - (interfaces . (side-position-interface - stanza-number-interface - text-interface - font-interface)))))) + (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 . (bar-line-interface + font-interface + span-bar-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 . ( @@ -1612,41 +1844,42 @@ (meta . ((class . Item) (interfaces . (spacing-interface staff-spacing-interface)))))) - + (StaffSymbol . ( - (Y-extent . ,ly:staff-symbol::height) - (stencil . ,ly:staff-symbol::print) - (line-count . 5) - (ledger-line-thickness . (1.0 . 0.1)) (layer . 0) + (ledger-line-thickness . (1.0 . 0.1)) + (line-count . 5) + (stencil . ,ly:staff-symbol::print) + (Y-extent . ,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) + (meta . ((class . Item) + (interfaces . (font-interface + side-position-interface + stanza-number-interface + text-interface)))))) + (Stem . ( - (direction . ,ly:stem::calc-direction) - (duration-log . ,stem::calc-duration-log) - (default-direction . ,ly:stem::calc-default-direction) - (stem-end-position . ,ly:stem::calc-stem-end-position) - - (neutral-direction . ,DOWN) - (stem-info . ,ly:stem::calc-stem-info) - (positioning-done . ,ly:stem::calc-positioning-done) - (stencil . ,ly:stem::print) - (X-extent . ,ly:stem::width) - (Y-extent . ,ly:stem::height) - (length . ,ly:stem::calc-length) - (thickness . 1.3) - (cross-staff . ,ly:stem::calc-cross-staff) - (flag . ,ly:stem::calc-flag) (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, 128th flagged stems should be longer - (lengths . (3.5 3.5 3.5 4.5 5.0 6.0)) + (lengths . (3.5 3.5 3.5 4.25 5.0 6.0)) ;; FIXME. 3.5 yields too long beams (according to Ross and ;; looking at Baerenreiter examples) for a number of common @@ -1673,130 +1906,150 @@ ;; We use the normal minima as minimum for the ideal lengths, ;; and the extreme minima as abolute minimum length. + (direction . ,ly:stem::calc-direction) + (duration-log . ,stem::calc-duration-log) + (flag . ,ly:stem::calc-flag) + (length . ,ly:stem::calc-length) + (neutral-direction . ,DOWN) + (positioning-done . ,ly:stem::calc-positioning-done) + (stem-end-position . ,ly:stem::calc-stem-end-position) + (stem-info . ,ly:stem::calc-stem-info) + (stencil . ,ly:stem::print) + (thickness . 1.3) + (X-extent . ,ly:stem::width) (X-offset . ,ly:stem::offset-callback) + (Y-extent . ,ly:stem::height) (Y-offset . ,ly:staff-symbol-referencer::callback) (meta . ((class . Item) - (interfaces . (stem-interface - font-interface)))))) + (interfaces . (font-interface + stem-interface)))))) (StemTremolo . ( - (Y-extent . ,ly:stem-tremolo::height) - (X-extent . ,ly:stem-tremolo::width) - (stencil . ,ly:stem-tremolo::print) - (slope . ,ly:stem-tremolo::calc-slope) - (beam-width . ,ly:stem-tremolo::calc-width) ; staff-space - (style . ,ly:stem-tremolo::calc-style) (beam-thickness . 0.48) ; staff-space + (beam-width . ,ly:stem-tremolo::calc-width) ; staff-space + (slope . ,ly:stem-tremolo::calc-slope) + (stencil . ,ly:stem-tremolo::print) + (style . ,ly:stem-tremolo::calc-style) + (X-extent . ,ly:stem-tremolo::width) + (Y-extent . ,ly:stem-tremolo::height) (meta . ((class . Item) (interfaces . (stem-tremolo-interface)))))) (StringNumber . ( - (stencil . ,print-circled-text-callback) - (text . ,string-number::calc-text) + (avoid-slur . around) + (font-encoding . fetaText) + (font-size . -5) ; don't overlap when next to heads. (padding . 0.5) - (staff-padding . 0.5) + (script-priority . 100) (self-alignment-X . ,CENTER) (self-alignment-Y . ,CENTER) - (script-priority . 100) - (avoid-slur . around) - (font-encoding . fetaNumber) - (font-size . -5) ; don't overlap when next to heads. + (staff-padding . 0.5) + (stencil . ,print-circled-text-callback) + (text . ,string-number::calc-text) (meta . ((class . Item) - (interfaces . (string-number-interface - font-interface - text-script-interface - text-interface + (interfaces . (font-interface + self-alignment-interface side-position-interface - self-alignment-interface)))))) - + string-number-interface + text-interface + text-script-interface)))))) + (StrokeFinger . ( - (stencil . ,ly:text-interface::print) - (text . ,stroke-finger::calc-text) (digit-names . #("p" "i" "m" "a" "x")) + (font-shape . italic) + (font-size . -4) ; don't overlap when next to heads. (padding . 0.5) - (staff-padding . 0.5) + (script-priority . 100) (self-alignment-X . ,CENTER) (self-alignment-Y . ,CENTER) - (script-priority . 100) - (font-shape . italic) - (font-size . -4) ; don't overlap when next to heads. + (staff-padding . 0.5) + (stencil . ,ly:text-interface::print) + (text . ,stroke-finger::calc-text) (meta . ((class . Item) - (interfaces . (stroke-finger-interface - font-interface - text-script-interface - text-interface + (interfaces . (font-interface + self-alignment-interface side-position-interface - self-alignment-interface)))))) + stroke-finger-interface + text-interface + text-script-interface)))))) (SustainPedal . ( - (extra-spacing-width . (+inf.0 . -inf.0)) - (stencil . ,ly:sustain-pedal::print) - (self-alignment-X . ,CENTER) (direction . ,RIGHT) + (extra-spacing-width . (+inf.0 . -inf.0)) (padding . 0.0) ;; padding relative to SustainPedalLineSpanner + (self-alignment-X . ,CENTER) + (stencil . ,ly:sustain-pedal::print) (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) (meta . ((class . Item) - (interfaces . (piano-pedal-interface - text-interface - self-alignment-interface + (interfaces . (font-interface + piano-pedal-interface piano-pedal-script-interface - font-interface)))))) + self-alignment-interface + text-interface)))))) (SustainPedalLineSpanner . ( (axes . (,Y)) - (Y-extent . ,ly:axis-group-interface::height) - (X-extent . ,ly:axis-group-interface::width) - (Y-offset . ,ly:side-position-interface::y-aligned-side) + (direction . ,DOWN) + (minimum-space . 1.0) (outside-staff-priority . 1000) - (side-axis . ,Y) (padding . 1.2) + (side-axis . ,Y) (staff-padding . 1.2) - (minimum-space . 1.0) - (direction . ,DOWN) + (X-extent . ,ly:axis-group-interface::width) + (Y-extent . ,ly:axis-group-interface::height) + (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Spanner) - (interfaces . (piano-pedal-interface - axis-group-interface + (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 + piano-pedal-interface side-position-interface)))))) (System . ( + (adjacent-pure-heights . ,ly:axis-group-interface::adjacent-pure-heights) (axes . (,X ,Y)) - (X-extent . ,ly:axis-group-interface::width) - (Y-extent . ,ly:axis-group-interface::height) + (skyline-horizontal-padding . 0.5) (vertical-skylines . ,ly:axis-group-interface::calc-skylines) - (max-stretch . ,ly:axis-group-interface::calc-max-stretch) + (X-extent . ,ly:axis-group-interface::width) + (Y-extent . ,ly:system::height) (meta . ((class . System) - (interfaces . (system-interface - axis-group-interface)))))) + (object-callbacks . ((pure-relevant-grobs . ,ly:system::calc-pure-relevant-grobs) + (pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common))) + (interfaces . (axis-group-interface + system-interface)))))) - (SystemStartBrace + (SystemStartBar . ( - (style . brace) - (padding . 0.3) - (stencil . ,ly:system-start-delimiter::print) (collapse-height . 5.0) - (X-offset . ,ly:side-position-interface::x-aligned-side) (direction . ,LEFT) - (font-encoding . fetaBraces) + + ;; 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) (Y-extent . #f) (meta . ((class . Spanner) - (interfaces . (system-start-delimiter-interface - side-position-interface - font-interface)))))) + (interfaces . (side-position-interface + system-start-delimiter-interface)))))) - (SystemStartSquare + (SystemStartBrace . ( - (Y-extent . #f) - (X-offset . ,ly:side-position-interface::x-aligned-side) + (collapse-height . 5.0) (direction . ,LEFT) + (font-encoding . fetaBraces) + (padding . 0.3) (stencil . ,ly:system-start-delimiter::print) - (style . line-bracket) - (thickness . 1.0) + (style . brace) + (X-offset . ,ly:side-position-interface::x-aligned-side) + (Y-extent . #f) (meta . ((class . Spanner) (interfaces . (font-interface side-position-interface @@ -1804,123 +2057,130 @@ (SystemStartBracket . ( - (Y-extent . #f) - (padding . 0.8) - (X-offset . ,ly:side-position-interface::x-aligned-side) + (collapse-height . 5.0) (direction . ,LEFT) + (padding . 0.8) (stencil . ,ly:system-start-delimiter::print) (style . bracket) - (collapse-height . 5.0) (thickness . 0.45) + (X-offset . ,ly:side-position-interface::x-aligned-side) + (Y-extent . #f) (meta . ((class . Spanner) (interfaces . (font-interface side-position-interface system-start-delimiter-interface)))))) - (SystemStartBar + (SystemStartSquare . ( - (Y-extent . #f) - - ;; ugh--hardcoded. - (padding . -0.1) ;; bar must cover rounded ending of staff line. - (X-offset . ,ly:side-position-interface::x-aligned-side) (direction . ,LEFT) - (style . bar-line) - (collapse-height . 5.0) - (thickness . 1.6) (stencil . ,ly:system-start-delimiter::print) + (style . line-bracket) + (thickness . 1.0) + (X-offset . ,ly:side-position-interface::x-aligned-side) + (Y-extent . #f) (meta . ((class . Spanner) - (interfaces . (side-position-interface + (interfaces . (font-interface + side-position-interface system-start-delimiter-interface)))))) (TabNoteHead . ( - (stencil . ,ly:text-interface::print) - (duration-log . ,note-head::calc-duration-log) - (Y-offset . ,ly:staff-symbol-referencer::callback) - (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) + (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 . ((break-visibility . ,begin-of-line-visible) + (parenthesize . #t))))) + (direction . ,CENTER) + (duration-log . ,note-head::calc-duration-log) + (font-series . bold) (font-size . -2) (stem-attachment . (0.0 . 1.35)) - (font-series . bold) + (stencil . ,tab-note-head::print) + (whiteout . #t) + (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) + (Y-offset . ,ly:staff-symbol-referencer::callback) (meta . ((class . Item) - (interfaces . (rhythmic-head-interface - font-interface - rhythmic-grob-interface + (interfaces . (font-interface note-head-interface + rhythmic-grob-interface + rhythmic-head-interface staff-symbol-referencer-interface + tab-note-head-interface text-interface)))))) (TextScript . ( - (extra-spacing-width . (+inf.0 . -inf.0)) - (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) - (Y-offset . ,ly:side-position-interface::y-aligned-side) - (side-axis . ,Y) + (avoid-slur . around) + (cross-staff . ,ly:script-interface::calc-cross-staff) (direction . ,DOWN) + (extra-spacing-width . (+inf.0 . -inf.0)) + (outside-staff-priority . 450) ;; sync with Fingering ? (padding . 0.5) - (staff-padding . 0.5) - - (stencil . ,ly:text-interface::print) - (direction . ,ly:script-interface::calc-direction) - (positioning-done . ,ly:script-interface::calc-positioning-done) - (outside-staff-priority . 450) - (avoid-slur . around) - (slur-padding . 0.5) (script-priority . 200) - (cross-staff . ,ly:script-interface::calc-cross-staff) + (side-axis . ,Y) + (slur-padding . 0.5) + (staff-padding . 0.5) + (stencil . ,ly:text-interface::print) ;; todo: add X self alignment? + (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) + (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Item) - (interfaces . (text-script-interface - text-interface + (interfaces . (font-interface instrument-specific-markup-interface - side-position-interface self-alignment-interface - font-interface)))))) + side-position-interface + text-interface + text-script-interface)))))) (TextSpanner . ( - (Y-offset . ,ly:side-position-interface::y-aligned-side) - (font-shape . italic) - (style . dashed-line) - (staff-padding . 0.8) - (dash-fraction . 0.2) - (dash-period . 3.0) - (side-axis . ,Y) - (direction . ,UP) - (outside-staff-priority . 350) - - (left-bound-info . ,ly:line-spanner::calc-left-bound-info) - (right-bound-info . ,ly:line-spanner::calc-right-bound-info) (bound-details . ((left . ((Y . 0) (padding . 0.25) (attach-dir . ,LEFT) )) + (left-broken . ((end-on-note . #t))) (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 . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Spanner) - (interfaces . (line-spanner-interface + (interfaces . (font-interface line-interface - side-position-interface - font-interface)))))) + line-spanner-interface + side-position-interface)))))) (Tie . ( - (control-points . ,ly:tie::calc-control-points) - (springs-and-rods . ,ly:spanner::set-spacing-rods) (avoid-slur . inside) - (direction . ,ly:tie::calc-direction) - (neutral-direction . ,UP) - (stencil . ,ly:tie::print) - (font-size . -6) + (control-points . ,ly:tie::calc-control-points) (details . ( ;; for a full list, see tie-details.cc (ratio . 0.333) @@ -1932,7 +2192,7 @@ (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-distance . 0.45) (tie-tie-collision-penalty . 25.0) (intra-space-threshold . 1.25) (outer-tie-vertical-distance-symmetry-penalty-factor . 10) @@ -1942,16 +2202,21 @@ (multi-tie-region-size . 3) (single-tie-region-size . 4) (between-length-limit . 1.0))) - - (thickness . 1.2) + + (direction . ,ly:tie::calc-direction) + (font-size . -6) (line-thickness . 0.8) + (neutral-direction . ,UP) + (springs-and-rods . ,ly:spanner::set-spacing-rods) + (stencil . ,ly:tie::print) + (thickness . 1.2) (meta . ((class . Spanner) (interfaces . (tie-interface)))))) (TieColumn . ( - (positioning-done . ,ly:tie-column::calc-positioning-done) (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) @@ -1959,263 +2224,275 @@ (TimeSignature . ( - (stencil . ,ly:time-signature::print) - (break-align-symbol . time-signature) + (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) - (avoid-slur . inside) (extra-spacing-height . (-1.0 . 1.0)) + (non-musical . #t) (space-alist . ( + (cue-clef . (extra-space . 1.5)) (first-note . (fixed-space . 2.0)) (right-edge . (extra-space . 0.5)) (staff-bar . (minimum-space . 2.0)))) - (non-musical . #t) + (stencil . ,ly:time-signature::print) (style . C) (meta . ((class . Item) - (interfaces . (time-signature-interface - break-aligned-interface - font-interface)))))) - - (TrillSpanner - . ( - (left-bound-info . ,ly:line-spanner::calc-left-bound-info) - (right-bound-info . ,ly:line-spanner::calc-right-bound-info) - - (bound-details . ((left . ((text . ,(make-translate-scaled-markup - '(0.0 . -1.0) - (make-musicglyph-markup "scripts.trill"))) - (Y . 0) - (stencil-offset . (-0.5 . 0)) - (padding . 1.5) - (attach-dir . ,CENTER) - ;; this isn't CENTER because the trill glyph's origin - ;; is not centered in its extent; to have the trill - ;; spanner aligned the same as a trill, we need a slight offset - (anchor-alignment . 0.15) - )) - (left-broken . ((end-on-note . #t))) - (right . ((Y . 0))) - )) - - (stencil . ,ly:line-spanner::print) - - (style . trill) - (staff-padding . 1.0) - (padding . 0.5) - (direction . ,UP) - (Y-offset . ,ly:side-position-interface::y-aligned-side) - (side-axis . ,Y) - (outside-staff-priority . 50) - (meta . ((class . Spanner) - (interfaces . (line-spanner-interface - line-interface - trill-spanner-interface - side-position-interface - font-interface)))))) + (interfaces . (break-aligned-interface + font-interface + time-signature-interface)))))) (TrillPitchAccidental - . ((X-offset . ,ly:side-position-interface::x-aligned-side) - (padding . 0.2) + . ( (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 . ,ly:accidental-interface::height) - (glyph-name-alist . ,standard-alteration-glyph-name-alist) (meta . ((class . Item) - (interfaces . (trill-pitch-accidental-interface - accidental-interface + (interfaces . (accidental-interface + font-interface + inline-accidental-interface side-position-interface - font-interface)))))) + trill-pitch-accidental-interface)))))) (TrillPitchGroup - . ((X-offset . ,ly:side-position-interface::x-aligned-side) + . ( (axes . (,X)) + (direction . ,RIGHT) (font-size . -4) + (padding . 0.3) + (side-axis . ,X) (stencil . ,parenthesize-elements) (stencils . ,parentheses-item::calc-parenthesis-stencils) - (direction . ,RIGHT) - (side-axis . ,X) - (padding . 0.3) + (X-offset . ,ly:side-position-interface::x-aligned-side) (meta . ((class . Item) - (interfaces . (side-position-interface - parentheses-interface - note-head-interface + (interfaces . (axis-group-interface font-interface - axis-group-interface)))))) + note-head-interface + parentheses-interface + side-position-interface)))))) (TrillPitchHead . ( - (stencil . ,ly:note-head::print) (duration-log . 2) - (Y-offset . ,ly:staff-symbol-referencer::callback) (font-size . -4) + (stencil . ,ly:note-head::print) + (Y-offset . ,ly:staff-symbol-referencer::callback) (meta . ((class . Item) - (interfaces . (rhythmic-head-interface - font-interface - pitched-trill-interface + (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 . ,ly:side-position-interface::y-aligned-side) + (meta . ((class . Spanner) + (interfaces . (font-interface + line-interface + line-spanner-interface + side-position-interface + trill-spanner-interface)))))) + (TupletBracket . ( - (padding . 1.1) - (thickness . 1.6) + (connect-to-neighbor . ,ly:tuplet-bracket::calc-connect-to-neighbors) + (control-points . ,ly:tuplet-bracket::calc-control-points) + (cross-staff . ,ly:tuplet-bracket::calc-cross-staff) + (direction . ,ly:tuplet-bracket::calc-direction) (edge-height . (0.7 . 0.7)) - (shorten-pair . (-0.2 . -0.2)) - (staff-padding . 0.25) (full-length-to-extent . #t) - (direction . ,ly:tuplet-bracket::calc-direction) + (padding . 1.1) (positions . ,ly:tuplet-bracket::calc-positions) - (connect-to-neighbor . ,ly:tuplet-bracket::calc-connect-to-neighbors) - (control-points . ,ly:tuplet-bracket::calc-control-points) + (shorten-pair . (-0.2 . -0.2)) + (staff-padding . 0.25) (stencil . ,ly:tuplet-bracket::print) - (cross-staff . ,ly:tuplet-bracket::calc-cross-staff) - + (thickness . 1.6) + (meta . ((class . Spanner) (interfaces . (line-interface tuplet-bracket-interface)))))) (TupletNumber . ( - (stencil . ,ly:tuplet-number::print) - (text . ,tuplet-number::calc-denominator-text) - (font-shape . italic) - (font-size . -2) (avoid-slur . inside) (cross-staff . ,ly:tuplet-number::calc-cross-staff) + (font-shape . italic) + (font-size . -2) + (stencil . ,ly:tuplet-number::print) + (text . ,tuplet-number::calc-denominator-text) (meta . ((class . Spanner) - (interfaces . (text-interface tuplet-number-interface - font-interface)))))) + (interfaces . (font-interface + text-interface + tuplet-number-interface)))))) + - (UnaCordaPedal . ( - (stencil . ,ly:text-interface::print) - (font-shape . italic) - (extra-spacing-width . (+inf.0 . -inf.0)) - (self-alignment-X . ,CENTER) (direction . ,RIGHT) + (extra-spacing-width . (+inf.0 . -inf.0)) + (font-shape . italic) (padding . 0.0) ;; padding relative to UnaCordaPedalLineSpanner + (self-alignment-X . ,CENTER) + (stencil . ,ly:text-interface::print) (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) (meta . ((class . Item) - (interfaces . (text-interface + (interfaces . (font-interface piano-pedal-script-interface self-alignment-interface - font-interface)))))) + text-interface)))))) (UnaCordaPedalLineSpanner . ( (axes . (,Y)) - (Y-extent . ,ly:axis-group-interface::height) - (X-extent . ,ly:axis-group-interface::width) - (Y-offset . ,ly:side-position-interface::y-aligned-side) + (direction . ,DOWN) + (minimum-space . 1.0) (outside-staff-priority . 1000) - (side-axis . ,Y) (padding . 1.2) + (side-axis . ,Y) (staff-padding . 1.2) - (minimum-space . 1.0) - (direction . ,DOWN) + (X-extent . ,ly:axis-group-interface::width) + (Y-extent . ,ly:axis-group-interface::height) + (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Spanner) - (interfaces . (piano-pedal-interface - axis-group-interface + (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 + piano-pedal-interface side-position-interface)))))) (VaticanaLigature . ( - (thickness . 0.6) (flexa-width . 2.0) (stencil . ,ly:vaticana-ligature::print) + (thickness . 0.6) (meta . ((class . Spanner) - (interfaces . (vaticana-ligature-interface - font-interface)))))) + (interfaces . (font-interface + vaticana-ligature-interface)))))) (VerticalAlignment . ( (axes . (,Y)) - (positioning-done . ,ly:align-interface::calc-positioning-done) - (after-line-breaking . ,ly:align-interface::stretch-after-break) - (Y-extent . ,ly:axis-group-interface::height) - (X-extent . ,ly:axis-group-interface::width) + (positioning-done . ,ly:align-interface::align-to-ideal-distances) (stacking-dir . -1) - (padding . 0.5) (vertical-skylines . ,ly:axis-group-interface::combine-skylines) - (max-stretch . 0) + (X-extent . ,ly:axis-group-interface::width) + (Y-extent . ,ly:axis-group-interface::height) (meta . ((class . Spanner) - (object-callbacks . ((Y-common . ,ly:axis-group-interface::calc-y-common))) + (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)) - (Y-offset . ,ly:hara-kiri-group-spanner::force-hara-kiri-callback) - (Y-extent . ,ly:hara-kiri-group-spanner::y-extent) - (X-extent . ,ly:axis-group-interface::width) - (vertical-skylines . ,ly:hara-kiri-group-spanner::calc-skylines) - (max-stretch . ,ly:axis-group-interface::calc-max-stretch) + (default-staff-staff-spacing . ((basic-distance . 9) + (minimum-distance . 8) + (padding . 1))) + (nonstaff-unrelatedstaff-spacing . ((padding . 0.5))) + (staff-staff-spacing . ,ly:axis-group-interface::calc-staff-staff-spacing) (stencil . ,ly:axis-group-interface::print) - (adjacent-pure-heights . ,ly:axis-group-interface::adjacent-pure-heights) + (vertical-skylines . ,ly:hara-kiri-group-spanner::calc-skylines) + (X-extent . ,ly:axis-group-interface::width) + (Y-extent . ,ly:hara-kiri-group-spanner::y-extent) + (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))) + (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 - vertically-spaceable-interface)))))) + hara-kiri-group-spanner-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) + )) + )) + (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 . ( - (stencil . ,ly:volta-bracket-interface::print) - (font-encoding . fetaNumber) - (thickness . 1.6) ;; line-thickness + (direction . ,UP) (edge-height . (2.0 . 2.0)) ;; staff-space; + (font-encoding . fetaText) (font-size . -4) + (stencil . ,ly:volta-bracket-interface::print) + (thickness . 1.6) ;; line-thickness (word-space . 0.6) - (direction . ,UP) (meta . ((class . Spanner) - (interfaces . (volta-bracket-interface - horizontal-bracket-interface + (interfaces . (font-interface + horizontal-bracket-interface line-interface - text-interface side-position-interface - font-interface)))))) + text-interface + volta-bracket-interface + volta-interface)))))) (VoltaBracketSpanner - . ( + . ( + (after-line-breaking . ,ly:side-position-interface::move-to-extremal-staff) (axes . (,Y)) - (side-axis . ,Y) (direction . ,UP) + (no-alignment . #t) + (outside-staff-priority . 600) (padding . 1) - (Y-offset . ,ly:side-position-interface::y-aligned-side) - (outside-staff-priority . 100) - (Y-extent . ,ly:axis-group-interface::height) + (side-axis . ,Y) (X-extent . ,ly:axis-group-interface::width) - (no-alignment . ,#t) - (meta . ((class . Spanner) - (interfaces . (side-position-interface - axis-group-interface)))))) - - (VoiceFollower - . ( - (style . line) - (gap . 0.5) - (non-musical . #t) - (X-extent . #f) - (Y-extent . #f) - (bound-details . ((right . ((attach-dir . ,CENTER) - (padding . 1.5) - )) - (left . ((attach-dir . ,CENTER) - (padding . 1.5) - )) - )) - (stencil . ,ly:line-spanner::print) - (left-bound-info . ,ly:line-spanner::calc-left-bound-info) - (right-bound-info . ,ly:line-spanner::calc-right-bound-info) + (Y-extent . ,ly:axis-group-interface::height) + (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Spanner) - (interfaces . (line-spanner-interface - line-interface)))))) + (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 + side-position-interface + volta-interface)))))) )) @@ -2226,10 +2503,10 @@ ;; (newline) (let* ((name-sym (car x)) (grob-entry (cdr x)) - (meta-entry (cdr (assoc 'meta grob-entry))) - (class (cdr (assoc 'class meta-entry))) + (meta-entry (assoc-get 'meta grob-entry)) + (class (assoc-get 'class meta-entry)) (ifaces-entry - (cdr (assoc 'interfaces meta-entry)))) + (assoc-get 'interfaces meta-entry))) (cond ((eq? 'Item class) @@ -2269,47 +2546,81 @@ (set! all-grob-descriptions (sort all-grob-descriptions alist