Re: A Midi question

2018-09-13 Thread H. S. Teoh
On Thu, Sep 13, 2018 at 03:35:02AM +0200, Simon Albrecht wrote:
> On 13.09.2018 01:29, H. S. Teoh wrote:
> > The solution I've adopted is to always explicitly name all voices,
> > even temporary ones,
> 
> IIRC, they are named by default: "1", "2", etc. so you should just be
> able to use those names.
[...]

You're right!  I just tested the following, and it works correctly:

\version "2.19.2"
music = {
c4 d e f
<< {
c'4 c' c' c'
} \\ {
a4 a a a
} >>
}
dynPart = {
s1\ff
s4\pp s4\p s4\mp s4\ff
}
\score {
\new Staff <<
\context Voice="1" { \dynPart }
\context Voice="2" { \dynPart }
\music
>>
\midi {}
}

This will simplify my scores quite a bit.  Thanks for the tip!


T

-- 
It said to install Windows 2000 or better, so I installed Linux instead.

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: A Midi question

2018-09-13 Thread H. S. Teoh
On Thu, Sep 13, 2018 at 08:36:05AM -0700, foxfanfare wrote:
[...]
> Yes, very much! I tried all your proposals and now everything works
> great, thanks!

Glad to help.


> I just need to find how I can make rallentando and the midi output
> will be "acceptable" for my needs!
[...]

Usually I just use "fake" \tempo markings for things like this. For
example:

% global is my catch-all for various stuff that should be
% applied globally to every staff.
global = {
\tempo 4 = 100  % starting tempo

s1*12   % nothing interesting for next 12 bars

% Simulated rallentando
% These are tagged so that they don't show up in the
% printed score.
\tag #'midi \tempo 4 = 90
s8
\tag #'midi \tempo 4 = 85
s8
\tag #'midi \tempo 4 = 80
s8
\tag #'midi \tempo 4 = 75
s8
\tag #'midi \tempo 4 = 70
% ... etc., you can change s8 to any other duration
% depending on how fine-grained you want it to be, and
% repeat as often as desired to span the full length of
% the rall.
}

...

\score {
\removeWithTag #'layout
<<
\global
\music
>>
\midi {}
}

If you have a lot of rallentando's in your score, this quickly becomes
tedious, so you might want to consider writing a Scheme macro to
automatically do this for you. (If you need help with this, just ask and
one of the Scheme experts here will help. I'm only a beginner at Scheme
though I did manage to write a function that generates a bunch of midi
expression events to simulate crescendo/decresc on a single note, e.g.,
in a horn part. It's not perfect, but with a little push, Lilypond can
be coaxed to do quite a lot even with its limited midi support.)


T

-- 
I am not young enough to know everything. -- Oscar Wilde

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: stemNeutral problem

2018-09-13 Thread David Kastrup
Aaron Hill  writes:

> On 2018-09-13 4:42 am, David Kastrup wrote:
>> [...] If you write something like
>>
>> \stemDown \once \stemUp \stemNeutral
>>
>> what's the expectation for the current timestep, and what's the
>> expectation for afterwards?
>
> If \stem(Up|Down|Neutral) were as simple as "Stem.direction :=
> (Up|Down|Neutral)" and \once pushes a new value onto a stack that will
> be popped at some later time to restore the original value, then the
> property could have a well-defined* value during evaluation:

Huh.  I forgot issue 4609.  \once stemUp is independent of \stemNeutral
nowadays.  \stemNeutral cancels \stemDown but you'll only get to see it
at the next timestep.

This is not the behavior we want for

\grace { \stemNeutral ... }

(namely \stemNeutral only becoming effective after the \grace is ended)
so one has to design that behavior differently.

-- 
David Kastrup

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: A Midi question

2018-09-13 Thread foxfanfare
H. S. Teoh wrote
> For the printed score, this would produce tons of redundant dynamic
> markings, so I always use a separate score just for layout, and stick
> \dynPart into a Dynamics context between the upper and lower parts of
> the piano score for nicer layout.
> 
> Hope this helps.

