-@c -*- coding: latin-1; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; -*-
@c This file is part of lilypond.tely
@node Introduction
The images below illustrate the difference between traditional
engraving and typical computer output, and the third picture shows how
LilyPond mimics the traditional look. The left picture shows a scan
-of a flat symbol from a Henle edition published in 2000. The center
+of a flat symbol from an edition published in 2000. The center
depicts a symbol from a hand-engraved B@"{a}renreiter edition of the
same music. The left scan illustrates typical flaws of computer
print: the staff lines are thin, the weight of the flat symbol matches
contrast, the B@"{a}renreiter flat has a bold, almost voluptuous
rounded look. Our flat symbol is designed after, among others, this
one. It is rounded, and its weight harmonizes with the thickness of
-our staff lines, which are also much thicker than Henle's lines.
+our staff lines, which are also much thicker than lines in the
+computer edition.
@multitable @columnfractions .05 .3 .3 .3 .05
@item @tab
@ifnotinfo
@iftex
-@image{henle-flat-bw,4cm}
+@image{henle-flat-gray,,8cm}
@end iftex
@ifnottex
-@image{henle-flat-bw,,,png}
+@image{henle-flat-gray,,,png}
@end ifnottex
@tab
@iftex
-@image{baer-flat-bw,4cm}
+@image{baer-flat-gray,,8.4cm}
@end iftex
@ifnottex
-@image{baer-flat-bw,,,png}
+@image{baer-flat-gray,,,png}
@end ifnottex
@tab
@iftex
-@image{lily-flat-bw,4cm}
+@image{lily-flat-bw,,8cm}
@end iftex
@ifnottex
@image{lily-flat-bw,,,png}
spot which fragment is which?
@cindex optical spacing
-@lilypond[quote,noindent,fragment]
+@c file spacing-optical.
+@c need to include it here, because we want two images.
+@lilypond
+\paper {
+ ragged-right = ##t
+ indent = #0.0
+}
+
+music = {
+ c'4 e''4 e'4 b'4 |
+ \stemDown
+ b'8[ e'' a' e'']
+ \stemNeutral
+ e'8[ e'8 e'8 e'8]
+}
+
+\score
{
- \override Staff.NoteSpacing #'stem-spacing-correction = #0.6
+ \music
+ \layout {
+ \context {
+ \Staff
+ \override NoteSpacing #'stem-spacing-correction = #0.6
+ }
+ }
+}
+@end lilypond
+
+@lilypond
+\paper {
+ ragged-right = ##t
+ indent = #0.0
+}
+
+music = {
c'4 e''4 e'4 b'4 |
- \stemDown b'4 e''4 a'4 e''4 | \bar "||"
- \override Staff.NoteSpacing #'stem-spacing-correction = #0.0
- \override Staff.StaffSpacing #'stem-spacing-correction = #0.0
- \stemNeutral c'4 e''4 e'4 b'4 |
- \stemDown b'4 e''4 a'4 e''4 |
+ \stemDown
+ b'8[ e'' a' e'']
+ \stemNeutral
+ e'8[ e'8 e'8 e'8]
+}
+\score
+{
+ \music
+ \layout {
+ \context {
+ \Staff
+ \override NoteSpacing #'stem-spacing-correction = #0.0
+ \override NoteSpacing #'same-direction-correction = #0.0
+ \override StaffSpacing #'stem-spacing-correction = #0.0
+ }
+ }
}
@end lilypond
have all directions down (or left). The second chord has all
directions up (right).
-@lilypond[quote,raggedright]
+@lilypond[quote,ragged-right]
\new Score \with {
\override SpacingSpanner #'spacing-increment = #3
\override TimeSignature #'transparent = ##t
style -- is a variable with a preset value. You are free to alter this
value, giving your score a different typographical impression.
-@lilypond[quote,raggedright]
+@lilypond[quote,ragged-right]
fragment = {
\clef bass f8 as8
c'4-~ c'16 as g f e16 g bes c' des'4
head objects are used to produce their symbol is changed during the music
fragment.
-@c FIXME: this example has errors:
-@c programming error: Grob `NoteHead' has no interface for property `text'
-@c Continuing; crossing fingers
-@lilypond[quote,raggedright]
+@lilypond[quote,ragged-right]
#(define (mc-squared grob orig current)
(let ((interfaces (ly:grob-property grob 'interfaces))
(pos (ly:grob-property grob 'staff-position)))
(if (and (memq 'note-head-interface interfaces)
(memq pos '(-2 -3 -5)))
(begin
- (ly:grob-set-property! grob 'print-function brew-new-markup-stencil)
+ (ly:grob-set-property! grob 'stencil ly:text-interface::print)
(ly:grob-set-property! grob 'font-family 'roman)
(ly:grob-set-property!
grob 'text
\set autoBeaming = ##f
\time 2/4
<d f g>4
- \once \override NoteHead #'print-function = #Note_head::brew_ez_stencil
+ \once \override NoteHead #'stencil = #ly:note-head::brew-ez-stencil
<d f g>
\once \override NoteHead #'style = #'cross
<d f g>
- \applyoutput #mc-squared
+ \applyOutput #mc-squared
<d f g>
<<
{ d8[ es-( fis^^ g] fis2-) }
- \repeat unfold 5 { \applyoutput #mc-squared s8 }
+ \repeat unfold 5 { \applyOutput #mc-squared s8 }
>>
}
@end lilypond
In the following example, we see how we start out with a plug-in for
note heads, the @code{Note_heads_engraver}.
-@lilypond[quote,raggedright]
+@lilypond[quote,ragged-right]
\include "engraver-example.ily"
\score {
@noindent
Then a @code{Staff_symbol_engraver} adds the staff
-@lilypond[quote,raggedright]
+@lilypond[quote,ragged-right]
\include "engraver-example.ily"
\score {
@noindent
the @code{Clef_engraver} defines a reference point for the staff
-@lilypond[quote,raggedright]
+@lilypond[quote,ragged-right]
\include "engraver-example.ily"
\score {
@noindent
and the @code{Stem_engraver} adds stems.
-@lilypond[quote,raggedright]
+@lilypond[quote,ragged-right]
\include "engraver-example.ily"
\score {
time signature, and key signature, we get a complete piece of
notation.
-@lilypond[quote,raggedright]
+@lilypond[quote,ragged-right]
\include "engraver-example.ily"
\score { \topVoice }
@end lilypond
This system works well for monophonic music, but what about
polyphony? In polyphonic notation, many voices can share a staff.
-@lilypond[quote,raggedright]
+@lilypond[quote,ragged-right]
\include "engraver-example.ily"
\new Staff << \topVoice \\ \botVoice >>
@end lilypond
Program reference: @internalsref{Contexts}.
-@lilypond[quote,raggedright]
+@lilypond[quote,ragged-right]
\include "engraver-example.ily"
\score {
<<
@noindent
By adding chord names and lyrics we obtain a lead sheet.
-@lilypond[quote,raggedright]
+@lilypond[quote,ragged-right]
<<
\chords { c2 c f2 c }
\new Staff \relative c' { \time 2/4 c4 c g'4 g a4 a g2 }
Polyphonic notation and piano music can also be printed. The following
example combines some more exotic constructs.
-@lilypondfile[quote,raggedright]{screech-boink.ly}
+@lilypondfile[quote,ragged-right]{screech-boink.ly}
The fragments shown above have all been written by hand, but that is
not a requirement. Since the formatting engine is mostly automatic, it
users should start here.
@item
-@ifhtml
-The
-@end ifhtml
@emph{@ref{Example templates}}
provides templates of LilyPond pieces. Just cut and paste a
template into a file, add notes, and you're done!
@item
-@ifhtml
-The
-@end ifhtml
-@emph{@ref{Notation manual}}
-discusses topics grouped by notation construct. Once you master the
-basics, this is the place to look up details.
+@emph{@ref{Putting it all together}}
+demonstrates practical uses of LilyPond.
+
+@item
+@emph{@ref{Running LilyPond}}
+shows how to run LilyPond and its helper
+programs. In addition, this section explains how to upgrade input
+files from previous versions of LilyPond.
+
+@item
+@emph{@ref{Basic notation}}
+discusses topics grouped by notation construct. This section gives
+details about basic notation that will be useful in almost any
+notation project.
+
+@item
+@emph{@ref{Instrument-specific notation}}
+discusses topics grouped by notation construct. This section gives
+details about special notation that will only be useful for particular
+instrument (or vocal) groups.
+
+@item
+@emph{@ref{Advanced notation}}
+discusses topics grouped by notation construct. This section gives
+details about complicated or unusual notation.
@item
-@ifhtml
-The
-@end ifhtml
@emph{@ref{Changing defaults}}
explains how to fine tune layout.
@item
-@ifhtml
-The chapter
-@end ifhtml
-@emph{@ref{Running LilyPond}} shows how to run LilyPond and its helper
-programs.
+@emph{@ref{Global issues}}
+discusses issues which affect the global output, such as selecting
+paper size or which MIDI instruments to use.
@item
-@ifhtml
-The chapter
-@end ifhtml
@emph{@ref{LilyPond-book}} explains the details behind creating
-documents with in-line music examples (like this manual).
+documents with in-line music examples, like this manual.
@item
-@ifhtml
-The chapter
-@end ifhtml
@emph{@ref{Converting from other formats}}
explains how to run the conversion programs. These programs
are supplied with the LilyPond package, and convert a variety of music
-formats to the @code{.ly} format. In addition, this section explains
-how to upgrade input files from previous versions of LilyPond.
+formats to the @code{.ly} format.
@item
@ifhtml
and you cannot find it in the manual, that is considered a bug. In
that case, please file a bug report.}, but the document is also
available in
-@ifnothtml
+@iftex
a big HTML page,
-@end ifnothtml
+@end iftex
@ifhtml
-@uref{../lilypond.html, a big HTML page}
+@uref{source/Documentation/user/lilypond.html, one big page},
@end ifhtml
which can be searched easily using the search facility of a web
browser.
@c add/integrate glossary, put in list above
If you are not familiar with music notation or music terminology
(especially if you are a non-native English speaker), it is advisable
-to consult the glossary as well. The glossary explains musical terms,
-and includes translations to various languages. It is a
-@ifhtml
-@uref{../music-glossary.html,separate document}.
-@end ifhtml
-@ifnothtml
-separate document, available in HTML and PDF.
-@end ifnothtml
+to consult the glossary as well.
+@iftex
+The music glossary explains musical terms, and includes translations
+to various languages. It is a separate document, available in HTML
+and PDF.
+@end iftex
+@ifnottex
+The @ref{Top,Music glossary,,music-glossary}, explains musical terms and
+includes translations to various languages. It is also available in
+PDF.
+@end ifnottex
@cindex idiom
@cindex jargon
@cindex terminology
This manual is not complete without a number of other documents. They
are not available in print, but should be included with the
-documentation package for your platform:
+documentation package for your platform
@itemize @bullet
@item
+@iftex
Program reference
-@ifhtml
-(available @uref{../lilypond-internals/lilypond-internals.html,here})
-@end ifhtml
+@end iftex
+@ifnottex
+@ref{Top,Program reference,,lilypond-internals}.
+@end ifnottex
The program reference is a set of heavily cross linked HTML pages,
which document the nitty-gritty details of each and every LilyPond
generated documentation. In the HTML document, these subsections
have clickable links.
+@cindex snippets
@item
-Various input examples
+@ifnothtml
+Various input examples.
+@end ifnothtml
@ifhtml
-(available @uref{../../../../input/test/out-www/collated-files.html,here})
+@c Works, but link name is not so nice; so write-out macro
+@c @inputfileref{input/test,Various input examples}.
+@uref{source/input/test/collated-files.html,Various input examples}.
@end ifhtml
-@cindex snippets
This collection of files shows various tips and tricks, and is
available as a big HTML document, with pictures and explanatory texts
included.
@item
-The regression tests
+@ifnothtml
+The regression tests.
+@end ifnothtml
@ifhtml
-(available @uref{../../../../input/regression/out-www/collated-files.html,here})
+@c Works, but link name is not so nice; so write-out macro
+@c @inputfileref{input/regression,The regression tests}.
+@uref{source/input/regression/collated-files.html,The regression tests}.
@end ifhtml
This collection of files tests each notation and engraving feature of
initialization and example files. Throughout this manual, we refer to
input files relative to the top-directory of the source archive. For
example, @file{input/@/test/@/bla@/.ly} may refer to the file
-@file{lilypond@/-2.4.0/@/input/@/test/@/bla@/.ly}. On binary packages
+@file{lilypond@/-2.6.0/@/input/@/test/@/bla@/.ly}. On binary packages
for the Unix platform, the documentation and examples can typically be
found somewhere below @file{/usr/@/share/@/doc/@/lilypond/}.
Initialization files, for example @file{scm/@/lily@/.scm}, or
@cindex internal documentation
@cindex Scheme
@cindex extending lilypond
-@cindex bug report
@cindex index
Finally, this and all other manuals, are available online both as PDF
files and HTML from the web site, which can be found at
@uref{http://@/www@/.lilypond@/.org/}.
-@cindex website
-@cindex URL