]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/user/introduction.itely
lilypond-book robustness: ensure EOL at the end of @verbatim
[lilypond.git] / Documentation / user / introduction.itely
index 5875d37673bf4e00330b6efa1d0dc2978143dc11..e1db15797fad57ee47d4e35f8ba6ed8b8b6aa8c3 100644 (file)
@@ -7,7 +7,7 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
-@c \version "2.11.51"
+@c \version "2.12.0"
 
 @node Introduction
 @chapter Introduction
@@ -16,8 +16,8 @@ This chapter introduces readers to LilyPond and the
 documentation.
 
 @menu
-* Background::                  
-* About the documentation::     
+* Background::
+* About the documentation::
 @end menu
 
 
@@ -28,24 +28,30 @@ This section covers the overall goals and architecture of
 LilyPond.
 
 @menu
-* Engraving::                   
-* Automated engraving::         
-* What symbols to engrave?::    
-* Music representation::        
-* Example applications::        
+* Engraving::
+* Automated engraving::
+* What symbols to engrave?::
+* Music representation::
+* Example applications::
 @end menu
 
 
 @node Engraving
 @unnumberedsubsec Engraving
 
+@cindex engraving
+@cindex typography, music
+@cindex music typography
+@cindex plate engraving
+@cindex music engraving
+
 The art of music typography is called @emph{(plate) engraving}.
 The term derives from the traditional process of music printing.
 Just a few decades ago, sheet music was made by cutting and
 stamping the music into a zinc or pewter plate in mirror image.
-The plate would be inked, the depressions caused by the cutting
+The plate would be inked, and the depressions caused by the cutting
 and stamping would hold ink.  An image was formed by pressing
-paper to the plate.  The stamping and cutting was completely done
+paper to the plate.  The stamping and cutting was done completely
 by hand.  Making a correction was cumbersome, if possible at all,
 so the engraving had to be perfect in one go.  Engraving was a
 highly specialized skill; a craftsman had to complete around five
@@ -54,7 +60,7 @@ 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, and
+This 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
@@ -72,7 +78,7 @@ computer print: the staff lines are thin, the weight of the flat
 symbol matches the light lines and it has a straight layout with
 sharp corners.  By contrast, the Bärenreiter flat has a bold,
 almost voluptuous rounded look.  Our flat symbol is designed
-after, among others, this one.  It is rounded, and its weight
+after this one, among others.  It is rounded, and its weight
 harmonizes with the thickness of our staff lines, which are also
 much thicker than lines in the computer edition.
 
@@ -103,8 +109,8 @@ much thicker than lines in the computer edition.
 @end ifnottex
 @end ifnotinfo
 @ifinfo
-@image{lilypond/henle-flat-bw,,,png} @image{lilypond/baer-flat-bw,,,png}
-@image{lilypond/lily-flat-bw,,,png}
+@image{lilypond/henle-flat-bw,,,,png} @image{lilypond/baer-flat-bw,,,,png}
+@image{lilypond/lily-flat-bw,,,,png}
 @end ifinfo
 
 @item @tab
@@ -188,6 +194,7 @@ music = {
 
 @cindex regular rhythms
 @cindex regular spacing
+@cindex spacing, regular
 
 Each bar in the fragment only uses notes that are played in a
 constant rhythm.  The spacing should reflect that.  Unfortunately,
@@ -198,26 +205,25 @@ up-stem/@/down-stem combination should be put farther apart, and
 the notes of a down-stem/@/up-stem combination should be put
 closer together, all depending on the combined vertical positions
 of the notes.  The upper two measures are printed with this
-correction, the lower two measures without, forming
+correction, the lower two measures, however, form
 down-stem/@/up-stem clumps of notes.
 
-@cindex typography
 
 Musicians are usually more absorbed with performing than with
-studying the looks of a piece of music, so nitpicking about
-typographical details may seem academical.  But it is not.  In
+studying the looks of a piece of music, so nitpicking
+typographical details may seem academic.  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, and they become like a labyrinth.  If a musician
-looks away once or has a lapse in concentration, the lines might
-lose their place on the page.
+look the same, and they become like a labyrinth.  A distinct visual
+signature helps to keep musicians from losing their place on the
+page when they look away or have a lapse in concentration.
 
 Similarly, the strong visual look of bold symbols on heavy staff
 lines stands out better when the music is far away from the
-reader, for example, if it is on a music stand.  A careful
+reader: for example, if it is on a music stand.  A careful
 distribution of white space allows music to be set very tightly
-without cluttering symbols together.  The result minimizes the
+without crowding symbols together.  The result minimizes the
 number of page turns, which is a great advantage.
 
 This is a common characteristic of typography.  Layout should be
@@ -241,6 +247,9 @@ to see and love to play from.
 @node Automated engraving
 @unnumberedsubsec Automated engraving
 
+@cindex engraving, automated
+@cindex automated engraving
+
 How do we go about implementing typography?  If craftsmen need
 over ten years to become true masters, how could we simple hackers
 ever write a program to take over their jobs?
@@ -273,11 +282,13 @@ typographical style must also be accessible to the user.
 
 @item Finally, we continually refine the formatting algorithms, so
 we need a flexible approach to rules.  The C++ language forces a
-certain method of grouping rules that do not match well with how
-music notation works.
+certain method of grouping rules that cannot readily be applied to
+formatting music notation.
 
 @end itemize
 
+@cindex Scheme programming language
+
 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
@@ -304,6 +315,10 @@ chord has all directions up (right).
 }
 @end lilypond
 
