From c3593914e80b7c64a47c2b2952736fa6ead63f48 Mon Sep 17 00:00:00 2001 From: Graham Percival Date: Wed, 2 Mar 2005 18:33:07 +0000 Subject: [PATCH] Reorg of Instrument. --- ChangeLog | 4 + Documentation/user/basic-notation.itely | 4 + Documentation/user/instrument-notation.itely | 2652 +++++++++--------- 3 files changed, 1355 insertions(+), 1305 deletions(-) diff --git a/ChangeLog b/ChangeLog index 25f78f26d9..dd97883004 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2005-03-02 Graham Percival + + * Documentation/user/instrument-notation.itely: reorg. + 2005-03-02 Jan Nieuwenhuizen * scm/output-gnome.scm: diff --git a/Documentation/user/basic-notation.itely b/Documentation/user/basic-notation.itely index 6076976abd..ce149bfff2 100644 --- a/Documentation/user/basic-notation.itely +++ b/Documentation/user/basic-notation.itely @@ -192,6 +192,7 @@ flats, so LilyPond's symbol does not conform to any standard. @node Chords @subsection Chords +@cindex Chords A chord is formed by a enclosing a set of pitches in @code{<} and @code{>}. A chord may be followed by a duration, and a set of @@ -201,6 +202,9 @@ articulations, just like simple notes 4 8 @end lilypond +For more information about chords, see @ref{Chords names}. + + @node Rests @subsection Rests @cindex Rests diff --git a/Documentation/user/instrument-notation.itely b/Documentation/user/instrument-notation.itely index 203e10b55c..ed1ecbe416 100644 --- a/Documentation/user/instrument-notation.itely +++ b/Documentation/user/instrument-notation.itely @@ -11,433 +11,159 @@ This chapter explains how to use notation for specific instruments. @menu -* Rhythmic music:: * Piano music:: +* Chord names:: * Vocal music:: -* Other instrument specific notation:: +* Rhythmic music:: * Tablatures:: -* Popular music:: * Ancient notation:: +* Other instrument specific notation:: @end menu -@node Rhythmic music -@section Rhythmic music -Rhythmic music is primarily used for percussion and drum notation, but it can -also be used to show the rhythms of melodies. +@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 +@c Is this `harp' or `harpsichord'? +@c both. -gp +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 -* Showing melody rhythms:: -* Entering percussion:: -* Percussion staves:: +* Automatic staff changes:: +* Manual staff switches:: +* Pedals:: +* Staff switch lines:: +* Cross staff stems:: @end menu +@refbugs -@node Showing melody rhythms -@subsection Showing melody rhythms +Dynamics are not centered, but workarounds do exist. See the +``piano centered dynamics'' template in @ref{Piano templates}. -Sometimes you might want to show only the rhythm of a melody. This -can be done with the rhythmic staff. All pitches of notes on such a -staff are squashed, and the staff itself has a single line +@cindex cross staff stem +@cindex stem, cross staff +@cindex distance between staves in piano music -@lilypond[quote,raggedright,fragment,relative=1,verbatim] -\context RhythmicStaff { - \time 4/4 - c4 e8 f g2 | r4 g r2 | g1:32 | r1 | -} -@end lilypond +The distance between the two staves is the same for all systems in the +score. It is possible to override this per system, but it does require +an arcane command incantation. See +@inputfileref{input/@/test,piano@/-staff@/-distance@/.ly}. -@seealso -Program reference: @internalsref{RhythmicStaff}. +@node Automatic staff changes +@subsection Automatic staff changes +@cindex Automatic staff changes -Examples: @inputfileref{input/@/regression,rhythmic@/-staff@/.ly}. +Voices can be made to switch automatically between the top and the bottom +staff. The syntax for this is +@quotation +@example +\autochange @dots{}@var{music}@dots{} +@end example +@end quotation -@node Entering percussion -@subsection Entering percussion +@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. -@cindex percussion -@cindex drums +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 +\autochange \relative @dots{} @dots{} +@end example +@end quotation -Percussion notes may be entered in @code{\drummode} mode, which is -similar to the standard mode for entering notes. Each piece of -percussion has a full name and an abbreviated name, and both can be used -in input files -@lilypond[quote,raggedright,verbatim] -\drums { - hihat hh bassdrum bd -} +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,raggedright] +\context PianoStaff + \autochange \relative c' + { + g4 a b c d r4 a g + } @end lilypond -The complete list of drum names is in the init file -@file{ly/@/drumpitch@/-init@/.ly}. -@c TODO: properly document this. @seealso -Program reference: @internalsref{DrumNoteEvent}. - -@node Percussion staves -@subsection Percussion staves -@cindex percussion -@cindex drums +In this manual: @ref{Manual staff switches}. -A percussion part for more than one instrument typically uses a -multiline staff where each position in the staff refers to one piece -of percussion. +Program reference: @internalsref{AutoChangeMusic}. -To typeset the music, the notes must be interpreted in a -@internalsref{DrumStaff} and @internalsref{DrumVoice} contexts -@lilypond[quote,raggedright,verbatim] -up = \drummode { crashcymbal4 hihat8 halfopenhihat hh hh hh openhihat } -down = \drummode { bassdrum4 snare8 bd r bd sn4 } - \new DrumStaff << - \new DrumVoice { \voiceOne \up } - \new DrumVoice { \voiceTwo \down } - >> -@end lilypond +@refbugs -The above example shows verbose polyphonic notation. The short -polyphonic notation, described in @ref{Polyphony}, can also be used if -the @internalsref{DrumVoices} are instantiated by hand first. For example, +The staff switches may not end up in optimal places. For high +quality output, staff switches should be specified manually. -@lilypond[quote,raggedright,fragment,verbatim] -\new DrumStaff << - \context DrumVoice = "1" { s1 *2 } - \context DrumVoice = "2" { s1 *2 } - \drummode { - bd4 sn4 bd4 sn4 - << - { \repeat unfold 16 hh16 } - \\ - { bd4 sn4 bd4 sn4 } - >> - } ->> -@end lilypond +@code{\autochange} cannot be inside @code{\times}. -There are also other layout possibilities. To use these, set the -property @code{drumStyleTable} in context @internalsref{DrumVoice}. -The following variables have been predefined +Internally, the @code{\partcombine} interprets both arguments as +@code{Voice}s named @code{one} and @code{two}, and then decides when +the parts can be combined. Consequently, if the arguments switch to +differently named @internalsref{Voice} contexts, the events in those +will be ignored. -@table @code -@item drums-style -This is the default. It typesets a typical drum kit on a five-line staff -@lilypond[quote,linewidth=10.0\cm] -nam = \lyricmode { - cymc cyms cymr hh hhc hho hhho hhp - cb hc bd sn ss tomh tommh tomml toml tomfh tomfl } -mus = \drummode { - cymc cyms cymr hh hhc hho hhho hhp \break - cb hc bd sn ss tomh tommh tomml toml tomfh tomfl s16 } -\score { - << \new DrumStaff \with { - \remove Bar_engraver - \remove Time_signature_engraver - \override Stem #'transparent = ##t - \override Stem #'Y-extent-callback = ##f - minimumVerticalExtent = #'(-4.0 . 5.0) - } \mus - \context Lyrics \nam - >> - \layout { - \context { - \Score - \override LyricText #'font-family = #'typewriter - \override BarNumber #'transparent =##T - } - } -} -@end lilypond +@node Manual staff switches +@subsection Manual staff switches -The drum scheme supports six different toms. When there are fewer toms, -simply select the toms that produce the desired result, i.e., to get toms -on the three middle lines you use @code{tommh}, @code{tomml}, and -@code{tomfh}. +@cindex manual staff switches +@cindex staff switch, manual -@item timbales-style -This typesets timbales on a two line staff +Voices can be switched between staves manually, using the command +@example +\change Staff = @var{staffname} @var{music} +@end example -@lilypond[quote,raggedright] -nam = \lyricmode { timh ssh timl ssl cb } -mus = \drummode { timh ssh timl ssl cb s16 } +@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, +@example << - \context DrumStaff \with { - \remove Bar_engraver - \remove Time_signature_engraver - \override Stem #'transparent = ##t - \override Stem #'Y-extent-callback = ##f - \override StaffSymbol #'line-count = #2 - \override StaffSymbol #'staff-space = #2 - minimumVerticalExtent = #'(-3.0 . 4.0) - drumStyleTable = #timbales-style - } \mus - \context Lyrics { - \override LyricText #'font-family = #'typewriter - \nam - } + \context Staff = up @{ + \skip 1 * 10 % @emph{keep staff alive} + @} + \context Staff = down @{ + \skip 1 * 10 % @emph{idem} + @} >> -@end lilypond +@end example -@item congas-style -This typesets congas on a two line staff -@lilypond[quote,raggedright] -nam = \lyricmode { cgh cgho cghm ssh cgl cglo cglm ssl } -mus = \drummode { cgh cgho cghm ssh cgl cglo cglm ssl s16 } +and the @context{Voice} is inserted afterwards -<< - \context DrumStaff \with { - \remove Bar_engraver - \remove Time_signature_engraver - drumStyleTable = #congas-style - \override StaffSymbol #'line-count = #2 +@example +\context Staff = down + \new Voice @{ @dots{} \change Staff = up @dots{} @} +@end example - %% this sucks; it will lengthen stems. - \override StaffSymbol #'staff-space = #2 - \override Stem #'transparent = ##t - \override Stem #'Y-extent-callback = ##f - } \mus - \context Lyrics { - \override LyricText #'font-family = #'typewriter - \nam - } ->> -@end lilypond -@item bongos-style -This typesets bongos on a two line staff - -@lilypond[quote,raggedright] -nam = \lyricmode { boh boho bohm ssh bol bolo bolm ssl } -mus = \drummode { boh boho bohm ssh bol bolo bolm ssl s16 } - -<< - \context DrumStaff\with { - \remove Bar_engraver - \remove Time_signature_engraver - \override StaffSymbol #'line-count = #2 - drumStyleTable = #bongos-style - - %% this sucks; it will lengthen stems. - \override StaffSymbol #'staff-space = #2 - \override Stem #'transparent = ##t - \override Stem #'Y-extent-callback = ##f - } \mus - \context Lyrics { - \override LyricText #'font-family = #'typewriter - \nam - } ->> -@end lilypond - -@item percussion-style -To typeset all kinds of simple percussion on one line staves. - -@lilypond[quote,raggedright] -nam = \lyricmode { tri trio trim gui guis guil cb cl tamb cab mar hc } -mus = \drummode { tri trio trim gui guis guil cb cl tamb cab mar hc s16 } - -<< - \context DrumStaff\with{ - \remove Bar_engraver - drumStyleTable = #percussion-style - \override StaffSymbol #'line-count = #1 - \remove Time_signature_engraver - \override Stem #'transparent = ##t - \override Stem #'Y-extent-callback = ##f - } \mus - \context Lyrics { - \override LyricText #'font-family = #'typewriter - \nam - } ->> -@end lilypond -@end table - -If you do not like any of the predefined lists you can define your own -list at the top of your file - -@lilypond[quote,raggedright,verbatim] -#(define mydrums '( - (bassdrum default #f -1) - (snare default #f 0) - (hihat cross #f 1) - (pedalhihat xcircle "stopped" 2) - (lowtom diamond #f 3))) -up = \drummode { hh8 hh hh hh hhp4 hhp } -down = \drummode { bd4 sn bd toml8 toml } - -\new DrumStaff << - \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) - \new DrumVoice { \voiceOne \up } - \new DrumVoice { \voiceTwo \down } ->> -@end lilypond - - -@seealso - -Init files: @file{ly/@/drumpitch@/-init@/.ly}. - -Program reference: @internalsref{DrumStaff}, @internalsref{DrumVoice}. - -@refbugs - -Because general MIDI does not contain rim shots, the sidestick is used -for this purpose instead. - - -@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 -@c Is this `harp' or `harpsichord'? -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 - -@refbugs - -Dynamics are not centered, but workarounds do exist. See the -``piano centered dynamics'' template in @ref{Piano templates}. - -@cindex cross staff stem -@cindex stem, cross staff -@cindex distance between staves in piano music - -The distance between the two staves is the same for all systems in the -score. It is possible to override this per system, but it does require -an arcane command incantation. See -@inputfileref{input/@/test,piano@/-staff@/-distance@/.ly}. - - -@node Automatic staff changes -@subsection 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 - -@quotation -@example -\autochange @dots{}@var{music}@dots{} -@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. - -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 -\autochange \relative @dots{} @dots{} -@end example -@end quotation - - -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,raggedright] -\context PianoStaff - \autochange \relative c' - { - g4 a b c d r4 a g - } -@end lilypond - - -@seealso - -In this manual: @ref{Manual staff switches}. - -Program reference: @internalsref{AutoChangeMusic}. - - - -@refbugs - -The staff switches may not end up in optimal places. For high -quality output, staff switches should be specified manually. - - -@code{\autochange} cannot be inside @code{\times}. - -Internally, the @code{\partcombine} interprets both arguments as -@code{Voice}s named @code{one} and @code{two}, and then decides when -the parts can be combined. Consequently, if the arguments switch to -differently named @internalsref{Voice} contexts, the events in those -will be ignored. - - -@node Manual staff switches -@subsection Manual staff switches - -@cindex manual staff switches -@cindex staff switch, manual - -Voices can be switched between staves manually, using the command -@example -\change Staff = @var{staffname} @var{music} -@end example - -@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, - -@example -<< - \context Staff = up @{ - \skip 1 * 10 % @emph{keep staff alive} - @} - \context Staff = down @{ - \skip 1 * 10 % @emph{idem} - @} ->> -@end example - - -and the @context{Voice} is inserted afterwards - -@example -\context Staff = down - \new Voice @{ @dots{} \change Staff = up @dots{} @} -@end example - - -@node Pedals -@subsection Pedals -@cindex Pedals +@node Pedals +@subsection Pedals +@cindex Pedals Pianos have pedals that alter the way sound is produced. Generally, a piano has three pedals, sustain, una corda, and sostenuto. @@ -562,1212 +288,1479 @@ noFlag = \once \override Stem #'flag-style = #'no-flag @end lilypond -@node Vocal music -@section Vocal music - -There are three different issues when printing vocal music +@node Chord names +@section Chord names -@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. +@menu +* Printing chord names:: +* Chords mode:: +* Printing chord names:: +@end menu -@item -Song texts must be printed as text, not as notes. -@item -Song texts must be aligned with the notes of their melody. -@end itemize +@c awkward name; awkward section name. +@c still, the Basic "chords" seems like a good name... :( +@node Printing chord names +@subsection Printing chord names +@cindex Chord names -The simplest solution for printing music uses the @code{\addlyrics} -function to solve all these problems at once. However, these -three functions can be controlled separately, which is necessary -for complex vocal music. +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 -@menu -* Setting simple songs:: -* Entering lyrics:: -* Hyphens and extenders:: -* The Lyrics context:: -* Flexibility in alignment:: -* More stanzas:: -* Ambitus:: -* Other vocal issues:: -@end menu - -@node Setting simple songs -@subsection Setting simple songs - -The easiest way to add lyrics to a melody is to append -@cindex \addlyrics -@example -\addlyrics @{ @var{the lyrics} @} -@end example - -@noindent -to a melody. Here is an example, +@lilypond[quote,raggedright,verbatim,raggedright] +twoWays = \transpose c c' { + \chordmode { + c1 f:sus4 bes/f + } + + + +} -@lilypond[raggedright,verbatim,fragment,quote] -\time 3/4 -\relative { c2 e4 g2. } -\addlyrics { play the game } +<< \context ChordNames \twoWays + \context Voice \twoWays >> @end lilypond -More stanzas can be added by adding more -@code{\addlyrics} sections +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. -@lilypond[raggedright,verbatim,fragment,quote] -\time 3/4 -\relative { c2 e4 g2. } -\addlyrics { play the game } -\addlyrics { speel het spel } -\addlyrics { joue le jeu } -@end lilypond -@c TODO - this isn't such a great place for this note, but I can't -@c find a better place without rearranging a lot of lyric stuff. -@c It's yet another thing to look at post-3.0. +@node Chords mode +@subsection Chords mode +@cindex Chords mode -The @code{\addlyrics} command is actually just a convienient way -to write a more complicated LilyPond structure that sets up the -lyrics. You should use @code{\addlyrics} unless you need to do -fancy things, in which case you should investigate -@code{\lyricsto} or @code{\lyricmode}. +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 -@example -@{ MUSIC @} -\addlyrics @{ LYRICS @} -@end example +@lilypond[quote,raggedright,fragment,verbatim] +\chordmode { es4. d8 c2 } +@end lilypond @noindent -is the same as - -@example -\context Voice = blah @{ music @} -\lyricsto "blah" \new lyrics @{ LYRICS @} -@end example - -@refbugs +The mode is introduced by the keyword @code{\chordmode}. -@code{\addlyrics} cannot handle polyphony. +@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) +@lilypond[quote,fragment,verbatim] +\chordmode { e1:m e1:7 e1:m7 } +@end lilypond +The first number following the root is taken to be the `type' of the +chord, thirds are added to the root until it reaches the specified +number +@lilypond[quote,fragment,verbatim] +\chordmode { c:3 c:5 c:6 c:7 c:8 c:9 c:10 c:11 } +@end lilypond -@node Entering lyrics -@subsection Entering lyrics +@cindex root of chord +@cindex additions, in chords +@cindex removals, in chords +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[quote,verbatim,fragment] +\chordmode { c:5.6 c:3.7.8 c:3.6.13 } +@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 +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 -@cindex lyrics -@cindex @code{\lyricmode} -@cindex punctuation +Modifiers can be used to change pitches. The following modifiers are +supported -Lyrics are entered in a special input mode. This mode is 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, -@example -\lyricmode @{ Twin-4 kle4 twin- kle litt- le star2 @} -@end example +@table @code +@item m +The minor chord. This modifier lowers the 3rd and (if present) the 7th step. +@item dim +The diminished chord. This modifier lowers the 3rd, 5th and (if present) +the 7th step. -A word lyrics mode 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. One important consequence of this -is that a word can end with @code{@}}. The following example is -usually a mistake in the input file. The syllable includes a @code{@}}, so the -opening brace is not balanced -@example -\lyricmode @{ twinkle@} -@end example +@item aug +The augmented chord. This modifier raises the 5th step. -@cindex @code{\property}, in @code{\lyricmode} -@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 -@example -\override Score . LyricText #'font-shape = #'italic -@end example +@item maj +The major 7th chord. This modifier raises the 7th step if present. -@cindex @code{_} -@cindex spaces, in lyrics -@cindex quotes, in lyrics +@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 -Any @code{_} character that appears in an unquoted word is converted -to a space. This provides a mechanism for introducing spaces into words -without using quotes. Quoted words can also be used in Lyrics mode to -specify words that cannot be written with the above rules. The -following example incorporates double quotes +Modifiers can be mixed with additions +@lilypond[quote,verbatim,fragment] + \chordmode { c:sus4 c:7sus4 c:dim7 c:m6 } +@end lilypond -@example -\lyricmode @{ He said: "\"Let" my peo ple "go\"" @} -@end example +@cindex modifiers, in chords. +@cindex @code{aug} +@cindex @code{dim} +@cindex @code{maj} +@cindex @code{sus} +@cindex @code{m} -This example is slightly academic, since it gives better looking -results using single quotes, @code{``} and @code{''} -@example -\lyricmode @{ He said: ``Let my peo ple go'' @} -@end example +Since an unaltered 11 does not sound good when combined with an +unaltered 3, the 11 is removed in this case (unless it is added +explicitly) +@lilypond[quote,raggedright,fragment,verbatim] +\chordmode { c:13 c:13.11 c:m13 } +@end lilypond +@cindex @code{/} -The full definition of a word start in Lyrics mode is somewhat more -complex. +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,raggedright,fragment,verbatim] +\chordmode { c1 c/g c/f } +@end lilypond +@cindex @code{/+} -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{^}. +A bass note can be added instead transposed out of the chord, +by using @code{/+}@var{pitch}. +@lilypond[quote,raggedright,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. -@seealso -Program reference: events @internalsref{LyricEvent}, and -@internalsref{LyricText}. @refbugs -The definition of lyrics mode is too complex. +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,raggedright,verbatim,fragment] +\chordmode { c:5.5-.5+ } +@end lilypond -@node Hyphens and extenders -@subsection Hyphens and extenders -@cindex hyphens +@node Printing chord names +@subsection Printing chord names -Centered hyphens are entered as `@code{-}@code{-}' between syllables. -The hyphen will have variable length depending on the space between -the syllables and it will be centered between the syllables. +@cindex printing chord names +@cindex chord names +@cindex chords -@cindex melisma -@cindex extender +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{>} -When a lyric is sung over many notes (this is called a melisma), this is -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 -@code{__}. +@lilypond[quote,verbatim,raggedright] +harmonies = { + \chordmode {a1 b c} +} +<< + \context ChordNames \harmonies + \context Staff \harmonies +>> +@end lilypond -@ignore -FIXME: check that this compiles and displays correctly. I don't want -to commit this part blindly. - -In tighly engraved music, hyphens can be removed. In some languages -(e.g. German and Hungarian), hyphens should not disappear, since -spelling depends on hyphenation. For that purpose, hyphens can be -forced to remain by overriding @code{minimum-length} of -the @code{LyricHyphen} grob. - -(code from 2.2) -\score { -<< \notes \new Staff \relative c'' { \time 1/4 c16[ c c c] -\time 1/4 -c16[ c c c] -\time 1/4 -c16[ c c c] +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 +@lilypond[quote,verbatim,raggedright] +harmonies = \chordmode { + c1:m c:m \break c:m c:m d } - \lyrics \new Lyrics \with { - % Otherwise lyrics are so far apart that hyphens don't disappear - \override SeparationItem #'padding = #0.0 - }{ bla -- bla -- bla -- bla -- - bla -- bla -- bla -- bla -- - - \override LyricHyphen #'minimum-length = #0.7 - \override LyricHyphen #'spacing-procedure = - #Hyphen_spanner::set_spacing_rods +<< + \context ChordNames { + \set chordChanges = ##t + \harmonies } + \context Staff \transpose c c' \harmonies +>> +@end lilypond - bla -- bla -- bla -- bla - }>> - \paper { - indent = 0.0 \cm - linewidth = 3.4 \cm +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. - \context { - \StaffContext \remove "Time_signature_engraver" - } - - } - +@lilypond[raggedright,verbatim] +\new ChordNames \with { + \override BarLine #'bar-size = #4 + voltaOnThisStaff = ##t + \consists Bar_engraver + \consists "Volta_engraver" } -@end ignore - - -@seealso - -Program reference: @internalsref{HyphenEvent}, -@internalsref{ExtenderEvent}, @internalsref{LyricHyphen}, and -@internalsref{LyricExtender} - - - -@node The Lyrics context -@subsection The Lyrics context +\repeat volta 2 \chordmode { + f1:maj f:7 bes:7 + c:maj +} \alternative { + es e +} +@end lilypond -Lyrics are printed by interpreting them in a @internalsref{Lyrics} context -@example -\context Lyrics \lyricmode @dots{} -@end example +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 -@cindex automatic syllable durations -@cindex @code{\lyricsto} -@cindex lyrics and melodies +@table @code +@cindex @code{chordNameExceptions} +@item chordNameExceptions +This is a list that contains the chords that have special formatting. -This will place the lyrics according to the durations that were -entered. The lyrics can also be aligned under a given melody -automatically. In this case, it is no longer necessary to enter the -correct duration for each syllable. This is achieved by combining the -melody and the lyrics with the @code{\lyricsto} expression +The exceptions list should be encoded as @example -\lyricsto @var{name} \new Lyrics @dots{} +@{ 1 \markup @{ \super "7" "wahh" @} @} @end example -This aligns the lyrics to the -notes of the @internalsref{Voice} context called @var{name}, which has -to 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. - -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 -\context ChoirStaff << - \context Lyrics = sopranoLyrics @{ s1 @} - \context Voice = soprano @{ @emph{music} @} - \context Lyrics = tenorLyrics @{ s1 @} - \context Voice = tenor @{ @emph{music} @} ->> +(sequential-music-to-chord-exceptions chExceptionMusic #t) @end example -and then combine the appropriate melodies and lyric lines +Then, @example -\lyricsto "soprano" \context Lyrics = sopranoLyrics - @emph{the lyrics} +(append + (sequential-music-to-chord-exceptions chExceptionMusic #t) + ignatzekExceptions) @end example +adds the new exceptions to the default ones, which are defined in +@file{ly/@/chord@/-modifier@/-init@/.ly}. -@noindent -The final input would resemble - -@example -<<\context ChoirStaff << @emph{setup the music} >> - \lyricsto "soprano" @emph{etc} - \lyricsto "alto" @emph{etc} - @emph{etc} ->> -@end example +For an example of tuning this property, see also +@inputfileref{input/@/regression,chord@/-name@/-exceptions@/.ly}. +@cindex exceptions, chord names. -The @code{\lyricsto} command detects melismata: 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., +@cindex @code{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 +@inputfileref{input/@/regression,chord@/-name@/-major7@/.ly} for an example. -@lilypond[quote,relative=2,raggedright,fragment,verbatim] -<< - \context Voice = "lala" { - \time 3/4 - f4 g8 - \melisma - f e f - \melismaEnd - e2 - } - \lyricsto "lala" \new Lyrics { - la di __ daah - } ->> +@cindex @code{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,raggedright,fragment,verbatim] +\context ChordNames \chordmode { + c:7sus4 + \set chordNameSeparator + = \markup { \typewriter "|" } + c:7sus4 +} @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. +@cindex @code{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 ``H'' for a +B-chord) can be produced by storing a new function in this property. -@ignore +@cindex @code{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. -@c nonformation: +@end table -The criteria for deciding melismata can -be tuned with the property @code{melismaBusyProperties}. See -@internalsref{Melisma_translator} in the program reference for more -information. +The predefined variables @code{\germanChords}, +@code{\semiGermanChords} set these variables. The effect is +demonstrated here, -@end ignore +@lilypondfile[raggedright]{chord-names-german.ly} -Lyrics can also be entered without @code{\lyricsto}. In this case the -duration of each syllable must be entered explicitly, for example, +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 described in the input file +@inputfileref{input/@/test,chord@/-names@/-jazz@/.ly}. -@example -play2 the4 game2. -sink2 or4 swim2. -@end example +@cindex Banter +@cindex jazz chords +@cindex chords, jazz -The alignment to a melody can be specified with the -@code{associatedVoice} property, -@example -\set associatedVoice = #"lala" -@end example +@refcommands -@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. +@cindex @code{\germanChords} +@code{\germanChords}, +@cindex @code{\semiGermanChords} +@code{\semiGermanChords}. -Here is an example demonstrating manual lyric durations, -@lilypond[relative=1,raggedright,verbatim,fragment,quote] -<< \context Voice = melody { - \time 3/4 - c2 e4 g2. - } - \new Lyrics \lyricmode { - \set associatedVoice = #"melody" - play2 the4 game2. - } >> -@end lilypond -@cindex SATB -@cindex choral score -A complete example of a SATB score setup is in section -@ref{Vocal ensembles}. +@seealso +Examples: @inputfileref{input/@/regression,chord@/-name@/-major7@/.ly}, +@inputfileref{input/@/regression,chord@/-name@/-exceptions@/.ly}, +@inputfileref{input/@/test,chord@/-names@/-jazz@/.ly}. -@refcommands -@code{\melisma}, @code{\melismaEnd} -@cindex @code{\melismaEnd} -@cindex @code{\melisma} +Init files: @file{scm/@/chords@/-ignatzek@/.scm}, and +@file{scm/@/chord@/-entry@/.scm}. -@seealso -Program reference: @internalsref{LyricCombineMusic}, -@internalsref{Lyrics}, @internalsref{Melisma_translator}. +@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. -@inputfileref{input/@/regression,lyric@/-combine@/-new@/.ly}. -@c TODO: make separate section for melismata -@refbugs +@node Vocal music +@section Vocal music -Melismata are not detected automatically, and extender lines must be -inserted by hand. +There are three different issues when printing 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. -@c TODO: document \new Staff << Voice \lyricsto >> bug +@item +Song texts must be printed as text, not as notes. -@node Flexibility in alignment -@subsection Flexibility in alignment +@item +Song texts must be aligned with the notes of their melody. +@end itemize +The simplest solution for printing music uses the @code{\addlyrics} +function to solve all these problems at once. However, these +three functions can be controlled separately, which is necessary +for complex vocal music. -Often, different stanzas of one song are put to one melody in slightly -differing ways. Such variations can still be captured with -@code{\lyricsto}. -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. +@menu +* Setting simple songs:: +* Entering lyrics:: +* Hyphens and extenders:: +* The Lyrics context:: +* Flexibility in alignment:: +* More stanzas:: +* Ambitus:: +* Other vocal issues:: +@end menu -There has 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, +@node Setting simple songs +@subsection Setting simple songs -@lilypond[verbatim,raggedright,quote] -<< - \relative \context 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 +The easiest way to add lyrics to a melody is to append +@cindex \addlyrics +@example +\addlyrics @{ @var{the lyrics} @} +@end example +@noindent +to a melody. Here is an example, -The @code{ignoreMelismata} applies to the syllable ``fas'', so it -should be entered before ``go''. +@lilypond[raggedright,verbatim,fragment,quote] +\time 3/4 +\relative { c2 e4 g2. } +\addlyrics { play the game } +@end lilypond -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, +More stanzas can be added by adding more +@code{\addlyrics} sections -@lilypond[verbatim,raggedright,quote] -\relative { c c g' } -\addlyrics { - twin -- \skip 4 - kle -} +@lilypond[raggedright,verbatim,fragment,quote] +\time 3/4 +\relative { c2 e4 g2. } +\addlyrics { play the game } +\addlyrics { speel het spel } +\addlyrics { joue le jeu } @end lilypond -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 +@c TODO - this isn't such a great place for this note, but I can't +@c find a better place without rearranging a lot of lyric stuff. +@c It's yet another thing to look at post-3.0. -@lilypond[raggedright,quote] -<< - \relative \context Voice = "lahlah" { - \set Staff.autoBeaming = ##f - c4 - << - \context 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 +The @code{\addlyrics} command is actually just a convienient way +to write a more complicated LilyPond structure that sets up the +lyrics. You should use @code{\addlyrics} unless you need to do +fancy things, in which case you should investigate +@code{\lyricsto} or @code{\lyricmode}. + +@example +@{ MUSIC @} +\addlyrics @{ LYRICS @} +@end example @noindent -the text for the first stanza is set to a melody called ``lahlah'', +is the same as @example -\new Lyrics \lyricsto "lahlah" @{ - Ju -- ras -- sic Park -@} +\context Voice = blah @{ music @} +\lyricsto "blah" \new lyrics @{ LYRICS @} @end example +@refbugs + +@code{\addlyrics} cannot handle polyphony. -The second stanza initially is set to the @code{lahlah} context, but -for the syllable ``ran'', it switches to a different melody. -This is achieved with + +@node Entering lyrics +@subsection Entering lyrics + + +@cindex lyrics +@cindex @code{\lyricmode} +@cindex punctuation + +Lyrics are entered in a special input mode. This mode is 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, @example -\set associatedVoice = alternative +\lyricmode @{ Twin-4 kle4 twin- kle litt- le star2 @} @end example -@noindent -Here, @code{alternative} is the name of the @code{Voice} context -containing the triplet. - -Again, the command must be one syllable too early, before ``Ty'' in -this case. +A word lyrics mode 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. One important consequence of this +is that a word can end with @code{@}}. The following example is +usually a mistake in the input file. The syllable includes a @code{@}}, so the +opening brace is not balanced @example -\new Lyrics \lyricsto "lahlah" @{ - \set associatedVoice = alternative % applies to "ran" - Ty -- - ran -- - no -- - \set associatedVoice = lahlah % applies to "rus" - sau -- rus Rex -@} +\lyricmode @{ twinkle@} @end example +@cindex @code{\property}, in @code{\lyricmode} @noindent -The underlay is switched back to the starting situation by assigning -@code{lahlah} to @code{associatedVoice}. +Similarly, a period which follows an alphabetic sequence is included in +the resulting string. As a consequence, spaces must be inserted around +property commands +@example +\override Score . LyricText #'font-shape = #'italic +@end example +@cindex @code{_} +@cindex spaces, in lyrics +@cindex quotes, in lyrics +Any @code{_} character that appears in an unquoted word is converted +to a space. This provides a mechanism for introducing spaces into words +without using quotes. Quoted words can also be used in Lyrics mode to +specify words that cannot be written with the above rules. The +following example incorporates double quotes +@example +\lyricmode @{ He said: "\"Let" my peo ple "go\"" @} +@end example -@node More stanzas -@subsection More stanzas +This example is slightly academic, since it gives better looking +results using single quotes, @code{``} and @code{''} +@example +\lyricmode @{ He said: ``Let my peo ple go'' @} +@end example -@cindex phrasing, in lyrics +The full definition of a word start in Lyrics mode is somewhat more +complex. -@cindex stanza number -@cindex singer's names -@cindex name of singer +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{^}. -Stanza numbers can be added by setting @code{stanza}, e.g., -@lilypond[quote,raggedright,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, che -- ri, je t'aime -} -@end lilypond - -These numbers are put just before the start of first syllable. -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{vocNam}. +@seealso +Program reference: events @internalsref{LyricEvent}, and +@internalsref{LyricText}. -@lilypond[fragment,raggedright,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 +@refbugs -@seealso +The definition of lyrics mode is too complex. -Program reference: Layout objects @internalsref{LyricText} and -@internalsref{VocalName}. Music expressions -@internalsref{LyricEvent}. +@node Hyphens and extenders +@subsection Hyphens and extenders +@cindex hyphens +Centered hyphens are entered as `@code{-}@code{-}' between syllables. +The hyphen will have variable length depending on the space between +the syllables and it will be centered between the syllables. -@node Ambitus -@subsection Ambitus -@cindex ambitus +@cindex melisma +@cindex extender -The term @emph{ambitus} denotes a range of pitches for a given voice -in a part of music. It may also denote the pitch range that a musical -instrument is capable of playing. Ambits are printed on vocal parts, -so performers can easily determine it meets their capabilities. +When a lyric is sung over many notes (this is called a melisma), this is +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 +@code{__}. -Ambits are denoted at the beginning of a piece near the initial clef. -The range is graphically specified by two note heads that represent the -minimum and maximum pitch. To print such ambits, add the -@internalsref{Ambitus_engraver} to the @internalsref{Voice} context, -for example, +@ignore +FIXME: check that this compiles and displays correctly. I don't want +to commit this part blindly. -@example -\layout @{ - \context @{ - \Voice - \consists Ambitus_engraver - @} -@} -@end example +In tighly engraved music, hyphens can be removed. In some languages +(e.g. German and Hungarian), hyphens should not disappear, since +spelling depends on hyphenation. For that purpose, hyphens can be +forced to remain by overriding @code{minimum-length} of +the @code{LyricHyphen} grob. -This results in the following output +(code from 2.2) +\score { +<< \notes \new Staff \relative c'' { \time 1/4 c16[ c c c] +\time 1/4 +c16[ c c c] +\time 1/4 +c16[ c c c] -@lilypond[quote,raggedright] -\layout { - \context { - \Staff - \consists Ambitus_engraver - } } + \lyrics \new Lyrics \with { + % Otherwise lyrics are so far apart that hyphens don't disappear + \override SeparationItem #'padding = #0.0 + }{ bla -- bla -- bla -- bla -- + bla -- bla -- bla -- bla -- -\relative \new Staff { - as'' c e2 cis,2 -} -@end lilypond + \override LyricHyphen #'minimum-length = #0.7 + \override LyricHyphen #'spacing-procedure = + #Hyphen_spanner::set_spacing_rods -If you have multiple voices in a single staff and you want a single -ambitus per staff rather than per each voice, add the -@internalsref{Ambitus_engraver} to the @internalsref{Staff} context -rather than to the @internalsref{Voice} context. Here is an example, + bla -- bla -- bla -- bla + }>> + \paper { + indent = 0.0 \cm + linewidth = 3.4 \cm -@lilypond[verbatim,raggedright,quote] -\new Staff \with { - \consists "Ambitus_engraver" + \context { + \StaffContext \remove "Time_signature_engraver" + } + + } + } -<< - \new Voice \with { - \remove "Ambitus_engraver" - } \relative c'' { - \override Ambitus #'X-offset-callbacks - = #(list (lambda (grob axis) -1.0)) - \voiceOne - c4 a d e f2 - } - \new Voice \with { - \remove "Ambitus_engraver" - } \relative c' { - \voiceTwo - es4 f g as b2 - } ->> -@end lilypond - -@noindent -This example uses one advanced feature, - -@example -\override Ambitus #'X-offset-callbacks - = #(list (lambda (grob axis) -1.0)) -@end example +@end ignore -@noindent -This code moves the ambitus to the left. The same effect could have -been achieved with @code{extra-offset}, but then the formatting system -would not reserve space for the moved object. @seealso -Program reference: @internalsref{Ambitus}, -@internalsref{AmbitusLine}, @internalsref{AmbitusNoteHead}, -@internalsref{AmbitusAccidental}. +Program reference: @internalsref{HyphenEvent}, +@internalsref{ExtenderEvent}, @internalsref{LyricHyphen}, and +@internalsref{LyricExtender} -Examples: @inputfileref{input/@/regression,ambitus@/.ly}. -@refbugs -There is no collision handling in the case of multiple per-voice -ambitus. +@node The Lyrics context +@subsection The Lyrics context -@node Other vocal issues -@subsection Other vocal issue -@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 a @internalsref{Lyrics} context +@example +\context Lyrics \lyricmode @dots{} +@end example -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 +@cindex automatic syllable durations +@cindex @code{\lyricsto} +@cindex lyrics and melodies -You can display alternate (or divisi) lyrics by naming voice -contexts and attaching lyrics to those specific contexts. +This will place the lyrics according to the durations that were +entered. The lyrics can also be aligned under a given melody +automatically. In this case, it is no longer necessary to enter the +correct duration for each syllable. This is achieved by combining the +melody and the lyrics with the @code{\lyricsto} expression +@example +\lyricsto @var{name} \new Lyrics @dots{} +@end example -@lilypond[verbatim,raggedright,quote] -\score{ << - \context Voice = "melody" { - \relative c' { - c4 - << - { \voiceOne c8 e } - \context Voice = splitpart { \voiceTwo c4 } - >> - \oneVoice c4 c | c - } - } - \new Lyrics \lyricsto "melody" { we shall not o- ver- come } - \new Lyrics \lyricsto "splitpart" { shall } ->> } -@end lilypond +This aligns the lyrics to the +notes of the @internalsref{Voice} context called @var{name}, which has +to 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. +For different or more complex orderings, the best way is to setup the +hierarchy of staves and lyrics first, e.g., +@example +\context ChoirStaff << + \context Lyrics = sopranoLyrics @{ s1 @} + \context Voice = soprano @{ @emph{music} @} + \context Lyrics = tenorLyrics @{ s1 @} + \context Voice = tenor @{ @emph{music} @} +>> +@end example +and then combine the appropriate melodies and lyric lines +@example +\lyricsto "soprano" \context Lyrics = sopranoLyrics + @emph{the lyrics} +@end example -You can use this trick to display different lyrics for a repeated -section. +@noindent +The final input would resemble -@lilypond[verbatim,raggedright,quote] -\score{ << - \context Voice = melody \relative c' { - c2 e | g e | c1 | - \context Voice = verse \repeat volta 2 {c4 d e f | g1 | } - a2 b | c1} - \lyricsto melody \context Lyrics = mainlyrics \lyricmode { - do mi sol mi do - la si do } - \lyricsto verse \context Lyrics = mainlyrics \lyricmode { - do re mi fa sol } - \lyricsto verse \context Lyrics = repeatlyrics \lyricmode { - dodo rere mimi fafa solsol } +@example +<<\context ChoirStaff << @emph{setup the music} >> + \lyricsto "soprano" @emph{etc} + \lyricsto "alto" @emph{etc} + @emph{etc} >> -} -@end lilypond - +@end example -@node Other instrument specific notation -@section Other instrument specific notation -This section includes extra information for writing string music, and may -include extra information for other instruments in the future. +The @code{\lyricsto} command detects melismata: 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., -@menu -* Harmonic notes:: -@end menu - -@node Harmonic notes -@subsection Harmonic notes - -@cindex artificial harmonics -@cindex harmonics - -Artificial harmonics are notated with a different notehead style. They -are entered by marking the harmonic pitch with @code{\harmonic}. - -@lilypond[raggedright,verbatim,quote,fragment] -4 +@lilypond[quote,relative=2,raggedright,fragment,verbatim] +<< + \context Voice = "lala" { + \time 3/4 + f4 g8 + \melisma + f e f + \melismaEnd + e2 + } + \lyricsto "lala" \new Lyrics { + la di __ daah + } +>> @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. -@node Tablatures -@section Tablatures +@ignore -@cindex tablature -@cindex guitar tablature +@c nonformation: -Tablature notation is used for notating music for plucked string -instruments. Pitches are not denoted with note heads, but by -indicating on which string and fret a note must be played. LilyPond -offers limited support for tablature. +The criteria for deciding melismata can +be tuned with the property @code{melismaBusyProperties}. See +@internalsref{Melisma_translator} in the program reference for more +information. -@menu -* Tablatures basic:: -* Non-guitar tablatures:: -@end menu +@end ignore -@node Tablatures basic -@subsection Tablatures basic -@cindex Tablatures basic +Lyrics can also be entered without @code{\lyricsto}. In this case the +duration of each syllable must be entered explicitly, for example, -The string number associated to a note is given as a backslash -followed by a number, e.g., @code{c4\3} for a C quarter on the third -string. By default, string 1 is the highest one, and the tuning -defaults to the standard guitar tuning (with 6 strings). The notes -are printed as tablature, by using @internalsref{TabStaff} and -@internalsref{TabVoice} contexts +@example +play2 the4 game2. +sink2 or4 swim2. +@end example -@lilypond[quote,raggedright,fragment,verbatim] -\context TabStaff { - a,4\5 c'\2 a\3 e'\1 - e\4 c'\2 a\3 e'\1 -} -@end lilypond +The alignment to a melody can be specified with the +@code{associatedVoice} property, -@cindex @code{minimumFret} -@cindex fret +@example +\set associatedVoice = #"lala" +@end example -When no string is specified, the first string that does not give a -fret number less than @code{minimumFret} is selected. The default -value for @code{minimumFret} is 0 +@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, -@example -e16 fis gis a b4 -\set TabStaff.minimumFret = #8 -e16 fis gis a b4 -@end example -@lilypond[quote,raggedright] -frag = { - \key e \major - e16 fis gis a b4 - \set TabStaff.minimumFret = #8 - e16 fis gis a b4 -} - \context StaffGroup << - \context Staff { \clef "G_8" \frag } - \context TabStaff { \frag } - >> +@lilypond[relative=1,raggedright,verbatim,fragment,quote] +<< \context Voice = melody { + \time 3/4 + c2 e4 g2. + } + \new Lyrics \lyricmode { + \set associatedVoice = #"melody" + play2 the4 game2. + } >> @end lilypond -@seealso +@cindex SATB +@cindex choral score -Program reference: @internalsref{TabStaff}, @internalsref{TabVoice}, and -@internalsref{StringNumberEvent}. +A complete example of a SATB score setup is in section +@ref{Vocal ensembles}. -@refbugs -Chords are not handled in a special way, and hence the automatic -string selector may easily select the same string to two notes in a -chord. +@refcommands +@code{\melisma}, @code{\melismaEnd} +@cindex @code{\melismaEnd} +@cindex @code{\melisma} -@node Non-guitar tablatures -@subsection Non-guitar tablatures -@cindex Non-guitar tablatures +@seealso -You can change the number of strings, by setting the number of lines -in the @internalsref{TabStaff}. +Program reference: @internalsref{LyricCombineMusic}, +@internalsref{Lyrics}, @internalsref{Melisma_translator}. -You can change the tuning of the strings. A string tuning is given as -a Scheme list with one integer number for each string, the number -being the pitch (measured in semitones relative to middle C) of an -open string. The numbers specified for @code{stringTuning} are the -numbers of semitones to subtract or add, starting the specified pitch -by default middle C, in string order. In the next example, -@code{stringTunings} is set for the pitches e, a, d, and g -@lilypond[quote,raggedright,fragment,verbatim] -\context TabStaff << - \set TabStaff.stringTunings = #'(-5 -10 -15 -20) - { - a,4 c' a e' e c' a e' - } ->> -@end lilypond +@inputfileref{input/@/regression,lyric@/-combine@/-new@/.ly}. +@c TODO: make separate section for melismata @refbugs -No guitar special effects have been implemented. - -@seealso - -Program reference: @internalsref{Tab_note_heads_engraver}. +Melismata are not detected automatically, and extender lines must be +inserted by hand. -@node Popular music -@section Popular music +@c TODO: document \new Staff << Voice \lyricsto >> bug -This section discusses issues that arise when writing popular music. +@node Flexibility in alignment +@subsection Flexibility in alignment -@menu -* Chord names:: -* Chords mode:: -* Printing chord names:: -* Fret diagrams:: -@end menu -@node Chord names -@subsection Chord names -@cindex Chords +Often, different stanzas of one song are put to one melody in slightly +differing ways. Such variations can still be captured with +@code{\lyricsto}. -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 +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 has 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, -@lilypond[quote,raggedright,verbatim,raggedright] -twoWays = \transpose c c' { - \chordmode { - c1 f:sus4 bes/f +@lilypond[verbatim,raggedright,quote] +<< + \relative \context Voice = "lahlah" { + \set Staff.autoBeaming = ##f + c4 + \slurDotted + f8.[( g16]) + a4 } - - - -} - -<< \context ChordNames \twoWays - \context Voice \twoWays >> + \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 -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. - -@node Chords mode -@subsection Chords mode -@cindex Chords mode - -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 - -@lilypond[quote,raggedright,fragment,verbatim] -\chordmode { es4. d8 c2 } -@end lilypond - -@noindent -The mode is introduced by the keyword @code{\chordmode}. +The @code{ignoreMelismata} applies to the syllable ``fas'', so it +should be entered before ``go''. -@cindex chord entry -@cindex chord mode +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, -Other chords may be entered by suffixing a colon and introducing a -modifier (which may include a number if desired) -@lilypond[quote,fragment,verbatim] -\chordmode { e1:m e1:7 e1:m7 } -@end lilypond -The first number following the root is taken to be the `type' of the -chord, thirds are added to the root until it reaches the specified -number -@lilypond[quote,fragment,verbatim] -\chordmode { c:3 c:5 c:6 c:7 c:8 c:9 c:10 c:11 } +@lilypond[verbatim,raggedright,quote] +\relative { c c g' } +\addlyrics { + twin -- \skip 4 + kle +} @end lilypond -@cindex root of chord -@cindex additions, in chords -@cindex removals, in chords +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 -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[quote,verbatim,fragment] -\chordmode { c:5.6 c:3.7.8 c:3.6.13 } +@lilypond[raggedright,quote] +<< + \relative \context Voice = "lahlah" { + \set Staff.autoBeaming = ##f + c4 + << + \context 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 -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- } + +@noindent +the text for the first stanza is set to a melody called ``lahlah'', + +@example +\new Lyrics \lyricsto "lahlah" @{ + Ju -- ras -- sic Park +@} +@end example + + +The second stanza initially is set to the @code{lahlah} context, but +for the syllable ``ran'', it switches to a different melody. +This is achieved with +@example +\set associatedVoice = alternative +@end example + +@noindent +Here, @code{alternative} is the name of the @code{Voice} context +containing the triplet. + +Again, the command must be one syllable too early, before ``Ty'' in +this case. + +@example +\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 +The underlay is switched back to the starting situation by assigning +@code{lahlah} to @code{associatedVoice}. + + + + +@node More stanzas +@subsection More stanzas + +@cindex phrasing, in lyrics + + +@cindex stanza number +@cindex singer's names +@cindex name of singer + +Stanza numbers can be added by setting @code{stanza}, e.g., + +@lilypond[quote,raggedright,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, che -- ri, je t'aime +} @end lilypond -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 } + +These numbers are put just before the start of first syllable. + +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{vocNam}. + + +@lilypond[fragment,raggedright,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 + +@seealso + +Program reference: Layout objects @internalsref{LyricText} and +@internalsref{VocalName}. Music expressions +@internalsref{LyricEvent}. + + + +@node Ambitus +@subsection Ambitus +@cindex ambitus + +The term @emph{ambitus} denotes a range of pitches for a given voice +in a part of music. It may also denote the pitch range that a musical +instrument is capable of playing. Ambits are printed on vocal parts, +so performers can easily determine it meets their capabilities. + +Ambits are denoted at the beginning of a piece near the initial clef. +The range is graphically specified by two note heads that represent the +minimum and maximum pitch. To print such ambits, add the +@internalsref{Ambitus_engraver} to the @internalsref{Voice} context, +for example, + +@example +\layout @{ + \context @{ + \Voice + \consists Ambitus_engraver + @} +@} +@end example + +This results in the following output + +@lilypond[quote,raggedright] +\layout { + \context { + \Staff + \consists Ambitus_engraver + } +} + +\relative \new Staff { + as'' c e2 cis,2 +} +@end lilypond + +If you have multiple voices in a single staff and you want a single +ambitus per staff rather than per each voice, add the +@internalsref{Ambitus_engraver} to the @internalsref{Staff} context +rather than to the @internalsref{Voice} context. Here is an example, + +@lilypond[verbatim,raggedright,quote] +\new Staff \with { + \consists "Ambitus_engraver" +} +<< + \new Voice \with { + \remove "Ambitus_engraver" + } \relative c'' { + \override Ambitus #'X-offset-callbacks + = #(list (lambda (grob axis) -1.0)) + \voiceOne + c4 a d e f2 + } + \new Voice \with { + \remove "Ambitus_engraver" + } \relative c' { + \voiceTwo + es4 f g as b2 + } +>> +@end lilypond + +@noindent +This example uses one advanced feature, + +@example +\override Ambitus #'X-offset-callbacks + = #(list (lambda (grob axis) -1.0)) +@end example + +@noindent +This code moves the ambitus to the left. The same effect could have +been achieved with @code{extra-offset}, but then the formatting system +would not reserve space for the moved object. + +@seealso + +Program reference: @internalsref{Ambitus}, +@internalsref{AmbitusLine}, @internalsref{AmbitusNoteHead}, +@internalsref{AmbitusAccidental}. + +Examples: @inputfileref{input/@/regression,ambitus@/.ly}. + +@refbugs + +There is no collision handling in the case of multiple per-voice +ambitus. + +@node Other vocal issues +@subsection Other vocal issue + +@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. + +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 + +You can display alternate (or divisi) lyrics by naming voice +contexts and attaching lyrics to those specific contexts. + +@lilypond[verbatim,raggedright,quote] +\score{ << + \context Voice = "melody" { + \relative c' { + c4 + << + { \voiceOne c8 e } + \context Voice = splitpart { \voiceTwo c4 } + >> + \oneVoice c4 c | c + } + } + \new Lyrics \lyricsto "melody" { we shall not o- ver- come } + \new Lyrics \lyricsto "splitpart" { shall } +>> } +@end lilypond + + +You can use this trick to display different lyrics for a repeated +section. + +@lilypond[verbatim,raggedright,quote] +\score{ << + \context Voice = melody \relative c' { + c2 e | g e | c1 | + \context Voice = verse \repeat volta 2 {c4 d e f | g1 | } + a2 b | c1} + \lyricsto melody \context Lyrics = mainlyrics \lyricmode { + do mi sol mi do + la si do } + \lyricsto verse \context Lyrics = mainlyrics \lyricmode { + do re mi fa sol } + \lyricsto verse \context Lyrics = repeatlyrics \lyricmode { + dodo rere mimi fafa solsol } +>> +} +@end lilypond + + +To notate ``parlato'' (spoken without pitch but still with +rhythm) sections, + +@lilypond[raggedright,verbatim,quote,fragment,relative=2] +c4 d +\override NoteHead #'style = #'cross +e f +\revert NoteHead #'style +e d +@end lilypond + + +@node Rhythmic music +@section Rhythmic music + +Rhythmic music is primarily used for percussion and drum notation, but it can +also be used to show the rhythms of melodies. + +@menu +* Showing melody rhythms:: +* Entering percussion:: +* Percussion staves:: +@end menu + + +@node Showing melody rhythms +@subsection Showing melody rhythms + +Sometimes you might want to show only the rhythm of a melody. This +can be done with the rhythmic staff. All pitches of notes on such a +staff are squashed, and the staff itself has a single line + +@lilypond[quote,raggedright,fragment,relative=1,verbatim] +\context RhythmicStaff { + \time 4/4 + c4 e8 f g2 | r4 g r2 | g1:32 | r1 | +} @end lilypond -Modifiers can be used to change pitches. The following modifiers are -supported +@seealso -@table @code -@item m -The minor chord. This modifier lowers the 3rd and (if present) the 7th step. +Program reference: @internalsref{RhythmicStaff}. -@item dim -The diminished chord. This modifier lowers the 3rd, 5th and (if present) -the 7th step. +Examples: @inputfileref{input/@/regression,rhythmic@/-staff@/.ly}. -@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. +@node Entering percussion +@subsection Entering percussion -@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 +@cindex percussion +@cindex drums -Modifiers can be mixed with additions -@lilypond[quote,verbatim,fragment] - \chordmode { c:sus4 c:7sus4 c:dim7 c:m6 } + +Percussion notes may be entered in @code{\drummode} mode, which is +similar to the standard mode for entering notes. Each piece of +percussion has a full name and an abbreviated name, and both can be used +in input files + +@lilypond[quote,raggedright,verbatim] +\drums { + hihat hh bassdrum bd +} @end lilypond -@cindex modifiers, in chords. -@cindex @code{aug} -@cindex @code{dim} -@cindex @code{maj} -@cindex @code{sus} -@cindex @code{m} +The complete list of drum names is in the init file +@file{ly/@/drumpitch@/-init@/.ly}. +@c TODO: properly document this. -Since an unaltered 11 does not sound good when combined with an -unaltered 3, the 11 is removed in this case (unless it is added -explicitly) -@lilypond[quote,raggedright,fragment,verbatim] -\chordmode { c:13 c:13.11 c:m13 } +@seealso + +Program reference: @internalsref{DrumNoteEvent}. + +@node Percussion staves +@subsection Percussion staves +@cindex percussion +@cindex drums + +A percussion part for more than one instrument typically uses a +multiline staff where each position in the staff refers to one piece +of percussion. + + +To typeset the music, the notes must be interpreted in a +@internalsref{DrumStaff} and @internalsref{DrumVoice} contexts + +@lilypond[quote,raggedright,verbatim] +up = \drummode { crashcymbal4 hihat8 halfopenhihat hh hh hh openhihat } +down = \drummode { bassdrum4 snare8 bd r bd sn4 } + \new DrumStaff << + \new DrumVoice { \voiceOne \up } + \new DrumVoice { \voiceTwo \down } + >> @end lilypond -@cindex @code{/} +The above example shows verbose polyphonic notation. The short +polyphonic notation, described in @ref{Polyphony}, can also be used if +the @internalsref{DrumVoices} are instantiated by hand first. For example, -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,raggedright,fragment,verbatim] -\chordmode { c1 c/g c/f } +\new DrumStaff << + \context DrumVoice = "1" { s1 *2 } + \context DrumVoice = "2" { s1 *2 } + \drummode { + bd4 sn4 bd4 sn4 + << + { \repeat unfold 16 hh16 } + \\ + { bd4 sn4 bd4 sn4 } + >> + } +>> @end lilypond -@cindex @code{/+} -A bass note can be added instead transposed out of the chord, -by using @code{/+}@var{pitch}. -@lilypond[quote,raggedright,fragment,verbatim] -\chordmode { c1 c/+g c/+f } +There are also other layout possibilities. To use these, set the +property @code{drumStyleTable} in context @internalsref{DrumVoice}. +The following variables have been predefined + +@table @code +@item drums-style +This is the default. It typesets a typical drum kit on a five-line staff + +@lilypond[quote,linewidth=10.0\cm] +nam = \lyricmode { + cymc cyms cymr hh hhc hho hhho hhp + cb hc bd sn ss tomh tommh tomml toml tomfh tomfl } +mus = \drummode { + cymc cyms cymr hh hhc hho hhho hhp \break + cb hc bd sn ss tomh tommh tomml toml tomfh tomfl s16 } +\score { + << \new DrumStaff \with { + \remove Bar_engraver + \remove Time_signature_engraver + \override Stem #'transparent = ##t + \override Stem #'Y-extent-callback = ##f + minimumVerticalExtent = #'(-4.0 . 5.0) + } \mus + \context Lyrics \nam + >> + \layout { + \context { + \Score + \override LyricText #'font-family = #'typewriter + \override BarNumber #'transparent =##T + } + } +} @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. +The drum scheme supports six different toms. When there are fewer toms, +simply select the toms that produce the desired result, i.e., to get toms +on the three middle lines you use @code{tommh}, @code{tomml}, and +@code{tomfh}. + +@item timbales-style +This typesets timbales on a two line staff +@lilypond[quote,raggedright] +nam = \lyricmode { timh ssh timl ssl cb } +mus = \drummode { timh ssh timl ssl cb s16 } +<< + \context DrumStaff \with { + \remove Bar_engraver + \remove Time_signature_engraver + \override Stem #'transparent = ##t + \override Stem #'Y-extent-callback = ##f + \override StaffSymbol #'line-count = #2 + \override StaffSymbol #'staff-space = #2 + minimumVerticalExtent = #'(-3.0 . 4.0) + drumStyleTable = #timbales-style + } \mus + \context Lyrics { + \override LyricText #'font-family = #'typewriter + \nam + } +>> +@end lilypond -@refbugs +@item congas-style +This typesets congas on a two line staff -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,raggedright,verbatim,fragment] -\chordmode { c:5.5-.5+ } +@lilypond[quote,raggedright] +nam = \lyricmode { cgh cgho cghm ssh cgl cglo cglm ssl } +mus = \drummode { cgh cgho cghm ssh cgl cglo cglm ssl s16 } + +<< + \context DrumStaff \with { + \remove Bar_engraver + \remove Time_signature_engraver + drumStyleTable = #congas-style + \override StaffSymbol #'line-count = #2 + + %% this sucks; it will lengthen stems. + \override StaffSymbol #'staff-space = #2 + \override Stem #'transparent = ##t + \override Stem #'Y-extent-callback = ##f + } \mus + \context Lyrics { + \override LyricText #'font-family = #'typewriter + \nam + } +>> @end lilypond +@item bongos-style +This typesets bongos on a two line staff -@node Printing chord names -@subsection Printing chord names +@lilypond[quote,raggedright] +nam = \lyricmode { boh boho bohm ssh bol bolo bolm ssl } +mus = \drummode { boh boho bohm ssh bol bolo bolm ssl s16 } -@cindex printing chord names -@cindex chord names -@cindex chords +<< + \context DrumStaff\with { + \remove Bar_engraver + \remove Time_signature_engraver + \override StaffSymbol #'line-count = #2 + drumStyleTable = #bongos-style -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{>} + %% this sucks; it will lengthen stems. + \override StaffSymbol #'staff-space = #2 + \override Stem #'transparent = ##t + \override Stem #'Y-extent-callback = ##f + } \mus + \context Lyrics { + \override LyricText #'font-family = #'typewriter + \nam + } +>> +@end lilypond + +@item percussion-style +To typeset all kinds of simple percussion on one line staves. + +@lilypond[quote,raggedright] +nam = \lyricmode { tri trio trim gui guis guil cb cl tamb cab mar hc } +mus = \drummode { tri trio trim gui guis guil cb cl tamb cab mar hc s16 } -@lilypond[quote,verbatim,raggedright] -harmonies = { - \chordmode {a1 b c} -} << - \context ChordNames \harmonies - \context Staff \harmonies + \context DrumStaff\with{ + \remove Bar_engraver + drumStyleTable = #percussion-style + \override StaffSymbol #'line-count = #1 + \remove Time_signature_engraver + \override Stem #'transparent = ##t + \override Stem #'Y-extent-callback = ##f + } \mus + \context Lyrics { + \override LyricText #'font-family = #'typewriter + \nam + } >> @end lilypond +@end table -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 +If you do not like any of the predefined lists you can define your own +list at the top of your file -@lilypond[quote,verbatim,raggedright] -harmonies = \chordmode { - c1:m c:m \break c:m c:m d -} -<< - \context ChordNames { - \set chordChanges = ##t - \harmonies } - \context Staff \transpose c c' \harmonies +@lilypond[quote,raggedright,verbatim] +#(define mydrums '( + (bassdrum default #f -1) + (snare default #f 0) + (hihat cross #f 1) + (pedalhihat xcircle "stopped" 2) + (lowtom diamond #f 3))) +up = \drummode { hh8 hh hh hh hhp4 hhp } +down = \drummode { bd4 sn bd toml8 toml } + +\new DrumStaff << + \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) + \new DrumVoice { \voiceOne \up } + \new DrumVoice { \voiceTwo \down } >> @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[raggedright,verbatim] -\new ChordNames \with { - \override BarLine #'bar-size = #4 - voltaOnThisStaff = ##t - \consists Bar_engraver - \consists "Volta_engraver" -} -\repeat volta 2 \chordmode { - f1:maj f:7 bes:7 - c:maj -} \alternative { - es e -} -@end lilypond +@seealso +Init files: @file{ly/@/drumpitch@/-init@/.ly}. -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 +Program reference: @internalsref{DrumStaff}, @internalsref{DrumVoice}. -@table @code -@cindex @code{chordNameExceptions} -@item chordNameExceptions -This is a list that contains the chords that have special formatting. +@refbugs -The exceptions list should be encoded as -@example -@{ 1 \markup @{ \super "7" "wahh" @} @} -@end example +Because general MIDI does not contain rim shots, the sidestick is used +for this purpose instead. -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 -(sequential-music-to-chord-exceptions chExceptionMusic #t) -@end example -Then, -@example -(append - (sequential-music-to-chord-exceptions chExceptionMusic #t) - ignatzekExceptions) -@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 -@inputfileref{input/@/regression,chord@/-name@/-exceptions@/.ly}. -@cindex exceptions, chord names. -@cindex @code{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 -@inputfileref{input/@/regression,chord@/-name@/-major7@/.ly} for an example. +@node Tablatures +@section Tablatures -@cindex @code{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,raggedright,fragment,verbatim] -\context ChordNames \chordmode { - c:7sus4 - \set chordNameSeparator - = \markup { \typewriter "|" } - c:7sus4 -} -@end lilypond +@cindex tablature +@cindex guitar tablature -@cindex @code{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 ``H'' for a -B-chord) can be produced by storing a new function in this property. +Tablature notation is used for notating music for plucked string +instruments. Pitches are not denoted with note heads, but by +indicating on which string and fret a note must be played. LilyPond +offers limited support for tablature. -@cindex @code{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. +@menu +* Tablatures basic:: +* Non-guitar tablatures:: +* Fret diagrams:: +@end menu -@end table +@node Tablatures basic +@subsection Tablatures basic +@cindex Tablatures basic -The predefined variables @code{\germanChords}, -@code{\semiGermanChords} set these variables. The effect is -demonstrated here, +The string number associated to a note is given as a backslash +followed by a number, e.g., @code{c4\3} for a C quarter on the third +string. By default, string 1 is the highest one, and the tuning +defaults to the standard guitar tuning (with 6 strings). The notes +are printed as tablature, by using @internalsref{TabStaff} and +@internalsref{TabVoice} contexts -@lilypondfile[raggedright]{chord-names-german.ly} +@lilypond[quote,raggedright,fragment,verbatim] +\context TabStaff { + a,4\5 c'\2 a\3 e'\1 + e\4 c'\2 a\3 e'\1 +} +@end lilypond -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 described in the input file -@inputfileref{input/@/test,chord@/-names@/-jazz@/.ly}. +@cindex @code{minimumFret} +@cindex fret -@cindex Banter -@cindex jazz chords -@cindex chords, jazz +When no string is specified, the first string that does not give a +fret number less than @code{minimumFret} is selected. The default +value for @code{minimumFret} is 0 -@refcommands +@example +e16 fis gis a b4 +\set TabStaff.minimumFret = #8 +e16 fis gis a b4 +@end example +@lilypond[quote,raggedright] +frag = { + \key e \major + e16 fis gis a b4 + \set TabStaff.minimumFret = #8 + e16 fis gis a b4 +} + \context StaffGroup << + \context Staff { \clef "G_8" \frag } + \context TabStaff { \frag } + >> +@end lilypond -@cindex @code{\germanChords} -@code{\germanChords}, -@cindex @code{\semiGermanChords} -@code{\semiGermanChords}. +@seealso +Program reference: @internalsref{TabStaff}, @internalsref{TabVoice}, and +@internalsref{StringNumberEvent}. +@refbugs +Chords are not handled in a special way, and hence the automatic +string selector may easily select the same string to two notes in a +chord. -@seealso -Examples: @inputfileref{input/@/regression,chord@/-name@/-major7@/.ly}, -@inputfileref{input/@/regression,chord@/-name@/-exceptions@/.ly}, -@inputfileref{input/@/test,chord@/-names@/-jazz@/.ly}. +@node Non-guitar tablatures +@subsection Non-guitar tablatures +@cindex Non-guitar tablatures +You can change the number of strings, by setting the number of lines +in the @internalsref{TabStaff}. -Init files: @file{scm/@/chords@/-ignatzek@/.scm}, and -@file{scm/@/chord@/-entry@/.scm}. +You can change the tuning of the strings. A string tuning is given as +a Scheme list with one integer number for each string, the number +being the pitch (measured in semitones relative to middle C) of an +open string. The numbers specified for @code{stringTuning} are the +numbers of semitones to subtract or add, starting the specified pitch +by default middle C, in string order. In the next example, +@code{stringTunings} is set for the pitches e, a, d, and g +@lilypond[quote,raggedright,fragment,verbatim] +\context TabStaff << + \set TabStaff.stringTunings = #'(-5 -10 -15 -20) + { + a,4 c' a e' e c' a e' + } +>> +@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. +No guitar special effects have been implemented. + +@seealso + +Program reference: @internalsref{Tab_note_heads_engraver}. @node Fret diagrams @@ -3756,3 +3749,52 @@ Program reference: @internalsref{BassFigureEvent} music, Slash notation for alterations is not supported. + +@node Other instrument specific notation +@section Other instrument specific notation + +This section includes extra information for writing for instruments. + +@menu +* Artificial harmonics (strings):: +* Stopped notes (guitar):: +@end menu + +@node Artificial harmonics (strings) +@subsection 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[raggedright,verbatim,quote,fragment,relative=1] +4 +@end lilypond + + +@node Stopped notes (guitar) +@subsection Stopped notes (guitar) + +Stopped (X) note heads are used in guitar music to signal a place where the +guitarist must play a certain note or chord, with its fingers just +touching the strings instead of fully pressing them. This gives the sound a +percussive noise-like sound that still maintains part of the original pitch. + +Finger stopped technique is extremely important for rhythm and rock-heavy +metal guitarists; the former often uses barré based stopped chords to +intermix harmony with rythm, the latters use finger stopping to mute power +chords, or charge them with more expression in close-tied power chord stums. + +It is also used (even if rarely) in classic guitar music, generally in the +melodic line, to provide some rithmic pattern right in the melody. + +@lilypond[raggedright,verbatim,quote,fragment,relative=2] +c4 d +\override NoteHead #'style = #'cross +e f +\revert NoteHead #'style +e d +@end lilypond + + -- 2.39.5