]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/notation/notation-appendices.itely
Doc: clean up @file{} entries
[lilypond.git] / Documentation / notation / notation-appendices.itely
index bce07b59df54e8f18e8dcdc151431f9fd7eeb504..0669a5933e35c637147f27b3eeb5cf3409d634b4 100644 (file)
@@ -4,32 +4,15 @@
     Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
 
     When revising a translation, copy the HEAD committish of the
-    version that you are working on.  See TRANSLATION for details.
+    version that you are working on.  For details, see the Contributors'
+    Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.12.0"
+@c \version "2.13.36"
 
 @node Notation manual tables
 @appendix Notation manual tables
 
-@c Please do not delete the following @ignore block.
-@ignore
-Note for editors and translators: In the following menu, two entries
-are needed to link to a pair of automatically generated sections.
-Please keep them and, if using emacs, do not run
-texinfo-all-menus-update without manually restoring them back. These
-menu entries are:
-
-* Text markup commands::
-* Text markup list commands::
-
-and they should go just after
-* Note head styles::
-
-and just before
-* List of articulations::
-@end ignore
-
 @menu
 * Chord name chart::
 * Common chord modifiers::
@@ -46,6 +29,7 @@ and just before
 * All context properties::
 * Layout properties::
 * Available music functions::
+* Predefined type predicates::
 * Scheme functions::
 @end menu
 
@@ -212,11 +196,11 @@ Minor-major seventh
 @tab
 Minor triad, major seventh
 @tab
-@code{maj7.5-}
+@code{m7+}
 @tab
 @lilypond[line-width=3\cm,noragged-right, notime]
 \chordmode {
-  c1:maj7.5-
+  c1:m7+
 }
 @end lilypond
 
@@ -402,21 +386,54 @@ Perfect fourth, perfect fifth
 }
 @end lilypond
 
+@item
+Power chord (two-voiced)
+@tab
+Perfect fifth
+@tab
+@code{1.5}
+@tab
+@lilypond[line-width=3\cm,noragged-right, notime]
+\chordmode {
+  \powerChords
+  c1:1.5
+}
+@end lilypond
+
+@item
+Power chord (three-voiced)
+@tab
+Perfect fifth, octave
+@tab
+@code{1.5.8}
+@tab
+@lilypond[line-width=3\cm,noragged-right, notime]
+\chordmode {
+  \powerChords
+  c1:1.5.8
+}
+@end lilypond
 
 @end multitable
 
 @node Predefined fretboard diagrams
 @appendixsec Predefined fretboard diagrams
 
-The chart below shows the predefined fretboard diagrams.
+The chart below shows the predefined fretboard diagrams for guitar.
 
 @lilypondfile{display-predefined-fretboards.ly}
 
+The chart below shows the predefined fretboard diagrams for ukulele.
+
+@lilypondfile{display-predefined-ukulele-fretboards.ly}
+
 @node MIDI instruments
 @appendixsec MIDI instruments
 
 The following is a list of names that can be used for the
-@code{midiInstrument} property.
+@code{midiInstrument} property.  The order of the instruments
+below, starting in the left-hand column moving down, corresponds
+to the General MIDI Standard's 128 Program Numbers.
 
 @example
 acoustic grand            contrabass           lead 7 (fifths)
@@ -845,45 +862,142 @@ The following styles may be used for note heads.
 
 @lilypondfile[noindent]{note-head-style.ly}
 
+
+@node Text markup commands
+@appendixsec Text markup commands
+
 @include markup-commands.tely
 
+
+@node Text markup list commands
+@appendixsec Text markup list commands
+
+The following commands can all be used with @code{\markuplines}:
+
 @include markup-list-commands.tely
 
+
 @node List of articulations
 @appendixsec List of articulations
 
+
 @cindex accent
-@cindex marcato
-@cindex staccatissimo
+@cindex accentus
+@cindex circulus
+@cindex coda
+@cindex downbow
+@cindex downmordent
+@cindex downprall
 @cindex espressivo
 @cindex fermata
-@cindex stopped
-@cindex staccato
-@cindex portato
-@cindex tenuto
-@cindex upbow
-@cindex downbow
-@cindex foot marks
-@cindex organ pedal marks
-@cindex turn
-@cindex open
-@cindex stopped
 @cindex flageolet
