[Top][All Lists]

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

Re: \oneVoice and \voiceXX commands having the wrong scope

From: Yuval Harel
Subject: Re: \oneVoice and \voiceXX commands having the wrong scope
Date: Wed, 23 Feb 2005 15:38:00 +0200
User-agent: Opera M2/7.54 (Win32, build 3865)

On Sat, 29 Jan 2005 17:17:38 -0800, Graham Percival <address@hidden> wrote:

On 28-Jan-05, at 8:28 AM, Yuval Harel wrote:
This example is a very useful. Until now I didn't understand why the two different syntaxes
<< {} {} >> and << {} \\ {} >> were necessary.
I think it should appear in the documentation (with the addition of \voiceOne and \voiceTwo to avoid collisions and the "Too many clashing notecolumns." warning), along with explanation that the << \\ >> approach produces separate voices, and some examples showing
how voice flow in and out of such constructs (perhaps using slurs).
I'm willing to write this (and send it to the development list? to Graham?)

Great!  Please send it to lilypond-devel.

I've updated the polyphony docs somewhat in 2.5.x; please have a look at them
and suggest changes / additions.

- Graham


I'm working on updating the polyphony documentation. However, there are some things I want to write about, but don't understand well enough, so here are some questions:

1) What is the meaning of \shiftXXX commands (i.e. the meaning of the #'horizontal-shift property), and how does Lilypond resolve collisions between voices? The best guess I have at how this work is this cumbersome description:
When two notes appear in two different voices simultaneously:
- If both voices have the same shift and stem direction, the two notes are vertically alligned, no collision resolution is not attempted, and a warning is produced. - If the voices have the same shift in different stem directions, the notes are vertically alligned, unless collision resolution shifts them horizontally. - If the voices have different shift, they will never be alligned. If possible, only the note with the greater horizontal-shift will be shifted, in the direction clockwise to the stem direction. I tried experimenting a bit to verify that, but it appears to be wrong, e.g. in:
\new Staff \transpose c c' { <<
    {\stemUp a'}
    \new Voice {\stemUp c}
    \new Voice {\shiftOn \stemUp a}

all voices are alligned horizontally. Removing the {c} makes the two {a}s not be alligned. Also, why do shifts exist at all, instead of being a part of the collision-resolution mechanism? The only use I see for the seperation is to bypass the collision-resolution by defining both voices with the same shift and stem direction (the same \voiceXXX command}. But I suspect this is not the reason, since doing so produces a warning.

2) What is the exact meaning of "\\". For example, what is the meaning of constructs only partially divided by "\\", such as:
<< {..} {..} \\ {..} >>
and why?

3) The current documentation notes that voices in << {...} \\ {...} >> constructs are named "1","2" etc. What is the name of the main voice (outside of these constructs)?


reply via email to

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