Keith OHara <k-ohara5...@oco.net> writes: > Urs Liska <ul <at> openlilylib.org> writes: > >> Keith wrote: >> > I suggest looking over the existing partcombine bugs, and orchestral >> > scores, to see what problems generally need solving. > >> If there's anything I can do to help (without understanding more than >> basic Scheme and without any option to help on the C++ part) please let >> me know. Maybe it helps that I'm currently working on a big orchestral >> score? > > I remember that you were once trying to define \new Voices in the music > you gave to \partcombine (but it seems you decided you did not need to) : > http://lists.gnu.org/archive/html/lilypond-user/2014-10/msg00509.html > This doesn't work because \partcombine rearranges the music into Voices > that it defines, with names "one" "two" "shared" "solo". With the color > coding below, you can see that LilyPond's layout receives notes in four > distinct voices from \partcombine. > > soprano = { d''2 f'' g'' a'' g''4 e''~e''2 R1 e''1} > alto = { b'2. c''4 c''2( e'') R1 f''4 d''~d''2 c''1} > \new Staff << > \context Voice = "one" { \override NoteHead #'color = #red } > \context Voice = "two" { \override NoteHead #'color = #green } > \context Voice = "shared" {\override NoteHead #'color = #blue } > \context Voice = "solo" {\override NoteHead #'color = #grey } > \partcombine \soprano \alto >> > > Dan has for a long time wanted to be able to control which voices get > which notes, while still having \partcombine do the tedious work of > finding where the parts can be joined into chords, figuring rests, > etc.
Well, in the category "dumb tricks with context definitions" we can crank out the following: soprano = { d''2 f'' g'' a'' g''4 e''~e''2 R1 e''1} alto = { b'2. c''4 c''2( e'') R1 f''4 d''~d''2 c''1} \new Staff << \context Voice = "one" { \context VoiceAlias = "shared" { } \override Voice.NoteHead #'color = #red } \context Voice = "two" { \override NoteHead #'color = #green } \context Voice = "solo" {\override NoteHead #'color = #grey } \partcombine \soprano \alto >> \layout { \context { \Voice \accepts "VoiceAlias" } \context { \name "VoiceAlias" \alias "Voice" \type "Engraver_group" } } Something like this might also help for defining the "main voice" in << \\ >> split voices. But it does beg the question whether these kinds of trick are not an indication that we are lacking some better interfaces. Something like \partcombine \with { "one" = "solo" } ... would of course be feasible but that does not buy us an input strategy for << \\ >> yet. At any way, this particular trick requires issue 3225 (version 2.17.14 or later) to work. -- David Kastrup _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel