help-gnu-music
[Top][All Lists]
Advanced

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

Re: Mail delivery failed: returning message to sender


From: Rune Zedeler
Subject: Re: Mail delivery failed: returning message to sender
Date: Fri, 23 Feb 2001 14:03:24 +0100

Mail Delivery System wrote:

> Hi, in the appended piece I expect beams to be turned off.
> But they're present in the second staff.
...

> global=\notes {
...
>               \autoBeamOff
...
> }

> \score{
...
>                 \context ChordNames < \global \accomp >
...
>                 \context Staff =vone < \global \tlOne >
...
>                 \context Staff =vtwo < \global \tlTwo >


Okay... A bit of explanation...
Have you ever tried to start a music piece with a chord, like this?

\context Staff=sa { <c' e' g' c''> d' e'}

The result of this is that the chord is generated but the stems are
wrong.
The explanation: (Hope I have got it right, otherwise somebody probably
corrects me)
If no voice context currently exists and lily enounters a note, a voice
context i automatically generated. - This normally happens at the first
note in the staff.
But when the staff starts with a chord it first meats the note within
the chord, and therefor creates the voice-context staff-globally but
only within the chord. The result is that all notes in the chord gets
different voices and hence is displayed not as a chord but with a stem
on each note.
The solution for this is to explicitly create a voice context:

\context Staff=sa \contextVoice { <c' e' g' c''> d' e'}

In your example, your staffs do start with chords! The result is:
\global gets its own voice, and \tlOne hh. tlTwo gets OTHER voices.
in property.ly you see that autoBeamOff operates on voices:

autoBeamOff = \property Voice.noAutoBeaming = ##t

And therefore it only takes effect in the global voice, not in the tlOne
and tlTwo voices.
There are two solutions on you problem.

Either you create voice contexts like in the above example:
                 \context Staff =vone \context Voice < \global \tlOne >
...
                 \context Staff =vtwo \context Voice < \global \tlTwo >

Or you can replace \autoBeamOff with \property Staff.noAutoBeaming = ##t
- making the noAutoBeaming take effect on the whole staff, not only the
current (\global) voice.


So: The REAL question is not why it didn't work on the second staff,
but: WHY DID IT WORK ON THE FIRST STAFF?
I hope some of the gurus can answer this question. But it has something
to do with the fact that you also added \global to the ChordNames.
ChordNames contains no voices, so the statement \property
Voice.noAutoBeaming = ##t doesn't really make sence in the
chordnamecontext. The result was somehow (???) that it instead took
effect in the tlOne-voice...

-Rune



reply via email to

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