Yes, very much! I tried all your proposals and now everything works great,
thanks!
I just need to find how I can make rallentando and the midi output will be
"acceptable" for my needs!



--
Sent from: http://lilypond.1069038.n5.nabble.com/User-f3.html

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: stemNeutral problem

2018-09-13 Thread David Kastrup
Aaron Hill  writes:

> Token(s)Stem.direction (Stack)
> 
> \stemDown   Down   ()
> \once \stemUp <{>   Up (Down)
> \stemNeutral <...>  (Down)
> <}> Down   ()
>
> This behavior is identical the first version, where now neutrality is
> indicated by a lack of value.  It is still slightly counter-intuitive
> because the effect of \stemNeutral does not persist beyond the scope
> of the \once.

The current behavior tries to keep surprising behavior close to the
cause of the surprise.  Basically it prefers "huh?" over "WHAT?!?!?!?!".
It's not trivial to do significantly better.

> This discussion is particularly interesting as I have found myself
> working through "Principles of Compiler Design" (Aho/Ullman) again
> after having perused it far too quickly when I was much younger and
> much less equipped to fully appreciate it.  One relevant realization I
> have is that it seems there is no worthwhile amount of effort one can
> expend to design a language with precision and unambiguity such that
> it can fully prevent someone writing nonsense as input.  I think it
> was Chomsky who came up with something like: "Colorless green ideas
> sleep furiously."

Chomsky was more about differences in being well-formed and
well-meaning.  I mean, between syntactic correctness and semantic sense.

I'd not attribute "nonsense" to the input written: such combinations
easily come about when combining various settings into semantic blocks
and such blocks into meaningful actions, and that is actually exactly
what happens when the equivalents of \graceOn and \graceOff influence a
block of properties that are useful to change for other reasons as well.

For some things, the stack model works well.  For some other, less well.

-- 
David Kastrup

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Single digit double time signature

2018-09-13 Thread Cantus Ornatus
It works perfectly.
Thanks a lot!
Francesco

Il giorno gio 13 set 2018 alle ore 16:14 Jean Bréfort 
ha scritto:

> Hi,
>
> You might try something like:
>
> \override Staff.TimeSignature #'stencil = #ly:text-interface::print
> \override Staff.TimeSignature #'text = \markup {\musicglyph #"timesig.C44"
> \lower #0.9 \bold \large "3"}
> \time 3/2
>
> Hope this jelps,
> Jean
>
> Le jeudi 13 septembre 2018 à 15:49 +0200, Cantus Ornatus a écrit :
> > Hi everyone.
> > Typesetting mensural music I often find double time signatures with a
> > single digit like C 3, O 3, and so on.
> >
> > Is it possible modifying the standard double time signature syntax in
> > order to have such a layout (second page)?
> >
> > https://goo.gl/FBm2UL
> >
> > Thanks in advance,
> > F.
> >
> > ___
> > lilypond-user mailing list
> > lilypond-user@gnu.org
> > https://lists.gnu.org/mailman/listinfo/lilypond-user
>
>
___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Single digit double time signature

2018-09-13 Thread Jean Bréfort
Hi,

You might try something like:

\override Staff.TimeSignature #'stencil = #ly:text-interface::print
\override Staff.TimeSignature #'text = \markup {\musicglyph #"timesig.C44" 
\lower #0.9 \bold \large "3"}
\time 3/2

Hope this jelps,
Jean

Le jeudi 13 septembre 2018 à 15:49 +0200, Cantus Ornatus a écrit :
> Hi everyone.
> Typesetting mensural music I often find double time signatures with a
> single digit like C 3, O 3, and so on. 
> 
> Is it possible modifying the standard double time signature syntax in
> order to have such a layout (second page)?
> 
> https://goo.gl/FBm2UL 
> 
> Thanks in advance,
> F.
> 
> ___
> lilypond-user mailing list
> lilypond-user@gnu.org
> https://lists.gnu.org/mailman/listinfo/lilypond-user


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Strange dotted slur which are not slurs or ties

