lilypond-devel
[Top][All Lists]
Advanced

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

Re: Part combiner: separate split state and voice names


From: David Kastrup
Subject: Re: Part combiner: separate split state and voice names
Date: Tue, 02 Dec 2014 10:53:51 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux)

Keith OHara <address@hidden> 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



reply via email to

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