Re: Metronome mark not aligning correctly
Le 05/11/2021 à 23:09, David Kastrup a écrit : I think one change should be that cross-staff needs to be more than a flag. It rather needs to be a pair of staves identified in some manner where distancing of any staff pairs in that interval will not involve the cross-staff material, but it otherwise will contribute to the outlines and dimensions, and particularly to the distancing from staves outside of the cross-staffed interval. I know you've been desiring that one for long. Now that I see a bit better how the backend works, I no longer think it is feasible. At the very least, it requires far more extensive changes than the ones I was thinking about. Because page spacing is determined by _global_ optimization on a problem of springs and rods. The problem spans the whole page. For distancing staves outside of the cross-staff interval, you need to compute rods, which require skylines or at least extents, which lead to wondering what the grob looks like, which in turns requires knowledge of page spacing that couldn't happen yet. What I believe would be feasible is reusing the pure estimates in that story. They are already independent of page spacing by definition. Since the line breaking information is available by the time we are talking about, the estimates for the chosen [start, end] range should not be off by too much. [Kieren] Cross-staff notes is one of my primary use cases for the whole “pushing grobs between contexts”: cross-staff notes should ultimately just be grobs pushed from one staff context to another, with the requirement [which not*all* “pushed” grobs would share] that they might be connected to the original context by stems, beams, etc. In that case, consider rethinking the approach in the other thread with broadcasting events on the listeners of a different context. I may be wrong, but I don't see that this can easily be made to typeset cross-staff, particularly when considering other grobs that should move along. Take what we currently write as \version "2.22.1" \new PianoStaff \with { \consists Span_stem_engraver } << \new Staff { c'^\p } \new Staff \crossStaff { \clef bass c } >> In an ideal world of 'pushing' grobs, that would be written as something like ^\p but the \p should also be pushed or something should be done about it because of its direction. In more complex cases, I have trouble seeing how you could determine where to send the grob based on the sole event before it has been broadcast anywhere -- which is early in a timestep. Anyway, it's all gut feelings and I don't claim to hold a truth here. But it's worth noting that the part combiner, which is implemented through dispatching between contexts, is in a pitifully buggy state. Intuitively, I tend to believe that an approach based on actually pushing grobs rather than events would be more effective. That would also have the direct advantage of allowing to push the likes of bar numbers that don't have a cause in events. Regards, Jean
Re: Metronome mark not aligning correctly
Hi Jean, > In an ideal world of 'pushing' grobs, that would > be written as something like > ^\p YES!!! > but the \p should also be pushed or something > should be done about it because of its direction. For sure, there are potential complications… > it's worth noting that the part combiner, > which is implemented through dispatching between contexts, > is in a pitifully buggy state. This is the other “big fix” that I’m interested in contributing to going forward. =) I know some good developers (Dan, perhaps?) have improved it recently… but as you point out, it’s in a pitifully buggy state (half the time, I just rewrite combined parts manually!). And it’s useless for potentially really powerful applications — e.g. the piano reduction of a four-part choral work, three-part brass reductions, etc. — because it only accepts two voices. Not to mention its issues with \tuplet, \relative, quotes, etc. Is there some gain to be had by considering the three related concepts — “context pushing”, cross-staff items, and part-combining — together, to see where a single mechanism might help all three? Put another (OOP-ish) way: Are cross-staffing and part-combining instances of a context-pushing class? > Intuitively, I tend to believe that > an approach based on actually pushing grobs rather > than events would be more effective. That would > also have the direct advantage of allowing to > push the likes of bar numbers that don't have > a cause in events. That was my [totally naïve] instinct, too (cf. https://lists.gnu.org/archive/html/lilypond-user/2021-10/msg00436.html). I look forward to seeing where this discussion leads! Thanks, Kieren. Kieren MacMillan, composer (he/him/his) ‣ website: www.kierenmacmillan.info ‣ email: kie...@kierenmacmillan.info
Re: LilyPond website is not available in some countries
I' m using Brave. Version 1.31.88 Chromium: 95.0.4638.69 (Official Build) (64-bit) I enter https://lilypond.org/doc/v2.20/ and am redirected to https://lilypond.org/doc/v2.20/Documentation/web/index.html So far, so good. https: redirects to https: I click Manuals and again, am taken to https://lilypond.org/doc/v2.20/Documentation/web/manuals . Still good. I click Learning Manual. Still good. https remains. I am now at https://lilypond.org/doc/v2.20/Documentation/learning/index#top I click the search bar at the bottom of the green sidebar table of contents... And get a pop-up in red text: > "This form is not secure. Autofill has been turned off." I continue anyway. Aaaand. https has gone away, And v2.20 is now v2.19. I am now at: http://google.com/search?btnG=Google+Search&brute_query=beats&q=site%3Alilypond.org%2Fdoc%2Fv2.19+beats > "The information you’re about to submit is not secure" > "Because this form is being submitted using a connection that’s not secure," > "your information will be visible to others." I can (and do) click the "Send anyway" and get to what I want. However, the fact remains that the search submission is clearly not playing by the same rules as the rest of the links. Folks can blame the browser (or the user) but the behavior remains unexpected. and again, not something I encounter on any other site.
Re: LilyPond website is not available in some countries
> Am 06.11.2021 um 15:06 schrieb Kevin Cole : > > I click Learning Manual. Still good. https remains. I am now at > https://lilypond.org/doc/v2.20/Documentation/learning/index#top > > I click the search bar at the bottom of the green sidebar table of > contents... And get a pop-up in red text: > >> "This form is not secure. Autofill has been turned off." > > I continue anyway. Aaaand. https has gone away, And v2.20 is now > v2.19. I am now at: The search form of 2.20 points to 2.19; it has nothing to do with your browser. Hraban
Re: LilyPond website is not available in some countries
On 06/11/2021 14:06, Kevin Cole wrote: I click Learning Manual. Still good. https remains. I am now at https://lilypond.org/doc/v2.20/Documentation/learning/index#top I click the search bar at the bottom of the green sidebar table of contents... And get a pop-up in red text: "This form is not secure. Autofill has been turned off." I continue anyway. Aaaand. https has gone away, And v2.20 is now v2.19. I am now at: http://google.com/search?btnG=Google+Search&brute_query=beats&q=site%3Alilypond.org%2Fdoc%2Fv2.19+beats "The information you’re about to submit is not secure" "Because this form is being submitted using a connection that’s not secure," "your information will be visible to others." I can (and do) click the "Send anyway" and get to what I want. However, the fact remains that the search submission is clearly not playing by the same rules as the rest of the links. Folks can blame the browser (or the user) but the behavior remains unexpected. and again, not something I encounter on any other site. If you were to upgrade to the latest stable release, instead of using one about 18 months old, you would find the search bar works correctly and points to the https page. The pages for 2.20 are clearly wrong in pointing at 2.19, but I would not have expected them to point to the https pages because of their age. -- Phil Holmes
Re: Metronome mark not aligning correctly
Le 06/11/2021 à 14:47, Kieren MacMillan a écrit : [...] Is there some gain to be had by considering the three related concepts — “context pushing”, cross-staff items, and part-combining — together, to see where a single mechanism might help all three? Put another (OOP-ish) way: Are cross-staffing and part-combining instances of a context-pushing class? Almost, but not quite. Having separate contexts is inflexible because you cannot link them in other ways, e.g., you cannot have a slur crossing two Voices. While this is hampering the part combiner, I am not sure "pushing to contexts" will help in that case: the problem is really "merging" stuff (like making one note column for notes from the two or, let's hope, n parts). The vague idea I had in mind was the capability of stopping and starting engravers midway in the course of the lifetime of a context. An a due passage would be handled by stopping the Stem_engravers, etc. in Voice and starting one in a higher context encompassing the two or n Voices. That may in turn help for cross-staff, but that other problem also requires more thought with respect to the context hierarchy (contexts with several parents? what can we invent?). That was my [totally naïve] instinct, too (cf. https://lists.gnu.org/archive/html/lilypond-user/2021-10/msg00436.html). I look forward to seeing where this discussion leads! By all means help if you can, but don't hold your breathe for it. All of what I say here remains totally sketchy and handwaving for the time being, and may turn out to be entirely ill-advised or irrelevant. I'll be happy if people start experimenting. The energy that I can personally dedicate to LilyPond is currently absorbed by trying to understand purity and to refactor unpure/pure containers, so I won't be working on this domain anytime soon. Best, Jean
Re: Repeat bar
No more needed. Thanks. ‐‐‐ Original Message ‐‐‐ Il venerdì 5 novembre 2021 20:25, Thomas Morley ha scritto: > Am Fr., 5. Nov. 2021 um 09:50 Uhr schrieb Mahanidhi > : > >> Hello, >> I'm triyng to have the second line open at the end as the first. But with >> repeats bar at the third line the second line get a bar and if I try to >> overrite with \once \hide Staff.BarLine also the bar at the third line >> disappears. What's the correct way to do it? >> Thank you.[sample.png] >> >> minimal code: >> >> melody = \relative c' { >> >> \key df \major >> >> \adjust-tempo \tempo "Slow" 4 = 56 >> >> \adjust-form >> >> df ef f2 ef4 f gf2 f4 gf af2 gf4 c bf af gf2. \bar "|"\break >> >> f4 bf2 af4 gf2 f4 ef gf f2.\show-barline \bar ":|."df4 c8 df ef2 ef4 gf2 gf4 >> g2. \bar "|"\break >> >> \show-barline \bar "|:"ef4 bf'2 bf4 af2 af4 df2 df4 df c ef df2. >> \show-barline \bar ":|."\break > > Iiuc, a minimal would look like: > > %% start minimal > \version "2.22.1" > > %% How to erase Barline at end of first, but keep the opening repeat-BarLine > at begin of second line? > { s1 \break \bar ".|:" s } > > %% end minimal > > If that's indeed the problem, several approaches to solve are possible. > > (1) Erase the "|"-BarLine at line-end: > > { > s1 > \once \override Score.BarLine.break-visibility = ##(#f #t #t) > \break > \bar ".|:" > s > } > > (2) Define and use a different bar-type, not printing the "|" in question > > \defineBarLine ".|:-zero" #'("" ".|:" ".|") > { s1 \break \bar ".|:-zero" s } > > In general: > (1) Cross-posting to different sites without mentioning makes no sense, apart > from lowering my motivation to answer > (2) I'd use \repeat volta ... not manual repeat-Barlines. > (3) Is there any reason not to use \cadenzaOn ? > > Cheers, > Harm
Re: Markup functions and punctuation in lyrics
I’ve done some work to clean up my code and also modified the interface to be fairly intuitive and non-intrusive. Hopefully I’ll have some time this week to integrate this into my project, but if anyone sees anything that could be improved, I’d love to hear about it. ✝✝ Fr. Samuel, OSB (R. Padraic Springuel) St. Anselm’s Abbey 4501 South Dakota Ave, NE Washington, DC, 20017 202-269-2300 (c) 202-853-7036 PAX ☧ ΧΡΙΣΤΟΣ gender-test.ly Description: Binary data
Re: Manipulating instrument names and staff group names
Hello all, > Now if what you want is really coding, there are > heaps of open issues waiting for you. Here are a > few that I believe (NB no warranty) would be feasible > for a power user with some minimal understanding of > Scheme: > https://gitlab.com/lilypond/lilypond/-/issues/794 > https://gitlab.com/lilypond/lilypond/-/issues/686 > https://gitlab.com/lilypond/lilypond/-/issues/1034 > https://gitlab.com/lilypond/lilypond/-/issues/1949 > https://gitlab.com/lilypond/lilypond/-/issues/1860 > https://gitlab.com/lilypond/lilypond/-/issues/2893 > https://gitlab.com/lilypond/lilypond/-/issues/3901 > https://gitlab.com/lilypond/lilypond/-/issues/5189 > https://gitlab.com/lilypond/lilypond/-/issues/6034 > https://gitlab.com/lilypond/lilypond/-/issues/4320 > https://gitlab.com/lilypond/lilypond/-/issues/4079 Thanks for this list! 1. Just to confirm: I will not need to touch any C++ code in order to fix these issues? 2. Is there a tag/label on GitLab which identifies all and only those issues which don’t (or at least shouldn’t likely) require any C++ work? Thanks, Kieren. Kieren MacMillan, composer (he/him/his) ‣ website: www.kierenmacmillan.info ‣ email: kie...@kierenmacmillan.info
Re: Manipulating instrument names and staff group names
Le 06/11/2021 à 20:58, Kieren MacMillan a écrit : Hello all, Now if what you want is really coding, there are heaps of open issues waiting for you. Here are a few that I believe (NB no warranty) would be feasible for a power user with some minimal understanding of Scheme: https://gitlab.com/lilypond/lilypond/-/issues/794 https://gitlab.com/lilypond/lilypond/-/issues/686 https://gitlab.com/lilypond/lilypond/-/issues/1034 https://gitlab.com/lilypond/lilypond/-/issues/1949 https://gitlab.com/lilypond/lilypond/-/issues/1860 https://gitlab.com/lilypond/lilypond/-/issues/2893 https://gitlab.com/lilypond/lilypond/-/issues/3901 https://gitlab.com/lilypond/lilypond/-/issues/5189 https://gitlab.com/lilypond/lilypond/-/issues/6034 https://gitlab.com/lilypond/lilypond/-/issues/4320 https://gitlab.com/lilypond/lilypond/-/issues/4079 Thanks for this list! 1. Just to confirm: I will not need to touch any C++ code in order to fix these issues? Whoops, ahem, no. The following should be doable with Scheme only: https://gitlab.com/lilypond/lilypond/-/issues/686 https://gitlab.com/lilypond/lilypond/-/issues/1034 https://gitlab.com/lilypond/lilypond/-/issues/1949 https://gitlab.com/lilypond/lilypond/-/issues/1860 https://gitlab.com/lilypond/lilypond/-/issues/2893 https://gitlab.com/lilypond/lilypond/-/issues/4320 (I tend to forget about this because I basically learnt C++ while reading LilyPond source code. That is to say, it's not so hard and, unlike Scheme, can be done by trying and failing and guessing if you have some experience with other imperative languages.) Among these, #1949 is an easy start, while #1034 would be borderline between easy and medium (I think). 2. Is there a tag/label on GitLab which identifies all and only those issues which don’t (or at least shouldn’t likely) require any C++ work? There isn't. We had Frog in the past (good for beginners, not language-specific), but it was practically unused and the issues tagged were not actually so easy. Feel free to propose something on the devel list though. Best, Jean
Re: Manipulating instrument names and staff group names
Hi Kieren, Am 06.11.21 um 20:58 schrieb Kieren MacMillan: Hello all, Now if what you want is really coding, there are heaps of open issues waiting for you. Here are a few that I believe (NB no warranty) would be feasible for a power user with some minimal understanding of Scheme: https://gitlab.com/lilypond/lilypond/-/issues/794 https://gitlab.com/lilypond/lilypond/-/issues/686 https://gitlab.com/lilypond/lilypond/-/issues/1034 https://gitlab.com/lilypond/lilypond/-/issues/1949 https://gitlab.com/lilypond/lilypond/-/issues/1860 https://gitlab.com/lilypond/lilypond/-/issues/2893 https://gitlab.com/lilypond/lilypond/-/issues/3901 https://gitlab.com/lilypond/lilypond/-/issues/5189 https://gitlab.com/lilypond/lilypond/-/issues/6034 https://gitlab.com/lilypond/lilypond/-/issues/4320 https://gitlab.com/lilypond/lilypond/-/issues/4079 Thanks for this list! 1. Just to confirm: I will not need to touch any C++ code in order to fix these issues? I think that's too optimistic. For example in #794, ly:arpeggio::print gets blamed. Functions starting with "ly:" are usually written in C++, and it is indeed (lily/arpeggio.cc). But of course it might very well be possible to rewrite a function like this in Scheme. Lots of print routines are. #686 certainly involves a bit of C++ programming (the command line is evaluated in C++). #1034 seems safe, there's no actual "programming" involved, as far as I can see. #1949 should be Scheme only. ... and now Jean's message arrives, making it unnecessary for me to look further :-). Lukas
Re: Manipulating instrument names and staff group names
Hi, I think that's too optimistic. That's the gist; just some tiny corrections to make sure Kieren knows what he will work on: #686 certainly involves a bit of C++ programming (the command line is evaluated in C++). Not necessarily, options passed with -d and never used in C++ are handled only in Scheme, in lily.scm. #1034 seems safe, there's no actual "programming" involved, as far as I can see. The NR appendix is autogenerated, so you'd need to add a new optional keyword argument to define-music-function like #:category for markup commands, and let the script understand that (scm/document-identifiers.scm). Cheers, Jean
Tweaking an ottava bracket after a break
Hello again, I have a situation where I need to adjust the padding of an ottava bracket after a line break. That is, I want to affect the bracket on the second line, but not the first. I know you can do something like this with the \shape function, but what about brackets? I tried this solution -- blatantly stolen from the Difficult Tweaking section in the manual -- but it doesn't work. %%% \version "2.22.1" #(define (my-callback grob) (let* ( ;; have we been split? (orig (ly:grob-original grob)) ;; if yes, get the split pieces (our siblings) (siblings (if (ly:grob? orig) (ly:spanner-broken-into orig) '( (if (and (>= (length siblings) 2) (eq? (car (last-pair siblings)) grob)) (ly:grob-set-property! grob 'padding 4 \relative { \override OttavaBracket.after-line-breaking = #my-callback \ottava 1 c1 \break c2 2 } %%% Anything easier than this? Some other solution? -- Knute Snortum
Re: Tweaking an ottava bracket after a break
Hi Knute, > I have a situation where I need to adjust the padding of an ottava > bracket after a line break. That is, I want to affect the bracket on > the second line, but not the first. Does \afterBreak not work with OttavaBracket.padding? \relative { \alterBroken #'padding #'(1 7) Staff.OttavaBracket \ottava 1 c1 \break c2 2 } Hope that helps! Kieren. Kieren MacMillan, composer (he/him/his) ‣ website: www.kierenmacmillan.info ‣ email: kie...@kierenmacmillan.info
Re: Tweaking an ottava bracket after a break
p.s. > Does \afterBreak not work with OttavaBracket.padding? um… \alterBroken (as in the snippet). Sorry! — K > \relative { > \alterBroken #'padding #'(1 7) Staff.OttavaBracket > \ottava 1 c1 \break > c2 2 > }
Re: Tweaking an ottava bracket after a break
Le 06/11/2021 à 22:01, Knute Snortum a écrit : Hello again, I have a situation where I need to adjust the padding of an ottava bracket after a line break. That is, I want to affect the bracket on the second line, but not the first. I know you can do something like this with the \shape function, but what about brackets? I tried this solution -- blatantly stolen from the Difficult Tweaking section in the manual -- but it doesn't work. %%% \version "2.22.1" #(define (my-callback grob) (let* ( ;; have we been split? (orig (ly:grob-original grob)) ;; if yes, get the split pieces (our siblings) (siblings (if (ly:grob? orig) (ly:spanner-broken-into orig) '( (if (and (>= (length siblings) 2) (eq? (car (last-pair siblings)) grob)) (ly:grob-set-property! grob 'padding 4 \relative { \override OttavaBracket.after-line-breaking = #my-callback \ottava 1 c1 \break c2 2 } %%% Anything easier than this? Some other solution? It should be Staff.OttavaBracket because the Ottava_spanner_engraver is in Staff context (http://lilypond.org/doc/v2.22/Documentation/internals/ottava_005fspanner_005fengraver). As Kieren showed, this is much easier done using \alterBroken. The documentation was outdated, see https://gitlab.com/lilypond/lilypond/-/merge_requests/991 Best, Jean
Re: Tweaking an ottava bracket after a break
\relative { \alterBroken #'padding #'(1 7) Staff.OttavaBracket \ottava 1 c1 \break c2 2 } I continue my lonely crusade against the hash-tick-combinations that I found so daunting when I learned LilyPond and which are needed much less often today: \relative { \alterBroken padding #'(1 7) Staff.OttavaBracket \ottava 1 c1 \break c2 2 } Lukas
Re: Tweaking an ottava bracket after a break
On 2021-11-06 2:23 pm, Lukas-Fabian Moser wrote: \relative { \alterBroken #'padding #'(1 7) Staff.OttavaBracket \ottava 1 c1 \break c2 2 } I continue my lonely crusade against the hash-tick-combinations that I found so daunting when I learned LilyPond and which are needed much less often today: \relative { \alterBroken padding #'(1 7) Staff.OttavaBracket \ottava 1 c1 \break c2 2 } Since #'(1 7) is a list of numbers, you could write it this way: \relative { \alterBroken padding 1,7 Staff.OttavaBracket \ottava 1 c1 \break c2 2 } -- Aaron Hill
Re: Tweaking an ottava bracket after a break
Since #'(1 7) is a list of numbers, you could write it this way: \relative { \alterBroken padding 1,7 Staff.OttavaBracket \ottava 1 c1 \break c2 2 } Right, thanks! I had a feeling there was a way to do this using dak's syntax enhancements but couldn't remember what it was... But it seems to work only for integer numbers, if I'm not mistaken? Lukas
Re: Tweaking an ottava bracket after a break
On 2021-11-06 2:45 pm, Lukas-Fabian Moser wrote: Since #'(1 7) is a list of numbers, you could write it this way: \relative { \alterBroken padding 1,7 Staff.OttavaBracket \ottava 1 c1 \break c2 2 } Right, thanks! I had a feeling there was a way to do this using dak's syntax enhancements but couldn't remember what it was... But it seems to work only for integer numbers, if I'm not mistaken? I believe that's correct... specifically, I think it's a key-list? which supports non-negative integers and symbols. foo = #(define-scheme-function (arg) (key-list?) (format #f "arg=~s" arg)) \markup $#{ \foo 1,2,3 #} \markup $#{ \foo one.two.three #} \markup $#{ \foo abc.123,xyz #} -- Aaron Hill
Re: Tweaking an ottava bracket after a break
Hi Lukas, > I continue my lonely crusade against the hash-tick-combinations I generally remove them — I’m on the crusade with you! — tho’ on this “fast-cut-and-paste job”, I didn’t. =( That being said, there are certain circumstances in which I prefer keeping the hashes, as they (IMO) help readability of the code. Best, Kieren. Kieren MacMillan, composer (he/him/his) ‣ website: www.kierenmacmillan.info ‣ email: kie...@kierenmacmillan.info
Re: arranger, context voice
Le 2021-11-01 18:26, Stefan Thomas a écrit : Dear community, I would like to do with arranger.ly something similar to Key = { \key f \major } music = { \Key c'4 d' e' f'2.} artiA = { s2.( s) } music = { \context Voice << {\music} {\artiA } >> } I tried in in the following way, without success, unfortunately: \version "2.22.1" \include"arranger.ly" global = { \time 3/4 \tempo "Andante" s2.*4 } Key = { \key f \major } music = { \Key c'4 d' e' f'2.} artiA = { s2.( s) } instruments = #'(A B) #(init instruments) #(begin (rm 'A 1 (sim music artiA) ) ) \score { << \new Devnull \global \new GrandStaff << \new Staff \A \new Staff \B >> >> } Does someone have an idea how to do it? Thanks, Stefan Sorry to answer so late. Probably \new Staff \new Voice \A instead of \new Staff \A -- Gilles
Different values of max-systems-per-page on different pages
Hello, is it possible to set max-systems-per-page = X on the first page of the score and = Y on the remaining pages? thanks! P
Re: Different values of max-systems-per-page on different pages
Le 07/11/2021 à 00:07, Paolo Prete a écrit : is it possible to set max-systems-per-page = X on the first page of the score and = Y on the remaining pages? It isn't. The page breaker is not prepared to handle this currently. You should insert explicit breakpoints for the first page and define systems-per-page to the value applicable for the rest of the score. Regards, Jean
Re: Tweaking an ottava bracket after a break
On 11/6/21, 3:24 PM, "lilypond-user on behalf of Lukas-Fabian Moser" wrote: > \relative { >\alterBroken #'padding #'(1 7) Staff.OttavaBracket >\ottava 1 c1 \break > c2 2 > } I continue my lonely crusade against the hash-tick-combinations that I found so daunting when I learned LilyPond and which are needed much less often today: \relative { \alterBroken padding #'(1 7) Staff.OttavaBracket \ottava 1 c1 \break c2 2 } I love the idea that we can eliminate the hash-tick for padding. I don't think we should eliminate the hash-tick for the values. The documentation for \alterBroken says that values is a list (and that means a Guile list). #'(1 7) is a Guile list. 1,7 is not (although the parser turns it into one). It is straightforward to learn that #'(1 7) is a Guile list; it's not nearly so straightforward to understand all of the parsing magic that happens. If at any point in an input file, 1,7 will be interpreted as a list #'(1 7), and 1.5,10.3 will always be interpreted as #'(1.5 10.3), and 1, 7 will be interpreted the same as 1,7 I will withdraw my objection to this usage in documentation. Thanks, Carl