-@cindex reverseturn
-@cindex trill
-@cindex prall
+@cindex halfopen
+@cindex ictus
+@cindex lheel
+@cindex lineprall
+@cindex longfermata
+@cindex ltoe
+@cindex marcato
 @cindex mordent
-@cindex prallprall
+@cindex open
+@cindex portato
+@cindex prall
+@cindex pralldown
 @cindex prallmordent
-@cindex prall, up
-@cindex prall, down
-@cindex thumb marking
+@cindex prallprall
+@cindex prallup
+@cindex reverseturn
+@cindex rheel
+@cindex rtoe
 @cindex segno
-@cindex coda
+@cindex semicirculus
+@cindex shortfermata
+@cindex signumcongruentiae
+@cindex snappizzicato
+@cindex staccatissimo
+@cindex staccato
+@cindex stopped
+@cindex tenuto
+@cindex thumb
+@cindex trill
+@cindex turn
+@cindex upbow
+@cindex upmordent
+@cindex upprall
 @cindex varcoda
+@cindex verylongfermata
+
+The following scripts are available in the Feta font and may be
+attached to notes (eg. @samp{c\accent}).
+
+@c Articulations and ornamentations
+@c Fingering instructions (for "thumb")
+@c Common notation for unfretted strings
+@c   Bowing indications
+@c   Harmonics
+@c   Snap (Bartók) pizzicato
+@c Custom percussion staves (for "halfopen" -- not yet funindexed)
+@c References for wind instruments (for "open"/"stopped" -- not yet funindexed)
+
 
