X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fuser%2Ftutorial.itely;h=62cb86775f3fcb49f01191ad98c06002027f8e2c;hb=65e82b29ad883d06f9ffd129de304041f5022abd;hp=7883872722a465c9dbc54fd2c327a46b0fcebe71;hpb=f7c306cacfbdf6229e9414c691e36e49b41ea71a;p=lilypond.git diff --git a/Documentation/user/tutorial.itely b/Documentation/user/tutorial.itely index 7883872722..2467cf491b 100644 --- a/Documentation/user/tutorial.itely +++ b/Documentation/user/tutorial.itely @@ -1,2059 +1,1699 @@ @c -*-texinfo-*- -@c TODO: LilyPond Lilypond lilypond - +@c TODO: +@c * more details about running lilypond; error messages, +@c compiling/viewing (emacs?) +@c * where to go from First steps+More basics? @node Tutorial @chapter Tutorial - -LilyPond prints music from a specification that you, the user, supply. -You have to give that specification using a textual @emph{language}. -This chapter is a gentle introduction to that language. - -This tutorial will demonstrate how to use Lilypond by presenting -examples of input along with resulting output. We will use English -terms for notation. In case you are not familiar with those, you may -consult the glossary that is distributed with LilyPond. - -@cindex examples, tutorial - -The examples discussed are included in the distribution, in the -subdirectory @file{input/tutorial/}@footnote{When we refer -to filenames, they are relative to the top directory of the source -package. In binary installations you should look in your doc section, -eg, @code{/usr/share/doc/lilypond1.3/examples/input/tutorial} -@cindex file names -}. We recommend that you experiment with writing Lilypond input -yourself, to get a feel for how the program behaves. -@menu -* Running LilyPond:: Getting started -* The first tune:: The first tune -* Lyrics and chords:: Lyrics and chords -* More movements :: -* A piano excerpt:: Piano music -* An orchestral score:: -* Other ways to run LilyPond:: -* Integrating text and music:: -* end of tutorial:: The end -@end menu -@node Running LilyPond -@section Running LilyPond +Using LilyPond comes down to encoding music in an input file. After +entering the music, the program is run on the file producing output +which can be viewed or printed. In this tutorial, we will show step +by step how to enter such files, by showing fragments of input and the +corresponding output. At the end of every section, a paragraph will +list where to find further information on the topics discussed. -Before we dive into describing the input language of LilyPond, we first -show you through the procedure for getting notes on your screen and out -of your printer. +Many people learn programs by trying and fiddling around with the +program. This is also possible with LilyPond. If you click on a +picture in the HTML version of this manual, you will see the exact +LilyPond input that was used to generate that image. +@ifhtml +For example, consider the following input: +@c TODO: intertext fixme +@lilypond[relative 1,singleline,verbatim,intertext="with the following output:"] + c'^\markup { \bold \huge { Click on this image! } } +@end lilypond -The first step is creating an input file. Using your favorite -text-editor, create @file{test.ly} containing +@end ifhtml +By cutting and pasting the full input into a test file, 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 +@end ifhtml +@ref{Cheat sheet}, which is a table listing all commands for quick +reference. -@ignore -NOTE: if you're reading this, ie, the Texinfo source itself, test.ly -should of course contain: +This tutorial starts with a short introduction to the LilyPond music +language. After this first contact, we will show you how to to +produce printed output, normally using the program @code{ly2dvi}. You +should then be able to create and print your first sheets of music. - \score{ - \notes { c'4 e' g' } - } +@menu +* First steps:: Music language of LilyPond. +* Running LilyPond:: Printing music. +* More about pitches and accidentals:: +* Octave entry:: +* Combining music into compound expressions:: +* Adding articulation marks to notes:: +* Combining notes into chords:: +* Printing lyrics:: +* A lead sheet:: +* Listening to output:: +* Titling:: +* Single staff polyphony:: +* Piano staves:: +* Setting variables:: +* Fine tuning layout:: +* Organizing larger pieces:: +* An orchestral part:: +* Integrating text and music:: Integrating text and music. +@end menu -@end ignore -@example -\score @{ - \notes @{ c'4 e' g' @} -@} -@end example +@node First steps +@section First steps -@unnumberedsubsec Unix -@cindex Unix, Running lilypond on -@cindex ly2dvi - -On unix, you invoke ly2dvi to compile your lilypond source file (you can -omit the @code{.ly}): +We start off by showing how very simple music is entered in LilyPond: +you get a note simply by typing its note name, from @samp{a} +through @samp{g}. So if you enter @example -ly2dvi -P test +c d e f g a b @end example -You will see the following on your screen: +@noindent +then the result looks like this: -@example -GNU LilyPond 1.3.145 -Now processing: `/home/fred/ly/test.ly' -Parsing... -Interpreting music...[1] -Preprocessing elements... -Calculating column positions... [2] -paper output to test.tex... - -Analyzing test.tex... -Running LaTeX... -Running dvips... -PS output to test.ps... -DVI output to test.dvi... -@end example +@c ? +@c \transpose c c' { c d e f g a b } +@c @lily pond[notime] +@c \property Score.timing = ##f +@lilypond[notime, relative=2] +c d e f g a b +@end lilypond -The results of the ly2dvi run are a ``DeVice Independent'' file -(@file{test.dvi}) and a PostScript file (@file{test.ps}). +The length of a note is specified by adding a number, @samp{1} for a +@rglos{whole note}, @samp{2} for a @rglos{half note}, and so on: -@cindex DVI file +@example +a1 a2 a4 a16 a32 +@end example -@cindex Viewing music -@cindex xdvi -@cindex .dvi +@lilypond[notime] +\property Score.timing = ##f +\property Staff.autoBeaming = ##f +\transpose c c' { a1 a2 a4 a16 a32 s16_" " } +@end lilypond -To view the @code{test.dvi} output, run Xdvi (you may omit the -@code{.dvi}): +If you do not specify a @rglos{duration}, the previous one is used: @example -xdvi test +a4 a a2 a @end example -@c FIXME: should we say anything on xdvi-gs interaction? - -You should see the following in a window next to some buttons. -@lilypond -\score { - \notes { c'4 e' g' } -} +@lilypond[notime] +\property Score.timing = ##f +\transpose c c' { a a a2 a s16_" " } @end lilypond -When you're satisfied with the result, you can print the -PostScript file: +Rests are entered just like notes, but with the name ``@code{r}'': + +@cindex rests +@quotation @example -lpr test.ps +r2 r4 r8 r16 @end example -If this does not make your printer produce a page of music, you should -look into installing and configuring ghostscript. Refer to -GhostScript's website at @uref{http://www.ghostscript.com}. -@cindex GhostScript -@cindex @code{lpr} -@cindex Printing output -@cindex PostScript -@cindex .ps - - -@unnumberedsubsec Windows +@lilypond[fragment] +\property Score.timing = ##f +\property Staff.Clef = \turnOff +\property Staff.TimeSignature = \turnOff +r2 r4 r8 r16 +s16_" " +@end lilypond +@end quotation +@separate -On windows, you open a LilyPond shell, and then you invoke ly2dvi -compile your lilypond source file, just like on Unix: +Add a dot @samp{.} after the duration to get a @rglos{dotted note}: @example -ly2dvi -P test +a2. a4 a8. a16 @end example -You will see the following on your screen: +@lilypond[notime] +\property Score.timing = ##f +\transpose c c' { a2. a4 a8. a16 s16_" " } +@end lilypond -@c FIXME: leave this out, just refer to unix section? -@c FIXME: commands run in dos shell: we can't redirect output -@example -GNU LilyPond 1.3.147 -Now processing: `C:\cygwin\home\tim\ly\test.ly' -Parsing... -Interpreting music...[1] -Preprocessing elements... -Calculating column positions... [2] -paper output to test.tex... - -This is TeX, Version 3.14159 (MiKTeX 2) -LaTeX2e <2000/06/01> -Babel and hyphenation patterns for english, french, german, ngerman, du -mylang, nohyphenation, loaded. - -(test.latex (C:\Program Files\MiKTeX\tex\latex\base\article.cls -Document Class: article 2000/05/19 v1.4b Standard LaTeX document class -(C:\Program Files\MiKTeX\tex\latex\base\size10.clo)) -(C:\cygwin\usr\lilypond-1.3.147\share\lilypond\tex\geometry.sty -(C:\Program Files\MiKTeX\tex\latex\graphics\keyval.sty)) -(C:\Program Files\MiKTeX\tex\latex\base\inputenc.sty -(C:\Program Files\MiKTeX\tex\latex\base\latin1.def)) -(C:\cygwin\usr\lilypond-1.3.147\share\lilypond\tex\titledefs.tex) -No file test.aux. -(test.tex -(C:\cygwin\usr\lilypond-1.3.147\share\lilypond\tex\lilyponddefs.tex -(C:\cygwin\usr\lilypond-1.3.147\share\lilypond\tex\lilypond-latex.tex -LaTeX definitions) -(C:\cygwin\usr\lilypond-1.3.147\share\lilypond\tex\feta20.tex) -(C:\cygwin\usr\lilypond-1.3.147\share\lilypond\tex\lily-ps-defs.tex) -[footer empty] -(C:\cygwin\usr\lilypond-1.3.147\share\lilypond\tex\fetdefs.tex))) -Overfull \hbox (15.0pt too wide) in paragraph at lines 22--26 -[] $[]$ -[1] (test.aux) ) -(see the transcript file for additional information) -Output written on test.dvi (1 page, 4292 bytes). -Transcript written on test.log. -This is dvips(k) 5.86 Copyright 1999 Radical Eye Software (www.radicaleye.com) -' TeX output 2001.04.12:0033' -> test.ps -. [1] -Running LilyPond... -Analyzing test.tex... -Running LaTeX... -Running dvips... -PS output to test.ps... -DVI output to test.dvi... -@end example -To view the @code{test.dvi} output, run Yap +The @rglos{meter} (or @rglos{time signature}) can be set with the +@code{\time} command: @example -yap test +\time 3/4 +\time 6/8 +\time 4/4 @end example -You should see the following in a window +@c a clef here may lead to confusion @lilypond -\score { - \notes { c'4 e' g' } -} +\property Staff.Clef \set #'transparent = ##t +\time 3/4 +s4_" " +\time 6/8 +s4_" " +\time 4/4 +s16_" " @end lilypond -@c FIXME: talk about newer Yap versions, proper gs installation? -When you're satisfied with the result, you can print from within Yap -(File/Print). Note that Yap may not display embedded PostScript symbols -such as beams and slurs. Don't worry, they'll be printed anyway. -You can also print the PostScript file directly from the -command line using GSview: +The @rglos{clef} can be set using the @code{\clef} command: +@c what is more common name treble or violin? +@c in Dutch, its violin. +@c in English its definitely treble. @example -gsview32 /s test.ps -@end example - +\clef treble +\clef bass +\clef alto +\clef tenor +@end example + +@lilypond[notime] +\property Score.timing = ##f +\clef violin +s4_" " +\clef bass +s4_" " +\clef alto +s4_" " +\clef tenor +s16_" " +@end lilypond +Notes and commands like @code{\clef} and @code{\time} , are enclosed +in @code{\notes @{@dots{}@}}. This indicates that music (as opposed +to @rglos{lyrics}) follows: -@node The first tune -@section The first tune +@example +\notes @{ + \time 3/4 + \clef bass + c2 e4 g2. + f4 e d c2 r4 +@} +@end example +Now the piece of music is almost ready to be printed. The final step is to +combine the music with a printing command. +The printing command is the so-called @code{\paper} block. The +@code{\paper} block is used to customize printing specifics, but we +accept the defaults for now. The music and the @code{\paper} block +are combined by enclosing them in @code{\score @{ ... @}}. The +following is a complete and valid input file. -To demonstrate what LilyPond input looks like, we start off with a -full-fledged, yet simple example. It is a convoluted version -of the famous minuet in J. S. Bach's @emph{Klavierb@"uchlein}. The file -is included in the distribution as @file{minuet.ly}. -@cindex Bach, Johann Sebastian +@example +\score @{ + \notes @{ + \time 3/4 + \clef bass + c2 e4 g2. + f4 e d c2 r4 + @} + \paper @{ @} +@} +@end example -@lilypond[verbatim] -% all text after a percent sign is a comment -% and is ignored by Lilypond -\include "paper16.ly" +@lilypond[noindent] \score { - \notes - \relative c'' \sequential { - \time 3/4 - \key g \major - - \repeat "volta" 2 { - d4 g,8 a b c d4 g, g | - e'4 c8 d e fis g4 g, g | - c4 d8( )c b a( )b4 c8 b a g | - a4 [b8 a] [g fis] g2. | - } - - b'4 g8 a b g - a4 d,8 e fis d | - g4 e8 fis g d cis4 b8 cis a4 | - a8-. b-. cis-. d-. e-. fis-. - g4 fis e | - fis a, r8 cis8 - d2.-\fermata - \bar "|." - } - \paper { - % standard settings are too wide for a book - linewidth = 14.0 \cm - } + \notes { + \time 3/4 + \clef bass + c2 e4 g2. + f4 e d c2 r4 + } + \paper { + linewidth = 55 * \staffspace + } } @end lilypond -We will analyse the input, line by line. -@separate -@example - % all text after a percent sign is a comment - % and is ignored by Lilypond -@end example -The percent sign, @code{%}, introduces a line comment. You can also -comment out a block of several lines, by enclosing them in -@code{%@{} and @code{%@}}. -@cindex comment -@cindex block comment -@cindex line comment -@separate -@example +During the rest of the tutorial, we will often leave out @code{\score} +and @code{\paper}, for clarity. However, both must be present when +feeding the file to LilyPond. - \include "paper16.ly" - -@end example -@cindex @code{\include} -@cindex point, printer's -@cindex staff size setting -By default, LilyPond will typeset the music in a size such that each -staff is 20 point@footnote{A point is the standard measure of length for -printing; one point is 1/72.27 inch.} high. We want smaller -output (16 point staff height), so we must import the settings for that -size, which is done here. -@separate -@example +More elaborate information on entering pitches and durations is in +@ref{Pitches} and @ref{Durations}. Clefs are fully explained in +@ref{Clef}. Time signatures and other timing commands are described +in @ref{Time signature}. - \score @{ - -@end example -Music is printed by combining a piece of music with directions for -outputting it. This combination is formed in the @code{\score} block. -@separate -@example - \notes - -@end example -Prepare LilyPond for accepting notes. -@cindex octaves, choosing -@cindex pitch -@separate -@example +@node Running LilyPond +@section Running LilyPond - \relative c'' - +In the last section we explained what kind of things you could enter +in a LilyPond file. In this section we 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. The instructions that follow are for +Unix-like systems. Some additional instructions for Microsoft Windows +are given at the end of this section. + +Begin by opening a terminal window and starting a text editor. For +example, you could open an xterm and execute +@code{joe}.@footnote{There are macro files for VIM addicts, and there +is a @code{LilyPond-mode} for Emacs addicts. If it has not been +installed already, then refer to the file @file{INSTALL.txt}}. In +your text editor, enter the following input and save the file as +@file{test.ly}: + +@quotation +@example +\score @{ + \notes @{ c'4 e' g' @} +@} @end example -@cindex relative -As we will see, each note is described by its note name, duration, -octave and possibly a chromatic alteration. In this setup, the octave -is indicated by using high quotes (@code{'}) and ``lowered quotes'' -(commas: @code{,}). The central C is denoted by @code{c'}. The C one -octave higher is @code{c''}. One and two octaves below the central C is -denoted by @code{c} and @code{c,} respectively. - -Even though a piece of music often spans a range of several octaves, it -mostly moves in small intervals. LilyPond has a special entry mode to -save typing in this situation. In this ``relative'' octave mode, -octaves of notes without quotes are chosen such that a note is as close -as possible (graphically, on the staff) to the preceding note. If you -add a high-quote an extra octave is added. A lowered quote (a comma) -will subtract an extra octave. - -Because the first note has no predecessor, -you have to give the (absolute) pitch of the note to start with. -@separate -@example +@end quotation - \sequential @{ - -@end example -What follows is sequential music, i.e., -@cindex sequential music -notes that are to be played and printed after each other. -@separate -@example +@cindex ly2dvi - \time 3/4 - -@end example -@cindex time signature, setting -@cindex @code{\time} -Set (or change) the time signature of the current piece: a 3/4 sign is -printed. The time signature setting is also used to generate bar lines -at the right spots. -@separate -@example +@c now this is weird, running ly2dvi to run LilyPond +@c (therefore name change proposal) - \key g \major - -@end example -@cindex key signature, setting -@cindex @code{\key} -Set (or change) the current key signature to G-major. Although in this -example, the @code{\key} command happened to be entered after the -@code{\time} command, in the output the time signature will be printed -after the key signature; LilyPond knows about music typesetting -conventions. -@separate -@example +LilyPond is the program that computes the sheet music. All other +things, such as adding titles, page breaking and other page layout, +are done by a small wrapper program called +@code{ly2dvi}. @code{ly2dvi} calls LilyPond to render the music, and +then adds the titling and page layout instructions. To process +@file{test.ly} with @code{ly2dvi}, proceed as follows: - \repeat "volta" 2 - -@end example -The following piece of music is played twice. The first argument -indicates the type of repeat. In this case, @code{"volta"} means that -prima volta/secunda volta brackets are used for the alternative -endings---if there were any. -@separate -@example +@quotation +@example +ly2dvi -p test.ly +@end example +@end quotation - @{ - -@end example -The subject of the repeat is again sequential music. Since -@code{\sequential} is such a common construct, a shorthand is provided: -just leave off @code{\sequential}, and the result is the same. -@separate -@example +You will see something resembling: - d4 g,8 - -@end example -Two notes. The first note is a quarter note with relative pitch -@code{d}. The relative music was started with a @code{c''}, so the real -pitch of this note is @code{d''}. The duration of a note is designated -by a number; the @code{4} here represents a quarter note. - -The second note is an eight note with relative pitch @code{g,}. The -pitch is taken relative to the previous @code{d''}, making this -note have real pitch @code{g'}. The @code{8} represents an eight note. -@separate -@example +@quotation +@example +GNU LilyPond 1.8.0 +Now processing: `/home/fred/ly/test.ly' +Parsing... +Interpreting music...[1] + @emph{ ... more interesting stuff ... } +PDF output to `test.pdf'... +DVI output to `test.dvi'... +@end example +@end quotation +@cindex DVI file +@cindex Viewing music +@cindex xdvi - a b - -@end example -Two more notes, with pitch @code{a} and @code{b}. Because their -duration is the same as the @code{g,8}, there is no need to enter the -duration, but you may enter it anyway, i.e., @code{a4 b4} -@separate -@example +The result of the ly2dvi is the file @file{test.pdf}.@footnote{For +@TeX{} afficionados, there is also a @file{test.dvi} file. It can be +viewed with @code{xdvi}. The DVI uses a lot of PostScript specials, +which do not show up in the magnifying glass. The specials also mean +that the DVI file cannot be processed with @code{dvilj}. Use +@code{dvips} for printing. +@cindex dvips +@cindex dvilj +@cindex DVI driver +} One of the following commands should put the PDF on your +screen: +@quotation +@example + gv test.pdf + ghostview test.pdf + ggv test.pdf + kghostview test.pdf + xpdf test.pdf + gpdf test.pdf + acroread test.pdf + gsview32 test.pdf +@end example +@end quotation +If the music on your screen looks good, you can print it by clicking +File/Print inside your viewing program. + +@cindex Ghostscript +@cindex @code{lpr} +@cindex Printing output +@cindex PostScript +@cindex PDF + + +On Windows, the same procedure should work, the terminal is started by +clicking on the LilyPond or Cygwin icon. Any text editor (such as +NotePad, Emacs or Vim) may be used to edit the LilyPond file. + +To view the PDF file, try the following: +@itemize +@item +If your system has a PDF viewer installed, open +@file{C:\Cygwin\home\@var{your-name}} in the explorer and double-click +@file{test.pdf}. +@item +If you prefer the keyboard, you can also try the list of commands +shown before. If none work, go to +@uref{http://www.cs.wisc.edu/~ghost/} to install the proper software. +@end itemize + +The commands for formatting and printing music on all platforms are +detailed in @ref{Invoking LilyPond}. + +@node More about pitches and accidentals +@section More about pitches and accidentals + +A @rglos{sharp} (@texisharp{}) is made by adding @samp{is}, a +@rglos{flat} (@texiflat{}) 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.} - d4 g, g | - +@example +cis1 ees fisis aeses @end example -@cindex bar check -@cindex @code{|} -@cindex errors, finding -Three more notes. The @code{|} character is a ``bar check''. LilyPond -will verify that bar checks are found at the start of a measure. This can -help you track down typing errors. - -@cindex alteration, chromatic -@cindex chromatic alteration -@separate -@example - c8 d e fis - -@end example -So far, no notes were chromatically altered. Here is the first one that -is: @code{fis}. Lilypond by default uses Dutch@footnote{Note names are -available in several languages, but we find the Dutch names quite -convenient.} note names, and ``Fis'' is the Dutch note name for ``F -sharp''. However, there is no sharp sign in the output. The program -keeps track of key signatures, and will only print accidentals if they -are needed. - -For groups of eighth notes and shorter, LilyPond can determine how the -notes should form a beam. In this case, the 4 eights are automatically -printed as a beam. -@separate -@example +@lilypond[notime] +\property Score.timing = ##f +\transpose c c' { cis1 ees fisis aeses s16_" " } +@end lilypond - c4 d8( )c b a( )b4 c8 b a g | -@end example -The beginning and ending notes of a slur are marked with parentheses, -@code{(} and @code{)} for start and end respectively. The line above -indicates two slurs. These slur markers (parentheses) are entered -between the slurred notes. -@separate -@example +@cindex key signature, setting - a4 [b8 a] [g fis] - -@end example -Automatic beaming can be overridden by inserting beam marks, @code{[} -and @code{]}. These beam markers (brackets) are put around the notes -you want beamed. -@separate -@example +The key signature is set with the command ``@code{\key}'', followed by +a pitch and @code{\major} or @code{\minor}: +@quotation +@example +\key d \major +g1 +\key c \minor +g +@end example + +@lilypond[fragment] +\property Staff.TimeSignature = \turnOff +\key d \major +g'1 +\key c \minor +g' +@end lilypond +@end quotation - g2. | - -@end example -@cindex augmentation dot -@cindex dot -A period adds an augmentation dot to the note. -@separate -@example - @} - -@end example -The end of the sequential music to be repeated. LilyPond will typeset a -repeat bar. +@cindex tie +A tie is created by adding a tilde ``@code{~}'' to the first note +being tied: +@quotation +@lilypond[fragment,verbatim,relative 2] +g4-~ g a2-~ a4 +@end lilypond +@end quotation @separate -@example - cis'4 b8 cis a4 | - -@end example -Accidentals are printed whenever necessary: the first C sharp of the bar -will be printed with an accidental, the second one without. -@separate -@example +This example shows the key signature, accidentals and ties in action: - a8-. b-. cis-. d-. e-. fis-. - +@quotation +@example +\score @{ + \notes @{ + \time 4/4 + \key g \minor + \clef violin + r4 r8 a8 gis4 b + g8 d4.-~ d' e'8 + fis4 fis8 fis8 eis4 a8 gis-~ + gis2 r2 + @} + \paper @{ @} +@} @end example -@cindex articulation -You can enter articulation signs either in a verbose form or using a -shorthand. Here we demonstrate the shorthand: it is formed by a dash -and the character for the articulation to use, e.g. @code{-.} for -staccato as shown above. -@separate -@example - fis a, r8 cis8 - -@end example - -Rests are denoted by the special notename @code{r}. -@separate -@example - - d2.-\fermata - -@end example -All articulations have a verbose form, like @code{\fermata}. The -command @code{\fermata} is not part of the core of the language, but it -is a shorthand for a more complicated description of a fermata symbol. -@code{\fermata} names that description and is therefore called an -identifier. -@cindex identifier -@cindex @code{\fermata} -@separate +@lilypond +\score { + \notes { \transpose c c' { + \time 4/4 + \key g \minor + \clef violin + r4 r8 a8 gis4 b + g8 d4.-~ d e8 + fis4 fis8 fis8 eis4 a8 gis-~ + gis2 r2 + }} + \paper { linewidth = #(* 50 staffspace) } +} +@end lilypond +@end quotation +@cindex accidentals + +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 lines breaks are in the +source file. Finally, the order of time, key and clef changes is not +relevant: in the printout, these are ordered according to standard +notation conventions. + +Accidentals (sharps and flats) do not have to be marked explicitly: +you just enter the pitch of the note, and an accidental is printed +only when necessary. The flip side of this mechanism, is that you have +to mark notes as sharp or flat, even when they do not get accidentals. +For example, in this example: +@lilypond[fragment] +\clef bass +\property Staff.TimeSignature = #'() +\key cis \major +cis dis eis fis gis ais bis +@end lilypond +no note gets an explicit accidental, but still you enter @example - \bar "|." - @} -@end example -Here the music ends. LilyPond does not automatically typeset and end -bar, we must explicitely request one, using @code{"|."}. - +\clef bass +\key cis \major +cis dis eis fis gis ais bis +@end example + +Adding all alterations explicitly might require some more effort when +typing, but the advantage is that transposing is easier. It also makes +it possible to use different conventions for when to print +accidentals. + +@cindex beams, by hand +Beams are drawn automatically, but if you do not like where they are +put, they can be entered by hand. Mark the first note to be beamed +with @code{[} and the last one with @code{]}: +@quotation +@lilypond[fragment,relative 1, verbatim] +a8-[ ais-] d-[ es r d-] +@end lilypond +@end quotation @separate -@example - \paper @{ - linewidth = 14.0\cm - @} - -@end example -The @code{\paper} block specifies how entered music should be converted -to notation output. Most of the details of the conversion (font sizes, -dimensions, etc.) have been taken care of, but to fit the output in this -document, it has to be narrower. We do this by setting the line width -to 14 centimeters (approximately 5.5 inches). -@separate -@example +Rests are described in full detail in @ref{Rests}. - @} - -@end example -The last brace ends the @code{\score} block. +The notation manual discusses ties in @ref{Ties}. +@node Octave entry +@section Octave entry -@node Lyrics and chords -@section Lyrics and chords +@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... -In this section we show how to typeset a song. This file is -included as @file{flowing.ly}. +@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{,} +(a comma). Middle C is @code{c'}: -@example -\header @{ - title = "The river is flowing" - composer = "Traditional" -@} -\include "paper16.ly" -melody = \notes \relative c' @{ - \partial 8 - \key c \minor - g8 | - c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g | - c4 c8 d [es () d] c4 | d4 es8 d c4. - \bar "|." -@} +@quotation +@example +c'4 c'' c''' \clef bass c c, +@end example -text = \lyrics @{ - The ri -- ver is flo- __ wing, flo -- wing and gro -- wing, the - ri -- ver is flo -- wing down to the sea. +@lilypond[fragment] +\property Score.timing = ##f +\property Staff.TimeSignature = \turnOff +c'4 c'' c''' \clef bass c c, +@end lilypond +@end quotation +@separate + +An example of the use of quotes is in the following Mozart fragment: +@lilypond[singleline,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 + +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. In practice, this is the +most convenient way to copy existing music. To use relative mode, add +@code{\relative} before the piece of music. You must also give a note +from which relative starts, in this case @code{c''}. If you do not +use octavation quotes (i.e. do not add ' or , after a note), relative +mode chooses the note that is closest to the previous one. +For example, @code{c f} goes up while @code{c g} goes down: + +@quotation +@example +\relative c'' @{ + c f c g c @} +@end example -accompaniment =\chords @{ - r8 - c2:3- f:3-.7 d:min es4 c8:min r8 - c2:min f:min7 g:7^3.5 c:min @} - -\score @{ - \simultaneous @{ - %\accompaniment - \context ChordNames \accompaniment - - \addlyrics - \context Staff = mel @{ - \property Staff.noAutoBeaming = ##t - \property Staff.automaticMelismata = ##t - \melody - @} - \context Lyrics \text - @} - \midi @{ \tempo 4=72 @} - \paper @{ linewidth = 10.0\cm @} -@} -@end example - - -The result would look this.@footnote{The titling and font size shown -may differ, since the titling in this document is not generated by -@code{ly2dvi}.} - -@center @strong{The river is flowing} -@center Traditional - -@lilypond[center] -\header { - title = "The river is flowing" - composer = "Traditional" -} -\include "paper16.ly" -melody = \notes \relative c' { - \partial 8 - \key c \minor - g8 | - c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g | - c4 c8 d [es () d] c4 | d4 es8 d c4. - \bar "|." -} - -text = \lyrics { - The ri -- ver is flo- __ wing, flo -- wing and gro -- wing, the - ri -- ver is flo -- wing down to the sea. -} - -accompaniment =\chords { - r8 - c2:3- f:3-.7 d:min es4 c8:min r8 - c2:min f:min7 g:7^3.5 c:min } - -\score { - \simultaneous { - %\accompaniment - \context ChordNames \accompaniment - - \addlyrics - \context Staff = mel { - \property Staff.noAutoBeaming = ##t - \property Staff.automaticMelismata = ##t - \melody - } - \context Lyrics \text - } - \midi { \tempo 4=72 } - \paper { linewidth = 10.0\cm } +@lilypond[fragment] +\property Score.timing = ##f +\property Staff.TimeSignature = \turnOff +\relative c'' { + c f c g c } @end lilypond - -Again, we will dissect the file line by line. +@end quotation @separate -@example - \header @{ - -@end example -@cindex @code{\header} -Information about the music you are about to typeset goes into a -@code{\header} block. The information in this block is not used by -LilyPond, but it is passed into the output. @file{ly2dvi} uses this -information to print titles above the music. -@separate -@example - - title = "The river is flowing" - composer = "Traditional (?)" -@end example -@cindex assignments -@cindex identifier assignment -the @code{\header} block contains assignments. In each assignment, a -variable is set to a value. Lexically, both the variable name and the -assigned value are strings. The values have to be quoted here, because -they contain spaces, the variable names could also be put within quotes -but it is not necessary. -@separate -@example - \include "paper16.ly" - -@end example -Smaller size for inclusion in a book. -@separate -@example +Since most music has small intervals, in relative mode pieces can be +written almost without using octavation quotes. In relative mode, the +Mozart example is entered as +@c +@lilypond[singleline,fragment,verbatim] +\relative c'' { + \key a \major + \time 6/8 + cis8. d16 cis8 e4 e8 + b8. cis16 b8 d4 d8 +} +@end lilypond - melody = \notes \relative c' @{ - -@end example -The structure of the file will be the same as the previous one, a -@code{\score} block with music in it. To keep things readable, we will -give names to the different parts of music, and use the names to -construct the music within the score block. -@separate -@example - \partial 8 -@end example +@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. Quotes or +commas do not determine the absolute height of a note; the height of a +note is relative to the previous one. +@c do not use commas or quotes in this sentence +For example: @code{c f,} goes down; @code{f, f} are both the same; +@code{c' c} are the same; and @code{c g'} goes up: -@cindex @code{\partial} -@cindex anacrusis -The piece starts with an anacrusis of one eighth. -@separate +@quotation @example - \key c \minor +\relative c'' @{ + c f, f c' c g' c, +@} @end example -The key is C minor: we have three flats. - -@separate -@example - c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g | - c4 c8 d [es () d] c4 | d4 es8 d c4. - \bar "|." - -@end example - -@cindex manual beaming -@cindex automatic beaming, turning off -We use explicit beaming. Since this is a song, we turn automatic -beams off, and use explicit beaming where needed. +@lilypond[fragment] +\property Score.timing = ##f +\property Staff.TimeSignature = \turnOff +\relative c'' { + c f, f c' c g' c, +} +@end lilypond +@end quotation @separate -@example - - @} - -@end example -This ends the definition of @code{melody}. -@separate -@example - text = \lyrics @{ - -@end example -@cindex lyrics -@cindex identifier assignment -@cindex syllables, entering -Another identifier assignment. This one is for the lyrics. -Lyrics are formed by syllables that have duration, and not by -notes. To make LilyPond parse words as syllables, switch it into -lyrics mode with @code{\lyrics}. Again, the brace after @code{\lyrics} -is a shorthand for @code{\sequential @{}. -@separate -@example +Here is an example of the difference between relative mode and +``normal'' (non-relative) mode: - The4 ri -- ver is flo- __ wing, flo -- wing and gro -- wing, the - ri- ver is flo- __ wing down to the sea. +@quotation +@example +\relative a @{ +\clef bass + a d a e d c' d' @} - @end example -@cindex extenders, lyric -@cindex hyphens, lyric -The syllables themselves are separated by spaces. You can get syllable -extenders by entering @code{__}, and centered hyphens with -@code{-}@code{-}. We enter the syllables as if they are all quarter notes -in length (hence the @code{4}), and use a feature to align the -syllables to the music, which obviously isn't all quarter notes. -@separate -@example - accompaniment =\chords @{ - -@end example -@cindex chords -@cindex mode, chords -We'll put chords over the music. To enter them, there is a special mode -analogous to @code{\lyrics} and @code{\notes} mode, where you can give -the names of the chords you want, instead of listing the notes -comprising the chord. -@separate -@example - - r8 - -@end example -There is no accompaniment during the anacrusis. +@lilypond[fragment] +\property Score.timing = ##f +\property Staff.TimeSignature = \turnOff +\relative a { +\clef bass + a d a e d c' d' +} +@end lilypond +@end quotation @separate -@example - c2:3- f:3-.7 - +@quotation +@example +\clef bass + a d a e d c' d' @end example -@cindex tonic -@cindex chord modifier -@cindex modifier, chord -A chord is started by the tonic of the chord. The -first one lasts a half note. An unadorned note creates a major -triad. Since a minor triad is wanted, @code{3-} is added to modify the -third to be small. @code{7} modifies (adds) a seventh, which is small by -default to create the @code{f a c es} chord. Multiple modifiers must be -separated by dots. +@lilypond[fragment] +\property Score.timing = ##f +\property Staff.TimeSignature = \turnOff +\clef bass + a d a e d c' d' +@end lilypond +@end quotation @separate -@example - d:min es4 c8:min r8 - -@end example -Some modifiers have predefined names, eg. @code{min} is the same as -@code{3-}, so @code{d-min} is a minor @code{d} chord. -@separate -@example - c2:min f:min7 g:7^3.5 c:min @} - -@end example -@cindex named modifier -A named modifier @code{min} and a normal modifier @code{7} do not have -to be separated by a dot. Tones from a chord are removed with chord -subtractions. Subtractions are started with a caret, and they are -also separated by dots. In this example, @code{g:7^3.5} produces a -minor seventh. The brace ends the sequential music. -@separate -@example - \score @{ - \simultaneous @{ - -@end example -We assemble the music in the @code{\score} block. Melody, lyrics and -accompaniment have to sound at the same time, so they should be -@code{\simultaneous}. -@cindex @code{\simultaneous} -@separate -@example - %\accompaniment - -@end example -Chord mode generates notes grouped in @code{\simultaneous} music. If -you remove the comment sign, you can see the chords in normal -notation: they will be printed as note heads on a separate -staff. To print them as chords names, they have to be interpreted as -being chords, not notes. This is done with the following command: -@separate -@example - \context ChordNames \accompaniment - -@end example -@cindex context -@cindex interpretation context -@cindex notation context - - -Normally, the notes that you enter are transformed into note heads. -Note heads alone make no sense, they need surrounding information: a key -signature, a clef, staff lines, etc. They need @emph{context}. In -LilyPond, these symbols are created by objects called `interpretation -contexts'. Interpretation contexts exist for generating notation -(`notation context') and for generating sound (`performance -context'). These objects only exist during a run of LilyPond. - -By default, LilyPond will create a Staff context for you. If you would -remove the @code{%} sign in the previous line, you would see that -mechanism in action. - -We don't want that default here, because we want chord names. The -command above explicitly creates an interpretation context of -@code{ChordNames} type to interpret the music @code{\accompaniment}. -@separate -@example - \addlyrics - -@end example -@cindex @code{\addlyrics} -@cindex lyrics and melody, combining -@cindex combining lyrics and melody - -The lyrics should be aligned with the melody. This is done by -combining both with @code{\addlyrics}. @code{\addlyrics} takes two -pieces of music (usually a melody and lyrics, in that order) and -aligns the syllables of the second piece under the notes of the -first piece. If you would reverse the order, the notes would be -aligned on the lyrics, which is not very useful, and looks -silly. -@separate -@example - \context Staff = mel @{ - -@end example +@node Combining music into compound expressions +@section Combining music into compound expressions -The second argument of @code{\addlyrics} is the melody. We instantiate -a @code{Staff} context explicitly: should you choose to remove the -comment before the ``note heads'' version of the accompaniment, the -accompaniment will be on a nameless staff. The melody has to be on -staff different from the accompaniment. This is accomplished by giving -the melody and accompaniment staffs different names. -@separate -@example +To print more than one staff, each piece of music that makes up a +staff is marked by adding @code{\context Staff} before it. These +@code{Staff}'s are then grouped inside @code{\simultaneous @{} and +@code{@}}, as is demonstrated here: - \property Staff.noAutoBeaming = ##t - -@end example -@cindex \property -@cindex context variables -@cindex setting context variables -An interpretation context has variables, called properties, that tune -its behaviour. One of the variables is @code{noAutoBeaming}. Setting -this Staff's property to @code{##t}, which is the boolean value @var{true}, -turns the automatic beaming mechanism off for the current staff. -@cindex GUILE -@cindex Scheme -@cindex accessing Scheme -@cindex evaluating Scheme -@cindex LISP - -LilyPond internally uses GUILE, a Scheme-interpreter. Scheme is a -language from the LISP family. You can learn more about Scheme at -@uref{http://www.scheme.org}. It is used to represent data throughout -the whole program. The hash-sign (@code{#}) accesses GUILE directly: the -code following the hash-sign is evaluated as Scheme. The boolean value -@var{true} is @code{#t} in Scheme, so for LilyPond @var{true} looks like -@code{##t}. - -If Scheme scares you, don't worry. You don't need to know Scheme to -create beautiful sheet music. +@quotation +@lilypond[fragment,verbatim] +\simultaneous { + \context Staff = staffA { \clef violin c'' } + \context Staff = staffB { \clef bass c } +} +@end lilypond +@end quotation +In this example, @code{\simultaneous } indicates that both music +fragments happen at the same time, and must be printed stacked +vertically. The notation @code{< .. >} can also be used as a +shorthand for @code{\simultaneous @{ .. @}}. -@separate -@example +@code{\context} introduces a ``notation context''. To understand this +concept, imagine that you are performing a piece of music. When you +perform the music, you combine the symbols printed at a certain point +with contextual information. For example, without knowing the current +clef, and the accidentals in the last measure, it would be impossible +to determine the pitch of a note. In other words, this information +forms context that helps you decipher a score. LilyPond produces +notation from music, so in effect, it does the inverse of reading +scores. Therefore, it also needs to keep track of contextual +information. This information is maintained in ``notation contexts.'' +There are several types of contexts, e.g. @code{Staff}, @code{Voice} +and @code{Score}, but also @code{Lyrics} and +@code{ChordNames}. Prepending @code{\context} to a chunk of music +indicates what kind of context to use for interpreting it. - \property Staff.automaticMelismata = ##t - -@end example -@cindex automaticMelismata -@cindex melismata -@cindex @code{\addlyrics} and slurs -Similarly, we don't want to print a syllable when there is -a slur. This sets up @code{\addlyrics} to not put lyrics under each -separate note while there is a slur. -@separate -@example +By specifying different names (in this case @code{staffA} and +@code{staffB}), two different contexts are created, leading to two +staves. It does not matter which names they are given, as long as they +are different. If they get the same name, the chunks of music are +assumed to belong on the same staff, and will be printed like that. - \melody - @} - -@end example -Finally, we put the melody on the current staff. Note that the -@code{\property} directives and @code{\melody} are grouped in sequential -music, so the property settings are done before the melody is -processed. @separate -@example - \context Lyrics \text - -@end example -The second argument of @code{\addlyrics} is the text. The text also -should not land on a Staff, but on a interpretation context for -syllables, extenders, hyphens etc. This context is called -Lyrics. -@separate -@example - - \midi @{ \tempo 4=72@} - -@end example -MIDI (Musical Instrument Digital Interface) is a standard for -connecting and recording digital instruments. So a MIDI file is like a -tape recording of an instrument. The @code{\midi} block causes makes the -music go to a MIDI file, so you can listen to the music you entered. It -is great for checking the music. Whenever you hear something weird, you -probably hear a typing error. - -Syntactically, @code{\midi} is similar to @code{\paper @{ @}}, since it -also specifies an output method. You can specify the tempo using the -@code{\tempo} command, in this case the tempo of quarter notes is set to -72 beats per minute. -@separate -@example +We can now typeset a melody with two staves: - \paper @{ linewidth = 10.0\cm @} - -@end example -We also want notation output. The linewidth is short so the piece -will be set in two lines. - -@node More movements -@section More movements +@quotation +@lilypond[verbatim,singleline] +\score { + \notes + < \context Staff = staffA { + \time 3/4 + \clef violin + \relative c'' { + e2-( d4 c2 b4 a8-[ a-] + b-[ b-] g-[ g-] a2.-) } + } + \context Staff = staffB { + \clef bass + c2 e4 g2. + f4 e d c2. + } + > + \paper {} +} +@end lilypond +@end quotation -[FIXME: merge here with, or move this to: Other ways to run LilyPond] +The example shows how small chunks of music, for example, the notes +@code{c2}, @code{e4}, etc. of the second staff, are combined to form a +larger chunk by enclosing it in braces. Again, a larger chunk is +formed by prefix @code{\context Staff} to it, and that chunk is +combined with @code{< >}. This mechanism is similar with mathematical +formulas: in a formula, a so-called expression is formed by combining +simpler expressions into larger expressions. For example, -You probably ran @file{ly2dvi} on the last example, and ended up with a -viewable @file{.dvi} file. However, between there are a few steps of -which LilyPond is only one. To enhance your understanding of what's -happening under the hood when you run @code{ly2dvi}, we explain what -programs are run. +@quotation + 1 -@code{ly2dvi} is a program that calls a number of programs in sequence. -The first thing it does, is running LilyPond on the input file. After -some calculations, a @file{.tex} is produced. The contents -of this file are very low-level instructions. + 1 + 2 + + (1 + 2) * 3 + + ((1 + 2) * 3) / (4 * 5) +@end quotation +@cindex expression +@cindex music expression +is a sequence of expressions, where each expression is contained in +the next one. The simplest expressions are numbers and operators +(like +, * and /). Parentheses are used to group expressions. In +LilyPond input, a similar mechanism is used. Here, the simplest +expressions are notes and rests. By enclosing expressions in @code{< +>} and @code{@{ @}}, more complex music is formed. The @code{\context} +also forms new expressions; prepending it to a music expression yields +a new expression. + +Like mathematical expressions, music expressions can be nested +arbitrarily deep, e.g. +@lilypond[verbatim,relative 1] + { c + < { e f } { c } + > + } +@end lilypond -For example, the following file (@file{miniatures.ly}) +@cindex indent +When spreading expressions over multiple lines, it is customary to use +an indent that indicates the nesting level. Formatting music like this +eases reading, and helps you insert the right amount of closing +braces at the end of an expression. For example, @example -\version "1.3.124" -\header @{ title = "Two miniatures" @} - -#(set! point-and-click line-column-location) - -\paper @{ linewidth = -1.0 @} - -\score @{ - \notes @{ c'4 d'4 @} - \header @{ - opus = "Opus 1." - piece = "Up" @} -@} \score @{ - \notes @{ d'4 c'4 @} - \header @{ - opus = "Opus 2." - piece = "Down" @} + \notes < + @{ + @dots{} + @} + @{ + @dots{} + @} + > @} @end example -The titling in this manual was not generated by ly2dvi, so we can't -exactly show it would look, but the result should resemble this: - -@center @strong{Two miniatures} -@flushright -Opus 1. -@end flushright -@flushleft -@var{Up} -@end flushleft -@lilypond - \score { - \notes { c'4 d'4 } - \paper { linewidth = -1.0 } - } -@end lilypond -@flushright -Opus 2. -@end flushright -@flushleft -@var{Down} -@end flushleft -@lilypond - \score { - \notes { d'4 c'4 } - \paper { linewidth = -1.0 } - } -@end lilypond - -This file is produced by ly2dvi in a few stages, with the help of text -formatting tools. LilyPond produces two output files, @file{miniatures.tex} -and @file{miniatures-1.tex}. They both look like this: - -@example - ... - \placebox@{-5 \outputscale @}% - @{ 8.7229 \outputscale @}% - @{\magfontWXGEomMMBo\char90 @}% - - \placebox@{-4 \outputscale @}% - @{ 81.0647 \outputscale @}% - ... -@end example - -@file{ly2dvi} looks at what output LilyPond produces, and generates a -file called @file{ly2dvi.out.tex}. This file contains formatting -instructions for the title and page layout. A fragment might look like - -@example - - \def\lilypondopus@{Opus 1.@} - \def\lilypondpiece@{Up@} - \def\mustmakelilypondtitle@{@} - \input miniatures.tex - \def\lilypondtitle@{Two miniatures@} -@end example -@file{ly2dvi} runs it through LaTeX. LaTeX is a text-formatting system -built on top of @TeX{}. It's very popular in the academic world. If LaTeX -is successful, this will produce a @file{.dvi} file, containing both the -titling and the actual music. @code{ly2dvi} completes its task by -deleting the two temporary files, leaving only @file{miniatures.dvi}. -Next, now we'll look at the example line by line to explain new things. +@node Adding articulation marks to notes +@section Adding articulation marks to notes +@cindex articulation +@cindex accents +@cindex staccato + +Common accents can be added to a note using a dash (`@code{-}') and a +single character: +@quotation +@lilypond[verbatim,relative 1] +c-. c-- c-> c-^ c-+ c-_ +@end lilypond +@end quotation @separate -@example -\version "1.3.124" -@end example -Lilypond and its language are still under development, and occasionally, -details of the syntax are changed. This fragment indicates for which -version the input file was written. When you compile this file, the -version number will be checked, and you will get a warning when the file -is too old. -This version number is also used by the @code{convert-ly} program (See -@ref{convert-ly}), which uses it to update the file to the latest lily -version. +@cindex fingering +Similarly, fingering indications can be added to a note using a dash +(`@code{-}') and the digit to be printed: +@c +@lilypond[verbatim,relative 1] + c-3 e-5 b-2 a-1 +@end lilypond -@separate -@example - \header @{ title = "Two miniatures" @} -@end example -This sets the titling information for the entire file. +Dynamic signs are made by adding the markings to the note: +@quotation +@lilypond[verbatim,relative 1] +c-\ff c-\mf +@end lilypond +@end quotation @separate -@example - #(set! point-and-click line-column-location) -@end example -This piece of Scheme code sets the Scheme variable -@code{point-and-click} to the value @var{line-column-location} (which -itself is a Scheme procedure). - -Editing input files can be quite complicated if you're working with -large files: if you're digitizing existing music, you have to -synchronize the .ly file, the sheet music on your lap and the sheet -music on the screen. The point-and-click mechanism makes it easy to -find the origin of an error in the .ly file: when you view the file with -Xdvi and click on a note, your editor will jump to the spot where that -note was entered. For more information, see @ref{Point and click}. +@cindex dynamics +@cindex decrescendo +@cindex crescendo +Crescendi and decrescendi are started with the commands @code{\<} and +@code{\>}. The command @code{\!} finishes a crescendo on the note it +is attached to: +@quotation +@lilypond[verbatim,relative 1] +c2-\< c2-\!-\ff c2-\> c2-\! +@end lilypond +@end quotation @separate -@example - \paper @{ -@end example -The @code{\score} blocks that follow in the file don't have -@code{\paper} sections, so the settings of this block are substituted: A -paper block, at top-level, i.e. not in a @code{\score} block sets the -default page layout. -@separate -@example - linewidth = -1.0 @} -@end example +@cindex slur +A slur is drawn across many notes, and indicates bound articulation +(legato). The starting note and ending note are marked with a +``@code{(}'' and a ``@code{)}'' respectively: -The variable @code{linewidth} normally sets the length of the systems on -the page. However, a negative value has a special meaning. If -@code{linewidth} is less than 0, no line breaks are inserted into the -score, and the spacing is set to natural length: a short phrase takes up -little space, a longer phrase more space. +@quotation +@lilypond[fragment,relative 1, verbatim] +d4-( c16-)-( cis d e c cis d e-)-( d4-) +@end lilypond +@end quotation +@separate +@cindex slurs versus ties +A slur is different from a tie. A tie simply makes the first note +sound longer, and can only be used on pairs of notes with the same +pitch. Slurs indicate the articulations of notes, and can be used on +larger groups of notes. Slurs and ties are also nested in practice: +@lilypond[fragment, relative=1] +c2-~-( c8 fis fis4 ~ fis2 g2-) +@end lilypond -@separate -@example - \score @{ - \notes @{ c'4 d'4 @} -@end example +@cindex phrasing slurs +If you need two slurs at the same time (one for articulation, one for +phrasing), you can also make a phrasing slur with @code{\(} and +@code{\)}. -In previous examples, notes were specified in relative octaves, -i.e. each note was put in the octave that would put it closest to its -predecessor. Besides relative, there is also absolute octave -specification, which you get when you don't specify @code{\relative}. In -this input mode, the central C is denoted by @code{c'}. Going down, you -get @code{c} @code{c,} @code{c,,} etc. Going up, you get @code{c''} -@code{c'''} etc. +@quotation +@lilypond[fragment,relative 1, verbatim] +a8-(-\( ais b c-) cis2 b'2 a4 cis, c-\) +@end lilypond +@end quotation -When you're copying music from existing sheet music, relative octaves -are probably the easiest to use: it's less typing work and errors are -easily spotted. However, if you write LilyPond input, either by hand -(ie. composing) or by computer, absolute octaves are probably less work. +More information on fingering, articulation, slurs, phrasing slurs, +and dynamics can be found in @ref{Fingering instructions}, +@ref{Articulations}, @ref{Slurs}, @ref{Phrasing slurs}, and @ref{Dynamics}, +respectively. -@separate -@example - \header @{ -@end example +@node Combining notes into chords +@section Combining notes into chords -The @code{\header} is normally at the top of the file, where it sets -values for the rest of the file. If you want to typeset different pieces -from one file (for example, if there are multiple movements, or if -you're making an exercise book), you can put different @code{\score} -blocks into the input file. ly2dvi will assemble all LilyPond output -files into a big document. The contents of \header blocks specified -within each score, are used for the titling of each movement. +@cindex chords +Chords can be made by +surrounding pitches with @code{<<} and @code{>}>: +@quotation +@lilypond[relative 0, fragment,verbatim] +r4 <>4 <>8 +@end lilypond +@end quotation @separate -@example - opus = "Opus 1." - piece = "Up" @} -@end example -For example, the Opus number is put at the right, and the piece string -will be at the left. - - - -@node A piano excerpt -@section A piano excerpt - -Our fourth subject is a piece of piano music. The fragment in the input -file is a piano reduction of the G major Sinfonia by Giovanni Battista -Sammartini. It was composed around 1740. It's in the source package -under the name @file{sammartini.ly}. -@lilypond[verbatim] -\include "paper16.ly" - -stemDown = \property Voice.Stem \override #'direction = #-1 -stemUp = \property Voice.Stem \override #'direction = #1 -stemBoth = \property Voice.Stem \revert #'direction - -viola = \notes \relative c' \context Voice = viola { - - \stemDown g'8. b,16 - s1 s2. r4 - g -} - -oboes = \notes \relative c'' \context Voice = oboe { - \stemUp s4 g8. b,16 c8 r - \grace - \times 2/3 { } - < - { \times 2/3 { a8 g c } \! c2 } - \context Voice = oboeTwo { - \stemDown - \grace { - \property Grace.Stem \override #'direction = #-1 - [f,16 g] } - f8 e e2 - } - > - \stemBoth - \grace <)b8. d8.-\trill> | - [ < )f8. a>] <)b,8 d> r [ ] r | - [ < )e8. g>] -} - -hoomPah = \repeat unfold 8 \notes - \transpose c' { \stemUp c8 \stemBoth \stemDown c'8 \stemBoth } - -bassvoices = \notes \relative c' { - c4 g8. b,16 - \autochange Staff \hoomPah - \translator Staff = down - \stemDown [c8 c'8] r4 - r4 - < {\stemUp r2 } - \context Voice = reallyLow {\stemDown g2 ~ | g4 c8 } > -} -\score { - \context PianoStaff \notes < - \context Staff = up < \time 2/2 - \viola - \oboes - > - \context Staff = down < \time 2/2 \clef bass - \bassvoices - > - > - \midi { } - \paper { - indent = 0.0 - linewidth = 15.0 \cm } -} +You can combine beams and ties with chords. Beam and tie markings +must be placed outside the chord markers: +@quotation +@lilypond[relative 0, fragment,verbatim] +r4 <>8-[ <>-]-~ <> @end lilypond +@end quotation -If this looks like incomprehensible gibberish to you, you are right. -This example has been doctored to have as many quirks as possible. - -As you can see, this example features multiple voices on one staff. To -make room for those voices, their notes have to be stemmed in opposite -directions. - -Printed symbols are internally represented by so-called Graphical -Objects (more colloquially: Grobs). These statements concern the -grob called `Stem'. Each grob is described by a bunch of settings. These -setting determine the fonts, offsets, sub-routines to be called on the -grob, etc. The initial values of these settings are set in the Scheme -file @file{scm/grob-description.scm}. - -@separate +@quotation @example - stemDown = \property Voice.Stem \override #'direction = #-1 +r4 <>8-\>-( <> <> <>8-\!-) @end example - -Set a proprerty for all Stem grobs in the current Voice: -@code{direction} is set to @code{-1}, which encodes down. The setting -remains in effect until it is reverted. - -@separate -@example - \property Voice.Stem \revert #'direction -@end example - -Revert the to the previous setting. The effect of precisely one -@code{\stemDown} or @code{\stemUp} is neutralised. - - -LilyPond includes the identifiers @code{\stemUp}, @code{\stemDown} along -with some other commonly used formatting instructions, but to explain how -it works, we wrote our own here. Of course, you should use predefined -identifiers like these if possible: then you will be affected less by -the implementation changes we occasionally make. - -@separate -@example -viola = \notes \relative c' \context Voice = viola @{ -@end example -In this example, you can see multiple parts on a staff. Each part is -associated with one notation context. This notation context handles -stems and dynamics (among others). The name of this context is -@code{Voice}. For each part we have to make sure that there is -precisely one @code{Voice} context, so we give it an unique name -(`@code{viola}'). - +@lilypond[relative 0, fragment] +\slurUp +r4 <>8-\>-( <> <> <>8-\!-) +@end lilypond +@end quotation @separate -@example - -@end example -The delimiters @code{<} and @code{>} are shorthands for -@code{\simultaneous @{} and @code{@}}. The expression enclosed in -@code{<} and @code{>} is a chord. - -@cindex dynamics -@cindex loudness -@cindex forte -@cindex arpeggio - -@code{\f} places a forte symbol under the chord. The forte applies to -the whole chord, but the syntax requires that commands like forte and -arpeggio are attached to a note, so here we attach them to the first -note. -@code{\arpeggio} typesets an arpeggio sign (a wavy vertical line) before -the chord. -@separate -@example - \stemDown -@end example +@menu +* Basic rhythmical commands:: +* Commenting input files:: +@end menu -@separate -@example - g'8. b,16 -@end example -Relative octaves work a little differently with chords. The starting -point for the note following a chord is the first note of the chord. So -the @code{g} gets an octave up quote: it is a fifth above the starting -note of the previous chord (the central C). +@node Basic rhythmical commands +@subsection Basic rhythmical commands + +@cindex pickup +@cindex anacruse +@cindex upstep +@cindex partial measure +A pickup (or upstep) 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: +@lilypond[relative 1,verbatim,fragment] + \partial 8 + f8 c2 d e +@end lilypond -@separate -@example -s1 s2. r4 -@end example -@code{s} is a spacer rest. It does not print anything, but it does have -the duration of a rest. It is useful for filling up voices that -temporarily don't play. In this case, the viola doesn't come until one -and a half measure later. +@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: +@c +@lilypond[relative 0,verbatim,fragment] + \times 2/3 { f8 g a } + \times 2/3 { c r c } +@end lilypond -@separate -@example -oboes = \notes \relative c'' \context Voice = oboe @{ -@end example -Now comes a part for two oboes. They play homophonically, so we -print the notes as one voice that makes chords. Again, we insure that -these notes are indeed processed by precisely one context with -@code{\context}. -@separate -@example -\stemUp s4 g8. b,16 c8 r -@end example -@code{\stemUp} is a reference to the @code{\property \override} command -defined above. -@separate -@example -\grace < d4 f> -@end example -@cindex @code{\grace} -@cindex ornaments @cindex grace notes +@cindex accacciatura +Grace notes are also made by prefixing a note, or a set of notes with +a keyword. In this case, the keyword is @code{\grace}: +@lilypond[relative 1, verbatim,fragment] + c4 \grace b16-( c4-) + \grace { d16-( e } d4-) +@end lilypond -@code{\grace} introduces grace notes. It takes one argument, in this -case a chord. +@noindent +More information on grace notes, tuplets and upsteps are in @ref{Grace +notes}, @ref{Tuplets} and @ref{Partial measures}. -@ignore -The slur started on the @code{e} of the chord -will be attached to the next note.@footnote{LilyPond will squirm -about unended Slurs. In this case, you can ignore the warning}. -@end ignore -@separate -@example -\times 2/3 -@end example -@cindex tuplet -@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 in this case the fraction is 2/3. -@separate -@example -@{ @} -@end example -The piece of music to be `tripletted' is sequential music containing -three notes. On the first chord, a crescendo is started with -@code{\<}. To be precise, the crescendo start is syntactically attached -to the preceding note, the @code{d}. -@cindex dynamics -@cindex crescendo -@cindex @code{\<} -@separate -@example -< -@end example -At this point, the homophonic music splits into two rhythmically -different parts. We can't use a sequence of chords to enter this, so -we make a `chord' of sequences to do it. We start with the upper -voice, which continues with upward stems: -@separate -@example - @{ \times 2/3 @{ a8 g c @} \! c2 @} -@end example +@node Commenting input files +@subsection Commenting input files -@cindex @code{\!} +@cindex comments +@cindex line comment +@cindex block comment +Comments are pieces of the input that are ignored. There are two +types of comments. A line comments is introduced by @code{%}: after +that, the rest of that line is ignored. Block comments span larger +sections of input. Anything that is enclosed in @code{%@{} and +@code{%@}} is ignored too. The following fragment shows possible uses +for comments: -The crescendo is ended at the half note by the escaped exclamation -mark @code{\!}. -@separate -@example -\context Voice = oboeTwo @{ -\stemDown -@end example -We can't share stems with the other voice, so we have to create a new -@code{Voice} context. We give it the name @code{oboeTwo} to distinguish -it from the other context. Stems go down in this voice. -@separate -@example -\grace @{ -@end example -@cindex Grace context -When a grace section is processed, a @code{Grace} context is -created. This context acts like a miniature score of its own. It has -its own time bookkeeping, and you can make notes, beams, slurs -etc. Here we fiddle with a property and make a beam. The argument of -@code{\grace} is sequential music. +@example + % notes for twinkle twinkle follow: + c4 c g' g a a + + %@{ + + This line, and the notes below + are ignored, since they are in a + block comment. -@separate -@example -\property Grace.Stem \override #'direction = #-1 -[f,16 g] @} -@end example + g g f f e e d d c2 + %@} +@end example -Normally, grace notes are always stem up, but in this case, the upper -voice interferes. We set the stems down here. -As far as relative mode is concerned, the previous note is the -@code{c'''2} of the upper voice, so we have to go an octave down for -the @code{f}. -@separate -@example - f8 e e2 -@} > -@end example -This ends the two-part section. -@separate -@example -\stemBoth -\grace <)b8. d8.-\trill> | -@end example -@cindex trill -@cindex stemBoth -@code{\stemBoth} ends the forced stem directions. From here, stems are -positioned as if it were single part music. +@node Printing lyrics +@section Printing lyrics +@cindex lyrics -The bass has a little hoom-pah melody to demonstrate parts switching -between staffs. Since it is repetitive, we use repeats: -@separate -@example -hoomPah = \repeat unfold 8 -@end example -@cindex unfolded @code{\repeat} -The unfolded repeat prints the notes in its argument as if they were -written out in full eight times. -@separate +@cindex Lyrics +@cindex Songs +Lyrics are entered by separating each syllable with a space, and +surrounding them with @code{\lyrics @{ @dots{} @}}, for example, @example -\notes \transpose c' @{ -@end example -@cindex transposing -@cindex relative mode and transposing - -Transposing can be done with @code{\transpose}. It takes two arguments -the first specifies what central C should be transposed to. The second -is the to-be-transposed music. As you can see, in this case, the -transposition has no effect, as central C stays at central C. - -The purpose of this no-op is circumventing relative mode. Relative mode -can not be used together with transposition, so @code{\relative} will -leave the contents of @code{\hoomPah} alone. We can use it without -having to worry about getting the motive in a wrong octave. -@separate -@example -bassvoices = \notes \relative c' @{ -c4 g8. b,16 -\autochange Staff \hoomPah + \lyrics @{ I want to break free @} @end example -@cindex staff switch, automatic -@cindex cross staff voice, automatic -@cindex @code{\autochange} - -Voices can switch between staffs. The easiest way to get this, is to use -@code{\autochange}. This command looks at the pitch of each note, and if -necessary, will cross to the other staff. For this to work, the two -staffs must be called @code{"up"} and @code{"down"}. -@separate + +Like notes, lyrics are also a form of music, but they must not be +printed on a staff, which is the default way to print music. To print +them as lyrics, they must be marked with @code{ \context Lyrics}: @example - \translator Staff = down + \context Lyrics \lyrics @{ I want to break free @} @end example -@cindex staff switch -@cindex cross staff voice -We want the remaining part of this melody on the lower staff, so we do a -manual staff switch here. +The melody for this song is as follows: +@lilypond[fragment,relative=1] + \partial 8 + c8 + \times 2/3 { f4 g g } \times 2/3 { g4-( a2-) } +@end lilypond -@separate -@example -\context Voice = reallyLow @{\stemDown g2 ~ | g4 c8 @} > -@end example -@cindex tie -@cindex @code{~} -After skipping some lines, we see @code{~}. This mark makes ties. Note -that ties and slurs are different things. A tie can only connect two -note heads of the same pitch, whereas a slur can connect many chords -with one curve. +The lyrics can be set to these notes, combining both with the +@code{\addlyrics} keyword: +@example + \addlyrics + \notes @{ @dots{} @} + \context Lyrics @dots{} +@end example + +The final result is +@lilypond[verbatim,linewidth=6.0cm] +\score { + \notes { + \addlyrics + \relative c' { + \partial 8 + c8 + \times 2/3 { f g g } \times 2/3 { g4-( a2-) } + } + \context Lyrics \lyrics { I want to break free } + } + \paper{ } +} +@end lilypond -@separate -@example -\context PianoStaff -@end example - A special context is needed to get cross staff beaming right. This -context is called @code{PianoStaff}. -@separate -@example -\context Staff = bottom < \time 2/2 \clef bass -@end example -The bottom staff must have a different clef. -@separate -@example -indent = 0.0 +@cindex melisma +@cindex extender line +@c synonyms? +This melody ends on a @rglos{melisma}, a single syllable (``free'') +sung to more than one note. This is indicated with a @emph{extender +line}. It is entered as two underscores, i.e. +@example + \lyrics @{ I want to break free __ @} @end example -To make some more room on the line, the first (in this case the only) -line is not indented. The line still looks very cramped, but that is due -to the page layout of this document. - - -@ignore -[TODO: +@lilypond[] +\score { + \notes { + \addlyrics + \relative c' { + \partial 8 + c8 + \times 2/3 { f g g } \times 2/3 { g4-( a2-) } + + %% ugh, this is to deal with bugs in the extender implementation + \hideNotes + c32 + } + \context Lyrics \lyrics { I want to break free __ } + } + \paper{ linewidth = 9.0 \cm } +} +@end lilypond -* font-size, multi-stanza. +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[singleline] +\score { + \addlyrics \notes \relative f' { \time 2/4 + f4 f c' c' } + \context Lyrics \lyrics { Twin -- kle twin -- kle + } +\paper { linewidth = 6.0 \cm } + } + +@end lilypond -* Simple part combining in a Hymn -@end ignore +More options, like putting multiple lines of lyrics below a melody are +discussed in @ref{Vocal music}. -@node An orchestral score -@section An orchestral score -@menu -* The full score:: -* Extracting an individual part:: -@end menu +@node A lead sheet +@section A lead sheet +@cindex Lead sheets +@cindex chords +@cindex chord names + +In popular music, it is common to denote accompaniment as chord-names. +Using them in LilyPond has two parts, just like lyrics: entering the +chords (with @code{\chords}), and printing them (with @code{\context +ChordNames}). + +Chord names are entered by starting chords mode (with @code{\chords}). +In chords mode, you can enter chords with a letter (indicating the +root of the chord), and a durations following that: +@c +@lilypond[verbatim] + \chords { c2 f4. g8 } +@end lilypond -Our last two examples show a way to setup the music for an orchestral -score. When typesetting a piece for several instruments, you'll want to -create a conductor's full score, alongside several individual parts. +@noindent +The result of @code{\chords} is a list of chords, and is equivalent +to entering chords with @code{<<@dots{}>>}. -LilyPond is well suited for this task. We will declare the music for -each instrument individually, giving the music of each instrument its -own name. These pieces of music are then combined in different -@code{\score} blocks to produce different combinations of the score. +Other chords can be created by adding modifiers, after a colon. The +following example shows a few common modifiers: +@c +@lilypond[verbatim] + \chords { c2 f4:m g4:maj7 gis1:dim7 } +@end lilypond -This orchestral score example consists of three input files. In the -first file, @file{os-music.ly}, we define the music for all instruments. -This file will be used both for producing the score and the separate -parts. +Printing chords is done by adding @code{\context ChordNames} +before the chords thus entered: +@c +@lilypond[verbatim] + \context ChordNames \chords \chords { c2 f4.:m g4.:maj7 gis8:dim7 } +@end lilypond -If you were to run lilypond on this file, no printable output would be -produced. +@cindex lead sheet +When put together, chord names, lyrics and a melody form +a lead sheet, for example, @example -% os-music.ly -\header @{ - title = "Zo, goed lieverd?" - subtitle = "How's, this babe?" - composer = "JCN" - opus = "1" - piece = "Laid back" -@} -global = @{ - \time 2/4 - \skip 2*4 \bar "|." -@} -Key = \notes \key as \major -flautoI = \notes\relative c'' @{ - f8 g f g f g f g - bes as bes as bes as bes as -@} -flautoII = \notes\relative c'' @{ - as8 bes as bes R1 d4 ~ d -@} -tromboI = \notes\relative c'' @{ - c4. c8 c8 c4. es4 r as, r -@} -tromboII = \notes\relative c'' @{ - as4. as8 as8 as4. R1*1/2 as4 es' -@} -timpani = \notes\relative c, @{ - \times 2/3 @{ f4 f f @} - \times 4/5 @{ as8 as as as as @} - R1 -@} -corno = \notes\relative c' @{ - bes4 d f, bes d f, bes d +\score @{ + < + \context ChordNames \chords @{ @emph{chords} @} + \addlyrics + \notes @emph{the melody} + \context Lyrics \lyrics @{ @emph{the text} @} + > + \paper @{ @} @} @end example +@lilypond[] +\score { + < + \context ChordNames \chords { r8 c2:sus4 f } + \addlyrics + \notes \relative c' { + \partial 8 + c8 + \times 2/3 { f g g } \times 2/3 { g4-( a2-) } } + \context Lyrics \lyrics { I want to break free __ } + > + \paper{ raggedright = ##t } +} +@end lilypond -We will not go through the input line by line, but only indicate and -explain the new elements. +A complete list of modifiers, and other options for layout are in the +reference manual section @ref{Chords}. -@separate -@example -global = @{ - \time 2/4 - \skip 2*4 \bar "|."; +@node Listening to output +@section Listening to output + +@cindex sound +@cindex MIDI + +MIDI (Musical Instrument Digital Interface) is a standard for +connecting and recording digital instruments. A MIDI file is like a +tape recording of a MIDI instrument. The @code{\midi} block makes the +music go to a MIDI file, so you can listen to the music you entered. +It is great for checking the music: octaves that are off, or +accidentals that were mistyped, stand out very much when listening to +the musical transcription. + +@code{\midi} can be used in similarly to @code{\paper @{ @}}, for +example +@example +\score @{ + @var{..music..} + \midi @{ \tempo 4=72 @} + \paper @{ @} @} -@end example +@end example -Declare setting to be used globally. The @code{\skip} command produces -no output, but moves forward in time: in this case, the duration of a -half note (@code{2}), and that four times (@code{*4}). This brings us -to the end of the piece, and we can set the end bar. +Here, the tempo is specified using the @code{\tempo} command. In this +case the tempo of quarter notes is set to 72 beats per minute. More +information on auditory output is in the @ref{Sound} section in the +notation manual. -@separate -@example -Key = \notes \key as \major + + +@node Titling +@section Titling + +Bibliographic information is entered in a separate block, the +@code{\header} block. The name of the piece, its composer, etc. are +entered as assignment, within @code{\header @{ @dots{} @}}. For +example, +@example + \header @{ + title = "Eight miniatures" + composer = "Igor Stravinsky" + tagline = "small is beautiful" + @} + + \score @{ @dots{} @} @end example -Declare the key signature of the piece and assign it to the identifier -@var{Key}. Lateron, we'll use @code{\Key} for all staffs except those -for transposing instruments. -@node The full score -@subsection The full score +@cindex bibliographic information +@cindex titles +@cindex composer +@cindex ly2dvi -The second file, @file{os-score.ly} reads the definitions of the first -(@file{os-music.ly}), and defines the @code{\score} block for the full -conductor's score. +When the file is processed by @code{ly2dvi}, the title and composer +specified are printed above the music. The `tagline' is a short line +printed at bottom of the last page, which normally says ``Lily was +here, version @dots{}''. In the example above, it is replaced by the +line ``small is beautiful''. +Normally, the @code{\header} is put at the top of the file. However, +for a document that contains multiple pieces (e.g. a etude book, or +part with multiple movements), then the header can be put into the +@code{\score} block as follows; in this case, the name of each piece +will be printed before each movement: -@example -% os-score.ly -\include "os-music.ly" -\include "paper13.ly" -#(set! point-and-click line-column-location) -#(define text-flat '((font-relative-size . -2) - (music "accidentals--1"))) +@cindex Lily was here +@cindex signature line +@cindex tag line -\score @{ - < - \global - \property Score.BarNumber \override #'padding = #3 - \context StaffGroup = woodwind < - \context Staff = flauti < - \property Staff.midiInstrument = #"flute" - \property Staff.instrument = "2 Flauti" - \property Staff.instr = "Fl." - \Key - \context Voice=one @{ \voiceOne \flautoI @} - \context Voice=two @{ \voiceTwo \flautoII @} - > - > - \context StaffGroup = timpani < - \context Staff = timpani < - \property Staff.midiInstrument = #"timpani" - \property Staff.instrument = #'(lines "Timpani" "(C-G)") - \property Staff.instr = #"Timp." - \clef bass - \Key - \timpani - > - > - \context StaffGroup = brass < - \context Staff = trombe < - \property Staff.midiInstrument = #"trumpet" - \property Staff.instrument = #`(lines "2 Trombe" "(C)") - \property Staff.instr = #`(lines "Tbe." "(C)") - \Key - \context Voice=one \partcombine Voice - \context Thread=one \tromboI - \context Thread=two \tromboII - > - \context Staff = corni < - \property Staff.midiInstrument = #"french horn" - \property Staff.instrument = #`(lines "Corno" - (columns "(E" ,text-flat ")")) - \property Staff.instr = #`(lines "Cor." - (columns "(E" ,text-flat ")")) - \property Staff.transposing = #3 - \notes \key bes \major - \context Voice=one \corno - > - > - > - \paper @{ - indent = 15 * \staffspace - linewidth = 60 * \staffspace - textheight = 90 * \staffspace - \translator@{ - \VoiceContext - \consists "Multi_measure_rest_engraver" - @} - \translator@{ - \HaraKiriStaffContext - \remove "Multi_measure_rest_engraver" - @} +@example + \header @{ + title = "Eight miniatures" + composer = "Igor Stravinsky" + tagline = "small is beautiful" @} - \midi @{ - \tempo 4 = 75 + + \score @{ @dots{} + \header @{ piece = "Adagio" @} + @} + \score @{ @dots{} + \header @{ piece = "Menuetto" @} @} -@} @end example -@center @strong{Zo, goed lieverd?} -@sp 1 -@center How's, this babe? -@flushright -Opus 1. -@end flushright -@flushleft -@sc{Laid back} -@end flushleft +More information on titling can be found in @ref{Invoking ly2dvi}. -@lilypondfile{os-score.ly} -@separate -@example -\include "os-music.ly" -@end example -First, we need to include the music definitions we made in -@file{os-music.ly}. +@node Single staff polyphony +@section Single staff polyphony -@separate -@example -#(set! point-and-click line-column-location) -@end example -In a large orchestral score like this you're bound to make some small -mistakes, so we enable point and click (See @ref{Point and click}) -editing. +@cindex polyphony +@cindex multiple voices +@cindex voices, more -- on a staff -@separate -@example -#(define text-flat '((font-relative-size . -2) - (music "accidentals--1"))) -@end example +When different melodic lines are combined on a single staff, these 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 stems down. -When naming the tuning of the french horn, we'll need a piece of text -with a flat sign. LilyPond has a mechanism for font selection and -kerning called Scheme markup text (See @ref{Text markup}). The flat -sign is taken from the music font, and its name is @code{accidentals--1} -(The sharp sign is called @code{accidentals-+1}). The default font is -too big for text, so we select a relative size of @code{-2}. +Entering such parts is done by entering each voice as a sequence (with +@code{@{ .. @}}), and combining those simultaneously, separating the +voices with @code{\\}: -@separate @example - < - \global + < @{ a4 g2 f4-~ f4 @} \\ + @{ r4 g4 f2 f4 @} > @end example -Of course, all staffs are simultaneous and use the same global settings. +@lilypond[relative 1] +\context Staff < { a4 g2 f4-~ f4 } \\ + { r4 g4 f2 f4 } > +@end lilypond -@separate +For polyphonic music typesetting, spacer rests can also be convenient: these +are rests that do not print. It is useful for filling up voices that +temporarily do not play: @example - \property Score.BarNumber \override #'padding = #3 + < @{ a4 g2 f4-~ f4 @} \\ + @{ s4 g4 f2 f4 @} > @end example -LilyPond prints bar numbers at the start of each line, but -unfortunately, they end up a bit too close to the staff in this example. -A bar number internally is a Grob called @var{BarNumber}. BarNumber -Grobs can be manipulated through their @var{side-position-interface}. One -of the properties of a @var{side-position-interface} that can be tweaked -is the @var{padding}: the amount of extra space that is put between this -Grob and other Grobs. We set the padding to three staff spaces. - -You can find all this kind of information in LilyPond's automatically -generated documentation in -@ifnottex -@ref{ (lilypond-internals)lilypond-internals, LilyPond Internals}. -@end ifnottex -@iftex -the online documentation. -@end iftex +@lilypond[relative 1] +\context Staff < { a4 g2 f4-~ f4 } \\ + { s4 g4 f2 f4 } > +@end lilypond -@separate -@example - \context StaffGroup = woodwind < - \context Staff = flauti < -@end example -A new notation context: the StaffGroup. StaffGroup can hold one or more -Staffs, and will print a big bracket at the left of the score. Start a -new staff group for the woodwind section (just the flutes in this case). -Immediately after that, we start the staff for the two flutes, that also -play simultaneously. +Again, these expressions can be nested arbitrarily: + +@lilypond[fragment] +< + \context Staff = staffA + \relative c'' + < { a4 g2 f4-~ f4 } \\ + { s4 g4 f2 f4 } > + \context Staff = staffB + < { \clef bass <>1 } \\ + { f4 d e2 } + > +> +@end lilypond -@separate -@example - \property Staff.midiInstrument = #"flute" -@end example -Specify the instrument for MIDI output (see @ref{MIDI instrument -names}). -@separate -@example - \property Staff.instrument = "2 Flauti" - \property Staff.instr = "Fl." -@end example -And define the instrument names to be printed in the margin, -@code{instrument} for the first line of the score, @code{instr} for the -rest of the score. +More features of polyphonic typesetting are in the notation manual +in @ref{Polyphony}. -@separate +@node Piano staves +@section Piano staves + +@cindex staff switch, manual +@cindex cross staff voice, manual +@cindex @code{\translator} + +Piano music is always typeset in two staves connected by a brace. +Printing such a staff is done similar to the polyphonic example in +@ref{Combining music into compound expressions}: @example - \Key + < \context Staff = up @{ @dots{} @} + \context Staff = down @{ @dots{} @} + > @end example -The flutes play in the default key. - -@separate +but now this entire expression must be interpreted as a +@code{PianoStaff}: @example - \context Voice=one @{ \voiceOne \flautoI @} - \context Voice=two @{ \voiceTwo \flautoII @} + \context PianoStaff < \context Staff @dots{} > @end example -Last come the actual flute parts. Remember that we're still in -simultaneous mode. We name both voices differently, so that LilyPond -will actually create two Voice contexts. The flute parts are simple, so -we specify manually which voice is which: @code{\voiceOne} forces the -direction of stems, beams, slurs and ties up, @code{\voiceTwo} sets -directions down. -@separate +Here is a full-fledged example: + +@lilypond[relative 0,fragment] +\context PianoStaff + < \context Staff = up { \time 2/4 + c4 c g' g } + \context Staff = down { + \clef bass c,, c' e c } + > +@end lilypond + +More information on formatting piano music is in @ref{Piano music}. + +@node Setting variables +@section Setting variables + +When the music is converted from notes to print, it is interpreted +from left-to-right order, similar to what happens when we read +music. During this step, context-sensitive information, such as the +accidentals to print, and where barlines must be placed, are stored in +variables. These variables are called @emph{translation properties}. +The properties can also be manipulated from input files. Consider this input: @example - > - > -@end example -Close the flutes staff and woodwind staff group. +\property Staff.autoBeaming = ##f +@end example +It sets the property named @code{autoBeaming} in the current staff to +@code{##f}, which means `false'. This property controls whether beams +are printed automatically: +@lilypond[relative 1,fragment,verbatim] + c8 c c c + \property Staff.autoBeaming = ##f + c8 c c c +@end lilypond -@separate +@noindent +LilyPond includes a built-in programming language, namely, a dialect +of Scheme. The argument to @code{\property}, @code{##f}, is an +expression in that language. The first hash-mark signals that a piece +of Scheme code follows. The second hash character is part of the +boolean value true (@code{#t}). Values of other types may be +entered as follows: +@itemize @bullet +@item a string, enclosed in double quotes, for example, @example - \property Staff.instrument = #'(lines "Timpani" "(C-G)") + \property Staff.instrument = #"French Horn" @end example -The timpani staff only shows a new piece of scheme markup, it sets two -lines of text. - -@separate +@item a boolean: either @code{#t} or @code{#f}, for true and false +respectively, e.g. @example - \context Voice=one \partcombine Voice - \context Thread=one \tromboI - \context Thread=two \tromboII + \property Voice.autoBeaming = ##f + \property Score.skipBars = ##t @end example -You have seen the notation contexts Staff and Voice, but here's a new -one: Thread. One or more Threads can be part of a Voice. The Thread -takes care of note heads and rests, the Voice combine note heads onto a -stem. - -For the trumpets we use the automatic part combiner (see @ref{Automatic -part combining}) to combine the two simultaneous trumpet parts onto the -trumpet staff. Each trumpet gets its own Thread context, which must be -named @code{one} and @code{two}). The part combiner makes these two -threads share a Voice when they're similar, and splits the threads up -when they're different. -@separate +@item a number, such as @example - \property Staff.instrument = #`(lines "Corno" - (columns "(E" ,text-flat ")")) + \property Score.currentBarNumber = #20 @end example -The french horn has the most complex scheme markup name, made up of two -lines of text. The second line has two elements (columns), the @code{E} -and the flat sign @code{text-flat} that we defined before. -@separate +@item a symbol, which is introduced by a quote character, as in @example - \property Staff.transposing = #3 + \property Staff.crescendoSpanner = #'dashed-line @end example -The french horn is to be tuned in E-flat, so we tell the MIDI backend to -transpose this staff by three steps. -Note how we can choose different tuning for entering, printing and -playing, using @code{\transpose} and the MIDI Staff proprerty -@var{transposing}. +@item a pair, which is also introduced by a quote character, like in +the following statements, which set properties to the pairs (-7.5, 6) +and (3, 4) respectively: -@separate @example - \notes \key bes \major + \property Staff.minimumVerticalExtent = #'(-7.5 . 6) + \property Staff.timeSignatureFraction = #'(3 . 4) @end example -Therefore, it has a different key. -@separate + +@end itemize + +There are many different properties, and not all of them are listed in +this manual. However, the internal documentation lists them all in the +@internalsref{All translation properties}, and most properties +are demonstrated in one of the +@ifhtml +@uref{../../../input/test/out-www/collated-files.html,tips-and-tricks} +@end ifhtml +@ifnothtml +tips-and-tricks +@end ifnothtml +examples. + + +@node Fine tuning layout +@section Fine tuning layout + +Sometimes it is necessary to change music layout by hand. When music +is formatted, layout objects are created for each symbol. For +example, every clef and every note head is represented by a layout +object. These layout objects also carry variables, which we call +@emph{layout properties}. By changing these variables from their +values, we can alter the look of a formatted score: + +@lilypond[verbatim,relative 0] + c4 + \property Voice.Stem \override #'thickness = #3.0 + c4 c4 c4 +@end lilypond + +@noindent +In the example shown here, the layout property @code{thickness} (a +symbol) is set to 3 in the @code{Stem} layout objects of the current +Voice. As a result, the notes following @code{\property} have thicker +stems. + +In most cases of manual overrides, only a single object must be +changed. This can be achieved by prefixing @code{\once} to the +@code{\property} statement, i.e. + @example - indent = 15 * \staffspace - linewidth = 60 * \staffspace + \once \property Voice.Stem \set #'thickness = #3.0 @end example -We specify a big indent for the first line and a small linewidth for this -tutorial. -@separate +@lilypond[relative 0] + c4 + \once \property Voice.Stem \set #'thickness = #3.0 + c4 c4 c4 +@end lilypond -Usually, LilyPond's predefined setup of notation contexts (Thread, -Voice, Staff, Staffgroup, Score) is just fine. But in this case, we -want a different type of Staff context. +@noindent +Some overrides are so common that predefined commands are provided as +a short cut. For example, @code{\slurUp} and @code{\stemDown}. These +commands are described in +@ifhtml +the +@end ifhtml +@ref{Notation manual}, under the sections for slurs and stems +respectively. + +The exact tuning possibilities for each type of layout object are +documented in the internal documentation of the respective +object. However, many layout objects share properties, which can be +used to apply generic tweaks. We mention a couple of these: + +@itemize @bullet +@item The @code{extra-offset} property, which +@cindex @code{extra-offset} +has a pair of numbers as value, moves around objects in the printout. +The first number controls left-right movement; a positive number will +move the object to the right. The second number controls up-down +movement; a positive number will move it higher. The unit of these +offsets are staff-spaces. The @code{extra-offset} property is a +low-level feature: the formatting engine is completely oblivious to +these offsets. + +In the following example example, the second fingering is moved a +little to the left, and 1.8 staff space downwards: + +@cindex setting object properties + +@lilypond[relative 1,verbatim] +\stemUp +f-5 +\once \property Voice.Fingering + \set #'extra-offset = #'(-0.3 . -1.8) +f-5 +@end lilypond -In orchestral scores, it often happens that one instrument has only -rests during one line of the score. The @code{HaraKiriStaffContext} can -be used as a regular @code{StaffContext} drop-in and will take care of -the automatic removing of empty staffs. +@item +Setting the @code{transparent} property will make an object be printed +in `invisible ink': the object is not printed, but all its other +behavior is retained. The object still takes space, it takes part in +collisions, and slurs, ties and beams can be attached to it. + +@cindex transparent objects +@cindex removing objects +@cindex invisible objects +The following example demonstrates how to connect different voices +using ties. Normally ties only happen between notes of the same +voice. By introducing a tie in a different voice, and blanking a stem +in that voice, the tie appears to cross voices: + +@lilypond[fragment,relative 1,verbatim] +\context Staff < { + \once \property Voice.Stem \set #'transparent = ##t + b8~ b8 + } \\ { + b-[ g8-] + } > +@end lilypond -@node Extracting an individual part -@subsection Extracting an individual part +@item +The @code{padding} property for objects with +@cindex @code{padding} +@code{side-position-interface} can be set to increase distance between +symbols that are printed above or below notes. We only give an +example; a more elaborate explanation is in @ref{Constructing a +tweak}: + +@lilypond[relative 1] + c2-\fermata + \property Voice.Script \set #'padding = #3 + b2-\fermata +@end lilypond -The third file, @file{os-flute-2.ly} also reads the definitions of the -first (@file{os-music.ly}), and defines the @code{\score} block for the -second flute part. +@end itemize -@example -\include "os-music.ly" -\include "paper16.ly" +More specific overrides are also possible. The notation manual +discusses in depth how to figure out these statements for yourself, in +@ref{Tuning output}. -\score @{ - \context Staff < - \property Score.skipBars = ##t - \property Staff.midiInstrument = #"flute" - \global - \Key - \flautoII - > - \header @{ - instrument = "Flauto II" - @} - \paper @{ - linewidth = 80 * \staffspace - textheight = 200 * \staffspace - @} - \midi @{ - \tempo 4 = 75 - @} -@} +@node Organizing larger pieces +@section Organizing larger pieces + +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 and/or +orchestral pieces, more deeply nested. + +By using variables, also known as identifiers, it is possible to break +up complex music expressions. +An identifier is assigned as follows: +@example + namedMusic = \notes @{ @dots{} @end example -@center @strong{Zo, goed lieverd?} -@sp 1 -@center How's, this babe? -@center @emph{Flauto II} -@flushright -Opus 1. -@end flushright -@flushleft -@sc{Laid back} -@end flushleft -@lilypondfile{os-flute-2.ly} +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 thrice by using +variable substitution: +@lilypond[singleline,verbatim] +seufzer = \notes { + dis'8 e'8 +} +\score { \notes { + \seufzer \seufzer \seufzer +} } +@end lilypond -Because we separated the music definitions from the @code{\score} -instantiations, we can easily define a second score from the music of -the second flute. This then is the part for the second flute player. -Of course, we make separate parts for all individual instruments. +The name of an identifier should only have alphabetic characters only, +and no numbers, underscores or dashes. The assignment should be +outside of the @code{\score} block. -@separate +It is possible to use variables for many other types of objects in the +input. For example, @example - \flautoII + width = 4.5\cm + name = "Wendy" + aFivePaper = \paper @{ paperheight = 21.0 \cm @} @end example -In this individual part the second flute has a whole staff for itself, -so we don't want to force stem or tie directions. - -@separate +Depending on its contents, the identifier can be used in different +places. The following example uses the above variables: @example - \header @{ - instrument = "Flauto II" + \score @{ + \notes @{ c4^\name @} + \paper @{ + \aFivePaper + linewidth = \width + @} @} @end example -The @code{\header} definitions were also read from @file{os-music.ly}, -but we need to set the instrument for this particular score. -@separate -@example - \property Score.skipBars = ##t -@end example -In the conductor's full score, all bars with rests are printed, but for -the individual parts, we want to contract pieces of consecutive empty -bars. LilyPond will do this if Score's @var{skipBars} property to -true. +More information on the possible uses of identifiers is in the +technical manual, in @ref{Scheme datatypes}. -@node Other ways to run LilyPond -@section Other ways to run LilyPond +@node An orchestral part +@section An orchestral part -Until now, you have been using @file{ly2dvi} to invoke LilyPond. -There are three other routes. Firstly, there is a script called -@code{lilypond-book}, that allows you to freely mix LilyPond input with -Texinfo or LaTeX input. For example, this manual was written using -@code{lilypond-book}. It is discussed in @ref{lilypond-book}. +In orchestral music, all notes are printed twice: both in a part for +the musicians, and in a full score for the conductor. Identifiers can +be used to avoid double work: the music is entered once, and stored in +variable. The contents of that variable is then used to generate +both the part and the score. +It is convenient to define the notes in a special file, for example, +suppose that the @file{horn-music.ly} contains the following part of a +horn/bassoon duo. +@example +hornNotes = \notes \relative c @{ + \time 2/4 + r4 f8 a cis4 f e d +@} +@end example -Secondly, you can generate PostScript directly. This is useful if you -can not or do not want to run @TeX{} on your system. To obtain direct -PostScript output, invoke LilyPond as follows: -@cindex PostScript output +Then, an individual part is made by putting the following in a file: @example -lilypond -f ps test.ly +\include "horn-music.ly" +\header @{ + instrument = "Horn in F" +@} +\score @{ + \notes \transpose c' f \hornNotes +@} @end example -You have to set some environment variables to view or print this -output. More information can be found in @ref{Invoking -LilyPond}. +The @code{\include} command substitutes the contents of the file at +this position in the file, so that @code{hornNotes} is defined +afterwards. The code @code{\transpose f c'} indicates that the +argument, being @code{\hornNotes}, should be transposed by a fifth +downwards: sounding @code{f} is denoted by notated @code{c'}, which +corresponds with tuning of a normal French Horn in F. The +transposition can be seen in the following output: + +@lilypond[singleline] +\score { + \notes \transpose f c' \notes \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 R, and followed by a duration (1 +for a whole note, 2 for a half note, etc.) By multiplying the +duration, longer rests can be constructed. For example, the next rest +takes 3 measures in 2/4 time: +@example + R2*3 +@end example -Thirdly, if you want to do special things with your output, you can run -invoke lilypond directly: +When printing the part, the following @code{skipBars} property must be +set to false, to prevent the rest from being expanded in three one bar +rests: @example -lilypond test.ly + \property Score.skipBars = ##t @end example -to produce plain @TeX{} output. Note that La@TeX{} will not work on the -resulting @file{test.tex}. You must run plain @TeX{} on it. +Prepending the rest and the property setting above, leads to the +following result: + +@lilypond[singleline] +\score {\notes { \transpose f c' \relative c { \time 2/4 +\property Score.skipBars = ##t + R2*3 + r4 f8 a cis4 f e d } }} +@end lilypond + +The score is made by combining all of the music in a @code{\score} +block, assuming that the other voice is in @code{bassoonNotes}, in the +file @file{bassoon-music.ly}: +@example +\include "bassoon-music.ly" +\include "horn-music.ly" -@cindex @TeX{} +\score @{ + \simultaneous @{ + \context Staff = hornStaff \hornNotes + \context Staff = bsnStaff \bassoonNotes + @} @} +@end example +This would lead to the simple score depicted below: +@lilypond[singleline] +\score { + \notes \relative c \simultaneous { + \context Staff = hornStaff { \time 2/4 + R2*3 + r4 f8 a cis4 f e d } + \context Staff = fagStaff { \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 is in the +notation manual, in @ref{Orchestral music}. @node Integrating text and music @section Integrating text and music -Sometimes, you might want to use music examples in a text that you are -writing. For example, if you are writing a musicological treatise, a -songbook, or (like us) the LilyPond manual. You can make such texts by -hand, simply by importing a PostScript figure into your wordprocessor. -However, there is a also an automated procedure: +@cindex La@TeX{}, music in +@cindex HTML, music in +@cindex Texinfo, music in -If you use La@TeX{} or texinfo, you can mix text and lilypond code. A -script called @code{lilypond-book} will extract the music fragments, run -lilypond on them, and put back the resulting notation. lilypond-book is -described fully in @ref{lilypond-book}, but here we show a small -example. Since the example also contains explanatory text, we won't -comment on the contents. +Sometimes you might want to use music examples in a text that you are +writing (for example, a musicological treatise, a songbook, or (like us) +the LilyPond manual). You can make such texts by hand, simply by +importing a PostScript figure into your word processor. However, +there is an automated procedure to reduce the amount of work. + +If you use HTML, La@TeX{}, or Texinfo, you can mix text and LilyPond +code. A script called @code{lilypond-book} will extract the music +fragments, run LilyPond on them, and put back the resulting notation. +This program is fully described in @ref{lilypond-book manual}. Here +we show a small example; since the example contains also explanatory +text, we will not comment it further: @example \documentclass[a4paper]@{article@} @@ -2066,6 +1706,7 @@ example: c2 g'2 \times 2/3 @{ f8 e d @} c'2 g4 @} @} \end@{lilypond@} + Notice that the music line length matches the margin settings of the document. @@ -2076,40 +1717,30 @@ If you have no \verb+\score+ block in the fragment, c'4 \end@{lilypond@} -In the example you see here, a number of things happened: a +In the example you see here, two things happened: a \verb+\score+ block was added, and the line width was set to natural -length. You can specify many more options using \LaTeX style options -in brackets: +length. You can specify options by putting them in brackets: -\begin[verbatim,11pt,singleline, - fragment,relative,intertext="hi there!"]@{lilypond@} - c'4 f bes es +\begin[26pt,verbatim]@{lilypond@} + c'4 f16 \end@{lilypond@} -\texttt@{verbatim@} also shows the lilypond code, \texttt@{11pt@} selects -the default music size, \texttt@{fragment@} adds a score block, -\texttt@{relative@} uses relative mode for the fragment, and -\texttt@{intertext@} specifies what to print between the -\texttt@{verbatim@} code and the music. - -If you include large examples into the text, it may be more convenient -to put the example in a separate file: - -\lilypondfile[printfilename]@{sammartini.ly@} +If you want to include large examples into the text, it is more +convenient to put it in a separate file: -The \texttt@{printfilename@} option adds the file name to the output. +\lilypondfile@{screech-boink.ly@} \end@{document@} @end example -Under Unix, you can view the results as follows. +Under Unix, you can view the results as follows: @example $ cd input/tutorial +$ mkdir -p out/ $ lilypond-book --outdir=out/ lilbook.tex -lilypond-book (GNU LilyPond) 1.3.146 -Reading `/home/hanwen/usr/src/lilypond-1.3.146/input/tutorial/lilbook.tex' -Reading -`/home/hanwen/usr/src/lilypond-1.3.146/input/tutorial/sammartini.ly' +lilypond-book (GNU LilyPond) 1.7.23 +Reading `input/tutorial/lilbook.tex' +Reading `input/screech-boink6.ly' @var{lots of stuff deleted} Writing `out/lilbook.latex' $ cd out @@ -2118,22 +1749,28 @@ $ latex lilbook.latex $ xdvi lilbook @end example -Notice the @code{outdir} option to lilypond-book. Running lilypond-book -and running latex creates a lot of temporary files, and you wouldn't -those to clutter up your working directory. Hence, we have them created -in a separate subdirectory. +Running lilypond-book and running latex creates a lot of temporary +files, and you would not want those to clutter up your working +directory. The @code{outdir} option to lilypond-book creates the +temporary files in a separate subdirectory @file{out}. -The result more or less looks like this: +The result looks more or less like this: @separate In a lilypond-book document, you can freely mix music and text. For example: @lilypond - \score { \notes \relative c' { - c2 g'2 \times 2/3 { f8 e d } c'2 g4 - } } +\score { + \notes \relative c' { + c2 g'2 \times 2/3 { f8 e d } c'2 g4 + } + \paper { + raggedright = ##t + } +} @end lilypond + Notice that the music line length matches the margin settings of the document. @@ -2144,84 +1781,15 @@ If you have no @code{\score} block in the fragment, c'4 @end lilypond -In the example you see here, a number of things happened: a -@code{\score} block was added, and the line width was set to natural -length. You can specify many more options using La@TeX{} style options -in brackets: +In the example you see here, two things happened: a +@code{score} block was added, and the line width was set to natural +length. You can specify options by putting them in brackets: -@lilypond[verbatim,11pt,singleline, - fragment,relative,intertext="hi there!"] - c'4 f bes es +@lilypond[26pt,verbatim] + c'4 f16 @end lilypond -@code{verbatim} also shows the lilypond code, @code{11pt} selects -the default music size, @code{fragment} adds a score block, -@code{relative} uses relative mode for the fragment, and -@code{intertext} specifies what to print between the -@code{verbatim} code and the music. - -If you include large examples into the text, it may be more convenient -to put the example in a separate file: - -@lilypondfile[printfilename]{sammartini.ly} - -The @code{printfilename} option adds the file name to the output. -@node end of tutorial -@section The end - -That's all folks. From here, you can either try fiddling with input -files, or you can read the reference manual. You can find more example -files in @file{input} and @file{input/test}. You can also look at some -real music. Have a look at the @uref{Mutopia project, -http://www.mutopiaproject.org}. - - - -@ignore - -[TODO - -this should be on mutopia website. - -] - - -@c waar deze info? is uiteindelijk wel handig, schat ik. -[TODO: cut blabla] - -If you have a big music project, or just a lot of LilyPond input files, -all generated output from LilyPond, @TeX{} and metafont will clutter -your working directory. LilyPond comes with a one-size-fits-all -pre-cooked makefile that helps you manage producing output. It will -produce all output in the directory @file{out} , generate and track -dependencies. Also, it helps in preparing your submission to @ref{Mutopia -project}. - -@file{make/ly.make} -@example -mkdir my-project -cd my-project -cp /usr/share/lilypond/make/ly.make GNUmakefile -cp /usr/share/doc/lilypond/examples/input/tutorial/minuet.ly . -make minuet -[..] -Generated out/minuet.ps for target minuet. -@end example - -Type @samp{make help} to see possible targets. - -[TODO] -@file{/usr/share/lilypond/doc/lilypond/examples/input/mutopia-header.ly} - - - - - -[TODO: rewrite completely.] - -@menu -* Songs with additional verses:: -@end menu - -@end ignore +If you want to include large examples into the text, it is more +convenient to put it in a separate file: +@lilypondfile{screech-boink.ly}