lilypond-user
[Top][All Lists]
Advanced

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

Re: Strange Change Staff behavior


From: Neil Puttock
Subject: Re: Strange Change Staff behavior
Date: Sun, 29 Mar 2009 00:37:05 +0000

2009/3/28 Neil Puttock <address@hidden>:

> I think you've uncovered a bug related to \change Staff here; if you
> remove the \change Staff = "lower", the file compiles fine.  Until
> it's fixed you'll have to place the cross-staff notes in one of the
> lower voices.
>
> Here's a snippet which may be a manifestation of the same bug, but
> with slightly different results (taken from the regtest
> spacing-knee-compressed.ly):

Having looked at the source code, they're definitely the same bug.

You can scrub the advice I gave above if you explicitly instantiate
your voices, since this tricks the iterator into thinking it's already
changed contexts when the first \change Staff comes along (it compares
it to Voice rather than Staff).

\version "2.12.2"

\header {
 title = "Cristo Ressuscitou"
 composer = "J. dos Santos"
 poet = "P. Minhava"
 tagline = "Transcrita por Alberto Simões"

 ocasioes = "entrada"
 seccao   = "entrada"
}


global = {
 \key ees \major
 \time 2/4
}

melody = \relative c' {
 \clef treble
 \global
 \autoBeamOff
 r4\f ees8^\markup{Coro} g \bar "|:"
 bes bes g bes
 ees4( c)
 bes2
 c4 f,(
 \break

 f8) g aes f
 bes4 ees8 c
 aes aes c aes
 f2
 ees2 ~
 ees8 \fermata d^\p d d

 g4 f8 f
 g g d d
 g g a a
 g2 ~
 g8 a bes c
 d4 ees8 c

 d8 g, a bes
 c d ees c
 d4 bes8 bes
 g g f f
 g2 ~
 g8 r ees g \bar ":|"
}

text = \lyricmode {
 A- le- lu- ia! A- le- lu- ia!
 Cris- to res- sus- ci- tou.
 A- le- lu- ia! A- le- lu- ia!

 Não pro- cu- reis en- tre_as som- bras a pes- so- a de Je- sus.
 Res- sus- ci- tou: e- ra_a Vi- da.
 Bri- lhe_en- tre vós: é a Luz.
 Bri- lhe_en- tre vós: é a Luz.
 A- le-
}

upperA = \new Voice \relative c' {
 r4
 \voiceOne
 ees8[( g]\bar "|:" <g bes>4) g8[( bes]
 <bes ees>4) c8[( ees]
 <c g'>4) ees8[( g]
 c[ bes aes g]
 f[ ees d c]
 bes4 ees8[( c]
 aes4) c8([ aes]
 f2
 ees2 ~
 ees8) \fermata

 d8([ d d]
 g4 f
 g d
 g a
 g2 ~
 g8) a[( bes c]
 <f, a d>4) <ees g c>(
 <f a d>) <ees g c>(
 <f a d>) <ees g c>(
 <f a d>) <ges bes ees>(
 <g bes e>) <aes d f>(
 <g d' g>2) ~
 <g d' g>8 r ees[ g] \bar ":|"
}

upperB = \new Voice \relative c {
  \voiceTwo
 \change Staff = "lower" ees4(--
 \change Staff = "upper" ees'4)
 <d f>4 g
 <c, g> c'
 <g bes> ees'
 <f, c' d>-- r4

 <bes, f' g>-- r4
 <ees f>-- r
 <c ees>-- r
 d2
 bes ~
 bes8 r c4(

 bes) c(
 b) c(
 bes) c(
 b) c(
 bes8) r8 r4 s2

 s2 s2 s2 s2 s2 s4 ees
}

upper = {
 \global
 \clef treble
 << \upperA \\ \upperB >>
}

lowerA = \relative c' {
 s2 \bar "|:" s2 s2 s2 s2
 s2 s2 s2 bes4 c8[( aes] g2) ~ g8 r r4
 r8 d8[ d d] g4 f8[ f] g[ g] d[ d] g[ g] a[ a] g r8 r4
}

lowerB = \relative c' {
 s2 \bar "|:" s2 s2 s2 s2
 s2 bes2 ~ bes ~ bes4 bes,( ees) bes8[( g] ees)_\fermata s8 s4
 g2 ~ g2 ~ g2 ~ g2 ~ g8 s8 s4 c'2 ~
 c ~ c ~ c ~ c ~ c ~ c8 r8 s4
}

lower = {
 \global
 \clef bass
 << \lowerA \\ \lowerB >>
}


\score {
 <<
   \new Voice = "mel" { \autoBeamOff \melody }
   \new Lyrics \lyricsto mel \text
   \new PianoStaff <<
     \new Staff = "upper" \upper
     \new Staff = "lower" \lower
   >>
 >>
 \layout {
   \context { \RemoveEmptyStaffContext }
 }
 \midi {
   \context {
     \Score
     tempoWholesPerMinute = #(ly:make-moment 63 4)
   }
 }
}

Regards,
Neil




reply via email to

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