Re: 2.23.81 new D.S. code

2022-11-16 Thread David Wright
On Wed 16 Nov 2022 at 06:21:41 (-0500), Kieren MacMillan wrote:
> 
> >> What about creating all the parts for a score? I certainly
> >> don't want to type all the common structure in each part.
> > If you type the structure first, then as you use emacs, it's easy to
> > copy and paste sufficient copies of it before you enter the notes.
> 
> Okay… but yet another reason composing directly into Lilypond is suboptimal 
> and potentially frustrating.  =\

Well, the OP did write "I'm a copyist not a composer", and my
suggestion was merely to avoid them some typing (although
anybody who's used an editor for years is unlikely to need it).

> I often typeset scores with 40 or more staves; having to make changes in that 
> many places is time-consuming and error-prone.

And Jean responds with a fix in short order—just like you with your scores!

Cheers,
David.


Re: 2.23.81 new D.S. code

2022-11-16 Thread Jean Abou Samra

Le 16/11/2022 à 12:21, Kieren MacMillan a écrit :

What about creating all the parts for a score? I certainly
don't want to type all the common structure in each part.

If you type the structure first, then as you use emacs, it's easy to
copy and paste sufficient copies of it before you enter the notes.

Okay… but yet another reason composing directly into Lilypond is suboptimal and 
potentially frustrating.  =\

I often typeset scores with 40 or more staves; having to make changes in that 
many places is time-consuming and error-prone.




Depending on what sort of thing you may want to change,
a music function could be a solution, e.g.

\version "2.23.81"

part =
#(define-music-function (main volta1 volta2) (ly:music? ly:music? ly:music?)
   #{
 \new Staff \repeat segno 2 {
   #main
   \alternative {
 \volta 1 #volta1
 \volta 2 \volta #'() {
   \section
   \sectionLabel Coda
 }
   }
 }
 #volta2
   #})

