Re: markup for circular bowing
Hi Orm, More examples here: https://github.com/trevorbaca/baca/blob/main/baca/scm/baca-circle-bow-markups.ily HTH, Trevor. On Wed, Feb 14, 2024 at 4:59 AM Orm Finnendahl < orm.finnend...@selma.hfmdk-frankfurt.de> wrote: > Hi, > > I'd like to make a sign for circular bowing like in the attached > png. The example was done using an epsfile, but unfortunately that > doesn't export to svg, which I need. So it should be done using > lilypond's builtin markup commands (or scheme code). Can someone point > me to examples to do circular arcs with attached arrows (can also be > scheme code)? > > I couldn't find anything similar in the docs/internet. > > -- > Orm > -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca
Are hyphens no longer required to prefix postevent tweaks?
Hi, Are hyphens no longer required to prefix postevent tweaks? For years I've been writing a hyphen ... - \tweak color #red \startTextSpan ... to tweak text spanners but no hyphen ... 4 ... to tweak note heads. As of 2.25.6, the difference between the two forms of \tweak no longer appears necessary: globally replacing thousands of "- \tweak ..." with just "\tweak ..." now seems to work perfectly. This change is really great! Trying to divine (and then remember) which of dozens of grobs are postevents (versus events?) was a pain. And the effort now appears no longer necessary. Is the change intentional? I must have missed it in CHANGES, and the NR entry for \tweak <https://lilypond.org/doc/v2.25/Documentation/notation/the-tweak-command#index-_005ctweak-1> still shows ... \relative { c'-\tweak thickness #5 ( d e f) } % hyphen ... even though ... \relative { c' \tweak thickness #5 ( d e f) } % no hyphen ... works under 2.25.6. Thanks so much for this! Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca
Re: Tweak grobs with callback output?
On Wed, Jul 19, 2023 at 3:41 PM Jean Abou Samra wrote: > \tweak color #(if (equal? DOWN (ly:grob-property grob 'direction)) red > blue) > > You just forgot to wrap the expression in (lambda (grob) ...) . > Yes, that's it: %%% BEGIN %%% \version "2.25.3" \markup "Conditionally colors both tuplet brackets:" \markup \vspace #1 { \once \override TupletBracket.color = #(lambda (grob) (if (equal? DOWN (ly:grob-property grob 'direction)) red blue) ) \times 2/3 { \times 2/3 { c'4 c' c' } c'2 c'2 } } \markup "Conditionally colors only the inner tuplet bracket:" \markup \vspace #1 { \times 2/3 { \tweak color #(lambda (grob) (if (equal? DOWN (ly:grob-property grob 'direction)) red blue)) \times 2/3 { c'4 c' c' } c'2 c'2 } } %%% END %%% Thanks very much again, Jean. Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca
Tweak grobs with callback output?
Hi, Two examples appear below. The first works; it uses \override with a callback. The second doesn't work; it attempts to use \tweak with a callback: %%% BEGIN %%% \version "2.25.3" \markup "Conditionally colors both tuplet brackets:" \markup \vspace #1 { \once \override TupletBracket.color = #(lambda (grob) (if (equal? DOWN (ly:grob-property grob 'direction)) red blue) ) \times 2/3 { \times 2/3 { c'4 c' c' } c'2 c'2 } } \markup "How to conditionally color only the inner tuplet bracket?" \markup \vspace #1 { \times 2/3 { \tweak color #(if (equal? DOWN (ly:grob-property grob 'direction)) red blue) \times 2/3 { c'4 c' c' } c'2 c'2 } } %%% END %%% Is there a way to tweak grobs with callback output? Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca
Re: How to return markup conditionally?
On Wed, Jul 19, 2023 at 2:24 AM David Kastrup wrote: > Trevor Bača writes: > > > Hi, > > > > I'd like the left text of red text spanners to be set to "foo", and to > set > > the left text of all other text spanners to "bar". > > > > But I misunderstand how to return markup: > > > > %%% BEGIN %%% > > > > \version "2.25.3" > > > > % no left text set > > { > > \once \override TextSpanner.bound-details.left.text = > > #(lambda (grob) (if (equal? red (ly:grob-property grob 'color)) "foo" > > "bar")) > > c'1 > > - \tweak color #red > > \startTextSpan > > c'1 > > \stopTextSpan > > } > > > > % no left text set > > { > > \once \override TextSpanner.bound-details.left.text = > > #(lambda (grob) (if (equal? red (ly:grob-property grob 'color)) > > (markup "foo") > > (markup "bar"))) > > c'1 > > - \tweak color #red > > \startTextSpan > > c'1 > > \stopTextSpan > > } > > > > %%% END %%% > > > > What's the right way to return markup from a Scheme function? > > You are doing fine in that regard, but subproperties don't have callback > evaluation. > Ah, ok; thank you, David! So, the take-away here is: %%% BEGIN %%% % Works because TupletNumber.text is property (not a subproperty): { \once \override TupletNumber.text = #(lambda (grob) (if (equal? red (ly:grob-property grob 'color)) (markup "RED") (markup "NOT RED"))) \tweak color #red \times 2/3 { c'2 c' c' } } % Doesn't work because TextSpanner.bound-details.left.text is a subproperty: { \once \override TextSpanner.bound-details.left.text = #(lambda (grob) (if (equal? red (ly:grob-property grob 'color)) "foo" "bar")) c'1 - \tweak color #red \startTextSpan c'1 \stopTextSpan } %%% END %%% The problem I'm wanting to solve has to do with swapping a text spanner's right text for its right-broken text, conditionally based on the spanner's end position. The problem looks complicated, so I'll introduce it as a separate thread. Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca
How to return markup conditionally?
Hi, I'd like the left text of red text spanners to be set to "foo", and to set the left text of all other text spanners to "bar". But I misunderstand how to return markup: %%% BEGIN %%% \version "2.25.3" % no left text set { \once \override TextSpanner.bound-details.left.text = #(lambda (grob) (if (equal? red (ly:grob-property grob 'color)) "foo" "bar")) c'1 - \tweak color #red \startTextSpan c'1 \stopTextSpan } % no left text set { \once \override TextSpanner.bound-details.left.text = #(lambda (grob) (if (equal? red (ly:grob-property grob 'color)) (markup "foo") (markup "bar"))) c'1 - \tweak color #red \startTextSpan c'1 \stopTextSpan } %%% END %%% What's the right way to return markup from a Scheme function? Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca
Re: How to supply missing end-of-system bar line?
On Tue, Jul 18, 2023 at 6:30 PM Jean Abou Samra wrote: > Le mardi 18 juillet 2023 à 18:07 -0400, Trevor Bača a écrit : > > Is this intentional? And, if it is, is there a way to re-supply the > missing bar line? > > > > Yes, and yes. This is a frequent question, so I've wondered a couple times > if we should come up with a new command to recommend instead of \bar, but > it's not clear that the alternatives are better. > > https://gitlab.com/lilypond/lilypond/-/issues/6414 is related. > > In short, from LilyPond's point of view, the bar line at the end of the > previous system is the same bar line as the one at the start of the new > system. Which is not illogical, considering that they would be the same if > there were no line break. > > Consequently, the \bar command defines *both* bar lines. And if you look > at the list of bar lines at > https://lilypond.org/doc/v2.24/Documentation/notation/list-of-bar-lines , > you can see that \bar ".|:" has no drawing at end of line. \bar ".|:-|" > does. > Ah! I had no idea the inventory of bar line commands had come so far; thanks for the pointer to A.18. The point about LilyPond considering matching end-of-system / beginning-of-system as, in some ways, the same is interesting to note. What was behind my question was the want to tweak such end-of-system / beginning-of-system pairs independently. Happily, this appears to work perfectly: %%% BEGIN %%% % red bar line left of line break; blue bar line right of line break: { c'1 \bar ".|:-|" \break \once \override Score.BarLine.color = #(lambda (grob) (if (= LEFT (ly:item-break-dir grob)) red blue)) c'1 } %%% END %%% Thanks so much again, Jean. Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca
How to supply missing end-of-system bar line?
Hi, The bar line at the end of the first system below appears to be missing: %%% BEGIN %%% \version "2.25.3" \layout { indent = #0 ragged-right = ##t } { c'4 c'4 c'4 c'4 \bar ".|:" \break c'4 c'4 c'4 c'4 } %%% END %%% Is this intentional? And, if it is, is there a way to re-supply the missing bar line? Thanks, Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca
Re: How to test grob color?
On Tue, Jul 18, 2023 at 3:58 PM Jean Abou Samra wrote: > Hi Trevor, > > In Scheme, the = function is for comparing numbers, and nothing else. For > colors, you want equal? . > > > ~ $ guile2.2 > GNU Guile 2.2.7 > Copyright (C) 1995-2019 Free Software Foundation, Inc. > > Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'. > This program is free software, and you are welcome to redistribute it > under certain conditions; type `,show c' for details. > > Enter `,help' for help. > scheme@(guile-user)> (= 1 2) > $1 = #f > scheme@(guile-user)> (= 1 1) > $2 = #t > scheme@(guile-user)> (= 1 1.0) > $3 = #t > scheme@(guile-user)> (= 'a 'b) > :4:0: In procedure =: Wrong type argument in position 1: a > > Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue. > scheme@(guile-user) [1]> ,q > scheme@(guile-user)> (equal? 1 2) > $4 = #f > scheme@(guile-user)> (equal? 1 1) > $5 = #t > scheme@(guile-user)> (equal? 1 1.0) > $6 = #f > scheme@(guile-user)> (equal? 'a 'b) > $7 = #f > > Hi Jean, Thank you so much; exactly what I needed to know. Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca
How to test grob color?
Hi, This tests tuplet bracket thickness (and overrides color): %%% BEGIN (works) %%% { \once \override TupletBracket.color = #(lambda (grob) (if (= 3 (ly:grob-property grob 'thickness)) red)) \tweak thickness 3 \times 2/3 { c'2 c'2 c'2 } } %%% END %%% But how to test tuplet bracket color? %%% BEGIN %%% % Fails with wrong type argument in position 1: (1.0 0.0 0.0): { \once \override TupletBracket.thickness = #(lambda (grob) (if (= red (ly:grob-property grob 'color)) 3)) \tweak color #red \times 2/3 { c'2 c'2 c'2 } } % Fails with Wrong type argument in position 1: red: { \once \override TupletBracket.thickness = #(lambda (grob) (if (= red (ly:grob-property grob 'color)) 3)) \tweak color #red \times 2/3 { c'2 c'2 c'2 } } %%% END %%% Thanks for any ideas, Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca
Re: LilyPond 2.23.80
Hi, All of my scores compile under 2.13.80, and with no errors. Congratulations, and thanks for the chance to test the 2.24 release candidates. Trevor. On Sun, Oct 23, 2022 at 10:22 PM Jonas Hahnfeld via LilyPond user discussion wrote: > We are happy to announce the release of LilyPond 2.23.80. This is the > first release candidate towards the next stable version 2.24.0 expected > in December. Please test your scores with this version and report back > the experience as well as any problems you encounter. Please refer to > the Installing section in the Learning Manual for instructions how to > set up the provided binaries: > https://lilypond.org/doc/v2.23/Documentation/learning/installing > -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca
Re: LilyPond 2.23.7 released
Hi, 2.23.7 appears to introduce a bug in SVG output under macOS: %%% BEGIN %%% \version "2.23.7" \new Staff { \time 3/4 c'2. } %%% END %%% macOS 12.3.1 produces the following: $ lilypond --svg example.ly GNU LilyPond 2.23.7 (running Guile 2.2) Processing `example.ly' Parsing... Interpreting music... Preprocessing graphical objects... Finding the ideal number of pages... Fitting music on 1 page... Drawing systems...;;; note: source file /Users/trevor/lilypond-2.23.7/share/lilypond/2.23.7/scm/lily/output-svg.scm ;;; newer than compiled /Users/trevor/lilypond-2.23.7/lib/lilypond/2.23.7/ccache/lily/output-svg.go ice-9/eval.scm:351:13: Wrong number of arguments to # The resulting SVG (attached here) is headed by a bright red banner announcing an error. Strangely, the choice of time signature is important: the example above renders correctly in 4/4, even though the system-draw warning still appears. The error appears to come from line 423 of .../share/lilypond/2.23.7/scm/lily/output-svg.scm, at which embedded-glyph-string is defined. Note that the example above renders correctly with 2.23.6. Trevor. On Sat, Mar 26, 2022 at 10:36 PM Jonas Hahnfeld via Discussions on LilyPond development wrote: > We are happy to announce the release of LilyPond 2.23.7. This is termed > a development release, but these are usually reliable. If you want to > use the current stable version of LilyPond, we recommend using the > 2.22.2 version. > > Starting with this release, LilyPond requires Guile 2.2 and the > official binaries were created with the new infrastructure developed > over the past months. Issues reported for the previous release have > been addressed, in particular regarding performance (by integrating > compiled bytecode) and on Windows, where it is now possible to extract > the provided zip archive with the Windows Explorer and use special > characters in filenames. Please test this release and let us know about > problems that you encounter. > -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca
Re: Why does -dbackend=svg -dcrop remove system-system-spacing?
On Fri, Jan 8, 2021 at 6:02 PM David Wright wrote: > On Thu 07 Jan 2021 at 19:57:12 (-0500), Trevor Bača wrote: > > On Wed, Jan 6, 2021 at 2:29 PM David Wright wrote: > > > On Wed 06 Jan 2021 at 11:34:24 (-0500), Trevor Bača wrote: > > > > On Tue, Jan 5, 2021 at 11:31 PM David Wright wrote: > > > > > On Tue 05 Jan 2021 at 19:05:30 (-0500), Trevor Bača wrote: > > > > > > I love the functionality for cropped SVGs! (Added back in 2019, > or > > > > > > around then?) > > > > > > > > > > > > Question: it appears that cropped multisystem SVGs remove all > > > > > > whitespace between systems. Is this supposed to happen? > > > > > > > > > > I think that removing all the margins is the functionality "crop" > is > > > > > supposed to add to LP. To generate the equivalent cropped and > packed > > > > > image without this facility would be quite tedious to do (unless > > > > > someone has a trick for doing it?). > > > > > > > > > > > %%% BEGIN %%% > > > > > > […] > > > > > > %%% END %%% > > > > > > > > > > > > Called with ... > > > > > >lilypond -dbackend=svg -dcrop test.ly > > > > > > ... produces test.cropped.svg as attached here. > > > > > > > > > > > > Screenshot: > > > > > > […] > > > > > > > > > > > > Seems like cropping should be around the edges of the image > (rather > > > > > > than between systems)? > > > > > > > > > > If you just want to crop the whole page image, you can do that > easily > > > > > at the end of a normal run with the usual utilities. If you require > > > > > LP to set the entire score on a single page, just use a very long > > > > > custom page (as in NR §4.1.2: width, then length). > > > > > > > > I'm sorry; I don't understand. > > > > > > > > What I want Lily to do: remove whitespace from the *edges* of an SVG. > > > > > > As I said, you run LP as normal, and then trim to taste. So, taking > > > your example, I ran it with > > > $ lilypond-2.21.80-1.linux-64/bin/lilypond --svg -dno-point-and-click > > > Bača.ly > > > and then edited the first line of Bača.svg, resulting in > Bača-trimmed.svg. > > > The end of the first line is modified from > > > width="210.00mm" height="297.00mm" viewBox="0 0 119.5016 169.0094"> > > > to > > > width="192.00mm" height="297.00mm" viewBox="4.5 0 109.5016 169.0094"> > > > which I did by inspection. As you use SVG files in your workflow, > > > I assume you can carry this out more easily and precisely¹ with some > > > particular tool. (I'm PDF-centric myself.) I only considered X because > > > I was inspecting the file on a landscape screen (and you didn't remove > > > the tagline anyway). > > > > > > > What Lily actually does when -dcrop is set: removes whitespace from > the > > > > edges *and from between all systems* of an SVG. > > > > > > That's right, so that your file contains all the information, > > > unencumbered by margins, ready for some sort of further processing. > > > Obviously, I don't know what that will be in your case. > > > > > > It reminds me of those PNG files that you find in browsers' cache, > > > which have a strip or grid of little images that are used internally, > > > either as a toolbar, or displayed sequentially like a movie. > > > > > > > So my question is: is Lily supposed to remove whitespace from > *between* > > > > systems when -d[c]rop is set? > > > > > > AIUI yes. But this is policy: I await pronouncements from higher-ups. > > > > > > ¹ I believe the modifications need to be kept proportional, in order > > > to preserve the aspect ratio. > > > > I really appreciate the responses, but I'm even more confused than > before. > > > > When you ran ... > > > > $ lilypond-2.21.80-1.linux-64/bin/lilypond --svg -dno-point-and-click > Bača.ly > > > > ... why didn't you include the -dcrop option? > > [You need a fixed width font to make sense of text below.] > > What running my command on your source produces might be represented by: > > A ┌┐ >
Re: Why does -dbackend=svg -dcrop remove system-system-spacing?
On Wed, Jan 6, 2021 at 2:29 PM David Wright wrote: > On Wed 06 Jan 2021 at 11:34:24 (-0500), Trevor Bača wrote: > > On Tue, Jan 5, 2021 at 11:31 PM David Wright wrote: > > > On Tue 05 Jan 2021 at 19:05:30 (-0500), Trevor Bača wrote: > > > > I love the functionality for cropped SVGs! (Added back in 2019, or > around > > > > then?) > > > > > > > > Question: it appears that cropped multisystem SVGs remove all > whitespace > > > > between systems. Is this supposed to happen? > > > > > > I think that removing all the margins is the functionality "crop" is > > > supposed to add to LP. To generate the equivalent cropped and packed > > > image without this facility would be quite tedious to do (unless > > > someone has a trick for doing it?). > > > > > > > %%% BEGIN %%% > > > > […] > > > > %%% END %%% > > > > > > > > Called with ... > > > >lilypond -dbackend=svg -dcrop test.ly > > > > ... produces test.cropped.svg as attached here. > > > > > > > > Screenshot: > > > > […] > > > > > > > > Seems like cropping should be around the edges of the image (rather > than > > > > between systems)? > > > > > > If you just want to crop the whole page image, you can do that easily > > > at the end of a normal run with the usual utilities. If you require > > > LP to set the entire score on a single page, just use a very long > > > custom page (as in NR §4.1.2: width, then length). > > > > I'm sorry; I don't understand. > > > > What I want Lily to do: remove whitespace from the *edges* of an SVG. > > As I said, you run LP as normal, and then trim to taste. So, taking > your example, I ran it with > $ lilypond-2.21.80-1.linux-64/bin/lilypond --svg -dno-point-and-click > Bača.ly > and then edited the first line of Bača.svg, resulting in Bača-trimmed.svg. > The end of the first line is modified from > width="210.00mm" height="297.00mm" viewBox="0 0 119.5016 169.0094"> > to > width="192.00mm" height="297.00mm" viewBox="4.5 0 109.5016 169.0094"> > which I did by inspection. As you use SVG files in your workflow, > I assume you can carry this out more easily and precisely¹ with some > particular tool. (I'm PDF-centric myself.) I only considered X because > I was inspecting the file on a landscape screen (and you didn't remove > the tagline anyway). > > > What Lily actually does when -dcrop is set: removes whitespace from the > > edges *and from between all systems* of an SVG. > > That's right, so that your file contains all the information, > unencumbered by margins, ready for some sort of further processing. > Obviously, I don't know what that will be in your case. > > It reminds me of those PNG files that you find in browsers' cache, > which have a strip or grid of little images that are used internally, > either as a toolbar, or displayed sequentially like a movie. > > > So my question is: is Lily supposed to remove whitespace from *between* > > systems when -d[c]rop is set? > > AIUI yes. But this is policy: I await pronouncements from higher-ups. > > ¹ I believe the modifications need to be kept proportional, in order > to preserve the aspect ratio. > Hi David, I really appreciate the responses, but I'm even more confused than before. When you ran ... $ lilypond-2.21.80-1.linux-64/bin/lilypond --svg -dno-point-and-click Bača.ly ... why didn't you include the -dcrop option? -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca
Re: Why does -dbackend=svg -dcrop remove system-system-spacing?
On Tue, Jan 5, 2021 at 11:31 PM David Wright wrote: > On Tue 05 Jan 2021 at 19:05:30 (-0500), Trevor Bača wrote: > > I love the functionality for cropped SVGs! (Added back in 2019, or around > > then?) > > > > Question: it appears that cropped multisystem SVGs remove all whitespace > > between systems. Is this supposed to happen? > > I think that removing all the margins is the functionality "crop" is > supposed to add to LP. To generate the equivalent cropped and packed > image without this facility would be quite tedious to do (unless > someone has a trick for doing it?). > > > %%% BEGIN %%% > > […] > > %%% END %%% > > > > Called with ... > >lilypond -dbackend=svg -dcrop test.ly > > ... produces test.cropped.svg as attached here. > > > > Screenshot: > > […] > > > > Seems like cropping should be around the edges of the image (rather than > > between systems)? > > If you just want to crop the whole page image, you can do that easily > at the end of a normal run with the usual utilities. If you require > LP to set the entire score on a single page, just use a very long > custom page (as in NR §4.1.2: width, then length). > I'm sorry; I don't understand. What I want Lily to do: remove whitespace from the *edges* of an SVG. What Lily actually does when -dcrop is set: removes whitespace from the edges *and from between all systems* of an SVG. So my question is: is Lily supposed to remove whitespace from *between* systems when -drop is set? -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca
Re: [bug] 2.20.0 -> 2.21.1 Multi_measure_rest_engraver
On Wed, May 6, 2020 at 7:06 PM David Kastrup wrote: > Valentin Villenave writes: > > > On 5/6/20, Trevor Bača wrote: > >> The following MWE works under 2.20.0 but crashes LilyPond under 2.21.1. > > > > Wow, that’s a nice one. I’m marking this as Critical because its a/ a > > segfault, b/ a regression and c/ not that unusual a use case. > > https://sourceforge.net/p/testlilyissues/issues/5964/ > > Since it got broken recently, that should be fairly easy to bisect. > > Uh, there are several years of development between 2.20.0 and 2.21.1. > Unfortunately. But at least few version changes... > Actually, only one version to check! The problem entered sometime between 2.19.84 and 2.21.1. MWE works under 2.19.84: ### WORKS UNDER 2.19.84 ### \version "2.19.84" \layout { \context { \name GlobalRests \type Engraver_group \consists Multi_measure_rest_engraver } \context { \name GlobalContext \type Engraver_group \accepts GlobalRests } \context { \Score \accepts GlobalContext } } \new Score << \new GlobalContext { \new GlobalRests { R1 } } \new Staff { \time 4/4 R1 } >> ### END ### GNU LilyPond 2.19.84 Processing `test.ly' Parsing... Interpreting music... Preprocessing graphical objects... Finding the ideal number of pages... Fitting music on 1 page... Drawing systems... Layout output to `/var/folders/0k/3dbjvd1548b0wkstx2lyb60wgn/T//lilypond-3FIYkv'... Converting to `test.pdf'... Deleting `/var/folders/0k/3dbjvd1548b0wkstx2lyb60wgn/T//lilypond-3FIYkv'... Success: compilation successfully completed HTH, Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca
[bug] 2.20.0 -> 2.21.1 Multi_measure_rest_engraver
Hi, The following MWE works under 2.20.0 but crashes LilyPond under 2.21.1. ### WORKS UNDER 2.20.0 ### \version "2.20.0" \layout { \context { \name GlobalRests \type Engraver_group \consists Multi_measure_rest_engraver } \context { \name GlobalContext \type Engraver_group \accepts GlobalRests } \context { \Score \accepts GlobalContext } } \new Score << \new GlobalContext { \new GlobalRests { R1 } } \new Staff { \time 4/4 R1 } >> ### END ### GNU LilyPond 2.20.0 Processing `illustration.ly' Parsing... Interpreting music... Preprocessing graphical objects... Finding the ideal number of pages... Fitting music on 1 page... Drawing systems... Layout output to `/var/folders/0k/3dbjvd1548b0wkstx2lyb60wgn/T//lilypond-kmhqj8'... Converting to `illustration.pdf'... Deleting `/var/folders/0k/3dbjvd1548b0wkstx2lyb60wgn/T//lilypond-kmhqj8'... Success: compilation successfully completed [image: mmrest.png] ### CRASHES UNDER 2.21.1 ### \version "2.21.1" \layout { \context { \name GlobalRests \type Engraver_group \consists Multi_measure_rest_engraver } \context { \name GlobalContext \type Engraver_group \accepts GlobalRests } \context { \Score \accepts GlobalContext } } \new Score << \new GlobalContext { \new GlobalRests { R1 } } \new Staff { \time 4/4 R1 } >> ### END ### GNU LilyPond 2.21.1 Processing `illustration.ly' Parsing... Interpreting music... Preprocessing graphical objects... < halt > The workaround appears to be to use 2.20.0 until the 2.21.1 bug can be tracked down. Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca
Re: \offset Y-offset
On Tue, Jan 21, 2020 at 4:30 AM Aaron Hill wrote: > On 2020-01-19 7:15 am, Paolo Prete wrote: > > I'm looking at your code and I don't understand what is it intended to > > do. > > You write: "% Test with bracket that is positioned by Y-offset." > > but from what I see, the bracket is positioned by both > > outside-staff-padding and y-offset inside \shiftOttavaBracket. > > What do you mean, then? > > In addition, please can you write at the beginning of the snippet what > > you > > are going to demonstrate? IIUC, what you are going to demonstrate is > > something that depends on the result of another snippet. Please, can > > you > > put all in the same example? Otherwise all becomes too hard to be > > understood/used. > > It seems that email might not be the best medium of communication for > this. I am taking a page out of Knuth's handbook with something akin to > literate programming. Lacking a suitable TeX environment that works > with LilyPond, I chose to do everything in a monolithic LY file. > > May you find attached a compiled PDF with its LY source file. I cannot > promise the LY is the *most* readable, but I have tried to keep things > as organized as possible. Likewise, I have done a few passes of > proof-reading over the document, but at this point I am unlikely to spot > any typos that remain. And rather than delay this further, I am sending > out what I have, for better or worse. > > Due to the nature of this presentation, there are parts of the LY file > that are not directly relevant to the subject--including a number of > helper functions for overlaying graphics on grobs, as well as a kludgy > solution for including the text of a code snippet in the final document > while also executing it. Between just reading the PDF by itself and > then along side the LY source, I hope it will not be too difficult to > sort the wheat from the chaff. > Hi Aaron, This is such a generous way of communicating your problem-solving approach. Thank you for taking the time to write it up; I learned details of grob spacing that I didn't know I'd been missing for several years. Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca
Release notification: Abjad 3.1
Dear friends, Abjad 3.1 is now available: Docs: https://abjad.github.io/ GitHub: https://github.com/abjad/abjad PyPI: https://pypi.org/project/Abjad/ Please note that the old www.projectabjad.org URL has been retired in favor of GitHub doc hosting, as shown above. There are hundreds of new features in this release; highlights follow below. Here's to happy composing and to time with friends and family over the holiday season. We hope you enjoy, Trevor Bača * mail: trevor.b...@gmail.com * home: http://www.trevorbaca.com/ Josiah Wolf Oberholtzer * mail: josiah.oberholt...@gmail.com * home: http://josiahwolfoberholtzer.com ABJAD 3.1 RELEASE NOTES Abjad 3.1 includes a large number of new features and three important changes. Changes: - Respelled abjad.Container.is_simultaneous as abjad.Container.simultaneous - Removed abjad.Measure - Replaced old spanner classes with new factory functions Select new features: - Annotated iteration - Attribute testing - Literal markup - Selector concatenation - Selector inclusion / exclusion - Tagged component, indicator, tweak output - Timespan expressions Details appear below. CHANGES1. RESPELLED ABJAD.CONTAINER.IS_SIMULTANEOUS AS ABJAD.CONTAINER.SIMULTANEOUS OLD: Container.is_simultaneous NEW: Container.simultaneous Example: >>> voice_1 = abjad.Voice(r"a''4 \flageolet ( df'''16 )") >>> literal = abjad.LilyPondLiteral(r"\voiceOne", "opening") >>> abjad.attach(literal, voice_1[0]) >>> voice_2 = abjad.Voice(r"4 \flageolet ( 16 )") >>> literal = abjad.LilyPondLiteral(r"\voiceTwo", "opening") >>> abjad.attach(literal, voice_2[0]) >>> container = abjad.Container([voice_1, voice_2], simultaneous=True) >>> staff = abjad.Staff("r2 r8.") >>> staff.insert(1, container) >>> markup = abjad.Markup("div. in 3", direction=abjad.Up) >>> abjad.attach(markup, staff[0]) >>> abjad.override(staff[0]).text_script.self_alignment_X = -0.25 >>> abjad.override(staff[0]).text_script.staff_padding = 2 >>> abjad.show(staff) [image: container-simultaneous] Users should change is_simultaneous to simultaneous everywhere in existing scores. Closes #1103. 2. REMOVED ABJAD.MEASURE LilyPond does not model measures explicitly. This is now true in Abjad 3.1, too. Attach abjad.TimeSignature indicators wherever you would call the LilyPond \time command. Recall that in Abjad you can iterate notes, rests and chords grouped together by the measure that contains them: >>> time_signature = abjad.TimeSignature((9, 8)) >>> staff = abjad.Staff("f''4. gf'' f'' gf'' f'' c''' c''' a'' fs''") >>> first_leaf = staff[0] >>> abjad.attach(time_signature, first_leaf) >>> abjad.show(staff) [image: staff] >>> for group in groups: ... print(group) Selection([Note("f''4."), Note("gf''4."), Note("f''4.")]) Selection([Note("gf''4."), Note("f''4."), Note("c'''4.")]) Selection([Note("c'''4."), Note("a''4."), Note("fs''4.")]) >>> last_group = groups[-1] >>> for note in last_group: ... abjad.attach(abjad.Marcato(), note) ... >>> abjad.show(staff) [image: last-measure-articulations] Also: - Removed abjad.Measure - Removed abjad.MeasureMaker - Removed abjad.Mutation.replace_measure_contents() 3. REPLACED SPANNERS WITH FACTORY FUNCTIONS LilyPond models beams, hairpins, slurs and other spanners with matching start- and stop-commands. This is now true in Abjad 3.1, too. The spanners.py module implements 12 factory functions to help you work with spanners. These new factory functions are implemented in terms of matching pairs of start and stop indicators: abjad.text_spanner() works by attaching instances of the new abjad.StartTextSpan and abjad.StopTextSpan indicators (which format as LilyPond \startTextSpan and \stopTextSpan). Closes #1033: - abjad.beam() - abjad.bow_contact_spanner() - abjad.glissando() - abjad.hairpin() - abjad.horizontal_bracket() - abjad.ottava() - abjad.phrasing_slur() - abjad.piano_pedal() - abjad.slur() - abjad.text_spanner() - abjad.tie() - abjad.trill_spanner() CHANGED: OLD: abjad.BowContactSpanner NEW: abjad.bow_contact_spanner() OLD: abjad.Glissando NEW: abjad.glissando() OLD: abjad.HorizontalBracket NEW: abjad.horizontal_bracket() OLD: abjad.OctavationSpanner NEW: abjad.ottava() OLD: abjad.PianoPedalSpanner NEW: abjad.piano_pedal() OLD: abjad.TrillSpanner NEW: abjad.trill_spanner() OLD: abjad.HairpinIndicator NEW: abjad.StartHairpin Also: - Added abjad.glissando(..., hide_stem_selector=None) keyword - Added abjad.glissando(..., left_broken=None) keyword - Added abjad.glissando(..., right_broken_show_
Re: Spacing of clef change
Hi Aaron, Wow, that technique for overriding end-of-system / begin-of-system grobs *independently of one another* fills in an extremely important LilyPond gap for me. I've modified your example for the archives; everyone should know this technique. %%% INDEPENDENT LINE-BREAK OVERRIDES %%% \version "2.19.83" \new Staff { \omit Score.BarNumber \omit Staff.Clef \omit Staff.TimeSignature c'4 c'4 c'4 c'4 \bar ":..:" \once \override Staff.BarLine.color = #(lambda (grob) (if (eq? LEFT (ly:item-break-dir grob)) (set! (ly:grob-property grob 'color) red)) (if (eq? RIGHT (ly:item-break-dir grob)) (set! (ly:grob-property grob 'color) blue))) \break c'4 c'4 c'4 c'4 } \layout { indent = #0 ragged-right = ##t } %%% END %%% [image: end-of-system-bar-lines.png] Trevor. On Thu, Jun 27, 2019 at 12:54 AM Aaron Hill wrote: > On 2019-06-26 9:27 pm, Evan Driscoll wrote: > > I've got the example document below. There's a bit too little space for > > me > > between the last note in the last measure of the first line and the new > > clef. > > > > I found a mailing list entry that showed how to put some extra space > > before > > the clef (the commented-out override) and that looks great -- except > > that > > it also moves the clef at the start of the next system. I tried a > > \tweak > > version, but my attempt has no effect at all. > > Here's one way to do it: > > > \version "2.19.82" > > \relative c { > \clef "bass" > \repeat unfold 10 { > g2. g4 | > } > \break > \once \override Staff.Clef.before-line-breaking = #(lambda (grob) >(and (eq? LEFT (ly:item-break-dir grob)) > (set! (ly:grob-property grob 'X-extent) '(-2 . 2 > \clef "tenor" > \repeat unfold 7 { > g8 g g2. > } > } > > > > -- Aaron Hill > > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca
Re: Bug: restarting staff destroys DynamicLineSpanner.staff-padding after line break
On Thu, Mar 7, 2019 at 2:14 AM David Kastrup wrote: > Trevor Bača writes: > > > Restarting the staff during the lifespan of a multisystem > > DynamicLineSpanner destroys the value of DynamicLineSpanner properties > > (like staff-padding) that were set when the DynamicLineSpanner was > > created. > > It doesn't. It's just that the DynamicLineSpanner has a relation with > the Staff it was started in. > > > In the MWE below, the hairpin should exhibit staff-padding equal to 10 > > staff spaces below all four systems; but the value of staff-padding is > lost > > at the point (in system 2) that the staff is restarted; we see evidence > of > > this after the next line break (in systems 3 and 4) where no staff > padding > > appears. > > > > %%% BEGIN %%% > > > > \version "2.19.82" > > > > \new Staff > > { > > > > \override DynamicLineSpanner.staff-padding = 10 > > c'1 > > \p > > \< > > c'1 > > c'1 > > \break > > > > c'1 > > \stopStaff > > \startStaff > > c'1 > > c'1 > > \break > > > > c'1 > > c'1 > > c'1 > > \break > > > > c'1 > > c'1 > > c'1 > > \f > > > > } > > > > \paper > > { > > indent = 0 > > ragged-right = ##t > > system-system-spacing.minimum-distance = 30 > > } > > > > %%% END %%% > > > > [image: restart-staff-dynamic-line-spanner-bug.png] > > If you start a new DynamicLineSpanner like > > c'1\! > \stopStaff > \startStaff > c'1\< > > it will be properly spaced. It's probably not the only spanner > unprepared to span pieces of interrupted staff symbols. > Isn't this still a bug? Or, rather a gap in system functionality for which no workaround exists? Starting a new DynamicLineSpanner creates two separate hairpins: %%% BEGIN %%% \version "2.19.82" \new Staff { \override DynamicLineSpanner.staff-padding = 10 c'1 \p \< c'1 c'1 \break c'1 \! \stopStaff \startStaff c'1 \< c'1 \break c'1 c'1 c'1 \break c'1 c'1 c'1 \f } \paper { indent = 0 ragged-right = ##t system-system-spacing.minimum-distance = 30 } %%% END %%% [image: two-hairpins-instead-of-one.png] ... when what's needed is one single hairpin that governs the music of all four systems. Or am I missing something, and there is a way to generate a single multisystem hairpin that governs all four systems? Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Bug: restarting staff destroys DynamicLineSpanner.staff-padding after line break
Hi, Restarting the staff during the lifespan of a multisystem DynamicLineSpanner destroys the value of DynamicLineSpanner properties (like staff-padding) that were set when the DynamicLineSpanner was created. In the MWE below, the hairpin should exhibit staff-padding equal to 10 staff spaces below all four systems; but the value of staff-padding is lost at the point (in system 2) that the staff is restarted; we see evidence of this after the next line break (in systems 3 and 4) where no staff padding appears. %%% BEGIN %%% \version "2.19.82" \new Staff { \override DynamicLineSpanner.staff-padding = 10 c'1 \p \< c'1 c'1 \break c'1 \stopStaff \startStaff c'1 c'1 \break c'1 c'1 c'1 \break c'1 c'1 c'1 \f } \paper { indent = 0 ragged-right = ##t system-system-spacing.minimum-distance = 30 } %%% END %%% [image: restart-staff-dynamic-line-spanner-bug.png] Thanks, Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Text spanner padding
On Thu, Feb 28, 2019 at 4:10 PM David Kastrup wrote: > Trevor Bača writes: > > > On Fri, Feb 22, 2019 at 2:58 AM Andrew Bernard > > > wrote: > > > >> Solved. It's right-broken-padding set to false that does the trick. > >> > >> \override TextSpanner.bound-details.right-broken.padding = ##f > >> \override TextSpanner.bound-details.right.padding = #11 > >> > > > > > > As a note for posterity (whenever the time comes to finally equip text > > spanners with their remaining missing features), it would be fantastic to > > allow text spanners to start (and stop) nonmusical items, like bar lines. > > > > Then magic numbers (like 11, in the example here) can be replaced by > > something semantic that says "stop text span on bar line", which seems to > > be what Andrew is actually engraving in this excerpt. > > So? There is the to-barline property. > Hi David, This is extremely useful. Thank you so much for sending over the example; I had no idea to-barline was implemented on TextSpanner. A cleaned up the example for future archive-searchers: %%% TEXT SPANNER TO BARLINE (MID-SYSTEM) %%% \version "2.19.82" left-bracket-path = #'( (moveto 0 -1) (lineto 0 0) (lineto 2 0) ) right-bracket-path = #'( (lineto 2 0) (lineto 2 -1) ) repeat-spanner-start-markup = \markup { \path #0.25 #left-bracket-path \general-align #Y #CENTER \sans \upright " x3" } repeat-spanner-stop-markup = \markup { \general-align #X #RIGHT \line { \general-align #Y #CENTER \sans \upright " x3" \path #0.25 #right-bracket-path } } \new Staff { c'1 - \tweak bound-details.left.text \repeat-spanner-start-markup - \tweak bound-details.left-broken.text ##f - \tweak bound-details.right.padding 0 - \tweak bound-details.right.text \repeat-spanner-stop-markup - \tweak bound-details.right-broken.text ##f - \tweak dash-period 1 - \tweak staff-padding 4 - \tweak to-barline ##t \startTextSpan c'1 \break c'1 c'1 \stopTextSpan } \paper { indent = 0 system-system-spacing = #'((minimum-distance . 20)) } %%% END %%% [image: text-spanner-to-barline.png] IMPORTANT NOTE: the likely-to-be-overlooked key here is "\general-align #X #RIGHT" included in the definition of the markup used *at the right end* of the spanner. (In this example, repeat-spanner-stop-markup.) Equally astonishingly, the example can be made to work at line breaks: %%% TEXT SPANNER TO BARLINE (END-OF-SYSTEM) %%% \version "2.19.82" left-bracket-path = #'( (moveto 0 -1) (lineto 0 0) (lineto 2 0) ) right-bracket-path = #'( (lineto 2 0) (lineto 2 -1) ) repeat-spanner-start-markup = \markup { \path #0.25 #left-bracket-path \general-align #Y #CENTER \sans \upright " x3" } repeat-spanner-stop-markup = \markup { \general-align #X #RIGHT \line { \general-align #Y #CENTER \sans \upright " x3" \path #0.25 #right-bracket-path } } \new Staff { c'1 - \tweak bound-details.left.text \repeat-spanner-start-markup - \tweak bound-details.left-broken.text ##f - \tweak bound-details.right.padding 0 - \tweak bound-details.right.text \repeat-spanner-stop-markup %%%- \tweak bound-details.right-broken.text ##f - \tweak dash-period 1 - \tweak staff-padding 4 - \tweak to-barline ##t \startTextSpan c'1 \break c'1 \stopTextSpan c'1 } \paper { indent = 0 system-system-spacing = #'((minimum-distance . 20)) } %%% END %%% [image: text-spanner-to-barline-at-line-break.png] These examples are hugely important if you are engraving extensively with text spanners. I had assumed that these were gaps in Lily's functionality; good to see I was wrong. Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Text spanner padding
On Fri, Feb 22, 2019 at 2:58 AM Andrew Bernard wrote: > Solved. It's right-broken-padding set to false that does the trick. > > \override TextSpanner.bound-details.right-broken.padding = ##f > \override TextSpanner.bound-details.right.padding = #11 > As a note for posterity (whenever the time comes to finally equip text spanners with their remaining missing features), it would be fantastic to allow text spanners to start (and stop) nonmusical items, like bar lines. Then magic numbers (like 11, in the example here) can be replaced by something semantic that says "stop text span on bar line", which seems to be what Andrew is actually engraving in this excerpt. Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Proportional spacing bug: chained \noBreaks + \newSpacingSection
Hi, LilyPond incorrectly compresses consecutive, proportionally spaced measures when the following conditions hold: 1. first measure in the sequence sets \proportionalNotationDuration; and 2. last measure in sequence is followed by \newSpacingSection; and 3. all measures in sequence carry \noBreak commands. %%% BEGIN SPACING BUG %%% \version "2.19.82" \layout { indent = #0 ragged-right = ##t } \new Staff \with { \remove Time_signature_engraver } { \time 2/8 \set Score.proportionalNotationDuration = #(ly:make-moment 1 32) c'4 ^ \markup \with-color #red "First three measures aren't wide enough" \noBreak c'4 \noBreak c'4 \noBreak \newSpacingSection c'4 c'4 c'4 c'4 c'4 } %%% END %%% Output looks like this: [image: no-break-spacing-bug.png] Correct output looks like this: %%% BEGIN NON-BUG %%% \version "2.19.82" \layout { indent = #0 ragged-right = ##t } \new Staff \with { \remove Time_signature_engraver } { \time 2/8 \set Score.proportionalNotationDuration = #(ly:make-moment 1 32) c'4 c'4 c'4 \newSpacingSection c'4 c'4 c'4 c'4 c'4 } %%% END %%% Visual: [image: correct-output.png] Note, again, that *all* measures spaced incorrectly must carry a \noBreak command; removing *any one* of the three \noBreak commands in the bug snippet causes the bug to disappear. Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Text spanner shorten-pair
On Wed, Feb 13, 2019 at 8:33 AM Carl Sorensen wrote: > > > > > *From: *Trevor Bača > *Date: *Wednesday, February 13, 2019 at 6:43 AM > *To: *Carl Sorensen > *Cc: *Andrew Bernard , lilypond-user > Mailinglist > *Subject: *Re: Text spanner shorten-pair > > > > > > > > On Tue, Feb 12, 2019 at 6:12 PM Carl Sorensen wrote: > > > > > > *From: *Trevor Bača > *Date: *Tuesday, February 12, 2019 at 3:09 PM > *To: *Carl Sorensen > *Cc: *Andrew Bernard , lilypond-user > Mailinglist > *Subject: *Re: Text spanner shorten-pair > > > > On Fri, Jan 25, 2019 at 11:38 AM Carl Sorensen wrote: > > > > Question: why are there two ways to move around the ends of spanners > (padding vs. shortening)? I can't think of a reason that's motivated by > music notation. > > > > Padding is a minimum amount of blank space between two pieces of ink on > the page. When a pedal bracket is running into empty space, it doesn’t > matter what the padding setting is, because there is no ink for it to move > away from. Padding says “don’t just avoid collisions; leave a minimum > amount of empty space in addition to avoiding collisions”. There’s no > collision to avoid between a pedal bracket and its associated note column. > > > > Ok, wow, this is actually hugely interesting. Thank you so much for the > specificity of the first part of the answer: "Padding is a minimum amount > of blank space between two pieces of ink on the page." That is actually > genuinely new information to me about a small-but-pervasive concept in > LilyPond. Right up until just now, I had assumed that padding meant "a > minimum amount of blank space between TWO THINGS on the page (whether the > things are visible or not)"; we are hugely concerned with the (frequently > invisible) start- and stop-anchors of things when engraving objects in > score; and I had incorrectly assumed that padding at the edges of, say, a > piano pedal bracket would pad between the invisible start-anchor of the > bracket (which you described earlier as some flavor of column) and the > visible start of the bracket itself. This is apparently not the case. > > > > I think that I was incorrect in saying “ink on the page”, although that is > the intent of padding. I should have said “between two bounding boxes”. > One way to make spanners respect padding would be to increase the vertical > extent of the bounding box (but that comes with a cost of preventing > markups from sitting above or below the bounding box. > > > > This probably explains a small part of why I may have found the spacing > behavior of piano pedal brackets flakey, to a certain extent, for well over > a decade. > > > > So my surprise here (that the Lily concept of "padding" won't pad between > the invisible anchors of things that I'm always mentally tracking when I > work), makes me think that this surprisingly-restricted (at least to me ;) > model of padding is possibly a "mis-model" in the system, or maybe a > not-yet-realized possibility for a more complete generalization of what > spanners are. > > > > I think that you have hit on an important fundamental that is not properly > represented in LilyPond. Spanners might be properly said to be anchored to > note columns **regardless** of whether they have anything in them at a > particular vertical location. Maybe the spacing algorithms for spanners > should assume a note-column with infinite vertical extents…. > This once again comes an extremely clarifying point; thank you, again, for taking the time specify the constraints on positioning behavior so explicitly. It will take more time to think through what this means ... Perhaps off topic, but I have a years-old question you might be able to answer: *what is it that caused the implementation of text spanners* (probably all spanners, actually) *to exclude the availability of "length-1" spanners?* By "length-1 spanner" I mean a text spanner that encompasses the rhythmic duration of a single note. And example would be a spanner that encompasses a single whole note and that says "pont. -," (probably with downward-pointing right hook, as is conventional with ottava brackets); the meaning would be "play the entire duration of this note ponticello [and don't vary the color treatment at all]". This comes up semi-regularly on the list; newcomers ask the question relatively frequently. The conventional answer is that you define a text spanner that connects two notes to each other (and style any right hook as markup on the second note). But surely this is a mis-model [and again I don't mean to critique harshly, rather helpfully for future thought]. Why? Because
Re: Can alternateTextSpannerEngraver now completely replace Text_spanner_engraver in a public release?
On Wed, Feb 13, 2019 at 8:35 AM David Kastrup wrote: > David Nalesnik writes: > > > On Wed, Feb 13, 2019 at 7:49 AM Trevor Bača > wrote: > >> > >> Could somebody else possibly provide James a patch of David N.'s > >> alternateTextSpannerEngraver? > >> > >> Trevor. > > > > The issue which would come up is that it is written in Scheme, rather > > than C++. This has implications for documentation. > > It does? What kind of documentation cannot be achieved in Scheme that > would be possible in C++? > > Here is some page from the Internals reference: > > File: lilypond-internals.info, Node: Merge_rests_engraver, Next: > Metronome_mark_engraver, Prev: Mensural_ligature_engraver, Up: Engravers > and Performers > > 2.2.71 Merge_rests_engraver > --- > > Engraver to merge rests in multiple voices on the same staff. This > works by gathering all rests at a time step. If they are all of the > same length and there are at least two they are moved to the correct > location as if there were one voice. > >Properties (read) > > ‘suspendRestMerging’ (boolean) > When using the Merge_rest_engraver do not merge rests when > this is set to true. > >‘Merge_rests_engraver’ is not part of any context. > > > This is an engraver written in Scheme. > > -- > David Kastrup > Thank you both (David and David) so much for engaging on this last step! Truly wonderful; and if I can just chime in one last time while you are thinking through the problem: I *think* (not 100% certain, but close to it) that the ideal final implementation path would be not just to add alternateTextSpannerEngraver as, say, Alternate_text_spanner_engraver, but rather to *replace* the existing Text_spanner_engraver with (the implementation of) alternateTextSpannerEngraver. I think this was clear in my previous mail, but I just wanted to insert one last time here as the question of Scheme-vs-C++ final resting spot gets considered. Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Can alternateTextSpannerEngraver now completely replace Text_spanner_engraver in a public release?
On Wed, Feb 13, 2019 at 4:58 AM James Lowe wrote: > Hello Trevor, > > On Tue, 12 Feb 2019 16:45:35 -0600, Trevor Bača > wrote: > > > > > > Question: is it now possible to replace Text_spanner_engraver with David > > N.'s extended implementation, in a coming public release of LilyPond? > > > > > > Trevor. > > > > > If you have a patch based on current master I can at least test that for > you.] > > James > Hi James, I have no patch. Could somebody else possibly provide James a patch of David N.'s alternateTextSpannerEngraver? Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Text spanner shorten-pair
On Tue, Feb 12, 2019 at 6:12 PM Carl Sorensen wrote: > > > > > *From: *Trevor Bača > *Date: *Tuesday, February 12, 2019 at 3:09 PM > *To: *Carl Sorensen > *Cc: *Andrew Bernard , lilypond-user > Mailinglist > *Subject: *Re: Text spanner shorten-pair > > > > On Fri, Jan 25, 2019 at 11:38 AM Carl Sorensen wrote: > > > > Question: why are there two ways to move around the ends of spanners > (padding vs. shortening)? I can't think of a reason that's motivated by > music notation. > > > > Padding is a minimum amount of blank space between two pieces of ink on > the page. When a pedal bracket is running into empty space, it doesn’t > matter what the padding setting is, because there is no ink for it to move > away from. Padding says “don’t just avoid collisions; leave a minimum > amount of empty space in addition to avoiding collisions”. There’s no > collision to avoid between a pedal bracket and its associated note column. > Ok, wow, this is actually hugely interesting. Thank you so much for the specificity of the first part of the answer: "Padding is a minimum amount of blank space between two pieces of ink on the page." That is actually genuinely new information to me about a small-but-pervasive concept in LilyPond. Right up until just now, I had assumed that padding meant "a minimum amount of blank space between TWO THINGS on the page (whether the things are visible or not)"; we are hugely concerned with the (frequently invisible) start- and stop-anchors of things when engraving objects in score; and I had incorrectly assumed that padding at the edges of, say, a piano pedal bracket would pad between the invisible start-anchor of the bracket (which you described earlier as some flavor of column) and the visible start of the bracket itself. This is apparently not the case. This probably explains a small part of why I may have found the spacing behavior of piano pedal brackets flakey, to a certain extent, for well over a decade. So my surprise here (that the Lily concept of "padding" won't pad between the invisible anchors of things that I'm always mentally tracking when I work), makes me think that this surprisingly-restricted (at least to me ;) model of padding is possibly a "mis-model" in the system, or maybe a not-yet-realized possibility for a more complete generalization of what spanners are. Put another way, why *shouldn't* spanners pad between their anchors, whether those anchors are visible or not? The thing that earlier caught my eye in this thread was when you started to taxonomize spanners: "there's a first group that would include glissandi and text spanners" and "then there's a second group that would include hairpins and piano pedal brackets," etc. And I immediately found that taxonomy surprising; were there realworld (music-notational) criteria motivating the taxonomy? I couldn't come up with any, and now understanding the restricted definition of padding explains why: you knew how Lily is internally defining padding, and so you were taxonomining according to that piece of system implementation. This explains a lot, though I think that maybe the better thing to do is to extend the spanner behaviors (padding, in this case) *to all the spanners*, rather than cladding in iron a distinction (like 'stretchable' / 'paddable' with a stretchable-spanner-interface / paddable-spanner-interface) that might best be argued doesn't exist just by working with the symbols as music notation in the first place. To be clear, I'm absolutely just thinking aloud here ;) This is *not* a request for any changes anywhere in the system: and the decision of something like "collapse shorten-padding into padding, or vice versa" is going to require a lot more thought, for sure. I just wanted to document what now seems like a fairly fundamental point of understanding in the system that will need to dealt with at some point. Either the complete set of spanner behaviors should increasing be generalized to all the spanners (which is always what seems to be the starting point for threads like these where someone asks "why isn't X property implemented on Y spanner?") or else we're going to need to document very strongly this important way in which the sense of padding is restricted in Lily. > > > Which maybe implies that there's a fourth solution: > > > > 4. Collapse shorten-pair into padding (or vice versa), and preserve one > (and only one) such property for *ALL* spanners. > > > > It seems to me that if you are to collapse into a single property, it > would need to be shorten-pair, because we already have padding and it > doesn’t do what you want if there’s no ink to avoid. But I haven’t looked > at all into how the code would need to change with the spann
Re: Text Spanner ID Layer Spans
On Tue, Feb 12, 2019 at 5:47 PM Reggie wrote: > David Kastrup wrote > > Reggie > > > reegistoop@ > > > writes: > > > >> Using a David's function to allow layering spanners, > > > > I like "a David's function". It's like describing a caste of priests. > > > > -- > > David Kastrup > > > > ___ > > lilypond-user mailing list > > > lilypond-user@ > > > https://lists.gnu.org/mailman/listinfo/lilypond-user > > Sorry David :)) > Do you know the solution to my question? > Hi Reggie, To layer text spanners with David N.'s new functionality, you must \tweak spanner properties rather than overriding them. %%% BEGIN %%% \version "2.19.82" \include "text-spanner-id.ly" { b1 - \tweak bound-details.left.text \markup { \upright "rit." } \startTextSpanOne - \tweak bound-details.left.text \markup { \upright "other span" } \startTextSpanTwo c e, \stopTextSpanOne c \stopTextSpanTwo } %%% END %%% [image: layered-start-stop.png] Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Can alternateTextSpannerEngraver now completely replace Text_spanner_engraver in a public release?
Hi, For many years, one of the clearest functional gaps in LilyPond was the limitation that voices allow only a single text spanner at a time. Very many scores of recent decades notate two musical parameters changing at the same time: a passage of string music moving ponticello -> tasto while at the same time decreasing from vibrato molto -> non vibrato, for example. Arrowed lines are the nearly universal way of notating such things, available in LilyPond as text spanners; but to allow for what now counts as newly emerged common practice, an arbitrary number of text spanners need to be allowed per voice. Lily users have asked for the feature for a long time. Here's an example from 2009: http://lists.gnu.org/archive/html/lilypond-user/2009-11/msg00031.html By 2015, the idea of spanner-id had been added to LilyPond to allow for this type of functionality. But despite the name of the property ("will spanner-id allow for ALL types of spanner to overlap?"), integration first centered on slurs and phrasing slurs. Here's a thread from 2015 with David K. working to allow an input syntax for those first two types of spanner: http://lists.gnu.org/archive/html/lilypond-user/2015-10/msg00157.html At that same time in 2015, however, David N. had in fact rewritten Lily's Text_spanner_engraver to integrate spanner-id, and hence supply the missing functionality. David N.'s attachment (given later in the same thread listed above) gives the necessary code: http://lists.gnu.org/archive/html/lilypond-user/2015-10/msg00545.html Last year, in May 2018, I finally integrated David N.'s alternateTextSpannerEngraver into my own work, using it to replace Lily's default Text_spanner_engraver completely. The results have been extremely good: *David N.'s alternateTextSpannerEngraver performs exactly the same as the current Text_spanner_engraver but with the additional flexibility of being able to define (and use) arbitrarily many types of text spanner in a single voice.* So, it looks like David N.'s alternateTextSpannerEngraver supplies a piece of functionality that's been missing in LilyPond since inception, which is fantastic. Question: is it now possible to replace Text_spanner_engraver with David N.'s extended implementation, in a coming public release of LilyPond? Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Text spanner shorten-pair
On Fri, Jan 25, 2019 at 11:38 AM Carl Sorensen wrote: > > > > > *From: *Andrew Bernard > *Date: *Friday, January 25, 2019 at 6:21 AM > *To: *lilypond-user Mailinglist > *Subject: *Re: Text spanner shorten-pair > > > > Hi Aaron, > > > > I know. This then implies the NR is in error. Do we report a bug? [For the > reason that being thrown off the scent I spent hours looking all in the > interfaces to no avail.] > > > > I think this is absolutely a bug. It should not say shorten-pair applies > to TextSpanners when it does not. > > > > There are three possible solutions I can see: > > > >1. Fix the description of shorten-pair to indicate which spanners it >applies to >2. Create a new interface e.g. shortenable-spanner-interface that >contains shorten-pair, and then give that interface to all the grobs that >accept shorten-pair (see dynamic-line-spanner-interface for a similar >single-property interface). > > > > The padding works. Seems inconsistent to me. Why do we leave TextSpanners > out of the group? > >1. Add the shorten-pair property to the spanner-interface (or maybe >the text-spanner interface) and make sure it works with all of the objects >having that interface. > > > > My preference right now would probably be #2. > > > > I have not made an exhaustive study of this, but my initial thought is > that there are two kinds of spanners. > > > > Spanner type A goes from one grob to another (e.g. TextSpanner, > glissando). These spanners can be shortened by adding padding, because > they will need to move away from the grobs that they connect when the > padding is increased. > > > > Spanner type B goes from one column to another (e.g. hairpin, pedal > bracket). These spanners don’t have grobs at their ends, so padding will > not be effective at shortening them. Hence the need for another method, as > met by the shorten-pair property. > > > > One could add the shorten-pair property to the type A spanners, but it’s > not necessary to do so to shorten them. > > > > I don’t know what I prefer for the long-term solution. It would take more > study and consideration of the pros and cons of each method. > Hi Carl, hi Andrew, Also agreed that this is very much a bug; I've watched beginners get hit by it many times. Question: why are there two ways to move around the ends of spanners (padding vs. shortening)? I can't think of a reason that's motivated by music notation. Which maybe implies that there's a fourth solution: 4. Collapse shorten-pair into padding (or vice versa), and preserve one (and only one) such property for *ALL* spanners. Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Clef moves notes why??
Hi, I like to use an extra-offset clef *with false X-extent* to move clefs into whitespace in my cutaway scores. This pair of overrides ... \once \override Staff.Clef.X-extent = ##f \once \override Staff.Clef.extra-offset = #'(-2.8 . 0) ... seems to do the trick. The example from the top of the thread then rewrites this way: %%% BEGIN %%% \version "2.19.82" << \new Staff { \repeat unfold 100 { c'4 } } \new Staff { \repeat unfold 20 { g'2 } g'1 \stopStaff s1*4 \startStaff \once \override Staff.Clef.X-extent = ##f \once \override Staff.Clef.extra-offset = #'(-2.8 . 0) \clef treble \repeat unfold 20 { e'2 } } >> %%% END %%% [image: left-offset-clef.png] Usage notes: 1. As always, there's the question of Grob.X-extent = ##f versus Grob.X-extent = #'(0 . 0). I've never been able to understand, systematically, when to use one and when to use the other. Sometimes the overrides are interchangeable. But in this case the overrides differ importantly: make sure to use Staff.Clef.X-extent = ##f (as shown). If you use Staff.Clef.X-extent = #'(0 . 0) then Lily will mysteriously draw a little extra fringe of stafflines into the white cutaway part of your score. 2. The magic value of -2.8 in the extra-offset is eyeballed; tweak manually to control the whitespace between the clef and following barline. Change the number when using a C of F clef. Trevor. On Thu, Jan 24, 2019 at 5:08 PM Karlin High wrote: > On 1/24/2019 4:06 PM, Reggie wrote: > > Need to? But what If I wish to have the clef on the right side of the > > barline but have the notes on the other staff be lined up as if I DID put > > clef to the left of the barline? Say I want, is this possible? > > The question isn't whether this is possible. LilyPond is flexible enough > that it can be used as a graphical drawing app. Kieren MacMillan and > Pierre Perol-Schneider have posted examples last month. > > Rather, the question is: How much effort is it worth expending to get > the effect you want? So far there have been LilyPond experts who are > willing to help, like Valentin Villenave just now. But their capacity > for doing this is not unlimited. > -- > Karlin High > Missouri, USA > > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Use of \vspace and \hspace
, Valentin Villenave > wrote: > >> On 1/20/19, Aaron Hill wrote: >> > \markup may additionally be used for lyrics, in chord names, and as >> > dynamics. In fact, it is possible to use \markup to customize the >> > appearance of virtually any object: >> >> Well put! I’ve added a few additional objects and turned it into a >> snippet: >> http://lsr.di.unimi.it/LSR/Item?id=1084 >> >> This could be a nice addition to the NR itself (not sure exactly >> where, but I’ll have to look into it). >> >> V. >> >> ___ >> lilypond-user mailing list >> lilypond-user@gnu.org >> https://lists.gnu.org/mailman/listinfo/lilypond-user >> > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Overrun of right margin
Hi Andrew, hi Aaron, Yep (also for future archive searchers) I can confirm that the right margin overrun results from the Lily default that glissando aren't breakable, as Aaron identifies. It should be enough to include just ... \override Score.Glissando.breakable = ##t ... to prevent this one particular instance of right margin overrun. There are, of course, other conditions that can also cause right margin overrun. Jean Bréfort pointed to barline-crossing durations earlier in this thread, which can also cause right margin overrun. If you *want* barline-crossing durations (complexism or music before 1600) then you need to remove Lily's Forbid_line_break_engraver from every voice context in which barline-crossing durations occur. Something like ... \context { \Voice \remove Forbid_line_break_engraver } ... does the trick for all voices in your score. Andrew, if you're engraving a lot of complexist music, I suggest removing the Forbid_line_break_engraver as a matter of course. Trevor. On Sat, Jan 19, 2019 at 7:13 PM Aaron Hill wrote: > On 2019-01-19 4:56 pm, Andrew Bernard wrote: > > Problem solved after much deconstruction. > > > > I am setting a string quartet. In this section almost every note has a > > glissando, and some become to small to see. So I set this: > > > > \override Glissando #'minimum-length = #5 > > \override Glissando #'springs-and-rods = > > #ly:spanner::set-spacing-rods > > > > This works fine to give the minimum length of the glissandi. It turns > > out > > that this was forcing the score over the edge of the paper, not a > > rhythmic > > error. Adjusting that solves the problem. It's only when there are a > > large > > number of glissandi in the line that it occurs. I report this here in > > case > > it may help future archive searchers. > > This is probably because glissandi are unbreakable by default. If you > have one overlapping a bar line, then LilyPond cannot break there. > > Consider the following: > > > \version "2.19.82" > { >\override Glissando.minimum-length = #5 >\override Glissando.springs-and-rods = #ly:spanner::set-spacing-rods >\override Glissando.breakable = ##t >\repeat unfold 32 { f'8\glissando e''8\glissando } f'1 > } > > > If you omit setting 'breakable to true, you'll see the result extends > all on one line. > > -- Aaron Hill > > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: using Lilypond as a graphical drawing app
Beautiful, Kieren. Trevor. On Fri, Dec 7, 2018 at 2:23 PM Henning Hraban Ramm wrote: > Am 2018-12-07 um 20:57 schrieb Kieren MacMillan < > kieren_macmil...@sympatico.ca>: > > > As a further example of what Lilypond is capable of, and how I’m pushing > it — in this case, for jobs engraving other people’s music and music theory > articles — consider the following Riemannian Tonnetz graph [excerpt] I just > finished engraving: > > > > > > > > Lilypond is so amazing. =) > > And you, apparently. Just wow. > > > Greetlings, Hraban > --- > fiëé visuëlle > Henning Hraban Ramm > https://www.fiee.net > > > > > > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Schenker graph example
Hi Kieren, Wow, what astoundingly professional output; it's a joy to look at and the voice-leading relationships are all *immediately* clear ... the whitespace is, actually, perfect. Thanks so much sending across; bit of a triumph. Trevor. On Mon, Dec 3, 2018 at 11:44 AM Kieren MacMillan < kieren_macmil...@sympatico.ca> wrote: > Hello all, > > Just thought you might like to see the kind of thing I’m doing with Lily > right now: > > > Thanks to everyone who makes it possible! > > Cheers, > Kieren. > > > Kieren MacMillan, composer > ‣ website: www.kierenmacmillan.info > ‣ email: i...@kierenmacmillan.info > > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Polymeter Question
Hi Zvony, Have you tried ... \layout { \context { \Voice \remove Forbid_line_break_engraver } } ... yet? Removing the Forbid_line_break_engraver allows LilyPond to break a system of music *in the middle of ongoing note's duration* (which have a way of arising anytime the polymetry goes on for a bit). Trevor. On Mon, Nov 19, 2018 at 4:54 PM nagymusic wrote: > I'm working on a flute and marimba duet that features a polymetric passage. > Would someone be able to suggest how to fix the typeset music to respect > automatic line breaks? Currently, it just runs off the page... (see > attached .ly file)? I browsed the forum and gather that there could be an > issue with this but wasn't able to find a solution. Thank you for your > help! > polymeter_test.ly > <http://lilypond.1069038.n5.nabble.com/file/t5327/polymeter_test.ly> > > > > -- > Sent from: http://lilypond.1069038.n5.nabble.com/User-f3.html > > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Does LilyPond on MacOS 10.14 (Mojave)?
Hi Gail, I've been running LilyPond 2.19.82 very intensively under Mojave for several weeks; everything works perfectly. Trevor. On Sun, Nov 11, 2018 at 12:26 PM Jean-Julien Fleck < jeanjulien.fl...@gmail.com> wrote: > Hello Gail, > Le dim. 11 nov. 2018 à 18:41, Gail Rein a écrit : > >> I am thinking it is time to move from MacOS High Sierra to Mojave. System >> information for LilyPond 2.18.2-1 says it is not a 64-bit application, >> which I understand can be a problem for Mojave. >> >> If you have experience using LilyPond 2.18.2-1 (current stable version >> for MacOS) on MacOS 10.14 Mojave, I would appreciate your sharing if it was >> transparent or not. >> > > I just installed the MacOSX 2.18.2-1 version from lilypond.org on Mojave > and it seems to be working just fine (at least on a trivial example). > I also tried Frescobaldi and it works just fine as well. > > Cheers, > > -- > JJ Fleck > Physique et Informatique > PCSI1 Lycée Kléber > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Baseline align in TextSpanner
Hi Davide, Avoid the the LilyPond \tempo command entirely: then use markup (in text spanner bound-details) for everything. Alignment (baseline and otherwise) can then be controlled with text spanner bound-details. If you need an empty region of of whitespace between two elements in your (possibly enchained) text spanners, play with the dash fraction / dash period of the text spanner to make the dashes disappear, leaving only your markup visible. Trevor. On Sun, Oct 14, 2018 at 2:17 PM Davide Liessi wrote: > Dear Kieren, > > Il giorno ven 5 ott 2018 alle ore 15:11 Kieren MacMillan > ha scritto: > > This works for me: > [...] > > your solution works well to keep all TextSpanners baseline-aligned, > but it still does not solve my real problem, which indeed was not > apparent in my first message. > I'm trying to make TextSpanners and tempo markings look the same, > including being aligned at the same baseline. > The reason is to follow the recommendations of Gould for tempo > alteration markings (example at page 184). > > A slightly more realistic example follows: I would like to align > \tempo markings and TextSpanners to the same baseline. > As you can see using your trick on both does achieve the desired result. > I renamed the \test function to a more specific \baseline-align. > I'm cc-ing also Harm / Thomas Morley because I'm using his code, so he > may have some insights or suggestions. > > Thanks for your help so far. > Best wishes! > Davide > > %%% new example > \version "2.19.81" > > #(define (lists-map function ls) >"Apply @var{function} to @var{ls} and all of it sublists. > First it recurses over the children, then the function is applied to > @var{ls}." >(if (list? ls) >(set! ls (map (lambda (y) (lists-map function y)) ls)) >ls) >(function ls)) > > #(define baseline-align-proc >(lambda (e) > (if (and (list? e) (member 'glyph-string e)) > (begin > (for-each >(lambda (x) > (begin > (set-car! (cadr x) 0) > x)) >(cadr (last e))) > e) > e))) > > #(define-markup-command (baseline-align layout props glyph-name) >(markup?) >(let* ((stil (interpret-markup layout props glyph-name)) > (new-stile-expr >(lists-map > baseline-align-proc > (ly:stencil-expr stil > > (ly:make-stencil > new-stile-expr > (ly:stencil-extent stil X) > ;(cons 0 (cdr (ly:stencil-extent stil Y))) > (ly:stencil-extent stil Y) > ))) > > startTempoSpan = > #(define-event-function > (left-text) > (markup?) > #{ > \tweak bound-details.left.text \markup { > \combine \transparent "Tj" > #left-text > } > \tweak font-shape #'upright > \tweak font-size 1 > \tweak font-series #'bold > \startTextSpan > #}) > stopTempoSpan = \stopTextSpan > > { > R1 | > \tempo \markup { \baseline-align \large "a" } > R1 | > \tempo \markup { \baseline-align \large "p" } > R1 | > <>\startTempoSpan "a" > R1 > <>\stopTempoSpan | > R1 | > <>\startTempoSpan "p" > R1 > <>\stopTempoSpan | > R1 > \tempo \markup { \large \combine \transparent "Tj" "a" } > R1 | > \tempo \markup { \large \combine \transparent "Tj" "p" } > R1 | > } > > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Define new articulation with markup or path (instead of glyph)
gt; > guile> (equal? b c) > > #t > > guile> (eq? a (cdr b)) > > #t > > guile> (eq? (cdr b) (cdr c)) > > #t > > guile> (set! a (assoc-set! a 'two 2.2)) > > guile> a > > ((one . 1) (two . 2.2)) > > guile> b > > ((three . 3) (one . 1) (two . 2.2)) > > guile> c > > ((three . 3) (one . 1) (two . 2.2)) > > > > While "b" and "c" are unique as far as the initial node in their > > respective lists (because acons returns a new list), they share the > > remainder with the same nodes within the original list. So, > > modification to the list that "a" references will propagate to "b" and > > "c". > > > > Upon reflection, this all makes sense. So, one should probably be > > explicit about copying and use list-copy (shallow) or copy-tree > > (deep), as needed. > > > > -- Aaron Hill > > > > ___ > > lilypond-user mailing list > > lilypond-user@gnu.org > > https://lists.gnu.org/mailman/listinfo/lilypond-user > > > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: hide entire tuplet entity
Scaling durations is a better way to go: invisible tuplets always somehow manage to impact the spacing of other objects in unpredictable ways. And don't be fooled by trying to X-extent, Y-extent and friends to false or zero; there's always some small thing somewhere that will throw off spacing, and it can potentially take hours to notice the fact and then correct it. Go with duration multipliers (like in Brett's response) or the \scaleDurations function. Trevor. On Sun, Aug 26, 2018 at 9:03 PM Brett Duncan wrote: > One option would be to scale the durations instead of using tuplets, > > e.g. you could change > > \hideNotes b2. b4\sustainOn b2 \tuplet 3/2{ b8 b4\sustainOff} > b4\sustainOn \tuplet 3/2{ b8 b8\sustainOff b8 } > > to > >\hideNotes b2. b4\sustainOn b2 b8*2/3 b4*2/3\sustainOff b4\sustainOn > b4*2/3\sustainOff b8*2/3 > > > Brett > > On 27/8/18 9:04 am, Ryan Michael wrote: > > Hello. I am currently working on a piano piece and I want to have sustain > spans below the bass clef while the left hand is resting for whole > measures. I want to the sustain to line up with tuplets on the right hand > in the treble clef. My current strategy is to fake the same phrase in the > bass clef but it leaves me with tuplet artifacts when I am hiding the notes > in the bass clef à la : > > > % > %% bass section mirroring right hand for sustain engraving purposes only > \version "2.18.2" > { > << > \new Voice { \hideNotes b4 b8 b8\sustainOn b4 b8. b16\sustainOff} > \new Voice { r1} > >> > > << > \new Voice { \hideNotes b2. b4\sustainOn b2 \tuplet 3/2{ b8 > b4\sustainOff} b4\sustainOn \tuplet 3/2{ b8 b8\sustainOff b8 } b2. } > \new Voice { r1 r1 r1} > >> > } > % > > -- > ॐ नमः शिवाय > > > ___ > lilypond-user mailing > listlilypond-user@gnu.orghttps://lists.gnu.org/mailman/listinfo/lilypond-user > > > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: tuplet error
Hi Craig, You can tupletize lone notes with no warnings: ### BEGIN ### \new Staff { \times 2/3 { g'2.:8 } \times 2/3 { a'2.:8 } \times 2/3 { bf'2.:8 } \times 2/3 { bf'2.:8 } } ### END ### [image: craig-tuplets.png] Changing "\tuplet 2/3 2" to "\tuplet 2/3 4" (David's solution) is the right one; but knowing about the (explicit) time scaling available with \times is helpful to have as a backup (and allows you to think and notate each sixth note as a sixth note). Trevor. On Fri, Aug 24, 2018 at 7:26 AM Craig Dabelstein wrote: > Thanks Malte, that was stupid of me. Improved MWE below. > > Andrew, this is just a shortcut in notation, developed when scores had to > be handwritten. Writing it this way (as in bars 1 and 2) is a lot easier > than the long version (bars 3 and 4). It doesn't seem to be used much in > modern scores but was very prevalent in the the 1800s and earlier. When you > see it in context you'd have no problem interpreting it. > > All the best, > > Craig > > > \version "2.19.82" > \language "english" > > notes = \relative c'' { > %1 > \tuplet 3/2 2 { g2.:8 a2.:8 } | > > %2 > \tuplet 3/2 2 { bf2.:8 bf2.:8 } | > > %3 > \tuplet 3/2 4 { g8 g g g g g a a a a a a } | > > %4 > \tuplet 3/2 4 { bf8 bf bf bf bf bf bf bf bf bf bf bf } | > } > > \score { > \new Staff > \notes > \layout { } > } > > > On Fri, 24 Aug 2018 at 20:58, Andrew Bernard > wrote: > >> Hi Aaron and Craig, I understand that already. But why the obscure >> notation is what I was asking. Surely it can be written clearly or more >> explicitly? And if you feel it needed explaining to me, it's going to need >> explaining to other players, isn't it Craig? >> >> Andrew >> >> >> On Fri, 24 Aug 2018 at 17:39, Aaron Hill >> wrote: >> >>> >>> >>> Not OP, but I believe that notation means to play a sequence of single >>> note tremolos, with the single slash indicating eighth-note >>> subdivisions. So each dotted half is played as six eighth notes, >>> following the specified tuplet timing. That is, think of `g2.:8` as `g8 >>> 8 8 8 8 8`. >>> >>> ___ >> lilypond-user mailing list >> lilypond-user@gnu.org >> https://lists.gnu.org/mailman/listinfo/lilypond-user >> > > > -- > *Craig Dabelstein* > Maxime's Music > craig.dabelst...@gmail.com > *http://maximesmusic.com <http://maximesmusic.com>* > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: align dynamic with text
Hey Ben, When you're using markup as dynamics, don't you find that you're unable to include those constructs in hairpins? I went through a period where I was using straight-up text for dynamics like you're mentioning. But the hairpin limitation moved me towards make-dynamic-script. It's great. The other big benefit being that indications that are made with make-dynamic-script align (vertically) with all of Lily's other native dynamics. I've wound up with house set of dynamic indications, too, like Andrew was mentioning: https://github.com/trevorbaca/baca/blob/master/lilypond/baca-dynamics.ily Have at them if you go the make-dynamic-script way. Trevor. On Sun, Aug 19, 2018 at 9:00 PM Ben wrote: > On 8/19/2018 9:17 PM, Andrew Bernard wrote: > > Hi Mark, > > This may be what you are thinking of. This way makes a proper dynamic, not > just text markup. > > Andrew > > > \version "2.19.82" > > fstrettoText = \markup { > \center-align \line { > \hspace #0.1 f \normal-text \italic stretto > } > } > fstretto = #(make-dynamic-script fstrettoText) > > > { > c'4_\fstretto > } > > > Great piece of code Andrew. Thanks for that. > > The only reason I tend to use the alternative 'markup' approach is if I > want to (need to) always have the entire expressive text centered as one > unit with the *dynamic* under the notehead vs. half on each side. > > Much easier I find when I need to do that. > > (img) > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: \textLengthOn in polyphony and over MultiMeasureRests
Hi Urs, hi Torsten, I've followed both parts of this thread with interest, especially since I only recently discovered the magic empty chord <> construct. Urs, Torsten's results for the multimeasure rest example are reproducible like this: %%% BEGIN %%% { \version "2.19.82" \textLengthOn \override TextScript.self-alignment-X = #CENTER \override TextScript.staff-padding = 3 c''1 <> ^ \markup "Invisible empty chord expands measure with MultiMeasureRest." R1 c'' } %%% END %%% Output: The relevant use of <> appears in the docs in ... http://lilypond.org/doc/v2.19/Documentation/notation/writing-rests ... under the "Multi-measure rest markup" subhead at the very bottom of the page. (Clicking http://lilypond.org/doc/v2.19/Documentation/1c/lily-56e2a6af.ly shows the LilyPond input.) Torsten, how are you achieving the text centered above the pair of half notes in the original example (ie, in the measure top-headed with "Minima")? Try as I might, I can't get it! Trevor. On Wed, Jul 25, 2018 at 3:48 PM, Torsten Hämmerle wrote: > Urs Liska-3 wrote > > (markup in voice one will push the music in voice two) > > Yes, but that's only natural: > > (0) \textLengthOn affects any neighbouring objects and will even push away > the surrounding notes etc. > > (1) TextScript.self-alignment-X ist set to #CENTER and in combination with > \textLengthOn, the outer limits of the measure will be pushed apart. > > (2) If there's only one single note, this note will be forced into the > horizontal centre of the measure (which is what we wanted in the example, > but that's not "natural", as the first note in a measure should start at > the > beginning of the measure. > > (3) The additional second voice prevents the single note of voice one from > being centred, because now the two voices have to be rhythmically aligned: > that's why the 2nd note of voice 2 sticks out to the right. > > So as to your question a), it's not a problem of calculating \textLength, > it's just a problem of rhythmic alignment of notes. > You don't even need a 2nd voice for that effect, > c''4 ^\markup "Other voice interferes." c''2. > would just behave in the same way. > > If you need more than one (centred) note, you can use spacer rests (s) > an/or > scaled durations (if needed) and (!) attach the markup text to <>, that way > it won't affect the neighbouring notes other than by widening the measure. > Don't ask me why, but it comes in handy. > > > > > Urs Liska-3 wrote > > and it doesn't > > work over MultiMeasureRests: > > In these cases, you can attach it to <>. This even works with compressed > MultiMeasureRests and it's an ordinary TextScript then. > > The longa rest in the example below has been created by R1*4 in combination > with \compressFullBarRests and \omit MultiMeasureRestNumber. The markup > text > has been attached to <>. > I haven't included the source code because it's a mess and I used a Fraktur > font just for fun. > > <http://lilypond.1069038.n5.nabble.com/file/t3887/textlength-pausen.png> > > I think this pretty much mimicks the original sample. > > All the best, > Torsten > > > > > -- > Sent from: http://lilypond.1069038.n5.nabble.com/User-f3.html > > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: layout of markup text
Hi David, On Mon, Jul 23, 2018 at 6:49 AM, David Nalesnik wrote: > Hi Peter, > > You might find this helpful: > https://github.com/davidnalesnik/lilypond-text-spanner-inner-texts Another great addition you've added to my LilyPond library. Did you know that GitHub's Markdown allows images? Even in the (very user-visible) README.md landing page for a repository? Your repo made me do a bit of Googling this morning, and I applied the results to one of my own score repositories; it works great: https://github.com/trevorbaca/akasha The relevant bit of Markdown is just ... ![Alt text](url) ... which can be as simple as ... ![Float text](my-image.png) ... when using a local resource (my-image.png) housed in the same directory as the README.md file. (There's a surprisingly readable 3-minute guide on GitHub's Markdown authored by GitHub here: https://guides.github.com/features/mastering-markdown/.) All of which is to say that you could render https://github.com/davidnalesnik/lilypond-text-spanner-inner-texts/blob/master/example.ly as notation, do a quick screencapture (to PNG), put the PNG in the same directory as the README.md, and add just a single line to the README.md for a perfect notational illustration of the package's functionality. Thanks again for all your work extending Lily in some very sensible and useful ways; I've thoroughly integrated your text spanner ID extensions, and it's really changed what I'm able easily to communicate with text spanners in my own scores. Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Intended use of the empty chord <> construct
; appears to afford the ability to say "here's a chunk of music of two As with a trill spanner covering both" by appealing to the notional understanding I introduced at the top of this mail: the empty chord functions as an 'anchor-yet-to-come' to which the trill's endpoint can attach **even without knowing what that upcoming note / rest / chord is going to be**. I hope somebody else finds this (admitted corner case of a use) as special as I do. And, hopefully, I'm not misusing the purpose of the <> construct in setting up externalized variables in this way. Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Do we have a "damp" symbol?
Hi Pierre (and Karim, and David), Thanks very much: these are great. Exactly what I was looking for! Trevor. On Wed, Apr 25, 2018 at 12:56 PM, Karim Haddad <karim.had...@ircam.fr> wrote: > This is great ! > Thanx again Pierre for your tips and valuable help ! > > best > K > > On Wed, Apr 25, 2018 at 07:21:37PM +0200, Pierre Perol-Schneider wrote: > > Yes Karim, or even : > > > > % > > \version "2.19.81" > > > > \markup > > %% do not use 'fontsize > > \scale #'(5 . 5) > > { > > \combine \bold "O" > > \path #0.2 > > #'((moveto -.4 .8)(lineto 2.2 .8) > > (closepath) > > (moveto .9 -.5)(lineto .9 2.1)) > > } > > > > > > However, AFAIK, harpists also use the pedal sign (\musicglyph #"pedal.*") > > > > HTH, > > Cheers, > > Pierre > > > > > > > > 2018-04-25 18:56 GMT+02:00 Karim Haddad <karim.had...@ircam.fr>: > > > > > For what it's worth i have a solution that i used, because like you i > > > don't want to use the coda sign. So i used a markup : > > > > > > damp = \markup{ \center-column { > > > {\override #'(thickness . 1.8) > > > \combine \draw-line #'(-1.5 . 0) > > > \combine \draw-line #'(0 . -1.5) > > > \combine \draw-line #'(0 . 1.5) > > > \combine \draw-line #'(1.5 . 0) > > > \draw-circle #0.8 #0.2 ##f > > > }}} > > > > > > I don't know if it the best solution but i got this from the kurt > stone > > > notation book, and it looks rather the same. > > > > > > Best > > > Karim > > > > > > >Hi David (and Trevor), > > > > > > >> Where is the difference to a coda sign? > > > > > > >I believe the preferred symbol is different from a coda sign (more > > > circular, > > > >and less calligraphic), but in recent years [with computer engraving] > > > people > > > >have simply substituted the coda sign. > > > > > > >Hope that helps, > > > >Kieren. > > > > > > > > > -- > > > Karim Haddad > > > > > > email : > > > webpage : http://karim.haddad.free.fr > > > > > > ___ > > > lilypond-user mailing list > > > lilypond-user@gnu.org > > > https://lists.gnu.org/mailman/listinfo/lilypond-user > > > > > -- > Karim Haddad > > email : karim.had...@ircam.fr > webpage : http://karim.haddad.free.fr > > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Do we have a "damp" symbol?
Hi, Is there a "damp string(s)" symbol somewhere in Feta (or elsewhere), as used in harp writing: (Image from http://sites.siba.fi/web/harpnotation/manual/damping-techniques/damp-all-strings .) Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Off topic - SITT 20 Studies in Double Stops
On Tue, Apr 24, 2018 at 2:06 AM, Gianmaria Lari <gianmarial...@gmail.com> wrote: > My question is off topic. I hope it will not be a problem. > > The following is one excerpt from the Sitt book, 20 studies in Double > Stops. > > > Why in the first three measures the G, D and A are written as g4~4~4~4 d > 4~4~4~4 a4~4~4~4 instead of g1 d1 a1? Any idea? > To reinforce the connection between interval width and spread of fingers in the left hand; each measure isn't so much a scalar figure (with pedal) but rather a slurred sequence of double stops of increasing width. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: How to allow overlapping / overprinting markup?
Hey Kieren, Great idea, actually: I was looking for an override I could stick in an externalized stylesheet (the markup in question are in a dedicated AnnotationContext) but I can just as easily iterate the (Abjad-initialized) markup and null-out the dimensions. Thanks (as per usual)! Trevor. On Tue, Jan 9, 2018 at 11:39 AM, Kieren MacMillan < kieren_macmil...@sympatico.ca> wrote: > Hey Trevor, > > > What's the right way to allow two pieces of markup to overlap on top of > each other? > > What about > > \new Staff { > \override TextScript.staff-padding = 4 > \override TextScript.Y-extent = ##f > c'4 > ^ > \markup \with-dimensions-from \null { > Allegro > } > d'4 > ^ > \markup \with-dimensions-from \null { > non troppo > } > e'4 > f'4 > } > > ?? > > Hope that helps! > Kieren. > > > Kieren MacMillan, composer > ‣ website: www.kierenmacmillan.info > ‣ email: i...@kierenmacmillan.info > > -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
How to allow overlapping / overprinting markup?
Hi, What's the right way to allow two pieces of markup to overlap on top of each other? ### BEGIN ### \version "2.19.80" \new Staff { \override TextScript.staff-padding = 4 \override TextScript.Y-extent = ##f c'4 ^ \markup { Allegro } d'4 ^ \markup { non troppo } e'4 f'4 } ### END ### I would imagine that setting y-extent to zero would do the trick. But in the example above, LilyPond moves the second piece of markup up and out of the way. (This, of course, is exactly the right default behavior.) But how do I specify that the two pieces of markup should align vertically (hence the staff-padding) *even at the expense of overprinting*? A morning of setting various spacing parameters to ##f, #'(0 . 0), #'(+info.0 . -inf.0) and the like seemed to yield no overprinting, no matter what the configuration of settings. Thanks, Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: OttavaBracket right endpoint?
On Sat, Oct 7, 2017 at 12:07 PM, David Nalesnik <david.nales...@gmail.com> wrote: > On Wed, Oct 4, 2017 at 6:54 PM, Trevor Bača <trevorb...@gmail.com> wrote: > > Hi, > > > > I’m interested in making the right endpoints of ottava brackets and trill > > spanners coincide. > > > > QUESTION: in ottava-1.png (attached) I like where the trill spanner > ends; is > > there a way to tell the ottava bracket to end at the same point? > > No nice way. > > The problem you see is due to different spanner bounds for > TrillSpanner and OttavaBracket. > TrillSpanner extends to the NoteColumn of the following note, > OttavaBracket only to the final note of the ottavation. > > You can see this by running the following (stem color shows the > difference in endpoints): > > \version "2.19.65" > > \new Staff { > \override Staff.OttavaBracket.after-line-breaking = > #(lambda (grob) > (set! (ly:grob-property > (ly:grob-object (ly:spanner-bound grob RIGHT) 'stem) > 'color) >green)) > \ottava #1 > \override TrillSpanner.after-line-breaking = > #(lambda (grob) > (set! (ly:grob-property > (ly:grob-object (ly:spanner-bound grob RIGHT) 'stem) > 'color) >red)) > c''4 \startTrillSpan > d'' > e'' > f'' > \ottava #0 > %\break > c'4 \stopTrillSpan > d' > e' > f' > } > > A proper solution would lie in the OttavaBracket engraver. (And who > knows what other changes you would need elsewhere to accommodate the > new right-bound.) > > > > > OttavaBracket seems not to implement the to-barline property (in the > > spanner-interface): > > In my understanding, 'to-barline is used to stop a spanner before it > would ordinarily stop, not lengthen it. This could be implemented if > the OttavaBracket 'columns array included the following, non-ottavated > NoteColumn. > > > There’s also a (promising-sounding) connect-to-neighbor property in the > > horizontal-bracket-interface. But I can’t figure out how to override > > property, or whether OttavaBracket implements the property at all: > > This is not what you think. It's used to determine whether to draw an > end-piece of a bracket (that is, with a terminal hatch mark) or an > interior piece (just a line). Perhaps the property should be more > clearly named. > > Sorry I can't give you good news... Hi David, Believe it or not, this is actually extremely helpful: your explanation is crystal clear; and knowing now that there's no (programmatic) way to accomplish the alignment, I'm content to leave the output as-is. (Sometimes I suppose what I'm after is knowing whether I'm missing something available in the system or not.) Thank you! Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: OttavaBracket right endpoint?
On Thu, Oct 5, 2017 at 7:22 AM, Ben <soundsfromso...@gmail.com> wrote: > > On 10/4/2017 7:54 PM, Trevor Bača wrote: > > Hi, > > I’m interested in making the right endpoints of ottava brackets and trill > spanners coincide. > > Any solutions? > > (Definitely not looking for a numeric hack to shorten-pair.) > > Trevor. > > > > Hi Trevor, > > Just curious - but why are you not considering a shorten pair fix? > It seems to work fine here with just one line of code. Does that help at > all in this instance or would that mess something up in your score > elsewhere? > > (see attached) > > === > \version "2.19.65" > > > \new Staff { > > \once \override Staff.OttavaBracket.shorten-pair = #'(-1 . -20.) > >\ottava #1 > > c''4 \startTrillSpan > > d'' > > e'' > > f'' > > \ottava #0 > > \break > > > c'4 \stopTrillSpan > > d' > > e' > > f' > > } > Hi Ben, Because the minute the layout changes the alignment breaks! I'm looking for a *semantic* way of aligning the two objects (so they stay matched as layout changes). Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
OttavaBracket right endpoint?
Hi, I’m interested in making the right endpoints of ottava brackets and trill spanners coincide. QUESTION: in ottava-1.png (attached) I like where the trill spanner ends; is there a way to tell the ottava bracket to end at the same point? Here’s the code that produces ottava-1.png: \version "2.19.65" \new Staff { \ottava #1 c''4 \startTrillSpan d'' e'' f'' \ottava #0 \break c'4 \stopTrillSpan d' e' f' } Moving the lexical position of the close-ottava command (ottava-2.png) doesn’t work: \version "2.19.65" \new Staff { \ottava #1 c''4 \startTrillSpan d'' e'' f'' \break c'4 \stopTrillSpan \ottava #0 d' e' f' } OttavaBracket seems not to implement the to-barline property (in the spanner-interface): \version "2.19.65" \new Staff { \override Staff.OttavaBracket.to-barline = ##t \ottava #1 c''4 \startTrillSpan d'' e'' f'' \ottava #0 \break c'4 \stopTrillSpan d' e' f' } There’s also a (promising-sounding) connect-to-neighbor property in the horizontal-bracket-interface. But I can’t figure out how to override property, or whether OttavaBracket implements the property at all: \version "2.19.65" \new Staff { \override Staff.OttavaBracket.connect-to-neighbor = #'(#t . #t) \ottava #1 c''4 \startTrillSpan d'' e'' f'' \ottava #0 \break c'4 \stopTrillSpan d' e' f' } Any solutions? (Definitely not looking for a numeric hack to shorten-pair.) Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Syntax for multiple slurs per Voice?
Hi David, On Thu, Jul 27, 2017 at 8:11 PM, David Nalesnik <david.nales...@gmail.com> wrote: > Hi Trevor, > > On Thu, Jul 27, 2017 at 8:38 AM, Trevor Bača <trevorb...@gmail.com> wrote: > > Hi David (Nalesnik), > > > > On Tue, Oct 20, 2015 at 11:49 AM, David Nalesnik < > david.nales...@gmail.com> > > wrote: > >> > >> Hi Trevor, > >> > >> On Tue, Oct 20, 2015 at 11:31 AM, Trevor Bača <trevorb...@gmail.com> > >> wrote: > >>> > >>> Hi, > >>> > >>> I'm coming late to this discussion, but potentially *very* excited > about > >>> what this might mean. Will the available of spanner IDs mean that a > single > >>> voice will (eventually) be able to carry multiple *text spanners*??? > >>> > >>> This would be incredibly useful in my own scores (and probably also in > >>> the scores of very many other composers who work with simultaneous > >>> continuous transitions). I've attached a PNG of an example from a > recent > >>> cello piece. The score is in LilyPond, but the engraving required > multiple > >>> (redundant) invisible markup voices. Would be so elegant to be need > only a > >>> single voice. > >>> > >>> > >> > >> I recently rewrote Text_spanner_engraver, incorporating 'spanner-id to > >> allow an unlimited number of TextSpanners per voice. The entry method > isn't > >> particularly pretty (basically it's equivalent to what you had to do > with > >> slurs before David Kastrup came up with the current solution). > >> > >> I'd like to get this into the codebase, but I'm unsure if I need to port > >> it to C++. Also, there's a chance another engraver to bind the > simultaneous > >> spanners might be needed (as piano pedal lines are bound by an alignment > >> engraver). > >> > >> Attached is a more recent version than the one found here: > >> http://www.mail-archive.com/lilypond-user%40gnu.org/msg105470.html > >> > >> Hope this helps! > > > > > > > > I'm (finally!) working at integrating your alternateTextSpannerEngraver. > My > > testing so far shows that it allows for very much of what I'm looking for > > (ie, multiple text spanners overlapping each other in a single voice). > > > > Two questions: > > > > 1. Is the version you attached as "text-spanner-id.ly" (way back in > October > > 2015!) still the most recent version of your work? > > Ugh -- I was going to say that a (perhaps) more current version is on > GitHub, but I seem to have never created a repository for it... Old > age. > > So I guess your version is the newest :( > > Let me know if you run into any difficulties, and I'll be happy to > create that newer version. > Ok, great. Thanks very much; that was the confirm I was looking for. I'll let you know how integration goes. Thanks! Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Syntax for multiple slurs per Voice?
Hi David (Nalesnik), On Tue, Oct 20, 2015 at 11:49 AM, David Nalesnik <david.nales...@gmail.com> wrote: > Hi Trevor, > > On Tue, Oct 20, 2015 at 11:31 AM, Trevor Bača <trevorb...@gmail.com> > wrote: > >> Hi, >> >> I'm coming late to this discussion, but potentially *very* excited about >> what this might mean. Will the available of spanner IDs mean that a single >> voice will (eventually) be able to carry multiple *text spanners*??? >> >> This would be incredibly useful in my own scores (and probably also in >> the scores of very many other composers who work with simultaneous >> continuous transitions). I've attached a PNG of an example from a recent >> cello piece. The score is in LilyPond, but the engraving required multiple >> (redundant) invisible markup voices. Would be so elegant to be need only a >> single voice. >> >> >> > I recently rewrote Text_spanner_engraver, incorporating 'spanner-id to > allow an unlimited number of TextSpanners per voice. The entry method > isn't particularly pretty (basically it's equivalent to what you had to do > with slurs before David Kastrup came up with the current solution). > > I'd like to get this into the codebase, but I'm unsure if I need to port > it to C++. Also, there's a chance another engraver to bind the > simultaneous spanners might be needed (as piano pedal lines are bound by an > alignment engraver). > > Attached is a more recent version than the one found here: > http://www.mail-archive.com/lilypond-user%40gnu.org/msg105470.html > > Hope this helps! > I'm (finally!) working at integrating your alternateTextSpannerEngraver. My testing so far shows that it allows for very much of what I'm looking for (ie, multiple text spanners overlapping each other in a single voice). Two questions: 1. Is the version you attached as "text-spanner-id.ly" (way back in October 2015!) still the most recent version of your work? 2. Was there ever any movement towards integrating the functionality of your rewritten engraver into the Lily's primary codebase? (Back in October 2015 David Kastrup wrote that he was also thinking through how multiple spanners might be integrated, too, if I remember correctly.) Thanks much, Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
systems-per-page = 3 ... except on first and last pages?
Hi, I'm using ... systems-per-page = 3 ... in the \paper block of a current score. However, the big block of title text on the first page makes three systems cramped. (Two would be better.) Correspondingly, fewer measures of music on the last page makes each of the three systems on the last page too short. (Again two systems would be better.) Is there an (inline) way to override the effect of systems-per-page on only select pages? Thanks, Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Openlilylib snippets announcement
On Tue, Dec 27, 2016 at 11:03 AM, SoundsFromSound <soundsfromso...@gmail.com > wrote: > Trevor Bača-2 wrote > > And as a brief aside - if I may say so - Trevor, thank YOU so much for all > the work you have put (and still put) into Abjad. > > I use it all the time. I use it in almost every composition. It's the first > thing I go to when preparing a new piece, and for getting a lot of options > in front of me. Nothing "algorithmic", just pure boatloads of options. > > I love being able to create structure, set some boundaries, and then get a > ton of inspiration from Abjad in a matter of hours instead of months. Such > an amazing, powerful utility - and thanks for doing it in Python too :) > > I love the direction that Abjad is going...hope it keeps on going strong! > > Ben Thanks, Ben! Those are kind words. And -- even more excitingly -- it's awesome to hear that you're getting legit compositional use outta Abjad! This has been the point the whole time: to make intermediate-level compositional ideas (ie, above notation but below the level of complete score) easier to model and -- ultimately -- enjoy while composing. Abjad is still very much going strong: Josiah (Oberholtzer) and I both have many features in development branches waiting to be merged into main for Abjad 2.20. Among them: automated set-class analysis with a new SetClass object; compoundable twelve-tone operators; new Markup methods to better complement the LilyPond markup functions; a powerful façade pattern for persisting arbitrary compositional expressions to file; smarter item-indexing in the LilyPondFile object; and many more. After more than a decade, the decision to implement Abjad in Python continues to wear very well. And although Abjad and LilyPond are architected differently, it's exciting to see LilyPond Python updates as an active topic on the LilyPond dev list again. Every score I've written for more than 10 years now has been 100% Abjad plus LilyPond. At almost every rehearsal, musicians complement the clarity of the LilyPond-rendered scores and parts. And the compositional working pattern feels stronger and stronger every couple of weeks. In 2017 the goal will be to make Abjad increasingly easy to get started with: more cookbook-style documentation is coming up, as well as in-real-life camps and workshops throughout the year that I'll be hosting together with Josiah and Jeff Treviño. Thanks for the feedback, and happy modeling and composing! Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Openlilylib snippets announcement
Dear Andrew, Just a quick note to tell you much I'm enjoying the pedal decorations work you implemented in openlilylib: https://github.com/openlilylib/snippets/tree/master/notation-snippets/pedal-decorations Being able to head a pedal bracket with L, M, R for the left, middle, right pedals is incredibly easy to do with the pedal decorations (and overcomes a hard limitation in LilyPond's default pedal spanner implementation which forbids custom markup). Thanks so much for publishing the work: all incorporated into the piano music I'm currently writing. Also, I'm somewhat embarrassed to say that the pedal decorations were my first real interaction with openlilylib. Quite a collection of extensions! Other LilyPond users with even minimal Git experience will find it easy to clone the repository. And LilyPond users without Git experience might be interested in knowing that they can cut-and-paste directly from many of the openlilylib files directly into their own scores. The entire project is really worth checking out. Thanks again, Trevor. On Tue, Nov 22, 2016 at 3:47 AM, Andrew Bernard <andrew.bern...@gmail.com> wrote: > Hello All, > > > > Just letting you know that I have contributed some snippets to openlilylib > worth having for doing some small things in contemporary style scores, but > which need some Scheme coding. > > > > Slashed beams > > > > A function \slashBeam that can add a slash to the left or the right of a > beamed group, with a fair degree of control over angle and position. This > is a generalisation of work that others have created previously, in > particular it extends the concept of \slash. > > > > Slashed stems > > > > The function \slashStem allows you to add a slash to a stem with a fair > degree of control over position and angle. Note that this is a different > case from slashing a beamed group. [There may be arguments against this but > I wanted a separate function.] I developed this to make horizontal stem > slashes, but it was easy to generalize. > > > > Pedal decorations > > > > People have often requested to be able to add cautionary labels to pedal > brackets on continued lines. There have been many workarounds given. This > solution in Scheme attacks the problem directly by modifying the bracket > stencil. An arbitrary text label can be added, and optional continuation > arrows can be added to the right hand end of the bracket. This style is > commonly seen in contemporary scores. > > > > These three new capabilities can be found under snippets/notation-snippets > in the openlilylib repository. > > > > If there do not exist bugs and defects I would be surprised. I am happy to > take feedback and suggestions. The code is for the >= 2.19.45 releases. I > have not tested on 2.18.2, and unless somebody requests, I don’t intend to. > > > > Andrew > > > > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > > -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: mac unstable 2.19.49
Agreed. I can confirm the MacOS fix in 2.19.49: works perfectly under MacOS 10.12. And does, in fact, appear faster than 2.19.46! The work applied towards this fix is very much appreciated. Trevor. On Mon, Oct 17, 2016 at 3:45 PM, Stan Sanderson <stans...@gmail.com> wrote: > > Many thanks to all who worked on the problem and found the solution. > v2.19.49 seems faster than v2.19.46! > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Mac OSX Sierra Compatibility
On Tue, Oct 4, 2016 at 10:47 AM, Abraham Lee <tisimst.lilyp...@gmail.com> wrote: > Greetings, all! > > With the recent release of Mac OSX Sierra (10.12), I was wondering if > anyone who has taken that upgrade has since found any substantial problems > with LilyPond and/or Frescobaldi? > I installed yesterday, and LilyPond *appears* to be working without a hitch. (I can't speak to Fescobaldi, however.) The MacBook did, however, have some spotty shut-down (and restart) issues after install, however. (Hanging on a black screen after explicit requests for either process.) But those problems magically disappeared this morning. Seems stable so far. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: v2.19.47 on Mac x86 (Jacques Menu Muzhic)
On Sun, Sep 25, 2016 at 1:53 PM, Masamichi Hosoda <truer...@trueroad.jp> wrote: > >>> https://bugs.freedesktop.org/show_bug.cgi?id=97546 > >>> > >>> The proposed fix hasn't been applied yet to the fontconfig git > >>> repository – maybe we should downgrade GUB's fontconfig version to > >>> 2.12.0 until this is fixed. > >> > >> I think that there is another possible solution. To use the > >> proposed patch in GUB. > > > > Certainly. However, I can't estimate whether there aren't side > > effects... On the other hand, given that the patch is from the > > fontconfig maintainer, there are high chances that it is the right > > one :-) > > I've created pull request for GUB. > https://github.com/gperciva/gub/pull/29 > > The patch is only applied to building binary for mac. This is really great to see. And accords exactly with the test results I added to the original thread showing that 2.19.47 (and .48) are, in fact, definitely rebuilding one of the font caches at every run of LilyPond. Thanks very much for tracking this down! -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Abjad bootcamp this July at Stanford's CCRMA
Hi everyone, I'd like to take a moment to mention that I'll be teaching a five-day bootcamp on composing with Abjad this July at Stanford's CCRMA in Palo Alto, California: CCRMA: Formalized Score Control: Using Python & Abjad in Music Composition <https://ccrma.stanford.edu/workshops/abjad> Friends and very close collaborators Josiah Wolf Oberholtzer and Jeffrey Treviño will be teaching with me. Abjad is Python-based composition environment that uses LilyPond for all stages of notational output, from precomposition all the way through to publication-quality finished scores. Abjad is especially useful for composers who think of the music they write in a "formalized" way: that is, for composers who write with patterns or processes in their music that can benefit from being object-modeled. You can read more about Abjad here: www.projectabjad.org And you can take a look at finished scores and listen to pieces here: http://www.projectabjad.org/gallery.html If you like academic papers, you can read an overview of Abjad here: https://github.com/Abjad/tenor2015/blob/master/abjad.pdf We especially encourage intermediate and advanced users of LilyPond to consider attending the bootcamp: Abjad brings the full power of the Python programming language to the syntax of LilyPond files that you are already familiar with. If you've been thinking about adding a programming component to your compositional process, the bootcamp in July will be an ideal way to get started. We're also happy to announce that Stanford has agreed to work with us to provide a number of scholarships for women composers who'd like to attend the bootcamp. We think it's important that composers of all backgrounds from all over the world should have access to technologies to help make their work as composers more powerful and more fun! Best wishes for happy composing and engraving to everyone, Trevor. -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Syntax for multiple slurs per Voice?
Hi, I'm coming late to this discussion, but potentially *very* excited about what this might mean. Will the available of spanner IDs mean that a single voice will (eventually) be able to carry multiple *text spanners*??? This would be incredibly useful in my own scores (and probably also in the scores of very many other composers who work with simultaneous continuous transitions). I've attached a PNG of an example from a recent cello piece. The score is in LilyPond, but the engraving required multiple (redundant) invisible markup voices. Would be so elegant to be need only a single voice. Trevor. On Fri, Oct 2, 2015 at 4:43 PM, David Kastrup <d...@gnu.org> wrote: > Thomas Morley <thomasmorle...@gmail.com> writes: > > > (4) > > Observation: > > Using Slurs with and without setted 'spanner-id works as well > > \relative { c'\=1( d( e\=1) f) } > > > > \relative { c'\=1(^( e\=1)) } > > The default is a spanner-id of "" so that's not much of a surprise. > > -- > David Kastrup > > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > -- Trevor Bača www.trevorbaca.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: multiple TextSpanners per voice
Hi, I'd like to add that I'm *incredibly* excited by this work. The ability to have multiple text spanners in a voice -- and to tweak each independently -- is something I've wanted in LilyPond for many years. (I responded to a different thread about this a touch too early only moments ago; apologies, catching up on list mail.) This is really incredibly exciting to me, and I think it will be to very many other composers once the ability is made clear in a public release (and in the docs). For what it's worth, I'd very much like to request the promotion of this work to a fully acknowledged new feature (respecting, of course, the needs of feature sequencing in the release process). I'm not quite sure what the best (user) interface for this is. I suppose \startTextSpan[One|Two|Three|Four] will work. Though it seems like \startTextSpan #1 or \startTextSpan #"fancy-spanner-name" would be a more complete generalization of the feature. Regardless of the user interface, this work is important. Please consider elevating the change to a full feature (with a NEWS entry and a graphic example or two) with user syntax that is as streamlined and clear as possible. I think we will be surprised at the amount of uptake among many composers. Thanks so much for this, David. Trevor. On Mon, Oct 5, 2015 at 10:09 AM, David Nalesnik <david.nales...@gmail.com> wrote: > Ok, this should do it. > > The intention is to provide extra functionality to text spanners. By > using this code, you have all the functionality of normal text spanners, > but you are able to have multiple spanners per voice. > > You simply need to swap the regular engraver for this one in a layout > block, and use the commands I've defined: \startTextSpanOne, and the like. > (You can change the names, of course, and add more. This is crying out > for a better interface, I know,) > > Regarding difficulties mentioned earlier in the thread: > > The spanners should nest properly and maintain their orientation across > line breaks. Here this is achieved by assigning minute variations of > outside-staff-priority behind the scenes. (Turns out you can use > outside-staff-priorities like 350.0001 ) You can still override and > tweak outside-staff-priority of TextSpanner if you want. > > I believe that this manipulation may be avoided by inventing a new > alignment grob "to bind them all." but I'm not sure. Since the attached > seems sufficient, this could wait until time came (if ever) to add this to > the code base. > > DN > > %%% > > > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > > -- Trevor Bača www.trevorbaca.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: multiple TextSpanners per voice
This is excellent. The combination of the engraver and the ID labeling work perfectly. I think it would be wonderful to consider including David's engraver in a coming public release. On Tue, Oct 20, 2015 at 1:28 PM, David Nalesnik <david.nales...@gmail.com> wrote: > > > On Tue, Oct 20, 2015 at 11:50 AM, David Kastrup <d...@gnu.org> wrote: > >> Trevor Bača <trevorb...@gmail.com> writes: >> >> > Hi, >> > >> > I'd like to add that I'm *incredibly* excited by this work. The ability >> to >> > have multiple text spanners in a voice -- and to tweak each >> independently >> > -- is something I've wanted in LilyPond for many years. (I responded to >> a >> > different thread about this a touch too early only moments ago; >> apologies, >> > catching up on list mail.) This is really incredibly exciting to me, >> and I >> > think it will be to very many other composers once the ability is made >> > clear in a public release (and in the docs). >> > >> > For what it's worth, I'd very much like to request the promotion of this >> > work to a fully acknowledged new feature (respecting, of course, the >> needs >> > of feature sequencing in the release process). >> > >> > I'm not quite sure what the best (user) interface for this is. I suppose >> > \startTextSpan[One|Two|Three|Four] will work. Though it seems like >> > \startTextSpan #1 or \startTextSpan #"fancy-spanner-name" would be a >> more >> > complete generalization of the feature. >> >> \=1\startTextSpan ... \=1\endTextSpan already work as a user interface. >> It's just that there is nothing that would actually _heed_ the settings >> of "spanner-id" achieved in that manner yet. >> >> > This works wonderfully well as an interface with the engraver I posted. > Thank you so much! Now it is possible to remove all the extra definitions > of \startTextSpanEightyFour and the like. > > See attached. > > DN > > % > > -- Trevor Bača www.trevorbaca.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Smoothing out RepeatTie irregularities between chords?
Hi David and Pierre, Ok, it looks like both solutions will work for me, so thank you very much. And I guess this means it's not necessary to file a bug report, either. Thanks! Trevor. On Fri, Apr 17, 2015 at 6:31 AM, David Nalesnik david.nales...@gmail.com wrote: Hi, 2015-04-16 3:36 GMT+02:00 Trevor Bača trevorb...@gmail.com: Hi, Using the \shape command to length repeat ties works great between notes. But weird behavior seems to arise with lengthened repeat ties between chords: ### BEGIN ### \version 2.19.17 \language english \new Staff \with { \shape #'((-2 . 0) (-1 . 0) (-0.5 . 0) (0 . 0)) RepeatTie \override RepeatTie.X-extent = ##f } { c' g'1 c' g'1 \repeatTie c' g'1 \repeatTie c' g'1 \repeatTie } ### END ### (Image attached.) Would anyone have any clues as to how to make the repeat ties all have the same length? In order to use a shape-like command with repeat ties in a chord, we have to get at the individual ties organized by the RepeatTieColumn. Here's a variant of \shapeTieColumn (at https://github.com/openlilylib/openlilylib/tree/master/notation-snippets/shaping-bezier-curves/shape-tie-column) which achieves that. Each tie within the chord is represented with its own list of offsets. \version 2.19.17 \language english shapeRepeatTieColumn = #(define-music-function (parser location all-offsets) (list?) #{ \override RepeatTieColumn #'before-line-breaking = #(lambda (grob) (let ((ties (ly:grob-array-list (ly:grob-object grob 'ties (for-each (lambda (tie offsets-for-tie) (if (number-pair-list? offsets-for-tie) (set! (ly:grob-property tie 'control-points) (map (lambda (x y) (coord-translate x y)) (ly:semi-tie::calc-control-points tie) offsets-for-tie ties all-offsets))) #}) \new Staff \with { \shapeRepeatTieColumn #'( ((-2 . 0) (-1 . 0) (-0.5 . 0) (0 . 0)) ((-2 . 0) (-1 . 0) (-0.5 . 0) (0 . 0)) ) \override RepeatTie.X-extent = ##f } { c' g'1 c' g'1 \repeatTie c' g'1 \repeatTie c' g'1 \repeatTie } % HTH, David ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: [AFIM.INFO] TENOR 2015: First International Conference on New Technologies for Music Notation and Representation
Hi, I'll be there reading a paper about Abjad coauthored with Josiah Oberholtzer, Jeff Treviño and Victor Adán. Jeff will be there with me to help present (but Josiah and Victor will be staying in the US during the conference). I think we're presenting at 10:20 am on Saturday (May 30) at the Maison de la Recherche. Anyone who's in Paris that weekend should mail and perhaps we could meet for coffee before or after. The paper we put together on Abjad is modeled in part on Han-Wen and Jan's introductory LilyPond paper they presented in Firenze years ago. LilyPond (and Python) are what have made Abjad possible for many years now. And so it's a pleasure to finally acknowledge the fact in an academic setting. Looking forward to perhaps meeting some new faces in Paris. Trevor. On Wed, Apr 22, 2015 at 8:09 AM, Paul Morris p...@paulwmorris.com wrote: Anyone planning on attending this conference in Paris at the end of May? I see a couple of LilyPonders on the program, Trevor Bača and Mike Solomon, and Daniel Spreadbury will be presenting on the SMuFL font standard. -Paul anders.vinjar wrote Topics: Fwd: [AFIM.INFO] TENOR 2015: First International Conference on New Technologies for Music Notation and Representation Début du message réexpédié : De: Pierre Couprie (Paris4) lt; pierre.couprie@ gt; Objet: [AFIM.INFO] TENOR 2015: First International Conference on New Technologies for Music Notation and Representation Date: 27 octobre 2014 13:50:00 UTC+1 À: afim.info@ TENOR 2015 First International Conference on New Technologies for Music Notation and Representation Call for papers Paris, France, 29-30 May 2015 University of Paris-Sorbonne / Ircam The first International Conference on New Technologies for Music Notation and Representation is dedicated to issues in theoretical and applied research and development in Music Notation and Representation, with a strong focus on computer tools and applications, as well as a tight connection to music creation. Until very recently, the support provided by the computer music to the field of symbolic notation remained fairly conventional. However, recent developments indicate that the field of tools for musical notation is now moving towards new forms of representation. Moreover, musical notation, transcription, sonic visualization, and musical representation are often associated in the fields of musical analysis, ethnology, and acoustics. The aim of this conference is to explore all of recent mutations of notation and representation in all domains of music. Topics of interest Musical creation • Notation in electronic and electroacoustic music • Notations for interactive music • Notation for sound installations • Notation for the multimedia and mixed arts • Live coding Musical notation • Innovative computer applications for music notation • Languages for music notation • Gesture notation • Notation and mobile devices • Exchange formats for music notation • Online tools and languages for music notation and representation Analysis, notation pieces studies • Analysis of contemporary notations • Semiotic of new notation forms • Ontology of the notation of interactive music • Data mining, music notation corpus, databases Representation, transcription • Sound visualization • Interactive representation • Transcription in ethnomusicology and representation of non-written musics • Non-western or ancient music trans-notation • Representation and transcription in acoustic ecology and sound landscape • Optical music recognition Listening, teaching • Listening guides • Live and offline annotation • Notations for music pedagogy Submission Information submission: http://tenor2015.tenor-conference.org. Deadline for papers submission: January 15, 2015. With the collaboration of: Institut de Recherche en Musicologie, CNRS UMR 8223 Université Paris-Sorbonne Ircam LAM, Lutheries - Acoustique - Musique, UPMC GRAME, Centre national de création musicale, Lyon AFIM, Association Française d'Informatique Musicale ___ lilypond-user mailing list lilypond-user@ https://lists.gnu.org/mailman/listinfo/lilypond-user -- View this message in context: http://lilypond.1069038.n5.nabble.com/AFIM-INFO-TENOR-2015-First-International-Conference-on-New-Technologies-for-Music-Notation-and-Repren-tp168074p175003.html Sent from the User mailing list archive at Nabble.com. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing
Re: Double- and triple-tonguing articulation
Hi Alex, Hi Steven, Yes, this works perfectly. Thank you both. Trevor. On Thu, Apr 16, 2015 at 2:54 PM, palisander alvo...@btinternet.com wrote: Trevor Bača-2 wrote Hi, Does anyone know how to combine two (or three) staccato dots in a horizontal row above a note head? Trevor, This is, I think, what you are looking for: http://lsr.di.unimi.it/LSR/Item?id=772 Alex Voice -- View this message in context: http://lilypond.1069038.n5.nabble.com/Double-and-triple-tonguing-articulation-tp174626p174631.html Sent from the User mailing list archive at Nabble.com. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Double- and triple-tonguing articulation
Hi, Does anyone know how to combine two (or three) staccato dots in a horizontal row above a note head? Rheinhold asked this question some years back ... http://lists.gnu.org/archive/html/lilypond-user/2008-04/msg00159.html ... but it looks like no one cold figure it out at the time. Thank for any pointers. Trevor. -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Are harmonic trills possible?
Hi, Is it possible to override trill pitch note heads in the shape of a (diamond) natural harmonic? This attempt ... ### BEGIN ### \version 2.19.17 \language english \new Staff { \override TrillPitchHead.style = #'diamond \pitchedTrill c'4 \startTrillSpan cs' d'4 \stopTrillSpan e'4 f'4 } ### END ### ... prints no trill pitch note head at all: GNU LilyPond 2.19.17 Processing `tmp.ly' Parsing... Interpreting music... Preprocessing graphical objects... programming error: must have stem dir for note head continuing, cross fingers tmp.ly:8:9: warning: none of note heads `noteheads.s' or `noteheads.d' found c'4 \startTrillSpan cs' Does anyone have a workaround? (I'm wanting the sort of mixed trill possible between an open string and one of the string's harmonic nodes, standard as per Saariaho, Sciarrino and so on.) -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Are harmonic trills possible?
Hi Pierre, This is absolutely wonderful. Thank you so much. (Right before a deadline and this is incredibly helpful.) Would you, by chance, know a way to make the diamond white instead of black? Trevor. On Wed, Apr 15, 2015 at 1:06 PM, Pierre Perol-Schneider pierre.schneider.pa...@gmail.com wrote: Hi Trevor, How about: \version 2.19.17 %\language english \new Staff { %\override TrillPitchHead.style = #'diamond \once\override TrillPitchHead.stencil = #(lambda (grob) (grob-interpret-markup grob #{ \markup \musicglyph #noteheads.s2harmonic #} )) \pitchedTrill c'4 \startTrillSpan cis' d'4 \stopTrillSpan e'4 f'4 } Cheers, Pierre 2015-04-15 18:11 GMT+02:00 Trevor Bača trevorb...@gmail.com: Hi, Is it possible to override trill pitch note heads in the shape of a (diamond) natural harmonic? This attempt ... ### BEGIN ### \version 2.19.17 \language english \new Staff { \override TrillPitchHead.style = #'diamond \pitchedTrill c'4 \startTrillSpan cs' d'4 \stopTrillSpan e'4 f'4 } ### END ### ... prints no trill pitch note head at all: GNU LilyPond 2.19.17 Processing `tmp.ly' Parsing... Interpreting music... Preprocessing graphical objects... programming error: must have stem dir for note head continuing, cross fingers tmp.ly:8:9: warning: none of note heads `noteheads.s' or `noteheads.d' found c'4 \startTrillSpan cs' Does anyone have a workaround? (I'm wanting the sort of mixed trill possible between an open string and one of the string's harmonic nodes, standard as per Saariaho, Sciarrino and so on.) -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Are harmonic trills possible?
Yes: perfect. Thank you, Stephen Pierre! Trevor. On Wed, Apr 15, 2015 at 1:58 PM, Pierre Perol-Schneider pierre.schneider.pa...@gmail.com wrote: I'm glad you like it! Steven' answer's looks perfect. If needed just make your choice here: http://lilypond.org/doc/v2.18/Documentation/notation/the-feta-font#special-notehead-glyphs Cheers, Pierre 2015-04-15 19:51 GMT+02:00 Steven Weber pant...@hotmail.com: Try s0harmonic instead of s2harmonic --Steven *From:* lilypond-user-bounces+panteck=hotmail@gnu.org [mailto: lilypond-user-bounces+panteck=hotmail@gnu.org] *On Behalf Of *Trevor Baca *Sent:* Wednesday, April 15, 2015 10:48 AM *To:* Pierre Perol-Schneider *Cc:* lilypond-user *Subject:* Re: Are harmonic trills possible? Hi Pierre, This is absolutely wonderful. Thank you so much. (Right before a deadline and this is incredibly helpful.) Would you, by chance, know a way to make the diamond white instead of black? Trevor. On Wed, Apr 15, 2015 at 1:06 PM, Pierre Perol-Schneider pierre.schneider.pa...@gmail.com wrote: Hi Trevor, How about: \version 2.19.17 %\language english \new Staff { %\override TrillPitchHead.style = #'diamond \once\override TrillPitchHead.stencil = #(lambda (grob) (grob-interpret-markup grob #{ \markup \musicglyph #noteheads.s2harmonic #} )) \pitchedTrill c'4 \startTrillSpan cis' d'4 \stopTrillSpan e'4 f'4 } Cheers, Pierre 2015-04-15 18:11 GMT+02:00 Trevor Bača trevorb...@gmail.com: Hi, Is it possible to override trill pitch note heads in the shape of a (diamond) natural harmonic? This attempt ... ### BEGIN ### \version 2.19.17 \language english \new Staff { \override TrillPitchHead.style = #'diamond \pitchedTrill c'4 \startTrillSpan cs' d'4 \stopTrillSpan e'4 f'4 } ### END ### ... prints no trill pitch note head at all: GNU LilyPond 2.19.17 Processing `tmp.ly' Parsing... Interpreting music... Preprocessing graphical objects... programming error: must have stem dir for note head continuing, cross fingers tmp.ly:8:9: warning: none of note heads `noteheads.s' or `noteheads.d' found c'4 \startTrillSpan cs' Does anyone have a workaround? (I'm wanting the sort of mixed trill possible between an open string and one of the string's harmonic nodes, standard as per Saariaho, Sciarrino and so on.) -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user -- Trevor Bača trevorb...@gmail.com -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Smoothing out RepeatTie irregularities between chords?
Hi, Using the \shape command to length repeat ties works great between notes. But weird behavior seems to arise with lengthened repeat ties between chords: ### BEGIN ### \version 2.19.17 \language english \new Staff \with { \shape #'((-2 . 0) (-1 . 0) (-0.5 . 0) (0 . 0)) RepeatTie \override RepeatTie.X-extent = ##f } { c' g'1 c' g'1 \repeatTie c' g'1 \repeatTie c' g'1 \repeatTie } ### END ### (Image attached.) Would anyone have any clues as to how to make the repeat ties all have the same length? Trevor. -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Messiaen-style ties?
lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Messiaen-style ties?
Hi Kieren, Simon, Pierre, Abraham everyone, Just a follow up that using \repeatTie does definitely accomplish what I was looking for; I have it integrated into the score now and it's working in all configurations. A remaining question: I'm guessing there's not a way to lengthen repeat-ties? (Hence why Pierre demoed the work-around of hiding preceding grace notes?) I tried messing with the X-extent of the LaissezVibrerTieColumn grob ... \new Staff \with { \override LaissezVibrerTieColumn #'X-extent = #'(-3 . 3) } { c'2 c'2 \repeatTie c'2 \repeatTie c'2 \repeatTie } ... but apparently to no avail. If anyone has magic available to lengthen repeat-ties, that would be awesome. (If no magic is available then I think the players will still know what's going on: the symbols aren't as obvious on the page when you first start to read them (as compared to Messiaen's), but I printed out a page and sat it on a stand and I think they will be noticeable enough to work in performance.) Trevor. On Sun, Mar 22, 2015 at 7:07 PM, Trevor Bača trevorb...@gmail.com wrote: Hi everyone, Wow, thank you all so much. I hadn't realized the functionality already exists. Truly wonderful. Next time I'll take a better look at the docs, too. Thanks again. I'll be integrating now to see if I can use the functionality in the current score. Trevor. On Sun, Mar 22, 2015 at 5:43 PM, Kieren MacMillan kieren_macmil...@sympatico.ca wrote: Hi Simon, True, this gives quite the desired output, but it would make sense to have this as a 'style option to Tie rather than using different musical input in the first place. +1 So I’d support an enhancement tracker issue and will post this to ly-bug. Thanks for doing that. Best, Kieren. ___ Kieren MacMillan, composer www: http://www.kierenmacmillan.info email: i...@kierenmacmillan.info ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user -- Trevor Bača trevorb...@gmail.com -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Having shortInstrumentName appear at start of score (instead of instrumentName)?
Hi Harm hi Nathan, Incredible. I'm shocked that this do-able. Harm, the solution of overriding the after-line-breaking property on the Instrument grob with a lambda especially blows my mind. Nathan, thank you for expanding my understanding of context construction with a single example. Integrated into my score and it works perfectly. Very much appreciated. Trevor. On Tue, Mar 31, 2015 at 6:54 PM, Thomas Morley thomasmorle...@gmail.com wrote: 2015-03-31 22:23 GMT+02:00 Nathan Ho when.possi...@gmail.com: On Tue, Mar 31, 2015 at 12:46 PM, Trevor Bača trevorb...@gmail.com wrote: Hi, Let's say that I have a stylesheet that sets instrumentName values and shortInstrumentName values for a bunch of contexts in the normal way: \context { \Staff ... instrumentName = \markup { Flute } shortInstrumentName = \markup { Fl. } } \context { \Staff ... instrumentName = \markup { Oboe } shortInstrumentName = \markup { Ob. } } ... QUESTION: is there a way to have the shortInstrumentName values appear at the start of the score (meaning that the instrumentName values will never appear)? The question looks pathological. (Why would you set a value for instrumentName if you don't want instrumentName to appear in the score?) But the motivation is as follows. I have a complex score that I've broken into multiple chunks (meaning separate LilyPond files with separate score blocks). All chunks \include the same stylesheet. But I want instrumentName to appear at the start of only chunk 1 (because chunk 1 is the start of the actual sore). For chunks 2, 3, ... I'd like shortInstrumentName to appear at the start of each score (because each non-first score is actually modeling subsequent parts of the one actual score). I can't imagine that there would be a setting for this. But is there some sort of Scheme wizardry that can be put at the beginning of each of the non-first score chunks to say set instrumentName to the value of shortInstrumentName? This is pretty nasty but it does what you're trying to accomplish. shortInstrAsInstr = #(lambda (context) (ly:context-set-property! context 'instrumentName (ly:context-property context 'shortInstrumentName)) '()) \new Staff \with { instrumentName = Viola shortInstrumentName = Vla. \consists \shortInstrAsInstr } { c1 c1 \break c1 c1 } Regards, Nathan Less nasty: \version 2.19.17 \layout { \context { \Staff \override InstrumentName.after-line-breaking = #(lambda (grob) (ly:grob-set-property! grob 'long-text (ly:grob-property grob 'text))) } } \new Staff \with { instrumentName = Flute shortInstrumentName = Fl. } { c''1 } \new Staff \with { instrumentName = Oboe shortInstrumentName = Ob. } { d''1 } HTH, Harm -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Having shortInstrumentName appear at start of score (instead of instrumentName)?
Hi, Let's say that I have a stylesheet that sets instrumentName values and shortInstrumentName values for a bunch of contexts in the normal way: \context { \Staff ... instrumentName = \markup { Flute } shortInstrumentName = \markup { Fl. } } \context { \Staff ... instrumentName = \markup { Oboe } shortInstrumentName = \markup { Ob. } } ... QUESTION: is there a way to have the shortInstrumentName values appear at the start of the score (meaning that the instrumentName values will never appear)? The question looks pathological. (Why would you set a value for instrumentName if you don't want instrumentName to appear in the score?) But the motivation is as follows. I have a complex score that I've broken into multiple chunks (meaning separate LilyPond files with separate score blocks). All chunks \include the same stylesheet. But I want instrumentName to appear at the start of only chunk 1 (because chunk 1 is the start of the actual sore). For chunks 2, 3, ... I'd like shortInstrumentName to appear at the start of each score (because each non-first score is actually modeling subsequent parts of the one actual score). I can't imagine that there would be a setting for this. But is there some sort of Scheme wizardry that can be put at the beginning of each of the non-first score chunks to say set instrumentName to the value of shortInstrumentName? That would be truly amazing. Trevor. -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Padding inside \bracket markup?
Hi Nathan, Thank you. That did it exactly. Trevor. On Tue, Mar 31, 2015 at 1:27 PM, Nathan Ho when.possi...@gmail.com wrote: On Tue, Mar 31, 2015 at 7:40 AM, Trevor Bača trevorb...@gmail.com wrote: Hi, Is there a way to pad bracketed markup ... % doesn't work \override #'(padding . 2) \bracket Foo ... analogously to parenthesized markup ... % does work \override #'(padding . 2) \bracket Foo ... with an \override, or equivalent? Trevor. Try this: \bracket \pad-around #2 Foo Regards, Nathan -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Padding inside \bracket markup?
Hi, Is there a way to pad bracketed markup ... % doesn't work \override #'(padding . 2) \bracket Foo ... analogously to parenthesized markup ... % does work \override #'(padding . 2) \bracket Foo ... with an \override, or equivalent? Trevor. -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Constant sized rehersal marks?
Hi Kieren, This looks like exactly what I need. I must a bit slow this morning, but to what do you assign the format-oval-barnumbers function? Setting ... \override BarNumber.stencil = #format-oval-barnumbers ... gives an error, and I must be missing something simple, yes? Trevor. On Sun, Mar 29, 2015 at 9:11 PM, Kieren MacMillan kieren_macmil...@sympatico.ca wrote: Hi Trevor, Is there some Scheme-ish way to do that with the \set Score.markFormatter = #format-mark-circle-numbers context setting? In my Henle stylesheet, I see I used the following: #(define-markup-command (oval layout props arg) (markup?) #:properties ((thickness 1) (font-size 0) (oval-padding 0.75)) (let ((th (* (ly:output-def-lookup layout 'line-thickness) thickness)) (pad (* (magstep font-size) oval-padding)) (m (interpret-markup layout props (markup #:hcenter-in 1.5 arg (oval-stencil m th pad (* pad 1.5 #(define (format-oval-barnumbers barnum measure-pos alt-number context) (make-oval-markup (robust-bar-number-function barnum measure-pos alt-number context))) That seemed to work, at least for small-ish numbers. Maybe that will give you some clues on how to solve your problem? Hope this helps! Kieren. ___ Kieren MacMillan, composer www: http://www.kierenmacmillan.info email: i...@kierenmacmillan.info -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Constant sized rehersal marks?
Hi Kieren, Using \combine with a \transparent constant would be a good way to go. Is there some Scheme-ish way to do that with the \set Score.markFormatter = #format-mark-circle-numbers context setting? Trevor. On Wed, Mar 18, 2015 at 7:03 PM, Kieren MacMillan kieren_macmil...@sympatico.ca wrote: Hi all, Did anyone ever find a non-manual way of making this work? Why not just \combine it with a \transparent constant (e.g., 88)? Hope this helps! Kieren. ___ Kieren MacMillan, composer www: http://www.kierenmacmillan.info email: i...@kierenmacmillan.info -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Variables in instrumentName markup?
Hi Mark hi Harm, Brilliant. Just what I was looking for, and instructive in two different ways. Thank you both. Trevor. On Sat, Mar 28, 2015 at 4:20 PM, Thomas Morley thomasmorle...@gmail.com wrote: 2015-03-28 20:27 GMT+01:00 Mark Knoop m...@opus11.net: At 14:13 on 28 Mar 2015, Trevor Bača wrote: Hi, Is there a way to do ... foo = #12 \new Staff \with { instrumentName = \markup { \hcenter-in \foo Percussion } } { ... } \new Staff \with { instrumentName = \markup { \hcenter-in \foo Violin } } { ... } ... or equivalent? Just write #foo. Or even #(+ foo 3), #(/ foo 2.735), -- Mark Knoop How about: \version 2.19.17 val = 12 \layout { \context { \Staff \override InstrumentName.after-line-breaking = #(lambda (grob) (ly:grob-set-property! grob 'long-text (markup #:box ;; only for debugging, delete me #:hcenter-in val (ly:grob-property grob 'long-text } } \new Staff \with { instrumentName = Percussion } { c''1 } \new Staff \with { instrumentName = Violin } { d''1 } HTH, Harm ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Variables in instrumentName markup?
Hi, Is there a way to do ... foo = #12 \new Staff \with { instrumentName = \markup { \hcenter-in \foo Percussion } } { ... } \new Staff \with { instrumentName = \markup { \hcenter-in \foo Violin } } { ... } ... or equivalent? (The motivation being to use the same amount of horizontal space in a couple of dozen different instrument names.) Trevor. -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Messiaen-style ties?
Hi, Does anyone know how produce the style of ties used by Messiaen (or his publisher)? I've attached an image file taken from a first page of results given by Google images. The style of ties is unconventional because there are effectively no ties exiting tied notes (or chords); only ties entering into non-first notes (or chords) joined together in series. (The augmented fourth held in the pianist's left hand in the bottom system provides a good example of this.) I haven't yet used this style of tie in my own scores. But it seems like it might be a particularly effective way to reduce the graphic noise dense chords cause when tied over long durations. (One last thought: Messiaen's notation might be conceptually equivalent to a type of reverse l.v. indication. That might help provide a name for the feature should it ever find its way into LilyPond.) -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Messiaen-style ties?
Hi everyone, Wow, thank you all so much. I hadn't realized the functionality already exists. Truly wonderful. Next time I'll take a better look at the docs, too. Thanks again. I'll be integrating now to see if I can use the functionality in the current score. Trevor. On Sun, Mar 22, 2015 at 5:43 PM, Kieren MacMillan kieren_macmil...@sympatico.ca wrote: Hi Simon, True, this gives quite the desired output, but it would make sense to have this as a 'style option to Tie rather than using different musical input in the first place. +1 So I’d support an enhancement tracker issue and will post this to ly-bug. Thanks for doing that. Best, Kieren. ___ Kieren MacMillan, composer www: http://www.kierenmacmillan.info email: i...@kierenmacmillan.info ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Constant sized rehersal marks?
Did anyone ever find a non-manual way of making this work? Trevor. On Fri, Jan 9, 2015 at 7:22 AM, Pierre Perol-Schneider pierre.schneider.pa...@gmail.com wrote: As a first step here's a manual workaround : \version 2.18.2 \relative c' { \time 2/4 d e | \mark \markup { \center-column { \draw-circle #1.35 #0.1 ##f \vspace #-.8 \bold 1 } } d e | \mark \markup { \center-column { \draw-circle #1.35 #0.1 ##f \vspace #-.68 \fontsize #-3 \bold \concat { 1 \hspace #-.1 0 } } } f g | \mark \markup { \center-column { \draw-circle #1.35 #0.1 ##f \vspace #-.68 \magnify #.8 \bold \concat { 1 \hspace #-.1 1 } } } f g | \mark \markup { \center-column { \draw-circle #1.35 #0.1 ##f \vspace #-.61 \fontsize #-6 \bold \concat { 1 \hspace #-.1 00 } } } b c | \mark \markup { \center-column { \draw-circle #1.35 #0.1 ##f \vspace #-.8 \bold \concat { \hspace #.1 2 } } } a b | \mark \markup { \center-column { \draw-circle #1.35 #0.1 ##f \vspace #-.68 \fontsize #-3 \bold \concat { \hspace #.1 20 } } } c d | \mark \markup { \center-column { \draw-circle #1.35 #0.1 ##f \vspace #-.61 \fontsize #-6 \bold \concat { \hspace #.1 200 } } } c d | \mark \markup { \center-column { \draw-circle #1.35 #0.1 ##f \vspace #-.8 \bold 3 } } e f | \mark \markup { \center-column { \draw-circle #1.35 #0.1 ##f \vspace #-.68 \fontsize #-3 \bold 30 } } g a | \mark \markup { \center-column { \draw-circle #1.35 #0.1 ##f \vspace #-.61 \fontsize #-6 \bold 300 } } b c | } Pierre 2015-01-09 1:30 GMT+01:00 Steve Lacy sl...@slacy.com: Using \set Score.markFormatter = #format-mark-circle-numbers how would one go about making sure that all the rehersal marks are the same size (i.e. the radius of the circle is constant and the font inside scales to fit, and digits are centered within the circle?). Here's an example score that I would like to fix: [image: Inline image 1] (http://lilybin.com/qurd93/2) Additionally: - I find that the 1 inside the first rehersal mark needs to be tweaked to the right a little to be visually centered, - The 10 looks unnatural and needs some kerning so the digits are as close as the digits in 20 and 30 are - The mark for the 2 and 20 would look better with more default padding as the lower left of the digit almost touches the surrounding circle. Steve ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Hide the system start bar before a single context?
On Sun, Aug 17, 2014 at 5:05 AM, Pierre Perol-Schneider pierre.schneider.pa...@gmail.com wrote: Hi Trevor, 2014-08-17 0:42 GMT+02:00 Trevor Bača trevorb...@gmail.com: I'm looking to remove the system start *bar* (rather than the start brace or bracket). Oups, wrong snippet, did not check well enough.. I thought of another one. How about something like : \version 2.19.11 addStartBar = \markup { \hspace #-.9 \lower #.95 \override #'(thickness . 2) \draw-line #'(0 . 3.9) \hspace #.2 \musicglyph #clefs.G } \score { \new Staff \with { \override Clef.stencil = #(lambda (grob) (grob-interpret-markup grob addStartBar)) } { c'4 d' e' f' } \new Staff { c'4 d' e' f' } \new Staff \with { \override Clef.stencil = #(lambda (grob) (grob-interpret-markup grob addStartBar)) } { c'4 d' e' f' } \layout { \context { \Score \omit SystemStartBar } } } Hi Pierre, Thanks very much. Pasting the system start bar in (as markup) on a staff-by-staff basis works to restore the system start bar before selected staves. But then the system start bar is missing *between* staves. Example below. %%% BEGIN %%% \version 2.19.11 addStartBar = \markup { \hspace #-.9 \lower #.95 \override #'(thickness . 2) \draw-line #'(0 . 3.9) \hspace #.2 \musicglyph #clefs.G } \new Score \with { \omit SystemStartBar } \new Staff { c'4 d' e' f' } \new StaffGroup \new Staff \with { \override Clef.stencil = #( lambda (grob) (grob-interpret-markup grob addStartBar) ) } { c'4 d' e' f' } \new Staff \with { \override Clef.stencil = #( lambda (grob) (grob-interpret-markup grob addStartBar) ) } { c'4 d' e' f' } %%% END %%% But I really do appreciate seeing your thinking in these snippets; it's definitely helping me work through possibilities. Trevor. -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Hide the system start bar before a single context?
Hi, Is it possible to hide the system start bar before a single context (but leave the system start bar present before all other contexts)? Something like the (ineffective) override in the middle staff here ... \version 2.19.11 \new Score \new Staff { c'4 d'4 e'4 f'4 } \new Staff \with { \override Score.SystemStartBar.stencil = ##f } { c'4 d'4 e'4 f'4 } \new Staff { c'4 d'4 e'4 f'4 } ... is what I'm looking for. Thanks, Trevor. -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Hide the system start bar before a single context?
On Sat, Aug 16, 2014 at 6:17 PM, Pierre Perol-Schneider pierre.schneider.pa...@gmail.com wrote: Hi, 2014-08-16 23:27 GMT+02:00 Kieren MacMillan kieren_macmil...@sympatico.ca : Hi Trevor, Is it possible to hide the system start bar before a single context (but leave the system start bar present before all other contexts)? Worst-case, maybe make the shortInstrumentName a white box “of appropriate dimensions”? I did something like that few months ago : http://lsr.di.unimi.it/LSR/Item?id=910 Hi Pierre, I'm looking to remove the system start *bar* (rather than the start brace or bracket). So I tried changing your ... \alterBroken transparent #'(#t) SystemStartBrace ... to ... \alterBroken transparent #'(#t) SystemStartBar ... but it didn't seem to have much of an effect. Trevor. -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Making staff-padding work in a custom marks context
Staff_symbol_engraver % == this is new* \consists Text_engraver \consists Text_spanner_engraver \consists Time_signature_engraver \override MetronomeMark.X-extent = #'(0 . 0) \override MetronomeMark.Y-extent = #'(0 . 0) \override MetronomeMark.break-align-symbols = #'(left-edge) \override MetronomeMark.extra-offset = #'(0 . 4) \override MetronomeMark.font-size = 3 \override RehearsalMark.X-extent = #'(0 . 0) \override RehearsalMark.Y-offset = -2.25 \override RehearsalMark.X-offset = 8 \override RehearsalMark.break-align-symbols = #'(time-signature) \override RehearsalMark.break-visibility = #end-of-line-invisible \override RehearsalMark.font-name = Didot \override RehearsalMark.font-size = 10 \override RehearsalMark.outside-staff-priority = 500 \override RehearsalMark.self-alignment-X = #center *\override StaffSymbol.transparent = ##t % == this is new* \override TextScript.outside-staff-priority = 600 *\override TextScript.staff-padding = 8 % == now this is respected* *\override TextSpanner.staff-padding = 8.75 % == now this is respected* \override TimeSignature.X-extent = #'(0 . 0) \override TimeSignature.break-align-symbol = #'left-edge \override TimeSignature.break-visibility = #end-of-line-invisible \override TimeSignature.space-alist.clef = #'(extra-space . 0.5) \override TimeSignature.style = #'numbered \override VerticalAxisGroup.default-staff-staff-spacing = #'( (basic-distance . 0) (minimum-distance . 8) (padding . 0) (stretchability . 0) ) } \context { \Staff \remove Time_signature_engraver } \context { \Score \accepts TimeSignatureContext \remove Mark_engraver \remove Metronome_mark_engraver } } \new Score \new TimeSignatureContext { \time 2/4 \once \override TextSpanner.arrow-width = 0.25 \once \override TextSpanner.bound-details.left.stencil-align-dir-y = -0.5 \once \override TextSpanner.bound-details.left.text = \markup { \smaller \general-align #Y #DOWN \note-by-number #2 #0 #1 \upright = 67.5 } \once \override TextSpanner.bound-details.right.arrow = ##t \once \override TextSpanner.bound-details.right.padding = 2 \once \override TextSpanner.bound-details.right.text = ##f \once \override TextSpanner.dash-fraction = 0.25 \once \override TextSpanner.dash-period = 1.5 s1 * 2/4 \startTextSpan \time 3/4 s1 * 3/4 \time 2/4 s1 * 2/4 \stopTextSpan ^ \markup { \smaller \general-align #Y #DOWN \note-by-number #2 #0 #1 \upright = 135 } } \new Staff { \time 2/4 c'4 d'4 \time 3/4 c'4 d'4 e'4 \time 2/4 c'4 d'4 } %%% END %%% Output is included as example-2.png. QUESTION: The one remaining problem now is that the system start bar is visible at the beginning of the custom context (as shown in example-2.png). Any ideas as to how hide the system start bar before the custom TimeSignatureContext? I've tried all sorts of overrides (and moving around System_start_delimiter_engraver) and the presence of the system start bar seems to be an all-or-nothing affair handled at the score level. I've also tried lots of different ways of removing the Staff_symbol_engraver (which nicely causes the system start bar to disappear). But I'm absolutely stumped as to how to remove the Staff_symbol_engraver and still get the markup and spanners to respect staff-padding. Thanks, Trevor. -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Hide the system start bar before a single context?
On Sat, Aug 16, 2014 at 7:13 PM, Kieren MacMillan kieren_macmil...@sympatico.ca wrote: Hi Trevor, Have you looked at http://lists.gnu.org/archive/html/lilypond-user/2012-06/msg00038.html ?? Hi Kieren, Yup, read through that one earlier this afternoon. But the changes (dashing) apply to the entire system start bar (for all staves) rather than to a single staff. (I guess that makes sense because SystemStartBar lives in the Score.) As follow-up, I tried removing System_start_delimter_engraver from Score and including it (with \consists) in the other lower-level contexts. Explosions ensued ;) Trevor. -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Aligning markup (rather than marks) to the left edge?
Hi, I'm working on a piece with a lot accelerando and ritardando spanners. I've built my own accelerando and ritardando spanners using text spanners. Here's a more-or-less stripped down example that works pretty well: %%% BEGIN %%% \version 2.19.11 \language english \new Staff { \once \override TextSpanner.arrow-width = 0.25 \once \override TextSpanner.bound-details.left.text = \markup { \smaller \general-align #Y #DOWN \note-by-number #2 #0 #1 \upright = 67.5 } \once \override TextSpanner.bound-details.right.arrow = ##t \once \override TextSpanner.bound-details.right.padding = 2 c'2 \startTextSpan d'2 e'2 f'2 g'2 a'2 \stopTextSpan ^ \markup { \smaller \general-align #Y #DOWN \note-by-number #2 #0 #1 \upright = 135 } } %%% END %%% I'm actually pretty happy with the results shown above. (There's an additional collection of overrides to the TextSpanner bound details that make things look truly professional. I've omitted those here to keep the example reasonable. If anyone wants the complete settings, just let me know.) QUESTION: the one remaining thing I'm looking for is some way to align the start of the spanner to the *left edge of the page*. Is there any way to do this? By way of comparison, the break-alignable-interface gives exactly what I'm looking for when I'm working with MetronomeMark objects ... \override MetronomeMark.break-align-symbols = #'(left-edge) ... but it looks like TextScript and TextSpanner don't implement the interface (which is understandable). So is there some sort of something available to, say, anchor markup (as opposed to marks) to the left edge of the page (instead of to a note head)? Sounds like some type of manipulation to the parent of markup. But in many years of using Lily I've never had cause to make that particular type of adjustment. Advice appreciated, Trevor. -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Odp: hotrizontal spacing question
On Mon, Dec 23, 2013 at 10:14 AM, Karol Majewski karo...@wp.pl wrote: Hi Eluze, now I have found that in my example it should be: \override Score.SpacingSpanner #'uniform-stretching = ##t insted of: \override SpacingSpanner #'uniform-stretching = ##t :) Now, uniform-stretching appears to be the right solution. Agreed: turning on proportional notation should always be done with setting the SpacingSpanner's uniform-stretching attribute to true. (And, as Karol found out, the SpacingSpanner lives in the Score context.) This combination of settings has spaced the notes of hundreds of polyrhythms for me exactly. Trevor. -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Ferneyhough-style Interruptive Polyphony
This is incredibly impressive. Piaras's implementation of an allow-interrupt-engraver provides a more or less drop-in solution for this difficult technique. From the .ly attachment: \new Staff \with { \consists #allow-interrupt-engraver } What're are the chances that an Allow_interrupt_engraver could be added to the official distribution? Trevor. On Mon, Nov 4, 2013 at 4:50 PM, Piaras Hoban phoba...@gmail.com wrote: Hi list, A few weeks back I posted seeking a little help in implementing one of the more peculiar notational devices of Brian Ferneyhough, namely 'interruptive polyphony'. I've managed to find a way to implement these automatically and wanted to share the code in case anyone in future is looking to do something similar or could find it helpful otherwise. Attached is the first measure of Ferneyhough's Terrain. Would be interesting to compare fully with original score as lilypond's time-keeping seems a tad more accurate than the original... :-) best wishes, piaras hoban interruptive-polyphony.ly http://lilypond.1069038.n5.nabble.com/file/n153387/interruptive-polyphony.ly interruptive-polyphony.png http://lilypond.1069038.n5.nabble.com/file/n153387/interruptive-polyphony.png -- View this message in context: http://lilypond.1069038.n5.nabble.com/Ferneyhough-style-Interruptive-Polyphony-tp153387.html Sent from the User mailing list archive at Nabble.com. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: line breaks within beamed tuplets
On Sun, Mar 11, 2012 at 7:51 AM, Peter O'Doherty m...@peterodoherty.netwrote: On 03/11/2012 11:42 AM, m...@apollinemike.com wrote: On Mar 11, 2012, at 11:40 AM, Peter O'Doherty wrote: Hi, Another question concerning tuplets: \remove Forbid_line_break_engraver \override Beam #'breakable = ##t Try adding: \override TupletBracket #'breakable = ##t Cheers, MS Sorry, that doesn't work. Still getting warning: forced break was overridden by some other event, should you be using bar checks? Hi Peter, I think somewhere earlier in the thread it was mentioned that Forbid_line_break_engraver lives in the *Voice* context (and not in the Staff or Score contexts). So this does this what you want: \version 2.15.34 upper = { \clef treble \time 4/8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 } lower = { \clef bass \times 4/5 { c8[ c8 c8 c8 c8] } \times 5/6 { c8[ c8 c8 c8 c8 \bar \break c8] } \times 3/4 { c8[ c8 c8 c8] } \times 4/5 { c8 c8 c8 c8 c8 } } \score { \new PianoStaff \new Staff = upper \upper \new Staff = upper \lower \layout { \context { \Score \override Beam #'breakable = ##t } \context { \Voice \remove Forbid_line_break_engraver } } } HTH, Trevor. -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Controlling horizontal bracket start position after a line break?
Hi, I'm using horizontal brackets in some sketches I'm doing right now. (And the fact that the brackets nest is proving very useful indeed.) A simplified example looks like this: %%% BEGIN %%% \version 2.15.11 \layout { ragged-right = ##t } \new Voice \with { \consists Horizontal_bracket_engraver } { c'1 \startGroup d'1 \break e'1 f'1 \stopGroup } %%% END %%% This is good, with one exception: The output attached shows that -- following a line break -- the resumption of the horizontal bracket begins *left of the staff*. Question: is it possible to align the resumption of the horizontal bracket with the left edge of the first note head of the system? (That is, in this example, with the left edge of the e'1?) Trevor. -- Trevor Bača trevorb...@gmail.com attachment: horizontal-bracket-example.png___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: New LilyPond tutorial
On Tue, Aug 23, 2011 at 8:00 PM, Urs Liska lilyp...@ursliska.de wrote: ** Hello list, I have just put a new tutorial online. You can read it at http://www.ursliska.de/73.0.html It is meant for intermediate beginners who want to go for some more complex tasks and are as confused with LilyPond as I was not long ago. I'd give it a version number of 0.8. So any constructive feedback is welcome. Comments that arent' interesting for the public (linguistic details for example) please privately, LilyPond related comments on the list. Hi Urs, The tutorial is beautifully laid out and expertly explained. Thanks very much for putting this together. I'll keep it in my list of LilyPond links to send to friends and newcomers to the system. Trevor. -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Cowell/Ferneyhough Unconventional Meters
I use this combination of semantic 'nonbinary' time signature (here 2/10) with \scaleDurations in my own scores rather a lot. It works great. (Also the best solution if you're using proportional notation because all notes, rests, chords continue to consume the amount of horizontal space that they should.) It might also be worth pointing out that two competing interpretations of these 'nonbinary' time signatures have developed in the literature over the past couple of decades: what we might call the 'Ferneyhough' and the 'Sciarrino' interpretations, respectively. Ferneyhough's usage is as Joey describes and basically works by allowing the 10 in 2/10 to effect a 4/5 diminution of the notes, rests, chords governed by the time signature. (How does one extract 4/5 from 10? By dividing out all integer powers of 2 from the prime factors of 10 and then inserting this value -- call it n -- in a multiplier of the form m/n, with m defined equal to the greatest integer power of 2 *less than* n. Here, for example, we see that 10 = 2 * 5; we remove the 2 and find n = 5; the greatest integer power of 2 less than 5 is 4; so m/n = 4/5 which is exactly the prolational scaling value of the 10 in 2/10. A second example could be the time signature 5/18, the denominator of which is 18 = 2 * 3 * 3, which gives n = 3 * 3 = 9 and m/n = 8/9, which is the value by which notes, rests, chords in a measure of 5/18 will be time-scaled under this first interpretation of such meters.) Sciarrino's (and many others') usage essentially interprets meters like 2/10 and 5/18 as indicating the amount of musical time a bar is to consume *without* attributing any time-scaling power to the time signatures in question. (Partial or 'broken') tuplets then need to be added explicitly to make the time values of notes, rests and chords calculate correctly. This is the interpretation of such meters under which Joseph originally proposed to answer Joey's question. The two ways of interpreting these time signatures are incompatible. AFAICT the 'Sciarrino' interpretation is used by many more composers now than is the 'Ferneyhough' interpretation. But Ferneyhough is certainly the best known exemplar of the technique. Trevor. On Tue, Jul 5, 2011 at 6:26 AM, Urs Liska li...@ursliska.de wrote: ** Probably Joey doesn't want to use \time 4/5 but to scale durations. I adjusted your example a little bit so one sees better what happens: { \time 2/10 \times 4/5 { c'8 c'8 } \bar || % \scaleDurations scales without tuplet numbers or brackets \scaleDurations #'(4 . 5) { c'8 c'8 c'8 c'8 } \bar || % I put a few bars of straight eighths to show what happens c'8 c' c' c' c' c' c' c' } Best Urs Am 05.07.2011 11:45, schrieb Joseph Wakeling: On 07/05/2011 08:57 AM, m...@apollinemike.com wrote: On Jul 5, 2011, at 8:29 AM, Joey wrote: In Ferneyhough's etudes transcendentales, he employs meters such as 2/12 or 2/10, acting as literal subdivisions of the semi-breve. The easiest way would be to create an override for the time signature stencil: No, you don't need to be so complicated. :-) Just put \time 2/10 Lilypond will give you a _warning_ that this is a non-standard time signature, but it can handle the time signature and will produce a corresponding bar of two quintuplet-eighths in length. N.B. you _will_ need to put in place \times 4/5 {} around the content of any such bar in order to ensure that quintuplets are your base content type. Try giving Lilypond the following: { \time 2/10 \times 4/5 { c'8 c'8 } c'8 c'8 } ... and compare what happens in the first and second bar. ___ lilypond-user mailing listlilypond-user@gnu.orghttps://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user -- Trevor Bača trevorb...@gmail.com ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user