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
435 * Diagrams for Guitar::
436 * Diagrams for Ukulele::
437 * Diagrams for Mandolin::
440 @node Diagrams for Guitar
441 @unnumberedsubsec Diagrams for Guitar
443 @lilypondfile[line-width=15.5\cm]{display-predefined-fretboards.ly}
445 @node Diagrams for Ukulele
446 @unnumberedsubsec Diagrams for Ukulele
448 @lilypondfile[line-width=15.5\cm]{display-predefined-ukulele-fretboards.ly}
450 @node Diagrams for Mandolin
451 @unnumberedsubsec Diagrams for Mandolin
453 @lilypondfile[line-width=15.5\cm]{display-predefined-mandolin-fretboards.ly}
456 @node Predefined paper sizes
457 @appendixsec Predefined paper sizes
459 Paper sizes are defined in @file{scm/paper.scm}
462 @strong{The @qq{ISO 216} A Series}
489 @strong{The @qq{ISO 216} B Series}
516 @strong{Two extended sizes as defined in @qq{DIN 476}}
525 @strong{@qq{ISO 269} standard C series}
552 @strong{North American paper sizes}
571 @strong{Government-letter by IEEE Printer Working Group, for children's
574 @item "government-letter"
576 @item "government-legal"
578 @item "philippine-legal"
595 @item "engineering f"
600 @strong{North American Architectural sizes}
617 @strong{Antique sizes still used in the United Kingdom}
666 @strong{PA4 based sizes}
693 @strong{Used in Southeast Asia and Australia}
700 @strong{Used for very small @code{@@lilypond} examples in the
701 documentation based on a8 landscape.}
708 @node MIDI instruments
709 @appendixsec MIDI instruments
711 The following is a list of names that can be used for the
712 @code{midiInstrument} property. The order of the instruments
713 below, starting in the left-hand column moving down, corresponds
714 to the General MIDI Standard's 128 Program Numbers.
717 acoustic grand contrabass lead 7 (fifths)
718 bright acoustic tremolo strings lead 8 (bass+lead)
719 electric grand pizzicato strings pad 1 (new age)
720 honky-tonk orchestral harp pad 2 (warm)
721 electric piano 1 timpani pad 3 (polysynth)
722 electric piano 2 string ensemble 1 pad 4 (choir)
723 harpsichord string ensemble 2 pad 5 (bowed)
724 clav synthstrings 1 pad 6 (metallic)
725 celesta synthstrings 2 pad 7 (halo)
726 glockenspiel choir aahs pad 8 (sweep)
727 music box voice oohs fx 1 (rain)
728 vibraphone synth voice fx 2 (soundtrack)
729 marimba orchestra hit fx 3 (crystal)
730 xylophone trumpet fx 4 (atmosphere)
731 tubular bells trombone fx 5 (brightness)
732 dulcimer tuba fx 6 (goblins)
733 drawbar organ muted trumpet fx 7 (echoes)
734 percussive organ french horn fx 8 (sci-fi)
735 rock organ brass section sitar
736 church organ synthbrass 1 banjo
737 reed organ synthbrass 2 shamisen
738 accordion soprano sax koto
739 harmonica alto sax kalimba
740 concertina tenor sax bagpipe
741 acoustic guitar (nylon) baritone sax fiddle
742 acoustic guitar (steel) oboe shanai
743 electric guitar (jazz) english horn tinkle bell
744 electric guitar (clean) bassoon agogo
745 electric guitar (muted) clarinet steel drums
746 overdriven guitar piccolo woodblock
747 distorted guitar flute taiko drum
748 guitar harmonics recorder melodic tom
749 acoustic bass pan flute synth drum
750 electric bass (finger) blown bottle reverse cymbal
751 electric bass (pick) shakuhachi guitar fret noise
752 fretless bass whistle breath noise
753 slap bass 1 ocarina seashore
754 slap bass 2 lead 1 (square) bird tweet
755 synth bass 1 lead 2 (sawtooth) telephone ring
756 synth bass 2 lead 3 (calliope) helicopter
757 violin lead 4 (chiff) applause
758 viola lead 5 (charang) gunshot
764 @appendixsec List of colors
766 @subsubheading Normal colors
768 Usage syntax is detailed in @ref{Coloring objects}.
770 @cindex List of colors
771 @cindex Colors, list of
774 black white red green
775 blue cyan magenta yellow
776 grey darkred darkgreen darkblue
777 darkcyan darkmagenta darkyellow
781 @subsubheading X color names
783 X color names come several variants:
785 Any name that is spelled as a single word with capitalization
786 (e.g. @q{LightSlateBlue}) can also be spelled as space separated
787 words without capitalization (e.g. @q{light slate blue}).
789 The word @q{grey} can always be spelled @q{gray} (e.g. @q{DarkSlateGray}).
791 Some names can take a numerical suffix (e.g. @q{LightSalmon4}).
794 @subsubheading Color Names without a numerical suffix:
797 snow GhostWhite WhiteSmoke gainsboro FloralWhite
798 OldLace linen AntiqueWhite PapayaWhip BlanchedAlmond
799 bisque PeachPuff NavajoWhite moccasin cornsilk
800 ivory LemonChiffon seashell honeydew MintCream
801 azure AliceBlue lavender LavenderBlush MistyRose
802 white black DarkSlateGrey DimGrey SlateGrey
803 LightSlateGrey grey LightGrey MidnightBlue navy
804 NavyBlue CornflowerBlue DarkSlateBlue SlateBlue MediumSlateBlue
805 LightSlateBlue MediumBlue RoyalBlue blue DodgerBlue
806 DeepSkyBlue SkyBlue LightSkyBlue SteelBlue LightSteelBlue
807 LightBlue PowderBlue PaleTurquoise DarkTurquoise MediumTurquoise
808 turquoise cyan LightCyan CadetBlue MediumAquamarine
809 aquamarine DarkGreen DarkOliveGreen DarkSeaGreen SeaGreen
810 MediumSeaGreen LightSeaGreen PaleGreen SpringGreen LawnGreen
811 green chartreuse MediumSpringGreen GreenYellow LimeGreen
812 YellowGreen ForestGreen OliveDrab DarkKhaki khaki
813 PaleGoldenrod LightGoldenrodYellow LightYellow yellow gold
814 LightGoldenrod goldenrod DarkGoldenrod RosyBrown IndianRed
815 SaddleBrown sienna peru burlywood beige
816 wheat SandyBrown tan chocolate firebrick
817 brown DarkSalmon salmon LightSalmon orange
818 DarkOrange coral LightCoral tomato OrangeRed
819 red HotPink DeepPink pink LightPink
820 PaleVioletRed maroon MediumVioletRed VioletRed magenta
821 violet plum orchid MediumOrchid DarkOrchid
822 DarkViolet BlueViolet purple MediumPurple thistle
823 DarkGrey DarkBlue DarkCyan DarkMagenta DarkRed
828 @subsubheading Color names with a numerical suffix
830 In the following names the suffix N can be a number in the range 1-4:
833 snowN seashellN AntiqueWhiteN bisqueN PeachPuffN
834 NavajoWhiteN LemonChiffonN cornsilkN ivoryN honeydewN
835 LavenderBlushN MistyRoseN azureN SlateBlueN RoyalBlueN
836 blueN DodgerBlueN SteelBlueN DeepSkyBlueN SkyBlueN
837 LightSkyBlueN LightSteelBlueN LightBlueN LightCyanN PaleTurquoiseN
838 CadetBlueN turquoiseN cyanN aquamarineN DarkSeaGreenN
839 SeaGreenN PaleGreenN SpringGreenN greenN chartreuseN
840 OliveDrabN DarkOliveGreenN khakiN LightGoldenrodN LightYellowN
841 yellowN goldN goldenrodN DarkGoldenrodN RosyBrownN
842 IndianRedN siennaN burlywoodN wheatN tanN
843 chocolateN firebrickN brownN salmonN LightSalmonN
844 orangeN DarkOrangeN coralN tomatoN OrangeRedN
845 redN DeepPinkN HotPinkN pinkN LightPinkN
846 PaleVioletRedN maroonN VioletRedN magentaN orchidN
847 plumN MediumOrchidN DarkOrchidN purpleN MediumPurpleN
852 @subsubheading Grey Scale
854 A grey scale can be obtained using:
861 Where N is in the range 0-100.
865 @appendixsec The Feta font
870 The following symbols are available in the Emmentaler font and may be
871 accessed directly using text markup with the name of the glyph
872 as shown in the tables below,
873 such as @code{g^\markup @{\musicglyph #"scripts.segno" @}} or
874 @code{\markup @{\musicglyph #"five"@}}. For more information,
875 see @ref{Formatting text}.
880 * Time Signature glyphs::
882 * Accidental glyphs::
883 * Default Notehead glyphs::
884 * Special Notehead glyphs::
885 * Shape-note Notehead glyphs::
892 * Bracket-tip glyphs::
900 * Neomensural glyphs::
903 * Kievan Notation glyphs::
908 @unnumberedsubsec Clef glyphs
911 \include "font-table.ly"
912 \markuplist \override-lines #'(word-space . 4)
917 @node Time Signature glyphs
918 @unnumberedsubsec Time Signature glyphs
921 \include "font-table.ly"
922 \markuplist \override-lines #'(word-space . 4)
928 @unnumberedsubsec Number glyphs
931 \include "font-table.ly"
932 \markuplist \override-lines #'(word-space . 4)
937 @node Accidental glyphs
938 @unnumberedsubsec Accidental glyphs
941 \include "font-table.ly"
942 \markuplist \override-lines #'(word-space . 4)
943 \doc-chars #accidentals
947 @node Default Notehead glyphs
948 @unnumberedsubsec Default Notehead glyphs
951 \include "font-table.ly"
952 \markuplist \override-lines #'(word-space . 4)
953 \doc-chars #default-noteheads
957 @node Special Notehead glyphs
958 @unnumberedsubsec Special Notehead glyphs
961 \include "font-table.ly"
962 \markuplist \override-lines #'(word-space . 4)
963 \doc-chars #special-noteheads
967 @node Shape-note Notehead glyphs
968 @unnumberedsubsec Shape-note Notehead glyphs
971 \include "font-table.ly"
972 \markuplist \override-lines #'(word-space . 4)
973 \doc-chars #shape-note-noteheads
978 @unnumberedsubsec Rest glyphs
981 \include "font-table.ly"
982 \markuplist \override-lines #'(word-space . 4)
988 @unnumberedsubsec Flag glyphs
991 \include "font-table.ly"
992 \markuplist \override-lines #'(word-space . 4)
998 @unnumberedsubsec Dot glyphs
1001 \include "font-table.ly"
1002 \markuplist \override-lines #'(word-space . 4)
1007 @node Dynamic glyphs
1008 @unnumberedsubsec Dynamic glyphs
1011 \include "font-table.ly"
1012 \markuplist \override-lines #'(word-space . 4)
1013 \doc-chars #dynamics
1018 @unnumberedsubsec Script glyphs
1021 \include "font-table.ly"
1022 \markuplist \override-lines #'(word-space . 4)
1027 @node Arrowhead glyphs
1028 @unnumberedsubsec Arrowhead glyphs
1031 \include "font-table.ly"
1032 \markuplist \override-lines #'(word-space . 4)
1033 \doc-chars #arrowheads
1037 @node Bracket-tip glyphs
1038 @unnumberedsubsec Bracket-tip glyphs
1041 \include "font-table.ly"
1042 \markuplist \override-lines #'(word-space . 4)
1043 \doc-chars #brackettips
1048 @unnumberedsubsec Pedal glyphs
1051 \include "font-table.ly"
1052 \markuplist \override-lines #'(word-space . 4)
1057 @node Accordion glyphs
1058 @unnumberedsubsec Accordion glyphs
1061 \include "font-table.ly"
1062 \markuplist \override-lines #'(word-space . 4)
1063 \doc-chars #accordion
1068 @unnumberedsubsec Tie glyphs
1071 \include "font-table.ly"
1072 \markuplist \override-lines #'(word-space . 4)
1077 @node Vaticana glyphs
1078 @unnumberedsubsec Vaticana glyphs
1081 \include "font-table.ly"
1082 \markuplist \override-lines #'(word-space . 4)
1083 \doc-chars #vaticana
1087 @node Medicaea glyphs
1088 @unnumberedsubsec Medicaea glyphs
1091 \include "font-table.ly"
1092 \markuplist \override-lines #'(word-space . 4)
1093 \doc-chars #medicaea
1097 @node Hufnagel glyphs
1098 @unnumberedsubsec Hufnagel glyphs
1101 \include "font-table.ly"
1102 \markuplist \override-lines #'(word-space . 4)
1103 \doc-chars #hufnagel
1107 @node Mensural glyphs
1108 @unnumberedsubsec Mensural glyphs
1111 \include "font-table.ly"
1112 \markuplist \override-lines #'(word-space . 4)
1113 \doc-chars #mensural
1117 @node Neomensural glyphs
1118 @unnumberedsubsec Neomensural glyphs
1121 \include "font-table.ly"
1122 \markuplist \override-lines #'(word-space . 4)
1123 \doc-chars #neomensural
1127 @node Petrucci glyphs
1128 @unnumberedsubsec Petrucci glyphs
1131 \include "font-table.ly"
1132 \markuplist \override-lines #'(word-space . 4)
1133 \doc-chars #petrucci
1137 @node Solesmes glyphs
1138 @unnumberedsubsec Solesmes glyphs
1141 \include "font-table.ly"
1142 \markuplist \override-lines #'(word-space . 4)
1143 \doc-chars #solesmes
1146 @node Kievan Notation glyphs
1147 @unnumberedsubsec Kievan Notation glyphs
1150 \include "font-table.ly"
1151 \markuplist \override-lines #'(word-space . 4)
1155 @node Note head styles
1156 @appendixsec Note head styles
1158 @cindex note head styles
1159 The following styles may be used for note heads.
1161 @lilypondfile[noindent]{note-head-style.ly}
1164 @node Text markup commands
1165 @appendixsec Text markup commands
1167 @include markup-commands.tely
1170 @node Text markup list commands
1171 @appendixsec Text markup list commands
1173 The following commands can all be used with @code{\markuplist}:
1175 @include markup-list-commands.tely
1178 @node List of special characters
1179 @appendixsec List of special characters
1181 The following special characters references can be used;
1182 for more details, see @ref{ASCII aliases}.
1184 The HTML syntax is used and most of these references are the same as HTML.
1185 The rest of them are inspired by @LaTeX{}.
1187 The characters are boxed so that you can see their size.
1188 A small padding has been added between the character and the box
1189 for more readability.
1192 \include "special-characters.ly"
1196 @node List of articulations
1197 @appendixsec List of articulations
1222 @cindex prallmordent
1229 @cindex semicirculus
1230 @cindex shortfermata
1231 @cindex signumcongruentiae
1232 @cindex snappizzicato
1233 @cindex staccatissimo
1244 @cindex verylongfermata
1246 The following scripts are available in the Feta font and may be
1247 attached to notes (eg. @samp{c\accent}).
1249 @c Articulations and ornamentations
1250 @c Fingering instructions (for "thumb")
1251 @c Common notation for unfretted strings
1252 @c Bowing indications
1254 @c Snap (Bartók) pizzicato
1255 @c Custom percussion staves (for "halfopen" -- not yet funindexed)
1256 @c References for wind instruments (for "open"/"stopped" -- not yet funindexed)
1260 * Articulation scripts::
1261 * Ornament scripts::
1263 * Instrument-specific scripts::
1264 * Repeat sign scripts::
1269 @node Articulation scripts
1270 @unnumberedsubsec Articulation scripts
1273 \include "script-chart.ly"
1274 \new RhythmicStaff { \scriptStaff #articulations }
1277 @node Ornament scripts
1278 @unnumberedsubsec Ornament scripts
1281 \include "script-chart.ly"
1282 \new RhythmicStaff { \scriptStaff #ornaments }
1285 @node Fermata scripts
1286 @unnumberedsubsec Fermata scripts
1289 \include "script-chart.ly"
1290 \new RhythmicStaff { \scriptStaff #fermatas }
1293 @node Instrument-specific scripts
1294 @unnumberedsubsec Instrument-specific scripts
1297 \include "script-chart.ly"
1298 \new RhythmicStaff { \scriptStaff #instrument-specific }
1301 @node Repeat sign scripts
1302 @unnumberedsubsec Repeat sign scripts
1305 \include "script-chart.ly"
1306 \new RhythmicStaff { \scriptStaff #repeats }
1309 @node Ancient scripts
1310 @unnumberedsubsec Ancient scripts
1313 \include "script-chart.ly"
1314 \include "gregorian.ly"
1315 \new VaticanaStaff { \scriptStaffAncient #ancient }
1319 @node Percussion notes
1320 @appendixsec Percussion notes
1322 @lilypondfile[quote]{percussion-chart.ly}
1325 @node Technical glossary
1326 @appendixsec Technical glossary
1328 A glossary of the technical terms and concepts used internally in
1329 LilyPond. These terms may appear in the manuals, on mailing lists
1330 or in the source code.
1352 @unnumberedsubsec alist
1355 @cindex association list
1357 An association list or @strong{alist} for short is a Scheme pair
1358 which associates a value with a key: @w{@code{(key . value)}}. For
1359 example, in @file{scm/lily.scm}, the alist
1360 @w{@qq{type-p-name-alist}} associates certain type predicates
1361 (e.g.@tie{}@code{ly:music?}) with names (e.g.@tie{}@qq{music}) so
1362 that type-check failures can be reported with a console message that
1363 includes the name of the expected type predicate.
1366 @unnumberedsubsec callback
1370 A @strong{callback} is a routine, function or method whose reference is
1371 passed as an argument in a call to another routine, so allowing
1372 the called routine to invoke it. The technique enables a lower-
1373 level software layer to call a function defined in a higher
1374 layer. Callbacks are used extensively in LilyPond to permit
1375 user-level Scheme code to define how many low-level actions are
1380 @unnumberedsubsec closure
1383 @cindex simple closure
1385 In Scheme, a @strong{closure} is created when a function, usually
1386 a lambda expression, is passed as a variable. The closure contains
1387 the function's code plus references to the lexical bindings of the
1388 function's free variables (i.e. those variables used in the
1389 expression but defined outside it). When this function is applied
1390 to different arguments later, the free variable bindings that were
1391 captured in the closure are used to obtain the values of the free
1392 variables to be used in the calculation. One useful property of
1393 closures is the retention of internal variable values between
1394 invocations, so permitting state to be maintained.
1396 A @strong{simple closure} is a closure whose expression has no free
1397 variables and hence no free variable bindings.
1399 A simple closure is represented in LilyPond by a smob containing
1400 the expression and a method to apply the expression to a passed
1405 @unnumberedsubsec glyph
1411 A @strong{glyph} is a particular graphical representation of a typographic
1412 character, or a combination of two characters formating a ligature.
1413 A set of glyphs with a single style and shape comprise a font, and
1414 a set of fonts covering several styles and sizes comprise a typeface.
1419 @ref{Special characters}.
1423 @unnumberedsubsec grob
1426 @cindex layout objects
1427 @cindex graphical objects
1429 LilyPond objects which represent items of notation in the printed
1430 output such as note heads, stems, slurs, ties, fingering, clefs,
1431 etc are called @q{Layout objects}, often known as @q{GRaphical
1432 OBjects}, or @strong{grobs} for short. They are represented by
1433 instances of the @code{Grob} class.
1437 @rlearning{Objects and interfaces},
1438 @rlearning{Naming conventions of objects and properties},
1439 @rlearning{Properties of layout objects}.
1441 Internals Reference:
1442 @rinternals{grob-interface},
1443 @rinternals{All layout objects}.
1447 @unnumberedsubsec immutable
1449 @cindex immutable objects
1450 @cindex immutable properties
1451 @cindex shared properties
1453 An @strong{immutable} object is one whose state cannot be modified
1454 after creation, in contrast to a mutable object, which can be
1455 modified after creation.
1457 In LilyPond, immutable or shared properties define the default
1458 style and behavior of grobs. They are shared between many objects.
1459 In apparent contradiction to the name, they can be changed using
1460 @code{\override} and @code{\revert}.
1468 @unnumberedsubsec interface
1471 @cindex grob-interface
1472 @cindex graphical object interfaces
1474 Actions and properties which are common to a number of grobs are
1475 grouped together in an object called a @code{grob-interface}, or
1476 just @q{interface} for short.
1480 @rlearning{Objects and interfaces},
1481 @rlearning{Naming conventions of objects and properties},
1482 @rlearning{Properties found in interfaces}.
1485 @ref{Layout interfaces}.
1487 Internals Reference:
1488 @rinternals{Graphical Object Interfaces}.
1492 @unnumberedsubsec lexer
1497 A @strong{lexer} is a program which converts a sequence of
1498 characters into a sequence of tokens, a process called lexical
1499 analysis. The LilyPond lexer converts the stream obtained from an
1500 input @file{.ly} file into a tokenized stream more suited to the
1501 next stage of processing - parsing, for which see @ref{parser}.
1502 The LilyPond lexer is built with Flex from the lexer file
1503 @file{lily/lexer.ll} which contains the lexical rules. This file
1504 is part of the source code and is not included in the LilyPond
1505 binary installation.
1509 @unnumberedsubsec mutable
1511 @cindex mutable objects
1512 @cindex mutable properties
1514 A @strong{mutable} object is one whose state can be modified after
1515 creation, in contrast to an immutable object, whose state is fixed
1516 at the time of creation.
1518 In LilyPond, mutable properties contain values that are specific to
1519 one grob. Typically, lists of other objects or results from
1520 computations are stored in mutable properties.
1528 @unnumberedsubsec output-def
1532 An instance of the @code{Output-def} class contains the methods and
1533 data structures associated with an output block. Instances are
1534 created for midi, layout and paper blocks.
1538 @unnumberedsubsec parser
1542 @cindex LilyPond grammar
1543 @cindex grammar for LilyPond
1546 A @strong{parser} analyzes the sequence of tokens produced by a
1547 lexer to determine its grammatical structure, grouping the tokens
1548 progressively into larger groupings according to the rules of the
1549 grammar. If the sequence of tokens is valid the end product is a
1550 tree of tokens whose root is the grammar's start symbol. If this
1551 cannot be achieved the file is invalid and an appropriate error
1552 message is produced. The syntactic groupings and the rules for
1553 constructing the groupings from their parts for the LilyPond syntax
1554 are defined in @file{lily/parser.yy} and shown in Backus Normal Form
1555 (BNF) in @rcontrib{LilyPond grammar}. This file is used to build the
1556 parser during the program build by the parser generator, Bison. It is
1557 part of the source code and is not included in the LilyPond binary
1561 @node parser variable
1562 @unnumberedsubsec parser variable
1564 @cindex parser variable
1565 @cindex Scheme variable
1566 @cindex global variable
1567 @cindex afterGraceFraction
1570 @cindex output-count
1571 @cindex output-suffix
1572 @cindex partCombineListener
1574 @cindex toplevel-bookparts
1575 @cindex toplevel-scores
1576 @cindex showLastLength
1577 @cindex showFirstLength
1579 These are variables defined directly in Scheme. Their direct
1580 use by users is strongly discouraged, because their scoping
1581 semantics can be confusing.
1583 When the value of such a variable is changed in a @file{.ly} file,
1584 the change is global, and unless explicitly reverted, the new value
1585 will persist to the end of the file, affecting subsequent
1586 @code{\score} blocks as well as external files added with the
1587 @code{\include} command. This can lead to unintended consequences
1588 and in complex typesetting projects the consequent errors can be
1589 difficult to track down.
1591 LilyPond uses the following parser variables:
1594 @item afterGraceFraction
1599 @item partCombineListener
1601 @item toplevel-bookparts
1602 @item toplevel-scores
1603 @item showLastLength
1604 @item showFirstLength
1609 @unnumberedsubsec prob
1612 @cindex property object
1614 PRoperty OBjects, or @strong{probs} for short, are instances of
1615 the @code{Prob} class, a simple base class for objects which have
1616 mutable and immutable property alists and the methods to manipulate
1617 them. The @code{Music} and @code{Stream_event} classes derive from
1618 @code{Prob}. Instances of the @code{Prob} class are also created
1619 to hold the formatted content of system grobs and titling blocks
1623 @node simple closure
1624 @unnumberedsubsec simple closure
1630 @unnumberedsubsec smob
1633 @cindex Scheme object
1635 @strong{Smobs}, or ScheMe OBjects, are part of the mechanism used
1636 by Guile to export C and C++ objects to Scheme code. In LilyPond,
1637 smobs are created from C++ objects through macros. There are two
1638 types of smob objects: simple smobs, intended for simple immutable
1639 objects like numbers, and complex smobs, used for objects with
1640 identities. If you have access to the LilyPond sources, more
1641 information can be found in @file{lily/includes/smob.hh}.
1644 @unnumberedsubsec stencil
1648 An instance of the @strong{stencil} class holds the information
1649 required to print a typographical object. It is a simple smob
1650 containing a confining box, which defines the vertical and
1651 horizontal extents of the object, and a Scheme expression which
1652 will print the object when evaluated. Stencils may be combined
1653 to form more complex stencils defined by a tree of Scheme
1654 expressions formed from the Scheme expressions of the component
1657 The @code{stencil} property, which connects a grob to its stencil,
1658 is defined in the @code{grob-interface} interface.
1661 Internals Reference:
1662 @rinternals{grob-interface}.
1665 @node All context properties
1666 @appendixsec All context properties
1668 @include context-properties.tely
1671 @node Layout properties
1672 @appendixsec Layout properties
1674 @include layout-properties.tely
1677 @node Available music functions
1678 @appendixsec Available music functions
1680 @include identifiers.tely
1682 @node Context modification identifiers
1683 @appendixsec Context modification identifiers
1685 The following commands are defined for use as context modifications
1686 within a @code{\layout} or @code{\with} block.
1688 @include context-mod-identifiers.tely
1690 @node Predefined type predicates
1691 @appendixsec Predefined type predicates
1693 @include type-predicates.tely
1696 @node Scheme functions
1697 @appendixsec Scheme functions
1699 @include scheme-functions.tely