Re: Behaviour of systemStartDelimiter

2021-04-30 Thread Jean Abou Samra

Le 30/04/2021 à 20:45, Timothy Lanfear a écrit :

I would like a StaffGroup without any systemStartDelimiter -- staves 
grouped inside simultaneous music will not do because I would like a 
\with clause to modify the context plugins. Unsetting the 
systemStartDelimiter does the trick


\new StaffGroup \with { \unset systemStartDelimiter } <<
  \new Staff { c''1 }
  \new Staff { c''1 }
>>

... but not when when nested inside another StaffGroup

\new StaffGroup <<
  \new Staff { c''1 }
  \new StaffGroup \with { \unset systemStartDelimiter } <<
    \new Staff { c''1 }
    \new Staff { c''1 }
  >>
>>

Removing the System_start_delimiter_engraver solves the issue, but 
maybe there is something to improve here.


\new StaffGroup <<
  \new Staff { c''1 }
  \new StaffGroup \with { \remove System_start_delimiter_engraver } <<
    \new Staff { c''1 }
    \new Staff { c''1 }
  >>
>>



Hi,

\unset is not really the right tool when
you have not done a \set before.
\omit SystemStartBracket would do the job. However,
removing the engraver as you are doing is really
the nicest solution in my opinion. It causes no grob
to be created at all, instead of merely removing
a grob's stencil, with the grob still potentially
taking space or having other effects.

Best,
Jean




Behaviour of systemStartDelimiter

2021-04-30 Thread Timothy Lanfear
I would like a StaffGroup without any systemStartDelimiter -- staves 
grouped inside simultaneous music will not do because I would like a 
\with clause to modify the context plugins. Unsetting the 
systemStartDelimiter does the trick


\new StaffGroup \with { \unset systemStartDelimiter } <<
  \new Staff { c''1 }
  \new Staff { c''1 }
>>

... but not when when nested inside another StaffGroup

\new StaffGroup <<
  \new Staff { c''1 }
  \new StaffGroup \with { \unset systemStartDelimiter } <<
    \new Staff { c''1 }
    \new Staff { c''1 }
  >>
>>

Removing the System_start_delimiter_engraver solves the issue, but maybe 
there is something to improve here.


\new StaffGroup <<
  \new Staff { c''1 }
  \new StaffGroup \with { \remove System_start_delimiter_engraver } <<
    \new Staff { c''1 }
    \new Staff { c''1 }
  >>
>>

--
Timothy Lanfear, Bristol, UK.




Re: Tempo markings placement for trio music

2021-04-30 Thread Xavier Scheuer
On Fri, 30 Apr 2021 at 19:55, Rachel Green  wrote:
>
> Hi,
> For trios, I would like all the tempo markings to occur both above all
parts (as seen above the flute in the example below) but also right above
the harp part. When I add a tempo marking to the harp part, it places it
above the flute part, but when I add a regular markup to the harp part, the
placement is not correct (too far right). Any ideas how to have tempo
markings in both locations without manually adjusting the placement of each
markup in the harp part?

Hello,

Put a "Metronome_mark_engraver" in your Harp GrandSfaff and
remove "Staff_collecting_engraver" from Score.
You might want to do the same with "Mark_engraver".
Actually this feature is documented for text marks in NR 1.8.1 Writing text
> Text marks > Printing marks on every staff.
http://lilypond.org/doc/v2.23/Documentation/notation/writing-text.html#text-marks

You should update your LilyPond version (there used to be a bug when
putting these engravers at "staff group" levels) and it's better to use
the latest stable or unstable release.

\layout {
  \context {
\Score
\remove "Staff_collecting_engraver"
  }
}

\score {
  <<
\new Staff \with {
  instrumentName = "Flute "
} {
  <<
\Markings
\Flute
  >>
}
\new Staff \with {
  instrumentName = "Viola"
} {
  \Viola
}
\new GrandStaff \with {
  instrumentName = "Harp"
  \consists "Metronome_mark_engraver"
  % \consists "Mark_engraver"
} <<
  \new Staff {
<<
  \Treble
  \Markings
>>
  }
  \new Staff {
\Bass
  }
>>
  >>
}

Cheers,
Xavier

-- 
Xavier Scheuer 


Re: Tempo markings placement for trio music

2021-04-30 Thread Kevin Barry
Hi Rachel,

