Intrusive instrumentation

2024-06-01 Thread Dan Eble

Note to composers: This thread is about software development.

Check this out!

  1. Save and unzip the attached JSON file.
  2. Visit https://ui.perfetto.dev/ in a browser.
  3. Click "Open trace file" and choose the JSON file.
  4. Explore.

What you should see is a visualization of the activity
in service of this command:

lilypond -djob-count=2 -dtime-trace-file=z \
  ~/lilypond-src/input/regression/mozart-hrn-3.ly \
  ~/lilypond-src/input/regression/typography-demo.ly

I don't expect to have code ready for review this weekend,
but I wanted to share this much.
--
Dan<>


Re: LilyDev3 problems - a translator's point of view

2024-05-14 Thread Dan Eble

On 2024-05-14 10:49, 周 卫星 wrote:

[HIGH] The LilyDev3 docker build is ​**MISSING SOME PACKAGES** and not 
available for work out-of-box! To me it looks like a critical issue - why all 
the bother with Docker when I need to search and install the missing packages 
manually?


I believe that Federico wrote recently that he is not maintaining 
LilyDev any longer, but I am having a hard time finding a written record 
of it.


I could push some Dockerfile updates that I have been using, but I don't 
know where to push them.  I don't want to make my fork the de-facto 
trunk and become personally responsible for processing all new 
contributions.

--
Dan



Re: Contributing

2024-04-29 Thread Dan Eble

On 2024-04-29 17:39, Steph Phillips wrote:

Hi there!

I'm an experienced Python developer with some additional background in 
C# and C++ and would be really excited to contribute to LilyPond.


It's definitely hard to decide where to begin though, so I'm hoping you 
can point me at the starting line!


Welcome, Steph.  Please consider contributing to the review of these
merge requests that are currently in progress.

"Various `musicxml2ly` issues"
https://gitlab.com/lilypond/lilypond/-/merge_requests/2316

"clean up and accelerate www_post script"
https://gitlab.com/lilypond/lilypond/-/merge_requests/2312

If that doesn't lead you to something interesting, you will at
least get a sense of the current activity.
--
Dan



Re: regtest threshold problem

2024-04-28 Thread Dan Eble

On 2024-04-28 03:34, Werner LEMBERG wrote:
>

Independent of improving the metrics, maybe we could improve the
review workflow by adding dynamic control to the diff web page to
expand or collapse the entries based on a variable threshold.


Yes, this would be a nice feature – please submit an issue for that.


https://gitlab.com/lilypond/lilypond/-/issues/6711
--
Dan



Re: regtest threshold problem

2024-04-27 Thread Dan Eble

On 2024-04-27 00:24, Werner LEMBERG wrote:


I'm working on a modification of `musicxml2ly` that will cause a
change in the result as shown by the attached images.  However, our
regtest classifies this as 'below threshold' and doesn't display it.

Does anybody have an idea how to improve this?  I'm not an expert in
image analysis, and a quick search in the internet didn't help me in
finding a good metrics.  I think we would need something that checks
whether a shape completely disappears and/or reappears in the images
(contrary to shapes that are only slightly shifted and/or distorted),
almost regardless of its size.


Independent of improving the metrics, maybe we could improve the
review workflow by adding dynamic control to the diff web page to
expand or collapse the entries based on a variable threshold.
--
Dan



Re: Music property articulations

2024-04-16 Thread Dan Eble

[adding lilypond-devel (mea culpa)]

On 2024-04-16 09:24, Maurits Lamers wrote:

Hi!

I looked at it now you mentioned it. Trying to grok it: does it mean 
that when I do not have an articulations listener it does add the 
articulations to the note, and when it is being listened to, it doesn't?


When I test that assumption by removing the listener for articulations 
from the Voice context listeners, the list of articulations is still empty.


cheers

Maurits

Op 16-04-2024 om 13:14 schreef Dan Eble:
On 2024-04-15 04:20, Maurits Lamers via Discussions on LilyPond 
development wrote:

Hey all,

plus 'moment should be enough to combine them, but having all the 
articulations to a note as a property on that note event would save 
me a bit of time.


Are you familiar with `Rhythmic_music_iterator::process` in 
lily/rhythmic-music-iterator.cc?


(On LilyPond mailing lists, please add your reply after the quoted message.)

> When I test that assumption by removing the listener for articulations
> from the Voice context listeners, the list of articulations is still 
empty.


Rats.  I was hoping that code would explain what you are seeing.
--
Dan



Re: How to detect SpanBar from inside a make-bar-line definition?

2024-03-13 Thread Dan Eble

On 2024-03-13 20:09, Thomas Morley wrote:

I don't understand what you propose.


My advice was general software-design advice based on a hasty 
consideration of your post, so I'm not really surprised.



