@c -*- coding: utf-8; mode: texinfo; -*-
@c This file is part of lilypond.tely
-@c A menu is needed before every deeper *section nesting of @node's; run
+@c A menu is needed before every deeper *section nesting of @node's; run
@c M-x texinfo-all-menus-update
@c to automatically fill in these menus before saving changes
* Music layout::
* Multiple movements::
* MIDI output::
+* Displaying LilyPond notation::
+* Other::
@end menu
@item
A @code{\header} block. This sets the global header block. This
is the block containing the definitions for book-wide settings, like
-composer, title, etc.
+composer, title, etc.
@item
An @code{\addquote} statement. See @ref{Quoting other voices}
\header @{ @}
@}
@end example
-
+
This behavior can be changed by setting the variable
@code{toplevel-music-handler} at toplevel. The default handler is
defined in the init file @file{scm/@/lily@/.scm}.
@example
\layout @{
- % movements are non-justified by default
+ % movements are non-justified by default
ragged-right = ##t
@}
\header @{
title = "Do-re-mi"
@}
-
+
@{ c'4 d' e2 @}
@end example
@item @code{\version}
@item @code{\include}
@item @code{\renameinput}
-@end itemize
+@end itemize
@node Including LilyPond files
@subsection Including LilyPond files
-@cindex @code{\include}
+@findex \include
@cindex including files
A large project may be split up into separate files. To refer to another
current working directory are available to \include, but a file of the same
name in LilyPond's installation takes precedence. Files are
available to \include from directories in the search path specified as an
-option when invoking @code{lilypond --include=DIR} which adds DIR to the search
-path.
+option when invoking @code{lilypond --include=DIR} which adds DIR to the
+search path.
The @code{\include} statement can use full path information, but with the Unix
convention @code{"/"} rather than the DOS/Windows @code{"\"}. For example,
\book {
\header {
dedication = "dedicated to me"
- title = \markup \center-align { "Title first line" "Title second line, longer" }
+ title = \markup \center-align { "Title first line" "Title second line,
+longer" }
subtitle = "the subtitle,"
- subsubtitle = #(string-append "subsubtitle LilyPond version " (lilypond-version))
+ subsubtitle = #(string-append "subsubtitle LilyPond version "
+(lilypond-version))
poet = "Poet"
composer = \markup \center-align { "composer" \small "(1847-1973)" }
texttranslator = "Text Translator"
- meter = \markup { \teeny "m" \tiny "e" \normalsize "t" \large "e" \huge "r" }
- arranger = \markup { \fontsize #8.5 "a" \fontsize #2.5 "r" \fontsize #-2.5 "r" \fontsize #-5.3 "a" \fontsize #7.5 "nger" }
+ meter = \markup { \teeny "m" \tiny "e" \normalsize "t" \large "e" \huge
+"r" }
+ arranger = \markup { \fontsize #8.5 "a" \fontsize #2.5 "r" \fontsize
+#-2.5 "r" \fontsize #-5.3 "a" \fontsize #7.5 "nger" }
instrument = \markup \bold \italic "instrument"
piece = "Piece"
}
{ c'1 }
\header {
piece = "piece1"
- opus = "opus1"
+ opus = "opus1"
}
}
\markup {
{ c'1 }
\header {
piece = "piece2"
- opus = "opus2"
+ opus = "opus2"
}
}
}
@end lilypond
-As demonstrated before, you can use multiple @code{\header} blocks.
-When same fields appear in different blocks, the latter is used.
+As demonstrated before, you can use multiple @code{\header} blocks.
+When same fields appear in different blocks, the latter is used.
Here is a short example.
-@example
+@example
\header @{
composer = "Composer"
@}
}
@end lilypond
-@cindex @code{printallheaders}
+@findex printallheaders
@noindent
You may change this behavior (and print all the headers when defining
@code{\header} inside @code{\score}) by using
@file{ly/titling-init.ly} lists the default layout.
@table @code
-@cindex @code{bookTitleMarkup}
+@findex bookTitleMarkup
@item bookTitleMarkup
This is the title put over an entire @code{\book} block. Typically,
it has the composer and the title of the piece
-
-@cindex @code{scoreTitleMarkup}
+
+@findex scoreTitleMarkup
@item scoreTitleMarkup
This is the title put over a @code{\score} block within a
@code{\book}. Typically, it has the name of the movement (@code{piece}
field).
-@cindex @code{oddHeaderMarkup}
+@findex oddHeaderMarkup
@item oddHeaderMarkup
- This is the page header for odd-numbered pages.
+ This is the page header for odd-numbered pages.
-@cindex @code{evenHeaderMarkup}
+@findex evenHeaderMarkup
@item evenHeaderMarkup
This is the page header for even-numbered pages. If unspecified,
the odd header is used instead.
By default, headers are defined such that the page number is on the
outside edge, and the instrument is centered.
-@cindex @code{oddFooterMarkup}
+@findex oddFooterMarkup
@item oddFooterMarkup
- This is the page footer for odd-numbered pages.
-
-@cindex @code{evenFotterMarkup}
+ This is the page footer for odd-numbered pages.
+
+@findex evenFotterMarkup
@item evenFooterMarkup
This is the page footer for even-numbered pages. If unspecified,
the odd header is used instead.
@refbugs
-The @code{breakbefore=##t} header requires that there is a @code{piece} header as well. It may be used as a normal header, or left blank (@code{=""}) as in the example above, but it must be present.
+The @code{breakbefore=##t} header requires that there is a @code{piece}
+header as well. It may be used as a normal header, or left blank
+(@code{=""}) as in the example above, but it must be present.
@cindex paper size
@cindex page size
-@cindex @code{papersize}
+@findex papersize
To change the paper size, there are two commands,
@example
@}
@end example
-The first command sets the size of all pages. The second command sets the size
+The first command sets the size of all pages. The second command sets the
+size
of the pages that the @code{\paper} block applies to -- if the @code{\paper}
block is at the top of the file, then it will apply to all pages. If the
@code{\paper} block is inside a @code{\book}, then the paper size will only
@example
#(set-default-paper-size "a6" 'landscape)
-@end example
+@end example
Setting the paper size will adjust a number of @code{\paper} variables
(such as margins). To use a particular paper size with altered
LilyPond will do page layout, set margins, and add headers and
footers to each page.
+@findex annotate-spacing
+@cindex Spacing, display of properties
+
+To graphically display the dimensions of properties that may
+be altered for page formatting, use
+
+@example
+\paper @{
+ annotate-spacing = ##t
+@}
+@end example
+
+@noindent
+All units dimensions are measured in staff spaces. The pairs
+(@var{a},@var{b}) are intervals, where @var{a} is the lower edge and
+@var{b} the upper edge of the interval.
+
The default layout responds to the following settings in the
@code{\paper} block.
-@cindex @code{\paper}
+@findex \paper
@quotation
@table @code
-@cindex @code{first-page-number}
+@findex first-page-number
@item first-page-number
The value of the page number of the first page. Default is@tie{}1.
-@cindex @code{printfirst-page-number}
+@findex printfirst-page-number
@item printfirst-page-number
If set to true, will print the page number in the first page. Default is
false.
-@cindex @code{print-page-number}
+@findex print-page-number
@item print-page-number
If set to false, page numbers will not be printed.
-@cindex @code{paper-width}
+@findex paper-width
@item paper-width
The width of the page.
-@cindex @code{paper-height}
+@findex paper-height
@item paper-height
The height of the page.
-@cindex @code{top-margin}
+@findex top-margin
@item top-margin
Margin between header and top of the page.
-@cindex @code{bottom-margin}
+@findex bottom-margin
@item bottom-margin
Margin between footer and bottom of the page.
-@cindex @code{left-margin}
+@findex left-margin
@item left-margin
Margin between the left side of the page and the beginning of the music.
-@cindex @code{line-width}
+@findex line-width
@item line-width
The length of the systems.
-@cindex @code{head-separation}
+@findex head-separation
@item head-separation
Distance between the top-most music system and the page header.
-@cindex @code{foot-separation}
+@findex foot-separation
@item foot-separation
Distance between the bottom-most music system and the page footer.
-@cindex @code{page-top-space}
+@findex page-top-space
Distance from the top of the printable area to the center of the first
staff. This only works for staves which are vertically small. Big staves
are set with the top of their bounding box aligned to the top of the
printable area.
-@cindex @code{ragged-bottom}
+@findex ragged-bottom
@item ragged-bottom
If set to true, systems will not be spread vertically across the page. This
does not affect the last page.
This should be set to true for pieces that have only two or three
systems per page, for example orchestral scores.
-
-@cindex @code{ragged-last-bottom}
+
+@findex ragged-last-bottom
@item ragged-last-bottom
If set to false, systems will be spread vertically to fill the last page.
Pieces that amply fill two pages or more should have this set to
true.
-@cindex @code{system-count}
+@findex system-count
@item system-count
This variable, if set, specifies into how many lines a score should be
broken.
-@cindex @code{between-system-space}
+@findex between-system-space
@item between-system-space
This dimensions determines the distance between systems. It is the
ideal distance between the center of the bottom staff of one system
Increasing this will provide a more even appearance of the page at the
cost of using more vertical space.
-@cindex @code{between-system-padding}
+@findex between-system-padding
@item between-system-padding
This dimension is the minimum amount of white space that will always
be present between the bottom-most symbol of one system, and the
farther apart.
-@cindex @code{horizontal-shift}
+@findex horizontal-shift
@item horizontal-shift
All systems (including titles and system separators) are shifted by
this amount to the right. Page markup, such as headers and footers are
not affected by this. The purpose of this variable is to make space
for instrument names at the left.
-@cindex @code{after-title-space}
+@findex after-title-space
@item after-title-space
Amount of space between the title and the first system.
-@cindex @code{after-title-space}
-@item before-title-space
+@findex after-title-space
+@item before-title-space
Amount of space between the last system of the previous piece and the
title of the next.
-@cindex @code{between-title-space}
+@findex between-title-space
@item between-title-space
Amount of space between consecutive titles (e.g., the title of the
book and the title of a piece).
-@cindex @code{printallheaders}
+@findex printallheaders
@item printallheaders
Setting this to #t will print all headers for each \score in a
\book. Normally only the piece and opus \headers are printed.
-@cindex @code{systemSeparatorMarkup}
+@findex systemSeparatorMarkup
@item systemSeparatorMarkup
This contains a markup object, which will be inserted between
systems. This is often used for orchestral scores.
@example
\paper @{
- #(define bottom-margin (* 2 cm))
+ #(define bottom-margin (* 2 cm))
@}
@end example
The default page header puts the page number and the @code{instrument}
field from the @code{\header} block on a line.
+The titles (from the @code{\header@{@}} section) are treated as a
+system, so @code{ragged-bottom} and @code{ragged-last-bottom} will
+add space between the titles and the first system of the score.
@node Music layout
@cindex font size, setting
@cindex staff size, setting
-@cindex @code{layout} file
+@findex layout file
To set the global staff size, use @code{set-global-staff-size}.
@item feta11
@tab 11.22
-@tab 3.9
+@tab 3.9
@tab pocket scores
@item feta13
@tab 12.60
@tab 4.4
@tab
-
+
@item feta14
@tab 14.14
@tab 5.0
-@tab
+@tab
@item feta16
@tab 15.87
@tab 5.6
-@tab
+@tab
@item feta18
@tab 17.82
@item feta20
@tab 20
@tab 7.0
-@tab standard parts
+@tab standard parts
@item feta23
-@tab 22.45
+@tab 22.45
@tab 7.9
-@tab
+@tab
@item feta26
-@tab 25.2
+@tab 25.2
@tab 8.9
@tab
@c modern rental material?
The following commands set @code{fontSize} for the current voice:
-@cindex @code{\tiny}
-@code{\tiny},
-@cindex @code{\small}
-@code{\small},
-@cindex @code{\normalsize}
+@findex \tiny
+@code{\tiny},
+@findex \small
+@code{\small},
+@findex \normalsize
@code{\normalsize}.
@node Score layout
@subsection Score layout
-@cindex @code{\layout}
+@findex \layout
While @code{\paper} contains settings that relate to the page formatting
of the whole document, @code{\layout} contains settings for score-specific
@lilypond[ragged-right, fragment, relative=2, staffsize=13]
\new StaffGroup <<
- \new Staff {
- c1\break
-
+ \new Staff {
+ c1\break
+
\overrideProperty
#"Score.NonMusicalPaperColumn"
#'line-break-system-details
#'((fixed-alignment-extra-space . 15))
- c\break
+ c\break
}
\new Staff { c c }
>>
@c let's wait for a some comments before writing more.
-The vertical spacing on a page can also be changed for each system individually.
+The vertical spacing on a page can also be changed for each system
+individually.
Some examples are found in the example file
@inputfileref{input/regression/,page-spacing.ly}.
Internals: Vertical alignment of staves is handled by the
@internalsref{VerticalAlignment} object. The context parameters
-specifying the vertical extent are described in connection with
+specifying the vertical extent are described in connection with
the @internalsref{Axis_group_engraver}.
Example files: @inputfileref{input/regression/,page-spacing.ly},
The distance between staves of a @internalsref{PianoStaff} cannot be
computed during formatting. Rather, to make cross-staff beaming work
correctly, that distance has to be fixed beforehand.
-
+
The distance of staves in a @code{PianoStaff} is set with the
@code{forced-distance} property of the
@internalsref{VerticalAlignment} object, created in
\new Staff { c }
\new Staff { c }
>>
->>
+>>
@end lilypond
It is also possible to change the distance between for each system
-individually. This is done by including the command
+individually. This is done by including the command
@example
\overrideProperty
@lilypond[ragged-right, fragment, relative=2, staffsize=13]
\new PianoStaff <<
- \new Staff {
- c1\break
-
+ \new Staff {
+ c1\break
+
\overrideProperty
#"Score.NonMusicalPaperColumn"
#'line-break-system-details
#'((fixed-alignment-extra-space . 15))
- c\break
+ c\break
}
\new Staff { c c }
>>
@code{spacing-increment}) of space to the note.
For example, the following piece contains lots of half, quarter, and
-8th notes; the eighth note is followed by 1 note head width (NHW).
+8th notes; the eighth note is followed by 1 note head width (NHW).
The quarter note is followed by 2 NHW, the half by 3 NHW, etc.
@lilypond[quote,fragment,verbatim,relative=1]
this sets the base duration for spacing. The maximum duration for this
base (normally an 8th), is set through @code{base-shortest-duration}.
-@cindex @code{common-shortest-duration}
-@cindex @code{base-shortest-duration}
-@cindex @code{stem-spacing-correction}
-@cindex @code{spacing}
+@findex common-shortest-duration
+@findex base-shortest-duration
+@findex stem-spacing-correction
+@findex spacing
Notes that are even shorter than the common shortest note are
followed by a space that is proportional to their duration relative to
\override Staff.NoteSpacing #'stem-spacing-correction = #1.5
\override Staff.StaffSpacing #'stem-spacing-correction = #1.5
c'4 e''4 e'4 b'4 |
- b'4 e''4 b'4 e''4|
+ b'4 e''4 b'4 e''4|
}
@end lilypond
regard for clefs, bar lines, and grace notes,
@lilypond[quote,ragged-right,relative=2,fragment,verbatim]
-\override Score.SpacingSpanner #'strict-note-spacing = ##t
+\override Score.SpacingSpanner #'strict-note-spacing = ##t
\new Staff { c8[ c \clef alto c \grace { c16[ c] } c8 c c] c32[ c32] }
@end lilypond
@cindex page breaks
@cindex breaking pages
-@cindex @code{indent}
-@cindex @code{line-width}
-@cindex @code{ragged-right}
-@cindex @code{ragged-last}
+@findex indent
+@findex line-width
+@findex ragged-right
+@findex ragged-last
@c Although line-width can be set in \layout, it should be set in paper
@c block, to get page layout right.
this point. Line breaks can only occur at places where there are bar
lines. If you want to have a line break where there is no bar line,
you can force an invisible bar line by entering @code{\bar
-""}. Similarly, @code{\noBreak} forbids a line break at a
+""}. Similarly, @code{\noBreak} forbids a line break at a
point.
@cindex regular line breaks
-@cindex four bar music.
+@cindex four bar music.
For line breaks at regular intervals use @code{\break} separated by
skips and repeated with @code{\repeat}:
s1 \noBreak s1 \noBreak
s1 \noBreak s1 \break @}
@emph{the real music}
->>
+>>
@end example
@noindent
@refcommands
@code{\break}, and @code{\noBreak}.
-@cindex @code{\break}
-@cindex @code{\noBreak}
+@findex \break
+@findex \noBreak
@seealso
a line break.
Page breaks are computed by the @code{page-breaking} function in the
-@code{\paper} block.
+@code{\paper} block.
To force a new page for a new piece (in a collection of pieces or a
piece in several movements), use @code{breakbefore} in the header.
@refcommands
-@cindex @code{\pageBreak}
+@findex \pageBreak
@code{\pageBreak}
-@cindex @code{\noPageBreak}
-@code{\noPageBreak}
+@findex \noPageBreak
+@code{\noPageBreak}
@refbugs
-The @code{breakbefore=##t} header requires that there is a @code{piece} header as well. It may be used as a normal header, or left blank (@code{=""}) as in the example above, but it must be present.
+The @code{breakbefore=##t} header requires that there is a @code{piece}
+header as well. It may be used as a normal header, or left blank
+(@code{=""}) as in the example above, but it must be present.
@}
@end example
-@cindex @code{\book}
+@findex \book
The movements and texts are combined together in a @code{\book} block,
like
@cindex Engraved by LilyPond
@cindex signature line
-@example
+@example
\book @{
\header @{
- title = "Eight miniatures"
+ title = "Eight miniatures"
composer = "Igor Stravinsky"
@}
\score @{
@end menu
@node Creating MIDI files
-@subsection Creating MIDI files
+@subsection Creating MIDI files
To create a MIDI from a music piece of music, add a @code{\midi} block
to a score, for example,
-@example
+@example
\score @{
@var{...music...}
\midi @{ \tempo 4=72 @}
@}
-@end example
+@end example
The tempo is specified using the @code{\tempo} command. In this
example the tempo of quarter notes is set to 72 beats per minute.
be produced. When notation is needed too, a @code{\layout} block must
be added
-@example
+@example
\score @{
@var{...music...}
\midi @{ \tempo 4=72 @}
\layout @{ @}
@}
-@end example
+@end example
@cindex layout block
inserted, for example
@example
-\midi @{ \tempo 4 . = 120 @}
+\midi @{ \tempo 4 . = 120 @}
@end example
@subsection MIDI instrument names
@cindex instrument names
-@cindex @code{Staff.midiInstrument}
+@findex Staff.midiInstrument
The MIDI instrument name is set by the @code{Staff.midiInstrument}
property. The instrument name should be chosen from the list in
the list of MIDI instruments, the Grand Piano (@code{"acoustic grand"})
instrument is used.
+
+@c Yes, this is a cop-out; this info doesn't belong in the Scheme
+@c chapter, but I'm not certain where to stick it.
+@c I think I'll eventually split this chapter into a "paper/layout"
+@c chapter and a "misc issues" chapter. -gp
+@node Displaying LilyPond notation
+@section Displaying LilyPond notation
+
+@findex \displayLilyMusc
+Displaying a music expression in LilyPond notation can be
+done using the music function @code{\displayLilyMusic}. For example,
+
+@example
+@{
+ \displayLilyMusic \transpose c a, @{ c e g a bes @}
+@}
+@end example
+
+will display
+
+@example
+@{ a, cis e fis g @}
+@end example
+
+By default, LilyPond will print these messages to the console along
+with all the other messages. To split up these messages and save
+the results of @code{\display@{STUFF@}}, redirect the output to
+a file.
+
+@example
+lilypond file.ly >display.txt
+@end example
+
+
+@node Other
+@section Other
+
+@c FIXME: yeah, it really needs to be moved soon. -gp
+@menu
+* Skipping corrected music::
+* Writing music in parallel::
+@end menu
+
+@node Skipping corrected music
+@subsection Skipping corrected music
+
+
+@findex skipTypesetting
+@findex showLastLength
+
+When entering or copying music, usually only the music near the end (where
+you
+are adding notes) is interesting to view and correct. To speed up
+this correction process, it is possible to skip typesetting of all but
+the last few measures. This is achieved by putting
+
+@verbatim
+showLastLength = R1*5
+\score { ... }
+@end verbatim
+
+@noindent
+in your source file. This will render only the last 5 measures
+(assuming 4/4 time signature) of every @code{\score} in the input
+file. For longer pieces, rendering only a small part is often an order
+of magnitude quicker than rendering it completely
+
+Skipping parts of a score can be controlled in a more fine-grained
+fashion with the property @code{Score.skipTypesetting}. When it is
+set, no typesetting is performed at all.
+
+This property is also used to control output to the MIDI file. Note that
+it skips all events, including tempo and instrument changes. You have
+been warned.
+
+@lilypond[quote,fragment,ragged-right,verbatim]
+\relative c'' {
+ c8 d
+ \set Score.skipTypesetting = ##t
+ e e e e e e e e
+ \set Score.skipTypesetting = ##f
+ c d b bes a g c2 }
+@end lilypond
+
+In polyphonic music, @code{Score.skipTypesetting} will affect all
+voices and staves, saving even more time.
+
+
+@node Writing music in parallel
+@subsection Writing music in parallel
+@cindex Writing music in parallel
+@cindex Interleaved music
+
+Music for multiple parts can be interleaved
+
+@lilypond[quote,fragment,verbatim]
+\parallelMusic #'(voiceA voiceB) {
+ r8 g'16[ c''] e''[ g' c'' e''] r8 g'16[ c''] e''[ g' c'' e''] |
+ c'2 c'2 |
+ r8 a'16[ d''] f''[ a' d'' f''] r8 a'16[ d''] f''[ a' d'' f''] |
+ c'2 c'2 |
+}
+\new StaffGroup <<
+ \new Staff \new Voice \voiceA
+ \new Staff \new Voice \voiceB
+>>
+@end lilypond
+
+