Hi,

2014-08-28 1:40 GMT+02:00 Kieren MacMillan <kieren_macmil...@sympatico.ca>:
> Hi all,
>
>>> I think that issue 3518 (pushed recently) does just this:
>>> https://code.google.com/p/lilypond/issues/detail?id=3518
>>
>> It doesn't do the automatic "AI nightmare" part.
>
> Yes, unfortunately...

Yes, sorry - i should've trimmed quoted email better.

>> However, it provides the low level machinery for pulling in the "maximally 
>> required" number
>> of staves between automatic or manual line breaks, where the requirement
>> is determined by working with keep-alive-interfaces and tags on the
>> various staff variants.
>
> That could be helpful!
>
> I still need to wrap my head around how this framework/machinery works (or 
> doesn’t) with
> true content-presentation separation; the example on the Google Code page has 
> multiple
> "\context Staff” calls buried in the \violins note definition, which to my 
> mind mixes content
> with presentation in an unfortunate way.

I think you looked at an earlier work-in-progress snippet -  in the
attachment you can find the "final" version.  Instead of having music
jump between staves, it typesets everything in two variants (divided
and not) and specifies what should be visible at which times.  Seems
to be the right way to separate content and presentation.

>> It's a solid framework for a solid part of the job.
>
> I’ll be interested in my testing to see what percentage of real-world 
> scenarios this part represents.
>
>> The important thing to note is that this framework does _not_ require
>> manual tampering with line breaks to arrive at "correct" results.
>
> That is a critical and wonderful feature.

Indeed!
best,
Janek
\version "2.19.13"

\header {
  texidoc = "The @code{VerticalAxisGroup.remove-layer}
property can be used for typesetting temporary divisi staves where
the switch to split staves is done only at line breaks such that all
complex passages are rendered in separate staves."
}

boring = \set Staff.keepAliveInterfaces = #'()
tricky = \unset Staff.keepAliveInterfaces

violI=\relative d' {
  \boring \repeat unfold 100 d4
  \tricky <d g'>2
  \boring \repeat unfold 98 d4
  \bar "|."
}

violII=\relative g {
  \boring \repeat unfold 100 g4
  \tricky <g d'>2
  \boring \repeat unfold 98 g4
  \bar "|."
}

\score {
  \new StaffGroup \with { \consists "Keep_alive_together_engraver" }
  <<
    \new Staff \with { instrumentName = "Violin I"
		       shortInstrumentName = "V I"
		       \override VerticalAxisGroup.remove-empty = ##t
		       \override VerticalAxisGroup.remove-first = ##t
		       \override VerticalAxisGroup.remove-layer = 1
		     }
    \violI
    \new Staff \with { instrumentName = "Violin II"
		       shortInstrumentName = "V II"
		       \override VerticalAxisGroup.remove-empty = ##t
		       \override VerticalAxisGroup.remove-first = ##t
		       \override VerticalAxisGroup.remove-layer = 1
		     }
    \violII
    \new Staff \with { instrumentName = "Violins"
		       shortInstrumentName = "V I&II"
		       \override VerticalAxisGroup.remove-layer = 2
		     }
    <<  \violI \\ \violII  >>
  >>
  \layout {
    short-indent = 2\cm
    indent = 3\cm
  }
}
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to