X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fdefine-grobs.scm;h=33e83c8d764720f755f153457c1b57d8ca879771;hb=561e465038d7ee45d892fcd3f1f0821fff0b0156;hp=dff0c8b851b579c32cf1f2da667c07f11e0fb88b;hpb=5b42a287848b7889e2ef2418e7d992d23594e31d;p=lilypond.git diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index dff0c8b851..33e83c8d76 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -1,68 +1,132 @@ -;;;; define-grobs.scm -- +;;;; define-grobs.scm -- ;;;; ;;;; source file of the GNU LilyPond music typesetter -;;;; -;;;; (c) 1998--2004 Han-Wen Nienhuys +;;;; +;;;; (c) 1998--2005 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; distances are given in linethickness (thicknesses) and ;;;; staffspace (distances) ;;;; WARNING: the meta field should be the last one. -;;;; WARNING: don't use anonymous functions for initialization. +;;;; WARNING: don't use anonymous functions for initialization. ;; TODO: junk the meta field in favor of something more compact? + +;;; todo:: reorder sensibly. + (define-public all-grob-descriptions `( (Accidental . ( (print-function . ,Accidental_interface::print) - (font-family . music) + (inside-slur . #t) (cautionary-style . parentheses) - (after-line-breaking-callback . ,Accidental_interface::after_line_breaking) (meta . ((interfaces . (item-interface accidental-interface font-interface)))) + (after-line-breaking-callback . ,Accidental_interface::after_line_breaking) + (meta . ((class . Item) + (interfaces . (accidental-interface font-interface)))) )) + (AccidentalSuggestion + . ((print-function . ,Accidental_interface::print) + (X-offset-callbacks . (,Self_alignment_interface::centered_on_parent + ,Self_alignment_interface::aligned_on_self)) + (self-alignment-X . ,CENTER) + (cautionary . #t) + (cautionary-style . smaller) + (Y-offset-callbacks . (,Side_position_interface::aligned_side)) + (cautionary-style . parentheses) + (direction . ,UP) + (staff-padding . 0.25) + (script-priority . 0) + (meta . ((class . Item) + (interfaces . (side-position-interface script-interface + accidental-suggestion-interface self-alignment-interface + font-interface)))) + )) (AccidentalPlacement - . ( - (X-extent-callback . ,Axis_group_interface::group_extent_callback) + . ((X-extent-callback . ,Axis_group_interface::group_extent_callback) (left-padding . 0.2) ;; 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 . ((interfaces . (item-interface accidental-placement-interface)))) + (meta . ((class . Item) + (interfaces . (accidental-placement-interface)))) )) - (Ambitus . ( - (breakable . #t) - (break-align-symbol . ambitus) - (print-function . ,Ambitus::print) - (font-family . music) - (note-head-style . "noteheads-2") - (break-visibility . ,begin-of-line-visible) - (join-heads . #t) - (space-alist . ( - (clef . (extra-space . 0.0)) - (key-signature . (extra-space . 0.0)) - (staff-bar . (extra-space . 0.0)) - (time-signature . (extra-space . 0.0)) - (first-note . (fixed-space . 0.0)) - )) - (meta . ((interfaces . (ambitus-interface staff-symbol-referencer-interface break-aligned-interface item-interface font-interface)))) - )) + (axes . (0 1)) + (X-extent-callback . ,Axis_group_interface::group_extent_callback) + (Y-extent-callback . ,Axis_group_interface::group_extent_callback) + (space-alist . ( + (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)) + )) + (breakable . #t) + (break-align-symbol . ambitus) + (break-visibility . ,begin-of-line-visible) + (meta . ((class . Item) + (interfaces . (axis-group-interface + break-aligned-interface ambitus-interface)))) + )) + + (AmbitusLine + . ( + (print-function . ,Ambitus::print) + (join-heads . #t) + (thickness . 2) + (X-offset-callbacks . (,Self_alignment_interface::centered_on_parent)) + + (meta . ((class . Item) + (interfaces . (ambitus-interface staff-symbol-referencer-interface font-interface)))) + )) + (AmbitusAccidental + . ( + (print-function . ,Accidental_interface::print) + (font-family . music) + (padding . 0.5) + (X-offset-callbacks . (,Side_position_interface::aligned_side)) + (direction . -1) + (cautionary-style . parentheses) + (after-line-breaking-callback . ,Accidental_interface::after_line_breaking) + (meta . ((class . Item) + (interfaces . (item-interface + accidental-interface break-aligned-interface + side-position-interface font-interface)))) + )) + + (AmbitusNoteHead + . ( + (duration-log . 2) + (print-function . ,Note_head::print) + (glyph-name-procedure . ,find-notehead-symbol) + (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) + (meta . ((class . Item) + (interfaces . (font-interface note-head-interface + ambitus-interface + staff-symbol-referencer-interface + rhythmic-head-interface + ledgered-interface + )))) + )) (Arpeggio . ( (X-extent-callback . ,Arpeggio::width_callback) - (Y-extent-callback . #f) (print-function . ,Arpeggio::print) (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) (X-offset-callbacks . (,Side_position_interface::aligned_side)) (direction . -1) - (padding . 0.5) + (padding . 0.5) (staff-position . 0.0) - (meta . ((interfaces . (arpeggio-interface staff-symbol-referencer-interface side-position-interface item-interface font-interface)))) + (meta . ((class . Item) + (interfaces . (arpeggio-interface + staff-symbol-referencer-interface side-position-interface + font-interface)))) )) (BarLine @@ -70,16 +134,18 @@ (break-align-symbol . staff-bar) (glyph . "|") (break-glyph-function . ,default-break-barline) + (layer . 0) (bar-size-procedure . ,Bar_line::get_staff_bar_size) - (print-function . ,Bar_line::print) + (print-function . ,Bar_line::print) (break-visibility . ,all-visible) (breakable . #t) (before-line-breaking-callback . ,Bar_line::before_line_breaking) (space-alist . ( - (time-signature . (extra-space . 0.75)) + (time-signature . (extra-space . 0.75)) (custos . (minimum-space . 2.0)) - (clef . (minimum-space . 1.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 . 1.3)) (right-edge . (extra-space . 0.0)) @@ -87,18 +153,22 @@ ;; ;; Ross. page 151 lists other values, we opt for a leaner look - ;; + ;; + ;; TODO: + ;; kern should scale with linethickness too. (kern . 3.0) (thin-kern . 3.0) - (hair-thickness . 1.6) + (hair-thickness . 1.9) (thick-thickness . 6.0) - (meta . ((interfaces . (bar-line-interface item-interface break-aligned-interface font-interface)))) + (meta . ((class . Item) + (interfaces . (bar-line-interface + break-aligned-interface font-interface)))) )) - + (BarNumber . ( - (print-function . ,Text_item::print) + (print-function . ,Text_interface::print) (breakable . #t) (break-visibility . ,begin-of-line-visible) (padding . 1.0) @@ -109,38 +179,36 @@ (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self)) (self-alignment-X . 1) - ;; hmm. why did we do this: ? - (extra-offset . (1.3 . 0)) (meta . - ((interfaces . (side-position-interface + ((class . Item) + (interfaces . (side-position-interface text-interface self-alignment-interface - font-interface item-interface break-aligned-interface)))) + font-interface break-aligned-interface)))) - )) + )) (BassFigure . ( - (print-function . ,Text_item::print) + (print-function . ,Text_interface::print) (Y-offset-callbacks . (,Self_alignment_interface::aligned_on_self)) (direction . 1) (font-family . number) ;; We must do this, other BFs in - ;; paper16 become too small. + ;; layout16 become too small. (font-size . -4) (kern . 0.2) - (meta . ((interfaces . (text-interface rhythmic-grob-interface - bass-figure-interface item-interface - self-alignment-interface font-interface)))) + (meta . ((class . Item) + (interfaces . (text-interface + rhythmic-grob-interface bass-figure-interface + self-alignment-interface font-interface)))) )) (Beam . ( ;; todo: clean this up a bit: the list is getting ;; rather long. (print-function . ,Beam::print) - (concaveness-gap . 1.85) - (concaveness-threshold . 0.26) (gap . 0.8) (positions . (#f . #f)) (position-callbacks . (,Beam::least_squares @@ -148,7 +216,7 @@ ,Beam::slope_damping ,Beam::shift_region_to_valid ,Beam::quanting - )) + )) ;; TODO: should be in SLT. (thickness . 0.48) ; in staff-space @@ -173,7 +241,6 @@ ;; sadly possibly breaking patterns with high order beams. (beamed-stem-shorten . (1.0 0.5 0.25)) - (slope-limit . 0.2) (flag-width-function . ,beam-flag-width-function) (damping . 1) (auto-knee-gap . 5.5) @@ -182,7 +249,8 @@ (font-family . roman) (space-function . ,Beam::space_function) - (meta . ((interfaces . (staff-symbol-referencer-interface beam-interface spanner-interface)))) + (meta . ((class . Spanner) + (interfaces . (staff-symbol-referencer-interface beam-interface)))) )) (BreakAlignment @@ -190,32 +258,35 @@ (breakable . #t) (stacking-dir . 1) (break-align-orders . #(; end-of-line: - (instrument-name left-edge ambitus breathing-sign - clef staff-bar key-signature - time-signature custos) + (instrument-name + left-edge ambitus breathing-sign + clef staff-bar key-cancellation key-signature + time-signature custos) - ; unbroken + ; unbroken (instrument-name left-edge ambitus breathing-sign - clef staff-bar key-signature + clef staff-bar key-cancellation key-signature staff time-signature custos) - ; begin of line + ; begin of line (instrument-name left-edge ambitus breathing-sign - clef key-signature staff-bar + clef key-cancellation key-signature staff-bar time-signature custos) )) (axes . (0)) (X-extent-callback . ,Axis_group_interface::group_extent_callback) - (meta . ((interfaces . (break-alignment-interface item-interface axis-group-interface))))) - ) + (meta . ((class . Item) + (interfaces . (break-alignment-interface axis-group-interface))))) + ) (BreakAlignGroup . ( - (axes . (0)) + (axes . (0)) (X-offset-callbacks . (,Break_align_interface::alignment_callback)) (X-extent-callback . ,Axis_group_interface::group_extent_callback) - (meta . ((interfaces . (break-aligned-interface item-interface axis-group-interface item-interface )))) + (meta . ((class . Item) + (interfaces . (break-aligned-interface axis-group-interface )))) )) (BreathingSign @@ -228,14 +299,16 @@ (key-signature . (minimum-space . 1.5)) (staff-bar . (minimum-space . 1.5)) (clef . (minimum-space . 2.0)) - (first-note . (fixed-space . 1.0)) ;huh? + (first-note . (fixed-space . 1.0)) ;huh? (right-edge . (extra-space . 0.1)) )) - (print-function . ,Text_item::print) - (text . ,(make-musicglyph-markup "scripts-rcomma")) + (print-function . ,Text_interface::print) + (text . ,(make-musicglyph-markup "scripts.rcomma")) (Y-offset-callbacks . (,Breathing_sign::offset_callback)) (break-visibility . ,begin-of-line-invisible) - (meta . ((interfaces . (break-aligned-interface breathing-sign-interface text-interface font-interface item-interface )))) + (meta . ((class . Item) + (interfaces . (break-aligned-interface + breathing-sign-interface text-interface font-interface )))) )) (Clef @@ -243,28 +316,33 @@ (print-function . ,Clef::print) (before-line-breaking-callback . ,Clef::before_line_breaking) (breakable . #t) - (font-family . music) + (font-family . music) (break-align-symbol . clef) (break-visibility . ,begin-of-line-visible) (space-alist . ((ambitus . (extra-space . 2.0)) (staff-bar . (extra-space . 0.7)) + (key-cancellation . (minimum-space . 4.0)) (key-signature . (minimum-space . 4.0)) (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)) )) - (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) - (meta . ((interfaces . (clef-interface staff-symbol-referencer-interface font-interface break-aligned-interface item-interface )))) + (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) + (meta . ((class . Item) + (interfaces . (clef-interface + staff-symbol-referencer-interface font-interface + break-aligned-interface )))) )) - + (ClusterSpannerBeacon . ( (print-function . #f) (Y-extent-callback . ,Cluster_beacon::height) - (meta . ((interfaces . (cluster-beacon-interface item-interface)))) + (meta . ((class . Item) + (interfaces . (cluster-beacon-interface)))) )) - + (ClusterSpanner . ( (print-function . ,Cluster::print) @@ -272,20 +350,43 @@ (minimum-length . 0.0) (padding . 0.25) (style . ramp) - (meta . ((interfaces . (cluster-interface spanner-interface)))) + (meta . ((class . Spanner) + (interfaces . (cluster-interface)))) )) + (ChordName . ( - (print-function . ,Text_item::print) + (print-function . ,Text_interface::print) (after-line-breaking-callback . ,Chord_name::after_line_breaking) (word-space . 0.0) (font-family . sans) (font-size . 1.5) - (meta . ((interfaces . (font-interface rhythmic-grob-interface - text-interface chord-name-interface item-interface )))) + (meta . ((class . Item) + (interfaces . (font-interface + rhythmic-grob-interface text-interface chord-name-interface + item-interface)))) )) + (CombineTextScript + . ( + (print-function . ,Text_interface::print) + (no-spacing-rods . #t) + (Y-offset-callbacks . (,Side_position_interface::aligned_side)) + (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self)) + (direction . 1) + (padding . 0.5) + (staff-padding . 0.5) + (script-priority . 200) + ;; todo: add X self alignment? + (baseline-skip . 2) + (font-series . bold) + (meta . ((class . Item) + (interfaces . (text-script-interface + text-interface side-position-interface + font-interface )))) + )) + (Custos . ( (break-align-symbol . custos) @@ -299,50 +400,53 @@ (first-note . (minimum-fixed-space . 0.0)) (right-edge . (extra-space . 0.1)) )) - (meta . ((interfaces + (meta . ((class . Item) + (interfaces . (custos-interface staff-symbol-referencer-interface font-interface - break-aligned-interface item-interface )))) + break-aligned-interface )))) )) - (DotColumn . ( (axes . (0)) (direction . ,RIGHT) (X-extent-callback . ,Axis_group_interface::group_extent_callback) (X-offset-callbacks . (,Dot_column::side_position)) - (meta . ((interfaces . (dot-column-interface axis-group-interface item-interface )))) + (meta . ((class . Item) + (interfaces . (dot-column-interface axis-group-interface )))) )) (Dots . ( (print-function . ,Dots::print) (dot-count . 1) - (meta . ((interfaces . (font-interface staff-symbol-referencer-interface dots-interface item-interface )))) - )) - - (DoublePercentRepeat . - ( - (print-function . ,Percent_repeat_item_interface::double_percent) - (breakable . #t) - (slope . 1.0) - (font-encoding . fetaMusic) - (width . 2.0) - (thickness . 0.48) - (break-align-symbol . staff-bar) - (break-visibility . ,begin-of-line-invisible) - (meta . ((interfaces . (font-interface - break-aligned-interface - percent-repeat-interface item-interface )))) - )) + (meta . ((class . Item) + (interfaces . (font-interface + staff-symbol-referencer-interface dots-interface )))) + )) + (DoublePercentRepeat + . ( + (print-function . ,Percent_repeat_item_interface::double_percent) + (breakable . #t) + (slope . 1.0) + (font-encoding . fetaMusic) + (width . 2.0) + (thickness . 0.48) + (break-align-symbol . staff-bar) + (break-visibility . ,begin-of-line-invisible) + (meta . ((class . Item) + (interfaces . (font-interface + break-aligned-interface + percent-repeat-interface )))) + )) + (DynamicText . ( (Y-offset-callbacks . (,Self_alignment_interface::aligned_on_self)) - (print-function . ,Text_item::print) - (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self - ,Self_alignment_interface::centered_on_parent)) + (print-function . ,Text_interface::print) + (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self)) (self-alignment-X . 0) (no-spacing-rods . #t) (script-priority . 100) @@ -350,7 +454,29 @@ (font-encoding . fetaDynamic) (font-shape . italic) (self-alignment-Y . 0) - (meta . ((interfaces . (font-interface text-interface self-alignment-interface dynamic-interface script-interface item-interface)))) + (meta . ((class . Item) + (interfaces . (font-interface text-interface self-alignment-interface + dynamic-interface script-interface)))) + )) + + (DynamicTextSpanner + . ((print-function . ,Dynamic_text_spanner::print) + + ;; rather ugh with NCSB + ; (font-series . bold) + (font-shape . italic) + (style . dashed-line) + + ; need to blend with dynamic texts. + (font-size . 1) + (bound-padding . 0.75) + (dash-fraction . 0.2) + (dash-period . 3.0) + (meta . ((class . Spanner) + (interfaces . (font-interface + text-interface + dynamic-interface dynamic-text-spanner-interface + spanner-interface)))) )) (DynamicLineSpanner @@ -362,41 +488,29 @@ (padding . 0.6) (minimum-space . 1.2) (direction . -1) - (meta . ((interfaces . (dynamic-interface axis-group-interface side-position-interface spanner-interface)))) - )) - - (LeftEdge - . ( - (break-align-symbol . left-edge) - (X-extent . (0 . 0)) - (breakable . #t) - (space-alist . ( - (custos . (extra-space . 0.0)) - (ambitus . (extra-space . 2.0)) - (time-signature . (extra-space . 0.0)) - (staff-bar . (extra-space . 0.0)) - (breathing-sign . (minimum-space . 0.0)) - (clef . (extra-space . 0.85)) - (first-note . (fixed-space . 1.0)) - (right-edge . (extra-space . 0.0)) - (key-signature . (extra-space . 0.0)) - )) - (meta . ((interfaces . (break-aligned-interface item-interface )))) - )) + + (meta . ((class . Spanner) + (interfaces . (dynamic-interface axis-group-interface + side-position-interface)))))) (Fingering . ( - (print-function . ,Text_item::print) - (padding . 0.6) - (staff-padding . 0.6) + (print-function . ,Text_interface::print) + + ; sync with TextScript (?) + (padding . 0.5) + (staff-padding . 0.5) (self-alignment-X . 0) (self-alignment-Y . 0) (script-priority . 100) (font-encoding . fetaNumber) (font-size . -5) ; don't overlap when next to heads. - (meta . ((interfaces . (finger-interface font-interface text-script-interface text-interface side-position-interface self-alignment-interface item-interface )))) + (meta . ((class . Item) + (interfaces . (finger-interface + font-interface text-script-interface text-interface + side-position-interface self-alignment-interface + item-interface)))) )) - (Glissando . ( (style . line) @@ -404,23 +518,48 @@ (zigzag-width . 0.75) (breakable . #t) (X-extent-callback . #f) - (Y-extent-callback . #f) + (Y-extent-callback . #f) (after-line-breaking-callback . ,Line_spanner::after_line_breaking) (print-function . ,Line_spanner::print) - (meta . ((interfaces . (line-spanner-interface spanner-interface)))) + (meta . ((class . Spanner) + (interfaces . (line-interface line-spanner-interface)))) + )) + + (GridPoint + . ( + (X-extent . (0 . 0)) + (Y-extent . (0 . 0)) + (meta . ((class . Item) + (interfaces . (grid-point-interface)))) )) + (GridLine + . ( + (print-function . ,Grid_line_interface::print) + (X-extent-callback . ,Grid_line_interface::width_callback) + (self-alignment-X . ,CENTER) + (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self + ,Self_alignment_interface::centered_on_parent)) + (layer . 0) + (meta . ((class . Item) + (interfaces . (self-alignment-interface grid-line-interface))) + ))) + (Hairpin . ( (print-function . ,Hairpin::print) + (after-line-breaking-callback . ,Hairpin::after_line_breaking) (thickness . 1.0) (height . 0.6666) (spacing-procedure . ,Spanner::set_spacing_rods) (minimum-length . 2.0) - (if-text-padding . 1.0) + (bound-padding . 1.0) (self-alignment-Y . 0) (Y-offset-callbacks . (,Self_alignment_interface::aligned_on_self)) - (meta . ((interfaces . (hairpin-interface line-interface self-alignment-interface dynamic-interface spanner-interface)))) + (meta . ((class . Spanner) + (interfaces . (hairpin-interface + line-interface self-alignment-interface dynamic-interface + spanner-interface)))) )) (HorizontalBracket @@ -429,8 +568,14 @@ (print-function . ,Horizontal_bracket::print) (Y-offset-callbacks . (,Side_position_interface::aligned_side)) (padding . 0.2) + (staff-padding . 0.2) (direction . -1) - (meta . ((interfaces . (horizontal-bracket-interface side-position-interface spanner-interface)))) + (bracket-flare . (0.5 . 0.5)) + (meta . ((class . Spanner) + (interfaces . (horizontal-bracket-interface + side-position-interface + line-interface + spanner-interface)))) )) (InstrumentName . ( @@ -445,37 +590,41 @@ )) (self-alignment-Y . 0) - (print-function . ,Text_item::print) + (print-function . ,Text_interface::print) (break-align-symbol . instrument-name) (break-visibility . ,begin-of-line-visible) (baseline-skip . 2) - (meta . ((interfaces . (font-interface self-alignment-interface side-position-interface text-interface break-aligned-interface item-interface )))) + (meta . ((class . Item) + (interfaces . (font-interface + self-alignment-interface side-position-interface text-interface + break-aligned-interface )))) )) - - (VocalName + + (KeyCancellation . ( - (breakable . #t) - (Y-offset-callbacks . (,Side_position_interface::aligned_on_support_refpoints)) - (direction . 0) - (space-alist . ((left-edge . (extra-space . 1.0)) + (print-function . ,Key_signature_interface::print) + (space-alist . ( + (time-signature . (extra-space . 1.25)) + (staff-bar . (extra-space . 0.6)) + (key-signature . (extra-space . 0.5)) + (right-edge . (extra-space . 0.5)) + (first-note . (fixed-space . 2.5)) )) - (break-align-symbol . instrument-name) - (print-function . ,Text_item::print) - (break-align-symbol . clef) - (break-visibility . ,begin-of-line-visible) - (baseline-skip . 2) - (meta . ((interfaces . (font-interface - self-alignment-interface - side-position-interface text-interface - break-aligned-interface item-interface )))) + (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) + (break-align-symbol . key-cancellation) + (break-visibility . ,begin-of-line-invisible) + (breakable . #t) + + (meta . ((class . Item) + (interfaces . (key-signature-interface font-interface + break-aligned-interface )))) )) - (KeySignature . ( (print-function . ,Key_signature_interface::print) (space-alist . ( (time-signature . (extra-space . 1.25)) - (staff-bar . (extra-space . 1.1)) + (staff-bar . (extra-space . 1.1)) (right-edge . (extra-space . 0.5)) (first-note . (fixed-space . 2.5)) )) @@ -483,7 +632,46 @@ (break-align-symbol . key-signature) (break-visibility . ,begin-of-line-visible) (breakable . #t) - (meta . ((interfaces . (key-signature-interface font-interface break-aligned-interface item-interface )))) + + (meta . ((class . Item) + (interfaces . (key-signature-interface font-interface + break-aligned-interface )))) + )) + (LedgerLineSpanner + . ( + (print-function . ,Ledger_line_spanner::print) + (X-extent-callback . #f) + (Y-extent-callback . #f) + (minimum-length-fraction . 0.25) + (length-fraction . 0.25) + (spacing-procedure . ,Ledger_line_spanner::set_spacing_rods) + (print-function . ,Ledger_line_spanner::print) + (layer . 0) + (meta . ((class . Spanner) + (interfaces . (ledger-line-interface)))) + )) + + (LeftEdge + . ( + (break-align-symbol . left-edge) + (X-extent . (0 . 0)) + (breakable . #t) + (break-visibility . ,center-invisible) + (space-alist . ( + (custos . (extra-space . 0.0)) + (ambitus . (extra-space . 2.0)) + (time-signature . (extra-space . 0.0)) + (staff-bar . (extra-space . 0.0)) + (breathing-sign . (minimum-space . 0.0)) + (clef . (extra-space . 0.8)) + (first-note . (fixed-space . 1.0)) + (right-edge . (extra-space . 0.0)) + (key-signature . (extra-space . 0.0)) + (key-cancellation . (extra-space . 0.0)) + + )) + (meta . ((class . Item) + (interfaces . (break-aligned-interface )))) )) (LigatureBracket @@ -498,7 +686,8 @@ (before-line-breaking-callback . ,Tuplet_bracket::before_line_breaking) (after-line-breaking-callback . ,Tuplet_bracket::after_line_breaking) (print-function . ,Tuplet_bracket::print) - (meta . ((interfaces . (tuplet-bracket-interface spanner-interface)))) + (meta . ((class . Spanner) + (interfaces . (tuplet-bracket-interface line-interface)))) )) (LyricHyphen @@ -507,10 +696,13 @@ (height . 0.42) (dash-period . 10.0) (length . 0.66) - (spacing-procedure . ,Hyphen_spanner::set_spacing_rods) + (minimum-length . 0.3) + (padding . 0.07) + ; (spacing-procedure . ,Hyphen_spanner::set_spacing_rods) (print-function . ,Hyphen_spanner::print) - (Y-extent . (0 . 0)) - (meta . ((interfaces . (lyric-interface lyric-hyphen-interface + (Y-extent . (0 . 0)) + (meta . ((class . Spanner) + (interfaces . (lyric-interface lyric-hyphen-interface spanner-interface)))) )) @@ -520,18 +712,23 @@ (thickness . 0.8) ; linethickness (minimum-length . 1.5) (Y-extent . (0 . 0)) - (meta . ((interfaces . (lyric-interface - lyric-extender-interface spanner-interface)))) + (meta . ((class . Spanner) + (interfaces . (lyric-interface + lyric-extender-interface)))) )) (LyricText - . ((print-function . ,Text_item::print) + . ((print-function . ,Text_interface::print) (X-offset-callbacks . (,Self_alignment_interface::aligned_on_parent)) (self-alignment-X . 0) (word-space . 0.6) (font-series . bold-narrow) (font-size . 1.0) - (meta . ((interfaces . (rhythmic-grob-interface lyric-syllable-interface self-alignment-interface text-interface font-interface item-interface )))) + (meta . ((class . Item) + (interfaces . (rhythmic-grob-interface + lyric-syllable-interface + self-alignment-interface text-interface + font-interface )))) )) (MensuralLigature @@ -540,33 +737,20 @@ (flexa-width . 2.0) (ligature-primitive-callback . ,Mensural_ligature::brew_ligature_primitive) (print-function . ,Mensural_ligature::print) - (meta . ((interfaces . (mensural-ligature-interface font-interface)))) + (meta . ((class . Spanner) + (interfaces . (mensural-ligature-interface font-interface)))) )) - (RehearsalMark + (MetronomeMark . ( - (print-function . ,Text_item::print) - (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self)) - (Y-offset-callbacks . (,Side_position_interface::aligned_side)) - (after-line-breaking-callback . ,shift-right-at-line-begin) - (self-alignment-X . 0) - (direction . 1) - (breakable . #t) - (font-size . 2) - (baseline-skip . 2) - (break-visibility . ,end-of-line-invisible) - (padding . 0.8) - (meta . ((interfaces . (text-interface side-position-interface font-interface mark-interface self-alignment-interface item-interface )))) - )) - (MetronomeMark - . ( - (print-function . ,Text_item::print) + (print-function . ,Text_interface::print) (Y-offset-callbacks . (,Side_position_interface::aligned_side)) (direction . 1) - (breakable . #t) - (break-visibility . ,end-of-line-invisible) (padding . 0.8) - (meta . ((interfaces . (text-interface side-position-interface font-interface metronome-mark-interface item-interface)))) + (meta . ((class . Item) + (interfaces . (text-interface + side-position-interface font-interface + metronome-mark-interface)))) )) (MeasureGrouping . ( @@ -577,7 +761,9 @@ (thickness . 1) (height . 2.0) (staff-padding . 3) - (meta . ((interfaces . (spanner-interface side-position-interface measure-grouping-interface)))) + (meta . ((class . Spanner) + (interfaces . (side-position-interface + measure-grouping-interface)))) )) (MultiMeasureRest . ( @@ -589,41 +775,51 @@ (thick-thickness . 6.6) (hair-thickness . 2.0) (padding . 1) - (font-encoding . fetaMusic) - (meta . ((interfaces . (multi-measure-rest-interface multi-measure-interface rest-interface font-interface staff-symbol-referencer-interface)))) + (meta . ((class . Spanner) + (interfaces . (multi-measure-rest-interface + multi-measure-interface rest-interface + font-interface staff-symbol-referencer-interface)))) )) - + (MultiMeasureRestNumber . ( - (print-function . ,Text_item::print) + (print-function . ,Text_interface::print) (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self ,Self_alignment_interface::centered_on_other_axis_parent)) (Y-offset-callbacks . (,Side_position_interface::aligned_side)) (self-alignment-X . 0) (direction . 1) - (padding . 1.3) - (staff-padding . 1.3) + (padding . 0.4) + (staff-padding . 0.4) (font-encoding . fetaNumber) - (meta . ((interfaces . (side-position-interface multi-measure-interface self-alignment-interface font-interface spanner-interface text-interface)))) + (meta . ((class . Spanner) + (interfaces . (side-position-interface + multi-measure-interface self-alignment-interface + font-interface text-interface)))) )) (MultiMeasureRestText . ( - (print-function . ,Text_item::print) + (print-function . ,Text_interface::print) (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self ,Self_alignment_interface::centered_on_other_axis_parent)) (Y-offset-callbacks . (,Side_position_interface::aligned_side)) (self-alignment-X . 0) (direction . 1) - (padding . 1.5) - (staff-padding . 1.5) - (meta . ((interfaces . (side-position-interface multi-measure-interface self-alignment-interface font-interface spanner-interface text-interface)))) + (padding . 0.2) + (staff-padding . 0.25) + (meta . ((class . Spanner) + (interfaces . (side-position-interface + multi-measure-interface self-alignment-interface font-interface + text-interface)))) )) - (NoteCollision + + (NoteCollision . ( (axes . (0 1)) (X-extent-callback . ,Axis_group_interface::group_extent_callback) (Y-extent-callback . ,Axis_group_interface::group_extent_callback) - (meta . ((interfaces . (note-collision-interface axis-group-interface item-interface )))) + (meta . ((class . Item) + (interfaces . (note-collision-interface axis-group-interface )))) )) (NoteColumn @@ -631,50 +827,43 @@ (axes . (0 1)) (X-extent-callback . ,Axis_group_interface::group_extent_callback) (Y-extent-callback . ,Axis_group_interface::group_extent_callback) - (meta . ((interfaces . (axis-group-interface note-column-interface item-interface )))) + (meta . ((class . Item) + (interfaces . (axis-group-interface note-column-interface )))) )) (NoteHead . ( - (style . default) (print-function . ,Note_head::print) (ligature-primitive-callback . ,Note_head::print) (glyph-name-procedure . ,find-notehead-symbol) - (X-extent-callback . ,Note_head::extent) - (Y-extent-callback . ,Note_head::extent) - (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) + (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) (stem-attachment-function . ,note-head-style->attachment-coordinates) - (meta . ((interfaces . (rhythmic-grob-interface rhythmic-head-interface font-interface note-head-interface staff-symbol-referencer-interface item-interface )))) + (meta . ((class . Item) + (interfaces . (rhythmic-grob-interface + rhythmic-head-interface font-interface note-head-interface + ledgered-interface + staff-symbol-referencer-interface )))) )) (NoteSpacing . ( (stem-spacing-correction . 0.5) - + (same-direction-correction . 0.25) ;; Changed this from 0.75. ;; If you ever change this back, please document! --hwn (knee-spacing-correction . 1.0) - (meta . ((interfaces . (spacing-interface note-spacing-interface item-interface )))) + (meta . ((class . Item) + (interfaces . (spacing-interface note-spacing-interface )))) )) - (VoiceFollower - . ( - (style . line) - (gap . 0.5) - (breakable . #t) - (X-extent-callback . #f) - (Y-extent-callback . #f) - (print-function . ,Line_spanner::print) - (after-line-breaking-callback . ,Line_spanner::after_line_breaking) - (meta . ((interfaces . (line-spanner-interface spanner-interface)))) - )) (NoteName . ( - (print-function . ,Text_item::print) - (meta . ((interfaces . (note-name-interface - text-interface font-interface item-interface )))) + (print-function . ,Text_interface::print) + (meta . ((class . Item) + (interfaces . (note-name-interface + text-interface font-interface )))) )) (OctavateEight @@ -683,15 +872,35 @@ (break-visibility . ,begin-of-line-visible) (X-offset-callbacks . (,Self_alignment_interface::centered_on_parent ,Self_alignment_interface::aligned_on_self)) (Y-offset-callbacks . (,Side_position_interface::aligned_side)) - (print-function . ,Text_item::print) + (print-function . ,Text_interface::print) ;; no Y dimensions, because of lyrics under tenor clef. - (Y-extent-callback . #f) + (Y-extent . (0 . 0)) (font-shape . italic) (padding . 0.6) (staff-padding . 0.2) (font-size . -4) - (meta . ((interfaces . (text-interface self-alignment-interface side-position-interface font-interface item-interface )))) + (meta . ((class . Item) + (interfaces . (text-interface self-alignment-interface + side-position-interface font-interface )))) + )) + + (OttavaBracket + . ( + (Y-offset-callbacks . (,Side_position_interface::aligned_side)) + (print-function . ,Ottava_bracket::print) + (font-shape . italic) + (shorten-pair . (0.0 . -0.6)) + (staff-padding . 1.0) + (padding . 0.5) + (minimum-length . 1.0) + (dash-fraction . 0.3) + (edge-height . (0 . 1.2)) + (direction . 1) + (meta . ((class . Spanner) + (interfaces . (ottava-bracket-interface + line-interface side-position-interface + font-interface text-interface)))) )) (PaperColumn @@ -700,33 +909,24 @@ (before-line-breaking-callback . ,Paper_column::before_line_breaking) (X-extent-callback . ,Axis_group_interface::group_extent_callback) -;ppp (print-function . ,Paper_column::print) (font-name . "cmr8") (Y-extent-callback . #f) - (meta . ((interfaces . (paper-column-interface axis-group-interface spaceable-grob-interface item-interface )))) + ;; debugging + ;; (print-function . ,Paper_column::print) (font-size . -6) (font-name . "sans") (Y-extent-callback . #f) + (meta . ((class . Paper_column) + (interfaces . (paper-column-interface axis-group-interface spaceable-grob-interface )))) )) (PhrasingSlur - . ( + . ((slur-details . ,default-slur-details) (print-function . ,Slur::print) - (thickness . 1.2) + (thickness . 1.1) (spacing-procedure . ,Spanner::set_spacing_rods) (minimum-length . 1.5) (after-line-breaking-callback . ,Slur::after_line_breaking) - (extremity-function . ,calc-slur-extremity) - (extremity-offset-alist . ,default-phrasing-slur-extremity-offset-alist) - (de-uglify-parameters . (1.5 0.8 -2.0)) (Y-extent-callback . ,Slur::height) (height-limit . 2.0) (ratio . 0.333) - (beautiful . 0.5) - (y-free . 0.75) - (attachment . (#f . #f)) - (attachment-offset . ((0 . 0) . (0 . 0))) - (slope-limit . 0.8) - (details . ((force-blowfit . 0.5) - (bezier-pct-c0 . -0.2) (bezier-pct-c3 . 0.000006) - (bezier-pct-out-max . 0.8) (bezier-pct-in-max . 1.2) - (bezier-area-steps . 1.0))) - (meta . ((interfaces . (slur-interface spanner-interface)))) + (meta . ((class . Spanner) + (interfaces . (slur-interface)))) )) (NonMusicalPaperColumn @@ -735,11 +935,13 @@ (X-extent-callback . ,Axis_group_interface::group_extent_callback) (before-line-breaking-callback . ,Paper_column::before_line_breaking) (breakable . #t) + ;; debugging stuff: print column number. -; (print-function . ,Paper_column::print) (font-name . "cmr8") (Y-extent-callback . #f) + ;; (print-function . ,Paper_column::print) (font-size . -6) (font-name . "sans") (Y-extent-callback . #f) - (meta . ((interfaces . (paper-column-interface axis-group-interface spaceable-grob-interface item-interface )))) + (meta . ((class . Paper_column) + (interfaces . (paper-column-interface axis-group-interface spaceable-grob-interface )))) )) (PercentRepeat @@ -749,30 +951,56 @@ (slope . 1.0) (thickness . 0.48) (font-encoding . fetaMusic) - (meta . ((interfaces . (multi-measure-rest-interface spanner-interface font-interface percent-repeat-interface)))) + (meta . ((class . Spanner) + (interfaces . (multi-measure-rest-interface + font-interface percent-repeat-interface)))) )) - (PianoPedalBracket ;; an example of a text spanner + ;; an example of a text spanner + (PianoPedalBracket . ( (print-function . ,Piano_pedal_bracket::print) (style . line) - (if-text-padding . 1.0) + (bound-padding . 1.0) (direction . -1) (bracket-flare . (0.5 . 0.5)) (edge-height . (1.0 . 1.0)) (shorten-pair . (0.0 . 0.0)) (thickness . 1.0) - (meta . ((interfaces . (line-interface piano-pedal-interface piano-pedal-bracket-interface spanner-interface)))) + (meta . ((class . Spanner) + (interfaces . (line-interface + piano-pedal-interface piano-pedal-bracket-interface)))) )) + (RehearsalMark + . ( + (print-function . ,Text_interface::print) + (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self)) + (Y-offset-callbacks . (,Side_position_interface::aligned_side)) + (after-line-breaking-callback . ,shift-right-at-line-begin) + (self-alignment-X . 0) + (direction . 1) + (breakable . #t) + (font-size . 2) + (baseline-skip . 2) + (break-visibility . ,end-of-line-invisible) + (padding . 0.8) + (meta . ((class . Item) + (interfaces . (text-interface + side-position-interface font-interface mark-interface + self-alignment-interface )))) + )) + (RemoveEmptyVerticalGroup . ( (Y-offset-callbacks . (,Hara_kiri_group_spanner::force_hara_kiri_callback)) (Y-extent-callback . ,Hara_kiri_group_spanner::y_extent) - (remove-first . #t) (axes . (1)) - (meta . ((interfaces . (axis-group-interface hara-kiri-group-interface item-interface spanner-interface)))) + (meta . ((class . Spanner) + (interfaces . (axis-group-interface + vertically-spaceable-interface hara-kiri-group-interface + spanner-interface)))) )) (RepeatSlash @@ -780,7 +1008,8 @@ (print-function . ,Percent_repeat_item_interface::beat_slash) (thickness . 0.48) (slope . 1.7) - (meta . ((interfaces . (percent-repeat-interface item-interface )))) + (meta . ((class . Item) + (interfaces . (percent-repeat-interface )))) )) (Rest . ( @@ -792,18 +1021,19 @@ ,Rest::polyphonic_offset_callback )) (minimum-distance . 0.25) - (meta . ( + (meta . ((class . Item) (interfaces . (font-interface rhythmic-head-interface rhythmic-grob-interface staff-symbol-referencer-interface - rest-interface item-interface )) - )))) + rest-interface )) + )))) (RestCollision . ( (minimum-distance . 0.75) - (meta . ((interfaces . (rest-collision-interface item-interface )))) + (meta . ((class . Item) + (interfaces . (rest-collision-interface )))) )) (Script @@ -819,79 +1049,110 @@ (X-offset-callbacks . (,Self_alignment_interface::centered_on_parent)) (before-line-breaking-callback . ,Script_interface::before_line_breaking) (font-encoding . fetaMusic) - (meta . ((interfaces . (script-interface side-position-interface font-interface item-interface )))) + (meta . ((class . Item) + (interfaces . (script-interface + side-position-interface font-interface )))) )) (ScriptColumn . ( (before-line-breaking-callback . ,Script_column::before_line_breaking) - (meta . ((interfaces . (script-column-interface item-interface )))) + (meta . ((class . Item) + (interfaces . (script-column-interface )))) )) - (Slur + + (SeparationItem . ( + (X-extent-callback . #f) + (Y-extent-callback . #f) + (meta . ((class . Item) + (interfaces . (spacing-interface separation-item-interface )))) + )) + + (SeparatingGroupSpanner + . ( + (spacing-procedure . ,Separating_group_spanner::set_spacing_rods) + (meta . ((class . Spanner) + (interfaces . (only-prebreak-interface spacing-interface separation-spanner-interface)))) + )) + + (Slur + . ((slur-details . ,default-slur-details) (print-function . ,Slur::print) - (thickness . 1.2) + (thickness . 1.0) (spacing-procedure . ,Spanner::set_spacing_rods) (minimum-length . 1.5) (after-line-breaking-callback . ,Slur::after_line_breaking) - (extremity-function . ,calc-slur-extremity) - (extremity-offset-alist . ,default-slur-extremity-offset-alist) - (de-uglify-parameters . (1.5 0.8 -2.0)) (Y-extent-callback . ,Slur::height) + ; Slur::height) (height-limit . 2.0) - (ratio . 0.333) - (beautiful . 0.5) - (y-free . 0.75) - (attachment . (#f . #f)) - (attachment-offset . ((0 . 0) . (0 . 0))) - (slope-limit . 0.8) - (details . ((force-blowfit . 0.5) - (bezier-pct-c0 . -0.2) (bezier-pct-c3 . 0.000006) - (bezier-pct-out-max . 0.8) (bezier-pct-in-max . 1.2) - (bezier-area-steps . 1.0))) - (meta . ((interfaces . (slur-interface spanner-interface)))) + (ratio . 0.25) + (meta . ((class . Spanner) + (interfaces . (slur-interface)))) )) (SpacingSpanner . ( - (spacing-procedure . ,Spacing_spanner::set_springs) + (spacing-procedure . ,Spacing_spanner::set_springs) (grace-space-factor . 0.6) (shortest-duration-space . 2.0) (spacing-increment . 1.2) - (base-shortest-duration . ,(ly:make-moment 1 8)) - (meta . ((interfaces . (spacing-interface spacing-spanner-interface spanner-interface)))) + (base-shortest-duration . ,(ly:make-moment 3 16)) + (meta . ((class . Spanner) + (interfaces . (spacing-interface spacing-spanner-interface)))) )) (SpanBar . ( (break-align-symbol . staff-bar) - (bar-size-procedure . ,Span_bar::get_bar_size) + (bar-size-procedure . ,Span_bar::get_bar_size) (print-function . ,Span_bar::print) (X-extent-callback . ,Span_bar::width_callback) (Y-extent-callback . ()) + (layer . 0) (breakable . #t) (before-line-breaking-callback . ,Span_bar::before_line_breaking) - ;; ugh duplication! + ;; ugh duplication! ;; ;; Ross. page 151 lists other values, we opt for a leaner look - ;; + ;; (kern . 3.0) (thin-kern . 3.0) (hair-thickness . 1.6) (thick-thickness . 6.0) - (meta . ((interfaces . (span-bar-interface font-interface - bar-line-interface item-interface )))) + (meta . ((class . Item) + (interfaces . (span-bar-interface font-interface + bar-line-interface )))) )) (StanzaNumber - . ((print-function . ,Text_item::print) + . ((print-function . ,Text_interface::print) (font-series . bold) (padding . 1.0) (X-offset-callbacks . (,Side_position_interface::aligned_side)) - (direction . ,LEFT) - (meta . ((interfaces . (side-position-interface stanza-number-interface text-interface font-interface item-interface )))) + (direction . ,LEFT) + (meta . ((class . Item) + (interfaces . (side-position-interface + stanza-number-interface text-interface font-interface )))) + )) + + (StringNumber + . ( + (print-function . ,print-circled-text-callback) + (padding . 0.5) + (staff-padding . 0.5) + (self-alignment-X . 0) + (self-alignment-Y . 0) + (script-priority . 100) + (font-encoding . fetaNumber) + (font-size . -5) ; don't overlap when next to heads. + (meta . ((class . Item) + (interfaces . (string-number-interface + font-interface text-script-interface text-interface + side-position-interface self-alignment-interface + item-interface)))) )) (StaffSpacing @@ -899,22 +1160,25 @@ (breakable . #t) (stem-spacing-correction . 0.4) - (meta . ((interfaces . (spacing-interface staff-spacing-interface item-interface )))) + (meta . ((class . Item) + (interfaces . (spacing-interface staff-spacing-interface )))) )) (SostenutoPedal . ( - (print-function . ,Text_item::print) + (print-function . ,Text_interface::print) (direction . 1) (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self)) (no-spacing-rods . #t) (padding . 0.0) ;; padding relative to SostenutoPedalLineSpanner (font-shape . italic) (self-alignment-X . 0) - (meta . ((interfaces . (text-interface self-alignment-interface font-interface item-interface)))) + (meta . ((class . Item) + (interfaces . (text-interface + self-alignment-interface font-interface)))) )) - (SostenutoPedalLineSpanner + (SostenutoPedalLineSpanner . ( (axes . (1)) (Y-extent-callback . ,Axis_group_interface::group_extent_callback) @@ -924,18 +1188,21 @@ (padding . 1.2) (minimum-space . 1.0) (direction . -1) - (meta . ((interfaces . (piano-pedal-interface axis-group-interface side-position-interface spanner-interface)))) + (meta . ((class . Spanner) + (interfaces . (piano-pedal-interface + axis-group-interface side-position-interface)))) )) (StaffSymbol . ( (print-function . ,Staff_symbol::print) (line-count . 5) - (ledger-line-thickness . (1.0 . 0.1)) + (ledger-line-thickness . (1.0 . 0.1)) (layer . 0) - (meta . ((interfaces . (staff-symbol-interface spanner-interface)))) + (meta . ((class . Spanner) + (interfaces . (staff-symbol-interface)))) )) - + (Stem . ( ;; this list is rather long. Trim --hwn @@ -964,23 +1231,24 @@ ;; FIXME this should come from 'lengths -; (beamed-lengths . (3.26 3.26 1.5)) - (beamed-lengths . (3.5 3.5 3.5 4.5 5.0)) + (beamed-lengths . (3.26 3.5 3.6)) ;; We use the normal minima as minimum for the ideal lengths, ;; and the extreme minima as abolute minimum length. ;; The 'normal' minima (beamed-minimum-free-lengths . (1.83 1.5 1.25)) + ;(beamed-minimum-free-lengths . (2.0 1.83 1.25)) ;; The 'extreme case' minima (beamed-extreme-minimum-free-lengths . (2.0 1.25)) - (X-offset-callbacks . (,Stem::off_callback)) - (X-extent-callback . ,Stem::dim_callback) + (X-offset-callbacks . (,Stem::offset_callback)) + (X-extent-callback . ,Stem::width_callback) (Y-extent-callback . ,Stem::height) (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) - (meta . ((interfaces . (stem-interface font-interface item-interface )))) + (meta . ((class . Item) + (interfaces . (stem-interface font-interface )))) )) (StemTremolo @@ -991,20 +1259,8 @@ (beam-width . 1.6) ; staff-space (beam-thickness . 0.48) ; staff-space - (meta . ((interfaces . (stem-tremolo-interface item-interface )))) - )) - - (SeparationItem - . ( - (X-extent-callback . #f) - (Y-extent-callback . #f) - (meta . ((interfaces . (spacing-interface separation-item-interface item-interface )))) - )) - - (SeparatingGroupSpanner - . ( - (spacing-procedure . ,Separating_group_spanner::set_spacing_rods) - (meta . ((interfaces . (only-prebreak-interface spacing-interface separation-spanner-interface spanner-interface)))) + (meta . ((class . Item) + (interfaces . (stem-tremolo-interface )))) )) (SustainPedal @@ -1015,10 +1271,13 @@ (direction . 1) (padding . 0.0) ;; padding relative to SustainPedalLineSpanner (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self)) - (meta . ((interfaces . (piano-pedal-interface text-spanner-interface text-interface self-alignment-interface font-interface item-interface)))) + (meta . ((class . Item) + (interfaces . (piano-pedal-interface + text-spanner-interface text-interface self-alignment-interface + font-interface)))) )) - (SustainPedalLineSpanner + (SustainPedalLineSpanner . ( (axes . (1)) (Y-extent-callback . ,Axis_group_interface::group_extent_callback) @@ -1028,7 +1287,9 @@ (staff-padding . 1.2) (minimum-space . 1.0) (direction . -1) - (meta . ((interfaces . (piano-pedal-interface axis-group-interface side-position-interface spanner-interface)))) + (meta . ((class . Spanner) + (interfaces . (piano-pedal-interface + axis-group-interface side-position-interface)))) )) (System @@ -1036,7 +1297,8 @@ (axes . (0 1)) (X-extent-callback . ,Axis_group_interface::group_extent_callback) (Y-extent-callback . ,Axis_group_interface::group_extent_callback) - (meta . ((interfaces . (system-interface axis-group-interface spanner-interface)))) + (meta . ((class . System) + (interfaces . (system-interface axis-group-interface)))) )) (SystemStartBrace @@ -1046,21 +1308,21 @@ (collapse-height . 5.0) (font-encoding . fetaBraces) (Y-extent-callback . #f) - (meta . ((interfaces . (system-start-delimiter-interface font-interface)))) + (meta . ((class . Spanner) + (interfaces . (system-start-delimiter-interface font-interface)))) )) (SystemStartBracket . ( (Y-extent-callback . #f) + (X-offset-callbacks . (,(lambda (g a) -0.8))) (print-function . ,System_start_delimiter::print) (glyph . "bracket") - (arch-height . 1.5) - (arch-angle . 50.0) - (arch-thick . 0.25) - (arch-width . 1.5) (collapse-height . 1) - (thickness . 0.25) - (meta . ((interfaces . (system-start-delimiter-interface spanner-interface)))) + (thickness . 0.45) + (meta . ((class . Spanner) + (interfaces . (font-interface system-start-delimiter-interface + )))) )) (SystemStartBar @@ -1070,122 +1332,153 @@ (glyph . "bar-line") (thickness . 1.6) (after-line-breaking-callback . ,System_start_delimiter::after_line_breaking) - (meta . ((interfaces . (system-start-delimiter-interface spanner-interface)))) + (meta . ((class . Spanner) + (interfaces . (system-start-delimiter-interface)))) )) - (TextScript + + (TabNoteHead . ( - (print-function . ,Text_item::print) - (no-spacing-rods . #t) - (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self)) - (direction . -1) - (padding . 0.5) - (staff-padding . 0.5) - (script-priority . 200) - ;; todo: add X self alignment? - (meta . ((interfaces . (text-script-interface text-interface side-position-interface font-interface item-interface )))) + (print-function . ,Text_interface::print) + (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) + (font-size . -2) + (stem-attachment-function . ,tablature-stem-attachment-function) + (font-series . bold) + (meta . ((class . Item) + (interfaces + . (rhythmic-head-interface + font-interface + note-head-interface staff-symbol-referencer-interface + text-interface )))) )) - (CombineTextScript + + + (TextScript . ( - (print-function . ,Text_item::print) + (print-function . ,Text_interface::print) (no-spacing-rods . #t) - (Y-offset-callbacks . (,Side_position_interface::aligned_side)) (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self)) - (direction . 1) - (extra-offset . (-1 . 0)) + (direction . -1) + + ; sync with Fingering ? (padding . 0.5) (staff-padding . 0.5) (script-priority . 200) ;; todo: add X self alignment? - (baseline-skip . 2) - (font-series . bold) - (meta . ((interfaces . (text-script-interface text-interface side-position-interface font-interface item-interface )))) + (meta . ((class . Item) + (interfaces . (text-script-interface + text-interface side-position-interface font-interface + )))) )) + (TextSpanner . ( (print-function . ,Text_spanner::print) (font-shape . italic) (style . dashed-line) - (staff-padding . 0.1) - - ;; urg, only for (de)cresc. text spanners - (if-text-padding . 1.0) + (staff-padding . 0.8) (dash-fraction . 0.2) (dash-period . 3.0) (direction . 1) - (meta . ((interfaces . (text-spanner-interface side-position-interface font-interface spanner-interface)))) - )) - - (OttavaBracket - . ( - (Y-offset-callbacks . (,Side_position_interface::aligned_side)) - (print-function . ,Ottava_bracket::print) - (font-shape . italic) - (shorten-pair . (0.0 . -0.6)) - (staff-padding . 1.0) - (padding . 0.5) - (minimum-length . 1.0) - (dash-fraction . 0.3) - (edge-height . (0 . 1.2)) - (direction . 1) - (meta . ((interfaces . (ottava-bracket-interface - line-interface side-position-interface - font-interface text-interface spanner-interface)))) + (meta . ((class . Spanner) + (interfaces . (text-spanner-interface + side-position-interface font-interface)))) )) - - (TabNoteHead - . ( - (style . default) - (print-function . ,Text_item::print) - (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) - (extra-offset . (0 . -0.65)) ;; UGH! TODO: Clean this up! - (stem-attachment-function . ,tablature-stem-attachment-function) - (meta . ((interfaces - . (rhythmic-head-interface - font-interface - note-head-interface staff-symbol-referencer-interface - text-interface item-interface )))) - )) - + (Tie . ( (print-function . ,Tie::print) (spacing-procedure . ,Spanner::set_spacing_rods) (staffline-clearance . 0.35) (details . ((ratio . 0.333) (height-limit . 1.0))) - (thickness . 1.2) + (thickness . 1.0) (x-gap . -0.1) (y-offset . 0.6) - (minimum-length . 2.5) - (meta . ((interfaces . (tie-interface spanner-interface)))) + (minimum-length . 2.5) + (meta . ((class . Spanner) + (interfaces . (tie-interface)))) )) (TieColumn . ( (after-line-breaking-callback . ,Tie_column::after_line_breaking) + (before-line-breaking-callback . ,Tie_column::before_line_breaking) (X-extent-callback . #f) (Y-extent-callback . #f) - (meta . ((interfaces . (tie-column-interface spanner-interface)))) + (meta . ((class . Spanner) + (interfaces . (tie-column-interface)))) )) (TimeSignature . ( (print-function . ,Time_signature::print) -; (print-function . ,Text_item::print) (break-align-symbol . time-signature) (break-visibility . ,all-visible) (space-alist . ( (first-note . (fixed-space . 2.0)) (right-edge . (extra-space . 0.5)) - (staff-bar . (minimum-space . 2.0)) + (staff-bar . (minimum-space . 2.0)) )) (breakable . #t) (style . C) -; (text . (,time-signature-glue-markup)) - (meta . ((interfaces . (time-signature-interface break-aligned-interface font-interface item-interface )))) + (meta . ((class . Item) + (interfaces . (time-signature-interface break-aligned-interface font-interface )))) )) + + (TrillSpanner + . ( + (print-function . ,Dynamic_text_spanner::print) + (edge-text . ,(cons (make-musicglyph-markup "scripts.trill") + "")) + (style . trill) + (staff-padding . 1.0) + (padding . 0.5) + (direction . 1) + (Y-offset-callbacks . (,Side_position_interface::aligned_side)) + (meta . ((class . Spanner) + (interfaces . (text-spanner-interface side-position-interface font-interface)))) + )) + + (TrillPitchAccidental + . ((X-offset-callbacks . (,Side_position_interface::aligned_side)) + (padding . 0.2) + (direction . ,LEFT) + (font-size . -4) + (print-function . ,Accidental_interface::print) + (meta . ((class . Item) + (interfaces . (item-interface + accidental-interface + side-position-interface font-interface)))) + )) + + (TrillPitchGroup + . ((X-offset-callbacks . (,Side_position_interface::aligned_side)) + (axes . (,X)) + (font-size . -4) + (print-function . ,parenthesize-elements) + (direction . ,RIGHT) + (padding . 0.3) + (meta . ((class . Item) + (interfaces . (side-position-interface + note-head-interface rhythmic-head-interface + font-interface accidental-interface + axis-group-interface)))) + )) + + (TrillPitchHead + . ((print-function . ,Note_head::print) + (duration-log . 2) + (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) + (font-size . -4) + (meta . ((class . Item) + (interfaces . (item-interface + rhythmic-head-interface + font-interface pitched-trill-interface + ledgered-interface staff-symbol-referencer-interface)))) + )) + (TupletBracket . ( (padding . 1.1) @@ -1196,25 +1489,28 @@ (after-line-breaking-callback . ,Tuplet_bracket::after_line_breaking) (print-function . ,Tuplet_bracket::print) (font-shape . italic) - (font-series . bold) (font-size . -2) - (meta . ((interfaces . (text-interface line-interface tuplet-bracket-interface font-interface spanner-interface)))) + (meta . ((class . Spanner) + (interfaces . (text-interface line-interface + tuplet-bracket-interface + font-interface)))) )) (UnaCordaPedal . ( - (print-function . ,Text_item::print) + (print-function . ,Text_interface::print) (font-shape . italic) (no-spacing-rods . #t) (self-alignment-X . 0) (direction . 1) (padding . 0.0) ;; padding relative to UnaCordaPedalLineSpanner (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self)) - (meta . ((interfaces . (text-interface self-alignment-interface font-interface item-interface )))) + (meta . ((class . Item) + (interfaces . (text-interface self-alignment-interface font-interface )))) )) - (UnaCordaPedalLineSpanner + (UnaCordaPedalLineSpanner . ( (axes . (1)) (Y-extent-callback . ,Axis_group_interface::group_extent_callback) @@ -1223,7 +1519,8 @@ (staff-padding . 1.2) (minimum-space . 1.0) (direction . -1) - (meta . ((interfaces . (piano-pedal-interface axis-group-interface side-position-interface spanner-interface)))) + (meta . ((class . Spanner) + (interfaces . (piano-pedal-interface axis-group-interface side-position-interface)))) )) (VaticanaLigature @@ -1232,30 +1529,19 @@ (flexa-width . 2.0) (ligature-primitive-callback . ,Vaticana_ligature::brew_ligature_primitive) (print-function . ,Vaticana_ligature::print) - (meta . ((interfaces . (vaticana-ligature-interface font-interface)))) + (meta . ((class . Spanner) + (interfaces . (vaticana-ligature-interface font-interface)))) )) - (VoltaBracket - . ( - (print-function . ,Volta_bracket_interface::print) - (direction . 1) - (padding . 1) - (font-encoding . fetaNumber) - (Y-offset-callbacks . (,Side_position_interface::aligned_side)) - (thickness . 1.6) ; linethickness - (height . 2.0) ; staffspace; - (minimum-space . 5) - (font-size . -4) - (meta . ((interfaces . (volta-bracket-interface line-interface text-interface side-position-interface font-interface spanner-interface)))) - )) - + (VerticalAlignment . ( (axes . (1)) (Y-extent-callback . ,Axis_group_interface::group_extent_callback) (X-extent-callback . ,Axis_group_interface::group_extent_callback) (stacking-dir . -1) - (meta . ((interfaces . (align-interface axis-group-interface spanner-interface)))) + (meta . ((class . Spanner) + (interfaces . (align-interface axis-group-interface)))) )) (VerticalAxisGroup @@ -1264,45 +1550,112 @@ (Y-extent-callback . ,Axis_group_interface::group_extent_callback) (X-extent-callback . ,Axis_group_interface::group_extent_callback) - (meta . ((interfaces . (axis-group-interface spanner-interface)))) + (meta . ((class . Spanner) + (interfaces . (axis-group-interface + vertically-spaceable-interface)))) )) - ) - ) + (VocalName + . ( + (breakable . #t) + (Y-offset-callbacks . (,Side_position_interface::aligned_on_support_refpoints)) + (direction . 0) + (space-alist . ((left-edge . (extra-space . 1.0)) + )) + (break-align-symbol . instrument-name) + (print-function . ,Text_interface::print) + (break-align-symbol . clef) + (break-visibility . ,begin-of-line-visible) + (baseline-skip . 2) + (meta . ((class . Item) + (interfaces . (font-interface + self-alignment-interface + side-position-interface text-interface + break-aligned-interface)))) + )) + (VoltaBracket + . ( + (print-function . ,Volta_bracket_interface::print) + (direction . 1) + (padding . 1) + (font-encoding . fetaNumber) + (Y-offset-callbacks . (,Side_position_interface::aligned_side)) + (thickness . 1.6) ;; linethickness + (height . 2.0) ;; staffspace; + (minimum-space . 5) + (font-size . -4) + (meta . ((class . Spanner) + (interfaces . (volta-bracket-interface + line-interface text-interface + side-position-interface font-interface)))) + )) + (VoiceFollower + . ( + (style . line) + (gap . 0.5) + (breakable . #t) + (X-extent-callback . #f) + (Y-extent-callback . #f) + (print-function . ,Line_spanner::print) + (after-line-breaking-callback . ,Line_spanner::after_line_breaking) + (meta . ((class . Spanner) + (interfaces . (line-spanner-interface line-interface)))) + )) + )) + (define (completize-grob-entry x) - "transplant assoc key into 'name entry of 'meta of X + "transplant assoc key into 'name entry of 'meta of X. Set interfaces for Item, Spanner etc. " +;; (display (car x)) +;; (newline) (let* ((name-sym (car x)) (grob-entry (cdr x)) - (metaentry (cdr (assoc 'meta grob-entry))) + (meta-entry (cdr (assoc 'meta grob-entry))) + (class (cdr (assoc 'class meta-entry))) (ifaces-entry - (cdr (assoc 'interfaces metaentry))) - - ) - (set! metaentry (assoc-set! metaentry 'name name-sym)) - (set! metaentry (assoc-set! metaentry 'interfaces - (cons 'grob-interface ifaces-entry))) - (set! grob-entry (assoc-set! grob-entry 'meta metaentry)) + (cdr (assoc 'interfaces meta-entry))) + ) + + (cond + ((eq? 'Item class) + (set! ifaces-entry (cons 'item-interface ifaces-entry))) + ((eq? 'Spanner class) + (set! ifaces-entry (cons 'spanner-interface ifaces-entry))) + ((eq? 'Paper_column class) + (set! ifaces-entry (cons 'item-interface + (cons 'paper-column-interface ifaces-entry)))) + ((eq? 'System class) + (set! ifaces-entry (cons 'system-interface + (cons 'spanner-interface ifaces-entry)))) + (else + (ly:warning "Unknown class ~a" class))) + + + (set! ifaces-entry (cons 'grob-interface ifaces-entry)) + + (set! meta-entry (assoc-set! meta-entry 'name name-sym)) + (set! meta-entry (assoc-set! meta-entry 'interfaces + ifaces-entry)) + (set! grob-entry (assoc-set! grob-entry 'meta meta-entry)) (cons name-sym grob-entry))) (set! all-grob-descriptions (map completize-grob-entry all-grob-descriptions)) - - ; (display (map pair? all-grob-descriptions)) - +;; (display (map pair? all-grob-descriptions)) ;; make sure that \property Foo.Bar =\turnOff doesn't complain (map (lambda (x) - ; (display (car x)) (newline) + ;; (display (car x)) (newline) (set-object-property! (car x) 'translation-type? list?) (set-object-property! (car x) 'is-grob? #t)) all-grob-descriptions) - (set! all-grob-descriptions (sort all-grob-descriptions alist