;;;; This file is part of LilyPond, the GNU music typesetter.
;;;;
-;;;; Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 1998--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
;;;; Jan Nieuwenhuizen <janneke@gnu.org>
;;;;
;;;; LilyPond is free software: you can redistribute it and/or modify
;; TODO: junk the meta field in favor of something more compact?
-(define-public all-grob-descriptions
+(define-session-public all-grob-descriptions
`(
(Accidental
. (
(font-size . -2)
(glyph-name-alist . ,standard-alteration-glyph-name-alist)
(outside-staff-priority . 0)
+ (parent-alignment-X . ,CENTER)
(script-priority . 0)
(self-alignment-X . ,CENTER)
(side-axis . ,Y)
(staff-padding . 0.25)
(stencil . ,ly:accidental-interface::print)
(X-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)))))
+ (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-extent . ,accidental-interface::height)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Item)
(interfaces . (accidental-interface
accidental-suggestion-interface
font-interface
+ outside-staff-interface
script-interface
self-alignment-interface
side-position-interface))))))
(AmbitusLine
. (
- (gap . 0.35)
+ (gap . ,ambitus-line::calc-gap)
+ (length-fraction . 0.7)
+ (maximum-gap . 0.45)
(stencil . ,ambitus::print)
(thickness . 2)
(X-offset . ,ly:self-alignment-interface::centered-on-x-parent)
(Arpeggio
. (
+ (cross-staff . ,ly:arpeggio::calc-cross-staff)
(direction . ,LEFT)
(padding . 0.5)
(positions . ,ly:arpeggio::calc-positions)
;; TODO:
;; kern should scale with line-thickness too.
(kern . 3.0)
- (thin-kern . 3.0)
+ (segno-kern . 3.0)
(hair-thickness . 1.9)
(thick-thickness . 6.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)))))
+ (X-offset . ,self-alignment-interface::self-aligned-on-breakable)
(Y-offset . ,side-position-interface::y-aligned-side)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta .
((class . Item)
(interfaces . (break-alignable-interface
font-interface
+ outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
+ outside-staff-interface
side-position-interface))))))
(BassFigureBracket
(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))))))
+ (interfaces . (axis-group-interface
+ outside-staff-axis-group-interface))))))
(Beam
;; only for debugging.
(font-family . roman)
- (beam-gap . ,ly:beam::calc-beam-gap)
- (minimum-length . ,ly:beam::calc-minimum-length)
+ (gap . 0.8)
(neutral-direction . ,DOWN)
(positions . ,beam::place-broken-parts-individually)
- (springs-and-rods . ,ly:beam::calc-springs-and-rods)
(X-positions . ,ly:beam::calc-x-positions)
(transparent . ,(grob::inherit-parent-property
X 'transparent))
(interfaces . (break-aligned-interface
breathing-sign-interface
font-interface
+ outside-staff-interface
text-interface))))))
(ChordName
(meta . ((class . Item)
(interfaces . (chord-name-interface
font-interface
+ outside-staff-interface
rhythmic-grob-interface
text-interface))))))
. (
(break-visibility . ,(grob::inherit-parent-property
X 'break-visibility))
- (font-shape . italic)
- (font-size . -4)
- (transparent . ,(grob::inherit-parent-property
- X 'transparent))
+ (clef-alignments . ((G . (-0.2 . 0.1))
+ (F . (-0.3 . -0.2))
+ (C . (0 . 0))))
(color . ,(grob::inherit-parent-property
X 'color))
+ (font-shape . italic)
+ (font-size . -4)
+ (parent-alignment-X . ,ly:clef-modifier::calc-parent-alignment)
(self-alignment-X . ,CENTER)
- (staff-padding . 0.2)
+ (staff-padding . 0.7)
(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)))))
- (Y-offset . ,side-position-interface::y-aligned-side)
+ (transparent . ,(grob::inherit-parent-property
+ X 'transparent))
(vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
+ (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-extent . ,grob::always-Y-extent-from-stencil)
+ (Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Item)
(interfaces . (clef-modifier-interface
font-interface
+ outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
(font-series . bold)
(outside-staff-priority . 450)
(padding . 0.5)
+ (parent-alignment-X . #f)
(script-priority . 200)
+ (self-alignment-X . #f)
(side-axis . ,Y)
(staff-padding . 0.5)
- ;; todo: add X self alignment?
(stencil . ,ly:text-interface::print)
- (X-offset . ,ly:self-alignment-interface::x-aligned-on-self)
+ (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-offset . ,side-position-interface::y-aligned-side)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (font-interface
+ outside-staff-interface
+ self-alignment-interface
side-position-interface
text-interface
text-script-interface))))))
(DotColumn
. (
(axes . (,X))
+ (chord-dots-limit . 3)
(direction . ,RIGHT)
(positioning-done . ,ly:dot-column::calc-positioning-done)
(X-extent . ,ly:axis-group-interface::width)
(font-encoding . fetaText)
(font-size . -2)
(padding . 0.2)
+ (parent-alignment-X . ,CENTER)
(self-alignment-X . ,CENTER)
(side-axis . ,Y)
(staff-padding . 0.25)
(stencil . ,ly:text-interface::print)
- (X-offset . ,(ly:make-simple-closure
- `(,+
- ,(ly:make-simple-closure
- (list ly:self-alignment-interface::centered-on-y-parent))
- ,(ly:make-simple-closure
- (list ly:self-alignment-interface::x-aligned-on-self)))))
- (Y-offset . ,side-position-interface::y-aligned-side)
+ (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-extent . ,grob::always-Y-extent-from-stencil)
+ (Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Item)
(interfaces . (font-interface
+ outside-staff-interface
percent-repeat-interface
percent-repeat-item-interface
self-alignment-interface
(thickness . 0.48)
(meta . ((class . Item)
(interfaces . (font-interface
+ outside-staff-interface
percent-repeat-interface
percent-repeat-item-interface
rhythmic-grob-interface))))))
(direction . ,DOWN)
(minimum-space . 1.2)
(outside-staff-priority . 250)
- (outside-staff-padding . 0.6)
(padding . 0.6)
(side-axis . ,Y)
(slur-padding . 0.3)
(interfaces . (axis-group-interface
dynamic-interface
dynamic-line-spanner-interface
+ outside-staff-interface
side-position-interface))))))
(DynamicText
;; todo.
- (collision-bias . -2.0)
- (collision-padding . 0.5)
(direction . ,ly:script-interface::calc-direction)
(extra-spacing-width . (+inf.0 . -inf.0))
(font-encoding . fetaText)
(font-series . bold)
(font-shape . italic)
+ (parent-alignment-X . ,CENTER)
(positioning-done . ,ly:script-interface::calc-positioning-done)
(right-padding . 0.5)
(self-alignment-X . ,CENTER)
- (self-alignment-Y . ,CENTER)
(stencil . ,ly:text-interface::print)
(vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
(Y-extent . ,grob::always-Y-extent-from-stencil)
- (X-offset . ,ly:self-alignment-interface::x-aligned-on-self)
- (Y-offset . ,self-alignment-interface::y-aligned-on-self)
+ (X-align-on-main-noteheads . #t)
+ (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
+ (Y-offset . ,(scale-by-font-size -0.6)) ; center on an 'm'
(meta . ((class . Item)
(interfaces . (dynamic-interface
dynamic-text-interface
font-interface
+ outside-staff-interface
script-interface
self-alignment-interface
text-interface))))))
font-interface
line-interface
line-spanner-interface
+ ;for now, LilyPond never will typeset
+ ;these without a DynamicLineSpanner
+ ;as their controlling element
+ ;so, they do not need the
+ ;outside-staff-interface
spanner-interface
text-interface))))))
(font-encoding . fetaText)
(font-size . -5) ; don't overlap when next to heads.
(padding . 0.5)
+ (parent-alignment-X . ,CENTER)
+ (parent-alignment-Y . ,CENTER)
(positioning-done . ,ly:script-interface::calc-positioning-done)
(script-priority . 100)
(self-alignment-X . ,CENTER)
(meta . ((class . Item)
(interfaces . (finger-interface
font-interface
+ outside-staff-interface
self-alignment-interface
side-position-interface
text-interface
. (
(glyph-name . ,ly:flag::glyph-name)
(stencil . ,ly:flag::print)
+ (transparent . ,(grob::inherit-parent-property
+ X 'transparent))
+ (color . ,(grob::inherit-parent-property
+ X 'color))
(X-extent . ,ly:flag::width)
(X-offset . ,ly:flag::calc-x-offset)
(Y-offset . ,(ly:make-unpure-pure-container ly:flag::calc-y-offset ly:flag::pure-calc-y-offset))
(interfaces . (chord-name-interface
font-interface
fret-diagram-interface
+ outside-staff-interface
rhythmic-grob-interface))))))
(GridLine
. (
(layer . 0)
+ (parent-alignment-X . ,CENTER)
(self-alignment-X . ,CENTER)
(stencil . ,ly:grid-line-interface::print)
- (X-extent . ,ly:grid-line-interface::width)
- (X-offset . ,(ly: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)))))
+ (X-extent . ,ly:grid-line-interface::width)
+ (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(meta . ((class . Item)
(interfaces . (grid-line-interface
self-alignment-interface))))))
(interfaces . (dynamic-interface
hairpin-interface
line-interface
+ outside-staff-interface
self-alignment-interface
spanner-interface))))))
(meta . ((class . Spanner)
(interfaces . (horizontal-bracket-interface
line-interface
+ outside-staff-interface
side-position-interface
spanner-interface))))))
(interfaces . (font-interface
self-alignment-interface
side-position-interface
- system-start-text-interface))))))
+ system-start-text-interface
+ text-interface))))))
(InstrumentSwitch
. (
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Item)
(interfaces . (font-interface
+ outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
(key-signature . (extra-space . 0.5))
(cue-clef . (extra-space . 0.5))
(right-edge . (extra-space . 0.5))
- (first-note . (fixed-space . 2.5))))
+ (first-note . (fixed-space . 2.5))
+ (custos . (extra-space . 1.0))))
(stencil . ,ly:key-signature-interface::print)
(vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
(Y-extent . ,grob::always-Y-extent-from-stencil)
. (
(break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor)
(break-align-symbol . left-edge)
- (break-visibility . ,center-invisible)
+ (break-visibility . ,begin-of-line-visible)
(non-musical . #t)
- (extra-spacing-height . (+inf.0 . -inf.0))
(space-alist . (
(ambitus . (extra-space . 2.0))
(breathing-sign . (minimum-space . 0.0))
(right-edge . (extra-space . 0.0))
))
(X-extent . (0 . 0))
+ (Y-extent . (0 . 0))
(meta . ((class . Item)
(interfaces . (break-aligned-interface))))))
(extra-spacing-height . (0.2 . -0.2))
(font-series . medium)
(font-size . 1.0)
+ (parent-alignment-X . ())
(self-alignment-X . ,CENTER)
(stencil . ,lyric-text::print)
(text . ,(grob::calc-property-by-copy 'text))
(word-space . 0.6)
(skyline-horizontal-padding . 0.1)
(vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
+ (X-align-on-main-noteheads . #t)
(X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(font-encoding . fetaText)
(font-size . -2)
(outside-staff-horizontal-padding . 0.5)
- (outside-staff-padding . 0.5)
(outside-staff-priority . 750)
(self-alignment-X . ,CENTER)
(side-axis . ,Y)
(meta . ((class . Spanner)
(interfaces . (font-interface
measure-counter-interface
+ outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(interfaces . (measure-grouping-interface
+ outside-staff-interface
side-position-interface))))))
(MelodyItem
(break-visibility . ,end-of-line-invisible)
(direction . ,UP)
(extra-spacing-width . (+inf.0 . -inf.0))
+ (flag-style . default)
(outside-staff-horizontal-padding . 0.2)
(outside-staff-priority . 1000)
(padding . 0.8)
(stencil . ,ly:text-interface::print)
(vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
(Y-offset . ,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)))))
+ (X-offset . ,self-alignment-interface::self-aligned-on-breakable)
(self-alignment-X . ,LEFT)
(break-align-symbols . (time-signature))
(non-break-align-symbols . (paper-column-interface))
(interfaces . (break-alignable-interface
font-interface
metronome-mark-interface
+ outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
(meta . ((class . Spanner)
(interfaces . (font-interface
multi-measure-interface
+ outside-staff-interface
multi-measure-rest-interface
rest-interface
staff-symbol-referencer-interface))))))
(direction . ,UP)
(font-encoding . fetaText)
(padding . 0.4)
+ (parent-alignment-X . ,CENTER)
(self-alignment-X . ,CENTER)
(side-axis . ,Y)
(springs-and-rods . ,ly:multi-measure-rest::set-text-rods)
(staff-padding . 0.4)
(stencil . ,ly:text-interface::print)
- (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::x-centered-on-y-parent)))))
- (Y-offset . ,side-position-interface::y-aligned-side)
(vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil)
+ (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-extent . ,grob::always-Y-extent-from-stencil)
+ (Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(interfaces . (font-interface
multi-measure-interface
+ outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
(direction . ,UP)
(outside-staff-priority . 450)
(padding . 0.2)
+ (parent-alignment-X . ,CENTER)
(self-alignment-X . ,CENTER)
(skyline-horizontal-padding . 0.2)
(staff-padding . 0.25)
(stencil . ,ly:text-interface::print)
- (X-offset . ,(ly:make-simple-closure
- `(,+
- ,(ly:make-simple-closure
- (list ly:self-alignment-interface::x-centered-on-y-parent))
- ,(ly:make-simple-closure
- (list ly:self-alignment-interface::x-aligned-on-self)))))
- (Y-offset . ,side-position-interface::y-aligned-side)
(vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil)
+ (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-extent . ,grob::always-Y-extent-from-stencil)
+ (Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(interfaces . (font-interface
multi-measure-interface
+ outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
(axes . (,X))
(before-line-breaking . ,ly:paper-column::before-line-breaking)
(bound-alignment-interfaces . (break-alignment-interface))
+ ;; used by Paper_column::print when debugging columns:
+ (font-size . -7.5)
(full-measure-extra-space . 1.0)
(horizontal-skylines . ,ly:separation-item::calc-skylines)
;; (stencil . ,ly:paper-column::print)
(keep-inside-line . #t)
+ ;; used by Paper_column::print when debugging columns:
+ (layer . 1000)
(line-break-permission . allow)
(non-musical . #t)
(page-break-permission . allow)
-
- ;; 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)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
. (
(axes . (,X ,Y))
(bound-alignment-interfaces . (rhythmic-head-interface stem-interface))
- (cross-staff . ,ly:axis-group-interface::cross-staff)
(horizontal-skylines . ,ly:separation-item::calc-skylines)
(skyline-vertical-padding . 0.15)
(X-extent . ,ly:axis-group-interface::width)
(outside-staff-priority . 400)
(padding . 0.5)
(shorten-pair . (0.0 . -0.6))
- (staff-padding . 1.0)
+ (staff-padding . 2.0)
(stencil . ,ly:ottava-bracket::print)
(style . dashed-line)
(vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil)
(interfaces . (font-interface
horizontal-bracket-interface
line-interface
+ outside-staff-interface
ottava-bracket-interface
side-position-interface
text-interface))))))
(axes . (,X))
(before-line-breaking . ,ly:paper-column::before-line-breaking)
(bound-alignment-interfaces . (note-column-interface))
+ ;; used by Paper_column::print when debugging columns:
+ (font-size . -7.5)
(horizontal-skylines . ,ly:separation-item::calc-skylines)
(keep-inside-line . #t)
- ; 0.08 comes from spacing-horizontal-skyline.ly
- ; allows double flat of F to be nestled over dots of C
+ ;; used by Paper_column::print when debugging columns:
+ (layer . 1000)
+ ;; 0.08 comes from spacing-horizontal-skyline.ly
+ ;; allows double flat of F to be nestled over dots of C
(skyline-vertical-padding . 0.08)
;; (stencil . ,ly:paper-column::print)
(X-extent . ,ly:axis-group-interface::width)
-
- ;; debugging
- ;; (font-size . -6) (font-name . "sans") (Y-extent . #f)
(meta . ((class . Paper_column)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(padding . 0.2)
(stencil . ,parentheses-item::print)
(stencils . ,parentheses-item::calc-parenthesis-stencils)
+ ;; X-extent needs to be non-empty in order to allow proper
+ ;; horizontal attachment. ParenthesesItem does not reserve
+ ;; space of its own, however.
+ (X-extent . (0 . 0))
(meta . ((class . Item)
(interfaces . (font-interface
parentheses-interface))))))
(font-encoding . fetaText)
(font-size . -2)
(padding . 0.2)
+ (parent-alignment-X . ,CENTER)
(self-alignment-X . ,CENTER)
(staff-padding . 0.25)
(stencil . ,ly:text-interface::print)
- (X-offset . ,(ly:make-simple-closure
- `(,+
- ,(ly:make-simple-closure
- (list ly:self-alignment-interface::x-centered-on-y-parent))
- ,(ly:make-simple-closure
- (list ly:self-alignment-interface::x-aligned-on-self)))))
- (Y-offset . ,side-position-interface::y-aligned-side)
+ (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-extent . ,grob::always-Y-extent-from-stencil)
+ (Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(interfaces . (font-interface
percent-repeat-interface
+ outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
(vertical-skylines . ,(ly:make-unpure-pure-container ly:slur::vertical-skylines ly:grob::pure-simple-vertical-skylines-from-extents))
(Y-extent . ,slur::height)
(meta . ((class . Spanner)
- (interfaces . (slur-interface))))))
+ (interfaces . (outside-staff-interface
+ slur-interface))))))
;; an example of a text spanner
(PianoPedalBracket
(extra-spacing-width . (+inf.0 . -inf.0))
(font-size . 2)
(non-musical . #t)
- (outside-staff-horizontal-padding . 0.12)
+ (outside-staff-horizontal-padding . 0.2)
(outside-staff-priority . 1500)
(padding . 0.8)
(self-alignment-X . ,CENTER)
(stencil . ,ly:text-interface::print)
(vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
- (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)))))
+ (X-offset . ,self-alignment-interface::self-aligned-on-breakable)
(Y-offset . ,side-position-interface::y-aligned-side)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (break-alignable-interface
font-interface
mark-interface
+ outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
(cross-staff . ,ly:script-interface::calc-cross-staff)
(direction . ,ly:script-interface::calc-direction)
(font-encoding . fetaMusic)
+ (horizon-padding . 0.1) ; to avoid interleaving with accidentals
(positioning-done . ,ly:script-interface::calc-positioning-done)
(side-axis . ,Y)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Item)
(interfaces . (font-interface
+ outside-staff-interface
script-interface
side-position-interface))))))
(vertical-skylines . ,(ly:make-unpure-pure-container ly:slur::vertical-skylines ly:grob::pure-simple-vertical-skylines-from-extents))
(Y-extent . ,slur::height)
(meta . ((class . Spanner)
- (interfaces . (slur-interface))))))
+ (interfaces . (outside-staff-interface
+ slur-interface))))))
(SostenutoPedal
. (
(SostenutoPedalLineSpanner
. (
(axes . (,Y))
- (cross-staff . ,ly:side-position-interface::calc-cross-staff)
(direction . ,DOWN)
(minimum-space . 1.0)
(outside-staff-priority . 1000)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
+ outside-staff-interface
piano-pedal-interface
side-position-interface))))))
(X-extent . ,(grob::inherit-parent-property
X 'X-extent))
(extra-spacing-height . ,pure-from-neighbor-interface::extra-spacing-height)
- ; we want this to be ignored, so empty, but the extra spacing height
- ; should preserve the span bar's presence for horizontal spacing
+ ;; we want this to be ignored, so empty, but the extra spacing height
+ ;; should preserve the span bar's presence for horizontal spacing
(Y-extent . ,pure-from-neighbor-interface::height-if-pure)
(meta . ((class . Item)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
;; The 'normal' minima
(beamed-minimum-free-lengths . (1.83 1.5 1.25))
- ;(beamed-minimum-free-lengths . (2.0 1.83 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))
;; and the extreme minima as abolute minimum length.
(direction . ,ly:stem::calc-direction)
+ (double-stem-separation . 0.5)
(duration-log . ,stem::calc-duration-log)
(length . ,(ly:make-unpure-pure-container ly:stem::calc-length ly:stem::pure-calc-length))
(neutral-direction . ,DOWN)
(beam-thickness . 0.48) ; staff-space
(beam-width . ,ly:stem-tremolo::calc-width) ; staff-space
(direction . ,ly:stem-tremolo::calc-direction)
+ (parent-alignment-X . ,CENTER)
(slope . ,ly:stem-tremolo::calc-slope)
(stencil . ,ly:stem-tremolo::print)
(style . ,ly:stem-tremolo::calc-style)
(X-extent . ,ly:stem-tremolo::width)
+ (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-extent . ,(grob::unpure-Y-extent-from-stencil ly:stem-tremolo::pure-height))
- (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)))))
(Y-offset . ,(ly:make-unpure-pure-container ly:stem-tremolo::calc-y-offset ly:stem-tremolo::pure-calc-y-offset))
(meta . ((class . Item)
(interfaces . (self-alignment-interface
(font-encoding . fetaText)
(font-size . -5) ; don't overlap when next to heads.
(padding . 0.5)
+ (parent-alignment-X . ,CENTER)
(script-priority . 100)
(self-alignment-X . ,CENTER)
(self-alignment-Y . ,CENTER)
(meta . ((class . Item)
(interfaces . (font-interface
self-alignment-interface
+ outside-staff-interface
side-position-interface
string-number-interface
text-interface
(font-shape . italic)
(font-size . -4) ; don't overlap when next to heads.
(padding . 0.5)
+ (parent-alignment-X . ,CENTER)
(script-priority . 100)
(self-alignment-X . ,CENTER)
(self-alignment-Y . ,CENTER)
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (font-interface
+ outside-staff-interface
self-alignment-interface
side-position-interface
stroke-finger-interface
(SustainPedal
. (
- (direction . ,RIGHT)
(extra-spacing-width . (+inf.0 . -inf.0))
(padding . 0.0) ;; padding relative to SustainPedalLineSpanner
(self-alignment-X . ,CENTER)
(SustainPedalLineSpanner
. (
(axes . (,Y))
- (cross-staff . ,ly:side-position-interface::calc-cross-staff)
(direction . ,DOWN)
(minimum-space . 1.0)
(outside-staff-priority . 1000)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
+ outside-staff-interface
piano-pedal-interface
side-position-interface))))))
(vertical-skyline-elements . ,ly:system::vertical-skyline-elements)
(vertical-alignment . ,ly:system::get-vertical-alignment)))
(interfaces . (axis-group-interface
- system-interface))))))
+ system-interface
+ outside-staff-axis-group-interface))))))
(SystemStartBar
. (
(collapse-height . 5.0)
(direction . ,LEFT)
- (cross-staff . #t)
;; 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 . (side-position-interface
system-start-delimiter-interface))))))
(collapse-height . 5.0)
(direction . ,LEFT)
(font-encoding . fetaBraces)
- (cross-staff . #t)
(padding . 0.3)
(stencil . ,ly:system-start-delimiter::print)
(style . brace)
(X-offset . ,ly:side-position-interface::x-aligned-side)
- (Y-extent . #f)
(meta . ((class . Spanner)
(interfaces . (font-interface
side-position-interface
. (
(collapse-height . 5.0)
(direction . ,LEFT)
- (cross-staff . #t)
(padding . 0.8)
(stencil . ,ly:system-start-delimiter::print)
(style . bracket)
(thickness . 0.45)
(X-offset . ,ly:side-position-interface::x-aligned-side)
- (Y-extent . #f)
(meta . ((class . Spanner)
(interfaces . (font-interface
side-position-interface
(SystemStartSquare
. (
(direction . ,LEFT)
- (cross-staff . #t)
(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 . (font-interface
side-position-interface
(TextScript
. (
(avoid-slur . around)
- (cross-staff . ,script-or-side-position-cross-staff)
+ (cross-staff . #f)
(direction . ,DOWN)
(extra-spacing-width . (+inf.0 . -inf.0))
- (outside-staff-horizontal-padding . 0.12)
+ (outside-staff-horizontal-padding . 0.2)
(outside-staff-priority . 450)
;; sync with Fingering ?
(padding . 0.3)
+ (parent-alignment-X . #f)
(script-priority . 200)
+ ;; self-alignment cannot be LEFT because of fingering diagrams.
+ (self-alignment-X . #f)
(side-axis . ,Y)
(slur-padding . 0.5)
(staff-padding . 0.5)
(stencil . ,ly:text-interface::print)
(vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
- ;; todo: add X self alignment?
(Y-extent . ,grob::always-Y-extent-from-stencil)
- (X-offset . ,ly:self-alignment-interface::x-aligned-on-self)
+ (X-align-on-main-noteheads . #t)
+ (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Item)
(interfaces . (font-interface
instrument-specific-markup-interface
+ outside-staff-interface
self-alignment-interface
side-position-interface
text-interface
(interfaces . (font-interface
line-interface
line-spanner-interface
+ outside-staff-interface
side-position-interface))))))
(Tie
(axes . (,X))
(direction . ,RIGHT)
(font-size . -4)
+ ;; minimum shift to the right, in case the parent note has no stem
+ (minimum-space . 2.5)
+ (horizon-padding . 0.1) ; to avoid interleaving with augmentation dots
(padding . 0.3)
(side-axis . ,X)
(stencil . ,parenthesize-elements)
(interfaces . (font-interface
line-interface
line-spanner-interface
+ outside-staff-interface
side-position-interface
trill-spanner-interface))))))
(meta . ((class . Spanner)
(interfaces . (line-interface
+ outside-staff-interface
tuplet-bracket-interface))))))
(TupletNumber
(direction . ,tuplet-number::calc-direction)
(font-shape . italic)
(font-size . -2)
+ (knee-to-beam . #t)
(stencil . ,ly:tuplet-number::print)
(text . ,tuplet-number::calc-denominator-text)
(X-offset . ,ly:tuplet-number::calc-x-offset)
(Y-offset . ,ly:tuplet-number::calc-y-offset)
(meta . ((class . Spanner)
(interfaces . (font-interface
+ outside-staff-interface
text-interface
tuplet-number-interface))))))
(UnaCordaPedalLineSpanner
. (
(axes . (,Y))
- (cross-staff . ,ly:side-position-interface::calc-cross-staff)
(direction . ,DOWN)
(minimum-space . 1.0)
(outside-staff-priority . 1000)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
+ outside-staff-interface
piano-pedal-interface
side-position-interface))))))
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
- hara-kiri-group-spanner-interface))))))
+ hara-kiri-group-spanner-interface
+ outside-staff-axis-group-interface))))))
(VoiceFollower
. (
(VoltaBracket
. (
+ (baseline-skip . 1.7)
(direction . ,UP)
(edge-height . (2.0 . 2.0)) ;; staff-space;
(font-encoding . fetaText)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
+ outside-staff-interface
side-position-interface
volta-interface))))))
;; make sure that \property Foo.Bar =\turnOff doesn't complain
-(map (lambda (x)
- ;; (display (car x)) (newline)
+(for-each (lambda (x)
+ ;; (display (car x)) (newline)
- (set-object-property! (car x) 'translation-type? list?)
- (set-object-property! (car x) 'is-grob? #t))
- all-grob-descriptions)
+ (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<?))