]> git.donarmstrong.com Git - lilypond.git/commitdiff
patch::: 1.3.126.jcn3
authorJan Nieuwenhuizen <janneke@gnu.org>
Wed, 31 Jan 2001 16:16:52 +0000 (17:16 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Wed, 31 Jan 2001 16:16:52 +0000 (17:16 +0100)
1.3.126.jcn2
============

* Grand Refman restructuring, featuring outline mode.

* Fixed missing menus and cross references.

45 files changed:
CHANGES
Documentation/user/internals.itely
Documentation/user/macros.itexi
Documentation/user/properties.itely
Documentation/user/refman.itely
Documentation/user/tricks.itely
VERSION
input/bugs/arpeggio-collision.ly
input/bugs/auto-beam-tuplets.ly
input/bugs/auto-beam.ly
input/bugs/barline.ly
input/bugs/broken-tuplet.ly [new file with mode: 0644]
input/bugs/coda-kludge.ly
input/bugs/die-staff.ly
input/bugs/different-time.ly
input/bugs/dots.ly
input/bugs/dynamic-switch.ly
input/bugs/empty.ly
input/bugs/no-bars.ly
input/bugs/prefatory-spacing.ly
input/bugs/slur-dx.ly
input/bugs/spanners.ly
input/bugs/steep-beam.ly
input/bugs/text-kerning.ly
input/bugs/ties.ly
input/bugs/volta.ly
input/bugs/voltastart.ly
input/regression/allfontstyle.ly [new file with mode: 0644]
input/regression/arpeggio-collision.ly [new file with mode: 0644]
input/regression/volta-broken-left-edge.ly [new file with mode: 0644]
input/test/allfontstyle.ly
lily/all-font-metrics.cc
lily/include/spring.hh
lily/spacing-spanner.cc
lily/tuplet-spanner.cc
ly/generic-paper.ly
ly/midi.ly
ly/script.ly
make/mutopia-targets.make
mutopia/J.S.Bach/Solo-Cello-Suites/GNUmakefile
scm/basic-properties.scm
scm/lily.scm
scm/paper.scm
scm/translator-description.scm
scm/translator-property-description.scm

diff --git a/CHANGES b/CHANGES
index 331585b72dbde30bed60804bb0d659b72c112985..dcdd1c8539ced771a7cec331692ec8d2c0aeee31 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,10 @@
+1.3.126.jcn2
+============
+
+* Grand Refman restructuring, featuring outline mode.
+
+* Fixed missing menus and cross references.
+
 1.3.126.jcn1
 ============
 
 1.3.126.jcn1
 ============
 
index 18fd638dcaaa6bf5fe30cfdb856c58a2780624e5..aaf03d8da616978d53d4f3bf0ee0f4961d93cc7a 100644 (file)
@@ -1,15 +1,27 @@
+@c -*-texinfo-*-
+@c Note:
+@c
+@c A menu is needed before every deeper *section nesting of @nodes
+@c Run M-x texinfo-all-menus-update
+@c to automagically fill in these menus
+@c before saving changes
+
+
 @node Internals
 @chapter Internals
 
 @menu
 @node Internals
 @chapter Internals
 
 @menu
-* Conversion stages::              Lilypond is a multi-pass program.
-* Moment:: 
-* Grobs::                          Graphical object  
-* Engraver::
-* Music_iterator::
-* Music::
-* Molecules::                       Molecules are stand-alone descriptions of output
-* Font metrics::                    Font metrics
+* Conversion stages::          Lilypond is a multi-pass program.
+* Moment::                     
+* Grobs::                      Graphical object  
+* Duration::                   
+* Pitch data type::            
+* Engraver::                   
+* Music_iterator::             
+* Music::                      
+* Molecules::                  Molecules are stand-alone descriptions of output
+* Font metrics::               Font metrics
+* Miscellaneous Scheme functions::  
 @end menu
 
 @node Conversion stages
 @end menu
 
 @node Conversion stages
@@ -101,12 +113,12 @@ them involve Grobs in some form, this section explains some details of
 how grobs work.
 
 @menu
 how grobs work.
 
 @menu
-* What is a grob?::
-* Callbacks::
-* Setting grob properties::
-* Items and Spanners::
-* Pointer substitution::
-* Grob Scheme functions::
+* What is a grob?::            
+* Callbacks::                  
+* Setting grob properties::    
+* Items and Spanners::         
+* Pointer substitution::       
+* Grob Scheme functions::      
 @end menu
 
 @node What is a grob?
 @end menu
 
 @node What is a grob?
@@ -359,6 +371,8 @@ will return @code{'()} (end-of-list) if @var{g} doesn't have @var{sym} set.
 @node Duration
 @section Duration
 
 @node Duration
 @section Duration
 
+@menu
+@end menu
 @defun make-duration length dotcount
 
 @var{length} is the negative logarithm (base 2) of the duration:
 @defun make-duration length dotcount
 
 @var{length} is the negative logarithm (base 2) of the duration:
index 2fdd232704ce9adf553fd36f259eea12b15e2155..9ef47bbbecc73a400d52e6bb9b241c1be4b3b89a 100644 (file)
 
 @end macro
 @end ifnotinfo
 
 @end macro
 @end ifnotinfo
+
+
+@ignore
+
+@c Huh, do outline mode and texinfo really fight eachother?
+@c Outline can only use spaces to indent topic headers
+@c (or bullets, but then topics can't start with `@c').
+@c Texinfo can't have spaces in macro names.
+
+@macro c_ {word}
+\word\
+@node \word\
+@section \word\
+@end macro
+
+@macro c__ {word}
+\word\
+@node \word\
+@subsection \word\
+@end macro
+
+@macro c___ {word}
+\word\
+@node \word\
+@unnumberedsubsubsection \word\
+@end macro
+
+@end ignore
+
+@macro c_ {word}
+@end macro
index 97ba731a4178bf65ed59207e422101996e72d558..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,27 +0,0 @@
-@node Properties
-@section Properties
-
-Properties are Scheme values. Most of them are in the generated documentation, but some MIDI properties are not. Here is their documentation
-
-@macro propertytype{t}
- (\t\)
-@end macro
-
-
-@table @samp
-@cindex @code{midiInstrument}
-  @item @code{midiInstrument} @propertytype{string}
-    Sets the instrument for MIDI output.  If this property is not set
-    then LilyPond will use the @code{instrument} property.  This must
-    be set to one of the strings on the list of MIDI instruments that
-    appears in section @ref{midilist}.  If you use a string which
-    is not listed, LilyPond will silently substitute piano.
-@cindex @code{transposing}
-
-  @item @code{transposing} @propertytype{integer}
-    Transpose the MIDI output.  Set this property to the number of
-    half-steps to transpose by.
-
-@end table
-
-
index 3806e59c091ce14c2053a2d1f819d9c9ea76a626..ea338517a1b0256f555108d0c32ef8a247a15958 100644 (file)
@@ -1,53 +1,34 @@
-@c -*-texinfo-*-
-
+@c Note:
+@c
+@c A menu is needed before every deeper *section nesting of @nodes
+@c Run M-x texinfo-all-menus-update
+@c to automagically fill in these menus
+@c before saving changes
+
+@c_{Reference Manual}
 @node Reference Manual
 @chapter Reference Manual
 @node Reference Manual
 @chapter Reference Manual
-
 @menu
 @menu
-* Overview::                       Overview
-* Top level::                      Top level
-* Pitch names::                    Pitch names
-* Lexical conventions::            Lexical conventions
-* Other languages::                Note names in various languages
-* Lexical modes::                          modes
-* Types::                          Types
-* Assignments::                    Assignments 
-* Music expressions::              Music expressions
-* Atomic music expressions::       Atomic music expressions
-* Note specification::             notedesc
-* barlines::                       barlines
-* Manual beams::                   Manual beam
-* stem tremolo::                   tremolo
-* Compound music expressions::     Compound music expressions
-* relative::                       relative
-* Repeats::                       Repeats      
-* transpose::                      transpose
-* Ambiguities::                    Ambiguities
-* Notation conversion specifics::  Notation conversion specifics
-* Automatic Beaming::              Automatic Beaming
-* Chord Names::                    Chord Names
-* lyricprint::                     lyricprint
-* Notation Contexts::              Notation Contexts
-* Properties::                     Changing formatting
-* Page layout::                    Layout
-* contextdefs::                    contextdefs
-* Sound output::                   Sound output
-* midilist::                       midilist
-* Pre-defined Identifiers::        Pre-defined Identifiers
-* Point and click::                Quik edit using Point and Click
-* Interpretation contexts:(lilypond-internals)LilyPond interpretation contexts.
-* Engravers:(lilypond-internals)LilyPond engravers.
-* Backend:(lilypond-internals)LilyPond backend.
+* Overview::                    
+* Music constructs::            
+* Modifying music::             
+* Note entry::                  
+* Note specification::          
+* Music notation::              
+* Lyrics entry::                
+* Chord entry::                 
+* Page layout::                 
+* Sound::                       
+* Music entry::                 
+* Engravers::                   
+* Lexer innards::               
+* Unsorted::                    
 @end menu
 
 @end menu
 
-
-
+@c_ {Overview}
 @node Overview
 @section Overview
 
 @node Overview
 @section Overview
 
-
-[todo: pedals]
-
 This document
 describes the the GNU LilyPond input format This format represents a
 piece of music in an elegant way, but contains enough information for
 This document
 describes the the GNU LilyPond input format This format represents a
 piece of music in an elegant way, but contains enough information for
@@ -71,8 +52,6 @@ symbols and their placement is @emph{generated} from a high-level musical
 description.  In other words,  LilyPond would be best
 described by `music compiler' or `music to notation compiler'.
 
 description.  In other words,  LilyPond would be best
 described by `music compiler' or `music to notation compiler'.
 
-
-
 LilyPond input can be classified  into three types:
 @itemize @bullet
   @item musical expressions: a musical expression is some combination of
 LilyPond input can be classified  into three types:
 @itemize @bullet
   @item musical expressions: a musical expression is some combination of
@@ -84,482 +63,605 @@ expressions into performances (MIDI) or graphics (eg. PostScript).
 can enter and edit them in manageable chunks.
 @end itemize
 
 can enter and edit them in manageable chunks.
 @end itemize
 
-@node Top level
-@section Top level
 
 
-This section describes what you may enter at top level.
+@c_ {Music constructs}
+@node Music constructs
+@section Music constructs
+@cindex Music constructs
+@menu
+* Music expressions::           
+* Sequential music::            
+* Simultanious music::          
+* Compound music expressions::  
+* Grace music::                 
+* Explicit atomic music::       
+@end menu
 
 
+@c_  {Music expressions}
+@node Music expressions
+@subsection Music expressions
 
 
-@unnumberedsubsec Score definition
-@cindex score definition
+@cindex music expressions
 
 
-The output is generated combining a music expression with an output
-definition.  A score block has the following syntax:
+Music in LilyPond is entered as a music expression.  Notes, rests,
+lyric syllables are music expressions (the atomic
+expressions),
+@cindex atomic music expressions
+and you can combine music expressions to form new ones.  This example
+forms a compound expressions out of the quarter @code{c} note and a
+@code{d} note:
+
+@example 
+\sequential @{ c4 d4 @} 
+@end example 
+
+The meaning of this compound expression is to play the @code{c}
+first, and then the @code{d} (as opposed to playing them
+simultaneously, for instance).
+
+Atomic music expression are discussed in
+subsection @ref{Atomic music expressions}.  Compound music expressions are
+discussed in subsection @ref{Compound music expressions}.
+
+
+@c_  {Sequential music}
+@node Sequential music
+@subsection Sequential music
+@cindex Sequential music
+@cindex @code{\sequential}
+@cindex sequential music
 
 @example
 
 @example
-  \score @{ @var{musicexpr} @var{outputdefs} @}
+  \sequential @code{@{} @var{musicexprlist} @code{@}}
 @end example
 
 @end example
 
-@var{outputdefs} are zero or more output definitions.  If no output
-definition is supplied, the default @code{\paper} block will be added.
+This means that list should be played or written in sequence, i.e.,
+the second after the first, the third after the second.  The duration
+of sequential music is the the sum of the durations of the elements. 
+There is a shorthand, which leaves out the keyword:
 
 
-@unnumberedsubsec Header definition
-@cindex headers
+@example
+@cindex @code{<}
+@cindex @code{>}
 
 
-@cindex @code{\header}
+  @code{@{} @var{musicexprlist} @code{@}}
+@end example
 
 
-The syntax is
+@c_  {Simultanious music}
+@node Simultanious music
+@subsection Simultanious music
+@cindex Simultanious music
+@cindex @code{\simultaneous}
 
 @example
 
 @example
-  \header @{ @var{key1} = @var{val1};
-@cindex @code{ly2dvi}
-             @var{key2} = @var{val2}; @dots{} @}
+  \simultaneous @code{@{} @var{musicexprlist} @code{@}}
 @end example
 
 @end example
 
+It constructs a music expression where all of its arguments start at
+the same moment.  The duration is the maximum of the durations of the
+elements.  The following shorthand is a common idiom:
 
 
-A header describes the file's contents.  It can also appear in a
-@code{\score} block.  Tools like @code{ly2dvi} can use this
-information for generating titles.  Key values that are used by
-@code{ly2dvi} are: title, subtitle, composer, opus, poet, instrument,
-metre, arranger, piece and tagline.
-
-It is customary to put the @code{\header} at the top of the file.
+@example
+  @code{<} @var{musicexprlist} @code{>}
+@end example
 
 
-@unnumberedsubsec Default output
+If you try to use a chord as the first thing in your score, you might
+get multiple staffs instead of a chord.
 
 
-A @code{\midi} or @code{\paper} block at top-level sets the default
-paper block for all scores that lack an explicit paper block.
+@lilypond[verbatim,center]
+  \score {
+    \notes <c''4 e''>
+    \paper {
+      linewidth = -1.;
+    }
+  }
+@end lilypond
 
 
-@unnumberedsubsec Scheme statements
+This happens because the chord is interpreted by a score context.
+Each time a note is encountered a default Voice context (along with a
+Staff context) is created.  The solution is to explicitly instantiate
+a Voice context:
 
 
-Scheme statements maybe issued to produce interesting side-effects. 
+@lilypond[verbatim,center]
+  \score {
+    \notes\context Voice <c''4 e''>
+    \paper {
+      linewidth = -1.;
+    }
+  }
+@end lilypond
 
 
+@c_  {Compound music expressions}
+@node Compound music expressions
+@subsection Compound music expressions
 
 
-@node Pitch names
-@section Pitch names
+@cindex Compound music expressions
 
 
+Music expressions are compound data structures.  You can nest music
+expressions any way you like.  This simple example shows how three
+chords can be expressed in two different ways:
 
 
-@unnumberedsubsec Pitch name definition
-@cindex pitch names
+@lilypond[fragment,verbatim,center]
+  \notes \context Staff {
+    <a c'> <b  d' > <c' e'>
+    < { a b  c' } { c' d' e' } >
+  }
 
 
-@cindex note names
-@cindex chord modifier names
+@end lilypond
 
 
-Note names and chord modifiers can be customised for nationalities.
-languages and conventions.  The syntax is as follows.
-@cindex @code{\pitchnames}
-@cindex @code{\chordmodifiers}
+@cindex @code{\context}
+@cindex context selection
 
 @example
 
 @example
-   \pitchnames @var{scheme-alist}
-   \chordmodifiers @var{scheme-alist}
+  \context @var{contexttype} [= @var{contextname}] @var{musicexpr}
 @end example
 
 @end example
 
-See @file{ly/nederlands.ly} and @file{ly/chord-modifiers.ly} for
-specific examples how to do this.  tables can be tailored specified
-using. Some national note names have been provided, see
-section @ref{Other languages}.
-A @code{\paper} block at top level sets the default paper block.  A
-@code{\midi} block at top level works similarly.
+Interpret @var{musicexpr} within a context of type @var{contexttype}. 
+If the context does not exist, it will be created.  The new context
+can optionally be given a name.  
 
 
-@unnumberedsubsec Assignments
-@cindex assignments
-@cindex @code{#}
 
 
-Identifier assignments may appear at top level.  @ref{Assignments}
+@c_  {Grace music} <-> Grace notes
+@node Grace music
+@subsection Grace music
+@cindex Grace music
+@cindex @code{\grace}
+@cindex ornaments
+@cindex grace notes
+@cindex @code{graceAlignPosition}
 
 
+@example
+  \grace @var{musicexpr}
+@end example
 
 
-@node Lexical conventions
-@section Lexical conventions
+A grace note expression has duration 0; the next real note is
+assumed to be the main note.
 
 
-@cindex lexical conventions
+You cannot have the grace note after the main note, in terms of
+duration, and main notes, but you can typeset the grace notes to the
+right of the main note using the property
+@code{graceAlignPosition}.
+@cindex @code{flagStyle}
 
 
+When grace music is interpreted, a score-within-a-score is set up:
+@var{musicexpr} has its own time bookkeeping, and you could (for
+example) have a separate time signature within grace notes.  While in
+this score-within-a-score, you can create notes, beams, slurs, etc.
+Unbeamed eighth notes and shorter by default have a slash through the
+stem.  This behavior can be controlled with the
+@code{flagStyle} property.
 
 
-@unnumberedsubsec Comments
+@quotation
+@lilypond[fragment,verbatim]
+\relative c'' {
+  \grace c8 c4 \grace { [c16 c16] } c4
+  \grace { \property Grace.flagStyle = "" c16 } c4
+}
 
 
-@cindex comment
-@cindex @code{%}
+@end lilypond
+@end quotation
+@cindex @code{\grace}
 
 
+At present, nesting @code{\grace} notes is not supported. The following
+may cause run-time errors:
+@example
+  @code{\grace @{ \grace c32 c16 @} c4}
+@end example
+Since the meaning of such a construct is unclear, we don't consider
+this a loss.  Similarly, juxtaposing two @code{\grace} sections is
+syntactically valid, but makes no sense and may cause runtime errors.
 
 
-A one line comment is introduced by a @code{%} character. 
-Block comments are started by @code{%@{} and ended by `@code{%@}}'. 
-They cannot be nested.
+Ending a staff or score with grace notes may also generate a run-time
+error, since there will be no main note to attach the grace notes to.
 
 
-@unnumberedsubsec Scheme
+The present implementation is not robust and generally kludgy. We expect
+it to change after LilyPond 1.4
 
 
 
 
+@c_  {Explicit atomic music}
+@node Explicit atomic music
+@subsection Explicit atomic music
+@cindex Explicit atomic music
 
 
 
 
-@cindex Scheme
-@cindex GUILE
-@cindex Scheme, in-line code
+@cindex pitch
 
 
+The syntax for pitch specification is
 
 
-LilyPond contains a Scheme interpreter (the GUILE library) for
-internal use. In some places Scheme expressions also form valid syntax:
-whereever it is allowed,
-@example
-  #@var{scheme}
-@end example
-evaluates the specified Scheme code. If this is used at toplevel, then
-the result is discarded. Example:
+@cindex @code{\pitch}
 @example
 @example
-  \property Staff.TestObject \override #'foobar =  #(+ 1 2)
+  \pitch @var{scmpitch}
 @end example
 
 @end example
 
-@code{\override} expects two Scheme expressions, so there are two Scheme
-expressions. The first one is a symbol (@code{foobar}), the second one
-an integer (namely, 3).
-
-Scheme is a full-blown programming language, and a full discussion is
-outside the scope of this document. Interested readers are referred to
-the website @uref{http://www.schemers.org/} for more information on
-Scheme.
-
-@unnumberedsubsec Keywords
-@cindex keyword
+@var{scmpitch} is a pitch scheme object, see @ref{Pitch}.
 
 
+In Note and Chord mode, pitches may be designated by names.  See
+section @ref{Other languages} for pitch names in different languages.
 
 
-Keywords start with a backslash, followed by a number of lower case
-alphabetic characters.  These are all the keywords.
+@cindex duration
+@cindex @code{\duration}
 
 
+The syntax for duration specification is
 @example
 @example
-apply arpeggio autochange spanrequest commandspanrequest
-simultaneous sequential accepts alternative bar breathe
-char chordmodifiers chords clef cm consists consistsend
-context denies duration dynamicscript elementdescriptions
-font grace header in lyrics key mark pitch
-time times midi mm name pitchnames notes outputproperty
-override set revert partial paper penalty property pt
-relative remove repeat addlyrics partcombine score
-script stylesheet skip textscript tempo translator
-transpose type
+ \duration @var{scmduration}
 @end example
 
 @end example
 
-@unnumberedsubsec Integers
+In Note, Chord, and Lyrics mode, durations may be designated by
+numbers and dots.  
 
 
-@cindex integers
-@cindex @code{+}
-@cindex @code{-}
-@cindex @code{*}
-@cindex @code{/}
 
 
-Formed from an optional minus sign followed by digits.  Arithmetic
-operations cannot be done with integers, and integers cannot be mixed
-with reals.
 
 
-@unnumberedsubsec Reals
-@cindex real numbers
 
 
+@c_ {Modifying music}
+@node Modifying music
+@section Modifying music
+@cindex Modifying music
+@menu
+* Relative::                    
+* Transpose::                   
+* Repeat::                      
+* Times ::                      
+* Apply::                       
+* Transform::                   
+@end menu
+@c_  {Relative}
+@node Relative
+@subsection Relative
+@cindex Relative
+@cindex relative octave specification
 
 
+It is easy to get confused by octave changing marks and accidentally
+putting a pitch in the wrong octave.  A much better way of entering a
+note's octave is `the relative octave' mode.
 
 
+@cindex @code{\relative}
+@example
+  \relative @var{startpitch} @var{musicexpr}
+@end example
 
 
+The octave of notes that appear in @var{musicexpr} are calculated as
+follows: If no octave changing marks are used, the basic interval
+between this and the last note is always taken to be a fourth or
+less.@footnote{The interval is determined without regarding
+accidentals.  A @code{fisis} following a @code{ceses} will be put above
+the @code{ceses}.}  The octave changing marks @code{'} and @code{,}
+can then be added to raise or lower the pitch by an extra octave. 
+Upon entering relative mode, an absolute starting pitch must be
+specified that will act as the predecessor of the first note of
+@var{musicexpr}.
 
 
-Formed from an optional minus sign and a sequence of digits followed
-by a @emph{required} decimal point and an optional exponent such as
-@code{-1.2e3}.  Reals can be built up using the usual operations:
-`@code{+}', `@code{-}', `@code{*}', and
-`@code{/}', with parentheses for grouping.
+Entering scales is straightforward in relative mode.
 
 
-@cindex @code{\mm},
-@cindex @code{\in}
-@cindex @code{\cm}
-@cindex @code{\pt}
-@cindex dimensions
+@lilypond[fragment,verbatim,center]
+  \relative c' {
+    c d e f g a b c c,
+  }
+@end lilypond
 
 
-A real constant can be followed by one of the dimension keywords:
-@code{\mm} @code{\pt}, @code{\in}, or @code{\cm}, for millimeters,
-points, inches and centimeters, respectively.  This converts the number
-to a real that is the internal representation of dimensions.
+And octave changing marks are used for intervals greater than a fourth.
 
 
+@lilypond[fragment,verbatim,center]
+  \relative c'' {
+    c g c f, c' a, e'' }
+@end lilypond
 
 
-@unnumberedsubsec Strings
-@cindex string
-@cindex concatenate
+If the preceding item is a chord, the first note of the chord is used
+to determine the first note of the next chord.  But other notes
+within the second chord are determined by looking at the immediately
+preceding note.
 
 
-Begins and ends with the @code{"} character.  To include a @code{"}
-character in a string write @code{\"}.  Various other backslash
-sequences have special interpretations as in the C language.  A string
-that contains no spaces can be written without the quotes.  See
-@ref{Lexical modes} for details on unquoted strings; their interpretation varies
-depending on the situation.  Strings can be concatenated with the
-@code{+} operator.
+@lilypond[fragment,verbatim,center]
+  \relative c' {
+    c <c e g> 
+    <c' e g>
+    <c, e' g>
+  }
+@end lilypond 
+@cindex @code{\notes}
 
 
-The tokenizer accepts the following commands. They have no grammatical
-function, hence they can appear anywhere in the input.
+The pitch after the @code{\relative} contains a notename.  To parse
+the pitch as a notename, you have to be in note mode, so there must
+be a surrounding @code{\notes} keyword (which is not
+shown here).
 
 
-@unnumberedsubsec Main input
+The relative conversion will not affect @code{\transpose} or
+@code{\relative} sections in its argument.  If you want to use
+relative within transposed music, you must place an additional
+@code{\relative} inside the @code{\transpose}.
 
 
-@cindex @code{\maininput}
+It is strongly recommended to use relative pitch mode: less work,
+less error-prone, and more readable.
 
 
-The @code{\maininput} command is used in init files to signal that the
-user file must be read. This command cannot be used in a user file.
+@c_  {Transpose}
+@node Transpose
+@subsection Transpose
+@cindex Transpose
+@cindex transposition of pitches
+@cindex @code{\transpose}
 
 
-@unnumberedsubsec File inclusion
-@cindex @code{\include}
+A music expression can be transposed with @code{\transpose}.  The syntax
+is
 @example
 @example
-  \include @var{filename}
+  \transpose @var{pitch} @var{musicexpr}
 @end example
 
 @end example
 
-Include @var{filename}.  The argument @var{filename} may be a quoted string (an
-unquoted string will not work here!) or a string identifier.  The full
-filename including the @file{.ly} extension must be given,
-
-@unnumberedsubsec Version information 
-@cindex @code{\version}
-@example
-  \version @var{string} ;
-@end example
+This means that middle C in @var{musicexpr} is transposed to
+@var{pitch}.
 
 
-Specify the version of LilyPond that a file was written for.  The
-argument is a version string in quotes, for example @code{"1.2.0"}. 
-This is used to detect invalid input, and to aid
-@code{convert-ly}  a tool that automatically upgrades input files. See
-See @ref{convert-ly} for more information on @code{convert-ly}.
+@code{\transpose} distinguishes between enharmonic pitches: both
+@code{\transpose cis'} or @code{\transpose des'} will transpose up half
+a tone.  The first version will print sharps and the second version
+will print flats.
 
 
-@cindex convert-ly
+@quotation
+@lilypond[fragment,verbatim]
+\context Staff {
+  \clef "F";
+  { \key e \major; c d e f }
+  \clef "G";
+  \transpose des'' { \key e \major; c d e f }
+  \transpose cis'' { \key e \major; c d e f }
+}
 
 
+@end lilypond
+@end quotation
 
 
-@node Lexical modes
-@section Lexical modes
-@cindex Lexical modes
-@cindex modes
+If you want to use both @code{\transpose} and @code{\relative}, then
+you must use @code{\transpose} first.  @code{\relative} will have no
+effect music that appears inside a @code{\transpose}.
 
 
+@c_  {Repeat}
+@node Repeat
+@subsection Repeat
+@cindex Repeat
+@cindex repeats
 
 
-To simplify entering notes, lyrics, and chords, LilyPond has three
-special input modes on top of the default mode.  In each mode, words
-are identified on the input.  If @code{"word"} is encountered, it is
-treated as a string.  If @code{\word} is encountered, it is treated as
-a keyword or as an identifier.  The behavior of the modes differs in
-two ways: Different modes treat unquoted words differently, and
-different modes have different rules for deciding what is a word.
+@ref{Volta}
+[TODO: document #'repeatCommands.]
 
 
-@table  @asis
-@item Normal mode.
-@cindex normal mode
-At the start of parsing, LilyPond is in Normal mode.  In Normal
-mode, a word is an alphabetic character followed by alphanumeric
-characters.  If @code{word} is encountered on the input it is
-treated as a string.
+@cindex @code{\repeat}
 
 
-@item Note mode.
-@cindex note mode
+In order to specify repeats, use the @code{\repeat}
+keyword.  Since repeats look and sound differently when played or
+printed, there are a few different variants of repeats.
 
 
-@cindex @code{\notes}
-Note mode is introduced by the keyword
-@code{\notes}.  In Note mode, words can only
-contain alphabetic characters.  If @code{word} is encountered,
-LilyPond first checks for a notename of @code{word}.  If no
-notename is found, then @code{word} is treated as a string.
+@table @asis
+@item unfolded  
+Repeated music is fully written (played) out.  Useful for MIDI
+output.
 
 
-Since combinations of numbers and dots are used for indicating
-durations, it is not possible to enter real numbers in this mode.
+@item volta  
+This is the normal notation: Repeats are not written out, but
+alternative endings (voltas) are printed, left to right.
 
 
-@item Chord mode.
-@cindex chord mode
+@item folded  
+Alternative endings are written stacked.  Which is unfortunately not
+practical for anything right now.
 
 
-Chord mode is introduced by the keyword
-@code{\chords}.  It is similar to Note mode, but
-words are also looked up in a chord modifier table (containing
-@code{maj}, @code{dim}, etc).
+@item tremolo
+Make tremolo beams.
+@end table  
 
 
-Since combinations of numbers and dots are used for indicating
-durations, you can not enter real numbers in this mode.  Dashes
-and carets are used to indicate chord additions and subtractions,
-so scripts can not be entered in Chord mode.
+The syntax for repeats is
 
 
-@item Lyrics mode. 
-@cindex lyric mode
-@cindex @code{\lyrics}
+@example
+  \repeat @var{variant} @var{repeatcount} @var{repeatbody}
+@end example
 
 
-Lyrics mode is introduced by the keyword @code{\lyrics}.  This mode has
-rules that make it easy to include punctuation and diacritical marks in
-words: The purpose of Lyrics mode is that you can enter lyrics in @TeX{}
-format or a standard encoding without needing quotes.  The precise
-definition of this mode is ludicrous, and this will remain so until the
-authors of LilyPond acquire a deeper understanding of character
-encoding, or someone else steps up to fix this.
+If you have alternative endings, you may add
 
 
-A word in Lyrics mode begins with: an alphabetic character, @code{_},
-@code{?}, @code{!}, @code{:}, @code{'}, the control characters @code{^A}
-through @code{^F}, @code{^Q} through @code{^W}, @code{^Y}, @code{^^},
-any 8-bit character with ASCII code over 127, or a two-character
-combination of a backslash followed by one of @code{`}, @code{'},
-@code{"}, or @code{^}.
+@cindex @code{\alternative}
+@example
+ \alternative @code{@{} @var{alternative1}
+            @var{alternative2}
+            @var{alternative3} @dots{} @code{@}}
+@end example
 
 
-Subsequent characters of a word can be any character that is not a digit
-and not white space.  One important consequence of this is that a word
-can end with `@code{@}}', which may be confusing. However, LilyPond will
-issue a warning.  Any @code{_} character which appears in an unquoted
-word is converted to a space.  This provides a mechanism for introducing
-spaces into words without using quotes.  Quoted words can also be used
-in Lyrics mode to specify words that cannot be written with the above
-rules.  Here are some examples.  Not all of these words are printable by
-@TeX{}.
+where each @var{alternative} is a Music expression.
 
 
-@example 
-Ah!             % a word
-2B_||_!2B       % not a word because it starts with a digit
-``Hello''       % not a word because it starts with `
-_ _ _ _         % 4 words, each one a space 
-@end example 
+Normal notation repeats are used like this:
 
 
-Since combinations of numbers and dots are used for indicating
-durations, you can not enter real numbers in this mode.
-@end table
+@quotation
 
 
-[todo: include short table showing differences] 
+@lilypond[fragment,verbatim]
+  c'1
+  \repeat volta 2 { c'4 d' e' f' }
+  \repeat volta 2 { f' e' d' c' }
 
 
-@node Types
-@section Types
+@end lilypond
+@end quotation
 
 
-@cindex  Identifiers
+With alternative endings:
 
 
-All of the information in a LilyPond input file, is represented as a
-Scheme value. In addition to normal Scheme data types (such as pair,
-number, boolean, etc.), LilyPond has a number of specialized data types,
+@quotation
 
 
-@itemize @bullet
-@item Input
-@item c++-function
-@item Music: see @ref{Music expressions}
-@item Identifier
-@item Translator_def:
-See section @ref{contextdefs} for more information
-@item Duration
-@item Pitch
-@item Score
-@item Music_output_def
-@item Moment (rational number)
-@end itemize
+@lilypond[fragment,verbatim]
+  c'1
+  \repeat volta 2 {c'4 d' e' f'} 
+  \alternative { {d'2 d'} {f' f} }
 
 
-LilyPond also includes some transient object types. Objects of these
-types are built during a LilyPond run, and do not `exist' per se within
-your input file. These objects are created as a result of your input
-file, so you can include commands in the input to manipulate them,
-during a lilypond run.
+@end lilypond
+@end quotation
 
 
-@itemize @bullet
-@item Grob: short for Graphical object. See @ref{Grobs}. 
-@item Molecule: device-independent page output object,
-including dimensions.  Produced by some Grob functions
-See @ref{Molecules}
-@item Translator: object that produces audio objects or Grobs. This is
-not yet user accessible.
-@item Font_metric: object representing a font. (See @ref{Font metrics})
-@c  @item Audio_element: (todo,  smobme)
-@end itemize
+Folded repeats look like this:@footnote{Folded repeats offer little
+more over simultaneous music.  However, it is to be expected that
+more functionality -- especially for the MIDI backend -- will be
+implemented.}
 
 
-@node Assignments
-@unnumberedsubsec Assignments
+@quotation
 
 
-Identifiers allow objects to be assigned to names during the parse
-stage.  To assign an identifier, you use @var{name}@code{=}@var{value}
-and to refer to an identifier, you preceed its name with a backslash:
-`@code{\}@var{name}'.  @var{value} is any valid Scheme value or any of
-the input-types listed above.  Identifier assignments can appear at top
-level in the LilyPond file, but also in @code{\paper} blocks.
+@lilypond[fragment,verbatim]
+  c'1
+  \repeat fold 2 {c'4 d' e' f'} 
+  \alternative { {d'2 d'} {f' f} }
 
 
-Semicolons are forbidden after top level assignments, but mandatory in
-other places. The rules about semicolons and assignments are very
-confusing, but when LilyPond input evolves more towards Scheme, we hope
-that this problem will grow smaller.
+@end lilypond
+@end quotation
 
 
-An identifier can be created with any string for its name, but you will
-only be able to refer to identifiers whose names begin with a letter,
-being entirely alphanumeric.  It is impossible to refer to an identifier
-whose name is the same as the name of a keyword.
+@quotation
 
 
-The right hand side of an identifier assignment is parsed completely
-before the assignment is done, so it is allowed to redefine an
-identifier in terms of its old value, e.g.
+@lilypond[fragment,verbatim]
+\context Staff {
+  \relative c' {
+    \partial 4;
+    \repeat volta 2 { e | c2 d2 | e2 f2 | }
+    \alternative { { g4 g g } { a | a a a a | b1 } }
+  }
+}
 
 
-@example
-foo = \foo * 2.0
-@end example
+@end lilypond
+@end quotation
 
 
-When an identifier is referenced, the information it points to is
-copied.  For this reason, an identifier reference must always be the
-first item in a block.
-@example
-\paper  @{
-foo = 1.0
-\paperIdent % wrong and invalid
-@}
+If you don't give enough alternatives for all of the repeats, then
+the first alternative is assumed to be repeated often enough to equal
+the specified number of repeats.
 
 
-\paper @{
-\paperIdent % correct
-foo = 1.0
-@}
-@end example
+@quotation
+@lilypond[fragment,verbatim]
+\context Staff {
+  \relative c' {
+    \repeat volta 3 { \partial 4; e | c2 d2 | e2 f2 | }
+    \alternative { { g4 g g }
+                   {\partial 1; e4 e e } 
+                   {\partial 1; a a a a | b1 } }
+  }
+}
+@end lilypond
+@end quotation
+
+As you can see, LilyPond doesn't remember the timing information, nor
+are slurs or ties repeated. We hope to fix this after 1.4. 
 
 
+It is possible to nest @code{\repeat}.  This is not entirely
+supported: the notes will come be in the right places, but the repeat
+bars will not.
 
 
-@node Music expressions
-@section Music expressions
+To place tremolo marks between notes, use @code{\repeat} with tremolo
+style.
+@cindex tremolo beams
+To create tremolo beams on a single note, simply attach
+`@code{:}@var{length}' to the note itself.
 
 
-@cindex music expressions
+@lilypond[verbatim,center]
+\score { 
+  \context Voice \notes\relative c' {
+    \repeat "tremolo" 8 { c16 d16 }
+    \repeat "tremolo" 4 { c16 d16 }    
+    \repeat "tremolo" 2 { c16 d16 }    
+  }
+  \paper {
+    linewidth = 40*\staffspace;
+  }  
+}
+@end lilypond
+@cindex @code{__}
 
 
-Music in LilyPond is entered as a music expression.  Notes, rests,
-lyric syllables are music expressions (the atomic
-expressions),
-@cindex atomic music expressions
-and you can combine music expressions to form new ones.  This example
-forms a compound expressions out of the quarter @code{c} note and a
-@code{d} note:
+@lilypond[fragment,verbatim,center]
 
 
-@example 
-\sequential @{ c4 d4 @} 
-@end example 
+  c'4:32
+@end lilypond
 
 
-The meaning of this compound expression is to play the @code{c}
-first, and then the @code{d} (as opposed to playing them
-simultaneously, for instance).
+@c_  {Times}
+@node Times 
+@subsection Times
+@cindex Times 
+@ref{Tuplets}
+Tuplets are made out of a music expression by multiplying their
+duration with a fraction.
 
 
-Atomic music expression are discussed in
-subsection @ref{Atomic music expressions}.  Compound music expressions are
-discussed in subsection @ref{Compound music expressions}.
+@cindex @code{\times}
+@example
+  \times @var{fraction} @var{musicexpr}
+@end example
+
+The duration of @var{musicexpr} will be multiplied by the fraction. 
+In print, the fraction's denominator will be printed over the notes,
+optionally with a bracket.  The most common tuplet is the triplet in
+which 3 notes have the length of 2, so the notes are 2/3 of
+their written length:
 
 
+@lilypond[fragment,verbatim,center]
+  g'4 \times 2/3 {c'4 c' c'} d'4 d'4
+@end lilypond
 
 
 
 
-@node Atomic music expressions
-@section Atomic music expressions
+@c_  {Apply}
+@node Apply
+@subsection Apply
+@cindex Apply
+Apply allows a Scheme-function to operate directly on the internal
+representation of music.
+@example
+        \apply #@var{func} @var{music}
+@end example
+The function takes two arguments, being a function and an musical
+argument for that function. The function should return a music
+expression.
 
 
+This example replaces the text string of a script. It also shows a dump
+of the music it processes.
+@lilypond[verbatim]
+#(define (testfunc x)
+        (if (eq? (ly-get-mus-property x 'text) "foo")
+                (ly-set-mus-property x 'text "bar"))
+        ;; recurse
+        (ly-set-mus-property x 'elements
+          (map testfunc (ly-get-mus-property x 'elements)))
+        (display x)
+        x        
+)
+\score { \notes
+  \apply #testfunc { c4_"foo" }
+} 
+@end lilypond
 
 
+For more information on what is possible, see the @ref{Tricks} and the
+automatically generated documentation.
 
 
+@c_  {Transform}
+@node Transform
+@subsection Transform
+@cindex Transform
 
 
-@cindex pitch
 
 
-The syntax for pitch specification is
+@c_ {Note entry}
+@node Note entry
+@section Note entry
+@cindex Note entry
 
 
-@cindex @code{\pitch}
-@example
-  \pitch @var{scmpitch}
-@end example
+@menu
+* Notes mode::                  
+* Pitch names::                 
+@end menu
 
 
-@var{scmpitch} is a pitch scheme object, see @ref{Pitch}.
+@c_  {Notes mode}
+@node Notes mode
+@subsection Notes mode
 
 
-In Note and Chord mode, pitches may be designated by names.  See
-section @ref{Other languages} for pitch names in different languages.
+@cindex note mode
 
 
-@cindex duration
-@cindex @code{\duration}
+@cindex @code{\notes}
+Note mode is introduced by the keyword
+@code{\notes}.  In Note mode, words can only
+contain alphabetic characters.  If @code{word} is encountered,
+LilyPond first checks for a notename of @code{word}.  If no
+notename is found, then @code{word} is treated as a string.
 
 
-The syntax for duration specification is
-@example
- \duration @var{scmduration}
-@end example
+Since combinations of numbers and dots are used for indicating
+durations, it is not possible to enter real numbers in this mode.
 
 
-In Note, Chord, and Lyrics mode, durations may be designated by
-numbers and dots.  
 
 
+@cindex Notes mode
 
 
+@c_  {Pitch names}
+@node Pitch names
+@subsection Pitch names
+@cindex Pitch names
 @node Note specification
 @section Note specification
 @cindex Note specification
 
 @cindex pitches
 @node Note specification
 @section Note specification
 @cindex Note specification
 
 @cindex pitches
-
 @cindex entering notes
 
 A note specification has the form
 @cindex entering notes
 
 A note specification has the form
@@ -648,7 +750,28 @@ question mark `@code{?}' after the pitch.
 @end lilypond
 
 
 @end lilypond
 
 
-@cindex duration
+@c_  {Rests}
+@menu
+* Rests::                       
+* Durations::                   
+* Multi measure rests::         
+* Skip::                        
+@end menu
+
+@node  Rests
+@subsection Rests
+@cindex Rests
+
+Rests are entered like notes, with note name `@code{r}'.
+There is also a note name
+`@code{s}', which produces a space of the specified
+duration.
+
+
+@c_  {Durations}
+@node Durations
+@subsection Durations
+@cindex Durations
 
 Durations are entered as their reciprocal values.  For notes longer
 than a whole note, use identifiers.
 
 Durations are entered as their reciprocal values.  For notes longer
 than a whole note, use identifiers.
@@ -695,10 +818,6 @@ entered.  At the start of parsing there is no previous duration, so then
 a quarter note is assumed.  The duration can be followed by a dot
 (`@code{.}')  to obtain dotted note lengths.
 
 a quarter note is assumed.  The duration can be followed by a dot
 (`@code{.}')  to obtain dotted note lengths.
 
-Rests are entered like notes, with note name `@code{r}'.
-There is also a note name
-`@code{s}', which produces a space of the specified
-duration.
 
 
 @lilypond[fragment,verbatim,center]
 
 
 @lilypond[fragment,verbatim,center]
@@ -710,7 +829,10 @@ duration.
 You can alter the length of duration by writing `@code{*}@var{fraction}'
 after it.  This will not affect the appearance of note heads or rests.
 
 You can alter the length of duration by writing `@code{*}@var{fraction}'
 after it.  This will not affect the appearance of note heads or rests.
 
-@unnumberedsubsec Multi measure rests
+@c_  {Multi measure rests}
+@node  Multi measure rests
+@subsection Multi measure rests
+@cindex Multi measure rests
 
 @cindex @code{R}
 
 
 @cindex @code{R}
 
@@ -728,97 +850,59 @@ automatically adds the appropriate number.
 Note that there is currently no way to condense multiple rests into a
 single multimeasure rest.
 
 Note that there is currently no way to condense multiple rests into a
 single multimeasure rest.
 
+@c_  {Skip}
+@node Skip
+@subsection Skip
+@cindex Skip
 
 
-@unnumberedsubsec Lyrics
-@cindex lyrics expressions
-
-Syllables are entered like notes, with pitches replaced by text.  For
-example, @code{Twin-4 kle4 twin-4 kle4} enters four syllables, each
-with quarter note duration.  Note that the hyphen has no special
-meaning for lyrics, and does not introduce special symbols.  See
-section @ref{Lexical modes} for a description of what is interpreted as
-lyrics.
 
 
-Spaces can be introduced into a lyric either by using quotes
-(@code{"}) or by using an underscore without quotes: @code{He_could4
-not4}.  All unquoted underscores are converted to spaces.  Printing
-lyrics is discussed in section @ref{lyricprint}.
+@example
+  \skip @var{duration} @code{;}
+@end example
+@cindex @code{\skip}
 
 
-[explain automatic phrasing]
+Skips the amount of time specified by @var{duration}.  If no other
+music is played, a gap will be left for the skipped time with no
+notes printed.  It works in Note Mode or Lyrics Mode.  In Note mode,
+this has the same effect as the spacer rest.
 
 
-@cindex properties
-@unnumberedsubsec Translation property
 
 
-@cindex @code{\property}
-@example
-  \property @var{contextname}.@var{propname} =  @var{value}
-@end example
 
 
-Sets the @var{propname} property of the context @var{contextname} to
-the specified @var{value}.  All three arguments are strings. 
-Depending on the context, it may be necessary to quote the strings or
-to leave space on both sides of the dot.
 
 
-@cindex translator switches
-@unnumberedsubsec Translator switches
 
 
-@cindex @code{\translator}
-@example
-  \translator @var{contexttype} = @var{name}
-@end example
+@c_ {Music notation}
+@node Music notation
+@section Music notation
+@cindex Music notation
+@menu
+* Key::                         
+* Clef::                        
+* Time signature::              
+* Spanners::                    
+* Ornaments::                   
+* Bar check::                   
+@end menu
 
 
-A music expression indicating that the context which is a direct
-child of the a context of type @var{contexttype} should be shifted to
-a context of type @var{contexttype} and the specified name.
+@c_  {Key}
+@node Key
+@subsection Key
+@cindex Key
 
 
-Usually this is used to switch staffs in Piano music, e.g.
+@cindex @code{\key}
 
 @example
 
 @example
-  \translator Staff = top @var{Music}
+  @code{\key} @var{pitch} @var{type} @code{;}
 @end example
 @end example
-
-
-@cindex output properties
-@unnumberedsubsec Output properties
-
-These allow you to tweak what is happening in the back-end
-directly. If you want to control every detail of the output
-formatting, this is the feature to use. The downside to this is that
-you need to know exactly how the backend works. Example:
-
-
-@lilypond[fragment,verbatim]
-\relative c'' { c4
-        \context Staff \outputproperty
-               #(make-type-checker 'note-head-interface)
-               #'extra-offset = #'(5.0 . 7.5)
-<c8 e g> }
-@end lilypond
-
-This selects all note heads occurring at current staff level, and sets
-the @code{extra-offset} of those heads to @code{(5,7.5)}, shifting them
-up and right.
-
-Use of this feature is entirely on your own risk: if you use this, the
-result will depend very heavily on the implementation of the backend,
-which we change regularly and unscrupulously.
-
-@unnumberedsubsec Key signature
-@cindex @code{\key}
-
-@example
-  @code{\key} @var{pitch} @var{type} @code{;}
-@end example
-@cindex @code{\minor}
-@cindex @code{\major}
-@cindex @code{\minor}
-@cindex @code{\ionian}
-@cindex @code{\locrian}
-@cindex @code{\aeolian}
-@cindex @code{\mixolydian}
-@cindex @code{\lydian}
-@cindex @code{\phrygian}
-@cindex @code{\dorian}
+@cindex @code{\minor}
+@cindex @code{\major}
+@cindex @code{\minor}
+@cindex @code{\ionian}
+@cindex @code{\locrian}
+@cindex @code{\aeolian}
+@cindex @code{\mixolydian}
+@cindex @code{\lydian}
+@cindex @code{\phrygian}
+@cindex @code{\dorian}
 
 Change the key signature.  @var{type} should be @code{\major} or
 @code{\minor} to get @var{pitch}-major or @var{pitch}-minor,
 
 Change the key signature.  @var{type} should be @code{\major} or
 @code{\minor} to get @var{pitch}-major or @var{pitch}-minor,
@@ -830,43 +914,40 @@ major key, e.g., @code{\minor} is defined as 3.  The standard mode names
 @code{\ionian}, @code{\locrian}, @code{\aeolian}, @code{\mixolydian},
 @code{\lydian}, @code{\phrygian}, and @code{\dorian} are also defined.
 
 @code{\ionian}, @code{\locrian}, @code{\aeolian}, @code{\mixolydian},
 @code{\lydian}, @code{\phrygian}, and @code{\dorian} are also defined.
 
-@unnumberedsubsec Rehearsal marks
-@cindex rehearsal marks
-@cindex mark
-@cindex @code{\mark}
-@example
-  \mark @var{unsigned};
-@cindex @code{Mark_engraver}
-  \mark @var{string};
-@end example
-
-Prints a mark over or under the staff.  
 
 
-@unnumberedsubsec barlines
+@c_  {Clef}
+@node Clef
+@subsection Clef
+@cindex Clef
 
 
-@cindex @code{\bar}
-@cindex measure lines
-@cindex repeat bars
 
 
+@c_   {Clef changes}
+@subsubsection Clef changes
+@cindex @code{\clef}
 @example
 @example
-  \bar @var{bartype};
+  \clef @var{clefname} @code{;}
 @end example
 
 @end example
 
-This is a short-cut for doing
+Short-cut for
+
 @example
 @example
-  \property Score.whichBar = @var{bartype} 
+  \property Clef.clefGlyph = @var{symbol associated with clefname} 
+  \property Clef.clefPosition = @var{clef Y-position for clefname}
+  \property Clef.clefOctavation = @var{extra pitch of clefname}
 @end example
 
 @end example
 
-You are encouraged to use @code{\repeat} for repetitions.  See
-@ref{Repeats}, and the documentation of @code{whichBar} in
-@ref{(lilypond-internals)LilyPond context properties}.
+Supported clef-names include 
+
+[todo]
 
 
-[FIXME]
 
 
-@unnumberedsubsec Time signature
+@c_  {Time signature}
+@node Time signature
+@subsection Time signature
+@cindex Time signature
 @cindex meter
 @cindex meter
-@cindex time signature
 @cindex @code{\time}
 @cindex @code{\time}
+
 @example
   \time @var{numerator}@code{/}@var{denominator} @code{;}
 @end example
 @example
   \time @var{numerator}@code{/}@var{denominator} @code{;}
 @end example
@@ -878,18 +959,10 @@ A short-cut for doing
 
 See the documentation of @code{timeSignatureFraction}
 
 
 See the documentation of @code{timeSignatureFraction}
 
-@unnumberedsubsec Tempo
-@cindex beats per minute
-@cindex metronome marking
-@cindex @code{\tempo}
-@example
-  \tempo @var{duration} = @var{perminute} @code{;}
-@end example
-
-Used to specify the tempo.  For example, @code{\tempo 4 = 76;} requests
-output with 76 quarter notes per minute.
 
 
-@unnumberedsubsec Partial measures
+@c_   {Partial}
+@subsubsection Partial
+@cindex Partial
 @cindex anacrusis
 @cindex upstep
 @cindex partial measure
 @cindex anacrusis
 @cindex upstep
 @cindex partial measure
@@ -909,69 +982,94 @@ Short cut for
 
 See the documentation of @code{measurePosition}.
 
 
 See the documentation of @code{measurePosition}.
 
-@unnumberedsubsec Bar check
-
-@cindex bar check
-@cindex @code{barCheckNoSynchronize}
-@cindex @code{|}
-
-
-Bar checks help you find errors in the input: Whenever one is
-encountered during interpretation, a warning message is issued if it
-doesn't fall at a measure boundary.  Depending on the value of
-@code{barCheckNoSynchronize},  the beginning of the measure will be
-relocated, so this can also be used to shorten measures.
 
 
-A bar check is entered using the bar symbol, @code{|}
 
 
-This can help you finding errors in the input.
+@c_  {Spanners}
+@node Spanners
+@subsection Spanners
+@cindex Spanners
 
 
-@unnumberedsubsec Line break penalty.
-@cindex @code{\penalty}
+@menu
+* Beam::                        
+* Slur::                        
+* Tie::                         
+* Tuplet::                      
+* Volta::                       
+* Crescendo and Decrescendo::   
+* Text spanner::                
+* Ottava::                      
+* Span requests::               
+@end menu
+@c_   {Beam}
+@node Beam
+@subsubsection Beam
+@cindex Beam
+@c_    {Automatic beams}
+@unnumberedsubsubsec Automatic beams
 
 
-@example
-  \penalty @var{int} @code{;}
-@end example
+@cindex automatic beam generation
+@cindex autobeam
 
 
-Discourage or encourage line breaks.  See @ref{Page layout}. 
+@cindex @code{Voice.noAutoBeaming}
 
 
-@unnumberedsubsec Clef change
-@cindex @code{\clef}
-@example
-  \clef @var{clefname} @code{;}
-@end example
+By default, LilyPond will generate beams automatically.  This feature
+can be disabled by setting the @code{Voice.noAutoBeaming} property to
+true.  It can be overridden for specific cases by specifying explicit
+beams.
 
 
-Short-cut for
+@cindex @code{Voice.autoBeamSettings}
+@cindex @code{(end * * * *)}
+@cindex @code{(begin * * * *)}
 
 
+A large number of Voice properties are used to decide how to generate
+beams.  Their default values appear in @file{scm/auto-beam.scm}.  In
+general, beams can begin anywhere, but their ending location is
+significant.  Beams can end on a beat, or at durations specified by the
+properties in
+@code{Voice.autoBeamSettings}.
+To end beams every quarter note, for example, you could set the property
+@code{(end * * * *)}  to @code{(make-moment 1
+4)}.  To end beams at every three eighth notes you would set
+it to @code{(make-moment 1 8)}.
+The same syntax can be used to specify beam
+starting points using
+@code{(begin * * * *)}, eg:
+@quotation
 @example
 @example
-  \property Clef.clefGlyph = @var{symbol associated with clefname} 
-  \property Clef.clefPosition = @var{clef Y-position for clefname}
-  \property Clef.clefOctavation = @var{extra pitch of clefname}
+\property Voice.autoBeamSettings \override
+    #'(end * * * *) = #(make-moment 1 4)
+\property Voice.autoBeamSettings \override
+    #'(begin * * * *) = #(make-moment 1 8)
 @end example
 @end example
+@end quotation
 
 
-Supported clef-names include 
+To allow different settings for different time signatures, instead of
+the first two asterisks @code{* *} you can specify a time signature; use
+@code{(end N M * *)} to restrict the definition to
+`@var{N}@code{/}@var{M}' time.  For example, to specify beams ending
+only for 6/8 time you would use the property @code{(end 6 8 * *)}.
 
 
-[todo]
+To allow different endings for notes of different durations, instead of
+th last two asterisks you can specify a duration; use @code{(end * * N
+M)} to restrict the definition to beams that contain notes of
+`@var{N}@code{/}@var{M}' duration.
 
 
-@unnumberedsubsec Skip
-@example
-  \skip @var{duration} @code{;}
-@end example
-@cindex @code{\skip}
+For example, to specify beam endings for beams that contain 32nd notes,
+you would use @code{(end * * 1 32)}.
 
 
-Skips the amount of time specified by @var{duration}.  If no other
-music is played, a gap will be left for the skipped time with no
-notes printed.  It works in Note Mode or Lyrics Mode.  In Note mode,
-this has the same effect as the spacer rest.
 
 
 
 
-@node Manual beams
-@unnumberedsubsec Manual beams
+@c_    {Manual beams}
+@cindex Automatic beams
+@unnumberedsubsubsec Manual beams
 
 @cindex beams, manual
 @cindex @code{]}
 @cindex @code{[}
 
 
 @cindex beams, manual
 @cindex @code{]}
 @cindex @code{[}
 
+FIXME
+Beaming can be generated automatically; see section @ref{Automatic Beaming}.
+
 A beam is specified by surrounding the beamed notes with brackets
 `@code{[}' and `@code{]}'.  
 
 A beam is specified by surrounding the beamed notes with brackets
 `@code{[}' and `@code{]}'.  
 
@@ -981,25 +1079,44 @@ A beam is specified by surrounding the beamed notes with brackets
   \times 2/3 { [e'8 f' g'] }
 @end lilypond
 
   \times 2/3 { [e'8 f' g'] }
 @end lilypond
 
-Beaming can be generated automatically; see section @ref{Automatic Beaming}.
 
 @cindex @code{-}@code{-}
 
 
 @cindex @code{-}@code{-}
 
-@unnumberedsubsec Lyric extender
-@cindex extender
-@cindex lyric extender
-@cindex hyphen
 
 
-The syntax for an extender mark is @code{__}.  This syntax can only
-be used within lyrics mode.
+@c_    {Adjusting beams}
+@unnumberedsubsubsec Adjusting beams
+@cindex Adjusting beams
 
 
-@unnumberedsubsec Lyric hyphens
 
 
-The syntax for a spanning hyphen (i.e., a hyphen that will be printed
-between two lyric syllables) is `@code{-}@code{-}'.
+@c_   {Slur}
+
+@node Slur
+@subsubsection Slur
+@cindex Slur
+
+@cindex slur
+
+Slurs connects chords and try to avoid crossing stems.  A slur is
+started with @code{(} and stopped with @code{)}.  The
+starting @code{(} appears to the right of the first note in
+the slur.  The terminal @code{)} appears to the left of the
+first note in the slur.  This makes it possible to put a note in
+slurs from both sides:
+
+@lilypond[fragment,verbatim,center]
+  f'()g'()a' [a'8 b'(] a'4 g'2 )f'4
+@end lilypond
 
 
 
 
-@unnumberedsubsec Ties
+
+@c_    {Adjusting slurs}
+@unnumberedsubsubsec Adjusting slurs
+@c_   {Tie}
+@cindex Adusting slurs
+@node Tie
+@subsubsection Tie
+
+@cindex Tie
 @cindex ties
 @cindex @code{~}
 
 @cindex ties
 @cindex @code{~}
 
@@ -1015,7 +1132,143 @@ warning message will appear and no ties will be created.
 
 [sparseTies]
 
 
 [sparseTies]
 
-@unnumberedsubsec Articulation
+
+@c_   {Tuplet}
+@node Tuplet
+@subsubsection Tuplet
+@cindex Tuplet
+
+See @ref{Times}.
+
+@c_   {Volta}
+@node Volta
+@subsubsection Volta
+@cindex Volta
+
+See @ref{Repeat}.
+
+@c_   {Crescendo and Decrescendo}
+@node Crescendo and Decrescendo
+@subsubsection Crescendo and Decrescendo
+@cindex Crescendo and Decrescendo
+@cindex crescendo
+@cindex @code{\cr}
+@cindex @code{\rc}
+@cindex @code{\decr}
+@cindex @code{\rced}
+@cindex @code{\<}
+@cindex @code{\>}
+@cindex @code{\"!}
+
+
+
+A crescendo mark is started with @code{\cr} and terminated with
+@code{\rc}, the textual reverse of @code{cr}.  A decrescendo mark is
+started with @code{\decr} and terminated with @code{\rced}.  There are
+also shorthands for these marks.  A crescendo can be started with
+@code{\<} and a decrescendo can be started with @code{\>}.  Either one
+can be terminated with @code{\!}.  Note that @code{\!}  must go before
+the last note of the dynamic mark whereas @code{\rc} and @code{\rced} go
+after the last note.  Because these marks are bound to notes, if you
+want to get several marks during one note, you must use spacer notes.
+
+@lilypond[fragment,verbatim,center]
+  c'' \< \! c''   d'' \decr e'' \rced 
+  < f''1 { s4 \< \! s2 \> \! s4 } >
+@end lilypond
+
+[todo: text cr] 
+
+
+@c_   {Text spanner}
+@node Text spanner
+@subsubsection Text spanner
+@cindex Text spanner
+
+Have crescendo set a text spanner instead of hairpin
+
+@lilypond[fragment,relative,verbatim]
+  \context Voice {
+    \property Voice.crescendoText = "cresc."
+    \property Voice.crescendoSpanner = #'dashed-line
+    a''2\mf\< a a \!a 
+  }
+@end lilypond
+
+@c_   {Ottava}
+@node Ottava
+@subsubsection Ottava
+@cindex Ottava
+@unnumberedsubsubsec Ottava
+
+@lilypond[fragment,relative,verbatim]
+  a'''' b c a
+  \property Voice.TextSpanner \set #'type = #'dotted-line
+  \property Voice.TextSpanner \set #'edge-height = #'(0 . 1.5)
+  \property Voice.TextSpanner \set #'edge-text = #'("8va " . "")
+  \property Staff.centralCPosition = #-13
+  a\spanrequest \start "text" b c a \spanrequest \stop "text"
+@end lilypond
+
+
+
+@c_    {Text crescendo and decrescendo}
+@unnumberedsubsubsec Text crescendo and decrescendo
+
+TODO
+
+@c_   {Span requests}
+@node Span requests
+@subsubsection Span requests
+@cindex Span requests
+
+@cindex @code{\spanrequest}
+
+@example
+  \spanrequest @var{startstop} @var{type}
+@end example
+@cindex @code{\start}
+@cindex @code{\stop}
+
+Define a spanning request. The @var{startstop} parameter is either -1
+(@code{\start}) or 1 (@code{\stop}) and @var{type} is a string that
+describes what should be started.  Supported types are @code{crescendo},
+@code{decrescendo}, @code{beam}, @code{slur}.  This is an internal
+command.  Users should use the shorthands which are defined in the
+initialization file @file{spanners.ly}.
+
+You can attach a (general) span request to a note using
+
+@lilypond[fragment,verbatim,center]
+  c'4-\spanrequest \start "slur"
+  c'4-\spanrequest \stop "slur"
+@end lilypond
+
+The slur syntax with parentheses is a shorthand for this.
+
+
+@c_  {Ornaments}
+@node Ornaments
+@subsection Ornaments
+@cindex Ornaments
+@menu
+* Articulation::                
+* Text scripts::                
+* Grace notes::                 
+* Stem tremolo::                
+* Arpeggio::                    
+* Glissando ::                  
+* Dynamics::                    
+* Bar lines::                   
+* Breath marks::                
+* Rehearsal marks::             
+@end menu
+
+@c_   {Articulation}
+@node Articulation
+@subsubsection Articulation
+@cindex Articulation
+
 @cindex articulations
 @cindex scripts
 @cindex ornaments
 @cindex articulations
 @cindex scripts
 @cindex ornaments
@@ -1062,7 +1315,12 @@ name of the corresponding symbol appearing underneath.
 
 @end lilypond
 
 
 @end lilypond
 
-@unnumberedsubsec Text scripts
+@c_   {Text scripts}
+@node Text scripts
+@subsubsection Text scripts
+@cindex Text scripts
+
+FIXME: markup
 
 In addition, it is possible to place arbitrary strings of text or
 @TeX{} above or below notes by using a string instead of an
 
 In addition, it is possible to place arbitrary strings of text or
 @TeX{} above or below notes by using a string instead of an
@@ -1071,7 +1329,9 @@ can be placed by simply using digits.  All of these note ornaments
 appear in the printed output but have no effect on the MIDI rendering of
 the music.
 
 appear in the printed output but have no effect on the MIDI rendering of
 the music.
 
-@cindex fingering
+@c_    {Fingerings}
+@unnumberedsubsubsec Fingerings
+@cindex Fingerings
 
 To save typing, fingering instructions (digits 0 to 9 are
 supported) and single characters shorthands exist for a few
 
 To save typing, fingering instructions (digits 0 to 9 are
 supported) and single characters shorthands exist for a few
@@ -1143,105 +1403,17 @@ helpful identifier definitions appear in @file{script.ly}.
 
 
 
 
 
 
-@unnumberedsubsec Dynamics
-
-@cindex @code{\ppp}
-@cindex @code{\pp}
-@cindex @code{\p}
-@cindex @code{\mp}
-@cindex @code{\mf}
-@cindex @code{\f}
-@cindex @code{\ff}
-@cindex @code{\fff}
-@cindex @code{\ffff}
-@cindex @code{\fp}
-@cindex @code{\sf}
-@cindex @code{\sff}
-@cindex @code{\sp}
-@cindex @code{\spp}
-@cindex @code{\sfz}
-@cindex @code{\rfz}
-@cindex crescendo
-@cindex @code{\cr}
-@cindex @code{\rc}
-@cindex @code{\decr}
-@cindex @code{\rced}
-@cindex @code{\<}
-@cindex @code{\>}
-@cindex @code{\"!}
-
-Dynamic marks are specified by using an identifier after a note:
-@code{c4-\ff} (the dash is optional for dynamics: `@code{c4 \ff})'.  
-The available dynamic marks are:
-@code{\ppp},
-@code{\pp}, @code{\p}, @code{\mp},
-@code{\mf}, @code{\f}, @code{\ff},
-@code{\fff}, @code{\fff},
-@code{\fp}, @code{\sf},
-@code{\sff}, @code{\sp},
-@code{\spp}, @code{\sfz}, and
-@code{\rfz}.
-
-
-A crescendo mark is started with @code{\cr} and terminated with
-@code{\rc}, the textual reverse of @code{cr}.  A decrescendo mark is
-started with @code{\decr} and terminated with @code{\rced}.  There are
-also shorthands for these marks.  A crescendo can be started with
-@code{\<} and a decrescendo can be started with @code{\>}.  Either one
-can be terminated with @code{\!}.  Note that @code{\!}  must go before
-the last note of the dynamic mark whereas @code{\rc} and @code{\rced} go
-after the last note.  Because these marks are bound to notes, if you
-want to get several marks during one note, you must use spacer notes.
-
-@lilypond[fragment,verbatim,center]
-  c'' \< \! c''   d'' \decr e'' \rced 
-  < f''1 { s4 \< \! s2 \> \! s4 } >
-@end lilypond
-
-[todo: text cr] 
-
-@unnumberedsubsec Slurs
-@cindex slur
-
-Slurs connects chords and try to avoid crossing stems.  A slur is
-started with @code{(} and stopped with @code{)}.  The
-starting @code{(} appears to the right of the first note in
-the slur.  The terminal @code{)} appears to the left of the
-first note in the slur.  This makes it possible to put a note in
-slurs from both sides:
-
-@lilypond[fragment,verbatim,center]
-  f'()g'()a' [a'8 b'(] a'4 g'2 )f'4
-@end lilypond
-
-
-@unnumberedsubsec Spanners
-@cindex @code{\spanrequest}
-
-@example
-  \spanrequest @var{startstop} @var{type}
-@end example
-@cindex @code{\start}
-@cindex @code{\stop}
-
-Define a spanning request. The @var{startstop} parameter is either -1
-(@code{\start}) or 1 (@code{\stop}) and @var{type} is a string that
-describes what should be started.  Supported types are @code{crescendo},
-@code{decrescendo}, @code{beam}, @code{slur}.  This is an internal
-command.  Users should use the shorthands which are defined in the
-initialization file @file{spanners.ly}.
-
-You can attach a (general) span request to a note using
 
 
-@lilypond[fragment,verbatim,center]
-  c'4-\spanrequest \start "slur"
-  c'4-\spanrequest \stop "slur"
-@end lilypond
+@c_   {Grace notes}
+@node Grace notes
+@subsubsection Grace notes
+@cindex Grace notes
 
 
-The slur syntax with parentheses is a shorthand for this.
+See @ref{Grace music}.
 
 
+@c_   {Stem tremolo}
 @node Stem tremolo
 @node Stem tremolo
-@section Stem tremolo
+@subsubsection Stem tremolo
 @cindex tremolo marks
 @cindex @code{tremoloFlags}
 
 @cindex tremolo marks
 @cindex @code{tremoloFlags}
 
@@ -1258,8 +1430,11 @@ no last value.
   c'2:8 c':32
 @end lilypond
 
   c'2:8 c':32
 @end lilypond
 
-@section Arpeggio
-@cindex argepeggio
+
+@c_   {Arpeggio}
+@node Arpeggio
+@subsubsection Arpeggio
+@cindex Arpeggio
 
 @cindex broken arpeggio
 @cindex @code{\arpeggio}
 
 @cindex broken arpeggio
 @cindex @code{\arpeggio}
@@ -1293,8 +1468,12 @@ extended arpeggio sign is printed.
 @end lilypond
 @end quotation
 
 @end lilypond
 @end quotation
 
-@section Glissando
-@cindex glissando
+
+@c_   {Glissando}
+@node Glissando 
+@subsubsection Glissando
+@cindex Glissando 
+
 @cindex @code{\glissando}
 
 A @rgrob{Glissando} line can be requested by issuing a
 @cindex @code{\glissando}
 
 A @rgrob{Glissando} line can be requested by issuing a
@@ -1312,7 +1491,8 @@ A @rgrob{Glissando} line can be requested by issuing a
 Printing of the additional text @samp{gliss.} must be done manually.
 
 
 Printing of the additional text @samp{gliss.} must be done manually.
 
 
-@subsection Follow Thread
+@c_    {Follow Thread}
+@subsubsection Follow Thread
 @cindex follow thread
 @cindex staff switching
 @cindex cross staff
 @cindex follow thread
 @cindex staff switching
 @cindex cross staff
@@ -1337,186 +1517,388 @@ switches to another staff.  This is enabled if the property
 @end lilypond
 @end quotation
 
 @end lilypond
 @end quotation
 
-@node Compound music expressions
-@section Compound music expressions
-
-@cindex compound music expressions
-
-Music expressions are compound data structures.  You can nest music
-expressions any way you like.  This simple example shows how three
-chords can be expressed in two different ways:
-
-@lilypond[fragment,verbatim,center]
-  \notes \context Staff {
-    <a c'> <b  d' > <c' e'>
-    < { a b  c' } { c' d' e' } >
-  }
 
 
-@end lilypond
-
-@cindex @code{\context}
-@cindex context selection
 
 
-@example
-  \context @var{contexttype} [= @var{contextname}] @var{musicexpr}
-@end example
+@c_   {Dynamics}
+@node Dynamics
+@subsubsection Dynamics
+@cindex Dynamics
 
 
-Interpret @var{musicexpr} within a context of type @var{contexttype}. 
-If the context does not exist, it will be created.  The new context
-can optionally be given a name.  
+@unnumberedsubsec Dynamics
 
 
-@cindex input modes
+@cindex @code{\ppp}
+@cindex @code{\pp}
+@cindex @code{\p}
+@cindex @code{\mp}
+@cindex @code{\mf}
+@cindex @code{\f}
+@cindex @code{\ff}
+@cindex @code{\fff}
+@cindex @code{\ffff}
+@cindex @code{\fp}
+@cindex @code{\sf}
+@cindex @code{\sff}
+@cindex @code{\sp}
+@cindex @code{\spp}
+@cindex @code{\sfz}
+@cindex @code{\rfz}
 
 
-@cindex mode switch
+Dynamic marks are specified by using an identifier after a note:
+@code{c4-\ff} (the dash is optional for dynamics: `@code{c4 \ff})'.  
+The available dynamic marks are:
+@code{\ppp},
+@code{\pp}, @code{\p}, @code{\mp},
+@code{\mf}, @code{\f}, @code{\ff},
+@code{\fff}, @code{\fff},
+@code{\fp}, @code{\sf},
+@code{\sff}, @code{\sp},
+@code{\spp}, @code{\sfz}, and
+@code{\rfz}.
 
 
-@cindex @code{\notes}
-@cindex @code{\chords}
-@cindex @code{\lyrics}
+See also @ref{Crescendo and Decrescendo}
 
 
-Mode switching keywords form compound music expressions: @code{\notes}
-@var{musicexpr}, @code{\chords}  @var{musicexpr},
-and @code{\lyrics}  @var{musicexpr}.  These
-expressions do not add anything to the meaning of their arguments.  They
-are just a way to indicate that the arguments should be parsed in
-indicated mode.  See @ref{Lexical modes} for more information on modes.
 
 
-[to lexer modes?]
+@c_   {Bar lines}
+@node Bar lines
+@subsubsection Bar lines
+@cindex Bar lines
 
 
-@unnumberedsubsec Sequential music
-@cindex @code{\sequential}
-@cindex sequential music
+@cindex @code{\bar}
+@cindex measure lines
+@cindex repeat bars
 
 @example
 
 @example
-  \sequential @code{@{} @var{musicexprlist} @code{@}}
+  \bar @var{bartype};
 @end example
 
 @end example
 
-This means that list should be played or written in sequence, i.e.,
-the second after the first, the third after the second.  The duration
-of sequential music is the the sum of the durations of the elements. 
-There is a shorthand, which leaves out the keyword:
-
+This is a short-cut for doing
 @example
 @example
-@cindex @code{<}
-@cindex @code{>}
-
-  @code{@{} @var{musicexprlist} @code{@}}
+  \property Score.whichBar = @var{bartype} 
 @end example
 
 @end example
 
+You are encouraged to use @code{\repeat} for repetitions.  See
+@ref{Repeat}, @ref{Volta}, and the documentation of @code{whichBar} in
+@ref{(lilypond-internals)LilyPond context properties}.
 
 
 
 
-@unnumberedsubsec Simultaneous music
-@cindex simultaneous music
-@cindex @code{\simultaneous}
+[FIXME]
 
 
-@example
-  \simultaneous @code{@{} @var{musicexprlist} @code{@}}
-@end example
+@c_   {Breath marks}
+@node Breath marks
+@subsubsection Breath marks
+@cindex Breath marks
 
 
-It constructs a music expression where all of its arguments start at
-the same moment.  The duration is the maximum of the durations of the
-elements.  The following shorthand is a common idiom:
+@c_   {Rehearsal marks}
+@node Rehearsal marks
+@subsubsection Rehearsal marks
+@cindex Rehearsal marks
+@cindex mark
+@cindex @code{\mark}
 
 @example
 
 @example
-  @code{<} @var{musicexprlist} @code{>}
+  \mark @var{unsigned};
+@cindex @code{Mark_engraver}
+  \mark @var{string};
 @end example
 
 @end example
 
-If you try to use a chord as the first thing in your score, you might
-get multiple staffs instead of a chord.
-
-@lilypond[verbatim,center]
-  \score {
-    \notes <c''4 e''>
-    \paper {
-      linewidth = -1.;
-    }
-  }
-@end lilypond
+Prints a mark over or under the staff.  
 
 
-This happens because the chord is interpreted by a score context.
-Each time a note is encountered a default Voice context (along with a
-Staff context) is created.  The solution is to explicitly instantiate
-a Voice context:
 
 
-@lilypond[verbatim,center]
-  \score {
-    \notes\context Voice <c''4 e''>
-    \paper {
-      linewidth = -1.;
-    }
-  }
-@end lilypond
+@c_  {Bar check}
+@node Bar check
+@subsection Bar check
+@cindex Bar check
 
 
+@cindex bar check
+@cindex @code{barCheckNoSynchronize}
+@cindex @code{|}
 
 
 
 
+Bar checks help you find errors in the input: Whenever one is
+encountered during interpretation, a warning message is issued if it
+doesn't fall at a measure boundary.  Depending on the value of
+@code{barCheckNoSynchronize},  the beginning of the measure will be
+relocated, so this can also be used to shorten measures.
 
 
-@node Relative octaves
-@section Relative octaves
-@cindex relative octave specification
+A bar check is entered using the bar symbol, @code{|}
 
 
-It is easy to get confused by octave changing marks and accidentally
-putting a pitch in the wrong octave.  A much better way of entering a
-note's octave is `the relative octave' mode.
+This can help you finding errors in the input.
 
 
-@cindex @code{\relative}
-@example
-  \relative @var{startpitch} @var{musicexpr}
-@end example
 
 
-The octave of notes that appear in @var{musicexpr} are calculated as
-follows: If no octave changing marks are used, the basic interval
-between this and the last note is always taken to be a fourth or
-less.@footnote{The interval is determined without regarding
-accidentals.  A @code{fisis} following a @code{ceses} will be put above
-the @code{ceses}.}  The octave changing marks @code{'} and @code{,}
-can then be added to raise or lower the pitch by an extra octave. 
-Upon entering relative mode, an absolute starting pitch must be
-specified that will act as the predecessor of the first note of
-@var{musicexpr}.
+@c_ {Lyrics entry}
+@node Lyrics entry
+@section Lyrics entry
+@cindex Lyrics entry
 
 
-Entering scales is straightforward in relative mode.
+@menu
+* Lyrics mode::                 
+* Printing lyrics::             
+* Lyric hyphen::                
+* Lyric extender::              
+* Addlyrics::                   
+@end menu
 
 
-@lilypond[fragment,verbatim,center]
-  \relative c' {
-    c d e f g a b c c,
-  }
-@end lilypond
+@c_  {Lyrics mode}
+@node Lyrics mode
+@subsection Lyrics mode
+@cindex Lyrics mode
 
 
-And octave changing marks are used for intervals greater than a fourth.
+@cindex lyric mode
+@cindex @code{\lyrics}
+
+Lyrics mode is introduced by the keyword @code{\lyrics}.  This mode has
+rules that make it easy to include punctuation and diacritical marks in
+words: The purpose of Lyrics mode is that you can enter lyrics in @TeX{}
+format or a standard encoding without needing quotes.  The precise
+definition of this mode is ludicrous, and this will remain so until the
+authors of LilyPond acquire a deeper understanding of character
+encoding, or someone else steps up to fix this.
+
+A word in Lyrics mode begins with: an alphabetic character, @code{_},
+@code{?}, @code{!}, @code{:}, @code{'}, the control characters @code{^A}
+through @code{^F}, @code{^Q} through @code{^W}, @code{^Y}, @code{^^},
+any 8-bit character with ASCII code over 127, or a two-character
+combination of a backslash followed by one of @code{`}, @code{'},
+@code{"}, or @code{^}.
+
+Subsequent characters of a word can be any character that is not a digit
+and not white space.  One important consequence of this is that a word
+can end with `@code{@}}', which may be confusing. However, LilyPond will
+issue a warning.  Any @code{_} character which appears in an unquoted
+word is converted to a space.  This provides a mechanism for introducing
+spaces into words without using quotes.  Quoted words can also be used
+in Lyrics mode to specify words that cannot be written with the above
+rules.  Here are some examples.  Not all of these words are printable by
+@TeX{}.
+
+@example 
+Ah!             % a word
+2B_||_!2B       % not a word because it starts with a digit
+``Hello''       % not a word because it starts with `
+_ _ _ _         % 4 words, each one a space 
+@end example 
+
+Since combinations of numbers and dots are used for indicating
+durations, you can not enter real numbers in this mode.
+
+[todo: include short table showing differences] 
+
+@cindex lyrics expressions
+
+Syllables are entered like notes, with pitches replaced by text.  For
+example, @code{Twin-4 kle4 twin-4 kle4} enters four syllables, each
+with quarter note duration.  Note that the hyphen has no special
+meaning for lyrics, and does not introduce special symbols.  See
+section @ref{Lexical modes} for a description of what is interpreted as
+lyrics.
+
+Spaces can be introduced into a lyric either by using quotes
+(@code{"}) or by using an underscore without quotes: @code{He_could4
+not4}.  All unquoted underscores are converted to spaces.  Printing
+lyrics is discussed in section @ref{lyricprint}.
+
+
+@c_  {Printing Lyrics}
+@node Printing lyrics
+@subsection lyricprint
+@cindex lyrics
+
+
+@cindex printing!lyrics
+
+
+Lyric syllables must be interpreted within a @code{Lyrics} context
+
+@cindex context!Lyrics
+ for printing them.
+
+Here is a full example: 
+
+@quotation
+@lilypond[verbatim]
+\score {
+  <
+    \notes \transpose c'' {
+      c d e c | c d e c |
+      e f g2 | e4 f g2 \bar "|.";
+    }
+    \context Lyrics \lyrics { 
+      Va-4 der Ja- cob Va- der Ja- cob
+      Slaapt gij nog?2 Slaapt4 gij nog?2
+    }
+  >
+}
 
 
-@lilypond[fragment,verbatim,center]
-  \relative c'' {
-    c g c f, c' a, e'' }
 @end lilypond
 @end lilypond
+@end quotation
 
 
-If the preceding item is a chord, the first note of the chord is used
-to determine the first note of the next chord.  But other notes
-within the second chord are determined by looking at the immediately
-preceding note.
+You may want a continuous line after the syllables to show melismata. 
+To achieve this effect, add a @code{__} lyric as a separate word
+after the lyric to be extended.  This will create an extender, a line
+that extends over the entire duration of the lyric.  This line will
+run all the way to the start of the next lyric, so you may want to
+shorten it by using a blank lyric (using @code{_}).
 
 
-@lilypond[fragment,verbatim,center]
-  \relative c' {
-    c <c e g> 
-    <c' e g>
-    <c, e' g>
-  }
-@end lilypond 
-@cindex @code{\notes}
+@quotation
 
 
-The pitch after the @code{\relative} contains a notename.  To parse
-the pitch as a notename, you have to be in note mode, so there must
-be a surrounding @code{\notes} keyword (which is not
-shown here).
+@lilypond[verbatim]
+\score {
+  <
+    \notes \relative c'' {
+      a4 () b () c () d | c () d () b () a | c () d () b () a
+    }
+    \context Lyrics \lyrics {
+      foo1 __ | bar2. __ _4 | baz1 __
+    }
+  >
+}
 
 
-The relative conversion will not affect @code{\transpose} or
-@code{\relative} sections in its argument.  If you want to use
-relative within transposed music, you must place an additional
-@code{\relative} inside the @code{\transpose}.
+@end lilypond
+@end quotation
+
+     
+If you want to have hyphens centered between syllables (rather than
+attached to the end of the first syllable) you can use the special
+`@code{-}@code{-}' lyric as a separate word between syllables.  This
+will result in a hyphen which length varies depending on the space
+between syllables, and which will be centered between the syllables. 
+For example:
+
+@quotation
+
+@lilypond[verbatim]
+\score {
+  <
+    \notes \transpose c'' {
+      c d e c | c d e c |
+      e f g2 | e4 f g2 \bar "|.";
+    }
+    \context Lyrics \lyrics {
+      Va4 -- der Ja -- cob | Va -- der Ja -- cob |
+      Slaapt gij nog?2 | Slaapt4 gij nog?2
+    }
+  >
+}
+
+@end lilypond
+@end quotation
+
+
+
+
+@c_  {Lyric hyphen}
+@node Lyric hyphen
+@subsection Lyric hyphen
+@cindex Lyric hyphen
+
+The syntax for a spanning hyphen (i.e., a hyphen that will be printed
+between two lyric syllables) is `@code{-}@code{-}'.
+
+@c_  {Lyric extender}
+@node Lyric extender
+@subsection Lyric extender
+@cindex Lyric extender
+@cindex extender
+@cindex lyric extender
+@cindex hyphen
+
+The syntax for an extender mark is @code{__}.  This syntax can only
+be used within lyrics mode.
+
+
+
+
+@c_  {Addlyrics}
+@node Addlyrics
+@subsection Addlyrics
+@cindex Addlyrics
+
+
+[explain automatic phrasing]
+@cindex automatic lyric durations
+@cindex @code{\addlyrics}
+
+If you have lyrics that are set to a melody, you can import the rhythm
+of that melody into the lyrics using @code{\addlyrics}.  The syntax for
+this is
+@example
+  \addlyrics @var{musicexpr1 musicexpr2}
+@end example
+
+This means that both @var{musicexpr1} and @var{musicexpr2} are
+interpreted, but that every non-command atomic music expression
+(``every syllable'') in @var{musicexpr2} is interpreted using timing
+of @var{musicexpr1}.
+@cindex @code{automaticMelismata}
+
+If the property @code{automaticMelismata} is set in the
+context of @var{musicexpr1}, no lyrics will be put on slurred or tied
+notes.
+
+@quotation
+@lilypond[verbatim,fragment]
+\addlyrics
+\transpose c'' {
+  \property Voice.automaticMelismata = ##t
+  c8 () cis d8. e16 f2
+}
+\context Lyrics \lyrics {
+ do4 re mi fa }
+@end lilypond
+@end quotation
+
+You should use a single rhythm melody, and single rhythm lyrics (a
+constant duration is the obvious choice).  If you do not, you will get
+undesired effects when using multiple stanzas:
+
+@quotation
+@lilypond[verbatim,fragment]
+\addlyrics
+\transpose c'' {
+  c8 () cis d8. e16 f2
+}
+\context Lyrics \lyrics
+< { do4 re mi fa }
+  { do8 re mi fa } >
+
+@end lilypond
+@end quotation
+
+It is valid (but probably not very useful) to use notes instead of
+lyrics for @var{musicexpr2}.
 
 
-It is strongly recommended to use relative pitch mode: less work,
-less error-prone, and more readable.
 
 
+
+@c_ {Chord entry}
+@node Chord entry
+@section Chord entry
+@cindex Chord entry
+
+@menu
+* Chords mode::                 
+* Entering named chords::       
+* Printing named chords::       
+@end menu
+
+@c_  {Chords mode}
+@node Chords mode
+@subsection Chords mode
+@cindex Chords mode
+
+Chord mode is introduced by the keyword
+@code{\chords}.  It is similar to Note mode, but
+words are also looked up in a chord modifier table (containing
+@code{maj}, @code{dim}, etc).
+
+Since combinations of numbers and dots are used for indicating
+durations, you can not enter real numbers in this mode.  Dashes
+and carets are used to indicate chord additions and subtractions,
+so scripts can not be entered in Chord mode.
+
+@c_  {Entering named chords}
 @node Entering named chords
 @node Entering named chords
-@unnumberedsubsec named chords
+@subsection Entering named chords
+@cindex Chords names
 
 Chord names are a way to generate simultaneous music expressions that
 correspond with traditional chord names.  It can only be used in
 
 Chord names are a way to generate simultaneous music expressions that
 correspond with traditional chord names.  It can only be used in
@@ -1629,765 +2011,843 @@ See @ref{Chord names}.
 
 You should not combine @code{\relative} with named chords. [FIXME]
 
 
 You should not combine @code{\relative} with named chords. [FIXME]
 
+@c_  {Printing named chords}
+@node Printing named chords
+@subsection Printing named chords
 
 
-@unnumberedsubsec Tuplets
-@cindex tuplets
+@cindex chord names
+@cindex chords
 
 
-Tuplets are made out of a music expression by multiplying their
-duration with a fraction.
+@cindex printing!chord names
+@cindex @code{ChordNames}
+@cindex @code{ChordNameVoice}
 
 
-@cindex @code{\times}
-@example
-  \times @var{fraction} @var{musicexpr}
-@end example
+For displaying printed chord names, use the @code{ChordNames} and
+@code{ChordNameVoice} contexts.  The chords may be entered either using
+the notation described above, or directly using simultaneous music.
 
 
-The duration of @var{musicexpr} will be multiplied by the fraction. 
-In print, the fraction's denominator will be printed over the notes,
-optionally with a bracket.  The most common tuplet is the triplet in
-which 3 notes have the length of 2, so the notes are 2/3 of
-their written length:
-
-@lilypond[fragment,verbatim,center]
-  g'4 \times 2/3 {c'4 c' c'} d'4 d'4
+@quotation
+@lilypond[verbatim]
+scheme = \notes {
+  \chords {a1 b c} <d f g>  <e g b>
+}
+\score {
+  \notes<
+    \context ChordNamesVoice \scheme
+    \context Staff \transpose c'' \scheme
+  >
+  \paper { linewidth = -1.; }
+}
 @end lilypond
 @end lilypond
-@cindex @code{\grace}
-
-
-@unnumberedsubsec Grace notes
-
-@cindex ornaments
-@cindex grace notes
-@cindex @code{graceAlignPosition}
-
-@example
-  \grace @var{musicexpr}
-@end example
-
-A grace note expression has duration 0; the next real note is
-assumed to be the main note.
-
-You cannot have the grace note after the main note, in terms of
-duration, and main notes, but you can typeset the grace notes to the
-right of the main note using the property
-@code{graceAlignPosition}.
-@cindex @code{flagStyle}
+@end quotation
 
 
-When grace music is interpreted, a score-within-a-score is set up:
-@var{musicexpr} has its own time bookkeeping, and you could (for
-example) have a separate time signature within grace notes.  While in
-this score-within-a-score, you can create notes, beams, slurs, etc.
-Unbeamed eighth notes and shorter by default have a slash through the
-stem.  This behavior can be controlled with the
-@code{flagStyle} property.
+You can make the chord changes stand out more by setting property
+@code{ChordNames.chordChanges} to true.  This will only display chord
+names when there's a change in the chords scheme, but always display the
+chord name after a line break:
 
 
+@c bug
 @quotation
 @quotation
-@lilypond[fragment,verbatim]
-\relative c'' {
-  \grace c8 c4 \grace { [c16 c16] } c4
-  \grace { \property Grace.flagStyle = "" c16 } c4
+@lilypond[verbatim]
+scheme = \chords {
+  c1:m \break c:m c:m c:m d
 }
 
 }
 
+\score {
+  \notes <
+    \context ChordNames \scheme
+    \context Staff \transpose c'' \scheme
+  >
+  \paper{
+    linewidth = 40 * \staffspace;
+    \translator {
+      \ChordNamesContext
+      chordChanges = ##t
+    }
+  }
+}
 @end lilypond
 @end quotation
 @end lilypond
 @end quotation
-@cindex @code{\grace}
-
-At present, nesting @code{\grace} notes is not supported. The following
-may cause run-time errors:
-@example
-  @code{\grace @{ \grace c32 c16 @} c4}
-@end example
-Since the meaning of such a construct is unclear, we don't consider
-this a loss.  Similarly, juxtaposing two @code{\grace} sections is
-syntactically valid, but makes no sense and may cause runtime errors.
-
-Ending a staff or score with grace notes may also generate a run-time
-error, since there will be no main note to attach the grace notes to.
-
-The present implementation is not robust and generally kludgy. We expect
-it to change after LilyPond 1.4
-
-
-@node Repeats
-@section Repeats
-@cindex repeats
-
-@cindex @code{\repeat}
-
-In order to specify repeats, use the @code{\repeat}
-keyword.  Since repeats look and sound differently when played or
-printed, there are a few different variants of repeats.
-
-@table @asis
-@item unfolded  
-Repeated music is fully written (played) out.  Useful for MIDI
-output.
-
-@item volta  
-This is the normal notation: Repeats are not written out, but
-alternative endings (voltas) are printed, left to right.
-
-@item folded  
-Alternative endings are written stacked.  Which is unfortunately not
-practical for anything right now.
-
-@item tremolo
-Make tremolo beams.
-@end table  
-
-The syntax for repeats is
-
-@example
-  \repeat @var{variant} @var{repeatcount} @var{repeatbody}
-@end example
 
 
-If you have alternative endings, you may add
-
-@cindex @code{\alternative}
-@example
- \alternative @code{@{} @var{alternative1}
-            @var{alternative2}
-            @var{alternative3} @dots{} @code{@}}
-@end example
 
 
-where each @var{alternative} is a Music expression.
 
 
-Normal notation repeats are used like this:
+LilyPond examines chords specified as lists of notes to determine a
+name to give the chord. LilyPond will not try to
+identify chord inversions or added base, which may result in strange
+chord names when chords are entered as a list of pitches:
 
 @quotation
 
 @quotation
+@lilypond[verbatim,center]
+scheme = \notes {
+  <c'1 e' g'>
+  <e' g' c''>
+  <e e' g' c''>
+}
 
 
-@lilypond[fragment,verbatim]
-  c'1
-  \repeat volta 2 { c'4 d' e' f' }
-  \repeat volta 2 { f' e' d' c' }
-
+\score {
+  <
+    \context ChordNamesVoice \scheme
+    \context Staff \scheme
+  >
+  \paper { linewidth = -1.; }
+}
 @end lilypond
 @end quotation
 
 @end lilypond
 @end quotation
 
-With alternative endings:
+To specify chord inversions, append @code{/<notename>}.  To specify an
+added bass note, append @code{/+<notename}:
 
 @quotation
 
 @quotation
+@lilypond[verbatim,center]
+scheme = \chords {
+  d1 d/a d/+gis
+}
 
 
-@lilypond[fragment,verbatim]
-  c'1
-  \repeat volta 2 {c'4 d' e' f'} 
-  \alternative { {d'2 d'} {f' f} }
-
+\score {
+  \notes <
+    \context ChordNames \scheme
+    \context Staff \transpose c'' \scheme
+  >
+  \paper { linewidth = -1.; }
+}
 @end lilypond
 @end quotation
 
 @end lilypond
 @end quotation
 
-Folded repeats look like this:@footnote{Folded repeats offer little
-more over simultaneous music.  However, it is to be expected that
-more functionality -- especially for the MIDI backend -- will be
-implemented.}
-
-@quotation
-
-@lilypond[fragment,verbatim]
-  c'1
-  \repeat fold 2 {c'4 d' e' f'} 
-  \alternative { {d'2 d'} {f' f} }
-
-@end lilypond
-@end quotation
+The chord names that LilyPond should print are fully customizable.  The
+code to print chord names is written in Scheme. It can be found in
+@file{scm/chord-name.scm}.  Chord names are based on Banter style
+naming, which is unambiguous and has a logical structure.  Typical
+American style chord names are implemented as a variation on Banter
+names, they can be selected by setting property @code{ChordName.style}
+to @code{american}:
 
 @quotation
 
 @quotation
+@lilypond[verbatim]
+\include "english.ly"
 
 
-@lilypond[fragment,verbatim]
-\context Staff {
-  \relative c' {
-    \partial 4;
-    \repeat volta 2 { e | c2 d2 | e2 f2 | }
-    \alternative { { g4 g g } { a | a a a a | b1 } }
-  }
+scheme = \chords {
+  c         % Major triad
+  cs:m      % Minor triad
+  df:m5-    % Diminished triad
+  c:5^3     % Root-fifth chord
+  c:4^3     % Suspended fourth triad
+  c:5+      % Augmented triad
+  c:2^3     % "2" chord
+  c:m5-.7-  % Diminished seventh
+  c:7+      % Major seventh
+  c:7.4^3   % Dominant seventh suspended fourth
+  c:5+.7    % Augmented dominant seventh
+  c:m5-.7   % "Half" diminished seventh
+  c:5-.7    % Dominant seventh flat fifth
+  c:5-.7+   % Major seventh flat fifth
+  c:m7+     % Minor-major seventh
+  c:m7      % Minor seventh
+  c:7       % Dominant seventh
+  c:6       % Major sixth
+  c:m6      % Minor sixth
+  c:9^7     % Major triad w/added ninth
+  c:6.9^7   % Six/Nine chord
+  c:9       % Dominant ninth 
+  c:7+.9    % Major ninth
+  c:m7.9    % Minor ninth
 }
 
 }
 
-@end lilypond
-@end quotation
-
-If you don't give enough alternatives for all of the repeats, then
-the first alternative is assumed to be repeated often enough to equal
-the specified number of repeats.
-
-@quotation
-@lilypond[fragment,verbatim]
-\context Staff {
-  \relative c' {
-    \repeat volta 3 { \partial 4; e | c2 d2 | e2 f2 | }
-    \alternative { { g4 g g }
-                   {\partial 1; e4 e e } 
-                   {\partial 1; a a a a | b1 } }
+\score {
+  \notes <
+    \context ChordNames \scheme
+    \context Staff \transpose c'' \scheme
+  >
+  \paper {
+    \translator { 
+      \ChordNamesContext
+      ChordName \override #'word-space = #1 
+      ChordName \override #'style = #'american
+    }
   }
 }
 @end lilypond
 @end quotation
 
   }
 }
 @end lilypond
 @end quotation
 
-As you can see, LilyPond doesn't remember the timing information, nor
-are slurs or ties repeated. We hope to fix this after 1.4. 
-
-It is possible to nest @code{\repeat}.  This is not entirely
-supported: the notes will come be in the right places, but the repeat
-bars will not.
+Similarly, Jazz style chord names are implemented as a variation on
+American style names:
+@quotation
+@lilypond[verbatim]
+scheme = \chords {
+  % major chords
+  c
+  c:6          % 6 = major triad with added sixth
+  c:maj                % triangle = maj
+  c:6.9^7      % 6/9 
+  c:9^7                % add9
 
 
-To place tremolo marks between notes, use @code{\repeat} with tremolo
-style.
-@cindex tremolo beams
-To create tremolo beams on a single note, simply attach
-`@code{:}@var{length}' to the note itself.
+  % minor chords
+  c:m          % m = minor triad
+  c:m.6                % m6 = minor triad with added sixth
+  c:m.7+       % m triangle = minor major seventh chord
+  c:3-.6.9^7   % m6/9 
+  c:m.7                % m7
+  c:3-.9       % m9
+  c:3-.9^7     % madd9
 
 
-@lilypond[verbatim,center]
-\score { 
-  \context Voice \notes\relative c' {
-    \repeat "tremolo" 8 { c16 d16 }
-    \repeat "tremolo" 4 { c16 d16 }    
-    \repeat "tremolo" 2 { c16 d16 }    
-  }
+  % dominant chords
+  c:7          % 7 = dominant
+  c:7.5+       % +7 = augmented dominant
+  c:7.5-       % 7b5 = hard diminished dominant
+  c:9          % 7(9)
+  c:9-         % 7(b9)
+  c:9+         % 7(#9)
+  c:13^9.11    % 7(13)
+  c:13-^9.11   % 7(b13)
+  c:13^11      % 7(9,13)
+  c:13.9-^11   % 7(b9,13)
+  c:13.9+^11   % 7(#9,13)
+  c:13-^11     % 7(9,b13)
+  c:13-.9-^11  % 7(b9,b13)
+  c:13-.9+^11  % 7(#9,b13)
+
+  % half diminished chords
+  c:m5-.7              % slashed o = m7b5
+  c:9.3-.5-    % o/7(pure 9)
+
+  % diminished chords
+  c:m5-.7-     % o = diminished seventh chord
+}
+
+\score {
+  \notes <
+    \context ChordNames \scheme
+    \context Staff \transpose c'' \scheme
+  >
   \paper {
   \paper {
-    linewidth = 40*\staffspace;
-  }  
+    \translator { 
+      \ChordNamesContext
+      ChordName \override #'word-space = #1 
+      ChordName \override #'style = #'jazz
+    }
+  }
 }
 @end lilypond
 }
 @end lilypond
-@cindex @code{__}
+@end quotation
 
 
-@lilypond[fragment,verbatim,center]
 
 
-  c'4:32
-@end lilypond
 
 
 
 
+@c_ {Page layout}
+@node Page layout
+@section Page layout
+@cindex Page layout
 
 
+@menu
+* Paper block::                 
+* Paper variables::             
+* Font Size::                   
+* Paper size::                  
+* Line break::                  
+* Page break::                  
+@end menu
 
 
+@c_  {Paper block}
+@node Paper block
+@subsection Paper block
+@cindex Paper block
 
 
-@node transpose
-@section Transposition
-@cindex transposition of pitches
-@cindex @code{\transpose}
+The most important output definition is the @code{\paper} block, for
+music notation.  The syntax is
 
 
-A music expression can be transposed with @code{\transpose}.  The syntax
-is
 @example
 @example
-  \transpose @var{pitch} @var{musicexpr}
+  @code{\paper @{} [@var{paperidentifier}] @var{items} @code{@}}
 @end example
 
 @end example
 
-This means that middle C in @var{musicexpr} is transposed to
-@var{pitch}.
-
-@code{\transpose} distinguishes between enharmonic pitches: both
-@code{\transpose cis'} or @code{\transpose des'} will transpose up half
-a tone.  The first version will print sharps and the second version
-will print flats.
+where each of the items is one of
 
 
-@quotation
-@lilypond[fragment,verbatim]
-\context Staff {
-  \clef "F";
-  { \key e \major; c d e f }
-  \clef "G";
-  \transpose des'' { \key e \major; c d e f }
-  \transpose cis'' { \key e \major; c d e f }
-}
+@itemize @bullet
+  @item  An assignment.  The assignment must be terminated by a
+       semicolon.  
 
 
-@end lilypond
-@end quotation
+  @item  A context definition.  See section @ref{contextdefs} for
+       more information on context definitions.
 
 
-If you want to use both @code{\transpose} and @code{\relative}, then
-you must use @code{\transpose} first.  @code{\relative} will have no
-effect music that appears inside a @code{\transpose}.
+@ignore
 
 
-@unnumberedsubsec Adding melodies to lyrics 
-@cindex automatic lyric durations
-@cindex @code{\addlyrics}
+                FIXME
 
 
-If you have lyrics that are set to a melody, you can import the rhythm
-of that melody into the lyrics using @code{\addlyrics}.  The syntax for
-this is
-@example
-  \addlyrics @var{musicexpr1 musicexpr2}
-@end example
 
 
-This means that both @var{musicexpr1} and @var{musicexpr2} are
-interpreted, but that every non-command atomic music expression
-(``every syllable'') in @var{musicexpr2} is interpreted using timing
-of @var{musicexpr1}.
-@cindex @code{automaticMelismata}
+  @item
+        
+        A margin shape declaration.  The syntax is
+@cindex @code{\shape}
+       @example
 
 
-If the property @code{automaticMelismata} is set in the
-context of @var{musicexpr1}, no lyrics will be put on slurred or tied
-notes.
+         \shape @var{indent1}@code{,} @var{width1}@code{,}
+                      @var{indent2}@code{,} @var{width2} @dots{} @code{;}
+         @end example
 
 
-@quotation
-@lilypond[verbatim,fragment]
-\addlyrics
-\transpose c'' {
-  \property Voice.automaticMelismata = ##t
-  c8 () cis d8. e16 f2
-}
-\context Lyrics \lyrics {
- do4 re mi fa }
-@end lilypond
-@end quotation
+       
 
 
-You should use a single rhythm melody, and single rhythm lyrics (a
-constant duration is the obvious choice).  If you do not, you will get
-undesired effects when using multiple stanzas:
+       Each pair of @var{indent} and @var{width} values is a dimension
+       specifying how far to indent and how wide to make the line. 
+       The indentation and width of successive lines are specified by
+       the successive pairs of dimensions.  The last pair of
+       dimensions will define the characeristics of all lines beyond
+       those explicitly specified.
+@end ignore
 
 
-@quotation
-@lilypond[verbatim,fragment]
-\addlyrics
-\transpose c'' {
-  c8 () cis d8. e16 f2
-}
-\context Lyrics \lyrics
-< { do4 re mi fa }
-  { do8 re mi fa } >
+  @item  \stylesheet  declaration.  Its syntax is
+       @example
+               \stylesheet @var{alist}
+       @end example
 
 
-@end lilypond
-@end quotation
+        See @file{font.scm} for details of @var{alist}.
+@end itemize
 
 
-It is valid (but probably not very useful) to use notes instead of
-lyrics for @var{musicexpr2}.
+@c_  {Paper variables}
+@node Paper variables
+@subsection Paper variables 
+@cindex Paper variables
 
 
-@node Transforming music 
-@unnumberedsubsec Apply
-@unnumberedsubsec Transforming music
+The paper block has some variables you may want to use or change:
 
 
-Apply allows a Scheme-function to operate directly on the internal
-representation of music.
-@example
-        \apply #@var{func} @var{music}
-@end example
-The function takes two arguments, being a function and an musical
-argument for that function. The function should return a music
-expression.
+@table @code
+@cindex @code{indent}
+  @item @code{indent}  
+    The indentation of the first line of music.
+@cindex @code{staffspace}
 
 
-This example replaces the text string of a script. It also shows a dump
-of the music it processes.
-@lilypond[verbatim]
-#(define (testfunc x)
-        (if (eq? (ly-get-mus-property x 'text) "foo")
-                (ly-set-mus-property x 'text "bar"))
-        ;; recurse
-        (ly-set-mus-property x 'elements
-          (map testfunc (ly-get-mus-property x 'elements)))
-        (display x)
-        x        
-)
-\score { \notes
-  \apply #testfunc { c4_"foo" }
-} 
-@end lilypond
+  @item @code{staffspace}
+    The distance between two staff lines, calculated from the center
+    of the lines.  You should use either this or @code{rulethickness}
+    as a unit for distances you modify.
+  
+@cindex @code{linewidth}
+  @item @code{linewidth}  
+    Sets the width of the lines.  If set to -1.0, a single
+    unjustified line is produced.  If you use this variable, you
+    probably want to define it in staff spaces, ie
+    @example
+        linewidth = 30 * \staffspace;
+    @end example
+@cindex @code{textheight}
 
 
-For more information on what is possible, see the @ref{Tricks} and the
-automatically generated documentation.
+  @item @code{textheight}  
+    Sets the total height of the music on each page. Only used by
+    ly2dvi.
+@cindex @code{interscoreline}
 
 
+  @item @code{interscoreline}  
+    Sets the spacing between the score lines. Defaults to 16 pt.
+@cindex @code{interscorelinefill}
 
 
-@node Ambiguities
-@section Ambiguities
-@cindex ambiguities
-@cindex grammar
+  @item @code{interscorelinefill}  
+    If set to a positive number, the distance between the score 
+    lines will stretch in order to fill the full page. In that
+    case @code{interscoreline} specifies the minimum spacing.
+    Defaults to 0.
+@cindex @code{stafflinethickness}
 
 
+  @item @code{stafflinethickness}  
+    Determines the thickness of staff lines, and also acts as a scaling
+    parameter for other line thicknesses.
+@end table
 
 
-The grammar contains a number of ambiguities. We hope to resolve them at
-some time.
 
 
-@itemize @bullet
-  @item  The assignment
+@c_  {Font size}
+@node Font Size
+@subsection Font size
+@cindex font size
 
 
-         @example 
-foo = bar 
-@end example 
+The Feta font provides musical symbols at six different sizes.  These
+fonts are 11 point, 13 point, 16 point, 20 point,
+23 point, and 26 point.  The point size of a font is the
+height of the five lines in a staff when displayed in the font.
 
 
-       can be interpreted as making a string identifier @code{\foo}
-       containing @code{"bar"}, or a music identifier @code{\foo}
-       containing the syllable `bar'.
+Definitions for these sizes are the files @file{paperSZ.ly}, where
+@code{SZ} is one of 11, 13, 16, 20, 23 and 26.  If you include any of
+these files, the identifiers @code{paperEleven}, @code{paperThirteen},
+@code{paperSixteen}, @code{paperTwenty}, @code{paperTwentythree}, and
+@code{paperTwentysix} are defined respectively.  The default
+@code{\paper} block is also set.
 
 
-  @item  The assignment
+The font definitions are generated using a Scheme function. For more
+details, see the file @file{font.scm}.
 
 
-         @example 
-foo = -6 
-@end example 
 
 
-       can be interpreted as making an integer identifier
-       containing -6, or a Request identifier containing the
-       fingering `6' (with neutral direction).
 
 
-  @item  If you do a nested repeat like
+@c_  {Paper size}
+@node Paper size
+@subsection Paper size
+@cindex Paper size
 
 
-       @quotation
+@cindex paper size
+@cindex page size
+@cindex @code{papersize}
 
 
-@example 
-\repeat @dots{}
-\repeat @dots{}
-\alternative 
-@end example 
+To change the paper size, you must first set the
+@code{papersize} variable at top level.  Set it to
+the strings @code{a4}, @code{letter}, or @code{legal}.  After this
+specification, you must set the font as described above.  If you want
+the default font, then use the 20 point font.  The new paper size will
+not take effect if the font is not loaded and selected afterwards.
 
 
-       @end quotation
+@example
+        papersize = "a4"
+        \include "paper16.ly"
 
 
-       then it is ambiguous to which @code{\repeat} the
-       @code{\alternative} belongs.  This is the classic if-then-else
-       dilemma.  It may be solved by using braces.
+        \score @{
+                ...
+                \paper @{ \paperSixteen @}
+        @}
+@end example
 
 
-  @item  (an as yet unidentified ambiguity :-)
-@end itemize
+The file "paper16.ly" will now include a file named @file{a4.ly}, which
+will set the paper variables @code{hsize} and @code{vsize} (used by
+@code{ly2dvi})
 
 
 
 
 
 
-@node Automatic Beaming
-@section Automatic Beaming
-@cindex automatic beam generation
-@cindex autobeam
 
 
-@cindex @code{Voice.noAutoBeaming}
 
 
-By default, LilyPond will generate beams automatically.  This feature
-can be disabled by setting the @code{Voice.noAutoBeaming} property to
-true.  It can be overridden for specific cases by specifying explicit
-beams.
 
 
-@cindex @code{Voice.autoBeamSettings}
-@cindex @code{(end * * * *)}
-@cindex @code{(begin * * * *)}
 
 
-A large number of Voice properties are used to decide how to generate
-beams.  Their default values appear in @file{scm/auto-beam.scm}.  In
-general, beams can begin anywhere, but their ending location is
-significant.  Beams can end on a beat, or at durations specified by the
-properties in
-@code{Voice.autoBeamSettings}.
-To end beams every quarter note, for example, you could set the property
-@code{(end * * * *)}  to @code{(make-moment 1
-4)}.  To end beams at every three eighth notes you would set
-it to @code{(make-moment 1 8)}.
-The same syntax can be used to specify beam
-starting points using
-@code{(begin * * * *)}, eg:
-@quotation
+@c_  {Line break}
+@node Line break
+@subsection Line break
+@cindex Line break
+
+
+@cindex @code{\penalty}
+
 @example
 @example
-\property Voice.autoBeamSettings \override
-    #'(end * * * *) = #(make-moment 1 4)
-\property Voice.autoBeamSettings \override
-    #'(begin * * * *) = #(make-moment 1 8)
+  \penalty @var{int} @code{;}
 @end example
 @end example
-@end quotation
 
 
-To allow different settings for different time signatures, instead of
-the first two asterisks @code{* *} you can specify a time signature; use
-@code{(end N M * *)} to restrict the definition to
-`@var{N}@code{/}@var{M}' time.  For example, to specify beams ending
-only for 6/8 time you would use the property @code{(end 6 8 * *)}.
+Discourage or encourage line breaks.  See @ref{Page layout}. 
 
 
-To allow different endings for notes of different durations, instead of
-th last two asterisks you can specify a duration; use @code{(end * * N
-M)} to restrict the definition to beams that contain notes of
-`@var{N}@code{/}@var{M}' duration.
 
 
-For example, to specify beam endings for beams that contain 32nd notes,
-you would use @code{(end * * 1 32)}.
 
 
 
 
-@node Printing named chords
-@section Printing named chords
-@cindex chord names
-@cindex chords
+@cindex line breaks
+@cindex breaking lines
 
 
-@cindex printing!chord names
-@cindex @code{ChordNames}
-@cindex @code{ChordNameVoice}
+Line breaks are normally computed automatically. They are chosen such
+that the resulting spacing has low variation, and looks neither cramped
+nor loose.
 
 
-For displaying printed chord names, use the @code{ChordNames} and
-@code{ChordNameVoice} contexts.  The chords may be entered either using
-the notation described above, or directly using simultaneous music.
+Occasionally you might want to override the automatic breaks; you can do
+this by specifying @code{\break} (see also @ref{Pre-defined
+Identifiers}). This will force a line break at this point. Do remember
+that line breaks can only occur at places where there are barlines.  If
+you want to have a line break where there is no barline, you can force a
+barline by entering @code{\bar "";}.
 
 
-@quotation
-@lilypond[verbatim]
-scheme = \notes {
-  \chords {a1 b c} <d f g>  <e g b>
-}
-\score {
-  \notes<
-    \context ChordNamesVoice \scheme
-    \context Staff \transpose c'' \scheme
-  >
-  \paper { linewidth = -1.; }
-}
-@end lilypond
-@end quotation
 
 
-You can make the chord changes stand out more by setting property
-@code{ChordNames.chordChanges} to true.  This will only display chord
-names when there's a change in the chords scheme, but always display the
-chord name after a line break:
 
 
-@c bug
-@quotation
-@lilypond[verbatim]
-scheme = \chords {
-  c1:m \break c:m c:m c:m d
-}
 
 
-\score {
-  \notes <
-    \context ChordNames \scheme
-    \context Staff \transpose c'' \scheme
-  >
-  \paper{
-    linewidth = 40 * \staffspace;
-    \translator {
-      \ChordNamesContext
-      chordChanges = ##t
-    }
-  }
-}
-@end lilypond
-@end quotation
+@c_  {Page break}
+@node Page break
+@subsection Page break
+@cindex Page break
 
 
 
 
+Not implemented, but see @ref{Tricks}
 
 
-LilyPond examines chords specified as lists of notes to determine a
-name to give the chord. LilyPond will not try to
-identify chord inversions or added base, which may result in strange
-chord names when chords are entered as a list of pitches:
+Page breaks are normally computed by @TeX{}, so they are not under direct
+control.  However, you can insert a commands into the .tex output to
+instruct @TeX{} where to break pages. For more details, see  the
+example file @file{input/test/between-systems.ly}
 
 
-@quotation
-@lilypond[verbatim,center]
-scheme = \notes {
-  <c'1 e' g'>
-  <e' g' c''>
-  <e e' g' c''>
-}
 
 
-\score {
-  <
-    \context ChordNamesVoice \scheme
-    \context Staff \scheme
-  >
-  \paper { linewidth = -1.; }
-}
-@end lilypond
-@end quotation
+@cindex page breaks
+@cindex breaking pages
 
 
-To specify chord inversions, append @code{/<notename>}.  To specify an
-added bass note, append @code{/+<notename}:
 
 
-@quotation
-@lilypond[verbatim,center]
-scheme = \chords {
-  d1 d/a d/+gis
-}
 
 
-\score {
-  \notes <
-    \context ChordNames \scheme
-    \context Staff \transpose c'' \scheme
-  >
-  \paper { linewidth = -1.; }
-}
-@end lilypond
-@end quotation
 
 
-The chord names that LilyPond should print are fully customizable.  The
-code to print chord names is written in Scheme. It can be found in
-@file{scm/chord-name.scm}.  Chord names are based on Banter style
-naming, which is unambiguous and has a logical structure.  Typical
-American style chord names are implemented as a variation on Banter
-names, they can be selected by setting property @code{ChordName.style}
-to @code{american}:
 
 
-@quotation
-@lilypond[verbatim]
-\include "english.ly"
+@c_ {Sound}
+@node Sound
+@section Sound
+@cindex Sound
+@menu
+* MIDI block::                  
+* MIDI instrument names::       
+* Tempo::                       
+@end menu
 
 
-scheme = \chords {
-  c         % Major triad
-  cs:m      % Minor triad
-  df:m5-    % Diminished triad
-  c:5^3     % Root-fifth chord
-  c:4^3     % Suspended fourth triad
-  c:5+      % Augmented triad
-  c:2^3     % "2" chord
-  c:m5-.7-  % Diminished seventh
-  c:7+      % Major seventh
-  c:7.4^3   % Dominant seventh suspended fourth
-  c:5+.7    % Augmented dominant seventh
-  c:m5-.7   % "Half" diminished seventh
-  c:5-.7    % Dominant seventh flat fifth
-  c:5-.7+   % Major seventh flat fifth
-  c:m7+     % Minor-major seventh
-  c:m7      % Minor seventh
-  c:7       % Dominant seventh
-  c:6       % Major sixth
-  c:m6      % Minor sixth
-  c:9^7     % Major triad w/added ninth
-  c:6.9^7   % Six/Nine chord
-  c:9       % Dominant ninth 
-  c:7+.9    % Major ninth
-  c:m7.9    % Minor ninth
-}
+@c_  {MIDI block}
+@node MIDI block
+@subsection MIDI block
+@cindex MIDI block
 
 
-\score {
-  \notes <
-    \context ChordNames \scheme
-    \context Staff \transpose c'' \scheme
-  >
-  \paper {
-    \translator { 
-      \ChordNamesContext
-      ChordName \override #'word-space = #1 
-      ChordName \override #'style = #'american
-    }
-  }
-}
-@end lilypond
-@end quotation
 
 
-Similarly, Jazz style chord names are implemented as a variation on
-American style names:
-@quotation
-@lilypond[verbatim]
-scheme = \chords {
-  % major chords
-  c
-  c:6          % 6 = major triad with added sixth
-  c:maj                % triangle = maj
-  c:6.9^7      % 6/9 
-  c:9^7                % add9
+The MIDI block is analogous to the paper block, but it is somewhat
+simpler.  The @code{\midi} block can contain:
+@cindex MIDI block
 
 
-  % minor chords
-  c:m          % m = minor triad
-  c:m.6                % m6 = minor triad with added sixth
-  c:m.7+       % m triangle = minor major seventh chord
-  c:3-.6.9^7   % m6/9 
-  c:m.7                % m7
-  c:3-.9       % m9
-  c:3-.9^7     % madd9
+@itemize @bullet
+  @item  a @code{\tempo} definition
+  @item  context definitions
+@end itemize
 
 
-  % dominant chords
-  c:7          % 7 = dominant
-  c:7.5+       % +7 = augmented dominant
-  c:7.5-       % 7b5 = hard diminished dominant
-  c:9          % 7(9)
-  c:9-         % 7(b9)
-  c:9+         % 7(#9)
-  c:13^9.11    % 7(13)
-  c:13-^9.11   % 7(b13)
-  c:13^11      % 7(9,13)
-  c:13.9-^11   % 7(b9,13)
-  c:13.9+^11   % 7(#9,13)
-  c:13-^11     % 7(9,b13)
-  c:13-.9-^11  % 7(b9,b13)
-  c:13-.9+^11  % 7(#9,b13)
+Assignments in the @code{\midi} block are not allowed.
 
 
-  % half diminished chords
-  c:m5-.7              % slashed o = m7b5
-  c:9.3-.5-    % o/7(pure 9)
 
 
-  % diminished chords
-  c:m5-.7-     % o = diminished seventh chord
-}
 
 
-\score {
-  \notes <
-    \context ChordNames \scheme
-    \context Staff \transpose c'' \scheme
-  >
-  \paper {
-    \translator { 
-      \ChordNamesContext
-      ChordName \override #'word-space = #1 
-      ChordName \override #'style = #'jazz
-    }
-  }
-}
-@end lilypond
-@end quotation
+@cindex context definition
 
 
+Context definitions follow precisely the same syntax as within the
+\paper block.  Translation modules for sound are called performers.
+The contexts for MIDI output are defined in @file{ly/performer.ly}.
 
 
-@node Printing lyrics
-@section lyricprint
-@cindex lyrics
 
 
-@cindex printing!lyrics
+@c_  {MIDI instrument names}
+@node MIDI instrument names
+@subsection MIDI instrument names
+@cindex instrument names
+@cindex @code{Staff.midiInstrument}
+@cindex @code{Staff.instrument}
 
 
+The MIDI instrument name is set by the @code{Staff.midiInstrument}
+property or, if that property is not set, the @code{Staff.instrument}
+property.  The instrument name should be chosen from the following list.
+If the selected string does not exactly match, then LilyPond uses the
+default piano.
 
 
-Lyric syllables must be interpreted within a @code{Lyrics} context
+[FIXME: to appendix ]
 
 
-@cindex context!Lyrics
- for printing them.
 
 
-Here is a full example: 
+@example 
+"acoustic grand"            "contrabass"           "lead 7 (fifths)"
+"bright acoustic"           "tremolo strings"      "lead 8 (bass+lead)"
+"electric grand"            "pizzicato strings"    "pad 1 (new age)"
+"honky-tonk"                "orchestral strings"   "pad 2 (warm)"
+"electric piano 1"          "timpani"              "pad 3 (polysynth)"
+"electric piano 2"          "string ensemble 1"    "pad 4 (choir)"
+"harpsichord"               "string ensemble 2"    "pad 5 (bowed)"
+"clav"                      "synthstrings 1"       "pad 6 (metallic)"
+"celesta"                   "synthstrings 2"       "pad 7 (halo)"
+"glockenspiel"              "choir aahs"           "pad 8 (sweep)"
+"music box"                 "voice oohs"           "fx 1 (rain)"
+"vibraphone"                "synth voice"          "fx 2 (soundtrack)"
+"marimba"                   "orchestra hit"        "fx 3 (crystal)"
+"xylophone"                 "trumpet"              "fx 4 (atmosphere)"
+"tubular bells"             "trombone"             "fx 5 (brightness)"
+"dulcimer"                  "tuba"                 "fx 6 (goblins)"
+"drawbar organ"             "muted trumpet"        "fx 7 (echoes)"
+"percussive organ"          "french horn"          "fx 8 (sci-fi)"
+"rock organ"                "brass section"        "sitar"
+"church organ"              "synthbrass 1"         "banjo"
+"reed organ"                "synthbrass 2"         "shamisen"
+"accordion"                 "soprano sax"          "koto"
+"harmonica"                 "alto sax"             "kalimba"
+"concertina"                "tenor sax"            "bagpipe"
+"acoustic guitar (nylon)"   "baritone sax"         "fiddle"
+"acoustic guitar (steel)"   "oboe"                 "shanai"
+"electric guitar (jazz)"    "english horn"         "tinkle bell"
+"electric guitar (clean)"   "bassoon"              "agogo"
+"electric guitar (muted)"   "clarinet"             "steel drums"
+"overdriven guitar"         "piccolo"              "woodblock"
+"distorted guitar"          "flute"                "taiko drum"
+"guitar harmonics"          "recorder"             "melodic tom"
+"acoustic bass"             "pan flute"            "synth drum"
+"electric bass (finger)"    "blown bottle"         "reverse cymbal"
+"electric bass (pick)"      "skakuhachi"           "guitar fret noise"
+"fretless bass"             "whistle"              "breath noise"
+"slap bass 1"               "ocarina"              "seashore"
+"slap bass 2"               "lead 1 (square)"      "bird tweet"
+"synth bass 1"              "lead 2 (sawtooth)"    "telephone ring"
+"synth bass 2"              "lead 3 (calliope)"    "helicopter"
+"violin"                    "lead 4 (chiff)"       "applause"
+"viola"                     "lead 5 (charang)"     "gunshot"
+"cello"                     "lead 6 (voice)" 
+@end example 
+
+
+
+
+
+@c_  {Tempo}
+@node Tempo
+@subsection Tempo
+@cindex Tempo
+@cindex beats per minute
+@cindex metronome marking
+
+@cindex @code{\tempo}
+@example
+  \tempo @var{duration} = @var{perminute} @code{;}
+@end example
+
+Used to specify the tempo.  For example, @code{\tempo 4 = 76;} requests
+output with 76 quarter notes per minute.
+
+
+
+
+
+@c_ {Music entry}
+@node Music entry
+@section Music entry
+@cindex Music entry
+@menu
+* Pre-defined Identifiers::     
+* Point and click::             
+@end menu
+
+@c_ {Music entry}
+@node Pre-defined Identifiers
+@subsection Pre-defined Identifiers
+@cindex pre-defined identifiers
+
+
+Various identifiers are defined in the initialization files to
+provide shorthands for some settings.  Most of them are in
+@file{ly/declarations.ly} and @file{ly/property.ly}.
+
+@table @code
+@cindex @code{\break}  
+  @item @code{\break}
+    Force a line break in music by using a large argument for the
+    keyword @code{\penalty}.
+
+@cindex @code{\nobreak}  
+  @item @code{\nobreak}
+    Prevent a line break in music by using a large negative argument
+    for the keyword @code{\penalty}.
+
+@cindex @code{\shiftOff}  
+  @item @code{\shiftOff}
+    Disable horizontal shifting of note heads that collide. 
+
+@cindex @code{\shiftOn}  
+  @item @code{\shiftOn}
+    Enable note heads that collide with other note heads to be
+    shifted horiztonally. Also @code{\shiftOnn} and @code{\shiftOnnn}
+set different shift values.
+
+@cindex @code{\stemBoth}  
+  @item @code{\stemBoth}
+    Allow stems, beams, and slurs to point either upwards or
+    downwards, decided automatically by LilyPond.
+
+@cindex @code{\stemDown}  
+  @item @code{\stemDown}
+    Force stems, beams, and slurs to point down.
+
+@cindex @code{\stemUp}  
+  @item @code{\stemUp}
+    Force stems, beams and slurs to point up.
+
+@end table
+
+
+@c_  {Point and click}
+@node Point and click
+@subsection Point and click
+
+[todo]
+
+@c_ {Engravers}
+@node Engravers
+@section Engravers
+@cindex engravers
+@menu
+* Context definitions::         
+* Notation Contexts::           
+@end menu
+
+@c_  {Context definitions}
+@node Context definitions
+@subsection Context definitions
+
+@cindex context definition
+@cindex translator definition
+@cindex engraver hacking
+
+
+A notation contexts is defined by the following information
+
+@enumerate 1
+  @item  A name.
+
+  @item  The LilyPond modules that do the actual conversion of music to
+       notation.  Each module is a so-called
+       @emph{engraver}
+@cindex engraver
+.
+
+  @item  How these modules should cooperate, i.e. which ``cooperation
+       module'' should be used.  This cooperation module is a special
+       type of engraver.
+
+  @item  What other contexts the context can contain,
+
+  @item  What properties are defined.
+@end enumerate
+
+A context definition has this syntax:
+
+@example
+
+  \translator @code{@{}
+                      @var{translatorinit} @var{translatormodifierlist}
+                    @code{@}}
+@end example
+
+@var{translatorinit} can be an identifier or of the form
+
+@example
+
+  \type @var{typename} @code{;}
+@end example
+
+@var{typename} is one of
+
+@table @code
+@cindex @code{Engraver_group_engraver}
+  @item @code{Engraver_group_engraver}  
+    The standard cooperation engraver.
+@cindex @code{Score_engraver}
+
+  @item @code{Score_engraver}  
+    This is cooperation module that should be in the top level context.
+@cindex @code{Grace_engraver_group}
+
+  @item @code{Grace_engraver_group}  
+    This is a special cooperation module (resembling
+    @code{Score_engraver}) that is used to created an embedded
+    `miniscore'.
+@end table 
+
+@var{translatormodifierlist} is a list of items where each item is
+one of
+
+@itemize @bullet
+  @item  @code{\consists} @var{engravername} @code{;}  
+    Add @var{engravername} to the list of modules in this context. 
+  The order of engravers added with @code{\consists} is
+    significant.
+  
+  @item  @code{\consistsend} @var{engravername} @code{;}  
+    Analogous to @code{\consists}, but makes sure that
+    @var{engravername} is always added to the end of the list of
+    engravers.
+
+    Some engraver types need to be at the end of the list; this
+    insures they are put there, and stay there, if a user adds or
+    removes engravers.  This command is usually not needed for
+    end-users.
+    
+  @item  @code{\accepts} @var{contextname} @code{;}  
+    Add @var{contextname} to the list of  context this context can
+    contain.  The first listed context is the context to create by
+    default.
+
+  @item @code{\denies}. The opposite of @code{\accepts}. Added for
+completeness, but is never used in practice.
+  
+  @item  @code{\remove} @var{engravername} @code{;}  
+    Remove a previously added (with @code{\consists}) engraver.
+  
+  @item  @code{\name} @var{contextname} @code{;}  
+    This sets name of the context, e.g. @code{Staff}, @code{Voice}.  If
+    the name is not specified, the translator won't do anything.
+
+  @item  @var{propname} @code{=} @var{value} @code{;}  
+    A property assignment.  It is allowed to use reals for
+    @var{value}.
+@end itemize
+
+In the @code{\paper} block, it is also possible to define translator
+identifiers.  Like other block identifiers, the identifier can only
+be used as the very first item of a translator.  In order to define
+such an identifier outside of @code{\score}, you must do
 
 @quotation
 
 @quotation
-@lilypond[verbatim]
-\score {
-  <
-    \notes \transpose c'' {
-      c d e c | c d e c |
-      e f g2 | e4 f g2 \bar "|.";
-    }
-    \context Lyrics \lyrics { 
-      Va-4 der Ja- cob Va- der Ja- cob
-      Slaapt gij nog?2 Slaapt4 gij nog?2
-    }
-  >
-}
 
 
-@end lilypond
-@end quotation
+@example 
+\paper @{
+  foo = \translator @{ @dots{} @}
+@}
+\score @{
+  \notes @{
+    @dots{}
+  @}
+  \paper @{
+    \translator @{ \foo @dots{} @}
+  @}
+@} 
+@end example 
+
+@end quotation
+
+
+@cindex paper types, engravers, and pre-defined translators
+
+Some pre-defined identifiers can simplify modification of
+translators.  The pre-defined identifiers are:
+
+@table @code
+@cindex @code{StaffContext}
+  @item @code{StaffContext}  
+    Default Staff context. 
+@cindex @code{RhythmicStaffContext}
+
+  @item @code{RhythmicStaffContext}  
+    Default RhythmicStaff context. 
+@cindex @code{VoiceContext}
+
+  @item @code{VoiceContext}  
+    Default Voice context.  
+@cindex @code{ScoreContext}
+
+  @item @code{ScoreContext}  
+    Default Score context. 
+@cindex @code{ScoreWithNumbers}
 
 
-You may want a continuous line after the syllables to show melismata. 
-To achieve this effect, add a @code{__} lyric as a separate word
-after the lyric to be extended.  This will create an extender, a line
-that extends over the entire duration of the lyric.  This line will
-run all the way to the start of the next lyric, so you may want to
-shorten it by using a blank lyric (using @code{_}).
+  @item @code{ScoreWithNumbers}  
+    Score context with numbering at the Score level.
+@cindex @code{BarNumberingStaffContext}
 
 
-@quotation
+  @item @code{BarNumberingStaffContext}  
+    Staff context with numbering at the Staff level.
+@cindex @code{HaraKiriStaffContext}
 
 
-@lilypond[verbatim]
-\score {
-  <
-    \notes \relative c'' {
-      a4 () b () c () d | c () d () b () a | c () d () b () a
-    }
-    \context Lyrics \lyrics {
-      foo1 __ | bar2. __ _4 | baz1 __
-    }
-  >
-}
+  @item @code{HaraKiriStaffContext}  
+    Staff context that does not print if it only contains rests. 
+    Useful for orchestral scores.@footnote{Harakiri, also called
+    Seppuku, is the ritual suicide of the Japanese Samourai warriors.}
+@cindex @code{OrchestralPartStaffContext}
 
 
-@end lilypond
-@end quotation
+  @item @code{OrchestralPartStaffContext}
+@cindex @code{OrchestralScoreContext}
 
 
-     
-If you want to have hyphens centered between syllables (rather than
-attached to the end of the first syllable) you can use the special
-`@code{-}@code{-}' lyric as a separate word between syllables.  This
-will result in a hyphen which length varies depending on the space
-between syllables, and which will be centered between the syllables. 
-For example:
+  @item @code{OrchestralScoreContext}
+@end table
+
+Using these pre-defined values, you can remove or add items to the
+translator:
 
 @quotation
 
 
 @quotation
 
-@lilypond[verbatim]
-\score {
-  <
-    \notes \transpose c'' {
-      c d e c | c d e c |
-      e f g2 | e4 f g2 \bar "|.";
-    }
-    \context Lyrics \lyrics {
-      Va4 -- der Ja -- cob | Va -- der Ja -- cob |
-      Slaapt gij nog?2 | Slaapt4 gij nog?2
-    }
-  >
-}
+@example 
+\paper @{
+  \translator @{
+    \StaffContext
+    \remove Some_engraver;
+    \consists Different_engraver;
+  @}
+@} 
+@end example 
 
 
-@end lilypond
 @end quotation
 
 @end quotation
 
+      
 
 
 
 
+@c_  {Notation Contexts}
 @node Notation Contexts
 @node Notation Contexts
-@section Notation Contexts
+@subsection Notation Contexts
 
 @cindex notation contexts
 
 
 @cindex notation contexts
 
@@ -2539,513 +2999,554 @@ notation are called @emph{engravers}, and translators for sound are
 called @emph{performers}.
 
 
 called @emph{performers}.
 
 
-@mbinclude properties.itely
 
 
-@node Page layout
-@section Page layout
+@c_ {Lexer innards}
+@node Lexer innards
+@section Lexer innards
+@cindex Lexer innards
+@menu
+* Top level::                   
+* Identifiers::                 
+* Assignments::                 
+* Lexical details::             
+* Lexical modes::               
+* Ambiguities::                 
+@end menu
 
 
-@subsection Paper block
+@c_  {Top level}
+@node Top level
+@subsection Top level
+@cindex Top level
 
 
-The most important output definition is the @code{\paper} block, for
-music notation.  The syntax is
+This section describes what you may enter at top level.
+
+
+@unnumberedsubsec Score definition
+@cindex score definition
+
+The output is generated combining a music expression with an output
+definition.  A score block has the following syntax:
 
 @example
 
 @example
-  @code{\paper @{} [@var{paperidentifier}] @var{items} @code{@}}
+  \score @{ @var{musicexpr} @var{outputdefs} @}
 @end example
 
 @end example
 
-where each of the items is one of
+@var{outputdefs} are zero or more output definitions.  If no output
+definition is supplied, the default @code{\paper} block will be added.
 
 
-@itemize @bullet
-  @item  An assignment.  The assignment must be terminated by a
-       semicolon.  
 
 
-  @item  A context definition.  See section @ref{contextdefs} for
-       more information on context definitions.
+@c_   {Score}
+@subsubsection Score
+@cindex Score
 
 
-@ignore
+@c_   {Paper}
+@subsubsection Paper
+@cindex Paper
 
 
-                FIXME
+@c_   {Midi}
+@subsubsection Midi
+@cindex Midi
 
 
+@c_   {Header}
+@subsubsection Header
+@cindex Header
+@cindex @code{\header}
 
 
-  @item
-        
-        A margin shape declaration.  The syntax is
-@cindex @code{\shape}
-       @example
+The syntax is
 
 
-         \shape @var{indent1}@code{,} @var{width1}@code{,}
-                      @var{indent2}@code{,} @var{width2} @dots{} @code{;}
-         @end example
+@example
+  \header @{ @var{key1} = @var{val1};
+@cindex @code{ly2dvi}
+             @var{key2} = @var{val2}; @dots{} @}
+@end example
 
 
-       
 
 
-       Each pair of @var{indent} and @var{width} values is a dimension
-       specifying how far to indent and how wide to make the line. 
-       The indentation and width of successive lines are specified by
-       the successive pairs of dimensions.  The last pair of
-       dimensions will define the characeristics of all lines beyond
-       those explicitly specified.
-@end ignore
+A header describes the file's contents.  It can also appear in a
+@code{\score} block.  Tools like @code{ly2dvi} can use this
+information for generating titles.  Key values that are used by
+@code{ly2dvi} are: title, subtitle, composer, opus, poet, instrument,
+metre, arranger, piece and tagline.
 
 
-  @item  \stylesheet  declaration.  Its syntax is
-       @example
-               \stylesheet @var{alist}
-       @end example
+It is customary to put the @code{\header} at the top of the file.
 
 
-        See @file{font.scm} for details of @var{alist}.
+@subsubsection Default output
+
+A @code{\midi} or @code{\paper} block at top-level sets the default
+
+paper block for all scores that lack an explicit paper block.
+
+@c_  {Identifiers}
+@node Identifiers
+@subsection Identifiers
+@cindex  Identifiers
+
+All of the information in a LilyPond input file, is represented as a
+Scheme value. In addition to normal Scheme data types (such as pair,
+number, boolean, etc.), LilyPond has a number of specialized data types,
+
+@itemize @bullet
+@item Input
+@item c++-function
+@item Music: see @ref{Music expressions}
+@item Identifier
+@item Translator_def:
+See section @ref{contextdefs} for more information
+@item Duration
+@item Pitch
+@item Score
+@item Music_output_def
+@item Moment (rational number)
 @end itemize
 
 @end itemize
 
+LilyPond also includes some transient object types. Objects of these
+types are built during a LilyPond run, and do not `exist' per se within
+your input file. These objects are created as a result of your input
+file, so you can include commands in the input to manipulate them,
+during a lilypond run.
 
 
-@subsection Paper variables 
+@itemize @bullet
+@item Grob: short for Graphical object. See @ref{Grobs}. 
+@item Molecule: device-independent page output object,
+including dimensions.  Produced by some Grob functions
+See @ref{Molecules}
+@item Translator: object that produces audio objects or Grobs. This is
+not yet user accessible.
+@item Font_metric: object representing a font. (See @ref{Font metrics})
+@c  @item Audio_element: (todo,  smobme)
+@end itemize
 
 
-The paper block has some variables you may want to use or change:
 
 
-@table @code
-@cindex @code{indent}
-  @item @code{indent}  
-    The indentation of the first line of music.
-@cindex @code{staffspace}
+@c_   {Assignments}
+@node Assignments
+@subsection Assignments
+@cindex Assignments
 
 
-  @item @code{staffspace}
-    The distance between two staff lines, calculated from the center
-    of the lines.  You should use either this or @code{rulethickness}
-    as a unit for distances you modify.
-  
-@cindex @code{linewidth}
-  @item @code{linewidth}  
-    Sets the width of the lines.  If set to -1.0, a single
-    unjustified line is produced.  If you use this variable, you
-    probably want to define it in staff spaces, ie
-    @example
-        linewidth = 30 * \staffspace;
-    @end example
-@cindex @code{textheight}
+Identifiers allow objects to be assigned to names during the parse
+stage.  To assign an identifier, you use @var{name}@code{=}@var{value}
+and to refer to an identifier, you preceed its name with a backslash:
+`@code{\}@var{name}'.  @var{value} is any valid Scheme value or any of
+the input-types listed above.  Identifier assignments can appear at top
+level in the LilyPond file, but also in @code{\paper} blocks.
 
 
-  @item @code{textheight}  
-    Sets the total height of the music on each page. Only used by
-    ly2dvi.
-@cindex @code{interscoreline}
+Semicolons are forbidden after top level assignments, but mandatory in
+other places. The rules about semicolons and assignments are very
+confusing, but when LilyPond input evolves more towards Scheme, we hope
+that this problem will grow smaller.
 
 
-  @item @code{interscoreline}  
-    Sets the spacing between the score lines. Defaults to 16 pt.
-@cindex @code{interscorelinefill}
+An identifier can be created with any string for its name, but you will
+only be able to refer to identifiers whose names begin with a letter,
+being entirely alphanumeric.  It is impossible to refer to an identifier
+whose name is the same as the name of a keyword.
 
 
-  @item @code{interscorelinefill}  
-    If set to a positive number, the distance between the score 
-    lines will stretch in order to fill the full page. In that
-    case @code{interscoreline} specifies the minimum spacing.
-    Defaults to 0.
-@cindex @code{stafflinethickness}
+The right hand side of an identifier assignment is parsed completely
+before the assignment is done, so it is allowed to redefine an
+identifier in terms of its old value, e.g.
 
 
-  @item @code{stafflinethickness}  
-    Determines the thickness of staff lines, and also acts as a scaling
-    parameter for other line thicknesses.
-@end table
+@example
+foo = \foo * 2.0
+@end example
+
+When an identifier is referenced, the information it points to is
+copied.  For this reason, an identifier reference must always be the
+first item in a block.
+@example
+\paper  @{
+foo = 1.0
+\paperIdent % wrong and invalid
+@}
+
+\paper @{
+\paperIdent % correct
+foo = 1.0
+@}
+@end example
+
+
+
+@c_  {Lexical details}
+@node Lexical details
+@subsection Lexical details
+@cindex Lexical details
+@menu
+@end menu
+
+@c_   {Comments}
+@subsubsection Comments
+@cindex Comments
 
 
+@cindex @code{%}
 
 
-@subsection Line breaks
 
 
-@cindex line breaks
-@cindex breaking lines
+A one line comment is introduced by a @code{%} character. 
+Block comments are started by @code{%@{} and ended by `@code{%@}}'. 
+They cannot be nested.
 
 
-Line breaks are normally computed automatically. They are chosen such
-that the resulting spacing has low variation, and looks neither cramped
-nor loose.
+@c_  {Direct Scheme}
+@subsubsection Direct Scheme
+@cindex Scheme
+@cindex GUILE
+@cindex Scheme, in-line code
 
 
-Occasionally you might want to override the automatic breaks; you can do
-this by specifying @code{\break} (see also @ref{Pre-defined
-Identifiers}). This will force a line break at this point. Do remember
-that line breaks can only occur at places where there are barlines.  If
-you want to have a line break where there is no barline, you can force a
-barline by entering @code{\bar "";}.
 
 
+LilyPond contains a Scheme interpreter (the GUILE library) for
+internal use. In some places Scheme expressions also form valid syntax:
+whereever it is allowed,
+@example
+  #@var{scheme}
+@end example
+evaluates the specified Scheme code. If this is used at toplevel, then
+the result is discarded. Example:
+@example
+  \property Staff.TestObject \override #'foobar =  #(+ 1 2)
+@end example
 
 
-@subsection Page breaks
+@code{\override} expects two Scheme expressions, so there are two Scheme
+expressions. The first one is a symbol (@code{foobar}), the second one
+an integer (namely, 3).
 
 
-Page breaks are normally computed by @TeX{}, so they are not under direct
-control.  However, you can insert a commands into the .tex output to
-instruct @TeX{} where to break pages. For more details, see  the
-example file @file{input/test/between-systems.ly}
+Scheme is a full-blown programming language, and a full discussion is
+outside the scope of this document. Interested readers are referred to
+the website @uref{http://www.schemers.org/} for more information on
+Scheme.
 
 
 
 
-@cindex page breaks
-@cindex breaking pages
+@c_   {Keywords}
+@subsubsection Keywords
+@cindex Keywords
 
 
 
 
-@subsection Font size
+Keywords start with a backslash, followed by a number of lower case
+alphabetic characters.  These are all the keywords.
 
 
-@cindex font size
+@example
+apply arpeggio autochange spanrequest commandspanrequest
+simultaneous sequential accepts alternative bar breathe
+char chordmodifiers chords clef cm consists consistsend
+context denies duration dynamicscript elementdescriptions
+font grace header in lyrics key mark pitch
+time times midi mm name pitchnames notes outputproperty
+override set revert partial paper penalty property pt
+relative remove repeat addlyrics partcombine score
+script stylesheet skip textscript tempo translator
+transpose type
+@end example
 
 
-The Feta font provides musical symbols at six different sizes.  These
-fonts are 11 point, 13 point, 16 point, 20 point,
-23 point, and 26 point.  The point size of a font is the
-height of the five lines in a staff when displayed in the font.
+@c_   {Integers}
+@subsubsection Integers
 
 
-Definitions for these sizes are the files @file{paperSZ.ly}, where
-@code{SZ} is one of 11, 13, 16, 20, 23 and 26.  If you include any of
-these files, the identifiers @code{paperEleven}, @code{paperThirteen},
-@code{paperSixteen}, @code{paperTwenty}, @code{paperTwentythree}, and
-@code{paperTwentysix} are defined respectively.  The default
-@code{\paper} block is also set.
+@cindex integers
+@cindex @code{+}
+@cindex @code{-}
+@cindex @code{*}
+@cindex @code{/}
 
 
-The font definitions are generated using a Scheme function. For more
-details, see the file @file{font.scm}.
+Formed from an optional minus sign followed by digits.  Arithmetic
+operations cannot be done with integers, and integers cannot be mixed
+with reals.
 
 
-@subsection Paper size
+@c_   {Reals}
+@subsubsection Reals
+@cindex real numbers
 
 
-@cindex paper size
-@cindex page size
-@cindex @code{papersize}
 
 
-To change the paper size, you must first set the
-@code{papersize} variable at top level.  Set it to
-the strings @code{a4}, @code{letter}, or @code{legal}.  After this
-specification, you must set the font as described above.  If you want
-the default font, then use the 20 point font.  The new paper size will
-not take effect if the font is not loaded and selected afterwards.
 
 
-@example
-        papersize = "a4"
-        \include "paper16.ly"
 
 
-        \score @{
-                ...
-                \paper @{ \paperSixteen @}
-        @}
-@end example
 
 
-The file "paper16.ly" will now include a file named @file{a4.ly}, which
-will set the paper variables @code{hsize} and @code{vsize} (used by
-@code{ly2dvi})
+Formed from an optional minus sign and a sequence of digits followed
+by a @emph{required} decimal point and an optional exponent such as
+@code{-1.2e3}.  Reals can be built up using the usual operations:
+`@code{+}', `@code{-}', `@code{*}', and
+`@code{/}', with parentheses for grouping.
 
 
-@node Context definitions
-@section Context definitions
+@cindex @code{\mm},
+@cindex @code{\in}
+@cindex @code{\cm}
+@cindex @code{\pt}
+@cindex dimensions
 
 
-@cindex context definition
-@cindex translator definition
-@cindex engraver hacking
+A real constant can be followed by one of the dimension keywords:
+@code{\mm} @code{\pt}, @code{\in}, or @code{\cm}, for millimeters,
+points, inches and centimeters, respectively.  This converts the number
+to a real that is the internal representation of dimensions.
 
 
 
 
-A notation contexts is defined by the following information
+@c_   {Strings}
+@subsubsection Strings
+@cindex string
+@cindex concatenate
 
 
-@enumerate 1
-  @item  A name.
+Begins and ends with the @code{"} character.  To include a @code{"}
+character in a string write @code{\"}.  Various other backslash
+sequences have special interpretations as in the C language.  A string
+that contains no spaces can be written without the quotes.  See
+@ref{Lexical modes} for details on unquoted strings; their interpretation varies
+depending on the situation.  Strings can be concatenated with the
+@code{+} operator.
 
 
-  @item  The LilyPond modules that do the actual conversion of music to
-       notation.  Each module is a so-called
-       @emph{engraver}
-@cindex engraver
-.
+The tokenizer accepts the following commands. They have no grammatical
+function, hence they can appear anywhere in the input.
 
 
-  @item  How these modules should cooperate, i.e. which ``cooperation
-       module'' should be used.  This cooperation module is a special
-       type of engraver.
 
 
-  @item  What other contexts the context can contain,
+@c_   {Main input}
+@subsubsection Main input
+@cindex Main input
 
 
-  @item  What properties are defined.
-@end enumerate
+@cindex @code{\maininput}
 
 
-A context definition has this syntax:
+The @code{\maininput} command is used in init files to signal that the
+user file must be read. This command cannot be used in a user file.
 
 
-@example
+@c_   {File inclusion}
+@subsubsection Main input
+@cindex Main input
 
 
-  \translator @code{@{}
-                      @var{translatorinit} @var{translatormodifierlist}
-                    @code{@}}
+@subsubsection File inclusion
+@cindex @code{\include}
+@example
+  \include @var{filename}
 @end example
 
 @end example
 
-@var{translatorinit} can be an identifier or of the form
+Include @var{filename}.  The argument @var{filename} may be a quoted string (an
+unquoted string will not work here!) or a string identifier.  The full
+filename including the @file{.ly} extension must be given,
 
 
+@subsubsection Version information 
+@cindex @code{\version}
 @example
 @example
-
-  \type @var{typename} @code{;}
+  \version @var{string} ;
 @end example
 
 @end example
 
-@var{typename} is one of
-
-@table @code
-@cindex @code{Engraver_group_engraver}
-  @item @code{Engraver_group_engraver}  
-    The standard cooperation engraver.
-@cindex @code{Score_engraver}
+Specify the version of LilyPond that a file was written for.  The
+argument is a version string in quotes, for example @code{"1.2.0"}. 
+This is used to detect invalid input, and to aid
+@code{convert-ly}  a tool that automatically upgrades input files. See
+See @ref{convert-ly} for more information on @code{convert-ly}.
 
 
-  @item @code{Score_engraver}  
-    This is cooperation module that should be in the top level context.
-@cindex @code{Grace_engraver_group}
+@cindex convert-ly
 
 
-  @item @code{Grace_engraver_group}  
-    This is a special cooperation module (resembling
-    @code{Score_engraver}) that is used to created an embedded
-    `miniscore'.
-@end table 
 
 
-@var{translatormodifierlist} is a list of items where each item is
-one of
 
 
-@itemize @bullet
-  @item  @code{\consists} @var{engravername} @code{;}  
-    Add @var{engravername} to the list of modules in this context. 
-  The order of engravers added with @code{\consists} is
-    significant.
-  
-  @item  @code{\consistsend} @var{engravername} @code{;}  
-    Analogous to @code{\consists}, but makes sure that
-    @var{engravername} is always added to the end of the list of
-    engravers.
 
 
-    Some engraver types need to be at the end of the list; this
-    insures they are put there, and stay there, if a user adds or
-    removes engravers.  This command is usually not needed for
-    end-users.
-    
-  @item  @code{\accepts} @var{contextname} @code{;}  
-    Add @var{contextname} to the list of  context this context can
-    contain.  The first listed context is the context to create by
-    default.
+@c_   {Pitch names}
+@subsubsection Pitch names
+@cindex Lexical modes
+@cindex pitch names
 
 
-  @item @code{\denies}. The opposite of @code{\accepts}. Added for
-completeness, but is never used in practice.
-  
-  @item  @code{\remove} @var{engravername} @code{;}  
-    Remove a previously added (with @code{\consists}) engraver.
-  
-  @item  @code{\name} @var{contextname} @code{;}  
-    This sets name of the context, e.g. @code{Staff}, @code{Voice}.  If
-    the name is not specified, the translator won't do anything.
+@cindex note names
+@cindex chord modifier names
 
 
-  @item  @var{propname} @code{=} @var{value} @code{;}  
-    A property assignment.  It is allowed to use reals for
-    @var{value}.
-@end itemize
+Note names and chord modifiers can be customised for nationalities.
+languages and conventions.  The syntax is as follows.
+@cindex @code{\pitchnames}
+@cindex @code{\chordmodifiers}
 
 
-In the @code{\paper} block, it is also possible to define translator
-identifiers.  Like other block identifiers, the identifier can only
-be used as the very first item of a translator.  In order to define
-such an identifier outside of @code{\score}, you must do
+@example
+   \pitchnames @var{scheme-alist}
+   \chordmodifiers @var{scheme-alist}
+@end example
 
 
-@quotation
+See @file{ly/nederlands.ly} and @file{ly/chord-modifiers.ly} for
+specific examples how to do this.  tables can be tailored specified
+using. Some national note names have been provided, see
+section @ref{Other languages}.
+A @code{\paper} block at top level sets the default paper block.  A
+@code{\midi} block at top level works similarly.
 
 
-@example 
-\paper @{
-  foo = \translator @{ @dots{} @}
-@}
-\score @{
-  \notes @{
-    @dots{}
-  @}
-  \paper @{
-    \translator @{ \foo @dots{} @}
-  @}
-@} 
-@end example 
+@c_   {Assignments}
+@subsubsection Assignments
+@cindex assignments
+@cindex @code{#}
 
 
-@end quotation
+Identifier assignments may appear at top level.  @ref{Assignments}
 
 
 
 
-@cindex paper types, engravers, and pre-defined translators
 
 
-Some pre-defined identifiers can simplify modification of
-translators.  The pre-defined identifiers are:
+@c_    {Direct scheme}
+@subsubsection Direct scheme
+@cindex Direct scheme
 
 
-@table @code
-@cindex @code{StaffContext}
-  @item @code{StaffContext}  
-    Default Staff context. 
-@cindex @code{RhythmicStaffContext}
+Scheme statements maybe issued to produce interesting side-effects. 
 
 
-  @item @code{RhythmicStaffContext}  
-    Default RhythmicStaff context. 
-@cindex @code{VoiceContext}
 
 
-  @item @code{VoiceContext}  
-    Default Voice context.  
-@cindex @code{ScoreContext}
+@c_  {Lexical modes}
+@node Lexical modes
+@subsection Lexical modes
+@cindex Lexical modes
 
 
-  @item @code{ScoreContext}  
-    Default Score context. 
-@cindex @code{ScoreWithNumbers}
+@cindex Lexical modes
+@cindex modes
 
 
-  @item @code{ScoreWithNumbers}  
-    Score context with numbering at the Score level.
-@cindex @code{BarNumberingStaffContext}
+To simplify entering notes, lyrics, and chords, LilyPond has three
+special input modes on top of the default mode.  In each mode, words
+are identified on the input.  If @code{"word"} is encountered, it is
+treated as a string.  If @code{\word} is encountered, it is treated as
+a keyword or as an identifier.  The behavior of the modes differs in
+two ways: Different modes treat unquoted words differently, and
+different modes have different rules for deciding what is a word.
 
 
-  @item @code{BarNumberingStaffContext}  
-    Staff context with numbering at the Staff level.
-@cindex @code{HaraKiriStaffContext}
+@table  @asis
+@item Normal mode.
+@cindex normal mode
+At the start of parsing, LilyPond is in Normal mode.  In Normal
+mode, a word is an alphabetic character followed by alphanumeric
+characters.  If @code{word} is encountered on the input it is
+treated as a string.
 
 
-  @item @code{HaraKiriStaffContext}  
-    Staff context that does not print if it only contains rests. 
-    Useful for orchestral scores.@footnote{Harakiri, also called
-    Seppuku, is the ritual suicide of the Japanese Samourai warriors.}
-@cindex @code{OrchestralPartStaffContext}
+@item Note mode
+See @ref{Note entry}.
 
 
-  @item @code{OrchestralPartStaffContext}
-@cindex @code{OrchestralScoreContext}
+@item Lyrics mode
+See @ref{Lyrics entry}.
 
 
-  @item @code{OrchestralScoreContext}
+@item Chord mode
+See @ref{Chord entry}.
 @end table
 
 @end table
 
-Using these pre-defined values, you can remove or add items to the
-translator:
+@cindex input modes
 
 
-@quotation
+@cindex mode switch
 
 
-@example 
-\paper @{
-  \translator @{
-    \StaffContext
-    \remove Some_engraver;
-    \consists Different_engraver;
-  @}
-@} 
-@end example 
+@cindex @code{\notes}
+@cindex @code{\chords}
+@cindex @code{\lyrics}
 
 
-@end quotation
+Mode switching keywords form compound music expressions: @code{\notes}
+@var{musicexpr}, @code{\chords}  @var{musicexpr},
+and @code{\lyrics}  @var{musicexpr}.  These
+expressions do not add anything to the meaning of their arguments.  They
+are just a way to indicate that the arguments should be parsed in
+indicated mode.  See @ref{Lexical modes} for more information on modes.
 
 
-      
-@node Sound output
-@section Sound output
+@c_  {Ambiguities}
+@node Ambiguities
+@subsection Ambiguities
+@cindex ambiguities
+@cindex grammar
 
 
-The MIDI block is analogous to the paper block, but it is somewhat
-simpler.  The @code{\midi} block can contain:
-@cindex MIDI block
+
+The grammar contains a number of ambiguities. We hope to resolve them at
+some time.
 
 @itemize @bullet
 
 @itemize @bullet
-  @item  a @code{\tempo} definition
-  @item  context definitions
-@end itemize
+  @item  The assignment
 
 
-Assignments in the @code{\midi} block are not allowed.
+         @example 
+foo = bar 
+@end example 
 
 
+       can be interpreted as making a string identifier @code{\foo}
+       containing @code{"bar"}, or a music identifier @code{\foo}
+       containing the syllable `bar'.
 
 
+  @item  The assignment
 
 
-@cindex context definition
+         @example 
+foo = -6 
+@end example 
 
 
-Context definitions follow precisely the same syntax as within the
-\paper block.  Translation modules for sound are called performers.
-The contexts for MIDI output are defined in @file{ly/performer.ly}.
+       can be interpreted as making an integer identifier
+       containing -6, or a Request identifier containing the
+       fingering `6' (with neutral direction).
 
 
+  @item  If you do a nested repeat like
 
 
+       @quotation
 
 
-@node midilist
-@section MIDI instrument names
-@cindex instrument names
-@cindex @code{Staff.midiInstrument}
-@cindex @code{Staff.instrument}
+@example 
+\repeat @dots{}
+\repeat @dots{}
+\alternative 
+@end example 
 
 
-The MIDI instrument name is set by the @code{Staff.midiInstrument}
-property or, if that property is not set, the @code{Staff.instrument}
-property.  The instrument name should be chosen from the following list.
-If the selected string does not exactly match, then LilyPond uses the
-default piano.
+       @end quotation
 
 
-[FIXME: to appendix ]
+       then it is ambiguous to which @code{\repeat} the
+       @code{\alternative} belongs.  This is the classic if-then-else
+       dilemma.  It may be solved by using braces.
 
 
-@c @quotation
+  @item  (an as yet unidentified ambiguity :-)
+@end itemize
 
 
-@example 
-"acoustic grand"            "contrabass"           "lead 7 (fifths)"
-"bright acoustic"           "tremolo strings"      "lead 8 (bass+lead)"
-"electric grand"            "pizzicato strings"    "pad 1 (new age)"
-"honky-tonk"                "orchestral strings"   "pad 2 (warm)"
-"electric piano 1"          "timpani"              "pad 3 (polysynth)"
-"electric piano 2"          "string ensemble 1"    "pad 4 (choir)"
-"harpsichord"               "string ensemble 2"    "pad 5 (bowed)"
-"clav"                      "synthstrings 1"       "pad 6 (metallic)"
-"celesta"                   "synthstrings 2"       "pad 7 (halo)"
-"glockenspiel"              "choir aahs"           "pad 8 (sweep)"
-"music box"                 "voice oohs"           "fx 1 (rain)"
-"vibraphone"                "synth voice"          "fx 2 (soundtrack)"
-"marimba"                   "orchestra hit"        "fx 3 (crystal)"
-"xylophone"                 "trumpet"              "fx 4 (atmosphere)"
-"tubular bells"             "trombone"             "fx 5 (brightness)"
-"dulcimer"                  "tuba"                 "fx 6 (goblins)"
-"drawbar organ"             "muted trumpet"        "fx 7 (echoes)"
-"percussive organ"          "french horn"          "fx 8 (sci-fi)"
-"rock organ"                "brass section"        "sitar"
-"church organ"              "synthbrass 1"         "banjo"
-"reed organ"                "synthbrass 2"         "shamisen"
-"accordion"                 "soprano sax"          "koto"
-"harmonica"                 "alto sax"             "kalimba"
-"concertina"                "tenor sax"            "bagpipe"
-"acoustic guitar (nylon)"   "baritone sax"         "fiddle"
-"acoustic guitar (steel)"   "oboe"                 "shanai"
-"electric guitar (jazz)"    "english horn"         "tinkle bell"
-"electric guitar (clean)"   "bassoon"              "agogo"
-"electric guitar (muted)"   "clarinet"             "steel drums"
-"overdriven guitar"         "piccolo"              "woodblock"
-"distorted guitar"          "flute"                "taiko drum"
-"guitar harmonics"          "recorder"             "melodic tom"
-"acoustic bass"             "pan flute"            "synth drum"
-"electric bass (finger)"    "blown bottle"         "reverse cymbal"
-"electric bass (pick)"      "skakuhachi"           "guitar fret noise"
-"fretless bass"             "whistle"              "breath noise"
-"slap bass 1"               "ocarina"              "seashore"
-"slap bass 2"               "lead 1 (square)"      "bird tweet"
-"synth bass 1"              "lead 2 (sawtooth)"    "telephone ring"
-"synth bass 2"              "lead 3 (calliope)"    "helicopter"
-"violin"                    "lead 4 (chiff)"       "applause"
-"viola"                     "lead 5 (charang)"     "gunshot"
-"cello"                     "lead 6 (voice)" 
-@end example 
 
 
-@c @end quotation
 
 
 
 
-@node Pre-defined Identifiers
 
 
-@section Pre-defined Identifiers
+@c_ {Unsorted}
+@node Unsorted
+@section Unsorted
 
 
-@cindex pre-defined identifiers
+[mucho todo]
 
 
+Translation?
 
 
-Various identifiers are defined in the initialization files to
-provide shorthands for some settings.  Most of them are in
-@file{ly/declarations.ly} and @file{ly/property.ly}.
+@cindex properties
+@unnumberedsubsec Translation property
 
 
-@table @code
-@cindex @code{\break}  
-  @item @code{\break}
-    Force a line break in music by using a large argument for the
-    keyword @code{\penalty}.
+@cindex @code{\property}
+@example
+  \property @var{contextname}.@var{propname} =  @var{value}
+@end example
 
 
-@cindex @code{\nobreak}  
-  @item @code{\nobreak}
-    Prevent a line break in music by using a large negative argument
-    for the keyword @code{\penalty}.
+Sets the @var{propname} property of the context @var{contextname} to
+the specified @var{value}.  All three arguments are strings. 
+Depending on the context, it may be necessary to quote the strings or
+to leave space on both sides of the dot.
 
 
-@cindex @code{\shiftOff}  
-  @item @code{\shiftOff}
-    Disable horizontal shifting of note heads that collide. 
+@cindex translator switches
+@unnumberedsubsec Translator switches
 
 
-@cindex @code{\shiftOn}  
-  @item @code{\shiftOn}
-    Enable note heads that collide with other note heads to be
-    shifted horiztonally. Also @code{\shiftOnn} and @code{\shiftOnnn}
-set different shift values.
+@cindex @code{\translator}
+@example
+  \translator @var{contexttype} = @var{name}
+@end example
 
 
-@cindex @code{\stemBoth}  
-  @item @code{\stemBoth}
-    Allow stems, beams, and slurs to point either upwards or
-    downwards, decided automatically by LilyPond.
+A music expression indicating that the context which is a direct
+child of the a context of type @var{contexttype} should be shifted to
+a context of type @var{contexttype} and the specified name.
 
 
-@cindex @code{\stemDown}  
-  @item @code{\stemDown}
-    Force stems, beams, and slurs to point down.
+Usually this is used to switch staffs in Piano music, e.g.
 
 
-@cindex @code{\stemUp}  
-  @item @code{\stemUp}
-    Force stems, beams and slurs to point up.
+@example
+  \translator Staff = top @var{Music}
+@end example
 
 
-@end table
 
 
+@cindex output properties
+@unnumberedsubsec Output properties
 
 
+These allow you to tweak what is happening in the back-end
+directly. If you want to control every detail of the output
+formatting, this is the feature to use. The downside to this is that
+you need to know exactly how the backend works. Example:
 
 
-@node Point and click
-@section Point and click
 
 
-[todo]
+@lilypond[fragment,verbatim]
+\relative c'' { c4
+        \context Staff \outputproperty
+               #(make-type-checker 'note-head-interface)
+               #'extra-offset = #'(5.0 . 7.5)
+<c8 e g> }
+@end lilypond
+
+This selects all note heads occurring at current staff level, and sets
+the @code{extra-offset} of those heads to @code{(5,7.5)}, shifting them
+up and right.
+
+Use of this feature is entirely on your own risk: if you use this, the
+result will depend very heavily on the implementation of the backend,
+which we change regularly and unscrupulously.
+
 
 
+@c_{Local emacs vars}
+@c Local variables:
+@c mode: texinfo
+@c minor-mode: font-lock
+@c minor-mode: outline
+@c xoutline-layout: (0 : -1 -1 0)
+@c outline-layout: (-1 : 0)
+@c outline-primary-bullet: "{"
+@c outline-stylish-prefixes: nil
+@c outline-override-protect: t
+@c End:
 
 
index 5e1ac3a3cf6ed74ed8079d52c618a09e68258417..f1525f530f00b766e41ad792a34cb870cb1cb4bd 100644 (file)
@@ -1,4 +1,11 @@
 @c -*-texinfo-*-
 @c -*-texinfo-*-
+@c Note:
+@c
+@c A menu is needed before every deeper *section nesting of @nodes
+@c Run M-x texinfo-all-menus-update
+@c to automagically fill in these menus
+@c before saving changes
+
 @ignore
 
 TODO
 @ignore
 
 TODO
@@ -28,17 +35,17 @@ yes: \property Staff.VoltaBracket = #'((meta .  ((interfaces . ()))))
 @chapter Tricks
 
 @menu
 @chapter Tricks
 
 @menu
-* Manual beam settings::           Manual beam settings
-* Slur attachments::               Slur attachments
-* Text spanner::                   Text spanner
-* Engraver hacking::               Engraver hacking
-* Part combiner::                  Part combiner
-* Markup text::                    Markup text
-* Apply hacking::                  Apply hacking
-* Output property::                Output property
-* Embedded TeX::                   Embedded TeX
-* Embedded PostScript::            Embedded PostScript
+* Manual beam settings::        Manual beam settings
+* Slur attachments::            Slur attachments
+* Engraver hacking::            Engraver hacking
+* Part combiner::               Part combiner
+* Markup text::                 Markup text
+* Output property::             Output property
+* Apply hacking::               Apply hacking
+* Embedded TeX::                Embedded TeX
+* Embedded PostScript::         Embedded PostScript
 @c * Index::                          Checking Feature index
 @c * Index::                          Checking Feature index
+* Index::                       Checking Feature index
 @end menu
 
 
 @end menu
 
 
@@ -290,34 +297,6 @@ increasing the @code{beautiful} value:
 @end quotation
 
 
 @end quotation
 
 
-@node Text spanner
-@section Text spanner
-
-
-
-Have crescendo set a text spanner instead of hairpin
-
-@lilypond[fragment,relative,verbatim]
-  \context Voice {
-    \property Voice.crescendoText = "cresc."
-    \property Voice.crescendoSpanner = #'dashed-line
-    a''2\mf\< a a \!a 
-  }
-@end lilypond
-
-@subsection Ottava
-
-@lilypond[fragment,relative,verbatim]
-  a'''' b c a
-  \property Voice.TextSpanner \set #'type = #'dotted-line
-  \property Voice.TextSpanner \set #'edge-height = #'(0 . 1.5)
-  \property Voice.TextSpanner \set #'edge-text = #'("8va " . "")
-  \property Staff.centralCPosition = #-13
-  a\spanrequest \start "text" b c a \spanrequest \stop "text"
-@end lilypond
-
-
-
 @node Engraver hacking
 @section Engraver hacking
 
 @node Engraver hacking
 @section Engraver hacking
 
diff --git a/VERSION b/VERSION
index ddbba8d68d76f01fac91c22e6eeec49ff03b5753..3b10972f027f98f00338bdf2f2fe83b6b5479657 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
 PATCH_LEVEL=126
 MAJOR_VERSION=1
 MINOR_VERSION=3
 PATCH_LEVEL=126
-MY_PATCH_LEVEL=jcn2
+MY_PATCH_LEVEL=jcn3
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
index 996f19a6962d60fba9c8e7bfe9f9efe31d974d85..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,43 +0,0 @@
-
-hairyChord = \context Staff \notes\relative c' <
-    \context Voice=one {
-        \property Voice.Stem \push #'direction = #1
-        \property Voice.NoteColumn \push #'horizontal-shift = #0
-        e4\arpeggio
-    }
-    
-    \context Voice=two {
-        \property Voice.Stem \push #'direction = #1
-        \property Voice.NoteColumn \push #'horizontal-shift = #1
-        cis\arpeggio
-        }
-    
-    \context Voice=three {
-       \property Voice.Stem \push #'direction = #1
-       \property Voice.NoteColumn \push #'horizontal-shift = #2
-       ais\arpeggio
-       }
-    
-    \context Voice=four {
-       \property Voice.Stem \push #'direction = #-1
-       \property Voice.NoteColumn \push #'horizontal-shift = #-1
-       fis\arpeggio
-       }
->
-
-
-\score{
-    \notes \transpose c'' {
-        \context Voice < fis''-\arpeggio g  d a >
-        \context Voice < fis,-\arpeggio g  d a >
-        \context Voice < fis''-\arpeggio g  d a >
-        \hairyChord
-       }
-    \paper {
-        linewidth = -1.;
-       \translator{
-           \StaffContext
-           connectArpeggios = ##t
-       }
-       }
-}
index 3af118fafb926642ce9df482f4446811b71b1d4d..203e14a4721dc55d008fd409b16252c01ae90edf 100644 (file)
@@ -1,10 +1,10 @@
-\score { \notes {
-       \property Voice.tupletSpannerDuration = #(make-moment 1 4)
-  \property Voice.tupletNumberVisibility = #'if-no-beam
-  \property Voice.tupletBracketVisibility = #'if-no-beam
-  %  Gm7  /  F    |  A7   /  Dm   | 
+\header { texidoc = "tuplet-spanner should not put visible brackets on
+beams even if they're auto generated."; }
+
+\score { \notes \relative c' {
+  \property Voice.tupletSpannerDuration = #(make-moment 1 4)
+  \property Voice.TupletBracket \override #'tuplet-bracket-visibility = #'if-no-beam
   \times 2/3 {
   \times 2/3 {
-  [f,8 bes, d] [g d bes,] [f, a, c] [f c a,] | e, a, cis e cis a, d, f, a, d a, f, |
-  %  Db           |
-  des, aes, des f des aes, des, aes, des f des aes, | }
+       [f8 f f ][f8 f f ] f f f f f f 
+ }
 }}
 }}
index 5acc702a01edda65a3a8de5090588746f6db7754..a816ff774a3f87d533777143e795df448cc00ddf 100644 (file)
@@ -1,6 +1,7 @@
-% bug or feature?
-\score { \notes { c8 c8
-  % needed to force auto-beam:
-  % c4
+\header {
+texidoc ="Auto beam can not be put on the final notes of a score  ";
+}
 
 
+\score { \notes {
+  c8 c8
 }}
 }}
index 97ac88ac613547db03e981d0afeebb9912bfda59..5ce93268bb3677325a6b14938ea6ad097ca29504 100644 (file)
@@ -1,13 +1,10 @@
 \header {
 \header {
-       title = "The river is flowing";
-       composer = "Traditonal (?)";
+texidoc= "Staffs that end half way a system should end at the bar line.";
 }
 
 melody = \notes \relative c' {
        \partial 8;
        g8 |
 }
 
 melody = \notes \relative c' {
        \partial 8;
        g8 |
-       
-       
        \bar "|.";\clef bass;
 }
 
        \bar "|.";\clef bass;
 }
 
@@ -15,7 +12,7 @@ melody = \notes \relative c' {
 
 accompaniment =\chords  \sequential {
        r8
 
 accompaniment =\chords  \sequential {
        r8
-       c2:min f:min 7 
+       r2 r2
 }
 
 \score {
 }
 
 \score {
@@ -25,5 +22,4 @@ accompaniment =\chords  \sequential {
                \melody }
        }
        \paper { }
                \melody }
        }
        \paper { }
-       \midi  { }
 }
 }
diff --git a/input/bugs/broken-tuplet.ly b/input/bugs/broken-tuplet.ly
new file mode 100644 (file)
index 0000000..56dc693
--- /dev/null
@@ -0,0 +1,16 @@
+\header {
+
+texidoc ="tuplet bracket doesn't behave properly at line break. Not a real problem.";
+}
+
+\score{
+       \notes\relative c''< 
+       {       % broken cresc dumps core
+               c2 c4*2/3 \times 2/3 { c( c c }
+               c4 c c c
+       } >
+       \paper{
+       indent = 0.;
+               linewidth=30.\mm;
+       }
+}
index 193f1eaa3e2f3a559f2a17739fbddb3d30f1d0d2..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,58 +0,0 @@
-% The volta texts should read: 1-4  and  5
-% Not 1 and 2
-% (see 1.2.17)
-
-%{
-Hi,
-       I want to write some music that has the structure:
-
-       Intro
-       \repeat 4 { Chorus [first-ending] verse }
-       fifth-ending final
-
-       The obvious:
-
-       \repeat 4 { Chorus \alternative{{first-ending}{}} verse}
-       \alternative{{}{fifth-ending}}
-       final
-
-       doesn't work.
-
-       And the (logically correct but ugly)
-
-       \repeat 4 {Chorus}
-       \alternative {{first-ending verse}{fifth ending}}
-       final
-
-       is very ugly, because the volta bracket keeps going for so
-       long.
-
-       Peter C
-%}
-
-\score{
-       <
-               \context Staff \notes\relative c''{
-                       c c c c
-                       % coda-klugde: let volta span only one bar
-                       \property Staff.voltaSpannerDuration = #(make-moment 1 1)
-                       \repeat "volta" 5 { d d d d }
-                               \alternative { { e e e e f f f f }
-                       { g g g g } }
-               }
-               \context Lyrics \lyrics{
-                       intro1
-                       \repeat fold 5 {}
-                       \alternative {
-                               { chorus1 one verse1 }
-                               { chorus1 two verse1 }
-                               { chorus1 three verse }
-                               { chorus1 four verse }
-                       }
-                       five1
-               }
-       >
-}
-
-
-%\version "1.0.16"; 
index f28bc52fe68a534eda75e244316547a7c894260a..2bd1925c0999b31c203f13c00b296cf9045c7606 100644 (file)
@@ -1,6 +1,8 @@
-
+\header  {
+texidoc = "a staff should really die, if no one's referencing it."
+}
 \score {
 \score {
 {
+ {
     \context Staff = q {
       \notes { a' b' c' d' }
     }
     \context Staff = q {
       \notes { a' b' c' d' }
     }
index 4b23edc61465e281ad788bcbe2f102670fd01732..8f329c68d802567a553a5fd7a610d824f4fd2094 100644 (file)
@@ -1,5 +1,7 @@
-%
-% irregular spacing.
+\header {
+texidoc =" Spacing for one staff in polymetric music should
+be not hampered by a staff in another time signature.";
+}
 
 \score{
     \context PianoStaff <
 
 \score{
     \context PianoStaff <
index 6dfd11ae45792884e0d2437cbedd7e801cf3976f..9fed6eeec1bd6af1aaab2c127d0d6f740ca7ce90 100644 (file)
@@ -1,3 +1,9 @@
+\header {
+ texidoc = "Dots should remain close to the heads they belong to, but should not overlap.";
+}
+
+
 \score {
 \score {
-\notes\context Voice { <f,4. c'' d e f>}
+  \notes
+   \context Voice { <f,4. c'' d e f> }
 }
 }
index 3fc9f7e2994c7ce4a9ed03115f8f93b3ed431cc5..0c2a69f763924d7b1770e2ae3676e104c1bd6ab8 100644 (file)
@@ -15,9 +15,6 @@
        \paper{
                linewidth=140.\mm;
        }
        \paper{
                linewidth=140.\mm;
        }
-       \midi{
-               
-       }
 }
 
 
 }
 
 
index 187ca07d31fad48b67de2a139fa28c65f8993bd7..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,16 +0,0 @@
-%
-% empty bars?
-%
-\score{
-\context Staff \notes\relative c''{
-\property Staff.defaultBarType = #""
-c1 c
-\property Staff.defaultBarType = #"empty"
-c1 c
-}
-\paper{
-}
-\midi{
-\tempo 1 = 60;
-}
-}
index 0ab9bf606aaa73cec599d7897fa859d1d38a0985..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,20 +0,0 @@
-\header{
-texidoc="
-defaultBarType is cheched by Timing_translator, but has no effect?
-";
-}
-
-\score {
-  \notes \relative c'' {
-    a b c d
-    d c b a
-  }
-  \paper {
-    \translator {
-      \StaffContext
-      defaultBarType = #"" 
-      \remove "Time_signature_engraver";
-      linewidth = -1.;
-    }
-  }
-}
index 23da618be908463e977d3f14785507f920fd8469..b9526768ad714610db185cc7ff431621e39291f0 100644 (file)
@@ -1,10 +1,13 @@
-% the space after clef/key is stretched too much.
+\header { texidoc= "Spacing after clef/key should be stretched
+equidistantly for large stretching, but should stay clear of prefatory
+matter for small stretching. Support in the spacing engine for
+separate spring constants for stretching/shrinking is needed"; 
+}
 
 
-foo = \notes\relative c''   {   \key as \major; d }
+foo = \notes\relative c''   {   \key as \major; f }
 
 \score {
 
   < \foo 
 
 \score {
 
   < \foo 
-   \context NoteNames \foo
   >
 }
   >
 }
index 02cfbf9413d55a092751ab494b0870556c8927c4..b565cc0b961d602b814413ab22788c4dc17168b1 100644 (file)
@@ -1,9 +1,9 @@
 \header{
 texidoc="
 \header{
 texidoc="
-Arg, right ending of slur is too far right.  I did make a better
-test .ly for this, but can't seem to find it now.
-";
-}
+ Right ending of slur is too far right.
+
+ [I did make a better test .ly for this, but can't seem to find it
+now.]  "; }
 
 \score {
   \notes \relative c'' {
 
 \score {
   \notes \relative c'' {
index bc9692d2816ac59ea0798d0a5bcd4145d5d10508..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,11 +0,0 @@
-% spanners start at line start
-\score{
-       \notes\relative c''{
-               % broken cresc dumps core
-               c2\< c4 \times 2/3 { c( c c }
-               c4 c )\!c c
-       }
-       \paper{
-               linewidth=30.\mm;
-       }
-}
index 0a62020c2f756f4b717ca1b9df230a03168f1d26..6a719c43c1bdac14afe2442eec807f52be87419e 100644 (file)
@@ -1,5 +1,5 @@
-
-
-% 1st beam should prob. be horizontal.
+\header {
+texidoc ="1st beam should prob. be horizontal.";
+}
 
 \score { \notes <{  [ r8 g''16 des'] [r8 c16 a] }>}
 
 \score { \notes <{  [ r8 g''16 des'] [r8 c16 a] }>}
index b40afe216ece36cb6558b13c32d911b67b901d4c..21bf734277282f9fa787f6f5a00fe9dbd0c1b3bf 100644 (file)
@@ -1,4 +1,6 @@
 
 
+\header {
+texidoc= "LilyPond doesn't kern text, but TeX does, leading to skewed results: the VAVAVAVA takes less space than LilyPond thinks it does."; } 
 
 \score {
  \notes \relative c'' < \context Voice {
 
 \score {
  \notes \relative c'' < \context Voice {
index 96ad58757bba4af113995272aef454588c9b8e7c..d00f255e4a7e7561ae79d78a33ded19555abc6a2 100644 (file)
@@ -1,20 +1,20 @@
 \header {
   texidoc="Positioning of last ties is incorrect; ties between 2-1 and 1-1
 \header {
   texidoc="Positioning of last ties is incorrect; ties between 2-1 and 1-1
-  durations differ.  Direction is incorrect.";
+  durations differ.";
 }
 
 \score {
   \context Staff <
     \context Voice = a \notes\relative c'' {
 }
 
 \score {
   \context Staff <
     \context Voice = a \notes\relative c'' {
-      \stemUp
+      \voiceOne
       r2 a2~a1~a
     }
     \context Voice = y \notes\relative c' {
       r2 a2~a1~a
     }
     \context Voice = y \notes\relative c' {
-      \stemDown
+      \voiceTwo
       r2 a2~a1~a
     }
   >
   \paper {
     linewidth = 100 * \staffspace;
   }
       r2 a2~a1~a
     }
   >
   \paper {
     linewidth = 100 * \staffspace;
   }
-}
\ No newline at end of file
+}
index fe545aa9780d61598a40a8ebe5f80682ca5f5ef9..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,44 +0,0 @@
-
-% left start  of broken volta bracket.
-voice4 = \notes {
-\clef bass;
- \property Staff.instrument = "Bass"
- \property Staff.instr = "B"
- \time 4/4;  f,2 (   ) f,8    r8   f8    e8    
-\repeat  volta 2
-{
- d8.    d16    e8.    f16    f8    c8    c16    c8. 
-}
-\alternative
-{
-    {   f,2 (   ) f,8    r8   f8    e8 ( \break   }
-    {   ) f,2.    r8   c16    c16      |
-    }
-}
-}
-voicedefault = \notes {
- \property Staff.timeSignatureStyle="C"
- \time 4/4; \key f \major;  
- \tempo 4 = 200;
-}
-\score{
-        \notes <
-
-
-        \context Staff="4"
-        {
-            \$voicedefault
-            \$voice4 
-        }
-
-    >
-        \paper {
-            font_normal = 12.;
-            \translator {
-                 \StaffContext 
-                 \consists Instrument_name_engraver;
-            }
-        }
-}
-
index 599c2450c84db3d3bd961f2af758aa67e2939fa5..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,132 +0,0 @@
-%{
-
-
-I recently discovered that although the following patch seemed to fix
-the original complaint that it causes other problems (the following
-tests were done in 1.3.116.
-
-I have attached a file which has several break-volta interactions.
-
-With the test file and unmodified 1.3.116 I see the following:
-
-Bar 3 - 1st volta spanner centered on first note - prefer it to start
-       closer to key signature (can live with this)
-Bar 6 - 1st volta continuation - perfect
-Bar 9 - 2nd volta spanner starts on left edge of key signature - prefer
-       it to start right of key signature
-Bar 12         1st volta starts between first two slurred notes in measure -
-       this is not acceptable
-Bar 17 like above with hairpin.
-Bar 23 like above (I had expected this to be OK)
-Bar 20 2nd volta continuation perfect
-
-With the test file and 1.3.116 modified as below I see the following:
-
-Bar 3  Perfect
-Bar 6  1st volta continuation starts with staff - oops
-Bar 9          2nd volta starts on papers left margin - OOPS!
-Bar 12 Perfect
-Bar 17         Perfect
-Bar 20 2nd volta continuation starts with staff - oops
-Bar 23 Perfect
-
-%}
-
-voice1 = \notes {
-    \clef bass;
-     \property Staff.instrument = "Bass"
-     \property Staff.instr = "B"
-     \key f \minor; 
-     \time 4/4;  
-    f,2 (   ) f,8    r8   f8    e8    
-    \repeat  volta 2
-    {
-         d8.    d16    e8.    f16    f8    c8    c16    c8.    \break
-    }
-    \alternative
-    {
-        {      
-           f,2 (   ) f,8    r8   f8    e8 
-           f,2 (   ) f,8    r8   f8    e8 
-           g1 \break   
-           f,2 (   ) f,8    r8   f8    e8 
-           f,2 (   ) f,8    r8   f8    e8 
-           g1 \break   
-       }
-        {   
-           f,2.    r8   c16    c16      | 
-       }
-    }
-}
-voice2 = \notes {
-    \repeat volta 2
-    {
-     bes8    bes8    c'8    c'8    a4    r8   g16    f16      |
-     d'8.    c'16    c'8.    d'16    c'8    c'8    f16    g8.    |
-     \break
-    }
-    \alternative
-    {
-        {      a2 (   ) a8    r8   a8    bes8    }
-        {      a2.    r8   g16    f16      |
-       d'8.   c'16   c'8.   d'16   c'8   c'8   c'16    c'8.    |
-        }
-    }
-}
-voice3 = \notes {
-    \repeat volta 2
-    {
-     bes8    bes8    c'8    c'8    a4    r8   g16    f16      |
-     d'8.    c'16    c'8.    d'16    c'8    c'8    f16    g8.    |
-     \break
-    }
-    \alternative
-    {
-        {      a2 \> a8    r8   a8  \!  bes8    
-       }
-        {      a2.    r8   g16    f16      |
-           d'8.   c'16   c'8.   d'16   c'8   c'8   c'16    c'8.    | \break
-           d'8.   c'16   c'8.   d'16   c'8   c'8   c'16    c'8.    |
-        }
-    }
-}
-voice4 = \notes {
-    \repeat volta 2
-    {
-     bes8    bes8    c'8    c'8    a4    r8   g16    f16      |
-     d'8.    c'16    c'8.    d'16    c'8    c'8    f16    g8.    | \break
-    }
-    \alternative
-    {
-        {      
-           a2  a8    r8   a8    bes8    
-
-       }
-        {      
-           a2.    r8   g16    f16      |
-           d'8.   c'16   c'8.   d'16   c'8   c'8   c'16    c'8.    | 
-        }
-    }
-}
-\score{
-        \notes <
-
-
-       \context Staff="4"
-       {
-           \$voice1 
-           \$voice2
-           \break
-           \$voice3
-           \$voice4
-       }
-
-    >
-       \paper {
-           font_normal = 12.;
-           \translator {
-                \StaffContext 
-                \consists Instrument_name_engraver;
-           }
-       }
-}
diff --git a/input/regression/allfontstyle.ly b/input/regression/allfontstyle.ly
new file mode 100644 (file)
index 0000000..8c48cd1
--- /dev/null
@@ -0,0 +1,17 @@
+
+
+
+\score {  \notes
+       \relative c'' \context Staff {
+               \emptyText
+               \repeat volta 2 { \time 4/4; c4^"cuivr\\'e"_\fermata }
+                \alternative {
+                       { \property Voice.textStyle = "italic" d-4_"cantabile" }
+                       {  e }  } \grace { c16 }
+                       \property Voice.textStyle = "large"
+                        f4-\ff^""^"Largo" \mark "B"; g 
+       }
+       \paper { linewidth = -1.0;
+       \translator { \BarNumberingStaffContext}
+       }
+}
diff --git a/input/regression/arpeggio-collision.ly b/input/regression/arpeggio-collision.ly
new file mode 100644 (file)
index 0000000..d7d9907
--- /dev/null
@@ -0,0 +1,47 @@
+\header = {
+texidoc = "arpeggio stays clear of accidentals and flipped note heads.
+Since Arpeggio engraver is Voice, it does nothing for voice collisions."
+};
+
+hairyChord = \context Staff \notes\relative c' <
+    \context Voice=one {
+        \property Voice.Stem \override #'direction = #1
+        \property Voice.NoteColumn \override #'horizontal-shift = #0
+        e4-\arpeggio
+    }
+    
+    \context Voice=two {
+        \property Voice.Stem \override #'direction = #1
+        \property Voice.NoteColumn \override #'horizontal-shift = #1
+        cis-\arpeggio
+        }
+    
+    \context Voice=three {
+       \property Voice.Stem \override #'direction = #1
+       \property Voice.NoteColumn \override #'horizontal-shift = #2
+       ais-\arpeggio
+       }
+    
+    \context Voice=four {
+       \property Voice.Stem \override #'direction = #-1
+       \property Voice.NoteColumn \override #'horizontal-shift = #-1
+       fis-\arpeggio
+       }
+>
+
+
+\score{
+    \notes \transpose c'' {
+        \context Voice < fis''-\arpeggio g  d a >
+        \context Voice < fis,-\arpeggio g  d a >
+        \context Voice < fis''-\arpeggio g  d a >
+        \hairyChord
+       }
+    \paper {
+        linewidth = -1.;
+       \translator{
+           \StaffContext
+           connectArpeggios = ##t
+       }
+       }
+}
diff --git a/input/regression/volta-broken-left-edge.ly b/input/regression/volta-broken-left-edge.ly
new file mode 100644 (file)
index 0000000..28400c4
--- /dev/null
@@ -0,0 +1,136 @@
+\header {
+texidoc ="Broken volta spanners behave correctly at left edge in all cases."
+};
+
+%{
+
+
+I recently discovered that although the following patch seemed to fix
+the original complaint that it causes other problems (the following
+tests were done in 1.3.116.
+
+I have attached a file which has several break-volta interactions.
+
+With the test file and unmodified 1.3.116 I see the following:
+
+Bar 3 - 1st volta spanner centered on first note - prefer it to start
+       closer to key signature (can live with this)
+Bar 6 - 1st volta continuation - perfect
+Bar 9 - 2nd volta spanner starts on left edge of key signature - prefer
+       it to start right of key signature
+Bar 12         1st volta starts between first two slurred notes in measure -
+       this is not acceptable
+Bar 17 like above with hairpin.
+Bar 23 like above (I had expected this to be OK)
+Bar 20 2nd volta continuation perfect
+
+With the test file and 1.3.116 modified as below I see the following:
+
+Bar 3  Perfect
+Bar 6  1st volta continuation starts with staff - oops
+Bar 9          2nd volta starts on papers left margin - OOPS!
+Bar 12 Perfect
+Bar 17         Perfect
+Bar 20 2nd volta continuation starts with staff - oops
+Bar 23 Perfect
+
+%}
+
+voice1 = \notes {
+    \clef bass;
+     \property Staff.instrument = "Bass"
+     \property Staff.instr = "B"
+     \key f \minor; 
+     \time 4/4;  
+    f,2 (   ) f,8    r8   f8    e8    
+    \repeat  volta 2
+    {
+         d8.    d16    e8.    f16    f8    c8    c16    c8.    \break
+    }
+    \alternative
+    {
+        {      
+           f,2 (   ) f,8    r8   f8    e8 
+           f,2 (   ) f,8    r8   f8    e8 
+           g1 \break   
+           f,2 (   ) f,8    r8   f8    e8 
+           f,2 (   ) f,8    r8   f8    e8 
+           g1 \break   
+       }
+        {   
+           f,2.    r8   c16    c16      | 
+       }
+    }
+}
+voice2 = \notes {
+    \repeat volta 2
+    {
+     bes8    bes8    c'8    c'8    a4    r8   g16    f16      |
+     d'8.    c'16    c'8.    d'16    c'8    c'8    f16    g8.    |
+     \break
+    }
+    \alternative
+    {
+        {      a2 (   ) a8    r8   a8    bes8    }
+        {      a2.    r8   g16    f16      |
+       d'8.   c'16   c'8.   d'16   c'8   c'8   c'16    c'8.    |
+        }
+    }
+}
+voice3 = \notes {
+    \repeat volta 2
+    {
+     bes8    bes8    c'8    c'8    a4    r8   g16    f16      |
+     d'8.    c'16    c'8.    d'16    c'8    c'8    f16    g8.    |
+     \break
+    }
+    \alternative
+    {
+        {      a2 \> a8    r8   a8  \!  bes8    
+       }
+        {      a2.    r8   g16    f16      |
+           d'8.   c'16   c'8.   d'16   c'8   c'8   c'16    c'8.    | \break
+           d'8.   c'16   c'8.   d'16   c'8   c'8   c'16    c'8.    |
+        }
+    }
+}
+voice4 = \notes {
+    \repeat volta 2
+    {
+     bes8    bes8    c'8    c'8    a4    r8   g16    f16      |
+     d'8.    c'16    c'8.    d'16    c'8    c'8    f16    g8.    | \break
+    }
+    \alternative
+    {
+        {      
+           a2  a8    r8   a8    bes8    
+
+       }
+        {      
+           a2.    r8   g16    f16      |
+           d'8.   c'16   c'8.   d'16   c'8   c'8   c'16    c'8.    | 
+        }
+    }
+}
+\score{
+        \notes <
+
+
+       \context Staff="4"
+       {
+           \$voice1 
+           \$voice2
+           \break
+           \$voice3
+           \$voice4
+       }
+
+    >
+       \paper {
+           font_normal = 12.;
+           \translator {
+                \StaffContext 
+                \consists Instrument_name_engraver;
+           }
+       }
+}
index 8c48cd1780fc580b3966d527ddb173f16b29bccb..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,17 +0,0 @@
-
-
-
-\score {  \notes
-       \relative c'' \context Staff {
-               \emptyText
-               \repeat volta 2 { \time 4/4; c4^"cuivr\\'e"_\fermata }
-                \alternative {
-                       { \property Voice.textStyle = "italic" d-4_"cantabile" }
-                       {  e }  } \grace { c16 }
-                       \property Voice.textStyle = "large"
-                        f4-\ff^""^"Largo" \mark "B"; g 
-       }
-       \paper { linewidth = -1.0;
-       \translator { \BarNumberingStaffContext}
-       }
-}
index 0ebc486c678220463fc2c53ff4d872d4068b2813..0c22c59b6cbf3cbaca20862770053c7e40ff3e9c 100644 (file)
 #include "scm-hash.hh"
 #include "kpath.hh"
 
 #include "scm-hash.hh"
 #include "kpath.hh"
 
-
-
-
-
 const char * default_font_sz_ = "cmr10";
 
 All_font_metrics::All_font_metrics (String path)
 const char * default_font_sz_ = "cmr10";
 
 All_font_metrics::All_font_metrics (String path)
index 4a49085e80d11cac515c1267dd80996aae59b14d..aaa7fb5b5afb1dbd72354d1f8dfa77842426d5a5 100644 (file)
 struct Column_spring {
   Paper_column *other_l_;
   Real distance_f_;
 struct Column_spring {
   Paper_column *other_l_;
   Real distance_f_;
+
+  /*
+    TODO: make 2 strengths: one for stretching, and one for shrinking.
+  */
   Real strength_f_;
   
   Column_spring ();
   Real strength_f_;
   
   Column_spring ();
index 3cd903f731ac8b6410dbb6ddb53971b09e81ac24..41f2a7bbd50e42986ad4945c9fa49f2fa19f8a52 100644 (file)
@@ -130,7 +130,8 @@ Spacing_spanner::do_measure (Grob*me, Link_array<Grob> cols)
            spacing in the measure.
          */
          SCM sfac =lc->get_grob_property ("space-factor");
            spacing in the measure.
          */
          SCM sfac =lc->get_grob_property ("space-factor");
-         if (Item::breakable_b (lc) || lc->original_l_)
+         if (gh_number_p (lc->get_grob_property ("column-space-strength"))
+             && (Item::breakable_b (lc) || lc->original_l_))
            {
              s.strength_f_ =
                gh_scm2double (lc->get_grob_property ("column-space-strength"));
            {
              s.strength_f_ =
                gh_scm2double (lc->get_grob_property ("column-space-strength"));
index b17a053a559f0528c3b8ee11b82222ad8eb2bcec..2b2ddd8ae13a0da95f638ff074799367e0b3a186 100644 (file)
@@ -30,11 +30,9 @@ Tuplet_spanner::set_interface (Grob*me)
 }
 
 /*
 }
 
 /*
-  TODO. 
- */
-
+  TODO: use stem->beam fields to find Beams. Autobeams aren't found
+  through the engraver mechanism.  */
 MAKE_SCHEME_CALLBACK(Tuplet_spanner,brew_molecule,1);
 MAKE_SCHEME_CALLBACK(Tuplet_spanner,brew_molecule,1);
-
 SCM
 Tuplet_spanner::brew_molecule (SCM smob) 
 {
 SCM
 Tuplet_spanner::brew_molecule (SCM smob) 
 {
index 3e3f28c4508733851cf63b117c79cb318c99ef99..d846d8680010eb39e59004fca652cc4cbc8eab9a 100644 (file)
@@ -1,6 +1,4 @@
 
 
-#(eval-string (ly-gulp-file "paper.scm"))
-
 \paper {
        texsetting = "";
        pssetting = "";
 \paper {
        texsetting = "";
        pssetting = "";
index f367eafe590ce5dcd5f9c86b97b1986064725875..c95aae830fce9529c44c07edab5a7be5c9dcbecb 100644 (file)
@@ -1,6 +1,3 @@
-
-#(eval-string (ly-gulp-file "midi.scm"))
-
 \midi {
         \tempo 4=60;
        \include "performer.ly"
 \midi {
         \tempo 4=60;
        \include "performer.ly"
index 2ebe362fc51f22ad198e58c35eede2372ff9f96e..a48626f78ab8be35b3ba1410bc434325e7af5042 100644 (file)
@@ -1,9 +1,5 @@
 
 
 
 
-#(eval-string (ly-gulp-file "script.scm"))
-
-#default-script-alist
-
 "dash-hat" = "marcato"
 "dash-plus" = "stopped"
 "dash-dash" = "tenuto"
 "dash-hat" = "marcato"
 "dash-plus" = "stopped"
 "dash-dash" = "tenuto"
index 4a759813c51cb9b57cc0b73e821d4544414ea243..806ff65c6b5430c980d1b911bf04b554701e98f4 100644 (file)
@@ -14,3 +14,8 @@ convert-ly: local-convert-ly
 
 local-convert-ly:
        $(PYTHON) $(script-dir)/convert-ly.py -e *ly
 
 local-convert-ly:
        $(PYTHON) $(script-dir)/convert-ly.py -e *ly
+
+tar:
+       mkdir -p $(outdir)/$(tarball)
+       cp -p *.ly $(outdir)/$(tarball)
+       cd $(outdir) && tar czf $(tarball).tar.gz $(tarball)
index 18e9385e3ff9607bdba4c3fdc6dbcfb2d30252c9..167992e09e2dd6e650ed934233e428dddec54b89 100644 (file)
@@ -8,3 +8,6 @@ examples=scsii-cello
 LOCALSTEPMAKE_TEMPLATES=mutopia
 
 include $(depth)/make/stepmake.make
 LOCALSTEPMAKE_TEMPLATES=mutopia
 
 include $(depth)/make/stepmake.make
+
+tarball=solo-cello-suite-ii
+
index 3910b82dfd694db317fe59ccb6812d613263337a..9975d25cd79f352306c18f9f1abb0b0b1b5b4daf 100644 (file)
@@ -53,6 +53,8 @@
 ;; See [Wanske] page 126 -- 134, [Ross] pg 143 -- 147
 ;;
 
 ;; See [Wanske] page 126 -- 134, [Ross] pg 143 -- 147
 ;;
 
+;; documentme: difference between extra-space and minimum-space
+
 ;; (Measured in staff space)
 (define default-break-align-space-alist
  '(
 ;; (Measured in staff space)
 (define default-break-align-space-alist
  '(
index 6228a482e026b2a313a85a09949719cd78ecc935..dcc2b805ff55fed494e51c748687264528f51040 100644 (file)
@@ -78,4 +78,5 @@
           "basic-properties.scm"
           "chord-name.scm"
           "grob-description.scm"
           "basic-properties.scm"
           "chord-name.scm"
           "grob-description.scm"
+          "script.scm" "midi.scm"
           )))
           )))
index 5712e0a15a82631066e1dbd26586f613eeaa0c06..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,9 +0,0 @@
-;;; paper.scm -- scm paper variables and functions
-;;;
-;;;  source file of the GNU LilyPond music typesetter
-;;; 
-;;; (c) 1999--2000 Jan Nieuwenhuizen <janneke@gnu.org>
-
-;;; All dimensions are measured in staff-spaces
-
-
index 559aa0bfa0e1618f097666f7c7a896ca24ea4c1a..f91d5a0b99dda55fdc8c3f1a7d36e8813c1990cc 100644 (file)
@@ -230,8 +230,7 @@ put on top of all staffs, and appears only at  left side of the staff."
 and generate the appropriate chordname."
      '(ChordName)
      '(
 and generate the appropriate chordname."
      '(ChordName)
      '(
-      chordInversion
-      drarnChords
+      chordChanges
       )))
 
 
       )))
 
 
index 1fb2c7f9e0c79853407f703693c915907b40f482..e62eb8adc8116fe697699124d37e1f6e079eced0 100644 (file)
@@ -121,7 +121,11 @@ every barline.
 ")
 (translator-property-description 'currentCommandColumn ly-grob? "Grob that is X-parent to all current breakable (clef, key signature, etc.) items.")
 (translator-property-description 'currentMusicalColumn ly-grob? "Grob that is X-parent to all non-breakable items (note heads, lyrics, etc.).")
 ")
 (translator-property-description 'currentCommandColumn ly-grob? "Grob that is X-parent to all current breakable (clef, key signature, etc.) items.")
 (translator-property-description 'currentMusicalColumn ly-grob? "Grob that is X-parent to all non-breakable items (note heads, lyrics, etc.).")
-(translator-property-description 'defaultBarType string? "Sets the default type of bar line.  Available bar types: [FIXME]
+(translator-property-description 'defaultBarType string? "Sets the default type of bar line.  Available bar types: [FIXME];
+
+This variable is typically read at Score level, so overriding
+Staff.defaultBarType will have no effect.
+
 ")
 (translator-property-description 'drarnChords boolean? "")
 (translator-property-description 'explicitClefVisibility procedure? "visibility-lambda function for clef changes.")
 ")
 (translator-property-description 'drarnChords boolean? "")
 (translator-property-description 'explicitClefVisibility procedure? "visibility-lambda function for clef changes.")
@@ -259,7 +263,7 @@ settings.
 pair of numbers,  signifying the time signature. For example #'(4 . 4) is a 4/4time signature.")
 (translator-property-description 'timing boolean? " Keep administration of measure length, position, bar number, etc?
 Switch off for cadenzas.")
 pair of numbers,  signifying the time signature. For example #'(4 . 4) is a 4/4time signature.")
 (translator-property-description 'timing boolean? " Keep administration of measure length, position, bar number, etc?
 Switch off for cadenzas.")
-(translator-property-description 'transposing integer? "Number of semi tones that MIDI output must be transposed.")
+(translator-property-description 'transposing integer? "Transpose the MIDI output.  Set this property to the number of half-steps to transpose by.")
 (translator-property-description 'tremoloFlags integer? "Number of tremolo flags to add if none is specified.")
 (translator-property-description 'tupletInvisible boolean? "
     If set to true, tuplet bracket creation is switched off
 (translator-property-description 'tremoloFlags integer? "Number of tremolo flags to add if none is specified.")
 (translator-property-description 'tupletInvisible boolean? "
     If set to true, tuplet bracket creation is switched off