2018-09-13 Thread Bernhard Kleine


Am 13.09.2018 um 15:29 schrieb Torsten Hämmerle:
>
> Phrasing slurs can be made dotted by \phrasingSlurDotted and they can be
> made dashed by \phrasingSlurDashed.
>
>
Thank you both,
 Simon and Torsten
Bernhard

-- 
spitzhalde9
D-79853 lenzkirch
bernhard.kle...@gmx.net
www.b-kleine.com, www.urseetal.net
-
thunderbird mit enigmail
GPG schlüssel: D5257409
fingerprint:
08 B7 F8 70 22 7A FC C1 15 49 CA A6 C7 6F A0 2E D5 25 74 09




signature.asc
Description: OpenPGP digital signature
___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Single digit double time signature

2018-09-13 Thread Aaron Hill

On 2018-09-13 6:49 am, Cantus Ornatus wrote:

Hi everyone.
Typesetting mensural music I often find double time signatures with a
single digit like C 3, O 3, and so on.

Is it possible modifying the standard double time signature syntax in 
order

to have such a layout (second page)?

https://goo.gl/FBm2UL


Assuming "C 3" is intended to mean "4+3/4", then you can use 
\compoundMeter to set the time signature and then override its visual 
appearance.  Perhaps something like this:



\version "2.19.82"
<< {
  \override Staff.TimeSignature.stencil = #ly:text-interface::print
  \override Staff.TimeSignature.text = \markup \concat {
\musicglyph "timesig.C44" \hspace #1
\lower #1 \musicglyph "three" }
  \compoundMeter #'(4 3 4)
  e'2 g'4 e' d' e'2
} >>


Note that I used the "normal" time symbol "C" as opposed to the mensural 
version.  I think it looks better next to the numeric three, but you can 
use any of the glyphs in the font.  Or really whatever you want, since 
you have the full power of markup there.


-- Aaron Hill___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Single digit double time signature

2018-09-13 Thread Torsten Hämmerle
Cantus Ornatus wrote
> Is it possible modifying the standard double time signature syntax in
> order
> to have such a layout?

Hi F.,

You can change the time signature style to single-digit:
  \override Staff.TimeSignature.style = #'single-digit
That way, only the numerator will be printed.

Other style possibilities are #'mensural or #'neomensural for special
mensural glyphs.

HTH,
Torsten



--
Sent from: http://lilypond.1069038.n5.nabble.com/User-f3.html

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Single digit double time signature

2018-09-13 Thread Cantus Ornatus
Hi everyone.
Typesetting mensural music I often find double time signatures with a
single digit like C 3, O 3, and so on.

Is it possible modifying the standard double time signature syntax in order
to have such a layout (second page)?

https://goo.gl/FBm2UL

Thanks in advance,
F.
___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: stemNeutral problem

2018-09-13 Thread Aaron Hill

On 2018-09-13 4:42 am, David Kastrup wrote:

[...] If you write something like

\stemDown \once \stemUp \stemNeutral

what's the expectation for the current timestep, and what's the
expectation for afterwards?


If \stem(Up|Down|Neutral) were as simple as "Stem.direction := 
(Up|Down|Neutral)" and \once pushes a new value onto a stack that will 
be popped at some later time to restore the original value, then the 
property could have a well-defined* value during evaluation:


"\stemDown \once \stemUp <{> \stemNeutral <...> <}>"

Token(s)Stem.direction (Stack)

\stemDown   Down   ()
\once \stemUp <{>   Up (Down)
\stemNeutral <...>  Neutral(Down)
<}> Down   ()

Note that I have indicated <{> and <}> which are invisible, though 
implied, tokens that define the scope of \once.  In LilyPond, this scope 
seems to be based on timestep.  So we must presume that <...> includes 
something that has stepped time forward once as to trigger the cleanup 
behavior of \once.


(* I say "well-defined" above but I should clarify that this behavior 
might not match expectations.  An explicit \stemNeutral might seem to 
folks to have the final say, but since it is within the scope of \once 
implicitly, its value is also temporary.)


Of course, \stemNeutral in particular does not set the property but 
rather "unsets" it by \reverting whatever value the property may have 
been \overridden with.  This means that \override might be preserving a 
value on a stack for later restoration.


"\stemDown \once \stemUp <{> \stemNeutral <...> <}>"

Token(s)Stem.direction (Stack)

\stemDown   Down   ()
\once \stemUp <{>   Up (Down, )
\stemNeutral <...>  Down   ()
<}> ()

The problem here is that \stemNeutral \reverted the value of the \stemUp 
but was left with the value that \once placed on the stack--*not* the 
neutral state we expect.  So the result is even less clear.


Of course, \override does not need to make use of a stack if \revert 
were to instead always set the property to an undefined (unset) value.


"\stemDown \once \stemUp <{> \stemNeutral <...> <}>"

Token(s)Stem.direction (Stack)

\stemDown   Down   ()
\once \stemUp <{>   Up (Down)
\stemNeutral <...>  (Down)
<}> Down   ()

This behavior is identical the first version, where now neutrality is 
indicated by a lack of value.  It is still slightly counter-intuitive 
because the effect of \stemNeutral does not persist beyond the scope of 
the \once.


- - - -

This discussion is particularly interesting as I have found myself 
working through "Principles of Compiler Design" (Aho/Ullman) again after 
having perused it far too quickly when I was much younger and much less 
equipped to fully appreciate it.  One relevant realization I have is 
that it seems there is no worthwhile amount of effort one can expend to 
design a language with precision and unambiguity such that it can fully 
prevent someone writing nonsense as input.  I think it was Chomsky who 
came up with something like: "Colorless green ideas sleep furiously."


-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Strange dotted slur which are not slurs or ties

2018-09-13 Thread Torsten Hämmerle
Bernhard Kleine wrote
> But how make them dotted?

Phrasing slurs can be made dotted by \phrasingSlurDotted and they can be
made dashed by \phrasingSlurDashed.




--
Sent from: http://lilypond.1069038.n5.nabble.com/User-f3.html

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: stemNeutral problem

2018-09-13 Thread David Kastrup
Edward Neeman  writes:

> Thanks David, that makes a lot of sense!
>
> With your explanation in mind I’m thinking the current implementation in best.

Well, the problem really is finding an implementation that does not
cause surprises.  One could rather brutally restore all settings made
inside of a \grace group that are subject to \grace settings.  Those
would be (currently)

(define general-grace-settings
  `((Voice Stem font-size -3)
(Voice Flag font-size -3)
(Voice NoteHead font-size -3)
(Voice TabNoteHead font-size -4)
(Voice Dots font-size -3)
(Voice Stem length-fraction 0.8)
(Voice Stem no-stem-extend #t)
(Voice Beam beam-thickness 0.384)
(Voice Beam length-fraction 0.8)
(Voice Accidental font-size -4)
(Voice AccidentalCautionary font-size -4)
(Voice Script font-size -3)
(Voice Fingering font-size -8)
(Voice StringNumber font-size -8)))

(define-public score-grace-settings
  (append
`((Voice Stem direction ,UP)
  (Voice Slur direction ,DOWN))
general-grace-settings))