<<
  \part { c'1 } { d'1 } { e'1 }
  \part { f'1 } { g'1 } { a'1 }
>>



Best,
Jean



OpenPGP_signature
Description: OpenPGP digital signature


Re: 2.23.81 new D.S. code

2022-11-16 Thread Kieren MacMillan
Hi all,

>> What about creating all the parts for a score? I certainly
>> don't want to type all the common structure in each part.
> If you type the structure first, then as you use emacs, it's easy to
> copy and paste sufficient copies of it before you enter the notes.

Okay… but yet another reason composing directly into Lilypond is suboptimal and 
potentially frustrating.  =\

I often typeset scores with 40 or more staves; having to make changes in that 
many places is time-consuming and error-prone.

Cheers,
Kieren.


Re: 2.23.81 new D.S. code

2022-11-15 Thread David Wright
On Tue 15 Nov 2022 at 14:41:28 (-0700), Paul Scott wrote:
> On 11/15/22 1:57 PM, Jean Abou Samra wrote:
> > Le 15/11/2022 à 21:50, Paul Scott a écrit :
> > > What about creating all the parts for a score? I certainly
> > > don't want to type all the common structure in each part.

If you type the structure first, then as you use emacs, it's easy to
copy and paste sufficient copies of it before you enter the notes.

> > It is really that troublesome? It's the way it's intended to be used.
> Can you show me where the documentation says that?
> > 
> > You will find that \section and \fine only affect their staff,
> I have already NOT found that.
> > so you're already forced to duplicate those.
> 
> No.
> 
> 
> > Also, \unfoldRepeats
> > will not work correctly if you don't use \repeat segno everywhere.
> 
> I've never needed to use unfoldrepeats.  I'm a copyist not a composer.

I produce copies for people who appreciate MIDI versions of the score
± their parts. You need \unfoldRepeats to generate the MIDI correctly.

Cheers,
David.


Re: 2.23.81 new D.S. code

2022-11-15 Thread Kieren MacMillan
Hi Jean,

> Clearer documentation would be a good first step, but my ultimate
> wish would be a warning if this construct is used

Yes, please!

> because Hyrum's law

That's the second apparently-reasonably-widely-known thing I learned about 
today!
(The other was the Mendoza line.)

Thanks for [once again] making me a little smarter than I was before.
— Kieren


Re: 2.23.81 new D.S. code

2022-11-15 Thread Jean Abou Samra

Le 15/11/2022 à 23:03, Kieren MacMillan a écrit :

It’s not for you to sweat about, though it will be nice to make things explicit 
in the documentation so nobody else builds up a 20-plus-year library of 
minefield-laden scores.




Clearer documentation would be a good first step, but my ultimate
wish would be a warning if this construct is used, because Hyrum's
law implies that even if it's documented as discouraged, (some)
people will do it anyway. (And then ask about why it's not working,
one recent example being 
https://lists.gnu.org/archive/html/lilypond-user/2022-10/msg00236.html)





OpenPGP_signature
Description: OpenPGP digital signature


Re: 2.23.81 new D.S. code

2022-11-15 Thread Kieren MacMillan
Hi Jean (et al.),

>> Interesting! It makes sense, of course… but I must admit that I have been 
>> using \repeat in my \global variable and NOT in my other note variables for 
>> my entire time using Lilypond, and [as far as I know] never ran into a 
>> problem. I really did think it was the recommended method, since (like all 
>> global matters) it’s easier to keep in sync when it’s in one place only.
>> I’ll do my best to unlearn that coding practice going forward (and update 
>> older scores the next time I revisit each).
> 40 minutes ago, I wrote in
> https://gitlab.com/lilypond/lilypond/-/issues/6373#note_1173210040:
> "https://lists.gnu.org/archive/html/lilypond-user/2022-11/msg00206.html is 
> giving me a cold sweat ..."
> Now the sweat is starting to freeze ...

My apologies for pouring on the liquid nitrogen…  =)

To be honest, my recent forays into polymeter would surely have demonstrated my 
folly had any of my polymetric scores involved repeats. It’s not for you to 
sweat about, though it will be nice to make things explicit in the 
documentation so nobody else builds up a 20-plus-year library of 
minefield-laden scores.

Cheers,
Kieren.


Re: 2.23.81 new D.S. code

2022-11-15 Thread Jean Abou Samra

Le 15/11/2022 à 22:51, Kieren MacMillan a écrit :

Hi all,


On Nov 15, 2022, at 4:20 PM, Jean Abou Samra  wrote:
\repeat, on the other hand, is a command that does not stand alone
but transforms a piece of music. It should be applied to all music
that it is supposed to transform.

Interesting! It makes sense, of course… but I must admit that I have been using 
\repeat in my \global variable and NOT in my other note variables for my entire 
time using Lilypond, and [as far as I know] never ran into a problem. I really 
did think it was the recommended method, since (like all global matters) it’s 
easier to keep in sync when it’s in one place only.

I’ll do my best to unlearn that coding practice going forward (and update older 
scores the next time I revisit each).



40 minutes ago, I wrote in
https://gitlab.com/lilypond/lilypond/-/issues/6373#note_1173210040:
"https://lists.gnu.org/archive/html/lilypond-user/2022-11/msg00206.html 
is giving me a cold sweat ..."

Now the sweat is starting to freeze ...



OpenPGP_signature
Description: OpenPGP digital signature


Re: 2.23.81 new D.S. code

2022-11-15 Thread Paul Scott

On 11/15/22 2:51 PM, Kieren MacMillan wrote:

Hi all,


On Nov 15, 2022, at 4:20 PM, Jean Abou Samra  wrote:
\repeat, on the other hand, is a command that does not stand alone
but transforms a piece of music. It should be applied to all music
that it is supposed to transform.

Interesting! It makes sense, of course… but I must admit that I have been using 
\repeat in my \global variable and NOT in my other note variables for my entire 
time using Lilypond, and [as far as I know] never ran into a problem. I really 
did think it was the recommended method, since (like all global matters) it’s 
easier to keep in sync when it’s in one place only.

I’ll do my best to unlearn that coding practice going forward (and update older 
scores the next time I revisit each).


As a copyist (and programmer) I don't intend to unlearn that unless I'm 
forced to..


Paul





Re: 2.23.81 new D.S. code

2022-11-15 Thread Jean Abou Samra

Le 15/11/2022 à 22:46, Paul Scott a écrit :


Did you see the documentation advising mismatched \repeat-s across
staves?


No, can you point me to it?




See my previous message. The documentation does not do it apart from
one example that is considered a documentation bug.



OpenPGP_signature
Description: OpenPGP digital signature


Re: 2.23.81 new D.S. code

2022-11-15 Thread Jean Abou Samra

Le 15/11/2022 à 22:41, Paul Scott a écrit :


On 11/15/22 1:57 PM, Jean Abou Samra wrote:

Le 15/11/2022 à 21:50, Paul Scott a écrit :
What about creating all the parts for a score? I certainly don't 
want to type all the common structure in each part.




It is really that troublesome? It's the way it's intended to be used.

Can you show me where the documentation says that?




The first sentence of
https://lilypond.org/doc/v2.23/Documentation/notation/long-repeats.html#simple-repeats
is

"This is the syntax for a repeat without variation:

   \repeat volta repeatcount musicexpr 


where musicexpr is the music expression to be repeated."

Note: "musicexpr is the music expression to be repeated".
Implying that \repeat volta { ... } in a "timing" variable
is trying to repeat a sequence of spacer rests.

Afterwards:

|"\repeat segno| differs from |\repeat volta| only in the resulting 
notation."


I do agree that the recommendation against differing repeat
structures is not blindingly obvious, and this is partly
the topic of this issue:

https://gitlab.com/lilypond/lilypond/-/issues/6373

where you can see that one doc example was accidentally using
differing repeat structures, and it broke in the course of
the 2.23 series.

And I was already worried about compatibility back then ...





You will find that \section and \fine only affect their staff,

I have already NOT found that.
so you're already forced to duplicate those. 


No.




Try

\version "2.23.81"

<<
  \new Staff { c'1 \section }
  \new Staff { c'1 }
>>

and you will see that only the first staff has a double
bar line.

So, this won't work:


\version "2.23.81"

timing = {
  s1
  \section
}

<<
  \new Staff << \timing { c'1 } >>
  \new Staff { c'1 }
>>


Although this *will* work (and is supported):


\version "2.23.81"

timing = {
  s1
  \section
}

<<
  \new Staff << \timing { c'1 } >>
  \new Staff << \timing { c'1 } >>
>>




OpenPGP_signature
Description: OpenPGP digital signature


Re: 2.23.81 new D.S. code

2022-11-15 Thread Kieren MacMillan
Hi all,

> On Nov 15, 2022, at 4:20 PM, Jean Abou Samra  wrote:
> \repeat, on the other hand, is a command that does not stand alone
> but transforms a piece of music. It should be applied to all music
> that it is supposed to transform.

Interesting! It makes sense, of course… but I must admit that I have been using 
\repeat in my \global variable and NOT in my other note variables for my entire 
time using Lilypond, and [as far as I know] never ran into a problem. I really 
did think it was the recommended method, since (like all global matters) it’s 
easier to keep in sync when it’s in one place only.

I’ll do my best to unlearn that coding practice going forward (and update older 
scores the next time I revisit each).

Thanks,
Kieren.



Re: 2.23.81 new D.S. code

2022-11-15 Thread Paul Scott



On 11/15/22 2:20 PM, Jean Abou Samra wrote:

Le 15/11/2022 à 22:10, Paul Scott a écrit :

On 11/15/22 13:57, Jean Abou Samra wrote:
It is really that troublesome? 

Yes.

It's the way it's intended to be used.


?? I learned much of what I do here and, of course, in the documentation

I hope others will comment on this.  I'm sure I've seen structures 
like min advised on the list.




Structures with << \timing \staffMusic >> ? Sure. You can use
that for all sorts of syntax elements that stand alone, like
\mark, \tempo, \textMark / \textEndMark. There is nothing bad
with that, it is supported (there is no reason not to support it)
and the documentation advises it.

\repeat, on the other hand, is a command that does not stand alone
but transforms a piece of music. It should be applied to all music
that it is supposed to transform.

Did you see the documentation advising mismatched \repeat-s across
staves?


No, can you point me to it?

Cheers,

Paul





Re: 2.23.81 new D.S. code

2022-11-15 Thread Paul Scott



On 11/15/22 1:57 PM, Jean Abou Samra wrote:

Le 15/11/2022 à 21:50, Paul Scott a écrit :
What about creating all the parts for a score? I certainly don't want 
to type all the common structure in each part.




It is really that troublesome? It's the way it's intended to be used.

Can you show me where the documentation says that?


You will find that \section and \fine only affect their staff,

I have already NOT found that.
so you're already forced to duplicate those. 


No.



Also, \unfoldRepeats
will not work correctly if you don't use \repeat segno everywhere.


I've never needed to use unfoldrepeats.  I'm a copyist not a composer.

Paul







I certainly this doesn't break in the future.



"Certainly hope", I suppose? But there is no guarantee.

Regards,
Jean





Re: 2.23.81 new D.S. code

2022-11-15 Thread Jean Abou Samra

Le 15/11/2022 à 22:10, Paul Scott a écrit :

On 11/15/22 13:57, Jean Abou Samra wrote:
It is really that troublesome? 

Yes.

It's the way it's intended to be used.


?? I learned much of what I do here and, of course, in the documentation

I hope others will comment on this.  I'm sure I've seen structures 
like min advised on the list.




Structures with << \timing \staffMusic >> ? Sure. You can use
that for all sorts of syntax elements that stand alone, like
\mark, \tempo, \textMark / \textEndMark. There is nothing bad
with that, it is supported (there is no reason not to support it)
and the documentation advises it.

\repeat, on the other hand, is a command that does not stand alone
but transforms a piece of music. It should be applied to all music
that it is supposed to transform.

Did you see the documentation advising mismatched \repeat-s across
staves?

Best,
Jean



OpenPGP_signature
Description: OpenPGP digital signature


Re: 2.23.81 new D.S. code

2022-11-15 Thread Paul Scott

On 11/15/22 13:57, Jean Abou Samra wrote:

Le 15/11/2022 à 21:50, Paul Scott a écrit :
What about creating all the parts for a score? I certainly don't want 
to type all the common structure in each part.




It is really that troublesome? 

Yes.

It's the way it's intended to be used.


?? I learned much of what I do here and, of course, in the documentation

I hope others will comment on this.  I'm sure I've seen structures like 
min advised on the list.




You will find that \section and \fine only affect their staff,
so you're already forced to duplicate those. Also, \unfoldRepeats
will not work correctly if you don't use \repeat segno everywhere.



I certainly this doesn't break in the future.



"Certainly hope", I suppose? But there is no guarantee.


Yes, I omitted "hope"

Paul





Re: 2.23.81 new D.S. code

2022-11-15 Thread Jean Abou Samra

Le 15/11/2022 à 21:50, Paul Scott a écrit :
What about creating all the parts for a score? I certainly don't want 
to type all the common structure in each part.




It is really that troublesome? It's the way it's intended to be used.

You will find that \section and \fine only affect their staff,
so you're already forced to duplicate those. Also, \unfoldRepeats
will not work correctly if you don't use \repeat segno everywhere.



I certainly this doesn't break in the future.



"Certainly hope", I suppose? But there is no guarantee.

Regards,
Jean



OpenPGP_signature
Description: OpenPGP digital signature


Re: 2.23.81 new D.S. code

2022-11-15 Thread Paul Scott

On 11/15/22 1:42 PM, Jean Abou Samra wrote:

By the way, I would strongly discourage your score structure:

\version "2.23.81"

timing = {
  [\repeat segno stuff]
}

music = \fixed c' {
  [without \repeat segno]
}

\score { \new Staff << \timing \music >> }

LilyPond does not make efforts to support differing repeat
structures across voices / staves / parallel music expressions.
Sometimes it works, sometimes it does not. Potentially, it
could break in a future version. (This has partly happened
with volta repeats in 2.23.)

It is much preferable to use \repeat segno in all parallel
expressions, i.e., get rid of your timing variable (unless
you have other stuff in it) and use \repeat segno in the
music itself. (In all voices / staves / ...)


What about creating all the parts for a score?  I certainly don't want 
to type all the common structure in each part.


I certainly this doesn't break in the future.

Paul





Re: 2.23.81 new D.S. code

2022-11-15 Thread Jean Abou Samra

By the way, I would strongly discourage your score structure:

\version "2.23.81"

timing = {
  [\repeat segno stuff]
}

music = \fixed c' {
  [without \repeat segno]
}

\score { \new Staff << \timing \music >> }



LilyPond does not make efforts to support differing repeat
structures across voices / staves / parallel music expressions.
Sometimes it works, sometimes it does not. Potentially, it
could break in a future version. (This has partly happened
with volta repeats in 2.23.)

It is much preferable to use \repeat segno in all parallel
expressions, i.e., get rid of your timing variable (unless
you have other stuff in it) and use \repeat segno in the
music itself. (In all voices / staves / ...)

Best,
Jean



OpenPGP_signature
Description: OpenPGP digital signature


Re: 2.23.81 new D.S. code

2022-11-15 Thread Paul Scott

I forgot to send my reply to the list that I figured out 1.

On 11/15/22 11:16 AM, Jean Abou Samra wrote:

Le 15/11/2022 à 19:10, Paul Scott a écrit :

I'm, trying to learn the new segno repeat structure.

1. Why do I get a second staff?




This has nothing to do with segno repeats, you'll get the same with

\version "2.23.81"

<<
  { c }
  { c' }
>>

The fix isto use


\score { \new Staff << \timing \music >> }

instead of


\score { << \timing \music >> }



2. What does \volta #'() do?


It removes the music if repeats are unfolded by
\unfoldRepeats.



Thank you,

Paul





Re: 2.23.81 new D.S. code

2022-11-15 Thread Jean Abou Samra

Le 15/11/2022 à 19:10, Paul Scott a écrit :

I'm, trying to learn the new segno repeat structure.

1. Why do I get a second staff?




This has nothing to do with segno repeats, you'll get the same with

\version "2.23.81"

<<
  { c }
  { c' }
>>

The fix isto use


\score { \new Staff << \timing \music >> }

instead of


\score { << \timing \music >> }



2. What does \volta #'() do?


It removes the music if repeats are unfolded by
\unfoldRepeats.

Best,
Jean




OpenPGP_signature
Description: OpenPGP digital signature


Re: 2.23.81 new D.S. code

2022-11-15 Thread Paul Scott

I just answered 1. by adding \new Staff \new Voice in the score block.

On 11/15/22 11:10 AM, Paul Scott wrote:

I'm, trying to learn the new segno repeat structure.

1. Why do I get a second staff?

2. What does \volta #'() do?

TIA for any help.

Paul





2.23.81 new D.S. code

2022-11-15 Thread Paul Scott

I'm, trying to learn the new segno repeat structure.

1. Why do I get a second staff?

2. What does \volta #'() do?

TIA for any help.

Paul

\version "2.23.81"

timing = {
  \set Score.dalSegnoTextFormatter = #format-dal-segno-text-brief
  s1
  \repeat segno 2 {
s1
\alternative {
  \volta 1 {
	s1 
  }
  \volta 2 \volta #'() {
\section
\sectionLabel "Coda"
  }
}
  }
  s1
  \fine
}

music = \fixed c' {
  c1 d e f   
}

\score { << \timing \music >> }