lilypond-auto
[Top][All Lists]
Advanced

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

Re: [Lilypond-auto] Issue 2235 in lilypond: \partcombine: accidental rem


From: lilypond
Subject: Re: [Lilypond-auto] Issue 2235 in lilypond: \partcombine: accidental reminders of first part lost
Date: Tue, 06 Jan 2015 05:45:17 +0000


Comment #5 on issue 2235 by address@hidden: \partcombine: accidental reminders of first part lost
https://code.google.com/p/lilypond/issues/detail?id=2235

Here is a workaround that doesn't require adding things to the parts themselves. (The final two bars are the same as the first example above.)

\version "2.19.15"
\language "english"

soprano = \relative c' { cs4-\mf e\< g\! e8( f) | cs4 cs c'2-\fermata |
                         cs4 cs c2 | c4 g cs2~ | cs4 b8( c) d4 r | bf1 | b! }
alto = \relative c' { a4-\f cs\< ef cs\! | a a'' c,,8 d( e) f-\fermata |
                      a'4 a c,,2 | c4. bf8 c2 | g'4 g a4. g8 | g1 | b }
words = \lyricmode { _ _ _ _ _ _ _ _ _ _ Glo -- ri -- a }

\layout {
  \context {
    \Staff
    \accepts "VoiceGroup"
    \accidentalStyle voice
    printPartCombineTexts = ##f
  }

  \context {
    \name "VoiceGroup"
    \type "Engraver_group"
    \description "A group of voices."
    \accepts "Voice"
  }

  \context {
    \VoiceGroup
    \accepts "PartcombineWorkAroundVoice"
  }

  \context {
    \name "PartcombineWorkAroundVoice"
    \type "Engraver_group"

    \description "A voice involved in working around deficiencies of
the part combiner."

    % Need note heads so that accidentals appear, but hidden so that
    % they don't affect the position of heads in other voices.
    \consists "Note_heads_engraver"
    \hide NoteHead

    % Ties affect accidental engraving.
    \consists "Tie_engraver"
    \omit Tie

    \consists "Dynamic_engraver"
    \consists "Dynamic_align_engraver"
  }
}

RemoveDynamicEngravers = \with {
  \remove "Dynamic_engraver"
  \remove "Dynamic_align_engraver"
}

killDynamics =
#(define-music-function
  (parser location music) (ly:music?)
  (music-filter
   (lambda (m) (not (or
                     (eq? (ly:music-property m 'name) 'AbsoluteDynamicEvent)
                     (eq? (ly:music-property m 'name) 'CrescendoEvent)
                     (eq? (ly:music-property m 'name) 'DecrescendoEvent)
                     )))
   music))

\score {
  \new Staff <<
    \set Staff.instrumentName = "<< \\\\ >>"
    \dynamicUp \soprano
    \\
    \dynamicDown \alto
  >>
}

\score {
  \new Staff <<
    \set Staff.instrumentName = "partcombine"
    % warning: "Two simultaneous absolute-dynamic events"
    \partcombine \soprano \alto
  >>
}

\score {
  <<
    \new Staff \with {
      \remove "Accidental_engraver"
    } <<
      \set Staff.instrumentName = "work-around"

      \new Voice = "one" \with \RemoveDynamicEngravers {}
      \new Voice = "shared" \with \RemoveDynamicEngravers {}
      \new Voice = "two" \with \RemoveDynamicEngravers {}
      % kill dynamics to allow combining differently spanned parts
      \partcombine \killDynamics \soprano \killDynamics \alto

      \new VoiceGroup \with {
        \consists "Accidental_engraver"
      } <<
        \new PartcombineWorkAroundVoice { \dynamicUp \soprano }
        \new PartcombineWorkAroundVoice { \dynamicDown \alto }
      >>

      \new NullVoice = "soprano" \soprano
      \new NullVoice = "alto" \alto
    >>

    \new Lyrics { \lyricsto "soprano" \words }
  >>
}


--
You received this message because this project is configured to send all issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings



reply via email to

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