So basically at the end of the \grace group, rewind to what was there
before.  However, the property lists are per-Grob, not per-property, so
either one would have to restore the complete state of all the listed
Grobs, or one would have to filter the lists into components relating to
the desired properties and unrelated components, and reassemble the
respective lists afterwards.

Probably easier to just restore the complete Grob definitions.  Would
people be surprised if a color override of a Beam was reverted at the
end of a \grace group?

I don't know.

-- 
David Kastrup

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Strange dotted slur which are not slurs or ties

2018-09-13 Thread Simon Albrecht

On 13.09.2018 14:53, Bernhard Kleine wrote:

But how make them dotted?


How about:

\version "2.18.2"

"\\{" = -\single \phrasingSlurDotted \(
"\\}" = \)

{ c'\{ c'\} }

Best, Simon

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Strange dotted slur which are not slurs or ties

2018-09-13 Thread Bernhard Kleine
But how make them dotted?


Am 13.09.2018 um 14:48 schrieb Torsten Hämmerle:
> Bernhard Kleine wrote
>> These dotted slurs are not slurs since the text is not suspended. Please
>> let me know how you would set this example.
>
> Hi Bernhard,
>
>
> I'd just use phrasing slurs \( and \). 
> In contrast to ties or ordinary slurs, each note will get its syllable,
> phrasing slurs won't create automatic melismata. Voilà !
>
> HTH,
> Torsten
>
>
>
> --
> Sent from: http://lilypond.1069038.n5.nabble.com/User-f3.html
>
> ___
> lilypond-user mailing list
> lilypond-user@gnu.org
> https://lists.gnu.org/mailman/listinfo/lilypond-user