+@cindex score formatting
+@cindex formatting a score
+@cindex formatting rules
+
 @noindent
 The process of formatting a score consists of reading and writing
 the variables of graphical objects.  Some variables have a preset
@@ -335,8 +350,8 @@ 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 the appearance of objects.  In the following example, the
-rule which note head objects are used to produce their symbol is
-changed during the music fragment.
+rule governing which note head objects are used to produce the
+note head symbol is changed during the music fragment.
 
 @lilypond[quote,ragged-right]
 #(set-global-staff-size 30)
@@ -346,34 +361,33 @@ changed during the music fragment.
          (pos (ly:grob-property grob 'staff-position)))
     (if (memq 'note-head-interface interfaces)
         (begin
-          (ly:grob-set-property! grob 'stencil ly:text-interface::print)
-          (ly:grob-set-property! grob 'font-family 'roman)
-          (ly:grob-set-property! grob 'text
-            (make-raise-markup -0.5
-              (case pos
-                ((-5) (make-simple-markup "m"))
-                ((-3) (make-simple-markup "c "))
-                ((-2) (make-smaller-markup (make-bold-markup "2")))
-                (else (make-simple-markup "bla")))))))))
+          (ly:grob-set-property! grob 'stencil
+            (grob-interpret-markup grob
+              (make-lower-markup 0.5
+                (case pos
+                  ((-5) "m")
+                  ((-3) "c ")
+                  ((-2) (make-smaller-markup (make-bold-markup "2")))
+                  (else "bla")))))))))
 
 \new Voice \relative c' {
-   \stemUp
-   \set autoBeaming = ##f
-   \time 2/4
-   <d f g>4
-   \once \override NoteHead #'stencil = #ly:note-head::brew-ez-stencil
-   \once \override NoteHead #'font-size = #-7
-   \once \override NoteHead #'font-family = #'sans
-   \once \override NoteHead #'font-series = #'bold
-   <d f g>
-   \once \override NoteHead #'style = #'cross
-   <d f g>
-   \applyOutput #'Voice #mc-squared
-   <d f g>
-   <<
-      { d8[ es-( fis^^ g] fis2-) }
-      \repeat unfold 5 { \applyOutput #'Voice #mc-squared s8 }
-   >>
+  \stemUp
+  \set autoBeaming = ##f
+  \time 2/4
+  <d f g>4
+  \once \override NoteHead #'stencil = #ly:note-head::brew-ez-stencil
+  \once \override NoteHead #'font-size = #-7
+  \once \override NoteHead #'font-family = #'sans
+  \once \override NoteHead #'font-series = #'bold
+  <d f g>4
+  \once \override NoteHead #'style = #'cross
+  <d f g>4
+  \applyOutput #'Voice #mc-squared
+  <d f g>4
+  <<
+    { d8[ es-( fis^^ g] fis2-) }
+    \repeat unfold 5 { \applyOutput #'Voice #mc-squared s8 }
+  >>
 }
 @end lilypond
 
@@ -383,21 +397,23 @@ changed during the music fragment.
 
 @cindex engraving
 @cindex typography
+@cindex engraver
+@cindex plug-in
 
 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.
+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 from the early renaissance.  Although the basic form
+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 evolve to express the innovations of contemporary notation.
-Hence, it encompasses some 500 years of music.  Its applications
-range from monophonic melodies to monstrous counterpoints for
-large orchestras.
+Hence, common music notation encompasses some 500 years of music.
+Its applications range from monophonic melodies to monstrous
+counterpoints for a large orchestra.
 
-How can we get a grip on such a many-headed beast, and force it
+How can we get a grip on such a seven-headed beast, and force it
 into the confines of a computer program?  Our solution is to break
 up the problem of notation (as opposed to engraving, i.e.,
 typography) into digestible and programmable chunks: every type of
@@ -407,8 +423,8 @@ developed and improved separately.  Such plug-ins are called
 @code{engraver}s, 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}.