You can make this work by adding the engraver to the staff you want it
to print above (in this case the harp's upper staff). Based on your
example the code might look something like this:

  \new Staff \with {
\consists Mark_engraver
\consists Metronome_mark_engraver
  } {
\tempo "Adagio"
\Treble
  }

Hope that helps,
Kevin



Re: Tempo markings placement for trio music

2021-04-30 Thread Jean Abou Samra



Le 30/04/2021 à 19:17, Rachel Green a écrit :

Hi,
For trios, I would like all the tempo markings to occur both above all parts 
(as seen above the flute in the example below) but also right above the harp 
part. When I add a tempo marking to the harp part, it places it above the flute 
part, but when I add a regular markup to the harp part, the placement is not 
correct (too far right). Any ideas how to have tempo markings in both locations 
without manually adjusting the placement of each markup in the harp part?
Best,
Rachel


Hi,

You'd let the Metronome_mark_engraver operate in
the harp's Staff context in addition tothe Score
context, like this:

\version "2.22.0"

\language "english"

Markings = {
  \tempo "Adagio"
  s1
}

Flute = \relative c'' {
  \clef treble
  \key a \major
  r1 |
  r1 |
}

Viola = \relative c' {
  \key a \major
  \clef C
  r1
  fs4
}

Treble = \relative c' {
  \clef treble
  \time 4/4
  \key a \major
  r8
}

Bass = \relative c' {
  \clef bass
  \key a \major
  f4
}


<<
  \new Staff \with {
    instrumentName = Flute
  }
  \Flute

 \new Staff \with {
   instrumentName = Viola
 }
 \Viola
 \new GrandStaff \with {
   instrumentName = Harp
 }
 <<
   \new Staff \with {
 \consists Metronome_mark_engraver
   }
   << \Treble \Markings >>
   \new Staff \Bass
 >>
>>

Please see the documentation about adding and removing
engravers:

http://lilypond.org/doc/v2.22/Documentation/notation/modifying-context-plug_002dins

Best,
Jean




Tempo markings placement for trio music

2021-04-30 Thread Rachel Green
Hi,
For trios, I would like all the tempo markings to occur both above all parts 
(as seen above the flute in the example below) but also right above the harp 
part. When I add a tempo marking to the harp part, it places it above the flute 
part, but when I add a regular markup to the harp part, the placement is not 
correct (too far right). Any ideas how to have tempo markings in both locations 
without manually adjusting the placement of each markup in the harp part?
Best,
Rachel



\version "2.19.80"

\language "english"
#(set-global-staff-size 18)

Markings = {
\tempo "Adagio"
s1
}


Flute = \relative c''
  {
\clef treble
  \key a \major
  r1 |
  r1 |
   }

Viola = \relative c'
  {
  \key a \major
  \clef C
  r1
  fs4
  }


Treble = \relative c'
  {
   \clef treble
\time 4/4
  \key a \major
  r8^\markup \bold "Adagio"
  }

 Bass = \relative c'
  {
\clef bass
  \key a \major
  f4
  }


\score {
  <<

 \new Staff
 \with {
  instrumentName = #"Flute "
}
{ \Flute }

   \new Staff
  \with {
  instrumentName = #"Viola"
}
  { \Viola }

  \new GrandStaff
 \with {
  instrumentName = #"Harp"
}
  <<
  \new Staff = spacings \with {
\override VerticalAxisGroup.remove-empty = ##t
\override VerticalAxisGroup.remove-first = ##t }
{
  \Markings
}
  \new Staff { \Treble }
 \new Staff { \Bass }
  >>
>>
}




Re: Pitch value of previous note

2021-04-30 Thread David Sumbler

On Fri, 2021-04-30 at 16:41 +0200, David Kastrup wrote:
> David Sumbler  writes:
> > On Fri, 2021-04-30 at 04:17 -0700, Aaron Hill wrote:
> > > A duration without pitch is encoded as a NoteEvent with the
> > > pitchproperty.  expand-repeat-notes! is the internal procedure
> > > thatcarries over the most recent pitch.  So long as you insert
> > > theseevents early enough, LilyPond should do the heavy lifting
> > > for you.
> > 
> > You are correct: I invented a problem where none exists.
> > I confess that I had not realized that a duration without a
> > precedingpitch or rest takes the pitch of the preceding note.  I
> > actuallythought that, following a rest, it would produce further
> > rests.
> 
> We've had a fairly recent discussion about this design choice
> sometimein the last three months or so.  My rationale was that it
> could be usedfor writing rhythmic parts using only a single pitch or
> drum type in amanner where you only had to write that pitch or drum
> type once and thenkeep referencing it.  That rationale also explains
> a difference inbehavior with chord repeats (q) with respect to
> retainedarticulations/fingerings.
> > I must have seen this in action many times, otherwise I would
> > havelots of pitches in my music where there should be rests.  But
> > somehowit doesn't seem to have lodged itself in my brain.
> > Perhaps I'm getting too old for this!
> 
> Still waiting for an actual _example_ of what you want to be able
> towrite.

As I indicated, I imagined a non-existent problem.  With no problem to
be solved, an example serves no purpose.

David


Re: repeatTie question

2021-04-30 Thread David Wright
On Fri 30 Apr 2021 at 05:31:50 (+), Werner LEMBERG wrote:
> 
> > Okay, so here's a thing: I don't know this term (let vibrate), and
> > if I did, I'm not sure how it would apply in this context (it's a
> > tie, right?).
> 
> Have you actually looked into the Notation Reference, section 'Ties'?
> A few paragraphs after the start of the section you can find
> documentation for `\laissezVibrer`!

