@menu
* Input structure::
-* Useful concepts and properties::
* Titles and headers::
* Working with input files::
* Controlling output::
+* MIDI output::
@end menu
@}
@end example
-@warning
-There must be @strong{only one} outer music expression in a
-@code{\score} block, and it @strong{must} be surrounded by
-curly brackets.
-@end warning
+@warning{There must be @strong{only one} outer music expression in
+a @code{\score} block, and it @strong{must} be surrounded by
+curly brackets.}
This single music expression may be of any size, and may contain
other music expressions to any complexity. All of these examples
@{ c'4 c' c' c' @}
@end example
-@lilypond[ragged-right,verbatim,quote]
+@lilypond[verbatim,quote]
{
{ c'4 c' c' c'}
{ d'4 d' d' d'}
}
@end lilypond
-@lilypond[ragged-right,verbatim,quote]
+@lilypond[verbatim,quote]
<<
\new Staff { c'4 c' c' c' }
\new Staff { d'4 d' d' d' }
@end example
Comments are one exception to this general rule. (For others see
-@ref{File structure}.) Both single-line comments and comments
+@ref{File structure}.) Both single-line comments and comments
delimited by @code{%@{ .. %@}} may be placed anywhere within an
input file. They may be placed inside or outside a @code{\score}
block, and inside or outside the single music expression within a
@rlearning{Working on input files},
@rlearning{Music expressions explained},
-@rlearning{Score is a single (compound) music expression.
+@rlearning{Score is a (single) compound musical expression}.
@node Multiple scores in a book
@funindex \book
@cindex movements, multiple
-A document may contain multiple pieces of music and texts. Examples
+A document may contain multiple pieces of music and text. Examples
of these are an etude book, or an orchestral part with multiple
movements. Each movement is entered with a @code{\score} block,
@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.
+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 @{
A @code{.ly} file may contain any number of toplevel expressions, where a
toplevel expression is one of the following:
-@itemize
+@itemize @bullet
@item
An output definition, such as @code{\paper}, @code{\midi}, and
@code{\layout}. Such a definition at the toplevel changes the default
Learning Manual:
@rlearning{How LilyPond input files work}.
-@node Useful concepts and properties
-@section Useful concepts and properties
-
-
-@menu
-* Input modes::
-* When to add a -::
-* Controlling direction and placement::
-* Distances and measurements::
-* Spanners::
-@end menu
-
-@node Input modes
-@subsection Input modes
-
-The way in which the notation contained within an input file is
-interpreted is determined by the current input mode.
-
-@unnumberedsubsubsection Note mode
-
-This is the default mode or it may be activated with the
-@code{\notemode} command. Input is interpreted as pitches,
-durations, markup, etc and typeset as musical notation on a staff.
-
-It is not normally necessary to specify note mode explicitly, but
-it may be useful to do so in certain situations, for example if you
-are in \lyricmode or \chordmode or any other mode and want to insert
-something that only can be done with @code(\notemode} syntax.
-
-For example, to indicate dynamic markings for the verses of a
-choral pieces it is necessary to enter note mode to interpret
-the markings:
-
-@lilypond{verbatim,relative=2,quote}
-{ c4 c4 c4 c4 }
-\addlyrics {
- \notemode{\set stanza = \markup{ \dynamic f 1. } }
- To be sung loudly
-}
-\addlyrics {
- \notemode{\set stanza = \markup{ \dynamic p 2. } }
- To be sung quietly
-}
-@end lilypond
-
-@unnumberedsubsubsection Lyrics mode
-
-This is activated with the @code{\lyricmode} command, and causes
-input to be interpreted as lyric syllables with optional durations
-and associated lyric modifiers.
-
-Lyric mode is also activated with the
-@code{\addlyrics} command. This command also creates a new
-@code{Lyrics} context and an implicit @code{\lyricsto} command
-which associates the lyrics with the preceding music.
-
-@unnumberedsubsubsection Chord mode
-
-This is activated with the @code{\chordmode} command, and causes
-input to be interpreted with the syntax of chord notation, see
-@ref{Chord notation}. Chords are rendered as notes on a staff.
-
-Chord mode is also activated with the @code{\chords} command.
-This also creates a new @code{ChordNames} context and
-causes the following input to be interpreted with the syntax of
-chord notation and rendered as chord names in the @code{ChordNames}
-context, see @ref{Printing chord names}.
-
-@unnumberedsubsubsection Drum mode
-
-This is activated with the @code{\drummode} command, and causes
-input to be interpreted with the syntax of drum notation, see
-@ref{Basic percussion notation}.
-
-Drum mode is also activated with the @code{\drums} command.
-This also creates a new @code{DrumStaff} context and causes the
-following input to be interpreted with the syntax of drum notation
-and rendered as drum symbols on a drum staff, see @ref{Basic
-percussion notation}.
-
-@unnumberedsubsubsection Figure mode
-
-This is activated with the @code{\figuremode} command, and causes
-input to be interpreted with the syntax of figured bass, see
-@ref{Entering figured bass}.
-
-Figure mode is also activated with the @code{\figures} command.
-This also creates a new @code{FiguredBass} context and causes the
-following input to be interpreted with the figured bass syntax
-and rendered as figured bass symbols in the @code{FiguredBass}
-context, see @ref{Introduction to figured bass}.
-
-@unnumberedsubsubsection Fret and tab modes
-
-There are no special input modes for entering fret and tab symbols.
-
-To create tab diagrams, enter notes or chords in note mode and
-render them in a @code{TabStaff} context, see
-@ref{Default tablatures}.
-
-To create fret diagrams above a staff, enter them as markup
-above the notes using the @code{\fret-diagram} command, see
-@ref{Fret diagrams}.
-
-
-@node When to add a -
-@subsection When to add a -
-
-One of these works, the other doesn't.
-
-@verbatim
-\version "2.11.38"
-{ c'\mp\fermata\accent-\markup { "forcefully"} }
-% { c'\mp\fermata\accent\markup { "forcefully"} }
-@end verbatim
-
-@node Controlling direction and placement
-@subsection Controlling direction and placement
-
-TODO: everything
-
-By default, LilyPond does a pretty jazz'n job of picking
-directions. But in some cases, it may be desirable to force a
-direction.
-
-@verbatim
--
-^ _
-@end verbatim
-
-Also cover
-#UP
-#DOWN
-#LEFT
-#RIGHT.
-
-Maybe rename section to "directions".
-
-Also mention \override Foo #'direction = #'DOWN.
-
-also mention the typical \fooDown, \fooNeutral predefined commands.
-
-also mention that some directions are (without other tweaking)
-always up or always down (like dynamics or fermata), while other
-things can alternate between up or down based on the stem direction
-(like slurs or accents).
-
-
-@node Distances and measurements
-@subsection Distances and measurements
-
-DISCUSS after working on other sections.
-
-TODO: staff spaces, #UP #DOWN #LEFT #RIGHT. Maybe move into tweaks?
-
-
-@node Spanners
-@subsection Spanners
-
-
@node Titles and headers
@section Titles and headers
some pieces include a lot more information.
@menu
-* Creating titles::
-* Custom titles::
-* Reference to page numbers::
-* Table of contents::
+* Creating titles::
+* Custom titles::
+* Reference to page numbers::
+* Table of contents::
@end menu
@item the label, a scheme symbol, eg. @code{#'firstScore};
@item a markup that will be used as a gauge to estimate the dimensions
of the markup;
-@item a markup that will be used in place of the page number if the label
+@item a markup that will be used in place of the page number if the label
is not known;
@end enumerate
\pageBreak
\tocItem \markup "First score"
-\score {
+\score {
{
c' % ...
\tocItem \markup "Some particular point in the first score"
- d' % ...
+ d' % ...
}
}
}
}
-tocAct =
+tocAct =
#(define-music-function (parser location text) (markup?)
(add-toc-item! 'tocActMarkup text))
@end verbatim
}
}
-tocAct =
+tocAct =
#(define-music-function (parser location text) (markup?)
(add-toc-item! 'tocActMarkup text))
@section Working with input files
@menu
-* Including LilyPond files::
-* Different editions from one source::
-* Text encoding::
-* Displaying LilyPond notation::
+* Including LilyPond files::
+* Different editions from one source::
+* Text encoding::
+* Displaying LilyPond notation::
@end menu
@funindex \include
@cindex including files
-A large project may be split up into separate files. To refer to another
-file, use
+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 @code{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 @code{/} rather than the DOS/Windows @code{\}. For example,
-if @file{stuff.ly} is located one directory higher than the current working
-directory, use
+The line @code{\include "otherfile.ly"} is equivalent to pasting the
+contents of @file{otherfile.ly} into the current file at the place
+where the @code{\include} appears. For example, in a large
+project you might write separate files for each instrument part
+and create a @qq{full score} file which brings together the
+individual instrument files. Normally the included file will
+define a number of variables which then become available
+for use in the full score file. Tagged sections can be
+marked in included files to assist in making them usable in
+different places in a score, see @ref{Different editions from
+one source}.
+
+Files in the current working directory may be referenced by
+specifying just the file name after the @code{\include} command.
+Files in other locations may be included by giving either a full
+path reference or a relative path reference (but use the UNIX
+forward slash, /, rather than the DOS/Windows back slash, \, as the
+directory separator.) For example, if @file{stuff.ly} is located
+one directory higher than the current working directory, use
@example
\include "../stuff.ly"
@end example
+@noindent
+or if the included orchestral parts files are all located in a
+subdirectory called @file{parts} within the current directory, use
-@node Different editions from one source
-@subsection Different editions from one source
+@example
+\include "parts/VI.ly"
+\include "parts/VII.ly"
+... etc
+@end example
-@funindex \tag
-@cindex tag
+Files which are to be included can also contain @code{\include}
+statements of their own. These second-level
+@code{\include} statements are not interpreted until they have
+been brought into the main file, so the file names they specify
+must all be relative to the directory containing the main file,
+not the directory containing the included file.
+
+Files can also be included from a directory in a search path
+specified as an option when invoking LilyPond from the command
+line. The included files are then specified using just their
+file name. For example, to compile @file{main.ly} which includes
+files located in a subdirectory called @file{parts} by this method,
+cd to the directory containing @file{main.ly} and enter
-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.
+@example
+lilypond --include=parts main.ly
+@end example
-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
+and in main.ly write
@example
-c1
+\include "VI.ly"
+\include "VII.ly"
+... etc
+@end example
+
+Files which are to be included in many scores may be placed in
+the LilyPond directory @file{../ly}. (The location of this
+directory is installation-dependent - see @rlearning{Other sources
+of information}). These files can then be included simply by
+naming them on an @code{\include} statement. This is how the
+language-dependent files like @file{english.ly} are included.
+
+LilyPond includes a number of files by default when you start
+the program. These includes are not apparent to the user, but the
+files may be identified by running @code{lilypond --verbose} from
+the command line. This will display a list of paths and files that
+LilyPond uses, along with much other information. Alternatively,
+the more important of these files are discussed in @rlearning{Other
+sources of information}. These files may be edited, but changes to
+them will be lost on installing a new version of LilyPond.
+
+Some simple examples of using @code{\include} are shown in
+@rlearning{Scores and parts}.
+
+@seealso
+Learning Manual:
+@rlearning{Other sources of information},
+@rlearning{Scores and parts}.
+
+@knownissues
+
+If an included file is given a name which is the same as one in
+LilyPond's installation files, LilyPond's file from the
+installation files takes precedence.
+
+
+
+@node Different editions from one source
+@subsection Different editions from one source
+
+Several mechanisms are available to facilitate the generation
+of different versions of a score from the same music source.
+Variables are perhaps most useful for combining lengthy sections
+of music and/or annotation in various ways, while tags are more
+useful for selecting one from several alternative shorter sections
+of music. Whichever method is used, separating the notation from
+the structure of the score will make it easier to change the
+structure while leaving the notation untouched.
+
+@menu
+* Using variables::
+* Using tags::
+@end menu
+
+@node Using variables
+@unnumberedsubsubsec Using variables
+
+@cindex variables, use of
+
+If sections of the music are defined in variables they can be
+reused in different parts of the score, see @rlearning{Organizing
+pieces with variables}. For example, an @notation{a cappella}
+vocal score frequently includes a piano reduction of the parts
+for rehearsal purposes which is identical to the vocal music, so
+the music need be entered only once. Music from two variables
+may be combined on one staff, see @ref{Automatic part combining}.
+Here is an example:
+
+@lilypond[verbatim,quote]
+sopranoMusic = \relative c'' { a4 b c b8( a)}
+altoMusic = \relative g' { e4 e e f }
+tenorMusic = \relative c' { c4 b e d8( c) }
+bassMusic = \relative c' { a4 gis a d, }
+allLyrics = \lyricmode {King of glo -- ry }
<<
- \tag #'part <<
- R1 \\
- @{
- \set fontSize = #-1
- c4_"cue" f2 g4 @}
+ \new Staff = "Soprano" \sopranoMusic
+ \new Lyrics \allLyrics
+ \new Staff = "Alto" \altoMusic
+ \new Lyrics \allLyrics
+ \new Staff = "Tenor" {
+ \clef "treble_8"
+ \tenorMusic
+ }
+ \new Lyrics \allLyrics
+ \new Staff = "Bass" {
+ \clef "bass"
+ \bassMusic
+ }
+ \new Lyrics \allLyrics
+ \new PianoStaff <<
+ \new Staff = "RH" {
+ \set Staff.printPartCombineTexts = ##f
+ \partcombine
+ \sopranoMusic
+ \altoMusic
+ }
+ \new Staff = "LH" {
+ \set Staff.printPartCombineTexts = ##f
+ \clef "bass"
+ \partcombine
+ \tenorMusic
+ \bassMusic
+ }
>>
- \tag #'score R1
>>
-c1
-@end example
+@end lilypond
+
+Separate scores showing just the vocal parts or just the piano
+part can be produced by changing just the structural statements,
+leaving the musical notation unchanged.
+
+For lengthy scores, the variable definitions may be placed in
+separate files which are then included, see @ref{Including
+LilyPond files}.
+
+@node Using tags
+@unnumberedsubsubsec Using tags
+
+@funindex \tag
+@funindex \keepWithTag
+@funindex \removeWithTag
+@cindex tag
+@cindex keep tagged music
+@cindex remove tagged music
+
+The @code{\tag #'@var{partA}} command marks a music expression
+with the name @var{partA}.
+Expressions tagged in this way can be selected or filtered out by
+name later, using either @code{\keepWithTag #'@var{name}} or
+@code{\removeWithTag #'@var{name}}. The result of applying these filters
+to tagged music is as follows:
+@multitable @columnfractions .5 .5
+@headitem Filter
+ @tab Result
+@item
+Tagged music preceded by @code{\keepWithTag #'@var{name}}
+ @tab Untagged music and music tagged with @var{name} is included;
+ music tagged with any other tag name is excluded.
+@item
+Tagged music preceded by @code{\removeWithTag #'@var{name}}
+@tab Untagged music and music tagged with any tag name other than
+ @var{name} is included; music tagged with @var{name} is
+ excluded.
+@item
+Tagged music not preceded by either @code{\keepWithTag} or
+@code{\removeWithTag}
+@tab All tagged and untagged music is included.
+@end multitable
+
+The arguments of the @code{\tag}, @code{\keepWithTag} and
+@code{\removeWithTag} commands should be a symbol
+(such as @code{#'score} or @code{#'part}), followed
+by a music expression.
+
+In the following example, we see two versions of a piece of music,
+one showing trills with the usual notation, and one with trills
+explicitly expanded:
+
+@lilypond[verbatim,quote]
+music = \relative g' {
+ g8. c32 d
+ \tag #'trills {d8.\trill }
+ \tag #'expand {\repeat unfold 3 {e32 d} }
+ c32 d
+ }
+
+\score {
+ \keepWithTag #'trills \music
+}
+\score {
+ \keepWithTag #'expand \music
+}
+@end lilypond
+
+@noindent
+Alternatively, it is sometimes easier to exclude sections of music:
+
+@lilypond[verbatim,quote]
+music = \relative g' {
+ g8. c32 d
+ \tag #'trills {d8.\trill }
+ \tag #'expand {\repeat unfold 3 {e32 d} }
+ c32 d
+ }
+
+\score {
+ \removeWithTag #'expand
+ \music
+}
+\score {
+ \removeWithTag #'trills
+ \music
+}
+@end lilypond
+
+Tagged filtering can be applied to articulations, texts, etc. by
+prepending
-The same can be applied to articulations, texts, etc.: they are
-made by prepending
@example
--\tag #@var{your-tag}
+-\tag #'@var{your-tag}
@end example
-to an articulation, for example,
+
+to an articulation. For example, this would define a note with a
+conditional fingering indication and a note with a conditional
+annotation:
+
@example
-c1-\tag #'part ^4
+c1-\tag #'finger ^4
+c1-\tag #'warn ^"Watch!"
@end example
-This defines a note with a conditional fingering indication.
+Multiple tags may be placed on expressions with multiple
+@code{\tag} entries:
-@cindex keepWithTag
-@cindex removeWithTag
-By applying the @code{\keepWithTag} and @code{\removeWithTag}
-commands, tagged expressions can be filtered. For example,
-@example
+@lilypond[quote,verbatim]
+music = \relative c'' {
+ \tag #'a \tag #'both { a a a a }
+ \tag #'b \tag #'both { b b b b }
+}
<<
- @var{the music}
- \keepWithTag #'score @var{the music}
- \keepWithTag #'part @var{the music}
+\keepWithTag #'a \music
+\keepWithTag #'b \music
+\keepWithTag #'both \music
>>
-@end example
-would yield
+@end lilypond
-@c FIXME: broken
-@c @lilypondfile[ragged-right,quote]{tag-filter.ly}
+Multiple @code{\removeWithTag} filters may be applied to a single
+music expression to remove several differently named tagged sections:
-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,
+@lilypond[verbatim,quote]
+music = \relative c'' {
+\tag #'A { a a a a }
+\tag #'B { b b b b }
+\tag #'C { c c c c }
+\tag #'D { d d d d }
+}
+{
+\removeWithTag #'B
+\removeWithTag #'C
+\music
+}
+@end lilypond
-@example
- \tag #'original-part \tag #'transposed-part @dots{}
-@end example
+Two or more @code{\keepWithTag} filters applied to a single music
+expression will cause @emph{all} tagged sections to be removed, as
+the first filter will remove all tagged sections except the one
+named, and the second filter will remove even that tagged section.
+
+@seealso
+
+Learning Manual:
+@rlearning{Organizing pieces with variables}.
+
+Notation Reference:
+@ref{Automatic part combining},
+@ref{Including LilyPond files}.
+@ignore
+@c This warning is more general than this placement implies.
+@c Rests are not merged whether or not they come from tagged sections.
+@c Should be deleted? -td
@knownissues
-Multiple rests are not merged if you create the score with both tagged
-sections.
+Multiple rests are not merged if you create a score with more
+than one tagged section at the same place.
+@end ignore
@node Text encoding
@subsection Text encoding
@section Controlling output
@menu
-* Extracting fragments of notation::
-* Skipping corrected music::
+* Extracting fragments of music::
+* Skipping corrected music::
@end menu
-@node Extracting fragments of notation
-@subsection Extracting fragments of notation
+@node Extracting fragments of music
+@subsection Extracting fragments of music
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
voices and staves, saving even more time.
+
+@node MIDI output
+@section MIDI output
+
+@cindex Sound
+@cindex MIDI
+
+MIDI (Musical Instrument Digital Interface) is a standard for
+connecting and controlling digital instruments. A MIDI file is a
+series of notes in a number of tracks. It is not an actual
+sound file; you need special software to translate between the
+series of notes and actual sounds.
+
+Pieces of music can be converted to MIDI files, so you can listen to
+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.
+
+@knownissues
+
+Many musically interesting effects, such as swing, articulation,
+slurring, etc., are not translated to midi.
+
+The midi output allocates a channel for each staff, and one for global
+settings. Therefore the midi file should not have more than 15 staves
+(or 14 if you do not use drums). Other staves will remain silent.
+
+Not all midi players correctly handle tempo changes in the midi
+output. Players that are known to work include
+@uref{http://@/timidity@/.sourceforge@/.net/,timidity}.
+
+@menu
+* Creating MIDI files::
+* MIDI block::
+* MIDI instrument names::
+* What goes into the MIDI? FIXME::
+* other midi::
+@end menu
+
+@node Creating MIDI files
+@subsection Creating MIDI files
+
+To create a MIDI from a music piece of music, add a @code{\midi} block
+to a score, for example,
+
+@example
+\score @{
+ @var{...music...}
+ \midi @{
+ \context @{
+ \Score
+ tempoWholesPerMinute = #(ly:make-moment 72 4)
+ @}
+ @}
+@}
+@end 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
+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
+of 90 dotted quarter notes per minute can be specified as 270 eighth
+notes per minute
+
+@example
+tempoWholesPerMinute = #(ly:make-moment 270 8)
+@end example
+
+If there is a @code{\midi} command in a @code{\score}, only MIDI will
+be produced. When notation is needed too, a @code{\layout} block must
+be added
+
+@example
+\score @{
+ @var{...music...}
+ \midi @{ @}
+ \layout @{ @}
+@}
+@end example
+@cindex layout block
+
+
+
+Ties, dynamics, and tempo changes are interpreted. Dynamic marks,
+crescendi and decrescendi translate into MIDI volume levels. Dynamic
+marks translate to a fixed fraction of the available MIDI volume
+range, crescendi and decrescendi make the volume vary linearly between
+their two extremes. The fractions can be adjusted by
+@code{dynamicAbsoluteVolumeFunction} in @rinternals{Voice} context.
+For each type of MIDI instrument, a volume range can be defined. This
+gives a basic equalizer control, which can enhance the quality of
+the MIDI output remarkably. The equalizer can be controlled by
+setting @code{instrumentEqualizer}, or by setting
+
+@example
+\set Staff.midiMinimumVolume = #0.2
+\set Staff.midiMaximumVolume = #0.8
+@end example
+
+To remove dynamics from the MIDI output, insert the following lines
+in the @code{\midi@{@}} section.
+
+@example
+\midi @{
+ ...
+ \context @{
+ \Voice
+ \remove "Dynamic_performer"
+ @}
+@}
+@end example
+
+
+@knownissues
+
+Unterminated (de)crescendos will not render properly in the midi file,
+resulting in silent passages of music. The workaround is to explicitly
+terminate the (de)crescendo. For example,
+
+@example
+@{ a\< b c d\f @}
+@end example
+
+@noindent
+will not work properly but
+
+@example
+@{ a\< b c d\!\f @}
+@end example
+
+@noindent
+will.
+
+
+MIDI output is only created when the @code{\midi} command is within
+a @code{\score} block. If you put it within an explicitly instantiated
+context ( i.e. @code{\new Score} ) the file will fail. To solve this,
+enclose the @code{\new Score} and the @code{\midi} in a @code{\score} block.
+
+@example
+\score @{
+ \new Score @{ @dots{}notes@dots{} @}
+ \midi
+@}
+@end example
+
+
+@node MIDI block
+@subsection MIDI block
+@cindex MIDI block
+
+
+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
+context definitions.
+
+
+@cindex context definition
+
+Context definitions follow precisely the same syntax as within the
+\layout block. Translation modules for sound are called performers.
+The contexts for MIDI output are defined in @file{ly/@/performer@/-init@/.ly}.
+
+
+@node MIDI instrument names
+@subsection MIDI instrument names
+
+@cindex instrument names
+@funindex Staff.midiInstrument
+
+The MIDI instrument name is set by the @code{Staff.midiInstrument}
+property. The instrument name should be chosen from the list in
+@ref{MIDI instruments}.
+
+@example
+\set Staff.midiInstrument = "glockenspiel"
+@var{...notes...}
+@end example
+
+If the selected instrument does not exactly match an instrument from
+the list of MIDI instruments, the Grand Piano (@code{"acoustic grand"})
+instrument is used.
+
+
+@node What goes into the MIDI? FIXME
+@subsection What goes into the MIDI? FIXME
+
+@menu
+* Repeats and MIDI::
+@end menu
+
+@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
+
+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
+\score @{
+ @var{..music..}
+ \layout @{ .. @}
+@}
+\score @{
+ \unfoldRepeats @var{..music..}
+ \midi @{ .. @}
+@}
+@end example
+
+
+@node other midi
+@subsection other midi
+
+Micro tones are also exported to the MIDI file.
+
+Figured bass has no effect on MIDI.
+