From: James Lowe Date: Tue, 24 Dec 2013 18:56:29 +0000 (+0000) Subject: Doc: NR - Tidy up of 3.5.1 and 3.5.3 - MIDI X-Git-Tag: release/2.18.2-1~8^2~18 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=18f6f13f39b25f28679fe2073763151008ca3366;p=lilypond.git Doc: NR - Tidy up of 3.5.1 and 3.5.3 - MIDI Seemed some of this information was repeeated (and so redundant) with additional grammar and sentence structure changes and more consistent @examples. No new technical information added. (cherry picked from commit d6ec297c78a548291854efe5573388cd4e2c4d72) --- diff --git a/Documentation/notation/input.itely b/Documentation/notation/input.itely index 1617a39395..0663c9c617 100644 --- a/Documentation/notation/input.itely +++ b/Documentation/notation/input.itely @@ -2646,7 +2646,6 @@ score contains more than 15 staves, MIDI channels will be reused. @menu * Creating MIDI files:: * MIDI Instruments:: -* MIDI block:: * What goes into the MIDI output?:: * Repeats in MIDI:: * Controlling MIDI dynamics:: @@ -2657,64 +2656,78 @@ score contains more than 15 staves, MIDI channels will be reused. @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, +@cindex MIDI block +To create a MIDI output file from a LilyPond file, insert a @code{\midi} +block inside a @code{\score} block; @example \score @{ @var{@dots{}music@dots{}} + \layout @{ @} \midi @{ @} @} @end example -If there is a @code{\midi} block in a @code{\score} with no -@code{\layout} block, only MIDI output will be produced. When -notation is needed too, a @code{\layout} block must also be -present. +If there is @emph{only} a @code{\midi} block in a @code{\score} (i.e. +without any @code{\layout} block), then @emph{only} MIDI output will be +produced. No musical notation will be typeset. @example \score @{ @var{@dots{}music@dots{}} \midi @{ @} - \layout @{ @} @} @end example -Pitches, rhythms, ties, dynamics, and tempo changes are interpreted -and translated correctly to the MIDI output. 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 effect of dynamic markings -on the MIDI output can be removed completely, see @ref{MIDI block}. - -The initial tempo and later tempo changes can be specified -with the @code{\tempo} command within the music notation. These -are reflected in tempo changes in the MIDI output. This command -will normally result in the metronome mark being printed, but this -can be suppressed, see @ref{Metronome marks}. An alternative way -of specifying the initial or overall MIDI tempo is described below, -see @ref{MIDI block}. - -Due to some limitations on Windows, the default extension for -MIDI files on Windows is @code{.mid}. Other operating systems still -use the extension @code{.midi}. If a different extension is preferred, -insert the following line at the top-level of the input file, -before the start of any @code{\book}, @code{\bookpart} or @code{\score} blocks: +Dynamics, pitches, rhythms, tempo changes and ties are all interpreted +and translated correctly. Dynamic @q{marks} translate into volume +levels with a @q{fixed fraction} of the available MIDI volume range; +crescendi and decrescendi make the volume vary linearly between their +two extremes. + +All @code{\tempo} indications, including all subsequent tempo changes, +specified within the music notation will be reflected in the MIDI +output. + +Usually it is enough to leave the @code{\midi} block empty, but it +can contain context rearrangements, new context definitions or code +to set the values of properties. Here the tempo is set to 72 +quarter-note beats per minute, but @emph{only} for the MIDI's +audio playback. @example -#(ly:set-option 'midi-extension "midi") +\score @{ + @var{@dots{}music@dots{}} + \midi @{ + \tempo 4 = 72 + @} +@} @end example -The line above will set the default extension for MIDI files to -@code{.midi}. +Note that @code{\tempo} is actually a command for setting properties +during the interpretation of the music and in the context of output definitions, like a @code{\midi} block, is reinterpreted as if it +were a context modification. -Alternatively, this option can also be supplied on the command line: +@cindex MIDI context definitions + +Context definitions follow the same syntax as those in a @code{\layout} +block; @example -lilypond … -dmidi-extension=midi lilyFile.ly +\score @{ + @var{@dots{}music@dots{}} + \midi @{ + \context @{ + \Voice + \remove "Dynamic_performer" + @} + @} +@} @end example +removes the effect of dynamics from the MIDI output. Translation +modules for sound are called @q{performers}. + @snippets @@ -2723,34 +2736,36 @@ lilypond … -dmidi-extension=midi lilyFile.ly @knownissues -@c In 2.11 the following no longer seems to be a problem -td -@ignore -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, +Some operating systems require a @emph{specific} file extension for +MIDI files. If a different extension is preferred insert the following +line at the top-level of the input file, before the start of any +@code{\book}, @code{\bookpart} or @code{\score} blocks; @example -@{ a4\< b c d\f @} +#(ly:set-option 'midi-extension "mid") @end example -@noindent -will not work properly but +This will set the default extension for MIDI files to @code{.mid}. + +Alternatively, an option can be supplied on the command line: @example -@{ a4\< b c d\!\f @} +lilypond -dmidi-extension=mid MyFile.ly @end example -@noindent -will. -@end ignore - Changes in the MIDI volume take place only on starting a note, so -crescendi and decrescendi cannot affect the volume of a -single note. +crescendi and decrescendi cannot affect the volume of a single note. + +Some MIDI players may not always correctly handle tempo changes in the +midi output. + +@seealso +Installed Files: +@file{../ly/performer-init.ly}. + +Learning Manual: +@rlearning{Other sources of information}. -Not all midi players correctly handle tempo changes in the midi -output. Players that are known to work include MS Windows Media -Player and @uref{http://@/timidity@/.sourceforge@/.net/,timidity}. @node MIDI Instruments @subsection MIDI Instruments @@ -2780,63 +2795,6 @@ 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 MIDI block -@subsection MIDI block -@cindex MIDI block - -A @code{\midi} block must appear within a score block if MIDI output -is required. It is analogous to the layout block, but somewhat -simpler. Often, the @code{\midi} block is left empty, but it -can contain context rearrangements, new context definitions or code -to set the values of properties. For example, the following will -set the initial tempo exported to a MIDI file without causing a tempo -indication to be printed: - -@example -\score @{ - @var{@dots{}music@dots{}} - \midi @{ - \tempo 4 = 72 - @} -@} -@end example - -In this example the tempo is set to 72 quarter note -beats per minute. @code{\tempo} is actually a music command for -setting properties during the interpretation of music: in the -context of output definitions like a @code{\midi} block, as a matter of -courtesy those are reinterpreted as if they were context modifications. - -@cindex MIDI context definitions - -Context definitions follow precisely the same syntax as those -within a @code{\layout} block. Translation modules for sound are -called performers. The contexts for MIDI output are defined in -@file{../ly/performer-init.ly}, -see @rlearning{Other sources of information}. -For example, to remove the effect of dynamics -from the MIDI output, insert the following lines in the -@code{\midi@{ @}} block. - -@example -\midi @{ - @dots{} - \context @{ - \Voice - \remove "Dynamic_performer" - @} -@} -@end example - -MIDI output is created only when a @code{\midi} block is included -within a score block defined with a @code{\score} command. - -@example -\score @{ - @{ @dots{}notes@dots{} @} - \midi @{ @} -@} -@end example @node What goes into the MIDI output? @subsection What goes into the MIDI output?