Re: Keep alive together - call for use cases

2016-08-23 Thread Abraham Lee
Mark,

On Sun, Aug 21, 2016 at 10:25 AM, Mark Knoop  wrote:

> At 21:13 on 19 Aug 2016, David Kastrup wrote:
> >Mark Knoop  writes:
> >> Hi Mats,
> >>
> >> How does the attached look to you? Note I have moved the
> >> Keep_alive_together_engraver to the GrandStaff level so that the vln
> >> I and vln II groups can work independently. The problem now is
> >> making the system start braces cooperate.
> >
> >I think we should likely have some context with only
> >Keep_alive_engraver in it and accepting all sorts of Staff contexts.
> >That would likely be more natural than juggling manually with
> >Keep_alive_engraver.
>
> I've just submitted an additional patch which I think addresses the
> uses raised by Mats, Kieren and Abraham. See attached ly and pdf files.
>
> Comments, particularly on usability, appreciated.
>

This is looking very nice and appears to do precisely what I (and Kieren)
proposed. Thank you for making this happen. It's true power, I'm sure, will
come to light as more use-cases (especially in "real world" scores) are
attempted. Well done!

Best,
Abraham
___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Keep alive together - call for use cases

2016-08-22 Thread Mark Knoop
At 12:01 on 22 Aug 2016, Kieren MacMillan wrote:
>Hi Mark,
>
>> Yes, sorry, they require a version built with the 3rd patchset here  
>
>Ah…
>
>> that's why I also attached the pdfs,
>> so you can see the results without compiling.  
>
>I was hoping to try it out on my real-world choral example, so that I
>could report back on its sufficiency and usability. I’ll see what I
>can figure out without actually compiling the score.

I'd be happy to try it on one of your scores if you send me the source.

-- 
Mark Knoop

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Keep alive together - call for use cases

2016-08-22 Thread Kieren MacMillan
Hi Mark,

Do your files require a version later than they claim (2.19.45)?

I’m running 2.19.46, and I get