It's ironic that \laissezVibrer follows on directly from \repeatTie
on page 57, but you might miss it if the name means nothing to you,
and the next illustration doesn't catch your eye.

> > There is an example in the Snippets under "Expressive Marks," but
> > nothing in the main manual under "Expressive Marks" nor "Long
> > Repeats," and I would have never found it.
> 
> Hmm.  In the index there is
> 
>   tie, in repeats
> 
> which points to the right place.

Again, it's ironic that   tie, in repeats   points to page 155, and
the next entry,   tie, laissez vibrer   is at the top of the next
column (pointing to page 57). But when you turn to page 155, the
nearest mention of laissez vibrer is a hundred pages away.

Of course, the underlying problem is that the name \laissezVibrer is
used for two musically opposite effects, so it would obviously help
if the index entry   tie, in repeats   pointed to both \repeatTie
and \laissezVibrer.

> So please tell us exactly what index entries you were trying to look
> up, and which are still missing.  [Please use the Notation Reference
> for the current development version, 2.23.2, to do that]

The page references I gave above are for 2.22.0, the last version that
I downloaded as one big tarball. Now turning to 2.23.2, I see that the
irony is compounded: \repeatTie has moved to the bottom of page 56, so
\laissezVibrer isn't on the same page. However, the index entries do
point to the same area, which may or may not help if you don't know
the terminology.

But I couldn't help noticing that, if you use the Contents rather than
the Index, the lengthy section   § 1.4 Repeats   now doesn't cover
ties at all, nor does it point back to  Ties  (which falls under
§ 1.2 Rhythms   unconnected with repeats).

It would be hard to miss the connection if the two examples at pp56–7
were combined on one staff.

There's an oblique reference to \repeatTie on page 161 under
Known issues and warnings. Might this be preceded by a paragraph
on the use of \laissezVibrer and \repeatTie, with a pointer back
to pp56–7?

BTW I've been using the notation \creepIn for sixty years.
Pictorially, it's the reverse of \laissezVibrer. Fortunately for
users, LilyPond didn't catch onto the name before deciding on
\repeatTie. I see that others are searching for this notation:
https://music.stackexchange.com/questions/62495/how-would-you-notate-a-non-accent

Cheers,
David.



Re: Pitch value of previous note

2021-04-30 Thread David Kastrup
David Sumbler  writes:

> On Fri, 2021-04-30 at 04:17 -0700, Aaron Hill wrote:
>
>> A duration without pitch is encoded as a NoteEvent with the pitch
>> property.  expand-repeat-notes! is the internal procedure that
>> carries over the most recent pitch.  So long as you insert these
>> events early enough, LilyPond should do the heavy lifting for you.
>
> You are correct: I invented a problem where none exists.
>
> I confess that I had not realized that a duration without a preceding
> pitch or rest takes the pitch of the preceding note.  I actually
> thought that, following a rest, it would produce further rests.

We've had a fairly recent discussion about this design choice sometime
in the last three months or so.  My rationale was that it could be used
for writing rhythmic parts using only a single pitch or drum type in a
manner where you only had to write that pitch or drum type once and then
keep referencing it.  That rationale also explains a difference in
behavior with chord repeats (q) with respect to retained
articulations/fingerings.

> I must have seen this in action many times, otherwise I would have
> lots of pitches in my music where there should be rests.  But somehow
> it doesn't seem to have lodged itself in my brain.
>
> Perhaps I'm getting too old for this!

Still waiting for an actual _example_ of what you want to be able to
write.

-- 
David Kastrup



Re: Pitch value of previous note

2021-04-30 Thread David Sumbler

