From: Graham Percival Date: Wed, 19 Sep 2007 02:47:12 +0000 (-0700) Subject: Finish up split. X-Git-Tag: release/2.11.35-1~46^2~150 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=e7c7bd47c38f78e803c50055c9a581f1d60d8acf;p=lilypond.git Finish up split. --- diff --git a/Documentation/user/advanced-notation.itely b/Documentation/user/advanced-notation.itely deleted file mode 100644 index c22db02de6..0000000000 --- a/Documentation/user/advanced-notation.itely +++ /dev/null @@ -1,117 +0,0 @@ -@c -*- coding: utf-8; mode: texinfo; -*- -@c This file is part of lilypond.tely -@ignore - Translation of GIT committish: FILL-IN-HEAD-COMMITTISH - - When revising a translation, copy the HEAD committish of the - version that you are working on. See TRANSLATION for details. -@end ignore - -@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 - - -@node Advanced notation -@chapter Advanced notation - -This chapter deals with rarely-used and advanced notation. - -@menu -* Preparing parts:: -@end menu - - - -@node Preparing parts -@section Preparing parts - -This section describes various notation that are useful for preparing -individual parts. - -@menu -* Multi measure rests:: -* Metronome marks:: -* Rehearsal marks:: -* Bar numbers:: -* Instrument names:: -* Instrument transpositions:: -* Ottava brackets:: -* Different editions from one source:: -@end menu - - -@anchor{Different editions from one source} -@unnumberedsubsubsec Different editions from one source - -@funindex \tag -@cindex tag - -The @code{\tag} command marks music expressions with a name. These -tagged expressions can be filtered out later. With this mechanism it -is possible to make different versions of the same music source. - -In the following example, we see two versions of a piece of music, one -for the full score, and one with cue notes for the instrumental part - -@example -c1 -<< - \tag #'part << - R1 \\ - @{ - \set fontSize = #-1 - c4_"cue" f2 g4 @} - >> - \tag #'score R1 ->> -c1 -@end example - -The same can be applied to articulations, texts, etc.: they are -made by prepending -@example --\tag #@var{your-tag} -@end example -to an articulation, for example, -@example -c1-\tag #'part ^4 -@end example - -This defines a note with a conditional fingering indication. - -@cindex keepWithTag -@cindex removeWithTag -By applying the @code{\keepWithTag} and @code{\removeWithTag} -commands, tagged expressions can be filtered. For example, -@example -<< - @var{the music} - \keepWithTag #'score @var{the music} - \keepWithTag #'part @var{the music} ->> -@end example -would yield - -@lilypondfile[ragged-right,quote]{tag-filter.ly} - -The arguments of the @code{\tag} command should be a symbol -(such as @code{#'score} or @code{#'part}), followed by a -music expression. It is possible to put multiple tags on -a piece of music with multiple @code{\tag} entries, - -@example - \tag #'original-part \tag #'transposed-part @dots{} -@end example - - -@seealso - -Examples: @lsr{parts,tag@/-filter@/.ly} - - -@refbugs - -Multiple rests are not merged if you create the score with both tagged -sections. - diff --git a/Documentation/user/basic-notation.itely b/Documentation/user/basic-notation.itely deleted file mode 100644 index 74f63969b2..0000000000 --- a/Documentation/user/basic-notation.itely +++ /dev/null @@ -1,276 +0,0 @@ -@c -*- coding: utf-8; mode: texinfo; -*- -@c This file is part of lilypond.tely -@ignore - Translation of GIT committish: FILL-IN-HEAD-COMMITTISH - - When revising a translation, copy the HEAD committish of the - version that you are working on. See TRANSLATION for details. -@end ignore - - -@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 - -@node Basic notation -@chapter Basic notation - -This chapter explains how to use basic notation features. - -@menu -* Staff notation:: -* Connecting notes:: -* Expressive marks old:: -@end menu - - -@node Staff notation -@section Staff notation - -@cindex Staff notation - -This section describes music notation that occurs on staff level, -such as key signatures, clefs and time signatures. - -@menu -* Clef:: -* Key signature:: -* Time signature:: -* Bar lines:: -* Unmetered music:: -* System start delimiters:: -* Staff symbol:: -* Writing music in parallel:: -@end menu - - -@anchor{System start delimiters} -@unnumberedsubsubsec System start delimiters - -@cindex start of system -@cindex Staff, multiple -@cindex bracket, vertical -@cindex brace, vertical -@cindex grand staff -@cindex staff group -@cindex staff, choir - -Many scores consist of more than one staff. These staves can be -joined in four different ways - -@itemize @bullet -@item The group is started with a brace at the left, and bar lines are -connected. This is done with the @internalsref{GrandStaff} context. - -@lilypond[verbatim,ragged-right,quote] -\new GrandStaff -\relative << - \new Staff { c1 c } - \new Staff { c c } ->> -@end lilypond - -@item The group is started with a bracket, and bar lines are connected. -This is done with the -@internalsref{StaffGroup} context - -@lilypond[verbatim,ragged-right,quote] -\new StaffGroup -\relative << - \new Staff { c1 c } - \new Staff { c c } ->> -@end lilypond - -@item The group is started with a bracket, but bar lines are not -connected. This is done with the @internalsref{ChoirStaff} context. - -@lilypond[verbatim,ragged-right,quote] -\new ChoirStaff -\relative << - \new Staff { c1 c } - \new Staff { c c } ->> -@end lilypond - -@item The group is started with a vertical line. Bar lines are not -connected. This is the default for the score. - -@lilypond[verbatim,ragged-right,quote] -\relative << - \new Staff { c1 c } - \new Staff { c c } ->> -@end lilypond -@end itemize - - -@seealso - -The bar lines at the start of each system are -@internalsref{SystemStartBar}, @internalsref{SystemStartBrace}, and -@internalsref{SystemStartBracket}. Only one of these types is created -in every context, and that type is determined by the property -@code{systemStartDelimiter}. - - -@commonprop - -System start delimiters may be deeply nested, - -@lilypond[quote,ragged-right,verbatim] -\new StaffGroup -\relative << - \set StaffGroup.systemStartDelimiterHierarchy - = #'(SystemStartSquare (SystemStartBracket a (SystemStartSquare b)) d) - \new Staff { c1 } - \new Staff { c1 } - \new Staff { c1 } - \new Staff { c1 } - \new Staff { c1 } ->> -@end lilypond - - -@anchor{Staff symbol} -@unnumberedsubsubsec Staff symbol - -@cindex adjusting staff symbol - -Notes, dynamic signs, etc., are grouped -with a set of horizontal lines, called a staff (plural @q{staves}). In -LilyPond, these lines are drawn using a separate layout object called -@code{staff symbol}. - -The staff symbol may be tuned in the number, thickness and distance -of lines, using properties. This is demonstrated in the example files -@lsr{staff,changing-the-number-of-lines-in-a-staff.ly} and -@lsr{staff,changing-the-staff-size.ly}. - -In addition, staves may be started and stopped at will. This is done -with @code{\startStaff} and @code{\stopStaff}. - -@lilypond[verbatim,relative=2,fragment] -b4 b -\override Staff.StaffSymbol #'line-count = 2 -\stopStaff \startStaff -b b -\revert Staff.StaffSymbol #'line-count -\stopStaff \startStaff -b b -@end lilypond - -In combination with Frenched staves, this may be used to typeset ossia -sections. An example is shown here - -@cindex ossia - -@lilypondfile{ossia.ly} - -@cindex staff lines, setting number of -@cindex staff lines, setting thickness of -@cindex thickness of staff lines, setting -@cindex number of staff lines, setting - -@seealso - -Program reference: @internalsref{StaffSymbol}. - -Examples: @lsrdir{staff} - - -@node Connecting notes -@section Connecting notes - -This section deals with notation that affects groups of notes. - -@menu -* Ties:: -* Slurs:: -* Phrasing slurs:: -* Laissez vibrer ties:: -* Automatic beams:: -* Manual beams:: -* Grace notes:: -@end menu - - - -@node Expressive marks old -@section Expressive marks old - -Expressive marks help musicians to bring more to the music than simple -notes and rhythms. - -@menu -* Articulations:: -* Fingering instructions:: -* Dynamics:: -* Breath marks:: -* Trills:: -* Glissando:: -* Arpeggio:: -* Falls and doits:: -@end menu - - -@anchor{Fingering instructions} -@unnumberedsubsubsec Fingering instructions - -@cindex fingering -@cindex finger change - -Fingering instructions can be entered using -@example -@var{note}-@var{digit} -@end example -For finger changes, use markup texts - -@lilypond[quote,verbatim,ragged-right,fragment,relative=1] -c4-1 c-2 c-3 c-4 -c^\markup { \finger "2 - 3" } -@end lilypond - -You can use the thumb-script to indicate that a note should be -played with the thumb (e.g., in cello music) -@lilypond[quote,verbatim,ragged-right,fragment,relative=2] -8 -@end lilypond - -Fingerings for chords can also be added to individual notes -of the chord by adding them after the pitches -@lilypond[quote,verbatim,ragged-right,fragment,relative=2] -< c-1 e-2 g-3 b-5 >4 -@end lilypond - - -@commonprop - -You may exercise greater control over fingering chords by -setting @code{fingeringOrientations} - -@lilypond[quote,verbatim,ragged-right,fragment,relative=1] -\set fingeringOrientations = #'(left down) - 4 -\set fingeringOrientations = #'(up right down) - 4 -@end lilypond - -Using this feature, it is also possible to put fingering instructions -very close to note heads in monophonic music, - -@lilypond[verbatim,ragged-right,quote,fragment] -\set fingeringOrientations = #'(right) -4 -@end lilypond - - -@seealso - -Program reference: @internalsref{Fingering}. - -Examples: @lsr{expressive,fingering-chords.ly} - - - - diff --git a/Documentation/user/instrument-notation.itely b/Documentation/user/instrument-notation.itely index e84dffe7a3..d7c8741ffa 100644 --- a/Documentation/user/instrument-notation.itely +++ b/Documentation/user/instrument-notation.itely @@ -18,1708 +18,1707 @@ This chapter explains how to use notation for specific instruments. @menu -* Piano music:: -* Chord names:: * Vocal music:: -* Rhythmic music:: +* Chord names:: +* Piano music:: +* Percussion:: * Guitar:: -* Bagpipe:: +* Other instrument-specific:: * Ancient notation:: -* Other instrument specific notation:: @end menu -@node Piano music -@section Piano music +@node Vocal music +@section Vocal music -Piano staves are two normal staves coupled with a brace. The staves -are largely independent, but sometimes voices can cross between the -two staves. The same notation is also used for harps and other key -instruments. The @internalsref{PianoStaff} is especially built to -handle this cross-staffing behavior. In this section we discuss the -@internalsref{PianoStaff} and some other pianistic peculiarities. +Since LilyPond input files are text, there are two issues to +consider when working with vocal music: -@menu -* Automatic staff changes:: -* Manual staff switches:: -* Pedals:: -* Staff switch lines:: -* Cross staff stems:: -@end menu +@itemize @bullet +@item +Song texts must be entered as text, not notes. For example, the +input@tie{}@code{d} should be interpreted as a one letter syllable, not the +note@tie{}D. -@refbugs +@item +Song texts must be aligned with the notes of their melody. +@end itemize -Dynamics are not centered, but workarounds do exist. See the -@q{piano centered dynamics} template in @ref{Piano templates}. +There are a few different ways to define lyrics; we shall begin +by examining the simplest method, and gradually increase complexity. -@cindex cross staff stem -@cindex stem, cross staff -@cindex distance between staves in piano music +@menu +* Setting simple songs:: +* Entering lyrics:: +* Aligning lyrics to a melody:: +* Automatic syllable durations:: +* Another way of entering lyrics:: +* Assigning more than one syllable to a single note:: +* More than one note on a single syllable:: +* Extenders and hyphens:: +* Working with lyrics and identifiers:: +* Flexibility in placement:: +* Lyrics to multiple notes of a melisma:: +* Divisi lyrics:: +* Switching the melody associated with a lyrics line:: +* Lyrics independent of notes:: +* Spacing lyrics:: +* More about stanzas:: +* Ambitus:: +* Other vocal issues:: +@end menu -@anchor{Automatic staff changes} -@unnumberedsubsubsec Automatic staff changes -@cindex Automatic staff changes +@commonprop -Voices can be made to switch automatically between the top and the bottom -staff. The syntax for this is +Checking to make sure that text scripts and lyrics are within the margins is +a relatively large computational task. To speed up processing, lilypond does +not perform such calculations by default; to enable it, use -@quotation @example -\autochange @dots{}@var{music}@dots{} +\override Score.PaperColumn #'keep-inside-line = ##t @end example -@end quotation -@noindent -This will create two staves inside the current PianoStaff, called -@code{up} and @code{down}. The lower staff will be in bass clef by -default. +To make lyrics avoid barlines as well, use +@example +\layout @{ + \context @{ + \Lyrics + \consists "Bar_engraver" + \consists "Separating_line_group_engraver" + \override BarLine #'transparent = ##t + @} +@} +@end example -A @code{\relative} section that is outside of @code{\autochange} has -no effect on the pitches of @var{music}, so, if necessary, put -@code{\relative} inside @code{\autochange} like -@quotation +@anchor{Setting simple songs} +@unnumberedsubsubsec Setting simple songs + +@cindex \addlyrics + +The easiest way to add lyrics to a melody is to append + @example -\autochange \relative @dots{} @dots{} +\addlyrics @{ @var{the lyrics} @} @end example -@end quotation +@noindent +to a melody. Here is an example, -The autochanger switches on basis of the pitch (middle C is the turning -point), and it looks ahead skipping over rests to switch in -advance. Here is a practical example - -@lilypond[quote,verbatim,ragged-right] -\new PianoStaff - \autochange \relative c' - { - g4 a b c d r4 a g - } +@lilypond[ragged-right,verbatim,fragment,quote] +\time 3/4 +\relative { c2 e4 g2. } +\addlyrics { play the game } @end lilypond +More stanzas can be added by adding more +@code{\addlyrics} sections -@seealso - -In this manual: @ref{Manual staff switches}. +@lilypond[ragged-right,verbatim,fragment,quote] +\time 3/4 +\relative { c2 e4 g2. } +\addlyrics { play the game } +\addlyrics { speel het spel } +\addlyrics { joue le jeu } +@end lilypond -Program reference: @internalsref{AutoChangeMusic}. +The command @code{\addlyrics} cannot handle polyphony settings. For these +cases you should use @code{\lyricsto} and @code{\lyricmode}, as will be +introduced in @ref{Entering lyrics}. -@refbugs +@anchor{Entering lyrics} +@unnumberedsubsubsec Entering lyrics -The staff switches may not end up in optimal places. For high -quality output, staff switches should be specified manually. +@cindex lyrics +@funindex \lyricmode +@cindex punctuation +@cindex spaces, in lyrics +@cindex quotes, in lyrics +Lyrics are entered in a special input mode, which can be introduced +by the keyword @code{\lyricmode}, or by using @code{\addlyrics} or +@code{\lyricsto}. In this mode you can enter lyrics, +with punctuation and accents, and the input @code{d} is not parsed as +a pitch, but rather as a one letter syllable. Syllables are entered +like notes, but with pitches replaced by text. For example, -@code{\autochange} cannot be inside @code{\times}. +@example +\lyricmode @{ Twin-4 kle4 twin- kle litt- le star2 @} +@end example +There are two main methods to specify the horizontal placement +of the syllables, either by specifying the duration of each syllable +explicitly, like in the example above, or by automatically aligning +the lyrics to a melody or other voice of music, using @code{\addlyrics} +or @code{\lyricsto}. +@c TODO: broken +@c For more details see @ref{The Lyrics context}. -@anchor{Manual staff switches} -@unnumberedsubsubsec Manual staff switches +A word or syllable of lyrics begins with an alphabetic character, and ends +with +any space or digit. The following characters can be any character +that is not a digit or white space. -@cindex manual staff switches -@cindex staff switch, manual +Any character that is not a digit or white space will be regarded as +part of the syllable; one important consequence of this is that a word +can end with @code{@}}, which often leads to the following mistake: -Voices can be switched between staves manually, using the command @example -\change Staff = @var{staffname} @var{music} +\lyricmode @{ lah- lah@} @end example +In this example, the @code{@}} is included in the final syllable, so the +opening brace is not balanced and the input file will probably not +compile. + + +@funindex \property in \lyricmode + @noindent -The string @var{staffname} is the name of the staff. It switches the -current voice from its current staff to the Staff called -@var{staffname}. Typically @var{staffname} is @code{"up"} or -@code{"down"}. The @context{Staff} referred to must already exist, so -usually the setup for a score will start with a setup of the staves, +Similarly, a period which follows an alphabetic sequence is included in +the resulting string. As a consequence, spaces must be inserted around +property commands: do @emph{not} write @example -<< - \new Staff = "up" @{ - \skip 1 * 10 % @emph{keep staff alive} - @} - \new Staff = "down" @{ - \skip 1 * 10 % @emph{idem} - @} ->> +\override Score.LyricText #'font-shape = #'italic @end example - -and the @context{Voice} is inserted afterwards +@noindent +but instead use @example -\context Staff = down - \new Voice @{ @dots{} \change Staff = up @dots{} @} +\override Score . LyricText #'font-shape = #'italic @end example +@funindex _ +@cindex spaces, in lyrics +@cindex quotes, in lyrics +@cindex ties, in lyrics -@anchor{Pedals} -@unnumberedsubsubsec Pedals -@cindex Pedals +In order to assign more than one syllable to a single note, you can +surround them with quotes or use a @code{_} character, to get spaces +between syllables, or use tilde symbol (@code{~}) to get a lyric tie. -Pianos have pedals that alter the way sound is produced. Generally, a -piano has three pedals, sustain, una corda, and sostenuto. +@lilypond[quote,relative=2,ragged-right,fragment,verbatim] +\time 3/4 +\relative { c2 e4 g2 e4 } +\addlyrics { gran- de_a- mi- go } +\addlyrics { pu- "ro y ho-" nes- to } +\addlyrics { pu- ro~y~ho- nes- to } +@end lilypond +The lyric tie is implemented with the Unicode character U+203F, so be +sure to have a font (Like DejaVuLGC) installed that includes this +glyph. -Piano pedal instruction can be expressed by attaching -@code{\sustainDown}, @code{\sustainUp}, @code{\unaCorda}, -@code{\treCorde}, @code{\sostenutoDown} and @code{\sostenutoUp} to a -note or chord + +To enter lyrics with characters from non-English languages, or with +accented and special characters (such as the heart symbol or slanted quotes), +simply insert the characters directly into the input file and save +it with utf-8 encoding. See @ref{Text encoding}, for more info. @lilypond[quote,ragged-right,fragment,verbatim] -c'4\sustainDown c'4\sustainUp +\relative { e4 f e d e f e2 } +\addlyrics { He said: “Let my peo ple go”. } @end lilypond -What is printed can be modified by setting @code{pedal@var{X}Strings}, -where @var{X} is one of the pedal types: @code{Sustain}, -@code{Sostenuto} or @code{UnaCorda}. Refer to -@internalsref{SustainPedal} in the program reference for more -information. +To use normal quotes in lyrics, add a backslash before the +quotes. For example, -Pedals can also be indicated by a sequence of brackets, by setting the -@code{pedalSustainStyle} property to bracket objects +@lilypond[quote,ragged-right,fragment,verbatim] +\relative c' { \time 3/4 e4 e4. e8 d4 e d c2. } +\addlyrics { "\"I" am so lone- "ly\"" said she } +@end lilypond -@lilypond[quote,ragged-right,fragment,verbatim,relative=2] -\set Staff.pedalSustainStyle = #'bracket -c\sustainDown d e -b\sustainUp\sustainDown -b g \sustainUp a \sustainDown \bar "|." -@end lilypond - -A third style of pedal notation is a mixture of text and brackets, -obtained by setting the @code{pedalSustainStyle} property to -@code{mixed} - -@lilypond[quote,ragged-right,fragment,verbatim,relative=2] -\set Staff.pedalSustainStyle = #'mixed -c\sustainDown d e -b\sustainUp\sustainDown -b g \sustainUp a \sustainDown \bar "|." -@end lilypond +The full definition of a word start in Lyrics mode is somewhat more +complex. -The default @q{*Ped.} style for sustain and damper pedals corresponds to -style @code{#'text}. The sostenuto pedal uses @code{mixed} style by -default. +A word in Lyrics mode begins with: an alphabetic character, @code{_}, +@code{?}, @code{!}, @code{:}, @code{'}, the control characters @code{^A} +through @code{^F}, @code{^Q} through @code{^W}, @code{^Y}, @code{^^}, +any 8-bit character with ASCII code over 127, or a two-character +combination of a backslash followed by one of @code{`}, @code{'}, +@code{"}, or @code{^}. -@lilypond[quote,ragged-right,fragment,verbatim,relative=2] -c\sostenutoDown d e c, f g a\sostenutoUp -@end lilypond +To define identifiers containing lyrics, the function @code{lyricmode} +must be used. -For fine-tuning the appearance of a pedal bracket, the properties -@code{edge-width}, @code{edge-height}, and @code{shorten-pair} of -@code{PianoPedalBracket} objects (see -@internalsref{PianoPedalBracket} in the Program reference) can be -modified. For example, the bracket may be extended to the right edge -of the note head +@example +verseOne = \lyricmode @{ Joy to the world the Lord is come @} +\score @{ + << + \new Voice = "one" \relative c'' @{ + \autoBeamOff + \time 2/4 + c4 b8. a16 g4. f8 e4 d c2 + @} + \addlyrics @{ \verseOne @} + >> +@} +@end example -@lilypond[quote,ragged-right,fragment,verbatim,relative=2] -\override Staff.PianoPedalBracket #'shorten-pair = #'(0 . -1.0) -c\sostenutoDown d e c, f g a\sostenutoUp -@end lilypond @seealso -In this manual: @ref{Laissez vibrer ties}. - -@anchor{Staff switch lines} -@unnumberedsubsubsec Staff switch lines - - -@cindex follow voice -@cindex staff switching -@cindex cross staff - -@funindex followVoice - -Whenever a voice switches to another staff, a line connecting the notes -can be printed automatically. This is switched on by setting -@code{followVoice} to true - -@lilypond[quote,ragged-right,fragment,relative=1,verbatim] -\new PianoStaff << - \new Staff="one" { - \set followVoice = ##t - c1 - \change Staff=two - b2 a - } - \new Staff="two" { \clef bass \skip 1*2 } ->> -@end lilypond - -@seealso +Program reference: @internalsref{LyricText}, @internalsref{LyricSpace}. -Program reference: @internalsref{VoiceFollower}. -@refcommands -@funindex \showStaffSwitch -@code{\showStaffSwitch}, -@funindex \hideStaffSwitch -@code{\hideStaffSwitch}. +@anchor{Aligning lyrics to a melody} +@unnumberedsubsubsec Aligning lyrics to a melody +@funindex \lyricmode +@funindex \addlyrics +@funindex \lyricsto -@anchor{Cross staff stems} -@unnumberedsubsubsec Cross staff stems -Chords that cross staves may be produced by increasing the length -of the stem in the lower staff, so it reaches the stem in the upper -staff, or vice versa. +Lyrics are printed by interpreting them in the context called +@internalsref{Lyrics}. -@lilypond[ragged-right,verbatim,quote] -stemExtend = { - \once \override Stem #'length = #10 - \once \override Stem #'cross-staff = ##t -} -noFlag = \once \override Stem #'flag-style = #'no-flag -\new PianoStaff << - \new Staff { - \stemDown \stemExtend - f'4 - \stemExtend \noFlag - f'8 - } - \new Staff { - \clef bass - a4 a8 - } ->> -@end lilypond +@example +\new Lyrics \lyricmode @dots{} +@end example +There are two main methods to specify the horizontal placement +of the syllables: +@itemize @bullet +@item +by automatically aligning +the lyrics to a melody or other voice of music, using @code{\addlyrics} +or @code{\lyricsto}. -@node Chord names -@section Chord names +@item +or by specifying the duration of each syllable +explicitly, using @code{\lyricmode} +@end itemize @menu -* Introducing chord names:: -* Chords mode:: -* Printing chord names:: +* Automatic syllable durations:: +* Another way of entering lyrics:: +* Assigning more than one syllable to a single note:: +* More than one note on a single syllable:: +* Extenders and hyphens:: @end menu +@anchor{Automatic syllable durations} +@unnumberedsubsubsec Automatic syllable durations -@c awkward name; awkward section name. -@c still, the Basic "chords" seems like a good name... :( -@anchor{Introducing chord names} -@unnumberedsubsubsec Introducing chord names -@cindex chord names +@cindex automatic syllable durations +@cindex lyrics and melodies -LilyPond has support for printing chord names. Chords may be entered -in musical chord notation, i.e., @code{< .. >}, but they can also be -entered by name. Internally, the chords are represented as a set of -pitches, so they can be transposed +The lyrics can be aligned under a given melody +automatically. This is achieved by combining the +melody and the lyrics with the @code{\lyricsto} expression +@example +\new Lyrics \lyricsto @var{name} @dots{} +@end example -@lilypond[quote,ragged-right,verbatim,ragged-right] -twoWays = \transpose c c' { - \chordmode { - c1 f:sus4 bes/f - } - - - -} +This aligns the lyrics to the +notes of the @internalsref{Voice} context called @var{name}, which must +already exist. Therefore normally the @code{Voice} is specified first, and +then the lyrics are specified with @code{\lyricsto}. The command +@code{\lyricsto} switches to @code{\lyricmode} mode automatically, so the +@code{\lyricmode} keyword may be omitted. -<< \new ChordNames \twoWays - \new Voice \twoWays >> +The following example uses different commands for entering lyrics. + +@lilypond[quote,fragment,ragged-right,verbatim] +<< + \new Voice = "one" \relative c'' { + \autoBeamOff + \time 2/4 + c4 b8. a16 g4. f8 e4 d c2 + } + \new Lyrics \lyricmode { Joy4 to8. the16 world!4. the8 Lord4 is come.2 } + \new Lyrics \lyricmode { Joy to the earth! the Sa -- viour reigns. } + \new Lyrics \lyricsto "one" { No more let sins and sor -- rows grow. } +>> @end lilypond -This example also shows that the chord printing routines do not try to -be intelligent. The last chord (@code{f bes d}) is not interpreted as -an inversion. +The second stanza is not properly aligned because the durations +were not specified. A solution for that would be to use @code{\lyricsto}. -Note that the duration of chords must be specified outside the -@code{<>}. +The @code{\addlyrics} command is actually just a convenient way +to write a more complicated LilyPond structure that sets up the +lyrics. @example -2 +@{ MUSIC @} +\addlyrics @{ LYRICS @} @end example +@noindent +is the same as -@anchor{Chords mode} -@unnumberedsubsubsec Chords mode -@cindex Chords mode +@example +\new Voice = "blah" @{ music @} +\new Lyrics \lyricsto "blah" @{ LYRICS @} +@end example -In chord mode sets of pitches (chords) are entered with normal note -names. A chord is entered by the root, which is entered like a -normal pitch +@anchor{Another way of entering lyrics} +@unnumberedsubsubsec Another way of entering lyrics -@lilypond[quote,ragged-right,fragment,verbatim] -\chordmode { es4. d8 c2 } +Lyrics can also be entered without @code{\addlyrics} or +@code{\lyricsto}. In this case, +syllables are entered like notes -- but with pitches replaced by text -- and the +duration of each syllable must be entered explicitly. For example: + +@example +play2 the4 game2. +sink2 or4 swim2. +@end example + +The alignment to a melody can be specified with the +@code{associatedVoice} property, + +@example +\set associatedVoice = #"lala" +@end example + +@noindent +The value of the property (here: @code{"lala"}) should be the name of +a @internalsref{Voice} context. Without this setting, extender lines +will not be formatted properly. + +Here is an example demonstrating manual lyric durations, + +@lilypond[relative=1,ragged-right,verbatim,fragment,quote] +<< \new Voice = "melody" { + \time 3/4 + c2 e4 g2. + } + \new Lyrics \lyricmode { + \set associatedVoice = #"melody" + play2 the4 game2. + } >> @end lilypond -@noindent -The mode is introduced by the keyword @code{\chordmode}. - -@cindex chord entry -@cindex chord mode - -Other chords may be entered by suffixing a colon and introducing a -modifier (which may include a number if desired) +@seealso + +Program reference: @internalsref{Lyrics}. -@lilypond[quote,fragment,verbatim] -\chordmode { e1:m e1:7 e1:m7 } -@end lilypond -The first number following the root is taken to be the @q{type} of the -chord, thirds are added to the root until it reaches the specified -number. The exception is @code{c:13}, for which the 11 is omitted. +@anchor{Assigning more than one syllable to a single note} +@unnumberedsubsubsec Assigning more than one syllable to a single note -@lilypond[quote,fragment,verbatim] -\chordmode { c:3 c:5 c:6 c:7 c:8 c:9 c:10 c:11 c:13 } -@end lilypond -@cindex root of chord -@cindex additions, in chords -@cindex removals, in chords +@funindex _ +@cindex ties, in lyrics -More complex chords may also be constructed adding separate steps -to a chord. Additions are added after the number following -the colon and are separated by dots +In order to assign more than one syllable to a single note, you can +surround them with quotes or use a @code{_} character, to get spaces +between syllables, or use tilde symbol (@code{~}) to get a lyric +tie@footnote{The lyric ties is implemented with the Unicode character +U+203F, so be +sure to have a font (Like DejaVuLGC) installed that includes this +glyph.}. -@lilypond[quote,verbatim,fragment] -\chordmode { c:5.6 c:3.7.8 c:3.6.13 } +@lilypond[quote,relative=2,ragged-right,fragment,verbatim] +\time 3/4 +\relative { c2 e4 g2 e4 } +\addlyrics { gran- de_a- mi- go } +\addlyrics { pu- "ro y ho-" nes- to } +\addlyrics { pu- ro~y~ho- nes- to } @end lilypond -Chord steps can be altered by suffixing a @code{-} or @code{+} sign -to the number - -@lilypond[quote,verbatim,fragment] -\chordmode { c:7+ c:5+.3- c:3-.5-.7- } -@end lilypond +@seealso -Removals are specified similarly and are introduced by a caret. They -must come after the additions +Program reference: @internalsref{LyricCombineMusic}. -@lilypond[quote,verbatim,fragment] -\chordmode { c^3 c:7^5 c:9^3.5 } -@end lilypond +@c Here come the section which used to be "Melismata" +@c the new title might be more self-explanatory -Modifiers can be used to change pitches. The following modifiers are -supported -@table @code -@item m -The minor chord. This modifier lowers the 3rd and (if present) the 7th step. +@anchor{More than one note on a single syllable} +@unnumberedsubsubsec More than one note on a single syllable -@item dim -The diminished chord. This modifier lowers the 3rd, 5th and (if present) -the 7th step. +@cindex melisma +@cindex melismata +@cindex phrasing, in lyrics -@item aug -The augmented chord. This modifier raises the 5th step. +Sometimes, particularly in Medieval music, several notes are to be sung on one +single syllable; such vocalises are called melismas, or melismata. -@item maj -The major 7th chord. This modifier raises the 7th step if present. +@c this method seems to be the simplest; therefore +@c it might be better to present it first - vv -@item sus -The suspended 4th or 2nd. This modifier removes the 3rd -step. Append either @code{2} or @code{4} to add the 2nd or 4th step to -the chord. -@end table +You can define melismata entirely in the lyrics, by entering @code{_} +for every note +that is part of the melisma. -Modifiers can be mixed with additions -@lilypond[quote,verbatim,fragment] - \chordmode { c:sus4 c:7sus4 c:dim7 c:m6 } +@lilypond[relative=1,verbatim,fragment,quote] +{ \set melismaBusyProperties = #'() + c d( e) f f( e) e e } +\addlyrics + { Ky -- _ _ ri __ _ _ _ e } @end lilypond -@cindex modifiers, in chords. -@funindex aug -@funindex dim -@funindex maj -@funindex sus -@funindex m - -Since an unaltered 11 does not sound good when combined with an -unaltered 13, the 11 is removed in this case (unless it is added -explicitly) -@lilypond[quote,ragged-right,fragment,verbatim] -\chordmode { c:13 c:13.11 c:m13 } -@end lilypond +In this case, you can also have ties and slurs in the melody if you +set @code{melismaBusyProperties}, as is done in the example above. -@funindex / +However, the @code{\lyricsto} command can also +detect melismata automatically: it only puts one +syllable under a tied or slurred group of notes. If you want to force +an unslurred group of notes to be a melisma, insert @code{\melisma} +after the first note of the group, and @code{\melismaEnd} after the +last one, e.g., -An inversion (putting one pitch of the chord on the bottom), as well -as bass notes, can be specified by appending -@code{/}@var{pitch} to the chord -@lilypond[quote,ragged-right,fragment,verbatim] -\chordmode { c1 c/g c/f } +@lilypond[quote,relative=2,ragged-right,fragment,verbatim] +<< + \new Voice = "lala" { + \time 3/4 + f4 g8 + \melisma + f e f + \melismaEnd + e2 + } + \new Lyrics \lyricsto "lala" { + la di __ daah + } +>> @end lilypond -@funindex /+ -A bass note can be added instead of transposed out of the chord, -by using @code{/+}@var{pitch}. +In addition, notes are considered a melisma if they are manually +beamed, and automatic beaming (see @ref{Setting automatic beam +behavior}) is switched off. -@lilypond[quote,ragged-right,fragment,verbatim] -\chordmode { c1 c/+g c/+f } -@end lilypond +@c TODO: there might be some more relevant place for +@c the following link (?) -Chords is a mode similar to @code{\lyricmode}, etc. Most -of the commands continue to work, for example, @code{r} and -@code{\skip} can be used to insert rests and spaces, and property -commands may be used to change various settings. +@cindex SATB +@cindex choral score +A complete example of a SATB score setup is in section +@ref{Vocal ensembles}. -@refbugs +@refcommands -Each step can only be present in a chord once. The following -simply produces the augmented chord, since @code{5+} is interpreted -last -@cindex clusters -@lilypond[quote,ragged-right,verbatim,fragment] -\chordmode { c:5.5-.5+ } -@end lilypond +@code{\melisma}, @code{\melismaEnd} +@funindex \melismaEnd +@funindex \melisma +@seealso -@anchor{Printing chord names} -@unnumberedsubsubsec Printing chord names +Program reference: @internalsref{Melisma_translator}. -@cindex printing chord names -@cindex chord names -@cindex chords +@lsr{vocal,lyric@/-combine.ly}. -For displaying printed chord names, use the @internalsref{ChordNames} context. -The chords may be entered either using the notation -described above, or directly using @code{<} and @code{>} +@refbugs -@lilypond[quote,verbatim,ragged-right] -harmonies = { - \chordmode {a1 b c} -} -<< - \new ChordNames \harmonies - \new Staff \harmonies ->> -@end lilypond +Melismata are not detected automatically, and extender lines must be +inserted by hand. -You can make the chord changes stand out by setting -@internalsref{ChordNames}.@code{chordChanges} to true. This will only -display chord names when there is a change in the chords scheme and at -the start of a new line +@anchor{Extenders and hyphens} +@unnumberedsubsubsec Extenders and hyphens -@lilypond[quote,verbatim,ragged-right] -harmonies = \chordmode { - c1:m c:m \break c:m c:m d -} -<< - \new ChordNames { - \set chordChanges = ##t - \harmonies } - \new Staff \transpose c c' \harmonies ->> -@end lilypond +@cindex melisma +@cindex extender -The previous examples all show chords over a staff. This is not -necessary. Chords may also be printed separately. It may be necessary -to add @internalsref{Volta_engraver} and @internalsref{Bar_engraver} -for showing repeats. +Melismata are indicated with a horizontal line centered between a syllable +and the next one. Such a line is called an extender line, and it is entered +as @samp{ __ } (note the spaces before and after the two underscore +characters). -@lilypond[ragged-right,verbatim] -\new ChordNames \with { - \override BarLine #'bar-size = #4 - \consists Bar_engraver - \consists "Volta_engraver" -} -\chordmode { \repeat volta 2 { - f1:maj7 f:7 bes:7 - c:maj7 -} \alternative { - es e -} -} -@end lilypond +@cindex hyphens +Centered hyphens are entered as @samp{ -- } between syllables of a same word +(note the spaces before and after the two hyphen characters). The hyphen +will be centered between the syllables, and its length will be adjusted +depending on the space between the syllables. -The default chord name layout is a system for Jazz music, proposed by -Klaus Ignatzek (see @ref{Literature list}). It can be tuned through the -following properties +In tighly engraved music, hyphens can be removed. Whether this +happens can be controlled with the @code{minimum-distance} (minimum +distance between two syllables) and the @code{minimum-length} +(threshold below which hyphens are removed). -@table @code -@funindex chordNameExceptions -@item chordNameExceptions -This is a list that contains the chords that have special formatting. +@seealso -The exceptions list should be encoded as -@example -@{ 1 \markup @{ \super "7" "wahh" @} @} -@end example +Program reference: @internalsref{LyricExtender}, +@internalsref{LyricHyphen} -To get this information into @code{chordNameExceptions} takes a little -manoeuvring. The following code transforms @code{chExceptionMusic} -(which is a sequential music) into a list of exceptions. + +@anchor{Working with lyrics and identifiers} +@unnumberedsubsubsec Working with lyrics and identifiers +@cindex lyrics, identifiers + +To define identifiers containing lyrics, the function @code{\lyricmode} +must be used. You do not have to enter durations though, if you add +@code{\addlyrics} or @code{\lyricsto} +when invoking your identifier. + @example -(sequential-music-to-chord-exceptions chExceptionMusic #t) +verseOne = \lyricmode @{ Joy to the world the Lord is come @} +\score @{ + << + \new Voice = "one" \relative c'' @{ + \autoBeamOff + \time 2/4 + c4 b8. a16 g4. f8 e4 d c2 + @} + \addlyrics @{ \verseOne @} + >> +@} @end example -Then, + +For different or more complex orderings, the best way is to setup the +hierarchy of staves and lyrics first, e.g., @example -(append - (sequential-music-to-chord-exceptions chExceptionMusic #t) - ignatzekExceptions) +\new ChoirStaff << + \new Voice = "soprano" @{ @emph{music} @} + \new Lyrics = "sopranoLyrics" @{ s1 @} + \new Lyrics = "tenorLyrics" @{ s1 @} + \new Voice = "tenor" @{ @emph{music} @} +>> @end example -adds the new exceptions to the default ones, which are defined in -@file{ly/@/chord@/-modifier@/-init@/.ly}. - -For an example of tuning this property, see also -@lsr{chords,chord@/-name@/-exceptions@/.ly} -@cindex exceptions, chord names. - - -@funindex majorSevenSymbol -@item majorSevenSymbol -This property contains the markup object used for the 7th step, when -it is major. Predefined options are @code{whiteTriangleMarkup} and -@code{blackTriangleMarkup}. See -@lsr{chords,chord@/-name@/-major7@/.ly} for an example. - -@funindex chordNameSeparator -@item chordNameSeparator -Different parts of a chord name are normally separated by a -slash. By setting @code{chordNameSeparator}, you can specify other -separators, e.g., -@lilypond[quote,ragged-right,fragment,verbatim] -\new ChordNames \chordmode { - c:7sus4 - \set chordNameSeparator - = \markup { \typewriter "|" } - c:7sus4 -} -@end lilypond - -@funindex chordRootNamer -@item chordRootNamer -The root of a chord is usually printed as a letter with an optional -alteration. The transformation from pitch to letter is done by this -function. Special note names (for example, the German @q{H} for a -B-chord) can be produced by storing a new function in this property. - -@funindex chordNoteNamer -@item chordNoteNamer -The default is to print single pitch, e.g., the bass note, using the -@code{chordRootNamer}. The @code{chordNoteNamer} property can be set -to a specialized function to change this behavior. For example, the -base can be printed in lower case. - -@funindex chordPrefixSpacer -@item chordPrefixSpacer -The @q{m} for minor chords is usually printed right after the root of -the chord. By setting @code{chordPrefixSpacer}, you can fix a spacer -between the root and @q{m}. The spacer is not used when the root -is altered. - -@end table - -The predefined variables @code{\germanChords}, -@code{\semiGermanChords}, @code{\italianChords} and @code{\frenchChords} -set these variables. The effect is -demonstrated here, + +and then combine the appropriate melodies and lyric lines + +@example +\context Lyrics = sopranoLyrics \lyricsto "soprano" +@emph{the lyrics} +@end example + +@noindent -@lilypondfile[ragged-right]{chord-names-languages.ly} +The final input would resemble + +@example +<<\new ChoirStaff << @emph{setup the music} >> + \lyricsto "soprano" @emph{etc} + \lyricsto "alto" @emph{etc} +@emph{etc} +>> +@end example + +@seealso + +@c TODO: document \new Staff << Voice \lyricsto >> bug +Program reference: @internalsref{LyricCombineMusic}, +@internalsref{Lyrics}. -There are also two other chord name schemes implemented: an alternate -Jazz chord notation, and a systematic scheme called Banter chords. The -alternate Jazz notation is also shown on the chart in @ref{Chord name -chart}. Turning on these styles is demonstrated in -@lsr{chords,chord-names-jazz.ly}. -@cindex Banter -@cindex jazz chords -@cindex chords, jazz +@anchor{Flexibility in placement} +@unnumberedsubsubsec Flexibility in placement +Often, different stanzas of one song are put to one melody in slightly +differing ways. Such variations can still be captured with +@code{\lyricsto}. -@refcommands +@menu +* Lyrics to multiple notes of a melisma:: +* Divisi lyrics:: +* Switching the melody associated with a lyrics line:: +* Lyrics independent of notes:: +@end menu -@funindex \germanChords -@code{\germanChords}, -@funindex \semiGermanChords -@code{\semiGermanChords}. -@funindex \italianChords -@code{\italianChords}. -@funindex \frenchChords -@code{\frenchChords}. +@anchor{Lyrics to multiple notes of a melisma} +@unnumberedsubsubsec Lyrics to multiple notes of a melisma +One possibility is that the text has a melisma in one stanza, but +multiple syllables in another one. One solution is to make the faster +voice ignore the melisma. This is done by setting +@code{ignoreMelismata} in the Lyrics context. +There is one tricky aspect: the setting for @code{ignoreMelismata} +must be set one syllable @emph{before} the non-melismatic syllable +in the text, as shown here, -@seealso +@c FIXME: breaks compile +@lilypond[verbatim,ragged-right,quote] +%{ +<< + \relative \new Voice = "lahlah" { + \set Staff.autoBeaming = ##f + c4 + \slurDotted + f8.[( g16]) + a4 + } + \new Lyrics \lyricsto "lahlah" { + more slow -- ly + } + \new Lyrics \lyricsto "lahlah" { + \set ignoreMelismata = ##t % applies to "fas" + go fas -- ter + \unset ignoreMelismata + still + } +>> +%} +@end lilypond -Examples: -@lsrdir{chords} -Init files: @file{scm/@/chords@/-ignatzek@/.scm}, and -@file{scm/@/chord@/-entry@/.scm}. +The @code{ignoreMelismata} applies to the syllable @q{fas}, so it +should be entered before @q{go}. +The reverse is also possible: making a lyric line slower than the +standard. This can be achieved by insert @code{\skip}s into the +lyrics. For every @code{\skip}, the text will be delayed another note. +For example, -@refbugs +@lilypond[verbatim,ragged-right,quote] +\relative { c c g' } +\addlyrics { + twin -- \skip 4 + kle +} +@end lilypond -Chord names are determined solely from the list of pitches. Chord -inversions are not identified, and neither are added bass notes. This -may result in strange chord names when chords are entered with the -@code{< .. >} syntax. +@anchor{Divisi lyrics} +@unnumberedsubsubsec Divisi lyrics +You can display alternate (or divisi) lyrics by naming voice +contexts and attaching lyrics to those specific contexts. -@node Vocal music -@section Vocal music +@lilypond[verbatim,ragged-right,quote] +\score{ << + \new Voice = "melody" { + \relative c' { + c4 + << + { \voiceOne c8 e } + \new Voice = "splitpart" { \voiceTwo c4 } + >> + \oneVoice c4 c | c + } + } + \new Lyrics \lyricsto "melody" { we shall not o- ver- come } + \new Lyrics \lyricsto "splitpart" { will } +>> } +@end lilypond -Since LilyPond input files are text, there are two issues to -consider when working with vocal music: -@itemize @bullet -@item -Song texts must be entered as text, not notes. For example, the -input@tie{}@code{d} should be interpreted as a one letter syllable, not the -note@tie{}D. +You can use this trick to display different lyrics for a repeated +section. -@item -Song texts must be aligned with the notes of their melody. -@end itemize +@lilypond[verbatim,ragged-right,quote] +\score{ << + \new Voice = "melody" \relative c' { + c2 e | g e | c1 | + \new Voice = "verse" \repeat volta 2 {c4 d e f | g1 | } + a2 b | c1} + \new Lyrics = "mainlyrics" \lyricsto melody \lyricmode { + do mi sol mi do + la si do } + \context Lyrics = "mainlyrics" \lyricsto verse \lyricmode { + do re mi fa sol } + \new Lyrics = "repeatlyrics" \lyricsto verse \lyricmode { + dodo rere mimi fafa solsol } +>> +} +@end lilypond -There are a few different ways to define lyrics; we shall begin -by examining the simplest method, and gradually increase complexity. -@menu -* Setting simple songs:: -* Entering lyrics:: -* Aligning lyrics to a melody:: -* Automatic syllable durations:: -* Another way of entering lyrics:: -* Assigning more than one syllable to a single note:: -* More than one note on a single syllable:: -* Extenders and hyphens:: -* Working with lyrics and identifiers:: -* Flexibility in placement:: -* Lyrics to multiple notes of a melisma:: -* Divisi lyrics:: -* Switching the melody associated with a lyrics line:: -* Lyrics independent of notes:: -* Spacing lyrics:: -* More about stanzas:: -* Ambitus:: -* Other vocal issues:: -@end menu +@anchor{Switching the melody associated with a lyrics line} +@unnumberedsubsubsec Switching the melody associated with a lyrics line -@commonprop +More complex variations in text underlay are possible. It is possible +to switch the melody for a line of lyrics during the text. This is +done by setting the @code{associatedVoice} property. In the example -Checking to make sure that text scripts and lyrics are within the margins is -a relatively large computational task. To speed up processing, lilypond does -not perform such calculations by default; to enable it, use +@lilypond[ragged-right,quote] +<< + \relative \new Voice = "lahlah" { + \set Staff.autoBeaming = ##f + c4 + << + \new Voice = "alternative" { + \voiceOne + \times 2/3 { + % show associations clearly. + \override NoteColumn #'force-hshift = #-3 + f8 f g + } + } + { + \voiceTwo + f8.[ g16] + \oneVoice + } >> + a8( b) c + } + \new Lyrics \lyricsto "lahlah" { + Ju -- ras -- sic Park + } + \new Lyrics \lyricsto "lahlah" { + % Tricky: need to set associatedVoice + % one syllable too soon! + \set associatedVoice = alternative % applies to "ran" + Ty -- + ran -- + no -- + \set associatedVoice = lahlah % applies to "rus" + sau -- rus Rex + } >> +@end lilypond -@example -\override Score.PaperColumn #'keep-inside-line = ##t -@end example +@noindent +the text for the first stanza is set to a melody called @q{lahlah}, -To make lyrics avoid barlines as well, use @example -\layout @{ - \context @{ - \Lyrics - \consists "Bar_engraver" - \consists "Separating_line_group_engraver" - \override BarLine #'transparent = ##t - @} +\new Lyrics \lyricsto "lahlah" @{ + Ju -- ras -- sic Park @} @end example -@anchor{Setting simple songs} -@unnumberedsubsubsec Setting simple songs +The second stanza initially is set to the @code{lahlah} context, but +for the syllable @q{ran}, it switches to a different melody. +This is achieved with +@example +\set associatedVoice = alternative +@end example -@cindex \addlyrics +@noindent +Here, @code{alternative} is the name of the @code{Voice} context +containing the triplet. -The easiest way to add lyrics to a melody is to append +Again, the command must be one syllable too early, before @q{Ty} in +this case. @example -\addlyrics @{ @var{the lyrics} @} +\new Lyrics \lyricsto "lahlah" @{ + \set associatedVoice = alternative % applies to "ran" + Ty -- + ran -- + no -- + \set associatedVoice = lahlah % applies to "rus" + sau -- rus Rex +@} @end example @noindent -to a melody. Here is an example, +The underlay is switched back to the starting situation by assigning +@code{lahlah} to @code{associatedVoice}. -@lilypond[ragged-right,verbatim,fragment,quote] -\time 3/4 -\relative { c2 e4 g2. } -\addlyrics { play the game } -@end lilypond -More stanzas can be added by adding more -@code{\addlyrics} sections +@anchor{Lyrics independent of notes} +@unnumberedsubsubsec Lyrics independent of notes -@lilypond[ragged-right,verbatim,fragment,quote] -\time 3/4 -\relative { c2 e4 g2. } -\addlyrics { play the game } -\addlyrics { speel het spel } -\addlyrics { joue le jeu } -@end lilypond +In some complex vocal music, it may be desirable to place +lyrics completely independently of notes. Music defined +inside @code{lyricrhythm} disappears into the +@code{Devnull} context, but the rhythms can still be used +to place the lyrics. -The command @code{\addlyrics} cannot handle polyphony settings. For these -cases you should use @code{\lyricsto} and @code{\lyricmode}, as will be -introduced in @ref{Entering lyrics}. +@lilypond[quote,verbatim,ragged-right] +voice = { + c''2 + \tag #'music { c''2 } + \tag #'lyricrhythm { c''4. c''8 } + d''1 +} +lyr = \lyricmode { I like my cat! } +<< + \new Staff \keepWithTag #'music \voice + \new Devnull="nowhere" \keepWithTag #'lyricrhythm \voice + \new Lyrics \lyricsto "nowhere" \lyr + \new Staff { c'8 c' c' c' c' c' c' c' + c' c' c' c' c' c' c' c' } +>> +@end lilypond -@anchor{Entering lyrics} -@unnumberedsubsubsec Entering lyrics -@cindex lyrics -@funindex \lyricmode -@cindex punctuation -@cindex spaces, in lyrics -@cindex quotes, in lyrics +@anchor{Spacing lyrics} +@unnumberedsubsubsec Spacing lyrics -Lyrics are entered in a special input mode, which can be introduced -by the keyword @code{\lyricmode}, or by using @code{\addlyrics} or -@code{\lyricsto}. In this mode you can enter lyrics, -with punctuation and accents, and the input @code{d} is not parsed as -a pitch, but rather as a one letter syllable. Syllables are entered -like notes, but with pitches replaced by text. For example, +@cindex Spacing lyrics +@cindex Lyrics, increasing space between -@example -\lyricmode @{ Twin-4 kle4 twin- kle litt- le star2 @} -@end example +To increase the spacing between lyrics, set the minimum-distance property of +LyricSpace. -There are two main methods to specify the horizontal placement -of the syllables, either by specifying the duration of each syllable -explicitly, like in the example above, or by automatically aligning -the lyrics to a melody or other voice of music, using @code{\addlyrics} -or @code{\lyricsto}. -@c TODO: broken -@c For more details see @ref{The Lyrics context}. +@lilypond[relative,verbatim,fragment,quote,ragged-right] +{ + c c c c + \override Lyrics.LyricSpace #'minimum-distance = #1.0 + c c c c +} +\addlyrics { + longtext longtext longtext longtext + longtext longtext longtext longtext +} +@end lilypond -A word or syllable of lyrics begins with an alphabetic character, and ends -with -any space or digit. The following characters can be any character -that is not a digit or white space. +To make this change for all lyrics in the score, set the property in the +layout. -Any character that is not a digit or white space will be regarded as -part of the syllable; one important consequence of this is that a word -can end with @code{@}}, which often leads to the following mistake: +@lilypond[relative,verbatim,quote,ragged-right] +\score { + \relative c' { + c c c c + c c c c + } + \addlyrics { + longtext longtext longtext longtext + longtext longtext longtext longtext + } + \layout { + \context { + \Lyrics + \override LyricSpace #'minimum-distance = #1.0 + } + } +} +@end lilypond -@example -\lyricmode @{ lah- lah@} -@end example -In this example, the @code{@}} is included in the final syllable, so the -opening brace is not balanced and the input file will probably not -compile. +@anchor{More about stanzas} +@unnumberedsubsubsec More about stanzas + +@cindex stanza number +@unnumberedsubsubsec Adding stanza numbers +Stanza numbers can be added by setting @code{stanza}, e.g., -@funindex \property in \lyricmode +@lilypond[quote,ragged-right,verbatim,relative=2,fragment] +\new Voice { + \time 3/4 g2 e4 a2 f4 g2. +} \addlyrics { + \set stanza = "1. " + Hi, my name is Bert. +} \addlyrics { + \set stanza = "2. " + Oh, ché -- ri, je t'aime +} +@end lilypond @noindent -Similarly, a period which follows an alphabetic sequence is included in -the resulting string. As a consequence, spaces must be inserted around -property commands: do @emph{not} write +These numbers are put just before the start of the first syllable. -@example -\override Score.LyricText #'font-shape = #'italic -@end example -@noindent -but instead use +@unnumberedsubsubsec Adding dynamics marks -@example -\override Score . LyricText #'font-shape = #'italic -@end example +Stanzas differing in loudness may be indicated by putting a +dynamics mark before each stanza. In Lilypond, everthing coming in +front of a stanza goes into the @code{StanzaNumber} object; dynamics marks +are no different. For technical reasons, you have to set the stanza +outside @code{\lyricmode}: -@funindex _ -@cindex spaces, in lyrics -@cindex quotes, in lyrics -@cindex ties, in lyrics +@lilypond[quote,ragged-right,verbatim] +text = { + \set stanza = \markup { \dynamic "ff" "1. " } + \lyricmode { + Big bang + } +} -In order to assign more than one syllable to a single note, you can -surround them with quotes or use a @code{_} character, to get spaces -between syllables, or use tilde symbol (@code{~}) to get a lyric tie. +<< + \new Voice = "tune" { + \time 3/4 + g'4 c'2 + } +\new Lyrics \lyricsto "tune" \text +>> +@end lilypond -@lilypond[quote,relative=2,ragged-right,fragment,verbatim] -\time 3/4 -\relative { c2 e4 g2 e4 } -\addlyrics { gran- de_a- mi- go } -\addlyrics { pu- "ro y ho-" nes- to } -\addlyrics { pu- ro~y~ho- nes- to } +@cindex singer name +@cindex name of singer +@unnumberedsubsubsec Adding singer names + +Names of singers can also be added. They are printed at the start of +the line, just like instrument names. They are created by setting +@code{vocalName}. A short version may be entered as @code{shortVocalName}. + +@lilypond[fragment,ragged-right,quote,verbatim,relative=2] +\new Voice { + \time 3/4 g2 e4 a2 f4 g2. +} \addlyrics { + \set vocalName = "Bert " + Hi, my name is Bert. +} \addlyrics { + \set vocalName = "Ernie " + Oh, che -- ri, je t'aime +} @end lilypond -The lyric tie is implemented with the Unicode character U+203F, so be -sure to have a font (Like DejaVuLGC) installed that includes this -glyph. +@unnumberedsubsubsec Printing stanzas at the end -To enter lyrics with characters from non-English languages, or with -accented and special characters (such as the heart symbol or slanted quotes), -simply insert the characters directly into the input file and save -it with utf-8 encoding. See @ref{Text encoding}, for more info. +Sometimes it is appropriate to have one stanza set +to the music, and the rest added in verse form at +the end of the piece. This can be accomplished by adding +the extra verses into a @code{\markup} section outside +of the main score block. Notice that there are two +different ways to force linebreaks when using +@code{\markup}. + +@lilypond[ragged-right,verbatim,quote] +melody = \relative c' { +e d c d | e e e e | +d d e d | c1 | +} + +text = \lyricmode { +\set stanza = "1." Ma- ry had a lit- tle lamb, +its fleece was white as snow. +} + +\score{ << + \new Voice = "one" { \melody } + \new Lyrics \lyricsto "one" \text +>> + \layout { } +} +\markup { \column{ + \line{ Verse 2. } + \line{ All the children laughed and played } + \line{ To see a lamb at school. } + } +} +\markup{ + \wordwrap-string #" + Verse 3. -@lilypond[quote,ragged-right,fragment,verbatim] -\relative { e4 f e d e f e2 } -\addlyrics { He said: “Let my peo ple go”. } + Mary took it home again, + + It was against the rule." +} @end lilypond -To use normal quotes in lyrics, add a backslash before the -quotes. For example, -@lilypond[quote,ragged-right,fragment,verbatim] -\relative c' { \time 3/4 e4 e4. e8 d4 e d c2. } -\addlyrics { "\"I" am so lone- "ly\"" said she } -@end lilypond +@unnumberedsubsubsec Printing stanzas at the end in multiple columns -The full definition of a word start in Lyrics mode is somewhat more -complex. +When a piece of music has many verses, they are often printed in +multiple columns across the page. An outdented verse number often +introduces each verse. The following example shows how to produce such +output in Lilypond. -A word in Lyrics mode begins with: an alphabetic character, @code{_}, -@code{?}, @code{!}, @code{:}, @code{'}, the control characters @code{^A} -through @code{^F}, @code{^Q} through @code{^W}, @code{^Y}, @code{^^}, -any 8-bit character with ASCII code over 127, or a two-character -combination of a backslash followed by one of @code{`}, @code{'}, -@code{"}, or @code{^}. +@lilypond[ragged-right,quote,verbatim] +melody = \relative c' { + c c c c | d d d d +} + +text = \lyricmode { + \set stanza = "1." This is verse one. + It has two lines. +} -To define identifiers containing lyrics, the function @code{lyricmode} -must be used. +\score{ << + \new Voice = "one" { \melody } + \new Lyrics \lyricsto "one" \text + >> + \layout { } +} -@example -verseOne = \lyricmode @{ Joy to the world the Lord is come @} -\score @{ - << - \new Voice = "one" \relative c'' @{ - \autoBeamOff - \time 2/4 - c4 b8. a16 g4. f8 e4 d c2 - @} - \addlyrics @{ \verseOne @} - >> -@} -@end example +\markup { + \fill-line { + \hspace #0.1 % moves the column off the left margin; can be removed if + % space on the page is tight + \column { + \line { \bold "2." + \column { + "This is verse two." + "It has two lines." + } + } + \hspace #0.1 % adds vertical spacing between verses + \line { \bold "3." + \column { + "This is verse three." + "It has two lines." + } + } + } + \hspace #0.1 % adds horizontal spacing between columns; if they are + % still too close, add more " " pairs until the result + % looks good + \column { + \line { \bold "4." + \column { + "This is verse four." + "It has two lines." + } + } + \hspace #0.1 % adds vertical spacing between verses + \line { \bold "5." + \column { + "This is verse five." + "It has two lines." + } + } + } + \hspace #0.1 % gives some extra space on the right margin; can + % be removed if page space is tight + } +} +@end lilypond @seealso -Program reference: @internalsref{LyricText}, @internalsref{LyricSpace}. - +Program reference: @internalsref{LyricText}, @internalsref{StanzaNumber}, +@internalsref{VocalName}. -@anchor{Aligning lyrics to a melody} -@unnumberedsubsubsec Aligning lyrics to a melody -@funindex \lyricmode -@funindex \addlyrics -@funindex \lyricsto +@anchor{Other vocal issues} +@unnumberedsubsubsec Other vocal issues +@ignore +yeah, I'm giving up somewhat by stuffing a bunch of things in +here. But at least they're in the manual now; it's easier to +move them around in the manual once they're already here. -Lyrics are printed by interpreting them in the context called -@internalsref{Lyrics}. +Besides, if users complain about everything stuffed in here, I +can ask them for specific instructions about where to move these +examples, and that might get them more involved in the docs. -gp +@end ignore -@example -\new Lyrics \lyricmode @dots{} -@end example +@q{Parlato} is spoken without pitch but still with rhythm; it is +notated by cross noteheads. This is demonstrated in +@ref{Special noteheads}. -There are two main methods to specify the horizontal placement -of the syllables: -@itemize @bullet -@item -by automatically aligning -the lyrics to a melody or other voice of music, using @code{\addlyrics} -or @code{\lyricsto}. -@item -or by specifying the duration of each syllable -explicitly, using @code{\lyricmode} -@end itemize +@node Chord names +@section Chord names @menu -* Automatic syllable durations:: -* Another way of entering lyrics:: -* Assigning more than one syllable to a single note:: -* More than one note on a single syllable:: -* Extenders and hyphens:: +* Introducing chord names:: +* Chords mode:: +* Printing chord names:: @end menu -@anchor{Automatic syllable durations} -@unnumberedsubsubsec Automatic syllable durations - -@cindex automatic syllable durations -@cindex lyrics and melodies - -The lyrics can be aligned under a given melody -automatically. This is achieved by combining the -melody and the lyrics with the @code{\lyricsto} expression -@example -\new Lyrics \lyricsto @var{name} @dots{} -@end example +@c awkward name; awkward section name. +@c still, the Basic "chords" seems like a good name... :( +@anchor{Introducing chord names} +@unnumberedsubsubsec Introducing chord names +@cindex chord names -This aligns the lyrics to the -notes of the @internalsref{Voice} context called @var{name}, which must -already exist. Therefore normally the @code{Voice} is specified first, and -then the lyrics are specified with @code{\lyricsto}. The command -@code{\lyricsto} switches to @code{\lyricmode} mode automatically, so the -@code{\lyricmode} keyword may be omitted. +LilyPond has support for printing chord names. Chords may be entered +in musical chord notation, i.e., @code{< .. >}, but they can also be +entered by name. Internally, the chords are represented as a set of +pitches, so they can be transposed -The following example uses different commands for entering lyrics. -@lilypond[quote,fragment,ragged-right,verbatim] -<< - \new Voice = "one" \relative c'' { - \autoBeamOff - \time 2/4 - c4 b8. a16 g4. f8 e4 d c2 +@lilypond[quote,ragged-right,verbatim,ragged-right] +twoWays = \transpose c c' { + \chordmode { + c1 f:sus4 bes/f } - \new Lyrics \lyricmode { Joy4 to8. the16 world!4. the8 Lord4 is come.2 } - \new Lyrics \lyricmode { Joy to the earth! the Sa -- viour reigns. } - \new Lyrics \lyricsto "one" { No more let sins and sor -- rows grow. } ->> -@end lilypond - -The second stanza is not properly aligned because the durations -were not specified. A solution for that would be to use @code{\lyricsto}. - -The @code{\addlyrics} command is actually just a convenient way -to write a more complicated LilyPond structure that sets up the -lyrics. - -@example -@{ MUSIC @} -\addlyrics @{ LYRICS @} -@end example - -@noindent -is the same as - -@example -\new Voice = "blah" @{ music @} -\new Lyrics \lyricsto "blah" @{ LYRICS @} -@end example - -@anchor{Another way of entering lyrics} -@unnumberedsubsubsec Another way of entering lyrics + + + +} -Lyrics can also be entered without @code{\addlyrics} or -@code{\lyricsto}. In this case, -syllables are entered like notes -- but with pitches replaced by text -- and the -duration of each syllable must be entered explicitly. For example: - -@example -play2 the4 game2. -sink2 or4 swim2. -@end example - -The alignment to a melody can be specified with the -@code{associatedVoice} property, - -@example -\set associatedVoice = #"lala" -@end example - -@noindent -The value of the property (here: @code{"lala"}) should be the name of -a @internalsref{Voice} context. Without this setting, extender lines -will not be formatted properly. - -Here is an example demonstrating manual lyric durations, - -@lilypond[relative=1,ragged-right,verbatim,fragment,quote] -<< \new Voice = "melody" { - \time 3/4 - c2 e4 g2. - } - \new Lyrics \lyricmode { - \set associatedVoice = #"melody" - play2 the4 game2. - } >> +<< \new ChordNames \twoWays + \new Voice \twoWays >> @end lilypond -@seealso - -Program reference: @internalsref{Lyrics}. - +This example also shows that the chord printing routines do not try to +be intelligent. The last chord (@code{f bes d}) is not interpreted as +an inversion. -@anchor{Assigning more than one syllable to a single note} -@unnumberedsubsubsec Assigning more than one syllable to a single note +Note that the duration of chords must be specified outside the +@code{<>}. +@example +2 +@end example -@funindex _ -@cindex ties, in lyrics -In order to assign more than one syllable to a single note, you can -surround them with quotes or use a @code{_} character, to get spaces -between syllables, or use tilde symbol (@code{~}) to get a lyric -tie@footnote{The lyric ties is implemented with the Unicode character -U+203F, so be -sure to have a font (Like DejaVuLGC) installed that includes this -glyph.}. +@anchor{Chords mode} +@unnumberedsubsubsec Chords mode +@cindex Chords mode -@lilypond[quote,relative=2,ragged-right,fragment,verbatim] -\time 3/4 -\relative { c2 e4 g2 e4 } -\addlyrics { gran- de_a- mi- go } -\addlyrics { pu- "ro y ho-" nes- to } -\addlyrics { pu- ro~y~ho- nes- to } -@end lilypond +In chord mode sets of pitches (chords) are entered with normal note +names. A chord is entered by the root, which is entered like a +normal pitch -@seealso +@lilypond[quote,ragged-right,fragment,verbatim] +\chordmode { es4. d8 c2 } +@end lilypond -Program reference: @internalsref{LyricCombineMusic}. +@noindent +The mode is introduced by the keyword @code{\chordmode}. -@c Here come the section which used to be "Melismata" -@c the new title might be more self-explanatory +@cindex chord entry +@cindex chord mode +Other chords may be entered by suffixing a colon and introducing a +modifier (which may include a number if desired) -@anchor{More than one note on a single syllable} -@unnumberedsubsubsec More than one note on a single syllable +@lilypond[quote,fragment,verbatim] +\chordmode { e1:m e1:7 e1:m7 } +@end lilypond -@cindex melisma -@cindex melismata -@cindex phrasing, in lyrics +The first number following the root is taken to be the @q{type} of the +chord, thirds are added to the root until it reaches the specified +number. The exception is @code{c:13}, for which the 11 is omitted. -Sometimes, particularly in Medieval music, several notes are to be sung on one -single syllable; such vocalises are called melismas, or melismata. +@lilypond[quote,fragment,verbatim] +\chordmode { c:3 c:5 c:6 c:7 c:8 c:9 c:10 c:11 c:13 } +@end lilypond -@c this method seems to be the simplest; therefore -@c it might be better to present it first - vv +@cindex root of chord +@cindex additions, in chords +@cindex removals, in chords -You can define melismata entirely in the lyrics, by entering @code{_} -for every note -that is part of the melisma. +More complex chords may also be constructed adding separate steps +to a chord. Additions are added after the number following +the colon and are separated by dots -@lilypond[relative=1,verbatim,fragment,quote] -{ \set melismaBusyProperties = #'() - c d( e) f f( e) e e } -\addlyrics - { Ky -- _ _ ri __ _ _ _ e } +@lilypond[quote,verbatim,fragment] +\chordmode { c:5.6 c:3.7.8 c:3.6.13 } @end lilypond -In this case, you can also have ties and slurs in the melody if you -set @code{melismaBusyProperties}, as is done in the example above. +Chord steps can be altered by suffixing a @code{-} or @code{+} sign +to the number -However, the @code{\lyricsto} command can also -detect melismata automatically: it only puts one -syllable under a tied or slurred group of notes. If you want to force -an unslurred group of notes to be a melisma, insert @code{\melisma} -after the first note of the group, and @code{\melismaEnd} after the -last one, e.g., +@lilypond[quote,verbatim,fragment] +\chordmode { c:7+ c:5+.3- c:3-.5-.7- } +@end lilypond -@lilypond[quote,relative=2,ragged-right,fragment,verbatim] -<< - \new Voice = "lala" { - \time 3/4 - f4 g8 - \melisma - f e f - \melismaEnd - e2 - } - \new Lyrics \lyricsto "lala" { - la di __ daah - } ->> +Removals are specified similarly and are introduced by a caret. They +must come after the additions + +@lilypond[quote,verbatim,fragment] +\chordmode { c^3 c:7^5 c:9^3.5 } @end lilypond -In addition, notes are considered a melisma if they are manually -beamed, and automatic beaming (see @ref{Setting automatic beam -behavior}) is switched off. +Modifiers can be used to change pitches. The following modifiers are +supported -@c TODO: there might be some more relevant place for -@c the following link (?) +@table @code +@item m +The minor chord. This modifier lowers the 3rd and (if present) the 7th step. -@cindex SATB -@cindex choral score +@item dim +The diminished chord. This modifier lowers the 3rd, 5th and (if present) +the 7th step. -A complete example of a SATB score setup is in section -@ref{Vocal ensembles}. +@item aug +The augmented chord. This modifier raises the 5th step. +@item maj +The major 7th chord. This modifier raises the 7th step if present. -@refcommands +@item sus +The suspended 4th or 2nd. This modifier removes the 3rd +step. Append either @code{2} or @code{4} to add the 2nd or 4th step to +the chord. +@end table -@code{\melisma}, @code{\melismaEnd} -@funindex \melismaEnd -@funindex \melisma +Modifiers can be mixed with additions +@lilypond[quote,verbatim,fragment] + \chordmode { c:sus4 c:7sus4 c:dim7 c:m6 } +@end lilypond -@seealso +@cindex modifiers, in chords. +@funindex aug +@funindex dim +@funindex maj +@funindex sus +@funindex m + +Since an unaltered 11 does not sound good when combined with an +unaltered 13, the 11 is removed in this case (unless it is added +explicitly) +@lilypond[quote,ragged-right,fragment,verbatim] +\chordmode { c:13 c:13.11 c:m13 } +@end lilypond + +@funindex / + +An inversion (putting one pitch of the chord on the bottom), as well +as bass notes, can be specified by appending +@code{/}@var{pitch} to the chord +@lilypond[quote,ragged-right,fragment,verbatim] +\chordmode { c1 c/g c/f } +@end lilypond +@funindex /+ + +A bass note can be added instead of transposed out of the chord, +by using @code{/+}@var{pitch}. + +@lilypond[quote,ragged-right,fragment,verbatim] +\chordmode { c1 c/+g c/+f } +@end lilypond + +Chords is a mode similar to @code{\lyricmode}, etc. Most +of the commands continue to work, for example, @code{r} and +@code{\skip} can be used to insert rests and spaces, and property +commands may be used to change various settings. -Program reference: @internalsref{Melisma_translator}. -@lsr{vocal,lyric@/-combine.ly}. @refbugs -Melismata are not detected automatically, and extender lines must be -inserted by hand. +Each step can only be present in a chord once. The following +simply produces the augmented chord, since @code{5+} is interpreted +last +@cindex clusters +@lilypond[quote,ragged-right,verbatim,fragment] +\chordmode { c:5.5-.5+ } +@end lilypond -@anchor{Extenders and hyphens} -@unnumberedsubsubsec Extenders and hyphens -@cindex melisma -@cindex extender +@anchor{Printing chord names} +@unnumberedsubsubsec Printing chord names -Melismata are indicated with a horizontal line centered between a syllable -and the next one. Such a line is called an extender line, and it is entered -as @samp{ __ } (note the spaces before and after the two underscore -characters). +@cindex printing chord names +@cindex chord names +@cindex chords -@cindex hyphens +For displaying printed chord names, use the @internalsref{ChordNames} context. +The chords may be entered either using the notation +described above, or directly using @code{<} and @code{>} -Centered hyphens are entered as @samp{ -- } between syllables of a same word -(note the spaces before and after the two hyphen characters). The hyphen -will be centered between the syllables, and its length will be adjusted -depending on the space between the syllables. +@lilypond[quote,verbatim,ragged-right] +harmonies = { + \chordmode {a1 b c} +} +<< + \new ChordNames \harmonies + \new Staff \harmonies +>> +@end lilypond -In tighly engraved music, hyphens can be removed. Whether this -happens can be controlled with the @code{minimum-distance} (minimum -distance between two syllables) and the @code{minimum-length} -(threshold below which hyphens are removed). +You can make the chord changes stand out by setting +@internalsref{ChordNames}.@code{chordChanges} to true. This will only +display chord names when there is a change in the chords scheme and at +the start of a new line -@seealso +@lilypond[quote,verbatim,ragged-right] +harmonies = \chordmode { + c1:m c:m \break c:m c:m d +} +<< + \new ChordNames { + \set chordChanges = ##t + \harmonies } + \new Staff \transpose c c' \harmonies +>> +@end lilypond + +The previous examples all show chords over a staff. This is not +necessary. Chords may also be printed separately. It may be necessary +to add @internalsref{Volta_engraver} and @internalsref{Bar_engraver} +for showing repeats. + +@lilypond[ragged-right,verbatim] +\new ChordNames \with { + \override BarLine #'bar-size = #4 + \consists Bar_engraver + \consists "Volta_engraver" +} +\chordmode { \repeat volta 2 { + f1:maj7 f:7 bes:7 + c:maj7 +} \alternative { + es e +} +} +@end lilypond -Program reference: @internalsref{LyricExtender}, -@internalsref{LyricHyphen} +The default chord name layout is a system for Jazz music, proposed by +Klaus Ignatzek (see @ref{Literature list}). It can be tuned through the +following properties -@anchor{Working with lyrics and identifiers} -@unnumberedsubsubsec Working with lyrics and identifiers -@cindex lyrics, identifiers +@table @code +@funindex chordNameExceptions +@item chordNameExceptions +This is a list that contains the chords that have special formatting. -To define identifiers containing lyrics, the function @code{\lyricmode} -must be used. You do not have to enter durations though, if you add -@code{\addlyrics} or @code{\lyricsto} -when invoking your identifier. - +The exceptions list should be encoded as @example -verseOne = \lyricmode @{ Joy to the world the Lord is come @} -\score @{ - << - \new Voice = "one" \relative c'' @{ - \autoBeamOff - \time 2/4 - c4 b8. a16 g4. f8 e4 d c2 - @} - \addlyrics @{ \verseOne @} - >> -@} +@{ 1 \markup @{ \super "7" "wahh" @} @} @end example - -For different or more complex orderings, the best way is to setup the -hierarchy of staves and lyrics first, e.g., + +To get this information into @code{chordNameExceptions} takes a little +manoeuvring. The following code transforms @code{chExceptionMusic} +(which is a sequential music) into a list of exceptions. @example -\new ChoirStaff << - \new Voice = "soprano" @{ @emph{music} @} - \new Lyrics = "sopranoLyrics" @{ s1 @} - \new Lyrics = "tenorLyrics" @{ s1 @} - \new Voice = "tenor" @{ @emph{music} @} ->> +(sequential-music-to-chord-exceptions chExceptionMusic #t) @end example - -and then combine the appropriate melodies and lyric lines - +Then, @example -\context Lyrics = sopranoLyrics \lyricsto "soprano" -@emph{the lyrics} +(append + (sequential-music-to-chord-exceptions chExceptionMusic #t) + ignatzekExceptions) @end example - -@noindent +adds the new exceptions to the default ones, which are defined in +@file{ly/@/chord@/-modifier@/-init@/.ly}. -The final input would resemble - -@example -<<\new ChoirStaff << @emph{setup the music} >> - \lyricsto "soprano" @emph{etc} - \lyricsto "alto" @emph{etc} -@emph{etc} ->> -@end example - -@seealso - -@c TODO: document \new Staff << Voice \lyricsto >> bug -Program reference: @internalsref{LyricCombineMusic}, -@internalsref{Lyrics}. +For an example of tuning this property, see also +@lsr{chords,chord@/-name@/-exceptions@/.ly} +@cindex exceptions, chord names. -@anchor{Flexibility in placement} -@unnumberedsubsubsec Flexibility in placement +@funindex majorSevenSymbol +@item majorSevenSymbol +This property contains the markup object used for the 7th step, when +it is major. Predefined options are @code{whiteTriangleMarkup} and +@code{blackTriangleMarkup}. See +@lsr{chords,chord@/-name@/-major7@/.ly} for an example. -Often, different stanzas of one song are put to one melody in slightly -differing ways. Such variations can still be captured with -@code{\lyricsto}. +@funindex chordNameSeparator +@item chordNameSeparator +Different parts of a chord name are normally separated by a +slash. By setting @code{chordNameSeparator}, you can specify other +separators, e.g., +@lilypond[quote,ragged-right,fragment,verbatim] +\new ChordNames \chordmode { + c:7sus4 + \set chordNameSeparator + = \markup { \typewriter "|" } + c:7sus4 +} +@end lilypond -@menu -* Lyrics to multiple notes of a melisma:: -* Divisi lyrics:: -* Switching the melody associated with a lyrics line:: -* Lyrics independent of notes:: -@end menu +@funindex chordRootNamer +@item chordRootNamer +The root of a chord is usually printed as a letter with an optional +alteration. The transformation from pitch to letter is done by this +function. Special note names (for example, the German @q{H} for a +B-chord) can be produced by storing a new function in this property. +@funindex chordNoteNamer +@item chordNoteNamer +The default is to print single pitch, e.g., the bass note, using the +@code{chordRootNamer}. The @code{chordNoteNamer} property can be set +to a specialized function to change this behavior. For example, the +base can be printed in lower case. -@anchor{Lyrics to multiple notes of a melisma} -@unnumberedsubsubsec Lyrics to multiple notes of a melisma +@funindex chordPrefixSpacer +@item chordPrefixSpacer +The @q{m} for minor chords is usually printed right after the root of +the chord. By setting @code{chordPrefixSpacer}, you can fix a spacer +between the root and @q{m}. The spacer is not used when the root +is altered. -One possibility is that the text has a melisma in one stanza, but -multiple syllables in another one. One solution is to make the faster -voice ignore the melisma. This is done by setting -@code{ignoreMelismata} in the Lyrics context. +@end table -There is one tricky aspect: the setting for @code{ignoreMelismata} -must be set one syllable @emph{before} the non-melismatic syllable -in the text, as shown here, +The predefined variables @code{\germanChords}, +@code{\semiGermanChords}, @code{\italianChords} and @code{\frenchChords} +set these variables. The effect is +demonstrated here, -@c FIXME: breaks compile -@lilypond[verbatim,ragged-right,quote] -%{ -<< - \relative \new Voice = "lahlah" { - \set Staff.autoBeaming = ##f - c4 - \slurDotted - f8.[( g16]) - a4 - } - \new Lyrics \lyricsto "lahlah" { - more slow -- ly - } - \new Lyrics \lyricsto "lahlah" { - \set ignoreMelismata = ##t % applies to "fas" - go fas -- ter - \unset ignoreMelismata - still - } ->> -%} -@end lilypond +@lilypondfile[ragged-right]{chord-names-languages.ly} +There are also two other chord name schemes implemented: an alternate +Jazz chord notation, and a systematic scheme called Banter chords. The +alternate Jazz notation is also shown on the chart in @ref{Chord name +chart}. Turning on these styles is demonstrated in +@lsr{chords,chord-names-jazz.ly}. -The @code{ignoreMelismata} applies to the syllable @q{fas}, so it -should be entered before @q{go}. +@cindex Banter +@cindex jazz chords +@cindex chords, jazz -The reverse is also possible: making a lyric line slower than the -standard. This can be achieved by insert @code{\skip}s into the -lyrics. For every @code{\skip}, the text will be delayed another note. -For example, -@lilypond[verbatim,ragged-right,quote] -\relative { c c g' } -\addlyrics { - twin -- \skip 4 - kle -} -@end lilypond +@refcommands + +@funindex \germanChords +@code{\germanChords}, +@funindex \semiGermanChords +@code{\semiGermanChords}. +@funindex \italianChords +@code{\italianChords}. +@funindex \frenchChords +@code{\frenchChords}. -@anchor{Divisi lyrics} -@unnumberedsubsubsec Divisi lyrics -You can display alternate (or divisi) lyrics by naming voice -contexts and attaching lyrics to those specific contexts. -@lilypond[verbatim,ragged-right,quote] -\score{ << - \new Voice = "melody" { - \relative c' { - c4 - << - { \voiceOne c8 e } - \new Voice = "splitpart" { \voiceTwo c4 } - >> - \oneVoice c4 c | c - } - } - \new Lyrics \lyricsto "melody" { we shall not o- ver- come } - \new Lyrics \lyricsto "splitpart" { will } ->> } -@end lilypond +@seealso +Examples: +@lsrdir{chords} -You can use this trick to display different lyrics for a repeated -section. +Init files: @file{scm/@/chords@/-ignatzek@/.scm}, and +@file{scm/@/chord@/-entry@/.scm}. -@lilypond[verbatim,ragged-right,quote] -\score{ << - \new Voice = "melody" \relative c' { - c2 e | g e | c1 | - \new Voice = "verse" \repeat volta 2 {c4 d e f | g1 | } - a2 b | c1} - \new Lyrics = "mainlyrics" \lyricsto melody \lyricmode { - do mi sol mi do - la si do } - \context Lyrics = "mainlyrics" \lyricsto verse \lyricmode { - do re mi fa sol } - \new Lyrics = "repeatlyrics" \lyricsto verse \lyricmode { - dodo rere mimi fafa solsol } ->> -} -@end lilypond +@refbugs + +Chord names are determined solely from the list of pitches. Chord +inversions are not identified, and neither are added bass notes. This +may result in strange chord names when chords are entered with the +@code{< .. >} syntax. + + + + + +@node Piano music +@section Piano music + +Piano staves are two normal staves coupled with a brace. The staves +are largely independent, but sometimes voices can cross between the +two staves. The same notation is also used for harps and other key +instruments. The @internalsref{PianoStaff} is especially built to +handle this cross-staffing behavior. In this section we discuss the +@internalsref{PianoStaff} and some other pianistic peculiarities. +@menu +* Automatic staff changes:: +* Manual staff switches:: +* Pedals:: +* Staff switch lines:: +* Cross staff stems:: +@end menu -@anchor{Switching the melody associated with a lyrics line} -@unnumberedsubsubsec Switching the melody associated with a lyrics line +@refbugs -More complex variations in text underlay are possible. It is possible -to switch the melody for a line of lyrics during the text. This is -done by setting the @code{associatedVoice} property. In the example +Dynamics are not centered, but workarounds do exist. See the +@q{piano centered dynamics} template in @ref{Piano templates}. -@lilypond[ragged-right,quote] -<< - \relative \new Voice = "lahlah" { - \set Staff.autoBeaming = ##f - c4 - << - \new Voice = "alternative" { - \voiceOne - \times 2/3 { - % show associations clearly. - \override NoteColumn #'force-hshift = #-3 - f8 f g - } - } - { - \voiceTwo - f8.[ g16] - \oneVoice - } >> - a8( b) c - } - \new Lyrics \lyricsto "lahlah" { - Ju -- ras -- sic Park - } - \new Lyrics \lyricsto "lahlah" { - % Tricky: need to set associatedVoice - % one syllable too soon! - \set associatedVoice = alternative % applies to "ran" - Ty -- - ran -- - no -- - \set associatedVoice = lahlah % applies to "rus" - sau -- rus Rex - } >> -@end lilypond +@cindex cross staff stem +@cindex stem, cross staff +@cindex distance between staves in piano music -@noindent -the text for the first stanza is set to a melody called @q{lahlah}, -@example -\new Lyrics \lyricsto "lahlah" @{ - Ju -- ras -- sic Park -@} -@end example +@anchor{Automatic staff changes} +@unnumberedsubsubsec Automatic staff changes +@cindex Automatic staff changes +Voices can be made to switch automatically between the top and the bottom +staff. The syntax for this is -The second stanza initially is set to the @code{lahlah} context, but -for the syllable @q{ran}, it switches to a different melody. -This is achieved with +@quotation @example -\set associatedVoice = alternative +\autochange @dots{}@var{music}@dots{} @end example +@end quotation @noindent -Here, @code{alternative} is the name of the @code{Voice} context -containing the triplet. +This will create two staves inside the current PianoStaff, called +@code{up} and @code{down}. The lower staff will be in bass clef by +default. -Again, the command must be one syllable too early, before @q{Ty} in -this case. +A @code{\relative} section that is outside of @code{\autochange} has +no effect on the pitches of @var{music}, so, if necessary, put +@code{\relative} inside @code{\autochange} like +@quotation @example -\new Lyrics \lyricsto "lahlah" @{ - \set associatedVoice = alternative % applies to "ran" - Ty -- - ran -- - no -- - \set associatedVoice = lahlah % applies to "rus" - sau -- rus Rex -@} +\autochange \relative @dots{} @dots{} @end example +@end quotation -@noindent -The underlay is switched back to the starting situation by assigning -@code{lahlah} to @code{associatedVoice}. - - -@anchor{Lyrics independent of notes} -@unnumberedsubsubsec Lyrics independent of notes -In some complex vocal music, it may be desirable to place -lyrics completely independently of notes. Music defined -inside @code{lyricrhythm} disappears into the -@code{Devnull} context, but the rhythms can still be used -to place the lyrics. +The autochanger switches on basis of the pitch (middle C is the turning +point), and it looks ahead skipping over rests to switch in +advance. Here is a practical example @lilypond[quote,verbatim,ragged-right] -voice = { - c''2 - \tag #'music { c''2 } - \tag #'lyricrhythm { c''4. c''8 } - d''1 -} +\new PianoStaff + \autochange \relative c' + { + g4 a b c d r4 a g + } +@end lilypond -lyr = \lyricmode { I like my cat! } -<< - \new Staff \keepWithTag #'music \voice - \new Devnull="nowhere" \keepWithTag #'lyricrhythm \voice - \new Lyrics \lyricsto "nowhere" \lyr - \new Staff { c'8 c' c' c' c' c' c' c' - c' c' c' c' c' c' c' c' } ->> -@end lilypond +@seealso +In this manual: @ref{Manual staff switches}. -@anchor{Spacing lyrics} -@unnumberedsubsubsec Spacing lyrics +Program reference: @internalsref{AutoChangeMusic}. -@cindex Spacing lyrics -@cindex Lyrics, increasing space between -To increase the spacing between lyrics, set the minimum-distance property of -LyricSpace. -@lilypond[relative,verbatim,fragment,quote,ragged-right] -{ - c c c c - \override Lyrics.LyricSpace #'minimum-distance = #1.0 - c c c c -} -\addlyrics { - longtext longtext longtext longtext - longtext longtext longtext longtext -} -@end lilypond +@refbugs -To make this change for all lyrics in the score, set the property in the -layout. +The staff switches may not end up in optimal places. For high +quality output, staff switches should be specified manually. -@lilypond[relative,verbatim,quote,ragged-right] -\score { - \relative c' { - c c c c - c c c c - } - \addlyrics { - longtext longtext longtext longtext - longtext longtext longtext longtext - } - \layout { - \context { - \Lyrics - \override LyricSpace #'minimum-distance = #1.0 - } - } -} -@end lilypond +@code{\autochange} cannot be inside @code{\times}. -@anchor{More about stanzas} -@unnumberedsubsubsec More about stanzas -@cindex stanza number -@unnumberedsubsubsec Adding stanza numbers +@anchor{Manual staff switches} +@unnumberedsubsubsec Manual staff switches -Stanza numbers can be added by setting @code{stanza}, e.g., +@cindex manual staff switches +@cindex staff switch, manual -@lilypond[quote,ragged-right,verbatim,relative=2,fragment] -\new Voice { - \time 3/4 g2 e4 a2 f4 g2. -} \addlyrics { - \set stanza = "1. " - Hi, my name is Bert. -} \addlyrics { - \set stanza = "2. " - Oh, ché -- ri, je t'aime -} -@end lilypond +Voices can be switched between staves manually, using the command +@example +\change Staff = @var{staffname} @var{music} +@end example @noindent -These numbers are put just before the start of the first syllable. +The string @var{staffname} is the name of the staff. It switches the +current voice from its current staff to the Staff called +@var{staffname}. Typically @var{staffname} is @code{"up"} or +@code{"down"}. The @context{Staff} referred to must already exist, so +usually the setup for a score will start with a setup of the staves, +@example +<< + \new Staff = "up" @{ + \skip 1 * 10 % @emph{keep staff alive} + @} + \new Staff = "down" @{ + \skip 1 * 10 % @emph{idem} + @} +>> +@end example -@unnumberedsubsubsec Adding dynamics marks -Stanzas differing in loudness may be indicated by putting a -dynamics mark before each stanza. In Lilypond, everthing coming in -front of a stanza goes into the @code{StanzaNumber} object; dynamics marks -are no different. For technical reasons, you have to set the stanza -outside @code{\lyricmode}: +and the @context{Voice} is inserted afterwards -@lilypond[quote,ragged-right,verbatim] -text = { - \set stanza = \markup { \dynamic "ff" "1. " } - \lyricmode { - Big bang - } -} +@example +\context Staff = down + \new Voice @{ @dots{} \change Staff = up @dots{} @} +@end example -<< - \new Voice = "tune" { - \time 3/4 - g'4 c'2 - } -\new Lyrics \lyricsto "tune" \text ->> + +@anchor{Pedals} +@unnumberedsubsubsec Pedals +@cindex Pedals + +Pianos have pedals that alter the way sound is produced. Generally, a +piano has three pedals, sustain, una corda, and sostenuto. + + +Piano pedal instruction can be expressed by attaching +@code{\sustainDown}, @code{\sustainUp}, @code{\unaCorda}, +@code{\treCorde}, @code{\sostenutoDown} and @code{\sostenutoUp} to a +note or chord + +@lilypond[quote,ragged-right,fragment,verbatim] +c'4\sustainDown c'4\sustainUp @end lilypond -@cindex singer name -@cindex name of singer -@unnumberedsubsubsec Adding singer names +What is printed can be modified by setting @code{pedal@var{X}Strings}, +where @var{X} is one of the pedal types: @code{Sustain}, +@code{Sostenuto} or @code{UnaCorda}. Refer to +@internalsref{SustainPedal} in the program reference for more +information. -Names of singers can also be added. They are printed at the start of -the line, just like instrument names. They are created by setting -@code{vocalName}. A short version may be entered as @code{shortVocalName}. +Pedals can also be indicated by a sequence of brackets, by setting the +@code{pedalSustainStyle} property to bracket objects -@lilypond[fragment,ragged-right,quote,verbatim,relative=2] -\new Voice { - \time 3/4 g2 e4 a2 f4 g2. -} \addlyrics { - \set vocalName = "Bert " - Hi, my name is Bert. -} \addlyrics { - \set vocalName = "Ernie " - Oh, che -- ri, je t'aime -} +@lilypond[quote,ragged-right,fragment,verbatim,relative=2] +\set Staff.pedalSustainStyle = #'bracket +c\sustainDown d e +b\sustainUp\sustainDown +b g \sustainUp a \sustainDown \bar "|." @end lilypond +A third style of pedal notation is a mixture of text and brackets, +obtained by setting the @code{pedalSustainStyle} property to +@code{mixed} -@unnumberedsubsubsec Printing stanzas at the end +@lilypond[quote,ragged-right,fragment,verbatim,relative=2] +\set Staff.pedalSustainStyle = #'mixed +c\sustainDown d e +b\sustainUp\sustainDown +b g \sustainUp a \sustainDown \bar "|." +@end lilypond -Sometimes it is appropriate to have one stanza set -to the music, and the rest added in verse form at -the end of the piece. This can be accomplished by adding -the extra verses into a @code{\markup} section outside -of the main score block. Notice that there are two -different ways to force linebreaks when using -@code{\markup}. +The default @q{*Ped.} style for sustain and damper pedals corresponds to +style @code{#'text}. The sostenuto pedal uses @code{mixed} style by +default. -@lilypond[ragged-right,verbatim,quote] -melody = \relative c' { -e d c d | e e e e | -d d e d | c1 | -} +@lilypond[quote,ragged-right,fragment,verbatim,relative=2] +c\sostenutoDown d e c, f g a\sostenutoUp +@end lilypond -text = \lyricmode { -\set stanza = "1." Ma- ry had a lit- tle lamb, -its fleece was white as snow. -} +For fine-tuning the appearance of a pedal bracket, the properties +@code{edge-width}, @code{edge-height}, and @code{shorten-pair} of +@code{PianoPedalBracket} objects (see +@internalsref{PianoPedalBracket} in the Program reference) can be +modified. For example, the bracket may be extended to the right edge +of the note head -\score{ << - \new Voice = "one" { \melody } - \new Lyrics \lyricsto "one" \text ->> - \layout { } -} -\markup { \column{ - \line{ Verse 2. } - \line{ All the children laughed and played } - \line{ To see a lamb at school. } - } -} -\markup{ - \wordwrap-string #" - Verse 3. +@lilypond[quote,ragged-right,fragment,verbatim,relative=2] +\override Staff.PianoPedalBracket #'shorten-pair = #'(0 . -1.0) +c\sostenutoDown d e c, f g a\sostenutoUp +@end lilypond - Mary took it home again, +@seealso - It was against the rule." -} -@end lilypond +In this manual: @ref{Laissez vibrer ties}. +@anchor{Staff switch lines} +@unnumberedsubsubsec Staff switch lines -@unnumberedsubsubsec Printing stanzas at the end in multiple columns -When a piece of music has many verses, they are often printed in -multiple columns across the page. An outdented verse number often -introduces each verse. The following example shows how to produce such -output in Lilypond. +@cindex follow voice +@cindex staff switching +@cindex cross staff -@lilypond[ragged-right,quote,verbatim] -melody = \relative c' { - c c c c | d d d d -} - -text = \lyricmode { - \set stanza = "1." This is verse one. - It has two lines. -} +@funindex followVoice -\score{ << - \new Voice = "one" { \melody } - \new Lyrics \lyricsto "one" \text - >> - \layout { } -} +Whenever a voice switches to another staff, a line connecting the notes +can be printed automatically. This is switched on by setting +@code{followVoice} to true -\markup { - \fill-line { - \hspace #0.1 % moves the column off the left margin; can be removed if - % space on the page is tight - \column { - \line { \bold "2." - \column { - "This is verse two." - "It has two lines." - } - } - \hspace #0.1 % adds vertical spacing between verses - \line { \bold "3." - \column { - "This is verse three." - "It has two lines." - } - } - } - \hspace #0.1 % adds horizontal spacing between columns; if they are - % still too close, add more " " pairs until the result - % looks good - \column { - \line { \bold "4." - \column { - "This is verse four." - "It has two lines." - } - } - \hspace #0.1 % adds vertical spacing between verses - \line { \bold "5." - \column { - "This is verse five." - "It has two lines." - } - } - } - \hspace #0.1 % gives some extra space on the right margin; can - % be removed if page space is tight +@lilypond[quote,ragged-right,fragment,relative=1,verbatim] +\new PianoStaff << + \new Staff="one" { + \set followVoice = ##t + c1 + \change Staff=two + b2 a } -} + \new Staff="two" { \clef bass \skip 1*2 } +>> @end lilypond - @seealso -Program reference: @internalsref{LyricText}, @internalsref{StanzaNumber}, -@internalsref{VocalName}. - - +Program reference: @internalsref{VoiceFollower}. -@anchor{Other vocal issues} -@unnumberedsubsubsec Other vocal issues +@refcommands -@ignore -yeah, I'm giving up somewhat by stuffing a bunch of things in -here. But at least they're in the manual now; it's easier to -move them around in the manual once they're already here. +@funindex \showStaffSwitch +@code{\showStaffSwitch}, +@funindex \hideStaffSwitch +@code{\hideStaffSwitch}. -Besides, if users complain about everything stuffed in here, I -can ask them for specific instructions about where to move these -examples, and that might get them more involved in the docs. -gp -@end ignore -@q{Parlato} is spoken without pitch but still with rhythm; it is -notated by cross noteheads. This is demonstrated in -@ref{Special noteheads}. +@anchor{Cross staff stems} +@unnumberedsubsubsec Cross staff stems +Chords that cross staves may be produced by increasing the length +of the stem in the lower staff, so it reaches the stem in the upper +staff, or vice versa. +@lilypond[ragged-right,verbatim,quote] +stemExtend = { + \once \override Stem #'length = #10 + \once \override Stem #'cross-staff = ##t +} +noFlag = \once \override Stem #'flag-style = #'no-flag +\new PianoStaff << + \new Staff { + \stemDown \stemExtend + f'4 + \stemExtend \noFlag + f'8 + } + \new Staff { + \clef bass + a4 a8 + } +>> +@end lilypond -@node Rhythmic music -@section Rhythmic music +@node Percussion +@section Percussion Rhythmic music is primarily used for percussion and drum notation, but it can also be used to show the rhythms of melodies. @@ -2369,17 +2368,36 @@ pitch. It is notated with cross noteheads; this is demonstrated in @ref{Special noteheads}. -@node Bagpipe -@section Bagpipe +@node Other instrument-specific +@section Other instrument-specific -@cindex Bagpipe +This section includes extra information for writing for instruments. @menu -* Bagpipe definitions:: -* Bagpipe example:: +* Orchestral strings:: +* Bagpipe:: @end menu +@node Orchestral strings +@subsection Orchestral strings + +@anchor{Artificial harmonics (strings)} +@unnumberedsubsubsec Artificial harmonics (strings) + +@cindex artificial harmonics + +Artificial harmonics are notated with a different notehead style. They +are entered by marking the harmonic pitch with @code{\harmonic}. + +@lilypond[ragged-right,verbatim,quote,fragment,relative=1] +4 +@end lilypond + + +@node Bagpipe +@subsection Bagpipe + @anchor{Bagpipe definitions} @unnumberedsubsubsec Bagpipe definitions @@ -4653,24 +4671,4 @@ Program reference: @internalsref{NewBassFigure}, -@node Other instrument specific notation -@section Other instrument specific notation - -This section includes extra information for writing for instruments. - -@menu -* Artificial harmonics (strings):: -@end menu - -@anchor{Artificial harmonics (strings)} -@unnumberedsubsubsec Artificial harmonics (strings) - -@cindex artificial harmonics - -Artificial harmonics are notated with a different notehead style. They -are entered by marking the harmonic pitch with @code{\harmonic}. - -@lilypond[ragged-right,verbatim,quote,fragment,relative=1] -4 -@end lilypond diff --git a/Documentation/user/lilypond.tely b/Documentation/user/lilypond.tely index dee04c6746..43f73b98de 100644 --- a/Documentation/user/lilypond.tely +++ b/Documentation/user/lilypond.tely @@ -162,7 +162,6 @@ of this and other documentation. old stuff * Instrument-specific notation:: -* Advanced notation:: * Changing defaults:: Tuning output. * Non-musical notation:: Output that is not musical notation. @@ -190,7 +189,6 @@ Appendices @include notation.itely @include instrument-notation.itely -@include advanced-notation.itely @include changing-defaults.itely @include non-music.itely @include spacing.itely diff --git a/Documentation/user/non-music.itely b/Documentation/user/non-music.itely index 6462f4122c..ba315b7bc9 100644 --- a/Documentation/user/non-music.itely +++ b/Documentation/user/non-music.itely @@ -40,6 +40,7 @@ these files end with @samp{.ly}. * Extracting fragments of notation:: * Including LilyPond files:: * Text encoding:: +* Different editions from one source:: @end menu @@ -471,6 +472,80 @@ To use a Unicode escape sequence, use @lsr{text,utf-8.ly} +@node Different editions from one source +@subsection Different editions from one source + +@funindex \tag +@cindex tag + +The @code{\tag} command marks music expressions with a name. These +tagged expressions can be filtered out later. With this mechanism it +is possible to make different versions of the same music source. + +In the following example, we see two versions of a piece of music, one +for the full score, and one with cue notes for the instrumental part + +@example +c1 +<< + \tag #'part << + R1 \\ + @{ + \set fontSize = #-1 + c4_"cue" f2 g4 @} + >> + \tag #'score R1 +>> +c1 +@end example + +The same can be applied to articulations, texts, etc.: they are +made by prepending +@example +-\tag #@var{your-tag} +@end example +to an articulation, for example, +@example +c1-\tag #'part ^4 +@end example + +This defines a note with a conditional fingering indication. + +@cindex keepWithTag +@cindex removeWithTag +By applying the @code{\keepWithTag} and @code{\removeWithTag} +commands, tagged expressions can be filtered. For example, +@example +<< + @var{the music} + \keepWithTag #'score @var{the music} + \keepWithTag #'part @var{the music} +>> +@end example +would yield + +@lilypondfile[ragged-right,quote]{tag-filter.ly} + +The arguments of the @code{\tag} command should be a symbol +(such as @code{#'score} or @code{#'part}), followed by a +music expression. It is possible to put multiple tags on +a piece of music with multiple @code{\tag} entries, + +@example + \tag #'original-part \tag #'transposed-part @dots{} +@end example + + +@seealso + +Examples: @lsr{parts,tag@/-filter@/.ly} + + +@refbugs + +Multiple rests are not merged if you create the score with both tagged +sections. + @node Titles and headers @section Titles and headers