[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: \change Voice
From: |
Keith OHara |
Subject: |
Re: \change Voice |
Date: |
Sun, 26 Apr 2015 17:27:09 -0700 |
User-agent: |
Opera Mail/12.16 (Win32) |
On Sun, 26 Apr 2015 14:35:33 -0700, Dan Eble <address@hidden> wrote:
If there existed a command to redirect the sequential iterator’s output to
another Voice context without requiring a wrapper context, it could not
function in a parallel sequence; the commands would have to be injected into
the part sequence itself.
Well, the current \partcombine works that way, using events like solo-one-event
or unisono-event that signal to part-combine iterator to redirect one of the
the two sequential iterators that part-combine-iterator.cc tracks.
Breaking up the music into subsequences still looks better overall to me. I
tried writing the output of a hypothetical \partcombine that no longer depends
on part-combine-iterator.cc
\partcombine
{R1*3 g''2 d''2 }
{R1 r2 b2 R1 b2 d'2 }
% Breaking into subsequences
\new Staff <<
\context Voice = "one" \with { \voiceOne }
\context Voice = "two" \with { \voiceTwo }
\context Voice = "solo"
\context Voice = "shared"
{
\context Voice = "shared" {R1 r2}
\context Devnull { r2 }
\context Voice = "shared" {R1 }
\context Voice = "one" { g''2 }
\context Voice = "shared" { d'' }
}
{
\context Devnull {R1 r2}
\context Voice = "solo" { \mark"solo II" b2 }
\context Devnull { R1 }
\context Voice = "two" { b2 }
\context Voice = "shared" { d'2 }
} >>
% Using a parallel sequence of \change events
\layout {
\context {
\name "Thread"
\type "Engraver_group" }
\context {
\Voice
\accepts "Thread" } }
\new Staff <<
\context NullVoice = "null"
\context Voice = "one" \with { \voiceOne }
\context Voice = "two" \with { \voiceTwo }
\context Voice = "solo"
\context Voice = "shared"
\new Thread <<
{
\change Voice = "shared" s1 s2
\change Voice = "null" s2
\change Voice = "shared" s1
\change Voice = "one" s2
\change Voice = "shared" s2
}
{ R1 r2 r2 R1 g''2 d''2 } >>
\new Thread <<
{
\change Voice = "null" s1 s2
\change Voice = "solo" \mark"solo II" s2
\change Voice = "null" s1
\change Voice = "two" s2
\change Voice = "shared" s2
}
{ R1 r2 b2 R1 b2 d'2 } >> >>
In any case, if you want to retire the part-combine-iterator, you need new code
to properly break rests. I think there are still bugs with \partcombine when
rests overlap changes of state, so the rewrite might solve some bugs.
- \change Voice, Dan Eble, 2015/04/21
- Re: \change Voice, Keith OHara, 2015/04/25
- Re: \change Voice, David Kastrup, 2015/04/25
- Re: \change Voice, Keith OHara, 2015/04/25
- Re: \change Voice, Dan Eble, 2015/04/26
- Re: \change Voice, Keith OHara, 2015/04/26
- Re: \change Voice, Dan Eble, 2015/04/26
- Re: \change Voice,
Keith OHara <=
- Re: \change Voice, David Kastrup, 2015/04/27
- Re: \change Voice, David Kastrup, 2015/04/27
- Re: \change Voice, Dan Eble, 2015/04/29
- Re: \change Voice, David Kastrup, 2015/04/30
- Re: \change Voice, Dan Eble, 2015/04/30
- Re: \change Voice, David Kastrup, 2015/04/30