>warning: cannot find property type-check for `keep-alive-group' 
> (backend-type?).  perhaps a typing error?


Thanks,
Kieren.

On Aug 21, 2016, at 12:25 PM, Mark Knoop  wrote:

> I've just submitted an additional patch which I think addresses the
> uses raised by Mats, Kieren and Abraham. See attached ly and pdf files. 
> 
> Comments, particularly on usability, appreciated.



Kieren MacMillan, composer
‣ website: www.kierenmacmillan.info
‣ email: i...@kierenmacmillan.info


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Keep alive together - call for use cases

2016-08-21 Thread Mats Bengtsson



On 08/21/2016 06:26 PM, Mark Knoop wrote:

I've just submitted an additional patch which I think addresses the
uses raised by Mats, Kieren and Abraham. See attached ly and pdf files.

Comments, particularly on usability, appreciated.

Looks good! The possibility to group staves seems intuitive.
Thanks for your efforts!

/Mats


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Keep alive together - call for use cases

2016-08-21 Thread Mark Knoop
At 21:13 on 19 Aug 2016, David Kastrup wrote:
>Mark Knoop  writes:
>> Hi Mats,
>>
>> How does the attached look to you? Note I have moved the
>> Keep_alive_together_engraver to the GrandStaff level so that the vln
>> I and vln II groups can work independently. The problem now is
>> making the system start braces cooperate.  
>
>I think we should likely have some context with only
>Keep_alive_engraver in it and accepting all sorts of Staff contexts.
>That would likely be more natural than juggling manually with
>Keep_alive_engraver.

I've just submitted an additional patch which I think addresses the
uses raised by Mats, Kieren and Abraham. See attached ly and pdf files. 

Comments, particularly on usability, appreciated.

-- 
Mark Knoop
\version "2.19.45"
targetstaff = #(define-scheme-function
  (ctx) (string?)
  #{
\set Staff.keepAliveInterfaces = #'()
\context Staff = #ctx { \unset Staff.keepAliveInterfaces }
  #})
sopnotes = \relative c'' {
  \targetstaff #"tutti"
  c1 1 1 1 \break
  \targetstaff #"sopalt"
  c4-- d e f g f e d c1 R1 \break
  \targetstaff #"sop"
  \repeat unfold 8 { c8 e g e } \break
  \targetstaff #"sopalt"
  c4 d e f g f e d c1 \break
  c4 d e f g f e d c1 R1
  \bar "|."
}
altnotes = \relative g' {
  \targetstaff #"tutti"
  g1 1 1 1
  \targetstaff #"sopalt"
  c4 d e f g f e d c1 R1
  \targetstaff #"alt"
  \repeat unfold 8 { c,8 e g e }
  \targetstaff #"sopalt"
  c4 d e f g f e d c1
  c4 d e f g f e d c1 R1
}
tennotes = \relative e' {
  \targetstaff #"tutti"
  e1 1 1 1
  \targetstaff #"tenbas"
  c4 d e f g f e d c1 R1
  \targetstaff #"ten"
  \repeat unfold 28 { c8 e }
  \targetstaff #"tutti"
  R1*4
}
basnotes = \relative c' {
  \targetstaff #"tutti"
  c1 1 1 1
  \targetstaff #"tenbas"
  c4 d e f g f e d c1 R1
  \targetstaff #"bas"
  \repeat unfold 28 { e,8 g }
  \targetstaff #"tutti"
  R1*4
}

\layout {
  short-indent = 8
  \context {
\StaffGroup
\consists Keep_alive_together_engraver
  }
  \context {
\Staff
\override VerticalAxisGroup.remove-first = ##t
\override VerticalAxisGroup.remove-empty = ##t
  }
}

\score {
  \new StaffGroup <<
\new Staff = "tutti" \with {
  instrumentName = "SATB"
  shortInstrumentName = "SATB"
  \override VerticalAxisGroup.remove-first = ##f
  \override VerticalAxisGroup.remove-empty = ##f
  \override VerticalAxisGroup.remove-layer = 3
} <<
  \new Voice { \voiceOne \partcombine \sopnotes \altnotes }
  \new Voice { \voiceTwo \partcombine \tennotes \basnotes }
>>
\new Staff = "sopalt" \with {
  instrumentName = "SA"
  shortInstrumentName = "SA"
  \override VerticalAxisGroup.remove-layer = 2
  \override VerticalAxisGroup.keep-alive-group = #'sopalt
  \override VerticalAxisGroup.keep-alive-group-layer = 2
} \partcombine \sopnotes \altnotes
\new Staff = "sop" \with {
  instrumentName = "S"
  shortInstrumentName = "S"
  \override VerticalAxisGroup.remove-layer = 1
  \override VerticalAxisGroup.keep-alive-group = #'sopalt
  \override VerticalAxisGroup.keep-alive-group-layer = 2
} \sopnotes
\new Staff = "alt" \with {
  instrumentName = "A"
  shortInstrumentName = "A"
  \override VerticalAxisGroup.remove-layer = 1
  \override VerticalAxisGroup.keep-alive-group = #'sopalt
  \override VerticalAxisGroup.keep-alive-group-layer = 2
} \altnotes
\new Staff = "tenbas" \with {
  instrumentName = "TB"
  shortInstrumentName = "TB"
  \override VerticalAxisGroup.remove-layer = 2
  \override VerticalAxisGroup.keep-alive-group = #'tenbas
  \override VerticalAxisGroup.keep-alive-group-layer = 2
} \partcombine \tennotes \basnotes
\new Staff = "ten" \with {
  instrumentName = "T"
  shortInstrumentName = "T"
  \override VerticalAxisGroup.remove-layer = 1
  \override VerticalAxisGroup.keep-alive-group = #'tenbas
  \override VerticalAxisGroup.keep-alive-group-layer = 2
} \tennotes
\new Staff = "bas" \with {
  instrumentName = "B"
  shortInstrumentName = "B"
  \override VerticalAxisGroup.remove-layer = 1
  \override VerticalAxisGroup.keep-alive-group = #'tenbas
  \override VerticalAxisGroup.keep-alive-group-layer = 2
} \basnotes
  >>
}


divisiproblem.pdf
Description: Adobe PDF document
\version "2.19.40"

viI = \relative c'' {
   \repeat unfold 8 { c4 d e d | }
   \tag #'viIsolo { \repeat unfold 4 { c16 d e f g f e d } }
   \tag #'viItutti { \repeat unfold 2 { c1 } }
   \repeat unfold 24 { c4 d e d | }
}

viII = \relative c' {
   \repeat unfold 16 { g4 c a b | }
   \tag #'viIIsolo { \repeat unfold 4 { g16 c e c g c e c } }
   \tag #'viIItutti { \repeat unfold 2 { g1 } }
   \repeat unfold 16 { g4 c a b | }
}

\paper {
   left-margin = 25\mm
}

\score {
  <<
\new GrandStaff <<
  \new Staff = "vlnisolo" \with {
instrumentName = #"Violin I solo"
shortInstrumentName = "Vi I solo"
\override 

Re: Keep alive together - call for use cases

2016-08-21 Thread Mats Bengtsson



On 08/19/2016 08:16 PM, Mark Knoop wrote:

At 18:02 on 19 Aug 2016, Mats Bengtsson wrote:

>I recently typeset a concerto grosso from the baroque period, where
>the solo and tutti parts are identical during long sections and then
>they differ for some bars, every here and there. When entering the
>parts, I used tags to handle the differences so producing the separate
>parts works without problem. However, in the conductors score, I would
>prefer to only use a single stave per instrument when the solo and
>tutti play in unison, but individual staves when they differ. I
>managed to handle this using remove-layer as long as there's only a
>single instrument group that contains and occasional solo part, but if
>for example both violin 1 and violin 2 have a solo plus a tutti, then
>I didn't manage to get it to work correctly. The following example
>shows my current attempt. As can be seen, the split between solo and
>tutti parts happens both for violin 1 and 2 as soon as one of them is
>split. For example, in the second score line, I would like to see Vi I
>solo, Vi I tutti but only one stave with Vi II.

Hi Mats,

How does the attached look to you? Note I have moved the
Keep_alive_together_engraver to the GrandStaff level so that the vln I
and vln II groups can work independently. The problem now is making the
system start braces cooperate.
Yes, I would really like to keep the grouping of my original example, 
having the solo parts grouped togother in one GrandStaff/StaffGroup and 
the tutti parts in another group. That's why I tried to move the 
engraver to the Score level.


As was pointed out in another email, it's also a bit stupid to have 
duplicated but identical staves for tutti and unison versions of the 
parts, when we in fact only want to change the instrument name. Perhaps 
that can instead be accomplished by some extra Scheme hack for 
typesetting the instrument name?


/Mats

--
=
Mats Bengtsson, Prof.
Signal Processing
School of Electrical Engineering
Royal Institute of Technology (KTH)
SE-100 44  STOCKHOLM
Sweden
Phone: (+46) 8 790 8463 
Fax:   (+46) 8 790 7260
Email: mats.bengts...@ee.kth.se
WWW: http://www.ee.kth.se/~mabe
=


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Keep alive together - call for use cases

2016-08-19 Thread David Kastrup
Mark Knoop  writes:

> At 18:02 on 19 Aug 2016, Mats Bengtsson wrote:
>>I recently typeset a concerto grosso from the baroque period, where
>>the solo and tutti parts are identical during long sections and then
>>they differ for some bars, every here and there. When entering the
>>parts, I used tags to handle the differences so producing the separate
>>parts works without problem. However, in the conductors score, I would
>>prefer to only use a single stave per instrument when the solo and
>>tutti play in unison, but individual staves when they differ. I
>>managed to handle this using remove-layer as long as there's only a
>>single instrument group that contains and occasional solo part, but if
>>for example both violin 1 and violin 2 have a solo plus a tutti, then
>>I didn't manage to get it to work correctly. The following example
>>shows my current attempt. As can be seen, the split between solo and
>>tutti parts happens both for violin 1 and 2 as soon as one of them is
>>split. For example, in the second score line, I would like to see Vi I
>>solo, Vi I tutti but only one stave with Vi II.
>
> Hi Mats,
>
> How does the attached look to you? Note I have moved the
> Keep_alive_together_engraver to the GrandStaff level so that the vln I
> and vln II groups can work independently. The problem now is making the
> system start braces cooperate.

I think we should likely have some context with only Keep_alive_engraver
in it and accepting all sorts of Staff contexts.  That would likely be
more natural than juggling manually with Keep_alive_engraver.

-- 
David Kastrup

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Keep alive together - call for use cases

2016-08-19 Thread Mark Knoop
At 18:02 on 19 Aug 2016, Mats Bengtsson wrote:
>I recently typeset a concerto grosso from the baroque period, where
>the solo and tutti parts are identical during long sections and then
>they differ for some bars, every here and there. When entering the
>parts, I used tags to handle the differences so producing the separate
>parts works without problem. However, in the conductors score, I would
>prefer to only use a single stave per instrument when the solo and
>tutti play in unison, but individual staves when they differ. I
>managed to handle this using remove-layer as long as there's only a
>single instrument group that contains and occasional solo part, but if
>for example both violin 1 and violin 2 have a solo plus a tutti, then
>I didn't manage to get it to work correctly. The following example
>shows my current attempt. As can be seen, the split between solo and
>tutti parts happens both for violin 1 and 2 as soon as one of them is
>split. For example, in the second score line, I would like to see Vi I
>solo, Vi I tutti but only one stave with Vi II.

Hi Mats,

How does the attached look to you? Note I have moved the
Keep_alive_together_engraver to the GrandStaff level so that the vln I
and vln II groups can work independently. The problem now is making the
system start braces cooperate.

-- 
Mark Knoop
\version "2.19.40"

viI = \relative c'' {
   \repeat unfold 8 { c4 d e d | }
   \tag #'viIsolo { \repeat unfold 4 { c16 d e f g f e d } }
   \tag #'viItutti { \repeat unfold 2 { c1 } }
   \repeat unfold 24 { c4 d e d | }
}

viII = \relative c' {
   \repeat unfold 16 { g4 c a b | }
   \tag #'viIIsolo { \repeat unfold 4 { g16 c e c g c e c } }
   \tag #'viIItutti { \repeat unfold 2 { g1 } }
   \repeat unfold 16 { g4 c a b | }
}

\paper {
   left-margin = 25\mm
}

\score {
  \new StaffGroup <<
\new GrandStaff <<
  \new Staff = "vlnisolo" \with {
instrumentName = #"Violin I solo"
shortInstrumentName = "Vi I solo"
\override VerticalAxisGroup.remove-empty = ##t
\override VerticalAxisGroup.remove-first = ##t
\override VerticalAxisGroup.remove-layer = 1
  }
  \pushToTag #'viIsolo \unset Staff.keepAliveInterfaces
  \appendToTag #'viIsolo \set Staff.keepAliveInterfaces = #'()
  \keepWithTag #'viIsolo { \set Staff.keepAliveInterfaces = #'() \viI }
  \new Staff = "vlni" \with {
instrumentName = #"Violin I"
shortInstrumentName = "Vi I"
\override VerticalAxisGroup.remove-empty = ##t
\override VerticalAxisGroup.remove-first = ##t
\override VerticalAxisGroup.remove-layer = 1
  }
  \pushToTag #'viItutti \unset Staff.keepAliveInterfaces
  \appendToTag #'viItutti \set Staff.keepAliveInterfaces = #'()
  \keepWithTag #'viItutti { \set Staff.keepAliveInterfaces = #'() \viI }
  \new Staff = "vlnitutti" \with {
instrumentName = #"Violin I tutti"
shortInstrumentName = "Vi I tutti"
\override VerticalAxisGroup.remove-layer = 2
  }
  \pushToTag #'viItutti \unset Staff.keepAliveInterfaces
  \appendToTag #'viItutti \set Staff.keepAliveInterfaces = #'()
  \keepWithTag #'viItutti { \set Staff.keepAliveInterfaces = #'() \viI }
>>
\new GrandStaff <<
  \new Staff = "vlniisolo" \with {
instrumentName = #"Violin II solo"
shortInstrumentName = "Vi II solo"
alignBelowContext = "vlnisolo"
\override VerticalAxisGroup.remove-empty = ##t
\override VerticalAxisGroup.remove-first = ##t
\override VerticalAxisGroup.remove-layer = 1
  }
  \pushToTag #'viIIsolo \unset Staff.keepAliveInterfaces
  \appendToTag #'viIIsolo \set Staff.keepAliveInterfaces = #'()
  \keepWithTag #'viIIsolo { \set Staff.keepAliveInterfaces = #'() \viII }
  \new Staff = "vlnii" \with {
instrumentName = #"Violin II"
shortInstrumentName = "Vi II"
\override VerticalAxisGroup.remove-empty = ##t
\override VerticalAxisGroup.remove-first = ##t
\override VerticalAxisGroup.remove-layer = 1
  }
  \pushToTag #'viIItutti \unset Staff.keepAliveInterfaces
  \appendToTag #'viIItutti \set Staff.keepAliveInterfaces = #'()
  \keepWithTag #'viIItutti { \set Staff.keepAliveInterfaces = #'() \viII }
  \new Staff = "vlniitutti" \with {
instrumentName = #"Violin II tutti"
shortInstrumentName = "Vi II tutti"
\override VerticalAxisGroup.remove-layer = 2
  }
  \pushToTag #'viIItutti \unset Staff.keepAliveInterfaces
  \appendToTag #'viIItutti \set Staff.keepAliveInterfaces = #'()
  \keepWithTag #'viIItutti { \set Staff.keepAliveInterfaces = #'() \viII }
>>
  >>
  \layout {
\context {
  \GrandStaff
  \consists Keep_alive_together_engraver
  \remove System_start_delimiter_engraver
}
  }
}
___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Keep alive together - call for use cases

2016-08-19 Thread Kieren MacMillan
Hi Mark,

Thanks for the starting point… but I’m really not sure how to use your approach 
and mine simultaneously. I’ll get back to you when I get my head around it, and 
have something for you to consider.

Thanks,
Kieren.


Kieren MacMillan, composer
‣ website: www.kierenmacmillan.info
‣ email: i...@kierenmacmillan.info


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Keep alive together - call for use cases

2016-08-18 Thread Malte Meyn



Am 18.08.2016 um 15:10 schrieb David Kastrup:

Malte Meyn  writes:


Am 18.08.2016 um 14:16 schrieb Mark Knoop:

Could you both take a look at this and see (a) if it helps, and (b)
what else needs to be achieved.


I didn’t read the whole thread but how to deal with different clefs?
For example, in a choir a tenor is notated with \clef "treble_8" but a
tenor/bass combined staff with \clef "bass". This case isn’t a problem
because lilypond uses the clef of the bass voice (two \clef events at
the same time, second one is used). But maybe there are cases where
you would want have the clef of the upper voice (f. e. horns in
octaves, one in treble, one in bass clef, combined in treble clef with
ledger lines for the lower horn)?


So?  The whole point of the layers is that you (more or less fully)
prepare both a split and a combined version and LilyPond then picks the
right layer.  Split and combined layer don't need to have the same
source and/or overrides: you can use an alto clef for the combined
version and violin/bass clefs for the split version if you want to.

Of course you will _largely_ want to share the same source, and tags,
variables, and parallel music expressions will help with that.


Hmja, so weit hätt ich mal denken können …

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Keep alive together - call for use cases

2016-08-18 Thread David Kastrup
Malte Meyn  writes:

> Am 18.08.2016 um 14:16 schrieb Mark Knoop:
>> Could you both take a look at this and see (a) if it helps, and (b)
>> what else needs to be achieved.
>
> I didn’t read the whole thread but how to deal with different clefs?
> For example, in a choir a tenor is notated with \clef "treble_8" but a
> tenor/bass combined staff with \clef "bass". This case isn’t a problem
> because lilypond uses the clef of the bass voice (two \clef events at
> the same time, second one is used). But maybe there are cases where
> you would want have the clef of the upper voice (f. e. horns in
> octaves, one in treble, one in bass clef, combined in treble clef with
> ledger lines for the lower horn)?

So?  The whole point of the layers is that you (more or less fully)
prepare both a split and a combined version and LilyPond then picks the
right layer.  Split and combined layer don't need to have the same
source and/or overrides: you can use an alto clef for the combined
version and violin/bass clefs for the split version if you want to.

Of course you will _largely_ want to share the same source, and tags,
variables, and parallel music expressions will help with that.

-- 
David Kastrup

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Keep alive together - call for use cases

2016-08-18 Thread Malte Meyn



Am 18.08.2016 um 14:16 schrieb Mark Knoop:

Could you both take a look at this and see (a) if it helps, and (b)
what else needs to be achieved.


I didn’t read the whole thread but how to deal with different clefs? For 
example, in a choir a tenor is notated with \clef "treble_8" but a 
tenor/bass combined staff with \clef "bass". This case isn’t a problem 
because lilypond uses the clef of the bass voice (two \clef events at 
the same time, second one is used). But maybe there are cases where you 
would want have the clef of the upper voice (f. e. horns in octaves, one 
in treble, one in bass clef, combined in treble clef with ledger lines 
for the lower horn)?


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Keep alive together - call for use cases

2016-08-18 Thread Mark Knoop
At 20:18 on 16 Aug 2016, Mark Knoop wrote:
>At 12:13 on 16 Aug 2016, tisimst wrote:
>>A great example (better and more likely to happen than mine)! Maybe
>>you'll be able to check this item off you wish-list soon!  
>
>Thanks both for those. I probably won't do anything on this for the
>next couple of days, so feel free to add more thoughts if you have
>them. 

The attached goes some way towards addressing both Kieren's carol and
Abraham's horn problems. Note this is really just an expansion of the
divisi-staves example and works with current lilypond (without my
patch). 

Could you both take a look at this and see (a) if it helps, and (b)
what else needs to be achieved. 

-- 
Mark Knoop
\version "2.19.45"
targetstaff = #(define-scheme-function
  (ctx) (string?)
  #{
\set Staff.keepAliveInterfaces = #'()
\context Staff = #ctx { \unset Staff.keepAliveInterfaces }
  #})
sopnotes = \relative c'' {
  \targetstaff #"tutti"
  c1 1 1 1 \break
  \targetstaff #"sopalt"
  c4-- d e f g f e d c1 R1 \break
  \targetstaff #"sop"
  \repeat unfold 8 { c8 e g e } \break
  \targetstaff #"sopalt"
  c4 d e f g f e d c1 \break
  c4 d e f g f e d c1 R1
  \bar "|."
}
altnotes = \relative g' {
  \targetstaff #"tutti"
  g1 1 1 1
  \targetstaff #"sopalt"
  c4 d e f g f e d c1 R1
  \targetstaff #"alt"
  \repeat unfold 8 { c,8 e g e }
  \targetstaff #"sopalt"
  c4 d e f g f e d c1
  c4 d e f g f e d c1 R1
}
tennotes = \relative e' {
  \targetstaff #"tutti"
  e1 1 1 1
  \targetstaff #"tenbas"
  c4 d e f g f e d c1 R1
  \targetstaff #"ten"
  \repeat unfold 28 { c8 e }
  \targetstaff #"tutti"
  R1*4
}
basnotes = \relative c' {
  \targetstaff #"tutti"
  c1 1 1 1
  \targetstaff #"tenbas"
  c4 d e f g f e d c1 R1
  \targetstaff #"bas"
  \repeat unfold 28 { e,8 g }
  \targetstaff #"tutti"
  R1*4
}

\layout {
  short-indent = 8
  \context {
\StaffGroup
\consists Keep_alive_together_engraver
  }
  \context {
\Staff
\override VerticalAxisGroup.remove-first = ##t
\override VerticalAxisGroup.remove-empty = ##t
  }
}

\score {
  \new StaffGroup <<
\new Staff = "tutti" \with {
  instrumentName = "SATB"
  shortInstrumentName = "SATB"
  \override VerticalAxisGroup.remove-first = ##f
  \override VerticalAxisGroup.remove-empty = ##f
  \override VerticalAxisGroup.remove-layer = 3
} <<
  \new Voice { \voiceOne \partcombine \sopnotes \altnotes }
  \new Voice { \voiceTwo \partcombine \tennotes \basnotes }
>>
\new Staff = "sopalt" \with {
  instrumentName = "SA"
  shortInstrumentName = "SA"
  \override VerticalAxisGroup.remove-layer = 2
} \partcombine \sopnotes \altnotes
\new Staff = "sop" \with {
  instrumentName = "S"
  shortInstrumentName = "S"
  \override VerticalAxisGroup.remove-layer = 1
} \sopnotes
\new Staff = "alt" \with {
  instrumentName = "A"
  shortInstrumentName = "A"
  \override VerticalAxisGroup.remove-layer = 1
} \altnotes
\new Staff = "tenbas" \with {
  instrumentName = "TB"
  shortInstrumentName = "TB"
  \override VerticalAxisGroup.remove-layer = 2
} \partcombine \tennotes \basnotes
\new Staff = "ten" \with {
  instrumentName = "T"
  shortInstrumentName = "T"
  \override VerticalAxisGroup.remove-layer = 1
} \tennotes
\new Staff = "bas" \with {
  instrumentName = "B"
  shortInstrumentName = "B"
  \override VerticalAxisGroup.remove-layer = 1
} \basnotes
  >>
}
___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Keep alive together - call for use cases

2016-08-16 Thread Kieren MacMillan
Hi David (et al.),

> (The last line of the thread made me chuckle and sigh.)

=)

Here’s a later incarnation of the same thread/topic:


Still unresolved… sigh.
But I have great hopes for Mark’s work on this!

Best,
Kieren.



Kieren MacMillan, composer
‣ website: www.kierenmacmillan.info
‣ email: i...@kierenmacmillan.info


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Keep alive together - call for use cases

2016-08-16 Thread David Wright
On Tue 16 Aug 2016 at 15:00:05 (-0400), Kieren MacMillan wrote:
> On Aug 16, 2016, at 2:50 PM, tisimst  wrote:
> > I'll just re-state my earlier use-case (in the devel- mailing list) for 
> > good measure that extends divisi staves.
> 
> Yes. On a related note, see the thread I started a few years ago (still open, 
> ultimately) on choral divisi: 
> 

I took a look at that thread: I can't find the string "indivisible" in
the 2.19.44 PDFs. Do you have a reference.

(The last line of the thread made me chuckle and sigh.)

Cheers,
David.

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Keep alive together - call for use cases

2016-08-16 Thread Mark Knoop
At 12:13 on 16 Aug 2016, tisimst wrote:
>A great example (better and more likely to happen than mine)! Maybe
>you'll be able to check this item off you wish-list soon!

Thanks both for those. I probably won't do anything on this for the
next couple of days, so feel free to add more thoughts if you have
them. 

-- 
Mark Knoop

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Keep alive together - call for use cases

2016-08-16 Thread tisimst
On Tue, Aug 16, 2016 at 1:01 PM, Kieren MacMillan [via Lilypond] <
ml-node+s1069038n193727...@n5.nabble.com> wrote:

>
> On Aug 16, 2016, at 2:50 PM, tisimst <[hidden email]
> <http:///user/SendEmail.jtp?type=node=193727=0>> wrote:
> > I'll just re-state my earlier use-case (in the devel- mailing list) for
> good measure that extends divisi staves.
>
> Yes. On a related note, see the thread I started a few years ago (still
> open, ultimately) on choral divisi: <http://lists.gnu.org/archive/
> html/lilypond-user/2014-12/msg00481.html>
>

A great example (better and more likely to happen than mine)! Maybe you'll
be able to check this item off you wish-list soon!




--
View this message in context: 
http://lilypond.1069038.n5.nabble.com/Keep-alive-together-call-for-use-cases-tp193723p193728.html
Sent from the User mailing list archive at Nabble.com.___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Keep alive together - call for use cases

2016-08-16 Thread Kieren MacMillan
Hi Abraham,

On Aug 16, 2016, at 2:50 PM, tisimst  wrote:
> I'll just re-state my earlier use-case (in the devel- mailing list) for good 
> measure that extends divisi staves.

Yes. On a related note, see the thread I started a few years ago (still open, 
ultimately) on choral divisi: 


Best,
Kieren.


Kieren MacMillan, composer
‣ website: www.kierenmacmillan.info
‣ email: i...@kierenmacmillan.info


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Keep alive together - call for use cases

2016-08-16 Thread tisimst
On Tue, Aug 16, 2016 at 12:22 PM, Kieren MacMillan [via Lilypond] <
ml-node+s1069038n193724...@n5.nabble.com> wrote:

> Hi Mark,
>
> > I've been working on some patches to enable more flexible uses
> > for the Keep_alive_together_engraver.
>
> Thank you!
>
> > if I could ask users for any situations where they can imagine this
> > engraver helping, that currently don't work, or don't work easily.
>
> 2. The “divisi staves” use-case is also a primary feature/request for me.
> Similar/analogous use-cases: a two-stave harp part compressing (if
> necessary) to a single staff in the full score.
>

I'll just re-state my earlier use-case (in the devel- mailing list) for
good measure that extends divisi staves.

Let's say I have a 4-horn group. The way these appear in the score depends
on the complexity of their parts, in the following configurations:

1. Each has their own staff
2. They can be grouped into a 1/3 staff and 2/4 staff.
3. They can be grouped together into a single staff.

I imagine them falling into a "keep-alive-tree" like this:

All Horns Group staff
|
|-- Horns 1/3 Joint Staff
|  |
|  |-- Horn 1 Staff
|  |-- Horn 3 Staff
|
|-- Horns 2/4 Joint Staff
   |
   |-- Horn 2 Staff
   |-- Horn 4 Staff

The expected behavior in this (albeit hypothetical) situation would
automatically allow for each branch to hide its own higher nodes while
allowing the other branches to join together at their highest available
node.

For example, say I want to show the Horn 1 part in its own staff. This
would FORCE Horn 3 to show up on its own staff, but would ALLOW Horns 2/4
to appear on their joint staff, to get:

- Horn 1 Staff
- Horn 3 Staff
- Horns 2/4 Staff

Alternatively, Horn 3 could jump to the joint staff to minimize the number
of extra staves, like:

- Horn 1 Staff
- Horns 2/3/4 Staff

As discussed before, I couldn't find a good way to allow this kind of
"nested" divisi functionality because it seemed like the trigger acted more
like a global on/off switch. I realize this could really be a coding
nightmare, but could be a really helpful feature, too, for automatically
splitting/combining frenched staves.

Forgive me if I didn't explain that very well.

Best,
Abraham




--
View this message in context: 
http://lilypond.1069038.n5.nabble.com/Keep-alive-together-call-for-use-cases-tp193723p193726.html
Sent from the User mailing list archive at Nabble.com.___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Keep alive together - call for use cases

2016-08-16 Thread Kieren MacMillan
Hi Mark,

> I've been working on some patches to enable more flexible uses
> for the Keep_alive_together_engraver.

Thank you!

> if I could ask users for any situations where they can imagine this
> engraver helping, that currently don't work, or don't work easily.

1a. The "frenched score with ScoreMarks / MarkLine / whatever” use-case is my 
main one. (This use-case would, I assume, include “large time signature” lines, 
chord symbols, etc.?)

1b. Essentially identical — but not “marks” exactly — is the “dialogue” 
(TextLine) above/below a theatre work (e.g., musical, opera, narrated). Again, 
in a frenched score situation, that line should live and die with the “last 
context standing”.

2. The “divisi staves” use-case is also a primary feature/request for me. 
Similar/analogous use-cases: a two-stave harp part compressing (if necessary) 
to a single staff in the full score.

To be honest, I can’t really think of any other significantly different 
use-cases at the moment… but I have no doubt that they’re out there, and if I 
think of one, I’ll be sure to let you know about it.

Thanks! Can’t wait for this feature to be available “in the trenches".  =)
Kieren.


Kieren MacMillan, composer
‣ website: www.kierenmacmillan.info
‣ email: i...@kierenmacmillan.info


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Keep alive together - call for use cases

2016-08-16 Thread Mark Knoop
I've been working on some patches to enable more flexible uses for the
Keep_alive_together_engraver. Whilst I've achieved my particular use
case, David K is (rightly) keen that any changes might also address (or
at least not rule out) other potential improvements.

(If you're interested in the code, look here:
https://codereview.appspot.com/308910043/)

So if I could ask users for any situations where they can imagine this
engraver helping, that currently don't work, or don't work easily. I'll
start by describing my case, which came up on the list recently.

Duplicating rehearsal, tempo, volta marks etc at multiple vertical
positions in an orchestral score is possible with a custom MarkLine
context (http://lsr.di.unimi.it/LSR/Item?id=1010), however this
technique currently doesn't work in a Frenched score, as there may be
passages where e.g. the brass are tacet so two MarkLines would be shown
together. My fix makes it possible to set a context (Staff or MarkLine)
to be kept alive only while there is another Staff in the group.

See also the temporary divisi staves example here:
http://lilypond.org/doc/v2.19/input/regression/a6/lily-436997bb.ly
as another use of the engraver.

Many thanks for your input.

--
Mark Knoop

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user