On Fri, 2021-04-30 at 04:17 -0700, Aaron Hill wrote:
> On 2021-04-30 3:39 am, David Sumbler wrote:
> > I want to be able to insert a note of the same pitch as the preceding
> > one.  I don't mind what form the pitch information is in, so long as I
> > can use it to create a new note.  It could, for example, be in the form
> > "b,,", or something similar to "(-2, 6)" as used by ly:make-pitch.
> >  There may be other possibilities.
> 
> What about the existing pitch-repeating functionality in LilyPond?
> 
> 
> \version "2.22.0"
> 
> foo = { 4 4 }
> { b'2 \foo g' \foo }
> 
> 
> A duration without pitch is encoded as a NoteEvent with the pitch 
> property.  expand-repeat-notes! is the internal procedure that carries 
> over the most recent pitch.  So long as you insert these events early 
> enough, LilyPond should do the heavy lifting for you.

You are correct: I invented a problem where none exists.

I confess that I had not realized that a duration without a preceding
pitch or rest takes the pitch of the preceding note.  I 
actually thought that, following a rest, it would produce further
rests.

I must have seen this in action many times, otherwise I would have lots
of pitches in my music where there should be rests.  But somehow it
doesn't seem to have lodged itself in my brain.

Perhaps I'm getting too old for this!

David



Re: Pitch value of previous note

2021-04-30 Thread David Kastrup
Mark Knoop  writes:

> At 12:15 on 30 Apr 2021, David Kastrup wrote:
>> David Sumbler  writes:
>>> How can I access the pitch value of this most recent note for use in a
>>> Scheme function after some rests?
>>
>> Other value-propating mechanisms exist for default durations (attached
>> by the parser upon reading expressions), pitch-less durations (added
>> during the scorifying stage when a music expression is accepted into a
>> \score block), chord repeats (also at scorification).
>>
>> "For use in a Scheme function" is too hand-waving to have an idea which
>> phase of LilyPond's interpretation you would want to be interfering
>> with, so it would probably make more sense to present the problem you
>> are trying to solve rather than guess about the tools you think LilyPond
>> must be using internally.
>
> I don't know what David (Sumbler)'s use-case is, but one could imagine
> in an analysis situation something like:
>
> { c'1 g'1-\intervalFunction }
>
> where 'intervalFunction' created the markup string "Perfect 5th above
> previous pitch".

That's the kind of thing where the context available to
\intervalFunction is just not sufficient for the task and it would have
to leave a marker in place that is later on replaced by some more
globally working score-wide function, similar to how repeat pitches and
repeat chords work.

-- 
David Kastrup



Re: Pitch value of previous note

2021-04-30 Thread Mark Knoop

At 12:15 on 30 Apr 2021, David Kastrup wrote:

David Sumbler  writes:

How can I access the pitch value of this most recent note for use in a
Scheme function after some rests?


Other value-propating mechanisms exist for default durations (attached
by the parser upon reading expressions), pitch-less durations (added
during the scorifying stage when a music expression is accepted into a
\score block), chord repeats (also at scorification).

"For use in a Scheme function" is too hand-waving to have an idea which
phase of LilyPond's interpretation you would want to be interfering
with, so it would probably make more sense to present the problem you
are trying to solve rather than guess about the tools you think LilyPond
must be using internally.


I don't know what David (Sumbler)'s use-case is, but one could imagine in an 
analysis situation something like:

{ c'1 g'1-\intervalFunction }

where 'intervalFunction' created the markup string "Perfect 5th above previous 
pitch".

--
Mark Knoop



Re: Pitch value of previous note

2021-04-30 Thread Aaron Hill

On 2021-04-30 4:17 am, Aaron Hill wrote:

On 2021-04-30 3:39 am, David Sumbler wrote:

I want to be able to insert a note of the same pitch as the preceding
one.  I don't mind what form the pitch information is in, so long as I
can use it to create a new note.  It could, for example, be in the 
form

"b,,", or something similar to "(-2, 6)" as used by ly:make-pitch.
 There may be other possibilities.


What about the existing pitch-repeating functionality in LilyPond?


\version "2.22.0"

foo = { 4 4 }
{ b'2 \foo g' \foo }


A duration without pitch is encoded as a NoteEvent with the pitch
property.  expand-repeat-notes! is the internal procedure that carries
over the most recent pitch.  So long as you insert these events early
enough, LilyPond should do the heavy lifting for you.


Sorry, that was meant to say: "*without* the pitch property".


-- Aaron Hill



Re: Pitch value of previous note

2021-04-30 Thread Aaron Hill

On 2021-04-30 3:39 am, David Sumbler wrote:

I want to be able to insert a note of the same pitch as the preceding
one.  I don't mind what form the pitch information is in, so long as I
can use it to create a new note.  It could, for example, be in the form
"b,,", or something similar to "(-2, 6)" as used by ly:make-pitch.
 There may be other possibilities.


What about the existing pitch-repeating functionality in LilyPond?