-- 
spitzhalde9
D-79853 lenzkirch
bernhard.kle...@gmx.net
www.b-kleine.com, www.urseetal.net
-
thunderbird mit enigmail
GPG schlüssel: D5257409
fingerprint:
08 B7 F8 70 22 7A FC C1 15 49 CA A6 C7 6F A0 2E D5 25 74 09




signature.asc
Description: OpenPGP digital signature
___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Strange dotted slur which are not slurs or ties

2018-09-13 Thread Simon Albrecht

On 13.09.2018 14:34, Bernhard Kleine wrote:

A fairly modern componist wrote in 1950 the following example (see
attached).

These dotted slurs are not slurs since the text is not suspended. Please
let me know how you would set this example.


I’d see two possible interpretations, depending on context: either the 
dotted slurs are for accompanying instruments or they just indicate 
legato/no breathing. The latter seems less than likely because it 
wouldn’t be needed inside a word.
Another possibility in general would be alternative lyrics, e.g. a 
translation, but that doesn’t seem to be the case. Stanzas?

At any rate, LilyPond phrasing slurs seem like the best way to code it.

Best, Simon

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Strange dotted slur which are not slurs or ties

2018-09-13 Thread Torsten Hämmerle
Bernhard Kleine wrote
> These dotted slurs are not slurs since the text is not suspended. Please
> let me know how you would set this example.


Hi Bernhard,


I'd just use phrasing slurs \( and \). 
In contrast to ties or ordinary slurs, each note will get its syllable,
phrasing slurs won't create automatic melismata. Voilà !

HTH,
Torsten



--
Sent from: http://lilypond.1069038.n5.nabble.com/User-f3.html

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Strange dotted slur which are not slurs or ties

2018-09-13 Thread Bernhard Kleine
A fairly modern componist wrote in 1950 the following example (see
attached).

These dotted slurs are not slurs since the text is not suspended. Please
let me know how you would set this example.

Regards Bernhard

-- 
spitzhalde9
D-79853 lenzkirch
bernhard.kle...@gmx.net
www.b-kleine.com, www.urseetal.net
-
thunderbird mit enigmail
GPG schlüssel: D5257409
fingerprint:
08 B7 F8 70 22 7A FC C1 15 49 CA A6 C7 6F A0 2E D5 25 74 09



signature.asc
Description: OpenPGP digital signature
___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: stemNeutral problem

2018-09-13 Thread Edward Neeman
Thanks David, that makes a lot of sense!

With your explanation in mind I’m thinking the current implementation in best.

Edward

---
Dr. Edward Neeman
www.neemanpianoduo.com



