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 to generate
55 standard chord structures.
57 @multitable @columnfractions .2 .25 .2 .15 .2
74 Major third, @*perfect fifth
80 @lilypond[line-width=2.1\cm,notime]
90 Minor third, @*perfect fifth
96 @lilypond[line-width=2.1\cm,noragged-right,notime]
106 Major third, @*augmented fifth
112 @lilypond[line-width=2.1\cm,noragged-right,notime]
115 \chordmode { c1:aug }
122 Minor third, @*diminished fifth
128 @lilypond[line-width=2.1\cm,noragged-right,notime]
131 \chordmode { c1:dim }
138 Major triad, @*minor seventh
144 @lilypond[line-width=2.1\cm,noragged-right,notime]
154 Major triad, @*major seventh
156 @code{maj7} or @code{maj}
160 @lilypond[line-width=2.1\cm,noragged-right,notime]
163 \chordmode { c1:maj7 }
170 Minor triad, @*minor seventh
176 @lilypond[line-width=2.1\cm,noragged-right,notime]
186 Diminished triad, @*diminished seventh
192 @lilypond[line-width=2.1\cm,noragged-right,notime]
195 \chordmode { c1:dim7 }
202 Augmented triad, @*minor seventh
208 @lilypond[line-width=2.1\cm,noragged-right,notime]
211 \chordmode { c1:aug7 }
216 Half-diminished seventh
218 Diminished triad, @*minor seventh
224 @lilypond[line-width=2.1\cm,noragged-right,notime]
227 \chordmode { c1:m7.5- }
234 Minor triad, @*major seventh
240 @lilypond[line-width=2.1\cm,noragged-right,notime]
243 \chordmode { c1:m7+ }
256 @lilypond[line-width=2.1\cm,noragged-right,notime]
272 @lilypond[line-width=2.1\cm,noragged-right,notime]
282 Dominant seventh, @*major ninth
288 @lilypond[line-width=2.1\cm,noragged-right,notime]
298 Major seventh, @*major ninth
304 @lilypond[line-width=2.1\cm,noragged-right,notime]
307 \chordmode { c1:maj9 }
314 Minor seventh, @*major ninth
320 @lilypond[line-width=2.1\cm,noragged-right,notime]
330 Dominant ninth, @*perfect eleventh
336 @lilypond[line-width=2.1\cm,noragged-right,notime]
346 Major ninth, @*perfect eleventh
352 @lilypond[line-width=2.1\cm,noragged-right,notime]
355 \chordmode { c1:maj11 }
362 Minor ninth, @*perfect eleventh
368 @lilypond[line-width=2.1\cm,noragged-right,notime]
371 \chordmode { c1:m11 }
378 Dominant ninth, @*major thirteenth
384 @lilypond[line-width=2.1\cm,noragged-right,notime]
394 Dominant eleventh, @*major thirteenth
400 @lilypond[line-width=2.1\cm,noragged-right,notime]
403 \chordmode { c1:13.11 }
410 Major eleventh, @*major thirteenth
416 @lilypond[line-width=2.1\cm,noragged-right,notime]
418 \chords { c1:maj13.11 }
419 \chordmode { c1:maj13.11 }
426 Minor eleventh, @*major thirteenth
432 @lilypond[line-width=2.1\cm,noragged-right,notime]
434 \chords { c1:m13.11 }
435 \chordmode { c1:m13.11 }
442 Major second, @*perfect fifth
448 @lilypond[line-width=2.1\cm,noragged-right,notime]
451 \chordmode { c1:sus2 }
458 Perfect fourth, @*perfect fifth
464 @lilypond[line-width=2.1\cm,noragged-right,notime]
467 \chordmode { c1:sus4 }
472 Power chord @*(two-voiced)
478 @code{\powerChords c1:1.5}
480 @lilypond[line-width=2.1\cm,noragged-right,notime]
481 \chordmode { \powerChords c1:1.5 }
485 Power chord @*@w{(three-voiced)}
487 Perfect fifth, @*octave
491 @code{\powerChords c1:1.5.8}
493 @lilypond[line-width=2.1\cm,noragged-right,notime]
494 \chordmode { \powerChords c1:1.5.8 }
499 @node Predefined string tunings
500 @appendixsec Predefined string tunings
502 The chart below shows the predefined string tunings.
504 @lilypondfile{display-predefined-string-tunings.ly}
506 @node Predefined fretboard diagrams
507 @appendixsec Predefined fretboard diagrams
510 * Diagrams for Guitar::
511 * Diagrams for Ukulele::
512 * Diagrams for Mandolin::
515 @node Diagrams for Guitar
516 @unnumberedsubsec Diagrams for Guitar
518 @lilypondfile[line-width=15.5\cm]{display-predefined-fretboards.ly}
520 @node Diagrams for Ukulele
521 @unnumberedsubsec Diagrams for Ukulele
523 @lilypondfile[line-width=15.5\cm]{display-predefined-ukulele-fretboards.ly}
525 @node Diagrams for Mandolin
526 @unnumberedsubsec Diagrams for Mandolin
528 @lilypondfile[line-width=15.5\cm]{display-predefined-mandolin-fretboards.ly}
531 @node Predefined paper sizes
532 @appendixsec Predefined paper sizes
534 Paper sizes are defined in @file{scm/paper.scm}
537 @strong{The @qq{ISO 216} A Series}
564 @strong{The @qq{ISO 216} B Series}
591 @strong{Two extended sizes as defined in @qq{DIN 476}}
600 @strong{@qq{ISO 269} standard C series}
627 @strong{North American paper sizes}
646 @strong{Government-letter by IEEE Printer Working Group, for children's
649 @item "government-letter"
651 @item "government-legal"
653 @item "philippine-legal"
670 @item "engineering f"
675 @strong{North American Architectural sizes}
692 @strong{Antique sizes still used in the United Kingdom}
741 @strong{PA4 based sizes}
768 @strong{Used in Southeast Asia and Australia}
775 @strong{Used for very small @code{@@lilypond} examples in the
776 documentation based on a8 landscape.}
783 @node MIDI instruments
784 @appendixsec MIDI instruments
786 The following is a list of names that can be used for the
787 @code{midiInstrument} property. The order of the instruments
788 below, starting in the left-hand column moving down, corresponds
789 to the General MIDI Standard's 128 Program Numbers.
792 acoustic grand contrabass lead 7 (fifths)
793 bright acoustic tremolo strings lead 8 (bass+lead)
794 electric grand pizzicato strings pad 1 (new age)
795 honky-tonk orchestral harp pad 2 (warm)
796 electric piano 1 timpani pad 3 (polysynth)
797 electric piano 2 string ensemble 1 pad 4 (choir)
798 harpsichord string ensemble 2 pad 5 (bowed)
799 clav synthstrings 1 pad 6 (metallic)
800 celesta synthstrings 2 pad 7 (halo)
801 glockenspiel choir aahs pad 8 (sweep)
802 music box voice oohs fx 1 (rain)
803 vibraphone synth voice fx 2 (soundtrack)
804 marimba orchestra hit fx 3 (crystal)
805 xylophone trumpet fx 4 (atmosphere)
806 tubular bells trombone fx 5 (brightness)
807 dulcimer tuba fx 6 (goblins)
808 drawbar organ muted trumpet fx 7 (echoes)
809 percussive organ french horn fx 8 (sci-fi)
810 rock organ brass section sitar
811 church organ synthbrass 1 banjo
812 reed organ synthbrass 2 shamisen
813 accordion soprano sax koto
814 harmonica alto sax kalimba
815 concertina tenor sax bagpipe
816 acoustic guitar (nylon) baritone sax fiddle
817 acoustic guitar (steel) oboe shanai
818 electric guitar (jazz) english horn tinkle bell
819 electric guitar (clean) bassoon agogo
820 electric guitar (muted) clarinet steel drums
821 overdriven guitar piccolo woodblock
822 distorted guitar flute taiko drum
823 guitar harmonics recorder melodic tom
824 acoustic bass pan flute synth drum
825 electric bass (finger) blown bottle reverse cymbal
826 electric bass (pick) shakuhachi guitar fret noise
827 fretless bass whistle breath noise
828 slap bass 1 ocarina seashore
829 slap bass 2 lead 1 (square) bird tweet
830 synth bass 1 lead 2 (sawtooth) telephone ring
831 synth bass 2 lead 3 (calliope) helicopter
832 violin lead 4 (chiff) applause
833 viola lead 5 (charang) gunshot
839 @appendixsec List of colors
841 @subsubheading Normal colors
843 Usage syntax is detailed in @ref{Coloring objects}.
845 @cindex List of colors
846 @cindex Colors, list of
849 black white red green
850 blue cyan magenta yellow
851 grey darkred darkgreen darkblue
852 darkcyan darkmagenta darkyellow
856 @subsubheading X color names
858 X color names come several variants:
860 Any name that is spelled as a single word with capitalization
861 (e.g. @q{LightSlateBlue}) can also be spelled as space separated
862 words without capitalization (e.g. @q{light slate blue}).
864 The word @q{grey} can always be spelled @q{gray} (e.g. @q{DarkSlateGray}).
866 Some names can take a numerical suffix (e.g. @q{LightSalmon4}).
869 @subsubheading Color Names without a numerical suffix:
872 snow GhostWhite WhiteSmoke gainsboro FloralWhite
873 OldLace linen AntiqueWhite PapayaWhip BlanchedAlmond
874 bisque PeachPuff NavajoWhite moccasin cornsilk
875 ivory LemonChiffon seashell honeydew MintCream
876 azure AliceBlue lavender LavenderBlush MistyRose
877 white black DarkSlateGrey DimGrey SlateGrey
878 LightSlateGrey grey LightGrey MidnightBlue navy
879 NavyBlue CornflowerBlue DarkSlateBlue SlateBlue MediumSlateBlue
880 LightSlateBlue MediumBlue RoyalBlue blue DodgerBlue
881 DeepSkyBlue SkyBlue LightSkyBlue SteelBlue LightSteelBlue
882 LightBlue PowderBlue PaleTurquoise DarkTurquoise MediumTurquoise
883 turquoise cyan LightCyan CadetBlue MediumAquamarine
884 aquamarine DarkGreen DarkOliveGreen DarkSeaGreen SeaGreen
885 MediumSeaGreen LightSeaGreen PaleGreen SpringGreen LawnGreen
886 green chartreuse MediumSpringGreen GreenYellow LimeGreen
887 YellowGreen ForestGreen OliveDrab DarkKhaki khaki
888 PaleGoldenrod LightGoldenrodYellow LightYellow yellow gold
889 LightGoldenrod goldenrod DarkGoldenrod RosyBrown IndianRed
890 SaddleBrown sienna peru burlywood beige
891 wheat SandyBrown tan chocolate firebrick
892 brown DarkSalmon salmon LightSalmon orange
893 DarkOrange coral LightCoral tomato OrangeRed
894 red HotPink DeepPink pink LightPink
895 PaleVioletRed maroon MediumVioletRed VioletRed magenta
896 violet plum orchid MediumOrchid DarkOrchid
897 DarkViolet BlueViolet purple MediumPurple thistle
898 DarkGrey DarkBlue DarkCyan DarkMagenta DarkRed
903 @subsubheading Color names with a numerical suffix
905 In the following names the suffix N can be a number in the range 1-4:
908 snowN seashellN AntiqueWhiteN bisqueN PeachPuffN
909 NavajoWhiteN LemonChiffonN cornsilkN ivoryN honeydewN
910 LavenderBlushN MistyRoseN azureN SlateBlueN RoyalBlueN
911 blueN DodgerBlueN SteelBlueN DeepSkyBlueN SkyBlueN
912 LightSkyBlueN LightSteelBlueN LightBlueN LightCyanN PaleTurquoiseN
913 CadetBlueN turquoiseN cyanN aquamarineN DarkSeaGreenN
914 SeaGreenN PaleGreenN SpringGreenN greenN chartreuseN
915 OliveDrabN DarkOliveGreenN khakiN LightGoldenrodN LightYellowN
916 yellowN goldN goldenrodN DarkGoldenrodN RosyBrownN
917 IndianRedN siennaN burlywoodN wheatN tanN
918 chocolateN firebrickN brownN salmonN LightSalmonN
919 orangeN DarkOrangeN coralN tomatoN OrangeRedN
920 redN DeepPinkN HotPinkN pinkN LightPinkN
921 PaleVioletRedN maroonN VioletRedN magentaN orchidN
922 plumN MediumOrchidN DarkOrchidN purpleN MediumPurpleN
927 @subsubheading Grey Scale
929 A grey scale can be obtained using:
936 Where N is in the range 0-100.
940 @appendixsec The Feta font
945 The following symbols are available in the Emmentaler font and may be
946 accessed directly using text markup with the name of the glyph
947 as shown in the tables below,
948 such as @code{g^\markup @{\musicglyph #"scripts.segno" @}} or
949 @code{\markup @{\musicglyph #"five"@}}. For more information,
950 see @ref{Formatting text}.
955 * Time Signature glyphs::
957 * Accidental glyphs::
958 * Default Notehead glyphs::
959 * Special Notehead glyphs::
960 * Shape-note Notehead glyphs::
967 * Bracket-tip glyphs::
975 * Neomensural glyphs::
978 * Kievan Notation glyphs::
983 @unnumberedsubsec Clef glyphs
986 \include "font-table.ly"
987 \markuplist \override-lines #'(word-space . 4)
992 @node Time Signature glyphs
993 @unnumberedsubsec Time Signature glyphs
996 \include "font-table.ly"
997 \markuplist \override-lines #'(word-space . 4)
1003 @unnumberedsubsec Number glyphs
1006 \include "font-table.ly"
1007 \markuplist \override-lines #'(word-space . 4)
1012 @node Accidental glyphs
1013 @unnumberedsubsec Accidental glyphs
1016 \include "font-table.ly"
1017 \markuplist \override-lines #'(word-space . 4)
1018 \doc-chars #accidentals
1022 @node Default Notehead glyphs
1023 @unnumberedsubsec Default Notehead glyphs
1026 \include "font-table.ly"
1027 \markuplist \override-lines #'(word-space . 4)
1028 \doc-chars #default-noteheads
1032 @node Special Notehead glyphs
1033 @unnumberedsubsec Special Notehead glyphs
1036 \include "font-table.ly"
1037 \markuplist \override-lines #'(word-space . 4)
1038 \doc-chars #special-noteheads
1042 @node Shape-note Notehead glyphs
1043 @unnumberedsubsec Shape-note Notehead glyphs
1046 \include "font-table.ly"
1047 \markuplist \override-lines #'(word-space . 4)
1048 \doc-chars #shape-note-noteheads
1053 @unnumberedsubsec Rest glyphs
1056 \include "font-table.ly"
1057 \markuplist \override-lines #'(word-space . 4)
1063 @unnumberedsubsec Flag glyphs
1066 \include "font-table.ly"
1067 \markuplist \override-lines #'(word-space . 4)
1073 @unnumberedsubsec Dot glyphs
1076 \include "font-table.ly"
1077 \markuplist \override-lines #'(word-space . 4)
1082 @node Dynamic glyphs
1083 @unnumberedsubsec Dynamic glyphs
1086 \include "font-table.ly"
1087 \markuplist \override-lines #'(word-space . 4)
1088 \doc-chars #dynamics
1093 @unnumberedsubsec Script glyphs
1096 \include "font-table.ly"
1097 \markuplist \override-lines #'(word-space . 4)
1102 @node Arrowhead glyphs
1103 @unnumberedsubsec Arrowhead glyphs
1106 \include "font-table.ly"
1107 \markuplist \override-lines #'(word-space . 4)
1108 \doc-chars #arrowheads
1112 @node Bracket-tip glyphs
1113 @unnumberedsubsec Bracket-tip glyphs
1116 \include "font-table.ly"
1117 \markuplist \override-lines #'(word-space . 4)
1118 \doc-chars #brackettips
1123 @unnumberedsubsec Pedal glyphs
1126 \include "font-table.ly"
1127 \markuplist \override-lines #'(word-space . 4)
1132 @node Accordion glyphs
1133 @unnumberedsubsec Accordion glyphs
1136 \include "font-table.ly"
1137 \markuplist \override-lines #'(word-space . 4)
1138 \doc-chars #accordion
1143 @unnumberedsubsec Tie glyphs
1146 \include "font-table.ly"
1147 \markuplist \override-lines #'(word-space . 4)
1152 @node Vaticana glyphs
1153 @unnumberedsubsec Vaticana glyphs
1156 \include "font-table.ly"
1157 \markuplist \override-lines #'(word-space . 4)
1158 \doc-chars #vaticana
1162 @node Medicaea glyphs
1163 @unnumberedsubsec Medicaea glyphs
1166 \include "font-table.ly"
1167 \markuplist \override-lines #'(word-space . 4)
1168 \doc-chars #medicaea
1172 @node Hufnagel glyphs
1173 @unnumberedsubsec Hufnagel glyphs
1176 \include "font-table.ly"
1177 \markuplist \override-lines #'(word-space . 4)
1178 \doc-chars #hufnagel
1182 @node Mensural glyphs
1183 @unnumberedsubsec Mensural glyphs
1186 \include "font-table.ly"
1187 \markuplist \override-lines #'(word-space . 4)
1188 \doc-chars #mensural
1192 @node Neomensural glyphs
1193 @unnumberedsubsec Neomensural glyphs
1196 \include "font-table.ly"
1197 \markuplist \override-lines #'(word-space . 4)
1198 \doc-chars #neomensural
1202 @node Petrucci glyphs
1203 @unnumberedsubsec Petrucci glyphs
1206 \include "font-table.ly"
1207 \markuplist \override-lines #'(word-space . 4)
1208 \doc-chars #petrucci
1212 @node Solesmes glyphs
1213 @unnumberedsubsec Solesmes glyphs
1216 \include "font-table.ly"
1217 \markuplist \override-lines #'(word-space . 4)
1218 \doc-chars #solesmes
1221 @node Kievan Notation glyphs
1222 @unnumberedsubsec Kievan Notation glyphs
1225 \include "font-table.ly"
1226 \markuplist \override-lines #'(word-space . 4)
1230 @node Note head styles
1231 @appendixsec Note head styles
1233 @cindex note head styles
1234 The following styles may be used for note heads.
1236 @lilypondfile[noindent]{note-head-style.ly}
1239 @node Text markup commands
1240 @appendixsec Text markup commands
1242 @include markup-commands.tely
1245 @node Text markup list commands
1246 @appendixsec Text markup list commands
1248 The following commands can all be used with @code{\markuplist}:
1250 @include markup-list-commands.tely
1253 @node List of special characters
1254 @appendixsec List of special characters
1256 The following special characters references can be used;
1257 for more details, see @ref{ASCII aliases}.
1259 The HTML syntax is used and most of these references are the same as HTML.
1260 The rest of them are inspired by @LaTeX{}.
1262 The characters are boxed so that you can see their size.
1263 A small padding has been added between the character and the box
1264 for more readability.
1267 \include "special-characters.ly"
1271 @node List of articulations
1272 @appendixsec List of articulations
1297 @cindex prallmordent
1304 @cindex semicirculus
1305 @cindex shortfermata
1306 @cindex signumcongruentiae
1307 @cindex snappizzicato
1308 @cindex staccatissimo
1319 @cindex verylongfermata
1321 The following scripts are available in the Feta font and may be
1322 attached to notes (eg. @samp{c\accent}).
1324 @c Articulations and ornamentations
1325 @c Fingering instructions (for "thumb")
1326 @c Common notation for unfretted strings
1327 @c Bowing indications
1329 @c Snap (Bartók) pizzicato
1330 @c Custom percussion staves (for "halfopen" -- not yet funindexed)
1331 @c References for wind instruments (for "open"/"stopped" -- not yet funindexed)
1335 * Articulation scripts::
1336 * Ornament scripts::
1338 * Instrument-specific scripts::
1339 * Repeat sign scripts::
1344 @node Articulation scripts
1345 @unnumberedsubsec Articulation scripts
1348 \include "script-chart.ly"
1349 \new RhythmicStaff { \scriptStaff #articulations }
1352 @node Ornament scripts
1353 @unnumberedsubsec Ornament scripts
1356 \include "script-chart.ly"
1357 \new RhythmicStaff { \scriptStaff #ornaments }
1360 @node Fermata scripts
1361 @unnumberedsubsec Fermata scripts
1364 \include "script-chart.ly"
1365 \new RhythmicStaff { \scriptStaff #fermatas }
1368 @node Instrument-specific scripts
1369 @unnumberedsubsec Instrument-specific scripts
1372 \include "script-chart.ly"
1373 \new RhythmicStaff { \scriptStaff #instrument-specific }
1376 @node Repeat sign scripts
1377 @unnumberedsubsec Repeat sign scripts
1380 \include "script-chart.ly"
1381 \new RhythmicStaff { \scriptStaff #repeats }
1384 @node Ancient scripts
1385 @unnumberedsubsec Ancient scripts
1388 \include "script-chart.ly"
1389 \include "gregorian.ly"
1390 \new VaticanaStaff { \scriptStaffAncient #ancient }
1394 @node Percussion notes
1395 @appendixsec Percussion notes
1397 @lilypondfile[quote]{percussion-chart.ly}
1400 @node Technical glossary
1401 @appendixsec Technical glossary
1403 A glossary of the technical terms and concepts used internally in
1404 LilyPond. These terms may appear in the manuals, on mailing lists
1405 or in the source code.
1427 @unnumberedsubsec alist
1430 @cindex association list
1432 An association list or @strong{alist} for short is a Scheme pair
1433 which associates a value with a key: @w{@code{(key . value)}}. For
1434 example, in @file{scm/lily.scm}, the alist
1435 @w{@qq{type-p-name-alist}} associates certain type predicates
1436 (e.g.@tie{}@code{ly:music?}) with names (e.g.@tie{}@qq{music}) so
1437 that type-check failures can be reported with a console message that
1438 includes the name of the expected type predicate.
1441 @unnumberedsubsec callback
1445 A @strong{callback} is a routine, function or method whose reference is
1446 passed as an argument in a call to another routine, so allowing
1447 the called routine to invoke it. The technique enables a lower-
1448 level software layer to call a function defined in a higher
1449 layer. Callbacks are used extensively in LilyPond to permit
1450 user-level Scheme code to define how many low-level actions are
1455 @unnumberedsubsec closure
1458 @cindex simple closure
1460 In Scheme, a @strong{closure} is created when a function, usually
1461 a lambda expression, is passed as a variable. The closure contains
1462 the function's code plus references to the lexical bindings of the
1463 function's free variables (i.e. those variables used in the
1464 expression but defined outside it). When this function is applied
1465 to different arguments later, the free variable bindings that were
1466 captured in the closure are used to obtain the values of the free
1467 variables to be used in the calculation. One useful property of
1468 closures is the retention of internal variable values between
1469 invocations, so permitting state to be maintained.
1471 A @strong{simple closure} is a closure whose expression has no free
1472 variables and hence no free variable bindings.
1474 A simple closure is represented in LilyPond by a smob containing
1475 the expression and a method to apply the expression to a passed
1480 @unnumberedsubsec glyph
1486 A @strong{glyph} is a particular graphical representation of a typographic
1487 character, or a combination of two characters formating a ligature.
1488 A set of glyphs with a single style and shape comprise a font, and
1489 a set of fonts covering several styles and sizes comprise a typeface.
1494 @ref{Special characters}.
1498 @unnumberedsubsec grob
1501 @cindex layout objects
1502 @cindex graphical objects
1504 LilyPond objects which represent items of notation in the printed
1505 output such as note heads, stems, slurs, ties, fingering, clefs,
1506 etc are called @q{Layout objects}, often known as @q{GRaphical
1507 OBjects}, or @strong{grobs} for short. They are represented by
1508 instances of the @code{Grob} class.
1512 @rlearning{Objects and interfaces},
1513 @rlearning{Naming conventions of objects and properties},
1514 @rlearning{Properties of layout objects}.
1516 Internals Reference:
1517 @rinternals{grob-interface},
1518 @rinternals{All layout objects}.
1522 @unnumberedsubsec immutable
1524 @cindex immutable objects
1525 @cindex immutable properties
1526 @cindex shared properties
1528 An @strong{immutable} object is one whose state cannot be modified
1529 after creation, in contrast to a mutable object, which can be
1530 modified after creation.
1532 In LilyPond, immutable or shared properties define the default
1533 style and behavior of grobs. They are shared between many objects.
1534 In apparent contradiction to the name, they can be changed using
1535 @code{\override} and @code{\revert}.
1543 @unnumberedsubsec interface
1546 @cindex grob-interface
1547 @cindex graphical object interfaces
1549 Actions and properties which are common to a number of grobs are
1550 grouped together in an object called a @code{grob-interface}, or
1551 just @q{interface} for short.
1555 @rlearning{Objects and interfaces},
1556 @rlearning{Naming conventions of objects and properties},
1557 @rlearning{Properties found in interfaces}.
1560 @ref{Layout interfaces}.
1562 Internals Reference:
1563 @rinternals{Graphical Object Interfaces}.
1567 @unnumberedsubsec lexer
1572 A @strong{lexer} is a program which converts a sequence of
1573 characters into a sequence of tokens, a process called lexical
1574 analysis. The LilyPond lexer converts the stream obtained from an
1575 input @file{.ly} file into a tokenized stream more suited to the
1576 next stage of processing - parsing, for which see @ref{parser}.
1577 The LilyPond lexer is built with Flex from the lexer file
1578 @file{lily/lexer.ll} which contains the lexical rules. This file
1579 is part of the source code and is not included in the LilyPond
1580 binary installation.
1584 @unnumberedsubsec mutable
1586 @cindex mutable objects
1587 @cindex mutable properties
1589 A @strong{mutable} object is one whose state can be modified after
1590 creation, in contrast to an immutable object, whose state is fixed
1591 at the time of creation.
1593 In LilyPond, mutable properties contain values that are specific to
1594 one grob. Typically, lists of other objects or results from
1595 computations are stored in mutable properties.
1603 @unnumberedsubsec output-def
1607 An instance of the @code{Output-def} class contains the methods and
1608 data structures associated with an output block. Instances are
1609 created for midi, layout and paper blocks.
1613 @unnumberedsubsec parser
1617 @cindex LilyPond grammar
1618 @cindex grammar for LilyPond
1621 A @strong{parser} analyzes the sequence of tokens produced by a
1622 lexer to determine its grammatical structure, grouping the tokens
1623 progressively into larger groupings according to the rules of the
1624 grammar. If the sequence of tokens is valid the end product is a
1625 tree of tokens whose root is the grammar's start symbol. If this
1626 cannot be achieved the file is invalid and an appropriate error
1627 message is produced. The syntactic groupings and the rules for
1628 constructing the groupings from their parts for the LilyPond syntax
1629 are defined in @file{lily/parser.yy} and shown in Backus Normal Form
1630 (BNF) in @rcontrib{LilyPond grammar}. This file is used to build the
1631 parser during the program build by the parser generator, Bison. It is
1632 part of the source code and is not included in the LilyPond binary
1636 @node parser variable
1637 @unnumberedsubsec parser variable
1639 @cindex parser variable
1640 @cindex Scheme variable
1641 @cindex global variable
1642 @cindex afterGraceFraction
1645 @cindex output-count
1646 @cindex output-suffix
1647 @cindex partCombineListener
1649 @cindex toplevel-bookparts
1650 @cindex toplevel-scores
1651 @cindex showLastLength
1652 @cindex showFirstLength
1654 These are variables defined directly in Scheme. Their direct
1655 use by users is strongly discouraged, because their scoping
1656 semantics can be confusing.
1658 When the value of such a variable is changed in a @file{.ly} file,
1659 the change is global, and unless explicitly reverted, the new value
1660 will persist to the end of the file, affecting subsequent
1661 @code{\score} blocks as well as external files added with the
1662 @code{\include} command. This can lead to unintended consequences
1663 and in complex typesetting projects the consequent errors can be
1664 difficult to track down.
1666 LilyPond uses the following parser variables:
1669 @item afterGraceFraction
1674 @item partCombineListener
1676 @item toplevel-bookparts
1677 @item toplevel-scores
1678 @item showLastLength
1679 @item showFirstLength
1684 @unnumberedsubsec prob
1687 @cindex property object
1689 PRoperty OBjects, or @strong{probs} for short, are instances of
1690 the @code{Prob} class, a simple base class for objects which have
1691 mutable and immutable property alists and the methods to manipulate
1692 them. The @code{Music} and @code{Stream_event} classes derive from
1693 @code{Prob}. Instances of the @code{Prob} class are also created
1694 to hold the formatted content of system grobs and titling blocks
1698 @node simple closure
1699 @unnumberedsubsec simple closure
1705 @unnumberedsubsec smob
1708 @cindex Scheme object
1710 @strong{Smobs}, or ScheMe OBjects, are part of the mechanism used
1711 by Guile to export C and C++ objects to Scheme code. In LilyPond,
1712 smobs are created from C++ objects through macros. There are two
1713 types of smob objects: simple smobs, intended for simple immutable
1714 objects like numbers, and complex smobs, used for objects with
1715 identities. If you have access to the LilyPond sources, more
1716 information can be found in @file{lily/includes/smob.hh}.
1719 @unnumberedsubsec stencil
1723 An instance of the @strong{stencil} class holds the information
1724 required to print a typographical object. It is a simple smob
1725 containing a confining box, which defines the vertical and
1726 horizontal extents of the object, and a Scheme expression which
1727 will print the object when evaluated. Stencils may be combined
1728 to form more complex stencils defined by a tree of Scheme
1729 expressions formed from the Scheme expressions of the component
1732 The @code{stencil} property, which connects a grob to its stencil,
1733 is defined in the @code{grob-interface} interface.
1736 Internals Reference:
1737 @rinternals{grob-interface}.
1740 @node All context properties
1741 @appendixsec All context properties
1743 @include context-properties.tely
1746 @node Layout properties
1747 @appendixsec Layout properties
1749 @include layout-properties.tely
1752 @node Available music functions
1753 @appendixsec Available music functions
1755 @include identifiers.tely
1757 @node Context modification identifiers
1758 @appendixsec Context modification identifiers
1760 The following commands are defined for use as context modifications
1761 within a @code{\layout} or @code{\with} block.
1763 @include context-mod-identifiers.tely
1765 @node Predefined type predicates
1766 @appendixsec Predefined type predicates
1768 @include type-predicates.tely
1771 @node Scheme functions
1772 @appendixsec Scheme functions
1774 @include scheme-functions.tely