[Top][All Lists]

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

Re: Dynamics context doesn't work with polyphony(?)

From: Aaron Hill
Subject: Re: Dynamics context doesn't work with polyphony(?)
Date: Fri, 11 Sep 2020 03:24:34 -0700
User-agent: Roundcube Webmail/1.4.2

On 2020-09-11 1:56 am, Martín Rincón Botero wrote:

sorry to bother again. I've been further exploring the Dynamics context. I
just noticed that when there's a polyphonic passage, not only dynamics
don't align anymore, but also \remove engravers fails to do its job. Is
this a bug or is there any other engraver I should remove from the Dynamics context so that notes and text are not duplicated in polyphonic passages?

The issue seems to be with the << \\ >> construct implicitly referencing named Voice contexts. Events within the Dynamics context are unintentionally leaking into the existing contexts and doubling the notes. Consider:

\version "2.20.0"

musicI = << b'2\f \\ { g'4 4 } >>
<< \new Voice \musicI \new Dynamics \musicI >>

musicII = << \context Voice = "1" { \voiceOne b'2\f }
             \context Voice = "2" { \voiceTwo g'4 4 } >>
<< \new Voice \musicII \new Dynamics \musicII >>

While I may be overlooking some details, the above expressions are logically equivalent. That makes the << \\ >> construct tricky when being reused for Dynamics.

Stripping out the VoiceSeparator *might* work:

removeVoiceSeparator =
#(define-music-function (music) (ly:music?)
  (define (not-music-separator? m) (not (music-separator? m)))
  (music-filter not-music-separator? music))

<< \new Voice \musicI
   \new Dynamics \removeVoiceSeparator \musicI >>

Whether this brings about new issues, I could not say.

-- Aaron Hill

reply via email to

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