X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fuser%2Fkeyboards.itely;h=82b097dca4a24210893b4692a61da434ed3a05af;hb=37bcf05113d734c48bb70b21b7f4b6fe8a042058;hp=f377d552c7a4b0b01740dabf75ea99f2dedea850;hpb=7beeb2c8c3ebefc2d9187dad5888a85c477e1c7d;p=lilypond.git diff --git a/Documentation/user/keyboards.itely b/Documentation/user/keyboards.itely index f377d552c7..82b097dca4 100644 --- a/Documentation/user/keyboards.itely +++ b/Documentation/user/keyboards.itely @@ -6,39 +6,35 @@ version that you are working on. See TRANSLATION for details. @end ignore -@c \version "2.11.38" - -@node Keyboard instruments -@section Keyboard instruments - -TODO -My suggestion is this: in section 7.1.1 and/or 7.1.2 of the -manual, -about staff switching, add a sentence or two plus a simple example -showing how the beams are handled automatically if you enter notes -that -require beaming (i.e. 8ths or shorter). Anyone coming from Finale -will -be looking for "cross-staff beaming" instead of staff switching. -If I -had seen an example of notes switching staves, beamed together -like -that, I would have known immediately that that was what I was -looking for. +@c \version "2.11.61" +@node Keyboard and other multi-staff instruments +@section Keyboard and other multi-staff instruments + +@lilypondfile[quote]{keyboard-headword.ly} + +This section discusses several aspects of music notation that are +unique to keyboard instruments and other instruments notated on +many staves, such as harps and vibraphones. For the purposes of +this section this entire group of multi-staff instruments is called +@qq{keyboards} for short, even though some of them do not have a +keyboard. @menu * Common notation for keyboards:: * Piano:: * Accordion:: +* Harp:: @end menu @node Common notation for keyboards @subsection Common notation for keyboards +This section discusses notation issues that may arise for most +many-stringed instruments. + @menu * References for keyboards:: -* The piano staff:: * Changing staff manually:: * Changing staff automatically:: * Staff-change lines:: @@ -46,288 +42,586 @@ looking for. @end menu @node References for keyboards -@subsubsection References for keyboards +@unnumberedsubsubsec References for keyboards -@c TODO add refs -TBC +@cindex piano staves +@cindex staves, piano +@cindex staves, keyboard instruments +@cindex staves, keyed instruments +@cindex keyboard instrument staves +@cindex keyed instrument staves + +@funindex PianoStaff + +Keyboard instruments are usually notated with Piano staves. These +are two or more normal staves coupled with a brace. The same +notation is also used for other keyed instruments. +Organ music is normally written with two staves inside a +@code{PianoStaff} group and third, normal staff for the pedals. + +The staves in keyboard music are largely independent, but +sometimes voices can cross between the two staves. This +section discusses notation techniques particular to keyboard +music. + +Several common issues in keyboard music are covered elsewhere: + +@itemize + +@item Keyboard music usually contains multiple voices and the +number of voices may change regularly; this is described in +@ref{Collision resolution}. + +@item Keyboard music can be written in parallel, as described in +@ref{Writing music in parallel}. + +@item Fingerings are indicated with @ref{Fingering instructions}. + +@item Organ pedal indications are inserted as articulations, see +@ref{List of articulations}. + +@item Vertical grid lines can be shown with @ref{Grid lines}. -@node The piano staff -@subsubsection The piano staff +@item Keyboard music often contains @notation{Laissez vibrer} ties +as well as ties on arpeggios and tremolos, described in +@ref{Ties}. + +@item Placing arpeggios across multiple voices and staves is +covered in @ref{Arpeggio}. + +@item Tremolo marks are described in @ref{Tremolo repeats}. + +@item Several of the tweaks that can occur in keyboard music are +demonstrated in @rlearning{Real music example}. + +@item Hidden notes can be used to produce ties that cross voices, +as shown in @rlearning{Other uses for tweaks}. + +@end itemize + + +@seealso +Learning Manual: +@rlearning{Real music example}, +@rlearning{Other uses for tweaks}. + +Notation Reference: +@ref{Grouping staves}, +@ref{Instrument names}, +@ref{Collision resolution}, +@ref{Writing music in parallel}, +@ref{Fingering instructions}, +@ref{List of articulations}, +@ref{Grid lines}, +@ref{Ties}, +@ref{Arpeggio}, +@ref{Tremolo repeats}. + +Internals Reference: +@rinternals{PianoStaff}. + +Snippets: +@rlsr{Keyboards}. -Keyboard instruments are usually notated with Piano staves. -These are two or more 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. @knownissues -Dynamics are not centered, but workarounds do exist. See the -@q{piano centered dynamics} template in @rlearning{Piano templates}. +@cindex keyboard music, centering dynamics +@cindex dynamics, centered in keyboard music +@cindex piano music, centering dynamics +@cindex centered dynamics in piano music +@funindex staff-padding -@cindex cross staff stem -@cindex stem, cross staff -@cindex distance between staves in piano music +Dynamics are not automatically centered, but workarounds do exist. One +option is the @q{piano centered dynamics} template under +@rlearning{Piano templates}; another option is to increase the +@code{staff-padding} of dynamics as discussed in @rlearning{Moving +objects}. @node Changing staff manually -@subsubsection Changing staff manually +@unnumberedsubsubsec Changing staff manually -@cindex manual staff switches -@cindex staff switch, manual +@cindex changing staff manually +@cindex manual staff changes +@cindex staff changes, manual +@cindex cross-staff notes +@cindex notes, cross-staff +@cindex cross-staff beams +@cindex beams, cross-staff + +@funindex \change +@funindex change Voices can be switched between staves manually, using the command + @example -\change Staff = @var{staffname} @var{music} +\change Staff = @var{staffname} @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 @code{Staff} referred to must already exist, so -usually the setup for a score will start with a setup of the staves, +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}. Typical values for @var{staffname} are +@code{"up"} and @code{"down"}, or @code{"RH"} and @code{"LH"}. -@example -<< - \new Staff = "up" @{ - \skip 1 * 10 % @emph{keep staff alive} - @} - \new Staff = "down" @{ - \skip 1 * 10 % @emph{idem} - @} +Cross-staff notes are beamed automatically: + +@lilypond[verbatim,quote] +\new PianoStaff << + \new Staff = "up" { + 8 + \change Staff = "down" + g8 fis g + \change Staff = "up" + 8 + \change Staff = "down" + e8 dis e + \change Staff = "up" + } + \new Staff = "down" { + \clef bass + % keep staff alive + s1 + } >> -@end example +@end lilypond +If the beaming needs to be tweaked, make any changes to the stem +directions first. The beam positions are then measured from the +center of the staff that is closest to the beam. For a simple +example of beam tweaking, see @rlearning{Fixing overlapping +notation}. -and the @code{Voice} is inserted afterwards -@example -\context Staff = down - \new Voice @{ @dots{} \change Staff = up @dots{} @} -@end example +@seealso +Learning Manual: +@rlearning{Fixing overlapping notation}. + +Notation Reference: +@ref{Stems}, +@ref{Automatic beams}. + +Snippets: +@rlsr{Keyboards}. + +Internals Reference: +@rinternals{Beam}, +@rinternals{ContextChange}. @node Changing staff automatically -@subsubsection Changing staff automatically -@cindex Automatic staff changes +@unnumberedsubsubsec Changing staff automatically + +@cindex changing staff automatically +@cindex automatic staff changes +@cindex staff changes, automatic -Voices can be made to switch automatically between the top and the bottom -staff. The syntax for this is +@funindex \autochange +@funindex autochange +@funindex PianoStaff + +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. +This will create two staves inside the current staff group +(usually a @code{PianoStaff}), called @code{"up"} and +@code{"down"}. The lower staff will be in the bass clef by default. +The autochanger switches on the basis of the pitch (middle@tie{}C is the +turning point), and it looks ahead skipping over rests to switch +in advance. + +@lilypond[quote,verbatim] +\new PianoStaff { + \autochange { + g4 a b c' + d'4 r a g + } +} +@end lilypond -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 +@cindex relative music and autochange +@cindex autochange and relative music -@quotation -@example -\autochange \relative @dots{} @dots{} -@end example -@end quotation +@funindex \relative +@funindex relative +A @code{\relative} section that is outside of @code{\autochange} +has no effect on the pitches of the music, so if necessary, put +@code{\relative} inside @code{\autochange}. -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 +If additional control is needed over the individual staves, they +can be created manually with the names @code{"up"} and +@code{"down"}. The @code{\autochange} command will then switch +its voice between the existing staves. For example, this is +necessary to place a key signature in the lower staff: -@lilypond[quote,verbatim,ragged-right] -\new PianoStaff - \autochange \relative c' - { - g4 a b c d r4 a g +@lilypond[quote,verbatim] +\new PianoStaff << + \new Staff = "up" { + \new Voice = "melOne" { + \key g \major + \autochange \relative c' { + g8 b a c b d c e + d8 r fis, g a2 + } + } } + \new Staff = "down" { + \key g \major + \clef bass + } +>> @end lilypond @seealso +Notation Reference: +@ref{Changing staff manually}. -@c Notation Reference: @ref{Manual staff switches}. - -Internals Reference: @internalsref{AutoChangeMusic}. +Snippets: +@rlsr{Keyboards}. +Internals Reference: +@rinternals{AutoChangeMusic}. @knownissues +@cindex chords, splitting across staves with \autochange + 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}. +Chords will not be split across the staves; they will be assigned to a +staff based on the first note named in the chord construct. @node Staff-change lines -@subsubsection Staff-change lines - - +@unnumberedsubsubsec Staff-change lines + +@cindex staff-change line +@cindex staff change line +@cindex cross-staff line +@cindex cross staff line +@cindex line, staff-change follower +@cindex line, cross-staff +@cindex line, staff-change @cindex follow voice +@cindex voice, following @cindex staff switching -@cindex cross staff +@cindex cross-staff @funindex followVoice +@funindex \showStaffSwitch +@funindex showStaffSwitch +@funindex \hideStaffSwitch +@funindex hideStaffSwitch -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 +Whenever a voice switches to another staff, a line connecting the +notes can be printed automatically: -@lilypond[quote,ragged-right,fragment,relative=1,verbatim] +@lilypond[quote,verbatim,relative=1] \new PianoStaff << - \new Staff="one" { - \set followVoice = ##t + \new Staff = "one" { + \showStaffSwitch c1 - \change Staff=two + \change Staff = "two" b2 a } - \new Staff="two" { \clef bass \skip 1*2 } + \new Staff = "two" { + \clef bass + s1*2 + } >> @end lilypond -@seealso - -Internals Reference: @internalsref{VoiceFollower}. @predefined - -@funindex \showStaffSwitch @code{\showStaffSwitch}, -@funindex \hideStaffSwitch @code{\hideStaffSwitch}. +@endpredefined -@node Cross-staff stems -@subsubsection 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. +@seealso +Snippets: +@rlsr{Keyboards}. -@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 +Internals Reference: +@rinternals{Note_head_line_engraver}, +@rinternals{VoiceFollower}. + + +@node Cross-staff stems +@unnumberedsubsubsec Cross-staff stems + +@cindex cross-staff notes +@cindex cross staff notes +@cindex notes, cross-staff +@cindex cross-staff stems +@cindex cross staff stems +@cindex stems, cross-staff +@cindex chords, cross-staff +@cindex cross-staff chords +@cindex cross staff chords + +@funindex Stem +@funindex cross-staff +@funindex length +@funindex flag-style + +Chords that cross staves may be produced: + +@lilypond[verbatim,quote] \new PianoStaff << \new Staff { - \stemDown \stemExtend - f'4 - \stemExtend \noFlag - f'8 + \relative c' { + f8 e4 d8 d f e4 + } } \new Staff { - \clef bass - a4 a8 + \relative c' { + << { + \clef bass + % stems may overlap the other staff + \override Stem #'cross-staff = ##t + % extend the stems to reach other other staff + \override Stem #'length = #12 + % do not print extra flags + \override Stem #'flag-style = #'no-flag + % prevent beaming as needed + a8 g4 f8 f bes\noBeam g4 + } + \\ + { + f,2 bes4 c + } >> + } } >> @end lilypond +@snippets +@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +{indicating-cross-staff-chords-with-arpeggio-bracket.ly} + + +@seealso +Snippets: +@rlsr{Keyboards}. + +Internals Reference: +@rinternals{Stem}. + + @node Piano @subsection Piano +This section discusses notation issues that relate most directly to the +piano. + @menu * Piano pedals:: @end menu @node Piano pedals -@subsubsection Piano pedals -@cindex Pedals +@unnumberedsubsubsec Piano pedals + +@cindex piano pedals +@cindex pedals, piano +@cindex sustain pedal +@cindex pedal, sustain +@cindex sostenuto pedal +@cindex pedal, sostenuto +@cindex una corda +@cindex tre corde +@cindex sos. +@cindex U.C. + +@funindex \sustainOn +@funindex sustainOn +@funindex \sustainOff +@funindex sustainOff +@funindex \sostenutoOn +@funindex sostenutoOn +@funindex \sostenutoOff +@funindex sostenutoOff +@funindex \unaCorda +@funindex unaCorda +@funindex \treCorde +@funindex treCorde + +Pianos generally have three pedals that alter the way sound is +produced: @notation{sustain}, @notation{sostenuto} +(@notation{sos.}), and @notation{una corda} (@notation{U.C.}). +Sustain pedals are also found on vibraphones and celestas. + +@lilypond[quote,verbatim,relative=2] +c4\sustainOn d e g +1\sustainOff +c4\sostenutoOn e g c, +1\sostenutoOff +c4\unaCorda d e g +1\treCorde +@end lilypond -Pianos have pedals that alter the way sound is produced. Generally, a -piano has three pedals, sustain, una corda, and sostenuto. +@cindex pedal indication styles +@cindex pedal indication, text +@cindex pedal indication, bracket +@cindex pedal indication, mixed +@cindex pedal sustain style +@cindex sustain pedal style +@funindex pedalSustainStyle +@funindex mixed +@funindex bracket +@funindex text -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 +There are three styles of pedal indications: text, bracket, and mixed. +The sustain pedal and the una corda pedal use the text style by default +while the sostenuto pedal uses mixed by default. -@lilypond[quote,ragged-right,fragment,verbatim] -c'4\sustainDown c'4\sustainUp +@lilypond[quote,verbatim,relative=2] +c4\sustainOn g c2\sustainOff +\set Staff.pedalSustainStyle = #'mixed +c4\sustainOn g c d +d\sustainOff\sustainOn g, c2\sustainOff +\set Staff.pedalSustainStyle = #'bracket +c4\sustainOn g c d +d\sustainOff\sustainOn g, c2 +\bar "|." @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. +The placement of the pedal commands matches the physical movement of the +sustain pedal during piano performance. Pedalling to the final bar line +is indicated by omitting the final pedal up command. -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=2] -\set Staff.pedalSustainStyle = #'bracket -c\sustainDown d e -b\sustainUp\sustainDown -b g \sustainUp a \sustainDown \bar "|." -@end lilypond +@seealso +Notation Reference: +@ref{Ties}. + +Snippets: +@rlsr{Keyboards}. + +Internals Reference: +@rinternals{SustainPedal}, +@rinternals{SustainPedalLineSpanner}, +@rinternals{SustainEvent}, +@rinternals{SostenutoPedal}, +@rinternals{SostenutoPedalLineSpanner}, +@rinternals{SostenutoEvent}, +@rinternals{UnaCordaPedal}, +@rinternals{UnaCordaPedalLineSpanner}, +@rinternals{UnaCordaEvent}, +@rinternals{PianoPedalBracket}, +@rinternals{Piano_pedal_engraver}. -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 +@node Accordion +@subsection Accordion -The default @q{*Ped.} style for sustain and damper pedals corresponds to -style @code{#'text}. The sostenuto pedal uses @code{mixed} style by -default. +@cindex accordion -@lilypond[quote,ragged-right,fragment,verbatim,relative=2] -c\sostenutoDown d e c, f g a\sostenutoUp -@end lilypond +This section discusses notation that is unique to the accordion. -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 Internals Reference) can be -modified. For example, the bracket may be extended to the right edge -of the note head +@menu +* Discant symbols:: +@end menu -@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 +@node Discant symbols +@unnumberedsubsubsec Discant symbols -@noindent -Note that overrides must be placed before the note at which the -pedal bracket starts. +@cindex accordion discant symbols +@cindex discant symbols, accordion +@cindex accordion shifts +@cindex accordion shift symbols + +Accordions are often built with more than one set of reeds that may be +in unison with, an octave above, or an octave below the written pitch. +Each accordion maker has different names for the @notation{shifts} that +select the various reed combinations, such as @notation{oboe}, +@notation{musette}, or @notation{bandonium}, so a system of symbols has +come into use to simplify the performance instructions. + +@snippets + +@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +{accordion-discant-symbols.ly} -@c TODO Check relative positions of the sustain pedal and -@c dynamics are correct (they collided in 2.11.44). -@c Give example showing this. @seealso +Snippets: +@rlsr{Keyboards}. -Notation Reference: @ref{Ties} (laissez vibrer). -@node Accordion -@subsection Accordion +@node Harp +@subsection Harp @menu -* Discant symbols:: +* Harp notation:: +* Harp pedals:: @end menu -@node Discant symbols -@subsubsection Discant symbols +@node Harp notation +@unnumberedsubsubsec Harp notation -@c TODO Add text from -user and lsr 194 TBC +@ignore +Some possibilities: +- glissandi +- tremolo (for bisbigliando) +- natural harmonics +- directional arpeggio and non-arpeggio +- workaroung for keeping both staves visible in an orchestral + score, +http://lists.gnu.org/archive/html/lilypond-user/2007-08/msg00386.html +and http://lsr.dsi.unimi.it/LSR/Item?u=1&id=312 + +An LSR snippet could be used to demonstrate the main items; in the +case of glissandi, it would be desirable to have a demonstration +of different styles. +@end ignore + +@node Harp pedals +@unnumberedsubsubsec Harp pedals + +@cindex harp pedals +@cindex harp pedal diagrams +@cindex pedals, harp +@cindex pedal diagrams, harp + +Harps have seven strings per octave that may be sounded at the natural, +flattened, or sharpened pitch. In lever harps, each string is adjusted +individually, but in pedal harps every string with the same pitch name +is controlled by a single pedal. From the player's left to right, the +pedals are D, C, and B on the left and E, F, G, and A on the right. +The position of the pedals may be indicated with text marks: + +@lilypond[quote,verbatim,relative=2] +\textLengthOn +cis1_\markup \concat \vcenter { [D \flat C \sharp B|E \sharp F \sharp G A \flat] } +c!1_\markup \concat \vcenter {[ C \natural ]} +@end lilypond +or pedal diagrams: +@lilypond[quote,verbatim,relative=2] +\textLengthOn +cis1_\markup { \harp-pedal #"^v-|vv-^" } +c!1_\markup { \harp-pedal #"^o--|vv-^" } +@end lilypond +The @code{\harp-pedal} command accepts a string of characters, where +@code{^} is the highest pedal position (flattened pitch), @code{-} is +the middle pedal postion (natural pitch), @code{v} is the lowest pedal +position (sharpened pitch), and @code{|} is the divider. A prefixed +@code{o} will circle the following pedal symbol. +@seealso +Notation Reference: +@ruser{Text scripts}