- @item @code{Generic_property_list}
- Defines names and types for generic properties. These are properties
- than can be plugged into the backend directly. See the init file
- @file{generic-property.scm} for details. For internal use only.
-
- @item @code{XXXVerticalExtent}@indexcode{groupVerticalExtent} @propertytype{Interval: a cons of numbers}
- Hard code the size of the vertical group in context XXX, example
-@example
-\property Staff.StaffVerticalExtent = #(-5.0 . 5.0)
-@end example
- The value is a cons of real numbers, that measure the extent in
- staff spaces.
-@end table
-
-@subsubheading Lyrics properties
-
-@cindex properties!Lyrics
-
-@table @samp
- @item @code{textStyle}@indexcode{textStyle} @propertytype{string}
- Set the font for lyrics. The available font choices are
- @code{roman}, @code{italic}, @code{bold}, @code{large}, @code{Large},
- @code{typewriter}, and @code{finger}. The @code{finger} font can
- only display numbers. Note also that you must be careful when
- using @code{\property} in Lyrics mode, because of the way strings
- are parsed. Either put quotes around the arguments to
- @code{\property} or be sure to leave a space on both sides of the
- dot.
-@end table
-
-@subsubheading Thread properties
-
-@cindex properties!Thread
-
-@table @samp
- @item @code{noteheadStyle}@indexcode{noteheadStyle} @propertytype{string}
- Selects type of note head. Choices are @code{cross},
- @code{diamond}, @code{harmonic}, @code{transparent}, and @code{""}.
- They are shown in that order below.
-
- @mudela[center,verbatim]
- \score {
- \notes {
- \property Staff.barNonAuto = 1
- \property Voice.noteHeadStyle = cross
- a'
- \property Voice.noteHeadStyle = diamond
- a'
- \property Voice.noteHeadStyle = harmonic
- a'
- \property Voice.noteHeadStyle = transparent
- a'
- \property Voice.noteHeadStyle = ""
- a'
- }
- \paper {
- linewidth = -1.;
- }
- }
-
-@end mudela
-@end table
-
-@subsubheading Grace properties
-
-@cindex properties!Grace
-
-
-@table @samp
- @item @code{stemStyle}@indexcode{flagStyle} @propertytype{string}
- By default set to @code{"grace"} meaning that all unbeamed
- notes with flags are typeset with a slash through the flag.
- Setting to @code{""} gives standard flags.
-
-@mudela[verbatim]
-c'8 \property Voice.flagStyle = "grace" c'8
-@end mudela
-@end table
-
-
-@subsubheading Voice properties
-
-@cindex properties!Voice
-
-@table @samp
- @item @code{abbrev}@indexcode{abbrev} @propertytype{integer}
- Set length for tremolo to be used if no length is explicitly
- specified.
-
- @item @code{articulationScriptPadding}@indexcode{articulationScriptPadding}
- Determines the extra space added between articulation marks, such
- as staccato, tenuto, trill, up/down bow or fermata, and the
- closest staff line or note.
-
- @item @code{articulationScriptVerticalDirection} @propertytype{direction}
- @indexcode{articulationScriptVerticalDirection}
- Determines the location of articulation marks. Set to @code{\up}
- to print marks above the staff; set to @code{\down} to print marks
- below the staff. This property does not override explicit
- directions marked with `@code{^}' or `@code{_}' in the mudela file.
-
- @item @code{noAutoBeaming}@indexcode{beamAuto} @propertytype{boolean}
- If set to 1 then beams are not generated automatically.
-
- @item @code{beamAutoEnd}@indexcode{beamAutoEnd} @propertytype{?}
- Specifies when automatically generated beams can end. See
- section XREF-autobeam [FIXME].
-
- @item @code{beamAutoBegin}@indexcode{beamAutoBegin} @propertytype{?}
- Specifies when automatically generated beams can start. See
- section XREF-autobeam [FIXME].
-
-
-[outdated FIXME]
- @item @code{beamQuantisation}@indexcode{beamQuantisation} @propertytype{symbol}
- Set to @code{\none} for no quantization. Set to @code{\normal} to
- quantize position and slope. Set to @code{\traditional} to avoid
- wedges. These three settings are available via
- @code{\beamposfree}@keyindex{beamposfree},
- @code{\beamposnormal}@keyindex{beamposnormal}, and
- @code{\beampostraditional}@keyindex{beampostraditional}.
-
- @item @code{beamSlopeDamping}@indexcode{beamSlopeDamping} @propertytype{number}
- Set to @code{\none} for undamped beams. Set to @code{\normal} for
- damped beams. Set to @code{\infinity} for beams with zero slope.
- The identifiers
- @code{\beamslopeproportional}@keyindex{beamslopeproportional},
- @code{\beamslopedamped}@keyindex{beamslopedamped}, and
- @code{\beamslopezero}@keyindex{beamslopezero} each set the
- corresponding value.
-
- @item @code{dynamicDirection}@indexcode{dynamicDirection} @propertytype{direction}
- Determines location of dynamic marks. Set to @code{\up} to print
- marks above the staff; set to @code{\down} to print marks below
- the staff.
-
- @item @code{dynamicStyle}@indexcode{dynamicStyle} @propertytype{string}
- Set the text style for dynamics.
-
- @item @code{fontSize}@indexcode{fontSize} @propertytype{number}
- Can be used to select smaller font sizes for music. The normal
- font size is 0, and the two smaller sizes are -1
- and -2.
-
-@mudela[verbatim]
-c''16 \property Staff.fontSize = -2 c''16
-@end mudela
-
- @item @code{forceHorizontalShift}@indexcode{forceHorizontalShift}
- Force horizontal shift for collision resolution. It overrides
- automatic collision resolution. The value is the shift amount
- expressed in @code{note_width}, as set in the paper section.
-
-@item @code{collisionMergeDotted}@indexcode{collisionMergeDotted} @propertytype{boolean}
-
-Merge noteheads in collisions, even if they have a different number of
-dots. This normal notation for polyphonic guitar music.
-
-@mudelafile[verbatim]{force-hshift.ly}
-
-
-[FIXME: this should be moved]
-
-Lilypond always arranges note heads on alternate sides of a stem (that
-is, within a single voice) as necessary to prevent collisions (note head
-overlaps). For up stems, the upper note of a colliding pair is placed
-on the right side of the stem, the lower on the left. For down stems,
-the algorithm works in reverse.
-
-Lily also attempts to prevent collisions of note heads in different
-voices. A situation where chords of two or more voices are played
-simultaneously within one staff.
-
-By default, if only two voices (and both have opposite stem directions)
-are in this 'collision group', the notes both are shifted by @code{0.5
-\quartwidth} if there are unisons or seconds between the voices.
-
-If there are more than two voices in a collision group, shifting is
-inactive by default, since in this case, there are multiple chords with
-the same stem direction. By distinguish between those chords, LilyPond
-can do collision resolution in these cases as well.
-
-Distinguishing between voices with the same stem direction, is done by
-setting the property @code{Voice.horizontalNoteShift}. It must be set
-to a different integer for each voice. Then, all note heads in collision
-groups (not just unisons and seconds) will be offset, one voice relative
-another. The following fragment of sheet music shows how shifting is
-done, with values of @code{horizontalNoteShift} printed over and under
-the notes. In this case the chords are just simple notes.
-
-@c URG : mudela book bug.
-@mudela[singleline,verbatim]
-\score {
- \notes \context Staff <
- \context Voice = VA { \stemup f''4^"0" }
- \context Voice = VB {\stemup
- \property Voice.horizontalNoteShift = 1 d''4^" 1" }
- \context Voice = VC { \stemup \property
-Voice.horizontalNoteShift = 2 b'4^" 2" }
- \context Voice = VD { \stemdown \property
-Voice.horizontalNoteShift = 1 g'4_"1 " }
- \context Voice = VE { \stemdown e'4_"0" }
- >
-}
-@end mudela
-
-If you are not satisfied with the collision resolution of LilyPond, you
-can override the horizontal shift value of the chord of one Voice, by
-setting @code{forceHorizontalShift}. This sets the amount shift,
-measured in black note head widths.
-
-To take complete control of note position shifts in complex passages,
-you have set things up for normal collisions and override all shifts by
-setting @code{forceHorizontalShift} to zero everywhere
-@example
-\property Voice.horizontalNoteShift = <n>
-\property Voice.forceHorizontalShift = "0.0"
-@end example
-
-Then you can set the force property to a suitable value before each note
-that really needs it (unisons and seconds), and reset it to 0.0 after
-the note.
-
- @item @code{horizontalNoteShift}@indexcode{horizontalNoteShift} @propertytype{integer}
- Enable LilyPond to shift notes horizontally if they collide with
- other notes. This is useful when typesetting many voices on one
- staff. The identifier @code{\shift}@keyindex{shift} is defined to
- enable this. Traditionally, the outer chords (the upmost and
- downmost voices), should have no @code{horizontalNoteShift}.
-
- @item @code{markScriptPadding}@indexcode{markScriptPadding} @propertytype{number}
- Determines the extra space added between the mark and the closest
- staff line or note.
-
- @item @code{markDirection}@indexcode{markDirection} @propertytype{direction}
- Determines if marks should be printed above or below the staff.
- Set to @code{\up} to print marks above the staff; set to
- @code{\down} to print marks below the staff.