lilypond-user
[Top][All Lists]
Advanced

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

Re: New snippet: remove staff if another is alive (for wind divisi)


From: Thomas Morley
Subject: Re: New snippet: remove staff if another is alive (for wind divisi)
Date: Wed, 8 Aug 2018 12:31:41 +0200

2018-08-07 21:42 GMT+02:00 David Kastrup <address@hidden>:
> Thomas Morley <address@hidden> writes:
>
>> 2018-08-07 20:28 GMT+02:00 David Kastrup <address@hidden>:
>>> Thomas Morley <address@hidden> writes:
>>
>>>>> Ok, let me chime in: I've basically developed some of the low-level
>>>>> mechanisms for divisi staves.
>>>>
>>>> You mean that 'make-dead-when stuff?
>>>
>>> Well, that's the internal part of the low end.  But it's usually driven
>>> by the remove-layer property.  You are not actually using it?
>>
>> Nope.
>> I'll have a closer look at it, though.
>
> Maybe it's a failure.  It may well have problems scaling since it
> creates a single hierarchy.  I know that one tenet or inspiration for
> that kind of numerical hierarchy was that it was reasonably certain to
> avoid creating strange loops.


I've started trying to understand 'remove-layer by reading the IR,
doc-strings and playing with /input/regression/divisi-staves.ly
Afaik no further documentation exists.

As mentioned earlier in this thread I think divisi-Staffs should be
controled from inside themselves, not from the content for the single
voices.

Thus I changed the regtest like below.
While it works starting with single Staffs, switching to divisi and
back later, from a divisiVoice
It fails the other way round, i.e. single Staffs are never printed.

switchOff = \set Staff.keepAliveInterfaces = #'()
switchOn = \unset Staff.keepAliveInterfaces

violI=\relative d' {
  \repeat unfold 44 d4
  <d g'>2
  \repeat unfold 58 d4
  \bar "|."
}

violII=\relative g {
  \repeat unfold 44 g4
  <g d'>2
  \repeat unfold 58 g4
  \bar "|."
}

%% start with single Staffs, switch to divisi and back later
tstI = {
  \switchOff
  \repeat unfold 44 s4
  \switchOn
  s2
  \switchOff
  \repeat unfold 58 s4
}

%% start with divisi, switch to single Staffs and back later
tstII = {
  \switchOn
  \repeat unfold 44 s4
  \switchOff
  s2
  \switchOn
  \repeat unfold 58 s4
}

divisiVoiceI =
  \new Voice << \tstI \violII \violI >>

divisiVoiceII =
  \new Voice << \tstII \violII \violI >>

\score {
  \new StaffGroup \with { \consists "Keep_alive_together_engraver" }
  <<
    \new Staff \with { instrumentName = "Violin I"
               shortInstrumentName = "V I"
               \RemoveAllEmptyStaves
               \override VerticalAxisGroup.remove-layer = 2
             }
    \violI
    \new Staff \with { instrumentName = "Violin II"
               shortInstrumentName = "V II"
               \RemoveAllEmptyStaves
               \override VerticalAxisGroup.remove-layer = 2
             }
    \violII
    \new Staff \with { instrumentName = "Violins"
               shortInstrumentName = "V I&II"
               \override VerticalAxisGroup.remove-layer = 1
               \RemoveAllEmptyStaves
             }
    %% control divisi:
    %\divisiVoiceI
    \divisiVoiceII
  >>
  \layout {
    short-indent = 2\cm
    indent = 3\cm
  }
}

Am I doing something wrong?


Cheers,
  Harm



reply via email to

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