To give a different example, let's look at make-dotted-bar-line (afaik
it's your code).
There you have a `making-span-bar?'-condition, obviously you want a
span bar a little different than bar line.


Yes, I remember that there were cases where the dashes didn't meet well, 
but I don't remember the details.



a) If I implement (pretty-print grob) there, I always get BarLine,
never something else, regardless where I place that.


In that case, I think you will need to pass more information into the 
function from above or find a heuristic that works better.



c) the condition itself may fail, see
/input/regression/non-centered-bar-lines.ly for an example, or try to
set bar-extent to an interval not crossing zero.


That's why the comments call it a heuristic.


Because of b) I tried to patch make-dotted-bar-line, alas I found no
condition to apply the patched functionality to span bars only.

Thus I ask if there is such a condition at all. Or how it could be coded.


I'm not sure, and I have to be very motivated to read Scheme, which I am 
not at the moment.  Sorry.

--
Dan



Re: How to detect SpanBar from inside a make-bar-line definition?

2024-03-13 Thread Dan Eble

On 2024-03-13 17:35, Thomas Morley wrote:


currently I'm attempting to improve dashed/dotted bar lines wrt to
changed staff-space and span bars.
We use both definitions for BarLine _and_ SpanBar, but then SpanBar is
frequently a little off.
It would be nice to have a possibility to detect whether a definition
is used for span bars.


What specifically do you want to know?  Do you expect to code something like

if the grob is a BarLine:
  adjust ... by ...
if the grob is a Divisio:
  adjust ... by ...
if the grob is a SpanBar:
  adjust ... by ...

If so, it seems that you could add a grob property for that adjustment 
and get it from the grob.



#(define (make-test-bar-line grob extent)
   (let ((grob::make-span-bar? #f))


Another possibility is for the grob's print procedure to pass more 
information down to this function.  That might be more appropriate if 
the information you require is not associated with the grob only, but is 
derived from a number of sources, like the surrounding staves, and would 
be useful for many different glyph print procedures.  Of course, 
ly:bar-line::print would provide values appropriate for bar lines and 
ly:span-bar::print would provide values appropriate for span bars.


These are the opinions off the top of my head and I reserve the right to 
change them.

--
Dan



Re: hel-arabic.ly

2024-03-11 Thread Dan Eble

On 2024-03-11 18:27, hassan.elfat...@free.fr wrote:

you delete

(define-safe-public FIVE-HALF-FLAT -5/2)
(define-safe-public SEVEN-HALF-FLAT -7/2)
(define-safe-public FIVE-HALF-SHARP 5/2
  you delete (define-safe-public FIVE-HALF-FLAT -5/2)


As I understand it, this change was made after your statement at

https://lists.gnu.org/archive/html/lilypond-devel/2023-01/msg00176.html

that "5/2 and 7/2 are not being used, You can delete them."

--
Dan



Re: hel-arabic.ly

2024-03-07 Thread Dan Eble

On 2024-03-07 09:24, hassan.elfat...@free.fr wrote:

by trying to make hel-arabic.ly dependent on arabic.ly without consulting me,
you screwed up the hel-arabic.ly file.


Neighbor,

1. You contributed to an open-source project.  Proposed
changes are posted for public review.  GitLab sends
notifications to those who are subscribed.  This mailing
list receives a "PATCHES" message with merge-request
headlines three times a week.  You have had the same
opportunity as any other contributor to follow and
respond to proposed changes.

2. The command

git grep hel-arabic input/regression/

returns no results.  If you are interested in reducing
the dependence on the vigilance of one or two expert
reviewers, consider contributing a test or two to
exercise the unique features of hel-arabic.ly such
that breaking changes would cause visual differences
even non-experts can appreciate.

--
Dan



Re: clang compiler warnings

2024-02-27 Thread Dan Eble

On 2024-02-27 07:14, Luca Fascione wrote:


inline constexpr vsize VPOS (vsize(-1));


OK, but don't repeat the type.

inline constexpr auto VPOS = vsize (-1);

Personally, I don't like flower's aliases related to vsize,
ssize, and Real -- I'd rather just use standard names --
but I remember that there was some resistance to changing
them the last time I suggested it.
--
Dan



Re: 5th anniversary conference? :)

2024-02-23 Thread Dan Eble

On 2024-02-23 14:10, Mike Blackstock wrote:

> just above the Bulk Barn on Bloor... cheap pints

... 90% whey protein isolate by the kilo ...

But seriously: I'm not keen to tour the 18-lane highway to Hogtown just 
to socialize for an hour; however, if this idea grew into a day-long 
conference, I would plan to attend, provided that it didn't fall on a 
Sunday morning.

--
Dan



Re: Error with make doc

2024-02-10 Thread Dan Eble

On 2024-02-10 07:52, Werner LEMBERG wrote:


systems like macOS that neither have or use '/bin/bash'.


Apple changed the default shell for new users to zsh about 5 years ago, 
but bash is still there.  I don't oppose making the build scripts more 
portable, but let's not misunderstand the situation.

--
Dan



Re: Chord grids enhancement

2024-02-02 Thread Dan Eble

On 2024-02-02 14:29, Éric Würbel wrote:


How can submit a patch ? forking the master branch and submitting a pull
request ?


Yes.

https://lilypond.org/doc/v2.25/Documentation/contributor/summary-for-experienced-developers
--
Dan



Re: Error with make doc

2024-01-20 Thread Dan Eble

On 2024-01-20 20:55, Carl Sorensen wrote:


   File
"/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/subprocess.py",
line 524, in run

 raise CalledProcessError(retcode, process.args,

subprocess.CalledProcessError: Command '['/usr/bin/tidy', '-o',
'/dev/null', '-q', 'compare-dir1dir2/index.html']' returned non-zero exit
status 2.


Try commenting out this part of scripts/build/output-distance.py and 
retrying:


    tidy_bin = shutil.which('tidy')
    if tidy_bin:
    subprocess.run([tidy_bin, '-o', '/dev/null', '-q', html_fn], 
check=True)


I'm not sure that that's the only problem, but it should eliminate one 
thing.


--
Dan





Re: Harp_pedal_engraver: an overengineered solution to a niche problem

2023-12-10 Thread Dan Eble

On 2023-12-07 05:12, Saul Tobin wrote:


I’d welcome feedback and I’d be happy to submit this as a pull request for
either OLL or Lilypond itself if there is interest.


They're "merge requests" on GitLab, but they smell as sweet.  You would 
likely get more engagement from busy developers if you submitted a 
number of right-sized merge requests with regression tests.



I extended
side-position-interface::move-to-extremal-staff to allow for placement of
grobs below the top staff if direction is set to CENTER.


merge request (though it sounds questionable as stated)


IMO note-name->string should be changed to accept an
integer instead of ly:pitch, to be consistent with
accidental->text-accidental-markup.


merge request


I’ve also duplicated note-name->markup,
because the original implementation doesn’t allow for printing naturals,
and also because for some reason it inserts a space between the note name
and the flat sign, which IMO is quite ugly (this is a general issue I see
on both Mac and Windows when entering flat signs in markups, not just with
that function).


merge request

--
Dan



Re: bizarre behaviour of `output-filename`

2023-10-21 Thread Dan Eble
On Oct 21, 2023, at 01:12, Werner LEMBERG  wrote:
> 
> 
> 
>>> Some debugging shows it seems to be the latter: All top-level
>>> definitions are available as paper variables within a book's paper
>>> block, together with all paper variables of the top-level paper
>>> block:
>>> 
>>> Is this really intentional?
>> 
>> https://gitlab.com/lilypond/lilypond/-/issues/5917
>> https://codereview.appspot.com/567450043
> 
> Really?  I would never have expected that this quite innocent-looking
> patch makes top-level definitions (outside of any block) available as
> paper variables within `\book`.  The comment in `book.cc` only talks
> about `\header` blocks.  How does this influence stuff outside of
> `\header`?  And how does it influence `\paper`?
> 
> In case this patch is really the cause, can the behaviour be
> restricted to `\header` blocks as announced in the commit message?

I might have been mistaken.  I don't have much time to give to LilyPond these 
days.
— 
Dan




Re: bizarre behaviour of `output-filename`

2023-10-20 Thread Dan Eble
On Oct 20, 2023, at 06:29, Werner LEMBERG  wrote:
>> 
>> Or is this an inheritance thing?  Does a `\book` block inherit all
>> top-level expressions and convert them to paper variables?
> 
> Some debugging shows it seems to be the latter: All top-level
> definitions are available as paper variables within a book's paper
> block, together with all paper variables of the top-level paper block:
...
> 
> 
> 
> Is this really intentional?

https://gitlab.com/lilypond/lilypond/-/issues/5917
https://codereview.appspot.com/567450043
— 
Dan




Re: PATCHES - Countdown to September 1

2023-08-31 Thread Dan Eble
On Aug 31, 2023, at 07:38, Jean Abou Samra  wrote:
> 
> 
> 
>> Le 31 août 2023 à 13:22, Dan Eble  a écrit :
>> 
>> My opinion hasn't changed since we instituted the automation.  The previous 
>> discussion is in the archive.
> 
> I couldn't find it. Do you happen to have a link at hand?

Sorry for the confusing couple of slightly different emails earlier.  My 
internet connection was up and down and I got confused about what was actually 
sent.

I'm sure we discussed the issue of draft reviews, but I can't find it in the 
list archive either.  We probably discussed it in one of the trial MRs when we 
were evaluating GitLab.

My opinion was that we should let "Draft:" do what it was designed to do 
(prevent merging) and otherwise ignore it.  I didn't think it should prevent CI 
pipelines and review because such feedback is useful even for draft work.

If people want to prevent Draft MRs from advancing to Patch::countdown, well, I 
don't see either harm or benefit in it; however, making Draft equivalent to 
Patch::needs_work would be giving something up.
— 
Dan




Re: PATCHES - Countdown to September 1

2023-08-31 Thread Dan Eble
On Aug 31, 2023, at 02:46, Werner LEMBERG  wrote:
> 
> 
> 
>>> Colin, something that starts with 'Draft:' in the description
>>> should be omitted from the normal review cycle.  So: MR 2089 is
>>> *not* on countdown.  Please adjust the tag accordingly.
>> 
>> Thanks for the clarification, Werner. I've set it back to Needs_work,
>> as that was the last status you set, but perhaps freezing it at Review
>> would also be appropriate. What do you and the other devs think about
>> that as a general principle for all MRs described as Draft?
> 
> IMHO, 'Needs_work' is exactly the right tag, since a draft MR, well,
> usually needs work :-)

My opinion hasn't changed since we instituted the automation.  The previous 
discussion is in the archive.
— 
Dan




Re: Cannot build latest master branch

2023-07-28 Thread Dan Eble
On Jul 27, 2023, at 08:22, Jean Abou Samra  wrote:
> 
> as Dan said, we're on C++17 now (and I think the experiment has lasted long 
> enough without Guile quirks that actually using C++17 features would be fine 
> by now).

Good, because I queued up a random bunch of minor improvements during my recent 
vacation.  I hope to start trickling them into review after the next release.
— 
Dan




Re: Cannot build latest master branch

2023-07-26 Thread Dan Eble
On Jul 26, 2023, at 14:38, Jason Yip via Discussions on LilyPond development 
 wrote:
> 
> * ../configure
>   --prefix=/home/lj/projects/internships/2023/lilypond/build/release
>   --disable-debugging --disable-optimising --enable-checking
>   --enable-profiling 'CC=ccache clang' 'CXX=ccache clang++'
>   'CXXFLAGS=-std=c++11 -march=native -O0 -g -pedantic -fno-plt
>   -Wformat -Werror=format-security -Wno-unused-command-line-argument
>   -fstack-clash-protection -fstack-protector-strong -fcf-protection
>   -fuse-ld=mold -Wp,-D_GLIBCXX_ASSERTIONS'
>   LDFLAGS=-Wl,--sort-common,--as-needed,-z,defs,-z,relro,-z,now
>   PYTHON=/usr/bin/python
> * make
> 
> My configure args have always worked in the past, but not this morning

> 'CC=ccache clang' 'CXX=ccache clang++'

Have you tried clearing the cache?

> CXXFLAGS=-std=c++11

Why this?  We started using C++14 in June 2022.  We are currently building with 
-std=c++17, though we haven't intentionally started using C++17 features.

> -pedantic

I'm surprised that this doesn't complain about ##__VA_ARGS__, but I guess that 
Clang is not as pedantic as GCC.

You're using a some compiler features that I don't immediately recognize.  Have 
you tried just `autogen.sh --ci`?
— 
Dan




Re: No applicable method for #< - (4)> in call

2023-07-09 Thread Dan Eble
On Jul 9, 2023, at 10:39, Jean Abou Samra  wrote:
> 
> It definitely makes sense to keep the option to build without bytecode, since
> that is quite faster for incremental rebuilds (especially in Guile 2.2,

I think it makes sense to skip `make bytecode` when iterating on particular 
tests, but I always `make bytecode` before `make check` because `bytecode` 
requires 15s and shortens `check` by 60s.  I don't know whether that is 
typical, but I wouldn't mind having `make` compile the bytecode for me in the 
case of `check` and `doc` targets.
— 
Dan




Re: No applicable method for #< - (4)> in call

2023-07-08 Thread Dan Eble
On Jul 8, 2023, at 13:55, David Kastrup  wrote:
> 
> Ok, here is the deal: I think it probably is sanest to just ditch the
> operator for ly:pitch-negate and the equivalent for Moment.  That being
> said, I've also found incorrect manual conversions in some code.  The
> question is whether it is better to address this with a bulk fix, or
> with reverts and redo of what turns out a number of co-dependent
> commits.

Speaking just for myself, this state of affairs is only a slight annoyance, so 
whatever you deem the cleanest or most convenient path is fine with me.
— 
Dan




No applicable method for #< - (4)> in call

2023-07-07 Thread Dan Eble
I'm hitting this on master after (roughly) autogen.sh; make; make bytecode.

```
$ out/bin/lilypond ~/lilypond-src/input/regression/other/display-lily-tests.ly
GNU LilyPond 2.25.7 (running Guile 2.2)
Processing 
`/home/user/lilypond-src/input/regression/other/display-lily-tests.ly'
[...]
/home/user/lilypond-src/input/regression/other/display-lily-tests.ly:252:8: 
error: Guile signaled an error for the expression beginning here
\test #
   #[ \key e \minor #]
No applicable method for #< - (4)> in call (- 0 #)
/home/user/lilypond-src/input/regression/other/display-lily-tests.ly:252:7: 
error: wrong type for argument 2.  Expecting pair, found #
\test##[ \key e \minor #]
[…]
```





