In case, I buried this detail too deep in the message, this needs to work 
WITHOUT explicit line breaking, due to multiple font-sizes and versions with 
different combinations of instruments.

On Dec 12, 2012, at 11:05 AM, [email protected] wrote:

> Greetings all.
> 
> This forum was most helpful recently in showing me how to use \context { 
> \Staff \RemoveEmptyStaves } to hide non-empty staves containing music.
> 
> The purpose of this was to swap a single staff with two combined voices for 
> two separate staves with one voice each after a line break, and vice versa 
> (combining two voices on different staves into a single staff after a line 
> break).  
> 
> (Lest anyone be confused, the voices that have the effect of appearing, in 
> the score, to be split and recombined are separate Voice contexts that don't 
> actually jump staves.)
> 
> The proposed solution was to use Staff context property "keepAliveInterfaces" 
> to create hideStaff and showStaff commands.
> 
> hideStaff = \set Staff.keepAliveInterfaces = #'()
> showStaff = \set Staff.keepAliveInterfaces = #'(
>     bass-figure-interface
>     chord-name-interface
>     cluster-beacon-interface
>     fret-diagram-interface
>     lyric-syllable-interface
>     note-head-interface
>     tab-note-head-interface
>     lyric-interface
>     percent-repeat-item-interface
>     percent-repeat-interface
>     stanza-number-interface
>     text-interface
>     rest-interface  % added to allow keeping alive staves with only rests
> )
> 
> This ends up working quite well for 
> * short to moderate-length pieces 
> * where only one score is to be created from music so annotated with 
> \hideStaff and \showStaff 
> * and where explicit line breaks (\beak and \noBreak) are used.
> 
> For this project, it is just about imperative to use Lilypond's automatic 
> line breaking instead of explicit \break \noBreak line breaking, due to the 
> massive length of the piece and the need to produce multiple versions at 
> different font sizes and with different combinations of parts.
> 
> The problem is that when I use \showStaff, as defined above, it causes 
> Lilypond to display the staff, starting at the PREVIOUS line break.  And I 
> need it to delay showing the staff until the NEXT line break.
> 
> Anyone know how I can get Lilypond to unhide a staff at the NEXT line break?
> 
> 
> Here's some pseudo-lilypond source the illustrates what I want to be able to 
> write:
> 
> celloCombined = \relative c { 
> \clef bass
> | c4 c c c
> .
> .
> .
> \barNumberCheck #10
> | d4 d d d
> % start overlap
> | \hideStaff <c e>4 ^"divided" <c e> <c e> <c e>  % staff hidden at next line 
> break
> | <d f>4 <d f> <d f> <d f>
> | <c e>4 <c e> <c e> <c e>
> | <d f>4 <d f> <d f> <d f> 
> % end overlap
> | R1*10
> }
> 
> celloI = \relative c {
> \clef bass
> R1*10
> 
> \barNumberCheck #11  % measure 1 + 10 measures rest = measure 11
> % start overlap
> | \showStaffNextBreak e4 e e e  % staff shown at NEXT line break, not from 
> previous line break
> | f4 f f f
> | e4 e e e
> | f4 f f f 
> % end overlap
> | g4\p\< g, f8 f' f'4\f  % messy stuff, that's not good for one staff; voice 
> crossing
> .
> .
> . % continues
> }
> 
> celloII = \relative c {
> \clef bass
> R1*10
> 
> \barNumberCheck #11  % measure 1 + 10 measures rest = measure 11
> % start overlap
> | \showStaffNextBreak c4 c c c  % staff shown at NEXT line break, not from 
> previous line break
> | d4 d d d
> | c4 c c c
> | d d d d 
> % end overlap
> | d'2\f> d,,4 e\!  % different dynamics
> .
> .
> . % continues
> }
> 
> \score {
> \new GrandStaff <<
> \new Staff \celloCombined
> \new Staff \celloI
> \new Staff \celloII
> >>
> 
> \layout {
> \context { \Staff \RemoveEmptyStaves }
> }
> }
> 
> This may not perfectly demonstrate everything, but the idea is that I code an 
> overlap in the parts after the place I tell Lilypond to switch out the staves 
> and as soon as Lilypond finds an optimal line break, it makes the switch.  As 
> long as the overlap is large enough, the dropping out staff will be removed 
> before the end of the overlap and the change will appear seamless without 
> having to encode the whole score twice-- once in two staves and one in a 
> combined single staff.
> 
> 
> Thanks for any ideas!
> 
> 

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

Reply via email to