X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fdefine-grob-properties.scm;h=d00d2875b5d3bd92a40c4792d1c4a97073488ffa;hb=7d45ed56201563544c78f523b27573b0a57b7082;hp=d0364bf4959f2284b2d0cad5d829ecba4e441443;hpb=9d9aa44b75f4a97ea1399c12ab9bac299da08e6e;p=lilypond.git diff --git a/scm/define-grob-properties.scm b/scm/define-grob-properties.scm index d0364bf495..d00d2875b5 100644 --- a/scm/define-grob-properties.scm +++ b/scm/define-grob-properties.scm @@ -22,403 +22,522 @@ (apply define-grob-property x)) `( - (X-offset ,number? "The horizontal amount that this object is moved relative to its X-parent") + (X-extent ,number-pair? "Hard coded extent in X@tie{}direction.") + (X-offset ,number? "The horizontal amount that this object is +moved relative to its X-parent.") + (Y-extent ,number-pair? "See @code{X-extent}.") (Y-offset ,number? "The vertical amount that this object is moved -relative to its Y-parent") - (accidentals ,list? "List of alteration numbers") - (after-line-breaking ,boolean? "Dummy property, used to trigger callback for after-line-breaking") - (alteration-alist ,list? "List of @code{(@var{pitch} -. @var{accidental})} pairs for key signature.") - (add-stem-support ,boolean? "If set, the Stem object is included in this script's support") +relative to its Y-parent.") + + (add-stem-support ,boolean? "If set, the @code{Stem} object is +included in this script's support.") + (after-line-breaking ,boolean? "Dummy property, used to trigger +callback for @code{after-line-breaking}.") (align-dir ,ly:dir? "Which side to align? @code{-1}: left side, @code{0}: around center of width, @code{1}: right side.") - (allow-loose-spacing ,boolean? "If set, column can be detached from main spacing.") - (arpeggio-direction ,ly:dir? "If set, put an -arrow on the arpeggio squiggly line.") - (arrow ,boolean? "Add an arrow to the line.") + (allow-loose-spacing ,boolean? "If set, column can be detached +from main spacing.") + (alteration ,number? "Alteration numbers for accidental.") + (alteration-alist ,list? "List of @code{(@var{pitch} +. @var{accidental})} pairs for key signature.") + (arpeggio-direction ,ly:dir? "If set, put an arrow on the +arpeggio squiggly line.") (arrow-length ,number? "Arrow length.") (arrow-width ,number? "Arrow width.") - (auto-knee-gap ,ly:dimension? "If a gap is found between note heads -where a horizontal beam fits that is larger than this number, make a kneed beam.") - (average-spacing-wishes ,boolean? "If set, the spacing wishes are averaged over staves.") + (auto-knee-gap ,ly:dimension? "If a gap is found between note +heads where a horizontal beam fits that is larger than this number, +make a kneed beam.") + (average-spacing-wishes ,boolean? "If set, the spacing wishes +are averaged over staves.") (avoid-note-head ,boolean? "If set, the stem of a chord does not -pass through all note heads, but starts at the last note head. ") - (axes ,list? "list of axis numbers. -In the case of alignment grobs, this should contain only one number.") - (bar-size ,ly:dimension? "size of a bar line.") - (barre-type ,symbol? "Type of barre indication used in a fret diagram. -Choices include @code{curved} and @code{straight}.") - (base-shortest-duration ,ly:moment? - "Spacing is based on the shortest notes in a piece. Normally, pieces are spaced as if notes at least as short as this are present.") +pass through all note heads, but starts at the last note head.") + (avoid-slur ,symbol? "Method of handling slur collisions. +Choices are @code{around}, @code{inside}, @code{outside}. If unset, +scripts and slurs ignore each other. @code{around} only moves the +script if there is a collision; @code{outside} always moves the +script.") + (axes ,list? "List of axis numbers. In the case of alignment +grobs, this should contain only one number.") + + (bar-size ,ly:dimension? "The size of a bar line.") + (barre-type ,symbol? "Type of barre indication used in a fret +diagram. Choices include @code{curved} and @code{straight}.") + (base-shortest-duration ,ly:moment? "Spacing is based on the +shortest notes in a piece. Normally, pieces are spaced as if notes +at least as short as this are present.") (baseline-skip ,ly:dimension? "Distance between base lines of - multiple lines of text.") - (beam-thickness ,ly:dimension? "thickness, measured in staff-space.") - (beam-width ,ly:dimension? "width of the tremolo sign.") +multiple lines of text.") + (beam-thickness ,ly:dimension? "Beam thickness, measured in +@code{staff-space} units.") + (beam-width ,ly:dimension? "Width of the tremolo sign.") (beamed-stem-shorten ,list? "How much to shorten beamed stems, -when their direction is forced. It is a list, since the value is different -depending on the number flags/beams.") - (beaming ,pair? - "Pair of number lists. Each number list specifies which -beams to make. 0 is the central beam, 1 is the next beam toward the -note etc. This information is used to determine how to connect the -beaming patterns from stem to stem inside a beam.") - (before-line-breaking ,boolean? "Dummy property, used to trigger a callback function.") - (between-cols ,pair? "Where to attach a loose column to") - (bound-padding ,number? "The amount of padding to insert around spanner bounds.") +when their direction is forced. It is a list, since the value is +different depending on the number of flags and beams.") + (beaming ,pair? "Pair of number lists. Each number list +specifies which beams to make. @code{0}@tie{}is the central beam, +@code{1}@tie{}is the next beam toward the note, etc. This +information is used to determine how to connect the beaming patterns +from stem to stem inside a beam.") + (before-line-breaking ,boolean? "Dummy property, used to trigger +a callback function.") + (between-cols ,pair? "Where to attach a loose column to.") + (bound-padding ,number? "The amount of padding to insert around +spanner bounds.") + (bound-details ,list? "An alist of properties for determining +attachments of spanners to edges.") (bracket-flare ,number-pair? "A pair of numbers specifying how -much edges of brackets should slant outward. Value 0.0 means straight -edges") +much edges of brackets should slant outward. Value @code{0.0} means +straight edges.") + (bracket-visibility ,boolean-or-symbol? "This controls the +visibility of the tuplet bracket. Setting it to false prevents +printing of the bracket. Setting the property to @code{if-no-beam} +makes it print only if there is no beam associated with this tuplet +bracket.") (break-align-symbol ,symbol? "This key is used for aligning and spacing breakable items.") - (break-align-orders ,vector? " Defines the order in which -prefatory matter (clefs, key signatures) appears. The format is a -vector of length 3, where each element is one order for end-of-line, -middle of line, and start-of-line respectively. An order is a list of -symbols. + (break-align-orders ,vector? "Defines the order in which +prefatory matter (clefs, key signatures) appears. The format is a +vector of length@tie{}3, where each element is one order for +end-of-line, middle of line, and start-of-line, respectively. An +order is a list of symbols. For example, clefs are put after key signatures by setting @example - \\override Score.BreakAlignment #'break-align-orders = #(make-vector 3 - '(span-bar - breathing-sign - staff-bar - key - clef - time-signature)) +\\override Score.BreakAlignment #'break-align-orders = + #(make-vector 3 '(span-bar + breathing-sign + staff-bar + key + clef + time-signature)) @end example") (break-overshoot ,number-pair? "How much does a broken spanner stick out of its bounds?") - (bracket-visibility ,boolean-or-symbol? "This controls the -visibility of the tuplet bracket. Setting it to false will prevent -printing of the bracket. Setting the property to @code{'if-no-beam} -will make it print only if there is no beam associated with this -tuplet bracket.") - (break-visibility ,vector? "A vector of 3 booleans, #(end-of-line unbroken begin-of-line). -#t means visible, #f means killed.") + (break-visibility ,vector? "A vector of 3@tie{}booleans, +@code{#(@var{end-of-line} @var{unbroken} @var{begin-of-line})}. +@code{#t} means visible, @code{#f} means killed.") + (breakable ,boolean? "Allow breaks here.") + (c0-position ,integer? "An integer indicating the position of -middle C.") - (cautionary-style ,symbol? "How to print cautionary -accidentals. Choices are @code{smaller} or -@code{parentheses}.") - (cautionary ,boolean? "Is this a cautionary accidental?") - (concaveness ,number? "A beam is concave when its inner stems are -closer to the beam than the two outside stems. This number is a -measure of the closeness of the inner stems. It is used for damping -the slope of the beam.") - (collapse-height ,ly:dimension? "Minimum height of system start delimiter. If equal or smaller, the bracket is removed.") +middle@tie{}C.") + (clip-edges ,boolean? "Allow outward pointing beamlets at the +edges of beams?") + (collapse-height ,ly:dimension? "Minimum height of system start +delimiter. If equal or smaller, the bracket is removed.") (color ,color? "The color of this grob.") - (control-points ,list? "List of offsets (number-pairs) that form -control points for the tie/slur/bracket shape. For beziers, this -should list the control points of a 3rd order bezier curve." ) - (connect-to-neighbor ,pair? "Pair of booleans, indicating whether this -grob looks as a continued break.") - (damping ,number? "Amount of beam slope damping. ") - (dash-period ,number? "the length of one dash + white space. If -negative, no line is drawn at all.") + (common-shortest-duration ,ly:moment? "The most common shortest +note length. This is used in spacing. Enlarging this sets the score +tighter.") + (concaveness ,number? "A beam is concave if its inner stems are +closer to the beam than the two outside stems. This number is a +measure of the closeness of the inner stems. It is used for damping +the slope of the beam.") + (connect-to-neighbor ,pair? "Pair of booleans, indicating whether +this grob looks as a continued break.") + (control-points ,list? "List of offsets (number pairs) that form +control points for the tie, slur, or bracket shape. For B@'eziers, +this should list the control points of a third-order B@'ezier curve.") + + (damping ,number? "Amount of beam slope damping.") (dash-fraction ,number? "Size of the dashes, relative to -dash-period. Should be between 0.0 (no line) and 1.0 (continuous -line).") - (default-direction ,ly:dir? "Direction determined by note head positions.") - (digit-names ,vector "Names for string finger digits. ") - (direction ,ly:dir? "If side-position is 1 (#X), then this property determines if the object is placed #LEFT, #CENTER or #RIGHT with respect to the other object. Otherwise, it determines if the object is placed #UP #CENTER or #DOWN. Numerical values may also be used. #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0 but also other numerical values are permitted.") +@code{dash-period}. Should be between @code{0.0} (no line) and +@code{1.0} (continuous line).") + (dash-period ,number? "The length of one dash together with +whitespace. If negative, no line is drawn at all.") + (default-direction ,ly:dir? "Direction determined by note head +positions.") + (digit-names ,vector "Names for string finger digits.") + (direction ,ly:dir? "If @code{side-axis} is @code{1} (or +@code{#X}), then this property determines whether the object is placed +@code{#LEFT}, @code{#CENTER} or @code{#RIGHT} with respect to the +other object. Otherwise, it determines whether the object is placed +@code{#UP}, @code{#CENTER} or #DOWN. Numerical values may also be +used: @code{#UP}=@code{1}, @code{#DOWN}=@code{-1}, +@code{#LEFT}=@code{-1}, @code{#RIGHT}=@code{1}, @code{CENTER}=@code{0} +but also other numerical values are permitted.") (dot-color ,symbol? "Color of dots. Options include @code{black} and @code{white}.") - (dot-radius ,number? "Radius of dots.") (dot-count ,integer? "The number of dots.") - (duration-log ,integer? "The 2-log of the note head duration, i.e. 0=whole note, 1 = half note, etc.") - (edge-height ,pair? "A pair of number specifying the heights of -the vertical edges '(@var{left-height} . @var{right-height}).") + (dot-radius ,number? "Radius of dots.") + (duration-log ,integer? "The 2-log of the note head duration, +i.e. @code{0} = whole note, @code{1} = half note, etc.") + + (eccentricity ,number? "How asymmetrical to make a slur. +Positive means move the center to the right.") + (edge-height ,pair? "A pair of numbers specifying the heights of +the vertical edges: @code{(@var{left-height} . @var{right-height})}.") (edge-text ,pair? "A pair specifying the texts to be set at the -edges '(@var{left-text} . @var{right-text}).") - (eccentricity ,number? "How asymmetrical to make a slur. Positive means move the center to the right.") - (enclose-bounds ,number? - "How much of the bound a spanner should enclose: -+1 = completely, 0 = center, -1 not at all.") - (expand-limit ,integer? "maximum number of measures expanded in church rests.") +edges: @code{(@var{left-text} . @var{right-text})}.") + (expand-limit ,integer? "Maximum number of measures expanded in +church rests.") + (extra-X-extent ,number-pair? "A grob is enlarged in +X@tie{}dimension by this much.") + (extra-Y-extent ,number-pair? "See @code{extra-X-extent}.") ;; remove me? (extra-dy ,number? "Slope glissandi this much extra.") - (extra-X-extent ,number-pair? "A grob is enlarged in X dimension -by this much.") - (extra-Y-extent ,number-pair? "See @code{extra-X-extent}.") - (X-extent ,number-pair? "Hard coded extent in X direction. ") - (Y-extent ,number-pair? "See @code{X-extent}.") - (extra-offset ,number-pair? "A pair representing an offset. This + (extra-offset ,number-pair? "A pair representing an offset. This offset is added just before outputting the symbol, so the typesetting engine is completely oblivious to it.") - (finger-code ,symbol? "Code for the type of fingering indication in a -fret diagram. Options include @code{none}, @code{in-dot}, and @code{below-string}.") + (extra-spacing-width ,number-pair? "In the horizontal spacing +problem, we pad each item by this amount (by adding the @q{car} on the +left side of the item and adding the @q{cdr} on the right side of the +item). In order to make a grob take up no horizontal space at all, +set this to @code{(+inf.0 . -inf.0)}.") + + (finger-code ,symbol? "Code for the type of fingering indication +in a fret diagram. Options include @code{none}, @code{in-dot}, and +@code{below-string}.") (flag-count ,number? "The number of tremolo beams.") - (flag-style ,symbol? - "a string determining what style of flag-glyph is -typeset on a Stem. Valid options include @code{()} and -@code{mensural}. Additionally, @code{\"no-flag\"} switches off the + (flag-style ,symbol? "A string determining what style of flag +glyph is typeset on a @code{Stem}. Valid options include @code{()} +and @code{mensural}. Additionally, @code{no-flag} switches off the flag.") - (font-family ,symbol? "The font family is the broadest category for selecting text fonts. Options include: @code{sans}, @code{roman} ") (font-encoding ,symbol? "The font encoding is the broadest -category for selecting a font. Options include: @code{fetaMusic}, -@code{fetaNumber}, @code{TeX-text}, @code{TeX-math}, @code{fetaBraces}, -@code{fetaDynamic}") - (font-name ,string? "Specifies a file name (without extension) of -the font to load. This setting override selection using +category for selecting a font. Options include: @code{fetaMusic}, +@code{fetaNumber}, @code{TeX-text}, @code{TeX-math}, +@code{fetaBraces}, @code{fetaDynamic}.") + (font-family ,symbol? "The font family is the broadest category +for selecting text fonts. Options include: @code{sans}, +@code{roman}.") + (font-name ,string? "Specifies a file name (without extension) +of the font to load. This setting overrides selection using @code{font-family}, @code{font-series} and @code{font-shape}.") - (font-size ,number? "The font size, compared the `normal' -size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. -Each step of 1 is approximately 12% larger, 6 steps are exactly a -factor 2 larger. Fractional values are allowed.") - (font-series ,symbol? "Select the series of a font. Choices + (font-series ,symbol? "Select the series of a font. Choices include @code{medium}, @code{bold}, @code{bold-narrow}, etc.") - (font-shape ,symbol? "Select the shape of a font. Choices include @code{upright}, -@code{italic}, @code{caps}.") - (forced ,boolean? "manually forced accidental") - (forced-distance ,ly:dimension? "A fixed distance between object -reference points in an alignment.") + (font-shape ,symbol? "Select the shape of a font. Choices +include @code{upright}, @code{italic}, @code{caps}.") + (font-size ,number? "The font size, compared to the @q{normal} +size. @code{0}@tie{}is style-sheet's normal size, @code{-1} is +smaller, @code{+1} is bigger. Each step of@tie{}1 is approximately +12% larger, 6@tie{}steps are exactly a factor@tie{}2 larger. +Fractional values are allowed.") (force-hshift ,number? "This specifies a manual shift for notes -in collisions. The unit is the note head width of the first voice +in collisions. The unit is the note head width of the first voice note. This is used by @internalsref{note-collision-interface}.") + (forced ,boolean? "Manually forced accidental.") (fraction ,number-pair? "Numerator and denominator of a time signature object.") (french-beaming ,boolean? "Use French beaming style for this -stem. The stem will stop at the innermost beams.") +stem. The stem stops at the innermost beams.") (fret-count ,integer? "The number of frets in a fret diagram.") ;; ugh: double, change. (full-size-change ,boolean? "Don't make a change clef smaller.") - (non-default ,boolean? "Set for manually specified clefs.") - (glyph ,string? "a string determining what (style) of glyph is -typeset. Valid choices depend on the function that is reading this -property.") + (gap ,ly:dimension? "Size of a gap in a variable symbol.") (gap-count ,integer? "Number of gapped beams for tremolo.") + (glyph ,string? "A string determining what @q{style} of glyph is +typeset. Valid choices depend on the function that is reading this +property.") + (glyph-name-alist ,list? "An alist of key-string pairs.") (grow-direction ,ly:dir? "Crescendo or decrescendo?") - (hair-thickness ,number? "Thickness of the thin line in a bar line.") - (head-direction ,ly:dir? "Are the note heads left or right in a semitie?") - (height ,ly:dimension? "Height of an object in staff-space.") - (height-limit ,ly:dimension? "Maximum slur height: the longer the + + (hair-thickness ,number? "Thickness of the thin line in a bar +line.") + (head-direction ,ly:dir? "Are the note heads left or right in a +semitie?") + (height ,ly:dimension? "Height of an object in +@code{staff-space} units.") + (height-limit ,ly:dimension? "Maximum slur height: The longer the slur, the closer it is to this height.") (horizontal-shift ,integer? "An integer that identifies ranking -of note-column for horizontal shifting. This is used by +of @code{NoteColumn}s for horizontal shifting. This is used by @internalsref{note-collision-interface}.") - (avoid-slur ,symbol? "Method of handling slur collisions. -Choices are @code{around}, @code{inside}, @code{outside}. If unset, script -and slur ignore eachother.") - (inspect-quants ,number-pair? "If debugging is set, -set beam/slur quant to this position, and print the respective scores.") - (inspect-index ,integer? "If debugging is set, -set beam/slur configuration to this index, and print the respective scores.") + (horizontal-skylines ,ly:skyline-pair? "Two skylines, one to the +left and one to the right of this grob.") + + (ignore-collision ,boolean? "If set, don't do note collision +resolution on this @code{NoteColumn}.") (implicit ,boolean? "Is this an implicit bass figure?") + (infinite-spacing-height ,boolean? "If true, then for the +purposes of horizontal spacing, treat this item as though it were +infinitely tall. That is, no object from another column is allowed to +stick above or below this item.") + (inspect-index ,integer? "If debugging is set, set beam and slur +configuration to this index, and print the respective scores.") + (inspect-quants ,number-pair? "If debugging is set, +set beam and slur quants to this position, and print the respective +scores.") + + (keep-fixed-while-stretching ,boolean? "A grob with this property +set to true is fixed relative to the staff above it when systems are +stretched.") (keep-inside-line ,boolean? "If set, this column cannot have things sticking into the margin.") - (kern ,ly:dimension? "Amount of extra white space to add. For -bar line, this is the amount of space after a thick line.") + (kern ,ly:dimension? "Amount of extra white space to add. For +bar lines, this is the amount of space after a thick line.") (knee ,boolean? "Is this beam kneed?") (knee-spacing-correction ,number? "Factor for the optical -correction amount for kneed beams. Set between 0 for no correction and -1 for full correction.") - (label-dir ,ly:dir? "Side to which label is attached. @code{-1} for left, @code{1} for right.") - (layer ,number? "The output layer [0..2]: layers define the order -of printing objects. Objects in lower layers are overprinted by -objects in higher layers.") - (ledger-line-thickness ,number-pair? - "The thickness of ledger lines: it is the -sum of 2 numbers. The first is the factor for line thickness, and the -second for staff space. Both contributions are added.") +correction amount for kneed beams. Set between @code{0} for no +correction and @code{1} for full correction.") + + (label-dir ,ly:dir? "Side to which a label is attached. +@code{-1} for left, @code{1}@tie{}for right.") + (layer ,number? "The output layer (a value between 0 and@tie{}2: +Layers define the order of printing objects. Objects in lower layers +are overprinted by objects in higher layers.") + (ledger-line-thickness ,number-pair? "The thickness of ledger +lines. It is the sum of 2@tie{}numbers: The first is the factor for +line thickness, and the second for staff space. Both contributions +are added.") + (left-bound-info ,list? "An alist of properties for determining +attachments of spanners to edges.") (left-padding ,ly:dimension? "The amount of space that is put -left to an object (eg. a group of accidentals).") +left to an object (e.g., a group of accidentals).") (length ,ly:dimension? "User override for the stem length of unbeamed stems.") - (length-fraction ,number? "Multiplier for lengths. Used for + (length-fraction ,number? "Multiplier for lengths. Used for determining ledger lines and stem lengths.") - (line-break-system-details ,list? - "Alist of properties to use when this -column is the start of a system.") + (line-break-penalty ,number? "Penalty for a line break at this +column. This affects the choices of the line breaker; it avoids a +line break at a column with a positive penalty and prefer a line break +at a column with a negative penalty.") + (line-break-permission ,symbol? "Instructs the line breaker on +whether to put a line break at this column. Can be @code{force} or +@code{allow}.") + (line-break-system-details ,list? "An alist of properties to use +if this column is the start of a system.") (line-count ,integer? "The number of staff lines.") (line-positions ,list? "Vertical positions of staff lines.") - (line-thickness ,number? "The thickness of the tie/slur contour.") - (long-text ,markup? "Text markup. See @usermanref{Text markup}.") + (line-thickness ,number? "The thickness of the tie or slur +contour.") + (long-text ,markup? "Text markup. See @usermanref{Text +markup}.") + (max-beam-connect ,integer? "Maximum number of beams to connect -to beams from this stem. Further beams are typeset as beamlets.") - (measure-length ,ly:moment? "Length of a -measure. Used in some spacing situations.") +to beams from this stem. Further beams are typeset as beamlets.") + (max-stretch ,number? "The maximum amount that this +@code{VerticalAxisGroup} can be vertically stretched (for example, in +order to better fill a page).") (measure-count ,integer? "The number of measures for a -multimeasure rest.") - (merge-differently-headed ,boolean? "Merge -note heads in collisions, even if they have different note heads. The -smaller of the two heads will be rendered invisible. This used -polyphonic guitar notation. The value of this setting is used by -@internalsref{note-collision-interface} .") +multi-measure rest.") + (measure-length ,ly:moment? "Length of a measure. Used in some +spacing situations.") (merge-differently-dotted ,boolean? "Merge note heads in -collisions, even if they have a different number of dots. This normal -notation for some types of polyphonic music. ") - (minimum-length-fraction ,number? "Minimum length of ledger line as fraction of note head size.") +collisions, even if they have a different number of dots. This is +normal notation for some types of polyphonic music. + +@code{merge-differently-dotted} only applies to opposing stem +directions (i.e. voice 1 &@tie{}2).") + (merge-differently-headed ,boolean? "Merge note heads in +collisions, even if they have different note heads. The +smaller of the two heads is rendered invisible. This is used in +polyphonic guitar notation. The value of this setting is used by +@internalsref{note-collision-interface}. + +@code{merge-differently-headed} only applies to opposing stem +directions (i.e. voice 1 &@tie{}2).") + (minimum-X-extent ,number-pair? "Minimum size of an object in +X@tie{}dimension, measured in @code{staff-space} units.") + (minimum-Y-extent ,number-pair? "See @code{minimum-X-extent}.") (minimum-distance ,ly:dimension? "Minimum distance between rest and notes or beam.") - (minimum-X-extent ,number-pair? "Minimum size of an object in X -dimension, measured in staff space.") - (minimum-Y-extent ,number-pair? "See @code{minimum-X-extent}.") (minimum-length ,ly:dimension? "Try to make a spanner at least -this long. This requires an appropriate callback for the -@code{springs-and-rods} property.") +this long, normally in the horizontal direction. This requires an +appropriate callback for the @code{springs-and-rods} property. If +added to a @code{Tie}, this sets the minimum distance between +noteheads.") + (minimum-length-fraction ,number? "Minimum length of ledger line +as fraction of note head size.") (minimum-space ,ly:dimension? "Minimum distance that the victim should move (after padding).") + (neutral-direction ,ly:dir? "Which direction to take in the center of the staff.") (neutral-position ,number? "Position (in half staff spaces) where to flip the direction of custos stem.") - (next ,ly:grob? "Object that is next relation (eg. the lyric syllable following an extender.") - (note-names ,vector? "Vector of strings containing names for -easy-notation note heads.") - (no-ledgers ,boolean? "If set, don't draw ledger lines on this object.") - (no-spacing-rods ,boolean? "Items with this property do not cause -spacing constraints.") + (next ,ly:grob? "Object that is next relation (e.g., the lyric +syllable following an extender.") + (no-ledgers ,boolean? "If set, don't draw ledger lines on this +object.") (no-stem-extend ,boolean? "If set, notes with ledger lines do not get stems extending to the middle staff line.") - (non-musical ,boolean? "True if the grob belongs in a NonMusicalPaperColumn.") + (non-default ,boolean? "Set for manually specified clefs.") + (non-musical ,boolean? "True if the grob belongs to a +@code{NonMusicalPaperColumn}.") + (note-names ,vector? "Vector of strings containing names for +easy-notation note heads.") (number-type ,symbol? "Type of numbers to use in label. Choices include @code{roman-lower}, @code{roman-upper}, and @code{arabic}.") - (outside-staff-horizontal-padding ,number? "By default, an outside-staff-object can be -placed so that is it very close to another grob horizontally. If this property is set, -the outside-staff-object will be raised so that it is not so close to its neighbour.") - (outside-staff-padding ,number? "The padding to place between this grob and the staff when -spacing according to outside-staff-priority.") - (outside-staff-priority ,number? "When set, the grob will be positioned outside the staff -in such a way as to avoid all collisions. In case of a potential collision, the grob with -the smaller outside-staff-priority will be closer to the staff.") + + (outside-staff-horizontal-padding ,number? "By default, an +outside-staff-object can be placed so that is it very close to another +grob horizontally. If this property is set, the outside-staff-object +is raised so that it is not so close to its neighbour.") + (outside-staff-padding ,number? "The padding to place between +this grob and the staff when spacing according to +@code{outside-staff-priority}.") + (outside-staff-priority ,number? "If set, the grob is positioned +outside the staff in such a way as to avoid all collisions. +In case of a potential collision, the grob with the smaller +@code{outside-staff-priority} is closer to the staff.") + (packed-spacing ,boolean? "If set, the notes are spaced as tightly as possible.") (padding ,ly:dimension? "Add this much extra space between objects that are next to each other.") - (page-break-permission ,symbol? "Instructs the page breaker on whether to -put a page break at this column. Can be 'force, or 'allow.") - (page-turn-permission ,symbol? "Instructs the page breaker on whether to -put a page turn at this column. Can be 'force, or 'allow.") - (line-break-permission ,symbol? "Instructs the line breaker on whether to -put a line break at this column. Can be 'force, or 'allow.") - (page-break-penalty ,number? "Penalty for page break at -this column. This affects the choices of the page breaker; it will avoid a page -break at a column with a positive penalty and prefer a page break at a column -with a negative penalty.") - (page-turn-penalty ,number? "Penalty for a page turn at this column. -This affects the choices of the page breaker; it will avoid a page -turn at a column with a positive penalty and prefer a page turn at a column -with a negative penalty.") - (line-break-penalty ,number? "Penalty for a line break at this column. -This affects the choices of the line breaker; it will avoid a line -break at a column with a positive penalty and prefer a line break at a column -with a negative penalty.") - (positions ,pair? - "Pair of staff coordinates @code{(@var{left} -. @var{right})}, where both @var{left} and @var{right} are in the -staff-space unit of the current staff.") - (ratio ,number? "Parameter for slur shape. The higher this number, the -quicker the slur attains it @code{height-limit}.") + (page-break-penalty ,number? "Penalty for page break at this +column. This affects the choices of the page breaker; it avoids a +page break at a column with a positive penalty and prefer a page break +at a column with a negative penalty.") + (page-break-permission ,symbol? "Instructs the page breaker on +whether to put a page break at this column. Can be @code{force} or +@code{allow}.") + (page-turn-penalty ,number? "Penalty for a page turn at this +column. This affects the choices of the page breaker; it avoids a +page turn at a column with a positive penalty and prefer a page turn +at a column with a negative penalty.") + (page-turn-permission ,symbol? "Instructs the page breaker on +whether to put a page turn at this column. Can be @code{force} or +@code{allow}.") + (parenthesized ,boolean? "Parenthesize this grob.") + (positions ,pair? "Pair of staff coordinates @code{(@var{left} +. @var{right})}, where both @var{left} and @var{right} are in +@code{staff-space} units of the current staff.") + + (ratio ,number? "Parameter for slur shape. The higher this +number, the quicker the slur attains its @code{height-limit}.") (remove-empty ,boolean? "If set, remove group if it contains no -@code{interesting-items}") - (remove-first ,boolean? "Remove the first staff of a orchestral score?") - (rhythmic-location ,rhythmic-location? "Where (bar number, measure position) in the score.") - (right-padding ,ly:dimension? "Space to insert on the right side of an object (eg. between note and its accidentals.)") - (rotation ,list? "Number of degrees to rotate this object, and what point -to rotate around. #'(45 0 0) means rotate 45 degrees around the center of this object.") +interesting items.") + (remove-first ,boolean? "Remove the first staff of a orchestral +score?") + (restore-first ,boolean? "Print a natural before the +accidental.") + (rhythmic-location ,rhythmic-location? "Where (bar number, +measure position) in the score.") + (right-bound-info ,list? "An alist of properties for determining +attachments of spanners to edges.") + (right-padding ,ly:dimension? "Space to insert on the right side +of an object (e.g., between note and its accidentals).") + (rotation ,list? "Number of degrees to rotate this object, and +what point to rotate around. For example, @code{#'(45 0 0)} rotates +by 45 degrees around the center of this object.") + (same-direction-correction ,number? "Optical correction amount -for stems that are placed in tight configurations. This amount is used -for stems with the same direction to compensate for note-head to stem distance.") +for stems that are placed in tight configurations. This amount is +used for stems with the same direction to compensate for note-head to +stem distance.") (script-priority ,number? "A sorting key that determines in what order a script is within a stack of scripts.") (self-alignment-X ,number? "Specify alignment of an object. The -value -1 means left aligned, 0 centered, and 1 right-aligned in X -direction. Values in between may also be specified.") - (self-alignment-Y ,number? "like @code{self-alignment-X} but for -Y axis.") +value @code{-1} means left aligned, @code{0}@tie{}centered, and +@code{1}@tie{}right-aligned in X@tie{}direction. Values in-between +may also be specified.") + (self-alignment-Y ,number? "Like @code{self-alignment-X} but for +the Y@tie{}axis.") (shorten-pair ,number-pair? "The lengths to shorten a -text-spanner on both sides, for example a pedal bracket. Positive values -shorten the text-spanner, while negative values lengthen it.") - (clip-edges ,boolean? "Allow outward pointing beamlets at the edges of beams?") - (common-shortest-duration ,ly:moment? - "The most common shortest note length. -This is used in spacing. Enlarging this will set the score tighter.") +text-spanner on both sides, for example a pedal bracket. Positive +values shorten the text-spanner, while negative values lengthen it.") (shortest-duration-space ,ly:dimension? "Start with this much -space for the shortest duration. This is expressed in -@code{spacing-increment} as unit. See also +space for the shortest duration. This is expressed in +@code{spacing-increment} as unit. See also @internalsref{spacing-spanner-interface}.") - (shortest-playing-duration ,ly:moment? "The duration of the shortest playing here.") - (shortest-starter-duration ,ly:moment? "The duration of the shortest -note that starts here.") - (side-relative-direction ,ly:dir? - "Multiply direction of + (shortest-playing-duration ,ly:moment? "The duration of the +shortest playing here.") + (shortest-starter-duration ,ly:moment? "The duration of the +shortest note that starts here.") + (side-axis ,number? "If the value is @code{#X} (or +equivalently@tie{}@code{1}), the object is placed horizontally next +to the other object. If the value is @code{#Y} or@tie{}@code{0}, it +is placed vertically.") + (side-relative-direction ,ly:dir? "Multiply direction of @code{direction-source} with this to get the direction of this object.") - (side-axis ,number? "If the value is #X (or equivalently 1), the object is placed horizontally next to the other object. If the value is #Y or 0, it is placed vertically.") (size ,number? "Size of object, relative to standard size.") - (skylines ,pair? "A pair of lists of (x height) pairs.") (slope ,number? "The slope of this object.") (slur-padding ,number? "Extra distance between slur and script.") (space-alist ,list? "A table that specifies distances between -prefatory items, like clef and time-signature. The format is an alist +prefatory items, like clef and time-signature. The format is an alist of spacing tuples: @code{(@var{break-align-symbol} @var{type} . @var{distance})}, where @var{type} can be the symbols @code{minimum-space} or @code{extra-space}.") (spacing-increment ,number? "Add this much space for a doubled -duration. Typically, the width of a note head. See also +duration. Typically, the width of a note head. See also @internalsref{spacing-spanner-interface}.") - (springs-and-rods ,boolean? "Dummy variable for triggering spacing routines.") + (springs-and-rods ,boolean? "Dummy variable for triggering +spacing routines.") (stacking-dir ,ly:dir? "Stack objects in which direction?") - (staff-padding ,ly:dimension? - "Maintain this much space between reference points -and the staff. Its effect is to align objects of differing -sizes (like the dynamic @b{p} and @b{f}) on their baselines.") + (staff-padding ,ly:dimension? "Maintain this much space between +reference points and the staff. Its effect is to align objects of +differing sizes (like the dynamic @b{p} and @b{f}) on their +baselines.") (staff-position ,number? "Vertical position, measured in half staff spaces, counted from the middle line.") (staff-space ,ly:dimension? "Amount of space between staff lines, -expressed in global staff-space.") - (stemlet-length ,number? "How long should a stem over a rest be?") - (stem-attachment ,number-pair? "A (@var{x} . @var{y}) pair where the stem attaches to the notehead.") - (stem-end-position ,number? "Where does the stem end (the end is opposite to the support-head.") +expressed in global @code{staff-space}.") + (stem-attachment ,number-pair? "A @code{(@var{x} . @var{y})} pair +where the stem attaches to the notehead.") + (stem-end-position ,number? "Where does the stem end (the end is +opposite to the support-head)?") ;;[TODO: doco] (stem-spacing-correction ,number? "Optical correction amount for -stems that are placed in tight configurations. For opposite +stems that are placed in tight configurations. For opposite directions, this amount is the correction for two normal sized stems that overlap completely.") + (stemlet-length ,number? "How long should a stem over a rest +be?") (stencil ,ly:stencil? "The symbol to print.") - (stencils ,list? "Multiple stencils, used as intermediate value.") + (stencils ,list? "Multiple stencils, used as intermediate +value.") + (strict-grace-spacing ,boolean? "If set, grace notes +are not spaced separately, but put before musical columns.") (strict-note-spacing ,boolean? "If set, unbroken columns with non-musical material (clefs, barlines, etc.) are not spaced separately, but put before musical columns.") - (strict-grace-spacing ,boolean? "If set, grace notes -are not spaced separately, but put before musical columns.") - (string-count ,integer? "The number of strings in a fret diagram.") - (string-fret-finger-combinations ,list? "List consisting of (string-number fret-number finger-number) entries.") - (stroke-style ,string? "set to \"grace\" to turn stroke through flag on.") + (string-count ,integer? "The number of strings in a fret +diagram.") + (string-fret-finger-combinations ,list? "List consisting of +@code{(@var{string-number} @var{fret-number} @var{finger-number})} +entries.") + (stroke-style ,string? "Set to @code{\"grace\"} to turn stroke +through flag on.") (style ,symbol? "This setting determines in what style a grob is -typeset. Valid choices depend on the @code{stencil} callback reading +typeset. Valid choices depend on the @code{stencil} callback reading this property.") + (text ,markup? "Text markup. See @usermanref{Text markup}.") ;;FIXME -- Should both be the same? (text-direction ,ly:dir? "This controls the ordering of the -words. The default RIGHT is for roman text. Arabic or hebrew should -use LEFT.") +words. The default @code{RIGHT} is for roman text. Arabic or Hebrew +should use @code{LEFT}.") (thick-thickness ,number? "Bar line thickness, measured in @code{line-thickness}.") (thickness ,number? "Line thickness, generally measured in @code{line-thickness}.") (thin-kern ,number? "The space after a hair-line in a bar line.") - (threshold ,number-pair? "(@var{min} . @var{max}), where + (threshold ,number-pair? "@code{(@var{min} . @var{max})}, where @var{min} and @var{max} are dimensions in staff space.") - (tie-configuration ,list? "List of (@var{position} . @var{dir}) -pairs, indicating the desired tie configuration. A non-pair entry in -the list will cause said tie to be formatted automatically. ") + (tie-configuration ,list? "List of @code{(@var{position} . +@var{dir})} pairs, indicating the desired tie configuration, where +@var{position} is the offset from the center of the staff in staff +space and @var{dir} indicates the direction of the tie +(@code{1}=>up, @code{-1}=>down, @code{0}=>center). A non-pair entry +in the list causes the corresponding tie to be formatted +automatically.") (transparent ,boolean? "This makes the grob invisible.") - (uniform-stretching ,boolean? "If set, items stretch proportional -to their durations. This looks better in complex polyphonic patterns") - (used ,boolean? "If set, this spacing column is kept in the spacing problem") + + (uniform-stretching ,boolean? "If set, items stretch +proportionally to their durations. This looks better in complex +polyphonic patterns.") + (used ,boolean? "If set, this spacing column is kept in the +spacing problem") + + (vertical-skylines ,ly:skyline-pair? "Two skylines, one above and +one below this grob.") + (when ,ly:moment? "Global time step associated with this column happen?") - (word-space ,ly:dimension? "space to insert between words in texts.") - (width ,ly:dimension? "The width of a grob measured in staff space.") + (width ,ly:dimension? "The width of a grob measured in staff +space.") + (word-space ,ly:dimension? "Space to insert between words in +texts.") + (zigzag-length ,ly:dimension? "The length of the lines of a -zigzag, relative to @code{zigzag-width}. A value of 1 gives 60-degree -zigzags.") - (zigzag-width ,ly:dimension? "The width of one -zigzag-squiggle. This number will be adjusted slightly so that the -glissando line can be constructed from a whole number of squiggles.") +zigzag, relative to @code{zigzag-width}. A value of@tie{}@code{1} +gives 60-degree zigzags.") + (zigzag-width ,ly:dimension? "The width of one zigzag squiggle. +This number is adjusted slightly so that the glissando line can +be constructed from a whole number of squiggles.") ))) @@ -439,9 +558,11 @@ glissando line can be constructed from a whole number of squiggles.") (apply define-internal-grob-property x)) `( - (pure-relevant-elements ,ly:grob-array? "The subset of elements that are relevant for finding the pure-Y-extent.") + ;;;;;;;;;;;;;;;; + ;; grobs & grob arrays. (alphabetical) + (X-common ,ly:grob? "Common refpoint for axis group.") + (Y-common ,ly:grob? "See @code{X-common}.") (cached-pure-extents ,vector? "Used by a VerticalAxisGroup to cache the Y-extents of different column ranges.") - (common-refpoint-of-elements ,ly:grob? "Caches the common_refpoint_of_array of the elements grob-set") (axis-group-parent-X ,ly:grob? "Containing X axis group") (axis-group-parent-Y ,ly:grob? "Containing Y axis group") (accidental-grobs ,list? "Alist with (NOTENAME . GROBLIST) entries") @@ -451,14 +572,28 @@ function is to protect objects from being garbage collected.") (arpeggio ,ly:grob? "pointer to arpeggio object.") (beam ,ly:grob? "pointer to the beam, if applicable.") (bracket ,ly:grob? "the bracket for a number.") + (cross-staff ,boolean? "for a beam or a stem, true if we depend on inter-staff spacing") (direction-source ,ly:grob? "in case side-relative-direction is set, which grob to get the direction from .") (dot ,ly:grob? "reference to Dots object.") (dots ,ly:grob-array? "multiple Dots objects.") (figures ,ly:grob-array? "Figured bass objects for continuation line.") (important-column-ranks ,vector? "Cache of columns that contain items-worth-living.") + (items-worth-living ,ly:grob-array? "A list of interesting items. If +empty in a particular staff, then that staff is erased.") + (glyph-name ,string? "a name of character within font.") + (left-neighbors ,ly:grob-array? " List of +spacing-wish grobs that are close to the current column. + +The closest spacing-wishes determine the actual distances between the +columns. +") + (left-items ,ly:grob-array? "") (pedal-text ,ly:grob? "Pointer to the text of a mixed-style piano pedal.") + + (pure-Y-common ,ly:grob? "Caches the common_refpoint_of_array of the elements grob-set") + (pure-relevant-elements ,ly:grob-array? "The subset of elements that are relevant for finding the pure-Y-extent.") (stem ,ly:grob? "pointer to Stem object.") (tremolo-flag ,ly:grob? "The tremolo object on a stem.") (tie ,ly:grob? "") @@ -471,7 +606,7 @@ set, which grob to get the direction from .") (bounded-by-me ,ly:grob-array? "list of spanners that have this column as start/begin point. Only columns that have grobs or act as bounds are spaced.") - (circled-tip ,boolean? "Put a circle at start/end of hairpins (al/del niente)") + (columns ,ly:grob-array? "list of grobs, typically containing paper-columns or note-column objects.") (conditional-elements ,ly:grob-array? "Internal use only") @@ -480,95 +615,84 @@ in addition to notes and stems.") (elements ,ly:grob-array? "list of grobs, type depending on the Grob where this is set in.") (grace-spacing ,ly:grob? "a run of grace notes.") - (spacing ,ly:grob? "the spacing spanner governing this section.") (heads ,ly:grob-array? "List of note heads.") - (items-worth-living ,ly:grob-array? "A list of interesting items. If -empty in a particular staff, then that staff is erased.") - (details ,list? "alist of parameters for detailed grob behavior. -more information on the allowed parameters can be found by inspecting -lily/slur-scoring.cc, lily/beam-quanting.cc, and -lily/tie-formatting-problem.cc. Setting @code{debug-tie-scoring}, -@code{debug-beam-scoring} or @code{debug-slur-scoring} also provides -useful clues. + (note-columns ,pair? "list of NoteColumn grobs.") -") + (normal-stems ,ly:grob-array? "Array of visible stems.") (note-heads ,ly:grob-array? "List of note head grobs") (note-head ,ly:grob? "A single note head") + (right-items ,ly:grob-array? "") + (right-neighbors ,ly:grob-array? "see left-neighbors") + (separation-item ,ly:grob? "A separation item.") + (slur ,ly:grob? "A pointer to a slur object") + (spacing ,ly:grob? "the spacing spanner governing this section.") + (spaceable-staves ,ly:grob-array? "Objects to be spaced during page layout.") (side-support-elements ,ly:grob-array? "the support, a list of grobs.") (spacing-wishes ,ly:grob-array? "List of note spacing or staff spacing objects.") (stems ,ly:grob-array? "list of stem objects, corresponding to the notes that the arpeggio has to be before.") (tuplets ,ly:grob-array? "list of smaller tuplet brackets") (tuplet-number ,ly:grob? "the number for a bracket.") - (left-neighbors ,ly:grob-array? " List of -spacing-wish grobs that are close to the current column. + + + ;;;;;;;;;;;;;;;; + ;; other + (begin-of-line-visible ,boolean? "Used for marking ChordNames that should only show changes.") + (cause ,scheme? "Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. ") + (circled-tip ,boolean? "Put a circle at start/end of hairpins (al/del niente)") + (delta-position ,number? "vertical position difference") + (details ,list? "alist of parameters for detailed grob behavior. + +more information on the allowed parameters can be found by inspecting +lily/slur-scoring.cc, lily/beam-quanting.cc, and +lily/tie-formatting-problem.cc. Setting @code{debug-tie-scoring}, +@code{debug-beam-scoring} or @code{debug-slur-scoring} also provides +useful clues. -The closest spacing-wishes determine the actual distances between the -columns. ") - (right-neighbors ,ly:grob-array? "see left-neighbors") - (left-items ,ly:grob-array? "") - (right-items ,ly:grob-array? "") - (cause ,scheme? "Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. ") + (font ,ly:font-metric? "Cached font metric object") + (head-width ,ly:dimension? "width of this ligature head") + + (ideal-distances ,list? "(@var{obj} . (@var{dist} . @var{strength})) pairs.") + (interfaces ,list? "list of symbols indicating the interfaces supported by this object. Is initialized from the @code{meta} field.") + (least-squares-dy ,number? + "ideal beam slope, without damping.") + (meta ,list? "Contains meta information. It is an alist with the +entries @code{name} and @code{interfaces}.") + (minimum-distances ,list? "list of rods, that have the format (@var{obj} . @var{dist}).") + (positioning-done ,boolean? "Used to signal that a positioning element did its job. This ensures that a positioning is only done once.") (pure-Y-extent ,number-pair? "The estimated height of a system") - - (script-stencil ,pair? "Pair (@code{type} . @code{arg}), which -acts as an index for looking up a Stencil object.") - - (meta ,list? "Contains meta information. It is an alist with the -entries @code{name} and @code{interfaces}.") - - - ;; TODO: use interface for this! (quantized-positions ,number-pair? "Beam positions after quanting.") - (begin-of-line-visible ,boolean? "Used for marking ChordNames that should only show changes.") - (quantize-position ,boolean? "If set, a vertical alignment is aligned to be within staff spaces.") (quant-score ,string? "Beam quanting score -- can be stored for debugging") - (least-squares-dy ,number? - "ideal beam slope, without damping.") - (stem-info ,pair? "caching of stem parameters") - (note-columns ,pair? "list of NoteColumn grobs.") - -;;; add-join would be enough if in ly:mensural-ligature::brew-ligature-primitive -;;; the next note could be seen - (join-right-amount ,number? "") - - (delta-position ,number? "vertical position difference") - (head-width ,ly:dimension? "width of this ligature head") - - ;; [TODO: change this] - (primitive ,integer? "Pointer to a ligature primitive, i.e. an item similar to a note head that is part of a ligature. ") - (ideal-distances ,list? "(@var{obj} . (@var{dist} . @var{strength})) pairs.") - (minimum-distances ,list? "list of rods, that have the format (@var{obj} . @var{dist}).") + (script-stencil ,pair? "Pair (@code{type} . @code{arg}), which +acts as an index for looking up a Stencil object.") - (interfaces ,list? "list of symbols indicating the interfaces supported by this object. Is initialized from the @code{meta} field.") + (stem-info ,pair? "caching of stem parameters") (shorten ,ly:dimension? "The amount of space that a stem. Internally used to distribute beam shortening over stems. ") - (slur ,ly:grob? "A pointer to a slur object") + (skyline-distance ,number? "The distance between this staff and the next one, as determined by a skyline algorithm.") + (skyline-horizontal-padding ,number? "For determining the vertical distance between 2 staves, it is possible to have a configuration which would result in a tight interleaving of grobs from the top staff and the bottom staff. The larger this parameter is, the farther apart the staves are placed in such a configuration.") + (use-breve-rest ,boolean? "Use breve rests for measures longer than a whole rest.") - (spaceable-staves ,ly:grob-array? "Objects to be spaced during page layout.") - (skyline-distance ,number? "The distance between this staff and the next one, as determined by a skyline algorithm.") - (skyline-horizontal-padding ,number? "For determining the vertical distance between 2 staves, it is possible to have a configuration which would result in a tight interleaving of grobs from the top staff and the bottom staff. The larger this parameter is, the farther apart the staves will be placed in such a configuration.") - (skyline-spacing ,boolean? "When true, this axis-group will vertically space its children -using a skyline algorithm.") - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ancient notation -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + (join-right-amount ,number? "") + (primitive ,integer? "Pointer to a ligature primitive, i.e. an item similar to a note head that is part of a ligature. ") + + ;;;;;;; TODO: ;; there are too many properties for ancient notation ;; probably neume-types (a list of symbols) would also work. @@ -603,6 +727,15 @@ using a skyline algorithm.") ;; end ancient notation + ;; fret-diagrams extra properties + (xo-font-magnification ,number? "Magnification used for mute and + open string indicators in fret diagrams") + (mute-string ,string? "String to be used to indicate muted string in + fret diagrams") + (open-string ,string? "String to be used to indicate open string in + fret diagrams") + (orientation ,symbol? "Orientation of fret-diagram. Options include @code{normal} and @code{landscape}") + ))) (define-public all-backend-properties