lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Tip / trick: cross-staff piano double stems


From: Trevor Bača
Subject: Tip / trick: cross-staff piano double stems
Date: Mon, 20 Aug 2007 06:54:23 -0500

Hi,

Spent some time figuring this one out this morning, so thought I would
pass the tip along; you can figure all of this out by reading 6.3.4
"Explicitly instantiating voices" very carefully, but maybe this tip
will help a little.

This tip describes how to add an "extra", voice- or melody-marking
stem to a cross-staff notehead in piano music; you can see the final
result in the attached imagefile.

Here's a minimal example of some cross-staff beaming in a piano music:


%%% EX 1: MINIMAL CROSS-STAFF BEAMING %%%

\version "2.11.29"

\new PianoStaff <<
   \new Staff = RH {
      \time 4/8
      c''8 [
      c''8
      \change Staff = LH
      e'8
      \change Staff = RH
      c''8 ]
   }
   \new Staff = LH {
      s2
   }
>>

%%% END EX 1 %%%


Example 1 is easy enough to figure out if you first consider that the
spanning beam needs to live inside a single, staff-changing voice, and
then read section 7.1.2 "Manual staff switches" on the \change
command.

The question now arises as to how to add the "extra", flagged stem to
the e'8. We need an extra voice to appear for the duration of just the
e'8. We might at first be tempted to use the << \\ >> polyphony
construct described in 6.3.3 "Basic polyphony". But, in fact, the
presence of the \\ separator will kill our spanning beam and block our
desired solution.

Much better is example 2.


%%% EX 2: CROSS-STAFF WITH DOUBLE STEM %%%

\version "2.11.29"

\new PianoStaff <<
   \new Staff = RH {
      \time 4/8
      c''8 [
      c''8
      \change Staff = LH
      <<
         { e'8 }
         \new Voice {
            \once \override Stem #'direction = #down
            e'8
         }
      >>
      \change Staff = RH
      c''8 ]
   }
   \new Staff = LH {
      s2
   }
>>

%%% END EX 2 %%%


The key thing to notice about example 2 is that we use the << >>
polyphony construct *without the \\ separator*. Section 6.3.4
"Explicitly instantiating voices" describes this form of the polyphony
constructor. Section 6.3.4 also points to the fact that the *absence*
of the \\ separator means that the first { e'8 } expression in the <<
>> *continues the voice of the outer, containing music*. We want our {
e'8 } to continue the voice of the outer music that our beam will
continue uninterrupted.

What's neat about this is that nowhere in either example did we have
to explicitly *name* a voice; we just had to pick the right
*structure*.


Trevor.


-- 
Trevor Bača
address@hidden

Attachment: double-stems.png
Description: PNG image


reply via email to

[Prev in Thread] Current Thread [Next in Thread]