+In the following example, we start out with a plug-in for note
+heads, the @code{Note_heads_engraver}.
 
 @lilypond[quote,ragged-right]
 \include "engraver-example.ily"
@@ -440,7 +456,7 @@ for note heads, the @code{Note_heads_engraver}.
 @end lilypond
 
 @noindent
-Then a @code{Staff_symbol_engraver} adds the staff
+Then a @code{Staff_symbol_engraver} adds the staff,
 
 @lilypond[quote,ragged-right]
 \include "engraver-example.ily"
@@ -471,7 +487,7 @@ Then a @code{Staff_symbol_engraver} adds the staff
 @end lilypond
 
 @noindent
-the @code{Clef_engraver} defines a reference point for the staff
+the @code{Clef_engraver} defines a reference point for the staff,
 
 @lilypond[quote,ragged-right]
 \include "engraver-example.ily"
@@ -539,6 +555,10 @@ signature, and key signature, we get a complete piece of notation.
 \score { \topVoice }
 @end lilypond
 
+@cindex polyphony
+@cindex engraving multiple voices
+@cindex contexts
+
 This system works well for monophonic music, but what about
 polyphony?  In polyphonic notation, many voices can share a staff.
 
@@ -557,10 +577,11 @@ context contains more than one Voice context.  Similarly, multiple
 Staff contexts can be put into a single Score context.  The Score
 context is the top level notation context.
 
-@seealso
 
+@seealso
 Internals Reference: @rinternals{Contexts}.
 
+
 @lilypond[quote,ragged-right]
 \include "engraver-example.ily"
 \score {
@@ -575,6 +596,9 @@ Internals Reference: @rinternals{Contexts}.
 @node Music representation
 @unnumberedsubsec Music representation
 
+@cindex syntax
+@cindex recursive structures
+
 Ideally, the input format for any high-level formatting system is
 an abstract description of the content.  In this case, that would
 be the music itself.  This poses a formidable problem: how can we
@@ -595,8 +619,8 @@ easy to type:
 @end example
 
 @noindent
-to create a quarter note C1 (middle C) and an eighth note D1 (D
-above middle C).
+to create a quarter note on middle C (C1) and an eighth note on
+the D above middle C (D1).
 
 @lilypond[quote]
 {
@@ -658,7 +682,7 @@ this grammar.  In other words, the syntax of LilyPond is clearly
 and unambiguously defined.
 
 User-interfaces and syntax are what people see and deal with most.
-They are partly a matter of taste, and also subject of much
+They are partly a matter of taste, and also the 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
@@ -671,6 +695,9 @@ the source code.
 @node Example applications
 @unnumberedsubsec Example applications
 
+@cindex simple examples
+@cindex examples, simple
+
 We have written LilyPond as an experiment of how to condense the
 art of music engraving into a computer program.  Thanks to all
 that hard work, the program can now be used to perform useful
@@ -689,8 +716,12 @@ By adding chord names and lyrics we obtain a lead sheet.
 @lilypond[quote,ragged-right]
 <<
    \chords { c2 c f2 c }
-   \new Staff \relative c' { \time 2/4 c4 c g'4 g a4 a g2 }
-   \new Lyrics \lyricmode { twin4 kle twin kle lit tle star2 }
+   \new Staff
+   \relative c' {
+     \time 2/4
+     c4 c g' g a a g2
+   }
+   \addlyrics { twin -- kle twin -- kle lit -- tle star }
 >>
 @end lilypond
 