+@menu
+* Articulation scripts::
+* Ornament scripts::
+* Fermata scripts::
+* Instrument-specific scripts::
+* Repeat sign scripts::
+* Ancient scripts::
+@end menu
+
+
+@node Articulation scripts
+@unnumberedsubsec Articulation scripts
+
+@lilypond[quote]
+\include "script-chart.ly"
+\new RhythmicStaff { \scriptStaff #articulations }
+@end lilypond
+
+@node Ornament scripts
+@unnumberedsubsec Ornament scripts
+
+@lilypond[quote]
+\include "script-chart.ly"
+\new RhythmicStaff { \scriptStaff #ornaments }
+@end lilypond
+
+@node Fermata scripts
+@unnumberedsubsec Fermata scripts
 
-@lilypondfile[quote,texidoc]{script-chart.ly}
+@lilypond[quote]
+\include "script-chart.ly"
+\new RhythmicStaff { \scriptStaff #fermatas }
+@end lilypond
+
+@node Instrument-specific scripts
+@unnumberedsubsec Instrument-specific scripts
+
+@lilypond[quote]
+\include "script-chart.ly"
+\new RhythmicStaff { \scriptStaff #instrument-specific }
+@end lilypond
+
+@node Repeat sign scripts
+@unnumberedsubsec Repeat sign scripts
+
+@lilypond[quote]
+\include "script-chart.ly"
+\new RhythmicStaff { \scriptStaff #repeats }
+@end lilypond
+
+@node Ancient scripts
+@unnumberedsubsec Ancient scripts
+
+@lilypond[quote]
+\include "script-chart.ly"
+\include "gregorian.ly"
+\new VaticanaStaff { \scriptStaffAncient #ancient }
+@end lilypond
 
 
 @node Percussion notes
@@ -895,20 +1009,25 @@ The following styles may be used for note heads.
 @node Technical glossary
 @appendixsec Technical glossary
 
-A glossary of the technical terms and concepts used internally.
+A glossary of the technical terms and concepts used internally in
+LilyPond.  These terms may appear in the manuals, on mailing lists
+or in the source code.
 
 @menu
 * alist::
 * callback::
+* closure::
 * glyph::
 * grob::
+* immutable::
 * interface::
 * lexer::
+* mutable::
 * output-def::
 * parser::
 * parser variable::
 * prob::
-* simple-closure::
+* simple closure::
 * smob::
 * stencil::
 @end menu
@@ -921,7 +1040,7 @@ A glossary of the technical terms and concepts used internally.
 
 An association list or @strong{alist} for short is a Scheme pair
 which associates a value with a key: @w{@code{(key . value)}}.  For
-example, in @file{scm/lily.scm}, the alist
+example, in @file{scm/@/lily@/.scm}, the alist
 @w{@qq{type-p-name-alist}} associates certain type predicates
 (e.g.@tie{}@code{ly:music?}) with names (e.g.@tie{}@qq{music}) so
 that type-check failures can be reported with a console message that
@@ -940,6 +1059,32 @@ layer.  Callbacks are used extensively in LilyPond to permit
 user-level Scheme code to define how many low-level actions are
 performed.
 
+
+@node closure
+@unnumberedsubsec closure
+
+@cindex closure
+@cindex simple closure
+
+In Scheme, a @strong{closure} is created when a function, usually
+a lambda expression, is passed as a variable.  The closure contains
+the function's code plus references to the lexical bindings of the
+function's free variables (i.e. those variables used in the
+expression but defined outside it).  When this function is applied
+to different arguments later, the free variable bindings that were
+captured in the closure are used to obtain the values of the free
+variables to be used in the calculation.  One useful property of
+closures is the retention of internal variable values between
+invocations, so permitting state to be maintained.
+
+A @strong{simple closure} is a closure whose expression has no free
+variables and hence no free variable bindings.
+
+A simple closure is represented in LilyPond by a smob containing
+the expression and a method to apply the expression to a passed
+list of arguments.
+
+
 @node glyph
 @unnumberedsubsec glyph
 
@@ -969,8 +1114,8 @@ Notation Reference:
 LilyPond objects which represent items of notation in the printed
 output such as note heads, stems, slurs, ties, fingering, clefs,
 etc are called @q{Layout objects}, often known as @q{GRaphical
-OBjects}, or @strong{grobs} for short.
-
+OBjects}, or @strong{grobs} for short.  They are represented by
+instances of the @code{Grob} class.
 
 @seealso
 Learning Manual:
@@ -979,9 +1124,30 @@ Learning Manual:
 @rlearning{Properties of layout objects}.
 
 Internals Reference:
+@rinternals{grob-interface},
 @rinternals{All layout objects}.
 
 
+@node immutable
+@unnumberedsubsec immutable
+
+@cindex immutable objects
+@cindex immutable properties
+@cindex shared properties
+
+An @strong{immutable} object is one whose state cannot be modified
+after creation, in contrast to a mutable object, which can be
+modified after creation.
+
+In LilyPond, immutable or shared properties define the default
+style and behavior of grobs.  They are shared between many objects.
+In apparent contradiction to the name, they can be changed using
+@code{\override} and @code{\revert}.
+
+@seealso
+Notation Reference:
+@ref{mutable}.
+
 @node interface
 @unnumberedsubsec interface
 
@@ -993,7 +1159,6 @@ Actions and properties which are common to a number of grobs are
 grouped together in an object called a @code{grob-interface}, or
 just @q{interface} for short.
 
-
 @seealso
 Learning Manual:
 @rlearning{Objects and interfaces},
@@ -1016,13 +1181,32 @@ Internals Reference:
 A @strong{lexer} is a program which converts a sequence of
 characters into a sequence of tokens, a process called lexical
 analysis.  The LilyPond lexer converts the stream obtained from an
-input @file{.ly} file into a tokenized stream more suited to the
+input @file{@/.ly} file into a tokenized stream more suited to the
 next stage of processing - parsing, for which see @ref{parser}.
 The LilyPond lexer is built with Flex from the lexer file
-@file{lily/lexer.ll} which contains the lexical rules.  This file
+@file{lily/@/lexer@/.ll} which contains the lexical rules.  This file
 is part of the source code and is not included in the LilyPond
 binary installation.
 
+
+@node mutable
+@unnumberedsubsec mutable
+
+@cindex mutable objects
+@cindex mutable properties
+
+A @strong{mutable} object is one whose state can be modified after
+creation, in contrast to an immutable object, whose state is fixed
+at the time of creation.
+
+In LilyPond, mutable properties contain values that are specific to
+one grob.  Typically, lists of other objects or results from
+computations are stored in mutable properties.
+
+@seealso
+Notation Reference:
+@ref{immutable}.
+
 @node output-def
 @unnumberedsubsec output-def
 
@@ -1032,6 +1216,7 @@ An instance of the @code{Output-def} class contains the methods and
 data structures associated with an output block.  Instances are
 created for midi, layout and paper blocks.
 
+
 @node parser
 @unnumberedsubsec parser
 
@@ -1048,20 +1233,37 @@ tree of tokens whose root is the grammar's start symbol.  If this
 cannot be achieved the file is invalid and an appropriate error
 message is produced.  The syntactic groupings and the rules for
 constructing the groupings from their parts for the LilyPond syntax
-are defined in @file{lily/parser.yy} and shown in Backus Normal Form
+are defined in @file{lily/@/parser@/.yy} and shown in Backus Normal Form
 (BNF) in @ref{LilyPond grammar}.  This file is used to build the
 parser during the program build by the parser generator, Bison.  It
 is part of the source code and is not included in the LilyPond
 binary installation.
 
+
 @node parser variable
 @unnumberedsubsec parser variable
 
+@cindex parser variable
+@cindex Scheme variable
+@cindex global variable
+@cindex afterGraceFraction
+@cindex musicQuotes
+@cindex mode
+@cindex output-count
+@cindex output-suffix
+@cindex parseStringResult
+@cindex partCombineListener
+@cindex pitchnames
+@cindex toplevel-bookparts
+@cindex toplevel-scores
+@cindex showLastLength
+@cindex showFirstLength
+
 These are variables defined directly in Scheme.  Their direct
 use by users is strongly discouraged, because their scoping
 semantics can be confusing.
 
-When the value of such a variable is changed in a @code{.ly} file,
+When the value of such a variable is changed in a @file{@/.ly} file,
 the change is global, and unless explicitly reverted, the new value
 will persist to the end of the file, affecting subsequent
 @code{\score} blocks as well as external files added with the
@@ -1086,21 +1288,62 @@ LilyPond uses the following parser variables:
 @item showFirstLength
 @end itemize
 
+
 @node prob
 @unnumberedsubsec prob
-TODO
 
-@node simple-closure
-@unnumberedsubsec simple-closure
-TODO
+@cindex prob
+@cindex property object
+
+PRoperty OBjects, or @strong{probs} for short, are instances of
+the @code{Prob} class, a simple base class for objects which have
+mutable and immutable property alists and the methods to manipulate
+them.  The @code{Music} and @code{Stream_event} classes derive from
+@code{Prob}.  Instances of the @code{Prob} class are also created
+to hold the formatted content of system grobs and titling blocks
+during page layout.
+
+
+@node simple closure
+@unnumberedsubsec simple closure
+
+See @ref{closure}.
+
 
 @node smob
 @unnumberedsubsec smob
-TODO
+
+@cindex smob
+@cindex Scheme object
+
+@strong{Smobs}, or ScheMe OBjects, are part of the mechanism used
+by Guile to export C and C++ objects to Scheme code.  In LilyPond,
+smobs are created from C++ objects through macros.  There are two
+types of smob objects: simple smobs, intended for simple immutable
+objects like numbers, and complex smobs, used for objects with
+identities.  If you have access to the LilyPond sources, more
+information can be found in @file{lily/@/includes/@/smob@/.hh}.
 
 @node stencil
 @unnumberedsubsec stencil
-TODO
+
+@cindex stencil
+
+An instance of the @strong{stencil} class holds the information
+required to print a typographical object.  It is a simple smob
+containing a confining box, which defines the vertical and
+horizontal extents of the object, and a Scheme expression which
+will print the object when evaluated.  Stencils may be combined
+to form more complex stencils defined by a tree of Scheme
+expressions formed from the Scheme expressions of the component
+stencils.
+
+The @code{stencil} property, which connects a grob to its stencil,
+is defined in the @code{grob-interface} interface.
+
+@seealso
+Internals Reference:
+@rinternals{grob-interface}.
 
 
 @node All context properties
@@ -1121,6 +1364,12 @@ TODO
 @include identifiers.tely
 
 
+@node Predefined type predicates
+@appendixsec Predefined type predicates
+
+@include type-predicates.tely
+
+
 @node Scheme functions
 @appendixsec Scheme functions