X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fuser%2Ftutorial.itely;h=c0f622f7897c50bce49b446a8009d6a06b470c21;hb=f9214bac21e9926dc3248416f58190c98c4167a9;hp=5f293c90aefc1d376d90cd0774675102ca48bfd2;hpb=846d394f68d3133bf14625aa4e6770d0502c0a51;p=lilypond.git diff --git a/Documentation/user/tutorial.itely b/Documentation/user/tutorial.itely index 5f293c90ae..c0f622f789 100644 --- a/Documentation/user/tutorial.itely +++ b/Documentation/user/tutorial.itely @@ -1,6 +1,29 @@ @c -*- coding: utf-8; mode: texinfo; -*- @c This file is part of lilypond.tely +@ignore + Translation of GIT committish: FILL-IN-HEAD-COMMITTISH + + When revising a translation, copy the HEAD committish of the + version that you are working on. See TRANSLATION for details. +@end ignore + +@ignore +Tutorial guidelines: +- unless you have a really good reason, use either + @l ilypond[quote,ragged-right,verbatim] + or + @l ilypond[quote,ragged-right,verbatim,fragment,relative=2] + (without spaces) + Don't use any other relative=X commands (make it a non-fragment + example), and don't use fragment without relative=2. +- use "aes" and "ees" instead of "as" and "aes". I know it's not + correct Dutch naming, but let's not confuse people with this until + we get to the Basic notation chapter. +@end ignore + + +@c old info that will probably be removed. @c TODO: @c * more details about running lilypond; error messages, @c compiling/viewing (emacs?) @@ -14,10 +37,9 @@ @node Tutorial @chapter Tutorial -This tutorial starts with a short introduction to the LilyPond music -language. After this first contact we will show you how to produce -printed output. Then you will be able to create and print your own -sheets of music. +This tutorial starts with an introduction to the LilyPond music +language and how to produce printed music. After this first contact we +will explain how to create common musical notation. @ifhtml Many people learn programs by trying and fiddling around with the @@ -26,239 +48,130 @@ picture in the HTML version of this manual, you will see the exact LilyPond input that was used to generate that image. Try it on this image -@lilypond[fragment,quote,ragged-right,relative=2] -c-\markup { \bold \huge { Click here. } } +@c no verbatim here +@lilypond[quote,ragged-right] +\relative c'' { + c-\markup { \bold \huge { Click here. } } +} @end lilypond -@end ifhtml -By cutting and pasting the full input into a test file, you have a +By cutting and pasting everything in the @qq{ly snippet} section, you have a starting template for experiments. If you like learning in this way, -you will probably want to print out or bookmark -@ifhtml -the +you will probably want to print out or bookmark the +@ref{Cheat sheet}, which is a table listing of the most common +commands for quick reference. @end ifhtml -@ref{Cheat sheet}, which is a table listing all commands for quick -reference. @menu * First steps:: -* Running LilyPond for the first time:: -* More about pitches:: -* Entering ties:: -* Automatic and manual beams:: -* Octave entry:: -* Music expressions explained:: -* More staves:: -* Adding articulation marks to notes:: -* Combining notes into chords:: -* Advanced rhythmic commands:: -* Commenting input files:: -* Printing lyrics:: -* A lead sheet:: -* Adding titles:: -* Single staff polyphony:: -* Piano staves:: -* Organizing larger pieces:: -* An orchestral part:: +* Single staff notation:: +* Multiple notes at once:: +* Songs:: +* Final touches:: @end menu @node First steps @section First steps -The first example demonstrates how to enter the most elementary piece -of music, a @rglos{scale}. A @rglos{note} can be entered by typing its -name, from @samp{a} through @samp{g}. So, if you enter +This section gives a basic introduction to working with LilyPond. + +@menu +* Compiling a file:: +* Simple notation:: +* Working on text files:: +* How to read the tutorial:: +@end menu + + +@node Compiling a file +@subsection Compiling a file + +The first example demonstrates how to start working with LilyPond. To +create sheet music, we write a text file that specifies the +notation. For example, if we write @example @{ -c d e f g a b + c' e' g' e' @} @end example @noindent the result looks like this -@lilypond[fragment,quote,notime,relative=1] -c d e f g a b +@c in this case we don't want verbatim +@lilypond[quote,ragged-right] +{ + c' e' g' e' +} @end lilypond -Every piece of LilyPond input needs to have @{curly braces@} placed -around the input. For the rest of this manual, most examples will -omit these braces, but don't forget them in your own music! - -In addition, many examples use @code{relative} mode. This is explained -in @ref{Octave entry}; for now simply be aware that some examples -should be placed inside @code{\relative @{ @emph{...music...} @}} +@strong{Warning:} Every piece of LilyPond input needs to have @strong{@{ curly +braces @}} placed around the input. The braces should also be +surrounded by a space unless they are at the beginning or end of a +line to avoid ambiguities. These may be omitted in some examples in this +manual, but don't forget them in your own music! @cindex Case sensitive -Finally, LilyPond input is case sensitive. @code{ @{ c d e @} } is -valid input; @code{ @{ C D E @} } will produce an error message. - -The @rglos{duration} of a note is specified by a number after the note -name. @samp{1} for a @rglos{whole note}, @samp{2} for a @rglos{half note}, -@samp{4} for a @rglos{quarter note} and so on - -@example -a1 a2 a4 a16 a32 -@end example - -@lilypond[fragment,quote,notime,relative=2] -\set Staff.autoBeaming = ##f -{ a1 a2 a4 a16 a32 s16_" " } -@end lilypond - -If you do not specify a duration, the duration last entered is used -for the next notes. The duration of the first note in input defaults -to a quarter - -@example -a a8 a a2 a -@end example - -@lilypond[fragment,quote,notime,relative=2] -{ a a8 a a2 a s16_" " } -@end lilypond - - -A @rglos{rest} is entered just like a note, but with the name @samp{r} - -@example -r2 r4 r8 r16 -@end example - -@lilypond[fragment,quote,notime] -r2 r4 r8 r16 s16_" " -@end lilypond - -Add a dot @samp{.} after the duration to get a @rglos{dotted note} - -@example -a2. a4 a8. a16 -@end example - -@lilypond[fragment,quote,notime,relative=1] -{ a2. a4 a8. a16 s16_" " } -@end lilypond - -The (or @rglos{time signature}) can be set with the @code{\time} -command - -@example -\time 3/4 -\time 6/8 -\time 4/4 -@end example - -@c A clef here may lead to confusion, remove it. -@lilypond[fragment,quote] -\override Staff.Clef #'transparent = ##t -\time 3/4 -s4_" " -\time 6/8 -s4_" " -\time 4/4 -s16_" " -@end lilypond +In addition, LilyPond input is @strong{case sensitive}. @code{ @{ c d e @} } +is valid input; @code{ @{ C D E @} } will produce an error message. -The @rglos{clef} can be set using the @code{\clef} command - -@example -\clef treble -\clef bass -\clef alto -\clef tenor -@end example - -@lilypond[fragment,quote,notime] -\clef treble -s4_" " -\clef bass -s4_" " -\clef alto -s4_" " -\clef tenor -s16_" " -@end lilypond - -Remember to enclose the notes and commands in curly braces -@code{@{@tie{}@dots{}@tie{}@}} to convert it to printable output. - -@c @li lypond[fragment,quote,noindent,line-width=55\staff-space] -@lilypond[fragment,quote,noindent,verbatim] -\time 3/4 -\clef bass -c2 e4 g2. -f4 e d c2 r4 -@end lilypond - -For more information on - -@quotation -@table @asis -@item Entering pitches and durations -see -@ref{Pitches}, and @ref{Durations}. -@item Clefs -see @ref{Clef}. -@item Rests -see @ref{Rests}. -@item Time signatures and other timing commands -see @ref{Time signature}. -@end table -@end quotation +@sp 1 +@subheading Entering music and viewing output -@node Running LilyPond for the first time -@section Running LilyPond for the first time +In this section we will explain what commands to run +and how to view or print the output. -@c cheesy title to avoid clash with chapter name. - -In the last section we explained what kind of things you can enter in -a LilyPond file. In this section we will explain what commands to run -and how to view or print the output. If you have not used LilyPond -before, want to test your setup, or want to run an example file -yourself, read this section. - -@unnumberedsubsec MacOS X +@subsubheading MacOS X If you double click LilyPond.app, it will open with an example file. Save it, for example, to @file{test.ly} on your Desktop, and then process it with the menu command @samp{Compile > Typeset File}. The resulting PDF file will be displayed on your screen. -Be warned that the first-ever run will take a minute or two, because -all of the system fonts have to be analyzed first. +Be warned that the first time you ever run lilypond will take a minute +or two because all of the system fonts have to be analyzed first. -@unnumberedsubsec Windows +For future use of LilyPond, you should begin by selecting "New" +or "Open". + +@subsubheading Windows 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, since these insert formatting codes that will confuse -LilyPond.} and enter +programmer-oriented editor with UTF-8 support will do, for example +Notepad. Do not use a word processor, since these insert formatting +codes that will confuse LilyPond.} and enter -@example -@{ c'4 e' g' @} -@end example +@verbatim +{ + c' e' g' e' +} +@end verbatim Save it on the desktop as @file{test.ly} and make sure that it is not called @file{test.ly.TXT}. Double clicking @file{test.ly} will process the file and show the resulting PDF file. -@unnumberedsubsec Unix +@subsubheading Unix 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 +@code{joe}@footnote{There are macro files for VIM addicts, and there is a @code{LilyPond-mode} for Emacs addicts. If they have not been -installed already, refer to the file @file{INSTALL.txt}.} In your +installed already, refer to the file @file{INSTALL.txt}. These +easiest editing environment is @file{LilyPondTool}. See +@ref{Editor support} for more information.}. In your text editor, enter the following input and save the file as @file{test.ly} -@example -@{ c'4 e' g' @} -@end example +@verbatim +{ + c' e' g' e' +} +@end verbatim @noindent To process @file{test.ly}, proceed as follows @@ -272,471 +185,544 @@ You will see something resembling @example lilypond test.ly -GNU LilyPond 2.6.0 +GNU LilyPond 2.10.0 Processing `test.ly' Parsing... Interpreting music... [1] -Preprocessing graphical objects... +Preprocessing graphical objects... Calculating line breaks... [2] Layout output to `test.ps'... Converting to `test.pdf'... @end example -@cindex DVI file +@cindex PDF file @cindex Viewing music -@cindex xdvi + @noindent The result is the file @file{test.pdf} which you can print or view with the standard facilities of your operating system.@footnote{If -your system does not have any tools installed, you can try +your system does not have any such tools installed, you can try @uref{http://@/www@/.cs@/.wisc@/.edu/@/~ghost/,Ghostscript}, a freely available package for viewing and printing PDF and PostScript files.} -@node More about pitches -@section More about pitches -A @rglos{sharp} (@texisharp{}) pitch is made by adding @samp{is} to -the name, a @rglos{flat} (@texiflat{}) pitch by adding @samp{es}. As -you might expect, a @rglos{double sharp} or @rglos{double flat} is -made by adding @samp{isis} or @samp{eses}@footnote{This syntax -derived from note naming conventions in Nordic and Germanic languages, -like German and Dutch.} - -@example -cis1 ees fisis aeses -@end example - -@lilypond[fragment,quote,notime] -\set Score.timing = ##f -\transpose c c' { cis1 ees fisis aeses s16_" " } -@end lilypond +@node Simple notation +@subsection Simple notation -@cindex key signature, setting -The key signature is set with the command @code{\key}, followed by -a pitch and @code{\major} or @code{\minor} - -@example -\key d \major -g1 -\key c \minor -g -@end example +LilyPond will add some notation elements automatically. In the next +example, we have only specified four pitches, but LilyPond has +added a clef, time signature, and rhythms. -@lilypond[fragment,quote,notime,fragment] -\key d \major -g'1 -\key c \minor -g' +@lilypond[quote,ragged-right,verbatim] +{ + c' e' g' e' +} @end lilypond @noindent -Key signatures together with the pitches (including alterations) are -used to determine when to print accidentals. This is a -feature that often causes confusion to newcomers, so let us explain it -in more detail. +This behavior may be altered, but in most cases these automatic values +are useful. -LilyPond makes a sharp distinction between musical content and -layout. The alteration (flat, natural or sharp) of a note is part of -the pitch, and is therefore musical content. Whether an accidental (a -flat, natural or sharp @emph{sign}) is printed in front of the -corresponding note is a question of layout. Layout is something that -follows rules, so accidentals are printed automatically according to -those rules. The pitches in your music are works of art, so they will -not be added automatically, and you must enter what you want to hear. +@subheading Pitches -In this example +The easiest way to enter notes is by using @code{\relative} mode. In +this mode, the @rglos{interval} between the previous note and the +current note is assumed to be within a @rglos{fourth}. We begin by +entering the most elementary piece of music, a @rglos{scale}. -@lilypond[quote,notime,fragment] -\key d \major -d' cis' fis' +@lilypond[quote,ragged-right,verbatim] +\relative c' { + c d e f + g a b c +} @end lilypond -@noindent -no note has an explicit accidental, but you still must enter +The initial note is @rglos{middle C}. Each successive note +is within a fourth of the previous note -- in other words, the first +@samp{c} is the closest C to middle C. This is followed by the closest +D to the previous note. We can create melodies which have larger intervals: -@example -\key d \major -d cis fis -@end example +@lilypond[quote,ragged-right,verbatim] +\relative c' { + d f a g + c b f d +} +@end lilypond @noindent -The code @samp{d} does not mean `print a black dot just below the -staff.' Rather, it means: `a note with pitch D-natural.' In the key -of A-flat major, it does get an accidental +As you may notice, this example does not start on middle C. The first +note -- the @samp{d} -- is the closest D to middle C. -@lilypond[quote,notime,fragment,relative=1,verbatim] -\key as \major -d +To add intervals that are larger than a fourth, we can raise the octave +by adding a single quote @code{'} (or apostrophe) to the note name. We can +lower the octave by adding a comma @code{,} to the note name. + +@lilypond[quote,ragged-right,verbatim] +\relative c'' { + a a, c' f, + g g'' a,, f' +} @end lilypond -Adding all alterations explicitly might require a little more effort -when typing, but the advantage is that transposing is easier, and -accidentals can be printed according to different conventions. See -@ref{Automatic accidentals}, for some examples how accidentals can be printed -according to different rules. +@noindent +To change a note by two (or more!) octaves, we use multiple @code{''} or +@code{,,} -- but be careful that you use two single quotes @code{''} and +not one double quote @code{"}@tie{}! The initial value in +@code{\relative c'} may also be modified like this. -For more information on +@subheading Durations (rhythms) -@quotation -@table @asis -@item Accidentals -see @ref{Automatic accidentals}. +The @rglos{duration} of a note is specified by a number after the note +name. @samp{1} for a @rglos{whole note}, @samp{2} for a @rglos{half note}, +@samp{4} for a @rglos{quarter note} and so on. Beams are added +automatically. -@item Key signature -see @ref{Key signature}. -@end table -@end quotation +@lilypond[quote,ragged-right,verbatim] +\relative c'' { + a1 + a2 a4 a8 a + a16 a a a a32 a a a a64 a a a a a a a a2 +} +@end lilypond -@node Entering ties -@section Entering ties +@noindent +If you do not specify a duration, the previous duration is used +for the next note. The duration of the first note defaults to a quarter. -@cindex tie -A @rglos{tie} is created by appending a tilde @samp{~} to the first -note being tied +To create @rglos{dotted notes}, add a dot @samp{.} to the duration number. -@lilypond[quote,notime,fragment,verbatim,relative=3] -g4~ g a2~ a4 +@lilypond[quote,ragged-right,verbatim] +\relative c'' { + a a a4. a8 + a8. a16 a a8. a8 a4. +} @end lilypond -For more information on Ties see @ref{Ties}. +@subheading Rests +A @rglos{rest} is entered just like a note with the name @samp{r}: -@node Automatic and manual beams -@section Automatic and manual beams +@lilypond[quote,ragged-right,verbatim] +\relative c'' { + a r r2 + r8 a r4 r4. r8 +} +@end lilypond -@cindex beams, by hand -All @rglos{beam}s are drawn automatically -@lilypond[quote,fragment,relative=2,verbatim] -a8 ais d es r d -@end lilypond +@subheading Time signature -@noindent -If you do not like where beams are put, they can be entered by -hand. Mark the first note to be beamed with @samp{[} and the last one -with @samp{]}. +The @rglos{time signature}) can be set with the @code{\time} command: -@lilypond[quote,fragment,relative=2,verbatim] -a8[ ais] d[ es r d] +@lilypond[quote,ragged-right,verbatim] +\relative c'' { + \time 3/4 + a4 a a + \time 6/8 + a4. a + \time 4/4 + a4 a a a +} @end lilypond -For more information on beams, see @ref{Manual beams}. +@subheading Clef -Here are key signatures, accidentals and ties in action +The @rglos{clef} can be set using the @code{\clef} command: -@lilypond[fragment,quote,noindent,line-width=50\staff-space,verbatim] -\relative c'' { - \time 4/4 - \key g \minor +@lilypond[quote,ragged-right,verbatim] +\relative c' { \clef treble - r4 r8 a8 gis4 b - a8 d4.~ d e,8 - fis4 fis8 fis8 eis4 a8 gis~ - gis2 r2 + c1 + \clef alto + c1 + \clef tenor + c1 + \clef bass + c1 } @end lilypond -@cindex accidentals +@subheading All together -@noindent -There are some interesting points to note in this example. Bar lines -and beams are drawn automatically. Line breaks are calculated -automatically; it does not matter where the line breaks are in the -source file. Finally, the order in which time, key, and clef changes -are entered is not relevant: in the printout, these are ordered -according to standard notation conventions. - +Here is a small example showing all these elements together: +@lilypond[quote,ragged-right,verbatim] +\relative c, { + \time 3/4 + \clef bass + c2 e8 c' g'2. + f4 e d c4 c, r4 +} +@end lilypond -@node Octave entry -@section Octave entry +@moreinfo +@quotation +@table @asis +@item Entering pitches and durations +see @ref{Pitches} and @ref{Durations}. +@item Rests +see @ref{Rests}. +@item Time signatures and other timing commands +see @ref{Time signature}. +@item Clefs +see @ref{Clef}. +@end table +@end quotation -@c Tim wants to move this quotes example just before the: quotes-do not-work -@c score, but we'd need to remove quotes from the other two (key and -@c tie) examples... +@node Working on text files +@subsection Working on text files -@c better to have this just before the `octaves are bad' snipped -@c but we'd need to remove the ', from \key and tie -To raise a note by an octave, add a high quote @code{'} (apostrophe) to -the note name, to lower a note one octave, add a `low quote' @code{,} -(comma). Middle C is @code{c'} +LilyPond input files are treated like files in most programming languages: +they are case sensitive, white-space insensitive, expressions are +formed with curly braces @{ @}, and comments are denoted with @code{%} or +@code{%@{ .. %@}}. -@lilypond[quote,notime,fragment,verbatim] -c'4 c'' c''' \clef bass c c, -@end lilypond +If the previous sentence sounds like nonsense, don't worry! We'll explain +what all these terms mean: -An example of the use of quotes is in the following Mozart fragment +@itemize -@lilypond[quote,ragged-right,fragment,verbatim] -\key a \major -\time 6/8 -cis''8. d''16 cis''8 e''4 e''8 -b'8. cis''16 b'8 d''4 d''8 -@end lilypond +@cindex Case sensitive +@item @strong{Case sensitive}: +it matters whether you enter a letter +in lower case (i.e. @code{a, b, s, t}) or upper case (i.e. +@code{A, B, S, T}). Notes are lower case: @code{ @{ c d e @} } +is valid input; @code{ @{ C D E @} } will produce an error message. + +@item @strong{Whitespace insensitive}: +it does not matter how many +spaces (or new lines) you add. @code{ @{ c d e @}} means the same thing +as @code{ @{ c @ @ @ @ @ d e @} } and +@example + @{ +c d + e @} +@end example @noindent -This 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. This is the -most convenient way to copy existing music. +Of course, the previous example is hard to read. A good rule of thumb +is to indent code blocks with either a tab or two spaces: +@example +@{ + c d e +@} +@end example -In relative mode, a note without octavation quotes (i.e. the @code{'} -or @code{,} after a note) is chosen so that it is closest to the -previous one. For example, @samp{c f} goes up while @samp{c g} goes -down. +@item @strong{Expressions:} +Every piece of LilyPond input needs to have +@strong{@{ curly braces @}} placed around the input. These braces tell +LilyPond that the input is a single music expression, just like +parenthesis @samp{()} in mathematics. The braces should +be surrounded by a space unless they are at the beginning or end of a +line to avoid ambiguities. -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'}) +A function (such as @code{\relative @{ @}} ) also counts as a single +music expression. +@cindex comments +@cindex line comment +@cindex block comment +@item @strong{Comments}: +A comment is a remark for the human reader of the music input; it is +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; anything after @samp{%} on that line is +ignored. A block comment marks a whole section of music +input as a comment. Anything that is enclosed in @code{%@{} and @code{%@}} is +ignored. The following fragment shows possible uses for comments +@example +% notes for twinkle twinkle follow + c4 c g' g a a g2 -@lilypond[quote,notime,fragment,verbatim] -\relative { - c' f c g c -} -@end lilypond +%@{ + This line, and the notes below + are ignored, since they are in a + block comment. + g g f f e e d d c2 +%@} +@end example -Since most music has small intervals, pieces can be written almost -without octavation quotes in relative mode. The previous example is -entered as +@end itemize -@lilypond[quote,ragged-right,verbatim] -\relative { - \key a \major - \time 6/8 - cis'8. d16 cis8 e4 e8 - b8. cis16 b8 d4 d8 -} -@end lilypond +There are more tips for constructing input files in +@ref{Suggestions for writing LilyPond files}. -@c needed better, maybe even redundant explanation -@c added another example below. -@c grappig: Pa vond het heel logies, en slim toen-i eenmaal begreep. -@c in eerste instantie drong het `relative' niet door zonder extra uitleg. -Larger intervals are made by adding octavation quotes. -@lilypond[quote,notime,verbatim,fragment] -\relative c { - c'' f, f c' c g' c, -} -@end lilypond +@node How to read the tutorial +@subsection How to read the tutorial -In summary, quotes or commas no longer determine the absolute height -of a note in @code{\relative} mode. Rather, the height of a note is -relative to the previous one, and changing the octave of a single note -shifts all following notes an octave up or down. +As we saw in @ref{Working on text files}, LilyPond input must be +surrounded by @{ @} marks or a @code{\relative c'' @{ ... @}}. For the +rest of this manual, most examples will omit this. -For more information on relative octaves see @ref{Relative octaves}, -and @ref{Octave check}. +If you are reading the HTML documentation and wish to see the exact +exact LilyPond code that was used to create the example, simply click +on the picture. If you are not reading the HTML version, you could +copy and paste the displayed input, but you @strong{must} add the +@code{\relative c'' @{ @}} like this: +@example +\relative c'' @{ + ... example goes here... +@} +@end example -@node Music expressions explained -@section Music expressions explained +Why omit the braces? Most examples +in this manual can be inserted into the middle of a longer piece of +music. For these examples, it does not make sense to add +@code{\relative c'' @{ @}} -- you should not place a @code{\relative} +inside another @code{\relative}, so you would not be able to copy +a small documentation example and paste it inside a longer piece +of your own. -In input files, music is represent by so-called @emph{music -expression}s. We have already seen some in the previous examples; -a single note is a music expression +@node Single staff notation +@section Single staff notation -@lilypond[fragment,quote,verbatim,relative=3] -a4 -@end lilypond +This section introduces common notation that is used for one voice +on one staff. -Enclosing a group of notes in braces creates a new music -expression +@menu +* Relative note names:: +* Accidentals and key signatures:: +* Ties and slurs:: +* Articulation and dynamics:: +* Automatic and manual beams:: +* Advanced rhythmic commands:: +@end menu -@lilypond[fragment,quote,verbatim,relative=3] -{ a4 g4 } -@end lilypond -Putting a bunch of music expressions (e.g., notes) in braces, means that -they should be played in sequence. The result again is a music -expression, which can be grouped with other expressions sequentially. -Here, the expression from the previous example is combined with two -notes +@node Relative note names +@subsection Relative note names -@lilypond[fragment,quote,verbatim,relative=3] -{ { a4 g } f g } -@end lilypond +As we saw in @ref{Simple notation}, LilyPond calculates the pitch of +each note relative to the previous one@footnote{There is another mode of +entering pitches, @ref{Absolute note names}, but in practice relative +mode is much easier and safer to use.}. If no extra octave marks +(@code{'} and @code{,}) are added, it assumes that each pitch is within +a fourth of the previous note. -This technique is useful for non-monophonic music. To enter music -with more voices or more staves, we also combine expressions in -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 separate notes) are combined simultaneously +LilyPond examines pitches based on the note names -- in other words, +an augmented fourth is @emph{not} the same as a diminished fifth. If we +begin at a C, then an F-sharp will be placed a higher than the C, while +a G-flat will be placed lower than the C. -@lilypond[fragment,quote,verbatim,relative=3] -<< - { a4 g } - { f e } - { d b } ->> +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +c2 fis +c2 ges @end lilypond -This mechanism is similar to mathematical -formulas: a big formula is created by composing small formulas. Such -formulas are called expressions, and their definition is recursive, so -you can make arbitrarily complex and large expressions. For example, +@moreinfo +@quotation +@table @asis +@item Relative octaves +see @ref{Relative octaves}. +@item Octave check +see @ref{Octave check}. +@end table +@end quotation -@example -1 -1 + 2 -(1 + 2) * 3 +@node Accidentals and key signatures +@subsection Accidentals and key signatures -((1 + 2) * 3) / (4 * 5) -@end example +@subheading Accidentals -@cindex expression -@cindex music expression -This is a sequence of expressions, where each expression is contained -in the next (larger) 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, which is necessary -for complex music like polyphonic scores. +A @rglos{sharp} pitch is made by adding @samp{is} to +the name, and a @rglos{flat} pitch by adding @samp{es}. As +you might expect, a @rglos{double sharp} or @rglos{double flat} is +made by adding @samp{isis} or @samp{eses}@footnote{This syntax +derived from note naming conventions in Nordic and Germanic languages, +like German and Dutch. To use other names for accidentals, see +@ref{Note names in other languages}.} -Note that this example only has one staff, whereas -the previous example had three separate staves. That is because this -example begins with a single note. To determine the number of staves, -LilyPond looks at the first element. If it is a single note, there is one -staff; if there is a simultaneous expression, there is more than one staff. +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +cis1 ees fisis, aeses +@end lilypond -@lilypond[fragment,quote,verbatim,relative=2] -{ - c <> - << { e f } { c <> } >> -} +@cindex key signature, setting +@subheading Key signatures + +The key signature is set with the command @code{\key} followed by +a pitch and @code{\major} or @code{\minor}. + +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +\key d \major +a1 +\key c \minor +a @end lilypond -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, +@sp 1 -@example -<< - @{ - @dots{} - @} - @{ - @dots{} - @} ->> -@end example +@subheading Warning: key signatures and pitches -Some editors have special support for entering LilyPond, and can help -indenting source files. See @ref{Editor support} for more information. +To determine whether to print an accidental, LilyPond examines the +pitches and the key signature. The key signature only effects +the @emph{printed} accidentals, not the actual pitches! This is a +feature that often causes confusion to newcomers, so let us explain it +in more detail. -@node More staves -@section More staves +LilyPond makes a sharp distinction between musical content and +layout. The alteration (flat, natural or sharp) of a note is part of +the pitch, and is therefore musical content. Whether an accidental (a +@emph{printed} flat, natural or sharp sign) is printed in front of the +corresponding note is a question of layout. Layout is something that +follows rules, so accidentals are printed automatically according to +those rules. The pitches in your music are works of art, so they will +not be added automatically, and you must enter what you want to hear. -To print more than one staff, each piece of music that makes up a -staff is marked by adding @code{\new Staff} before it. These -@code{Staff} elements are then combined in parallel with @code{<<} and -@code{>>}, as demonstrated here +In this example -@lilypond[quote,fragment,verbatim] -<< - \new Staff { \clef treble c'' } - \new Staff { \clef bass c } ->> +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +\key d \major +d cis fis @end lilypond +@noindent +No note has a printed accidental, but you must still add the @samp{is} to +@code{cis} and @code{fis}. -The command @code{\new} introduces a `notation context.' A notation -context is an environment in which musical events (like notes or -@code{\clef} commands) are interpreted. For simple pieces, such -notation contexts are created automatically. For more complex pieces, it -is best to mark contexts explicitly. This ensures that each fragment -gets its own stave. +The code @samp{e} does not mean @qq{print a black dot just below the +first line of the staff.} Rather, it means: @qq{there is a note with +pitch E-natural.} In the key of A-flat major, it @emph{does} get an +accidental: -There are several types of contexts. @code{Staff}, @code{Voice} and -@code{Score} handle melodic notation, while @code{Lyrics} sets lyric -texts and @code{ChordNames} prints chord names. +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +\key aes \major +e +@end lilypond -In terms of syntax, prepending @code{\new} to a music expression -creates a bigger music expression. In this way it resembles the minus -sign in mathematics. The formula @math{(4+5)} is an expression, so -@math{-(4+5)} is a bigger expression. +Adding all alterations explicitly might require a little more effort +when typing, but the advantage is that transposing is easier, and +accidentals can be printed according to different conventions. See +@ref{Automatic accidentals} for some examples how accidentals can be printed +according to different rules. -We can now typeset a melody with two staves +@moreinfo +@quotation +@table @asis +@item Accidentals +see @ref{Accidentals} and @ref{Automatic accidentals}. +@item Key signature +see @ref{Key signature}. +@end table +@end quotation -@c TODO: (c) status of this Paul McCartney (?) song (let's all stand together) -@lilypond[fragment,quote,verbatim,ragged-right] -\relative << - \new Staff { - \time 3/4 - \clef treble - - e'2 d4 c2 b4 a8[ a] - b[ b] g[ g] a2. - } - \new Staff { - \clef bass - c,,2 e4 g2. - f4 e d c2. - } ->> +@node Ties and slurs +@subsection Ties and slurs + +@cindex ties +@subheading Ties +A @rglos{tie} is created by appending a tilde @samp{~} to the first +note being tied + +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +g4~ g c2~ +c4 ~ c8 a8 ~ a2 @end lilypond -For more information on contexts see the description in -@ref{Interpretation contexts}. +@cindex slurs +@subheading Slurs +A @rglos{slur} is a curve drawn across many notes. The starting note +and ending note are marked with @samp{(} and @samp{)} respectively. +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +d4( c16) cis( d e c cis d) e( d4) +@end lilypond -@node Adding articulation marks to notes -@section Adding articulation marks to notes +@cindex slurs, phrasing +@cindex phrasing slurs +@subheading Phrasing slurs + +@cindex phrasing slurs +Slurs to indicate longer phrasing can be entered with @code{\(} and +@code{\)}. You can have both legato slurs and phrasing slurs at the +same time, but you cannot have simultaneous slurs or simultaneous +phrasing slurs. + +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +a8(\( ais b c) cis2 b'2 a4 cis,\) +@end lilypond + +@sp 1 + +@cindex slurs versus ties +@subheading Warnings: slurs vs. ties + +A slur looks like a @rglos{tie}, but it has a different meaning. A +tie simply makes the first note 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 +can be nested. + +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +c2~( c8 fis fis4 ~ fis2 g2) +@end lilypond + +@moreinfo +@quotation +@table @asis +@item Ties +see @ref{Ties}. +@item Slurs +see @ref{Slurs}. +@item Phrasing slurs +see @ref{Phrasing slurs}. +@end table +@end quotation + + +@node Articulation and dynamics +@subsection Articulation and dynamics @cindex articulation @cindex accents @cindex staccato +@subheading Articulations -Common accents can be added to a note using a dash (@samp{-}) and a -single character +Common @rglos{articulations} can be added to a note using a dash @samp{-} +and a single character: -@lilypond[fragment,quote,verbatim,relative=2] -c-. c-- c-> c-^ c-+ c-_ +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +c-. c-- c-> c-^ c-+ c-_ @end lilypond @cindex fingering +@subheading Fingerings Similarly, fingering indications can be added to a note using a dash -(@samp{-}) and the digit to be printed +(@samp{-}) and the digit to be printed: -@lilypond[fragment,quote,verbatim,relative=2] +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] c-3 e-5 b-2 a-1 @end lilypond Articulations and fingerings are usually placed automatically, but you can specify a direction using @samp{^} (up) or @samp{_} (down). You can -also use multiple articulations on the same note. In most cases, however, +also use multiple articulations on the same note. However, in most cases it is best to let LilyPond determine the articulation directions. -@lilypond[fragment,quote,verbatim,relative=2] +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] c_-^1 d^. f^4_2-> e^-_+ @end lilypond +@subheading Dynamics Dynamic signs are made by adding the markings (with a backslash) to the note -@lilypond[fragment,quote,verbatim,relative=2] -c\ff c\mf +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +c\ff c\mf c\p c\pp @end lilypond @cindex dynamics @@ -747,285 +733,481 @@ Crescendi and decrescendi are started with the commands @code{\<} and @code{\>}. An ending dynamic, for example @code{\f}, will finish the (de)crescendo, or the command @code{\!} can be used -@lilypond[fragment,quote,verbatim,relative=2] +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] c2\< c2\ff\> c2 c2\! @end lilypond +@moreinfo +@quotation +@table @asis +@item Articulations +see @ref{Articulations}. +@item Fingering +see @ref{Fingering instructions}. +@item Dynamics +see @ref{Dynamics}. +@end table +@end quotation -@cindex slur +@node Automatic and manual beams +@subsection Automatic and manual beams -A @rglos{slur} is a curve drawn across many notes, and indicates -legato articulation. The starting note and ending note are marked -with @samp{(} and @samp{)}, respectively +@cindex beams, by hand +All @rglos{beam}s are drawn automatically: -@lilypond[fragment,quote,fragment,relative=2,verbatim] -d4( c16) cis( d e c cis d) e( d4) +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +a8 ais d ees r d c16 b a8 @end lilypond -@cindex slurs versus ties -A slur looks like a @rglos{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 -can be nested +@noindent +If you do not like the automatic beams, they may be overridden +manually. Mark the first note to be beamed with @samp{[} and the last one +with @samp{]}. -@lilypond[quote,fragment,relative=2] -c2~( c8 fis fis4 ~ fis2 g2) +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +a8[ ais] d[ ees r d] a b @end lilypond -@cindex phrasing slurs -Slurs to indicate phrasing can be entered with @code{\(} and -@code{\)}, so you can have both legato slurs and phrasing slurs at the -same time. You cannot have simultaneous slurs or simultaneous -phrasing slurs. +@moreinfo +@quotation +@table @asis +@item Automatic beams +see @ref{Automatic beams}. +@item Manual beams +see @ref{Manual beams}. +@end table +@end quotation + + +@node Advanced rhythmic commands +@subsection Advanced rhythmic commands + +@cindex pickup +@cindex anacruse +@cindex partial measure +@subheading Partial measure + +A pickup (or @rglos{anacrusis}) is entered with the keyword +@code{\partial}. It is followed by a duration: @code{\partial 4} is +a quarter note pickup and @code{\partial 8} an eighth note. -@lilypond[quote,fragment,relative=2,verbatim] -a8(\( ais b c) cis2 b'2 a4 cis, c\) +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +\partial 8 +f8 c2 d +@end lilypond + +@cindex tuplets +@cindex triplets +@subheading Tuplets + +Tuplets are made with the @code{\times} keyword. It takes two +arguments: a fraction and a piece of music. The duration of the piece +of music is multiplied by the fraction. Triplets make notes occupy +2/3 of their notated duration, so a triplet has 2/3 as its fraction + +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +\times 2/3 { f8 g a } +\times 2/3 { c r c } +\times 2/3 { f,8 g16 a g a } +\times 2/3 { d4 a8 } @end lilypond +@cindex grace notes +@cindex acciaccatura +@cindex appoggiatura +@subheading Grace notes + +Grace notes are created with the @code{\grace} command, although they +can also be created by prefixing a music expression with the +keyword @code{\appoggiatura} or @code{\acciaccatura} -For more information on +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +c2 \grace { a32 b} c2 +c2 \appoggiatura b16 c2 +c2 \acciaccatura b16 c2 +@end lilypond +@moreinfo @quotation @table @asis -@item Fingering -see @ref{Fingering instructions}. -@item Articulations -see @ref{Articulations}. -@item Slurs -see @ref{Slurs}. -@item Phrasing slurs -see @ref{Phrasing slurs}. -@item Dynamics -see @ref{Dynamics}. +@item Grace notes +see @ref{Grace notes}, +@item Tuplets +see @ref{Tuplets}, +@item Pickups +see @ref{Partial measures}. @end table @end quotation -@node Combining notes into chords -@section Combining notes into chords +@node Multiple notes at once +@section Multiple notes at once -@cindex chords -Chords can be made by surrounding pitches with angle brackets. -Angle brackets are the symbols @samp{<} and @samp{>}. +This section introduces having more than one note at the same time: +multiple instruments, multiple staves for a single instrument (i.e. piano), +and chords. -@lilypond[quote,relative=1,fragment,verbatim] -r4 4 8 +Polyphony in music refers to having more than one voice occurring in +a piece of music. Polyphony in LilyPond refers to having more than +one voice on the same staff. + +@menu +* Music expressions explained:: +* Multiple staves:: +* Piano staves:: +* Single staff polyphony:: +* Combining notes into chords:: +@end menu + + +@node Music expressions explained +@subsection Music expressions explained + +In LilyPond input files, music is represented by @emph{music +expressions}. A single note is a music expression, although it is not +valid input all on its own. + +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +a4 @end lilypond +Enclosing a group of notes in braces creates a new music expression: -You can combine markings like beams and ties with chords. They must -be placed outside the angled brackets +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +{ a4 g4 } +@end lilypond + +Putting a group of music expressions (e.g. notes) in braces means that +are in sequence (i.e. each one follows the previous one). The result +is another music expression: + +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +{ { a4 g } f g } +@end lilypond + +@subheading Simultaneous music expressions: multiple staves + +This technique is useful for polyphonic music. To enter music +with more voices or more staves, we combine expressions in +parallel. To indicate that two voices should play at the same time +simple enter a simultaneous combination of music expressions. A +@q{simultaneous} music expression is formed by enclosing expressions inside +@code{<<} and @code{>>}. In the following example, three sequences (all +containing two separate notes) are combined simultaneously: -@lilypond[quote,relative=1,fragment,verbatim] -r4 8[ ]~ +@lilypond[quote,ragged-right,verbatim] +\relative c'' { + << + { a4 g } + { f e } + { d b } + >> +} @end lilypond +Note that we have indented each level of the input with a different +amount of space. LilyPond does not care how much (or little) space there +is at the beginning of a line, but indenting LilyPond code like this makes +it much easier for humans to read. + +@subheading Simultaneous music expressions: single staff + +To determine the number of staves in a piece, LilyPond looks at the first +exression. If it is a single note, there is one staff; if there is a +simultaneous expression, there is more than one staff. + +@lilypond[quote,ragged-right,verbatim] +\relative c'' { + c2 <> + << { e f } { c <> } >> +} +@end lilypond + +@cindex expression +@cindex music expression +@subheading Analogy: mathematical expressions + +This mechanism is similar to mathematical +formulas: a big formula is created by composing small formulas. Such +formulas are called expressions, and their definition is recursive so +you can make arbitrarily complex and large expressions. For example, + @example -r4 8\>( \!) +1 + +1 + 2 + +(1 + 2) * 3 + +((1 + 2) * 3) / (4 * 5) @end example -@lilypond[quote,relative=1,fragment] -\slurUp -r4 8\>( \!) +This is a sequence of expressions, where each expression is contained +in the next (larger) 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, which is necessary +for complex music like polyphonic scores. + + +@node Multiple staves +@subsection Multiple staves + +As we saw in @ref{Music expressions explained}, LilyPond input files +are constructed out of music expressions. If the score begins with +simultaneous music expressions, LilyPond creates multiples staves. However, +it is easier to see what happens if we create each staff explicitly. + +To print more than one staff, each piece of music that makes up a +staff is marked by adding @code{\new Staff} before it. These +@code{Staff} elements are then combined in parallel with @code{<<} and +@code{>>}: + +@lilypond[quote,ragged-right,verbatim] +\relative c'' { + << + \new Staff { \clef treble c } + \new Staff { \clef bass c,, } + >> +} @end lilypond +The command @code{\new} introduces a @q{notation context.} A notation +context is an environment in which musical events (like notes or +@code{\clef} commands) are interpreted. For simple pieces, such +notation contexts are created automatically. For more complex pieces, it +is best to mark contexts explicitly. -@node Advanced rhythmic commands -@section Advanced rhythmic commands +There are several types of contexts. @code{Score}, @code{Staff}, +and @code{Voice} handle melodic notation, while @code{Lyrics} sets lyric +texts and @code{ChordNames} prints chord names. -@cindex pickup -@cindex anacruse -@cindex partial measure -A pickup is entered with the keyword @code{\partial}. It -is followed by a duration: @code{\partial 4} is a quarter note upstep -and @code{\partial 8} an eighth note +In terms of syntax, prepending @code{\new} to a music expression +creates a bigger music expression. In this way it resembles the minus +sign in mathematics. The formula @math{(4+5)} is an expression, so +@math{-(4+5)} is a bigger expression. -@lilypond[quote,relative=2,verbatim,fragment] -\partial 8 -f8 c2 d e +Time signatures entered in one staff affects all other staves, but +the key signature of one staff does @emph{not} affect other +staves@footnote{This behavior may be changed if desired; see +@ref{Changing defaults} for details.}. + +@lilypond[quote,ragged-right,verbatim] +\relative c'' { + << + \new Staff { \clef treble \time 3/4 c } + \new Staff { \clef bass \key d \major c,, } + >> +} @end lilypond -@cindex tuplets -@cindex triplets -Tuplets are made with the @code{\times} keyword. It takes two -arguments: a fraction and a piece of music. The duration of the piece -of music is multiplied by the fraction. Triplets make notes occupy -2/3 of their notated duration, so a triplet has 2/3 as its fraction -@lilypond[quote,relative=1,verbatim,fragment] -\times 2/3 { f8 g a } -\times 2/3 { c r c } + + +@node Piano staves +@subsection Piano staves + +@cindex staff switch, manual +@cindex cross staff voice, manual +Piano music is typeset in two staves connected by a brace. Printing +such a staff is similar to the polyphonic example in @ref{Multiple staves}, +but now this entire expression is inserted inside a @code{PianoStaff}: + +@example +\new PianoStaff << + \new Staff @dots{} + \new Staff @dots{} +>> +@end example + +Here is a small example + +@lilypond[quote,ragged-right,verbatim] +\relative c'' { + \new PianoStaff << + \new Staff { \time 2/4 c4 e g g, } + \new Staff { \clef bass c,, c' e c } + >> +} +@end lilypond + +@moreinfo +@quotation +See @ref{Piano music}. +@end quotation + + +@node Single staff polyphony +@subsection Single staff polyphony + +@cindex polyphony +@cindex multiple voices +@cindex voices, more -- on a staff +When different melodic lines are combined on a single staff they are +printed as polyphonic voices; each voice has its own stems, slurs and +beams, and the top voice has the stems up, while the bottom voice has +them down. + +Entering such parts is done by entering each voice as a sequence (with +@code{@{...@}}) and combining these simultaneously, separating the +voices with @code{\\} + +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +<< + { a4 g2 f4~ f4 } \\ + { r4 g4 f2 f4 } +>> @end lilypond -@cindex grace notes -@cindex acciaccatura -Grace notes are also made by prefixing a music expression with the -keyword @code{\appoggiatura} or @code{\acciaccatura} -@cindex appoggiatura -@cindex acciaccatura +For polyphonic music typesetting, spacer rests can also be convenient; +these are rests that do not print. They are useful for filling up +voices that temporarily do not play. Here is the same example with a +spacer rest (@samp{s}) instead of a normal rest (@samp{r}), -@lilypond[quote,relative=2,verbatim,fragment] -c4 \appoggiatura b16 c4 -c4 \acciaccatura b16 c4 +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +<< + { a4 g2 f4~ f4 } \\ + { s4 g4 f2 f4 } +>> @end lilypond @noindent +Again, these expressions can be nested arbitrarily. -For more information on +@lilypond[quote,fragment,verbatim,relative=2,fragment] +<< + \new Staff << + { a4 g2 f4~ f4 } \\ + { s4 g4 f2 f4 } + >> + \new Staff << + \clef bass + { 1 ~ 4 } \\ + { e,,4 d e2 ~ e4} + >> +>> +@end lilypond +@moreinfo @quotation -@table @asis -@item Grace notes -see @ref{Grace notes}, -@item Tuplets -see @ref{Tuplets}, -@item Pickups -see @ref{Partial measures}. -@end table +See @ref{Basic polyphony}. @end quotation -@node Commenting input files -@section Commenting input files +@node Combining notes into chords +@subsection Combining notes into chords -@cindex comments -@cindex line comment -@cindex block comment -A comment is a remark for the human reader of the music input; it is -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 comment 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 +@cindex chords +Chords can be made by surrounding pitches with single angle brackets. Angle +brackets are the symbols @samp{<} and @samp{>}. -@example -% notes for twinkle twinkle follow - c4 c g' g a a g2 +@lilypond[quote,fragment,verbatim,relative=2,fragment] +r4 4 2 +@end lilypond -%@{ - This line, and the notes below - are ignored, since they are in a - block comment. +You can combine markings like beams and ties with chords. They must +be placed outside the angled brackets - g g f f e e d d c2 -%@} -@end example +@lilypond[quote,fragment,verbatim,relative=2,fragment] +r4 8[ ]~ 2 +@end lilypond -@c TODO post-2.6 reorg -@c This is good info, but I wouldn't call it a comment. IMO it should -@c be moved somewhere else. +@lilypond[quote,fragment,verbatim,relative=2,fragment] +r4 8\>( 4 \!) +@end lilypond -@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.6.0, use +@node Songs +@section Songs -@example -\version "2.7.32" -@end example +This section introduces vocal music and simple song sheets. -@noindent -These annotations make future upgrades of LilyPond go more -smoothly. Changes in the syntax are handled with a special program, -@file{convert-ly} (see @ref{Updating files with convert-ly}), and it uses -@code{\version} to determine what rules to apply. +@menu +* Printing lyrics:: +* A lead sheet:: +@end menu @node Printing lyrics -@section Printing lyrics -@cindex lyrics - -@c TODO: (c) status of the Queen fragment. +@subsection Printing lyrics @cindex Lyrics @cindex Songs -Lyrics are entered by separating each syllable with a space - -@example -I want to break free -@end example - -Consider the melody +Consider a simple melody: -@lilypond[quote,verbatim,fragment,ragged-right] -\relative { - r4 c \times 2/3 { f g g } - \times 2/3 { g4( a2) } +@lilypond[quote,ragged-right,verbatim] +\relative c'' { + a4 e c r4 + b2 c4( d) } @end lilypond The lyrics can be set to these notes, combining both with the -@code{\addlyrics} keyword +@code{\addlyrics} keyword. Lyrics are entered by separating each +syllable with a space. -@lilypond[quote,verbatim,fragment,ragged-right] +@lilypond[quote,ragged-right,verbatim] << - \relative { - r4 c \times 2/3 { f g g } - \times 2/3 { g4( a2) } + \relative c'' { + a4 e c r4 + b2 c4( d) } - \addlyrics { I want to break free } + \addlyrics { One day this shall be free } >> @end lilypond @cindex melisma @cindex extender line -@c synonyms? -This melody ends on a @rglos{melisma}, a single syllable (`free') +This melody ends on a @rglos{melisma}, a single syllable (@q{free}) sung to more than one note. This is indicated with an @emph{extender -line}. It is entered as two underscores, i.e., - -@example -@{ I want to break free __ @} -@end example +line}. It is entered as two underscores @code{__}: -@lilypond[fragment,quote,ragged-right] +@lilypond[quote,ragged-right,verbatim] << - \relative { - r4 c \times 2/3 { f g g } - \times 2/3 { g4( a2) } + \relative c'' { + a4 e c r4 + b2 c4( d) } - \addlyrics { I want to break free __ } + \addlyrics { One day this shall be free __ } >> @end lilypond Similarly, hyphens between words can be entered as two dashes, resulting in a centered hyphen between two syllables -@example -Twin -- kle twin -- kle -@end example - -@lilypond[fragment,quote,ragged-right] +@c no ragged-right here because otherwise the hypens get lost. +@lilypond[quote,verbatim] << - \relative { + \relative c' { \time 2/4 - f4 f c' c + f4 f c c } - \addlyrics { Twin -- kle twin -- kle } + \addlyrics { A -- le -- gri -- a } >> @end lilypond -More options, like putting multiple lines of lyrics below a melody are +@moreinfo +@quotation +More options, such as putting multiple stanzas below a melody, are discussed in @ref{Vocal music}. +@end quotation @node A lead sheet -@section A lead sheet +@subsection A lead sheet @cindex Lead sheets @cindex chords @cindex chord names @c TODO: revise this, \chords { } is shorter and more intuitive. +@c I need help for this. -gp -In popular music, it is common to denote accompaniment with chord names. +In popular music it is common to denote accompaniment with chord names. Such chords can be entered like notes, -@lilypond[quote,verbatim,ragged-right] +@lilypond[quote,ragged-right,verbatim] \chordmode { c2 f4. g8 } @end lilypond @@ -1045,7 +1227,7 @@ line for themselves. This is achieved by using @code{\chords} instead of @code{\chordmode}. This uses the same syntax as @code{\chordmode}, but renders the notes in a @code{ChordNames} context, with the following result. - + @lilypond[quote,verbatim,ragged-right] \chords { c2 f4.:m g4.:maj7 gis8:dim7 } @end lilypond @@ -1054,18 +1236,10 @@ following result. When put together, chord names, lyrics and a melody form a lead sheet, for example, -@example -<< - \chords @{ @emph{chords} @} - @emph{the melody} - \addlyrics @{ @emph{the text} @} ->> -@} -@end example - -@lilypond[quote,ragged-right] +@lilypond[quote,verbatim,ragged-right] +% this melody needs to be changed. See my new example in 2.4.1. -gp << - \chords { r2 c:sus4 f } + \chords { r2 c:sus4 f } \relative { r4 c' \times 2/3 { f g g } \times 2/3 { g4( a2) } @@ -1078,145 +1252,179 @@ A complete list of modifiers and other options for layout can be found in @ref{Chords}. +@node Final touches +@section Final touches + +This is the final section of the tutorial; it demonstrates how to add the +final touches to simple pieces, and provides an introduction to the rest +of the manual. + +@menu +* Version number:: +* Adding titles:: +* Absolute note names:: +* Organizing pieces with identifiers:: +* After the tutorial:: +* How to read the manual:: +@end menu + + +@node Version number +@subsection Version number + +@cindex versioning +The @code{\version} statement marks for which version of LilyPond the file +was written. To mark a file for version 2.10.1, place + +@example +\version "2.10.1" +@end example + +@noindent +at the top of your LilyPond file. + +These annotations make future upgrades of LilyPond go more +smoothly. Changes in the syntax are handled with a special program, +@file{convert-ly} (see @ref{Updating files with convert-ly}), and it uses +@code{\version} to determine what rules to apply. + + @node Adding titles -@section Adding titles +@subsection Adding titles -Bibliographic information is entered in a separate block, the -@code{\header} block. The name of the piece, its composer, etc., are -entered as an assignment, within @code{\header -@{@tie{}@dots{}@tie{}@}}. The @code{\header} block is usually put at -the top of the file. For example, +The title, composer, opus number, and similar information are entered +in the @code{\header} block. This exists outside of the main +music expression; the @code{\header} block is usually placed underneath +the @ref{Version number}. -@example +@example +\version "2.10.1" \header @{ - title = "Miniature" - composer = "Igor Stravinsky" + title = "Symphony" + composer = "Me" + opus = "Op. 9" @} -@{ @dots{} @} +@{ + @dots{} music @dots{} +@} @end example - When the file is processed, the title and composer are printed above the music. More information on titling can be found in @ref{Creating titles}. -@node Single staff polyphony -@section Single staff polyphony +@node Absolute note names +@subsection Absolute note names -@cindex polyphony -@cindex multiple voices -@cindex voices, more -- on a staff -When different melodic lines are combined on a single staff they are -printed as polyphonic voices; each voice has its own stems, slurs and -beams, and the top voice has the stems up, while the bottom voice has -them down. +So far we have always used @code{\relative} to define pitches. This is +the easiest way to enter most music, but another way of defining pitches +exists: absolute mode. -Entering such parts is done by entering each voice as a sequence (with -@code{@{...@}}), and combining these simultaneously, separating the -voices with @code{\\} +If you omit the @code{\relative}, LilyPond treats all pitches as +absolute values. A @code{c'} will always mean middle C, a @code{b} will +always mean the note one step below middle C, and a @code{g,} will +always mean the note on the bottom staff of the bass clef. -@lilypond[quote,verbatim,relative=2,fragment] -<< { a4 g2 f4~ f4 } \\ - { r4 g4 f2 f4 } >> +@lilypond[quote,verbatim,ragged-right] +{ + \clef bass + c' b g, g, + g, f, f c' +} @end lilypond -For polyphonic music typesetting, spacer rests can also be convenient; -these are rests that do not print. They are useful for filling up -voices that temporarily do not play. Here is the same example with a -spacer rest (@code{s}) instead of a normal rest (@code{r}), +Here is a four-octave scale: -@lilypond[quote,verbatim,relative=2,fragment] -<< { a4 g2 f4~ f4 } \\ - { s4 g4 f2 f4 } >> +@lilypond[quote,verbatim,ragged-right] +{ + \clef bass + c, d, e, f, + g, a, b, c + d e f g + a b c' d' + \clef treble + e' f' g' a' + b' c'' d'' e'' + f'' g'' a'' b'' + c'''1 +} @end lilypond -@noindent -Again, these expressions can be nested arbitrarily +As you can see, writing a melody in the treble clef involves a lot of +quote ' marks. Consider this fragment from Mozart: -@lilypond[quote,fragment,verbatim,relative=2,fragment] -<< - \new Staff << - { a4 g2 f4~ f4 } \\ - { s4 g4 f2 f4 } - >> - \new Staff << - \clef bass - { 1 ~ 4 } \\ - { e,4 d e2 ~ e4} - >> ->> +@lilypond[quote,verbatim,ragged-right] +{ + \key a \major + \time 6/8 + cis''8. d''16 cis''8 e''4 e''8 + b'8. cis''16 b'8 d''4 d''8 +} @end lilypond -More features of polyphonic typesetting are described in this manual -in section @ref{Polyphony}. - - -@node Piano staves -@section Piano staves - -@cindex staff switch, manual -@cindex cross staff voice, manual -Piano music is typeset in two staves connected by a brace. Printing -such a staff is similar to the polyphonic example in @ref{More staves}, - -@example -<< \new Staff @{ @dots{} @} - \new Staff @{ @dots{} @} >> -@end example - -@noindent -but now this entire expression must be interpreted as a -@code{PianoStaff} - -@example -\new PianoStaff << \new Staff @dots{} >> -@end example - -Here is a small example +All these quotes makes the input less readable and it is a source of +errors. With @code{\relative}, the previous example is much easier +to read: -@lilypond[quote,verbatim,relative=1,fragment] -\new PianoStaff << - \new Staff { \time 2/4 c4 c g' g } - \new Staff { \clef bass c,, c' e c } ->> +@lilypond[quote,verbatim,ragged-right] +\relative c'' { + \key a \major + \time 6/8 + cis8. d16 cis8 e4 e8 + b8. cis16 b8 d4 d8 +} @end lilypond -More information on formatting piano music is given in @ref{Piano music}. +If you make a mistake with an octave mark (@code{'} or @code{,}) while +working in @code{\relative} mode, it is very obvious -- many notes will +be in the wrong octave. When working in absolute mode, a single mistake +will not be as visible, and will not be as easy to find. +However, absolute mode is useful for music which has large intervals, and +is extremely useful for computer-generated LilyPond files. -@node Organizing larger pieces -@section Organizing larger pieces + +@node Organizing pieces with identifiers +@subsection Organizing pieces with identifiers When all of the elements discussed earlier are combined to produce -larger files, the @code{\score} blocks get a lot bigger, because the -music expressions are longer, and, in the case of polyphonic pieces, -more deeply nested. Such large expressions can become unwieldy. +larger files, the music expressions get a lot bigger. In polyphonic +music with many staves, the input files can become very confusing. We can +reduce this confusion by using @emph{identifiers}. -By using variables, also known as identifiers, it is possible to break -up complex music expressions. An identifier is assigned as follows +Identifiers (also known as variables or macros), we can break up +complex music expressions. An identifier is assigned as follows @example namedMusic = @{ @dots{} @} @end example -@noindent -The contents of the music expression @code{namedMusic}, can be used -later by preceding the name with a backslash, i.e., @code{\namedMusic}. -In the next example, a two-note motive is repeated two times by using -variable substitution - -@lilypond[quote,ragged-right,verbatim,nofragment] -seufzer = { - e'4( dis'4) +The contents of the music expression @code{namedMusic} can be used +later by placing a backslash in front of the name +(@code{\namedMusic}, just like a normal LilyPond command). Identifiers +must be defined @emph{before} the main music expression. + +@lilypond[quote,verbatim,ragged-right] +violin = \new Staff { \relative c'' { + a4 b c b +}} +cello = \new Staff { \relative c { + \clef bass + e2 d +}} +{ + << + \violin + \cello + >> } -{ \seufzer \seufzer } @end lilypond -The name of an identifier should have alphabetic characters only; no -numbers, underscores or dashes. The assignment should be outside of -running music. +@noindent +The name of an identifier should have alphabetic characters only: no +numbers, underscores, or dashes. It is possible to use variables for many other types of objects in the input. For example, @@ -1228,7 +1436,7 @@ aFivePaper = \paper @{ paperheight = 21.0 \cm @} @end example Depending on its contents, the identifier can be used in different -places. The following example uses the above variables +places. The following example uses the above variables: @example \paper @{ @@ -1238,146 +1446,44 @@ places. The following example uses the above variables @{ c4^\name @} @end example -More information on the possible uses of identifiers is given in the -technical manual, in @ref{Input variables and Scheme}. -@c fixme: the ref is too technical. - - -@node An orchestral part -@section An orchestral part - -In orchestral music, all notes are printed twice. Once in a part for -the musicians, and once in a full score for the conductor. Identifiers can -be used to avoid double work. The music is entered once, and stored in -a variable. The contents of that variable is then used to generate -both the part and the full score. - -It is convenient to define the notes in a special file. For example, -suppose that the file @file{horn-music.ly} contains the following part -of a horn/@/bassoon duo - -@example -hornNotes = \relative c @{ - \time 2/4 - r4 f8 a cis4 f e d -@} -@end example - -@noindent -Then, an individual part is made by putting the following in a file - -@example -\include "horn-music.ly" -\header @{ - instrument = "Horn in F" -@} - -@{ - \transpose f c' \hornNotes -@} -@end example - -The line - -@example -\include "horn-music.ly" -@end example - -@noindent -substitutes the contents of @file{horn-music.ly} at this position in -the file, so @code{hornNotes} is defined afterwards. The command -@code{\transpose f@tie{}c'} indicates that the argument, being -@code{\hornNotes}, should be transposed by a fifth upwards. Sounding -@samp{f} is denoted by notated @code{c'}, which corresponds with the -tuning of a normal French Horn in@tie{}F. The transposition can be seen -in the following output - -@lilypond[quote,ragged-right] -\transpose f c' \relative c { - \time 2/4 - r4 f8 a cis4 f e d -} -@end lilypond - -In ensemble pieces, one of the voices often does not play for many -measures. This is denoted by a special rest, the multi-measure -rest. It is entered with a capital @samp{R} followed by a duration -(1@tie{}for a whole note, 2@tie{}for a half note, etc.). By multiplying the -duration, longer rests can be constructed. For example, this rest -takes 3@tie{}measures in 2/4 time - -@example -R2*3 -@end example - -When printing the part, multi-rests -must be condensed. This is done by setting a run-time variable - -@example -\set Score.skipBars = ##t -@end example - -@noindent -This command sets the property @code{skipBars} in the -@code{Score} context to true (@code{##t}). Prepending the rest and -this option to the music above, leads to the following result - -@lilypond[quote,ragged-right] -\transpose f c' \relative c { - \time 2/4 - \set Score.skipBars = ##t - R2*3 - r4 f8 a cis4 f e d -} -@end lilypond - - -The score is made by combining all of the music together. Assuming -that the other voice is in @code{bassoonNotes} in the file -@file{bassoon-music.ly}, a score is made with - -@example -\include "bassoon-music.ly" -\include "horn-music.ly" - -<< - \new Staff \hornNotes - \new Staff \bassoonNotes ->> -@end example - -@noindent -leading to - -@lilypond[quote,ragged-right] -\relative c << - \new Staff { - \time 2/4 R2*3 - r4 f8 a cis4 f e d - } - \new Staff { - \clef bass - r4 d,8 f | gis4 c | b bes | - a8 e f4 | g d | gis f - } ->> -@end lilypond -More in-depth information on preparing parts and scores can be found -in the notation manual; see @ref{Orchestral music}. +@node After the tutorial +@subsection After the tutorial -Setting run-time variables (`properties') is discussed in -@ref{Changing context properties on the fly}. +After finishing the tutorial, you should probably try writing a +piece or two. Start with one of the @ref{Templates} and +add notes. If you need any notation that was not covered in the +tutorial, look at the Notation Reference, starting with +@ref{Basic notation}. If you want to write for an instrument +ensemble which is not covered in the templates, +take a look at @ref{Extending the templates}. +Once you have written a few short pieces, read the rest of +the Learning Manual (chapters 3-5). There's nothing wrong +with reading them now, of course! However, the rest of the +Learning Manual assumes that you are familiar with +LilyPond input. You may wish to skim these chapters right +now, and come back to them after you have more experience. -@ignore -* longer example +@node How to read the manual +@subsection How to read the manual -* discuss expectations (?) +As we saw in @ref{How to read the tutorial}, many examples in the +tutorial omitted a @code{\relative c'' @{ ... @}} around the printed +example. -* conclude tutorial +In the rest of the manual, we are much more lax about the +printed examples: sometimes they may have omitted a +@code{\relative c'' @{ ... @}}, but in other times a different initial +pitch may be used (such as @code{c'} or @code{c,,}), and in some cases +the whole example is in absolute note mode! However, ambiguities like +this only exist where the pitches are not important. In any example +where the pitch matters, we have explicitly stated our @code{\relative} +our our absolute-mode @code{@{ @}}. -* overview of chapters? +If you are still confused about the exact LilyPond input that was +used in an example, read the HTML version (if you are not already doing +so) and click on the picture of the music. This will display the exact +input that LilyPond used to generate this manual. -@end ignore