Re: Getting beam subdivision working

2023-06-20 Thread Dan Eble
On Jun 19, 2023, at 13:21, Jason Yip  wrote:
>   \set minSubdivideInterval = #(ly:make-moment 1 8)
>   \set maxSubdivideInterval = #(ly:make-moment 1 16)

These values could be `\musicLength 8` and `\musicLength 16`.

Also, MR 2032 (merged hours ago) adds `musical-length?` and 
`positive-musical-length?` predicates that you might find useful to reduce the 
amount of validation where these properties are read.

https://gitlab.com/lilypond/lilypond/-/merge_requests/2032
— 
Dan




Re: Getting beam subdivision working

2023-06-17 Thread Dan Eble
On Jun 17, 2023, at 09:27, David Kastrup  wrote:
> 
>> 
>> That sounds like it would make more sense to specify those values in the
>> form of a "duration log", like the first argument to a ly:make-duration
>> call.
> 
> Or just use a duration in the first place.  First iterations would
> likely only use the duration-log info while I consider it conceivable
> that in the context of tuplets, ultimately also the factor may get used.

There are no Duration properties.  I recently tried a step down the path of 
adding them and got as far as supporting

\set Staff.parserTestDuration = \breve
\set Staff.parserTestDuration = ##{ 4. #}
\set Staff.parserTestDuration = \duration 4.

before deciding to leave the existing Moment properties as they are and provide 
\musicLength [1] to clear ly code of #(ly:make-moment…) cruft.

I'm not saying that Duration properties couldn't or shouldn't be added; I'm 
just warning that they're not a ready option.
— 
Dan

[1] https://gitlab.com/lilypond/lilypond/-/merge_requests/1887




Re: Getting beam subdivision working

2023-06-17 Thread Dan Eble
On Jun 16, 2023, at 19:13, Jason Yip  wrote:
> 
> minSubdivideInterval and maxSubdivideInterval. They are both Rationals. Their 
> numerator and denominator must be a power of 2. For each power of 2 
> (including negative powers of 2 of course) between those two values, the beam 
> can be subdivided by that interval. minSubdivideInterval can be 0 for no 
> minimum limit, maxSubdivideInterval can be infinity for no maximum limit.

Setting the representation aside, is the following another way of describing 
what you have in mind?

* These properties are independently optional.
* The allowed values are integer powers of two (including negative powers).

— 
Dan




Re: 2.25.6 release

2023-06-16 Thread Dan Eble
On Jun 16, 2023, at 04:37, Jean Abou Samra  wrote:
> 
> I know that 2.25.6 was planned for this weekend. Unfortunately, due to 
> https://gitlab.com/lilypond/lilypond/-/issues/6620 , current master is not 
> going to work on Kubuntu and possibly other distros.
> 
> I will try to find time this evening to experiment with the alternative 
> approaches proposed on 
> https://gitlab.com/lilypond/lilypond/-/merge_requests/2033 . Meanwhile, 
> should we delay the release, or
> do it nevertheless?

I don't see a problem either with releasing it with a note about the known 
issue, or with delaying the release.  I have no concerns about leaving the 
decision to Jonas, since he is the one spending his time on it.
— 
Dan




Re: Time-signature cancellation

2023-06-04 Thread Dan Eble
On Jun 4, 2023, at 08:18, Werner LEMBERG  wrote

 Has anyone here ever used or seen the time-signature cancellation
 sign shown in MR 2029, or anything like it?
 https://gitlab.com/lilypond/lilypond/-/merge_requests/2029
>>> 
>>> Never.
>>> Kieren.
>> 
>> Now I'm starting to doubt that I should bother with it.
> 
> Maybe asking on 'lilypond-user', too?

https://lists.gnu.org/archive/html/lilypond-user/2023-06/msg00010.html

One user has provided an example and another has wisely recommended not 
describing it as a cancellation sign, since it can be used at the start of a 
piece.
—
Dan




Re: Time-signature cancellation

2023-06-04 Thread Dan Eble
On Jun 4, 2023, at 15:27, Flaming Hakama by Elaine  
wrote:
> 
> I guess I am kind of confused at the default behavior, why does lilypond
> not reprint a clef when you specify \clef ?
> 
> Are people putting \clef commands in their code where they don't want a
> clef to appear?
> Is this a common practice?

I can't read the mind of the original designers, but I can appreciate that it 
simplifies certain things like unfolding repeats and reusing music from 
variables in different parts of a work.

sectionA = { \clef "alto" . . . }
sectionB = { . . . \clef "treble" . . . }
refrain = { \clef "treble" . . . }

\new Staff {
  \sectionA
  \refrain
  \sectionB
  \refrain % [1]
}

If it didn't work the way it does, the question at [1] would be, "Why is 
LilyPond printing an unnecessary change clef and confusing my __ section in 
rehearsal?"
— 
Dan




Re: Time-signature cancellation

2023-06-04 Thread Dan Eble
On Jun 4, 2023, at 07:53, Kieren MacMillan  wrote:
> 
> Hi Dan,
> 
>> Has anyone here ever used or seen the time-signature cancellation sign shown 
>> in MR 2029, or anything like it?
>> https://gitlab.com/lilypond/lilypond/-/merge_requests/2029
> 
> Never.
> Kieren.

Now I'm starting to doubt that I should bother with it.
— 
Dan




Time-signature cancellation

2023-06-03 Thread Dan Eble
Has anyone here ever used or seen the time-signature cancellation sign shown in 
MR 2029, or anything like it?

https://gitlab.com/lilypond/lilypond/-/merge_requests/2029
— 
Dan




Re: Clef, key, and time-signature changes

2023-06-03 Thread Dan Eble
On Jun 3, 2023, at 04:09, Kevin Barry  wrote:
> 
> On Sat, 3 Jun 2023 at 06:06, Carl Sorensen  wrote:
> 
>>> I vote for adjusting the code so that it follows the documentation,
>>> probably by adding `forceTimeSignature` and `forceKeySignature`
>>> properties, both for orthogonality and a way to retain backward
>>> compatibility.
>>> 
>> 
>> I vote for initially just fixing the code --  use scm_equal_p instead of
>> scm_is_eq
>> 
>> At that point, we'd be consistent with the documentation.
>> 
>> If there is a use case for 'forceTimeSignature' then I suppose we could
>> create it, but it seems to me like YAGNI.
> 
> My preference would be to leave things as they are (and update the
> documentation), or, if not that, then follow Werner's suggestion. I
> have sometimes needed to reprint a time signature even if it wasn't
> different.

I am partial to changing the default behavior and providing a consistent way to 
override it.  There are some things that I would change about `forceClef`.
--
Dan




Clef, key, and time-signature changes

2023-06-02 Thread Dan Eble
About time signatures, the Notation Reference says briefly,

> Time signatures are printed at the beginning of a piece
> and whenever the time signature changes.

That is true, but incomplete: time signatures are also printed when the time 
signature hasn't changed -- and it has been that way for years.

Time_signature_engraver::process_music has this condition:

SCM fr = get_property (this, "timeSignatureFraction");
if (!scm_is_eq (last_time_fraction_, fr) && scm_is_pair (fr))
  {
// . . . create the grob . . .

scm_is_eq tells whether these two things refer to the very same instance; if 
they are different pairs containing equal values, the grob is created.  
Essentially, this creates a time signature whenever `\time` is used.

I haven't tested key signatures, but Key_engraver::process_music looks similar.

Clefs work differently.

Anyone want to weigh in on whether anything should be done about these 
inconsistencies?  Do they call for editing the documentation? something more 
radical?

Regards,
— 
Dan




Assigning issues

2023-05-22 Thread Dan Eble
I was obliquely asked about my reaction to having another person assign an 
issue to me.

The main practical effect of assigning an open issue is to deter others from 
acting on it: a person interested in working on an issue ought to coordinate 
with the current assignee before doing something that might be considered 
interference.

If I were unable to respond for some time to an issue that was just assigned to 
me, the assignment could be counterproductive.  A simple @-mention would get my 
attention just as well without discouraging others from getting involved.

The other important consideration is that people in this group commonly have 
the temperament of an artist and the verbal filter of an engineer.

Therefore, my advice is not to assign an issue to another contributor lightly; 
but if you understand the practical impact and can communicate your reasons 
delicately, it might be appropriate on occasion.

I hope that helps.
— 
Dan




Re: quoting percent repeats

2023-05-18 Thread Dan Eble
On May 18, 2023, at 08:47, Valentin Petzel  wrote:
> 
> Essentially it checks: Do we start at the begin of a measure, and if so, does 
> or repeated music take exactly one or two measures?

I've dropped the user list from this thread.

I suggest looking at Percent_repeat_iterator::create_contexts().  There is code 
that reads context properties.

Next, read the comment on Music_iterator::create_contexts().  This is the 
salient point:

// Think twice before reading context properties here.  Other iterators'
// process () methods may run after this call and before this iterator's
// process () method runs (and may change the context properties).

Therefore, try deferring the Percent_repeat_iterator's initialization that 
depends on context properties until the first call to process().

You are right that quoting on the whole does not smell sweet, and I don't have 
time now to list the remaining problems I see, but taking the above action 
might mitigate the problem at hand.
— 
Dan

P.S. Include a regression test in your merge request. :)




