]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'master' of git+ssh://git.sv.gnu.org/srv/git/lilypond
authorJan Nieuwenhuizen <janneke@gnu.org>
Tue, 13 Nov 2007 08:17:56 +0000 (09:17 +0100)
committerJan Nieuwenhuizen <Jan Nieuwenhuizen janneke@gnu.org>
Tue, 13 Nov 2007 08:17:56 +0000 (09:17 +0100)
34 files changed:
Documentation/index.html.in
Documentation/user/GNUmakefile
Documentation/user/README.txt
Documentation/user/ancient.itely
Documentation/user/fundamental.itely
Documentation/user/input.itely [new file with mode: 0644]
Documentation/user/lilypond.tely
Documentation/user/macros.itexi
Documentation/user/non-music.itely
Documentation/user/pitches.itely
Documentation/user/policy.txt
Documentation/user/rhythms.itely
Documentation/user/tutorial.itely
Documentation/user/writing-texinfo.txt [new file with mode: 0644]
buildscripts/makelsr.py
configure.in
input/lsr/GNUmakefile
input/lsr/pitches/creating-music-with-scheme.ly [new file with mode: 0644]
input/lsr/real-music/AAA-intro.ly [new file with mode: 0644]
input/lsr/real-music/GNUmakefile [new file with mode: 0644]
input/lsr/real-music/SConscript [new file with mode: 0644]
input/lsr/real-music/creating-music-with-scheme.ly [new file with mode: 0644]
input/lsr/real-music/inserting-score-fragments-above-the-staff,-as-markups.ly [new file with mode: 0644]
input/lsr/real-music/score-for-diatonic-accordion.ly [new file with mode: 0644]
input/lsr/rhythms/AAA-intro.ly
input/lsr/rhythms/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rythms..ly [new file with mode: 0644]
input/lsr/rhythms/automatic-beams-two-per-two-in-4-4-or-2-2-time-signature.ly [new file with mode: 0644]
input/lsr/rhythms/changing-time-signatures-inside-a-polymetric-section-using--compressmusic.ly [new file with mode: 0644]
input/lsr/rhythms/heavily-customized-polymetric-time-signatures.ly [new file with mode: 0644]
input/lsr/rhythms/makam.ly [deleted file]
input/new/real-music/AAA-intro.ly [new file with mode: 0644]
input/new/real-music/GNUmakefile [new file with mode: 0644]
input/new/real-music/SConscript [new file with mode: 0644]
input/new/rhythms/AAA-intro.ly

index edb810b277afac0084a81b44b5c4e810901a02ab..7a8ab6ce854f977ad74a133cb3e64b39a063e414 100644 (file)
          <ul>
            <li>
            <a class="title"
-href="user/lilypond-learning/index.html">Learning manual</a>
+href="user/lilypond-learning/index.html">Learning Manual (LM)</a>
              <br>(start here)
 
-          <li><a class="title" href="user/music-glossary/index.html">Music glossary</a>
+          <li><a class="title"
+href="user/music-glossary/index.html">Music Glossary (MG)</a>
 (in <a class="title" href="user/music-glossary-big-page.html">one big page</a> ~ 1 Mb,
 in <a class="title" href="user/music-glossary.pdf">PDF</a>)
 
@@ -76,14 +77,15 @@ in <a class="title" href="user/music-glossary.pdf">PDF</a>)
           &nbsp;
          <ul>
            <li>
-<a class="title" href="user/lilypond/index.html">Notation reference</a>
+<a class="title" href="user/lilypond/index.html">Notation
+Reference (NR)</a>
 (in <a class="title" href="user/lilypond-big-page.html">one big page</a> ~ 4 Mb,
 in <a class="title" href="user/lilypond.pdf">PDF</a>)
      <br>(writing music in LilyPond)
 
        <li>
  <a  class="title"
-href="user/lilypond-internals/index.html">Internals reference</a>
+href="user/lilypond-internals/index.html">Internals Reference (IR)</a>
  (in <a class="title" href="user/lilypond-internals-big-page.html">one big page</a> ~ 1 Mb)
      <br>(definitions for tweaking)
         
@@ -94,7 +96,7 @@ href="user/lilypond-internals/index.html">Internals reference</a>
          <ul>
               <li>
            <a class="title"
-href="user/lilypond-program/index.html">Application usage</a>
+href="user/lilypond-program/index.html">Application Usage (AU)</a>
 (in <a class="title" href="user/lilypond-program-big-page.html">one big page</a>,
 in <a class="title" href="user/lilypond-program.pdf">PDF</a>)
            <br>(how to install and run the program)
index 59cf7a11af75b87d724cf64656d1ee5101016f65..dfa4342c9ecffeb17db89991f15369ac5f278e80 100644 (file)
@@ -3,7 +3,8 @@ depth=../..
 LATEX_FILES =$(call src-wildcard,*.latex)
 
 
-EXTRA_DIST_FILES= $(LATEX_FILES) $(IMAGES) README.txt $(EPS_ILLUSTRATIONS)
+EXTRA_DIST_FILES = $(LATEX_FILES) $(IMAGES) $(EPS_ILLUSTRATIONS)
+EXTRA_DIST_FILES += README.txt writing-texinfo.txt policy.txt
 
 IMAGES=$(call src-wildcard,*.png)
 EPS_ILLUSTRATIONS=context-example.eps
index 80c9f92c16c21ab44a1bd902187493a1b60d8760..e38d7e86c5bd136e051c87c19473ea79bff194c8 100644 (file)
@@ -3,7 +3,8 @@ Info for Documentation
 
 %%%%% GENERAL POLICY
 
-See policy.txt
+Formatting: writing-texinfo.txt
+General policy: policy.txt
 
 
 %%%%% UPDATING DOCS
index eb5e5ac27b10d58855b29e0cfb4971c5779b8408..4aa4c6a11cb7cba3fb4f1648d3e8287a4b637ffd 100644 (file)
@@ -84,16 +84,18 @@ up during the baroque period.
 @ref{Figured bass}
 @end itemize
 
-Here are all subtopics at a glance:
+@c Here are all subtopics at a glance:
 
 @menu
-* Ancient TODO::                
+* Alternative note signs for ancient music::
+* Additional note signs for ancient music::
+* Pre-defined contexts::
+* Musica ficta accidentals::
+* Figured bass::
 @end menu
 
-@node Ancient TODO
-@subsection Ancient TODO
-
-
+@node Alternative note signs for ancient music
+@subsection Alternative note signs for ancient music
 
 @menu
 * Ancient note heads::          
@@ -102,16 +104,6 @@ Here are all subtopics at a glance:
 * Ancient clefs::               
 * Ancient flags::               
 * Ancient time signatures::     
-* Ancient articulations::       
-* Custodes::                    
-* Divisiones::                  
-* Ligatures::                   
-* White mensural ligatures::    
-* Gregorian square neumes ligatures::  
-* Gregorian Chant contexts::    
-* Mensural contexts::           
-* Musica ficta accidentals::    
-* Figured bass::                
 @end menu
 
 @node Ancient note heads
@@ -651,6 +643,20 @@ This sets @code{breveTP} to 3/2 times 2 = 3 times a whole note.
 The @code{old6/8alt} symbol (an alternate symbol for 6/8) is not
 addressable with @code{\time}.  Use a @code{\markup} instead
 
+
+@node Additional note signs for ancient music
+@subsection Additional note signs for ancient music
+
+@menu
+* Ancient articulations::       
+* Custodes::                    
+* Divisiones::                  
+* Ligatures::                   
+* White mensural ligatures::    
+* Gregorian square neumes ligatures::  
+@end menu
+
+
 @node Ancient articulations
 @unnumberedsubsubsec Ancient articulations
 
@@ -1915,6 +1921,16 @@ of the staff.
 unary music function, such that @code{\augmentum} can be intermixed
 with head prefixes in arbitrary order.
 
+
+@node Pre-defined contexts
+@subsection Pre-defined contexts
+
+@menu
+* Gregorian Chant contexts::    
+* Mensural contexts::           
+@end menu
+
+
 @node Gregorian Chant contexts
 @unnumberedsubsubsec Gregorian Chant contexts
 
@@ -1983,7 +1999,7 @@ demonstrates
 @end lilypond
 
 @node Musica ficta accidentals
-@unnumberedsubsubsec Musica ficta accidentals
+@subsection Musica ficta accidentals
 
 In European music from before about 1600, singers were often
 expected to chromatically alter notes at their own initiative.
@@ -2021,7 +2037,7 @@ Internals Reference: @internalsref{Accidental_engraver} engraver and
 the @internalsref{AccidentalSuggestion} object.
 
 @node Figured bass
-@unnumberedsubsubsec Figured bass
+@subsection Figured bass
 
 @cindex Basso continuo
 
index c84530e064ed419501f92a34254acbb9fe1fd319..ab1a0d6a0085c2594f1aa0414d3a9c0002b3547e 100644 (file)
@@ -26,6 +26,7 @@ description of the input format, see @ruser{File structure}.
 @menu
 * Introduction to the LilyPond file structure::  
 * Score is a (single) compound musical expression::  
+* Expressions can be nested after the beginning::  
 @end menu
 
 @node Introduction to the LilyPond file structure
@@ -273,6 +274,33 @@ indentation -- make sure that each item on the same layer starts
 on the same horizontal position in your text editor.
 
 
