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 @c The line width is a hack to allow space for instrument names
49 @lilypondfile[quote,line-width=15\cm]{chord-names-jazz.ly}
51 @node Common chord modifiers
52 @appendixsec Common chord modifiers
54 The following table shows chord modifiers that can be used in
55 @code{\chordmode} to generate standard chord structures.
57 @multitable @columnfractions .2 .3 .2 .2
72 Major third, perfect fifth
76 @lilypond[line-width=2.8\cm,noragged-right, notime]
85 Minor third, perfect fifth
89 @lilypond[line-width=2.8\cm,noragged-right, notime]
98 Major third, augmented fifth
102 @lilypond[line-width=2.8\cm,noragged-right, notime]
111 Minor third, diminished fifth
115 @lilypond[line-width=2.8\cm,noragged-right, notime]
124 Major triad, minor seventh
128 @lilypond[line-width=2.8\cm,noragged-right, notime]
137 Major triad, major seventh
139 @code{maj7} or @code{maj}
141 @lilypond[line-width=2.8\cm,noragged-right, notime]
150 Minor triad, minor seventh
154 @lilypond[line-width=2.8\cm,noragged-right, notime]
163 Diminished triad, diminished seventh
167 @lilypond[line-width=2.8\cm,noragged-right, notime]
176 Augmented triad, minor seventh
180 @lilypond[line-width=2.8\cm,noragged-right, notime]
187 Half-diminished seventh
189 Diminished triad, minor seventh
193 @lilypond[line-width=2.8\cm,noragged-right, notime]
202 Minor triad, major seventh
206 @lilypond[line-width=2.8\cm,noragged-right, notime]
219 @lilypond[line-width=2.8\cm,noragged-right, notime]
232 @lilypond[line-width=2.8\cm,noragged-right, notime]
241 Dominant seventh, major ninth
245 @lilypond[line-width=2.8\cm,noragged-right, notime]
254 Major seventh, major ninth
258 @lilypond[line-width=2.8\cm,noragged-right, notime]
267 Minor seventh, major ninth
271 @lilypond[line-width=2.8\cm,noragged-right, notime]
280 Dominant ninth, perfect eleventh
284 @lilypond[line-width=2.8\cm,noragged-right, notime]
293 Major ninth, perfect eleventh
297 @lilypond[line-width=2.8\cm,noragged-right, notime]
306 Minor ninth, perfect eleventh
310 @lilypond[line-width=2.8\cm,noragged-right, notime]
319 Dominant ninth, major thirteenth
323 @lilypond[line-width=2.8\cm,noragged-right, notime]
332 Dominant eleventh, major thirteenth
336 @lilypond[line-width=2.8\cm,noragged-right, notime]
345 Major eleventh, major thirteenth
349 @lilypond[line-width=2.8\cm,noragged-right, notime]
358 Minor eleventh, major thirteenth
362 @lilypond[line-width=2.8\cm,noragged-right, notime]
371 Major second, perfect fifth
375 @lilypond[line-width=2.8\cm,noragged-right, notime]
384 Perfect fourth, perfect fifth
388 @lilypond[line-width=2.8\cm,noragged-right, notime]
395 Power chord (two-voiced)
401 @lilypond[line-width=2.8\cm,noragged-right, notime]
409 Power chord (three-voiced)
411 Perfect fifth, octave
415 @lilypond[line-width=2.8\cm,noragged-right, notime]
424 @node Predefined string tunings
425 @appendixsec Predefined string tunings
427 The chart below shows the predefined string tunings.
429 @lilypondfile{display-predefined-string-tunings.ly}
431 @node Predefined fretboard diagrams
432 @appendixsec Predefined fretboard diagrams
434 The chart below shows the predefined fretboard diagrams for guitar.
436 @lilypondfile[line-width=15.5\cm]{display-predefined-fretboards.ly}
438 The chart below shows the predefined fretboard diagrams for ukulele.
440 @lilypondfile[line-width=15.5\cm]{display-predefined-ukulele-fretboards.ly}
442 The chart below shows the predefined fretboard diagrams for mandolin.
444 @lilypondfile[line-width=15.5\cm]{display-predefined-mandolin-fretboards.ly}
447 @node Predefined paper sizes
448 @appendixsec Predefined paper sizes
450 Paper sizes are defined in @file{scm/paper.scm}
453 @strong{The @qq{ISO 216} A Series}
480 @strong{The @qq{ISO 216} B Series}
507 @strong{Two extended sizes as defined in @qq{DIN 476}}
516 @strong{@qq{ISO 269} standard C series}
543 @strong{North American paper sizes}
562 @strong{Government-letter by IEEE Printer Working Group, for children's
565 @item "government-letter"
567 @item "government-legal"
569 @item "philippine-legal"
586 @item "engineering f"
591 @strong{North American Architectural sizes}
608 @strong{Antique sizes still used in the United Kingdom}
657 @strong{PA4 based sizes}
684 @strong{Used in Southeast Asia and Australia}
691 @strong{Used for very small @code{@@lilypond} examples in the
692 documentation based on a8 landscape.}
699 @node MIDI instruments
700 @appendixsec MIDI instruments
702 The following is a list of names that can be used for the
703 @code{midiInstrument} property. The order of the instruments
704 below, starting in the left-hand column moving down, corresponds
705 to the General MIDI Standard's 128 Program Numbers.
708 acoustic grand contrabass lead 7 (fifths)
709 bright acoustic tremolo strings lead 8 (bass+lead)
710 electric grand pizzicato strings pad 1 (new age)
711 honky-tonk orchestral harp pad 2 (warm)
712 electric piano 1 timpani pad 3 (polysynth)
713 electric piano 2 string ensemble 1 pad 4 (choir)
714 harpsichord string ensemble 2 pad 5 (bowed)
715 clav synthstrings 1 pad 6 (metallic)
716 celesta synthstrings 2 pad 7 (halo)
717 glockenspiel choir aahs pad 8 (sweep)
718 music box voice oohs fx 1 (rain)
719 vibraphone synth voice fx 2 (soundtrack)
720 marimba orchestra hit fx 3 (crystal)
721 xylophone trumpet fx 4 (atmosphere)
722 tubular bells trombone fx 5 (brightness)
723 dulcimer tuba fx 6 (goblins)
724 drawbar organ muted trumpet fx 7 (echoes)
725 percussive organ french horn fx 8 (sci-fi)
726 rock organ brass section sitar
727 church organ synthbrass 1 banjo
728 reed organ synthbrass 2 shamisen
729 accordion soprano sax koto
730 harmonica alto sax kalimba
731 concertina tenor sax bagpipe
732 acoustic guitar (nylon) baritone sax fiddle
733 acoustic guitar (steel) oboe shanai
734 electric guitar (jazz) english horn tinkle bell
735 electric guitar (clean) bassoon agogo
736 electric guitar (muted) clarinet steel drums
737 overdriven guitar piccolo woodblock
738 distorted guitar flute taiko drum
739 guitar harmonics recorder melodic tom
740 acoustic bass pan flute synth drum
741 electric bass (finger) blown bottle reverse cymbal
742 electric bass (pick) shakuhachi guitar fret noise
743 fretless bass whistle breath noise
744 slap bass 1 ocarina seashore
745 slap bass 2 lead 1 (square) bird tweet
746 synth bass 1 lead 2 (sawtooth) telephone ring
747 synth bass 2 lead 3 (calliope) helicopter
748 violin lead 4 (chiff) applause
749 viola lead 5 (charang) gunshot
755 @appendixsec List of colors
757 @subsubheading Normal colors
759 Usage syntax is detailed in @ref{Coloring objects}.
761 @cindex List of colors
762 @cindex Colors, list of
765 black white red green
766 blue cyan magenta yellow
767 grey darkred darkgreen darkblue
768 darkcyan darkmagenta darkyellow
772 @subsubheading X color names
774 X color names come several variants:
776 Any name that is spelled as a single word with capitalization
777 (e.g. @q{LightSlateBlue}) can also be spelled as space separated
778 words without capitalization (e.g. @q{light slate blue}).
780 The word @q{grey} can always be spelled @q{gray} (e.g. @q{DarkSlateGray}).
782 Some names can take a numerical suffix (e.g. @q{LightSalmon4}).
785 @subsubheading Color Names without a numerical suffix:
788 snow GhostWhite WhiteSmoke gainsboro FloralWhite
789 OldLace linen AntiqueWhite PapayaWhip BlanchedAlmond
790 bisque PeachPuff NavajoWhite moccasin cornsilk
791 ivory LemonChiffon seashell honeydew MintCream
792 azure AliceBlue lavender LavenderBlush MistyRose
793 white black DarkSlateGrey DimGrey SlateGrey
794 LightSlateGrey grey LightGrey MidnightBlue navy
795 NavyBlue CornflowerBlue DarkSlateBlue SlateBlue MediumSlateBlue
796 LightSlateBlue MediumBlue RoyalBlue blue DodgerBlue
797 DeepSkyBlue SkyBlue LightSkyBlue SteelBlue LightSteelBlue
798 LightBlue PowderBlue PaleTurquoise DarkTurquoise MediumTurquoise
799 turquoise cyan LightCyan CadetBlue MediumAquamarine
800 aquamarine DarkGreen DarkOliveGreen DarkSeaGreen SeaGreen
801 MediumSeaGreen LightSeaGreen PaleGreen SpringGreen LawnGreen
802 green chartreuse MediumSpringGreen GreenYellow LimeGreen
803 YellowGreen ForestGreen OliveDrab DarkKhaki khaki
804 PaleGoldenrod LightGoldenrodYellow LightYellow yellow gold
805 LightGoldenrod goldenrod DarkGoldenrod RosyBrown IndianRed
806 SaddleBrown sienna peru burlywood beige
807 wheat SandyBrown tan chocolate firebrick
808 brown DarkSalmon salmon LightSalmon orange
809 DarkOrange coral LightCoral tomato OrangeRed
810 red HotPink DeepPink pink LightPink
811 PaleVioletRed maroon MediumVioletRed VioletRed magenta
812 violet plum orchid MediumOrchid DarkOrchid
813 DarkViolet BlueViolet purple MediumPurple thistle
814 DarkGrey DarkBlue DarkCyan DarkMagenta DarkRed
819 @subsubheading Color names with a numerical suffix
821 In the following names the suffix N can be a number in the range 1-4:
824 snowN seashellN AntiqueWhiteN bisqueN PeachPuffN
825 NavajoWhiteN LemonChiffonN cornsilkN ivoryN honeydewN
826 LavenderBlushN MistyRoseN azureN SlateBlueN RoyalBlueN
827 blueN DodgerBlueN SteelBlueN DeepSkyBlueN SkyBlueN
828 LightSkyBlueN LightSteelBlueN LightBlueN LightCyanN PaleTurquoiseN
829 CadetBlueN turquoiseN cyanN aquamarineN DarkSeaGreenN
830 SeaGreenN PaleGreenN SpringGreenN greenN chartreuseN
831 OliveDrabN DarkOliveGreenN khakiN LightGoldenrodN LightYellowN
832 yellowN goldN goldenrodN DarkGoldenrodN RosyBrownN
833 IndianRedN siennaN burlywoodN wheatN tanN
834 chocolateN firebrickN brownN salmonN LightSalmonN
835 orangeN DarkOrangeN coralN tomatoN OrangeRedN
836 redN DeepPinkN HotPinkN pinkN LightPinkN
837 PaleVioletRedN maroonN VioletRedN magentaN orchidN
838 plumN MediumOrchidN DarkOrchidN purpleN MediumPurpleN
843 @subsubheading Grey Scale
845 A grey scale can be obtained using:
852 Where N is in the range 0-100.
856 @appendixsec The Feta font
861 The following symbols are available in the Emmentaler font and may be
862 accessed directly using text markup with the name of the glyph
863 as shown in the tables below,
864 such as @code{g^\markup @{\musicglyph #"scripts.segno" @}} or
865 @code{\markup @{\musicglyph #"five"@}}. For more information,
866 see @ref{Formatting text}.
871 * Time Signature glyphs::
873 * Accidental glyphs::
874 * Default Notehead glyphs::
875 * Special Notehead glyphs::
876 * Shape-note Notehead glyphs::
883 * Bracket-tip glyphs::
891 * Neomensural glyphs::
894 * Kievan Notation glyphs::
899 @unnumberedsubsec Clef glyphs
902 \include "font-table.ly"
903 \markuplist \override-lines #'(word-space . 4)
908 @node Time Signature glyphs
909 @unnumberedsubsec Time Signature glyphs
912 \include "font-table.ly"
913 \markuplist \override-lines #'(word-space . 4)
919 @unnumberedsubsec Number glyphs
922 \include "font-table.ly"
923 \markuplist \override-lines #'(word-space . 4)
928 @node Accidental glyphs
929 @unnumberedsubsec Accidental glyphs
932 \include "font-table.ly"
933 \markuplist \override-lines #'(word-space . 4)
934 \doc-chars #accidentals
938 @node Default Notehead glyphs
939 @unnumberedsubsec Default Notehead glyphs
942 \include "font-table.ly"
943 \markuplist \override-lines #'(word-space . 4)
944 \doc-chars #default-noteheads
948 @node Special Notehead glyphs
949 @unnumberedsubsec Special Notehead glyphs
952 \include "font-table.ly"
953 \markuplist \override-lines #'(word-space . 4)
954 \doc-chars #special-noteheads
958 @node Shape-note Notehead glyphs
959 @unnumberedsubsec Shape-note Notehead glyphs
962 \include "font-table.ly"
963 \markuplist \override-lines #'(word-space . 4)
964 \doc-chars #shape-note-noteheads
969 @unnumberedsubsec Rest glyphs
972 \include "font-table.ly"
973 \markuplist \override-lines #'(word-space . 4)
979 @unnumberedsubsec Flag glyphs
982 \include "font-table.ly"
983 \markuplist \override-lines #'(word-space . 4)
989 @unnumberedsubsec Dot glyphs
992 \include "font-table.ly"
993 \markuplist \override-lines #'(word-space . 4)
999 @unnumberedsubsec Dynamic glyphs
1002 \include "font-table.ly"
1003 \markuplist \override-lines #'(word-space . 4)
1004 \doc-chars #dynamics
1009 @unnumberedsubsec Script glyphs
1012 \include "font-table.ly"
1013 \markuplist \override-lines #'(word-space . 4)
1018 @node Arrowhead glyphs
1019 @unnumberedsubsec Arrowhead glyphs
1022 \include "font-table.ly"
1023 \markuplist \override-lines #'(word-space . 4)
1024 \doc-chars #arrowheads
1028 @node Bracket-tip glyphs
1029 @unnumberedsubsec Bracket-tip glyphs
1032 \include "font-table.ly"
1033 \markuplist \override-lines #'(word-space . 4)
1034 \doc-chars #brackettips
1039 @unnumberedsubsec Pedal glyphs
1042 \include "font-table.ly"
1043 \markuplist \override-lines #'(word-space . 4)
1048 @node Accordion glyphs
1049 @unnumberedsubsec Accordion glyphs
1052 \include "font-table.ly"
1053 \markuplist \override-lines #'(word-space . 4)
1054 \doc-chars #accordion
1059 @unnumberedsubsec Tie glyphs
1062 \include "font-table.ly"
1063 \markuplist \override-lines #'(word-space . 4)
1068 @node Vaticana glyphs
1069 @unnumberedsubsec Vaticana glyphs
1072 \include "font-table.ly"
1073 \markuplist \override-lines #'(word-space . 4)
1074 \doc-chars #vaticana
1078 @node Medicaea glyphs
1079 @unnumberedsubsec Medicaea glyphs
1082 \include "font-table.ly"
1083 \markuplist \override-lines #'(word-space . 4)
1084 \doc-chars #medicaea
1088 @node Hufnagel glyphs
1089 @unnumberedsubsec Hufnagel glyphs
1092 \include "font-table.ly"
1093 \markuplist \override-lines #'(word-space . 4)
1094 \doc-chars #hufnagel
1098 @node Mensural glyphs
1099 @unnumberedsubsec Mensural glyphs
1102 \include "font-table.ly"
1103 \markuplist \override-lines #'(word-space . 4)
1104 \doc-chars #mensural
1108 @node Neomensural glyphs
1109 @unnumberedsubsec Neomensural glyphs
1112 \include "font-table.ly"
1113 \markuplist \override-lines #'(word-space . 4)
1114 \doc-chars #neomensural
1118 @node Petrucci glyphs
1119 @unnumberedsubsec Petrucci glyphs
1122 \include "font-table.ly"
1123 \markuplist \override-lines #'(word-space . 4)
1124 \doc-chars #petrucci
1128 @node Solesmes glyphs
1129 @unnumberedsubsec Solesmes glyphs
1132 \include "font-table.ly"
1133 \markuplist \override-lines #'(word-space . 4)
1134 \doc-chars #solesmes
1137 @node Kievan Notation glyphs
1138 @unnumberedsubsec Kievan Notation glyphs
1141 \include "font-table.ly"
1142 \markuplist \override-lines #'(word-space . 4)
1146 @node Note head styles
1147 @appendixsec Note head styles
1149 @cindex note head styles
1150 The following styles may be used for note heads.
1152 @lilypondfile[noindent]{note-head-style.ly}
1155 @node Text markup commands
1156 @appendixsec Text markup commands
1158 @include markup-commands.tely
1161 @node Text markup list commands
1162 @appendixsec Text markup list commands
1164 The following commands can all be used with @code{\markuplist}:
1166 @include markup-list-commands.tely
1169 @node List of special characters
1170 @appendixsec List of special characters
1172 The following special characters references can be used;
1173 for more details, see @ref{ASCII aliases}.
1175 The HTML syntax is used and most of these references are the same as HTML.
1176 The rest of them are inspired by @LaTeX{}.
1178 The characters are boxed so that you can see their size.
1179 A small padding has been added between the character and the box
1180 for more readability.
1183 \include "special-characters.ly"
1187 @node List of articulations
1188 @appendixsec List of articulations
1213 @cindex prallmordent
1220 @cindex semicirculus
1221 @cindex shortfermata
1222 @cindex signumcongruentiae
1223 @cindex snappizzicato
1224 @cindex staccatissimo
1235 @cindex verylongfermata
1237 The following scripts are available in the Feta font and may be
1238 attached to notes (eg. @samp{c\accent}).
1240 @c Articulations and ornamentations
1241 @c Fingering instructions (for "thumb")
1242 @c Common notation for unfretted strings
1243 @c Bowing indications
1245 @c Snap (Bartók) pizzicato
1246 @c Custom percussion staves (for "halfopen" -- not yet funindexed)
1247 @c References for wind instruments (for "open"/"stopped" -- not yet funindexed)
1251 * Articulation scripts::
1252 * Ornament scripts::
1254 * Instrument-specific scripts::
1255 * Repeat sign scripts::
1260 @node Articulation scripts
1261 @unnumberedsubsec Articulation scripts
1264 \include "script-chart.ly"
1265 \new RhythmicStaff { \scriptStaff #articulations }
1268 @node Ornament scripts
1269 @unnumberedsubsec Ornament scripts
1272 \include "script-chart.ly"
1273 \new RhythmicStaff { \scriptStaff #ornaments }
1276 @node Fermata scripts
1277 @unnumberedsubsec Fermata scripts
1280 \include "script-chart.ly"
1281 \new RhythmicStaff { \scriptStaff #fermatas }
1284 @node Instrument-specific scripts
1285 @unnumberedsubsec Instrument-specific scripts
1288 \include "script-chart.ly"
1289 \new RhythmicStaff { \scriptStaff #instrument-specific }
1292 @node Repeat sign scripts
1293 @unnumberedsubsec Repeat sign scripts
1296 \include "script-chart.ly"
1297 \new RhythmicStaff { \scriptStaff #repeats }
1300 @node Ancient scripts
1301 @unnumberedsubsec Ancient scripts
1304 \include "script-chart.ly"
1305 \include "gregorian.ly"
1306 \new VaticanaStaff { \scriptStaffAncient #ancient }
1310 @node Percussion notes
1311 @appendixsec Percussion notes
1313 @lilypondfile[quote]{percussion-chart.ly}
1316 @node Technical glossary
1317 @appendixsec Technical glossary
1319 A glossary of the technical terms and concepts used internally in
1320 LilyPond. These terms may appear in the manuals, on mailing lists
1321 or in the source code.
1343 @unnumberedsubsec alist
1346 @cindex association list
1348 An association list or @strong{alist} for short is a Scheme pair
1349 which associates a value with a key: @w{@code{(key . value)}}. For
1350 example, in @file{scm/lily.scm}, the alist
1351 @w{@qq{type-p-name-alist}} associates certain type predicates
1352 (e.g.@tie{}@code{ly:music?}) with names (e.g.@tie{}@qq{music}) so
1353 that type-check failures can be reported with a console message that
1354 includes the name of the expected type predicate.
1357 @unnumberedsubsec callback
1361 A @strong{callback} is a routine, function or method whose reference is
1362 passed as an argument in a call to another routine, so allowing
1363 the called routine to invoke it. The technique enables a lower-
1364 level software layer to call a function defined in a higher
1365 layer. Callbacks are used extensively in LilyPond to permit
1366 user-level Scheme code to define how many low-level actions are
1371 @unnumberedsubsec closure
1374 @cindex simple closure
1376 In Scheme, a @strong{closure} is created when a function, usually
1377 a lambda expression, is passed as a variable. The closure contains
1378 the function's code plus references to the lexical bindings of the
1379 function's free variables (i.e. those variables used in the
1380 expression but defined outside it). When this function is applied
1381 to different arguments later, the free variable bindings that were
1382 captured in the closure are used to obtain the values of the free
1383 variables to be used in the calculation. One useful property of
1384 closures is the retention of internal variable values between
1385 invocations, so permitting state to be maintained.
1387 A @strong{simple closure} is a closure whose expression has no free
1388 variables and hence no free variable bindings.
1390 A simple closure is represented in LilyPond by a smob containing
1391 the expression and a method to apply the expression to a passed
1396 @unnumberedsubsec glyph
1402 A @strong{glyph} is a particular graphical representation of a typographic
1403 character, or a combination of two characters formating a ligature.
1404 A set of glyphs with a single style and shape comprise a font, and
1405 a set of fonts covering several styles and sizes comprise a typeface.
1410 @ref{Special characters}.
1414 @unnumberedsubsec grob
1417 @cindex layout objects
1418 @cindex graphical objects
1420 LilyPond objects which represent items of notation in the printed
1421 output such as note heads, stems, slurs, ties, fingering, clefs,
1422 etc are called @q{Layout objects}, often known as @q{GRaphical
1423 OBjects}, or @strong{grobs} for short. They are represented by
1424 instances of the @code{Grob} class.
1428 @rlearning{Objects and interfaces},
1429 @rlearning{Naming conventions of objects and properties},
1430 @rlearning{Properties of layout objects}.
1432 Internals Reference:
1433 @rinternals{grob-interface},
1434 @rinternals{All layout objects}.
1438 @unnumberedsubsec immutable
1440 @cindex immutable objects
1441 @cindex immutable properties
1442 @cindex shared properties
1444 An @strong{immutable} object is one whose state cannot be modified
1445 after creation, in contrast to a mutable object, which can be
1446 modified after creation.
1448 In LilyPond, immutable or shared properties define the default
1449 style and behavior of grobs. They are shared between many objects.
1450 In apparent contradiction to the name, they can be changed using
1451 @code{\override} and @code{\revert}.
1459 @unnumberedsubsec interface
1462 @cindex grob-interface
1463 @cindex graphical object interfaces
1465 Actions and properties which are common to a number of grobs are
1466 grouped together in an object called a @code{grob-interface}, or
1467 just @q{interface} for short.
1471 @rlearning{Objects and interfaces},
1472 @rlearning{Naming conventions of objects and properties},
1473 @rlearning{Properties found in interfaces}.
1476 @ref{Layout interfaces}.
1478 Internals Reference:
1479 @rinternals{Graphical Object Interfaces}.
1483 @unnumberedsubsec lexer
1488 A @strong{lexer} is a program which converts a sequence of
1489 characters into a sequence of tokens, a process called lexical
1490 analysis. The LilyPond lexer converts the stream obtained from an
1491 input @file{.ly} file into a tokenized stream more suited to the
1492 next stage of processing - parsing, for which see @ref{parser}.
1493 The LilyPond lexer is built with Flex from the lexer file
1494 @file{lily/lexer.ll} which contains the lexical rules. This file
1495 is part of the source code and is not included in the LilyPond
1496 binary installation.
1500 @unnumberedsubsec mutable
1502 @cindex mutable objects
1503 @cindex mutable properties
1505 A @strong{mutable} object is one whose state can be modified after
1506 creation, in contrast to an immutable object, whose state is fixed
1507 at the time of creation.
1509 In LilyPond, mutable properties contain values that are specific to
1510 one grob. Typically, lists of other objects or results from
1511 computations are stored in mutable properties.
1519 @unnumberedsubsec output-def
1523 An instance of the @code{Output-def} class contains the methods and
1524 data structures associated with an output block. Instances are
1525 created for midi, layout and paper blocks.
1529 @unnumberedsubsec parser
1533 @cindex grammar for LilyPond
1536 A @strong{parser} analyzes the sequence of tokens produced by a
1537 lexer to determine its grammatical structure, grouping the tokens
1538 progressively into larger groupings according to the rules of the
1539 grammar. If the sequence of tokens is valid the end product is a
1540 tree of tokens whose root is the grammar's start symbol. If this
1541 cannot be achieved the file is invalid and an appropriate error
1542 message is produced. The syntactic groupings and the rules for
1543 constructing the groupings from their parts for the LilyPond syntax
1544 are defined in @file{lily/parser.yy} and shown in Backus Normal Form
1545 (BNF) in @ref{LilyPond grammar}. This file is used to build the
1546 parser during the program build by the parser generator, Bison. It
1547 is part of the source code and is not included in the LilyPond
1548 binary installation.
1551 @node parser variable
1552 @unnumberedsubsec parser variable
1554 @cindex parser variable
1555 @cindex Scheme variable
1556 @cindex global variable
1557 @cindex afterGraceFraction
1560 @cindex output-count
1561 @cindex output-suffix
1562 @cindex parseStringResult
1563 @cindex partCombineListener
1565 @cindex toplevel-bookparts
1566 @cindex toplevel-scores
1567 @cindex showLastLength
1568 @cindex showFirstLength
1570 These are variables defined directly in Scheme. Their direct
1571 use by users is strongly discouraged, because their scoping
1572 semantics can be confusing.
1574 When the value of such a variable is changed in a @file{.ly} file,
1575 the change is global, and unless explicitly reverted, the new value
1576 will persist to the end of the file, affecting subsequent
1577 @code{\score} blocks as well as external files added with the
1578 @code{\include} command. This can lead to unintended consequences
1579 and in complex typesetting projects the consequent errors can be
1580 difficult to track down.
1582 LilyPond uses the following parser variables:
1585 @item afterGraceFraction
1590 @item parseStringResult
1591 @item partCombineListener
1593 @item toplevel-bookparts
1594 @item toplevel-scores
1595 @item showLastLength
1596 @item showFirstLength
1601 @unnumberedsubsec prob
1604 @cindex property object
1606 PRoperty OBjects, or @strong{probs} for short, are instances of
1607 the @code{Prob} class, a simple base class for objects which have
1608 mutable and immutable property alists and the methods to manipulate
1609 them. The @code{Music} and @code{Stream_event} classes derive from
1610 @code{Prob}. Instances of the @code{Prob} class are also created
1611 to hold the formatted content of system grobs and titling blocks
1615 @node simple closure
1616 @unnumberedsubsec simple closure
1622 @unnumberedsubsec smob
1625 @cindex Scheme object
1627 @strong{Smobs}, or ScheMe OBjects, are part of the mechanism used
1628 by Guile to export C and C++ objects to Scheme code. In LilyPond,
1629 smobs are created from C++ objects through macros. There are two
1630 types of smob objects: simple smobs, intended for simple immutable
1631 objects like numbers, and complex smobs, used for objects with
1632 identities. If you have access to the LilyPond sources, more
1633 information can be found in @file{lily/includes/smob.hh}.
1636 @unnumberedsubsec stencil
1640 An instance of the @strong{stencil} class holds the information
1641 required to print a typographical object. It is a simple smob
1642 containing a confining box, which defines the vertical and
1643 horizontal extents of the object, and a Scheme expression which
1644 will print the object when evaluated. Stencils may be combined
1645 to form more complex stencils defined by a tree of Scheme
1646 expressions formed from the Scheme expressions of the component
1649 The @code{stencil} property, which connects a grob to its stencil,
1650 is defined in the @code{grob-interface} interface.
1653 Internals Reference:
1654 @rinternals{grob-interface}.
1657 @node All context properties
1658 @appendixsec All context properties
1660 @include context-properties.tely
1663 @node Layout properties
1664 @appendixsec Layout properties
1666 @include layout-properties.tely
1669 @node Available music functions
1670 @appendixsec Available music functions
1672 @include identifiers.tely
1674 @node Context modification identifiers
1675 @appendixsec Context modification identifiers
1677 The following commands are defined for use as context modifications
1678 within a @code{\layout} or @code{\with} block.
1680 @include context-mod-identifiers.tely
1682 @node Predefined type predicates
1683 @appendixsec Predefined type predicates
1685 @include type-predicates.tely
1688 @node Scheme functions
1689 @appendixsec Scheme functions
1691 @include scheme-functions.tely