;;;;
;;;; source file of the GNU LilyPond music typesetter
;;;;
-;;;; (c) 1998--2005 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+;;;; (c) 1998--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
;;;; Jan Nieuwenhuizen <janneke@gnu.org>
-;;;; distances are given in linethickness (thicknesses) and
-;;;; staffspace (distances)
+;;;; distances are given in line-thickness (thicknesses) and
+;;;; staff-space (distances)
;;;; WARNING: the meta field should be the last one.
;;;; WARNING: don't use anonymous functions for initialization.
. (
(avoid-slur . inside)
(cautionary-style . parentheses)
-
- (stencil . ,Accidental_interface::print)
+ (stencil . ,ly:accidental-interface::print)
(after-line-breaking
- . ,Accidental_interface::after_line_breaking)
-
+ . ,ly:accidental-interface::after-line-breaking)
(meta . ((class . Item)
(interfaces . (accidental-interface
font-interface))))))
(AccidentalSuggestion
. (
- (stencil . ,Accidental_interface::print)
+ (stencil . ,ly:accidental-interface::print)
(X-offset . ,(ly:make-simple-closure
`(,+
- ,(ly:make-simple-closure (list Self_alignment_interface::centered_on_x_parent))
- ,(ly:make-simple-closure (list Self_alignment_interface::x_aligned_on_self)))))
+ ,(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)
(cautionary . #t)
(cautionary-style . smaller)
- (Y-offset . ,Side_position_interface::y_aligned_side)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(cautionary-style . parentheses)
(direction . ,UP)
(staff-padding . 0.25)
accidental-suggestion-interface
self-alignment-interface
font-interface))))))
+
(AccidentalPlacement
. (
(left-padding . 0.2)
- (positioning-done . ,Accidental_placement::calc_positioning_done)
- (X-extent . ,Axis_group_interface::width)
+ ;; 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 . (0 1))
- (X-extent . ,Axis_group_interface::width)
- (X-extent . ,Axis_group_interface::height)
-
+ (X-extent . ,ly:axis-group-interface::width)
+ (Y-extent . ,ly:axis-group-interface::height)
(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)
+ (non-musical . #t)
(break-align-symbol . ambitus)
(break-visibility . ,begin-of-line-visible)
(meta . ((class . Item)
(AmbitusLine
. (
-
- (stencil . ,Ambitus::print)
-
+ (stencil . ,ly:ambitus::print)
(join-heads . #t)
(thickness . 2)
- (X-offset . ,Self_alignment_interface::centered_on_x_parent)
-
+ (X-offset . ,ly:self-alignment-interface::centered-on-x-parent)
(meta . ((class . Item)
(interfaces . (ambitus-interface
staff-symbol-referencer-interface
. (
(font-family . music)
(padding . 0.5)
- (X-offset . ,Side_position_interface::x_aligned_side)
+ (X-offset . ,ly:side-position-interface::x-aligned-side)
(direction . ,LEFT)
(cautionary-style . parentheses)
-
- (stencil . ,Accidental_interface::print)
- (after-line-breaking . ,Accidental_interface::after_line_breaking)
+ (stencil . ,ly:accidental-interface::print)
+ (after-line-breaking . ,ly:accidental-interface::after-line-breaking)
(side-axis . ,X)
-
(meta . ((class . Item)
(interfaces . (item-interface
accidental-interface
(AmbitusNoteHead
. (
(duration-log . 2)
-
- (stencil . ,Note_head::print)
+ (stencil . ,ly:note-head::print)
(glyph-name . ,note-head::calc-glyph-name)
-
- (Y-offset . ,Staff_symbol_referencer::callback)
+ (Y-offset . ,ly:staff-symbol-referencer::callback)
(meta . ((class . Item)
(interfaces . (font-interface
note-head-interface
ledgered-interface))))))
(Arpeggio
- . ((X-extent . ,Arpeggio::width)
- (stencil . ,Arpeggio::print)
- (Y-offset . ,Staff_symbol_referencer::callback)
- (X-offset . ,Side_position_interface::x_aligned_side)
+ . ((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)
(padding . 0.5)
+ (script-priority . 0)
(side-axis . ,X)
(staff-position . 0.0)
(meta . ((class . Item)
side-position-interface
font-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))
+ (meta . ((class . Item)
+ (interfaces . (text-interface
+ font-interface))))))
(BarLine
. (
(break-align-symbol . staff-bar)
(glyph . "|")
+ (gap . 0.4)
(layer . 0)
(break-visibility . ,all-visible)
- (breakable . #t)
+ (non-musical . #t)
- (stencil . ,Bar_line::print)
+ (stencil . ,ly:bar-line::print)
(glyph-name . ,bar-line::calc-glyph-name)
- (bar-size . ,Bar_line::calc_bar_size)
+ (bar-size . ,ly:bar-line::calc-bar-size)
(space-alist . (
(time-signature . (extra-space . 0.75))
;; Ross. page 151 lists other values, we opt for a leaner look
;;
;; TODO:
- ;; kern should scale with linethickness too.
+ ;; kern should scale with line-thickness too.
(kern . 3.0)
(thin-kern . 3.0)
(hair-thickness . 1.9)
(BarNumber
. (
- (stencil . ,Text_interface::print)
- (breakable . #t)
+ (stencil . ,ly:text-interface::print)
+ (non-musical . #t)
(break-visibility . ,begin-of-line-visible)
(padding . 1.0)
(direction . ,UP)
(font-family . roman)
(font-size . -2)
- (Y-offset . ,Side_position_interface::y_aligned_side)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(side-axis . ,Y)
- (X-offset . ,Self_alignment_interface::x_aligned_on_self)
+ (X-offset . ,(ly:make-simple-closure
+ `(,+
+ ,(ly:make-simple-closure
+ (list ly:break-alignment-align-interface::self-align-callback))
+ ,(ly:make-simple-closure
+ (list ly:self-alignment-interface::x-aligned-on-self)))))
+
(self-alignment-X . 1)
+ ;; want the bar number before the clef at line start.
+ (break-align-symbol . left-edge)
(meta .
((class . Item)
(interfaces . (side-position-interface
text-interface
+ break-alignment-align-interface
self-alignment-interface
font-interface
- break-aligned-interface))))
+ ))))
))
(BassFigure
. (
- ;
- (stencil . ,Text_interface::print)
-
+ (stencil . ,ly:text-interface::print)
(meta . ((class . Item)
(interfaces . (text-interface
rhythmic-grob-interface
bass-figure-interface
font-interface))))))
- (BassFigureBracket
+
+ (BassFigureAlignment
. (
- ;
- (stencil . ,Enclosing_bracket::print)
+ (axes . (,Y))
+ (threshold . (2 . 1000))
+ (positioning-done . ,ly:align-interface::calc-positioning-done)
+ (Y-extent . ,ly:axis-group-interface::height)
+ (stacking-dir . -1)
+ (meta . ((class . Spanner)
+ (interfaces . (align-interface
+ bass-figure-alignment-interface
+ axis-group-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)
+ (padding . 0.5)
+ (meta . ((class . Spanner)
+ (interfaces . (side-position-interface
+ axis-group-interface
+ ))))))
+
+ (BassFigureBracket
+ . (
+ (stencil . ,ly:enclosing-bracket::print)
+ (X-extent . ,ly:enclosing-bracket::width)
(edge-height . (0.2 . 0.2))
(meta . ((class . Item)
(interfaces . (enclosing-bracket-interface)) ))
))
(BassFigureContinuation
. (
-
- (stencil . ,Figured_bass_continuation::print)
-
- (Y-offset . ,Figured_bass_continuation::center_on_figures)
+ (stencil . ,ly:figured-bass-continuation::print)
+ (Y-offset . ,ly:figured-bass-continuation::center-on-figures)
(meta . ((class . Spanner)
(interfaces . (figured-bass-continuation-interface))
))))
(BassFigureLine
. (
(axes . (,Y))
-
- (Y-extent . ,Axis_group_interface::height)
-
+ (Y-extent . ,ly:axis-group-interface::height)
(meta . ((class . Spanner)
(interfaces . (axis-group-interface
))))))
- (BassFigureAlignment
- . (
- (axes . (,Y))
- (threshold . (2 . 1000))
-
- (positioning-done . ,Align_interface::calc_positioning_done)
- (Y-extent . ,Axis_group_interface::height)
-
- (stacking-dir . -1)
- (meta . ((class . Spanner)
- (interfaces . (align-interface
- axis-group-interface))))))
(Beam
. (
(ly:make-simple-closure
(list chain-grob-member-functions
`(,cons 0 0)
- Beam::calc_least_squares_positions
- Beam::slope_damping
- Beam::shift_region_to_valid
- Beam::quanting
+ 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 . ,Beam::set_stem_lengths)
- (concaveness . ,Beam::calc_concaveness)
- (direction . ,Beam::calc_direction)
- (shorten . ,Beam::calc_stem_shorten)
- (beaming . ,Beam::calc_beaming)
- (stencil . ,Beam::print)
-
+ (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)
+
;; TODO: should be in SLT.
(thickness . 0.48) ; in staff-space
(neutral-direction . ,DOWN)
;; Whe have some unreferenced problems here.
;;
- ;; If we shorten beamed stems less than normal stems (1 staffspace),
+ ;; If we shorten beamed stems less than normal stems (1 staff-space),
;; or high order less than 8th beams, patterns like
;; c''4 [c''8 c''] c''4 [c''16 c]
;; are ugly (different stem lengths).
(interfaces . (staff-symbol-referencer-interface
beam-interface))))))
+ (BendAfter
+ . (
+ (stencil . ,fall::print)
+ (thickness . 2.0)
+ (meta . ((class . Spanner)
+ (interfaces . (spanner-interface
+ bend-after-interface))))))
+
(BreakAlignment
. (
- (breakable . #t)
+ (non-musical . #t)
(stacking-dir . 1)
-
- (positioning-done . ,Break_align_interface::calc_positioning_done)
- (X-extent . ,Axis_group_interface::width)
-
+ (positioning-done . ,ly:break-align-interface::calc-positioning-done)
+ (X-extent . ,ly:axis-group-interface::width)
(break-align-orders . ;; end of line
- #((instrument-name
+ #((
left-edge
ambitus
breathing-sign
custos)
;; unbroken
- (instrument-name
+ (
left-edge
ambitus
breathing-sign
time-signature custos)
;; begin of line
- (instrument-name
+ (
left-edge
ambitus
breathing-sign
(BreakAlignGroup
. (
(axes . (0))
-
- (X-extent . ,Axis_group_interface::width)
-
+ (X-extent . ,ly:axis-group-interface::width)
(meta . ((class . Item)
(interfaces . (break-aligned-interface
axis-group-interface))))))
(BreathingSign
. (
(break-align-symbol . breathing-sign)
- (breakable . #t)
+ (non-musical . #t)
(space-alist . (
(ambitus . (extra-space . 2.0))
(custos . (minimum-space . 1.0))
(clef . (minimum-space . 2.0))
(first-note . (fixed-space . 1.0)) ;huh?
(right-edge . (extra-space . 0.1))))
-
- (stencil . ,Text_interface::print)
-
+ (stencil . ,ly:text-interface::print)
(text . ,(make-musicglyph-markup "scripts.rcomma"))
- (Y-offset . ,Breathing_sign::offset_callback)
+ (Y-offset . ,ly:breathing-sign::offset-callback)
(break-visibility . ,begin-of-line-invisible)
(meta . ((class . Item)
(interfaces . (break-aligned-interface
(Clef
. (
-
- (stencil . ,Clef::print)
- (glyph-name . ,Clef::calc_glyph_name)
-
- (breakable . #t)
+ (stencil . ,ly:clef::print)
+ (glyph-name . ,ly:clef::calc-glyph-name)
+ (non-musical . #t)
(font-family . music)
(break-align-symbol . clef)
(break-visibility . ,begin-of-line-visible)
(first-note . (minimum-fixed-space . 5.0))
(next-note . (extra-space . 0.5))
(right-edge . (extra-space . 0.5))))
- (Y-offset . ,Staff_symbol_referencer::callback)
+ (Y-offset . ,ly:staff-symbol-referencer::callback)
(meta . ((class . Item)
(interfaces . (clef-interface
staff-symbol-referencer-interface
(ClusterSpannerBeacon
. (
-
- (Y-extent . ,Cluster_beacon::height)
-
+ (Y-extent . ,ly:cluster-beacon::height)
(meta . ((class . Item)
(interfaces . (cluster-beacon-interface))))))
(ClusterSpanner
. (
-
- (springs-and-rods . ,Spanner::set_spacing_rods)
- (stencil . ,Cluster::print)
-
-
+ (springs-and-rods . ,ly:spanner::set-spacing-rods)
+ (stencil . ,ly:cluster::print)
(minimum-length . 0.0)
(padding . 0.25)
(style . ramp)
(ChordName
. (
-
- (stencil . ,Text_interface::print)
- (after-line-breaking . ,Chord_name::after_line_breaking)
-
+ (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)
(CombineTextScript
. (
-
- (stencil . ,Text_interface::print)
-
+ (stencil . ,ly:text-interface::print)
(no-spacing-rods . #t)
- (Y-offset . ,Side_position_interface::y_aligned_side)
- (X-offset . ,Self_alignment_interface::x_aligned_on_self)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
+ (X-offset . ,ly:self-alignment-interface::x-aligned-on-self)
(direction . ,UP)
(padding . 0.5)
(staff-padding . 0.5)
(Custos
. (
(break-align-symbol . custos)
- (breakable . #t)
-
- (stencil . ,Custos::print)
-
+ (non-musical . #t)
+ (stencil . ,ly:custos::print)
(break-visibility . ,end-of-line-visible)
(style . vaticana)
(neutral-direction . ,DOWN)
- (Y-offset . ,Staff_symbol_referencer::callback)
+ (Y-offset . ,ly:staff-symbol-referencer::callback)
(space-alist . (
(first-note . (minimum-fixed-space . 0.0))
(right-edge . (extra-space . 0.1))))
. (
(axes . (0))
(direction . ,RIGHT)
-
- (positioning-done . ,Dot_column::calc_positioning_done)
- (X-extent . ,Axis_group_interface::width)
-
- (X-offset . ,Dot_column::side_position)
+ (positioning-done . ,ly:dot-column::calc-positioning-done)
+ (X-extent . ,ly:axis-group-interface::width)
+ (X-offset . ,ly:dot-column::side-position)
(meta . ((class . Item)
(interfaces . (dot-column-interface
axis-group-interface))))))
(Dots
. (
-
- (stencil . ,Dots::print)
-
- (dot-count . 1)
+ (stencil . ,ly:dots::print)
+ (dot-count . ,dots::calc-dot-count)
(meta . ((class . Item)
(interfaces . (font-interface
staff-symbol-referencer-interface
(DoublePercentRepeat
. (
- (stencil . ,Percent_repeat_item_interface::double_percent)
- (breakable . #t)
+ (stencil . ,ly:percent-repeat-item-interface::double-percent)
+ (non-musical . #t)
(slope . 1.0)
(font-encoding . fetaMusic)
(width . 2.0)
(DoublePercentRepeatCounter
. (
-
- (stencil . ,Text_interface::print)
- (X-offset . ,(ly:make-simple-closure `(,+ ,(ly:make-simple-closure (list Self_alignment_interface::centered_on_y_parent))
- ,(ly:make-simple-closure (list Self_alignment_interface::x_aligned_on_self)))))
- (Y-offset . ,Side_position_interface::y_aligned_side)
+ (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 . ,ly:side-position-interface::y-aligned-side)
(font-encoding . fetaNumber)
(self-alignment-X . 0)
(font-size . -2)
(DynamicLineSpanner
. (
(axes . (1))
- (Y-offset . ,Side_position_interface::y_aligned_side)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(staff-padding . 0.1)
(padding . 0.6)
(avoid-slur . outside)
(minimum-space . 1.2)
(direction . ,DOWN)
(side-axis . ,Y)
-
- (Y-extent . ,Axis_group_interface::height)
- (X-extent . ,Axis_group_interface::width)
-
-
+ (Y-extent . ,ly:axis-group-interface::height)
+ (X-extent . ,ly:axis-group-interface::width)
(meta . ((class . Spanner)
(interfaces . (axis-group-interface
dynamic-interface
;; todo.
- (stencil . ,Text_interface::print)
- (direction . ,Script_interface::calc_direction)
+ (stencil . ,ly:text-interface::print)
+ (direction . ,ly:script-interface::calc-direction)
- (X-offset . ,Self_alignment_interface::x_aligned_on_self)
+ (X-offset . ,ly:self-alignment-interface::x-aligned-on-self)
(self-alignment-X . 0)
- (Y-offset . ,Self_alignment_interface::y_aligned_on_self)
+ (Y-offset . ,ly:self-alignment-interface::y-aligned-on-self)
(self-alignment-Y . 0)
(font-series . bold)
(font-encoding . fetaDynamic)
(DynamicTextSpanner
. (
-
- (stencil . ,Dynamic_text_spanner::print)
+ (stencil . ,ly:dynamic-text-spanner::print)
;; rather ugh with NCSB
;; (font-series . bold)
(meta . ((class . Spanner)
(interfaces . (font-interface
text-interface
+ line-spanner-interface
dynamic-interface
dynamic-text-spanner-interface
spanner-interface))))))
+
(Fingering
. (
(self-alignment-Y . 0)
(script-priority . 100)
- (stencil . ,Text_interface::print)
- (direction . ,Script_interface::calc_direction)
-
+ (stencil . ,ly:text-interface::print)
+ (direction . ,ly:script-interface::calc-direction)
+ (text . ,fingering::calc-text)
(font-encoding . fetaNumber)
(font-size . -5) ; don't overlap when next to heads.
(meta . ((class . Item)
side-position-interface
self-alignment-interface
item-interface))))))
+ (FretBoard
+ . ((stencil . ,fret-board::calc-stencil)
+ (finger-code . below-string)
+ (meta . ((class . Item)
+ (interfaces . (fret-diagram-interface
+ font-interface
+ ))))
+ ))
(Glissando
. (
(style . line)
(gap . 0.5)
(zigzag-width . 0.75)
- (breakable . #t)
+ (non-musical . #t)
(X-extent . #f)
(Y-extent . #f)
-
- (stencil . ,Line_spanner::print)
- (after-line-breaking . ,Line_spanner::after_line_breaking)
-
-
+ (stencil . ,ly:line-spanner::print)
+ (after-line-breaking . ,ly:line-spanner::after-line-breaking)
(meta . ((class . Spanner)
(interfaces . (line-interface
line-spanner-interface))))))
+ (GraceSpacing
+ . (
+ (common-shortest-duration . ,grace-spacing::calc-shortest-duration)
+ (spacing-increment . 0.8)
+ (shortest-duration-space . 1.6)
+ (meta . ((class . Spanner)
+ (interfaces . (grace-spacing-interface
+ spacing-interface
+ spacing-options-interface
+ spanner-interface))))))
(GridPoint
. (
(X-extent . (0 . 0))
(GridLine
. (
-
- (X-extent . ,Grid_line_interface::width)
- (stencil . ,Grid_line_interface::print)
-
+ (X-extent . ,ly:grid-line-interface::width)
+ (stencil . ,ly:grid-line-interface::print)
(self-alignment-X . ,CENTER)
(X-offset . ,(ly:make-simple-closure
- `(,+ ,(ly:make-simple-closure (list Self_alignment_interface::centered_on_x_parent))
- ,(ly:make-simple-closure (list Self_alignment_interface::x_aligned_on_self)))))
+ `(,+ ,(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
(Hairpin
. (
-
-
- (stencil . ,Hairpin::print)
- (springs-and-rods . ,Spanner::set_spacing_rods)
- (after-line-breaking . ,Hairpin::after_line_breaking)
-
+ (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)
+ (circled-tip . #f)
(thickness . 1.0)
(height . 0.6666)
(minimum-length . 2.0)
(bound-padding . 1.0)
(self-alignment-Y . 0)
- (Y-offset . ,Self_alignment_interface::y_aligned_on_self)
+ (Y-offset . ,ly:self-alignment-interface::y-aligned-on-self)
(meta . ((class . Spanner)
(interfaces . (hairpin-interface
line-interface
(HorizontalBracket
. (
(thickness . 1.0)
- (stencil . ,Horizontal_bracket::print)
- (Y-offset . ,Side_position_interface::y_aligned_side)
+ (stencil . ,ly:horizontal-bracket::print)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
+ (connect-to-neighbor . ,ly:tuplet-bracket::calc-connect-to-neighbors)
+
(padding . 0.2)
(staff-padding . 0.2)
(direction . ,DOWN)
spanner-interface))))))
(InstrumentName
. (
- (breakable . #t)
- (Y-offset . ,(ly:make-simple-closure `(,+ ,(ly:make-simple-closure (list Self_alignment_interface::y_aligned_on_self))
- ,(ly:make-simple-closure (list Side_position_interface::y_aligned_on_support_refpoints)))))
-
- ;; This direction is for aligned_on_support_refpoints
- ;; (?) --hwn
- (direction . ,CENTER)
- (space-alist . (
- (left-edge . (extra-space . 1.0))))
+ (padding . 0.3)
+ (stencil . ,ly:system-start-text::print)
+ (X-offset . ,ly:side-position-interface::x-aligned-side)
+ (direction . ,LEFT)
+ (self-alignment-Y . ,CENTER)
+ (meta . ((class . Spanner)
+ (interfaces . (system-start-text-interface
+ side-position-interface
+ font-interface))))))
- (self-alignment-Y . 0)
- (stencil . ,Text_interface::print)
- (break-align-symbol . instrument-name)
- (break-visibility . ,begin-of-line-visible)
- (baseline-skip . 2)
- (side-axis . ,X)
+ (InstrumentSwitch
+ . (
+ (padding . 0.3)
+ (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 . 2)
+ (direction . ,UP)
+ (self-alignment-X . ,CENTER)
(meta . ((class . Item)
- (interfaces . (font-interface
- self-alignment-interface
+ (interfaces . (system-start-text-interface
side-position-interface
- text-interface
- break-aligned-interface))))))
-
+ font-interface))))))
+
(KeyCancellation
. (
-
- (stencil . ,Key_signature_interface::print)
-
+ (stencil . ,ly: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))))
- (Y-offset . ,Staff_symbol_referencer::callback)
+ (Y-offset . ,ly:staff-symbol-referencer::callback)
(break-align-symbol . key-cancellation)
(break-visibility . ,begin-of-line-invisible)
- (breakable . #t)
-
+ (non-musical . #t)
(meta . ((class . Item)
(interfaces . (key-signature-interface
font-interface
break-aligned-interface))))))
(KeySignature
. (
-
- (stencil . ,Key_signature_interface::print)
-
+ (stencil . ,ly:key-signature-interface::print)
(space-alist . (
(time-signature . (extra-space . 1.15))
(staff-bar . (extra-space . 1.1))
(right-edge . (extra-space . 0.5))
(first-note . (fixed-space . 2.5))))
- (Y-offset . ,Staff_symbol_referencer::callback)
+ (Y-offset . ,ly:staff-symbol-referencer::callback)
(break-align-symbol . key-signature)
(break-visibility . ,begin-of-line-visible)
- (breakable . #t)
-
+ (non-musical . #t)
(meta . ((class . Item)
(interfaces . (key-signature-interface
font-interface
break-aligned-interface))))))
- (LaissezVibrerTie
+
+
+ (LaissezVibrerTie
. (
-
- (stencil . ,Tie::print)
- (control-points . ,Laissez_vibrer_tie::calc_control_points)
- (direction . ,Laissez_vibrer_tie::calc_direction)
-
+ (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)))
+ (head-direction . ,LEFT)
(thickness . 1.0)
(meta . ((class . Item)
- (interfaces . (laissez-vibrer-tie-interface))
+ (interfaces . (semi-tie-interface))
))
))
. (
(X-extent . #f)
(Y-extent . #f)
-
- (positioning-done . ,Laissez_vibrer_tie_column::calc_positioning_done)
-
+ (head-direction . ,LEFT)
+ (positioning-done . ,ly:semi-tie-column::calc-positioning-done)
(meta . ((class . Item)
- (interfaces . (laissez-vibrer-tie-column-interface))
+ (interfaces . (semi-tie-column-interface))
))
))
(LedgerLineSpanner
. (
-
- (springs-and-rods . ,Ledger_line_spanner::set_spacing_rods)
-
- (stencil . ,Ledger_line_spanner::print)
-
+ (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)
. (
(break-align-symbol . left-edge)
(X-extent . (0 . 0))
- (breakable . #t)
+ (non-musical . #t)
(break-visibility . ,center-invisible)
(space-alist . (
(custos . (extra-space . 0.0))
(edge-height . (0.7 . 0.7))
(shorten-pair . (-0.2 . -0.2))
(direction . ,UP)
- (positions . ,Tuplet_bracket::calc_positions)
- (stencil . ,Tuplet_bracket::print)
-
+ (positions . ,ly:tuplet-bracket::calc-positions)
+ (stencil . ,ly:tuplet-bracket::print)
+ (staff-padding . 0.25)
+ (connect-to-neighbor . ,ly:tuplet-bracket::calc-connect-to-neighbors)
+ (control-points . ,ly:tuplet-bracket::calc-control-points)
+ (meta . ((class . Spanner)
+ (interfaces . (line-interface
+ tuplet-bracket-interface))))))
+
+
+ (LyricExtender
+ . (
+ (stencil . ,ly:lyric-extender::print)
+ (thickness . 0.8) ; line-thickness
+ (minimum-length . 1.5)
+ (Y-extent . (0 . 0))
(meta . ((class . Spanner)
- (interfaces . (tuplet-bracket-interface
- line-interface))))))
+ (interfaces . (lyric-interface
+ lyric-extender-interface))))))
(LyricHyphen
. (
(minimum-length . 0.3)
(minimum-distance . 0.1)
(padding . 0.07)
- (springs-and-rods . ,Hyphen_spanner::set_spacing_rods)
-
- (stencil . ,Hyphen_spanner::print)
-
+ (springs-and-rods . ,ly:hyphen-spanner::set-spacing-rods)
+ (stencil . ,ly:hyphen-spanner::print)
(Y-extent . (0 . 0))
(meta . ((class . Spanner)
(interfaces . (lyric-interface
+ font-interface
lyric-hyphen-interface
spanner-interface))))))
- (LyricExtender
- . (
-
- (stencil . ,Lyric_extender::print)
-
- (thickness . 0.8) ; linethickness
- (minimum-length . 1.5)
- (Y-extent . (0 . 0))
- (meta . ((class . Spanner)
- (interfaces . (lyric-interface
- lyric-extender-interface))))))
-
(LyricSpace
- . ((minimum-distance . 0.3)
- (springs-and-rods . ,Hyphen_spanner::set_spacing_rods)
+ . ((minimum-distance . 0.45)
+ (springs-and-rods . ,ly:hyphen-spanner::set-spacing-rods)
(padding . 0.0)
(Y-extent . #f)
(X-extent . #f)
lyric-hyphen-interface spacing-interface))
))
))
+
(LyricText
. (
-
- (stencil . ,Text_interface::print)
-
- (X-offset . ,Self_alignment_interface::aligned_on_x_parent)
+ (stencil . ,lyric-text::print)
+ (text . ,(grob::calc-property-by-copy 'text))
+ (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(self-alignment-X . 0)
(word-space . 0.6)
(font-series . bold-narrow)
(MeasureGrouping
. (
- (Y-offset . ,Side_position_interface::y_aligned_side)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(side-axis . ,Y)
-
- (stencil . ,Measure_grouping::print)
-
+ (stencil . ,ly:measure-grouping::print)
(padding . 2)
(direction . ,UP)
(thickness . 1)
. (
(thickness . 1.4)
(flexa-width . 2.0)
- (stencil . ,Mensural_ligature::print)
-
+ (stencil . ,ly:mensural-ligature::print)
(meta . ((class . Spanner)
(interfaces . (mensural-ligature-interface
font-interface))))))
(MetronomeMark
. (
-
- (stencil . ,Text_interface::print)
-
- (Y-offset . ,Side_position_interface::y_aligned_side)
+ (stencil . ,ly:text-interface::print)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(direction . ,UP)
(padding . 0.8)
(side-axis . ,Y)
(MultiMeasureRest
. (
- (stencil . ,Multi_measure_rest::print)
- (springs-and-rods . ,Multi_measure_rest::set_spacing_rods)
- (Y-offset . ,Staff_symbol_referencer::callback)
+ (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)
(MultiMeasureRestNumber
. (
- (springs-and-rods . ,Multi_measure_rest::set_spacing_rods)
- (stencil . ,Text_interface::print)
+ (bound-padding . 2.0)
+ (springs-and-rods . ,ly:multi-measure-rest::set-text-rods)
+ (stencil . ,ly:text-interface::print)
(X-offset . ,(ly:make-simple-closure
- `(,+ ,(ly:make-simple-closure (list Self_alignment_interface::x_aligned_on_self))
- ,(ly:make-simple-closure (list Self_alignment_interface::x_centered_on_y_parent)))))
- (Y-offset . ,Side_position_interface::y_aligned_side)
+ `(,+ ,(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 . ,ly:side-position-interface::y-aligned-side)
(side-axis . ,Y)
-
(self-alignment-X . 0)
(direction . ,UP)
(padding . 0.4)
(MultiMeasureRestText
. (
- (stencil . ,Text_interface::print)
+ (stencil . ,ly:text-interface::print)
(X-offset . ,(ly:make-simple-closure
- `(,+ ,(ly:make-simple-closure (list Self_alignment_interface::x_centered_on_y_parent))
- ,(ly:make-simple-closure (list Self_alignment_interface::x_aligned_on_self)))))
+ `(,+ ,(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)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(self-alignment-X . 0)
(direction . ,UP)
(padding . 0.2)
font-interface
text-interface))))))
+ (NonMusicalPaperColumn
+ . (
+ (allow-loose-spacing . #t)
+ (axes . (0))
+ (before-line-breaking . ,ly:paper-column::before-line-breaking)
+ (X-extent . ,ly:axis-group-interface::width)
+ ;; (stencil . ,ly:paper-column::print)
+
+ (non-musical . #t)
+ (line-break-permission . allow)
+ (page-break-permission . allow)
+
+ ;; debugging stuff: print column number.
+ ;; (font-size . -6) (font-name . "sans") (Y-extent . #f)
+
+ (meta . ((class . Paper_column)
+ (interfaces . (paper-column-interface
+ axis-group-interface
+ spaceable-grob-interface))))))
+
(NoteCollision
. (
(axes . (0 1))
-
- (X-extent . ,Axis_group_interface::width)
- (Y-extent . ,Axis_group_interface::height)
- (positioning-done . ,Note_collision_interface::calc_positioning_done)
-
+ (X-extent . ,ly:axis-group-interface::width)
+ (Y-extent . ,ly:axis-group-interface::height)
+ (positioning-done . ,ly:note-collision-interface::calc-positioning-done)
(meta . ((class . Item)
(interfaces . (note-collision-interface
axis-group-interface))))))
(NoteColumn
. (
(axes . (0 1))
- (X-extent . ,Axis_group_interface::width)
- (Y-extent . ,Axis_group_interface::height)
-
+ (X-extent . ,ly:axis-group-interface::width)
+ (Y-extent . ,ly:axis-group-interface::height)
(meta . ((class . Item)
(interfaces . (axis-group-interface
note-column-interface))))))
(NoteHead
. (
-
- (stencil . ,Note_head::print)
- (stem-attachment . ,Note_head::calc_stem_attachment)
+ (stencil . ,ly:note-head::print)
+ (duration-log . ,note-head::calc-duration-log)
+ (stem-attachment . ,ly:note-head::calc-stem-attachment)
(glyph-name . ,note-head::calc-glyph-name)
- (Y-offset . ,Staff_symbol_referencer::callback)
- (X-offset . ,Note_head::stem_x_shift)
+ (Y-offset . ,ly:staff-symbol-referencer::callback)
+ (X-offset . ,ly:note-head::stem-x-shift)
(meta . ((class . Item)
(interfaces . (rhythmic-grob-interface
rhythmic-head-interface
;; Changed this from 0.75.
;; If you ever change this back, please document! --hwn
(knee-spacing-correction . 1.0)
-
(meta . ((class . Item)
(interfaces . (spacing-interface
note-spacing-interface))))))
(NoteName
. (
-
- (stencil . ,Text_interface::print)
-
+ (stencil . ,ly:text-interface::print)
(meta . ((class . Item)
(interfaces . (note-name-interface
text-interface
(self-alignment-X . 0)
(break-visibility . ,begin-of-line-visible)
(X-offset . ,(ly:make-simple-closure
- `(,+ ,(ly:make-simple-closure (list Self_alignment_interface::x_aligned_on_self))
- ,(ly:make-simple-closure (list Self_alignment_interface::centered_on_x_parent)))))
+ `(,+ ,(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)
-
- (stencil . ,Text_interface::print)
-
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
+ (stencil . ,ly:text-interface::print)
;; no Y dimensions, because of lyrics under tenor clef.
(Y-extent . (0 . 0))
(OttavaBracket
. (
- (Y-offset . ,Side_position_interface::y_aligned_side)
-
- (stencil . ,Ottava_bracket::print)
-
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
+ (stencil . ,ly:ottava-bracket::print)
(font-shape . italic)
(shorten-pair . (0.0 . -0.6))
(staff-padding . 1.0)
(PaperColumn
. (
(axes . (0))
-
- (before-line-breaking . ,Paper_column::before_line_breaking)
- ;; (stencil . ,Paper_column::print)
- (X-extent . ,Axis_group_interface::width)
+ (allow-loose-spacing . #t)
+ (before-line-breaking . ,ly:paper-column::before-line-breaking)
+ ;; (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)
axis-group-interface
spaceable-grob-interface))))))
+ (ParenthesesItem
+ . ((stencil . ,parentheses-item::print)
+ (font-size . -6)
+ (padding . 0.2)
+ (meta . ((class . Item)
+ (interfaces . (parentheses-interface font-interface))))
+ ))
+
(PhrasingSlur
. ((details . ,default-slur-details)
-
- (control-points . ,Slur::calc_control_points)
- (direction . ,Slur::calc_direction)
- (springs-and-rods . ,Spanner::set_spacing_rods)
- (Y-extent . ,Slur::height)
- (stencil . ,Slur::print)
-
-
+ (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)
(meta . ((class . Spanner)
(interfaces . (slur-interface))))))
- (NonMusicalPaperColumn
- . (
- (axes . (0))
-
- (before-line-breaking . ,Paper_column::before_line_breaking)
- (X-extent . ,Axis_group_interface::width)
- ;; (stencil . ,Paper_column::print)
-
- (breakable . #t)
-
- ;; debugging stuff: print column number.
- ;; (font-size . -6) (font-name . "sans") (Y-extent . #f)
- (meta . ((class . Paper_column)
- (interfaces . (paper-column-interface
- axis-group-interface
- spaceable-grob-interface))))))
(PercentRepeat
. (
-
- (springs-and-rods . ,Multi_measure_rest::set_spacing_rods)
- (stencil . ,Multi_measure_rest::percent)
-
+ (springs-and-rods . ,ly:multi-measure-rest::set-spacing-rods)
+ (stencil . ,ly:multi-measure-rest::percent)
(slope . 1.0)
(thickness . 0.48)
(font-encoding . fetaMusic)
percent-repeat-interface))))))
(PercentRepeatCounter
. (
- (stencil . ,Text_interface::print)
+ (stencil . ,ly:text-interface::print)
(X-offset . ,(ly:make-simple-closure
- `(,+ ,(ly:make-simple-closure (list Self_alignment_interface::x_centered_on_y_parent))
- ,(ly:make-simple-closure (list Self_alignment_interface::x_aligned_on_self)))))
- (Y-offset . ,Side_position_interface::y_aligned_side)
+ `(,+ ,(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 . ,ly:side-position-interface::y-aligned-side)
(self-alignment-X . 0)
(direction . ,UP)
(padding . 0.2)
;; an example of a text spanner
(PianoPedalBracket
. (
-
- (stencil . ,Piano_pedal_bracket::print)
-
+ (stencil . ,ly:piano-pedal-bracket::print)
(style . line)
(bound-padding . 1.0)
(direction . ,DOWN)
(RehearsalMark
. (
- (stencil . ,Text_interface::print)
+ (stencil . ,ly:text-interface::print)
(X-offset . ,(ly:make-simple-closure
- `(,+ ,(ly:make-simple-closure
- `(,Self_alignment_interface::x_aligned_on_self))
- ,(ly:make-simple-closure
- `(,Self_alignment_interface::centered_on_x_parent)))
- ))
- (Y-offset . ,Side_position_interface::y_aligned_side)
+ `(,+
+ ,(ly:make-simple-closure
+ (list ly:break-alignment-align-interface::self-align-callback))
+ ,(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 . 0)
(direction . ,UP)
- (breakable . #t)
+ (non-musical . #t)
(font-size . 2)
(baseline-skip . 2)
(break-visibility . ,end-of-line-invisible)
+ (break-align-symbol . staff-bar)
(padding . 0.8)
(meta . ((class . Item)
(interfaces . (text-interface
side-position-interface
+ break-alignment-align-interface
font-interface
mark-interface
self-alignment-interface))))))
-
(RepeatSlash
. (
-
- (stencil . ,Percent_repeat_item_interface::beat_slash)
-
+ (stencil . ,ly:percent-repeat-item-interface::beat-slash)
(thickness . 0.48)
(slope . 1.7)
(meta . ((class . Item)
(interfaces . (percent-repeat-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)
+ (head-direction . ,RIGHT)
+ (meta . ((class . Item)
+ (interfaces . (semi-tie-interface))
+ ))
+ ))
+
+ (RepeatTieColumn
+ . (
+ (X-extent . #f)
+ (Y-extent . #f)
+ (direction . ,ly:tie::calc-direction)
+ (head-direction . ,RIGHT)
+
+ (positioning-done . ,ly:semi-tie-column::calc-positioning-done)
+ (meta . ((class . Item)
+ (interfaces . (semi-tie-column-interface))
+ ))
+ ))
+
(Rest
. (
- (stencil . ,Rest::print)
- (X-extent . ,Rest::width)
- (Y-extent . ,Rest::height)
- (Y-offset . ,Rest::y_offset_callback)
+ (stencil . ,ly:rest::print)
+ (duration-log . ,stem::calc-duration-log)
+ (X-extent . ,ly:rest::width)
+ (Y-extent . ,ly:rest::height)
+ (Y-offset . ,ly:rest::y-offset-callback)
(minimum-distance . 0.25)
(meta . ((class . Item)
(interfaces . (font-interface
(RestCollision
. (
(minimum-distance . 0.75)
- (positioning-done . ,Rest_collision::calc_positioning_done)
-
+ (positioning-done . ,ly:rest-collision::calc-positioning-done)
(meta . ((class . Item)
(interfaces . (rest-collision-interface))))))
. (
;; don't set direction here: it breaks staccato.
- ;; This value is sensitive: if too large, staccato dots will move a
- ;; space a away.
- (padding . 0.20)
+ ;; padding set in script definitions.
(staff-padding . 0.25)
;; (script-priority . 0) priorities for scripts, see script.scm
- (X-offset . , Self_alignment_interface::centered_on_x_parent)
-
-
- (stencil . ,Script_interface::print)
- (direction . ,Script_interface::calc_direction)
+ (X-offset . ,ly:self-alignment-interface::centered-on-x-parent)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
+ (side-axis . ,Y)
+ (stencil . ,ly:script-interface::print)
+ (direction . ,ly:script-interface::calc-direction)
(font-encoding . fetaMusic)
(meta . ((class . Item)
(interfaces . (script-interface
(ScriptColumn
. (
-
- (before-line-breaking . ,Script_column::before_line_breaking)
-
+ (before-line-breaking . ,ly:script-column::before-line-breaking)
+ (meta . ((class . Item)
+ (interfaces . (script-column-interface))))))
+ (ScriptRow
+ . (
+ (before-line-breaking . ,ly:script-column::row-before-line-breaking)
(meta . ((class . Item)
(interfaces . (script-column-interface))))))
(SeparationItem
. (
- (X-extent . #f)
- (Y-extent . #f)
+ (avoid-slur . inside)
+ (X-extent . ,ly:axis-group-interface::width)
+ (Y-extent . ,ly:axis-group-interface::height)
(meta . ((class . Item)
(interfaces . (spacing-interface
separation-item-interface))))))
(SeparatingGroupSpanner
. (
-
- (springs-and-rods . ,Separating_group_spanner::set_spacing_rods)
-
+ (springs-and-rods . ,ly:separating-group-spanner::set-spacing-rods)
(meta . ((class . Spanner)
(interfaces . (only-prebreak-interface
spacing-interface
(Slur
. ((details . ,default-slur-details)
-
- (control-points . ,Slur::calc_control_points)
- (direction . ,Slur::calc_direction)
- (springs-and-rods . ,Spanner::set_spacing_rods)
- (Y-extent . ,Slur::height)
- (stencil . ,Slur::print)
-
- (thickness . 1.0)
+ (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.2)
+ (line-thickness . 0.8)
(minimum-length . 1.5)
- ; Slur::height)
(height-limit . 2.0)
(ratio . 0.25)
+ (avoid-slur . inside)
(meta . ((class . Spanner)
(interfaces . (slur-interface))))))
- (SpacingSpanner
+ (SostenutoPedal
. (
+ (stencil . ,ly:text-interface::print)
+ (direction . ,RIGHT)
+ (X-offset . ,ly:self-alignment-interface::x-aligned-on-self)
+ (no-spacing-rods . #t)
+ (padding . 0.0) ;; padding relative to SostenutoPedalLineSpanner
+ (font-shape . italic)
+ (self-alignment-X . 0)
+ (meta . ((class . Item)
+ (interfaces . (text-interface
+ self-alignment-interface
+ piano-pedal-script-interface
+ font-interface))))))
- (springs-and-rods . ,Spacing_spanner::set_springs)
+ (SostenutoPedalLineSpanner
+ . (
+ (axes . (1))
+ (Y-extent . ,ly:axis-group-interface::height)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
+ (side-axis . ,Y)
+ (staff-padding . 1.0)
+ (padding . 1.2)
+ (minimum-space . 1.0)
+ (direction . ,DOWN)
+ (meta . ((class . Spanner)
+ (interfaces . (piano-pedal-interface
+ axis-group-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)
- (grace-space-factor . 0.6)
(shortest-duration-space . 2.0)
(spacing-increment . 1.2)
+
(base-shortest-duration . ,(ly:make-moment 3 16))
(meta . ((class . Spanner)
(interfaces . (spacing-interface
+ spacing-options-interface
spacing-spanner-interface))))))
(SpanBar
(break-align-symbol . staff-bar)
(Y-extent . ())
(layer . 0)
- (breakable . #t)
-
- (stencil . ,Span_bar::print)
- (bar-size . ,Span_bar::calc_bar_size)
- (X-extent . ,Span_bar::width)
- (glyph-name . ,Span_bar::calc_glyph_name)
- (before-line-breaking . ,Span_bar::before_line_breaking)
+ (non-musical . #t)
+ (stencil . ,ly:span-bar::print)
+ (bar-size . ,ly:span-bar::calc-bar-size)
+ (X-extent . ,ly:span-bar::width)
+ (glyph-name . ,ly:span-bar::calc-glyph-name)
+ (before-line-breaking . ,ly:span-bar::before-line-breaking)
;; ugh duplication!
(StanzaNumber
. (
- (stencil . ,Text_interface::print)
-
+ (stencil . ,ly:text-interface::print)
(font-series . bold)
(padding . 1.0)
- (X-offset . ,Side_position_interface::x_aligned_side)
+ (X-offset . ,ly:side-position-interface::x-aligned-side)
(side-axis . ,X)
(direction . ,LEFT)
(meta . ((class . Item)
text-interface
font-interface))))))
- (StringNumber
- . (
-
- (stencil . ,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
. (
- (breakable . #t)
+ (non-musical . #t)
(stem-spacing-correction . 0.4)
(meta . ((class . Item)
(interfaces . (spacing-interface
staff-spacing-interface))))))
- (SostenutoPedal
- . (
-
- (stencil . ,Text_interface::print)
-
- (direction . ,RIGHT)
- (X-offset . ,Self_alignment_interface::x_aligned_on_self)
- (no-spacing-rods . #t)
- (padding . 0.0) ;; padding relative to SostenutoPedalLineSpanner
- (font-shape . italic)
- (self-alignment-X . 0)
- (meta . ((class . Item)
- (interfaces . (text-interface
- self-alignment-interface
- font-interface))))))
-
- (SostenutoPedalLineSpanner
- . (
- (axes . (1))
-
- (X-extent . ,Axis_group_interface::height)
-
- (Y-offset . ,Side_position_interface::y_aligned_side)
- (side-axis . ,Y)
-
- (padding . 1.2)
- (minimum-space . 1.0)
- (direction . ,DOWN)
- (meta . ((class . Spanner)
- (interfaces . (piano-pedal-interface
- axis-group-interface
- side-position-interface))))))
-
+
(StaffSymbol
. (
-
- (stencil . ,Staff_symbol::print)
-
+ (Y-extent . ,ly:staff-symbol::height)
+ (stencil . ,ly:staff-symbol::print)
(line-count . 5)
(ledger-line-thickness . (1.0 . 0.1))
(layer . 0)
(Stem
. (
- (direction . ,Stem::calc_direction)
- (default-direction . ,Stem::calc_default_direction)
- (stem-end-position . ,Stem::calc_stem_end_position)
- (stem-info . ,Stem::calc_stem_info)
- (positioning-done . ,Stem::calc_positioning_done)
- (stencil . ,Stem::print)
- (X-extent . ,Stem::width)
- (Y-extent . ,Stem::height)
- (length . ,Stem::calc_length)
-
- (thickness . 1.3)
+ (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)
(details
. (
;; 3.5 (or 3 measured from note head) is standard length
))
-
- ;; default stem direction for note on middle line
- (neutral-direction . ,DOWN)
-
;; We use the normal minima as minimum for the ideal lengths,
;; and the extreme minima as abolute minimum length.
- (X-offset . ,Stem::offset_callback)
- (Y-offset . ,Staff_symbol_referencer::callback)
+ (X-offset . ,ly:stem::offset-callback)
+ (Y-offset . ,ly:staff-symbol-referencer::callback)
(meta . ((class . Item)
(interfaces . (stem-interface
font-interface))))))
(StemTremolo
. (
- (Y-extent . ,Stem_tremolo::height)
- (stencil . ,Stem_tremolo::print)
+ (Y-extent . ,ly:stem-tremolo::height)
+ (stencil . ,ly:stem-tremolo::print)
(X-extent . #f)
- (beam-width . 1.6) ; staff-space
+ (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
(meta . ((class . Item)
(interfaces . (stem-tremolo-interface))))))
+ (StringNumber
+ . (
+ (stencil . ,print-circled-text-callback)
+ (text . ,string-number::calc-text)
+ (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))))))
+
+ (StrokeFinger
+ . (
+ (stencil . ,ly:text-interface::print)
+ (text . ,stroke-finger::calc-text)
+ (digit-names . #("p" "i" "m" "a" "x"))
+ (padding . 0.5)
+ (staff-padding . 0.5)
+ (self-alignment-X . 0)
+ (self-alignment-Y . 0)
+ (script-priority . 100)
+ (font-shape . italic)
+ (font-size . -4) ; don't overlap when next to heads.
+ (meta . ((class . Item)
+ (interfaces . (stroke-finger-interface
+ font-interface
+ text-script-interface
+ text-interface
+ side-position-interface
+ self-alignment-interface
+ item-interface))))))
+
+
(SustainPedal
. (
(no-spacing-rods . #t)
- (stencil . ,Sustain_pedal::print)
+ (stencil . ,ly:sustain-pedal::print)
(self-alignment-X . 0)
(direction . ,RIGHT)
(padding . 0.0) ;; padding relative to SustainPedalLineSpanner
- (X-offset . ,Self_alignment_interface::x_aligned_on_self)
+ (X-offset . ,ly:self-alignment-interface::x-aligned-on-self)
(meta . ((class . Item)
(interfaces . (piano-pedal-interface
text-spanner-interface
+ line-spanner-interface
text-interface
self-alignment-interface
+ piano-pedal-script-interface
font-interface))))))
(SustainPedalLineSpanner
. (
(axes . (1))
- (X-extent . ,Axis_group_interface::height)
- (Y-offset . ,Side_position_interface::y_aligned_side)
+ (Y-extent . ,ly:axis-group-interface::height)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(side-axis . ,Y)
(padding . 1.2)
(staff-padding . 1.2)
(System
. (
(axes . (0 1))
- (X-extent . ,Axis_group_interface::width)
- (Y-extent . ,Axis_group_interface::height)
+ (X-extent . ,ly:axis-group-interface::width)
+ (Y-extent . ,ly:axis-group-interface::height)
(meta . ((class . System)
(interfaces . (system-interface
axis-group-interface))))))
. (
(style . brace)
(padding . 0.3)
- (stencil . ,System_start_delimiter::print)
+ (stencil . ,ly:system-start-delimiter::print)
(collapse-height . 5.0)
- (X-offset . ,Side_position_interface::x_aligned_side)
+ (X-offset . ,ly:side-position-interface::x-aligned-side)
(direction . ,LEFT)
(font-encoding . fetaBraces)
(Y-extent . #f)
side-position-interface
font-interface))))))
+
(SystemStartSquare
. (
(Y-extent . #f)
- (X-offset . ,Side_position_interface::x_aligned_side)
+ (X-offset . ,ly:side-position-interface::x-aligned-side)
(direction . ,LEFT)
- (stencil . ,System_start_delimiter::print)
+ (stencil . ,ly:system-start-delimiter::print)
(style . line-bracket)
(thickness . 1.0)
(meta . ((class . Spanner)
. (
(Y-extent . #f)
(padding . 0.8)
- (X-offset . ,Side_position_interface::x_aligned_side)
+ (X-offset . ,ly:side-position-interface::x-aligned-side)
(direction . ,LEFT)
- (stencil . ,System_start_delimiter::print)
+ (stencil . ,ly:system-start-delimiter::print)
(style . bracket)
(collapse-height . 5.0)
(thickness . 0.45)
(SystemStartBar
. (
(Y-extent . #f)
- (padding . 0.0)
- (X-offset . ,Side_position_interface::x_aligned_side)
+
+ ;; 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)
(thickness . 1.6)
- (stencil . ,System_start_delimiter::print)
+ (stencil . ,ly:system-start-delimiter::print)
(meta . ((class . Spanner)
(interfaces . (side-position-interface
system-start-delimiter-interface))))))
(TabNoteHead
. (
-
- (stencil . ,Text_interface::print)
- (Y-offset . ,Staff_symbol_referencer::callback)
+ (stencil . ,ly:text-interface::print)
+ (Y-offset . ,ly:staff-symbol-referencer::callback)
(font-size . -2)
- (stem-attachment . (1.0 . 1.35))
+ (stem-attachment . (0.0 . 1.35))
(font-series . bold)
(meta . ((class . Item)
(interfaces
(TextScript
. (
(no-spacing-rods . #t)
- (X-offset . ,Self_alignment_interface::x_aligned_on_self)
+ (X-offset . ,ly:self-alignment-interface::x-aligned-on-self)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
+ (side-axis . ,Y)
(direction . ,DOWN)
;; sync with Fingering ?
(padding . 0.5)
(staff-padding . 0.5)
- (stencil . ,Text_interface::print)
- (direction . ,Script_interface::calc_direction)
+ (stencil . ,ly:text-interface::print)
+ (direction . ,ly:script-interface::calc-direction)
(avoid-slur . around)
(slur-padding . 0.5)
(TextSpanner
. (
- (stencil . ,Text_spanner::print)
- (Y-offset . ,Side_position_interface::y_aligned_side)
+ (stencil . ,ly:text-spanner::print)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(font-shape . italic)
(style . dashed-line)
(staff-padding . 0.8)
(direction . ,UP)
(meta . ((class . Spanner)
(interfaces . (text-spanner-interface
+ line-spanner-interface
side-position-interface
font-interface))))))
(Tie
. (
- (control-points . ,Tie::calc_control_points)
+ (control-points . ,ly:tie::calc-control-points)
+ (springs-and-rods . ,ly:spanner::set-spacing-rods)
(avoid-slur . inside)
- (direction . ,Tie::calc_direction)
- (stencil . ,Tie::print)
- (details . ((ratio . 0.333)
+ (direction . ,ly:tie::calc-direction)
+ (stencil . ,ly:tie::print)
+ (font-size . -6)
+ (details . (
+ ;; for a full list, see tie-helper.cc
+ (ratio . 0.333)
+ (center-staff-line-clearance . 0.6)
+ (tip-staff-line-clearance . 0.45)
+ (note-head-gap . 0.2)
+ (stem-gap . 0.35)
(height-limit . 1.0)
+ (horizontal-distance-penalty-factor . 10)
+ (min-length-penalty-factor . 20)
+ (tie-tie-collision-distance . 0.45)
+ (tie-tie-collision-penalty . 25.0)
+ (intra-space-threshold . 1.25)
+ (outer-tie-vertical-distance-symmetry-penalty-factor . 10)
+ (outer-tie-length-symmetry-penalty-factor . 10)
+ (outer-tie-vertical-gap . 0.25)
+ (multi-tie-region-size . 1)
(between-length-limit . 1.0)))
- (thickness . 1.0)
+
+ (thickness . 1.2)
+ (line-thickness . 0.8)
(meta . ((class . Spanner)
(interfaces . (tie-interface))))
))
(TieColumn
. (
- (positioning-done . ,Tie_column::calc_positioning_done)
- (before-line-breaking . ,Tie_column::before_line_breaking)
+ (positioning-done . ,ly:tie-column::calc-positioning-done)
+ (before-line-breaking . ,ly:tie-column::before-line-breaking)
(X-extent . #f)
(Y-extent . #f)
(meta . ((class . Spanner)
(TimeSignature
. (
- (stencil . ,Time_signature::print)
+ (stencil . ,ly:time-signature::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))))
- (breakable . #t)
+ (non-musical . #t)
(style . C)
(meta . ((class . Item)
(interfaces . (time-signature-interface
(TrillSpanner
. (
- (stencil . ,Dynamic_text_spanner::print)
+ (stencil . ,ly:dynamic-text-spanner::print)
(edge-text . ,(cons (make-musicglyph-markup "scripts.trill")
""))
(style . trill)
(staff-padding . 1.0)
(padding . 0.5)
(direction . ,UP)
- (Y-offset . ,Side_position_interface::y_aligned_side)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(side-axis . ,Y)
(meta . ((class . Spanner)
(interfaces . (text-spanner-interface
+ line-spanner-interface
side-position-interface
font-interface))))))
(TrillPitchAccidental
- . ((X-offset . ,Side_position_interface::x_aligned_side)
+ . ((X-offset . ,ly:side-position-interface::x-aligned-side)
(padding . 0.2)
(direction . ,LEFT)
(font-size . -4)
(side-axis . ,X)
- (stencil . ,Accidental_interface::print)
+ (stencil . ,ly:accidental-interface::print)
(meta . ((class . Item)
(interfaces . (item-interface
- accidental-interface
+ trill-pitch-accidental-interface
side-position-interface
font-interface))))))
(TrillPitchGroup
- . ((X-offset . ,Side_position_interface::x_aligned_side)
+ . ((X-offset . ,ly:side-position-interface::x-aligned-side)
(axes . (,X))
(font-size . -4)
(stencil . ,parenthesize-elements)
(TrillPitchHead
. (
- (stencil . ,Note_head::print)
+ (stencil . ,ly:note-head::print)
(duration-log . 2)
- (Y-offset . ,Staff_symbol_referencer::callback)
+ (Y-offset . ,ly:staff-symbol-referencer::callback)
(font-size . -4)
(meta . ((class . Item)
(interfaces . (item-interface
(edge-height . (0.7 . 0.7))
(shorten-pair . (-0.2 . -0.2))
(staff-padding . 0.25)
-
- (direction . ,Tuplet_bracket::calc_direction)
- (positions . ,Tuplet_bracket::calc_positions)
- (connect-to-neighbor . ,Tuplet_bracket::calc_connect_to_neighbors)
- (control-points . ,Tuplet_bracket::calc_control_points)
- (stencil . ,Tuplet_bracket::print)
+ (direction . ,ly:tuplet-bracket::calc-direction)
+ (positions . ,ly:tuplet-bracket::calc-positions)
+ (connect-to-neighbor . ,ly:tuplet-bracket::calc-connect-to-neighbors)
+ (control-points . ,ly:tuplet-bracket::calc-control-points)
+ (stencil . ,ly:tuplet-bracket::print)
(meta . ((class . Spanner)
(interfaces . (line-interface
(TupletNumber
. (
- (stencil . ,Tuplet_number::print)
+ (stencil . ,ly:tuplet-number::print)
+ (text . ,tuplet-number::calc-denominator-text)
(font-shape . italic)
(font-size . -2)
(avoid-slur . inside)
(UnaCordaPedal
. (
- (stencil . ,Text_interface::print)
+ (stencil . ,ly:text-interface::print)
(font-shape . italic)
(no-spacing-rods . #t)
(self-alignment-X . 0)
(direction . ,RIGHT)
(padding . 0.0) ;; padding relative to UnaCordaPedalLineSpanner
- (X-offset . ,Self_alignment_interface::x_aligned_on_self)
+ (X-offset . ,ly:self-alignment-interface::x-aligned-on-self)
(meta . ((class . Item)
(interfaces . (text-interface
+ piano-pedal-script-interface
self-alignment-interface
font-interface))))))
(UnaCordaPedalLineSpanner
. (
(axes . (1))
- (X-extent . ,Axis_group_interface::height)
- (Y-offset . ,Side_position_interface::y_aligned_side)
+ (Y-extent . ,ly:axis-group-interface::height)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(side-axis . ,Y)
(padding . 1.2)
(staff-padding . 1.2)
. (
(thickness . 0.6)
(flexa-width . 2.0)
- (stencil . ,Vaticana_ligature::print)
+ (stencil . ,ly:vaticana-ligature::print)
(meta . ((class . Spanner)
(interfaces . (vaticana-ligature-interface
font-interface))))))
(VerticalAlignment
. (
(axes . (1))
- (positioning-done . ,Align_interface::calc_positioning_done)
- (after-line-breaking . ,Align_interface::stretch_after_break)
- (Y-extent . ,Axis_group_interface::height)
- (X-extent . ,Axis_group_interface::width)
+ (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)
(stacking-dir . -1)
+ (padding . 0.1)
(meta . ((class . Spanner)
(interfaces . (align-interface
axis-group-interface))))))
(VerticalAxisGroup
. (
(axes . (1))
- (Y-offset . ,Hara_kiri_group_spanner::force_hara_kiri_callback)
- (Y-extent . ,Hara_kiri_group_spanner::y_extent)
- (X-extent . ,Axis_group_interface::width)
+ (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)
(meta . ((class . Spanner)
(interfaces . (axis-group-interface
hara-kiri-group-interface
vertically-spaceable-interface))))))
- (VocalName
- . (
- (breakable . #t)
- (Y-offset . ,Side_position_interface::y_aligned_on_support_refpoints)
- (direction . ,CENTER)
- (space-alist . ((left-edge . (extra-space . 1.0))))
- (break-align-symbol . instrument-name)
- (stencil . ,Text_interface::print)
- (break-align-symbol . clef)
- (break-visibility . ,begin-of-line-visible)
- (baseline-skip . 2)
- (side-axis . ,Y)
- (meta . ((class . Item)
- (interfaces . (font-interface
- self-alignment-interface
- side-position-interface
- text-interface
- break-aligned-interface))))))
(VoltaBracket
. (
- (stencil . ,Volta_bracket_interface::print)
- (after-line-breaking . ,Volta_bracket_interface::after_line_breaking)
+ (stencil . ,ly:volta-bracket-interface::print)
(direction . ,UP)
(padding . 1)
(font-encoding . fetaNumber)
- (Y-offset . ,Side_position_interface::y_aligned_side)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(side-axis . ,Y)
- (thickness . 1.6) ;; linethickness
- (edge-height . (2.0 . 2.0)) ;; staffspace;
+ (thickness . 1.6) ;; line-thickness
+ (edge-height . (2.0 . 2.0)) ;; staff-space;
(minimum-space . 5)
(font-size . -4)
(meta . ((class . Spanner)
. (
(style . line)
(gap . 0.5)
- (breakable . #t)
+ (non-musical . #t)
(X-extent . #f)
(Y-extent . #f)
- (stencil . ,Line_spanner::print)
- (after-line-breaking . ,Line_spanner::after_line_breaking)
+ (stencil . ,ly:line-spanner::print)
+ (after-line-breaking . ,ly:line-spanner::after-line-breaking)
(meta . ((class . Spanner)
(interfaces . (line-spanner-interface
line-interface))))
(set! all-grob-descriptions (sort all-grob-descriptions alist<?))
+(define pure-print-callbacks
+ (list
+ ly:note-head::print
+ ly:clef::print
+ ly:text-interface::print
+ ly:script-interface::print))
+
+;; ly:grob::stencil-extent is safe iff the print callback is safe too
+(define (pure-stencil-height grob start stop)
+ (let ((sten (ly:grob-property-data grob 'stencil)))
+ (if (or
+ (ly:stencil? sten)
+ (memq sten pure-print-callbacks))
+ (ly:grob::stencil-height grob)
+ '(0 . 0))))
+
+(define pure-conversions-alist
+ (list
+ `(,ly:slur::outside-slur-callback . ,ly:slur::pure-outside-slur-callback)
+ `(,ly:stem::height . ,ly:stem::pure-height)
+ `(,ly:grob::stencil-height . ,pure-stencil-height)
+ `(,ly:side-position-interface::y-aligned-side . ,ly:side-position-interface::pure-y-aligned-side)
+ `(,ly:axis-group-interface::height . ,ly:axis-group-interface::pure-height)
+ `(,ly:hara-kiri-group-spanner::y-extent . ,ly:hara-kiri-group-spanner::pure-height)
+ `(,ly:slur::height . ,ly:slur::pure-height)
+ `(,ly:side-position-interface::y-aligned-side . ,ly:side-position-interface::pure-y-aligned-side)))
+
+(define pure-functions
+ (list
+ ly:staff-symbol-referencer::callback
+ ly:staff-symbol::height))
+
+(define-public (pure-relevant grob)
+ (let ((extent-callback (ly:grob-property-data grob 'Y-extent)))
+ (not (eq? #f
+ (or
+ (pair? extent-callback)
+ (memq extent-callback pure-functions)
+ (and
+ (pair? (assq extent-callback pure-conversions-alist))
+ (begin
+ (or
+ (not (eq? extent-callback ly:grob::stencil-height))
+ (memq (ly:grob-property-data grob 'stencil) pure-print-callbacks)
+ (ly:stencil? (ly:grob-property-data grob 'stencil))))))))))
+
+(define-public (call-pure-function unpure args start end)
+ (if (ly:simple-closure? unpure)
+ (ly:eval-simple-closure (car args) unpure start end)
+ (if (not (procedure? unpure))
+ unpure
+ (if (memq unpure pure-functions)
+ (apply unpure args)
+ (let ((pure (assq unpure pure-conversions-alist)))
+ (if pure
+ (apply (cdr pure) (append (list (car args) start end) (cdr args)))))))))