+@node Expressions can be nested after the beginning
+@subsection Expressions can be nested after the beginning
+
+TODO: this title is teh suck.  :(
+
+@lilypond[verbatim,quote,ragged-right]
+\score {
+       <<
+               \new Staff \relative c''{ c1 c c c c }
+               \new StaffGroup \relative c''{ 
+                       \new Staff 
+                       c1 c
+                       << c1 \new Staff { c1 } >>
+                       c
+               }
+       >>
+       \layout {
+               
+               \context{
+                       \Score
+
+               }
+       }
+}
+@end lilypond
+
+
 @node Voices contain music
 @section Voices contain music
 
diff --git a/Documentation/user/input.itely b/Documentation/user/input.itely
new file mode 100644 (file)
index 0000000..59d5d23
--- /dev/null
@@ -0,0 +1,624 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c This file is part of lilypond.tely
+@ignore
+    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+@node Input syntax
+@chapter Input syntax
+
+This section deals with general lilypond input syntax issues,
+rather than specific notation.
+
+@menu
+* Input files::                 
+* Common syntax issues TODO name?::  
+* Other stuffs TODO move?::     
+@end menu
+
+
+@node Input files
+@section Input files
+
+The main format of input for LilyPond are text files.  By convention,
+these files end with @samp{.ly}.
+
+@menu
+* File structure::              
+* A single music expression::   
+* Multiple scores in a book::   
+* Extracting fragments of notation::  
+* Including LilyPond files::    
+* Text encoding::               
+* Different editions from one source::  
+@end menu
+
+
+@node File structure
+@subsection File structure
+
+A @code{.ly} file contains any number of toplevel expressions, where a
+toplevel expression is one of the following
+
+@itemize
+@item
+An output definition, such as @code{\paper}, @code{\midi}, and
+@code{\layout}.  Such a definition at the toplevel changes the default
+settings for the block entered.
+
+@item
+A direct scheme expression, such as
+@code{#(set-default-paper-size "a7" 'landscape)} or
+@code{#(ly:set-option 'point-and-click #f)}.
+
+@item
+A @code{\header} block.  This sets the global header block.  This
+is the block containing the definitions for book-wide settings, like
+composer, title, etc.
+
+@item
+A @code{\score} block.  This score will be collected with other
+toplevel scores, and combined as a single @code{\book}.
+
+This behavior can be changed by setting the variable
+@code{toplevel-score-handler} at toplevel.  The default handler is
+defined in the init file @file{scm/@/lily@/.scm}.
+
+The @code{\score} must begin with a music expression, and may
+contain only one music expression.
+
+@item
+A @code{\book} block logically combines multiple movements
+(i.e., multiple @code{\score} blocks) in one document.  If there are
+a number of @code{\scores}, one output file will be created for
+each @code{\book} block, in which all corresponding movements are
+concatenated.  The only reason to explicitly specify @code{\book} blocks
+in a @code{.ly} file is if you wish multiple output files from a single
+input file.  One exception is within lilypond-book documents, where you
+explicitly have to add a @code{\book} block if you want more than a
+single @code{\score} or @code{\markup} in the same example.
+
+This behavior can be changed by setting the variable
+@code{toplevel-book-handler} at toplevel.  The default handler is
+defined in the init file @file{scm/@/lily@/.scm}.
+
+@item
+A compound music expression, such as
+@example
+@{ c'4 d' e'2 @}
+@end example
+
+This will add the piece in a @code{\score} and format it in a
+single book together with all other toplevel @code{\score}s and music
+expressions.  In other words, a file containing only the above
+music expression will be translated into
+
+@example
+\book @{
+  \score @{
+    \new Staff @{
+      \new Voice @{
+        @{ c'4 d' e'2 @}
+      @}
+    @}
+  @}
+       \layout @{ @}
+       \header @{ @}
+@}
+@end example
+
+This behavior can be changed by setting the variable
+@code{toplevel-music-handler} at toplevel.  The default handler is
+defined in the init file @file{scm/@/lily@/.scm}.
+
+@item
+A markup text, a verse for example
+@example
+\markup @{
+   2.  The first line verse two.
+@}
+@end example
+
+Markup texts are rendered above, between or below the scores or music
+expressions, wherever they appear.
+
+@cindex variables
+
+@item
+An variable, such as
+@example
+foo = @{ c4 d e d @}
+@end example
+
+This can be used later on in the file by entering @code{\foo}.  The
+name of an variable should have alphabetic characters only; no
+numbers, underscores or dashes.
+
+@end itemize
+
+The following example shows three things that may be entered at
+toplevel
+
+@example
+\layout @{
+  % movements are non-justified by default
+  ragged-right = ##t
+@}
+
+\header @{
+   title = "Do-re-mi"
+@}
+
+@{ c'4 d' e2 @}
+@end example
+
+
+At any point in a file, any of the following lexical instructions can
+be entered:
+
+@itemize
+@item @code{\version}
+@item @code{\include}
+@item @code{\sourcefilename}
+@item @code{\sourcefileline}
+
+@end itemize
+
+
+@node A single music expression
+@subsection A single music expression
+
+A @code{\score} must contain a single music expression.  However,
+this music expression may be of any size.  Recall that music
+expressions may be included inside other expressions to form
+larger expressions.  All of these examples are single music
+expressions; note the curly braces @{ @} or angle brackets <<
+>> at the beginning and ending of the music.
+
+@example
+@{ c'4 c' c' c' @}
+@end example
+
+@lilypond[ragged-right,verbatim,quote]
+{
+  { c'4 c' c' c'}
+  { d'4 d' d' d'}
+}
+@end lilypond
+
+@lilypond[ragged-right,verbatim,quote]
+<<
+  \new Staff { c'4 c' c' c' }
+  \new Staff { d'4 d' d' d' }
+>>
+@end lilypond
+
+@example
+@{
+  \new GrandStaff <<
+    \new StaffGroup <<
+      \new Staff @{ \flute @}
+      \new Staff @{ \oboe @}
+    >>
+    \new StaffGroup <<
+      \new Staff @{ \violinI @}
+      \new Staff @{ \violinII @}
+    >>
+  >>
+@}
+@end example
+
+
+@node Multiple scores in a book
+@subsection Multiple scores in a book
+
+@funindex \book
+@cindex movements, multiple
+
+A document may contain multiple pieces of music and texts.  Examples
+of these are an etude book, or an orchestral part with multiple
+movements.  Each movement is entered with a @code{\score} block,
+
+@example
+\score @{
+  @var{..music..}
+@}
+@end example
+
+and texts are entered with a @code{\markup} block,
+
+@example
+\markup @{
+  @var{..text..}
+@}
+@end example
+
+@funindex \book
+
+All the movements and texts which appear in the same @code{.ly} file 
+will normally be typeset in the form of a single output file. 
+
+@example
+\score @{
+  @var{..}
+@}
+\markup @{
+  @var{..}
+@}
+\score @{
+  @var{..}
+@}
+@end example
+
+However, if you want multiple output files from the same @code{.ly}
+file, then you can add multiple @code{\book} blocks, where each such
+@code{\book} block will result in a separate output.  If you do not
+specify any @code{\book} block in the file, LilyPond will implicitly
+treat the full file as a single @code{\book} block, see @ref{File
+structure}.  One important exception is within lilypond-book documents,
+where you explicitly have to add a @code{\book} block, otherwise only
+the first @code{\score} or @code{\markup} will appear in the output.
+
+The header for each piece of music can be put inside the @code{\score}
+block.  The @code{piece} name from the header will be printed before
+each movement.  The title for the entire book can be put inside the
+@code{\book}, but if it is not present, the @code{\header} which is at
+the top of the file is inserted.
+
+@example
+\header @{
+  title = "Eight miniatures"
+  composer = "Igor Stravinsky"
+@}
+\score @{
+  @dots{}
+  \header @{ piece = "Romanze" @}
+@}
+\markup @{
+   ..text of second verse..
+@}
+\markup @{
+   ..text of third verse..
+@}
+\score @{
+  @dots{}
+  \header @{ piece = "Menuetto" @}
+@}
+@end example
+
+@node Extracting fragments of notation
+@subsection Extracting fragments of notation
+
+It is possible to quote small fragments of a large score directly from
+the output.  This can be compared to clipping a piece of a paper score
+with scissors.
+
+This is done by definining the measures that need to be cut out
+separately.  For example, including the following definition
+
+
+@verbatim
+\layout {
+  clip-regions
+  = #(list
+      (cons
+       (make-rhythmic-location 5 1 2)
+       (make-rhythmic-location 7 3 4)))
+}       
+@end verbatim
+
+@noindent
+will extract a fragment starting halfway the fifth measure, ending in
+the seventh measure.  The meaning of @code{5 1 2} is: after a 1/2 note
+in measure 5, and @code{7 3 4} after 3 quarter notes in measure 7.
+
+More clip regions can be defined by adding more pairs of
+rhythmic-locations to the list. 
+
+In order to use this feature, LilyPond must be invoked with
+@code{-dclip-systems}.  The clips are output as EPS files, and are
+converted to PDF and PNG if these formats are switched on as well.
+
+For more information on output formats, see @rprogram{Invoking lilypond}.
+
+@seealso
+
+Examples: @lsr{non-notation,clip-systems.ly}
+
+
+@node Including LilyPond files
+@subsection Including LilyPond files
+
+@funindex \include
+@cindex including files
+
+A large project may be split up into separate files.  To refer to another
+file, use
+
+@example
+\include "otherfile.ly"
+@end example
+
+The line @code{\include "file.ly"} is equivalent to pasting the contents
+of file.ly into the current file at the place where you have the
+\include.  For example, for a large project you might write separate files
+for each instrument part and create a @q{full score} file which brings
+together the individual instrument files.
+
+The initialization of LilyPond is done in a number of files that are
+included by default when you start the program, normally transparent to the
+user.  Run lilypond --verbose to see a list of paths and files that Lily
+finds.
+
+Files placed in directory @file{PATH/TO/share/lilypond/VERSION/ly/} (where
+VERSION is in the form @q{2.6.1}) are on the path and available to
+@code{\include}.  Files in the
+current working directory are available to \include, but a file of the same
+name in LilyPond's installation takes precedence.  Files are
+available to \include from directories in the search path specified as an
+option when invoking @code{lilypond --include=DIR} which adds DIR to the
+search path.
+
+The @code{\include} statement can use full path information, but with the Unix
+convention @samp{/} rather than the DOS/Windows @samp{\}.  For example,
+if @file{stuff.ly} is located one directory higher than the current working
+directory, use
+
+@example
+\include "../stuff.ly"
+@end example
+
+
+@node Text encoding
+@subsection Text encoding
+
+LilyPond uses the Pango library to format multi-lingual texts, and
+does not perform any input-encoding conversions.  This means that any
+text, be it title, lyric text, or musical instruction containing
+non-ASCII characters, must be utf-8.  The easiest way to enter such text is
+by using a Unicode-aware editor and saving the file with utf-8 encoding.  Most
+popular modern editors have utf-8 support, for example, vim, Emacs,
+jEdit, and GEdit do.
+
+@c  Currently not working
+@ignore
+Depending on the fonts installed, the following fragment shows Hebrew
+and Cyrillic lyrics,
+
+@cindex Cyrillic
+@cindex Hebrew
+@cindex ASCII, non
+
+@li lypondfile[fontload]{utf-8.ly}
+
+The @TeX{} backend does not handle encoding specially at all.  Strings
+in the input are put in the output as-is.  Extents of text items in the
+@TeX{} backend, are determined by reading a file created via the
+@file{texstr} backend,
+
+@example
+lilypond -dbackend=texstr input/les-nereides.ly
+latex les-nereides.texstr
+@end example
+
+The last command produces @file{les-nereides.textmetrics}, which is
+read when you execute
+
+@example
+lilypond -dbackend=tex input/les-nereides.ly
+@end example
+
+Both @file{les-nereides.texstr} and @file{les-nereides.tex} need
+suitable LaTeX wrappers to load appropriate La@TeX{} packages for
+interpreting non-ASCII strings.
+
+@end ignore
+
+To use a Unicode escape sequence, use
+
+@example
+#(ly:export (ly:wide-char->utf-8 #x2014))
+@end example
+
+
+@seealso
+
+@lsr{text,utf-8.ly}
+
+
+@node Different editions from one source
+@subsection Different editions from one source
+
+@funindex \tag
+@cindex tag
+
+The @code{\tag} command marks music expressions with a name.  These
+tagged expressions can be filtered out later.  With this mechanism it
+is possible to make different versions of the same music source.
+
+In the following example, we see two versions of a piece of music, one
+for the full score, and one with cue notes for the instrumental part
+
+@example
+c1
+<<
+  \tag #'part <<
+    R1 \\
+    @{
+      \set fontSize = #-1
+      c4_"cue" f2 g4 @}
+  >>
+  \tag #'score R1
+>>
+c1
+@end example
+
+The same can be applied to articulations, texts, etc.: they are
+made by prepending
+@example
+-\tag #@var{your-tag}
+@end example
+to an articulation, for example,
+@example
+c1-\tag #'part ^4
+@end example
+
+This defines a note with a conditional fingering indication.
+
+@cindex keepWithTag
+@cindex removeWithTag
+By applying the @code{\keepWithTag} and @code{\removeWithTag}
+commands, tagged expressions can be filtered.  For example,
+@example
+<<
+  @var{the music}
+  \keepWithTag #'score @var{the music}
+  \keepWithTag #'part @var{the music}
+>>
+@end example
+would yield
+
+@lilypondfile[ragged-right,quote]{tag-filter.ly}
+
+The arguments of the @code{\tag} command should be a symbol
+(such as @code{#'score} or @code{#'part}), followed by a
+music expression.  It is possible to put multiple tags on
+a piece of music with multiple @code{\tag} entries,
+
+@example
+  \tag #'original-part \tag #'transposed-part @dots{}
+@end example
+
+
+@seealso
+
+Examples: @lsr{parts,tag@/-filter@/.ly}
+
+
+@refbugs
+
+Multiple rests are not merged if you create the score with both tagged
+sections.
+
+
+@node Common syntax issues TODO name?
+@section Common syntax issues TODO name?
+
+@menu
+* Up and down::                 
+* Distances and measurements MAYBE MOVE::  
+@end menu
+
+@node Up and down
+@subsection Up and down
+
+TODO: everything
+
+By default, lilypnod does a pretty jazz'n job of picking
+directions.  But in some cases, it may be desirable to force a
+direction.
+
+@verbatim
+-
+^ _
+@end verbatim
+
+
+@node Distances and measurements MAYBE MOVE
+@subsection Distances and measurements MAYBE MOVE
+
+DISCUSS after working on other sections.
+
+TODO: staff spaces, #UP #DOWN #LEFT #RIGHT.  Maybe move into tweaks?
+
+
+
+
+
+@node Other stuffs TODO move?
+@section Other stuffs TODO move?
+
+
+@menu
+* Displaying LilyPond notation::  
+* Skipping corrected music::    
+@end menu
+
+@node Displaying LilyPond notation
+@subsection Displaying LilyPond notation
+
+@funindex \displayLilyMusic
+Displaying a music expression in LilyPond notation can be
+done using the music function @code{\displayLilyMusic}.  For example,
+
+@example
+@{
+  \displayLilyMusic \transpose c a, @{ c e g a bes @}
+@}
+@end example
+
+will display
+
+@example
+@{ a, cis e fis g @}
+@end example
+
+By default, LilyPond will print these messages to the console along
+with all the other messages.  To split up these messages and save
+the results of @code{\display@{STUFF@}}, redirect the output to
+a file.
+
+@example
+lilypond file.ly >display.txt
+@end example
+
+
+@node Skipping corrected music
+@subsection Skipping corrected music
+
+
+@funindex skipTypesetting
+@funindex showLastLength
+
+When entering or copying music, usually only the music near the end (where
+you
+are adding notes) is interesting to view and correct.  To speed up
+this correction process, it is possible to skip typesetting of all but
+the last few measures.  This is achieved by putting
+
+@verbatim
+showLastLength = R1*5
+\score { ... }
+@end verbatim
+
+@noindent
+in your source file.  This will render only the last 5 measures
+(assuming 4/4 time signature) of every @code{\score} in the input
+file.  For longer pieces, rendering only a small part is often an order
+of magnitude quicker than rendering it completely
+
+Skipping parts of a score can be controlled in a more fine-grained
+fashion with the property @code{Score.skipTypesetting}.  When it is
+set, no typesetting is performed at all.
+
+This property is also used to control output to the MIDI file.  Note that
+it skips all events, including tempo and instrument changes.  You have
+been warned.
+
+@lilypond[quote,fragment,ragged-right,verbatim]
+\relative c'' {
+  c8 d
+  \set Score.skipTypesetting = ##t
+  e e e e e e e e
+  \set Score.skipTypesetting = ##f
+  c d b bes a g c2 }
+@end lilypond
+
+In polyphonic music, @code{Score.skipTypesetting} will affect all
+voices and staves, saving even more time.
+
+
+
index 538868182507993639880e488fb239c1086f5d5f..dc8a5298337e7680cbb3085a36d011719214fe2c 100644 (file)
@@ -161,9 +161,11 @@ of this and other documentation.
 * Musical notation::               Musical notation.
 * Specialist notation::            Notation which is only used for
     specific purposes.
-* Changing defaults::              Tuning output.
+* Input syntax::                   General information about
+    lilypond input files.
 * Non-musical notation::           Output that is not musical notation.
 * Spacing issues::                 Display of output on paper.
+* Changing defaults::              Tuning output.
 * Interfaces for programmers::     Expert usage.
 
 Appendices
@@ -185,9 +187,11 @@ Appendices
 @include notation.itely
 @include specialist.itely
 
-@include changing-defaults.itely
+@include input.itely
 @include non-music.itely
 @include spacing.itely
+
+@include changing-defaults.itely
 @include programming-interface.itely
 
 
index 334cf17612ea9fad9688680e3c791390aabef922..24803a197fe475bc275c93dee887c9f2b29d69ba 100644 (file)
 
 @macro rglos {TEXT}
 @vindex \TEXT\
-@code{\TEXT\}
+@ref{\TEXT\,,,music-glossary}
 @end macro
 
 @macro rprogram{TEXT}
-program usage manual, @internalsref{\TEXT\}
+program usage manual, @ref{\TEXT\,,,lilypond-program}
+@c @internalsref{\TEXT\}
 @end macro
 
 @macro ruser{TEXT}
-user manual, @internalsref{\TEXT\}
+user manual, @ref{\TEXT\,,,lilypond}
+@c @internalsref{\TEXT\}
 @end macro
 
 @macro rlearning{TEXT}
-learning manual, @internalsref{\TEXT\}
+learning manual, @ref{\TEXT\,,,lilypond-learning}
+@c @internalsref{\TEXT\}
 @end macro
 
 @end iftex
index 558835dbe71bfa32b0f97ee3ad99c72814bf297a..3f3b00c22f7fff7f7cf19bffeb6c0c5f163c6c1c 100644 (file)
@@ -18,498 +18,11 @@ This section deals with general lilypond issues, rather than
 specific notation.
 
 @menu
-* Input files::                 
 * Titles and headers::          
 * MIDI output::                 
-* Displaying LilyPond notation::  
-* Skipping corrected music::    
 @end menu
 
 
-@node Input files
-@section Input files
-
-The main format of input for LilyPond are text files.  By convention,
-these files end with @samp{.ly}.
-
-@menu
-* File structure::              
-* A single music expression::   
-* Multiple scores in a book::   
-* Extracting fragments of notation::  
-* Including LilyPond files::    
-* Text encoding::               
-* Different editions from one source::  
-@end menu
-
-
-@node File structure
-@subsection File structure
-
-A @code{.ly} file contains any number of toplevel expressions, where a
-toplevel expression is one of the following
-
-@itemize
-@item
-An output definition, such as @code{\paper}, @code{\midi}, and
-@code{\layout}.  Such a definition at the toplevel changes the default
-settings for the block entered.
-
-@item
-A direct scheme expression, such as
-@code{#(set-default-paper-size "a7" 'landscape)} or
-@code{#(ly:set-option 'point-and-click #f)}.
-
-@item
-A @code{\header} block.  This sets the global header block.  This
-is the block containing the definitions for book-wide settings, like
-composer, title, etc.
-
-@item
-A @code{\score} block.  This score will be collected with other
-toplevel scores, and combined as a single @code{\book}.
-
-This behavior can be changed by setting the variable
-@code{toplevel-score-handler} at toplevel.  The default handler is
-defined in the init file @file{scm/@/lily@/.scm}.
-
-The @code{\score} must begin with a music expression, and may
-contain only one music expression.
-
-@item
-A @code{\book} block logically combines multiple movements
-(i.e., multiple @code{\score} blocks) in one document.  If there are
-a number of @code{\scores}, one output file will be created for
-each @code{\book} block, in which all corresponding movements are
-concatenated.  The only reason to explicitly specify @code{\book} blocks
-in a @code{.ly} file is if you wish multiple output files from a single
-input file.  One exception is within lilypond-book documents, where you
-explicitly have to add a @code{\book} block if you want more than a
-single @code{\score} or @code{\markup} in the same example.
-
-This behavior can be changed by setting the variable
-@code{toplevel-book-handler} at toplevel.  The default handler is
-defined in the init file @file{scm/@/lily@/.scm}.
-
-@item
-A compound music expression, such as
-@example
-@{ c'4 d' e'2 @}
-@end example
-
-This will add the piece in a @code{\score} and format it in a
-single book together with all other toplevel @code{\score}s and music
-expressions.  In other words, a file containing only the above
-music expression will be translated into
-
-@example
-\book @{
-  \score @{
-    \new Staff @{
-      \new Voice @{
-        @{ c'4 d' e'2 @}
-      @}
-    @}
-  @}
-       \layout @{ @}
-       \header @{ @}
-@}
-@end example
-
-This behavior can be changed by setting the variable
-@code{toplevel-music-handler} at toplevel.  The default handler is
-defined in the init file @file{scm/@/lily@/.scm}.
-
-@item
-A markup text, a verse for example
-@example
-\markup @{
-   2.  The first line verse two.
-@}
-@end example
-
-Markup texts are rendered above, between or below the scores or music
-expressions, wherever they appear.
-
-@cindex variables
-
-@item
-An variable, such as
-@example
-foo = @{ c4 d e d @}
-@end example
-
-This can be used later on in the file by entering @code{\foo}.  The
-name of an variable should have alphabetic characters only; no
-numbers, underscores or dashes.
-
-@end itemize
-
-The following example shows three things that may be entered at
-toplevel
-
-@example
-\layout @{
-  % movements are non-justified by default
-  ragged-right = ##t
-@}
-
-\header @{
-   title = "Do-re-mi"
-@}
-
-@{ c'4 d' e2 @}
-@end example
-
-
-At any point in a file, any of the following lexical instructions can
-be entered:
-
-@itemize
-@item @code{\version}
-@item @code{\include}
-@item @code{\sourcefilename}
-@item @code{\sourcefileline}
-
-@end itemize
-
-
-@node A single music expression
-@subsection A single music expression
-
-A @code{\score} must contain a single music expression.  However,
-this music expression may be of any size.  Recall that music
-expressions may be included inside other expressions to form
-larger expressions.  All of these examples are single music
-expressions; note the curly braces @{ @} or angle brackets <<
->> at the beginning and ending of the music.
-
-@example
-@{ c'4 c' c' c' @}
-@end example
-
-@lilypond[ragged-right,verbatim,quote]
-{
-  { c'4 c' c' c'}
-  { d'4 d' d' d'}
-}
-@end lilypond
-
-@lilypond[ragged-right,verbatim,quote]
-<<
-  \new Staff { c'4 c' c' c' }
-  \new Staff { d'4 d' d' d' }
->>
-@end lilypond
-
-@example
-@{
-  \new GrandStaff <<
-    \new StaffGroup <<
-      \new Staff @{ \flute @}
-      \new Staff @{ \oboe @}
-    >>
-    \new StaffGroup <<
-      \new Staff @{ \violinI @}
-      \new Staff @{ \violinII @}
-    >>
-  >>
-@}
-@end example
-
-
-@node Multiple scores in a book
-@subsection Multiple scores in a book
-
-@funindex \book
-@cindex movements, multiple
-
-A document may contain multiple pieces of music and texts.  Examples
-of these are an etude book, or an orchestral part with multiple
-movements.  Each movement is entered with a @code{\score} block,
-
-@example
-\score @{
-  @var{..music..}
-@}
-@end example
-
-and texts are entered with a @code{\markup} block,
-
-@example
-\markup @{
-  @var{..text..}
-@}
-@end example
-
-@funindex \book
-
-All the movements and texts which appear in the same @code{.ly} file 
-will normally be typeset in the form of a single output file. 
-
-@example
-\score @{
-  @var{..}
-@}
-\markup @{
-  @var{..}
-@}
-\score @{
-  @var{..}
-@}
-@end example
-
-However, if you want multiple output files from the same @code{.ly}
-file, then you can add multiple @code{\book} blocks, where each such
-@code{\book} block will result in a separate output.  If you do not
-specify any @code{\book} block in the file, LilyPond will implicitly
-treat the full file as a single @code{\book} block, see @ref{File
-structure}.  One important exception is within lilypond-book documents,
-where you explicitly have to add a @code{\book} block, otherwise only
-the first @code{\score} or @code{\markup} will appear in the output.
-
-The header for each piece of music can be put inside the @code{\score}
-block.  The @code{piece} name from the header will be printed before
-each movement.  The title for the entire book can be put inside the
-@code{\book}, but if it is not present, the @code{\header} which is at
-the top of the file is inserted.
-
-@example
-\header @{
-  title = "Eight miniatures"
-  composer = "Igor Stravinsky"
-@}
-\score @{
-  @dots{}
-  \header @{ piece = "Romanze" @}
-@}
-\markup @{
-   ..text of second verse..
-@}
-\markup @{
-   ..text of third verse..
-@}
-\score @{
-  @dots{}
-  \header @{ piece = "Menuetto" @}
-@}
-@end example
-
-@node Extracting fragments of notation
-@subsection Extracting fragments of notation
-
-It is possible to quote small fragments of a large score directly from
-the output.  This can be compared to clipping a piece of a paper score
-with scissors.
-
-This is done by definining the measures that need to be cut out
-separately.  For example, including the following definition
-
-
-@verbatim
-\layout {
-  clip-regions
-  = #(list
-      (cons
-       (make-rhythmic-location 5 1 2)
-       (make-rhythmic-location 7 3 4)))
-}       
-@end verbatim
-
-@noindent
-will extract a fragment starting halfway the fifth measure, ending in
-the seventh measure.  The meaning of @code{5 1 2} is: after a 1/2 note
-in measure 5, and @code{7 3 4} after 3 quarter notes in measure 7.
-
-More clip regions can be defined by adding more pairs of
-rhythmic-locations to the list. 
-
-In order to use this feature, LilyPond must be invoked with
-@code{-dclip-systems}.  The clips are output as EPS files, and are
-converted to PDF and PNG if these formats are switched on as well.
-
-For more information on output formats, see @rprogram{Invoking lilypond}.
-
-@seealso
-
-Examples: @lsr{non-notation,clip-systems.ly}
-
-
-@node Including LilyPond files
-@subsection Including LilyPond files
-
-@funindex \include
-@cindex including files
-
-A large project may be split up into separate files.  To refer to another
-file, use
-
-@example
-\include "otherfile.ly"
-@end example
-
-The line @code{\include "file.ly"} is equivalent to pasting the contents
-of file.ly into the current file at the place where you have the
-\include.  For example, for a large project you might write separate files
-for each instrument part and create a @q{full score} file which brings
-together the individual instrument files.
-
-The initialization of LilyPond is done in a number of files that are
-included by default when you start the program, normally transparent to the
-user.  Run lilypond --verbose to see a list of paths and files that Lily
-finds.
-
-Files placed in directory @file{PATH/TO/share/lilypond/VERSION/ly/} (where
-VERSION is in the form @q{2.6.1}) are on the path and available to
-@code{\include}.  Files in the
-current working directory are available to \include, but a file of the same
-name in LilyPond's installation takes precedence.  Files are
-available to \include from directories in the search path specified as an
-option when invoking @code{lilypond --include=DIR} which adds DIR to the
-search path.
-
-The @code{\include} statement can use full path information, but with the Unix
-convention @samp{/} rather than the DOS/Windows @samp{\}.  For example,
-if @file{stuff.ly} is located one directory higher than the current working
-directory, use
-
-@example
-\include "../stuff.ly"
-@end example
-
-
-@node Text encoding
-@subsection Text encoding
-
-LilyPond uses the Pango library to format multi-lingual texts, and
-does not perform any input-encoding conversions.  This means that any
-text, be it title, lyric text, or musical instruction containing
-non-ASCII characters, must be utf-8.  The easiest way to enter such text is
-by using a Unicode-aware editor and saving the file with utf-8 encoding.  Most
-popular modern editors have utf-8 support, for example, vim, Emacs,
-jEdit, and GEdit do.
-
-@c  Currently not working
-@ignore
-Depending on the fonts installed, the following fragment shows Hebrew
-and Cyrillic lyrics,
-
-@cindex Cyrillic
-@cindex Hebrew
-@cindex ASCII, non
-
-@li lypondfile[fontload]{utf-8.ly}
-
-The @TeX{} backend does not handle encoding specially at all.  Strings
-in the input are put in the output as-is.  Extents of text items in the
-@TeX{} backend, are determined by reading a file created via the
-@file{texstr} backend,
-
-@example
-lilypond -dbackend=texstr input/les-nereides.ly
-latex les-nereides.texstr
-@end example
-
-The last command produces @file{les-nereides.textmetrics}, which is
-read when you execute
-
-@example
-lilypond -dbackend=tex input/les-nereides.ly
-@end example
-
-Both @file{les-nereides.texstr} and @file{les-nereides.tex} need
-suitable LaTeX wrappers to load appropriate La@TeX{} packages for
-interpreting non-ASCII strings.
-
-@end ignore
-
-To use a Unicode escape sequence, use
-
-@example
-#(ly:export (ly:wide-char->utf-8 #x2014))
-@end example
-
-
-@seealso
-
-@lsr{text,utf-8.ly}
-
-
-@node Different editions from one source
-@subsection Different editions from one source
-
-@funindex \tag
-@cindex tag
-
-The @code{\tag} command marks music expressions with a name.  These
-tagged expressions can be filtered out later.  With this mechanism it
-is possible to make different versions of the same music source.
-
-In the following example, we see two versions of a piece of music, one
-for the full score, and one with cue notes for the instrumental part
-
-@example
-c1
-<<
-  \tag #'part <<
-    R1 \\
-    @{
-      \set fontSize = #-1
-      c4_"cue" f2 g4 @}
-  >>
-  \tag #'score R1
->>
-c1
-@end example
-
-The same can be applied to articulations, texts, etc.: they are
-made by prepending
-@example
--\tag #@var{your-tag}
-@end example
-to an articulation, for example,
-@example
-c1-\tag #'part ^4
-@end example
-
-This defines a note with a conditional fingering indication.
-
-@cindex keepWithTag
-@cindex removeWithTag
-By applying the @code{\keepWithTag} and @code{\removeWithTag}
-commands, tagged expressions can be filtered.  For example,
-@example
-<<
-  @var{the music}
-  \keepWithTag #'score @var{the music}
-  \keepWithTag #'part @var{the music}
->>
-@end example
-would yield
-
-@lilypondfile[ragged-right,quote]{tag-filter.ly}
-
-The arguments of the @code{\tag} command should be a symbol
-(such as @code{#'score} or @code{#'part}), followed by a
-music expression.  It is possible to put multiple tags on
-a piece of music with multiple @code{\tag} entries,
-
-@example
-  \tag #'original-part \tag #'transposed-part @dots{}
-@end example
-
-
-@seealso
-
-Examples: @lsr{parts,tag@/-filter@/.ly}
-
-
-@refbugs
-
-Multiple rests are not merged if you create the score with both tagged
-sections.
-
-
 @node Titles and headers
 @section Titles and headers
 
@@ -1120,82 +633,4 @@ the list of MIDI instruments, the Grand Piano (@code{"acoustic grand"})
 instrument is used.
 
 
-@c  Yes, this is a cop-out; this info doesn't belong in the Scheme
-@c  chapter, but I'm not certain where to stick it.
-@c  I think I'll eventually split this chapter into a "paper/layout"
-@c  chapter and a "misc issues" chapter.  -gp
-@node Displaying LilyPond notation
-@section Displaying LilyPond notation
-
-@funindex \displayLilyMusic
-Displaying a music expression in LilyPond notation can be
-done using the music function @code{\displayLilyMusic}.  For example,
-
-@example
-@{
-  \displayLilyMusic \transpose c a, @{ c e g a bes @}
-@}
-@end example
-
-will display
-
-@example
-@{ a, cis e fis g @}
-@end example
-
-By default, LilyPond will print these messages to the console along
-with all the other messages.  To split up these messages and save
-the results of @code{\display@{STUFF@}}, redirect the output to
-a file.
-
-@example
-lilypond file.ly >display.txt
-@end example
-
-
-@node Skipping corrected music
-@section Skipping corrected music
-
-
-@funindex skipTypesetting
-@funindex showLastLength
-
-When entering or copying music, usually only the music near the end (where
-you
-are adding notes) is interesting to view and correct.  To speed up
-this correction process, it is possible to skip typesetting of all but
-the last few measures.  This is achieved by putting
-
-@verbatim
-showLastLength = R1*5
-\score { ... }
-@end verbatim
-
-@noindent
-in your source file.  This will render only the last 5 measures
-(assuming 4/4 time signature) of every @code{\score} in the input
-file.  For longer pieces, rendering only a small part is often an order
-of magnitude quicker than rendering it completely
-
-Skipping parts of a score can be controlled in a more fine-grained
-fashion with the property @code{Score.skipTypesetting}.  When it is
-set, no typesetting is performed at all.
-
-This property is also used to control output to the MIDI file.  Note that
-it skips all events, including tempo and instrument changes.  You have
-been warned.
-
-@lilypond[quote,fragment,ragged-right,verbatim]
-\relative c'' {
-  c8 d
-  \set Score.skipTypesetting = ##t
-  e e e e e e e e
-  \set Score.skipTypesetting = ##f
-  c d b bes a g c2 }
-@end lilypond
-
-In polyphonic music, @code{Score.skipTypesetting} will affect all
-voices and staves, saving even more time.
-
-
 
index 19e4cfd4635f18e0d9ee6f44ea1d2296daa95e35..14d6c172a8c699646c51cfe89b1a84e15e08f5a9 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @ignore
-    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+   Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -61,8 +61,6 @@ is more fundamental and will be presented first.
 @cindex Absolute
 @cindex Absolute octave specification
 
-@c don't use @samp here because that might get confused with
-@c octave marks
 In absolute mode, every note is placed explicitly in a certain
 octave.  The note names @code{c} to @code{b} are engraved in the
 octave below middle C, as in the previous example.
@@ -313,7 +311,7 @@ Micro tones are also exported to the MIDI file.
 
 In accordance with standard typesetting rules, a natural sign is
 printed before a sharp or flat if a previous accidental needs to
-be cancelled.  To change this behavior, use
+be canceled.  To change this behavior, use
 
 @lilypond[fragment,quote,ragged-right,verbatim,relative=2]
 ceses4 ces cis c
@@ -1099,8 +1097,12 @@ Common rules for typesetting accidentals have been placed in a
 function.  This function is called as follows
 
 @funindex set-accidental-style
+
 @example
-#(set-accidental-style 'STYLE)
+\new Staff <<
+  #(set-accidental-style 'voice)
+  @{ @dots{} @}
+>>
 @end example
 
 @c TODO: check the context stuff below
@@ -1108,29 +1110,50 @@ function.  This function is called as follows
 @c -the default contexts as specified in
 @c  scm/music-function.scm seem to be different -vv
 
-Optionally, the function can take two arguments: the name of the
-accidental style, and an optional argument that denotes the context that
-should be changed:
+If no context name is supplied, the accidental style applies to
+the @code{Staff} by default.  Optionally, the function can take
+the context for which the style should be changed as a second
+argument:
 
 @example
-#(set-accidental-style 'STYLE #('CONTEXT#))
+#(set-accidental-style 'STYLE #('CONTEXT))
 @end example
 
-If no context name is supplied, @code{Staff} is the default,
-but you may wish to apply the accidental style to a single @code{Voice}
-instead.
+The following accidental styles are supported.  To demonstrate
+each style, we use the following example:
+
+@c TODO: a Formatter, please clean this up.
+@lilypond[quote,ragged-right,verbatim]
+musicA = { << \relative { cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
+       \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
 
-The following accidental styles are supported:
+musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4 
+       \change Staff = up cis' \change Staff = down <fis, a>  
+       \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
+       <f a d>2 |  } }}
 
+\new PianoStaff {
+       << \context Staff = "up" {
+           %%% change the next line as desired:
+              %#(set-accidental-style 'default) 
+       \musicA }
+       \context Staff = "down"{
+           %%% change the next line as desired:
+              %#(set-accidental-style 'default)
+       \musicB } >> }
+@end lilypond
+
+@c don't use verbatim in this table.
 @table @code
 @item default
-This is the default typesetting behavior.  It corresponds
-to 18th century common practice: Accidentals are
-remembered to the end of the measure in which they occur and
-only on their own octave.
+This is the default typesetting behavior.  It corresponds to
+eighteenth-century common practice: Accidentals are remembered to
+the end of the measure in which they occur and only on their own
+octave.  Thus, in the example below, no natural signs are printed
+before the @code{b} in the second measure or the last @code{c}:
 
 @lilypond[quote,ragged-right]
-musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
+musicA = { << \relative { cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
        \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
 
 musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4 
@@ -1138,16 +1161,13 @@ musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4
        \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
        <f a d>2 |  } }}
 
-\score { 
-       \new PianoStaff {
+\new PianoStaff {
        << \context Staff = "up" {
               %#(set-accidental-style 'default) 
        \musicA }
        \context Staff = "down"{
               %#(set-accidental-style 'default)
        \musicB } >> }
-       \header { piece = \markup {\fill-line { \fontsize #3  "'default" }}}
-}
 @end lilypond
 
 @item voice
@@ -1156,17 +1176,15 @@ Staff-level.  This variable, however, typesets accidentals
 individually for each voice.  Apart from that, the rule is similar to
 @code{default}.
 
-@example
- \new Staff <<
-        #(set-accidental-style 'voice)
-       @{ @dots{} @}
-       >>
-@end example
+As a result, accidentals from one voice do not get canceled in
+other voices, which is often an unwanted result: in the following
+example, it is hard to determine whether the second @code{a}
+should be played natural or sharp.  The @code{voice} option should
+therefore be used only if the voices are to be read solely by
+individual musicians.  If the staff is to be used by one musician
+(e.g., a conductor or in a piano score) then @code{modern} or
+@code{modern-cautionary} should be used instead.
 
-As a result, accidentals from one voice do not get canceled in other
-voices, which is often an unwanted result: in the following example, it
-is hard to determine whether the second @samp{a} should be played
-natural or sharp.
 
 @lilypond[quote,ragged-right]
 musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
@@ -1177,7 +1195,6 @@ musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4
        \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
        <f a d>2 |  } }}
 
-\score { 
        \new PianoStaff {
        << \context Staff = "up" {
               #(set-accidental-style 'voice) 
@@ -1185,24 +1202,19 @@ musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4
        \context Staff = "down"{
               #(set-accidental-style 'voice)
        \musicB } >> }
-       \header { piece = \markup {\fill-line { \fontsize #3  "'voice" }}}
-}
 @end lilypond
 
-The @code{voice} option should be used if the voices
-are to be read solely by individual musicians.  If the staff is to be
-used by one musician (e.g., a conductor) then
-@code{modern} or @code{modern-cautionary}
-should be used instead.
-
 @item modern
 @funindex modern style accidentals
-This rule corresponds to the common practice in the 20th century.  This rule
-prints the same accidentals as @code{default}, but temporary
-accidentals also are canceled in other octaves.  Furthermore,
-in the same octave, they also get canceled in the following
-measure: in the following example, notice the two natural signs which appear
-in the second bar of the upper staff.
+
+This rule corresponds to the common practice in the twentieth
+century.  It prints the same accidentals as @code{default}, with
+two exceptions which serve to avoid ambiguity: after temporary
+accidentals, cancellation marks are printed also in the following
+measure (for notes in the same octave) and, in the same measure,
+for notes in other octaves.  Hence the naturals before the
+@code{b} and the @code{c} in the second measure of the upper
+staff:
 
 @lilypond[quote,ragged-right]
 musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
@@ -1213,7 +1225,6 @@ musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4
        \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
        <f a d>2 |  } }}
 
-\score { 
        \new PianoStaff {
        << \context Staff = "up" {
               #(set-accidental-style 'modern) 
@@ -1221,17 +1232,18 @@ musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4
        \context Staff = "down"{
               #(set-accidental-style 'modern)
        \musicB } >> }
-       \header { piece = \markup {\fill-line { \fontsize #3  "'modern" }}}
-}
 @end lilypond
 
-@item @code{modern-cautionary}
+@item modern-cautionary
 @funindex modern-cautionary
-This rule is similar to @code{modern}, but the @q{extra} accidentals
-(the ones not typeset by @code{default}) are typeset as cautionary
-accidentals.  They are printed in reduced size or (by default)
-with parentheses -- this can be set by definig the @code{cautionary-style}
-property of the @internalsref{AccidentalSuggestion} object.
+
+This rule is similar to @code{modern}, but the @q{extra}
+accidentals (the ones not typeset by @code{default}) are typeset
+as cautionary accidentals.  They are by default printed with
+parentheses, but they can also be printed in reduced size by
+defining the @code{cautionary-style} property of the
+@internalsref{AccidentalSuggestion} object.
+
 
 @lilypond[quote,ragged-right]
 musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
@@ -1242,7 +1254,6 @@ musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4
        \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
        <f a d>2 |  } }}
 
-\score { 
        \new PianoStaff {
        << \context Staff = "up" {
               #(set-accidental-style 'modern-cautionary) 
@@ -1250,16 +1261,20 @@ musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4
        \context Staff = "down"{
               #(set-accidental-style 'modern-cautionary)
        \musicB } >> }
-       \header { piece = \markup {\fill-line { \fontsize #3  "'modern-cautionary" }}}
-}
 @end lilypond
 
-@funindex modern-voice
 @item modern-voice
-This rule is used for multivoice accidentals to be read both by musicians
-playing one voice and musicians playing all voices.  Accidentals are
-typeset for each voice, but they @emph{are} canceled across voices in
-the same @internalsref{Staff}.
+@funindex modern-voice
+
+This rule is used for multivoice accidentals to be read both by
+musicians playing one voice and musicians playing all voices.
+Accidentals are typeset for each voice, but they @emph{are}
+canceled across voices in the same @internalsref{Staff}.  Hence,
+the @code{a} in the last measure is canceled because the previous
+cancellation was in a different voice, and the @code{d} in the
+lower staff is canceled because of the accidental in a different
+voice in the previous measure:
+
 
 @lilypond[quote,ragged-right]
 musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
@@ -1270,7 +1285,6 @@ musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4
        \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
        <f a d>2 |  } }}
 
-\score { 
        \new PianoStaff {
        << \context Staff = "up" {
               #(set-accidental-style 'modern-voice) 
@@ -1278,12 +1292,11 @@ musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4
        \context Staff = "down"{
               #(set-accidental-style 'modern-voice)
        \musicB } >> }
-       \header { piece = \markup {\fill-line { \fontsize #3  "'modern-voice" }}}
-}
 @end lilypond
 
 @funindex modern-voice-cautionary
 @item modern-voice-cautionary
+
 This rule is the same as @code{modern-voice}, but with the extra
 accidentals (the ones not typeset by @code{voice}) typeset
 as cautionaries.  Even though all accidentals typeset by
@@ -1299,7 +1312,6 @@ musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4
        \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
        <f a d>2 |  } }}
 
-\score { 
        \new PianoStaff {
        << \context Staff = "up" {
               #(set-accidental-style 'modern-voice-cautionary) 
@@ -1307,14 +1319,21 @@ musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4
        \context Staff = "down"{
               #(set-accidental-style 'modern-voice-cautionary)
        \musicB } >> }
-       \header { piece = \markup {\fill-line { \fontsize #3  "'modern-voice-cautionary" }}}
-}
 @end lilypond
 
 @item piano
 @funindex piano accidentals
-This accidental style takes place in a GrandStaff context.  However, you have to 
-explicitly set it for @emph{each} individual Staff of the GrandStaff:
+
+This rule reflects twentieth-century practice for piano notation.
+Its behavior is very similar to @code{modern} style, but here
+accidentals also get canceled across the staves in the same
+@internalsref{GrandStaff} or @internalsref{PianoStaff}, hence all
+the cancellations of the final notes.
+
+This accidental style takes place in a GrandStaff context.
+However, you have to explicitly set it for @emph{each} individual
+Staff of the GrandStaff:
+
 
 @example
 \new GrandStaff @{ <<
@@ -1329,11 +1348,6 @@ explicitly set it for @emph{each} individual Staff of the GrandStaff:
 >> @}
 @end example
 
-This rule reflects 20th century practice for piano notation.  Its behavior is very
-similar to @code{modern} style, but here accidentals also get canceled
-across the staves in the same @internalsref{GrandStaff} or
-@internalsref{PianoStaff}.
-
 @lilypond[quote,ragged-right]
 musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
        \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
@@ -1343,7 +1357,6 @@ musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4
        \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
        <f a d>2 |  } }}
 
-\score { 
        \new PianoStaff {
        << \context Staff = "up" {
               #(set-accidental-style 'piano) 
@@ -1351,12 +1364,11 @@ musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4
        \context Staff = "down"{
               #(set-accidental-style 'piano)
        \musicB } >> }
-       \header { piece = \markup {\fill-line { \fontsize #3  "'piano" }}}
-}
 @end lilypond
 
 @item piano-cautionary
 @funindex #(set-accidental-style 'piano-cautionary)
+
 Same as @code{#(set-accidental-style 'piano)} but with the extra
 accidentals typeset as cautionaries.
 
@@ -1369,7 +1381,6 @@ musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4
        \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
        <f a d>2 |  } }}
 
-\score { 
        \new PianoStaff {
        << \context Staff = "up" {
               #(set-accidental-style 'piano-cautionary) 
@@ -1377,14 +1388,14 @@ musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4
        \context Staff = "down"{
               #(set-accidental-style 'piano-cautionary)
        \musicB } >> }
-       \header { piece = \markup {\fill-line { \fontsize #3  "'piano-cautionary" }}}
-}
 @end lilypond
 
 @item no-reset
 @funindex no-reset accidental style
+
 This is the same as @code{default} but with accidentals lasting
-@q{forever} and not only until the next measure:
+@q{forever} and not only within the same measure:
+
 @lilypond[quote,ragged-right]
 musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
        \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
@@ -1394,7 +1405,6 @@ musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4
        \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
        <f a d>2 |  } }}
 
-\score { 
        \new PianoStaff {
        << \context Staff = "up" {
               #(set-accidental-style 'no-reset) 
@@ -1402,15 +1412,15 @@ musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4
        \context Staff = "down"{
               #(set-accidental-style 'no-reset)
        \musicB } >> }
-       \header { piece = \markup {\fill-line { \fontsize #3  "'no-reset" }}}
-}
 @end lilypond
 
 @item forget
-This is sort of the opposite of @code{no-reset}: Accidentals
-are not remembered at all -- and hence all accidentals are
-typeset relative to the key signature, regardless of what was
-before in the music
+@funindex forget accidental style
+
+This is the opposite of @code{no-reset}: Accidentals are not
+remembered at all -- and hence all accidentals are typeset
+relative to the key signature, regardless of what was before in
+the music:
 
 @lilypond[quote,ragged-right]
 musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
@@ -1421,7 +1431,6 @@ musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4
        \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
        <f a d>2 |  } }}
 
-\score { 
        \new PianoStaff {
        << \context Staff = "up" {
               #(set-accidental-style 'forget) 
@@ -1429,8 +1438,6 @@ musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4
        \context Staff = "down"{
               #(set-accidental-style 'forget)
        \musicB } >> }
-       \header { piece = \markup {\fill-line { \fontsize #3  "'forget" }}}
-}
 @end lilypond
 @end table
 
@@ -1459,30 +1466,19 @@ problematic notes.
 @unnumberedsubsubsec Ambitus
 @cindex ambitus
 
-The term @emph{ambitus} denotes a range of pitches for a given
-voice in a part of music.  It may also denote the pitch range that
-a musical instrument is capable of playing.  Ambits are printed on
-vocal parts, so performers can easily determine it meets their
-capabilities.
+The term @notation{ambitus} or @notation{ambit} denotes a range of pitches
+for a given voice in a part of music.  It may also denote the
+pitch range that a musical instrument is capable of playing.
+Ambits are printed on vocal parts, so performers can easily
+determine if it meets their capabilities.
 
 Ambits are denoted at the beginning of a piece near the initial
 clef.  The range is graphically specified by two note heads that
 represent the minimum and maximum pitch.  To print such ambits,
 add the @internalsref{Ambitus_engraver} to the
-@internalsref{Voice} context, for example,
+@internalsref{Voice} context, for example:
 
-@example
-\layout @{
-  \context @{
-    \Voice
-    \consists Ambitus_engraver
-  @}
-@}
-@end example
-
-This results in the following output
-
-@lilypond[quote,ragged-right]
+@lilypond[quote,verbatim,ragged-right]
 \layout {
   \context {
     \Staff
@@ -1496,10 +1492,9 @@ This results in the following output
 @end lilypond
 
 If you have multiple voices in a single staff and you want a
-single ambitus per staff rather than per each voice, add the
+single ambitus per staff rather than per voice, add the
 @internalsref{Ambitus_engraver} to the @internalsref{Staff}
-context rather than to the @internalsref{Voice} context.  Here is
-an example,
+context rather than to the @internalsref{Voice} context:
 
 @lilypond[verbatim,ragged-right,quote]
 \new Staff \with {
@@ -1598,7 +1593,7 @@ Snippets: @lsrdir{pitches},
 
 In shape note head notation, the shape of the note head
 corresponds to the harmonic function of a note in the scale.  This
-notation was popular in the 19th century American song books.
+notation was popular in nineteenth-century American song books.
 
 Shape note heads can be produced by setting @code{\aikenHeads} or
 @code{\sacredHarpHeads}, depending on the style desired.
@@ -1607,11 +1602,11 @@ Shape note heads can be produced by setting @code{\aikenHeads} or
   \aikenHeads
   c8 d4 e8 a2 g1
   \sacredHarpHeads
-  c8 d4. e8 a2 g1
+  c,8 d4. e8 a2 g1
 @end lilypond
 
-Shapes are determined on the step in the scale, where the base of
-the scale is determined by  the @code{\key} command
+Shapes are typeset according to the step in the scale, where
+the base of the scale is determined by the @code{\key} command.
 
 @funindex \key
 @funindex shapeNoteStyles
@@ -1621,7 +1616,7 @@ the scale is determined by  the @code{\key} command
 Shape note heads are implemented through the
 @code{shapeNoteStyles} property.  Its value is a vector of
 symbols.  The k-th element indicates the style to use for the k-th
-step of the scale.  Arbitrary combinations are possible, e.g.
+step of the scale.  Arbitrary combinations are possible, e.g.:
 
 @lilypond[verbatim,relative=1,fragment]
 \set shapeNoteStyles =
@@ -1667,6 +1662,7 @@ used in the following example
 
 @seealso
 
+
 Snippets: @lsrdir{pitches},
 
 
@@ -1680,7 +1676,7 @@ meanings -- crosses are used for @q{parlato} with vocalists,
 stopped notes on guitar; diamonds are used for harmonics on string
 instruments, etc.  There is a shorthand (@code{\harmonic}) for
 diamond shapes; the other notehead styles are produced by tweaking
-the property
+the property 
 
 @lilypond[ragged-right,relative=1,fragment,verbatim,quote]
 c4 d
@@ -1702,5 +1698,3 @@ Internals Reference: @internalsref{NoteHead}.
 
 
 
-
-
index 5fe7e95e0d2a91a357115a28b2552d7dde59c286..67a94817ec60f5a6cdc2996732af171f7f893d03 100644 (file)
@@ -32,9 +32,9 @@ start-to-finish.
 Users are not expected to read this manual from start to finish.
 However, they should be familiar with the material in the Learning
 Manual (particularly ``Fundamental Concepts''), so do not repeat
-that material in this book.  Also, you should assume that users
-know what the notation means; explaining musical concepts happens
-in the Music Glossary.
+that material in each section of this book.  Also, you should
+assume that users know what the notation means; explaining musical
+concepts happens in the Music Glossary.
 
 
 * Application Usage: information about using the program lilypond
@@ -76,9 +76,12 @@ main docs
 
     Application Usage: @rprogram{blah}.
 
-    Installed files: @file{blahz}.
+    Installed files: @file{path/to/dir/blahz}.
 
-    Snippets: @lsrdir{section}, @lsr{specific/example-name.ly}
+    Snippets: @lsrdir{section}, @lsr{specific/example-name.ly}.
+      (if there is only one entry, omit a final period.  If there
+       are multiple entries, separate them by commas, do not
+       include an `and', and end with a period.)
 
     Internals Reference: @internalsref{fazzle}, @internalsref{booar}.
 
@@ -87,180 +90,13 @@ main docs
 * To create links, use @ref{} if the link is within the same
   manual.
 
-* @commonprop and @refbugs are optional.
-
 * Do not include any real info in second-level sections (ie 1.1
   Pitches).  A first-level section may have introductory material,
   but other than that all material goes into third-level sections
   (ie 1.1.1 Writing Pitches).
 
 
-%%%%% LILYPOND FORMATTING
-
-* Use two spaces for indentation in lilypond examples.  (no tabs)
-
-* If possible, only write one bar per line.  The notes on each
-  line should be an independent line.
-  Bad:
-    \override textscript #'padding = #3 c1^"hi"
-  Good:
-    \override textscript #'padding = #3
-    c1^"hi"
-
-* LilyPond input should be produce via
-    @lilypond[verbatim,quote,ragged-right]
-  with `fragment' and `relative=2' optional.
-
-  Examples about page layout may alter the quote/ragged-right
-  options.  Omitting `verbatim' is not allowed.
-
-* Inspirational headwords are produced with
-  @lilypondfile[ragged-right,line-width=16\cm,staffsize=16,quote]
-  {pitches-headword.ly}
-
-* Avoid long stretches of input code.  Noone is going to read them
-  in print.  Instead refer to an example input file with @lsr{}.
-
-* If you want to work on an example outside of the manual (for
-  easier/faster processing), use this header:
-
-\paper {
-  #(define dump-extents #t)
-  indent = 0\mm
-  line-width = 160\mm - 2.0 * 0.4\in
-  ragged-right = ##t
-  force-assignment = #""
-  line-width = #(- line-width (* mm  3.000000))
-}
-
-\layout {
-}
-
-  You may not change any of these values.  If you are making an
-  example demonstrating special \paper{} values, contact the
-  Documentation Editor.
-
-
-%%%%% TEXT FORMATTING
-
-* Lines should be less than 72 characters long.  (I personally
-  recommend writing with 66-char lines, but don't bother modifying
-  existing material.)
-
-* Do not use tabs.  They expand to nothing in DVI output.
-
-* Do not use spaces at the beginning of a line (except in @example
-  or @verbatim environments), and do not use more than a single
-  space between words.  `makeinfo' copies the input lines verbatim
-  without removing those spaces.
-
-* Use two spaces after a period.
-
-* Variables or numbers which consist of a single character
-  (probably followed by a punctuation mark) should be tied
-  properly, either to the previous or the next word.  Example:
-
-      The variable@tie{}@var{a} ...
-
-* To get consistent indentation in the DVI output it is better to
-  avoid the @verbatim environment.  Use the @example environment
-  instead if possible, but without extraneous indentation.  For
-  example, this
-
-    @example
-      foo {
-        bar
-      }
-    @end example
-
-  should be replaced with
-
-    @example
-    foo {
-      bar
-    }
-    @end example
-
-  where `@example' starts the line (without leading spaces).
-
-* Do not compress the input vertically; this is, do not use
-
-    Beginning of logical unit
-    @example
-    ...
-    @end example
-    continuation of logical unit
-
-  but
-
-    Beginning of logical unit
-
-    @example
-    ...
-    @end example
-
-    @noindent
-    continuation of logical unit
-
-  This makes it easier to avoid forgetting the `@noindent'.  Only
-  use @noindent if the material is discussing the same material;
-  new material should simply begin without anything special on the
-  line above it.
-
-* in @itemize use @item on a separate line like this:
-  @itemize
-  @item
-  Foo
-
-  @item
-  Bar
-
-  Do not use @itemize @bullet.
-
-* Specially-marked text:
-
-    @code{}: actual lilypond code or property/context names.
-    @samp{}: ditto, for single-letter code.
-
-
-      ** Any `\' used inside the commands below must be       **
-      ** written as `\\'.  Even if they are inside a @code{}. **
-            ( this should only affect @warning{} )
-
-       @notation{}: refers to pieces of notation, such as
-         "@notation{crescendo} is often abbreviated as
-      @notation{cresc.}"  This should also be used to refer to
-      specific lyrics ("the @notation{A - men} is centered...")
-       @q{}: used for `vague' terms in English (and other natural
-      languages).
-       @qq{}: only for actual quotes -- i.e. "he said" or "she
-      wrote".
-       @warning{}: produces a "Note: " box.  Use for important
-      messages.
-
-* References must occur at the end of a sentence, for more
-  information see @ref{the texinfo manual}.  Ideally this should
-  also be the final sentence of a paragraph, but this is not
-  required.  Any link in a doc section must be duplicated in the
-  @seealso section at the bottom.
-
-* Introducing examples may be done with
-     . (ie finish the previous sentence/paragaph)
-     : (ie `in this example:')
-     , (ie `may add foo with the blah construct,')
-
-
-%%%%% READABILITY
-
-* Non-ASCII characters which are in utf-8 should be directly used;
-  this is, don't say `Ba@ss{}tuba' but `Baßtuba'.  This ensures that
-  all such characters appear in all output formats.
-
-* Don't use a @ref{link to another section} in the middle of a
-  sentence.  It looks ok in HTML, moderately bad in PDF, and
-  utterly horrible in INFO.  Instead, reword the sentence so that
-  users are encouraged to see @ref{link to another section}.
-  (at the end of the sentence)
+%%%%% GENERAL WRITING
 
 * Do not forget to create @cindex entries for new sections of text.
   Enter commands with @funindex, i.e.
@@ -271,14 +107,11 @@ main docs
 
   Both index commands should go in front of the actual material.
 
-* Abbrevs in caps, e.g., HTML, DVI, MIDI, etc.
-
-* Colon usage
-
-  1. To introduce lists
-  2. When beginning a quote: "So, he said,..."
-     This usage is rarer.  Americans often just use a comma.
-  3. When adding a defining example at the end of a sentence.
+* Preferred terms:
+    - in general, use the American spellings.  The internal
+      lilypond property names use this spelling.
+    - list of specific terms:
+canceled, bar
 
 
 %%%%% TECHNICAL WRITING STYLE
@@ -304,9 +137,4 @@ main docs
   Say `invalid' instead.
 
 
-FOR DOC EDITOR ONLY
-
-* sectioning commands (@node and @section) must not appear inside
-  an @ignore.  Separate those commands with a space, ie @n ode.
-
 
index 960b96d3350879913878cde938acd6d7913751c7..82da3c58c8fb1d977c60632b23ea5625925fe740 100644 (file)
@@ -129,6 +129,18 @@ Internals Reference: @internalsref{Dots}, and
 @internalsref{DotColumn}.
 
 
+@refbugs
+
+@c duplicated in Durations and Rests.  -gp
+There is no fundamental limit to note durations (both in terms of
+longest and shortest), but the number of glyphs is limited: there
+are flags up 64th and rests up to 128th.  At the other extreme,
+there are note heads up to longa (4x whole note) and rests up to
+maxima (8 x whole).  Since beams can be extended arbitrarily,
+beamed notes can be arbitrarily short.
+
+
+
 @node Tuplets
 @unnumberedsubsubsec Tuplets
 
@@ -274,7 +286,11 @@ point.
 
 @seealso
 
-Snippets: @lsrdir{rhythms}
+FIXME: totally irrelevant link to real-music for
+discussion/demonstration purposes.
+
+Snippets: @lsrdir{rhythms},
+@lsr{real-music,creating-music-with-scheme.ly}.
 
 Internals Reference: @internalsref{TupletBracket},
 @internalsref{TupletNumber}, and @internalsref{TimeScaledMusic}.
@@ -310,6 +326,7 @@ a multiplier.  This is useful for skipping many bars, e.g.,
 
 This manual: @ref{Tuplets}, @ref{Skips}.
 
+Snippets: @lsrdir{rhythms}
 
 @node Ties
 @unnumberedsubsubsec Ties
@@ -398,6 +415,8 @@ c4_~ c c^~ c)
 
 @seealso
 
+Snippets: @lsrdir{rhythms}
+
 Internals Reference:
 @internalsref{LaissezVibrerTie}
 @internalsref{LaissezVibrerTieColumn}
@@ -455,8 +474,12 @@ second number indicates the direction (1=up, -1=down).
 
 @seealso
 
+
+
 In this manual: @ref{Automatic note splitting}.
 
+Snippets: @lsrdir{rhythms}
+
 Internals Reference: @internalsref{Tie}.
 
 
@@ -522,9 +545,22 @@ rests alone.
 
 @seealso
 
+Snippets: @lsrdir{rhythms}
+
 Internals Reference: @internalsref{Rest}.
 
 
+@refbugs
+
+@c duplicated in Durations and Rests.  -gp
+There is no fundamental limit to note durations (both in terms of
+longest and shortest), but the number of glyphs is limited: there
+are flags up 64th and rests up to 128th.  At the other extreme,
+there are note heads up to longa (4x whole note) and rests up to
+maxima (8 x whole).  Since beams can be extended arbitrarily,
+beamed notes can be arbitrarily short.
+
+
 @node Skips
 @unnumberedsubsubsec Skips
 
@@ -567,6 +603,8 @@ The fragment @code{@{ \skip 4 @} } would produce an empty page.
 
 @seealso
 
+Snippets: @lsrdir{rhythms}
+
 Internals Reference: @internalsref{SkipMusic}.
 
 
@@ -698,6 +736,8 @@ s1^\markup {CHORUS} % Chorus notes would go here
 
 This manual: @ref{Text}
 
+Snippets: @lsrdir{rhythms}
+
 Internals Reference: 
 
 @internalsref{MultiMeasureRest}.
@@ -837,6 +877,8 @@ rhythmically complex modern music.  In the following example, the
 
 @seealso
 
+Snippets: @lsrdir{rhythms}
+
 Internals Reference: @internalsref{TimeSignature}, and
 @internalsref{Timing_translator}.
 
@@ -904,6 +946,9 @@ a2 g2
 piece.  If you use it after the beginning, some odd warnings may
 occur.
 
+@seealso
+
+Snippets: @lsrdir{rhythms}
 
 @node Unmetered music
 @unnumberedsubsubsec Unmetered music
@@ -940,6 +985,10 @@ staff line, you will need to insert invisible barlines
 @noindent
 to indicate where breaks can occur.
 
+@seealso
+
+Snippets: @lsrdir{rhythms}
+
 
 @node Polymetric notation
 @unnumberedsubsubsec Polymetric notation
@@ -1098,6 +1147,10 @@ staff, shown durations are multiplied by 3/5, so that 3/5 * 10/8 =
 When using different time signatures in parallel, the spacing is
 aligned vertically, but barlines distort the regular spacing.
 
+@seealso
+
+Snippets: @lsrdir{rhythms}
+
 
 @node Automatic note splitting
 @unnumberedsubsubsec Automatic note splitting
@@ -1139,6 +1192,8 @@ split rests.
 
 @seealso
 
+Snippets: @lsrdir{rhythms}
+
 Internals Reference: @internalsref{Completion_heads_engraver}.
 
 
@@ -1335,6 +1390,10 @@ same holds polyphonic voices, entered with @code{<< @dots{} \\ @dots{}
 >>}.  If a polyphonic voice ends while an automatic beam is still
 accepting notes, it is not typeset.
 
+@seealso
+
+Snippets: @lsrdir{rhythms}
+
 
 
 
@@ -1453,6 +1512,8 @@ f8 f''8 f8 f''8
 
 @seealso
 
+Snippets: @lsrdir{rhythms}
+
 Internals Reference: @internalsref{Beam}.
 
 
@@ -1554,6 +1615,10 @@ c8 \repeat unfold 15 {c[ c] } c
 The @code{\featherDurations} command only works with very short
 music snippets, and when numbers in the fraction are small.
 
+@seealso
+
+Snippets: @lsrdir{rhythms}
+
 
 @node Bars
 @subsection Bars
@@ -1700,6 +1765,8 @@ with @code{\set Timing.defaultBarType = }@var{bartype}.
 
 In this manual: @ref{Repeats}, @ref{System start delimiters}.
 
+Snippets: @lsrdir{rhythms}
+
 Internals Reference: @internalsref{BarLine} (created at
 @internalsref{Staff} level), @internalsref{SpanBar} (across
 staves), @internalsref{Timing_translator} (for Timing 
@@ -1838,6 +1905,8 @@ engraver from the score context.
 
 @seealso
 
+Snippets: @lsrdir{rhythms}
+
 Internals Reference: @internalsref{BarNumber}.
 
 Examples: @lsrdir{bar number}
@@ -1934,6 +2003,10 @@ are entering from.  This can be checked with
 will print a warning if the @code{currentBarNumber} is not 123
 when it is processed.
 
+@seealso
+
+Snippets: @lsrdir{rhythms}
+
 
 @node Rehearsal marks
 @unnumberedsubsubsec Rehearsal marks
@@ -2030,6 +2103,8 @@ For common tweaks to the positioning of rehearsal marks, see
 
 @seealso
 
+Snippets: @lsrdir{rhythms}
+
 This manual: @ref{Text marks}.
 
 Internals Reference: @internalsref{RehearsalMark}.
@@ -2206,6 +2281,8 @@ in other staves by setting @code{strict-grace-spacing} to
 
 @seealso
 
+Snippets: @lsrdir{rhythms}
+
 Internals Reference: @internalsref{GraceMusic}.
 
 
@@ -2268,6 +2345,10 @@ cadenza = \relative c' {
 >>
 @end lilypond
 
+@seealso
+
+Snippets: @lsrdir{rhythms}
+
 
 @node Time administration
 @unnumberedsubsubsec Time administration
@@ -2339,6 +2420,8 @@ notes.
 
 This manual: @ref{Bar numbers}, @ref{Unmetered music}
 
+Snippets: @lsrdir{rhythms}
+
 Internals Reference: @internalsref{Timing_translator},
 @internalsref{Score}
 
index 5c9d0273cdc5c0a916e04affe8d3818e2ef861c4..c62def01f8ed26f9e2188517bbc9eece0beb9b5e 100644 (file)
@@ -223,7 +223,8 @@ values are useful.
 @subheading Pitches
 
 Music glossary: @rglos{pitch}, @rglos{interval}, @rglos{fourth},
-@rglos{scale}, @rglos{middle C}, @rglos{octave}.
+@rglos{scale}, @rglos{middle C}, @rglos{octave},
+@rglos{accidental}.
 
 The easiest way to enter notes is by using @code{\relative} mode.
 In this mode, the octave is chosen automatically by assuming the 
@@ -254,8 +255,20 @@ have larger intervals:
 @end lilypond
 
 @noindent
-As you may notice, this example does not start on middle C.
-The first note -- the @code{d} -- is the closest D to middle C.
+It is not necessary for the first note of the melody to start on
+the note which specifies the starting pitch.  In the previous
+example, the first note -- the @code{d} -- is the closest D to
+middle C.
+
+By adding (or removing) quotes @code{'} or commas @code{,} from
+the @code{\relative c' @{} command, we can change the starting
+octave:
+
+@lilypond[verbatim,quote,ragged-right]
+\relative c'' {  % one octave above middle C
+  e c a c
+}
+@end lilypond
 
 Relative mode can be confusing initially, but is the easiest way
 to enter most melodies.  Let us see how this relative calculation
@@ -265,22 +278,24 @@ going up, and an A, G and F within 3 staff spaces going down.  So
 if the note following a B is a C, D or F it will be assumed to be
 above the B, and an A, G or F will be assumed to be below.
 
-@lilypond[verbatim,quote,ragged-right,fragment,relative=2]
-b c  % c is 1 staff space up, so is the c above
-b d  % d is 2 up or 5 down, so is the d above
-b e  % e is 3 up or 4 down, so is the e above
-b a  % a is 4 up or 3 down, so is the a below
-b g  % g is 5 up or 2 down, so is the g below
-b f  % f is 6 up or 1 down, so is the f below
+@lilypond[verbatim,quote,ragged-right]
+\relative c'' {
+  b c  % c is 1 staff space up, so is the c above
+  b d  % d is 2 up or 5 down, so is the d above
+  b e  % e is 3 up or 4 down, so is the e above
+  b a  % a is 4 up or 3 down, so is the a below
+  b g  % g is 5 up or 2 down, so is the g below
+  b f  % f is 6 up or 1 down, so is the f below
+}
 @end lilypond
 
 Exactly the same happens even when any of these notes are
-sharpened or flatted (@rglos{accidentals} and the @rglos{key
-signature}) are @strong{totally ignored} in the calculation of
-relative position.  Exactly the same staff space counting is done
-from a note at any other position on the staff.
+sharpened or flatted.  @notation{Accidentals} are @strong{totally
+ignored} in the calculation of relative position.  Precisely the
+same staff space counting is done from a note at any other
+position on the staff.
 
-To add intervals that are larger than four staff spaces, we can
+To add intervals that are larger than three staff spaces, we can
 raise the @notation{octave} by adding a single quote @code{'} (or
 apostrophe) to the note name.  We can lower the octave by adding a
 comma @code{,} to the note name.
diff --git a/Documentation/user/writing-texinfo.txt b/Documentation/user/writing-texinfo.txt
new file mode 100644 (file)
index 0000000..90230cf
--- /dev/null
@@ -0,0 +1,220 @@
+DOCUMENTATION FORMATTING
+------------------------
+
+The language is called texinfo; you can see its manual here:
+http://www.gnu.org/software/texinfo/manual/texinfo/
+
+However, you don't need to read those docs.  The most important
+thing to notice is that text is text.  If you see a mistake in the
+text, you can fix it.  If you want to change the order of
+something, you can cut-and-paste that stuff into a new location.
+
+
+%%%%% SECTIONING COMMANDS
+
+Most of the manual operates at the
+       @node Foo
+       @unnumberedsubsubsec Foo
+level.  Sections are created with
+       @node Foo
+       @subsection Foo
+commands.
+
+* sectioning commands (@node and @section) must not appear inside
+  an @ignore.  Separate those commands with a space, ie @n ode.
+
+
+
+%%%%% LILYPOND FORMATTING
+
+* Use two spaces for indentation in lilypond examples.  (no tabs)
+
+* If possible, only write one bar per line.  The notes on each
+  line should be an independent line.
+  Bad:
+    \override textscript #'padding = #3 c1^"hi"
+  Good:
+    \override textscript #'padding = #3
+    c1^"hi"
+
+* LilyPond input should be produce via
+    @lilypond[verbatim,quote,ragged-right]
+  with `fragment' and `relative=2' optional.
+
+  Examples about page layout may alter the quote/ragged-right
+  options.  Omitting `verbatim' is not allowed except for special
+  circumstances.
+
+* Inspirational headwords are produced with
+  @lilypondfile[ragged-right,line-width=16\cm,staffsize=16,quote]
+  {pitches-headword.ly}
+
+* Avoid long stretches of input code.  Noone is going to read them
+  in print.  Please create a smaller example.  (the smaller
+  example does not need to be minimal, however)
+
+* If you want to work on an example outside of the manual (for
+  easier/faster processing), use this header:
+
+\paper {
+  #(define dump-extents #t)
+  indent = 0\mm
+  line-width = 160\mm - 2.0 * 0.4\in
+  ragged-right = ##t
+  force-assignment = #""
+  line-width = #(- line-width (* mm  3.000000))
+}
+
+\layout {
+}
+
+  You may not change any of these values.  If you are making an
+  example demonstrating special \paper{} values, contact the
+  Documentation Editor.
+
+
+%%%%% TEXT FORMATTING
+
+* Lines should be less than 72 characters long.  (I personally
+  recommend writing with 66-char lines, but don't bother modifying
+  existing material.)
+
+* Do not use tabs.
+
+* Do not use spaces at the beginning of a line (except in @example
+  or @verbatim environments), and do not use more than a single
+  space between words.  `makeinfo' copies the input lines verbatim
+  without removing those spaces.
+
+* Use two spaces after a period.
+
+* Variables or numbers which consist of a single character
+  (probably followed by a punctuation mark) should be tied
+  properly, either to the previous or the next word.  Example:
+
+      The variable@tie{}@var{a} ...
+
+* To get consistent indentation in the DVI output it is better to
+  avoid the @verbatim environment.  Use the @example environment
+  instead if possible, but without extraneous indentation.  For
+  example, this
+
+    @example
+      foo {
+        bar
+      }
+    @end example
+
+  should be replaced with
+
+    @example
+    foo {
+      bar
+    }
+    @end example
+
+  where `@example' starts the line (without leading spaces).
+
+* Do not compress the input vertically; this is, do not use
+
+    Beginning of logical unit
+    @example
+    ...
+    @end example
+    continuation of logical unit
+
+  but
+
+    Beginning of logical unit
+
+    @example
+    ...
+    @end example
+
+    @noindent
+    continuation of logical unit
+
+  This makes it easier to avoid forgetting the `@noindent'.  Only
+  use @noindent if the material is discussing the same material;
+  new material should simply begin without anything special on the
+  line above it.
+
+* in @itemize use @item on a separate line like this:
+  @itemize
+  @item
+  Foo
+
+  @item
+  Bar
+
+  Do not use @itemize @bullet.
+
+
+%%%%% SYNTAX SURVEY
+
+@c - single line comments
+@ignore ... @end ignore - multi-line comment
+
+@cindex - General index. Please add as many as you can.
+@funindex - is for a \lilycommand.
+
+@example ... @end ignore - example text that should be set as a
+  blockquote.  Any {} must be escaped with @{ }@
+@itemize @item A @item B ... @end itemize - for bulleted lists.
+  Do not compress vertically like this.
+
+@code{} - typeset in a tt-font. Use for actual lilypond code or
+  property/context names.
+@notation{} - refers to pieces of notation, e.g.
+  "@notation{cres.}".  Also use to specific lyrics ("the
+  @notation{A - men} is centered")
+@q{} - Single quotes. Used for `vague' terms.
+@qq{} - Double quotes.  Used for actual quotes ("he said").
+
+@warning{}: produces a "Note: " box.  Use for important
+      messages.
+
+@tie{} - Variables or numbers which consist of a single character
+  (probably followed by a punctuation mark) should be tied
+  properly, either to the previous or the next word.  Example:
+    "The letter@tie{}@q{I} is skipped"
+
+@var - Use for variables.
+@warning{} - produces a "Note: " box.
+  Any `\' used inside this must be written as `\\'.
+
+
+
+%%%%% OTHER TEXT CONCERNS
+
+* References must occur at the end of a sentence, for more
+  information see @ref{the texinfo manual}.  Ideally this should
+  also be the final sentence of a paragraph, but this is not
+  required.  Any link in a doc section must be duplicated in the
+  @seealso section at the bottom.
+
+* Introducing examples may be done with
+     . (ie finish the previous sentence/paragaph)
+     : (ie `in this example:')
+     , (ie `may add foo with the blah construct,')
+
+* Abbrevs in caps, e.g., HTML, DVI, MIDI, etc.
+
+* Colon usage
+
+  1. To introduce lists
+  2. When beginning a quote: "So, he said,..."
+     This usage is rarer.  Americans often just use a comma.
+  3. When adding a defining example at the end of a sentence.
+
+* Non-ASCII characters which are in utf-8 should be directly used;
+  this is, don't say `Ba@ss{}tuba' but `Baßtuba'.  This ensures that
+  all such characters appear in all output formats.
+
+* Don't use a @ref{link to another section} in the middle of a
+  sentence.  It looks ok in HTML, moderately bad in PDF, and
+  utterly horrible in INFO.  Instead, reword the sentence so that
+  users are encouraged to see @ref{link to another section}.
+  (at the end of the sentence)
+
+
index 348e7c99ead49502d5a5d8650e459210ca34d0fe..8e8339818b3a6eaaea64a5458880d27edc9e3680 100755 (executable)
@@ -4,7 +4,10 @@ import os
 import os.path
 import shutil
 
-dirs = ['pitches', 'rhythms']
+dirs = []
+dirs.extend(['pitches', 'rhythms'])
+
+dirs.extend(['real-music'])
 #dirs = ['ancient','chords','connecting','contemporary','expressive','education','guitar','parts','pitch','repeats','scheme','spacing','staff','text','vocal','other','nonmusic','engravers','instrument']
 notsafe=[]
 
index 6468597097a45e91e8968e2e09e039236dd0cc55..0c4c47aa387284da5e43d791f4cbdc7af79cfe03 100644 (file)
@@ -128,7 +128,7 @@ AC_MSG_RESULT(Must have patched GUILE rational support. See INSTALL.txt))
 CPPFLAGS="$save_CPPFLAGS"
 
 
-STEPMAKE_MAKEINFO(REQUIRED, 4.8)
+STEPMAKE_MAKEINFO(REQUIRED, 4.11)
 STEPMAKE_PYTHON_DEVEL(REQUIRED)
 
 STEPMAKE_PATH_PROG(GHOSTSCRIPT, gs, OPTIONAL, 8.15)
index 4c12ed94b55b65a377b0a1e83d6a3b08d3cc748f..eaf7decc933656347981143e56ad3b1e0ef970f9 100644 (file)
@@ -1,6 +1,10 @@
 depth = ../../
 
 SUBDIRS = pitches rhythms
+
+SUBDIRS += real-music
+
+# old stuffs
 SUBDIRS += ancient chords connecting contemporary education expressive
 SUBDIRS += guitar parts repeats spacing staff text vocal scheme other 
 SUBDIRS += engravers nonmusic instrument
diff --git a/input/lsr/pitches/creating-music-with-scheme.ly b/input/lsr/pitches/creating-music-with-scheme.ly
new file mode 100644 (file)
index 0000000..9f85797
--- /dev/null
@@ -0,0 +1,93 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+This example shows prelude in C major of WTK1, but coded using Scheme
+functions to avoid typing work.
+" }
+
+\version "2.11.23"
+
+\include "deutsch.ly"
+#(define (transform music)
+  (let* ((es (ly:music-property music 'elements))
+         (n  (ly:music-property music 'name)))
+   (if (not (equal? n 'SequentialMusic))
+     (ly:warning "transform needs SequentialMusic, got ~a" n)
+     (begin
+      (let recurse ((elts es))
+       (if (not (equal? elts '()))
+        (begin
+           ((trans (ly:music-property (cadr elts) 'elements)) (car
+elts))
+          (set-cdr! elts (cddr elts))
+          (recurse (cdr elts))
+        )))))
+   music
+  )) 
+
+#(define ((trans pitches) music)
+  (let* ((es (ly:music-property music 'elements))
+         (e (ly:music-property music 'element))
+         (p (ly:music-property music 'pitch)))
+
+    (if (pair? es)
+        (ly:music-set-property!
+         music 'elements
+         (map (trans pitches) es)))
+
+    (if (ly:music? e)
+        (ly:music-set-property!
+         music 'element
+         ((trans pitches) e)))
+
+    (if (ly:pitch? p)
+       (let* ((o (ly:pitch-octave p))
+              (n (ly:pitch-notename p))
+              (i (+ (* 7 o) n))
+             (pes (ly:music-property (list-ref pitches i) 'elements))
+             (pnew (ly:music-property (car pes) 'pitch))
+             )
+          (ly:music-set-property! music 'pitch pnew)
+       ))
+    music))
+
+
+
+
+
+
+
+pat =  \transpose c c' \repeat unfold 2 {
+  << { \context Staff = "up" {r8 e16 f g e f g } }
+    { \context Staff = "down" <<
+      \context Voice = "vup"  { \stemUp \tieUp r16 d8.~d4 }
+      \context Voice = "vdwn" { \stemDown  c2 }
+    >> }
+  >>
+}
+
+enda =  { r8 f,16 a, c f c a, \stemUp c \change Staff = down
+      a, f, a, f, d, f, d, \change Staff = up \stemNeutral
+      r8 g16 h d' f' d' h d' h g h d f e\prall d <e g c'>1^\fermata \bar
+"|."
+}
+endb =  {\stemUp \tieUp r16 c,8.~c,4~c,2 r16 h,,8.~h,,4~h,,2 c,1 \bar
+"|."}
+endc =  {\stemDown \tieDown c,,2~c,, c,,~c,, c,,1_\fermata }
+
+\score {
+   \transpose c c' \context PianoStaff <<
+       \new Staff = "up"   { \clef "G"  }
+       \new Staff = "down" { \clef "F" }
+       { \applyMusic #transform {
+          \pat {c e g c' e' }
+          \pat {c d a d' f' }
+       }
+       % Etc, we get the idea now 
+     }
+   >>
+}
+
+
+
diff --git a/input/lsr/real-music/AAA-intro.ly b/input/lsr/real-music/AAA-intro.ly
new file mode 100644 (file)
index 0000000..93c62a9
--- /dev/null
@@ -0,0 +1,16 @@
+\version "2.10.0"
+
+\header{
+texidoc = "
+@unnumbered Introduction
+
+This document shows examples from the
+@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}.
+
+In the web version of this document, you can click on the file name
+or figure for each example to see the corresponding input file."
+}
+
+% make sure .png  is generated.
+\markup{ "This document is for LilyPond version" #(ly:export(lilypond-version)) }
+
diff --git a/input/lsr/real-music/GNUmakefile b/input/lsr/real-music/GNUmakefile
new file mode 100644 (file)
index 0000000..3819fda
--- /dev/null
@@ -0,0 +1,15 @@
+depth = ../../../
+
+STEPMAKE_TEMPLATES=documentation texinfo tex
+LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc
+
+## Hmm, would this work?  No -- if we really want examples, move
+## to other dir (input/) comes to mind.
+## examples = font20 ancient-font
+## LOCALSTEPMAKE_TEMPLATES += ly mutopia
+
+EXTRA_DIST_FILES= 
+
+include $(depth)/make/stepmake.make
+
+TITLE=Advanced snippets
diff --git a/input/lsr/real-music/SConscript b/input/lsr/real-music/SConscript
new file mode 100644 (file)
index 0000000..f72bfff
--- /dev/null
@@ -0,0 +1,4 @@
+# -*-python-*-
+
+Import ('env', 'collate')
+collate (title = 'Advanced snippets')
diff --git a/input/lsr/real-music/creating-music-with-scheme.ly b/input/lsr/real-music/creating-music-with-scheme.ly
new file mode 100644 (file)
index 0000000..9f85797
--- /dev/null
@@ -0,0 +1,93 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+This example shows prelude in C major of WTK1, but coded using Scheme
+functions to avoid typing work.
+" }
+
+\version "2.11.23"
+
+\include "deutsch.ly"
+#(define (transform music)
+  (let* ((es (ly:music-property music 'elements))
+         (n  (ly:music-property music 'name)))
+   (if (not (equal? n 'SequentialMusic))
+     (ly:warning "transform needs SequentialMusic, got ~a" n)
+     (begin
+      (let recurse ((elts es))
+       (if (not (equal? elts '()))
+        (begin
+           ((trans (ly:music-property (cadr elts) 'elements)) (car
+elts))
+          (set-cdr! elts (cddr elts))
+          (recurse (cdr elts))
+        )))))
+   music
+  )) 
+
+#(define ((trans pitches) music)
+  (let* ((es (ly:music-property music 'elements))
+         (e (ly:music-property music 'element))
+         (p (ly:music-property music 'pitch)))
+
+    (if (pair? es)
+        (ly:music-set-property!
+         music 'elements
+         (map (trans pitches) es)))
+
+    (if (ly:music? e)
+        (ly:music-set-property!
+         music 'element
+         ((trans pitches) e)))
+
+    (if (ly:pitch? p)
+       (let* ((o (ly:pitch-octave p))
+              (n (ly:pitch-notename p))
+              (i (+ (* 7 o) n))
+             (pes (ly:music-property (list-ref pitches i) 'elements))
+             (pnew (ly:music-property (car pes) 'pitch))
+             )
+          (ly:music-set-property! music 'pitch pnew)
+       ))
+    music))
+
+
+
+
+
+
+
+pat =  \transpose c c' \repeat unfold 2 {
+  << { \context Staff = "up" {r8 e16 f g e f g } }
+    { \context Staff = "down" <<
+      \context Voice = "vup"  { \stemUp \tieUp r16 d8.~d4 }
+      \context Voice = "vdwn" { \stemDown  c2 }
+    >> }
+  >>
+}
+
+enda =  { r8 f,16 a, c f c a, \stemUp c \change Staff = down
+      a, f, a, f, d, f, d, \change Staff = up \stemNeutral
+      r8 g16 h d' f' d' h d' h g h d f e\prall d <e g c'>1^\fermata \bar
+"|."
+}
+endb =  {\stemUp \tieUp r16 c,8.~c,4~c,2 r16 h,,8.~h,,4~h,,2 c,1 \bar
+"|."}
+endc =  {\stemDown \tieDown c,,2~c,, c,,~c,, c,,1_\fermata }
+
+\score {
+   \transpose c c' \context PianoStaff <<
+       \new Staff = "up"   { \clef "G"  }
+       \new Staff = "down" { \clef "F" }
+       { \applyMusic #transform {
+          \pat {c e g c' e' }
+          \pat {c d a d' f' }
+       }
+       % Etc, we get the idea now 
+     }
+   >>
+}
+
+
+
diff --git a/input/lsr/real-music/inserting-score-fragments-above-the-staff,-as-markups.ly b/input/lsr/real-music/inserting-score-fragments-above-the-staff,-as-markups.ly
new file mode 100644 (file)
index 0000000..375486f
--- /dev/null
@@ -0,0 +1,33 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+The \\markup command is quite versatile. In this snippet, it contains a
+\\score bloc instead of texts or marks.
+" }
+
+tuning = \markup {
+    \score {
+       \new Staff \with {
+           \remove Time_signature_engraver
+       } {
+           \clef bass  <c, g, d g>1
+       }
+       \layout { ragged-right = ##t }
+    }
+}
+
+
+\header {
+    title = "Solo Cello Suites"
+    subtitle = "Suite IV"
+    subsubtitle = \markup { "Originalstimmung:" \tuning }
+}
+
+\relative {
+    \time 4/8
+    \times 2/3 { c'8 d e } \times 2/3 {c d e}
+    \times 2/3 { c8 d e } \times 2/3 {c d e}
+    g8 a8 g8 a 
+    g8 a8 g8 a 
+}
diff --git a/input/lsr/real-music/score-for-diatonic-accordion.ly b/input/lsr/real-music/score-for-diatonic-accordion.ly
new file mode 100644 (file)
index 0000000..9ead0e5
--- /dev/null
@@ -0,0 +1,419 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+A template to write score for a diatonic accordion.
+
+- There is a horizontal staff indicating if the accordion   must be
+pushed (thick line) or pulled (thin line)
+
+- There is a small rhytmic staff with lyrics that describes the bass
+buttons to press.   The bar-lines are made of gridlines ( Gridlines,
+not a really satisfying solution, but the best I found)
+
+- The tabulator staff for diatonic accordions shows the geographic
+position of the buttons   and not (as for every other instrument) the
+pitch of the tones.   The keys on the melody-side of the accordion are
+placed in three columns and about 12 rows.   In the tabulator staff
+notation the   - most outer column is described with notes between
+lines   - most inner column is described with notes between lines with
+a cross as accidental   - middle column is described with notes on a
+line, whereby the row in the middle is represented     on the middle
+line in the staff.
+
+
+
+Some words to transpose piano note to the diatonic accordion.
+------------------------------------------------------------ 1. Every
+diatonic accordion is built for some keys only. For example    for the
+key of C-major and F-major.    So it is important to transpose a piano
+melody to match one of these keys.    Transpose the source code, not
+only the output because    you need this code later on to translate it
+once more to the tabulator staff.    This can be done with the command
+'displayLilyMusic'.
+
+2. You have to alternate the push and pull-direction of the accordion
+regularely.    If the player has a too long part to pull the accordion
+gets broken.    At the other hand some harmonies are only available in
+one direction (push or pull)    Considering this decide which parts of
+the melody are the push-parts and whic the  pull-parts.
+
+3. For each pull- / or push-part translate the piano notes to the
+according tabulatur representation.
+
+This snippet comes with a useful optional macro for the jEdit text
+editor.
+" }
+
+% Created on Sat Aug 17 2007 by ak
+
+verse= \lyricmode { Wie gross bist du! Wie gross bist du! }
+
+harmonies =  \new ChordNames \chordmode {
+       \germanChords \set chordChanges = ##t
+       bes8 bes8 bes8 es2 f bes1
+}
+
+NoStem = \override Stem #'transparent = ##t
+NoNoteHead= \override NoteHead #'transparent = ##t
+ZeroBeam = \override Beam  #'positions = #'(0 . 0)
+
+staffTabLine = \new Staff  \with { \remove "Time_signature_engraver" \remove "Clef_engraver" } {
+       \override Staff.StaffSymbol #'line-positions = #'( 0 ) 
+% Shows one horizontal line. The vertical line (simulating a bar-line) is simulated with a gridline
+       \set Staff.midiInstrument="choir aahs"
+       \key c \major
+       \relative c''
+               {  
+                       % disable the following line to see the the noteheads while writing the song 
+                       \NoNoteHead  
+                       \override NoteHead #'no-ledgers = ##t
+
+                       % The beam between 8th-notes is used to draw the push-line
+                       %How to fast write the push-lines: 
+                       %        1. write repeatedly 'c c c c c c c c |' for the whole length of the song 
+                       %        2. uncomment the line \NoNoteHead
+                       %        3. compile
+                       %        4. Mark the positions on which push/pull changes. 
+                       %           In the score-picture click on the position the push- or pull-part starts 
+                        %           (on the noteHead, the cursor will change to a hand-icon).
+                       %           The cursor in the source code will jump just at this position.
+                       %         a) If a push-part starts there, replace the 'c' by an 'e['
+                       %         b) If a pull-part starts there, replace the 'c' by an 's'
+                       %        5. Switch into 'overwrite-mode' by pressing the 'ins' key. 
+                       %        6. For the pull-parts overwrite the 'c' with 's' 
+                       %        7. For every push-part replace the last 'c' with 'e]' 
+                       %        8. Switch into 'insert-mode' again 
+                       %        9. At last it should look lik e.g. (s s e[ c | c c c c c c c c | c c c c c c e] s s)
+                       %       10. re-enable the line \NoNoteHead
+                       \autoBeamOff
+                       \ZeroBeam 
+                        s8 s s | e[ c c c c c c e] | s s s s s 
+               }
+}
+
+%{
+notePush= {    e       f       fis     g       a        c'     c'      d'      ees'    e'      f'      fis'    g'      a'      bes'    c''     c''     d''     ees''   e''     f''     fis''   g''     a''     c'''    c'''    ees'''  e'''    f'''    g'''    a''' }
+tabPush=  {    g       f       e       b       a        d'     c'      bisis   disis'  f'      e'      aisis'  a'      g'      fisis'  b'      c''     eisis'' cisis'' e''     d''     gisis'' g''     f''     a''     b''     bisis'' d'''    c'''    f'''    e''' }
+
+notePull= {    g       aes     bes     b       c'      cis'    d'      ees'    e'      f'      fis'    g'      aes'    a'      bes'    b'      c''     cis''   d''     ees''   e''     f''     g''     aes''   a''     bes''   b''     c'''    cis'''  d'''    e''' }
+tabPull=  {    g       e       f       b       a       disis'  d'      bisis   c'      f'      fisis'  e'      aisis'  a'      g'      c''     b'      cisis'' e''     eisis'' d''     g''     f''     gisis'' b''     a''     d'''    f'''    bisis'' c'''    e''' }
+%}
+
+% Accordion melody in tabulator score          
+% 1. Place a copy of the piano melody below
+% 2. Separate piano melody into pull- and push-parts according to the staffTabLine you've already made      
+% 3. For each line: Double the line. Remark the 1st one (Keeps unchanged as reference) and then change the second line using the transformation paper
+%    or the macros 'conv2diaton push.bsh' and 'conv2diaton pull.bsh' 
+% Tips:
+% - In jEdit Search & Replace mark the Option 'Keep Dialog'
+
+AccordionTabTwoCBesDur= {      
+ % pull 1
+ %<f' bes'>8 <f' a'>8 <d' bes'>8 | 
+<g'' a''>8 <g'' b''>8 <e'' a''>8 | 
+ % push 2
+ %<g' c''>4 <f' d''> <g' ees''> <f' a'> | 
+<g'' a''>4 <d'' eisis''> <g'' bisis''> <d'' f''> | 
+ % pull 3
+% <f' bes'>2 r8 }
+ <g'' a''>2 r8 }
+
+  AccordionTab= { \dynamicUp           
+% 1. Place a copy of the piano melody above
+% 2. Separate piano melody into pull- and push-parts according to the staffTabLine you've already made      
+% 3. For each line: Double the line. Remark the 1st one (Keeps unchanged as reference) and then 
+%    change the second line using the transformation paper
+% Tips:
+% - In jEdit Search & Replace mark the Option 'Keep Dialog'
+% - 
+\AccordionTabTwoCBesDur
+ }
+
+
+ \layout {   
+ \context {
+   \Staff        
+   \consists "Grid_point_engraver"
+
+   gridInterval = #(ly:make-moment 4 4) % 4/4 - tact. How many beats per bar
+
+   % The following line has to be adjusted O-F-T-E-N.
+   \override GridPoint #'Y-extent = #'(-2 . -21)   
+ }
+ \context {
+    \ChoirStaff
+    \remove "System_start_delimiter_engraver" 
+ }
+}
+
+staffVoice = \new Staff=astaffvoice  {
+       \time 4/4
+       \set Staff.instrumentName="Voice"
+       \set Staff.midiInstrument="voice oohs"
+       \key bes \major
+       \partial 8*3 
+       \clef treble
+       {       
+               \context Voice = "melodyVoi" 
+               { <f' bes'>8 <f' a'>8 <d' bes'>8 | <g' c''>4 <f' d''> <g' es''> <f' a'> | <f' bes'>2 r8 }
+       \bar "|."
+       }
+}
+
+staffAccordionMel = \new Staff  \with { \remove "Clef_engraver" } {
+       #(set-accidental-style 'forget) %Set the accidentals (Vorzeichen) for each note, 
+                                       %do not remember them for the rest of the measure.  
+       \time 4/4
+       \set Staff.instrumentName="Accordion"
+       \set Staff.midiInstrument="voice oohs"
+       \key c \major
+       \clef treble
+       { \AccordionTab \bar "|." }
+}
+
+       AltOn = #(define-music-function (parser location mag) (number?)
+               #{ \override Stem #'length = #$(* 7.0 mag)
+               \override NoteHead #'font-size =
+               #$(inexact->exact (* (/ 6.0 (log 2.0)) (log mag))) #})
+     
+       AltOff = {
+               \revert Stem #'length
+               \revert NoteHead #'font-size
+               }
+
+BassRhytm = {s4 s8 | c2 c2 | c2 s8 }
+LyricBassRhythmI=  \lyricmode { c b | c }
+
+staffBassRhytm = \new Staff=staffbass  \with { \remove "Clef_engraver" } {
+       % This is not a RhythmicStaff  because it must be possible to append lyrics.
+               
+       \override Score.GridLine #'extra-offset = #'( 13.0 . 0.0 ) % x.y
+       \override Staff.StaffSymbol #'line-positions = #'( 0 ) 
+        % Shows one horizontal line. The vertical line (simulating a bar-line) is simulated by a grid
+        % Search for 'grid' in this page to find all related functions 
+       \time 4/4
+       {       
+               \context Voice = "VoiceBassRhytm" 
+               \stemDown \AltOn #0.6
+               \relative c''
+               {   
+               \BassRhytm
+               }
+               \AltOff
+       \bar "|."
+       }
+}
+
+\new Score 
+\with {
+ \consists "Grid_line_span_engraver" %The vertical line (simulating a bar-line) in the staffBassRhytm is a gridline 
+}
+\new ChoirStaff 
+       <<
+               \harmonies 
+               \staffVoice
+               \context Lyrics = "lmelodyVoi" \with {alignBelowContext=astaffvoice} { \lyricsto "melodyVoi" \verse }
+               \staffAccordionMel
+               \staffTabLine
+               \staffBassRhytm
+       \context Lyrics = "lBassRhytmAboveI" \with {alignAboveContext=staffbass} \lyricsto VoiceBassRhytm \LyricBassRhythmI
+       >>
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                            APPENDIX                          %
+%     macro 'macro_conv2diaton_push.bsh' for jedit editor      %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%{ 
+// original saved in 'Handorg_Adria_Diaton_III.xls'
+// Save this buffer, to the other recorded macros in the jedit editor
+// and the macro should appear in the
+// Macros menu.
+
+// /ak 17.8.07 This macro from converts lilypond piano notation into 
+// lilypond tabulator notation for the push-part (at the bottom the pull-part) of a diatonic accordion
+// It replaces the piano notes of the line where the cursor is by the accordion notation
+
+
+
+// Known issues: 1) A note at the end of line is not replaced
+
+textArea.goToEndOfWhiteSpace(false);
+textArea.goToStartOfWhiteSpace(true);
+
+
+String firstName, lastName; 
+
+int ReplaceTextInSelection(String sfind, String sreplace)
+{
+//MsgConcat = new StringBuffer(512);
+//MsgConcat.append("Ha");
+
+//Macros.message(view, "On that line replace \"" + sfind + "\" by \"" + sreplace+ "\"");
+SearchAndReplace.setSearchString(sfind.toString());
+SearchAndReplace.setReplaceString(sreplace.toString());
+SearchAndReplace.setBeanShellReplace(false);
+SearchAndReplace.setIgnoreCase(true);
+SearchAndReplace.replace(view);
+SearchAndReplace.setRegexp(true);
+return 1;
+}
+
+
+String smainfind;
+String smainrepl;
+
+
+// Push-part tmp
+smainfind="(\\s|^|<|\\{)(c,)([^\'^is^es])"; smainrepl="$1tmpd\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(cis,)([^\'^is^es])"; smainrepl="$1tmpr-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(des,)([^\'^is^es])"; smainrepl="$1tmpr-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(d,)([^\'^is^es])"; smainrepl="$1tmpbisis-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(dis,)([^\'^is^es])"; smainrepl="$1tmpdisis\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(ees,)([^\'^is^es])"; smainrepl="$1tmpdisis\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(e,)([^\'^is^es])"; smainrepl="$1tmpg$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(f,)([^\'^is^es])"; smainrepl="$1tmpf$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(fis,)([^\'^is^es])"; smainrepl="$1tmpe$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(ges,)([^\'^is^es])"; smainrepl="$1tmpe$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(g,)([^\'^is^es])"; smainrepl="$1tmpb$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(gis,)([^\'^is^es])"; smainrepl="$1tmpr-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(aes,)([^\'^is^es])"; smainrepl="$1tmpr-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(a,)([^\'^is^es])"; smainrepl="$1tmpa$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(ais,)([^\'^is^es])"; smainrepl="$1tmpfisis\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(bes,)([^\'^is^es])"; smainrepl="$1tmpfisis\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(b,)([^\'^is^es])"; smainrepl="$1tmpr-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(c)([^\'^is^es])"; smainrepl="$1tmpd\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(cis)([^\'^is^es])"; smainrepl="$1tmpr-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(des)([^\'^is^es])"; smainrepl="$1tmpr-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(d)([^\'^is^es])"; smainrepl="$1tmpbisis$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(dis)([^\'^is^es])"; smainrepl="$1tmpdisis\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(ees)([^\'^is^es])"; smainrepl="$1tmpdisis\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(e)([^\'^is^es])"; smainrepl="$1tmpf\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(f)([^\'^is^es])"; smainrepl="$1tmpe\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(fis)([^\'^is^es])"; smainrepl="$1tmpaisis\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(ges)([^\'^is^es])"; smainrepl="$1tmpaisis\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(g)([^\'^is^es])"; smainrepl="$1tmpa\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(gis)([^\'^is^es])"; smainrepl="$1tmpr-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(aes)([^\'^is^es])"; smainrepl="$1tmpr-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(a)([^\'^is^es])"; smainrepl="$1tmpg\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(ais)([^\'^is^es])"; smainrepl="$1tmpfisis\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(bes)([^\'^is^es])"; smainrepl="$1tmpfisis\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(b)([^\'^is^es])"; smainrepl="$1tmpr$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(c\')([^\'^is^es])"; smainrepl="$1tmpb\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(cis\')([^\'^is^es])"; smainrepl="$1tmpr-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(des\')([^\'^is^es])"; smainrepl="$1tmpr-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(d\')([^\'^is^es])"; smainrepl="$1tmpeisis\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(dis\')([^\'^is^es])"; smainrepl="$1tmpcisis\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(ees\')([^\'^is^es])"; smainrepl="$1tmpcisis\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(e\')([^\'^is^es])"; smainrepl="$1tmpe\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(f\')([^\'^is^es])"; smainrepl="$1tmpd\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(fis\')([^\'^is^es])"; smainrepl="$1tmpgisis\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(ges\')([^\'^is^es])"; smainrepl="$1tmpgisis\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(g\')([^\'^is^es])"; smainrepl="$1tmpg\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(gis\')([^\'^is^es])"; smainrepl="$1tmpr-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(as\')([^\'^is^es])"; smainrepl="$1tmpr-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(a\')([^\'^is^es])"; smainrepl="$1tmpf\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(ais\')([^\'^is^es])"; smainrepl="$1tmpfisis\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(bes\')([^\'^is^es])"; smainrepl="$1tmpfisis\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(b\')([^\'^is^es])"; smainrepl="$1tmpr-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(c\'\')([^\'^is^es])"; smainrepl="$1tmpa\'\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(cis\'\')([^\'^is^es])"; smainrepl="$1tmpr-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(des\'\')([^\'^is^es])"; smainrepl="$1tmpr-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(d\'\')([^\'^is^es])"; smainrepl="$1tmpeisis\'\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(dis\'\')([^\'^is^es])"; smainrepl="$1tmpbisis\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(ees\'\')([^\'^is^es])"; smainrepl="$1tmpbisis\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(e\'\')([^\'^is^es])"; smainrepl="$1tmpd\'\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(f\'\')([^\'^is^es])"; smainrepl="$1tmpc\'\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(fis\'\')([^\'^is^es])"; smainrepl="$1tmpgisis\'\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(ges\'\')([^\'^is^es])"; smainrepl="$1tmpgisis\'\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(g\'\')([^\'^is^es])"; smainrepl="$1tmpf\'\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(gis\'\')([^\'^is^es])"; smainrepl="$1tmpr-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(aes\'\')([^\'^is^es])"; smainrepl="$1tmpr-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(a\'\')([^\'^is^es])"; smainrepl="$1tmpe\'\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(ais\'\')([^\'^is^es])"; smainrepl="$1tmpr-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(bes\'\')([^\'^is^es])"; smainrepl="$1tmpr-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(b\'\')([^\'^is^es])"; smainrepl="$1tmpr-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+
+smainfind="(\\s|^|<|\\{)(tmp)()"; smainrepl="$1$3"; ReplaceTextInSelection( smainfind, smainrepl );
+*/
+
+/*
+// Pull-part tmp
+smainfind="(\\s|^|<|\\{)(c,)([^\'^is^es])"; smainrepl="$1tmpa-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(cis,)([^\'^is^es])"; smainrepl="$1tmpdisis\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(des,)([^\'^is^es])"; smainrepl="$1tmpdisis\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(d,)([^\'^is^es])"; smainrepl="$1tmpd\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(dis,)([^\'^is^es])"; smainrepl="$1tmpbisis-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(ees,)([^\'^is^es])"; smainrepl="$1tmpbisis-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(e,)([^\'^is^es])"; smainrepl="$1tmpc\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(f,)([^\'^is^es])"; smainrepl="$1tmpf\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(fis,)([^\'^is^es])"; smainrepl="$1tmpfisis\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(ges,)([^\'^is^es])"; smainrepl="$1tmpfisis\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(g,)([^\'^is^es])"; smainrepl="$1tmpg$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(gis,)([^\'^is^es])"; smainrepl="$1tmpe$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(aes,)([^\'^is^es])"; smainrepl="$1tmpe$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(a,)([^\'^is^es])"; smainrepl="$1tmpr-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(ais,)([^\'^is^es])"; smainrepl="$1tmpf$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(bes,)([^\'^is^es])"; smainrepl="$1tmpf$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(b,)([^\'^is^es])"; smainrepl="$1tmpb$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(c)([^\'^is^es])"; smainrepl="$1tmpa$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(cis)([^\'^is^es])"; smainrepl="$1tmpdisis\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(des)([^\'^is^es])"; smainrepl="$1tmpdisis\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(d)([^\'^is^es])"; smainrepl="$1tmpd\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(dis)([^\'^is^es])"; smainrepl="$1tmpbisis$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(ees)([^\'^is^es])"; smainrepl="$1tmpbisis$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(e)([^\'^is^es])"; smainrepl="$1tmpc\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(f)([^\'^is^es])"; smainrepl="$1tmpf\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(fis)([^\'^is^es])"; smainrepl="$1tmpfisis\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(ges)([^\'^is^es])"; smainrepl="$1tmpfisis\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(g)([^\'^is^es])"; smainrepl="$1tmpe\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(gis)([^\'^is^es])"; smainrepl="$1tmpaisis\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(aes)([^\'^is^es])"; smainrepl="$1tmpaisis\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(a)([^\'^is^es])"; smainrepl="$1tmpa\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(ais)([^\'^is^es])"; smainrepl="$1tmpg\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(bes)([^\'^is^es])"; smainrepl="$1tmpg\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(b)([^\'^is^es])"; smainrepl="$1tmpc\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(c\')([^\'^is^es])"; smainrepl="$1tmpb\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(cis\')([^\'^is^es])"; smainrepl="$1tmpcisis\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(des\')([^\'^is^es])"; smainrepl="$1tmpcisis\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(d\')([^\'^is^es])"; smainrepl="$1tmpe\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(dis\')([^\'^is^es])"; smainrepl="$1tmpeisis\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(ees\')([^\'^is^es])"; smainrepl="$1tmpeisis\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(e\')([^\'^is^es])"; smainrepl="$1tmpd\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(f\')([^\'^is^es])"; smainrepl="$1tmpg\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(fis\')([^\'^is^es])"; smainrepl="$1tmpfisis\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(ges\')([^\'^is^es])"; smainrepl="$1tmpfisis\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(g\')([^\'^is^es])"; smainrepl="$1tmpf\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(gis\')([^\'^is^es])"; smainrepl="$1tmpgisis\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(aes\')([^\'^is^es])"; smainrepl="$1tmpgisis\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(a\')([^\'^is^es])"; smainrepl="$1tmpb\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(ais\')([^\'^is^es])"; smainrepl="$1tmpa\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(bes\')([^\'^is^es])"; smainrepl="$1tmpa\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(b\')([^\'^is^es])"; smainrepl="$1tmpd\'\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(c\'\')([^\'^is^es])"; smainrepl="$1tmpf\'\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(cis\'\')([^\'^is^es])"; smainrepl="$1tmpbisis\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(des\'\')([^\'^is^es])"; smainrepl="$1tmpbisis\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(d\'\')([^\'^is^es])"; smainrepl="$1tmpc\'\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(dis\'\')([^\'^is^es])"; smainrepl="$1tmpeisis\'\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(ees\'\')([^\'^is^es])"; smainrepl="$1tmpeisis\'\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(e\'\')([^\'^is^es])"; smainrepl="$1tmpe\'\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(f\'\')([^\'^is^es])"; smainrepl="$1tmpg\'\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(fis\'\')([^\'^is^es])"; smainrepl="$1tmpr-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(ges\'\')([^\'^is^es])"; smainrepl="$1tmpr-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(g\'\')([^\'^is^es])"; smainrepl="$1tmpf\'\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(gis\'\')([^\'^is^es])"; smainrepl="$1tmpgisis\'\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(aes\'\')([^\'^is^es])"; smainrepl="$1tmpgisis\'\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(a\'\')([^\'^is^es])"; smainrepl="$1tmpb\'\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(ais\'\')([^\'^is^es])"; smainrepl="$1tmpa\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(bes\'\')([^\'^is^es])"; smainrepl="$1tmpa\'\'$3"; ReplaceTextInSelection( smainfind, smainrepl );
+smainfind="(\\s|^|<|\\{)(b\'\')([^\'^is^es])"; smainrepl="$1tmpd\'\'\'-.$3"; ReplaceTextInSelection( smainfind, smainrepl );
+
+smainfind="(\\s|^|<|\\{)(tmp)()"; smainrepl="$1$3"; ReplaceTextInSelection( smainfind, smainrepl );
+*/
+
+
+%}
+
index 9ff14a90d7306234a95c0a0a2471e923037534a3..e76ef854bd13ed3fa63c229f16bc5445373bd558 100644 (file)
@@ -1,4 +1,3 @@
-%%  Do not edit this file; it is auto-generated from LSR!
 \version "2.11.23"
 
 \header{ texidoc = "
diff --git a/input/lsr/rhythms/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rythms..ly b/input/lsr/rhythms/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rythms..ly
new file mode 100644 (file)
index 0000000..e499b57
--- /dev/null
@@ -0,0 +1,24 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+LilyPond syntax can involve many unusual placements for parentheses,
+brackets etc., which might sometimes have to be interleaved.For
+example, when entering a manual beam, the left square bracket has to be
+placed after the starting note and its duration, not before. Similarly,
+the right square bracket should directly follow the note which is to be
+at the end of the requested beaming, even if this note happens to be
+inside a tuplet section. This snippet demonstrates how to superpose
+manual beaming, manual slurs, ties, and phrasing slurs, while using
+tuplet sections (enclosed with curly braces).
+" }
+
+{
+  r16[ g16 \times 2/3 {r16 e'8] }
+  
+ g16( a \times 2/3 {b d e') }
+ g8[( a \times 2/3 {b d') e'~]}
+ \times 4/5 {e'32\( a b d' e'} a'4.\)
+}
diff --git a/input/lsr/rhythms/automatic-beams-two-per-two-in-4-4-or-2-2-time-signature.ly b/input/lsr/rhythms/automatic-beams-two-per-two-in-4-4-or-2-2-time-signature.ly
new file mode 100644 (file)
index 0000000..b52033e
--- /dev/null
@@ -0,0 +1,52 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+In time signature 2/2 or 4/4 the beam are  @code{         _____        
+ _   _  Default | | | | I want | | | |. } Use a \"macro\" with
+#(override-auto-beam-setting '.....
+
+
+
+" }
+
+% Automatic beams two per two in 4/4 or 2/2 time signature
+%           _____
+% Default   | | | | 
+%           _   _
+% I want    | | | |
+
+% The good way adapted from David Bobrof
+
+% macro for beamed two per two in 2/2 and 4/4 time signature
+qbeam={  
+       #(override-auto-beam-setting '(end 1 8 * *) 1 4 'Staff)
+       #(override-auto-beam-setting '(end 1 8 * *) 2 4 'Staff)
+       #(override-auto-beam-setting '(end 1 8 * *) 3 4 'Staff) 
+       }
+% other macros 
+timeFractionstyle={ \override Staff.TimeSignature #'style = #'()}
+textn = ^\markup{ without the macro }
+texty = ^\markup{ with the macro }
+
+\score {
+ << 
+       \new Staff << \relative c'' {  
+               \timeFractionstyle
+               \time 4/4
+                g8\textn g g g   g g g g   g g g g4  g8 g g
+                }
+               >>
+               
+       %Use the macro  
+       
+       \new Staff << \relative c'' {  
+               \timeFractionstyle
+               \time 4/4
+               \qbeam
+               g8\texty g g g   g g g g  g g g g4  g8 g g 
+                }
+        >>      
+ >>
+\layout{ raggedright = ##t }
+}
diff --git a/input/lsr/rhythms/changing-time-signatures-inside-a-polymetric-section-using--compressmusic.ly b/input/lsr/rhythms/changing-time-signatures-inside-a-polymetric-section-using--compressmusic.ly
new file mode 100644 (file)
index 0000000..d135c08
--- /dev/null
@@ -0,0 +1,43 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+The measureLength variable, together with measurePosition, determines
+when a barline is needed. However, when using \\compressMusic, the
+scaling of durations makes it difficult to change time signatures
+without making a mess of it. 
+
+Therefore, measureLength has to be set manually, using the
+ly:make-moment callback. The second argument has to be the same as the
+second argument of \\compressMusic.
+" }
+
+\layout {
+ \context { \Score
+    \remove "Timing_translator"
+    \remove "Default_bar_line_engraver"
+ }
+ \context {
+   \Staff
+   \consists "Timing_translator"
+   \consists "Default_bar_line_engraver"
+ }
+}
+
+<<
+ \new Staff {
+   \compressMusic #'( 8 . 5 ) {
+     \time 6/8
+     \set Timing.measureLength = #(ly:make-moment 3 5)
+     b8 b b b b b
+     \time 2/4
+     \set Timing.measureLength = #(ly:make-moment 2 5)
+     b4 b
+     }
+   }
+ \new Staff {
+   \clef bass
+   \time 2/4
+   c2 d e f  }
+ >>
+
diff --git a/input/lsr/rhythms/heavily-customized-polymetric-time-signatures.ly b/input/lsr/rhythms/heavily-customized-polymetric-time-signatures.ly
new file mode 100644 (file)
index 0000000..fdac8ae
--- /dev/null
@@ -0,0 +1,38 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+Though the set-time-signature thing was not the most essential here, it
+has been included to show the beat of this piece (which is a template
+of a real balkan song!).
+" }
+
+#(define (compound-time one two three four five six seven eight nine ten num)
+  (markup #:override '(baseline-skip . 0) #:number 
+   (#:line ((#:column (one num)) #:vcenter "+" (#:column (two num)) #:vcenter "+" (#:column (three num)) #:vcenter "+" (#:column (four num)) #:vcenter "+" (#:column (five num)) #:vcenter "+" (#:column (six num)) #:vcenter "+" (#:column (seven num)) #:vcenter "+" (#:column (eight num)) #:vcenter "+" (#:column (nine num)) #:vcenter "+" (#:column (ten num))))))
+
+
+melody =
+{         \relative c'' {
+        \set Staff.instrumentName = "Bb Sop."
+        \key g \major \time 25/8
+         \override Staff.TimeSignature #'stencil = #ly:text-interface::print
+  \override Staff.TimeSignature #'text = #(compound-time "3" "2" "2" "3" "2" "2" "2" "3" "2" "2" "8" )
+        c8[ c c] d4 c8[ c] b[ c b] a4 g fis8[ e d c] b'[ c d] e4-^ fis8[ g] | \break
+        c,4. d4 c4 d4. c4 d c2 d4. e4-^ d4 |
+        c4. d4 c4 d4. c4 d c2 d4. e4-^ d4 | \break
+        c4. d4 c4 d4. c4 d c2 d4. e4-^ d4 |
+        c4. d4 c4 d4. c4 d c2 d4. e4-^ d4 | \break }
+}
+drum = {
+        \new DrumStaff \drummode
+        {
+                \bar "|:" bd4. ^\markup { "Drums" } sn4 bd \bar ":" sn4. bd4 sn \bar ":"
+                bd sn bd4. sn4 bd \bar ":|" 
+        }
+}
+
+{
+ \melody 
+ \drum 
+}
diff --git a/input/lsr/rhythms/makam.ly b/input/lsr/rhythms/makam.ly
deleted file mode 100644 (file)
index f5d2d65..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-%%  Do not edit this file; it is auto-generated from LSR!
-\header {
-
-  texidoc = "Makam is Turkish type of melody that uses 1/9 tone
-  microtonal alterations."
-
-}
-
-
-\version "2.11.23"
-
-%{
-
-Define 1/9 alterations.
-
-%}
-
-
-#(define-public KOMA 1/9)
-#(define-public BAKIYE 4/9)
-#(define-public KUCUK 5/9)
-#(define-public BUYUKMUCENNEB 8/9)
-
-%{
-
-Define pitch names
-
-%}
-
-makamPitchNames = #`(
-  (c . ,(ly:make-pitch -1 0 NATURAL))
-  (d . ,(ly:make-pitch -1 1 NATURAL))
-  (e . ,(ly:make-pitch -1 2 NATURAL))
-  (f . ,(ly:make-pitch -1 3 NATURAL))
-  (g . ,(ly:make-pitch -1 4 NATURAL))
-  (a . ,(ly:make-pitch -1 5 NATURAL))
-  (b . ,(ly:make-pitch -1 6 NATURAL))
-  
-  (cc . ,(ly:make-pitch -1 0 KOMA))
-  (dc . ,(ly:make-pitch -1 1 KOMA))
-  (ec . ,(ly:make-pitch -1 2 KOMA))
-  (fc . ,(ly:make-pitch -1 3 KOMA))
-  (gc . ,(ly:make-pitch -1 4 KOMA))
-  (ac . ,(ly:make-pitch -1 5 KOMA))
-  (bc . ,(ly:make-pitch -1 6 KOMA))
-
-  (cb . ,(ly:make-pitch -1 0 BAKIYE))
-  (db . ,(ly:make-pitch -1 1 BAKIYE))
-  (eb . ,(ly:make-pitch -1 2 BAKIYE))
-  (fb . ,(ly:make-pitch -1 3 BAKIYE))
-  (gb . ,(ly:make-pitch -1 4 BAKIYE))
-  (ab . ,(ly:make-pitch -1 5 BAKIYE))
-  (bb . ,(ly:make-pitch -1 6 BAKIYE))
-
-  (ck . ,(ly:make-pitch -1 0 KUCUK))
-  (dk . ,(ly:make-pitch -1 1 KUCUK))
-  (ek . ,(ly:make-pitch -1 2 KUCUK))
-  (fk . ,(ly:make-pitch -1 3 KUCUK))
-  (gk . ,(ly:make-pitch -1 4 KUCUK))
-  (ak . ,(ly:make-pitch -1 5 KUCUK))
-  (bk . ,(ly:make-pitch -1 6 KUCUK))
-
-  (cbm . ,(ly:make-pitch -1 0 BUYUKMUCENNEB))
-  (dbm . ,(ly:make-pitch -1 1 BUYUKMUCENNEB))
-  (ebm . ,(ly:make-pitch -1 2 BUYUKMUCENNEB))
-  (fbm . ,(ly:make-pitch -1 3 BUYUKMUCENNEB))
-  (gbm . ,(ly:make-pitch -1 4 BUYUKMUCENNEB))
-  (abm . ,(ly:make-pitch -1 5 BUYUKMUCENNEB))
-  (bbm . ,(ly:make-pitch -1 6 BUYUKMUCENNEB))
-
-  ;; f for flat.
-  (cfc . ,(ly:make-pitch -1 0 (- KOMA)))
-  (dfc . ,(ly:make-pitch -1 1 (- KOMA)))
-  (efc . ,(ly:make-pitch -1 2 (- KOMA)))
-  (ffc . ,(ly:make-pitch -1 3 (- KOMA)))
-  (gfc . ,(ly:make-pitch -1 4 (- KOMA)))
-  (afc . ,(ly:make-pitch -1 5 (- KOMA)))
-  (bfc . ,(ly:make-pitch -1 6 (- KOMA)))
-  
-  (cfb . ,(ly:make-pitch -1 0 (- BAKIYE)))
-  (dfb . ,(ly:make-pitch -1 1 (- BAKIYE)))
-  (efb . ,(ly:make-pitch -1 2 (- BAKIYE)))
-  (ffb . ,(ly:make-pitch -1 3 (- BAKIYE)))
-  (gfb . ,(ly:make-pitch -1 4 (- BAKIYE)))
-  (afb . ,(ly:make-pitch -1 5 (- BAKIYE)))
-  (bfb . ,(ly:make-pitch -1 6 (- BAKIYE)))
-
-  (cfk . ,(ly:make-pitch -1 0 (- KUCUK)))
-  (dfk . ,(ly:make-pitch -1 1 (- KUCUK)))
-  (efk . ,(ly:make-pitch -1 2 (- KUCUK)))
-  (ffk . ,(ly:make-pitch -1 3 (- KUCUK)))
-  (gfk . ,(ly:make-pitch -1 4 (- KUCUK)))
-  (afk . ,(ly:make-pitch -1 5 (- KUCUK)))
-  (bfk . ,(ly:make-pitch -1 6 (- KUCUK)))
-
-  (cfbm . ,(ly:make-pitch -1 0 (- BUYUKMUCENNEB)))
-  (dfbm . ,(ly:make-pitch -1 1 (- BUYUKMUCENNEB)))
-  (efbm . ,(ly:make-pitch -1 2 (- BUYUKMUCENNEB)))
-  (ffbm . ,(ly:make-pitch -1 3 (- BUYUKMUCENNEB)))
-  (gfbm . ,(ly:make-pitch -1 4 (- BUYUKMUCENNEB)))
-  (afbm . ,(ly:make-pitch -1 5 (- BUYUKMUCENNEB)))
-  (bfbm . ,(ly:make-pitch -1 6 (- BUYUKMUCENNEB)))
-
-)
-
-
-%% set pitch names.
-pitchnames = \makamPitchNames 
-#(ly:parser-set-note-names parser makamPitchNames)
-
-\paper
-{
-  ragged-right = ##t
-}
-
-
-makamGlyphs = #'((1 . "accidentals.doublesharp")
-       (8/9 . "accidentals.sharp.slashslashslash.stemstem")
-       (5/9 . "accidentals.sharp.slashslashslash.stem")
-       (4/9 . "accidentals.sharp")
-       (1/9 . "accidentals.sharp.slashslash.stem")
-       (0 . "accidentals.natural")
-       (-1/9 . "accidentals.mirroredflat")
-       (-4/9 . "accidentals.flat.slash")
-       (-5/9 . "accidentals.flat")
-       (-8/9 . "accidentals.flat.slashslash")
-       (-1 . "accidentals.flatflat")
-       )
-
-\relative {
-
-  %{ define alteration <-> symbol mapping. The following glyphs are available.
-
-  accidentals.sharp 
-  accidentals.sharp.slashslash.stem 
-  accidentals.sharp.slashslashslash.stemstem 
-  accidentals.sharp.slashslashslash.stem 
-  accidentals.sharp.slashslash.stemstemstem 
-  accidentals.natural 
-  accidentals.flat 
-  accidentals.flat.slash 
-  accidentals.flat.slashslash 
-  accidentals.mirroredflat.flat 
-  accidentals.mirroredflat 
-  accidentals.flatflat 
-  accidentals.flatflat.slash 
-  accidentals.doublesharp 
-
-  %}
-
-  \override Accidental #'glyph-name-alist =  \makamGlyphs
-  
-  \override Staff.KeySignature #'glyph-name-alist = \makamGlyphs
-  \set Staff.keySignature =  #'(
-    (3 .  4/9)
-    (6 . -1/9))
-  
-  c cc db fk gbm gfc gfb efk dfbm
-}
diff --git a/input/new/real-music/AAA-intro.ly b/input/new/real-music/AAA-intro.ly
new file mode 100644 (file)
index 0000000..93c62a9
--- /dev/null
@@ -0,0 +1,16 @@
+\version "2.10.0"
+
+\header{
+texidoc = "
+@unnumbered Introduction
+
+This document shows examples from the
+@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}.
+
+In the web version of this document, you can click on the file name
+or figure for each example to see the corresponding input file."
+}
+
+% make sure .png  is generated.
+\markup{ "This document is for LilyPond version" #(ly:export(lilypond-version)) }
+
diff --git a/input/new/real-music/GNUmakefile b/input/new/real-music/GNUmakefile
new file mode 100644 (file)
index 0000000..3819fda
--- /dev/null
@@ -0,0 +1,15 @@
+depth = ../../../
+
+STEPMAKE_TEMPLATES=documentation texinfo tex
+LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc
+
+## Hmm, would this work?  No -- if we really want examples, move
+## to other dir (input/) comes to mind.
+## examples = font20 ancient-font
+## LOCALSTEPMAKE_TEMPLATES += ly mutopia
+
+EXTRA_DIST_FILES= 
+
+include $(depth)/make/stepmake.make
+
+TITLE=Advanced snippets
diff --git a/input/new/real-music/SConscript b/input/new/real-music/SConscript
new file mode 100644 (file)
index 0000000..f72bfff
--- /dev/null
@@ -0,0 +1,4 @@
+# -*-python-*-
+
+Import ('env', 'collate')
+collate (title = 'Advanced snippets')
index 93c62a94e387f2078294620ffc91221dc534deba..e76ef854bd13ed3fa63c229f16bc5445373bd558 100644 (file)
@@ -1,15 +1,18 @@
-\version "2.10.0"
+\version "2.11.23"
 
-\header{
-texidoc = "
+\header{ texidoc = "
 @unnumbered Introduction
 
 This document shows examples from the
 @uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}.
 
 In the web version of this document, you can click on the file name
-or figure for each example to see the corresponding input file."
-}
+or figure for each example to see the corresponding input file.
+
+@ifhtml
+Also available as a @uref{collated-files.pdf,PDF}
+@end ifhtml
+"}
 
 % make sure .png  is generated.
 \markup{ "This document is for LilyPond version" #(ly:export(lilypond-version)) }