-;;; FIXME: naming.
-;;; Score elements are called `objects' now and then, which gets
-;;; rather confusing, we now have `elements', `items', `spanners'
-;;; and `objects'.
-
-
-(define (lily-interface symbol description props)
- (list symbol
- description
- props
- )
- )
-
-
-(define (grob-description name . interfaces)
- (let* ((ifs (cons general-grob-interface interfaces))
- (props (map caddr ifs))
-; (prop-typep-pairs (map (lambda (x) (cons (car x) (cadr x)))
-; (apply append props)))
- (syms (map car ifs))
- )
- (list (cons 'separator "\n\n\n") ;easy printing.
- (cons 'name name)
- (cons 'interfaces syms)
- (cons 'interface-descriptions ifs)
- ; (cons 'interface-descriptions (cadr merged))
- ;; description of the grob itself?
-; (cons 'properties prop-typep-pairs)
- )))
-
-(define general-grob-interface
- (lily-interface
- 'general-grob-interface
- "All grobs support this"
- '(
- X-offset-callbacks
- Y-offset-callbacks
- X-extent-callback
- Y-extent-callback
- font-relative-size
- extra-offset
- interfaces
- dependencies
- no-spacing-rods
- extra-extent-X
- extra-extent-Y
- minimum-extent-X
- minimum-extent-Y
- origin
- transparent
- ))
- )
-
-(define beam-interface
- (lily-interface
- 'beam-interface
- "A beam.
-
-#'thickness= weight of beams, in staffspace
- "
- '(auto-knee-gap
- staff-position
- height
- flag-width-function
- damping
- default-neutral-direction
- thickness
- space-function
- beamed-stem-shorten
- height-quants
- vertical-position-quant-function
- damping
- outer-stem-length-limit
- slope-limit
- auto-knee-gap
- )
- ))
-
-(define clef-interface
- (lily-interface
- 'clef-interface
- "A clef sign"
- '(
- non-default
- full-size-change
- glyph
- ))
- )
-
-(define axis-group-interface
- (lily-interface
- 'axis-group-interface
- "a group of coupled grobs"
- '(
- axes
- )))
-
-(define note-column-interface
- (lily-interface
- 'note-column-interface
- "Stem and noteheads combined"
- '(
- horizontal-shift
- force-hshift
- ))
- )
-
-(define stem-interface
- (lily-interface
- 'stem-interface
- "A stem"
- '(
- thickness
- beamed-lengths
- beamed-minimum-lengths
- stem-centered
- lengths
- beam
- stem-shorten
- duration-log
- beaming
- default-neutral-direction
- stem-end-position
- support-head
- heads
- direction
- stem-length
- style
- flag-style
- dir-forced
- )))
-
-
-(define slur-interface
- (lily-interface
- 'slur-interface
- "A slur"
- '(
- de-uglify-parameters
- details
- attachment
- direction
- attachment-offset
- beautiful
- y-free
- control-points
- extremity-rules
- extremity-offset-alist
- thickness
- dashed
-
- )
- )
- )
-
-(define side-position-interface
- (lily-interface
- 'side-position-interface
- "Position a victim object (this one) next to other objects (the support).
-#'direction = where to put the victim object (left or right?)
-"
- '(
- side-support
- direction-source
- direction
- side-relative-direction
- minimum-space
- padding
- self-alignment-X
- self-alignment-Y
-
- )
- ))
-
-(define accidentals-interface
- (lily-interface
- 'accidentals-interface
- "Accidentals"
- '(
- left-padding
- right-padding
- )
- ))
-
-(define line-of-score-interface
- (lily-interface
- 'line-of-score-interface
- "Super grob, parent of all:
-
-The columns of a score that form one line. The toplevel grob. Any
-grob has a Line_of_score as both X and Y reference point. The
-Paper_score contains one grob of this type. Control enters the
-Grob dependency calculation from this single Line_of_score
-object."
- '(
- between-system-string
- spacing-procedure
- before-line-breaking-callback
- after-line-breaking-callback
- all-elements
- columns
- )))
-
-(define note-head-interface
- (lily-interface
- 'note-head-interface
- "Note head"
- '(
- style
- )
- ))
-
-(define note-name-interface
- (lily-interface
- 'note-name-interface
- "Note name"
- '(
- style
- )
- ))
-
-
-(define rhythmic-head-interface
- (lily-interface
- 'rhythmic-head-interface
- "Note head or rest"
- '(
- dot
- stem
- duration-log
- )))
-
-(define rest-interface
- (lily-interface
- 'rest-interface
- "a rest"
- '(style )))
-
-(define tuplet-bracket-interface
- (lily-interface
- 'tuplet-bracket-interface
- "A bracket with a number in the middle, used for tuplets."
- '(
- beams
- columns
- number-gap
- delta-y
- tuplet-bracket-visibility
- tuplet-number-visibility
- parallel-beam
- thick
- )
-))
-
-(define align-interface
- (lily-interface
- 'align-interface
- " Order grobs top to bottom/left to right/right to left etc."
- '(
- stacking-dir
- align-dir
- threshold
- alignment-done
- center-element
- elements
- axes
- )))
-
-(define aligned-interface
- (lily-interface
- 'aligned-interface
- "read by align-interface"
- '(
- minimum-space
- extra-space
- )))
-
-(define break-aligned-interface
- (lily-interface
- 'break-aligned-interface
- "Items that are aligned in prefatory matter"
- '(
- break-align-symbol
- visibility-lambda
- breakable
- )))
-
-(define chord-name-interface
- (lily-interface
- 'chord-name-interface
- "generate a chord name"
- '( pitches inversion bass)))
-
-(define time-signature-interface
- (lily-interface
- 'time-signature-interface
- "A time signature, in different styles.
- The following values for 'style are are recognized:
-
- @table @samp
- @item @code{C}
- 4/4 and 2/2 are typeset as C and struck C, respectively. All
- other time signatures are written with two digits.
-
- @item @code{old}
- 2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8 and 9/8 are
- typeset with old-style mensuration marks. All other time
- signatures are written with two digits.
-
- @item @code{1xxx}
- All time signatures are typeset with a single
- digit, e.g. 3/2 is written as 3. (Any symbol starting
- with the digit @code{1} will do.)
-
- @item @code{C}@var{M}@code{/}@var{N},
-@code{old}@var{M}@code{/}@var{N} or
- @code{old6/8alt}
- Tells LilyPond to use a specific symbol as time signature,
- regardless of the actual time signature.
- @end table
-
-See also the test-file @file{input/test/time.ly}.
-"
- '(fraction style )))
-
-(define bar-line-interface
- (lily-interface
- 'bar-line-interface
- "Bar line.
-
-This is a request to print a special bar symbol. It replaces the
-regular bar symbol with a special
-symbol. The argument @var{bartype} is a string which specifies the
-kind of bar to print. Options are @code{\":|\"}
-@cindex \"|A@@@code{:|}
-,
-@code{\"|:\"}
-@cindex \"|B@@@code{|:}
-, @code{\":|:\"}
-@cindex \"|C@@@code{:|:}
-,
-@code{\"||\"}
-@cindex \"|D@@@code{||}
-, @code{\"|.\"}
-@cindex \"|E@@@code{|.}
-,
-@code{\".|\"}
-@cindex \"|F@@@code{.|}
-, and @code{\".|.\"}
-@cindex \"|G@@@code{.|.}
-.
-
-These produce, respectively, a right repeat, a left repeat, a double
-repeat, a double bar, a start bar, an end bar, and a thick double bar.
-If @var{bartype} is set to @code{\"empty\"} then nothing is printed,
-but a line break is allowed at that spot.
-
-"
- '( barsize-procedure kern thin-kern hair-thickness thick-thickness glyph bar-size break-glyph-function )))
-
-(define hairpin-interface
- (lily-interface
- 'hairpin-interface
- "hairpin crescendo.
-
-padding -- horizontal padding. This is useful if a crescendo is set next to a text like `mf'
-
-"
- '( grow-direction thickness height padding )
- ))
-
-(define arpeggio-interface
- (lily-interface
- 'arpeggio-interface
- "Functions and settings for drawing an arpeggio symbol (a wavy line left to noteheads."
- '(stems)
- )
- )
-
-(define note-collision-interface
- (lily-interface
- 'note-collision-interface
- "An object that handles collisions between notes with different
-stem directions and horizontal shifts. Most of the interesting
-properties are to be set in @ref{note-column-interface}"
- '(merge-differently-dotted note-width)
- ))
-
-
-(define custos-interface
- (lily-interface
- 'custos-interface
- "A custos is a staff context symbol that appears at the end of a
- staff line with monophonic musical contents (i.e. with a single
- voice). It anticipates the pitch of the first note of the following
- line and thus helps the player or singer to manage line breaks
- during performance, thus enhancing readability of a score.
-
- Custodes were frequently used in music notation until the 16th
- century. There were different appearences for different notation
- styles. Nowadays, they have survived only in special forms of
- musical notation such as via the editio vaticana dating back to the
- beginning of the 20th century.
-
-[TODO: add to glossary]"
-
- '(style)
-)
- )
-
-
-
-
-(define dot-interface
- (lily-interface
- 'dots-interface
- "The dots to go with a notehead/rest. A separate interface, since they
- are a party in collision resolution.
- #'direction is the Direction to handle staff-line collisions in."
- '(direction dot-count)
-
- ))
-
-(define font-interface
- (lily-interface
- 'font-interface
- "Any symbol that is typeset through fixed sets of glyphs (ie. fonts)"
- '(font-style font-series font-shape font-family font-name
-font-point-size font-relative-size)
- ))
-
-
-(define text-interface
- (lily-interface
- 'text-interface
- "A scheme markup text"
- '(text align baseline-skip lookup raise kern magnify)))
-
-(define dot-column-interface
- (lily-interface
- 'dot-column-interface
- "Interface that groups dots so they form a column"
- '( )
- ))
-
-(define dynamic-interface
- (lily-interface
- 'dynamic-interface