<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>)
<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)
<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)
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
%%%%% GENERAL POLICY
-See policy.txt
+Formatting: writing-texinfo.txt
+General policy: policy.txt
%%%%% UPDATING DOCS
@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::
* 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
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
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
@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.
the @internalsref{AccidentalSuggestion} object.
@node Figured bass
-@unnumberedsubsubsec Figured bass
+@subsection Figured bass
@cindex Basso continuo
@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
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
--- /dev/null
+@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.
+
+
+
* 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
@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
@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
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
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.
-
-
@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.
@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.
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
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
@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
\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
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 | } \\
\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)
\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 | } \\
\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)
\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 | } \\
\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)
\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 | } \\
\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)
\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
\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)
\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 @{ <<
>> @}
@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 | } >> }
\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)
\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.
\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)
\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 | } >> }
\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)
\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 | } \\
\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)
\context Staff = "down"{
#(set-accidental-style 'forget)
\musicB } >> }
- \header { piece = \markup {\fill-line { \fontsize #3 "'forget" }}}
-}
@end lilypond
@end table
@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
@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 {
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.
\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
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 =
@seealso
+
Snippets: @lsrdir{pitches},
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
-
-
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
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}.
* 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.
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
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.
-
@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
@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}.
This manual: @ref{Tuplets}, @ref{Skips}.
+Snippets: @lsrdir{rhythms}
@node Ties
@unnumberedsubsubsec Ties
@seealso
+Snippets: @lsrdir{rhythms}
+
Internals Reference:
@internalsref{LaissezVibrerTie}
@internalsref{LaissezVibrerTieColumn}
@seealso
+
+
In this manual: @ref{Automatic note splitting}.
+Snippets: @lsrdir{rhythms}
+
Internals Reference: @internalsref{Tie}.
@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
@seealso
+Snippets: @lsrdir{rhythms}
+
Internals Reference: @internalsref{SkipMusic}.
This manual: @ref{Text}
+Snippets: @lsrdir{rhythms}
+
Internals Reference:
@internalsref{MultiMeasureRest}.
@seealso
+Snippets: @lsrdir{rhythms}
+
Internals Reference: @internalsref{TimeSignature}, and
@internalsref{Timing_translator}.
piece. If you use it after the beginning, some odd warnings may
occur.
+@seealso
+
+Snippets: @lsrdir{rhythms}
@node Unmetered music
@unnumberedsubsubsec Unmetered music
@noindent
to indicate where breaks can occur.
+@seealso
+
+Snippets: @lsrdir{rhythms}
+
@node Polymetric notation
@unnumberedsubsubsec Polymetric notation
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
@seealso
+Snippets: @lsrdir{rhythms}
+
Internals Reference: @internalsref{Completion_heads_engraver}.
>>}. If a polyphonic voice ends while an automatic beam is still
accepting notes, it is not typeset.
+@seealso
+
+Snippets: @lsrdir{rhythms}
+
@seealso
+Snippets: @lsrdir{rhythms}
+
Internals Reference: @internalsref{Beam}.
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
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
@seealso
+Snippets: @lsrdir{rhythms}
+
Internals Reference: @internalsref{BarNumber}.
Examples: @lsrdir{bar number}
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
@seealso
+Snippets: @lsrdir{rhythms}
+
This manual: @ref{Text marks}.
Internals Reference: @internalsref{RehearsalMark}.
@seealso
+Snippets: @lsrdir{rhythms}
+
Internals Reference: @internalsref{GraceMusic}.
>>
@end lilypond
+@seealso
+
+Snippets: @lsrdir{rhythms}
+
@node Time administration
@unnumberedsubsubsec Time administration
This manual: @ref{Bar numbers}, @ref{Unmetered music}
+Snippets: @lsrdir{rhythms}
+
Internals Reference: @internalsref{Timing_translator},
@internalsref{Score}
@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
@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
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.
--- /dev/null
+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)
+
+
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=[]
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)
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
--- /dev/null
+%% 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
+ }
+ >>
+}
+
+
+
--- /dev/null
+\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)) }
+
--- /dev/null
+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
--- /dev/null
+# -*-python-*-
+
+Import ('env', 'collate')
+collate (title = 'Advanced snippets')
--- /dev/null
+%% 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
+ }
+ >>
+}
+
+
+
--- /dev/null
+%% 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
+}
--- /dev/null
+%% 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 );
+*/
+
+
+%}
+
-%% Do not edit this file; it is auto-generated from LSR!
\version "2.11.23"
\header{ texidoc = "
--- /dev/null
+%% 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.\)
+}
--- /dev/null
+%% 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 }
+}
--- /dev/null
+%% 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 }
+ >>
+
--- /dev/null
+%% 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
+}
+++ /dev/null
-%% 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
-}
--- /dev/null
+\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)) }
+
--- /dev/null
+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
--- /dev/null
+# -*-python-*-
+
+Import ('env', 'collate')
+collate (title = 'Advanced snippets')
-\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)) }