On Aug 11, 2014, at 02:43 , Keith OHara <[email protected]> wrote:

> I'll still put NullVoice in \score by default, so it doesn't interact with 
> the accidental engraver, or anything else that we haven't noticed yet, and 
> let you  \new Staff \with { \accepts NullVoice } when you really want 
> NullVoice included in the Staff.

Isn’t this backwards?  The bugs with part-combined accidentals seem to arise 
from the part combiner’s destroying information (and creating misleading 
information) by reassigning notes to other voices.  Instead of removing the 
NullVoice which has the valuable original information useful to the Accidental 
engraver, shouldn’t there be a way to make the Accidental_engraver ignore the 
voices created by the part combiner?  Here is an example that shows combined 
issues with accidentals, lyrics, and dynamics.

Regards,
— 
Dan

\version "2.18.0"
\language "english"

soprano = \relative c' { cs4-\mf e g e | cs cs c'2 | c4 g c2 }
alto = \relative c' { a4-\f cs ef cs | a a'' c,,2 | c4. bf8 c2 }
words = \lyricmode { _ _ _ _ _ _ _ Glo -- ri -- a }

\layout {
  \context {
    \Staff
    \accidentalStyle modern-voice-cautionary
  }
}

AddDynamicEngravers = \with {
  \consists "Dynamic_engraver"
  \consists "Dynamic_align_engraver"
}

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

RestoreAccidentals = \with {
  \undo \omit Accidental
  \undo \omit AccidentalCautionary
  \undo \omit AccidentalSuggestion
  \remove "Pitch_squash_engraver"
}

OmitAccidentals = \with {
  % show what would be omitted rather than actually omitting it
  \override Accidental.color = #red
  \override Accidental.layer = #-1
  \override Accidental.font-size = #+2

  \override AccidentalCautionary.color = #red
  \override AccidentalCautionary.layer = #-1
  \override AccidentalCautionary.font-size = #+2

  \override AccidentalSuggestion.color = #red
  \override AccidentalSuggestion.layer = #-1
  \override AccidentalSuggestion.font-size = #+2
}

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

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

\score {
  <<
    \new Staff <<
      \set Staff.instrumentName = "NullVoice"
    
      \new Voice = "one" \with {
        \OmitAccidentals
        \RemoveDynamicEngravers
      }
      \new Voice = "shared" \with {
        \OmitAccidentals
        \RemoveDynamicEngravers
      }
      \new Voice = "two" \with {
        \OmitAccidentals
        \RemoveDynamicEngravers
      }

      \partcombine \soprano \alto
      
      \new NullVoice = "soprano" \with {
        \RestoreAccidentals
        \AddDynamicEngravers \dynamicUp
      } {
        \soprano
      }
      \new NullVoice = "alto" \with {
        \RestoreAccidentals
        \AddDynamicEngravers \dynamicDown
      } {
        \alto
      }

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


_______________________________________________
lilypond-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to