popular modern editors have UTF-8 support, for example, vim, Emacs,
jEdit, and GEdit do. All MS Windows systems later than NT use
Unicode as their native character encoding, so even Notepad can
-edit and save a file in UTF-8 format. A more functional
+edit and save a file in UTF-8 format. A more functional
alternative for Windows is BabelPad.
If a LilyPond input file containing a non-ASCII character is not
Here is an example showing Cyrillic, Hebrew and Portuguese
text:
-@lilypond[verbatim,quote]
+@lilypond[quote]
+%c No verbatim here as the code does not display correctly in PDF
% Cyrillic
bulgarian = \lyricmode {
Жълтата дюля беше щастлива, че пухът, който цъфна, замръзна като гьон.
@menu
* Creating MIDI files::
-* What goes into the MIDI output?::
* MIDI block::
-* MIDI instrument names::
+* What goes into the MIDI output?::
* Repeats in MIDI::
* Controlling MIDI dynamics::
-* Microtones in MIDI::
@end menu
@node Creating MIDI files
@subsection Creating MIDI files
-To create a MIDI output file from a LilyPond input file, add a @code{\midi} block
-to a score, for example,
+To create a MIDI output file from a LilyPond input file, add a
+@code{\midi} block to a score, for example,
@example
\score @{
of specifying the inital or overall MIDI tempo is described below,
see @ref{MIDI block}.
+@unnumberedsubsubsec Instrument names
+
+@cindex instrument names
+@funindex Staff.midiInstrument
+
+The MIDI instrument to be used is specified by setting the
+@code{Staff.midiInstrument} property to the instrument name.
+The name should be chosen from the list in @ref{MIDI instruments}.
+
+@example
+\new Staff @{
+ \set Staff.midiInstrument = "glockenspiel"
+ @var{...notes...}
+@}
+@end example
+
+@example
+\new Staff \with @{midiInstrument = "cello"@} @{
+ @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.
+
+
@snippets
@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
output. Players that are known to work include MS Windows Media
Player and @uref{http://@/timidity@/.sourceforge@/.net/,timidity}.
-@node What goes into the MIDI output?
-@subsection What goes into the MIDI output?
-
-@c TODO Check grace notes - timing is suspect?
-
-@unnumberedsubsubsec Supported in MIDI
-
-The following items of notation are reflected in the MIDI output:
-
-@itemize
-@item Pitches
-@item Microtones
-@item Chords entered as chord names
-@item Rhythms entered as note durations, including tuplets
-@item Tremolos entered without @q{@code{:}[@var{number}]}
-@item Ties
-@item Dynamic marks
-@item Crescendi, decrescendi over multiple notes
-@item Tempo changes entered with a tempo marking
-@end itemize
-
-@unnumberedsubsubsec Unsupported in MIDI
-
-The following items of notation have no effect on the MIDI output:
-
-@itemize
-@item Rhythms entered as annotations, e.g. swing
-@item Tempo changes entered as annotations with no tempo marking
-@item Staccato and other articulations and ornamentations
-@item Slurs and Phrasing slurs
-@item Crescendi, decrescendi over a single note
-@item Tremolos entered with @q{@code{:}[@var{number}]}
-@item Figured bass
-@c TODO Check Lyrics
-@item Lyrics
-@end itemize
-
-
@node MIDI block
@subsection MIDI block
@cindex MIDI block
@}
@end example
-@node MIDI instrument names
-@subsection MIDI instrument names
+@node What goes into the MIDI output?
+@subsection What goes into the MIDI output?
-@cindex instrument names
-@funindex Staff.midiInstrument
+@c TODO Check grace notes - timing is suspect?
-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}.
+@unnumberedsubsubsec Supported in MIDI
-@example
-\set Staff.midiInstrument = "glockenspiel"
-@var{...notes...}
-@end example
+@cindex Pitches in MIDI
+@cindex MIDI, Pitches
+@cindex Quarter tones in MIDI
+@cindex MIDI, quarter tones
+@cindex Microtones in MIDI
+@cindex MIDI, microtones
+@cindex Chord names in MIDI
+@cindex MIDI, chord names
+@cindex Rhythms in MIDI
+@cindex MIDI, Rhythms
+@c TODO etc
-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.
+The following items of notation are reflected in the MIDI output:
+
+@itemize
+@item Pitches
+@item Quarter tones (See @ref{Accidentals}. Rendering needs a
+player that supports pitch bend.)
+@item Chords entered as chord names
+@item Rhythms entered as note durations, including tuplets
+@item Tremolos entered without @q{@code{:}[@var{number}]}
+@item Ties
+@item Dynamic marks
+@item Crescendi, decrescendi over multiple notes
+@item Tempo changes entered with a tempo marking
+@end itemize
+
+@unnumberedsubsubsec Unsupported in MIDI
+
+@c TODO index as above
+
+The following items of notation have no effect on the MIDI output:
+
+@itemize
+@item Rhythms entered as annotations, e.g. swing
+@item Tempo changes entered as annotations with no tempo marking
+@item Staccato and other articulations and ornamentations
+@item Slurs and Phrasing slurs
+@item Crescendi, decrescendi over a single note
+@item Tremolos entered with @q{@code{:}[@var{number}]}
+@item Figured bass
+@c TODO Check Lyrics
+@item Lyrics
+@end itemize
@node Repeats in MIDI
required fraction, and setting
@code{Score.dynamicAbsoluteVolumeFunction} to this function.
-For example, if a @notation{rinforzando} dynamic marking, rfz,
-has been defined with @code{make-dynamic-script}, this will not
+For example, if a @notation{rinforzando} dynamic marking,
+@code{\rfz}, is required, this will not by default
have any effect on the MIDI volume, as this dynamic marking is not
-included in the default set. The following example shows how the
-MIDI volume for this new dynamic marking can be added. The Scheme
+included in the default set. Similarly, if a new dynamic marking
+has been defined with @code{make-dynamic-script} that too will not
+be included in the default set. The following example shows how the
+MIDI volume for such dynamic markings might be added. The Scheme
function sets the fraction to 0.9 if a dynamic mark of rfz is
found, or calls the default function otherwise.
0.9
(default-dynamic-absolute-volume dynamic)))
-rfz = #(make-dynamic-script "rfz")
-
\score {
\new Staff {
\set Staff.midiInstrument = "cello"
}
@end lilypond
+@ignore
+@c Delete when satisfied this is adequately covered elsewhere -td
+
@node Microtones in MIDI
@subsection Microtones in MIDI
\midi {}
}
@end lilypond
-
+@end ignore
* About the Snippet List (SL):: this is a collection of short LilyPond examples.
-* About the Internals Reference (IR):: this document gives information about LilyPond internal programming information, which is required for constructing tweaks.
+* About the Internals Reference (IR):: this document gives reference information about LilyPond's internal structures, which is required for constructing tweaks.
* Other documentation:: there are a few other portions of the documentation, such as News items and the mailist archives.
@ref{Top,LilyPond Snippet List,,lilypond-snippets}: this shows a
selected set of LilyPond snippets from the
@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}
-(LSR). It is in the public domain.
+(LSR). All the snippets are in the public domain.
Please note that this document is not an exact subset of LSR. LSR
is running a stable LilyPond version, so any snippet which
@ref{Top,Internals Reference,,lilypond-internals}: this is a set
of heavily cross linked HTML pages which document the nitty-gritty
details of each and every LilyPond class, object, and function.
-It is produced directly from the formatting definitions used.
+It is produced directly from the formatting definitions in the
+source code.
Almost all formatting functionality that is used internally is
-available directly to the user. For example, all variables that
+available directly to the user. For example, most variables that
control thickness values, distances, etc., can be changed in input
files. There are a huge number of formatting options, and all of
-them are described in this document. Each section of the notation
-manual has a @b{See also} subsection, which refers to the
+them are described in this document. Each section of the Notation
+Reference has a @b{See also} subsection, which refers to the
generated documentation. In the HTML document, these subsections
have clickable links.
@code{#f}
@item Vector
@tab A list of three items enclosed in brackets and preceded
-by a hash sign, @code{#}.
- @tab @code{#(#t #t #f)}
+by apostrophe-hash, @code{'#}.
+ @tab @code{'#(#t #t #f)}
@end multitable
@node Appearance of objects
These control respectively whether bar lines are printed at
the end of a line, in the middle of lines, and at the beginning
of lines. For our example we want all bar lines to be suppressed,
-so the value we need is @code{#(#f #f #f)}.
+so the value we need is @code{'#(#f #f #f)}.
Let's try that, remembering
to include the @code{Staff} context. Note also that in writing
-this value we have two hash signs before the opening bracket.
-One is required as part of the value to introduce a vector,
-and one is required, as always, to precede the value itself in
-the @code{\override} command.
+this value we have @code{#'#} before the opening bracket.
+The @code{'#} is required as part of the value to introduce a
+vector, and the first @code{#} is required, as always, to precede
+the value itself in the @code{\override} command.
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{