\version "2.22.0"

foo = { 4 4 }
{ b'2 \foo g' \foo }


A duration without pitch is encoded as a NoteEvent with the pitch 
property.  expand-repeat-notes! is the internal procedure that carries 
over the most recent pitch.  So long as you insert these events early 
enough, LilyPond should do the heavy lifting for you.



-- Aaron Hill



Re: Pitch value of previous note

2021-04-30 Thread David Kastrup
David Sumbler  writes:

> On Fri, 2021-04-30 at 12:15 +0200, David Kastrup wrote:
>> David Sumbler  writes:
>> > In a \relative{ } passage, in order for Lilypond to work out
>> > theabsolute pitch of a note, it must have a record of the absolute
>> > pitchof the previous note, even if there have been some intervening
>> > rests. It seems probable that it has this information in all cases,
>> > whetherrelative pitch notation is being used or not.
>> 
>> No.  \relative is a purely transformative function that takes music
>> asinput and produces music (with a wrapping container of
>> typeRelativeOctaveMusic that prevents further applications of
>> \relative fromhaving an effect).
>> This happens immediately as a transform when \relative is
>> beingexecuted.
>> > How can I access the pitch value of this most recent note for use
>> > in aScheme function after some rests?
>> 
>> Other value-propating mechanisms exist for default durations
>> (attachedby the parser upon reading expressions), pitch-less
>> durations (addedduring the scorifying stage when a music expression
>> is accepted into a\score block), chord repeats (also at
>> scorification).
>> "For use in a Scheme function" is too hand-waving to have an idea
>> whichphase of LilyPond's interpretation you would want to be
>> interferingwith, so it would probably make more sense to present the
>> problem youare trying to solve rather than guess about the tools you
>> think LilyPondmust be using internally.
>
> I want to be able to insert a note of the same pitch as the preceding
> one.

No, you want LilyPond to do that.  But you fail to say when you want it
to do that and why you want it to do that, and why the existing input
methods don't cover it.

> I don't mind what form the pitch information is in, so long as I can
> use it to create a new note.  It could, for example, be in the form
> "b,,", or something similar to "(-2, 6)" as used by ly:make-pitch.
> There may be other possibilities.

How about you give an example of what you want to do?  As long as you
talk generics about LilyPond internals you assume must be there
somewhere, it is completely impossible to figure out whether one can map
what LilyPond has to what you want to achieve.

-- 
David Kastrup



Re: Pitch value of previous note

2021-04-30 Thread David Sumbler

On Fri, 2021-04-30 at 12:15 +0200, David Kastrup wrote:
> David Sumbler  writes:
> > In a \relative{ } passage, in order for Lilypond to work out
> > theabsolute pitch of a note, it must have a record of the absolute
> > pitchof the previous note, even if there have been some intervening
> > rests. It seems probable that it has this information in all cases,
> > whetherrelative pitch notation is being used or not.
> 
> No.  \relative is a purely transformative function that takes music
> asinput and produces music (with a wrapping container of
> typeRelativeOctaveMusic that prevents further applications of
> \relative fromhaving an effect).
> This happens immediately as a transform when \relative is
> beingexecuted.
> > How can I access the pitch value of this most recent note for use
> > in aScheme function after some rests?
> 
> Other value-propating mechanisms exist for default durations
> (attachedby the parser upon reading expressions), pitch-less
> durations (addedduring the scorifying stage when a music expression
> is accepted into a\score block), chord repeats (also at
> scorification).
> "For use in a Scheme function" is too hand-waving to have an idea
> whichphase of LilyPond's interpretation you would want to be
> interferingwith, so it would probably make more sense to present the
> problem youare trying to solve rather than guess about the tools you
> think LilyPondmust be using internally.

I want to be able to insert a note of the same pitch as the preceding
one.  I don't mind what form the pitch information is in, so long as I
can use it to create a new note.  It could, for example, be in the form
"b,,", or something similar to "(-2, 6)" as used by ly:make-pitch.
 There may be other possibilities.

David


Re: Pitch value of previous note

2021-04-30 Thread David Kastrup
David Sumbler  writes:

> In a \relative{ } passage, in order for Lilypond to work out the
> absolute pitch of a note, it must have a record of the absolute pitch
> of the previous note, even if there have been some intervening rests.
>  It seems probable that it has this information in all cases, whether
> relative pitch notation is being used or not.

No.  \relative is a purely transformative function that takes music as
input and produces music (with a wrapping container of type
RelativeOctaveMusic that prevents further applications of \relative from
having an effect).

This happens immediately as a transform when \relative is being
executed.

> How can I access the pitch value of this most recent note for use in a
> Scheme function after some rests?