Re: strange volta bracket example in LSR

2023-05-18 Thread Dan Eble
On May 18, 2023, at 00:29, Werner LEMBERG  wrote:
> 
> 
>>> The snippet 'Adding volta brackets to additional staves'
>>> 
>>> https://lsr.di.unimi.it/LSR/Item?id=427
>>> 
>>> doesn't seem to do what the description says.  Honestly, I have no
>>> idea what this snippet actually wants to demonstrate at all...
>> 
>> https://gitlab.com/lilypond/lilypond/-/issues/6373
> 
> Aah, thanks.  Maybe it makes sense to replace this non-standard
> example in the documentation with
> 
>  https://lsr.di.unimi.it/LSR/Item?id=220
> 
> (which we already import into LilyPond but don't use in the NR)?

That's not a bad idea.  I've written more in the ticket.
-- 
Dan




Re: strange volta bracket example in LSR

2023-05-17 Thread Dan Eble
On May 17, 2023, at 14:04, Werner LEMBERG  wrote:
> 
> The snippet 'Adding volta brackets to additional staves'
> 
>  https://lsr.di.unimi.it/LSR/Item?id=427
> 
> doesn't seem to do what the description says.  Honestly, I have no
> idea what this snippet actually wants to demonstrate at all...

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




Re: Next releases

2023-05-10 Thread Dan Eble
On May 10, 2023, at 16:19, Jonas Hahnfeld via Discussions on LilyPond 
development  wrote:
> 
> Hi all,
> 
> due to various constraints, I am kind of restricted when I will be able
> to do the next releases, so I thought I might as well let you know:
> 
> LilyPond 2.25.5 will happen on the weekend of the 20th/21st (unless I
> get too bored this next weekend...). I'm planning version 2.25.6 for
> the second weekend of June (10th/11th) or the one after (17th/18th).
> 
> I also think it might be a good idea to have another bugfix release of
> stable/2.24, towards the end of June / early July?

Whatever works for you.  I'm glad you keep these things moving.
— 
Dan




Re: Tick bar from font

2023-05-05 Thread Dan Eble
On May 5, 2023, at 06:14, Jean Abou Samra  wrote:
> 
> Le jeudi 04 mai 2023 à 22:51 -0400, Dan Eble a écrit :
>> 
>> 
>> I thought it would be nice to be able to draw a tick BarLine from a font 
>> glyph in lieu of the default rounded rectangle.  I have a working prototype 
>> that uses a new property BarLine.tick-font-glyph-name to enable the 
>> behavior, but I need some advice about font-size.
> 
> 
> Could you elaborate on the expected advantage?

This is in the context of 6564.  I am looking for ways to increase the 
configurability and maintainability of Divisio by changing it to share 
internals with BarLine, and one of the differences between the two is the 
variety of shapes used for the divisio minima.
—  
Dan




Tick bar from font

2023-05-04 Thread Dan Eble
I thought it would be nice to be able to draw a tick BarLine from a font glyph 
in lieu of the default rounded rectangle.  I have a working prototype that uses 
a new property BarLine.tick-font-glyph-name to enable the behavior, but I need 
some advice about font-size.

VaticanaStaff has \override Divisio.font-size = #-2.  In order to make a tick 
BarLine that looks about the same, I could override BarLine.font-size = #-2.  
That would be fine for the tick, but it would also shrink other font glyphs 
(dots, bracket tips, segno and kievan bar lines).

I'm not sure what to do.

* add another BarLine property for a tick-specific scaling factor
* add smaller versions of the font glyphs for \caesura and \virgula
* give up on unifying this aspect of Divisio and BarLine
* other

Thanks,
— 
Dan




Re: LSR #983 produces strange result

2023-04-23 Thread Dan Eble
On Apr 23, 2023, at 05:22, Jean Abou Samra  wrote:
> 
>> {
>>   \textLengthOn
>>   s1-"loong"
>>   \once \omit Staff.BarLine
>>   \clef F
>>   r1
>> }
>> with a starting spacer _and_ an omitted BarLine _and_ a clef change.
>> 
>> 2.22. is ok, but output of 2.24. is bad.
> 
> 
> The MM rest placement sounds like 
> https://gitlab.com/lilypond/lilypond/-/issues/6550

I don't see a multi-measure rest.
— 
Dan




Bar lines in mensural notation (request for interpretation)

2023-04-18 Thread Dan Eble
Everything I know about 16th-Century Italian I learned from 20th-Century 
Spanish.  I hope that someone here is able and willing to check my guesses 
about this.

The following text seems to follow an introduction to mensural rests, and it 
surrounds a figure of a single bar line and a double bar line on an otherwise 
empty staff.  The book often uses bar lines in a way that looks semantically 
modern, though it also contains sample compositions without bar lines.

> Gli Ecclesiastici etiandio pongono le Pause ne i loro canti, no gia per 
> ornamento, ma per necessità. . . .
> Il che fa dibisogno, che li Compositori etiandio auertitenza delle parole si 
> oda, & intenda interamente: percioche facendo in cotal modo, allora si potrà 
> dire, che le Pause siano state poste nelle parti della cantilena con qualche 
> proposito, & non a caso.  Ne si debbeno porre per alcun modo, auanti che sia 
> finita la sentenza, cioè nel mezo della Clausula: conciosia che colui, che le 
> ponesse a cotal modo, dimostrarebbe veramente essere vna pecora, vn goffo, & 
> vno ignorante.  Però adunque il Musico si sforzerà di non cascare in simili 
> errori; accioche non dia alli dotti mala opinione di se, il che molto si 
> debbe prezzare, & preporre ad ogn'altra cosa.

This is what I've drawn out: When notating a chant, anyone who places 
full-height single or double lines anywhere but the end of a phrase is a sheep, 
a klutz, and an ignoramus.

My main doubt is whether this restriction is limited to church music.  I hope 
to understand whether to regard the bar lines in the rest of the book as a 
normal part of the notation that this author is teaching, or rather as a 
learning aid that he expects the reader not to carry over into his work.

More context might be required.  The book is available at IMSLP.  See page 212.
https://imslp.org/wiki/Le_Istitutioni_Harmoniche_(Zarlino,_Gioseffo)

Thanks and regards,
— 
Dan




Re: On the ly: prefix...

2023-04-02 Thread Dan Eble
On Apr 2, 2023, at 14:39, Kevin Barry  wrote:
> 
> On Sun, 2 Apr 2023 at 19:31, Jean Abou Samra  wrote:
>> I can do
>> 
>> (define-public grob-interpret-markup ly:grob-interpret-markup)
>> 
>> like we already have for assoc-get aka ly:assoc-get, but it seems
>> clumsy.
> 
> That is what I would do.

Do yourself a favor: do this and worry about everything else later.
— 
Dan




Re: MacPorts builds for 'Yosemite' and 'El Capitan' fail

2023-02-05 Thread Dan Eble
On Feb 5, 2023, at 09:28, Dan Eble  wrote:
> 
> 2. Attack this TODO in flower/include/real.hh.
> 
>using std::abs; // TODO: replace abs (x) with std::abs (x) and remove this

https://gitlab.com/lilypond/lilypond/-/merge_requests/1834
— 
Dan




Re: MacPorts builds for 'Yosemite' and 'El Capitan' fail

2023-02-05 Thread Dan Eble
Friends,

I don't have a Yosemite or El Capitan environment in which to validate changes.

There are two things I would try.

1. Does changing the few occurrences of `#include ` to `#include 
` fix it?  I don't know that it will, but it seems like less work than 
2.

2. Attack this TODO in flower/include/real.hh.

using std::abs; // TODO: replace abs (x) with std::abs (x) and remove this

I have more in my schedule today than a usual Sunday, but if I get time and I 
don't hear that anyone else has started turning these cranks, I will try later.

Regards,
— 
Dan




Re: Explicit default duration?

2023-01-26 Thread Dan Eble
On Jan 26, 2023, at 12:22, David Kastrup  wrote:
> 
>c'' x2
> 

That looks a lot like "twice" to me.
— 
Dan




Re: Explicit default duration?

2023-01-23 Thread Dan Eble
On Jan 23, 2023, at 18:05, David Kastrup  wrote:
> 
> Dan Eble  writes:
> 
>> On Jan 23, 2023, at 10:11, David Kastrup  wrote:
>>> 
>>> I am not saying that 0 is the best choice here.  It merely appears to be
>>> rather cheap.  I thought of * and / but the first renders sequences like
>>> c4*2 ambiguous and the second would at least become a mess in chord
>>> mode.
>> 
>> Can you clarify how `c4*2` would be ambiguous?  (I was about to
>> suggest `r*1` for your original example.)
> 
> c4*2 could be read as c4 c4 c2 if all of 4 * 2 are interpreted as
> individual durations.

I see.  I was thinking not of using '*' as a duration, but of omitting the 
duration part of r4*1.

  r4   quarter rest
  rrest of default duration
  r4*2/3   quarter rest compressed to 2/3 of its duration
  r*2/3rest of the default duration, compressed to 2/3 of it

So r*1 would use the unscaled default duration.
— 
Dan




Re: Explicit default duration?

2023-01-23 Thread Dan Eble
On Jan 23, 2023, at 10:11, David Kastrup  wrote:
> 
> I am not saying that 0 is the best choice here.  It merely appears to be
> rather cheap.  I thought of * and / but the first renders sequences like
> c4*2 ambiguous and the second would at least become a mess in chord
> mode.

Can you clarify how `c4*2` would be ambiguous?  (I was about to suggest `r*1` 
for your original example.)
— 
Dan




Re: want to help

2023-01-16 Thread Dan Eble
On Jan 16, 2023, at 16:26, David Zelinsky  wrote:
> Or try to make a merge request?

Welcome.  This is the way.
— 
Dan




Slurs without Stems (Issue #3760)

2023-01-04 Thread Dan Eble
Should slurs require Stem_engraver?

No:  https://gitlab.com/lilypond/lilypond/-/issues/3760#note_339794300
Yes: https://gitlab.com/lilypond/lilypond/-/merge_requests/1800#note_1227831830

I'm looking for some input from old-timers to help decide this so I can avoid 
wasting more time on broken or unacceptable solutions.

Thanks,
— 
Dan




Re: Strange behaviour with unknown alternativeNumberingStyle

2022-12-31 Thread Dan Eble
On Dec 30, 2022, at 12:10, Thomas Morley  wrote:
> 
> Hi all,
> 
> please have a look at:
> 
> \version "2.25.0"
> 
> {
>  \override Score.BarNumber.break-visibility = ##(#f #t #t)
> %  \set Score.alternativeNumberingStyle = #'whatever
>  b1
>  \repeat volta 2 { c' c' }
>  \alternative { d' e' }
>  f'
> }
> 
> As soon as the style-setting is uncommented it behaves like
>  \set Score.alternativeNumberingStyle = #'number
> shouldn't an unknown style behave like the default '()?

I don't see documentation or regression tests for anything beyond 'number and 
'numbers-with-letters.

Since https://gitlab.com/lilypond/lilypond/-/merge_requests/594#note_477121479, 
Timing_translator chooses the numbers and Bar_number_engraver formats them.  
Any value of "alternativeNumberingStyle" causes Timing_translator to use the 
alternative numbering scheme common to both of those styles.

> tl;dr
> This probably prevents me defining a knew style
> with a custom engraver
> as fix for lsr-snippet 1080 "Incrementing bar numbers in volta
> repeats"
> https://lsr.di.unimi.it/LSR/Item?id=1080

From the description: "Here is a hack that increments the currentBarNumber 
property whenever volta repeats occur.  It also offers basic (though limited) 
support for alternatives."

Do you need a new value for alternativeNumberingStyle?  If you want the 
behavior arising from leaving alternativeNumberingStyle unset, why not leave it 
unset and let your custom engraver do the rest?

Besides, the snippet's numbering scheme seems oriented toward the volte in 
general rather than the alternatives.  It isn't clearly a new kind of 
alternative numbering.
— 
Dan




Re: Another user complaint about incompatible mark-like events

2022-12-03 Thread Dan Eble
On Dec 3, 2022, at 08:48, Jean Abou Samra  wrote:
> 
> It rejects the \sectionLabel that comes at the same
> time as an implicit \codaMark.
> 
> Should this be supported, or is there a reasoning that
> I am missing?

It's the same concern as from the beginning: I was reluctant to allow assigning 
multiple labels to the same moment in a performance because of known and 
unknown complications.

For example, if a moment were marked with both 턌 and Part II, what should the 
jump text say?

D.C. al 턌 e poi la Coda
D.C. al Part II e poi la Coda
D.C. al 턌Part II e poi la Coda

Automating that was not something I was willing to struggle with.


> Of course, for now one can use
> 
> \tweak font-size 1.5 \textMark "Part II"

If the score must have a coda mark and a section label at the same point, I 
think that is a reasonable recommendation for 2.24.
— 
Dan




Re: Another user complaint about incompatible mark-like events

2022-12-03 Thread Dan Eble
On Dec 3, 2022, at 10:25, Jean Abou Samra  wrote:
> 
> Le 03/12/2022 à 16:18, Dan Eble a écrit :
>> Printing "Coda" instead of a coda mark is the defining use case for 
>> \sectionLabel.
> 
> But judging from how \repeat segno uses it and from its break-visibility,
> \codaMark is for a jump to the coda, not for the start of the coda itself,
> isn't it?

"What it's for" and "how I managed to make it work" are not necessarily the 
same.  There is an implicit \codaMark \default at the start of every 
alternative ending.
— 
Dan




Re: Another user complaint about incompatible mark-like events

2022-12-03 Thread Dan Eble
On Dec 3, 2022, at 08:48, Jean Abou Samra  wrote:
> 
> It rejects the \sectionLabel that comes at the same
> time as an implicit \codaMark.

Printing "Coda" instead of a coda mark is the defining use case for 
\sectionLabel.  I'll try to take a closer look at the example soon.
— 
Dan





Re: Guile 2 vs. Guile 3

2022-11-26 Thread Dan Eble
On Nov 26, 2022, at 17:43, Eric Benson  wrote:
> 
> ton of warnings, mostly of the form "implicit conversion changes
> signedness". These seem like the sort of thing that might not be too hard
> to fix.

https://gitlab.com/lilypond/lilypond/-/merge_requests/1744 fixes warnings other 
than conversion warnings.
— 
Dan




Re: Prefer luatex for documentation

2022-11-19 Thread Dan Eble
On Nov 19, 2022, at 05:19, Werner LEMBERG  wrote:
> 
> Attached you can find an example that demonstrates (a), taken from the
> MR.

The sample LGTM.  Beyond that, I prefer not to involve myself in the discussion.
— 
Dan




Re: Automated test on PDF or SVG output

2022-11-14 Thread Dan Eble
On Nov 14, 2022, at 04:43, Paolo Prete  wrote:
> 
> I need to execute the following automated test:
> given a .ly file, I would like to check if the produced output is what I
> expect it to be.

For checking the impact of LilyPond changes on my own scores, I use a
Docker container and a bash script that does this:

1. reads PDF files from two directories recursively
2. converts each page to a bitmap
3. overlays the two versions of each page so that pixels which are white
   in one and black in the other become either red or green
4. collates the new images into new PDF files in a third directory

Then I review every score.

It works well when specific things have moved, appeared, or disappeared.
It can be quite noisy when there have been general changes to spacing.

If that appeals to you, I can send you the scripts privately.
— 
Dan




Re: Updated release schedule

2022-11-12 Thread Dan Eble
On Nov 12, 2022, at 09:07, Werner LEMBERG  wrote:

>> 2. Release 2.23.81 without the fix and instead review it properly.
...
> Option 2 is fine with me.

+1
—
 Dan




Re: Labels for ties and slurs

2022-10-24 Thread Dan Eble
On Oct 22, 2022, at 09:16, Jean Abou Samra  wrote:
> 
> We have many issues related to ties and to slurs. Would anybody mind creating 
> two GitLab labels ~"Ties" and ~"Slurs" for these? It would ease searching for 
> defects in those specific areas.

I don't have a problem with your creating any labels that you deem useful.
— 
Dan




Re: To branch or not to branch

2022-10-07 Thread Dan Eble
On Oct 7, 2022, at 13:51, Jonas Hahnfeld via Discussions on LilyPond 
development  wrote:
> 
> On Thu, 2022-10-06 at 08:39 +0200, Jean Abou Samra wrote:
>> A factor that I was starting to forget in my enthusiasm for branching is 
>> !1510 (source locations). Here I am guilty of taking forever to prepare 
>> the latest version of that patch. I am open to opinions on whether it 
>> should be included in 2.24. I do think so, because the problem it fixes 
>> has been called a possible release blocker by some.
> 
> I have to say this is very late. Yes, the MR is a bit older, but it
> also touches very core parts of LilyPond. On the other hand, the
> compilation isn't enabled by default and the other change is about the
> error path. I don't know…

I'm fine either way.
—
Dan





Re: Administration of mailing lists

2022-10-07 Thread Dan Eble
On Oct 7, 2022, at 16:45, Jean Abou Samra  wrote:

> Thus I wrote to the general GNU list server admins and proposed
> to step up for being an admin on these lists, just like I am
> already an admin on lilypond-user-fr (the French-speaking equivalent
> of lilypond-user, in case you didn't know).
> 
> Is that OK with everyone?

It is fine with me.
— 
Dan




Re: Tablature full notation rests and aethstetics

2022-10-07 Thread Dan Eble
> I'm only familiar with a subset of C++ up to C++03. Would my lack of 
> knowledge of modern C++ exclude me from being a contributor?

No.  Others will review your code and suggest using new features where it is 
appropriate.

> I'm also not an expert on UB in C++, although I very much want to avoid it. 
> Would that exclude me from being a contributor?

No.
— 
Dan




Re: GregorianTranscriptionStaff

2022-09-08 Thread Dan Eble
On Aug 1, 2022, at 10:44, Lukas-Fabian Moser  wrote:
> 
> fwiw, I'm a bit confused about the GregorianTranscriptionStaff context - for 
> example, in the typical liturgical situations where one uses a "modern" staff 
> for notating Gregorian chant, one usually doesn't use stems.

I've been going through the documentation, and it seems that all examples of 
transcribing Gregorian chant remove the time signature.  I propose that we 
remove it from GregorianTranscriptionStaff and use that in the examples:

https://gitlab.com/lilypond/lilypond/-/merge_requests/1614
— 
Dan




Re: Replacing fixcc.py with clang-format?

2022-09-06 Thread Dan Eble
On Sep 6, 2022, at 12:46, Jean Abou Samra  wrote:
> 
> I would like to propose moving to clang-format as the canonical
> formatting tool and removing fixcc.py.

I don't care as long as the version is specified.
— 
Dan




Re: "Hymn template" snippet

2022-09-05 Thread Dan Eble
On Aug 9, 2022, at 10:07, Trevor  wrote:

> In more modern hymn books there is a movement to use thin double lines 
> throughout rather than commas to show how the lines of the verse map onto the 
> music, although settings of traditional hymns usually retain the commas (see 
> Common Praise).

Thanks.  For the record, here's evidence that both the comma and the double bar 
are not tied to line position in _Common Praise_:

https://hymnary.org/hymn/CPAM2000/369
— 
Dan




Re: Moving most initialization to .scm files

2022-09-04 Thread Dan Eble
On Sep 4, 2022, at 16:38, Jean Abou Samra  wrote:
> 
> it will create conflicts with everyone's WIP local branches

This is obviously unwelcome.

I would need to read a lot before I would have a hope of speaking competently 
on this issue, and I'm very busy right now.
— 
Dan




Re: Removing a snippet

2022-09-04 Thread Dan Eble
On Sep 4, 2022, at 18:23, Thomas Morley  wrote:
> 
>> The Contributor's Guide has sections on adding, editing, and renaming 
>> snippets.  What should I do when I want to stop using a snippet in the 
>> Notation Reference?
> 
> Well, short answer, adjust NR in
> Documentation/*/notation/expressive.itely, and you're done.

Thanks.  I'll do that much and also record your answer in the CG.  Later, I 
will coordinate with you about fully cleaning up this and any other obsolete 
snippets I find.
— 
Dan




Removing a snippet

2022-09-04 Thread Dan Eble
Harm,

The Contributor's Guide has sections on adding, editing, and renaming snippets. 
 What should I do when I want to stop using a snippet in the Notation 
Reference?  The one I have in mind now is "Inserting a caesura", though there 
might have been one in the past that I removed from the source without asking 
this question.

Thanks,
— 
Dan




Syntax highlighting of a new grob name

2022-09-04 Thread Dan Eble
I am trying to document \caesura in the Notation Reference.

I have just made the docs starting from a clean build directory.

I see that CaesuraScript is highlighted differently than other grob names in 
this text:

\override Score.Script.color = ...
\override Score.MultiMesaureRestScript.color = ...
\override Score.CaesuraScript.color = ...

Can I do something to address this?  TIA.
— 
Dan




Re: Stale branches in Savannah repository

2022-09-03 Thread Dan Eble
On Sep 1, 2022, at 14:54, Jonas Hahnfeld via Discussions on LilyPond 
development  wrote:
> 
> Hi all,
> 
> it's been 2 years now that development has moved to GitLab. In the very
> beginning, we agreed to keep existing branches on Savannah, but I'd
> like to revisit that decision and propose that we make it a mirror of
> only the master and stable/* branches, just as GitHub is. The migrated
> branches continue to be available on GitLab.
> 
> However, I'd like to also propose to delete some of these branches
> (both on Savannah *and* GitLab) that don't serve a purpose anymore:

I don't have a strong opinion.
— 
Dan




Re: A more automated LY_DEFINE?

2022-09-02 Thread Dan Eble
On Sep 2, 2022, at 04:42, Jean Abou Samra  wrote:
> 
> Does C++ provide tools for making this simpler? I'm thinking that something 
> like
> 
> LY_DEFINE (ly_grob_relative_coordinate, ..., (Grob *g, Grob *refp, Axis a), 
> ...)
> {
>   ...
>   return ret;
> }
> 
> would be equivalent to
> 
> LY_DEFINE (ly_grob_relative_coordinate, ..., (SCM g_scm, SCM refp_scm, SCM 
> axis_scm), ...)
> {
>   auto *const g = LY_ASSERT_SMOB (Grob, g_scm, 1);
>   auto *const refp = LY_ASSERT_SMOB (Grob, refp_scm, 2);
>   LY_ASSERT_TYPE (is_scm, axis_scm, 3);
>   Axis a = from_scm (axis_scm);
>   ...
>   return to_scm (ret);
> }

This has been on my wish list for a while, which is why it is currently 
possible to pass overloaded functions to macros such as LY_DEFINE, and 
hand-code the function as a SCM function wrapping another function.  I suspect 
that David had similar thoughts when he created from_scm() and to_scm().


> I might be willing to spend time on it in the future, although not very soon.
> 
> If it is not feasible, being told it before I try could save me time. I'm
> not yet very familiar with C++ templating techniques.

It's hard to give any assurance about complicated problems one doesn't do every 
day.  I can confidently predict that the experience will involve an instance of 
trying something obvious that doesn't work and learning that it requires a more 
recent version of C++.

I don't want to discourage you, but this is a good thing to attempt when you're 
prepared for a steep learning curve and possible failure.
— 
Dan




Macro for NR appendix

2022-08-24 Thread Dan Eble
I tried this:

@macro appendixBarLineDemo{BARTYPE}
@code{"\BARTYPE\"}
@lilypond[notime,relative=2]
\bar "\BARTYPE\" b4 \bar "\BARTYPE\" b4 \bar "\BARTYPE\"
@end lilypond
@end macro

but with \BARTYPE\ in the lilypond section, no staff appears in the PDF.  I 
guess I need some additional quoting — or unquoting.  Is there a way to make 
this work or am I stuck writing out the bar type 4 times per type?

Thanks,
— 
Dan





Re: Mixed chord/note mode

2022-08-14 Thread Dan Eble
On Aug 14, 2022, at 06:59, Jean Abou Samra  wrote:
> 
> Le 14/08/2022 à 12:21, David Kastrup a écrit :
>> Jean Abou Samra  writes:
>> 
>>> We could also introduce a music function. I don't think
>>> tremoli are used frequently enough that having the most
>>> concise syntax for them is very important.
>> Drum roll...  Let me guess: you don't write percussion parts frequently?
> 
> That is a good point.
> 

One could say he hit it on the head.
— 
Dan




Re: Can't have rehearsal mark and segno mark at same moment

2022-08-14 Thread Dan Eble
On Aug 14, 2022, at 04:03, Werner LEMBERG  wrote:
> 
>> Or maybe \textMark and \textEndMark? I'm not sure.
> 
> I prefer `\textMark` over 'ad-hoc' or 'nonce'.  As with Jean, I've
> never used the word 'nonce' before.

I also prefer \textMark.  Then ad-hoc-mark-event can remain ad-hoc.

FYI, "nonce" is alive and well as jargon in at least two domains.

* https://en.wikipedia.org/wiki/Cryptographic_nonce
* https://en.wikipedia.org/wiki/Nonce_word

I do not think there would have been a problem using "nonce" in an internal 
name, but if I preferred it over "ad-hoc", I would not have used "ad-hoc" in 
the first place.
— 
Dan




Re: Can't have rehearsal mark and segno mark at same moment

2022-08-13 Thread Dan Eble
On Aug 13, 2022, at 19:00, Jean Abou Samra  wrote:
> 
> I now have a patch locally that renames AdHocMarkEvent into 
> LegacyAdHocMarkEvent
> (also ad-hoc-mark-event into legacy-ad-hoc-mark-event),

If I were less familiar with this stuff, I would probably be confused by 
leaving "ad-hoc" in these names while introducing not-very-closely related 
things that also have "ad-hoc" in their names.  Would you be willing to use 
another name?

My best idea is nonce-rehearsal-mark-event.

The rest of your plan sounds fine.
— 
Dan




Re: Can't have rehearsal mark and segno mark at same moment

2022-08-10 Thread Dan Eble
On Aug 10, 2022, at 18:01, Dan Eble  wrote:
> 
> On Aug 10, 2022, at 14:20, Jean Abou Samra  wrote:
>> 
>>  \set Score.rehearsalMark = 
>>  \mark \default
...
> Remember the reasons that you preferred that \bar send an event rather than 
> set a property?  Maybe they apply to this too.

Oh, never mind this statement.  There is still an event in your example.  (The 
lesson is this: Don't try to respond to an email after your wife has summoned 
you to dinner.)
— 
Dan




Re: Can't have rehearsal mark and segno mark at same moment

2022-08-10 Thread Dan Eble
On Aug 10, 2022, at 14:20, Jean Abou Samra  wrote:
> 
> There is also \mark . I don't know if it's really that
> useful. If you need this, you can just as well do
> 
>   \set Score.rehearsalMark = 
>   \mark \default

I found that interface inconvenient enough not to imitate it in the coda and 
segno mark implementation.  \codaMark  and \segnoMark  are 
supported, but the context properties holding the current sequence numbers are 
internal.

Remember the reasons that you preferred that \bar send an event rather than set 
a property?  Maybe they apply to this too.

% warning about this is very easy with with assign_event_once
<<
  \mark 1
  \mark 2
>>

% we can't warn about this
<<
   \set Score.rehearsalMark = 1
   \set Score.rehearsalMark = 2
>>

— 
Dan




Re: Can't have rehearsal mark and segno mark at same moment

2022-08-10 Thread Dan Eble
On Aug 10, 2022, at 00:38, Werner LEMBERG  wrote:
> 
> Just imagine a piece (say, a waltz by Johann Strauss[*]) that has not
> a single segno, but a bunch of them.  It might confuse an orchestra if
> the conductor asks to start 'at the segno' during a rehearsal – from
> experience I can tell you that at least one musician will ask 'which
> one?'…

Then that score is not an example of using a segno and a rehearsal mark at the 
same point.

It is an example of ambiguous segni, and stacking rehearsal marks on top of 
them addresses only half of the issue: the D.S. instructions remain ambiguous.

> In other words, it actually does make sense to have both rehearsal
> marks and segno signs at the same position.

Between preparing caesura-related MRs, I will try allowing a rehearsal mark to 
occur at the same point as the other types of marks.  Maybe now, after having 
spent some time away from it, I will see other ways to do the things that made 
me implement the restriction in the first place.

I would like advice on whether it would be ideal to split Mark_engraver into 
Rehearsal_mark_engraver and Performance_mark_engraver.  I recall that my 
primary reason for keeping them all together originally was a concern that we 
might discover interdependencies between different types of marks that are 
easier to manage with one engraver in charge, and I thought it would probably 
be easier to start with one and split it in a future release than to go the 
other way.
— 
Dan




Re: Can't have rehearsal mark and segno mark at same moment

2022-08-09 Thread Dan Eble
On Aug 3, 2022, at 17:22, Jean Abou Samra  wrote:
> 
> \version "2.23.12"
> 
> {
>   c'1
>   \mark \default
>   \repeat segno 2 {
> c'1
>   }
> }
> 
> 
> A power user on -user-fr is frustrated that the above
> doesn't work, as rehearsal-mark-event and segno-mark-event
> are mutually exclusive at the same time step.

Vincent,

The marks that \repeat segno creates are intended to identify points of 
repetition and departure for performance.  Having one of those, I do not 
understand why one would want to identify the same point with a second mark for 
rehearsal.

I read a machine translation of the thread on lilypond-user-fr, and I thought 
that probably you did not really want to print a rehearsal mark and a segno 
simultaneously. Can you clarify for me what you wanted to achieve?
— 
Dan




Re: "Hymn template" snippet

2022-08-09 Thread Dan Eble
On Aug 9, 2022, at 08:26, Kieren MacMillan  wrote:
> 
> Hi all,
> 
> The big difference, in my mind — as composer, arranger, conductor, and 
> performer — is that a caesura is generally longer than a comma/breath, and 
> intentionally interrupts the flow of the overall line, whereas the 
> comma/breath usually doesn't (or at least doesn't in as dramatic a manner).
> 
> In musical theatre scores, the caesura is used almost exclusively when the 
> music completely stops and is restarted ‘from silence’ in the next phrase — 
> indeed, the caesura is quite often coupled with a fermata — whereas the 
> comma/breath is really only used in situations where the singer/performer 
> literally needs a little time to phrase off (either for dramatic or 
> technical/breathing purposes) but the music [in the accompaniment] basically 
> continues unbroken.
> 
> Hope that helps add useful context!
> Kieren.

Thanks.  Those are the intended semantics of the \breathe and \caesura commands 
in the code that is under development.
—
Dan




Re: Alternative music keeps staff alive

2022-08-09 Thread Dan Eble
On Aug 9, 2022, at 02:31, Jean Abou Samra  wrote:
> 
>   \new Staff {
> \alternative {
>   \volta 2 c'1
> }

This unfolds better (but not well):

  \alternative {
\volta 2 \new Staff ...
  }

Conditional (folded/unfolded) context creation is something I thought of, but I 
don't think I had a good solution for.

> The example above shows that \alternative sometimes keeps staves
> alive longer than they should be.

It could be a bug in the \alternative iterator.  Please create a ticket and 
assign it to me.  Thanks.
— 
Dan




Re: "Hymn template" snippet

2022-08-09 Thread Dan Eble
On Aug 9, 2022, at 07:40, Trevor  wrote:

> A comma is the standard way of writing a breathing point in vocal music. It 
> is used extensively in Hymns Ancient and Modern, New Standard. Gould writes 
> on page 436 in the Vocal Music chapter: "When a note should be sung for its 
> full duration, with extra time for the breath, add a comma above the stave - 
> this adds a short pause to the bar in which it occurs." No mention here of a 
> caesura.

"The comma (턒) or diagonal-stroked caesura 턓 indicates that a note is sustained 
for its full value, then extra time allotted for a short break in sound" 
(p.187).

> If you change this snippet to use a caesura and render it as a comma in this 
> section of the NR ("Chants, Psalms and Hymns") that would be OK I suppose 
> (although \breathe seems the appropriate LP command), but "//" is definitely 
> a no-no. I've never seen that in a hymnal.

\breathe takes time from the preceding note and \caesura adds time after it.  
Which is better for this example?

The engraving is configurable.  Note that Gould's "comma above the stave" is 
something different than what \breathe currently engraves (see p.189), and 
something I plan to support.

Also, what about the bar lines?

Thanks and regards,
— 
Dan




Re: "Hymn template" snippet

2022-08-09 Thread Dan Eble
Gilles,

I would like to learn the reason for using \breathe and \bar "||" in the 
LilyPond snippet entitled "Hymn template" [1],   Are they intended to 
communicate two different things, or was it merely a stylistic decision to use 
\bar "||" at the end of a system and \breathe in the middle?

Also, why not use \bar "|." at the end?

I want to revise this snippet to use \caesura (which is still under 
development) to end phrases, but I want to stay faithful to your intent.

Thanks,
Dan

[1] https://lsr.di.unimi.it/LSR/Item?id=703




"Hymn template" snippet

2022-08-08 Thread Dan Eble
"Hymn template"
https://lsr.di.unimi.it/LSR/Item?id=703

I don't see any way to find the author of a snippet.  I'd like to ask the 
author of this snippet about the reason for using \breathe and \bar "||".  Are 
they intended to communicate two different things, or was it merely a stylistic 
decision to use \bar "||" at the end of a system and \breathe in the middle?

I would like to revise it to use \caesura but stay faithful to the original 
intent.

Thanks,
Dan




Re: generate-documentation failure on context mods

2022-08-07 Thread Dan Eble
On Jul 12, 2022, at 09:29, David Kastrup  wrote:
> 
>> Apparently, document-mod-list in document-context-mods.scm reads
>> an unbound variable.
> 
> Well, yes.
> 
>  ((assign)
>   (string-append
>(format #f "@item Sets translator property @code{~a} to" name-sym)
>(if (pretty-printable? value)
>(format #f ":~a\n" (scm->texi (car args)))
>(format #f " ~a.\n" (scm->texi (car args))
> 
> Here (pretty-printable? value) should likely be (pretty-printable? (car
> args)) .

Thank you.  I included this change in 
https://gitlab.com/lilypond/lilypond/-/merge_requests/1525 by necessity.
— 
Dan




Re: PATCHES - Countdown to August 8

2022-08-05 Thread Dan Eble
On Aug 5, 2022, at 22:35, Colin Campbell  wrote:

> !1525 Divisio_engraver - Dan Eble 
> https://gitlab.com/lilypond/lilypond/-/merge_requests/1525 

Those with an interest in ancient music, please take note.  I don't want you 
thinking of me next time you are singing Psalm 94.
— 
Dan




Re: Can't have rehearsal mark and segno mark at same moment

2022-08-03 Thread Dan Eble
On Aug 3, 2022, at 17:22, Jean Abou Samra  wrote:
> 
> \version "2.23.12"
> 
> {
>   c'1
>   \mark \default
>   \repeat segno 2 {
> c'1
>   }
> }
> 
> A power user on -user-fr is frustrated that the above
> doesn't work, as rehearsal-mark-event and segno-mark-event
> are mutually exclusive at the same time step.

I'm willing to discuss it, but I don't think you should open an issue yet.

I try to be conservative because it's easier to relax the rules than to tighten 
them.  I have tried to keep in mind the possibility of creating new features 
where LilyPond uses "the" label at a given point of the piece.  (The jump 
instructions already do some of this.)

Having both a rehearsal mark and a segno seems like an unusual editorial 
choice, where it might make sense to force power users into workarounds so that 
more casual users can benefit from the warning.

Before discussing solutions, what are the details of the use case?

* Is this about true rehearsal marks, or one of the (ahem) creative uses of 
rehearsal marks that are floating around in snippets?  (e.g., fermata, CD track 
number)

* Does the user want the rehearsal mark to appear in addition to or in lieu of 
the segno?

* What does the user expect the automatic jump instruction to say?

* Are these the user's personal preferences, or are there historical examples?

Regards,
— 
Dan




Re: integrating Joram's 'visualindex'

2022-08-03 Thread Dan Eble



> On Aug 3, 2022, at 07:24, Jean Abou Samra  wrote:
> 
> 
> 
>> Le 3 août 2022 à 13:12, Dan Eble  a écrit :
>> 
>> On Aug 3, 2022, at 06:10, Jean Abou Samra  wrote:
>>> 
>>>> Le 3 août 2022 à 11:44, Werner LEMBERG  a écrit :
>>>> 
>>>> 
>>>> Two weeks ago Dan asked the following:
>>>> 
>>>>>> Can you force them to face each other?
>>>>> 
>>>>> I think so, yes, with some TeX trickery.
>>>> 
>> [… it is possible …]
>>> 
>>> Sorry for jumping in as someone without any expertise in typography, but I 
>>> can’t help thinking: why create the problem if it doesn’t already exist? :-)
>> 
>> If the index were split into two pages, I would prefer to see them together.
>> 
>> I don't say that having to flip pages would rise to the level of "problem", 
>> but it would be an inferior experience.
> 
> 
> I probably misunderstood the problem. Are you using a PDF reader where two 
> pages at a time are shown at a time like when reading a book? If so, I 
> understand the request. I thought this was uncommon, but I have no idea after 
> all.

I usually use the Preview app in macOS, which has a few modes:

• Show pages in a continuous scroll: Choose View > Continuous Scroll.
• Show one page at a time: Choose View > Single Page.
• Show two pages side by side: Choose View > Two Pages.

— 
Dan


Re: integrating Joram's 'visualindex'

2022-08-03 Thread Dan Eble
On Aug 3, 2022, at 06:10, Jean Abou Samra  wrote:
> 
> Le 3 août 2022 à 11:44, Werner LEMBERG  a écrit :
>> 
>> 
>> Two weeks ago Dan asked the following:
>> 
 Can you force them to face each other?
>>> 
>>> I think so, yes, with some TeX trickery.
>> 
[… it is possible …]
> 
> Sorry for jumping in as someone without any expertise in typography, but I 
> can’t help thinking: why create the problem if it doesn’t already exist? :-)

If the index were split into two pages, I would prefer to see them together.

I don't say that having to flip pages would rise to the level of "problem", but 
it would be an inferior experience.

If accommodating it would disrupt the rest of the NR, then I think it would be 
better to make the visual index a separate document.
— 
Dan




GregorianTranscriptionStaff

2022-07-31 Thread Dan Eble
GregorianTranscriptionStaff currently shows a time signature.  Is that 
desirable?

If it should be changed, feel free to list other things that should be changed.
— 
Dan




Re: as_ly_scm_list

2022-07-27 Thread Dan Eble
On Jul 27, 2022, at 02:02, Jean Abou Samra  wrote:
> 
> Did you mean for rather than if, or is this syntax I am not aware of?

Yes, sorry.
— 
Dan




Re: as_ly_scm_list

2022-07-26 Thread Dan Eble
On Jul 25, 2022, at 16:09, Jean Abou Samra  wrote:
> 
> Now, the next question. Suppose I just want to iterate over the list, nothing 
> else. (This is actually the only case I have found myself in.) Suppose I get 
> this list from an lvalue. The compiler won’t let me use ly_scm_list (lvalue). 
> Is there a way to use ly_scm_list nevertheless and not as_ly_scm_list in 
> order not to put the reader in a mode where they look for in-place 
> modifications of the SCM lvalue?

Readers will know that you are just iterating if you use a range-based for loop.

If the variable declaration is a reference, assignment modifies the current 
list element (and readers will be expecting it).

// set! all elements of the_list to #f
if (SCM  : as_ly_scm_list (the_list))
  s = SCM_BOOL_F;

If the variable declaration is a value, then it is a copy of the current list 
element, which can't be used to change the element.

if (SCM s : as_ly_scm_list (the_list))
  {
// s is read, but probably not assigned to.
// If s is assigned to, it doesn't change the_list.
  }

However, if s above refers to a smob, the smob can still be modified via s even 
though the_list cannot.  For a homogeneous list of smobs, we can hamper that; 
for example,

if (const auto *col : as_ly_smob_list (the_list))
  ...

> Is there a way to use ly_scm_list ...

I am aware that I haven't actually answered this question.
— 
Dan




Re: Fonts missing in development environment

2022-07-26 Thread Dan Eble
On Jul 26, 2022, at 09:11, Walter Garcia-Fontes  wrote:
> 
> I checked, and the following packages are installed in my system:
> 
> tex-gyre
> texlive-fonts-extra
> fonts-texgyre
> 
> How can I get these missing fonts?

Walter,

I'm using
https://github.com/fedelibre/LilyDev/blob/master/docker/Dockerfile
and I don't see warnings.
— 
Dan




Re: as_ly_scm_list

2022-07-25 Thread Dan Eble
On Jul 24, 2022, at 19:04, Jean Abou Samra  wrote:
> 
> I understand that ly_scm_list takes an rvalue and disallows
> lvalues for clarity, while as_ly_scm_list takes an lvalue,
> and will fail on an rvalue by design, with the failure being
> a compilation failure since e67154f7e330b61c5d9a973fbb89bd56866a148e.
> 
> But I don't understand the real difference that distinguishes
> them. Before that commit, what would have been the difference
> between as_ly_scm_list (lvalue) and ly_scm_list (lvalue)?

The difference is ownership of the head.

ly_scm_list has one data member:

private:
  SCM head_ = SCM_EOL;

Creating an instance of ly_scm_list creates this head.  If a list operation 
modifies this head, no other SCM is modified.

ly_scm_list x (my_things_);  // A. x.head_ = my_things_
...
x.clear ();  // B. my_things_ is unchanged

(B) might or might not be a problem.  Without a comment, it can require deep 
review to tell whether leaving my_things_ alone was an error or not.

Forbidding (A) means that people can't write such code, but there are times 
where we do want to work with a SCM like a ly_scm_list, including operations 
that change the head SCM.

as_ly_scm_list casts a SCM to a ly_scm_list.  There is no separate head because 
there is no new ly_scm_list, just a reinterpretation of the given SCM.

auto& x = as_ly_scm_list (my_things_);  // C. 
…
x.clear (); // D. clears my_things_

Hope that helps.
— 
Dan




Re: Countdown down?

2022-07-20 Thread Dan Eble
On Jul 20, 2022, at 15:42, Colin Campbell  wrote:
> 
> It does, however, lead me to suggest to the developers that we go to a fixed 
> schedule, with countdowns beginning on Monday, Wednesday and Friday every 
> week, rather than the present, somewhat fluid, setup of every second day.

That works for me.  Thanks.
— 
Dan




Re: \fine, pre-process-in-final-translation-timestep & co.

2022-07-20 Thread Dan Eble
On Jul 19, 2022, at 18:46, Jean Abou Samra  wrote:
> 
> Then we have the style of solution found in !1451, with per-engraver
> heuristics. I honestly dislike this. I don't want to sound harsh, but

"\fine does not end iteration"
https://gitlab.com/lilypond/lilypond/-/merge_requests/1496
— 
Dan




Re: \fine, pre-process-in-final-translation-timestep & co.

2022-07-18 Thread Dan Eble
On Jul 10, 2022, at 12:04, Jean Abou Samra  wrote:
> 
> The currently recommended syntax for DS al fine
> repeats is
> 
> \repeat segno 2 {
>   c'1 1 1 1
>   \volta 2 \fine
>   c'1 1 1 1
> }
> 
> This seems to work just as well, though:
> 
> \repeat segno 2 {
>   c'1 1 1 1
>   \volta 2 \fine
>   \volta 1 { c'1 1 1 1 }
> }
> 
> Do you see downsides with that syntax?

Imagining myself in the position of a user looking at a black box, I would not 
have much respect for a developer trying to make me believe that LilyPond needs 
more information than "\volta 2 \fine" to determine that the work ends there.  
I don't want to be that developer.

I won't rule it out, but it's not my first or second choice.
— 
Dan




Re: Easy to tackle bug/feature

2022-07-18 Thread Dan Eble
On Jul 18, 2022, at 09:49, Paulo Matos  wrote:
> 
> Anyway, let me take a look and see if I can make sense of it. Dan, are
> you the right person to bother if I have any further questions?

It is best to post questions to lilypond-devel so that everyone can participate 
in answering and learning.
— 
Dan




  1   2   3   4   5   6   7   8   9   >