LSR: Update.
[lilypond/mpolesky.git] / Documentation / notation / percussion.itely
blob7c3a27bd8670f3219971f6a13e11f82a4a23058a
1 @c -*- coding: utf-8; mode: texinfo; -*-
2 @ignore
3     Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
5     When revising a translation, copy the HEAD committish of the
6     version that you are working on.  For details, see the Contributors'
7     Guide, node Updating translation committishes..
8 @end ignore
10 @c \version "2.12.0"
12 @node Percussion
13 @section Percussion
15 @menu
16 * Common notation for percussion::
17 @end menu
19 @node Common notation for percussion
20 @subsection Common notation for percussion
22 Rhythmic music is primarily used for percussion and drum notation, but it can
23 also be used to show the rhythms of melodies.
25 @menu
26 * References for percussion::
27 * Basic percussion notation::
28 * Drum rolls::
29 * Pitched percussion::
30 * Percussion staves::
31 * Custom percussion staves::
32 * Ghost notes::
33 @end menu
35 @node References for percussion
36 @unnumberedsubsubsec References for percussion
38 TODO add more.
40 @itemize
42 @item Some percussion may be notated on a rhythmic staff; this is
43 discussed in @ref{Showing melody rhythms}, and
44 @ref{Instantiating new staves}.
46 @item MIDI output is discussed in a separate section; please see
47 @ref{Percussion in MIDI}.
49 @end itemize
52 @seealso
53 Notation Reference:
54 @ref{Showing melody rhythms},
55 @ref{Instantiating new staves}.
56 @ref{Percussion in MIDI}.
58 Snippets:
59 @rlsr{Percussion}.
62 @node Basic percussion notation
63 @unnumberedsubsubsec Basic percussion notation
65 @cindex percussion
66 @cindex drums
68 Percussion notes may be entered in @code{\drummode} mode, which is
69 similar to the standard mode for entering notes.  The simplest way
70 to enter percussion notes is to use the @code{\drums} command,
71 which creates the correct context and entry mode for percussion:
73 @lilypond[quote,verbatim]
74 \drums {
75   hihat4 hh bassdrum bd
77 @end lilypond
79 This is shorthand for:
81 @lilypond[quote,verbatim]
82 \new DrumStaff {
83   \drummode {
84     hihat4 hh bassdrum bd
85   }
87 @end lilypond
89 Each piece of percussion has a full name and an abbreviated name,
90 and both can be used in input files.  The full list of percussion
91 note names may be found in @ref{Percussion notes}.
93 @cindex clef, percussion
94 @cindex percussion clef
96 Note that the normal notation of pitches (such as @code{cis4}) in a
97 @code{DrumStaff} context will cause an error message. Percussion clefs
98 are added automatically to a @code{DrumStaff} context but they can also
99 be set explicitly.  Other clefs may be used as well.
101 @lilypond[quote,ragged-right,verbatim]
102 \drums {
103   \clef treble
104   hh4 hh hh hh
105   \break
106   \clef percussion
107   bd4 bd bd bd
109 @end lilypond
112 There are a few issues concerning MIDI support for percussion
113 instruments; for details please see @ref{Percussion in MIDI}.
116 @seealso
117 Notation Reference:
118 @ref{Percussion in MIDI},
119 @ref{Percussion notes}.
121 File:
122 @file{ly/@/drumpitch@/-init@/.ly}
124 Snippets:
125 @rlsr{Percussion}.
128 @node Drum rolls
129 @unnumberedsubsubsec Drum rolls
131 Drum rolls are indicated with three slashes across the stem.  For
132 quarter notes or longer the three slashes are shown explicitly,
133 eighth notes are shown with two slashes (the beam being the
134 third), and drum rolls shorter than eighths have one stem slash to
135 supplement the beams.  This is achieved with the tremolo notation,
136 @code{:32}, as described in @ref{Tremolo repeats}.  Here is an
137 example of some snare rolls:
139 @lilypond[quote,verbatim]
140 \drums {
141   \time 2/4
142   sn16 sn8 sn16 sn8 sn8:32 ~
143   sn8 sn8 sn4:32 ~
144   sn4 sn8 sn16 sn16
145   sn4 r4
147 @end lilypond
149 Sticking can be indicated by placing @code{^"R"} or @code{^"L"}
150 after the note.  The @code{staff-padding} property may be
151 overridden to achieve a pleasing baseline.
153 @lilypond[quote,verbatim]
154 \drums {
155   \repeat unfold 2 {
156     sn16 ^"L" sn^"R" sn^"L" sn^"L" sn^"R" sn^"L"  sn^"R" sn^"R"
157   }
159 @end lilypond
162 @seealso
163 Snippets:
164 @rlsr{Percussion}.
167 @node Pitched percussion
168 @unnumberedsubsubsec Pitched percussion
170 Certain pitched percussion instruments (e.g. xylophone,
171 vibraphone, and timpani) are written using normal staves.
172 This is covered in other sections of the manual.
175 @seealso
176 @c TODO: possibly link to an alternate section of NR 3.5, if
177 @c "percussion in MIDI" gets a separate subsubsection for
178 @c pitched percussion sounds.  -gp
179 Notation Reference:
180 @ref{Percussion in MIDI}.
182 Snippets:
183 @rlsr{Percussion}.
186 @node Percussion staves
187 @unnumberedsubsubsec Percussion staves
189 @cindex percussion
190 @cindex drums
192 A percussion part for more than one instrument typically uses a
193 multiline staff where each position in the staff refers to one
194 piece of percussion.  To typeset the music, the notes must be
195 interpreted in @code{DrumStaff} and @code{DrumVoice} context.
197 @lilypond[quote,verbatim]
198 up = \drummode {
199   crashcymbal4 hihat8 halfopenhihat hh hh hh openhihat
201 down = \drummode {
202   bassdrum4 snare8 bd r bd sn4
204 \new DrumStaff <<
205   \new DrumVoice { \voiceOne \up }
206   \new DrumVoice { \voiceTwo \down }
208 @end lilypond
210 The above example shows verbose polyphonic notation.  The short
211 polyphonic notation, described in @rlearning{I'm hearing Voices},
212 can also be used.
213 For example,
215 @lilypond[quote,verbatim]
216 \new DrumStaff <<
217   \drummode {
218     bd4 sn4 bd4 sn4
219     << {
220       \repeat unfold 16 hh16
221     } \\ {
222       bd4 sn4 bd4 sn4
223     } >>
224   }
226 @end lilypond
228 There are also other layout possibilities.  To use these, set the
229 property @code{drumStyleTable} in context @code{DrumVoice}.  The
230 following variables have been predefined:
232 @c TODO: decide what to do about this table.  (ie verbatim or not)
233 @table @code
235 @item drums-style
236 This is the default.  It typesets a typical drum kit on a
237 five-line staff:
239 @lilypond[quote,line-width=10.0\cm]
240 nam = \lyricmode {
241   cymc cyms cymr hh hhc hho hhho hhp
242   cb hc bd sn ss tomh tommh tomml toml tomfh tomfl }
243 mus = \drummode {
244   cymc cyms cymr hh hhc hho hhho hhp \break
245   cb hc bd sn ss tomh tommh tomml toml tomfh tomfl s16 }
246 \score {
247   << \new DrumStaff \with {
248        \remove Bar_engraver
249        \remove Time_signature_engraver
250        \override Stem #'transparent = ##t
251        \override Stem #'Y-extent = ##f
252        \override VerticalAxisGroup #'minimum-Y-extent = #'(-4.0 . 5.0)
253      } \mus
254      \new Lyrics \nam
255   >>
256   \layout {
257     \context {
258       \Score
259       \override LyricText #'font-family = #'typewriter
260       \override BarNumber #'transparent =##T
261     }
262   }
264 @end lilypond
266 The drum scheme supports six different toms.  When there are fewer
267 toms, simply select the toms that produce the desired result.  For
268 example, to get toms on the three middle lines you use
269 @code{tommh}, @code{tomml}, and @code{tomfh}.
271 @item timbales-style
272 This typesets timbales on a two line staff:
274 @lilypond[quote,ragged-right]
275 nam = \lyricmode { timh ssh timl ssl cb }
276 mus = \drummode { timh ssh timl ssl cb s16 }
279   \new DrumStaff \with {
280     \remove Bar_engraver
281     \remove Time_signature_engraver
282     \override Stem #'transparent = ##t
283     \override Stem #'Y-extent = ##f
284     \override StaffSymbol #'line-count = #2
285     \override StaffSymbol #'staff-space = #2
286     \override VerticalAxisGroup #'minimum-Y-extent = #'(-3.0 . 4.0)
287     drumStyleTable = #timbales-style
288   } \mus
289   \new Lyrics {
290     \override LyricText #'font-family = #'typewriter
291     \nam
292   }
294 @end lilypond
296 @item congas-style
297 This typesets congas on a two line staff:
299 @lilypond[quote,ragged-right]
300 nam = \lyricmode { cgh cgho cghm ssh cgl cglo cglm ssl }
301 mus = \drummode { cgh cgho cghm ssh cgl cglo cglm ssl s16 }
304   \new DrumStaff \with {
305     \remove Bar_engraver
306     \remove Time_signature_engraver
307     drumStyleTable = #congas-style
308     \override StaffSymbol #'line-count = #2
310     %% this sucks; it will lengthen stems.
311     \override StaffSymbol #'staff-space = #2
312     \override Stem #'transparent = ##t
313     \override Stem #'Y-extent = ##f
314   } \mus
315   \new Lyrics {
316     \override LyricText #'font-family = #'typewriter
317     \nam
318   }
320 @end lilypond
322 @item bongos-style
323 This typesets bongos on a two line staff:
325 @lilypond[quote,ragged-right]
326 nam = \lyricmode { boh boho bohm ssh bol bolo bolm ssl }
327 mus = \drummode { boh boho bohm ssh bol bolo bolm ssl s16 }
330   \new DrumStaff \with {
331     \remove Bar_engraver
332     \remove Time_signature_engraver
333     \override StaffSymbol #'line-count = #2
334     drumStyleTable = #bongos-style
336     %% this sucks; it will lengthen stems.
337     \override StaffSymbol #'staff-space = #2
338     \override Stem #'transparent = ##t
339     \override Stem #'Y-extent = ##f
340   } \mus
341   \new Lyrics {
342     \override LyricText #'font-family = #'typewriter
343     \nam
344   }
346 @end lilypond
348 @item percussion-style
349 To typeset all kinds of simple percussion on one line staves:
351 @lilypond[quote,ragged-right]
352 nam = \lyricmode { tri trio trim gui guis guil cb cl tamb cab mar hc }
353 mus = \drummode { tri trio trim gui guis guil cb cl tamb cab mar hc s16 }
356   \new DrumStaff \with{
357     \remove Bar_engraver
358     drumStyleTable = #percussion-style
359     \override StaffSymbol #'line-count = #1
360     \remove Time_signature_engraver
361     \override Stem #'transparent = ##t
362     \override Stem #'Y-extent = ##f
363   } \mus
364   \new Lyrics {
365     \override LyricText #'font-family = #'typewriter
366     \nam
367   }
369 @end lilypond
370 @end table
373 @node Custom percussion staves
374 @unnumberedsubsubsec Custom percussion staves
376 If you do not like any of the predefined lists you can define your
377 own list at the top of your file.
379 @lilypond[quote,verbatim]
380 #(define mydrums '(
381          (bassdrum        default   #f           -1)
382          (snare           default   #f           0)
383          (hihat           cross     #f           1)
384          (halfopenhihat   cross     "halfopen"   1)
385          (pedalhihat      xcircle   "stopped"    2)
386          (lowtom          diamond   #f           3)))
387 up = \drummode { hh8 hh hhho hhho hhp4 hhp }
388 down = \drummode { bd4 sn bd toml8 toml }
390 \new DrumStaff <<
391   \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)
392   \new DrumVoice { \voiceOne \up }
393   \new DrumVoice { \voiceTwo \down }
395 @end lilypond
398 @snippets
400 @c TODO: MOVE ALL THESE TO LSR!  -gp
402 Here are some examples:
404 Two Woodblocks, entered with wbh (high woodblock) and wbl (low woodblock)
406 @lilypond[quote,verbatim]
407 % These lines define the position of the woodblocks in the stave;
408 % if you like, you can change it or you can use special note heads
409 % for the woodblocks.
410 #(define mydrums '((hiwoodblock default #t  3)
411                    (lowoodblock default #t -2)))
413 woodstaff = {
414   % This defines a staff with only two lines.
415   % It also defines the positions of the two lines.
416   \override Staff.StaffSymbol #'line-positions = #'(-2 3)
418   % This is neccessary; if not entered, the barline would be too short!
419   \override Staff.BarLine #'bar-size = #3
422 \new DrumStaff {
423   \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)
425   % with this you load your new drum style table
426   \woodstaff
428   \drummode {
429     \time 2/4
430     wbl8 wbl16 wbl wbh8-> wbl |
431     wbl8 wbl16 wbh-> ~ wbh wbl16 r8 |
432   }
434 @end lilypond
436 Note that in this special case the length of the barline must
437 altered with @code{\override Staff.BarLine #'bar-size #number}.
438 Otherwise it would be too short.  And you have also to define the
439 positions of the two stafflines.  For more information about these
440 delicate things have a look at @ref{Staff symbol}.
442 A tambourine, entered with @q{tamb}:
444 @lilypond[quote,verbatim]
445 #(define mydrums '((tambourine default #t 0)))
447 tambustaff = {
448   \override Staff.StaffSymbol #'line-positions = #'( 0 )
449   \override Staff.BarLine #'bar-size = #3
450   \set DrumStaff.instrumentName = #"Tambourine"
453 \new DrumStaff {
454   \tambustaff
455   \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)
457   \drummode {
458     \time 6/8
459     tamb8. tamb16 tamb8 tamb tamb tamb |
460     tamb4. tamb8 tamb tamb |
461     % the trick with the scaled duration and the shorter rest
462     % is neccessary for the correct ending of the trill-span!
463     tamb2.*5/6 \startTrillSpan s8 \stopTrillSpan |
464   }
466 @end lilypond
468 Music for Tam-Tam (entered with @q{tt}):
470 @lilypond[quote,verbatim]
471 #(define mydrums '((tamtam default #t 0)))
473 tamtamstaff = {
474   \override Staff.StaffSymbol #'line-positions = #'( 0 )
475   \override Staff.BarLine #'bar-size = #3
476   \set DrumStaff.instrumentName = #"Tamtam"
479 \new DrumStaff {
480   \tamtamstaff
481   \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)
483   \drummode {
484     tt 1 \pp \laissezVibrer
485   }
487 @end lilypond
489 Two different bells, entered with @q{cb} (cowbell) and @q{rb} (ridebell)
491 @lilypond[quote,verbatim]
492 #(define mydrums '((ridebell default #t  3)
493                    (cowbell  default #t -2)))
495 bellstaff = {
496   \override DrumStaff.StaffSymbol #'line-positions = #'(-2 3)
497   \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)
498   \override Staff.BarLine #'bar-size = #3
499   \set DrumStaff.instrumentName = #"Different Bells"
502 \new DrumStaff {
503   \bellstaff
504   \drummode {
505     \time 2/4
506     rb8 rb cb cb16 rb-> ~ |
507     rb16 rb8 rb16 cb8 cb |
508   }
510 @end lilypond
512 Here a short example taken from Stravinsky's @q{L'histoire du Soldat}.
514 @lilypond[quote,verbatim]
515 #(define mydrums '((bassdrum   default #t  4)
516                    (snare      default #t -4)
517                    (tambourine default #t  0)))
519 global = {
520   \time 3/8 s4.
521   \time 2/4 s2*2
522   \time 3/8 s4.
523   \time 2/4 s2
526 drumsA = {
527   \context DrumVoice <<
528     { \global }
529     { \drummode {
530         \autoBeamOff
531         \stemDown sn8 \stemUp tamb s8 |
532         sn4 \stemDown sn4 |
533         \stemUp tamb8 \stemDown sn8 \stemUp sn16 \stemDown sn \stemUp sn8 |
534         \stemDown sn8 \stemUp tamb s8 |
535         \stemUp sn4 s8 \stemUp tamb
536       }
537     }
538   >>
541 drumsB = {
542   \drummode {
543     s4 bd8 s2*2 s4 bd8 s4 bd8 s8
544   }
547 \layout {
548   indent = #40
551 \score {
552   \new StaffGroup <<
553     \new DrumStaff {
554       \set DrumStaff.instrumentName = \markup {
555         \column {
556           "Tambourine"
557           "et"
558           "caisse claire s. timbre"
559         }
560       }
561       \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)
562       \drumsA
563     }
565    \new DrumStaff {
566      \set DrumStaff.instrumentName = #"Grosse Caisse"
567      \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)
568      \drumsB }
569   >>
571 @end lilypond
574 @seealso
575 Snippets:
576 @rlsr{Percussion}.
578 Internals Reference:
579 @rinternals{DrumStaff},
580 @rinternals{DrumVoice}.
583 @c TODO: check name -gp
584 @node Ghost notes
585 @unnumberedsubsubsec Ghost notes
587 Ghost notes for drums and percussion may be created using the
588 @code{\parenthesize} command detailed in @ref{Parentheses}.
589 However, the default @code{\drummode} does not include the
590 @code{Parenthesis_engraver} plugin which allows this.
592 @lilypond[quote,ragged-right,verbatim,fragment]
593 \new DrumStaff \with {
594   \consists "Parenthesis_engraver"
597   \context DrumVoice  = "1" { s1 }
598   \context DrumVoice  = "2" { s1 }
599   \drummode {
600     <<
601       {
602         hh8[ hh] <hh sn> hh16
603         < \parenthesize sn > hh
604         < \parenthesize sn > hh8 <hh sn> hh
605       } \\
606       {
607         bd4 r4 bd8 bd r8 bd
608       }
609     >>
610   }
612 @end lilypond
614 @noindent
615 Also note that you must add chords (@code{< >} brackets)
616 around each @code{\parenthesize} statement.
619 @seealso
620 Snippets:
621 @rlsr{Percussion}.