]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/user/non-music.itely
Merge branch 'master' of ssh+git://git.sv.gnu.org/srv/git/lilypond
[lilypond.git] / Documentation / user / non-music.itely
index 6462f4122ca00b52d40f7ab68d9e06760ee86a16..b7a6c3e420e7f40dc478a1003ecdf370e179f031 100644 (file)
@@ -18,460 +18,12 @@ This section deals with general lilypond issues, rather than
 specific notation.
 
 @menu
 specific notation.
 
 @menu
-* Input files::                 
 * Titles and headers::          
 * MIDI output::                 
 * Titles and headers::          
 * MIDI output::                 
-* Displaying LilyPond notation::  
-* Skipping corrected music::    
+* other midi::                  
 @end menu
 
 
 @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 (introduction)::  
-* File structure::              
-* A single music expression::   
-* Multiple scores in a book::   
-* Extracting fragments of notation::  
-* Including LilyPond files::    
-* Text encoding::               
-@end menu
-
-
-@node File structure (introduction)
-@subsection File structure (introduction)
-
-A basic example of a lilypond input file is
-
-@example
-\version "2.11.23"
-\score @{
-  @{ @}     % this is a single music expression;
-            % all the music goes in here.
-  \header @{ @}
-  \layout @{ @}
-  \midi @{ @}
-@}
-@end example
-
-@noindent
-There are many variations of this basic pattern, but this
-example serves as a useful starting place.
-
-The major part of this manual is concerned with entering various
-forms of music in LilyPond.  However, many music expressions are not
-valid input on their own, for example, a @code{.ly} file containing
-only a note
-@example
-c'4
-@end example
-
-@noindent
-will result in a parsing error.  Instead, music should be inside other
-expressions, which may be put in a file by themselves.  Such
-expressions are called toplevel expressions; see @ref{File structure}, for
-a list of all such expressions.
-
-
-@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 @bullet
-@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
-@cindex identifiers
-
-@item
-An identifier, 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 identifier 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 @bullet
-@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 Titles and headers
 @section Titles and headers
 
 @node Titles and headers
 @section Titles and headers
 
@@ -740,7 +292,7 @@ composer flush right on a single line.
 
 A particular place of a score can be marked using the @code{\label}
 command, either at top-level or inside music.  This label can then be
 
 A particular place of a score can be marked using the @code{\label}
 command, either at top-level or inside music.  This label can then be
-refered to in a markup, to get the number of the page where the marked
+referred to in a markup, to get the number of the page where the marked
 point is placed, using the @code{\page-ref} markup command.
 
 @lilypond[verbatim,line-width=11.0\cm]
 point is placed, using the @code{\page-ref} markup command.
 
 @lilypond[verbatim,line-width=11.0\cm]
@@ -770,14 +322,14 @@ is not known;
 @end enumerate
 
 The reason why a gauge is needed is that, at the time markups are
 @end enumerate
 
 The reason why a gauge is needed is that, at the time markups are
-interpreted, the page breaking has not yet occured, so the page numbers
+interpreted, the page breaking has not yet occurred, so the page numbers
 are not yet known.  To work around this issue, the actual markup
 interpretation is delayed to a later time; however, the dimensions of
 the markup have to be known before, so a gauge is used to decide these
 dimensions.  If the book has between 10 and 99 pages, it may be "00",
 ie. a two digit number.
 
 are not yet known.  To work around this issue, the actual markup
 interpretation is delayed to a later time; however, the dimensions of
 the markup have to be known before, so a gauge is used to decide these
 dimensions.  If the book has between 10 and 99 pages, it may be "00",
 ie. a two digit number.
 
-@refcommands
+@predefined
 
 @funindex \label
 @code{\label}
 
 @funindex \label
 @code{\label}
@@ -813,10 +365,10 @@ top-level, or inside a music expression.
 @end verbatim
 
 The markups which are used to format the table of contents are defined
 @end verbatim
 
 The markups which are used to format the table of contents are defined
-in the @code{\paper} block. The default ones are @code{tocTitleMarkup},
+in the @code{\paper} block.  The default ones are @code{tocTitleMarkup},
 for formatting the title of the table, and @code{tocItemMarkup}, for
 formatting the toc elements, composed of the element title and page
 for formatting the title of the table, and @code{tocItemMarkup}, for
 formatting the toc elements, composed of the element title and page
-number. These variables may be changed by the user:
+number.  These variables may be changed by the user:
 
 @verbatim
 \paper {
 
 @verbatim
 \paper {
@@ -825,19 +377,19 @@ number. These variables may be changed by the user:
     \fill-line { \null "Table des matières" \null }
     \hspace #1
   }
     \fill-line { \null "Table des matières" \null }
     \hspace #1
   }
-  %% use larfer font size
+  %% use larger font size
   tocItemMarkup = \markup \large \fill-line {
     \fromproperty #'toc:text \fromproperty #'toc:page
   }
 }
 @end verbatim
 
   tocItemMarkup = \markup \large \fill-line {
     \fromproperty #'toc:text \fromproperty #'toc:page
   }
 }
 @end verbatim
 
-Note how the toc element text and page number are refered to in
+Note how the toc element text and page number are referred to in
 the @code{tocItemMarkup} definition.
 
 New commands and markups may also be defined to build more elaborated
 table of contents:
 the @code{tocItemMarkup} definition.
 
 New commands and markups may also be defined to build more elaborated
 table of contents:
-@itemize @bullet
+@itemize
 @item first, define a new markup variable in the @code{\paper} block
 @item then, define a music function which aims at adding a toc element
 using this markup paper variable.
 @item first, define a new markup variable in the @code{\paper} block
 @item then, define a music function which aims at adding a toc element
 using this markup paper variable.
