lilypond-devel
[Top][All Lists]
Advanced

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

Re: AccidentalCautionary in NullVoice


From: Dan Eble
Subject: Re: AccidentalCautionary in NullVoice
Date: Sat, 16 Aug 2014 14:29:29 -0400

On Aug 11, 2014, at 02:43 , Keith OHara <address@hidden> 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 }
    >>
  >>
}




reply via email to

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