@@ -712,7 +743,7 @@ following example combines some more exotic constructs.
       << {
         \revert Stem #'direction
         \change Staff = down
-        \set subdivideBeams = ##t           
+        \set subdivideBeams = ##t
         g16.[
           \change Staff = up
           c'''32
@@ -743,7 +774,7 @@ following example combines some more exotic constructs.
       \override Beam  #'thickness = #0.3
       \override Stem  #'thickness = #4.0
       g'16[ b16 fis16 g16]
-      << \makeClusters { 
+      << \makeClusters {
         as16 <as b>
         <g b>
         <g cis>
@@ -788,32 +819,41 @@ makes it easy to mix music and text in documents.
 
 This section explains the different portions of the documentation.
 
+@cindex Learning Manual
+@cindex Music Glossary
+@cindex Notation Reference
+@cindex Application Usage
+@cindex Snippet List
+@cindex Internals Reference
+
 @c leave these lines wrapping around.  It's some texinfo 4.12 thing. -gp
+@c This is actually a limitation of texi2html. -jm
 @menu
-* About the Learning Manual (LM)::  this manual introduces LilyPond, giving in-depth explanations of how to create notation.
-
-* About the Music Glossary (MG)::  this manual explains musical terms and gives translations of terms in other languages.
-
-* About the Notation Reference (NR)::  this manual is the main portion of the documentation.  It provides detailed information about creating notation.  This book assumes that the reader knows basic material covered in the LM and is familiar with the English musical terms presented in the MG.
-
-* About the Application Usage (AU)::  this discusses the actual programs and operating system-specific issues.
-
-* About the Snippet List (SL)::  this is a collection of short LilyPond examples.
-
-* About the Internals Reference (IR)::  this document gives reference information about LilyPond's internal structures, which is required for constructing tweaks.
-
+* About the Learning Manual::  this manual introduces LilyPond, giving in-depth explanations of how to create notation.
+* About the Music Glossary::  this manual explains musical terms and gives translations of terms in other languages.
+* About the Notation Reference::  this manual is the main portion of the documentation.  It provides detailed information about creating notation.  This book assumes that the reader knows basic material covered in the Learning Manual and is familiar with the English musical terms presented in the Musical Glossary.
+* About the Application Usage::  this discusses the actual programs and operating system-specific issues.
+* About the Snippet List::  this is a collection of short LilyPond examples.
+* About the Internals Reference::  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.
-
 @end menu
 
 
-@node About the Learning Manual (LM)
-@unnumberedsubsec About the Learning Manual (LM)
+@node About the Learning Manual
+@unnumberedsubsec About the Learning Manual
+
+@cindex Learning Manual
 
 This book explains how to begin learning LilyPond, as well as
 explaining some key concepts in easy terms.  You should read these
 chapters in a linear fashion.
 
+There is a paragraph @strong{See also} at the end of each section,
+which contains cross-references to other sections: you should not
+follow these cross-references at first reading; when you have read all
+of the Learning Manual, you may want to read some sections again and
+follow cross-references for further reading.
+
 @itemize
 
 @item
@@ -840,7 +880,7 @@ undertaking large projects!
 
 @end itemize
 
-The LM also contains appendices which are not part of the
+The Learning Manual also contains appendices which are not part of the
 recommended linear reading.  They may be useful for later
 viewing:
 
@@ -860,28 +900,34 @@ all.
 @end itemize
 
 
-@node About the Music Glossary (MG)
-@unnumberedsubsec About the Music Glossary (MG)
+@node About the Music Glossary
+@unnumberedsubsec About the Music Glossary
 
+@cindex Music Glossary
 @cindex idiom
 @cindex jargon
 @cindex terminology
 @cindex foreign languages
 @cindex language
 
-@ref{Top,Music glossary,,music-glossary}:
+@rglosnamed{Top,Music glossary}
 this explains musical terms, and includes translations to various
 languages.  If you are not familiar with music notation or music
 terminology (especially if you are a non-native English speaker),
 it is highly advisable to consult the glossary.
 
 
-@node About the Notation Reference (NR)
-@unnumberedsubsec About the Notation Reference (NR)
+@node About the Notation Reference
+@unnumberedsubsec About the Notation Reference
+
+@cindex Notation Reference
+@cindex appendices
+@cindex reference charts
+@cindex charts, reference
 
 This book explains all the LilyPond commands which produce
 notation.  It assumes that readers are familiar with the concepts
-in the Learning manual.
+in the Learning Manual.
 
 @itemize
 
@@ -918,7 +964,8 @@ explains how to create music functions with scheme.
 
 @end itemize
 
-The NR also contains appendices with useful reference charts.
+The Notation Reference also contains appendices with useful
+reference charts.
 
 @itemize
 
@@ -947,18 +994,21 @@ a complete index.
 @end itemize
 
 
-@node About the Application Usage (AU)
-@unnumberedsubsec About the Application Usage (AU)
+@node About the Application Usage
+@unnumberedsubsec About the Application Usage
+
+@cindex Application Usage
+@cindex integrating LilyPond with other programs
 
-This book explains how to execute the program and how to integrate
+This book explains how to execute the programs and how to integrate
 LilyPond notation with other programs.
 
 @itemize
 
 @item
 @rprogram{Install}:
-explains how to install LilyPond (including compilation if
-desired).
+explains how to install LilyPondincluding compilation if
+desired.
 
 @item
 @rprogram{Setup}:
@@ -986,13 +1036,15 @@ formats to the @code{.ly} format.
 @end itemize
 
 
-@node About the Snippet List (SL)
-@unnumberedsubsec About the Snippet List (SL)
+@node About the Snippet List
+@unnumberedsubsec About the Snippet List
 
 @cindex snippets
 @cindex LSR
+@cindex Snippet List
+@cindex LilyPond Snippet Repository
 
-@ref{Top,LilyPond Snippet List,,lilypond-snippets}: this shows a
+@rlsrnamed{Top,LilyPond Snippet List}: this shows a
 selected set of LilyPond snippets from the
 @uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}
 (LSR).  All the snippets are in the public domain.
@@ -1003,14 +1055,16 @@ demonstrates new features of a development version must be added
 separately.  These are stored in @file{input/new/} in the LilyPond
 source tree.
 
-The list of snippets for each subsection of the Notation Reference
-(NR) are also linked from the @strong{See also} portion.
+The list of snippets for each subsection of the Notation Reference are
+also linked from the @strong{See also} portion.
 
 
-@node About the Internals Reference (IR)
-@unnumberedsubsec About the Internals Reference (IR)
+@node About the Internals Reference
+@unnumberedsubsec About the Internals Reference
 
-@ref{Top,Internals Reference,,lilypond-internals}: this is a set
+@cindex Internals Reference
+
+@rinternalsnamed{Top,Internals Reference}: 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 in the
@@ -1034,7 +1088,19 @@ very valuable.
 
 @itemize
 
-@item News: This is a summary of important changes
+@item
+@ifhtml
+@ifset bigpage
+@uref{../topdocs/NEWS.html,News}:
+@end ifset
+@ifclear bigpage
+@uref{../../topdocs/NEWS.html,News}:
+@end ifclear
+@end ifhtml
+@ifnothtml
+News:
+@end ifnothtml
+this is a summary of important changes
 and new features in LilyPond since the previous version.
 
 @item @uref{http://lists.gnu.org/archive/html/lilypond-user/, The
@@ -1053,20 +1119,19 @@ internals, the answer might be in these archives.
 music fragments embedded, the exact LilyPond input that was used
 to produce that image can be viewed by clicking the image.
 
-@item Init files: The location of the documentation files that are
+@item Init files: the location of the documentation files that are
 mentioned here can vary from system to system.  On occasion, this
-manual refers to initialization and example files.  Throughout
-this manual, we refer to input files relative to the top-directory
-of the source archive.  For example,
-@file{input/@/lsr/@/dirname/@/bla@/.ly} may refer to the file
-@file{lilypond@/2.x.y/@/input/@/lsr/@/dirname/@/bla@/.ly}.  On
-binary packages for the UNIX platform, the documentation and
-examples can typically be found somewhere below
+manual refers to initialization and example files.  Throughout this
+manual, we refer to input files relative to the top-directory of the
+source archive.  For example, @file{input/@/lsr/@/dirname/@/bla@/.ly}
+may refer to the file
+@file{lilypond@/2.x.y/@/input/@/lsr/@/dirname/@/bla@/.ly}.  On binary
+packages for the UNIX platform, the documentation and examples can
+typically be found somewhere below
 @file{/usr/@/share/@/doc/@/lilypond/}.  Initialization files, for
-example @file{scm/@/lily@/.scm}, or
-@file{ly/@/engraver@/-init@/.ly}, are usually found in the
-directory @file{/usr/@/share/@/lilypond/}.
+example @file{scm/@/lily@/.scm}, or @file{ly/@/engraver@/-init@/.ly},
+are usually found in the directory @file{/usr/@/share/@/lilypond/}.
+For more details, see @ref{Other sources of information}.
 
 @end itemize
 
-