From 2efb2a313d08dd7d6490450e1591ba7feff12581 Mon Sep 17 00:00:00 2001 From: Graham Percival Date: Sun, 21 May 2006 23:56:13 +0000 Subject: [PATCH] Basic-notation reorg and misc small fixes. --- ChangeLog | 6 + Documentation/user/basic-notation.itely | 1628 +++++++++--------- Documentation/user/global.itely | 75 + Documentation/user/instrument-notation.itely | 3 +- Documentation/user/tutorial.itely | 2 +- 5 files changed, 852 insertions(+), 862 deletions(-) diff --git a/ChangeLog b/ChangeLog index fedb1c577c..2a51426e8b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-05-21 Graham Percival + + * Documentation/user/basic-notation.itely: reorg. + + * Documentation/user/ various: minor fixes. + 2006-05-20 Han-Wen Nienhuys * lily/stencil-expression.cc (register_stencil_head): opps, append diff --git a/Documentation/user/basic-notation.itely b/Documentation/user/basic-notation.itely index 18a35a07f3..0ab3e7e227 100644 --- a/Documentation/user/basic-notation.itely +++ b/Documentation/user/basic-notation.itely @@ -11,59 +11,38 @@ This chapter explains how to use basic notation features. @menu -* Note entry:: -* Alternate music entry:: +* Pitches:: +* Rhythms:: +* Multiple notes at once:: * Staff notation:: * Connecting notes:: * Expressive marks:: -* Polyphony:: * Repeats:: @end menu -@node Note entry -@section Note entry -@cindex Note entry +@node Pitches +@section Pitches -This section is about basic notation elements like notes, rests, and -related constructs, such as stems, tuplets and ties. +This section discusses how to specify the pitch of notes. @menu -* Notes:: -* Pitches:: +* Normal pitches:: +* Accidentals:: * Cautionary accidentals:: * Micro tones:: -* Chords:: +* Notes names in other languages:: +* Relative octaves:: +* Octave check:: +* Transpose:: * Rests:: * Skips:: -* Durations:: -* Augmentation dots:: -* Tuplets:: -* Scaling durations:: -* Stems:: @end menu -@node Notes -@subsection Notes - -@cindex Note specification -@cindex entering notes - -A note is printed by specifying its pitch and duration, - -@lilypond[quote,verbatim,ragged-right,fragment] -cis'4 d'8 e'16 c'16 -@end lilypond - -@seealso - -This manual: @ref{Pitches}, @ref{Durations} - - -@node Pitches -@subsection Pitches +@node Normal pitches +@subsection Normal pitches @cindex Pitch names @cindex pitches @@ -78,9 +57,10 @@ c d e f g a b c' The note name @code{c} is engraved one octave below middle C. -@c this should be scored with a treble clef and -@c four leger lines below the staff. @lilypond[quote,fragment,verbatim,ragged-right] +\clef treble +c1 +\clef bass c1 @end lilypond @@ -101,15 +81,19 @@ c, c,, e, g d,, d, d c An alternate method may be used to declare which octave to engrave a pitch; this method does not require as many -octave specifications (`@code{'}' and `@code{,}'). See +octave specifications (@code{'} and @code{,}). See @ref{Relative octaves}. + +@node Accidentals +@subsection Accidentals + @cindex note names, Dutch +@cindex note names, default A sharp is formed by adding @code{-is} to the end of a pitch name and a flat is formed by adding @code{-es} -@c avoid engraving naturals by crossing bar lines; we're not ready for them @lilypond[quote,ragged-right,fragment,verbatim,relative=2] a2 ais a aes @end lilypond @@ -133,29 +117,6 @@ a4 aes a2 @end lilypond - -There are predefined sets of note names for various other languages. -To use them, include the language specific init file. For -example, add @code{\include "english.ly"} to the top of the input -file. The available language files -and the note names they define are - -@anchor{note name} -@anchor{note names} -@example - Note Names sharp flat -nederlands.ly c d e f g a bes b -is -es -english.ly c d e f g a bf b -s/-sharp -f/-flat - -x (double) -deutsch.ly c d e f g a b h -is -es -norsk.ly c d e f g a b h -iss/-is -ess/-es -svenska.ly c d e f g a b h -iss -ess -italiano.ly do re mi fa sol la sib si -d -b -catalan.ly do re mi fa sol la sib si -d/-s -b -espanol.ly do re mi fa sol la sib si -s -b -@end example - - @commonprop In accordance with standard typesetting rules, a natural sign is printed @@ -169,16 +130,6 @@ ceses4 ces cis c ceses4 ces cis c @end lilypond -@cindex Musica ficta - -Suggested accidentals (used in notating musica ficta) may -be written with @code{suggestAccidentals} - -@lilypond[fragment,quote,ragged-right,verbatim,relative=2] -\set suggestAccidentals = ##t -ais4 bis -@end lilypond - @seealso @@ -216,6 +167,7 @@ cis cis cis! cis? c c? c! c The automatic production of accidentals can be tuned in many ways. For more information, see @ref{Automatic accidentals}. + @node Micro tones @subsection Micro tones @@ -240,122 +192,366 @@ three-quarter flats, so LilyPond's symbol does not conform to any standard. -@node Chords -@subsection Chords +@node Notes names in other languages +@subsection Notes names in other languages -@cindex Chords +There are predefined sets of note names for various other languages. +To use them, include the language specific init file. For +example, add @code{\include "english.ly"} to the top of the input +file. The available language files +and the note names they define are -A chord is formed by a enclosing a set of pitches in @code{<} and -@code{>}. A chord may be followed by a duration, and a set of -articulations, just like simple notes +@c what about micro-tunes, double-sharps, and double-flats? add +@c more clumns to the table? +@c Oh, and should this be made into a multitable? +@cindex note names, other languages +@example + Note Names sharp flat +nederlands.ly c d e f g a bes b -is -es +english.ly c d e f g a bf b -s/-sharp -f/-flat + -x (double) +deutsch.ly c d e f g a b h -is -es +norsk.ly c d e f g a b h -iss/-is -ess/-es +svenska.ly c d e f g a b h -iss -ess +italiano.ly do re mi fa sol la sib si -d -b +catalan.ly do re mi fa sol la sib si -d/-s -b +espanol.ly do re mi fa sol la sib si -s -b +@end example -@lilypond[verbatim,ragged-right,fragment,quote,relative=1] -4 8 -@end lilypond -For more information about chords, see @ref{Chord names}. +@node Relative octaves +@subsection Relative octaves +@cindex Relative +@cindex Relative octave specification +@funindex \relative -@node Rests -@subsection Rests -@cindex Rests +Octaves are specified by adding @code{'} and @code{,} to pitch names. +When you copy existing music, it is easy to accidentally put a pitch +in the wrong octave and hard to find such an error. The relative +octave mode prevents these errors by making the mistakes much +larger: a single error puts the rest of the piece off by one octave +@example +\relative @var{startpitch} @var{musicexpr} +@end example -@funindex \rest -@funindex r +@noindent +or -Rests are entered like notes with the note name @code{r} +@example +\relative @var{musicexpr} +@end example -@lilypond[fragment,quote,ragged-right,verbatim] -r1 r2 r4 r8 -@end lilypond +@noindent +@code{c'} is used as the default if no starting pitch is defined. -Whole bar rests, centered in middle of the bar, -must be done with multi-measure rests. They can be used for a -single bar as well as many bars, and are discussed in -@ref{Multi measure rests}. +The octave of notes that appear in @var{musicexpr} are calculated as +follows: if no octave changing marks are used, the basic interval +between this and the last note is always taken to be a fourth or +less. This distance is determined without regarding alterations; a +@code{fisis} following a @code{ceses} will be put above the +@code{ceses}. In other words, a doubly-augmented fourth is considered +a smaller interval than a diminished fifth, even though the +doubly-augmented fourth spans seven semitones while the diminished +fifth only spans six semitones. -To explicitly specify a rest's vertical position, write a note -followed by @code{\rest}. A rest will be placed in the position -where the note would appear, +The octave changing marks @code{'} and @code{,} can be added to raise +or lower the pitch by an extra octave. Upon entering relative mode, +an absolute starting pitch can be specified that will act as the +predecessor of the first note of @var{musicexpr}. If no starting pitch +is specified, then middle C is used as a start. -@lilypond[fragment,quote,ragged-right,verbatim] -a'4\rest d'4\rest +Here is the relative mode shown in action +@lilypond[quote,fragment,ragged-right,verbatim] +\relative c'' { + b c d c b c bes a +} @end lilypond -@noindent -This makes manual formatting of -polyphonic music much easier, since the automatic rest collision -formatter will leave these rests alone. +Octave changing marks are used for intervals greater than a fourth +@lilypond[quote,ragged-right,fragment,verbatim] +\relative c'' { + c g c f, c' a, e'' +} +@end lilypond -@seealso +If the preceding item is a chord, the first note of the chord is used +to determine the first note of the next chord -Program reference: @internalsref{Rest}. +@lilypond[quote,ragged-right,fragment,verbatim] +\relative c' { + c + + +} +@end lilypond +The pitch after the @code{\relative} contains a note name. -@node Skips -@subsection Skips +The relative conversion will not affect @code{\transpose}, +@code{\chordmode} or @code{\relative} sections in its argument. To use +relative within transposed music, an additional @code{\relative} must +be placed inside @code{\transpose}. -@cindex Skip -@cindex Invisible rest -@cindex Space note -@funindex \skip -@funindex s -An invisible rest (also called a `skip') can be entered like a note -with note name `@code{s}' or with @code{\skip @var{duration}} +@node Octave check +@subsection Octave check -@lilypond[fragment,quote,ragged-right,verbatim,relative=2] -a4 a4 s4 a4 \skip 1 a4 -@end lilypond +@cindex Octave check -The @code{s} syntax is only available in note mode and chord mode. In -other situations, for example, when entering lyrics, you should use -the @code{\skip} command +Octave checks make octave errors easier to correct: a note may be +followed by @code{=}@var{quotes} which indicates what its absolute +octave should be. In the following example, -@lilypond[quote,ragged-right,verbatim] -<< - \relative { a'2 a2 } - \new Lyrics \lyricmode { \skip 2 bla2 } ->> -@end lilypond +@example +\relative c'' @{ c='' b=' d,='' @} +@end example -The skip command is merely an empty musical placeholder. It does not -produce any output, not even transparent output. +@noindent +the @code{d} will generate a warning, because a @code{d''} is expected +(because @code{b'} to @code{d''} is only a third), but a @code{d'} is +found. In the output, the octave is corrected to be a @code{d''} and +the next note is calculated relative to @code{d''} instead of @code{d'}. -The @code{s} skip command does create @internalsref{Staff} and -@internalsref{Voice} when necessary, similar to note and rest -commands. For example, the following results in an empty staff. +There is also an octave check that produces no visible output. The syntax -@lilypond[quote,ragged-right,verbatim] -{ s4 } -@end lilypond +@example +\octave @var{pitch} +@end example -The fragment @code{@{ \skip 4 @} } would produce an empty page. +This checks that @var{pitch} (without quotes) yields @var{pitch} (with +quotes) in @code{\relative} mode. If not, a warning is printed, and the +octave is corrected. The @var{pitch} is not printed as a note. -@seealso +In the example below, the first check passes without incident, since +the @code{e} (in relative mode) is within a fifth of @code{a'}. However, +the second check produces a warning, since the @code{e} is not within +a fifth of @code{b'}. The warning message is printed, and the octave +is adjusted so that the following notes are in the correct octave +once again. -Program reference: @internalsref{SkipMusic}. +@example +\relative c' @{ + e + \octave a' + \octave b' +@} +@end example -@node Durations -@subsection Durations +The octave of a note following an octave check is determined with +respect to the note preceding it. In the next fragment, the last note +is an @code{a'}, above middle C. That means that the @code{\octave} +check passes successfully, so the check could be deleted without changing +the output of the piece. -@cindex duration -@funindex \longa -@funindex \breve -@funindex \maxima +@lilypond[quote,ragged-right,verbatim,fragment] +\relative c' { + e + \octave b + a +} +@end lilypond -In Note, Chord, and Lyrics mode, durations are designated by numbers and -dots: durations are entered as their reciprocal values. For example, a -quarter note is entered using a @code{4} (since it is a 1/4 note), while -a half note is entered using a @code{2} (since it is a 1/2 note). For -notes longer than a whole you must use the variables @code{\longa} and -@code{\breve} -@example -c'\breve -c'1 c'2 c'4 c'8 c'16 c'32 c'64 c'64 +@node Transpose +@subsection Transpose + +@cindex Transpose +@cindex Transposition of pitches +@funindex \transpose + +A music expression can be transposed with @code{\transpose}. The +syntax is +@example +\transpose @var{from} @var{to} @var{musicexpr} +@end example + +This means that @var{musicexpr} is transposed by the interval between +the pitches @var{from} and @var{to}: any note with pitch @code{from} +is changed to @code{to}. + +For example, consider a piece written in the key of D-major. If +this piece is a little too low for its performer, it can be +transposed up to E-major with +@example +\transpose d e @dots{} +@end example + +Consider a part written for violin (a C instrument). If +this part is to be played on the A clarinet (for which an +A is notated as a C, and which sounds a minor third lower +than notated), the following +transposition will produce the appropriate part + +@example +\transpose a c @dots{} +@end example + +@code{\transpose} distinguishes between enharmonic pitches: both +@code{\transpose c cis} or @code{\transpose c des} will transpose up +half a tone. The first version will print sharps and the second +version will print flats + +@lilypond[quote,ragged-right,verbatim] +mus = { \key d \major cis d fis g } +\new Staff { + \clef "F" \mus + \clef "G" + \transpose c g' \mus + \transpose c f' \mus +} +@end lilypond + +@code{\transpose} may also be used to input written notes for a +transposing instrument. Pitches are normally entered into LilyPond +in C (or ``concert pitch''), but they may be entered in another +key. For example, when entering music for a B-flat trumpet which +begins on concert D, one would write + +@example +\transpose c bes @{ e4 @dots{} @} +@end example + +To print this music in B-flat again (i.e. producing a trumpet part, +instead of a concert pitch conductor's score) you would wrap the +existing music with another @code{transpose} + +@example +\transpose bes c @{ \transpose c bes @{ e4 @dots{} @} @} +@end example + + +@seealso + +Program reference: @internalsref{TransposedMusic}. + + +@refbugs + +If you want to use both @code{\transpose} and @code{\relative}, +you must put @code{\transpose} outside of @code{\relative}, since +@code{\relative} will have no effect music that appears inside a +@code{\transpose}. + + +@node Rests +@subsection Rests +@cindex Rests + +@funindex \rest +@funindex r + +Rests are entered like notes with the note name @code{r} + +@lilypond[fragment,quote,ragged-right,verbatim] +r1 r2 r4 r8 +@end lilypond + +Whole bar rests, centered in middle of the bar, +must be done with multi-measure rests. They can be used for a +single bar as well as many bars, and are discussed in +@ref{Multi measure rests}. + +To explicitly specify a rest's vertical position, write a note +followed by @code{\rest}. A rest will be placed in the position +where the note would appear, + +@lilypond[fragment,quote,ragged-right,verbatim] +a'4\rest d'4\rest +@end lilypond + +@noindent +This makes manual formatting of +polyphonic music much easier, since the automatic rest collision +formatter will leave these rests alone. + +@seealso + +Program reference: @internalsref{Rest}. + + +@node Skips +@subsection Skips + +@cindex Skip +@cindex Invisible rest +@cindex Space note +@funindex \skip +@funindex s + +An invisible rest (also called a `skip') can be entered like a note +with note name `@code{s}' or with @code{\skip @var{duration}} + +@lilypond[fragment,quote,ragged-right,verbatim,relative=2] +a4 a4 s4 a4 \skip 1 a4 +@end lilypond + +The @code{s} syntax is only available in note mode and chord mode. In +other situations, for example, when entering lyrics, you should use +the @code{\skip} command + +@lilypond[quote,ragged-right,verbatim] +<< + \relative { a'2 a2 } + \new Lyrics \lyricmode { \skip 2 bla2 } +>> +@end lilypond + +The skip command is merely an empty musical placeholder. It does not +produce any output, not even transparent output. + +The @code{s} skip command does create @internalsref{Staff} and +@internalsref{Voice} when necessary, similar to note and rest +commands. For example, the following results in an empty staff. + +@lilypond[quote,ragged-right,verbatim] +{ s4 } +@end lilypond + +The fragment @code{@{ \skip 4 @} } would produce an empty page. + +@seealso + +Program reference: @internalsref{SkipMusic}. + + + +@node Rhythms +@section Rhythms + +This section discusses rhythms, durations, and bars. + +@menu +* Durations:: +* Augmentation dots:: +* Tuplets:: +* Scaling durations:: +* Bar check:: +* Barnumber check:: +* Automatic note splitting:: +@end menu + + +@node Durations +@subsection Durations + +@cindex duration +@funindex \longa +@funindex \breve +@funindex \maxima + +In Note, Chord, and Lyrics mode, durations are designated by numbers and +dots: durations are entered as their reciprocal values. For example, a +quarter note is entered using a @code{4} (since it is a 1/4 note), while +a half note is entered using a @code{2} (since it is a 1/2 note). For +notes longer than a whole you must use the variables @code{\longa} and +@code{\breve} + +@example +c'\breve +c'1 c'2 c'4 c'8 c'16 c'32 c'64 c'64 r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r64 @end example @@ -533,444 +729,444 @@ b16*4 c4 This manual: @ref{Tuplets} -@node Stems -@subsection Stems +@node Bar check +@subsection Bar check -Whenever a note is found, a @internalsref{Stem} object is created -automatically. For whole notes and rests, they are also created but -made invisible. +@cindex Bar check +@funindex barCheckSynchronize +@funindex | -@refcommands +Bar checks help detect errors in the durations. A bar check is +entered using the bar symbol, `@code{|}'. Whenever it is encountered +during interpretation, it should fall on a measure boundary. If it +does not, a warning is printed. In the next example, the second bar +check will signal an error +@example +\time 3/4 c2 e4 | g2 | +@end example -@funindex \stemUp -@code{\stemUp}, -@funindex \stemDown -@code{\stemDown}, -@funindex \stemNeutral -@code{\stemNeutral}. +Bar checks can also be used in lyrics, for example + +@example +\lyricmode @{ + \time 2/4 + Twin -- kle | Twin -- kle +@} +@end example +Failed bar checks are caused by entering incorrect +durations. Incorrect durations often completely garble up the score, +especially if the score is polyphonic, so a good place to start correcting +input is by scanning for failed bar checks and incorrect durations. -@commonprop +@funindex | +@funindex pipeSymbol -To change the direction of stems in the middle of the staff, use +It is also possible to redefine the meaning of @code{|}. This is done +by assigning a music expression to @code{pipeSymbol}, -@lilypond[quote,ragged-right,fragment,relative=2,verbatim] -a4 b c b -\override Stem #'neutral-direction = #up -a4 b c b -\override Stem #'neutral-direction = #down -a4 b c b +@lilypond[quote,ragged-right,verbatim] +pipeSymbol = \bar "||" + +{ c'2 c' | c'2 c' } @end lilypond -@node Alternate music entry -@section Alternate music entry -@cindex Music entry +@node Barnumber check +@subsection Barnumber check -This section deals with tricks and features of the input language that -were added solely to help entering music and finding and correcting -mistakes. There are also external tools that make debugging easier. -See @ref{Point and click} for more information. +When copying large pieces of music, it can be helpful to check that +the LilyPond bar number corresponds to the original that you are +entering from. This can be checked with @code{\barNumberCheck}, for +example, -It is also possible to enter and edit music using other programs, such as -GUI interfaces or MIDI sequencers. Refer to the LilyPond -website for more information. - -@menu -* Relative octaves:: -* Octave check:: -* Transpose:: -* Bar check:: -* Barnumber check:: -* Skipping corrected music:: -* Automatic note splitting:: -* Writing music in parallel:: -@end menu - - -@node Relative octaves -@subsection Relative octaves - -@cindex Relative -@cindex Relative octave specification -@funindex \relative - -Octaves are specified by adding @code{'} and @code{,} to pitch names. -When you copy existing music, it is easy to accidentally put a pitch -in the wrong octave and hard to find such an error. The relative -octave mode prevents these errors by making the mistakes much -larger: a single error puts the rest of the piece off by one octave - -@example -\relative @var{startpitch} @var{musicexpr} -@end example +@verbatim +\barNumberCheck #123 +@end verbatim @noindent -or - -@example -\relative @var{musicexpr} -@end example +will print a warning if the @code{currentBarNumber} is not 123 when it +is processed. -@noindent -@code{c'} is used as the default if no starting pitch is defined. -The octave of notes that appear in @var{musicexpr} are calculated as -follows: if no octave changing marks are used, the basic interval -between this and the last note is always taken to be a fourth or -less. This distance is determined without regarding alterations; a -@code{fisis} following a @code{ceses} will be put above the -@code{ceses}. In other words, a doubly-augmented fourth is considered -a smaller interval than a diminished fifth, even though the -doubly-augmented fourth spans seven semitones while the diminished -fifth only spans six semitones. +@node Automatic note splitting +@subsection Automatic note splitting -The octave changing marks @code{'} and @code{,} can be added to raise -or lower the pitch by an extra octave. Upon entering relative mode, -an absolute starting pitch can be specified that will act as the -predecessor of the first note of @var{musicexpr}. If no starting pitch -is specified, then middle C is used as a start. +Long notes can be converted automatically to tied notes. This is done +by replacing the @internalsref{Note_heads_engraver} by the +@internalsref{Completion_heads_engraver}. +In the following examples, notes crossing the bar line are split and tied. -Here is the relative mode shown in action -@lilypond[quote,fragment,ragged-right,verbatim] -\relative c'' { - b c d c b c bes a +@lilypond[quote,fragment,verbatim,relative=1,line-width=12\cm] +\new Voice \with { + \remove "Note_heads_engraver" + \consists "Completion_heads_engraver" +} { + c2. c8 d4 e f g a b c8 c2 b4 a g16 f4 e d c8. c2 } @end lilypond -Octave changing marks are used for intervals greater than a fourth -@lilypond[quote,ragged-right,fragment,verbatim] -\relative c'' { - c g c f, c' a, e'' -} -@end lilypond +This engraver splits all running notes at the bar line, and inserts +ties. One of its uses is to debug complex scores: if the measures are +not entirely filled, then the ties exactly show how much each measure +is off. -If the preceding item is a chord, the first note of the chord is used -to determine the first note of the next chord -@lilypond[quote,ragged-right,fragment,verbatim] -\relative c' { - c - - -} -@end lilypond +@refbugs -The pitch after the @code{\relative} contains a note name. +Not all durations (especially those containing tuplets) can be +represented exactly with normal notes and dots, but the engraver will +not insert tuplets. -The relative conversion will not affect @code{\transpose}, -@code{\chordmode} or @code{\relative} sections in its argument. To use -relative within transposed music, an additional @code{\relative} must -be placed inside @code{\transpose}. +@code{Completion_heads_engraver} only affects notes; it does not split +rests. -@node Octave check -@subsection Octave check +@seealso -@cindex Octave check +Examples: @inputfileref{input/@/regression,completion@/-heads@/.ly}. -Octave checks make octave errors easier to correct: a note may be -followed by @code{=}@var{quotes} which indicates what its absolute -octave should be. In the following example, +@noindent -@example -\relative c'' @{ c='' b=' d,='' @} -@end example +Program reference: @internalsref{Completion_heads_engraver}. -@noindent -the @code{d} will generate a warning, because a @code{d''} is expected -(because @code{b'} to @code{d''} is only a third), but a @code{d'} is -found. In the output, the octave is corrected to be a @code{d''} and -the next note is calculated relative to @code{d''} instead of @code{d'}. -There is also an octave check that produces no visible output. The syntax +@node Multiple notes at once +@section Multiple notes at once -@example -\octave @var{pitch} -@end example +Polyphony in music refers to having more than one voice occurring in +a piece of music. Polyphony in LilyPond refers to having more than +one voice on the same staff. -This checks that @var{pitch} (without quotes) yields @var{pitch} (with -quotes) in \relative mode. If not, a warning is printed, and the -octave is corrected. The @var{pitch} is not printed as a note. +@menu +* Chords:: +* Stems:: +* Basic polyphony:: +* Explicitly instantiating voices:: +* Collision Resolution:: +@end menu -In the example below, the first check passes without incident, since -the @code{e} (in relative mode) is within a fifth of @code{a'}. However, -the second check produces a warning, since the @code{e} is not within -a fifth of @code{b'}. The warning message is printed, and the octave -is adjusted so that the following notes are in the correct octave -once again. -@example -\relative c' @{ - e - \octave a' - \octave b' -@} -@end example +@node Chords +@subsection Chords +@cindex Chords -The octave of a note following an octave check is determined with -respect to the note preceding it. In the next fragment, the last note -is an @code{a'}, above middle C. That means that the @code{\octave} -check passes successfully, so the check could be deleted without changing -the output of the piece. +A chord is formed by a enclosing a set of pitches in @code{<} and +@code{>}. A chord may be followed by a duration, and a set of +articulations, just like simple notes -@lilypond[quote,ragged-right,verbatim,fragment] -\relative c' { - e - \octave b - a -} +@lilypond[verbatim,ragged-right,fragment,quote,relative=1] +4 8 @end lilypond +For more information about chords, see @ref{Chord names}. -@node Transpose -@subsection Transpose -@cindex Transpose -@cindex transposition of pitches -@funindex \transpose +@node Stems +@subsection Stems -A music expression can be transposed with @code{\transpose}. The -syntax is -@example -\transpose @var{from} @var{to} @var{musicexpr} -@end example +Whenever a note is found, a @internalsref{Stem} object is created +automatically. For whole notes and rests, they are also created but +made invisible. -This means that @var{musicexpr} is transposed by the interval between -the pitches @var{from} and @var{to}: any note with pitch @code{from} -is changed to @code{to}. +@refcommands -For example, consider a piece written in the key of D-major. If -this piece is a little too low for its performer, it can be -transposed up to E-major with -@example -\transpose d e @dots{} -@end example +@funindex \stemUp +@code{\stemUp}, +@funindex \stemDown +@code{\stemDown}, +@funindex \stemNeutral +@code{\stemNeutral}. -Consider a part written for violin (a C instrument). If -this part is to be played on the A clarinet (for which an -A is notated as a C, and which sounds a minor third lower -than notated), the following -transposition will produce the appropriate part -@example -\transpose a c @dots{} -@end example +@commonprop -@code{\transpose} distinguishes between enharmonic pitches: both -@code{\transpose c cis} or @code{\transpose c des} will transpose up -half a tone. The first version will print sharps and the second -version will print flats +To change the direction of stems in the middle of the staff, use -@lilypond[quote,ragged-right,verbatim] -mus = { \key d \major cis d fis g } -\new Staff { - \clef "F" \mus - \clef "G" - \transpose c g' \mus - \transpose c f' \mus -} +@lilypond[quote,ragged-right,fragment,relative=2,verbatim] +a4 b c b +\override Stem #'neutral-direction = #up +a4 b c b +\override Stem #'neutral-direction = #down +a4 b c b @end lilypond -@code{\transpose} may also be used to input written notes for a -transposing instrument. Pitches are normally entered into LilyPond -in C (or ``concert pitch''), but they may be entered in another -key. For example, when entering music for a B-flat trumpet which -begins on concert D, one would write - -@example -\transpose c bes @{ e4 @dots{} @} -@end example - -To print this music in B-flat again (i.e. producing a trumpet part, -instead of a concert pitch conductor's score) you would wrap the -existing music with another @code{transpose} -@example -\transpose bes c @{ \transpose c bes @{ e4 @dots{} @} @} -@end example +@node Basic polyphony +@subsection Basic polyphony +@cindex polyphony -@seealso +The easiest way to enter fragments with more than one voice on a staff +is to enter each voice as a sequence (with @code{@{...@}}), and combine +them simultaneously, separating the voices with @code{\\} -Program reference: @internalsref{TransposedMusic}. +@funindex \\ +@lilypond[quote,verbatim,fragment] +\new Staff \relative c' { + c16 d e f + << + { g4 f e | d2 e2 } \\ + { r8 e4 d c8 ~ | c b16 a b8 g ~ g2 } \\ + { s2. | s4 b4 c2 } + >> +} +@end lilypond -@refbugs - -If you want to use both @code{\transpose} and @code{\relative}, -you must put @code{\transpose} outside of @code{\relative}, since -@code{\relative} will have no effect music that appears inside a -@code{\transpose}. - - -@node Bar check -@subsection Bar check +The separator causes @internalsref{Voice} contexts@footnote{Polyphonic +voices are sometimes called ``layers'' in other notation packages} +@cindex layers +to be instantiated. They bear the names @code{"1"}, @code{"2"}, etc. In +each of these contexts, vertical direction of slurs, stems, etc., is set +appropriately. -@cindex Bar check -@funindex barCheckSynchronize -@funindex | +These voices are all separate from the voice that contains the notes just +outside the @code{<< \\ >>} construct. This should be noted when making +changes at the voice level. This also means that slurs and ties cannot go +into or out of a @code{<< \\ >>} construct. Conversely, parallel voices +from separate @code{<< \\ >>} constructs on the same staff are the the +same voice. Here is the same example, with different noteheads for each +voice. Note that the change to the note-head style in the main voice does +not affect +the inside of the @code{<< \\ >>} constructs. Also, the change to the +second +voice in the first @code{<< \\ >>} construct is effective in the second +@code{<< \\ >>}, and the voice is tied across the two constructs. -Bar checks help detect errors in the durations. A bar check is -entered using the bar symbol, `@code{|}'. Whenever it is encountered -during interpretation, it should fall on a measure boundary. If it -does not, a warning is printed. In the next example, the second bar -check will signal an error -@example -\time 3/4 c2 e4 | g2 | -@end example +@lilypond[quote,verbatim,fragment] +\new Staff \relative c' { + \override NoteHead #'style = #'cross + c16 d e f + << + { g4 f e } \\ + { \override NoteHead #'style = #'triangle + r8 e4 d c8 ~ } + >> | + << + { d2 e2 } \\ + { c8 b16 a b8 g ~ g2 } \\ + { \override NoteHead #'style = #'slash s4 b4 c2 } + >> +} +@end lilypond -Bar checks can also be used in lyrics, for example +Polyphony does not change the relationship of notes within a +@code{\relative @{ @}} block. Each note is calculated relative +to the note immediately preceding it. @example -\lyricmode @{ - \time 2/4 - Twin -- kle | Twin -- kle -@} +\relative @{ noteA << noteB \\ noteC >> noteD @} @end example -Failed bar checks are caused by entering incorrect -durations. Incorrect durations often completely garble up the score, -especially if the score is polyphonic, so a good place to start correcting -input is by scanning for failed bar checks and incorrect durations. - -@funindex | -@funindex pipeSymbol - -It is also possible to redefine the meaning of @code{|}. This is done -by assigning a music expression to @code{pipeSymbol}, - -@lilypond[quote,ragged-right,verbatim] -pipeSymbol = \bar "||" - -{ c'2 c' | c'2 c' } -@end lilypond - +@code{noteC} is relative to @code{noteB}, not @code{noteA}; +@code{noteD} is relative to @code{noteC}, not @code{noteB} or +@code{noteA}. -@node Barnumber check -@subsection Barnumber check +@node Explicitly instantiating voices +@subsection Explicitly instantiating voices -When copying large pieces of music, it can be helpful to check that -the LilyPond bar number corresponds to the original that you are -entering from. This can be checked with @code{\barNumberCheck}, for -example, +@internalsref{Voice} contexts can also be instantiated manually +inside a @code{<< >>} block to create polyphonic music, using +@code{\voiceOne}, up to @code{\voiceFour} to assign stem directions +and a horizontal shift for each part. -@verbatim -\barNumberCheck #123 -@end verbatim +Specifically, +@example +<< \upper \\ \lower >> +@end example @noindent -will print a warning if the @code{currentBarNumber} is not 123 when it -is processed. +is equivalent to +@example +<< + \new Voice = "1" @{ \voiceOne \upper @} + \new Voice = "2" @{ \voiceTwo \lower @} +>> +@end example -@node Skipping corrected music -@subsection Skipping corrected music +The @code{\voiceXXX} commands set the direction of stems, slurs, ties, +articulations, text annotations, augmentation dots of dotted +notes, and fingerings. @code{\voiceOne} and @code{\voiceThree} make +these objects point upwards, while @code{\voiceTwo} and @code{\voiceFour} +make them point downwards. +The command @code{\oneVoice} will revert back to the normal setting. +An expression that appears directly inside a @code{<< >>} belongs to +the main voice. This is useful when extra voices appear while the main +voice is playing. Here is a more correct rendition of the example from +the previous section. The crossed noteheads demonstrate that the main +melody is now in a single voice context. -@funindex skipTypesetting -@funindex showLastLength +@lilypond[quote,ragged-right,verbatim] +\new Staff \relative c' { + \override NoteHead #'style = #'cross + c16 d e f + \voiceOne + << + { g4 f e | d2 e2 } + \new Voice="1" { \voiceTwo + r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2 + \oneVoice + } + \new Voice { \voiceThree + s2. | s4 b4 c2 + \oneVoice + } + >> + \oneVoice +} +@end lilypond -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 +The correct definition of the voices allows the melody to be slurred. +@lilypond[quote,ragged-right,verbatim] +\new Staff \relative c' { + c16^( d e f + \voiceOne + << + { g4 f e | d2 e2) } + \context Voice="1" { \voiceTwo + r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2 + \oneVoice + } + \new Voice { \voiceThree + s2. s4 b4 c2 + \oneVoice + } + >> + \oneVoice +} +@end lilypond -@verbatim -showLastLength = R1*5 -\score { ... } -@end verbatim +Avoiding the @code{\\} separator also allows nesting polyphony +constructs, which in some case might be a more natural way to typeset +the music. -@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 +@lilypond[quote,ragged-right,verbatim] +\new Staff \relative c' { + c16^( d e f + \voiceOne + << + { g4 f e | d2 e2) } + \context Voice="1" { \voiceTwo + r8 e4 d c8 ~ | + << + {c8 b16 a b8 g ~ g2} + \new Voice { \voiceThree + s4 b4 c2 + \oneVoice + } + >> + \oneVoice + } + >> + \oneVoice +} +@end lilypond -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. +@node Collision Resolution +@subsection Collision Resolution -@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 } +Normally, note heads with a different number of dots are not merged, but +when the object property @code{merge-differently-dotted} is set in +the @internalsref{NoteCollision} object, they are merged +@lilypond[quote,verbatim,fragment,ragged-right,relative=2] +\new Voice << { + g8 g8 + \override Staff.NoteCollision + #'merge-differently-dotted = ##t + g8 g8 +} \\ { g8.[ f16] g8.[ f16] } >> @end lilypond -In polyphonic music, @code{Score.skipTypesetting} will affect all -voices and staves, saving even more time. - - -@node Automatic note splitting -@subsection Automatic note splitting +Similarly, you can merge half note heads with eighth notes, by setting +@code{merge-differently-headed} +@lilypond[quote,ragged-right,fragment,relative=2,verbatim] +\new Voice << { + c8 c4. + \override Staff.NoteCollision + #'merge-differently-headed = ##t +c8 c4. } \\ { c2 c2 } >> +@end lilypond -Long notes can be converted automatically to tied notes. This is done -by replacing the @internalsref{Note_heads_engraver} by the -@internalsref{Completion_heads_engraver}. -In the following examples, notes crossing the bar line are split and tied. +LilyPond also vertically shifts rests that are opposite of a stem, +for example -@lilypond[quote,fragment,verbatim,relative=1,line-width=12\cm] -\new Voice \with { - \remove "Note_heads_engraver" - \consists "Completion_heads_engraver" -} { - c2. c8 d4 e f g a b c8 c2 b4 a g16 f4 e d c8. c2 -} +@lilypond[quote,ragged-right,fragment,verbatim] +\new Voice << c''4 \\ r4 >> @end lilypond -This engraver splits all running notes at the bar line, and inserts -ties. One of its uses is to debug complex scores: if the measures are -not entirely filled, then the ties exactly show how much each measure -is off. +@refcommands -@refbugs +@funindex \oneVoice +@code{\oneVoice}, +@funindex \voiceOne +@code{\voiceOne}, +@funindex \voiceTwo +@code{\voiceTwo}, +@funindex \voiceThree +@code{\voiceThree}, +@funindex \voiceFour +@code{\voiceFour}. -Not all durations (especially those containing tuplets) can be -represented exactly with normal notes and dots, but the engraver will -not insert tuplets. +@funindex \shiftOn +@code{\shiftOn}, +@funindex \shiftOnn +@code{\shiftOnn}, +@funindex \shiftOnnn +@code{\shiftOnnn}, +@funindex \shiftOff +@code{\shiftOff}: these commands specify in what chords of the current +voice should be shifted. The outer voices (normally: voice one and +two) have @code{\shiftOff}, while the inner voices (three and four) +have @code{\shiftOn}. @code{\shiftOnn} and @code{\shiftOnnn} define +further shift levels. -@code{Completion_heads_engraver} only affects notes; it does not split -rests. +When LilyPond cannot cope, the @code{force-hshift} +property of the @internalsref{NoteColumn} object and pitched rests can +be used to override typesetting decisions. + +@lilypond[quote,verbatim,ragged-right] +\relative << +{ + + +} \\ { + + \once \override NoteColumn #'force-hshift = #1.7 + +} >> +@end lilypond @seealso -Examples: @inputfileref{input/@/regression,completion@/-heads@/.ly}. +Program reference: the objects responsible for resolving collisions are +@internalsref{NoteCollision} and @internalsref{RestCollision}. -@noindent +Examples: +@inputfileref{input/@/regression,collision@/-dots@/.ly}, +@inputfileref{input/@/regression,collision@/-head-chords@/.ly}, +@inputfileref{input/@/regression,collision@/-heads@/.ly}, +@inputfileref{input/@/regression,collision@/-mesh@/.ly}, and +@inputfileref{input/@/regression,collisions@/.ly}. -Program reference: @internalsref{Completion_heads_engraver}. +@refbugs -@node Writing music in parallel -@subsection Writing music in parallel -@cindex Writing music in parallel -@cindex Interleaved music +When using @code{merge-differently-headed} with an upstem eighth or a +shorter note, and a downstem half note, the eighth note gets the wrong +offset. -Music for multiple parts can be interleaved +There is no support for clusters where the same note occurs with +different accidentals in the same chord. In this case, it is +recommended to use enharmonic transcription, or to use special cluster +notation (see @ref{Clusters}). -@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 @node Staff notation @@ -2431,415 +2627,127 @@ f\stopTrillSpan @end lilypond The first argument is the main note. The pitch of the second -is printed as a stemless note head in parentheses. - - -@refcommands - -@code{\startTrillSpan}, -@funindex \startTrillSpan -@code{\stopTrillSpan}. -@funindex \stopTrillSpan - - -@seealso - -Program reference: @internalsref{TrillSpanner}. - - -@node Glissando -@subsection Glissando - -@cindex Glissando -@funindex \glissando - -A glissando is a smooth change in pitch. It is denoted by a line or a -wavy line between two notes. It is requested by attaching -@code{\glissando} to a note - -@lilypond[quote,ragged-right,fragment,relative=2,verbatim] -c2\glissando c' -\override Glissando #'style = #'zigzag -c2\glissando c, -@end lilypond - - -@seealso - -Program reference: @internalsref{Glissando}. - -Example files: @file{input/@/regression/@/glissando@/.ly}. - - -@refbugs - -Printing text over the line (such as @emph{gliss.}) is not supported. - - -@node Arpeggio -@subsection Arpeggio - -@cindex Arpeggio -@cindex broken chord -@funindex \arpeggio - -You can specify an arpeggio sign (also known as broken chord) on a -chord by attaching an @code{\arpeggio} to a chord - -@lilypond[quote,ragged-right,fragment,relative=1,verbatim] -\arpeggio -@end lilypond - -A square bracket on the left indicates that the player should not -arpeggiate the chord - -@lilypond[quote,ragged-right,fragment,relative=1,verbatim] -\arpeggioBracket -\arpeggio -@end lilypond - -The direction of the arpeggio is sometimes denoted by adding an -arrowhead to the wiggly line - -@lilypond[quote,ragged-right,fragment,relative=1,verbatim] -\new Voice { - \arpeggioUp - \arpeggio - \arpeggioDown - \arpeggio -} -@end lilypond - - -@commonprop - -When an arpeggio crosses staves, you may attach an arpeggio to the chords -in both staves and set -@internalsref{PianoStaff}.@code{connectArpeggios} - -@lilypond[quote,ragged-right,fragment,relative=1,verbatim] -\new PianoStaff << - \set PianoStaff.connectArpeggios = ##t - \new Staff { \arpeggio } - \new Staff { \clef bass \arpeggio } ->> -@end lilypond - - -@refcommands - -@code{\arpeggio}, -@funindex \arpeggioUp -@code{\arpeggioUp}, -@funindex \arpeggioDown -@code{\arpeggioDown}, -@funindex \arpeggioNeutral -@code{\arpeggioNeutral}, -@funindex \arpeggioBracket -@code{\arpeggioBracket}. - - -@seealso - -Notation manual: @ref{Ties}, for writing out arpeggios. - -Program reference: @internalsref{Arpeggio}. - - -@refbugs - -It is not possible to mix connected arpeggios and unconnected -arpeggios in one @internalsref{PianoStaff} at the same point in time. - - - -@node Polyphony -@section Polyphony - -Polyphony in music refers to having more than one voice occurring in -a piece of music. Polyphony in LilyPond refers to having more than -one voice on the same staff. - -@menu -* Basic polyphony:: -* Explicitly instantiating voices:: -* Collision Resolution:: -@end menu - - -@node Basic polyphony -@subsection Basic polyphony - -@cindex polyphony - -The easiest way to enter fragments with more than one voice on a staff -is to enter each voice as a sequence (with @code{@{...@}}), and combine -them simultaneously, separating the voices with @code{\\} - -@funindex \\ - -@lilypond[quote,verbatim,fragment] -\new Staff \relative c' { - c16 d e f - << - { g4 f e | d2 e2 } \\ - { r8 e4 d c8 ~ | c b16 a b8 g ~ g2 } \\ - { s2. | s4 b4 c2 } - >> -} -@end lilypond - -The separator causes @internalsref{Voice} contexts@footnote{Polyphonic -voices are sometimes called ``layers'' in other notation packages} -@cindex layers -to be instantiated. They bear the names @code{"1"}, @code{"2"}, etc. In -each of these contexts, vertical direction of slurs, stems, etc., is set -appropriately. - -These voices are all separate from the voice that contains the notes just -outside the @code{<< \\ >>} construct. This should be noted when making -changes at the voice level. This also means that slurs and ties cannot go -into or out of a @code{<< \\ >>} construct. Conversely, parallel voices -from separate @code{<< \\ >>} constructs on the same staff are the the -same voice. Here is the same example, with different noteheads for each -voice. Note that the change to the note-head style in the main voice does -not affect -the inside of the @code{<< \\ >>} constructs. Also, the change to the -second -voice in the first @code{<< \\ >>} construct is effective in the second -@code{<< \\ >>}, and the voice is tied across the two constructs. - -@lilypond[quote,verbatim,fragment] -\new Staff \relative c' { - \override NoteHead #'style = #'cross - c16 d e f - << - { g4 f e } \\ - { \override NoteHead #'style = #'triangle - r8 e4 d c8 ~ } - >> | - << - { d2 e2 } \\ - { c8 b16 a b8 g ~ g2 } \\ - { \override NoteHead #'style = #'slash s4 b4 c2 } - >> -} -@end lilypond +is printed as a stemless note head in parentheses. -Polyphony does not change the relationship of notes within a -@code{\relative @{ @}} block. Each note is calculated relative -to the note immediately preceding it. -@example -\relative @{ noteA << noteB \\ noteC >> noteD @} -@end example +@refcommands -@code{noteC} is relative to @code{noteB}, not @code{noteA}; -@code{noteD} is relative to @code{noteC}, not @code{noteB} or -@code{noteA}. +@code{\startTrillSpan}, +@funindex \startTrillSpan +@code{\stopTrillSpan}. +@funindex \stopTrillSpan -@node Explicitly instantiating voices -@subsection Explicitly instantiating voices -@internalsref{Voice} contexts can also be instantiated manually -inside a @code{<< >>} block to create polyphonic music, using -@code{\voiceOne}, up to @code{\voiceFour} to assign stem directions -and a horizontal shift for each part. +@seealso -Specifically, -@example -<< \upper \\ \lower >> -@end example +Program reference: @internalsref{TrillSpanner}. -@noindent -is equivalent to -@example -<< - \new Voice = "1" @{ \voiceOne \upper @} - \new Voice = "2" @{ \voiceTwo \lower @} ->> -@end example +@node Glissando +@subsection Glissando -The @code{\voiceXXX} commands set the direction of stems, slurs, ties, -articulations, text annotations, augmentation dots of dotted -notes, and fingerings. @code{\voiceOne} and @code{\voiceThree} make -these objects point upwards, while @code{\voiceTwo} and @code{\voiceFour} -make them point downwards. -The command @code{\oneVoice} will revert back to the normal setting. +@cindex Glissando +@funindex \glissando -An expression that appears directly inside a @code{<< >>} belongs to -the main voice. This is useful when extra voices appear while the main -voice is playing. Here is a more correct rendition of the example from -the previous section. The crossed noteheads demonstrate that the main -melody is now in a single voice context. +A glissando is a smooth change in pitch. It is denoted by a line or a +wavy line between two notes. It is requested by attaching +@code{\glissando} to a note -@lilypond[quote,ragged-right,verbatim] -\new Staff \relative c' { - \override NoteHead #'style = #'cross - c16 d e f - \voiceOne - << - { g4 f e | d2 e2 } - \new Voice="1" { \voiceTwo - r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2 - \oneVoice - } - \new Voice { \voiceThree - s2. | s4 b4 c2 - \oneVoice - } - >> - \oneVoice -} +@lilypond[quote,ragged-right,fragment,relative=2,verbatim] +c2\glissando c' +\override Glissando #'style = #'zigzag +c2\glissando c, @end lilypond -The correct definition of the voices allows the melody to be slurred. -@lilypond[quote,ragged-right,verbatim] -\new Staff \relative c' { - c16^( d e f - \voiceOne - << - { g4 f e | d2 e2) } - \context Voice="1" { \voiceTwo - r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2 - \oneVoice - } - \new Voice { \voiceThree - s2. s4 b4 c2 - \oneVoice - } - >> - \oneVoice -} -@end lilypond -Avoiding the @code{\\} separator also allows nesting polyphony -constructs, which in some case might be a more natural way to typeset -the music. +@seealso -@lilypond[quote,ragged-right,verbatim] -\new Staff \relative c' { - c16^( d e f - \voiceOne - << - { g4 f e | d2 e2) } - \context Voice="1" { \voiceTwo - r8 e4 d c8 ~ | - << - {c8 b16 a b8 g ~ g2} - \new Voice { \voiceThree - s4 b4 c2 - \oneVoice - } - >> - \oneVoice - } - >> - \oneVoice -} -@end lilypond +Program reference: @internalsref{Glissando}. +Example files: @file{input/@/regression/@/glissando@/.ly}. -@node Collision Resolution -@subsection Collision Resolution -Normally, note heads with a different number of dots are not merged, but -when the object property @code{merge-differently-dotted} is set in -the @internalsref{NoteCollision} object, they are merged -@lilypond[quote,verbatim,fragment,ragged-right,relative=2] -\new Voice << { - g8 g8 - \override Staff.NoteCollision - #'merge-differently-dotted = ##t - g8 g8 -} \\ { g8.[ f16] g8.[ f16] } >> -@end lilypond +@refbugs -Similarly, you can merge half note heads with eighth notes, by setting -@code{merge-differently-headed} -@lilypond[quote,ragged-right,fragment,relative=2,verbatim] -\new Voice << { - c8 c4. - \override Staff.NoteCollision - #'merge-differently-headed = ##t -c8 c4. } \\ { c2 c2 } >> +Printing text over the line (such as @emph{gliss.}) is not supported. + + +@node Arpeggio +@subsection Arpeggio + +@cindex Arpeggio +@cindex broken chord +@funindex \arpeggio + +You can specify an arpeggio sign (also known as broken chord) on a +chord by attaching an @code{\arpeggio} to a chord + +@lilypond[quote,ragged-right,fragment,relative=1,verbatim] +\arpeggio @end lilypond -LilyPond also vertically shifts rests that are opposite of a stem, -for example +A square bracket on the left indicates that the player should not +arpeggiate the chord -@lilypond[quote,ragged-right,fragment,verbatim] -\new Voice << c''4 \\ r4 >> +@lilypond[quote,ragged-right,fragment,relative=1,verbatim] +\arpeggioBracket +\arpeggio @end lilypond +The direction of the arpeggio is sometimes denoted by adding an +arrowhead to the wiggly line -@refcommands +@lilypond[quote,ragged-right,fragment,relative=1,verbatim] +\new Voice { + \arpeggioUp + \arpeggio + \arpeggioDown + \arpeggio +} +@end lilypond -@funindex \oneVoice -@code{\oneVoice}, -@funindex \voiceOne -@code{\voiceOne}, -@funindex \voiceTwo -@code{\voiceTwo}, -@funindex \voiceThree -@code{\voiceThree}, -@funindex \voiceFour -@code{\voiceFour}. -@funindex \shiftOn -@code{\shiftOn}, -@funindex \shiftOnn -@code{\shiftOnn}, -@funindex \shiftOnnn -@code{\shiftOnnn}, -@funindex \shiftOff -@code{\shiftOff}: these commands specify in what chords of the current -voice should be shifted. The outer voices (normally: voice one and -two) have @code{\shiftOff}, while the inner voices (three and four) -have @code{\shiftOn}. @code{\shiftOnn} and @code{\shiftOnnn} define -further shift levels. +@commonprop -When LilyPond cannot cope, the @code{force-hshift} -property of the @internalsref{NoteColumn} object and pitched rests can -be used to override typesetting decisions. +When an arpeggio crosses staves, you may attach an arpeggio to the chords +in both staves and set +@internalsref{PianoStaff}.@code{connectArpeggios} -@lilypond[quote,verbatim,ragged-right] -\relative << -{ - - -} \\ { - - \once \override NoteColumn #'force-hshift = #1.7 - -} >> +@lilypond[quote,ragged-right,fragment,relative=1,verbatim] +\new PianoStaff << + \set PianoStaff.connectArpeggios = ##t + \new Staff { \arpeggio } + \new Staff { \clef bass \arpeggio } +>> @end lilypond +@refcommands + +@code{\arpeggio}, +@funindex \arpeggioUp +@code{\arpeggioUp}, +@funindex \arpeggioDown +@code{\arpeggioDown}, +@funindex \arpeggioNeutral +@code{\arpeggioNeutral}, +@funindex \arpeggioBracket +@code{\arpeggioBracket}. + + @seealso -Program reference: the objects responsible for resolving collisions are -@internalsref{NoteCollision} and @internalsref{RestCollision}. +Notation manual: @ref{Ties}, for writing out arpeggios. -Examples: -@inputfileref{input/@/regression,collision@/-dots@/.ly}, -@inputfileref{input/@/regression,collision@/-head-chords@/.ly}, -@inputfileref{input/@/regression,collision@/-heads@/.ly}, -@inputfileref{input/@/regression,collision@/-mesh@/.ly}, and -@inputfileref{input/@/regression,collisions@/.ly}. +Program reference: @internalsref{Arpeggio}. @refbugs -When using @code{merge-differently-headed} with an upstem eighth or a -shorter note, and a downstem half note, the eighth note gets the wrong -offset. +It is not possible to mix connected arpeggios and unconnected +arpeggios in one @internalsref{PianoStaff} at the same point in time. + -There is no support for clusters where the same note occurs with -different accidentals in the same chord. In this case, it is -recommended to use enharmonic transcription, or to use special cluster -notation (see @ref{Clusters}). diff --git a/Documentation/user/global.itely b/Documentation/user/global.itely index 77f91cd7aa..5ebbc13335 100644 --- a/Documentation/user/global.itely +++ b/Documentation/user/global.itely @@ -20,6 +20,7 @@ specific notation. * Multiple movements:: * MIDI output:: * Displaying LilyPond notation:: +* Other:: @end menu @@ -1858,4 +1859,78 @@ 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 + + +@funindex skipTypesetting +@funindex 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 + diff --git a/Documentation/user/instrument-notation.itely b/Documentation/user/instrument-notation.itely index a59988ddd5..aa4085bdb3 100644 --- a/Documentation/user/instrument-notation.itely +++ b/Documentation/user/instrument-notation.itely @@ -1635,7 +1635,7 @@ down = \drummode { bassdrum4 snare8 bd r bd sn4 } @end lilypond The above example shows verbose polyphonic notation. The short -polyphonic notation, described in @ref{Polyphony}, can also be used if +polyphonic notation, described in @ref{Basic polyphony}, can also be used if the @internalsref{DrumVoice}s are instantiated by hand first. For example, @lilypond[quote,ragged-right,fragment,verbatim] @@ -4155,6 +4155,7 @@ to chromatically alter notes at their own initiative. This is called ``Musica Ficta''. In modern transcriptions, these accidentals are usually printed over the note. +@cindex Accidental, musica ficta @cindex Musica ficta Support for such suggested accidentals is included, and can be diff --git a/Documentation/user/tutorial.itely b/Documentation/user/tutorial.itely index 2f912373e4..3a7c593cfe 100644 --- a/Documentation/user/tutorial.itely +++ b/Documentation/user/tutorial.itely @@ -1153,7 +1153,7 @@ Again, these expressions can be nested arbitrarily @end lilypond More features of polyphonic typesetting are described in this manual -in section @ref{Polyphony}. +in section @ref{Basic polyphony}. @node Piano staves -- 2.39.5