Other value-propating mechanisms exist for default durations (attached
by the parser upon reading expressions), pitch-less durations (added
during the scorifying stage when a music expression is accepted into a
\score block), chord repeats (also at scorification).

"For use in a Scheme function" is too hand-waving to have an idea which
phase of LilyPond's interpretation you would want to be interfering
with, so it would probably make more sense to present the problem you
are trying to solve rather than guess about the tools you think LilyPond
must be using internally.

-- 
David Kastrup



Pitch value of previous note

2021-04-30 Thread David Sumbler
In a \relative{ } passage, in order for Lilypond to work out the
absolute pitch of a note, it must have a record of the absolute pitch
of the previous note, even if there have been some intervening rests.
 It seems probable that it has this information in all cases, whether
relative pitch notation is being used or not.

How can I access the pitch value of this most recent note for use in a
Scheme function after some rests?

David


Re: \pushToTag and \appendToTag examples

2021-04-30 Thread David Kastrup
Gianmaria Lari  writes:

>>
>> > Nota bene: I didn't yet add any examples that take advantage of David new
>> > possibilities:
>>
>> Ah, but that was sort of the point.
>>
>
> Sure, I'm sorry :(
> I'll help with that too when I will be able to access this new feature.
>
>> P.S. I would have liked to add a screenshot of the generated output
>> > immediately after each piece of code.
>> > This would make this much more interesting, easy to follow and discuss.
>> But
>> > I remember that on this mailing list pictures have to be attached and not
>> > put inside the mail.
>>
>> I use inline MIME attachments and there are few complaints, but some
>> mail clients do some sort of HTML contraption not working in text mode
>> and those will not make it through a lot of mail clients or mailing list
>> summarisers.
>>
>
> I guessed what the problem was and I hope it will change in the following
> years so that we will be able to write clearer posts.
> For me, reading (and writing) an email with pictures attached is like
> reading a book with numbered photographs placed at the end of the
> book.

"inline attachments" appear where you place them in the text if your
mail reader is not overly weird.  Like this:


