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 string tunings::
20 * Predefined fretboard diagrams::
21 * Predefined paper sizes::
26 * Text markup commands::
27 * Text markup list commands::
28 * List of special characters::
29 * List of articulations::
31 * Technical glossary::
32 * All context properties::
34 * Available music functions::
35 * Context modification identifiers::
36 * Predefined type predicates::
42 @node Chord name chart
43 @appendixsec Chord name chart
45 The following chart shows two standard systems for printing chord
46 names, along with the pitches they represent.
48 @lilypondfile{chord-names-jazz.ly}
50 @node Common chord modifiers
51 @appendixsec Common chord modifiers
53 The following table shows chord modifiers that can be used in
54 @code{\chordmode} to generate standard chord structures.
56 @multitable @columnfractions .2 .3 .2 .2
71 Major third, perfect fifth
75 @lilypond[line-width=3\cm,noragged-right, notime]
84 Minor third, perfect fifth
88 @lilypond[line-width=3\cm,noragged-right, notime]
97 Major third, augmented fifth
101 @lilypond[line-width=3\cm,noragged-right, notime]
110 Minor third, diminished fifth
114 @lilypond[line-width=3\cm,noragged-right, notime]
123 Major triad, minor seventh
127 @lilypond[line-width=3\cm,noragged-right, notime]
136 Major triad, major seventh
138 @code{maj7} or @code{maj}
140 @lilypond[line-width=3\cm,noragged-right, notime]
149 Minor triad, minor seventh
153 @lilypond[line-width=3\cm,noragged-right, notime]
162 Diminished triad, diminished seventh
166 @lilypond[line-width=3\cm,noragged-right, notime]
175 Augmented triad, minor seventh
179 @lilypond[line-width=3\cm,noragged-right, notime]
186 Half-diminished seventh
188 Diminished triad, minor seventh
192 @lilypond[line-width=3\cm,noragged-right, notime]
201 Minor triad, major seventh
205 @lilypond[line-width=3\cm,noragged-right, notime]
218 @lilypond[line-width=3\cm,noragged-right, notime]
231 @lilypond[line-width=3\cm,noragged-right, notime]
240 Dominant seventh, major ninth
244 @lilypond[line-width=3\cm,noragged-right, notime]
253 Major seventh, major ninth
257 @lilypond[line-width=3\cm,noragged-right, notime]
266 Minor seventh, major ninth
270 @lilypond[line-width=3\cm,noragged-right, notime]
279 Dominant ninth, perfect eleventh
283 @lilypond[line-width=3\cm,noragged-right, notime]
292 Major ninth, perfect eleventh
296 @lilypond[line-width=3\cm,noragged-right, notime]
305 Minor ninth, perfect eleventh
309 @lilypond[line-width=3\cm,noragged-right, notime]
318 Dominant ninth, major thirteenth
322 @lilypond[line-width=3\cm,noragged-right, notime]
331 Dominant eleventh, major thirteenth
335 @lilypond[line-width=3\cm,noragged-right, notime]
344 Major eleventh, major thirteenth
348 @lilypond[line-width=3\cm,noragged-right, notime]
357 Minor eleventh, major thirteenth
361 @lilypond[line-width=3\cm,noragged-right, notime]
370 Major second, perfect fifth
374 @lilypond[line-width=3\cm,noragged-right, notime]
383 Perfect fourth, perfect fifth
387 @lilypond[line-width=3\cm,noragged-right, notime]
394 Power chord (two-voiced)
400 @lilypond[line-width=3\cm,noragged-right, notime]
408 Power chord (three-voiced)
410 Perfect fifth, octave
414 @lilypond[line-width=3\cm,noragged-right, notime]
423 @node Predefined string tunings
424 @appendixsec Predefined string tunings
426 The chart below shows the predefined string tunings.
428 @lilypondfile{display-predefined-string-tunings.ly}
430 @node Predefined fretboard diagrams
431 @appendixsec Predefined fretboard diagrams
433 The chart below shows the predefined fretboard diagrams for guitar.
435 @lilypondfile{display-predefined-fretboards.ly}
437 The chart below shows the predefined fretboard diagrams for ukulele.
439 @lilypondfile{display-predefined-ukulele-fretboards.ly}
441 The chart below shows the predefined fretboard diagrams for mandolin.
443 @lilypondfile{display-predefined-mandolin-fretboards.ly}
446 @node Predefined paper sizes
447 @appendixsec Predefined paper sizes
449 Paper sizes are defined in @file{scm/paper.scm}
452 @strong{The @qq{ISO 216} A Series}
479 @strong{The @qq{ISO 216} B Series}
506 @strong{Two extended sizes as defined in @qq{DIN 476}}
515 @strong{@qq{ISO 269} standard C series}
542 @strong{North American paper sizes}
561 @strong{Government-letter by IEEE Printer Working Group, for children's
564 @item "government-letter"
566 @item "government-legal"
568 @item "philippine-legal"
585 @item "engineering f"
590 @strong{North American Architectural sizes}
607 @strong{Antique sizes still used in the United Kingdom}
656 @strong{PA4 based sizes}
683 @strong{Used in Southeast Asia and Australia}
690 @strong{Used for very small @code{@@lilypond} examples in the
691 documentation based on a8 landscape.}
698 @node MIDI instruments
699 @appendixsec MIDI instruments
701 The following is a list of names that can be used for the
702 @code{midiInstrument} property. The order of the instruments
703 below, starting in the left-hand column moving down, corresponds
704 to the General MIDI Standard's 128 Program Numbers.
707 acoustic grand contrabass lead 7 (fifths)
708 bright acoustic tremolo strings lead 8 (bass+lead)
709 electric grand pizzicato strings pad 1 (new age)
710 honky-tonk orchestral harp pad 2 (warm)
711 electric piano 1 timpani pad 3 (polysynth)
712 electric piano 2 string ensemble 1 pad 4 (choir)
713 harpsichord string ensemble 2 pad 5 (bowed)
714 clav synthstrings 1 pad 6 (metallic)
715 celesta synthstrings 2 pad 7 (halo)
716 glockenspiel choir aahs pad 8 (sweep)
717 music box voice oohs fx 1 (rain)
718 vibraphone synth voice fx 2 (soundtrack)
719 marimba orchestra hit fx 3 (crystal)
720 xylophone trumpet fx 4 (atmosphere)
721 tubular bells trombone fx 5 (brightness)
722 dulcimer tuba fx 6 (goblins)
723 drawbar organ muted trumpet fx 7 (echoes)
724 percussive organ french horn fx 8 (sci-fi)
725 rock organ brass section sitar
726 church organ synthbrass 1 banjo
727 reed organ synthbrass 2 shamisen
728 accordion soprano sax koto
729 harmonica alto sax kalimba
730 concertina tenor sax bagpipe
731 acoustic guitar (nylon) baritone sax fiddle
732 acoustic guitar (steel) oboe shanai
733 electric guitar (jazz) english horn tinkle bell
734 electric guitar (clean) bassoon agogo
735 electric guitar (muted) clarinet steel drums
736 overdriven guitar piccolo woodblock
737 distorted guitar flute taiko drum
738 guitar harmonics recorder melodic tom
739 acoustic bass pan flute synth drum
740 electric bass (finger) blown bottle reverse cymbal
741 electric bass (pick) shakuhachi guitar fret noise
742 fretless bass whistle breath noise
743 slap bass 1 ocarina seashore
744 slap bass 2 lead 1 (square) bird tweet
745 synth bass 1 lead 2 (sawtooth) telephone ring
746 synth bass 2 lead 3 (calliope) helicopter
747 violin lead 4 (chiff) applause
748 viola lead 5 (charang) gunshot
754 @appendixsec List of colors
756 @subsubheading Normal colors
758 Usage syntax is detailed in @ref{Coloring objects}.
760 @cindex List of colors
761 @cindex Colors, list of
764 black white red green
765 blue cyan magenta yellow
766 grey darkred darkgreen darkblue
767 darkcyan darkmagenta darkyellow
771 @subsubheading X color names
773 X color names come several variants:
775 Any name that is spelled as a single word with capitalization
776 (e.g. @q{LightSlateBlue}) can also be spelled as space separated
777 words without capitalization (e.g. @q{light slate blue}).
779 The word @q{grey} can always be spelled @q{gray} (e.g. @q{DarkSlateGray}).
781 Some names can take a numerical suffix (e.g. @q{LightSalmon4}).
784 @subsubheading Color Names without a numerical suffix:
787 snow GhostWhite WhiteSmoke gainsboro FloralWhite
788 OldLace linen AntiqueWhite PapayaWhip BlanchedAlmond
789 bisque PeachPuff NavajoWhite moccasin cornsilk
790 ivory LemonChiffon seashell honeydew MintCream
791 azure AliceBlue lavender LavenderBlush MistyRose
792 white black DarkSlateGrey DimGrey SlateGrey
793 LightSlateGrey grey LightGrey MidnightBlue navy
794 NavyBlue CornflowerBlue DarkSlateBlue SlateBlue MediumSlateBlue
795 LightSlateBlue MediumBlue RoyalBlue blue DodgerBlue
796 DeepSkyBlue SkyBlue LightSkyBlue SteelBlue LightSteelBlue
797 LightBlue PowderBlue PaleTurquoise DarkTurquoise MediumTurquoise
798 turquoise cyan LightCyan CadetBlue MediumAquamarine
799 aquamarine DarkGreen DarkOliveGreen DarkSeaGreen SeaGreen
800 MediumSeaGreen LightSeaGreen PaleGreen SpringGreen LawnGreen
801 green chartreuse MediumSpringGreen GreenYellow LimeGreen
802 YellowGreen ForestGreen OliveDrab DarkKhaki khaki
803 PaleGoldenrod LightGoldenrodYellow LightYellow yellow gold
804 LightGoldenrod goldenrod DarkGoldenrod RosyBrown IndianRed
805 SaddleBrown sienna peru burlywood beige
806 wheat SandyBrown tan chocolate firebrick
807 brown DarkSalmon salmon LightSalmon orange
808 DarkOrange coral LightCoral tomato OrangeRed
809 red HotPink DeepPink pink LightPink
810 PaleVioletRed maroon MediumVioletRed VioletRed magenta
811 violet plum orchid MediumOrchid DarkOrchid
812 DarkViolet BlueViolet purple MediumPurple thistle
813 DarkGrey DarkBlue DarkCyan DarkMagenta DarkRed
818 @subsubheading Color names with a numerical suffix
820 In the following names the suffix N can be a number in the range 1-4:
823 snowN seashellN AntiqueWhiteN bisqueN PeachPuffN
824 NavajoWhiteN LemonChiffonN cornsilkN ivoryN honeydewN
825 LavenderBlushN MistyRoseN azureN SlateBlueN RoyalBlueN
826 blueN DodgerBlueN SteelBlueN DeepSkyBlueN SkyBlueN
827 LightSkyBlueN LightSteelBlueN LightBlueN LightCyanN PaleTurquoiseN
828 CadetBlueN turquoiseN cyanN aquamarineN DarkSeaGreenN
829 SeaGreenN PaleGreenN SpringGreenN greenN chartreuseN
830 OliveDrabN DarkOliveGreenN khakiN LightGoldenrodN LightYellowN
831 yellowN goldN goldenrodN DarkGoldenrodN RosyBrownN
832 IndianRedN siennaN burlywoodN wheatN tanN
833 chocolateN firebrickN brownN salmonN LightSalmonN
834 orangeN DarkOrangeN coralN tomatoN OrangeRedN
835 redN DeepPinkN HotPinkN pinkN LightPinkN
836 PaleVioletRedN maroonN VioletRedN magentaN orchidN
837 plumN MediumOrchidN DarkOrchidN purpleN MediumPurpleN
842 @subsubheading Grey Scale
844 A grey scale can be obtained using:
851 Where N is in the range 0-100.
855 @appendixsec The Feta font
860 The following symbols are available in the Emmentaler font and may be
861 accessed directly using text markup with the name of the glyph
862 as shown in the tables below,
863 such as @code{g^\markup @{\musicglyph #"scripts.segno" @}} or
864 @code{\markup @{\musicglyph #"five"@}}. For more information,
865 see @ref{Formatting text}.
870 * Time Signature glyphs::
872 * Accidental glyphs::
873 * Default Notehead glyphs::
874 * Special Notehead glyphs::
875 * Shape-note Notehead glyphs::
882 * Bracket-tip glyphs::
890 * Neomensural glyphs::
893 * Kievan Notation glyphs::
898 @unnumberedsubsec Clef glyphs
901 \include "font-table.ly"
902 \markuplist \override-lines #'(word-space . 4)
907 @node Time Signature glyphs
908 @unnumberedsubsec Time Signature glyphs
911 \include "font-table.ly"
912 \markuplist \override-lines #'(word-space . 4)
918 @unnumberedsubsec Number glyphs
921 \include "font-table.ly"
922 \markuplist \override-lines #'(word-space . 4)
927 @node Accidental glyphs
928 @unnumberedsubsec Accidental glyphs
931 \include "font-table.ly"
932 \markuplist \override-lines #'(word-space . 4)
933 \doc-chars #accidentals
937 @node Default Notehead glyphs
938 @unnumberedsubsec Default Notehead glyphs
941 \include "font-table.ly"
942 \markuplist \override-lines #'(word-space . 4)
943 \doc-chars #default-noteheads
947 @node Special Notehead glyphs
948 @unnumberedsubsec Special Notehead glyphs
951 \include "font-table.ly"
952 \markuplist \override-lines #'(word-space . 4)
953 \doc-chars #special-noteheads
957 @node Shape-note Notehead glyphs
958 @unnumberedsubsec Shape-note Notehead glyphs
961 \include "font-table.ly"
962 \markuplist \override-lines #'(word-space . 4)
963 \doc-chars #shape-note-noteheads
968 @unnumberedsubsec Rest glyphs
971 \include "font-table.ly"
972 \markuplist \override-lines #'(word-space . 4)
978 @unnumberedsubsec Flag glyphs
981 \include "font-table.ly"
982 \markuplist \override-lines #'(word-space . 4)
988 @unnumberedsubsec Dot glyphs
991 \include "font-table.ly"
992 \markuplist \override-lines #'(word-space . 4)
998 @unnumberedsubsec Dynamic glyphs
1001 \include "font-table.ly"
1002 \markuplist \override-lines #'(word-space . 4)
1003 \doc-chars #dynamics
1008 @unnumberedsubsec Script glyphs
1011 \include "font-table.ly"
1012 \markuplist \override-lines #'(word-space . 4)
1017 @node Arrowhead glyphs
1018 @unnumberedsubsec Arrowhead glyphs
1021 \include "font-table.ly"
1022 \markuplist \override-lines #'(word-space . 4)
1023 \doc-chars #arrowheads
1027 @node Bracket-tip glyphs
1028 @unnumberedsubsec Bracket-tip glyphs
1031 \include "font-table.ly"
1032 \markuplist \override-lines #'(word-space . 4)
1033 \doc-chars #brackettips
1038 @unnumberedsubsec Pedal glyphs
1041 \include "font-table.ly"
1042 \markuplist \override-lines #'(word-space . 4)
1047 @node Accordion glyphs
1048 @unnumberedsubsec Accordion glyphs
1051 \include "font-table.ly"
1052 \markuplist \override-lines #'(word-space . 4)
1053 \doc-chars #accordion
1058 @unnumberedsubsec Tie glyphs
1061 \include "font-table.ly"
1062 \markuplist \override-lines #'(word-space . 4)
1067 @node Vaticana glyphs
1068 @unnumberedsubsec Vaticana glyphs
1071 \include "font-table.ly"
1072 \markuplist \override-lines #'(word-space . 4)
1073 \doc-chars #vaticana
1077 @node Medicaea glyphs
1078 @unnumberedsubsec Medicaea glyphs
1081 \include "font-table.ly"
1082 \markuplist \override-lines #'(word-space . 4)
1083 \doc-chars #medicaea
1087 @node Hufnagel glyphs
1088 @unnumberedsubsec Hufnagel glyphs
1091 \include "font-table.ly"
1092 \markuplist \override-lines #'(word-space . 4)
1093 \doc-chars #hufnagel
1097 @node Mensural glyphs
1098 @unnumberedsubsec Mensural glyphs
1101 \include "font-table.ly"
1102 \markuplist \override-lines #'(word-space . 4)
1103 \doc-chars #mensural
1107 @node Neomensural glyphs
1108 @unnumberedsubsec Neomensural glyphs
1111 \include "font-table.ly"
1112 \markuplist \override-lines #'(word-space . 4)
1113 \doc-chars #neomensural
1117 @node Petrucci glyphs
1118 @unnumberedsubsec Petrucci glyphs
1121 \include "font-table.ly"
1122 \markuplist \override-lines #'(word-space . 4)
1123 \doc-chars #petrucci
1127 @node Solesmes glyphs
1128 @unnumberedsubsec Solesmes glyphs
1131 \include "font-table.ly"
1132 \markuplist \override-lines #'(word-space . 4)
1133 \doc-chars #solesmes
1136 @node Kievan Notation glyphs
1137 @unnumberedsubsec Kievan Notation glyphs
1140 \include "font-table.ly"
1141 \markuplist \override-lines #'(word-space . 4)
1145 @node Note head styles
1146 @appendixsec Note head styles
1148 @cindex note head styles
1149 The following styles may be used for note heads.
1151 @lilypondfile[noindent]{note-head-style.ly}
1154 @node Text markup commands
1155 @appendixsec Text markup commands
1157 @include markup-commands.tely
1160 @node Text markup list commands
1161 @appendixsec Text markup list commands
1163 The following commands can all be used with @code{\markuplist}:
1165 @include markup-list-commands.tely
1168 @node List of special characters
1169 @appendixsec List of special characters
1171 The following special characters references can be used;
1172 for more details, see @ref{ASCII aliases}.
1174 The HTML syntax is used and most of these references are the same as HTML.
1175 The rest of them are inspired by @LaTeX{}.
1177 The characters are boxed so that you can see their size.
1178 A small padding has been added between the character and the box
1179 for more readability.
1182 \include "special-characters.ly"
1186 @node List of articulations
1187 @appendixsec List of articulations
1212 @cindex prallmordent
1219 @cindex semicirculus
1220 @cindex shortfermata
1221 @cindex signumcongruentiae
1222 @cindex snappizzicato
1223 @cindex staccatissimo
1234 @cindex verylongfermata
1236 The following scripts are available in the Feta font and may be
1237 attached to notes (eg. @samp{c\accent}).
1239 @c Articulations and ornamentations
1240 @c Fingering instructions (for "thumb")
1241 @c Common notation for unfretted strings
1242 @c Bowing indications
1244 @c Snap (Bartók) pizzicato
1245 @c Custom percussion staves (for "halfopen" -- not yet funindexed)
1246 @c References for wind instruments (for "open"/"stopped" -- not yet funindexed)
1250 * Articulation scripts::
1251 * Ornament scripts::
1253 * Instrument-specific scripts::
1254 * Repeat sign scripts::
1259 @node Articulation scripts
1260 @unnumberedsubsec Articulation scripts
1263 \include "script-chart.ly"
1264 \new RhythmicStaff { \scriptStaff #articulations }
1267 @node Ornament scripts
1268 @unnumberedsubsec Ornament scripts
1271 \include "script-chart.ly"
1272 \new RhythmicStaff { \scriptStaff #ornaments }
1275 @node Fermata scripts
1276 @unnumberedsubsec Fermata scripts
1279 \include "script-chart.ly"
1280 \new RhythmicStaff { \scriptStaff #fermatas }
1283 @node Instrument-specific scripts
1284 @unnumberedsubsec Instrument-specific scripts
1287 \include "script-chart.ly"
1288 \new RhythmicStaff { \scriptStaff #instrument-specific }
1291 @node Repeat sign scripts
1292 @unnumberedsubsec Repeat sign scripts
1295 \include "script-chart.ly"
1296 \new RhythmicStaff { \scriptStaff #repeats }
1299 @node Ancient scripts
1300 @unnumberedsubsec Ancient scripts
1303 \include "script-chart.ly"
1304 \include "gregorian.ly"
1305 \new VaticanaStaff { \scriptStaffAncient #ancient }
1309 @node Percussion notes
1310 @appendixsec Percussion notes
1312 @lilypondfile[quote]{percussion-chart.ly}
1315 @node Technical glossary
1316 @appendixsec Technical glossary
1318 A glossary of the technical terms and concepts used internally in
1319 LilyPond. These terms may appear in the manuals, on mailing lists
1320 or in the source code.
1342 @unnumberedsubsec alist
1345 @cindex association list
1347 An association list or @strong{alist} for short is a Scheme pair
1348 which associates a value with a key: @w{@code{(key . value)}}. For
1349 example, in @file{scm/lily.scm}, the alist
1350 @w{@qq{type-p-name-alist}} associates certain type predicates
1351 (e.g.@tie{}@code{ly:music?}) with names (e.g.@tie{}@qq{music}) so
1352 that type-check failures can be reported with a console message that
1353 includes the name of the expected type predicate.
1356 @unnumberedsubsec callback
1360 A @strong{callback} is a routine, function or method whose reference is
1361 passed as an argument in a call to another routine, so allowing
1362 the called routine to invoke it. The technique enables a lower-
1363 level software layer to call a function defined in a higher
1364 layer. Callbacks are used extensively in LilyPond to permit
1365 user-level Scheme code to define how many low-level actions are
1370 @unnumberedsubsec closure
1373 @cindex simple closure
1375 In Scheme, a @strong{closure} is created when a function, usually
1376 a lambda expression, is passed as a variable. The closure contains
1377 the function's code plus references to the lexical bindings of the
1378 function's free variables (i.e. those variables used in the
1379 expression but defined outside it). When this function is applied
1380 to different arguments later, the free variable bindings that were
1381 captured in the closure are used to obtain the values of the free
1382 variables to be used in the calculation. One useful property of
1383 closures is the retention of internal variable values between
1384 invocations, so permitting state to be maintained.
1386 A @strong{simple closure} is a closure whose expression has no free
1387 variables and hence no free variable bindings.
1389 A simple closure is represented in LilyPond by a smob containing
1390 the expression and a method to apply the expression to a passed
1395 @unnumberedsubsec glyph
1401 A @strong{glyph} is a particular graphical representation of a typographic
1402 character, or a combination of two characters formating a ligature.
1403 A set of glyphs with a single style and shape comprise a font, and
1404 a set of fonts covering several styles and sizes comprise a typeface.
1409 @ref{Special characters}.
1413 @unnumberedsubsec grob
1416 @cindex layout objects
1417 @cindex graphical objects
1419 LilyPond objects which represent items of notation in the printed
1420 output such as note heads, stems, slurs, ties, fingering, clefs,
1421 etc are called @q{Layout objects}, often known as @q{GRaphical
1422 OBjects}, or @strong{grobs} for short. They are represented by
1423 instances of the @code{Grob} class.
1427 @rlearning{Objects and interfaces},
1428 @rlearning{Naming conventions of objects and properties},
1429 @rlearning{Properties of layout objects}.
1431 Internals Reference:
1432 @rinternals{grob-interface},
1433 @rinternals{All layout objects}.
1437 @unnumberedsubsec immutable
1439 @cindex immutable objects
1440 @cindex immutable properties
1441 @cindex shared properties
1443 An @strong{immutable} object is one whose state cannot be modified
1444 after creation, in contrast to a mutable object, which can be
1445 modified after creation.
1447 In LilyPond, immutable or shared properties define the default
1448 style and behavior of grobs. They are shared between many objects.
1449 In apparent contradiction to the name, they can be changed using
1450 @code{\override} and @code{\revert}.
1458 @unnumberedsubsec interface
1461 @cindex grob-interface
1462 @cindex graphical object interfaces
1464 Actions and properties which are common to a number of grobs are
1465 grouped together in an object called a @code{grob-interface}, or
1466 just @q{interface} for short.
1470 @rlearning{Objects and interfaces},
1471 @rlearning{Naming conventions of objects and properties},
1472 @rlearning{Properties found in interfaces}.
1475 @ref{Layout interfaces}.
1477 Internals Reference:
1478 @rinternals{Graphical Object Interfaces}.
1482 @unnumberedsubsec lexer
1487 A @strong{lexer} is a program which converts a sequence of
1488 characters into a sequence of tokens, a process called lexical
1489 analysis. The LilyPond lexer converts the stream obtained from an
1490 input @file{.ly} file into a tokenized stream more suited to the
1491 next stage of processing - parsing, for which see @ref{parser}.
1492 The LilyPond lexer is built with Flex from the lexer file
1493 @file{lily/lexer.ll} which contains the lexical rules. This file
1494 is part of the source code and is not included in the LilyPond
1495 binary installation.
1499 @unnumberedsubsec mutable
1501 @cindex mutable objects
1502 @cindex mutable properties
1504 A @strong{mutable} object is one whose state can be modified after
1505 creation, in contrast to an immutable object, whose state is fixed
1506 at the time of creation.
1508 In LilyPond, mutable properties contain values that are specific to
1509 one grob. Typically, lists of other objects or results from
1510 computations are stored in mutable properties.
1518 @unnumberedsubsec output-def
1522 An instance of the @code{Output-def} class contains the methods and
1523 data structures associated with an output block. Instances are
1524 created for midi, layout and paper blocks.
1528 @unnumberedsubsec parser
1532 @cindex grammar for LilyPond
1535 A @strong{parser} analyzes the sequence of tokens produced by a
1536 lexer to determine its grammatical structure, grouping the tokens
1537 progressively into larger groupings according to the rules of the
1538 grammar. If the sequence of tokens is valid the end product is a
1539 tree of tokens whose root is the grammar's start symbol. If this
1540 cannot be achieved the file is invalid and an appropriate error
1541 message is produced. The syntactic groupings and the rules for
1542 constructing the groupings from their parts for the LilyPond syntax
1543 are defined in @file{lily/parser.yy} and shown in Backus Normal Form
1544 (BNF) in @ref{LilyPond grammar}. This file is used to build the
1545 parser during the program build by the parser generator, Bison. It
1546 is part of the source code and is not included in the LilyPond
1547 binary installation.
1550 @node parser variable
1551 @unnumberedsubsec parser variable
1553 @cindex parser variable
1554 @cindex Scheme variable
1555 @cindex global variable
1556 @cindex afterGraceFraction
1559 @cindex output-count
1560 @cindex output-suffix
1561 @cindex parseStringResult
1562 @cindex partCombineListener
1564 @cindex toplevel-bookparts
1565 @cindex toplevel-scores
1566 @cindex showLastLength
1567 @cindex showFirstLength
1569 These are variables defined directly in Scheme. Their direct
1570 use by users is strongly discouraged, because their scoping
1571 semantics can be confusing.
1573 When the value of such a variable is changed in a @file{.ly} file,
1574 the change is global, and unless explicitly reverted, the new value
1575 will persist to the end of the file, affecting subsequent
1576 @code{\score} blocks as well as external files added with the
1577 @code{\include} command. This can lead to unintended consequences
1578 and in complex typesetting projects the consequent errors can be
1579 difficult to track down.
1581 LilyPond uses the following parser variables:
1584 @item afterGraceFraction
1589 @item parseStringResult
1590 @item partCombineListener
1592 @item toplevel-bookparts
1593 @item toplevel-scores
1594 @item showLastLength
1595 @item showFirstLength
1600 @unnumberedsubsec prob
1603 @cindex property object
1605 PRoperty OBjects, or @strong{probs} for short, are instances of
1606 the @code{Prob} class, a simple base class for objects which have
1607 mutable and immutable property alists and the methods to manipulate
1608 them. The @code{Music} and @code{Stream_event} classes derive from
1609 @code{Prob}. Instances of the @code{Prob} class are also created
1610 to hold the formatted content of system grobs and titling blocks
1614 @node simple closure
1615 @unnumberedsubsec simple closure
1621 @unnumberedsubsec smob
1624 @cindex Scheme object
1626 @strong{Smobs}, or ScheMe OBjects, are part of the mechanism used
1627 by Guile to export C and C++ objects to Scheme code. In LilyPond,
1628 smobs are created from C++ objects through macros. There are two
1629 types of smob objects: simple smobs, intended for simple immutable
1630 objects like numbers, and complex smobs, used for objects with
1631 identities. If you have access to the LilyPond sources, more
1632 information can be found in @file{lily/includes/smob.hh}.
1635 @unnumberedsubsec stencil
1639 An instance of the @strong{stencil} class holds the information
1640 required to print a typographical object. It is a simple smob
1641 containing a confining box, which defines the vertical and
1642 horizontal extents of the object, and a Scheme expression which
1643 will print the object when evaluated. Stencils may be combined
1644 to form more complex stencils defined by a tree of Scheme
1645 expressions formed from the Scheme expressions of the component
1648 The @code{stencil} property, which connects a grob to its stencil,
1649 is defined in the @code{grob-interface} interface.
1652 Internals Reference:
1653 @rinternals{grob-interface}.
1656 @node All context properties
1657 @appendixsec All context properties
1659 @include context-properties.tely
1662 @node Layout properties
1663 @appendixsec Layout properties
1665 @include layout-properties.tely
1668 @node Available music functions
1669 @appendixsec Available music functions
1671 @include identifiers.tely
1673 @node Context modification identifiers
1674 @appendixsec Context modification identifiers
1676 The following commands are defined for use as context modifications
1677 within a @code{\layout} or @code{\with} block.
1679 @include context-mod-identifiers.tely
1681 @node Predefined type predicates
1682 @appendixsec Predefined type predicates
1684 @include type-predicates.tely
1687 @node Scheme functions
1688 @appendixsec Scheme functions
1690 @include scheme-functions.tely