lilypond x64 and arm64 for macOS users in homebrew

2021-09-30 Thread Jefferson Felix
Dear developers,

We have been working the last few days on homemade formulas for TeXLive (
https://github.com/Homebrew/homebrew-core/pull/83738) and Lilypond (
https://github.com/Homebrew/homebrew-core/pull / 85024) . The Lilypond
formula relies on the TeXLive formula to build, which is practically ready
to be merged.

With that, Lilypond 2.22 will have binary distributions for macOS Catalina
or higher, with x86_64 (Intel) or arm64 (M1) processors, available with
command `brew install lilypond`.

The problem is that homebrew core maintainers do not agree to use the old
and obsolete Guile 1.8 to build and run Lilypond, so the version we are
using in the formula is 2.2 (which exists in homebrew).

I know guile 2 is not officially supported by Lilypond, but we did a lot of
testing and compiled a lot of scores, with no errors. I just noticed that
compilation time is a little slow with Guile 2.

Therefore, I would like your opinion if we can continue with Guile 2, even
if this homebrew distribution is not an official distribution, or if you
could demonstrate, with examples, known issues in compiling sheet music
with Guile 2.

Thanks!

-- 
---
Jefferson dos Santos Felix


Re: Broken make info dependencies

2021-09-30 Thread David Kastrup
David Kastrup  writes:

> make info
>
> Oops, half of the images in Documentation/out-www/lilypond-changes.info
> are just [Image of music] text tags.
>
> make doc
>
> 45 minutes later:
>
> make info
>
> Still half of the images in Documentation/out-www/lilypond-changes.info
> are just [Image of music] text tags.
>
> make info-clean
>
> That target does not exist.
>
> make doc-clean
>
> make doc
>
> Wasting another 45 minutes
>
> make info
>
> Using just a script rather than a Makefile would have taken half as long
> as this series of broken makes.  And having to build the HTML
> documentation of all languages when the Info files only need the images
> from the English version is not exactly rewarding either.

Now everything in Documentation/out-www/lilypond-changes.info is
[Image of Music]

WTF?

-- 
David Kastrup



Broken make info dependencies

2021-09-30 Thread David Kastrup


make info

Oops, half of the images in Documentation/out-www/lilypond-changes.info
are just [Image of music] text tags.

make doc

45 minutes later:

make info

Still half of the images in Documentation/out-www/lilypond-changes.info
are just [Image of music] text tags.

make info-clean

That target does not exist.

make doc-clean

make doc

Wasting another 45 minutes

make info

Using just a script rather than a Makefile would have taken half as long
as this series of broken makes.  And having to build the HTML
documentation of all languages when the Info files only need the images
from the English version is not exactly rewarding either.

-- 
David Kastrup



Re: Question on commit c478396f Move all doc building logic to Documentation/GNUmakefile

2021-09-30 Thread John Wheeler

On 9/30/2021 1:17 AM, Jean Abou Samra wrote:

Le 30/09/2021 à 05:38, John Wheeler a écrit :


In jest I add: reading the code is a lot of fun, but I miss the 
programmer's guide to the lilypond language and it's libraries.


Do you think there is enough interest in programming in lilypond in 
the community to create one? Maybe even just a complete introduction 
to the concepts and program flow with pointers to the rest of the 
documentation for the details?


I am motivated to offer my help.


I did write this thing a while ago:

https://extending-lilypond.readthedocs.io/

Hope that helps,
Jean


Wonderful! Thank you for sharing it. Your work is at the top of my 
reading list.


John




Re: Scheme performers/translators

2021-09-30 Thread David Kastrup
Han-Wen Nienhuys  writes:

> On Thu, Sep 30, 2021 at 12:24 AM David Kastrup  wrote:
>>
>> Well, this is not as much supporting the MIDI layer as it is
>> employing the translator level for messing with music during
>> iteration.  It's sort of annoying that it doesn't work by default.
>
> It doesn't work by default because we never bothered to invest time in
> improving it.

You are changing the topic.  It's sort of annoying that employing the
translator level for messing with music during iteration doesn't work by
default since all that is required for that is not deleting the already
instantiated translator from the respective lists.

> It's not obvious to me that a principled approach to MIDI rendering
> would use a broadcast/acknowledge type architecture like the
> typography part does.

Not relevant at all to this patch.

-- 
David Kastrup



Re: Shortcut for \repeat unfold

2021-09-30 Thread David Kastrup
Dan Eble  writes:

>> On Sep 24, 2021, at 19:32, Jean Abou Samra  wrote:
>> 
>> - "\rep n music", not as self-telling (and I think Lukas
>>   only calls his shortcut \rep because redefining \repeat
>>   is not syntactically valid);
>
> What about killing two birds with two stones?
>
> 1. convert-ly \times A/B into \tuplet B/A

We do that already in the 2.17.11 conversion rule.  It remains mainly
for backward compatibility.  I think I remember that some people liked
it for some purpose, however.  Uses the same convention as
\scaleDurations or so.

> 2. times = \repeat unfold \etc

When I was just occasionally using LilyPond, at some time when \tuplet
did not exist, I tended to be fuzzy about \time, \times, \tempo .  I am
familiar enough these days that this is a mere anecdotal data point: I
have no idea how it would affect newcomers.

-- 
David Kastrup



Better method for inputting alists?

2021-09-30 Thread Aaron Hill
LilyPond makes it easy to define a top-level alist and extend it with 
new keys:



\version "2.22.0"

foo.one = 1
foo.two = "2"
foo.nested.red = 3,4
foo.nested.blue = ##t

\void \displayScheme \foo.nested.red


This pattern works well enough.  However, especially when nested more 
deeply, it does result in redundant and error-prone typing as each new 
entry must specify the full path of keys.


Borrowing syntax for context mods, one can get an improved approach:


\version "2.22.0"

alist =
#(define-scheme-function (with) (ly:context-mod?)
  (define (assign? mod) (eq? 'assign (car mod)))
  (define (assign->pair mod) (cons (cadr mod) (caddr mod)))
  (map assign->pair (filter assign? (ly:get-context-mods with

foo = \alist \with {
  one = 1
  two = "2"
  nested = \alist \with {
red = 3,4
blue = ##t
  }
}

\void \displayScheme \foo.nested.red


The above technique admittedly abuses the \with construct, so would it 
make sense for the parser to support alists directly?  Not sure what the 
syntax should be; but here's a possibility prepending a colon to the 
brace:



foo = :{ one = 1 two = "2" nested = :{ red = 3,4 blue = ##t } }


Functions could take advantage of such abbreviated syntax to support 
named arguments without having to resort to the same \with hack.  The 
\override markup command in particular would become nicer-looking:



\markup \override :{ offset = 15 thickness = 3 } \undertie "lorem ipsum"



-- Aaron Hill



PATCHES - Countdown for September 30th

2021-09-30 Thread James

Hello,

Here is the current patch countdown list. The next countdown will be on
October 2nd.

***
A list of all merge requests can be found here:
https://gitlab.com/lilypond/lilypond/-/merge_requests?sort=label_priority


 Push:

!931 ci: Define tag to use custom runners - Jonas Hahnfeld
https://gitlab.com/lilypond/lilypond/-/merge_requests/931

!927 Clean up Drul_array initialization and assignment - Dan Eble
https://gitlab.com/lilypond/lilypond/-/merge_requests/927


 Countdown:

!935 Make -dcrop generate .cropped.xxx files again - Jean Abou Samra
https://gitlab.com/lilypond/lilypond/-/merge_requests/935

!934 Support tail \alternative inside \repeat { } - Dan Eble
https://gitlab.com/lilypond/lilypond/-/merge_requests/934

!932 Allow partial \repeat commands without \alternative - David Kastrup
https://gitlab.com/lilypond/lilypond/-/merge_requests/932

!930 fix \book pagesize regression in lilypond-book - Han-Wen Nienhuys
https://gitlab.com/lilypond/lilypond/-/merge_requests/930

!929 lilypond-book: New options `paper-width` and `paper-height` - 
Werner Lemberg

https://gitlab.com/lilypond/lilypond/-/merge_requests/929

!921 Draft: Add \lyricSkip and \lyricSkips $n. - Lukas-Fabian Moser
https://gitlab.com/lilypond/lilypond/-/merge_requests/921


 Review:

!939 Allow creating Scheme translators working in `\midi` - David Kastrup
https://gitlab.com/lilypond/lilypond/-/merge_requests/939

!938 DocBook: output the raw LilyPond code at the right place - Thibaut 
Cuvelier

https://gitlab.com/lilypond/lilypond/-/merge_requests/938

!937 Draft: \repeat unfold  shorthand - Dan Eble
https://gitlab.com/lilypond/lilypond/-/merge_requests/937

!936 DocBook: support tag attributes with a single quote - Thibaut Cuvelier
https://gitlab.com/lilypond/lilypond/-/merge_requests/936

!933 Introduce the \after command - Lukas-Fabian Moser
https://gitlab.com/lilypond/lilypond/-/merge_requests/933

!897 support cairo backend in lilypond-book - Han-Wen Nienhuys
https://gitlab.com/lilypond/lilypond/-/merge_requests/897


 New:

!920 Robustness fix for ly:engraver-announce-end-grob - Han-Wen Nienhuys
https://gitlab.com/lilypond/lilypond/-/merge_requests/920


 Waiting:

!913 release: binaries with cairo - Han-Wen Nienhuys
https://gitlab.com/lilypond/lilypond/-/merge_requests/913

--
Regards

James



OpenPGP_0xAAC8D177A7F5A364.asc
Description: OpenPGP public key


Re: recognizing "pedal" in musicxml harmony, along with modifying Ignatzek exceptions

2021-09-30 Thread James

Hello Leonard,

On 29/09/2021 21:56, leonardlthomp...@gmail.com wrote:

Hello!

Many of us who use chord symbols in our scores find value in having 'pedal'
as a chord symbol type, which is simply a single unison pitch given by the
chord's root. Both Finale and Musescore successfully export 'pedal'  as a
 data type of a  element in musicxml files.

The chordkind_dict variable in the musicxml2ly in my Lilypond installation
file has the 'pedal' entry commented out, which I modified to what the
commented out line basically hints at:
'pedal': ':1'
That modification, along with modifying  ignatzekExceptionMusic in the
chord-modifiers-init file to include
-\markup \super {Pedal} has given me added functionally in both
recognizing a 'pedal' chord type when importing musicxml , and in having
'pedal' available in the Chordnames context. Would anyone see value in
having this reflected in the main repository?
best,
Leonard


Thanks for the input. We always appreciate this.

I have no experience to be able to add to this discussion, but you might 
get more (better) initial feed back from the developer list and/or even 
the 'user' list than the bug list.


That is not to say you would never get a reply but that not everyone in 
our dev team looks at the bug list. I'll cc the dev list anyway in case 
you are on that too.


--
Regards

James




Re: Scheme performers/translators

2021-09-30 Thread Han-Wen Nienhuys
On Thu, Sep 30, 2021 at 12:24 AM David Kastrup  wrote:
>
> Aaron Hill  writes:
>
> > On 2021-09-29 12:39 pm, David Kastrup wrote:
> >> The question is whether we should do something like this as default,
> >> possibly conditioned on whether any acknowledgers are present?  Because
> >> even if we cannot react to Midi data structures (since they are not
> >> Scheme-accessible for now), sometimes a translator may be enough to do
> >> the trick.
> >
> > You say "for now" above, so is allowing Scheme to interact directly
> > with the MIDI stream something that is planned?
>
> I have no idea what you call "planned".  It is a deficiency that one
> cannot use LilyPond in anything but a hardwired manner for creating
> Midi.  That does not mean that I know this to be in anybody's personal
> work queue.  At the current point of time, the Midi data structures are
> not even in the Scheme memory management.  I think most of them just
> stick around without ever getting deleted.

Audio elements get deleted in Performance::~Performance, and I'd be
surprised if the MIDI stuff gets leaked. MIDI didn't show up the
memory leak hunt Jonas and I did about 9 months ago. File a bug if you
can repro a leak?

> > Between what you have just shown and the work that already occurs in
> > articulate.ly, it seems a lot of practical manipulation is possible
> > without going down to the MIDI layer.  So, your little patch to enable
> > wider use of Scheme translators seems quite useful.  At the very
> > least, the more folks build on this and start playing around with the
> > music, the more we would understand what a potential full Scheme
> > performer support would entail.
>
> Well, this is not as much supporting the MIDI layer as it is employing
> the translator level for messing with music during iteration.  It's sort
> of annoying that it doesn't work by default.

It doesn't work by default because we never bothered to invest time in
improving it. It's not obvious to me that a principled approach to
MIDI rendering would use a broadcast/acknowledge type architecture
like the typography part does.

-- 
Han-Wen Nienhuys - hanw...@gmail.com - http://www.xs4all.nl/~hanwen



Re: Why doesn't the build fail for anybody else, including the bots?

2021-09-30 Thread Jonas Hahnfeld via Discussions on LilyPond development
Am Donnerstag, dem 30.09.2021 um 00:25 +0200 schrieb David Kastrup:
> Jean Abou Samra  writes:
> > > 
> > > Why does nobody else get this?
> > 
> > Possibly you are missing a "make doc-clean" as with
> > https://lists.gnu.org/archive/html/bug-lilypond/2021-09/msg00024.html?
> 
> make doc-clean does not affect the info file generation that make all
> does.

So, obviously you need "make -C Documentation clean" to affect the info
file generation.

> Our dependencies are nothing short of annoying.  If one can only
> reliably build after make *-clean there is no point in using Make.

Improvements welcome, I would say. The auto-generated stuff is a mess,
and it has always been at least for the last two years that I'm
contributing to LilyPond.


signature.asc
Description: This is a digitally signed message part


Re: Question on commit c478396f Move all doc building logic to Documentation/GNUmakefile

2021-09-30 Thread Jean Abou Samra

Le 30/09/2021 à 05:38, John Wheeler a écrit :


In jest I add: reading the code is a lot of fun, but I miss the 
programmer's guide to the lilypond language and it's libraries.


Do you think there is enough interest in programming in lilypond in 
the community to create one? Maybe even just a complete introduction 
to the concepts and program flow with pointers to the rest of the 
documentation for the details?


I am motivated to offer my help.


I did write this thing a while ago:

https://extending-lilypond.readthedocs.io/

Hope that helps,
Jean



Re: Why doesn't the build fail for anybody else, including the bots?

2021-09-30 Thread Werner LEMBERG


> Our dependencies are nothing short of annoying.  If one can only
> reliably build after make *-clean there is no point in using Make.

+1

In case it is too complicated to get complete dependencies (I think
this was the argument then when it was simplified by Han-Wen) maybe we
can get a new target

  make generated-files

that takes care of those files that are not handled in a standard
`make all` or `make doc` call.


Werner