]> git.donarmstrong.com Git - lilypond.git/commitdiff
* scm/part-combiner.scm: skip name string. Fixes segfault problem.
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Sat, 21 Aug 2004 09:32:58 +0000 (09:32 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Sat, 21 Aug 2004 09:32:58 +0000 (09:32 +0000)
* Documentation/user/sound-output.texi (Sound): new file. Move all
MIDI related information.

13 files changed:
ChangeLog
Documentation/user/changing-defaults.itely
Documentation/user/introduction.itely
Documentation/user/lilypond-book.itely
Documentation/user/lilypond.tely
Documentation/user/notation.itely
Documentation/user/preface.itely
Documentation/user/sound-output.texi [new file with mode: 0644]
Documentation/user/tutorial.itely
lily/accidental.cc
lily/quote-iterator.cc
scm/define-grobs.scm
scm/part-combiner.scm

index b18ef134285d95d6c9a4ae752ee6f8bd0eadc25a..c0cbe51868acee5d2fc9f2fabf46feaaedf1bd60 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2004-08-21  Han-Wen Nienhuys   <hanwen@xs4all.nl>
+
+       * scm/part-combiner.scm: skip name string. Fixes segfault problem.
+
+       * Documentation/user/sound-output.texi (Sound): new file. Move all
+       MIDI related information.
+
 2004-08-20  Han-Wen Nienhuys   <hanwen@xs4all.nl>
 
        * lily/script-engraver.cc (acknowledge_grob): only take into
@@ -21,7 +28,8 @@
 
 2004-08-19  Erik Sandberg <ersa9195@student.uu.se>
 
-       * ly/spanners-init.ly: Correct meanings of setTextDecresc/Dim, added setHairpinDecresc/Dim
+       * ly/spanners-init.ly: Correct meanings of setTextDecresc/Dim,
+       added setHairpinDecresc/Dim
 
 2004-08-19  Jan Nieuwenhuizen  <janneke@gnu.org>
 
index 907e3140cc2d0f3e9c4b067dcb9aeaee9bb5f266..e4410a521db4ee90aebdcc0a832c8ab6bce85ba9 100644 (file)
@@ -2234,6 +2234,64 @@ that line. The result is similar to formatting paragraphs. In a
 paragraph, the last line simply takes its natural length.
 
 
+@node Multiple movements
+@subsection Multiple movements
+
+@cindex bibliographic information
+@cindex titles
+@cindex composer
+@cindex Engraved by LilyPond
+
+A document may contains multiple pieces of music. 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
+
+The movements are combined together to  
+@code{\book} block is used to group the individual movements.
+
+@example
+\book @{
+  \score @{
+     @var{..}
+  @}
+  \score @{
+     @var{..}
+  @}
+@}
+@end example
+
+
+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.
+
+@cindex Engraved by LilyPond
+@cindex signature line
+
+@example 
+\book @{
+  \header @{
+    title = "Eight miniatures" 
+    composer = "Igor Stravinsky"
+  @}
+  \score @{
+    @dots{}
+    \header @{ piece = "Romanze" @}
+  @}
+  \score @{
+    @dots{}
+    \header @{ piece = "Menuetto" @}
+  @}
+@}
+
 @node Titling
 @subsection Titling
 
@@ -2439,7 +2497,9 @@ field from the @code{\header} block on a line.
 The default footer is empty, except for the first page, where it the
 @code{copyright} field from @code{\header} is inserted, and the last
 page, where @code{tagline} from @code{\header} is added. The default
-tagline is ``Engraved by LilyPond (@var{version})''.
+tagline is ``Engraved by LilyPond (@var{version})''.@footnote{Nicely
+printed parts are good PR for us, so please leave the tagline if you
+can.}
 
 The header and footer are created by the functions @code{make-footer}
 and @code{make-header}, defined in @code{\bookpaper}. The default
index a1970ae595a00546a1d99a2afa78c05cd9e233d6..171bd3a028c70b16a346887f28363997b10ea504 100644 (file)
@@ -4,11 +4,6 @@
 @node Introduction
 @chapter Introduction
 
-LilyPond is a system for formatting music prettily.  This chapter
-discusses the backgrounds of LilyPond.  It explains the problem of
-printing music with computers, and our approach to solving those
-problems.
-
 
 @menu
 * Engraving::
@@ -37,11 +32,11 @@ be a master engraver, and another five years of experience were
 necessary to become truly skilled.
 
 Nowadays, all newly printed music is produced with computers.  This
-has obvious advantages; prints are cheaper to make, editorial work can
-be delivered by email.  Unfortunately, the pervasive use of computers
-has also decreased the graphical quality of scores.  Computer
-printouts have a bland, mechanical look, which makes them unpleasant
-to play from.
+has obvious advantages; prints are cheaper to make, and editorial work
+can be delivered by email.  Unfortunately, the pervasive use of
+computers has also decreased the graphical quality of scores.
+Computer printouts have a bland, mechanical look, which makes them
+unpleasant to play from.
 
 
 @c introduce illustrating aspects of engraving, font...
@@ -142,11 +137,11 @@ in the last two measures form down-stem/up-stem clumps of notes.
 @cindex typography
 
 Musicians are usually more absorbed with performing than with studying
-the looks of piece of music; nitpicking about typographical details
+the looks of piece of music, so nitpicking about typographical details
 may seem academical.  But it is not.  In larger pieces with monotonous
 rhythms, spacing corrections lead to subtle variations in the layout
 of every line, giving each one a distinct visual signature.  Without
-this signature all lines would look the same, they become like a
+this signature all lines would look the same, and they become like a
 labyrinth.  If the musician looks away once or has a lapse in his
 concentration, he will be lost on the page.
 @c he/she
@@ -165,14 +160,14 @@ less attention they need for reading, the more they can focus on
 playing itself.  In other words, better typography translates to better
 performances.
 
-Hopefully, these examples also demonstrate that music typography is an
-art that is subtle and complex, and to produce it requires
-considerable expertise, which musicians usually do not have.  LilyPond
-is our effort to bring the graphical excellence of hand-engraved music
-to the computer age, and make it available to normal musicians.  We
-have tuned our algorithms, font-designs, and program settings to
-produce prints that match the quality of the old editions we love to
-see and love to play from.
+These examples demonstrate that music typography is an art that is
+subtle and complex, and that producing it requires considerable
+expertise, which musicians usually do not have.  LilyPond is our
+effort to bring the graphical excellence of hand-engraved music to the
+computer age, and make it available to normal musicians.  We have
+tuned our algorithms, font-designs, and program settings to produce
+prints that match the quality of the old editions we love to see and
+love to play from.
 
 
 
@@ -185,7 +180,7 @@ ten years to become true masters, how could we simple hackers ever
 write a program to take over their jobs?
 
 The answer is: we cannot.  Typography relies on human judgment of
-appearance, so people cannot be replaced ultimately.  However, much of
+appearance, so people cannot be replaced completely.  However, much of
 the dull work can be automated.  If LilyPond solves most of the common
 situations correctly, this will be a huge improvement over existing
 software.  The remaining cases can be tuned by hand.  Over the course
@@ -215,9 +210,9 @@ method of grouping rules that do not match well with how music
 notation works.
 @end itemize
 
-These problems have been addressed by integrating the GUILE
-interpreter for the Scheme programming language and rewriting parts of
-LilyPond in Scheme.  The new, flexible formatting is built around the
+These problems have been addressed by integrating an interpreter for
+the Scheme programming language and rewriting parts of LilyPond in
+Scheme.  The current formatting architecture is built around the
 notion of graphical objects, described by Scheme variables and
 functions.  This architecture encompasses formatting rules,
 typographical style and individual formatting decisions.  The user has
@@ -230,7 +225,7 @@ with accents and arpeggio.  In the first chord, the graphical objects
 have all directions down (or left).  The second chord has all
 directions up (right).
 
-@lilypond[quote,raggedright,relative=1]
+@lilypond[quote,raggedright,relative=1,fragment]
 \new Score \with {
   \override SpacingSpanner #'spacing-increment = #3
   \override TimeSignature #'transparent = ##t
@@ -241,12 +236,14 @@ directions up (right).
 }
 @end lilypond
 
+@noindent
 The process of formatting a score consists of reading and writing the
 variables of graphical objects.
 
-Some variables have a preset value.  For example, the thickness of many
-lines---a characteristic of typographical style---are preset
-variables.  Changing them gives a different typographical impression.
+Some variables have a preset value.  For example, the thickness of
+many lines---a characteristic of typographical style---are not fixed.
+They are variables, and altering them gives a different typographical
+impression.
 
 @lilypond[quote,raggedright]
 fragment =  {
@@ -268,10 +265,11 @@ fragment =  {
 @end lilypond
 
 Formatting rules are also preset variables: each object has variables
-containing procedures.  These procedures perform the actual formatting,
-and by substituting different ones, we can change behavior.  In the
-following example, the rule which note head objects use to produce
-their symbol is changed during the music fragment.
+containing procedures.  These procedures perform the actual
+formatting, and by substituting different ones, we can change the
+appearance of objects.  In the following example, the rule which note
+head objects use to produce their symbol is changed during the music
+fragment.
 
 @lilypond[quote,raggedright]
 #(define (mc-squared grob orig current)
@@ -318,12 +316,12 @@ their symbol is changed during the music fragment.
 @cindex engraving
 @cindex typography
 
-The formatting process in LilyPond decides where to place
+The formatting process decides where to place
 symbols.  However, this can only be done once it is decided @emph{what}
 symbols should be printed, in other words what notation to use.
 
 Common music notation is a system of recording music that has evolved
-over the past 1000 years.  The form that is now in common use, dates
+over the past 1000 years.  The form that is now in common use dates
 from the early renaissance.  Although the basic form (i.e., note heads on a
 5-line staff) has not changed, the details still change to express the
 innovations of contemporary notation.  Hence, it encompasses some 500
@@ -331,13 +329,13 @@ years of music.  Its applications range from monophonic melodies to
 monstrous counterpoint for large orchestras.
 
 How can we get a grip on such a many-headed beast, and force it into
-the confines of a computer program?  We have broken up the problem of
-notation (as opposed to engraving, i.e., typography) into digestible
-and programmable chunks: every type of symbol is handled by a separate
-module, a so-called plug-in.  Each plug-in is completely modular and
-independent, so each can be developed and improved separately.  People
-who translate musical ideas to graphic symbols are called copyists or
-engravers, so by analogy, each plug-in is called @code{engraver}.
+the confines of a computer program?  Our solution is break up the
+problem of notation (as opposed to engraving, i.e., typography) into
+digestible and programmable chunks: every type of symbol is handled by
+a separate module, a so-called plug-in.  Each plug-in is completely
+modular and independent, so each can be developed and improved
+separately.  Such plug-ins are called @code{engraver}, by analogy with
+craftsmen who translate musical ideas to graphic symbols.
 
 In the following example, we see how we start out with a plug-in for
 note heads, the @code{Note_heads_engraver}.
@@ -485,7 +483,7 @@ should be grouped.  The engravers for note heads, stems, slurs, etc., go
 into a group called `Voice context,' while the engravers for key,
 accidental, bar, etc., go into a group called `Staff context.'  In the
 case of polyphony, a single Staff context contains more than one Voice
-context.  In polyphonic notation, many voices can share a staff.
+context.  
 Similarly, more Staff contexts can be put into a single Score context.
 
 @lilypond[quote,raggedright]
@@ -536,14 +534,17 @@ c4
 @end lilypond
 
 @noindent
-Chords can be constructed with < and > enclosing the notes
+Chords can be constructed with @code{<<} and @code{>>} enclosing the notes
 
+@c < > is not a music expression, 
+@c so we use <<>> iso. <> to drive home the point of
+@c expressions. Don't change this back --hwn.
 @example
-<c d e>4
+<<c4 d4 e4>>
 @end example
 
 @lilypond[quote,fragment,relative=1]
-\new Voice { <c d e>4 }
+\new Voice { <<c4 d4 e>> }
 @end lilypond
 
 @noindent
@@ -551,23 +552,24 @@ This expression is put in sequence by enclosing it in curly braces
 @code{@{@tie{}@dots{}@tie{}@}}
 
 @example
-@{ <c d e>4 f4 @}
+@{ f4 <<c4 d4 e4>>  @}
 @end example
 
-@lilypond[quote,relative=1]
-\new Voice { <c d e>4 f4 }
+@lilypond[quote,relative=1,fragment]
+{ f4 <<c d e4>> }
 @end lilypond
 
-@noindent      
-The above is an expression also, and thus it may be combined again with
-another simultaneous expression (a half note) using <<, @code{\\}, and >>
+@noindent
+The above is also an expression, and so it may be combined
+again with another simultaneous expression (a half note) using <<,
+@code{\\}, and >>
 
 @example
-<< g2 \\ @{ <c d e>4 f4 @} >>
+<< g2 \\ @{ f4 <<c4 d4 e4>> @} >>
 @end example
 
 @lilypond[quote,fragment,relative=2]
-\new Voice { << g2 \\ { <c d e>4 f4 } >> }
+\new Voice { << g2 \\ { f4 <<c d e>> } >> }
 @end lilypond
        
 Such recursive structures can be specified neatly and formally in a
@@ -579,10 +581,10 @@ User-interfaces and syntax are what people see and deal with
 most.  They are partly a matter of taste, and also subject of much
 discussion.  Although discussions on taste do have their merit, they
 are not very productive.  In the larger picture of LilyPond, the
-importance of input syntax is small: inventing neat syntax is easy,
+importance of input syntax is small: inventing neat syntax is easy, while
 writing decent formatting code is much harder.  This is also
 illustrated by the line-counts for the respective components: parsing
-and representation take up less than 10% of the code.
+and representation take up less than 10% of the source code.
 
 
 @node Example applications
@@ -624,7 +626,7 @@ This manual also shows an application: the input format is text, and
 can therefore be easily embedded in other text-based formats such as
 La@TeX{}, HTML, or in the case of this manual, Texinfo.  By means of a
 special program, the input fragments can be replaced by music images
-in the resulting PostScript or HTML output files.  This makes it easy
+in the resulting PDF or HTML output files.  This makes it easy
 to mix music and text in documents.
 
 
@@ -688,7 +690,7 @@ how to upgrade input files from previous versions of LilyPond.
 The
 @end ifhtml
 @emph{@ref{Literature list}}
-contains a set of useful reference books, for those who wish to know
+contains a set of useful reference books for those who wish to know
 more  on notation and engraving.
 @end itemize
 
@@ -747,7 +749,7 @@ Almost all formatting functionality that is used internally, is
 available directly to the user.  For example, all 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 the generated documentation.  Each section of the
+are described in this document.  Each section of the
 notation manual has a @b{See also} subsection, which refers to the
 the generated documentation.  In the HTML document, these subsections
 have clickable links.
index d522231ee8764dafce75286357d69be3fcf59268..18ccc8a7d484b3ffdaf40a1a6d97b74a26a03873 100644 (file)
@@ -12,8 +12,8 @@ TODO: cleanup
 @end ignore
 
 
-@node lilypond-book manual
-@chapter lilypond-book manual
+@node  Integrating text and music
+@chapter Integrating text and music
 
 If you want to add pictures of music to a document, you can simply do
 it the way you would do with other types of pictures.  The pictures
index bdad180430fa831607e91c1357f20f9eeffd2f7b..6879e958ef36d913774e915dbb4332cfca019adf 100644 (file)
@@ -164,6 +164,7 @@ this and other documentation.
 * Example templates::              Larger examples
 * Notation manual::                All notation supported, and how to
                                    produce it.
+* Sound::                          Producing MIDI output
 * Changing defaults::              Tuning output.
 * Interfaces for programmers::
 * Invoking LilyPond::              Operation.
index 5c13a9a46a195469d52a0313ef3cc022060a3cb3..94428a22d2cf99e6f4654aa6a4954d9fb0be0217 100644 (file)
@@ -109,7 +109,7 @@ Half-flats and half-sharps are formed by adding @code{-eh} and
 @cindex quarter tones
 @cindex semi-flats, semi-sharps
 
-@lilypond[fragment,quote,verbatim,relative=3]
+@lilypond[fragment,quote,verbatim,relative=2]
 ceses4
 ceseh
 ces
@@ -256,7 +256,7 @@ Program reference: @internalsref{RestEvent}, and @internalsref{Rest}.
 An invisible rest (also called a `skip') can be entered like a note
 with note name `@code{s}' or with @code{\skip @var{duration}}
 
-@lilypond[fragment,quote,raggedright,verbatim]
+@lilypond[fragment,quote,raggedright,verbatim,relative=2]
 a2 s4 a4 \skip 1 a4 
 @end lilypond
 
@@ -353,7 +353,7 @@ will not affect the appearance of the notes or rests produced.
 
 In the following example, the first three notes take up exactly two
 beats, but no triplet bracket is printed.
-@lilypond[quote,fragment,relative=3,verbatim]
+@lilypond[quote,fragment,relative=2,verbatim]
 \time 2/4
 a4*2/3 gis4*2/3 a4*2/3
 a4
@@ -1277,7 +1277,7 @@ shortened by 1/8, by setting @code{measurePosition} to -3/8 at 2/4 in
 the measure, so the next bar line will fall at 2/4 + 3/8. 
 
 @lilypond[verbatim]
-{
+\relative {
   \set Score.measureLength = #(ly:make-moment 5 4)
   c1 c4
   c1 c4 
@@ -2131,7 +2131,7 @@ Other symbols can be added using the syntax
 can be forced up or down using @code{^} and @code{_},
 e.g.
 
-@lilypond[quote,verbatim,fragment,relative=3]
+@lilypond[quote,verbatim,fragment,relative=2]
 c\fermata c^\fermata c_\fermata
 @end lilypond
 
@@ -2179,7 +2179,7 @@ inside. When two objects have the same priority, the order in which
 they are entered decides which one comes first.
 
 
-@lilypond[verbatim]
+@lilypond[verbatim,raggedright]
 \relative g''{
     \once \override TextScript #'script-priority = #-100
     a4^\prall^\markup { \sharp }
@@ -2218,7 +2218,7 @@ Long running trills are made with @code{\startTrillSpan} and
 @code{\stopTrillSpan},
 
 
-@lilypond[verbatim]
+@lilypond[verbatim,raggedright]
 \relative \new Voice {
     << { c1 \startTrillSpan }
        { s2. \grace { d16[\stopTrillSpan e] } } >>
@@ -2404,7 +2404,7 @@ every eighth grace note
 
 @lilypond[quote,relative=2,verbatim,fragment] 
 << \new Staff { e4 \grace { c16[ d e f] } e4 }
-   \new Staff { c'4 \grace { g8[ b] } c4 } >>
+   \new Staff { c4 \grace { g8[ b] } c4 } >>
 @end lilypond
 
 
@@ -2925,8 +2925,10 @@ Patterns of a one and two measures are replaced by percent-like signs,
 patterns that divide the measure length are replaced by slashes
 
 @lilypond[quote,verbatim,raggedright]
-\repeat  "percent" 4  { c'4 }
-\repeat "percent" 2 { c'2 es'2 f'4 fis'4 g'4 c''4 }
+\new Voice {
+  \repeat  "percent" 4  { c'4 }
+  \repeat "percent" 2 { c'2 es'2 f'4 fis'4 g'4 c''4 }
+}
 @end lilypond
 
 @seealso
@@ -3981,8 +3983,8 @@ The underlay is switched back to the starting situation by assigning
 
 Stanza numbers can be added by setting @code{stanza}, e.g.
 
-@lilypond[quote,verbatim,relative=2]
-\context Voice {
+@lilypond[quote,verbatim,relative=2,fragment]
+\new Voice {
     \time 3/4 g2 e4 a2 f4 g2.
 } \addlyrics {
      \set stanza = "1. "
@@ -4000,8 +4002,8 @@ the line, just like instrument names.  They are created by setting
 @code{vocalName}. A short version may be entered as @code{vocNam}.
 
 
-@lilypond[quote,verbatim,relative=2]
-\context Voice {
+@lilypond[fragment,quote,verbatim,relative=2]
+\new Voice {
     \time 3/4 g2 e4 a2 f4 g2.
 } \addlyrics {
      \set vocalName = "Bert "
@@ -7461,85 +7463,3 @@ correct result.
 @cindex @code{\setEasyHeads}
 @code{\setEasyHeads}
 
-@node Sound
-@section Sound
-@cindex Sound
-
-Entered music can also be converted to MIDI output.  The performance
-is intended for proof-hearing the music for errors.
-
-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 extremities.  The fractions can be adjusted by
-@code{dynamicAbsoluteVolumeFunction} in @internalsref{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}.
-
-@refbugs
-
-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.  Hence, 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 change in the MIDI
-output. Players that are known to work include
-@uref{http://timidity.sourceforge.net/,timidity}
-
-
-@menu
-* MIDI block::                  
-* MIDI instrument names::       
-@end menu
-
-
-@node MIDI block
-@subsection MIDI block
-@cindex MIDI block
-
-
-The MIDI block is analogous to the paper block, but it is somewhat
-simpler.  The @code{\midi} block can contain
-@cindex MIDI block
-
-@itemize @bullet
-  @item a @code{\tempo} definition, and
-  @item context definitions.
-@end itemize
-
-A number followed by a period is interpreted as a real number, so
-for setting the tempo for dotted notes, an extra space should be
-inserted, for example
-
-@example
-  \midi @{ \tempo 4 . = 120 @} 
-@end example
-
-
-@cindex context definition
-
-Context definitions follow precisely the same syntax as within the
-\paper 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
-@cindex @code{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}.
-
-@refbugs
-
-If the selected string does not exactly match, the default is used,
-which is the Grand Piano.
index 7329a445bcb6556f652e536e2cf42329ca5e7dcc..326171ad1d0b7d10eb80f8e0ba297e526c1dbfe4 100644 (file)
@@ -53,12 +53,17 @@ Utrecht/Eindhoven, The Netherlands, July 2002.
 @end menu
 
 @node Notes to version 2.2
-@unnumberedsec Notes to version 2.2
+@unnumberedsec Notes to version 3.0
+
+The most important developments in 3.0 are related. In LilyPond 3.0,
+@TeX{} is no longer strictly necessary to engrave music. This is
+because LilyPond can now also layout pages and determine page breaks.
+Another notable feature is the syntax, which has been simplified even
+further compared to previous versions.
+
+
 
-During the 2.1 development cycle, the cleanup of the existing features
-has continued unabated.  Major areas of improvement are orchestral
-notation, lyrics formatting and font size handling.
 
 Han-Wen and Jan
 
-Utrecht/Eindhoven, The Netherlands, March 2004.
+Utrecht/Eindhoven, The Netherlands, September 2004.
diff --git a/Documentation/user/sound-output.texi b/Documentation/user/sound-output.texi
new file mode 100644 (file)
index 0000000..4028d2e
--- /dev/null
@@ -0,0 +1,130 @@
+
+@node Sound
+@chapter Sound
+@cindex Sound
+
+MIDI (Musical Instrument Digital Interface) is a standard for
+connecting and controlling digital instruments.  A MIDI file is like a
+tape recording of a MIDI instrument.
+
+Pieces of music can be converted to a MIDI file, 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 musical transcription.
+
+@refbugs
+
+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.  hence, 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 change 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::       
+@end menu
+
+@node Creating MIDI files
+@section Creating MIDI files 
+
+@cindex sound
+@cindex midi
+
+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 @{ \tempo 4=72 @}
+@}
+@end example 
+
+Here, the tempo is specified using the @code{\tempo} command.  In this
+case the tempo of quarter notes is set to 72 beats per minute.  More
+information on auditory output in the notation manual can be found in
+@ref{sound}.
+
+If there is a @code{\midi} command in a @code{\score}, only MIDI will
+be produced.  When notation is needed too, a @code{\paper} block must
+be added
+
+@example 
+\score @{
+    @var{...music...}
+    \midi @{ \tempo 4=72 @}
+    \paper @{ @}
+@}
+@end example 
+@cindex paper 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 extremities.  The fractions can be adjusted by
+@code{dynamicAbsoluteVolumeFunction} in @internalsref{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}.
+
+
+@node MIDI block
+@section MIDI block
+@cindex MIDI block
+
+
+The MIDI block is analogous to the paper block, but it is somewhat
+simpler.  The @code{\midi} block can contain
+@cindex MIDI block
+
+@itemize @bullet
+  @item a @code{\tempo} definition, and
+  @item context definitions.
+@end itemize
+
+A number followed by a period is interpreted as a real number, so
+for setting the tempo for dotted notes, an extra space should be
+inserted, for example
+
+@example
+  \midi @{ \tempo 4 . = 120 @} 
+@end example
+
+
+@cindex context definition
+
+Context definitions follow precisely the same syntax as within the
+\paper 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
+@section MIDI instrument names
+
+@cindex instrument names
+@cindex @code{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}.
+
+@refbugs
+
+If the selected string does not exactly match, the default is used,
+which is the Grand Piano.
+
index 49765a2528e989a278e9c61cb46961df8ba42cc3..b207c4c51b14edc4a51ae8bbb5c8cb29027003bf 100644 (file)
@@ -89,7 +89,7 @@ a1 a2 a4 a16 a32
 @end example
 
 @c FIXME: have NOTIME also remove Score.timing?
-@lilypond[fragment,quote,notime,relative=1]
+@lilypond[fragment,quote,notime,relative=2]
 \set Score.timing = ##f
 \set Staff.autoBeaming = ##f
 { a1 a2 a4 a16 a32 s16_" " }
@@ -103,7 +103,7 @@ defaults to a quarter
 a a8 a a2 a
 @end example
 
-@lilypond[fragment,quote,notime,relative=1]
+@lilypond[fragment,quote,notime,relative=2]
 \set Score.timing = ##f
 { a a8 a a2 a s16_" " }
 @end lilypond
@@ -231,7 +231,7 @@ Windows are given at the end of this section.
 Begin by opening a terminal window and starting a text editor.  For
 example, you could open an xterm and execute
 @code{joe}.@footnote{There are macro files for VIM addicts, and there
-is a @code{LilyPond-mode} for Emacs addicts.  If it has not been
+is a @code{LilyPond-mode} for Emacs addicts.  If they have not been
 installed already, refer to
 @c FIXME lousy reference.
 the file @file{INSTALL.txt}.}  In your text editor, enter the following
@@ -284,7 +284,8 @@ package for viewing and printing PDF and PostScript files.}
 
 On Windows, start up a text-editor@footnote{Any simple or
 programmer-oriented editor will do, for example Notepad.  Do not use a
-word processor, its formatting codes will confuse LilyPond.} and enter
+word processor, since these insert formatting codes that will confuse
+LilyPond.} and enter
 
 @example
 @{ c'4 e' g' @}
@@ -356,7 +357,7 @@ d' cis' fis'
 @end lilypond
 
 @noindent
-no note gets an explicit accidental, but you still must enter
+no note has an explicit accidental, but you still must enter
 
 @example
 \key d \major
@@ -380,7 +381,7 @@ d
 
 Adding all alterations explicitly might require a little more effort
 when typing, but the advantage is that transposing is easier, and
-music can be printed according to different conventions.  See
+accidentals can be printed according to different conventions.  See
 @ref{Accidentals}, for some examples how accidentals can be printed
 according to different rules.
 
@@ -514,18 +515,20 @@ b'8. cis''16 b'8 d''4 d''8
 @noindent
 The last example shows that music in a high register needs lots of quotes.
 This makes the input less readable, and it is a source of errors.  The
-solution is to use `relative octave' mode.  In practice, this is the
-most convenient way to copy existing music.  To use relative mode, add
-@code{\relative} before the piece of music.
-@ignore
-FIXME: move to notation manual?
- You must also give a note
-from which relative mode starts, in this case @code{c''}.
-@end ignore
-If you do not
-use octavation quotes (i.e., do not add @code{'} or @code{,} after a
-note), relative mode chooses the note that is closest to the previous
-one.  For example, @samp{c f} goes up while @samp{c g} goes down
+solution is to use `relative octave' mode.   This is the
+most convenient way to copy existing music.
+
+In relative mode, a note without octavation quotes (i.e.  the @code{'}
+or @code{,} after a note) is chosen so it it is closest to the
+previous one.  For example, @samp{c f} goes up while @samp{c g} goes
+down
+
+To use relative mode, add @code{\relative} before the piece of
+music. The first note is taken relative to the middle C
+@c no , for this sentence
+(i.e. @code{c'})
+
+
 
 @lilypond[quote,notime,fragment,verbatim]
 \relative {
@@ -538,11 +541,11 @@ Since most music has small intervals, pieces can be written almost
 without octavation quotes in relative mode.  The previous example is
 entered as
 
-@lilypond[quote,raggedright,fragment,verbatim]
+@lilypond[quote,raggedright,verbatim]
 \relative {
   \key a \major
   \time 6/8
-  cis''8. d16 cis8 e4 e8
+  cis'8. d16 cis8 e4 e8
   b8. cis16 b8 d4 d8
 }
 @end lilypond
@@ -603,7 +606,7 @@ parallel.  Two voices that should play at the same time, are entered
 as a simultaneous combination of two sequences.  A `simultaneous'
 music expression is formed by enclosing expressions in @code{<<} and
 @code{>>}.  In the following example, three sequences (all containing
-two notes) are combined simultaneously
+two other notes) are combined simultaneously
 
 @lilypond[fragment,quote,verbatim,relative=3]
 <<
@@ -630,15 +633,16 @@ you can make arbitrarily complex and large expressions.  For example,
 
 @cindex expression
 @cindex music expression
-This example shows a sequence of expressions, where each expression is
-contained in the next one.  The simplest expressions are numbers and
-operators (like @samp{+}, @samp{*} and @samp{/}).  Parentheses are used
-to group expressions.
+This is a sequence of expressions, where each expression is contained
+in the next one.  The simplest expressions are numbers, and larger
+ones are made by combining expressions with operators (like @samp{+},
+@samp{*} and @samp{/}) and parentheses.
 
 Like mathematical expressions, music expressions can be nested
-arbitrarily deep@footnote{The reason for getting three staves in the
+arbitrarily deep,@footnote{The reason for getting three staves in the
 previous example but just a single staff in the current one will be
-explained later.}
+explained in @ref{TODO}.}  which is necessary for complex music like
+polyphonic scores.
 
 @lilypond[fragment,quote,verbatim,relative=2] 
 {
@@ -647,29 +651,23 @@ explained later.}
 }
 @end lilypond
 
-
-@cindex indent
-When spreading expressions over multiple lines, it is customary to use
-an indent that indicates the nesting level.  Formatting music like this
-eases reading, and helps you insert the right number of closing
-braces at the end of an expression.  For example,
+Music files with deep nesting can be confusing to enter and
+maintain. One convention that helps against this confusion, is
+indenting.  When entering a file with deep nesting of braces and
+angles, it is customary to use an indent that indicates the nesting
+level.  Formatting music like this eases reading, and helps you insert
+the right number of closing braces at the end of an expression.  For
+example,
 
 @example
-\book @{
-  \score @{
-    <<
-      @{
-        @dots{}
-      @}
-      @{
-        @dots{}
-      @}
-      \paper @{
-        @dots{}
-      @}
-    >>
+<<
+  @{
+    @dots{}
+  @}
+  @{
+    @dots{}
   @}
-@}  
+>>
 @end example
 
 Some editors have special support for entering LilyPond, and can help
@@ -699,7 +697,7 @@ is best to mark contexts explicitly.  This ensures that each fragment
 gets its own stave.
 
 There are several types of contexts: @code{Staff}, @code{Voice} and
-@code{Score} handle normal music notation.  Other contexts are also
+@code{Score} handle melodic notation.  Other contexts are also
 @code{Lyrics} (for setting lyric texts) and @code{ChordNames} (for
 printing chord names).
 
@@ -714,17 +712,17 @@ We can now typeset a melody with two staves
 @c TODO: (c) status of this Paul McCartney (?) song (let's all stand together)
 
 @lilypond[fragment,quote,verbatim,raggedright]
-<<
+\relative <<
   \new Staff {
     \time 3/4
     \clef violin
-    \relative {
-      e''2 d4 c2 b4 a8[ a]
-      b[ b] g[ g] a2. }  
+    
+    e'2 d4 c2 b4 a8[ a]
+    b[ b] g[ g] a2. 
   }
   \new Staff {
      \clef bass
-     c2 e4 g2.
+     c,,2 e4 g2.
      f4 e d c2.
   }
 >>
@@ -786,15 +784,15 @@ articulation.  The starting note and ending note are marked with
 @samp{(} and @samp{)}, respectively
 
 @lilypond[fragment,quote,fragment,relative=2,verbatim]
-d4( c16)( cis d e c cis d e)( d4)
+d4( c16) cis( d e c cis d) e( d4)
 @end lilypond
 
 @cindex slurs versus ties
 A slur looks like a tie, but it has a different meaning.  A tie simply
 makes the first note sound longer, and can only be used on pairs of
 notes with the same pitch.  Slurs indicate the articulations of notes,
-and can be used on larger groups of notes.  Slurs and ties are also
-nested in practice
+and can be used on larger groups of notes.  Slurs and ties can be
+nested
 
 @lilypond[quote,fragment,relative=2]
 c2~( c8 fis fis4 ~ fis2 g2)
@@ -921,12 +919,12 @@ see @ref{Partial measures}.
 @cindex line comment
 @cindex block comment
 A comment is a remark for the human reader of the music input; it is
-ignored and has no effect on the printed output.  There are two types
-of comments.  The percent symbol @samp{%} introduces a line comment;
-the rest of the line is ignored.  A block comments marks a whole
-section of music input---anything that is enclosed in @code{%@{} and
-@code{%@}} is ignored.  The following fragment shows possible uses for
-comments
+ignored while parsing, so it has no effect on the printed output.
+There are two types of comments.  The percent symbol @samp{%}
+introduces a line comment; after  @code{%} the rest of the line   is
+ignored.  A block comments marks a whole section of music
+input. Anything that is enclosed in @code{%@{} and @code{%@}} is
+ignored.  The following fragment shows possible uses for comments
 
 @example
 % notes for twinkle twinkle follow
@@ -941,9 +939,11 @@ c4 c g' g a a
 %@}
 @end example
 
-There is a special statement that really is a kind of comment.  The
-version statement marks for which version of LilyPond the file was
-written.  To mark a file for version 2.1.17, use
+@cindex versioning
+
+There is a special statement that is a kind of comment.  The @code{\version}
+statement marks for which version of LilyPond the file was written.
+To mark a file for version 2.1.17, use
 
 @example
 \version "2.1.17"
@@ -1033,41 +1033,6 @@ Twin -- kle twin -- kle
 More options, like putting multiple lines of lyrics below a melody are
 discussed in @ref{Vocal music}.
 
-@c FIXME: too geeky, for notation manual?
-@c or introduce using foo = \lyrics { a b c } ?
-
-When using variables for a piece of lyrics
-To prevent certain words (for example `as') as being read as a
-pitch, the input-mode must be switched.  This is done with
-@code{\lyrics}.  In @code{\lyrics} mode, all words are read as lyric
-syllables.
-
-@example
-myText = \lyrics @{ I want to break free @}
-@end example
-
-@noindent
-The braces @code{@{@}} signify that the syllables are sung in
-sequence.
-
-@ignore
-By default, music expressions are interpreted in @code{Staff} context.  For
-lyrics, this is obviously not desirable, so it is necessary
-to explicitly specify a @code{Lyrics} context,
-
-@example
-\lyrics @{ I want to break free @}
-@end example
-
-The melody for this song is as follows
-
-@lilypond[fragment,quote,fragment,relative=2]
-r4 c \times 2/3 { f4 g g }
-\times 2/3 { g4( a2) }
-@end lilypond
-
-@end ignore
-
 
 @node A lead sheet
 @section A lead sheet
@@ -1076,20 +1041,17 @@ r4 c \times 2/3 { f4 g g }
 @cindex chords
 @cindex chord names
 
-In popular music, it is common to denote accompaniment as chord names.
+In popular music, it is common to denote accompaniment with chord names.
 Such chords can be entered like notes,
 
-@example
-c2 f4. g8
-@end example
+@lilypond[quote,verbatim,raggedright]
+\chords { c2 f4. g8 }
+@end lilypond
 
 @noindent
-but now, each pitch is read as the root of a chord instead of a note.
+Now each pitch is read as the root of a chord instead of a note.
 This mode is switched on with @code{\chords}
 
-@lilypond[quote,verbatim,raggedright]
-\chords { c2 f4. g8 }
-@end lilypond
 
 Other chords can be created by adding modifiers after a colon.  The
 following example shows a few common modifiers
@@ -1134,50 +1096,6 @@ a lead sheet, for example,
 A complete list of modifiers and other options for layout can be found
 in @ref{Chords}.
 
-@c FIXME: we talk about \midi before mentioning \paper (or \layout?)
-@node Listening to output
-@section Listening to output
-
-@cindex sound
-@cindex MIDI
-
-MIDI (Musical Instrument Digital Interface) is a standard for
-connecting and controlling digital instruments.  A MIDI file is like a
-tape recording of a MIDI instrument.
-
-To create a MIDI from a music piece of music, add a @code{\midi}
-block. This causes LilyPond to create a MIDI file, so you can listen
-to what you just entered.  It is great for checking the music.
-Octaves that are off or accidentals that were mistyped stand out very
-much when listening to the musical transcription.
-
-The @code{\midi} block is added to @code{\score}, for example,
-
-@example 
-\score @{
-    @var{...music...}
-    \midi @{ \tempo 4=72 @}
-@}
-@end example 
-
-Here, the tempo is specified using the @code{\tempo} command.  In this
-case the tempo of quarter notes is set to 72 beats per minute.  More
-information on auditory output in the notation manual can be found in
-@ref{Sound}.
-
-If there is a @code{\midi} command in a @code{\score}, only MIDI will
-be produced.  If notation is needed too, a @code{\paper} block must be
-added
-
-@example 
-\score @{
-    @var{...music...}
-    \midi @{ \tempo 4=72 @}
-    \paper @{ @}
-@}
-@end example 
-@cindex paper block
-
 
 @node Adding titles
 @section Adding titles
@@ -1190,84 +1108,16 @@ the top of the file.  For example,
 
 @example 
 \header @{
-  title = "Eight miniatures
+  title = "Miniature
   composer = "Igor Stravinsky"
-  tagline = "small is beautiful"
 @}
 
 @{ @dots{} @}
 @end example
 
-@cindex bibliographic information
-@cindex titles
-@cindex composer
-@cindex Engraved by LilyPond
 
 When the file is processed the title and composer are printed above
-the music.  The `tagline' is a short line printed at bottom of the last
-page which normally says `Engraved by LilyPond, version @dots{}'.  In
-the example above it is replaced by the line `small is
-beautiful.'@footnote{Nicely printed parts are good PR for us, so
-please leave the tagline if you can.}
-
-
-The @code{\header} block is usually put at the top of the file.
-
-A document may contains multiple pieces of music, examples are an
-etude book, or an orchestral part with multiple movements.
-@c FIXME: ugh.  \header can only live at toplevel, or inside \score.
-@c If we allow it also to live inside \book, we do not need \score here?
-The @code{\book} block is used to group the individual @code{\score}
-blocks.
-
-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.
-
-@ignore
-
-FIXME: introduce \BOOK
-
-FIXME: Using "Adagio" as a name is confusing, it's more common to be
-a plain tempo indication.
-
-Since today (CVS-1.211) we also allow headers and composite music
-inside book:
-
-  \header { ... }
-  \book {
-    \header { ... }
-    { ... }
-    \header { ... }
-    { ... }
-  }
-
-@end ignore
-
-@cindex Engraved by LilyPond
-@cindex signature line
-@cindex tag line
-
-@example 
-\header @{
-  title = "Eight miniatures" 
-  composer = "Igor Stravinsky"
-  tagline = "small is beautiful"
-@}
-
-\book @{
-  \score @{
-    @dots{}
-    \header @{ piece = "Adagio" @}
-  @}
-  \score @{
-    @dots{}
-    \header @{ piece = "Menuetto" @}
-  @}
-@}
-@end example
-
-More information on titling can be found in @ref{Invoking lilypond}.
+the music.  More information on titling can be found in @ref{Titling}.
 
 
 @node Single staff polyphony
@@ -1285,7 +1135,7 @@ Entering such parts is done by entering each voice as a sequence (with
 @code{@{...@}}), and combining those simultaneously, separating the
 voices with @code{\\}
 
-@lilypond[quote,verbatim,relative=3]
+@lilypond[quote,verbatim,relative=2,fragment]
 << { a4 g2 f4~ f4 } \\
    { r4 g4 f2 f4 } >>
 @end lilypond
@@ -1295,7 +1145,7 @@ are rests that do not print.  It is useful for filling up voices that
 temporarily do not play.  Here is the same example with a spacer rest
 instead of a normal rest---just use @samp{s} instead of @samp{r}
 
-@lilypond[quote,verbatim,relative=3]
+@lilypond[quote,verbatim,relative=2,fragment]
 << { a4 g2 f4~ f4 } \\
    { s4 g4 f2 f4 } >>
 @end lilypond
@@ -1303,7 +1153,7 @@ instead of a normal rest---just use @samp{s} instead of @samp{r}
 @noindent
 Again, these expressions can be nested arbitrarily
 
-@lilypond[quote,fragment,verbatim,relative=3]
+@lilypond[quote,fragment,verbatim,relative=2,fragment]
 <<
   \new Staff <<
     { a4 g2 f4~ f4 } \\
@@ -1537,9 +1387,10 @@ in the notation manual; see @ref{Orchestral music}.
 Setting run-time variables (`properties') is discussed in ref-TODO.
 
 
-@node Integrating text and music
-@section Integrating text and music
+@node Musicological essays
+@section Musicological essays
 
+@cindex musicology
 @cindex La@TeX{}, music in
 @cindex HTML, music in
 @cindex Texinfo, music in
@@ -1612,10 +1463,10 @@ files, which would clutter up the working directory.  To remedy this,
 use the @code{--output=@var{dir}} option.  It will create the files in
 a separate subdirectory @file{dir}.
 
-Finally the result of the La@TeX{} example shown above.@footnote{Note
-that in this tutorial the example is processed with Texinfo.  This gives
-slightly different results in layout.}  This finishes the tutorial
-section.
+Finally the result of the La@TeX{} example shown above.@footnote{ This
+tutorial is processed with Texinfo, so the example is as well.  This
+gives slightly different results in layout.}  This finishes the
+tutorial section.
 
 @page
 
index 7287aaa8100a9742311565be276a8de11d9926b5..def53e5a03b091ec6fd074a0018a9259c19d2ff7 100644 (file)
@@ -25,6 +25,7 @@ parenthesize (Grob*me, Stencil m)
 {
   Stencil open = Font_interface::get_default_font (me)->find_by_name (String ("accidentals-leftparen"));
   Stencil close = Font_interface::get_default_font (me)->find_by_name (String ("accidentals-rightparen"));
+
   m.add_at_edge (X_AXIS, LEFT, Stencil (open), 0,0);
   m.add_at_edge (X_AXIS, RIGHT, Stencil (close), 0,0);
 
index 8e0affdf282c19bb2a6457f77c1656f43e0865b7..158f271e909f2ee49ccdb3a72aa0ca5d875e61b2 100644 (file)
@@ -62,10 +62,8 @@ moment_less (SCM a, SCM b)
 int
 binsearch_scm_vector (SCM vec, SCM key, bool (*is_less)(SCM a,SCM b))
 {
-  int lo;
-  int hi;
-  lo = 0;
-  hi = SCM_VECTOR_LENGTH (vec);
+  int lo = 0;
+  int hi = SCM_VECTOR_LENGTH (vec);
 
   /* binary search */
   do
index e6b2e00b41cd6f4912a9f3b2afaf8bfadb0031c4..fddebf771c4f4ec4de9ac8b03c118687ecd43db0 100644 (file)
        (script-priority . 100)
        (font-encoding . fetaNumber)
        (font-size . -5)                ; don't overlap when next to heads.
-       (meta . ((interfaces . (finger-interface font-interface text-script-interface text-interface side-position-interface self-alignment-interface item-interface ))))
+       (meta . ((interfaces . (finger-interface
+                               font-interface text-script-interface text-interface
+                               side-position-interface self-alignment-interface
+                               item-interface))))
        ))
 
     (Glissando
index 69180a978a5f6ca8dbcd4bb0eba79b6132d13ccd..62b60260c7d9cbfa181496e0b591ab63357a4557 100644 (file)
@@ -187,6 +187,8 @@ Voice-state objects
        
 (define noticed '())
 (define part-combine-listener '())
+
+; UGH - should pass noticed setter to part-combine-listener
 (define-public (set-part-combine-listener x)
   (set! part-combine-listener x))
 
@@ -501,4 +503,6 @@ the mark when there are no spanners active."
         (evs (last-pair noticed)))
     (if (pair? evs)
        (hash-set! tab name
-                  (list->vector (reverse! (car evs) '()))))))
+                  ;; cdr : skip name string
+                  (list->vector (reverse! (cdar evs) '()))))))
+