> On 13 Sep 2018, at 9:42 pm, David Kastrup  wrote:
> 
> David Kastrup mailto:d...@gnu.org>> writes:
> 
>> Edward Neeman  writes:
>> 
>>> Hello,
>>> 
>>> I’ve come across some weird behaviour from the \stemNeutral command. This 
>>> doesn’t work:
>>> 
>>> 
>>> 
>>> \version "2.19.82"
>>> 
>>> \relative {  \stemUp 8) r8
>>> \acciaccatura { \stemDown 8 } \stemUp  r
>>>\stemNeutral c,16 es ges bes }
>>> 
>>> %%%
>>> 
>>> Adding a second \stemNeutral command is necessary to reset the stems to 
>>> normal. Why might this be?
>> 
>> Here is the deal.  \acciaccatura does an implicit \temporary \stemUp (as
>> that's a default for grace notes) which it cancels at the end of
>> \acciacatura, provided that it is still active.
>> 
>> \stemDown will cancel this preexisting \temporary \stemUp.
>> Consequently, \acciacatura does not see the preexisting \temporary
>> \stemUp at its end any more and will do nothing, in effect leaving a
>> \temporary \stemDown on the stack.  Your next \stemUp will replace it
>> with a \temporary \stemUp which will get canceled by \stemNeutral,
>> making the original \stemUp surface.
>> 
>> Ugh.  The solution is to cancel your \stemDown yourself, using
>> \stemNeutral .
>> 
>> Now let's assume that \acciaccatura would not do that kind of "matched
>> pop" at its end and would remove the \stemDown.  Now if you write
>> \acciaccatura { \stemNeutral ... } this would pop the _preceding_
>> \stemUp which would be even worse.  And was the reason the current
>> behavior was implemented.
>> 
>> So maybe the "matched pop" should be done in a different manner: if the
>> previous state of the stack can be restored, do so, without actually
>> looking at what you are going to pop in order to get there.
> 
> The "matched pop" is also used for \once \override .  If you write
> something like
> 
> \stemDown \once \stemUp \stemNeutral
> 
> what's the expectation for the current timestep, and what's the
> expectation for afterwards?
> 
> In short, this is sort-of a messy area.  It's not necessarily the best
> way \acciaccatura works but the premise is that the behavior for its
> private overrides is similar to \once \override and either try not to
> tamper with stuff they don't understand because then the effects are
> "non-local".
> 
> Maybe the understanding could be extended beyond where it is now but it
> would require some refactoring: the current implementation delivers a
> "pop token" at negligible cost, and so there are no separate
> implementations for when it is actually needed and not.  For a slightly
> better "pop token" like sketched above, there would be non-trivial
> cost.  I am not sure it would work all that much better.
> 
> -- 
> David Kastrup

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: stemNeutral problem

2018-09-13 Thread David Kastrup
David Kastrup  writes:

> Edward Neeman  writes:
>
>> Hello,
>>
>> I’ve come across some weird behaviour from the \stemNeutral command. This 
>> doesn’t work:
>>
>> 
>>
>> \version "2.19.82"
>>
>> \relative {  \stemUp 8) r8
>>  \acciaccatura { \stemDown 8 } \stemUp  r
>> \stemNeutral c,16 es ges bes }
>>
>> %%%
>>
>> Adding a second \stemNeutral command is necessary to reset the stems to 
>> normal. Why might this be?
>
> Here is the deal.  \acciaccatura does an implicit \temporary \stemUp (as
> that's a default for grace notes) which it cancels at the end of
> \acciacatura, provided that it is still active.
>
> \stemDown will cancel this preexisting \temporary \stemUp.
> Consequently, \acciacatura does not see the preexisting \temporary
> \stemUp at its end any more and will do nothing, in effect leaving a
> \temporary \stemDown on the stack.  Your next \stemUp will replace it
> with a \temporary \stemUp which will get canceled by \stemNeutral,
> making the original \stemUp surface.
>
> Ugh.  The solution is to cancel your \stemDown yourself, using
> \stemNeutral .
>
> Now let's assume that \acciaccatura would not do that kind of "matched
> pop" at its end and would remove the \stemDown.  Now if you write
> \acciaccatura { \stemNeutral ... } this would pop the _preceding_
> \stemUp which would be even worse.  And was the reason the current
> behavior was implemented.
>
> So maybe the "matched pop" should be done in a different manner: if the
> previous state of the stack can be restored, do so, without actually
> looking at what you are going to pop in order to get there.

The "matched pop" is also used for \once \override .  If you write
something like

\stemDown \once \stemUp \stemNeutral

what's the expectation for the current timestep, and what's the
expectation for afterwards?

In short, this is sort-of a messy area.  It's not necessarily the best
way \acciaccatura works but the premise is that the behavior for its
private overrides is similar to \once \override and either try not to
tamper with stuff they don't understand because then the effects are
"non-local".

Maybe the understanding could be extended beyond where it is now but it
would require some refactoring: the current implementation delivers a
"pop token" at negligible cost, and so there are no separate
implementations for when it is actually needed and not.  For a slightly
better "pop token" like sketched above, there would be non-trivial
cost.  I am not sure it would work all that much better.

-- 
David Kastrup

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: stemNeutral problem

2018-09-13 Thread David Kastrup
Edward Neeman  writes:

> Hello,
>
> I’ve come across some weird behaviour from the \stemNeutral command. This 
> doesn’t work:
>
> 
>
> \version "2.19.82"
>
> \relative {  \stemUp 8) r8
>  \acciaccatura { \stemDown 8 } \stemUp  r
> \stemNeutral c,16 es ges bes }
>
> %%%
>
> Adding a second \stemNeutral command is necessary to reset the stems to 
> normal. Why might this be?

