1 @c -*- coding: utf-8; mode: texinfo; -*-
4 Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
6 When revising a translation, copy the HEAD committish of the
7 version that you are working on. For details, see the Contributors'
8 Guide, node Updating translation committishes..
13 @node Notation manual tables
14 @appendix Notation manual tables
18 * Common chord modifiers::
19 * Predefined fretboard diagrams::
24 * Text markup commands::
25 * Text markup list commands::
26 * List of articulations::
28 * Technical glossary::
29 * All context properties::
31 * Available music functions::
32 * Predefined type predicates::
38 @node Chord name chart
39 @appendixsec Chord name chart
41 The following charts shows two standard systems for printing chord
42 names, along with the pitches they represent.
44 @lilypondfile{chord-names-jazz.ly}
46 @node Common chord modifiers
47 @appendixsec Common chord modifiers
49 The following table shows chord modifiers that can be used in
50 @code{\chordmode} to generate standard chord structures.
52 @multitable @columnfractions .2 .3 .2 .2
67 Major third, perfect fifth
71 @lilypond[line-width=3\cm,noragged-right, notime]
80 Minor third, perfect fifth
84 @lilypond[line-width=3\cm,noragged-right, notime]
93 Major third, augmented fifth
97 @lilypond[line-width=3\cm,noragged-right, notime]
106 Minor third, diminished fifth
110 @lilypond[line-width=3\cm,noragged-right, notime]
119 Major triad, minor seventh
123 @lilypond[line-width=3\cm,noragged-right, notime]
132 Major triad, major seventh
134 @code{maj7} or @code{maj}
136 @lilypond[line-width=3\cm,noragged-right, notime]
145 Minor triad, minor seventh
149 @lilypond[line-width=3\cm,noragged-right, notime]
158 Diminished triad, diminished seventh
162 @lilypond[line-width=3\cm,noragged-right, notime]
171 Augmented triad, minor seventh
175 @lilypond[line-width=3\cm,noragged-right, notime]
182 Half-diminished seventh
184 Diminished triad, minor seventh
188 @lilypond[line-width=3\cm,noragged-right, notime]
197 Minor triad, major seventh
201 @lilypond[line-width=3\cm,noragged-right, notime]
214 @lilypond[line-width=3\cm,noragged-right, notime]
227 @lilypond[line-width=3\cm,noragged-right, notime]
236 Dominant seventh, major ninth
240 @lilypond[line-width=3\cm,noragged-right, notime]
249 Major seventh, major ninth
253 @lilypond[line-width=3\cm,noragged-right, notime]
262 Minor seventh, major ninth
266 @lilypond[line-width=3\cm,noragged-right, notime]
275 Dominant ninth, perfect eleventh
279 @lilypond[line-width=3\cm,noragged-right, notime]
288 Major ninth, perfect eleventh
292 @lilypond[line-width=3\cm,noragged-right, notime]
301 Minor ninth, perfect eleventh
305 @lilypond[line-width=3\cm,noragged-right, notime]
314 Dominant ninth, major thirteenth
318 @lilypond[line-width=3\cm,noragged-right, notime]
327 Dominant eleventh, major thirteenth
331 @lilypond[line-width=3\cm,noragged-right, notime]
340 Major eleventh, major thirteenth
344 @lilypond[line-width=3\cm,noragged-right, notime]
353 Minor eleventh, major thirteenth
357 @lilypond[line-width=3\cm,noragged-right, notime]
366 Major second, perfect fifth
370 @lilypond[line-width=3\cm,noragged-right, notime]
379 Perfect fourth, perfect fifth
383 @lilypond[line-width=3\cm,noragged-right, notime]
392 @node Predefined fretboard diagrams
393 @appendixsec Predefined fretboard diagrams
395 The chart below shows the predefined fretboard diagrams for guitar.
397 @lilypondfile{display-predefined-fretboards.ly}
399 The chart below shows the predefined fretboard diagrams for ukulele.
401 @lilypondfile{display-predefined-ukulele-fretboards.ly}
403 @node MIDI instruments
404 @appendixsec MIDI instruments
406 The following is a list of names that can be used for the
407 @code{midiInstrument} property. The order of the instruments
408 below, starting in the left-hand column moving down, corresponds
409 to the General MIDI Standard's 128 Program Numbers.
412 acoustic grand contrabass lead 7 (fifths)
413 bright acoustic tremolo strings lead 8 (bass+lead)
414 electric grand pizzicato strings pad 1 (new age)
415 honky-tonk orchestral harp pad 2 (warm)
416 electric piano 1 timpani pad 3 (polysynth)
417 electric piano 2 string ensemble 1 pad 4 (choir)
418 harpsichord string ensemble 2 pad 5 (bowed)
419 clav synthstrings 1 pad 6 (metallic)
420 celesta synthstrings 2 pad 7 (halo)
421 glockenspiel choir aahs pad 8 (sweep)
422 music box voice oohs fx 1 (rain)
423 vibraphone synth voice fx 2 (soundtrack)
424 marimba orchestra hit fx 3 (crystal)
425 xylophone trumpet fx 4 (atmosphere)
426 tubular bells trombone fx 5 (brightness)
427 dulcimer tuba fx 6 (goblins)
428 drawbar organ muted trumpet fx 7 (echoes)
429 percussive organ french horn fx 8 (sci-fi)
430 rock organ brass section sitar
431 church organ synthbrass 1 banjo
432 reed organ synthbrass 2 shamisen
433 accordion soprano sax koto
434 harmonica alto sax kalimba
435 concertina tenor sax bagpipe
436 acoustic guitar (nylon) baritone sax fiddle
437 acoustic guitar (steel) oboe shanai
438 electric guitar (jazz) english horn tinkle bell
439 electric guitar (clean) bassoon agogo
440 electric guitar (muted) clarinet steel drums
441 overdriven guitar piccolo woodblock
442 distorted guitar flute taiko drum
443 guitar harmonics recorder melodic tom
444 acoustic bass pan flute synth drum
445 electric bass (finger) blown bottle reverse cymbal
446 electric bass (pick) shakuhachi guitar fret noise
447 fretless bass whistle breath noise
448 slap bass 1 ocarina seashore
449 slap bass 2 lead 1 (square) bird tweet
450 synth bass 1 lead 2 (sawtooth) telephone ring
451 synth bass 2 lead 3 (calliope) helicopter
452 violin lead 4 (chiff) applause
453 viola lead 5 (charang) gunshot
459 @appendixsec List of colors
461 @subsubheading Normal colors
463 Usage syntax is detailed in @ref{Coloring objects}.
465 @cindex List of colors
466 @cindex Colors, list of
469 black white red green
470 blue cyan magenta yellow
471 grey darkred darkgreen darkblue
472 darkcyan darkmagenta darkyellow
476 @subsubheading X color names
478 X color names come several variants:
480 Any name that is spelled as a single word with capitalization
481 (e.g. @q{LightSlateBlue}) can also be spelled as space separated
482 words without capitalization (e.g. @q{light slate blue}).
484 The word @q{grey} can always be spelled @q{gray} (e.g. @q{DarkSlateGray}).
486 Some names can take a numerical suffix (e.g. @q{LightSalmon4}).
489 @subsubheading Color Names without a numerical suffix:
492 snow GhostWhite WhiteSmoke gainsboro FloralWhite
493 OldLace linen AntiqueWhite PapayaWhip BlanchedAlmond
494 bisque PeachPuff NavajoWhite moccasin cornsilk
495 ivory LemonChiffon seashell honeydew MintCream
496 azure AliceBlue lavender LavenderBlush MistyRose
497 white black DarkSlateGrey DimGrey SlateGrey
498 LightSlateGrey grey LightGrey MidnightBlue navy
499 NavyBlue CornflowerBlue DarkSlateBlue SlateBlue MediumSlateBlue
500 LightSlateBlue MediumBlue RoyalBlue blue DodgerBlue
501 DeepSkyBlue SkyBlue LightSkyBlue SteelBlue LightSteelBlue
502 LightBlue PowderBlue PaleTurquoise DarkTurquoise MediumTurquoise
503 turquoise cyan LightCyan CadetBlue MediumAquamarine
504 aquamarine DarkGreen DarkOliveGreen DarkSeaGreen SeaGreen
505 MediumSeaGreen LightSeaGreen PaleGreen SpringGreen LawnGreen
506 green chartreuse MediumSpringGreen GreenYellow LimeGreen
507 YellowGreen ForestGreen OliveDrab DarkKhaki khaki
508 PaleGoldenrod LightGoldenrodYellow LightYellow yellow gold
509 LightGoldenrod goldenrod DarkGoldenrod RosyBrown IndianRed
510 SaddleBrown sienna peru burlywood beige
511 wheat SandyBrown tan chocolate firebrick
512 brown DarkSalmon salmon LightSalmon orange
513 DarkOrange coral LightCoral tomato OrangeRed
514 red HotPink DeepPink pink LightPink
515 PaleVioletRed maroon MediumVioletRed VioletRed magenta
516 violet plum orchid MediumOrchid DarkOrchid
517 DarkViolet BlueViolet purple MediumPurple thistle
518 DarkGrey DarkBlue DarkCyan DarkMagenta DarkRed
523 @subsubheading Color names with a numerical suffix
525 In the following names the suffix N can be a number in the range 1-4:
528 snowN seashellN AntiqueWhiteN bisqueN PeachPuffN
529 NavajoWhiteN LemonChiffonN cornsilkN ivoryN honeydewN
530 LavenderBlushN MistyRoseN azureN SlateBlueN RoyalBlueN
531 blueN DodgerBlueN SteelBlueN DeepSkyBlueN SkyBlueN
532 LightSkyBlueN LightSteelBlueN LightBlueN LightCyanN PaleTurquoiseN
533 CadetBlueN turquoiseN cyanN aquamarineN DarkSeaGreenN
534 SeaGreenN PaleGreenN SpringGreenN greenN chartreuseN
535 OliveDrabN DarkOliveGreenN khakiN LightGoldenrodN LightYellowN
536 yellowN goldN goldenrodN DarkGoldenrodN RosyBrownN
537 IndianRedN siennaN burlywoodN wheatN tanN
538 chocolateN firebrickN brownN salmonN LightSalmonN
539 orangeN DarkOrangeN coralN tomatoN OrangeRedN
540 redN DeepPinkN HotPinkN pinkN LightPinkN
541 PaleVioletRedN maroonN VioletRedN magentaN orchidN
542 plumN MediumOrchidN DarkOrchidN purpleN MediumPurpleN
547 @subsubheading Grey Scale
549 A grey scale can be obtained using:
556 Where N is in the range 0-100.
560 @appendixsec The Feta font
565 The following symbols are available in the Emmentaler font and may be
566 accessed directly using text markup with the name of the glyph
567 as shown in the tables below,
568 such as @code{g^\markup @{\musicglyph #"scripts.segno" @}} or
569 @code{\markup @{\musicglyph #"five"@}}. For more information,
570 see @ref{Formatting text}.
575 * Time Signature glyphs::
577 * Accidental glyphs::
578 * Default Notehead glyphs::
579 * Special Notehead glyphs::
580 * Shape-note Notehead glyphs::
587 * Bracket-tip glyphs::
594 * Neomensural glyphs::
601 @unnumberedsubsec Clef glyphs
604 \include "font-table.ly"
605 \markuplines \override-lines #'(word-space . 4)
610 @node Time Signature glyphs
611 @unnumberedsubsec Time Signature glyphs
614 \include "font-table.ly"
615 \markuplines \override-lines #'(word-space . 4)
621 @unnumberedsubsec Number glyphs
624 \include "font-table.ly"
625 \markuplines \override-lines #'(word-space . 4)
630 @node Accidental glyphs
631 @unnumberedsubsec Accidental glyphs
634 \include "font-table.ly"
635 \markuplines \override-lines #'(word-space . 4)
636 \doc-chars #accidentals
640 @node Default Notehead glyphs
641 @unnumberedsubsec Default Notehead glyphs
644 \include "font-table.ly"
645 \markuplines \override-lines #'(word-space . 4)
646 \doc-chars #default-noteheads
650 @node Special Notehead glyphs
651 @unnumberedsubsec Special Notehead glyphs
654 \include "font-table.ly"
655 \markuplines \override-lines #'(word-space . 4)
656 \doc-chars #special-noteheads
660 @node Shape-note Notehead glyphs
661 @unnumberedsubsec Shape-note Notehead glyphs
664 \include "font-table.ly"
665 \markuplines \override-lines #'(word-space . 4)
666 \doc-chars #shape-note-noteheads
671 @unnumberedsubsec Rest glyphs
674 \include "font-table.ly"
675 \markuplines \override-lines #'(word-space . 4)
681 @unnumberedsubsec Flag glyphs
684 \include "font-table.ly"
685 \markuplines \override-lines #'(word-space . 4)
691 @unnumberedsubsec Dot glyphs
694 \include "font-table.ly"
695 \markuplines \override-lines #'(word-space . 4)
701 @unnumberedsubsec Dynamic glyphs
704 \include "font-table.ly"
705 \markuplines \override-lines #'(word-space . 4)
711 @unnumberedsubsec Script glyphs
714 \include "font-table.ly"
715 \markuplines \override-lines #'(word-space . 4)
720 @node Arrowhead glyphs
721 @unnumberedsubsec Arrowhead glyphs
724 \include "font-table.ly"
725 \markuplines \override-lines #'(word-space . 4)
726 \doc-chars #arrowheads
730 @node Bracket-tip glyphs
731 @unnumberedsubsec Bracket-tip glyphs
734 \include "font-table.ly"
735 \markuplines \override-lines #'(word-space . 4)
736 \doc-chars #brackettips
741 @unnumberedsubsec Pedal glyphs
744 \include "font-table.ly"
745 \markuplines \override-lines #'(word-space . 4)
750 @node Accordion glyphs
751 @unnumberedsubsec Accordion glyphs
754 \include "font-table.ly"
755 \markuplines \override-lines #'(word-space . 4)
756 \doc-chars #accordion
760 @node Vaticana glyphs
761 @unnumberedsubsec Vaticana glyphs
764 \include "font-table.ly"
765 \markuplines \override-lines #'(word-space . 4)
770 @node Medicaea glyphs
771 @unnumberedsubsec Medicaea glyphs
774 \include "font-table.ly"
775 \markuplines \override-lines #'(word-space . 4)
780 @node Hufnagel glyphs
781 @unnumberedsubsec Hufnagel glyphs
784 \include "font-table.ly"
785 \markuplines \override-lines #'(word-space . 4)
790 @node Mensural glyphs
791 @unnumberedsubsec Mensural glyphs
794 \include "font-table.ly"
795 \markuplines \override-lines #'(word-space . 4)
800 @node Neomensural glyphs
801 @unnumberedsubsec Neomensural glyphs
804 \include "font-table.ly"
805 \markuplines \override-lines #'(word-space . 4)
806 \doc-chars #neomensural
810 @node Petrucci glyphs
811 @unnumberedsubsec Petrucci glyphs
814 \include "font-table.ly"
815 \markuplines \override-lines #'(word-space . 4)
820 @node Solesmes glyphs
821 @unnumberedsubsec Solesmes glyphs
824 \include "font-table.ly"
825 \markuplines \override-lines #'(word-space . 4)
830 @node Note head styles
831 @appendixsec Note head styles
833 @cindex note head styles
834 The following styles may be used for note heads.
836 @lilypondfile[noindent]{note-head-style.ly}
839 @node Text markup commands
840 @appendixsec Text markup commands
842 @include markup-commands.tely
845 @node Text markup list commands
846 @appendixsec Text markup list commands
848 The following commands can all be used with @code{\markuplines}:
850 @include markup-list-commands.tely
853 @node List of articulations
854 @appendixsec List of articulations
888 @cindex signumcongruentiae
889 @cindex snappizzicato
890 @cindex staccatissimo
901 @cindex verylongfermata
903 The following scripts are available in the Feta font and may be
904 attached to notes (eg. @samp{c\accent}).
906 @c Articulations and ornamentations
907 @c Fingering instructions (for "thumb")
908 @c Common notation for unfretted strings
909 @c Bowing indications
911 @c Snap (Bartók) pizzicato
912 @c Custom percussion staves (for "halfopen" -- not yet funindexed)
913 @c References for wind instruments (for "open"/"stopped" -- not yet funindexed)
917 * Articulation scripts::
920 * Instrument-specific scripts::
921 * Repeat sign scripts::
926 @node Articulation scripts
927 @unnumberedsubsec Articulation scripts
930 \include "script-chart.ly"
931 \new RhythmicStaff { \scriptStaff #articulations }
934 @node Ornament scripts
935 @unnumberedsubsec Ornament scripts
938 \include "script-chart.ly"
939 \new RhythmicStaff { \scriptStaff #ornaments }
942 @node Fermata scripts
943 @unnumberedsubsec Fermata scripts
946 \include "script-chart.ly"
947 \new RhythmicStaff { \scriptStaff #fermatas }
950 @node Instrument-specific scripts
951 @unnumberedsubsec Instrument-specific scripts
954 \include "script-chart.ly"
955 \new RhythmicStaff { \scriptStaff #instrument-specific }
958 @node Repeat sign scripts
959 @unnumberedsubsec Repeat sign scripts
962 \include "script-chart.ly"
963 \new RhythmicStaff { \scriptStaff #repeats }
966 @node Ancient scripts
967 @unnumberedsubsec Ancient scripts
970 \include "script-chart.ly"
971 \include "gregorian.ly"
972 \new VaticanaStaff { \scriptStaffAncient #ancient }
976 @node Percussion notes
977 @appendixsec Percussion notes
979 @lilypondfile[quote]{percussion-chart.ly}
982 @node Technical glossary
983 @appendixsec Technical glossary
985 A glossary of the technical terms and concepts used internally in
986 LilyPond. These terms may appear in the manuals, on mailing lists
987 or in the source code.
1009 @unnumberedsubsec alist
1012 @cindex association list
1014 An association list or @strong{alist} for short is a Scheme pair
1015 which associates a value with a key: @w{@code{(key . value)}}. For
1016 example, in @file{scm/lily.scm}, the alist
1017 @w{@qq{type-p-name-alist}} associates certain type predicates
1018 (e.g.@tie{}@code{ly:music?}) with names (e.g.@tie{}@qq{music}) so
1019 that type-check failures can be reported with a console message that
1020 includes the name of the expected type predicate.
1023 @unnumberedsubsec callback
1027 A @strong{callback} is a routine, function or method whose reference is
1028 passed as an argument in a call to another routine, so allowing
1029 the called routine to invoke it. The technique enables a lower-
1030 level software layer to call a function defined in a higher
1031 layer. Callbacks are used extensively in LilyPond to permit
1032 user-level Scheme code to define how many low-level actions are
1037 @unnumberedsubsec closure
1040 @cindex simple closure
1042 In Scheme, a @strong{closure} is created when a function, usually
1043 a lambda expression, is passed as a variable. The closure contains
1044 the function's code plus references to the lexical bindings of the
1045 function's free variables (i.e. those variables used in the
1046 expression but defined outside it). When this function is applied
1047 to different arguments later, the free variable bindings that were
1048 captured in the closure are used to obtain the values of the free
1049 variables to be used in the calculation. One useful property of
1050 closures is the retention of internal variable values between
1051 invocations, so permitting state to be maintained.
1053 A @strong{simple closure} is a closure whose expression has no free
1054 variables and hence no free variable bindings.
1056 A simple closure is represented in LilyPond by a smob containing
1057 the expression and a method to apply the expression to a passed
1062 @unnumberedsubsec glyph
1068 A @strong{glyph} is a particular graphical representation of a typographic
1069 character, or a combination of two characters formating a ligature.
1070 A set of glyphs with a single style and shape comprise a font, and
1071 a set of fonts covering several styles and sizes comprise a typeface.
1077 @ref{Text encoding}.
1081 @unnumberedsubsec grob
1084 @cindex layout objects
1085 @cindex graphical objects
1087 LilyPond objects which represent items of notation in the printed
1088 output such as note heads, stems, slurs, ties, fingering, clefs,
1089 etc are called @q{Layout objects}, often known as @q{GRaphical
1090 OBjects}, or @strong{grobs} for short. They are represented by
1091 instances of the @code{Grob} class.
1095 @rlearning{Objects and interfaces},
1096 @rlearning{Naming conventions of objects and properties},
1097 @rlearning{Properties of layout objects}.
1099 Internals Reference:
1100 @rinternals{grob-interface},
1101 @rinternals{All layout objects}.
1105 @unnumberedsubsec immutable
1107 @cindex immutable objects
1108 @cindex immutable properties
1109 @cindex shared properties
1111 An @strong{immutable} object is one whose state cannot be modified
1112 after creation, in contrast to a mutable object, which can be
1113 modified after creation.
1115 In LilyPond, immutable or shared properties define the default
1116 style and behavior of grobs. They are shared between many objects.
1117 In apparent contradiction to the name, they can be changed using
1118 @code{\override} and @code{\revert}.
1125 @unnumberedsubsec interface
1128 @cindex grob-interface
1129 @cindex graphical object interfaces
1131 Actions and properties which are common to a number of grobs are
1132 grouped together in an object called a @code{grob-interface}, or
1133 just @q{interface} for short.
1137 @rlearning{Objects and interfaces},
1138 @rlearning{Naming conventions of objects and properties},
1139 @rlearning{Properties found in interfaces}.
1142 @ref{Layout interfaces}.
1144 Internals Reference:
1145 @rinternals{Graphical Object Interfaces}.
1149 @unnumberedsubsec lexer
1154 A @strong{lexer} is a program which converts a sequence of
1155 characters into a sequence of tokens, a process called lexical
1156 analysis. The LilyPond lexer converts the stream obtained from an
1157 input @file{.ly} file into a tokenized stream more suited to the
1158 next stage of processing - parsing, for which see @ref{parser}.
1159 The LilyPond lexer is built with Flex from the lexer file
1160 @file{lily/lexer.ll} which contains the lexical rules. This file
1161 is part of the source code and is not included in the LilyPond
1162 binary installation.
1166 @unnumberedsubsec mutable
1168 @cindex mutable objects
1169 @cindex mutable properties
1171 A @strong{mutable} object is one whose state can be modified after
1172 creation, in contrast to an immutable object, whose state is fixed
1173 at the time of creation.
1175 In LilyPond, mutable properties contain values that are specific to
1176 one grob. Typically, lists of other objects or results from
1177 computations are stored in mutable properties.
1184 @unnumberedsubsec output-def
1188 An instance of the @code{Output-def} class contains the methods and
1189 data structures associated with an output block. Instances are
1190 created for midi, layout and paper blocks.
1194 @unnumberedsubsec parser
1198 @cindex grammar for LilyPond
1201 A @strong{parser} analyzes the sequence of tokens produced by a
1202 lexer to determine its grammatical structure, grouping the tokens
1203 progressively into larger groupings according to the rules of the
1204 grammar. If the sequence of tokens is valid the end product is a
1205 tree of tokens whose root is the grammar's start symbol. If this
1206 cannot be achieved the file is invalid and an appropriate error
1207 message is produced. The syntactic groupings and the rules for
1208 constructing the groupings from their parts for the LilyPond syntax
1209 are defined in @file{lily/parser.yy} and shown in Backus Normal Form
1210 (BNF) in @ref{LilyPond grammar}. This file is used to build the
1211 parser during the program build by the parser generator, Bison. It
1212 is part of the source code and is not included in the LilyPond
1213 binary installation.
1216 @node parser variable
1217 @unnumberedsubsec parser variable
1219 @cindex parser variable
1220 @cindex Scheme variable
1221 @cindex global variable
1222 @cindex afterGraceFraction
1225 @cindex output-count
1226 @cindex output-suffix
1227 @cindex parseStringResult
1228 @cindex partCombineListener
1230 @cindex toplevel-bookparts
1231 @cindex toplevel-scores
1232 @cindex showLastLength
1233 @cindex showFirstLength
1235 These are variables defined directly in Scheme. Their direct
1236 use by users is strongly discouraged, because their scoping
1237 semantics can be confusing.
1239 When the value of such a variable is changed in a @code{.ly} file,
1240 the change is global, and unless explicitly reverted, the new value
1241 will persist to the end of the file, affecting subsequent
1242 @code{\score} blocks as well as external files added with the
1243 @code{\include} command. This can lead to unintended consequences
1244 and in complex typesetting projects the consequent errors can be
1245 difficult to track down.
1247 LilyPond uses the following parser variables:
1250 @item afterGraceFraction
1255 @item parseStringResult
1256 @item partCombineListener
1258 @item toplevel-bookparts
1259 @item toplevel-scores
1260 @item showLastLength
1261 @item showFirstLength
1266 @unnumberedsubsec prob
1269 @cindex property object
1271 PRoperty OBjects, or @strong{probs} for short, are instances of
1272 the @code{Prob} class, a simple base class for objects which have
1273 mutable and immutable property alists and the methods to manipulate
1274 them. The @code{Music} and @code{Stream_event} classes derive from
1275 @code{Prob}. Instances of the @code{Prob} class are also created
1276 to hold the formatted content of system grobs and titling blocks
1280 @node simple closure
1281 @unnumberedsubsec simple closure
1287 @unnumberedsubsec smob
1290 @cindex Scheme object
1292 @strong{Smobs}, or ScheMe OBjects, are part of the mechanism used
1293 by Guile to export C and C++ objects to Scheme code. In LilyPond,
1294 smobs are created from C++ objects through macros. There are two
1295 types of smob objects: simple smobs, intended for simple immutable
1296 objects like numbers, and complex smobs, used for objects with
1297 identities. If you have access to the LilyPond sources, more
1298 information can be found in @file{lily/includes/smob.hh}.
1301 @unnumberedsubsec stencil
1305 An instance of the @strong{stencil} class holds the information
1306 required to print a typographical object. It is a simple smob
1307 containing a confining box, which defines the vertical and
1308 horizontal extents of the object, and a Scheme expression which
1309 will print the object when evaluated. Stencils may be combined
1310 to form more complex stencils defined by a tree of Scheme
1311 expressions formed from the Scheme expressions of the component
1314 The @code{stencil} property, which connects a grob to its stencil,
1315 is defined in the @code{grob-interface} interface.
1318 Internals Reference:
1319 @rinternals{grob-interface}.
1322 @node All context properties
1323 @appendixsec All context properties
1325 @include context-properties.tely
1328 @node Layout properties
1329 @appendixsec Layout properties
1331 @include layout-properties.tely
1334 @node Available music functions
1335 @appendixsec Available music functions
1337 @include identifiers.tely
1340 @node Predefined type predicates
1341 @appendixsec Predefined type predicates
1343 @include type-predicates.tely
1346 @node Scheme functions
1347 @appendixsec Scheme functions
1349 @include scheme-functions.tely