> But I know that this is an old argument on which many of us are
> hypersensitive. My apologies.
>
>> %%%
>> > \markup {"Simple \appendToTag with {}"}
>> > \version "2.23.2"
>> > music = {c'1 \tag #'here {} c''1}
>> > {\music}
>> > {\appendToTag #'here g'1 \music}
>> > {\pushToTag   #'here g'1 \music}
>>
>> Tagging an empty {} and pushing a single element means that there is no
>> visible difference between \appendToTag and \pushToTag .
>>
>
> David, this was the point of the example!

Doesn't really help decision-making, does it?

> You read this short code, you see the output, you think about these
> two things and because of the simplicity of the example you understand
> how it works *without* reading long explanations.

How can you understand what the respective commands do when there isn't
even a difference in the result?

>> > {\appendToTag #'here {e'4 f' g' a'} \music}
>> > {\pushToTag   #'here {e'4 f' g' a'} \music}
>>
>> Same here, and the example is more complex than necessary for bringing
>> the point across.
>>
>
> I'm sorry I am of exactly the opposite opinion!
> In the previous example you see the simplest possible \pushToTag and
> \appendToTag example. It adds a single note.
> And now you see an example just a bit more complex with a compound musical
> expression.

It does nothing different from the first example and it still does not
distinguish between \appendToTag and \pushToTag .  While regtests do not
suffer from redundance all too much, it does not help.  But the manual
already is far too long, so one has to make as little material as
possible count.

>> This at least shows a difference between \appendToTag and \pushToTag
>>
>
> Yes, but this in my opinion makes sense only *after* you saw and you
> understood the other examples.

I don't really think so.  There are two differences involved:

a) pushing/appending to a non-empty target leads to different results
b) the commands may be done several times for successive changes

b) may warrant a separate example (it doesn't have one in the current
version of the docs).  I don't see a gain for a).  When one also
documents pushing of articulations, it is sort of a natural example to
push to a note/chord that has no articulations yet.  So then it would
make some sense to illustrate pushing to an empty list (which is less
explicit with articulations and thus more important to illustrate)
there.

> And you compare it with the previous example.
>
>> \markup {"\appendToTag with {} and multiple different tag"}
>> > \version "2.23.2"
>> > music = {c'4 d' e' f' \tag #'firstLocation {}
>> >  g' a' b' c'' \tag #'secondLocation {} }
>> > {\music}
>> > {\appendToTag #'secondLocation {d''2 e''} \appendToTag #'firstLocation
>> {g'4
>> > f' g' f'} \music}
>> >
>> > \markup {"\appendToTag with {} and multiple equal tag"}
>> > \version "2.23.2"
>> > music = {c'4 d' e' f' \tag #'firstLocation {}
>> >  g' a' b' c'' \tag #'firstLocation {}
>> >  b' a' g' f'  \tag #'firstLocation {} }
>> > {\music}
>> > {\appendToTag #'firstLocation {g'2 r} \music}
>>
>> This just makes the example more complicated without demonstrating any
>> additional functionality or use.  Makes it hard to interpret either
>> manual entry or regtest.
>>
>
> This shows something different and that in my opinion you should know and
> it was not visible in the previous examples.

The "multiple different tag" part is an example more complicated without
demonstrating any additional functionality or use.  The "multiple equal
tag" part indeed shows something different.  I did not pick this apart
carefully enough.

> If you read it after the previous example you should very easily
> understand it and put it aside for when you will need it.

The notation 

Re: skylines and custom-code

2021-04-30 Thread Jean Abou Samra

Le 05/04/2021 à 12:00, Thomas Morley a écrit :


Hi Jean,

thanks for your reply, though the situation is more complex than the
initial minimal. Consider the following:

{ b'4\glissando 4 4 4 2 b'' }

The plan is to print a glissando from b' to b'' and at intermediate
NoteColumns print a Stem starting at the glissando line, i.e. the
result will be a stemmed Glissando.
(1) Obviously I need the intersection points of the y-axis of the
Stems and the Glissando.
I've coded an engraver to set the relevant pointers (from Stem to
Glissando) and use some calculations to get them. This work is done.
(2) Then I intend to move all NoteHeads of intermediate NoteColumns to
sit on the glissando line, making them transparent (or point-stencil
or omit the stencil)
This would have the advantage that LilyPond could do the rest, i.e.
print Stem, Beam, Script etc accordingly.

Obviously the calculation of the intersection points needs to be done
after the Glissando is printed, thus a simple override for
NoteHead.Y-offset will not work, afaict.
 From description in the docs about unpure-pure-containers, this is a
similar situation as for Beams and needed Stem lengths.

Alas, I never came to grips with unpure-pure-containers. Granted, the
explanations/descriptions in the docs improved over the years.
Though, we don't have working coding-examples in the docs, "working"
in the sense of "let me play with the code, testing what happens if I
do this and that":
The example in NR 5.5.6 works with and without unpure-pure-containers.
The example (sort of) in CG 10.13.3 makes no sense to me, at least I
found no situation where "bar" is called at all.
The regtest unpure-pure-container.ly is probably ok as a regtest, it
shows something is done, but why should a user do that at all. As a
user I'd say, don't move the flag if you don't want a moved flag...

That's it for the docs or did I overlook something?

Unpure-pure-containers in LSR: zero

Valentin's example works without unpure-pure-container as well.

Thus, I'm at a loss, close to abandoning the work.

Nevertheless, many thanks,
   Harm

P.S. attached an image what works so far (but don't enable skylines)


One month later ...

While researching mailing list archives for unrelated purposes, I 
stumbled upon this:


https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg1.html

Cheers,
Jean





Re: \pushToTag and \appendToTag examples

2021-04-30 Thread Gianmaria Lari
>
> > Nota bene: I didn't yet add any examples that take advantage of David new
> > possibilities:
>
> Ah, but that was sort of the point.
>

Sure, I'm sorry :(
I'll help with that too when I will be able to access this new feature.

> P.S. I would have liked to add a screenshot of the generated output
> > immediately after each piece of code.
> > This would make this much more interesting, easy to follow and discuss.
> But
> > I remember that on this mailing list pictures have to be attached and not
> > put inside the mail.
>
> I use inline MIME attachments and there are few complaints, but some
> mail clients do some sort of HTML contraption not working in text mode
> and those will not make it through a lot of mail clients or mailing list
> summarisers.
>

I guessed what the problem was and I hope it will change in the following
years so that we will be able to write clearer posts.
For me, reading (and writing) an email with pictures attached is like
reading a book with numbered photographs placed at the end of the book.
But I know that this is an old argument on which many of us are
hypersensitive. My apologies.

> %%%
> > \markup {"Simple \appendToTag with {}"}
> > \version "2.23.2"
> > music = {c'1 \tag #'here {} c''1}
> > {\music}
> > {\appendToTag #'here g'1 \music}
> > {\pushToTag   #'here g'1 \music}
>
> Tagging an empty {} and pushing a single element means that there is no
> visible difference between \appendToTag and \pushToTag .
>

David, this was the point of the example!
You read this short code, you see the output, you think about these two
things and because of the simplicity of the example you understand how it
works *without* reading long explanations.


> > {\appendToTag #'here {e'4 f' g' a'} \music}
> > {\pushToTag   #'here {e'4 f' g' a'} \music}
>
> Same here, and the example is more complex than necessary for bringing
> the point across.
>

I'm sorry I am of exactly the opposite opinion!
In the previous example you see the simplest possible \pushToTag and
\appendToTag example. It adds a single note.
And now you see an example just a bit more complex with a compound musical
expression.

As before, because of the simplicity of the input and the output you should
easily understand it and also easily compare with the previous example.

But we're probably too far in our opinions. I'm not interested in changing
your mind of course. If those examples are not useful I'm sorry and that's
ok.

> \markup {"Nested \appendToTag with {}"}
> > \version "2.23.2"
> > music = {c'1 \tag #'here {} c''1}
> > {\music}
> > {\appendToTag #'here d'4 \appendToTag #'here e'4 \appendToTag #'here f'4
> > \appendToTag #'here g' \music}
> > {\pushToTag   #'here d'4 \pushToTag   #'here e'4 \pushToTag   #'here f'4
> > \pushToTag   #'here g' \music}
>
> This at least shows a difference between \appendToTag and \pushToTag
>

Yes, but this in my opinion makes sense only *after* you saw and you
understood the other examples. And you compare it with the previous example.

> \markup {"\appendToTag with {} and multiple different tag"}
> > \version "2.23.2"
> > music = {c'4 d' e' f' \tag #'firstLocation {}
> >  g' a' b' c'' \tag #'secondLocation {} }
> > {\music}
> > {\appendToTag #'secondLocation {d''2 e''} \appendToTag #'firstLocation
> {g'4
> > f' g' f'} \music}
> >
> > \markup {"\appendToTag with {} and multiple equal tag"}
> > \version "2.23.2"
> > music = {c'4 d' e' f' \tag #'firstLocation {}
> >  g' a' b' c'' \tag #'firstLocation {}
> >  b' a' g' f'  \tag #'firstLocation {} }
> > {\music}
> > {\appendToTag #'firstLocation {g'2 r} \music}
>
> This just makes the example more complicated without demonstrating any
> additional functionality or use.  Makes it hard to interpret either
> manual entry or regtest.
>

This shows something different and that in my opinion you should know and
it was not visible in the previous examples.

If you read it after the previous example you should very easily understand
it and put it aside for when you will need it.

>
> > % I don't see any good reason to use the following.
> > % It mix different things making everything a bit more complex
> > % to understand withouth any advantage (imho).
> > % That's why I'm not sure it makes sense to show it.
> > \markup {"\appendToTag with {some music}"}
> > \version "2.23.2"
> > music = {c'1 \tag #'here {d'2 e'} c''1}
> > {\music}
> > {\pushToTag #'here {f'4 g' a' b'} \music}
> > {\appendToTag #'here {f'4 g' a' b'} \music}
>
> This at least shows a difference between \pushToTag and \appendToTag .
>

The fact that it shows the difference between \pushToTag and \appendToTag
is absolutely not my point. The difference between them is shown in the
previous examples.

Playing with lilypond I personally needed a way to indicate a location
inside a musical expression where I could add some musical material. I have
absolutely no idea if others have the same need or not. But if you have
this specific need then I 

Re: repeatTie question

2021-04-30 Thread Mark Probert
Werner wrote:
>> 
> Have you actually looked into the Notation Reference, section 'Ties'?
> A few paragraphs after the start of the section you can find
> documentation for `\laissezVibrer`!
> 
May bad. I missed that, and this is exactly the symbol I wanted to use.

What I skipped over was the "indicate that notes must not be damped at 
the end" bit. My use is not related to that at all: I'm in a long 
repeat and the tie relates to the first note of the next bar, which is 
back at the start-repeat sign. I am not using a "piano, harp and other 
string and percussion." 

My apologies, I mean no offence, I missed seeing the little curved line 
in the L.v. example and how it might be applied to repeats :-)
 
> So please tell us exactly what index entries you were trying to look
> up, and which are still missing.  [Please use the Notation Reference
> for the current development version, 2.23.2, to do that]
> 
I thought I could find out how to do in the section on "Long Repeats," 
perhaps showing a snippet. 

There is an example of \repeatTie in the Ties section when used in the 
Volta/Alternative but not of using \laissezVibrer to do the same on the 
first ending. (And I missed the implications of the next paragraph.)

So there is no problem, I simply didn't know, couldn't find an answer 
to my specific question, and asked on the forum where you're meant to 
ask such questions. My confusion is simply one of terminology and 
unfamiliarity with lilypond.

Kind regards
 .. mark.