Here is the deal.  \acciaccatura does an implicit \temporary \stemUp (as
that's a default for grace notes) which it cancels at the end of
\acciacatura, provided that it is still active.

\stemDown will cancel this preexisting \temporary \stemUp.
Consequently, \acciacatura does not see the preexisting \temporary
\stemUp at its end any more and will do nothing, in effect leaving a
\temporary \stemDown on the stack.  Your next \stemUp will replace it
with a \temporary \stemUp which will get canceled by \stemNeutral,
making the original \stemUp surface.

Ugh.  The solution is to cancel your \stemDown yourself, using
\stemNeutral .

Now let's assume that \acciaccatura would not do that kind of "matched
pop" at its end and would remove the \stemDown.  Now if you write
\acciaccatura { \stemNeutral ... } this would pop the _preceding_
\stemUp which would be even worse.  And was the reason the current
behavior was implemented.

So maybe the "matched pop" should be done in a different manner: if the
previous state of the stack can be restored, do so, without actually
looking at what you are going to pop in order to get there.

-- 
David Kastrup

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: stemNeutral problem

2018-09-13 Thread Aaron Hill

On 2018-09-12 10:30 pm, Federico Bruni wrote:

You are right, it seems weird.
If you check your property-init.ly file you'll find these definitions:

stemUp = \override Stem.direction = #UP
stemDown = \override Stem.direction = #DOWN
stemNeutral = \revert Stem.direction

But I don't know what's happening here.


Something fishy with grace notes, I think.  Consider the following:


\version "2.19.82"
<< { b'4 \stemUp b'4 \grace { \stemDown b'8 }
 \stemNeutral b'4 \stemNeutral b'4 } >>


The occurrence of b'4 after the grace should be stem-down as that is its 
neutral direction.


What is odd is that this behavior is unique to Stem.direction as far as 
my testing has shown.  If you redefine \stemUp, \stemDown, and 
\stemNeutral to, say, change the Stem.color, then the fault does not 
occur.  Grace (or acciaccatura) notes must be special-cased in how they 
work with Stem.direction.  (I believe that grace notes are neutrally 
stem-up regardless of position on the staff.)  And something is not 
playing nice with normal \override/\revert logic.


-- Aaron Hill___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user