@@ -890,7 +442,7 @@ tocAct =
 
 Init files: @file{ly/@/toc@/-init@/.ly}.
 
 
 Init files: @file{ly/@/toc@/-init@/.ly}.
 
-@refcommands
+@predefined
 
 @funindex \table-of-contents
 @code{\table-of-contents}
 
 @funindex \table-of-contents
 @code{\table-of-contents}
@@ -914,7 +466,7 @@ what was entered.  This is convenient for checking the music; octaves
 that are off or accidentals that were mistyped stand out very much
 when listening to the MIDI output.
 
 that are off or accidentals that were mistyped stand out very much
 when listening to the MIDI output.
 
-@refbugs
+@knownissues
 
 Many musically interesting effects, such as swing, articulation,
 slurring, etc., are not translated to midi.
 
 Many musically interesting effects, such as swing, articulation,
 slurring, etc., are not translated to midi.
@@ -931,6 +483,7 @@ output.  Players that are known to work include
 * Creating MIDI files::         
 * MIDI block::                  
 * MIDI instrument names::       
 * Creating MIDI files::         
 * MIDI block::                  
 * MIDI instrument names::       
+* What goes into the MIDI?  FIXME::  
 @end menu
 
 @node Creating MIDI files
 @end menu
 
 @node Creating MIDI files
@@ -954,11 +507,11 @@ to a score, for example,
 The tempo can be specified using the @code{\tempo} command within the 
 actual music, see @ref{Metronome marks}.  An alternative, which does not
 result in a metronome mark in the printed score, is shown in the example
 The tempo can be specified using the @code{\tempo} command within the 
 actual music, see @ref{Metronome marks}.  An alternative, which does not
 result in a metronome mark in the printed score, is shown in the example
-above. In this example the tempo of quarter notes is set to 72 beats per
+above.  In this example the tempo of quarter notes is set to 72 beats per
 minute. 
 This kind of tempo
 minute. 
 This kind of tempo
-specification can not take dotted note lengths as an argument. In this
-case, break the dotted notes into smaller units. For example, a tempo
+specification can not take dotted note lengths as an argument.  In this
+case, break the dotted notes into smaller units.  For example, a tempo
 of 90 dotted quarter notes per minute can be specified as 270 eighth
 notes per minute
 
 of 90 dotted quarter notes per minute can be specified as 270 eighth
 notes per minute
 
@@ -1011,7 +564,7 @@ in the @code{\midi@{@}} section.
 @end example
 
 
 @end example
 
 
-@refbugs
+@knownissues
 
 Unterminated (de)crescendos will not render properly in the midi file,
 resulting in silent passages of music.  The workaround is to explicitly
 
 Unterminated (de)crescendos will not render properly in the midi file,
 resulting in silent passages of music.  The workaround is to explicitly
@@ -1051,7 +604,7 @@ enclose the @code{\new Score} and the @code{\midi} in a @code{\score} block.
 
 
 The MIDI block is analogous to the layout block, but it is somewhat
 
 
 The MIDI block is analogous to the layout block, but it is somewhat
-simpler.  The @code{\midi} block is similar to @code{\layout}. It can contain
+simpler.  The @code{\midi} block is similar to @code{\layout}.  It can contain
 context definitions.
 
 
 context definitions.
 
 
@@ -1082,82 +635,59 @@ the list of MIDI instruments, the Grand Piano (@code{"acoustic grand"})
 instrument is used.
 
 
 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 \displayLilyMusc
-Displaying a music expression in LilyPond notation can be
-done using the music function @code{\displayLilyMusic}.  For example,
+@node What goes into the MIDI?  FIXME
+@subsection What goes into the MIDI?  FIXME
 
 
-@example
-@{
-  \displayLilyMusic \transpose c a, @{ c e g a bes @}
-@}
-@end example
-
-will display
+@menu
+* Repeats and MIDI::            
+@end menu
 
 
-@example
-@{ a, cis e fis g @}
-@end example
+@node Repeats and MIDI
+@subsubsection Repeats and MIDI
+
+@cindex expanding repeats
+@funindex \unfoldRepeats
+
+With a little bit of tweaking, all types of repeats can be present
+in the MIDI output.  This is achieved by applying the
+@code{\unfoldRepeats} music function.  This function changes all
+repeats to unfold repeats.
+
+@lilypond[quote,verbatim,fragment,line-width=8.0\cm]
+\unfoldRepeats {
+  \repeat tremolo 8 {c'32 e' }
+  \repeat percent 2 { c''8 d'' }
+  \repeat volta 2 {c'4 d' e' f'}
+  \alternative {
+    { g' a' a' g' }
+    {f' e' d' c' }
+  }
+}
+\bar "|."
+@end lilypond
 
 
-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.
+When creating a score file using @code{\unfoldRepeats} for MIDI,
+it is necessary to make two @code{\score} blocks: one for MIDI
+(with unfolded repeats) and one for notation (with volta, tremolo,
+and percent repeats).  For example,
 
 @example
 
 @example
-lilypond file.ly >display.txt
+\score @{
+  @var{..music..}
+  \layout @{ .. @}
+@}
+\score @{
+  \unfoldRepeats @var{..music..}
+  \midi @{ .. @}
+@}
 @end example
 
 
 @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
+@node other midi
+@section other midi
 
 
-@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
+Micro tones are also exported to the MIDI file.
 
 
-In polyphonic music, @code{Score.skipTypesetting} will affect all
-voices and staves, saving even more time.