Re: (Re-post) Printing page numbers from a given page

2021-12-02 Thread Aaron Hill

On 2021-12-02 4:55 pm, Paolo Prete wrote:
I re-post this because I noted later that the answer I obtained does 
not

fit what I asked.
I wonder if is there a way to start printing page numbers of a score 
from a

given page.

For example: if I want to start printing page numbers from page 3, page
numbers 1 and 2, on first and second page, have to be omitted.

(note that this is not the property:  first-page-number = 3; it is 
instead
somewhat similar to print-first-page-number = ##f, but extended to 
multiple

pages)


Customize the header:


\version "2.22.0"

#(define ((page-number-on-or-after num) layout props arg)
  (if (< (chain-assoc-get 'page:page-number props -1) num)
   empty-stencil (interpret-markup layout props arg)))

\paper {
  #(set-paper-size "a7landscape")

  oddHeaderMarkup =
  \markup \fontsize #12 \fill-line {
\null
\on-the-fly #(page-number-on-or-after 3)
  \fromproperty #'page:page-number-string
  }
  evenHeaderMarkup = ##f

  page-count = #5
}

{ \repeat unfold 68 { b'4 4 2 } \bar "|." }



-- Aaron Hill



Re: multi-line markup inside a single box

2021-12-07 Thread Aaron Hill

On 2021-12-07 1:52 am, Mark Knoop wrote:

At 01:40 on 07 Dec 2021, Josiah Boothby wrote:

Maybe I'm missing something obvious (it's 1:30 in the morning...it's
not unlikely!), but I'm trying to include a small two-line markup
inside a single box. The thing that seems obvious is producing two
boxed lines, which is not what I'm aiming for and is too visually
cluttered for me to accept as a compromise:

\markup\right-column\box{
  \line{Solos: 1st x tpt}
  \line{2nd x clr}
}

Any ideas?


You want the box to be around the columns? So:

\markup \box \right-column {
 \line{Solos: 1st x tpt}
 \line{2nd x clr}
}


To add to this, markup commands that expect a single markup will work 
with markup lists, however they will be applied to each individual 
markup within the list:



\displayScheme \markup \box { a b c }
\displayScheme \markup { \box a \box b \box c }


The above code prints out the following, demonstrating that both are 
equivalent internally:



(markup #:line (#:box "a" #:box "b" #:box "c"))
(markup #:line (#:box "a" #:box "b" #:box "c"))


To box "a b c" as a unit, you need to use any markup command that 
operates specifically on a markup list to condense it into a single 
markup:



\markup \box \line { a b c }% for when you want space
\markup \box \concat { a b c }  % for when you do not want space
\markup \box \overlay { a b c } % for when you REALLY do not want space



-- Aaron Hill



Re: Altering beamed stem lengths

2021-12-11 Thread Aaron Hill

On 2021-12-11 8:29 pm, Ahanu Banerjee wrote:

Hello,

I am working with 2 simultaneous voices, and I want to increase the
distance between the beamed stems of one voice and the noteheads of the
other voice. Is there some way to set a minimum distance between the 
beams

and noteheads, i.e., "padding"? I don't want to manually override
Stem.details.beamed-lengths or Beam.positions each time.

Here is an example:

\version "2.20.0"
%normal output%
<< { g'8 [ s e' s f' s d' ] } \\ { \repeat unfold 4 { s b'8 } } >>
%desired output%
<< { \override Beam.positions = #'(2.2 . 1.8)
 g'8 [ s e' s f' s d' ] } \\ { \repeat unfold 4 { s b'8 } } >>


This seems to get pretty close to what you want:


<< { g'8 -\tweak details.collision-padding 1 [ s e' s f' s d' ] } \\ { 
\repeat unfold 4 { s b'8 } } >>




-- Aaron Hill



Re: adjusting stem length in metronome mark?

2021-12-12 Thread Aaron Hill

On 2021-12-12 1:53 am, Josiah Boothby wrote:

I used to know how to do this, I think, but...how do I adjust the stem
length in a metronome mark? Seems like I should be able to do something 
like


\override MetronomeMark.stem-length = xyz

but that *specifically* doesn't appear to be available.

Something involving .add-stem-length perhaps?


Stem length for MetronomeMark is hard-coded.  See metronome-markup 
within translation-functions.scm.


Depending on your needs, you could simply provide your own markup rather 
than use the built-in procedure.



\version "2.22.0"

{
  \once \set Score.tempoHideNote = ##t
  \tempo
\markup \concat {
  \general-align #Y #DOWN
  \smaller \note { 4 } #0.6
  \normal-text " = 60"
}
4 = 60
  b'2 2
}


If you want to avoid duplicating some of the effort, you could do 
something like this to patch the markup that gets generated normally:



\version "2.22.0"

metronomeMarkStemLength =
#(define-music-function
 (length) (number?)
 (define (fixup arg)
  (cond
   ((and (pair? arg) (eq? note-by-number-markup (car arg)))
(begin (list-set! arg 3 length) arg))
   ((list? arg) (map fixup arg))
   (else arg)))
 (define (proc grob grob-origin context)
  (ly:grob-set-property! grob 'text
   (fixup (ly:grob-property grob 'text
 #{ \applyOutput Score.MetronomeMark #proc #})

{
  \metronomeMarkStemLength #0.6
  \tempo 4 = 60
  b'2 2
}


Alternately, you could replace the built-in code with something that can 
check a new context property:



\version "2.22.0"

#(define (custom-metronome-markup text dur len count hide-note)
  (let* ((note-mark
  (if (and (not hide-note) (ly:duration? dur))
  (make-smaller-markup
   (make-note-by-number-markup
(ly:duration-log dur)
(ly:duration-dot-count dur)
len))
  #f))
 (count-markup (cond ((number? count)
  (if (> count 0)
  (make-simple-markup
   (number->string count))
  #f))
 ((pair? count)
  ;; Thin Spaces U+2009 & En-dash U+2013
  (make-simple-markup
   (ly:format "~a – ~a" (car count) (cdr 
count

 (else #f)))
 (note-markup (if (and (not hide-note) count-markup)
  (list
   (make-general-align-markup Y DOWN note-mark)
   (make-simple-markup " = ")
   count-markup)
  #f))
 (text-markup (if (not (null? text)) (make-bold-markup text) 
#f)))

(if text-markup
(if (and note-markup (not hide-note))
(make-line-markup (list (make-concat-markup
 (append (list text-markup
   (make-simple-markup " 
("))

 note-markup
 (list (make-simple-markup 
")"))

(make-line-markup (list text-markup)))
(if note-markup
(make-line-markup (list (make-concat-markup note-markup)))
(make-null-markup)

#(set-object-property! 'tempoStemLength 'translation-type? number?)
#(define (format-custom-metronome-markup event context)
  (let ((hide-note (ly:context-property context 'tempoHideNote #f))
(len (ly:context-property context 'tempoStemLength 1))
(text (ly:event-property event 'text))
(dur (ly:event-property event 'tempo-unit))
(count (ly:event-property event 'metronome-count)))
(custom-metronome-markup text dur len count hide-note)))

\layout {
  \context {
\Score
    metronomeMarkFormatter = #format-custom-metronome-markup
  }
}

{
  \once \set Score.tempoStemLength = #0.6
  \tempo 4 = 60
  b'2 2
}



-- Aaron Hill



Re: Crescendo after custom dynamic marking

2021-12-12 Thread Aaron Hill

On 2021-12-12 3:19 pm, David Kastrup wrote:

and one could instead define it as

make-dynamic-script =
#(define-event-function (str) (ly:markup?)
   (make-music 'AbsoluteDynamicEvent 'text str))


Did you mean just markup? or is ly:markup? a special predicate?


-- Aaron Hill



Re: Crescendo after custom dynamic marking

2021-12-12 Thread Aaron Hill

On 2021-12-12 3:48 pm, David Kastrup wrote:

Aaron Hill  writes:


On 2021-12-12 3:19 pm, David Kastrup wrote:

and one could instead define it as
make-dynamic-script =
#(define-event-function (str) (ly:markup?)
   (make-music 'AbsoluteDynamicEvent 'text str))


Did you mean just markup? or is ly:markup? a special predicate?


Ouch.  Of course the former.


Just checking.  It would not have surprised me if I had overlooked 
something in the software.  When doing Scheme work especially, I find 
there is often something Guile provides as a built-in that I wasted time 
creating myself.



-- Aaron Hill



Re: String at the bottom of a cover page without using \markup

2021-12-16 Thread Aaron Hill

On 2021-12-16 3:37 pm, Paolo Prete wrote:
Thanks to all the participants to this thread. I'm a bit stuck into 
this.

Unfortunately, if I use the copyright field of \header and I remove the
footer from the paper, then the copyright field disappears:


That's because the copyright (and tagline) is implemented with the 
footer markup.  See titling-init.ly:



oddFooterMarkup = \markup {
  \column {
\fill-line {
  %% Copyright header field only on first page in each bookpart.
  \on-the-fly #part-first-page \fromproperty #'header:copyright
}
\fill-line {
  %% Tagline header field only on last page in the book.
  \on-the-fly #last-page \fromproperty #'header:tagline
    }
  }
}



-- Aaron Hill



Re: Tie between words

2021-12-17 Thread Aaron Hill

On 2021-12-17 12:37 am, Adrian Oehm wrote:

I’ve tried the code you supplied, but unfortunately I keep getting the
following error:

"ly-syntax-constructors.scm:56:23: Wrong number of arguments to
#"

I get this trying to compile both with the code in my document and
also trying to compile yours.  One important thing I didn’t mention is
I’m still using 2.18.2 - I’m not sure if the code is trying to
reference things that are in later versions.


The define-*-function procedures changed between 2.18 and 2.20.  You 
will need to explicitly name the parser and location arguments if you 
are running an older version:



addTieStart =
#(define-music-function (parser location m) (ly:music?)
 ^^^



-- Aaron Hill



Re: String at the bottom of a cover page without using \markup

2021-12-17 Thread Aaron Hill

On 2021-12-17 4:28 pm, Paolo Prete wrote:

The example Aaron showed already added *logic* to the template [...]


To be fair, all I showed was the default setting for oddFooterMarkup 
from titling-init.ly.  Nothing added; that is simply how LilyPond works 
out of the box.


Nearly everything, if not actually everything, LilyPond does by default 
is only a matter of convenience for users, not some sacred declaration 
of "meet, right, and salutary" structure and practice.  There is nothing 
apart from yourself that stops you from defining your own fields and 
adjusting the header/footer markups as is needed for you to complete 
your work.  Any system of organization you insist on is just that--yours 
solely to define, follow, critique, revise, and disregard as 
appropriate.


It might help to reconsider your understanding of header and footer, not 
as elements of structure, but as tools--specifically tools used when you 
need content to appear at the top or bottom of one or more pages 
irrespective of other elements.  Your original query was about placing 
something at the bottom of a page, and the response you have received is 
to leverage oddFooterMarkup as the most direct and minimally disruptive 
method.



-- Aaron Hill



Re: How to get huge text (ie: "To Coda") above a volta bracket?

2021-12-20 Thread Aaron Hill

On 2021-12-20 3:48 pm, Kenneth Wolcott wrote:

Hi;

  How to get huge text (ie: "To Coda") above a volta bracket?


Set outside-staff-priority as needed.  The default for 
VoltaBracketSpanner is 600.



\repeat volta 2 { b'4 a' g'2 }
\alternative { { a'4 b' a'2 }
{ fis'1
  -\tweak outside-staff-priority #599
  ^\markup \bold "Below!"
  -\tweak outside-staff-priority #601
  ^\markup \bold "Above!"
} }


-- Aaron Hill



Re: global alignment tweak for ChordName

2021-12-21 Thread Aaron Hill

On 2021-12-21 10:30 am, Kieren MacMillan wrote:

and am once again in need this ChordName alignment feature. Is anyone
out there able to shepherd me through building a callback to make this
happen?


I've used something like this in the past:


\version "2.22.0"

music = \chordmode {
  \override ChordName.X-offset =
  #(lambda (grob)
(let* ((sten (ly:grob-property grob 'stencil))
   (xex (ly:stencil-extent sten X))
   (width (interval-length xex)))
 (* -0.5 (max 0 (- width 2)

  c1 c:7 c:m7 c':m6/ees
}
<< \new ChordNames \music \new Staff \music >>



-- Aaron Hill



Re: minimum measure size?

2021-12-28 Thread Aaron Hill

On 2021-12-28 3:18 pm, Tom Sgouros wrote:

I was reviewing the settable parameters, but I think maybe I don't
understand enough of lilypond's native jargon yet to know what to look 
for.
I found setting for counting measures and grouping measures, but what 
about

measuring measures? What tree should I be barking up here?


If your intention is to have to more room for penciling in things, you 
could look at the section on Horizontal Spacing [1].  There are a few 
ways in which you can instruct LilyPond to place notes further apart:



notes = \relative b' { \time 3/4 b4 a g | a2 g4 | fis8 g a4 b | c2. \bar 
"|." }


{ \notes }
{ \override Score.SpacingSpanner.spacing-increment = #2 \notes }
{ \override Score.SpacingSpanner.base-shortest-duration = 
#(ly:make-moment 1/32) \notes }



[1]: 
https://lilypond.org/doc/v2.22/Documentation/notation/horizontal-spacing



Another option is to simply set the total number of systems for your 
score.  LilyPond will naturally spread out music if it is constrained to 
meet a minimum system count:



\paper { system-count = 2 }
{ \notes }




-- Aaron Hill



Re: Feedback wanted: syntax highlighting in the LilyPond documentation

2022-01-04 Thread Aaron Hill

On 2022-01-04 4:19 am, J Martin Rushton wrote:

Sorry to disagree, but fixed pitch is _so_ much easier to lay out in an
editor.  Documentation flows nicely with variable pitch and fancy
hidden formats, but for code (and Lily's input is a programming
language) you just want the plain line-by-line ASCII.  It is, as you
say, industry standard; and that is for a good reason.


As a counterpoint, Knuth's work with literate programming [1] showed it 
was possible to have typographically beautiful setting of code for use 
in print.  His style largely used proportional fonts though some 
elements were still rendered in fixed width to provide useful contrast.  
While Knuth's approach is not perfect for every language, I argue the 
vast majority of programming books out there really should have followed 
suit.  Editors (the people, not programs) seem to struggle with 
fixed-width typefaces, and typos were abundant.


Going beyond printed documentation, some IDEs like Source Insight 
enabled and encouraged programmers to use proportional fonts, where 
horizontal alignment was something handled by the system not the 
programmer.  Though I do concede this was probably a novelty, seeing as 
these days terminals and editors still rely on fixed pitch.


[1]: http://www.literateprogramming.com/knuthweb.pdf


-- Aaron Hill



Re: Feedback wanted: syntax highlighting in the LilyPond documentation

2022-01-04 Thread Aaron Hill

On 2022-01-04 7:29 am, Erika Pirnes wrote:

Would it be terribly difficult to have a color setting on the
documentation page, so that people can choose between black and color?


It is fairly straightforward with CSS and a little JavaScript:





  
  
  
  Dynamic styles
  
body { font-size: 36pt; }
.button {
  background: #999; border-radius: 9pt;
  cursor: pointer; display: inline-block;
  padding: 9pt; user-select: none;
}
.colors > code > .type { color: purple; }
.colors > code > .identifier { color: blue; }
.colors > code > .keyword { color: brown; }
.colors > code > .number { color: darkgoldenrod; }
.colors > code > .string { color: green; }
.colors > code > .punctuation { color: gray; }
  


  
function toggleColors() {
  if (document.body.classList.contains('colors')) {
document.body.classList.remove('colors');
  } else {
document.body.classList.add('colors');
  }
}
  
  Toggle Colors

  
int
main() 
{
  printfclass="punctuation">("Hello, 
World!\n");

  return
0;
}
  




-- Aaron Hill



Re: Feedback wanted: syntax highlighting in the LilyPond documentation

2022-01-04 Thread Aaron Hill

On 2022-01-04 10:04 am, Valentin Petzel wrote:

The problem is that we probably want to
remember the set color scheme for longer than just the current page,
so we'd need something like cookies.


Not a problem in the slightest.  But not cookies... localStorage [1].

[1]: 
https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage



-- Aaron Hill



Re: Feedback wanted: syntax highlighting in the LilyPond documentation

2022-01-04 Thread Aaron Hill

On 2022-01-04 11:32 am, Jean Abou Samra wrote:

Forgive my igorance with the inner workings of the
Internet: what does this mean in connection with GDPR
and all that? Am I right that the fact that the
information stored on the user's device serves
a purpose essential to satisfying the very request
of the user means that it would fall under PECR
exceptions to the requirement of a banner asking
for explicit consent of the user?


Always best to consult a lawyer on legal matters.

My layman understanding is that GDPR generally deals with information 
that passes through servers that might be retained without offering some 
form of end-user control.  Use of localStorage, rather than cookies, 
should mean no settings ever need to be sent to the server.  Users are 
entirely in control of this local data, although I suppose some browsers 
make it easier to access than others.


For those with privacy or security concerns, the web site source still 
remains entirely auditable as everything with styling is done local on 
the browser.  And the code in question should be so trivial that there 
is no need to minify/uglify it, so that preserves readability and 
hopefully earns some trust that we are not doing anything shady.




Other than that, well, there is still JavaScript.
That's may not be the thing to be most happy about, but
we could check how LibreJS handles that JavaScript,
possibly adding stylized license comments, so that
it would be no problem to those people refusing non-free
JavaScript using LibreJS/IceCat. All in all this approach
does look promising to me.


I think I am not understanding the concerns around licensing.

At the end of the day, if someone does not want to use JavaScript, then 
the functionality will not work.  We should make sure the default 
behavior of the site is sound for such cases, so no one feels they have 
to enable JS if they do not wish.  That might mean the standard styling 
needs to be black and white if that creates the least friction for 
users.



-- Aaron Hill



Re: Feedback wanted: syntax highlighting in the LilyPond documentation

2022-01-04 Thread Aaron Hill

On 2022-01-04 1:42 pm, Jean Abou Samra wrote:

https://www.gnu.org/philosophy/javascript-trap.en.html
[ . . . ]
But I'm probably fretting for something that is
very easy in the end.


The code Lilypond's site would use would be entirely homegrown, licensed 
under GPL.  Not sure there is anything here to worry unless we determine 
there is an external dependency that is required.




If we add a toggle for switching highlighting on and
off, then the next question will of course be what
the default should be. Without surprise, I would prefer
if it were on by default, but I wouldn't mind the
other way.


And honestly, I like the default being on, simply because it advertises 
the new feature.  If folks load up the docs and see the familiar black 
and white, they might not know to look for the option to enable 
highlighting.


Perhaps a good strategy would be to initially enable the feature for an 
entire release cycle.  This gets folks using it and providing feedback.  
Most of the discussion so far has been limited in scope so it is hard to 
know if the system works well over the entire manual and for day-to-day 
usage.


I would not be surprised if some creative folks on the list end up 
creating new color schemes to be included as options aside from the 
default.  A dark mode scheme is almost inevitable.




Are you sure about that? This is one page that drew
my attention:

https://law.stackexchange.com/questions/30739/do-the-gdpr-and-cookie-law-regulations-apply-to-localstorage


One of the posts a little further down talks about shopping carts.  The 
way I read this is that when a user is performing an action where 
something being saved is reasonably expected as part of the 
functionality, there is no need to ask permission.  The question we 
would have is whether selecting a color scheme carries an expectation 
that it should persist.



-- Aaron Hill



Re: Hebrew and Latin fonts

2022-01-07 Thread Aaron Hill

On 2022-01-07 6:13 am, Hilber, Simon wrote:

in 2019 I produced a little booklet with Hebrew and German songs - in
version 2.18.2. The German text was rendered in a font with serifs, the
Hebrew text was in a font without serifs. Now (with a new pc and 
version
2.20) with the input, text in both languages is produced in a serif 
font. I
would prefer the previous fonts. How is it possible to globally define 
the
fonts for Latin and Hebrew fonts respectively? I know how to change it 
for

a particular text with \override - but I need a solution for the whole
document since it is a lot of text.


At some point, LilyPond changed the default fonts to the TeX Gyre family 
(Schola, Heros, and Cursor).


You just need to switch the global font back to whatever you liked 
before, for instance:



\paper {
  #(define fonts
(set-global-fonts
 #:roman "New Century Schoolbook"
 #:factor (/ staff-height pt 20)))
}



-- Aaron Hill



Re: Beam slopes

2022-01-09 Thread Aaron Hill

On 2022-01-09 12:30 pm, Виноградов Юрий wrote:

Hello. How to make a connecting beam at an angle of 90 degrees in this
code


Please review this thread [1] from last year, as I think you are looking 
for the same behavior.


[1]: 
https://lists.gnu.org/archive/html/lilypond-user/2021-05/msg00078.html



-- Aaron Hill



Re: alternate notes within a part

2022-01-09 Thread Aaron Hill

On 2022-01-09 2:05 pm, David Zelinsky wrote:

Is there a better way to accomplish what I'm trying to do?  Or do I
really just need to maintain completely separate versions for the two
instruments?


You can certainly use the tag approach, just keep a few things in mind.

Firstly, you should use simultaneous music in places where the tagged 
parts are in parallel.  This should avoid the issues with bar check 
failures as the music remains valid time-wise without needing to remove 
tags.


Secondly, \relative should be used in a more restrictive scope, not as a 
top-level tool where changes to pitches often have unexpected side 
effects, or you run into issues with tagged material.  \fixed is 
certainly an option to consider, although for many melodic phrases 
\relative is really quite handy.


Consider this below:


foo = {
 \relative b' { | b4 a8 g fis2 }
 << \tag one \relative g' { | g8 a b d e2 }
\tag two \relative e' { | e4 d cis2 } >>
 \relative g' { | g1 \bar "|." }
}

<< \new Staff \with { instrumentName = "both" } \foo
   \new Staff \with { instrumentName = "one" } \keepWithTag one \foo
   \new Staff \with { instrumentName = "two" } \keepWithTag two \foo >>



-- Aaron Hill



Re: alternate notes within a part

2022-01-09 Thread Aaron Hill

On 2022-01-09 2:50 pm, Valentin Petzel wrote:
It depends a bit on how structured your music is. If you’ve got two 
Voices it

is reasonable to give both their own relative clause.

If you music does not have a lot of complex structure a top level 
relative is
very much find. Problematic are cases where notes within the music 
might
change, thus affecting stuff after it. This might be the case with 
tags, but
also with cues or scores in footnotes (where also someone might think 
about

adding something, and suddenly the main music body has problems.


Having been bitten more times than worth counting, I have almost 
exclusively moved to using \fixed.  The level of consistent and precise 
control means I can add, change, or remove notes as well as freely copy 
and paste music around without fear of notes being thrown off into the 
wrong octave.


That said, I think \relative is still useful as a tool for 
reasonably-scoped melodic phrases where there is much less chance for 
things to go awry.  So, if a song had, say, three main sections, I would 
probably use one \relative per, decoupling the sections from each other. 
 (Also, there is a good chance each section ends up as its own variable 
anyway.)  Going more granular might make sense if a section was 
particularly long.  At that point, the early and later notes just stop 
having any practical relationship with one another, so they might be 
better placed in their own blocks.



-- Aaron Hill



Re: How to input a diminished7 (maj7) chord?

2022-01-11 Thread Aaron Hill

On 2022-01-11 12:21 pm, Flaming Hakama by Elaine wrote:

%  I am not sure why this one does not work
-\markup { \super "o7(△7)" }


Wrong octave for the C flat.  Use .


-- Aaron Hill



Re: Ornament question

2022-01-14 Thread Aaron Hill

On 2022-01-14 12:13 am, Jacques Menu wrote:

What is the name of the ‘up arc’ ornament on the first note in this
score? Then I’ll look it up in the LPNR.


I think "scoop" might be the term.  Did we ever get a \bendBefore as the 
logical companion to \bendAfter?



-- Aaron Hill



Re: fonts on windows

2022-01-15 Thread Aaron Hill

On 2022-01-15 5:14 pm, Michael Rivers wrote:
I'm pretty sure text fonts on Windows are kaput. Some work, some don't. 
The
fonts I'd like to use show up as installed properly in Settings and 
work in
all other apps I've tried, but not Lilypond. I'm on Windows 11, but 
I've

also tried on Windows 10.


Are your fonts installed for all users or just your own account?  Back 
in the day, fonts were always stored system-wide in %WinDir%\Fonts.  At 
some point, Microsoft introduced an option for user-specific fonts which 
are located in %LocalAppData%\Local\Microsoft\Windows\Fonts.  Depending 
on how LilyPond enumerates fonts, it might only be picking up the 
system-wide ones.



-- Aaron Hill



Re: fonts on windows

2022-01-15 Thread Aaron Hill

On 2022-01-15 5:40 pm, Aaron Hill wrote:

which are located in %LocalAppData%\Local\Microsoft\Windows\Fonts.


No, stupid webmail client.  That is not the path I pasted into the 
message.  Where did that extra \Local even come from?!  (Roundcube is 
getting really buggy lately.)


%LocalAppData%\Microsoft\Windows\Fonts is the correct path.


-- Aaron Hill



Re: fonts on windows

2022-01-15 Thread Aaron Hill

On 2022-01-15 5:43 pm, Michael Rivers wrote:

That sounds exactly like the case. Would anyone happen to know how to
install the fonts system-wide?


It is an option when you right-click to install a font.  Look for 
"Install for all users" which should have the elevation shield next to 
it.



-- Aaron Hill



Re: fonts on windows

2022-01-15 Thread Aaron Hill

On 2022-01-15 5:52 pm, Michael Rivers wrote:

Yes, I managed to figure that out. It would be nice if Lilypond could
find fonts for the current user too.


Definitely.  Looks to be an issue with fontconfig [1] and not LilyPond.

[1]: https://gitlab.freedesktop.org/fontconfig/fontconfig/-/issues/144


-- Aaron Hill



Re: Descenders affecting line height calculation for lyrics in columns?

2022-01-20 Thread Aaron Hill

On 2022-01-19 11:41 pm, Bernhard Fisseni wrote:

[ . . . ] In the
song, there are some lines with descenders (p, g, q going below the
baseline).  I show the effect here by inserting "q" in the left
column. Lilypond seems to calculate the "real" line height of the
writing, not some kind of nominal text line height, so that a line
with descenders is higher than a line without. [ . . . ]
Is this the expected behaviour?


No (but kind of yes).

Firstly, \column and \line work properly, respecting baseline-skip and 
word-space:



\markup
  \override #'(baseline-skip . 4)
  \override #'(word-space . 0.5)
  \box \line {
\box \line \box {
  \column \box { q q q }
  \column \box { x x x }
  \column \box { b b b }
}
\box \column \box {
  \line \box { q x b }
  \line \box { q x b }
  \line \box { q x b }
}
  }


In your code, you have nested \columns within \columns, which does not 
work the same as a singular \column would.  \column attempts to align 
the contains markups by their respective baselines.  The baseline of a 
\column ends up being the baseline of its first markup.  See:



\markup \concat {
  \column { q x b }
  "q x b"
}


Your inner \columns involve two lines of text which makes them much 
taller than the default baseline-skip would permit.  \column avoids 
overlapping ink, so it moves markups further down based on their actual 
extents.  Descenders, then, could definitely result in a taller stencil.


There are likely many ways to tackle this.  (Other folks on the list 
might chime in with their preferred method.)  The simplest option I see 
is manually adjusting the baseline-skip between the inner and outer 
\columns:



\markup {
  \fill-line {
\hspace #1
\override #'(baseline-skip . 7)
\column {
  \line { \bold "2."
\override #'(baseline-skip . 3)
\column {
  "q This is verse two."
  "q It has two lines."
}
  }
  \line { \bold "3."
\override #'(baseline-skip . 3)
\column {
  "q This is verse three."
  "q It has two lines."
}
  }
}
\hspace #1
\override #'(baseline-skip . 7)
\column {
  \line { \bold "4."
\override #'(baseline-skip . 3)
\column {
  "This is verse four."
  "It has two lines."
}
  }
  \line { \bold "5."
\override #'(baseline-skip . 3)
\column {
  "This is verse five."
  "It has two lines."
}
  }
}
\hspace #1
  }
}


The math above is that two lines at baseline-skip of three plus an extra 
staff space means an effective baseline-skip of seven.




Secondly, the stanza commands seem to call for defining a two-argument
macro like \columnstanza, but I got lost in the documentation on the
different ways and the different types of objects.


Perhaps something like this:


#(define-markup-command
  (my-stanza layout props number lines)
  (markup? markup-list?)
  (interpret-markup layout props #{
\markup \line {
  \bold #number
  \override #'(baseline-skip . 3)
  \column #lines
}
  #}))

\markup {
  \fill-line {
\hspace #1
\override #'(baseline-skip . 7)
\column {
  \my-stanza "2." {
"q This is verse two."
"q It has two lines."
  }
  \my-stanza "3." {
"q This is verse three."
"q It has two lines."
  }
}
\hspace #1
\override #'(baseline-skip . 7)
\column {
  \my-stanza "4." {
"This is verse four."
"It has two lines."
  }
  \my-stanza "5." {
"This is verse five."
"It has two lines."
  }
}
\hspace #1
  }
}



-- Aaron Hill



Re: adjusting double glissandi

2022-01-25 Thread Aaron Hill

On 2022-01-25 11:46 am, Rachel Green wrote:

Hi,
I’m trying to adjust the glissandi in this excerpt so that the lines
are parallel and not too close to each other. I found some settings
for adjusting a single glissando, but not for a double glissando. Any
ideas?


There is prior work on this subject.  Harm has provided some code [1] 
before.


[1]: 
https://lists.gnu.org/archive/html/lilypond-user/2013-08/msg00547.html


Here is an adaptation of that logic:


glissandoTweak =
#(define-music-function
  (after? tweaks) ((boolean? #t) list?)
  (define (proc grob)
   (if after? (ly:spanner::kill-zero-spanned-time grob))
   (for-each
(lambda (x)
 (let ((prop (car x)) (value (cdr x)))
  (if (key-list? prop)
   (ly:grob-set-nested-property! grob prop value)
   (ly:grob-set-property! grob prop value
(ly:assoc-get
 (ly:grob-property grob 'glissando-index) tweaks '(
  (if after?
   #{ \once \override Glissando.after-line-breaking = #proc #}
   #{ \once \override Glissando.before-line-breaking = #proc #}))

{
 \glissandoTweak
 #`((0 . ((color . ,red)
  (Y-offset . -0.5)))
(1 . ((color . ,blue)
  ((bound-details right arrow) . #t
 2\glissando 
}



-- Aaron Hill



Re: Delay for list posts to arrive

2022-02-01 Thread Aaron Hill

On 2022-02-01 2:50 pm, Jean Abou Samra wrote:

Lately I've found myself a couple times duplicating answers
already provided on this list by others up to almost three
hours earlier because I had not received these replies yet.
Now the little delay for posts to get in inboxes is a quirk
inherent to mailing lists, but three hours seems a bit much.
I'm wondering: are others experiencing this as well?


Yes.  Though it is inconsistent.

Check the timestamps in the email headers.  This tends to be what I see:

- Original sender's mail goes from their server to the eggs.gnu.org (the 
spam filter, IIUC).

- eggs.gnu.org processes the mail and hands it off to lists.gnu.org.
- The email goes from "localhost" (?) to lists.gnu.org.  [This is where 
the delay usually happens.]

- My mail server gets the email from lists.gnu.org.


-- Aaron Hill



Re: associate text to chord

2022-02-05 Thread Aaron Hill

On 2022-02-05 2:49 am, Kevin Barry wrote:

Hi Achar,

Let me specify : in the following example V7 / IV is not associated 
with the Eb7 chord
but with the note G. Is it possible to pair it with the Eb7 chord ? 
Thanks


We don't have a code example, so it's hard to answer your question. At
a guess, it looks like you're attaching markup to the notes and you
need to attach it to the space between A flat and G. A quick solution
could be to add a spacer rest, e.g.:

f_"II" aes2*1/2 s4_"V" g

If this is something that happens frequently in your score, I would
recommend having a separate voice - with only spacer rests - for your
Roman numerals.


Another option is to use a dedicated context for analysis.  The Lyrics 
context is a good candidate, as it supports arbitrary markup that can be 
given rhythm independant of the associated Staff.  Consider LSR 710 [1] 
as a starting point.


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


-- Aaron Hill



Bar numbers on lines beginning with a partial measure

2022-02-06 Thread Aaron Hill
I have for quite some time just relied on the default behavior where bar 
numbers are printed only for the first measure in each line (save the 
very first measure).  This works reasonably well as my musicians are 
able to locate measures by number fairly quickly.  However, there is an 
issue when I opt to split measures over a line break.  (This practice is 
quite common in hymnals, though I find it equally effective for modern 
music to avoid having pickup/trailing notes/lyrics straddling a line 
break.)  When the first measure on a line is a partial measure, no bar 
number is shown.  This means some lines in my lead sheets have no bar 
number for reference.  In some cases, I end up with no automatic bar 
numbers at all.


(Some code for context/reference...)


midMeasureBreak = { \bar "" \break }
forceBarNumber =
\once \override Score.BarNumber
  .break-visibility = #all-visible

{ R1*4 \break
  R1*4 r2 r4 \midMeasureBreak r4
  R1*4 r2 r4 \midMeasureBreak r4
  \forceBarNumber
  R1*4 \bar "|." }


As can be see above, I can manually override the bar number visibility, 
but it is not very elegant.  If I opt to reflow music, I would have to 
revisit the bar numbers to make sure only the ones I want are there.  It 
would be very nice if LilyPond could treat the first full measure as the 
effective first measure on the line w.r.t. break visibility settings.


Has anyone else encountered this and come up with a solution?  If not, I 
will dig around the existing engraver logic and see about submitting a 
patch should folks find the updated behavior desirable.



-- Aaron Hill



Re: Bar numbers on lines beginning with a partial measure

2022-02-06 Thread Aaron Hill

On 2022-02-06 1:37 am, Jean Abou Samra wrote:

Are you aware of the options to print a parenthesized bar number at
the start of the line if it's the continuation of a measure? See
input/regression/bar-number-visibility-* (sadly missing documentation
at the moment). I don't have an opinion on whether that is better
practice or not than what you suggest. It is, at any rate, what Gould
recommends (Behind Bars p. 490).


Thanks, Jean.  first-bar-number-invisible-save-broken-bars is one of the 
undocumented options that seems almost perfect.


At first glance, though, the parenthesized numbers stand out too much.  
Thankfully, the parenthesization logic is within 
robust-bar-number-function, which is easily adaptable as Scheme code.  
Some quick testing with the \parenthesize markup command looks better 
than relying on the glyphs of the number font which are a little too 
wide.



;; ...preamble from robust-bar-number-function...
  (let*
   ((number-and-power (get-number-and-power 0 0))
(begin-measure (= 0 (ly:moment-main-numerator measure-pos)))
(text (string-append (number->string barnum)
   (make-letter "" (car number-and-power) (cdr 
number-and-power)

  (if begin-measure text
   (markup #:override '(line-thickness . 0.05)
   #:override '(padding . 0.05)
   #:override '(width . 0.2)
   #:parenthesize #:smaller text


I will have to try this for awhile to see if I like it better than 
labelling the first full measure.  It is interesting that all bar 
numbers would be consistently aligned on the left margin, so that might 
prove useful.



-- Aaron Hill



Re: associate text with chords

2022-02-06 Thread Aaron Hill

On 2022-02-06 5:08 am, achar wrote:

P.S.: I already received answers but, they evaporated before I could
read them


You can review the archives [1] if you lose track of a message.  
Although, since your original thread is barely two days old, you should 
strongly reconsider your service provider if they are purging emails 
that quickly.


[1]: 
https://lists.gnu.org/archive/html/lilypond-user/2022-02/msg00062.html



-- Aaron Hill



Re: Moving a tie horizontally

2022-02-07 Thread Aaron Hill

On 2022-02-07 3:28 pm, Jean Abou Samra wrote:

For now, you have to use the \shape command documented at


The shape seems fine, just needs to be offset to optically align with 
the slashed note heads:



music = { \time 3/4 2~4~8~8~2~16~8~16~4.~8 }

<<
\new RhythmicStaff { \music }
\new RhythmicStaff \with {
  \improvisationOn
  \override Tie.extra-offset = #'(-0.4 . -0.6)
} { \music } >>


NOTE to OP: For a single-line rhythm, consider using RhythmicStaff.


-- Aaron Hill



Re: Right justifying text between systems

2022-02-08 Thread Aaron Hill

On 2022-02-07 11:04 pm, Alasdair McAndrew wrote:
\markup {\hspace #70 \fontsize #2 {\italic {Au Rondeau puis au 
premier}}}


For right-alignment, you should use \fill-line:


\markup \fill-line { \null \italic "Lorem ipsum..." }




I could do this by adding the text as a markup to one of the notes in
the bottom staff of Rondeau II, but then it's too close to the score
block.


You could use a RehearsalMark at the very end with appropriate padding:


\paper { #(set-paper-size "a5") }

Rondeau.I = { R1*13 \bar "||" }
Rondeau.II = { R1*13 \bar "||" }
Bourree.I = { R1*13 \bar "|." }

\score { \header { piece = "Rondeau I" } { \Rondeau.I } }
\score { \header { piece = "Rondeau II" }
 { \Rondeau.II
   \tweak break-visibility #end-of-line-visible
   \tweak direction #DOWN
   \tweak font-size #0
   \tweak padding #2
   \tweak self-alignment-X #RIGHT
   \mark \markup \italic "Repeat Rondeau I" }
}
\score { \header { piece = "Bourree I" } { \Bourree.I } }



-- Aaron Hill



Re: Add text to score without affecting spacing

2022-02-09 Thread Aaron Hill

On 2022-02-09 4:12 pm, Valentin Petzel wrote:

Hi Kieren,

thank you. Yes, currently I am using some tweaked Rehearsal Marks mit 
0-

dimensions and some tweaks. Just asking if there was a better way.


There are a number of grobs that normally have no visual representation. 
 You could attach your content there:



\version "2.22.0"

overlayText =
#(define-music-function
  (grob-path text)
  (key-list? markup?)
  (define (print-with-point-outline grob)
   (ly:stencil-outline
(ly:text-interface::print grob)
point-stencil))
  (define (proc grob . args)
(ly:grob-set-property! grob 'font-size -6)
(ly:grob-set-property! grob 'layer 1000)
(ly:grob-set-property! grob 'stencil
 print-with-point-outline)
(ly:grob-set-property! grob 'text text))
  #{ \applyOutput $grob-path #proc #})

{
  b'4
  \overlayText Score.PaperColumn
\markup \general-align #Y #UP "Lorem"
  4
  \overlayText Score.NoteColumn
\markup \vcenter \whiteout \box "Ipsum"
  2
}



-- Aaron Hill

Re: More about stencil

2022-02-13 Thread Aaron Hill

On 2022-02-13 11:43 am, Rip _Mus wrote:

Hello everyone,
thanks to your many suggestions, I was able to get a little into the
perspective of modifying the stencils.
I created a stencil modification that adds a small arrow (sort of a
glissando) to the left of the note or accident.
However, I cannot understand why the ascending arrows let the stem no
longer attached to the notehead. Do you have any ideas?


Modifying the NoteHead stencil as you are doing changes its extents, 
thus affects the attachment point.  One option is to add the arrow to 
the final stencil but preserve the original extents:



  (ly:stencil-outline
(ly:stencil-combine-at-edge arr X RIGHT note 0)
note)


(The above approach might result in collisions.)

Another option would be to utilize Fingering as a host grob, as that 
already handles alignment with notes whether or not accidentals are 
present:


(Below also I show an alternate method for defining the arrows, so that 
a shared symbol is simply rotated.  Custom extents are specified so that 
the arrows align as desired.)



double-right-arrow =
#(ly:stencil-add
  (make-line-stencil 0.1 -0.9 0.1 -0.1 0.1)
  (make-line-stencil 0.1 -0.9 -0.1 -0.1 -0.1)
  (make-line-stencil 0.15 -0.3 0.3 0 0)
  (make-line-stencil 0.15 -0.3 -0.3 0 0))

glis-su-arrow =
#(ly:make-stencil
  (ly:stencil-expr
   (ly:stencil-rotate double-right-arrow 45 RIGHT CENTER))
  '(-0.7 . -0.2) '(-0.3 . 0.7))

glis-giu-arrow =
#(ly:make-stencil
  (ly:stencil-expr
   (ly:stencil-rotate double-right-arrow -45 RIGHT CENTER))
  '(-0.7 . -0.2) '(-0.7 . 0.3))

glis-giu =
#(define-music-function
  (note) (ly:music?)
  (ly:music-set-property! note 'articulations
   (cons
(make-music 'FingeringEvent 'digit 1
 'tweaks (list (cons (quote stencil) glis-giu-arrow)))
(ly:music-property note 'articulations '(
  #{ \once \set fingeringOrientations = #'(left)
 #(make-event-chord (list note)) #})

glis-su =
#(define-music-function
  (note) (ly:music?)
  (ly:music-set-property! note 'articulations
   (cons
(make-music 'FingeringEvent 'digit 1
 'tweaks (list (cons (quote stencil) glis-su-arrow)))
(ly:music-property note 'articulations '(
  #{ \once \set fingeringOrientations = #'(left)
 #(make-event-chord (list note)) #})

\new Staff {
  \relative c' {
\once \override Score.FootnoteItem.annotation-line = ##f
\footnote "*" #'(-0.2 . -1) "* glissando at the end of previous 
note" NoteHead

\stemDown \glis-giu f2 \glis-su b |
\glis-giu fis4 \glis-su bes2.
\glis-giu c32 \glis-su c c c c c c c
\glis-giu c \stemUp \glis-giu c
  }
}


Since Fingerings must be inside a chord (i.e. <>) construct in order to 
respect fingeringOrientations, the music functions above have to do some 
manipulation of the argument.  Depending on how you intend on using 
these arrows in context, it might be worth the time to invent a custom 
grob instead rather than cannibalize something built-in.



-- Aaron Hill



Re: DynamicTextSpanner spacing

2022-03-05 Thread Aaron Hill

On 2022-03-05 3:49 pm, Erika Pirnes wrote:

I would like the dotted line of the crescendo to start a bit later and
end a bit earlier. It is too close to "cresc.", in my opinion at
least. And sometimes too close to the "f" as well. (A tiny detail, for
sure, but it looks annoying.) Any ideas?
[...]
music = \relative c' {
  \repeat unfold 5{c8 \p \cresc d e f g a b4 c8 \f b c2.}
}


You will need to play around with the bound-details for the 
DynamicTextSpanner:



\version "2.18.2"

\relative c' {
  %% The space before the left side of the spanner.
  %% (NOTE: This includes the attached stencil.)
  %% Default is 0.75; we are adding two units of space.
  \override DynamicTextSpanner.bound-details.left.padding = #2.75

  %% Since we want the space between the stencil and
  %% line, we need to shift the stencil over a bit.
  %% Default is (-0.75 . -0.5); we move it left by the
  %% same increment we applied to the padding above.
  \override DynamicTextSpanner.bound-details
.left.stencil-offset = #'(-2.75 . -0.5)

  %% The space after the right side of the spanner.
  %% Default is 0.75; we are adding two units of space.
  \override DynamicTextSpanner.bound-details.right.padding = #2.75

  %% (For debugging only...)
  %% Highlight the grob in red for better visibility.
  %% Also make the line solid to show its extents clearly.
  \override DynamicTextSpanner.color = #red
  \override DynamicTextSpanner.dash-fraction = #1

  \repeat unfold 5{ c8 \p \cresc d e f g a b4 c8 \f b c2. }
}



-- Aaron Hill



Re: VS: DynamicTextSpanner spacing

2022-03-06 Thread Aaron Hill

On 2022-03-05 5:26 pm, Erika Pirnes wrote:

Thank you Aaron, it seems to work! But what does stencil mean exactly?


Sorry for the delay.  Within the bound-details, the stencil refers to 
the associated text or graphic that is attached to the left (or right) 
end of the spanner line.  In this case, it would be the text "cresc.".



-- Aaron Hill



Should \partial accept music instead of duration?

2022-03-19 Thread Aaron Hill

Here would be a possible refactoring:


\version "2.22.0"

partial =
#(define-music-function (mus) (ly:music?)
  (_i "Make a partial measure.")
  (let* ((mom (ly:music-length mus))
 (dur (make-duration-of-length mom)))
(make-music 'SequentialMusic
  'elements
  (list (context-spec-music
  (make-music 'PartialSet
  'origin (*location*)
  'duration dur)
  'Timing)
mus


\fixed c' {
  \time 3/4
  \partial { g8 a4 }
  | g2. \bar "||"
  \partial { \grace { g16 } a8 b }
  | a2. \bar "||"
  \partial \tuplet 3/2 { g8 fis }
  | g2. \bar "|."
}


A convert-ly rule would probably not be possible given the limited power 
of regular expressions.  As such, \partial might need to support both 
duration and music arguments.  Initially I thought this might not be 
possible, given that a naked duration can be treated as music; but the 
following does seem to work:



\version "2.22.0"

#(define (duration-or-music? arg)
  (or (ly:duration? arg) (ly:music? arg)))

partial =
#(define-music-function (arg) (duration-or-music?)
  (_i "Make a partial measure.")
  (if (ly:duration? arg)
(context-spec-music
  (make-music 'PartialSet
  'origin (*location*)
  'duration arg)
  'Timing)
(let* ((mom (ly:music-length arg))
   (dur (make-duration-of-length mom)))
  (make-music 'SequentialMusic
'elements
(list (context-spec-music
(make-music 'PartialSet
'origin (*location*)
'duration dur)
'Timing)
  arg)


\fixed c' {
  \time 3/4
  \partial 4. g8 a4 %% Original syntax works.
  | g2. \bar "||"
  \partial { \grace { g16 } a8 b }
  | a2. \bar "||"
  \partial \tuplet 3/2 { g8 fis }
  | g2. \bar "|."
}



-- Aaron Hill

Re: Should \partial accept music instead of duration?

2022-03-19 Thread Aaron Hill

On 2022-03-19 5:46 pm, Thomas Morley wrote:

Am So., 20. März 2022 um 00:02 Uhr schrieb Aaron Hill
:


Here would be a possible refactoring:


\version "2.22.0"

partial =
#(define-music-function (mus) (ly:music?)
   (_i "Make a partial measure.")
   (let* ((mom (ly:music-length mus))
  (dur (make-duration-of-length mom)))
 (make-music 'SequentialMusic
   'elements
   (list (context-spec-music
   (make-music 'PartialSet
   'origin (*location*)
   'duration dur)
   'Timing)
 mus


\fixed c' {
   \time 3/4
   \partial { g8 a4 }
   | g2. \bar "||"
   \partial { \grace { g16 } a8 b }
   | a2. \bar "||"
   \partial \tuplet 3/2 { g8 fis }
   | g2. \bar "|."
}


A convert-ly rule would probably not be possible given the limited 
power

of regular expressions.  As such, \partial might need to support both
duration and music arguments.  Initially I thought this might not be
possible, given that a naked duration can be treated as music; but the
following does seem to work:


\version "2.22.0"

#(define (duration-or-music? arg)
   (or (ly:duration? arg) (ly:music? arg)))

partial =
#(define-music-function (arg) (duration-or-music?)
   (_i "Make a partial measure.")
   (if (ly:duration? arg)
 (context-spec-music
   (make-music 'PartialSet
   'origin (*location*)
   'duration arg)
   'Timing)
 (let* ((mom (ly:music-length arg))
(dur (make-duration-of-length mom)))
   (make-music 'SequentialMusic
 'elements
 (list (context-spec-music
 (make-music 'PartialSet
 'origin (*location*)
 'duration dur)
 'Timing)
   arg)


\fixed c' {
   \time 3/4
   \partial 4. g8 a4 %% Original syntax works.
   | g2. \bar "||"
   \partial { \grace { g16 } a8 b }
   | a2. \bar "||"
   \partial \tuplet 3/2 { g8 fis }
   | g2. \bar "|."
}



-- Aaron Hill


Hi Aaron,

I really like it! Always wondered why we need to specify a duration,
if it can be taken from the music.
I'd suggest to propose it on devel. Preferable the second coding,
because we could nicely deprecate the old syntax for some versions.


*facepalm*  I thought I was sending to devel.  Well, folks on user might 
want to chime in too.



-- Aaron Hill



Re: Should \partial accept music instead of duration?

2022-03-19 Thread Aaron Hill

On 2022-03-19 7:53 pm, Dan Eble wrote:

On Mar 19, 2022, at 20:53, Aaron Hill  wrote:
...
A convert-ly rule would probably not be possible given the limited 
power
of regular expressions.  As such, \partial might need to support 
both

duration and music arguments.  Initially I thought this might not be
possible, given that a naked duration can be treated as music; but 
the

following does seem to work:

...

I wouldn't want to have to explain to users why these turn out 
different.


\score {
  \fixed c' {
\partial 4. 4.
  }
}

\score {
  \fixed c' {
\partial c4. c4.
  }
}



Fair point, though the intention here would be that backwards 
compatibility would only need to exist for a time.  A warning could be 
issued whenever a user applies the older syntax; this would inform the 
user of the impending breaking change while still allowing existing code 
to compile.  When it is convenient, a future release would only support 
music as the argument.



-- Aaron Hill



Re: Should \partial accept music instead of duration?

2022-03-20 Thread Aaron Hill

On 2022-03-20 1:13 am, Leo Correia de Verdier wrote:

Entirely replacing the actual syntax would not be desirable in my
opinion. Consider the case when it is used in a “global” part/variable
in an orchestral score that usually contains rehearsal marks, tempo,
key and time signature changes and such. As I understand it having
\partial to accept only music as argument would have to move to each
part, which would introduce unnecessary typing and disrupt the logic
of the structure. Sure it can be worked around, but I would see it as
a step backwards. Or have I misunderstood?


All of those things *are* music, as far as LilyPond is concerned.  It is 
just that commands like \tempo have no duration, so the following is 
nonsensical since the music has zero length:


   \partial \tempo 4 = 90

Your "global" variable likely uses spacer rests which are providing the 
length information, so the change to \partial usage ultimately looks 
like this:


   \partial 4 s4   =>   \partial s4

This removes the otherwise redundant specification of the duration.


-- Aaron Hill



Re: Should \partial accept music instead of duration?

2022-03-20 Thread Aaron Hill

On 2022-03-20 3:17 am, David Kastrup wrote:

Aaron Hill  writes:

Fair point, though the intention here would be that backwards
compatibility would only need to exist for a time.


I strongly disagree since \partial with a duration is the natural and
proper expression when writing a separate timing track.


Natural, I can see.  Proper... I would need more information backing 
that claim.  Certainly if there is a technical basis, I would be eager 
to review it.  If sound, then I could retract my proposal and answer the 
email subject with "no".


In my timing/global/structure variables, expressions like \partial 4 s4 
are common.  Certainly \partial 4 would be most succinct, but it creates 
no actual duration in sequential music.  Naturally, the spacer rest is 
used so later commands occur when I need them.  My proposal leads to 
\partial s4 as a reasonable construct that avoids redundancy.  (See 
below regarding NullVoice.)




A warning could be issued whenever a user applies the older syntax;
this would inform the user of the impending breaking change while
still allowing existing code to compile.  When it is convenient, a
future release would only support music as the argument.


4. _is_ valid music.


Yes, and it works with the updated \partial function.  The only side 
effect is that it might produce a visible note (of unspecified pitch), 
because that is what 4. as music means.  If used in a NullVoice context, 
it should work the same as s4. which means we are back to the original 
syntax.  The key difference is that \partial 4. would now have musical 
length.



-- Aaron Hill



Re: partCombine misinterprets Solo

2022-03-23 Thread Aaron Hill

On 2022-03-23 1:52 am, David Santamauro wrote:

mm 1- 3 and 3-6 are note-identical. The only difference is the
decrescendo in m. 1, terminated in m. 2. I believe the terminating
decrescendo in vTwo/m. 2 causes the partCombine code to think there's
music in vTwo/m. 2 -- I could be wrong, but the result is wrong
nevertheless.


The part combiner sometimes needs hints.

Consider adding...

  \once \partCombineSoloI

...at the beginning of the second measure.


-- Aaron Hill



Re: Ignore stems

2022-03-25 Thread Aaron Hill

On 2022-03-25 5:11 am, Simon Albrecht wrote:

Hello everybody,

I want to try having Lyrics placed without regard for any stems in the
adjacent staff (and then using whiteout to remedy the clash, of
course). The below approach doesn’t work. Why? Can I make it work?


You'll typically need to use negative padding to get overlapping ink.


  \override VerticalAxisGroup.nonstaff-relatedstaff-spacing =
#'((minimum-distance . 4.5) (padding . -2))



-- Aaron Hill



Re: Temporary div. multiple staffs

2022-04-05 Thread Aaron Hill

On 2022-04-05 10:20 pm, Evan Driscoll wrote:

Another question, one I've struggled with before.

The part splits out temporarily into divisi parts on multiple staffs. I
always have trouble getting the correct incantations to get the correct
result.

A naive attempt results in http://lilybin.com/1l8whf/5. This is enough 
to
keep working, but it looks bad -- barlines don't cross between staffs, 
and

there's no grouping a la
https://lilypond.org/doc/v2.22/Documentation/69/lily-9c91c2b7.png from 
the

manual.

I can get a pair of staffs that are correct on their own by creating a
StaffGroup with two new staffs -- http://lilybin.com/1l8whf/9 -- but 
the

original staff continues through. Omitting the explicit \new Staff
invocations doesn't help -- http://lilybin.com/1l8whf/11.

What's the right way to do this?


Unsure there is a definitively "right" way... but here's an option:

http://lilybin.com/1l8whf/12

Move the StaffGroup declaration outside the music.  Also, you can name 
contexts so you can reference an existing one to avoid creating new ones 
(explicitly or implicitly).



-- Aaron Hill



Re: how to repeat a scheme function that creates a Score

2022-04-05 Thread Aaron Hill

On 2022-04-05 10:40 pm, Jeff Olson wrote:

Question (b):

My secondary question is very simple.  How do you set the seed for
scheme's "random" function (used in my gen-music.ily).  I'd like to
get the repeatability of a pseudo-random number generator.



(set! *random-state* (seed->random-state 42))


Review the Guile documentation [1]:

[1]: 
https://www.gnu.org/software/guile/docs/docs-1.8/guile-ref/Random.html#Random



-- Aaron Hill



Re: Temporary div. multiple staffs

2022-04-05 Thread Aaron Hill

(Please keep the mailing list on all replies.)

On 2022-04-05 11:06 pm, Evan Driscoll wrote:
On Wed, Apr 6, 2022 at 12:37 AM Aaron Hill  
wrote:



Unsure there is a definitively "right" way... but here's an option:

http://lilybin.com/1l8whf/12

Move the StaffGroup declaration outside the music.  Also, you can name
contexts so you can reference an existing one to avoid creating new 
ones

(explicitly or implicitly).



Perfect, thanks!

As a final tweak, in case anyone finds this thread in the future, 
here's

how to omit the time signature on the new staff:
http://lilybin.com/1l8whf/15

Though a question -- I discovered that adding *just* the \new 
StaffGroup on

the "outside" made things work -- on the simplified example, that'd be
something like http://lilybin.com/1l8whf/16. In other words, that works
even without explicitly naming the existing Staff context and referring 
to

it with \context. Is there any difference between these, aside from
possible readability arguments?


In many cases, you can rely on the implicit handling of contexts.  Your 
example #16 above relies on the implicit continuation of the current 
context as only the divisi staff is explicitly created, so things do 
work as expected.


But note that this new staff appears below the original one.  If you 
wanted it to be above, consider:


http://lilybin.com/1l8whf/17

(I added color just to make it easier to see which context is which.)


-- Aaron Hill



Re: how to repeat a scheme function that creates a Score

2022-04-05 Thread Aaron Hill

On 2022-04-05 10:40 pm, Jeff Olson wrote:

Question (a):

My main question is how to write a scheme function that will invoke my
scr function N times, where N could be a number like 1000.



#(for-each add-score (map (lambda (x) #{ \scr #}) (iota 5)))


Replace 5 with whatever.


-- Aaron Hill



Re: Temporary div. multiple staffs

2022-04-09 Thread Aaron Hill

On 2022-04-09 8:45 am, David Zelinsky wrote:

A question about Aaron's example:


You are referencing an aspect of the original source, not what was being 
demonstrated in the updated version.




What is the purpose of the following
line (line 12)?

   \once \override Staff.TimeSignature #'break-visibility = ##(#f #f 
#f)


The "\omit TimeSignature" on line 7 seems to do the trick, and in fact
as far as I can tell the above \override has no effect, even when the
\omit TimeSignaure is removed.


You are correct that the \omit alone is sufficient.  I am unsure why the 
original had the break-visibility override.


That aside, it would probably be best to use \once \omit to limit the 
scope of the command's effect.



-- Aaron Hill



Re: Generate music with scheme

2022-04-11 Thread Aaron Hill

On 2022-04-11 9:10 am, Henrik Frisk wrote:

\version "2.22.2"

{
   $(make-sequential-music
 (map (lambda (x)
(make-sequential-music
 (list
  (make-music 'NoteEvent
  'pitch
  (ly:make-pitch 0 x)
  'duration
  (ly:make-duration 2))
  (make-music 'MarkEvent
  'label
  (markup
   #:line
   (#:override (cons (quote font-size) -3)
"10"))
  (list 1 2 3 4)))
}


Thanks Jean,

It was the (make-sequential-music) after the lambda expression that I 
had
missed, without it it doesn't help to combine the two music events in 
one

list.


You could also use append-map which will concatenate the lists without 
the inner call to make-sequential-music:



{
 $(make-sequential-music
  (append-map
   (lambda (x) (list
#{ $(ly:make-pitch 0 x) 4 #}
#{ \mark \markup \override #'(font-size . -3) 10 #} ))
   (iota 4 1)))
}


In fact, using list-splicing, you can eliminate the outer call to 
make-sequential-music as well:



{
 $@(append-map
  (lambda (x) (list
   #{ $(ly:make-pitch 0 x) 4 #}
   #{ \mark \markup \override #'(font-size . -3) 10 #} ))
  (iota 4 1))
}


Also note the above use of #{ #} to escape music syntax within scheme, 
which can often be more abbreviated.



-- Aaron Hill



Re: Question on multiple markups

2022-04-12 Thread Aaron Hill

On 2022-04-12 12:25 pm, Evan Driscoll wrote:

http://lilybin.com/vhf35h/5 for example.

I have a note that has two text decorations on it, c^"pizz"_"marc", as 
well

as a dynamic \f.

By default everything gets stacked (http://lilybin.com/vhf35h/6), but 
that
gets really busy -- there's actually a tempo marking and rehearsal mark 
at
that place as well. (I also left off \italic on the marc. but it's in 
my

real version.)

I can move the TextScript object*s* with *\once \override
TextScript.extra-offset = #'(2.1 . 1.7)*, but that moves both. I'd like 
to
get the 'marc' side by side with the \f obviously without moving the 
arco

instruction.

I suspect this has to do with \tweak in there somehow but I can't 
figure

out the right incantation.


You need to use the post-event form for \tweak.  Consider:


marc = -\markup \italic "marc."

\relative c' {
 c4
  -\tweak extra-offset #'(2.1 . 1.7) _\marc
  ^"arco"
  \f
 c c c
}

\relative c' {
 c4
  -\tweak X-offset #2 _\marc
  ^"arco"
  \f
 c c c
}


NOTE: I think the X-offset tweak looks a little cleaner.


-- Aaron Hill



Re: ottava spanner terminates at the end of the note, not the end of the bar

2022-05-13 Thread Aaron Hill

On 2022-05-13 8:28 pm, Kenneth Wolcott wrote:

  The ottava spanner terminates at the end of the note, not at the end
of the bar.

  How to change this?

  Screenshots attached.


Consider the following:


\version "2.22.0"

\relative c'' {
  % Be careful not to stop the ottava too soon.
  \ottava 1 c4 e g f8 d | c2. \ottava 0 r4

  % This encompasses the rest as well but is still a little too short.
  \ottava 1 c4 e g f8 d | c2. r4 \ottava 0
  c8 d b c~ c2

  % This would be nice...
  % \override Staff.OttavaBracket.to-barline = ##t
  % ...but it would appear OttavaBracket is not a
  % line-spanner-interface, where to-barline lives.

  % A manual adjustment is possible:
  \once \offset shorten-pair #'(0 . -1) Staff.OttavaBracket
  \ottava 1 c4 e g f8 d | c2. r4 \ottava 0
  c8 d b c~ c2
  \bar "|."
}


Assuming you only have a few of these you need to manage, the manual 
offset might be sufficient to let you move onto other things in your 
score.  But you will need to review these if you make any changes that 
affect the measure length.  An automated approach might be possible, but 
really I think OttavaBracket should support to-barline.  Something to 
submit to the bug mailing list I guess.




Was almost about to hit send, but then I thought... what if you hid the 
OttavaBracket but used a TextSpanner in its place?



\relative c'' {
  \once \hide Staff.OttavaBracket
  \ottava 1

  c4 -\tweak to-barline ##t
 -\tweak dash-fraction #0.3
 -\tweak dash-period #1
 -\tweak bound-details.left.text
   \markup \vcenter \bold 8
 -\tweak bound-details.right.stencil
   #(make-line-stencil 0.1 0 0 0 -0.8)
 \startTextSpan
e g f8 d

  | c2. r4 \ottava 0
  c8\stopTextSpan d b c~ c2
}


Hmm... maybe not.  That is a lot of tweaks, and I do not think I matched 
the original OttavaBracket well enough.



-- Aaron Hill



Re: Offset ClefTransposition number

2022-05-17 Thread Aaron Hill

On 2022-05-17 7:05 am, Dimitris Marinakis wrote:

Is it possible to offset the little number that indicates the clef
transposition?
I searched the Clef internals but couldn't find anything relevant.


It is called the ClefModifier.  It would be useful to know what terms 
you used to search so we can improve the ability to find the grob for 
others in the future.



{ \override Staff.ClefModifier.color = #red
  \override Staff.ClefModifier.padding = #1
  \clef "treble_8" b4 \clef "treble^8" b''4
  \clef "bass_8" d,4 \clef "bass^8" d'4 }



-- Aaron Hill



Re: Left-hand end of tuplet bracket sometimes wrong

2022-06-03 Thread Aaron Hill

On 2022-06-03 10:10 am, Paul Hodges wrote:

I find that even using shorten-pair (with a negative first value)
fails to do this as I expected.  So now I don't know any way to print
the bracket with the preferred layout...


You would want to adjust the X-positions, so that the TupletNumber is 
centered properly.  See the difference:



\version "2.22.0"

{
  \offset shorten-pair #'(-1 . 0)
  \tuplet 3/2 \relative { f'4 g a }

  \offset X-positions #'(-1 . 0)
  \tuplet 3/2 \relative { f'4 g a }
}


Since an offset of one staff space is only approximate, you would need 
to consult the bounds of the NoteColumns directly:



{
  \override TupletBracket.X-positions =
  #(lambda (grob)
;; NOTE: The logic here does not fully replace
;;   ly:tuplet-bracket::calc-x-positions
(let* ((nc (ly:grob-object grob 'note-columns))
   (xref (ly:grob-common-refpoint-of-array grob nc X))
   (lb (ly:spanner-bound grob LEFT))
   (lbex (ly:generic-bound-extent lb xref))
   (lbrc (ly:grob-relative-coordinate lb xref X))
   (rb (ly:spanner-bound grob RIGHT))
   (rbex (ly:generic-bound-extent rb xref)))
(cons (- (car lbex) lbrc) (- (cdr rbex) lbrc

  \tuplet 3/2 \relative c' { 4 g  }
  \tuplet 3/2 \relative c'' { 4 d  }
}


Tuplet_Bracket::calc_x_positions relies on Item::get_x_bound_item, which 
includes the logic to prefer using the Stem of a NoteColumn as the bound 
item if the direction matches.


The code above simply ignores that behavior and computes X-positions 
purely based on the extents of the NoteColumns.  Mind you, 
Tuplet_Bracket::calc_x_positions does more work to account for 
properties like connect-to-neighbor, break-overshoot, and 
full-length-to-extent, so this is not a true replacement/fix.



-- Aaron Hill



Re: color individual characters

2022-06-05 Thread Aaron Hill

On 2022-06-05 1:13 pm, Лысов Дмитрий wrote:

Hi. How to color individual characters in the UNICODE encoding text?


The examples did not come through for me--perhaps an encoding issue 
between our mail clients, or my mail server is just being overly 
paranoid about attachments that could contain executable code.


--

Here is an example of applying unique colorization to a character and a 
combining character:



\version "2.22.0"

\markup {
  \concat {
jalape
\with-color #blue n
\with-color #red \char ##x0303
o
  }
}


The above usage pattern does break up the input into separate pieces.  
As such, Pango observes the 'n' distinctly from the combining tilde, 
effectively preventing it from converting to the pre-composed glyph 'ñ'. 
 (In the case above, we would not want the pre-composed glyph anyway 
because we desire independent coloring.)


Fonts with more advanced replacement rules for handling complex scripts 
and ligatures will not work, as Pango needs to see the whole input to 
apply the proper logic.  And at that point, \with-color is only left 
with the option to apply color to the entire resulting stencil.



-- Aaron Hill

Re: Unconventional score and unwanted stray staff lines

2019-05-19 Thread Aaron Hill

On 2019-05-18 10:46 pm, David Bellows wrote:

Maybe use bar checks?


Given that a lot of the music isn't generated to fit any particular
time signature (ie, the bar lines are often there just to break things
up to ease reading), I would get tons of bar check errors. Plus,
keeping track of when bars should be inserted in my software seems
like it would be a huge chore. Is this something you think would solve
the problem?


I would have thought it fairly trivial* to keep track of bar lines.  You 
need only add up the durations of the notes you have emitted and, when 
the running count equals a whole measure, you know there is spot for a 
bar check.  Of course, you might have notes that overlap the bar line, 
and perhaps you are leveraging LilyPond's ability to automatically split 
notes.  In this case, you would see that the durations exceed a whole 
measure by some fraction.  For the purposes of inserting bar checks, you 
would skip it since the next note does not start the measure.


(* Let's assume that 1/128 notes are the shortest duration your program 
generates.  Then each instance of that duration could simply add one to 
a counter.  1/64 notes add two; 1/32 add four; etc.  Depending on how 
many 1/128 notes make up the desired length of a measure, you subtract 
that amount from the running total when it is equal or greater.  And 
anytime the counter is zero, you emit a bar check before the next note.  
Of course the amounts to add get a little more interesting with tuplets 
and unusually scaled durations.  A more general-purpose rational 
representation could be useful.)


I have not checked exactly, but perhaps your final measures on each line 
are not precisely aligned to a whole measure.  You can of course say 
\bar "|." early, but maybe you need to use \partial on the final measure 
as well.  Granted, this would require that your software cache notes 
before writing them so you can tell if you are going to have a short 
measure.


One thing to consider: if your music is really fluid, perhaps writing 
things with \cadenzaOn makes sense.  Here there are no measures, and you 
can emit bar lines whenever you see fit.  (In fact, you *have* to emit 
bar lines if you want the music to be able to break across a lines.)  
But I am unsure if this is strictly speaking necessary to get your setup 
working.


\stopStaff should be helpful to ensure that the StaffSymbol does not run 
past a point; but maybe you need to play around with break-alignment to 
resolve the issue of those pesky extra clefs showing up.  Then again, it 
is entirely possible that your intentionally misaligned systems are just 
running afoul of some limitation of LilyPond.  I certainly have never 
tried pushing this aspect of the software.



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: [Lilypond] How to add chorus to multi-verse lead sheet for guitar?

2019-05-21 Thread Aaron Hill

On 2019-05-21 8:48 pm, John Helly wrote:
Mahalo. Definite maybe.  I found a reference to using multiple voices 
in

the learning manual that might be a more general solution but don't
understand it yet.


One thing multiple voices would let you do is separate the melody 
between the verse and chorus so you may associate the lyrics 
independently.  Consider:



\version "2.19.82"

Song.Voice.Verse = \fixed c' { f4 f g g | a2 c' }
Song.Voice.Chorus = \fixed c' { bes4 a g bes | a1 }

Song.Lyrics.VerseI = \lyricmode { Lyr -- ics for the | first verse. }
Song.Lyrics.VerseII = \lyricmode { Sec -- ond verse has | these words. }
Song.Lyrics.VerseIII = \lyricmode { Syl -- la -- bles on | verse three. 
}

Song.Lyrics.Chorus = \lyricmode { Cho -- rus text goes | here. }

<<
  \new Staff {
\key f \major
\new Voice = "verse" { \Song.Voice.Verse \bar "||" }
\new Voice = "chorus" { \Song.Voice.Chorus \bar ":|." }
  }
  \new Lyrics \lyricsto "verse" { \Song.Lyrics.VerseI }
  \new Lyrics <<
\lyricsto "verse" { \Song.Lyrics.VerseII }
\lyricsto "chorus" { \Song.Lyrics.Chorus } >>
  \new Lyrics \lyricsto "verse" { \Song.Lyrics.VerseIII } >>



Note that I have, like Karlin recommended, put the lyrics for the chorus 
in the same Lyrics context as those for the second verse.  If you have 
an odd number of verses, you typically will include the chorus with the 
middle one so you automatically get the correct vertical alignment.


However, if the chorus text only ever appears on its own line (as it 
would if you add a \break after \bar "||"), then it should not matter 
which Lyrics context the words are in.  In fact, you could add a new one 
just for the chorus.



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: bar number alignment

2019-05-25 Thread Aaron Hill

On 2019-05-25 2:58 pm, Pierre Perol-Schneider wrote:

Hi,
On the french list a user would like to get bar numbers -- every 3 bars 
--

center aligned exept when systems start.
Is there a way, such as \alterBroken for spanners, that could help ?
Snippet (with \alterBroken just as an example):

\version "2.21.0"
{
  \override Score.BarNumber.break-visibility = ##(#t #t #t)
  \set Score.barNumberVisibility = #(every-nth-bar-number-visible 3)
  \override Score.BarNumber.stencil = #(make-stencil-circler 0.1 0.25
ly:text-interface::print)
  \override Score.BarNumber.self-alignment-X = 0

  %% wanted:
  %\alterBroken self-alignment-X #(list 0 1) Score.BarNumber

  \set Score.currentBarNumber = 
  \repeat unfold 50 c'1
}



Would something like this help?


  \override Score.BarNumber.self-alignment-X =
#(lambda (grob) (- (ly:item-break-dir grob)))
%%%%


-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: staff-space as a variable

2019-05-25 Thread Aaron Hill

On 2019-05-25 7:34 pm, Edward Neeman wrote:

Thanks Xavier, that is a much neater option than going with ballpark
figures as I did in my example.

Though since I have two different staff sizes in two different output
files, it still means I have to do something like this:

\tag #’clarinet { \override TupletBracket.padding = #(* (magstep -4) 
1.1) }

\tag #’piano { \override TupletBracket.padding = #1.1 }

and set the appropriate keep-with-tag in the separate \score blocks.



Does the following help?


\version "2.19.82"

scaleByStaffSpace = #(define-scheme-function (value) (number?)
  (lambda (grob) (* value (ly:staff-symbol-staff-space grob

\layout { \context { \Staff
  \override TupletBracket.padding = \scaleByStaffSpace #1.1
} }

music = \fixed c' { d4 \tuplet 3/2 { g8 a b } fis2 }

#(define phi (/ (+ (sqrt 5) 1) 2))
\new Staff \with { \magnifyStaff $(/ phi) } \music
\new Staff \music
\new Staff \with { \magnifyStaff $phi } \music



-- Aaron Hill___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Stacking two text lines

2019-05-25 Thread Aaron Hill

On 2019-05-25 9:52 pm, Mike Dean wrote:

Hi group:
I am extracting a solo line from Gavotte II (Cello Sonata #6, J.S. 
Bach)

and at the end of Gavotte II are these instructions:

2nd time poco rall.
Gavotte I D.C.

I am struggling with how to attach that to the final measure (and a 
half):


a, a\p-. b-. cs-. | d2


\markup is quite powerful in LilyPond; and you can use it just about 
anywhere.  But more important to your scenario, you can use it for 
TextScripts and RehearsalMarks.  See the following:



\version "2.19.82"

someText = \markup
  \abs-fontsize #8 \override #'(baseline-skip . 1.5)
  \right-column { A BB CCC }

\fixed c' {
  | c'4 \tuplet 3/2 { b8 a g } e2^\markup \someText
  | f4 \tuplet 3/2 { g8 a b } c'2
\once \override Score.RehearsalMark.self-alignment-X = #RIGHT
\mark \markup \someText
}



-- Aaron Hill___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


DNS issues with LSR

2019-06-07 Thread Aaron Hill

Hi folks,

Who is the contact point for the LSR, more specifically the individual 
responsible for their DNS?


There has been a long-standing issue with their name servers that 
prevent services like CloudFlare from reliably resolving records.  But 
now things are worse, and it seems that lsr.dsi.unimi.it is no longer a 
valid domain.  It used to be a CNAME to the A record 
sliver.docenti.di.unimi.it.  CloudFlare and Quad9 both fail resolving 
either the CNAME or A records.  Google can resolve just the A record, 
which currently reports as 159.149.136.4.  Using that IP address 
directly, I can access the LSR; so it seems the web server itself is up 
and responsive.  But these DNS issues need to be looked at.


On a semi-related note, would it be possible to get a mirror of the LSR 
hosted somewhere like GitHub?  Or does such a mirror already exist where 
one could `git clone` a local copy of the LSR?



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: DNS issues with LSR

2019-06-07 Thread Aaron Hill

On 2019-06-07 2:54 am, Aaron Hill wrote:

Hi folks,

Who is the contact point for the LSR, more specifically the individual
responsible for their DNS?

There has been a long-standing issue with their name servers that
prevent services like CloudFlare from reliably resolving records.


This is still relevant, as the name servers at unimi.it are still broken 
w.r.t. to requests from CloudFlare.



But
now things are worse, and it seems that lsr.dsi.unimi.it is no longer
a valid domain.


*smacks forehead*  That's what I get for clicking links in old emails on 
this mailing list and not noticing a one-letter change in the domain 
name over time.  Ignore this part of the query.  The current domain name 
is lsr.di.unimi.it.



On a semi-related note, would it be possible to get a mirror of the
LSR hosted somewhere like GitHub?  Or does such a mirror already exist
where one could `git clone` a local copy of the LSR?


Still a valid question.


-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Tempo markings & partcombine

2019-06-10 Thread Aaron Hill

On 2019-06-10 5:28 am, Michael Seifert wrote:

What I’d like is for the tempo markings to show up (at most) once per
staff in the score, even on combined staves;  but the tempo markings
should show up in each individual part when it’s produced.  Right now,
partcombine leads to both of the “rit.” markings being printed on the
combined staff, despite the fact that only one of them is necessary.
I could remove the “rit.” marking from the one of the sets of “part
notes", but then it won’t show up in when I produce the individual
part.

Surely I can’t be the first person to run into this problem;  what’s
the best practice for this sort of situation?


Not sure if this is "best" practice, but you could always separate the 
markup from the notes:



\version "2.19.82"

partInotes = { c'1 c'1 }
partIInotes = { e'1 c'1 }
partMarkup = { s1-"rit." s1-"a tempo" }

\score { \new Staff << \partcombine \partInotes \partIInotes \partMarkup 
>> }

\score { \new Staff << \partInotes \partMarkup >> }
\score { \new Staff << \partIInotes \partMarkup >> }


There might be some gotchas with the above approach, so perhaps the 
better solution would be to use edition-engraver [1].


[1]: https://github.com/openlilylib/edition-engraver

-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Leadsheet - trying to fill page without leaving empty space

2019-06-10 Thread Aaron Hill

On 2019-06-10 9:12 am, Michael Hendry wrote:

I can usually get a reasonable result by tweaking global-staff-size,
but here’s an example of the bottom of a page with

[ . . . ]

Am I tweaking the wrong parameter?

Is there a more elegant way of ensuring that a leadsheet fits in one 
page?



\paper { page-count = #1 }


Whether LilyPond will be happy about that is another thing entirely.

Setting and/or adjusting the global staff size is unlikely to be the 
correct thing since that scales everything.  What you probably want is 
tighter spacing rather than physically smaller elements.  This falls to 
using the flexible vertical spacing features of LilyPond:



\paper {
  system-system-spacing = #'(
(basic-distance . 15)
(minimum-distance . 10)
(padding . 1)
(stretchability . 2))

  ragged-bottom = ##f
  last-bottom-spacing = #'(
(basic-distance . 0)
(minimum-distance . 0)
(padding . 0)
(stretchability . 1))
}


(NOTE: The values above are just examples, nothing magical nor implying 
best practice.)


One could probably write a dissertation on LilyPond's vertical spacing 
algorithm and the resulting head-scratching.  Here is a quick breakdown:


basic-distance is what LilyPond will try to honor absent of other 
constraints.  Specifying a smaller value for minimum-distance will give 
LilyPond permission to compress the spacing.  padding lets you specify 
that the "ink" between two systems must be separated by a suitable 
amount.  Finally, stretchability is a unitless number that controls 
where LilyPond is permitted to *add* space such as when ragged-bottom is 
false.


It should be noted that annotate-spacing is a useful tool to determine 
where space is allocated.  The whitespace you see between the last 
system and the footer might not be useable space, as far as LilyPond is 
concerned.  If it has been instructed to keep a minimum amount of space, 
that is probably why it opted to overflow to a second page.



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: glissando over break

2019-06-10 Thread Aaron Hill

On 2019-06-10 11:04 am, Paul Scott wrote:

Can LilyPond make a glissando across a line break?

[ . . . ]

Is there an equivalent of
\override Beam.breakable = ##t for glissandos ?



  \override Glissando.breakable = ##t



Glissando [1] supports unbreakable-spanner-interface [2] which has the 
breakable property.


[1]: http://lilypond.org/doc/v2.19/Documentation/internals/glissando
[2]: 
http://lilypond.org/doc/v2.19/Documentation/internals/unbreakable_002dspanner_002dinterface




-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: metric

2019-06-13 Thread Aaron Hill

On 2019-06-13 5:43 pm, Freeman Gilmore wrote:

Abraham:

At this point it is just a curiosity.   I want to compare it to the 
Bravura
metric, i.e. where is a not head place in reference to the staff, what 
is

the line spacing of the staff, etc.

I still do not have a clue were to find the LilyPond font files.   I 
have

searched the LilyPond file for Emmentaler Feta metafont.


https://github.com/lilypond/lilypond/tree/master/mf

- or -

https://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=tree;f=mf


-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: How to get more measures on one line?

2019-06-15 Thread Aaron Hill

On 2019-06-15 2:20 pm, Mia Heaton wrote:

So i'm trying to write out some music, and everything is spaced way
too far apart, each line is being occupied by a single measure and I'm
not sure how to condense it more to fit multiple measures on a line.
I'm using Frescobaldi to write Lilypond, and I used the built in score
wizard to create the document I'm working in. I haven't changed any
other settings, only things there are what the wizard did for me and
the music I inputted. Anybody know how to fix this? I'm definitely not
smart when it comes to the technical aspects of Lilypond so simple
explanations are appreciated.


Without a minimal working example [1], it will be difficult to provide 
any specific advice.


Try looking at the documentation regarding horizontal spacing [2] in the 
event that note spacing is what is preventing LilyPond from fitting 
multiple measures on a line.  But if your music is dense enough, you may 
need to adjust the line width on the page and/or the global staff size 
to be able to fit more content.


[1]: http://lilypond.org/tiny-examples.html
[2]: 
http://lilypond.org/doc/v2.19/Documentation/notation/changing-horizontal-spacing



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Group notes with different fonts

2019-06-19 Thread Aaron Hill

On 2019-06-18 8:21 pm, Francesco Petrogalli wrote:

Hi,

Is there a way to print the following bar:

```
r2 4 
```

so that the lower notes are printed in \tiny fonts, and the upper ones
are printed with \normalfont?

I tried the the approches below but none off them works:

```
r2 <\tiny g \normalsize c>4  |
r2 \new Voice << {\tiny a4 g} {\normalsize d' c} >> |
```



Does \tweaking font-size work for you?


\version "2.19.82"

\fixed c' {
  r2
  4
  
}



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Volta font

2019-06-20 Thread Aaron Hill

On 2019-06-20 9:29 am, Thomas Morley wrote:

Am Do., 20. Juni 2019 um 18:21 Uhr schrieb Leah Velleman
:


Is it possible to change the font used for volta numbers?

In the list archives I've seen options for customizing the volta text, 
some of which could be used with \text or \markup to change the font 
in addition. But I don't want to have to manually specify text and 
markup commands every time I have a repeat. I want  \alternative 
blocks to generate volta numbers automatically, as they do by default. 
I just want to specify once and for all what font all of those 
autogenerated numbers should appear in -- the same way I can, for 
instance, issue a single command to set a font for all lyrics. Is this 
possible?


Thanks,
Leah


{
\override Score.VoltaBracket.font-name = "Purisa"
\repeat volta 3 { R1 }
\alternative {
  R
  R
  R
  }
}

HTH,
  Harm


Note that if you want to set font-family rather than font-name, you will 
need to change font-encoding:



\version "2.19.82"

{
  \override Score.VoltaBracket.font-encoding = #'latin1
  \override Score.VoltaBracket.font-family = #'sans
  \repeat volta 3 { b'1 }
  \alternative { { b'1 } { b'1 } }
}



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Minor variations on a re-used section

2019-06-22 Thread Aaron Hill

On 2019-06-22 1:46 pm, Evan Driscoll wrote:


Is there a way to define a variable "locally"?


Not with the "foo = bar" syntax.  But you can do this:


\version "2.19.82"

outside = { 8 8 4 }
{
  $(define inside #{ { 2 } #})
  \outside \inside
}

{ \outside \inside }



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Minor variations on a re-used section

2019-06-22 Thread Aaron Hill

On 2019-06-22 1:46 pm, Evan Driscoll wrote:
Originally I was going to say that would work well in many cases if I 
have

a music variable, but I don't know how to use them in the context of
\repeat unfold, which I very much prefer when applicable(*).

But I realized that I could write something that helps here. Any 
thoughts
on the following? Am I missing something that means I don't have to do 
this?

\version "2.19.80"

fancy_repeat_unfold =
  #(define-music-function
(parser location rep_spec notes)
(integer? ly:music?)
#{
  \removeWithTag #'last_rep  $notes
  \removeWithTag #'(first_rep last_rep)
  \repeat unfold #(- rep_spec 2) $notes
  \removeWithTag #'first_rep $notes
#})

\relative c' {
  \fancy_repeat_unfold 3 {
c1
d-\tag #'first_rep \ff
e-\tag #'last_rep \p
f
  }
}


I would opt for a design like this which is more flexible w.r.t. the 
naming and number of tags to be used:



\version "2.19.82"

#(define (multipleWithTagHelper proc)
  (define (symbol-list-list? x)
(and (list? x) (every symbol-list? x)))
  (define-music-function (tags music) (symbol-list-list? ly:music?)
#{ $@(map (lambda (x) #{ $proc $x $music #}) tags) #} ))

multipleKeepWithTag = #(multipleWithTagHelper keepWithTag)
multipleRemoveWithTag = #(multipleWithTagHelper removeWithTag)

{
  \multipleKeepWithTag #'((a) (a b) (b))
  { \tag #'a a'4 \tag #'b b'4 c''4 }
  \multipleRemoveWithTag #'((a) (a b) (b))
  { \tag #'a a'4 \tag #'b b'4 c''4 }
}



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Error message

2019-06-23 Thread Aaron Hill

On 2019-06-22 10:38 pm, Craig Dabelstein wrote:
Can anyone tell me what this error message means when trying to compile 
a

file?

Drawing systems...
/home/gub/NewGub/gub/target/darwin-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.20/flower/include/drul-array.hh:35
<0>: failed assertion `d == 1 || d == -1'


It means that some code has attempted to access a Drul_array with an 
invalid direction.  Now seeing as Drul_arrays are so ubiquitous in the 
code base, it is impossible to determine which one is throwing the error 
without a more complete stack trace.


Do you have a MWE for this error?  Failing that, can you run LilyPond 
under gdb and share more details?



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Error message

2019-06-23 Thread Aaron Hill

On 2019-06-23 11:15 pm, Craig Dabelstein wrote:

Thanks for the help everyone.

I narrowed down the guilty bars. Here's a MWE, however, it doesn't
reproduce the error in this MWE. When these two bars are replaced with
s1.*2 the files produce no error. I really don't know where to go from
here. Any advice?


Well, just because you can comment out some music and have things work 
does not mean the commented out music is "guilty" per se.  Context often 
matters, so it is wise to only point fingers when you can isolate a 
section of music and have it reproduce an error standing alone.


In your case, you have found two bars that work just fine by themselves. 
 If there is any error with your input, it is certainly not there.  You 
will need to slowly add in the outer context until the problem appears.


Out of curiosity, if you \omit TupletBracket in your project, does the 
failing assertion reproduce?



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Error message

2019-06-24 Thread Aaron Hill

On 2019-06-24 3:18 am, Craig Dabelstein wrote:

Hi Aaron,

Omitting the tuplet bracket doesn't help. I'm really at a loss at what 
to

do now.


Since your isolated measures involved tuplets, I had wondered if perhaps 
the issue came from the brackets.  Maybe try \omit TupletNumber, both 
with and without \omit TupletBracket.  If the issue is with the 
engraver, you may want to instead try adding this to your project:



\layout { \context { \Voice \remove "Tuplet_engraver" } }


However, I am probably completely off base on where the fault lies.  You 
could try working through the other engravers one at a time similar to 
[1].  The hope is that you might be able to better narrow down the 
project into a MWE that does reproduce the error by getting rid of 
elements that have no effect.


[1]: http://lsr.di.unimi.it/LSR/Item?id=280

While getting a repro is important, we should also be looking at ways to 
unblock your work.  I would suggest dividing your project in sections, 
so that you can compile them independently without triggering the error. 
 It does mean needing to manually stitch together multiple outputs into 
a single file, but at least you could continue to work on your score 
while the underlying bug is being investigated.




To the list at large: Any folks here with expertise in running LilyPond 
under a debugger on a Mac?  At this point, Craig is likely going to have 
to get us a stack trace since only he is able to reproduce the error 
without sharing the whole project.  Since my knowledge on that platform 
is extremely limited, I cannot shepherd any further.



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Error message

2019-06-25 Thread Aaron Hill

On 2019-06-25 4:46 am, David Kastrup wrote:

Craig Dabelstein  writes:


And the guilty line is ...

\consists "Melody_engraver"
%\override Stem.neutral-direction = #'()

Commenting out the \override Stem.neutral-direction line fixed the 
problem.


More likely than not half of a red herring: garbage protection problems
are quite elusive to track down.  This propably changes the actions the
Melody_engraver takes.


Unless I am completely lost myself, this is not the trampoline problem 
from before, though I suspect the appearance of "Melody_engraver" has 
confused things.


Here is the proper repro MWE:


\version "2.19.82"
{
  \override Stem.neutral-direction = #'()
  \tuplet 3/2 { r4 b' c'' }
}


This is bad input because neutral-direction must be strictly UP or DOWN 
(or rather it can be a procedure that ultimately evaluates to 1 or -1).  
From what I can see, the point of the property is to determine what 
happens to a note on the middle line of a staff when there is nothing 
else (like a beam) that can help sway the decision one way or the other. 
 Setting it to #'() would seem to be meaningless.


Consider the output from the above MWE:


GNU LilyPond 2.19.82
Processing `drul-array-bad-direction.ly'
Parsing...
Interpreting music...
Preprocessing graphical objects...
programming error: Stem dir must be up or down.
continuing, cross fingers
Finding the ideal number of pages...
Fitting music on 1 page...
Drawing systems...lilypond: 
/home/gub/NewGub/gub/target/linux-64/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.20/flower/include/drul-array.hh:35: 
T& Drul_array::at(Direction) [with T = double]: Assertion `d == 1 || 
d == -1' failed.

The terminal process terminated with exit code: 134


LilyPond is already emitting a programming error: "Stem dir must be up 
or down".  Whenever I see "cross fingers", I never make any assumption 
of what will work or not.  So a failing assertion afterwards is not 
surprising.


Craig: Would you confirm whether your project output contains the 
programming error line?  I would say there is a bug if you are *only* 
seeing the failing assertion.


Perhaps an additional check could be added to stem.cc:649 to ensure that 
neutral-direction has a sane value, which could catch this particular 
error earlier in the process.



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Spacing of clef change

2019-06-26 Thread Aaron Hill

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


Re: MIDI file creation - or not?

2019-07-01 Thread Aaron Hill

On 2019-07-01 1:22 pm, Ben Potter wrote:

I took the example chant and engraved it as a test - fine. I then
added a \midi{} command in, I believe, the correct place but still get
no MIDI file to play. I am stuck - please can someone help this
beginner?


I do not believe \midi can be used within a \markup \score.  At least, 
in my testing, it does not work.  The \score needs to be top-level.


If you need to keep your \score within the \markup, put the important 
bits in a variable and use it twice:



\version "2.19.82"

stuff = << \new Staff { b'4 } \new Staff { \clef "bass" g4 } >>
\markup \fill-line { \score { \stuff } }
\score { \stuff \midi { } }


That said, you can probably achieve what you want without needing to use 
\markup \fill-line for centering.  LilyPond already centers the music on 
the page, you just need to specify a smaller value for line-width:



\version "2.19.82"

stuff = << \new Staff { b'4 } \new Staff { \clef "bass" g4 } >>
\paper { indent = 0 line-width = 1\in ragged-right = ##f }
\score { \stuff \layout { } \midi { } }


This would require you to specify the width manually, but that might not 
be a bad thing.



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: formatting of elided syllable in lyrics

2019-07-02 Thread Aaron Hill

On 2019-07-02 9:19 am, Graham King wrote:

Where two syllables are set to the same note, is there a way to apply
formatting to the second?  I hope I've not missed something obvious in
the NR or the Snippets Repository.

In the following example, "eleison" is editorial and should be
italicised.  The upper line of lyrics has the correct spacing but not
the desired italics:

\version "2.19.82"

ital = \override LyricText.font-shape = #'italic
italx = \revert LyricText.font-shape

{ c'1 c' d' c' }
\addlyrics { ky -- rie_e -- lei -- son }
\addlyrics { ky -- rie_ \ital e -- lei -- son \italx }


You could manually construct the syllable with custom markup:


\version "2.19.82"

ital = \override LyricText.font-shape = #'italic
italx = \revert LyricText.font-shape

{ c'1 c' d' c' }
\addlyrics { ky -- rie_e -- lei -- son }
% \addlyrics { ky -- rie_ \ital e -- lei -- son \italx }
\addlyrics { ky -- \markup { rie \italic e } -- \ital lei -- son \italx 
}




-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Jazz Chord Symbols (as new font - NOT notation font)

2019-07-03 Thread Aaron Hill

On 2019-07-03 10:40 am, Marco Baumgartner wrote:

One thought though: As far as I understand it: displaying chords within
Lilypond is not done with/by a "normal" font but rather a special
chord-mechanism. I fear, that this mechanism (as far I've seen) does a 
good
job, but can also be seen as a limitation. How wrong would it be to 
create

a normal font (with tons of ligatures) which I could use as
info/comments/expression - NOT in Chord-mode to display chords? I feel 
like

that would be the only way that leads to perfect chord symbols. Or am I
completely out? :-)


A ChordName is nothing more than markup at the end of the day.  Since 
the default stencil is ly:text-interface::print, anything you can do in 
\markup you can do in a ChordName.  That gives you nearly all the 
freedom you would ever need, so there should be nothing to worry.



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Chord names starting right after the anacrusis

2019-07-03 Thread Aaron Hill

On 2019-07-03 4:03 pm, Vicente Sanches wrote:

Hi everyone,

I want to write a song in which the melody begins in upbeat (anacrusis) 
and
the chords begins on the next bar. I have tried a lot but i can't make 
the

chord names appear after the anacrustic bar.


It often helps to provide an example of what you have tried, so we can 
best advise.


You should only need to insert a suitable skip:


\version "2.19.82"
<< \new ChordNames \chordmode { s4 | c1 }
   \new Staff { \partial 4 g'8 e' | c'1 \bar "|." } >>



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Jazz Chord Symbols (as new font - NOT notation font)

2019-07-03 Thread Aaron Hill

On 2019-07-03 3:12 pm, Marco Baumgartner wrote:
You're saying, that once I have my font finished, I can use it as 
\markup

OR as ChordName?


Technically, you are always generating a ChordName grob if you are using 
a ChordNames context, but you can easily override the text property of 
any individual grob to be whatever you want it to be should the value 
that LilyPond generates not be suitable.  It is a little verbose, 
though:



\version "2.19.82"

\new ChordNames \chordmode {
  c4
  \once \override ChordName.text = \markup \circle "C" c4
  c4
}


If you do this a lot, then a helper function would be good:


\version "2.19.82"

chordText = #(define-music-function (text) (markup?)
  #{ \once \override ChordName.text = $text #})

\new ChordNames \chordmode {
  c4
  \chordText \markup \box "C" c4
  c4
}



But wouldn't ChordName mess with my font then?
Like forcing its own spacing and such?


It might depending on how the resulting markup is generated.  Consider a 
chord like C# minor.  By default, LilyPond would generate something akin 
to:


\markup { "C" \smaller \raise #0.6 \sharp "m" }

Only the "C" and "m" would be using the text font whereas the sharp will 
come from the notation font.


It is possible to change how ChordNames are built so that you can 
customize elements like alterations.  See LSR snippet 750 [1].


[1]: http://lsr.di.unimi.it/LSR/Item?id=750

With some modifications to the aforementioned snippet, you could 
potentially end up with an effective markup like this:


\markup { "C#" "m" }

With the "C" and "#" in one string, ligatures and kerning should work 
(assuming you have them for alterations and note names).  Since the "m" 
will typically get appended as its own string, it would be unaffected by 
ligatures and/or kerning.  With more modification to the chord naming 
procedures, you likely could get output similar to:


\markup { "C#m" }

NOTE: Similar things will be adjusted to support the slash separator as 
well, so that you could get a single string like "C#m/E" so your font's 
logic could handle this.


The question is whether it is worth changing any of the existing 
plumbing or if using custom text overrides is easier.



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Jazz Chord Symbols (as new font - NOT notation font)

2019-07-03 Thread Aaron Hill

On 2019-07-03 4:45 pm, Aaron Hill wrote:

NOTE: Similar things will be adjusted to support the slash separator
as well, so that you could get a single string like "C#m/E" so your
font's logic could handle this.


I typed that poorly.  Trying again:

NOTE: Similar things will need to be adjusted to support the slash 
separator as well, so that you could get a single string like "C#m/E" 
for your font's logic to handle.



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Jazz Chord Symbols (as new font - NOT notation font)

2019-07-04 Thread Aaron Hill

On 2019-07-04 6:29 am, Marco Baumgartner wrote:
Although my font (otf) HAS ligatures (and show up if the font is used 
on my

system in other programs) - it
doesn't show ANY ligatures in lilypond... Can't make it work as of now.

I searched about it, and stumbled across people saying, that this was 
like

an official bug. Others saying,
that it should be all working instead...


Well, I would put my vote on the side of "should be working".  Consider 
the following simple example:



\version "2.18.2" % tested on lilybin.org
\markup \roman "fi"


You *should* get the "fi" as a ligature in the output.  It would be good 
to verify this on your system.  Then, use \override #'(font-name . "Your 
custom font") and test your font.



I'm using 2.18.2 on Debian Linux with Frescobaldi.
And: The ligatures I'm talking about are not standard ligatures (tied 
to a

specific language), they're everything but standard.
But like I said, a normal Text-Editor (and even used on the web
via @font-face) can render the ligatures just fine.


This may have more to do with Pango than LilyPond, since it is Pango 
that is the one dealing with fonts.  If there is something wrong with 
how it handles OpenType ligatures, that could certainly end up affecting 
what you see in LilyPond.



Any tips on:
- where to install the font (not so sure about that anymore...)


You can install fonts wherever your fontconfig is set up to load them.  
For instance, I have my custom fonts installed in my home directory:


  ~/.local/share/fonts

I did this as to not conflict with any font packages that are normally 
written to /usr/local/share/fonts.



- how to encode the font in a way that lilypond recognizes ligatures


Unsure, but as I indicated above, I think this is on the Pango side, not 
LilyPond.



- just pointing out, that I'm stupid (that would be at least a valid
excuse) :-)


If I did that, I would have more fingers pointing back at myself.  You 
would not have to dig too far in the mailing list archive to find proof 
of my lapses into incompetence.



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Are these brackets alongside a staff group possible?

2019-07-04 Thread Aaron Hill

On 2019-07-04 10:01 am, Pierre Perol-Schneider wrote:

Hi Ben,
How about:


Here are some modifications I made to Pierre's code:

- Removed \overriding InstrumentName.padding and opted instead for 
self-alignment-X of RIGHT.
- Kept the stencil for SystemStartSquare but applied an extra-offset to 
slide it underneath the instrument name for the StaffGroup.
- To prevent the other brackets from being shifted, I also had to adjust 
SystemStartSquare's direction to RIGHT.

- Changed InstrumentName's layer to be top-most.
- Used the OrchestraGroup's instrumentName with \markup \whiteout...



\version "2.19.82"

% Example:
someMusic = {
  \tempo "Andante."
  \time 3/4
  \key c \minor
  c'2. r8
}

\paper { indent = 40 }

\layout {
  \context {
\Staff
\override InstrumentName.font-size = #-1
\override InstrumentName.self-alignment-X = #RIGHT
  }
  \context {
\StaffGroup
\name ViolinGroup
\alias StaffGroup
systemStartDelimiter = #'SystemStartBrace
  }
  \context {
\StaffGroup
\name WindGroup
\alias StaffGroup
systemStartDelimiter = #'SystemStartBracket
\override SystemStartBracket.collapse-height = #1
  }
  \context {
\StaffGroup
\name StringGroup
\alias StaffGroup
\accepts ViolinGroup
systemStartDelimiter = #'SystemStartBracket
  }
  \context {
\StaffGroup
\name OrchestraGroup
\accepts WindGroup
\accepts StringGroup
systemStartDelimiter = #'SystemStartSquare
\override SystemStartSquare.thickness = #2
\override SystemStartSquare.direction = #RIGHT
\override SystemStartSquare.extra-offset = #'(-15.5 . 0)
\override InstrumentName.layer = #1000
  }
  \context {
\GrandStaff
\remove "System_start_delimiter_engraver"
\accepts OrchestraGroup
\accepts StaffGroup
  }
}

\score {
  \new GrandStaff <<
\new OrchestraGroup \with {
instrumentName = \markup \whiteout
  \override #'(circle-padding . 1)
  \circle "I"
  } <<
  \new WindGroup <<
\new Staff \with {
  instrumentName = "Oboe"
} \someMusic
  >>
  \new StringGroup <<
\new ViolinGroup <<
  \new Staff \with {
instrumentName = "Violino I"
  } \someMusic
  \new Staff \with {
instrumentName = "Violino II"
  } \someMusic
>>
\new Staff \with {
instrumentName = "Viola"
  } { \clef C \someMusic }
  >>
>>
\new StaffGroup <<
  \new Staff \with {
  instrumentName = "Soprano"
  } \someMusic
  \new Staff \with {
  instrumentName = "Alto"
  } { \clef C \someMusic }
>>
  >>
}



-- Aaron Hill___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Grace note beams won't hide correctly

2019-07-04 Thread Aaron Hill

On 2019-07-04 2:02 pm, Ben wrote:

This is the first time I've encountered the need to hide /grace note/
beams and/or stems. Can someone show me what I am doing wrong?


Here's my attempt, though it may not be the most ideal:


\version "2.19.82"
\language "english"

overlaySlash = #(define-music-function
(thickness length angle offset)
(number? number? number? number-pair?)
  #{ \once \override Beam.stencil =
#(grob-transformer 'stencil (lambda (grob orig)
  (let ((th (* (ly:staff-symbol-line-thickness grob) thickness))
(x (interval-start (ly:stencil-extent orig X)))
(y (interval-start (ly:stencil-extent orig Y)))
(hl (/ length 2)))
(ly:stencil-add orig
  (ly:stencil-translate
(ly:stencil-rotate
  (make-line-stencil th (- hl) 0 hl 0)
  angle 0 0)
(cons (+ x (car offset)) (+ y (cdr offset #})

noStem = \omit Stem

\relative c' {
  \overlaySlash 1.2 7 35 #'(2 . -1)
  \appoggiatura {
e!8^[ \noStem g! c! fs bf ef
bf fs c! \undo \noStem e,!]
  }
  \noStem df4
}



-- Aaron Hill___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Jazz Chord Symbols (as new font - NOT notation font)

2019-07-05 Thread Aaron Hill

On 2019-07-05 5:34 pm, Marco Baumgartner wrote:

the output of:

\markup \roman "fi"

is in the attachment. It does not produce the ligatures - both in 
standard

and a testing font of mine containing ligatures (otf).
In the word "leer", the letter e and r should be connected.

I stumbled over this (2015):
http://lilypond.1069038.n5.nabble.com/Broken-ligatures-in-recent-LilyPond-versions-td171760.html

It's said, that as of 2.18.2 and newer, ligatures are broken in 
lilypond.

Doesn't seem to be the case for everybody though...

I've updatet my system, running Debian Stretch 9.9 now.
Lilypond is no longer in the standard-repository in this updated 
version,

so I've installed the generic package "2.18.2" from lilypond.org.


Firstly, I said lilybin.org by mistake.  I meant of course lilybin.com.

Secondly, I goofed in my testing.  I had thought I was on stable 2.18.2 
when I saw the ligature working.  But that is wrong.  It was when 
lilybin.com was using unstable 2.19.48 that the ligatures appear to 
work.  And for comparison, the following also works on my machine 
running 2.19.82:



\version "2.19"
\paper { #(include-special-characters) }
\markup \fontsize #12 \roman "fi ffi fl"
\markup \fontsize #12 \roman { "f‌i f‌f‌i f‌l" }


At this point, 2.18.2 is pretty old when compared to all the updates 
pending next stable release.  So it would definitely be worth seeing if 
you can move up to the latest bits.


But if you have to stick to 2.18.2, then ligatures are not going to work 
as expected due to problems with the older version of Pango it would 
seem.


My apologies for leading you down a bad path.


-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: caesura or other ornamentation ?.

2019-07-09 Thread Aaron Hill

On 2019-07-09 7:11 pm, Eby Mani wrote:

Many Thanks Torsten, exactly the thing i was looking for.

Now, how to do those "Forefall" and "the shake turned" symbols in
lilypond. any snippets ?.


You could do something like this:


\version "2.19.83"

forefall-markup = \markup \rotate #'-30 \musicglyph "scripts.rvarcomma"
forefall = #(let ((m (make-articulation "trill")))
  (set! (ly:music-property m 'tweaks)
(acons 'stencil (lambda (grob)
(grob-interpret-markup grob forefall-markup))
  (ly:music-property m 'tweaks)))
  m)

shakeTurned-markup = \markup \overlay {
  \raise #'0.65 \rotate #'-150 \musicglyph "ties.lyric.short"
  \rotate #'-30 \musicglyph "scripts.rvarcomma"
  \lower #'0.55 \rotate #'-30 \musicglyph "scripts.rvarcomma"
}
shakeTurned = #(let ((m (make-articulation "trill")))
  (set! (ly:music-property m 'tweaks)
(acons 'stencil (lambda (grob)
(grob-interpret-markup grob shakeTurned-markup))
  (ly:music-property m 'tweaks)))
  m)

{ b'4 b'\forefall b'\shakeTurned b' }


Here I am partying on the "trill" articulation and changing its stencil 
using glyphs that already exist in the notation font.



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: caesura or other ornamentation ?.

2019-07-09 Thread Aaron Hill

On 2019-07-09 7:34 pm, Aaron Hill wrote:

On 2019-07-09 7:11 pm, Eby Mani wrote:

Many Thanks Torsten, exactly the thing i was looking for.

Now, how to do those "Forefall" and "the shake turned" symbols in
lilypond. any snippets ?.


You could do something like this:


\version "2.19.83"

forefall-markup = \markup \rotate #'-30 \musicglyph "scripts.rvarcomma"
forefall = #(let ((m (make-articulation "trill")))
  (set! (ly:music-property m 'tweaks)
(acons 'stencil (lambda (grob)
(grob-interpret-markup grob forefall-markup))
  (ly:music-property m 'tweaks)))
  m)

shakeTurned-markup = \markup \overlay {
  \raise #'0.65 \rotate #'-150 \musicglyph "ties.lyric.short"
  \rotate #'-30 \musicglyph "scripts.rvarcomma"
  \lower #'0.55 \rotate #'-30 \musicglyph "scripts.rvarcomma"
}
shakeTurned = #(let ((m (make-articulation "trill")))
  (set! (ly:music-property m 'tweaks)
(acons 'stencil (lambda (grob)
(grob-interpret-markup grob shakeTurned-markup))
  (ly:music-property m 'tweaks)))
  m)

{ b'4 b'\forefall b'\shakeTurned b' }


Here I am partying on the "trill" articulation and changing its
stencil using glyphs that already exist in the notation font.


Apologies.  I had meant to include an image as well.


-- Aaron Hill___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Bug with transpose in functions

2019-07-12 Thread Aaron Hill

On 2019-07-11 11:52 pm, Immanuel Litzroth wrote:

This seems to do the wrong thing:




\version "2.19.81"
testme = #(define-music-function
   (parser location music)
   (ly:music?)
   #{
 \transpose c c' {#music } {#music }
 #})
\testme g'



printing out two g'' instead of a g'' and a g'


Consider using $music or ly:music-deep-copy:


\version "2.19.83"
testI = #(define-music-function (music) (ly:music?)
  #{ \transpose c c' $music $music #})
testII = #(define-music-function (music) (ly:music?)
  #{ \transpose c c' #(ly:music-deep-copy music) #music #})
\testI d' \testII e'




Also I found it strange that {#music} is not accepted as an argument 
with

the
following error:
tmp.ly:6:16: error: GUILE signaled an error for the expression 
beginning

here

   {#
 music}
Unbound variable: music}

It seems to parse the closing } as part of the variable name.


Scheme is pretty permissive with what can be part of a symbol, so this 
is one case where whitespace does matter.



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: How to skip to chorus from stanza and return to next stanz?

2019-07-16 Thread Aaron Hill

On 2019-07-16 7:52 pm, John Helly wrote:

Aloha.

I have a guitar and vocal song with 6 stanzas and a chorus and outro
with lyrics.  I would like to jump to the chorus after the 2nd and 4th
stanzas and return to the 3rd and 5th, respectively, coming out of the
chorus.  Since I'm not formally trained in notation, I don' t know how
this should be approached (or if it's possible).  Here is the structure
of the song.  Any advice is most welcome.  I've tried inserting markup
text but haven't been successful although this would be my ad hoc 
approach.


Ad hoc is not a bad thing, to be honest, providing your notation is 
clear enough for performers to follow consistently.


There are a few approaches I have seen for this pattern.

1) Join paired stanzas together as a sort of meta stanza.  If you have 
room on the page, simply have stanza one flow right into stanza two.  
This does mean duplicating notes and chords, but it only needs a simple 
repeat and produces a very clean roadmap.  The added advantage here is 
that you can cut the number of lyrics lines in half.  (Six is pushing it 
my experience, and you will likely need to space the lyric lines or add 
in dividing lines to make it easier for the eye to know where to jump at 
the end of each line.)


2) Keep all lyrics stacked and use a repeat with two voltas.  The first 
volta will be a repeat back to the top of the stanzas for iterations 
"1.3.5.".  The second volta (for "2.4.6.") will lead into the chorus.  
At the end of the chorus, use a D.C. or D.S. as appropriate, with or 
without an "al Coda" again as needed.


3) Notate the music as if the chorus follows each stanza and either add 
a text markup or rely on folks hand-writing in text that informs them of 
the roadmap.  This option is very handy if the roadmap could change 
between performances.  For instance, you might end up only singing 
stanzas 1, 2, 4, and 6, with the chorus after 2 and 6.  Sometimes, it is 
nice to have printed notation that is more general and flexible than to 
be cluttered with potentially extra specificity.



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: LilyPond 2.20 or 2.21 on Ubuntu 18.04

2019-07-18 Thread Aaron Hill

On 2019-07-18 6:13 am, Thomas Morley wrote:

Am Do., 18. Juli 2019 um 14:37 Uhr schrieb Ralph Palmer
:


Greetings -

I'm running LilyPond 2.19.81 with Frescobaldi 3.0.0 under Ubuntu 
18.04.2.


Has any progress been made in making a process available to install 
LilyPond 2.20 or 2.21 on Ubuntu 18.04? Back in March of this year 
(2019), there was a brief discussion about installing Guile 1.8 on 
Ubuntu 18.04, so that ly 2.20 could run. I tried to follow the 
suggestions, but was unsuccessful. If someone would be willing to work 
with me, perhaps off-list, and we were successful, maybe we could post 
a working process to enable others to install and use ly 2.20.


All the best,

Ralph


To have access to the currently not released 2.20 you'll need to
compile the branch stable/2.20 from the ly-git-repository. To do so
you need guilev1.
Though, isn't guile-1.8 available via synaptic?
At least for me, running Ubuntu 18.04 64-bit, it is...
Ofcourse this may be different for newer Ubuntu-versions or other OS...


I have Ubuntu 18.04.2 LTS and an `apt search` does not turn up 
guile-1.8.  Do you have a custom PPA?




apt-cache policy | grep http | awk '{print $2 $3}' | sort -u

http://archive.ubuntu.com/ubuntubionic-backports/main
http://archive.ubuntu.com/ubuntubionic-backports/universe
http://archive.ubuntu.com/ubuntubionic/main
http://archive.ubuntu.com/ubuntubionic/multiverse
http://archive.ubuntu.com/ubuntubionic/restricted
http://archive.ubuntu.com/ubuntubionic/universe
http://archive.ubuntu.com/ubuntubionic-updates/main
http://archive.ubuntu.com/ubuntubionic-updates/multiverse
http://archive.ubuntu.com/ubuntubionic-updates/restricted
http://archive.ubuntu.com/ubuntubionic-updates/universe
http://ppa.launchpad.net/fish-shell/release-2/ubuntubionic/main
http://security.ubuntu.com/ubuntubionic-security/main
http://security.ubuntu.com/ubuntubionic-security/multiverse
http://security.ubuntu.com/ubuntubionic-security/restricted
http://security.ubuntu.com/ubuntubionic-security/universe


Not like it matters too much, since instructions have already been 
posted for obtaining and building guilev1 manually.



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Colored box behind a single note

2019-07-25 Thread Aaron Hill

On 2019-07-21 10:04 am, Werner LEMBERG wrote:

Using

  http://lsr.di.unimi.it/LSR/Item?id=1000

I wonder how to get the effect for a single note.  Ideally, I would
like to write

  \genericSpan <...parameters ...>
  e\startGroup\endGroup

but since `\genericSpan' uses a `HorizontalBracket' grob, this fails;
it needs at least two notes.

I wasn't able to find a suitable solution in the web; IMHO, it would
be a quite useful addition to this snippet.


It appears you could use an invisible grace note as a workaround:


\version "2.19.83"
\include "ColorSpanDef.ily"

omitNotes = {
  % Like hideNotes, but removes the stencils instead.
  \override Dots.stencil = ##f
  \override NoteHead.stencil = ##f
  \override NoteHead.no-ledgers = ##t
  \override Flag.stencil = ##f
  \override Beam.stencil = ##f
  \override Stem.stencil = ##f
  \override Accidental.stencil = ##f
  \override Rest.stencil = ##f
  \override TabNoteHead.stencil = ##f
}

graceStartGroup = \grace { \once \omitNotes b'1\startGroup }

\new Staff {
  g'4 a'8[
  \genericSpan #-1 #1 #-1 #1 \colDarkBlue \colLightBlue #0 #0 ##f ##f
  \graceStartGroup b'8]\stopGroup
  c''8[
  \genericSpan #-1 #1 #-1 #1 \colDarkGreen \colLightGreen #0 #0 ##f ##f
  \graceStartGroup b'16\stopGroup
  a'16]
  \genericSpan #-1 #1 #-1 #1 \colDarkRed \colLightRed #0 #0 ##f ##f
  \graceStartGroup b'4\stopGroup
}



-- Aaron Hill___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Alternating text and music

2019-07-27 Thread Aaron Hill

On 2019-07-27 12:03 pm, David Wright wrote:

On Sat 27 Jul 2019 at 18:57:35 (+0200), David Kastrup wrote:

David Wright  writes:
> I would advise against that because PNGs are rastered. The hint is in
> the name: portable-Network-graphics.

Uh, what in the name indicates rasterisation?


Perhaps I was a little oblique: "Network" indicates that the format is
designed for transfer of images over the network, rather than between
local applications. Compromises are made in favour of smaller size and
higher transmission speed, rather than maintaining resolution; not
desirable for engraving pages of music.


Vector formats are equally as well-suited for transmission over a 
network.  PNG might have been created with the Web in mind; but to me, 
nothing about networking would seem to prefer raster over vector.  In 
fact, vector is pretty common on the Web these days, whether in the form 
of SVG or web fonts.



I'm not overconcerned whether people see this as a hint not to use
PNGs in this workflow. But I assume you're not supporting their
use, are you.


This is purely anecdotal: I use PNGs in my workflow with no issues 
whatsoever.  Mind you, I am using them for projection not print.  In 
practice, I have LilyPond rasterize at a higher DPI than I need for the 
target resolution and then use ImageMagick to down-sample so I can 
better control the quality of smoothing/anti-aliasing.  It is admittedly 
a little overkill, as I doubt members of the congregation could notice 
the finer details given the distance to the screens.


For the record, when I do use LilyPond specifically for print, I almost 
always use PDF as the output.  On occasion, I have had to use a raster 
format when I was compositing music within a document.  In that case, I 
just crank up the DPI in order to saturate the resolution of the 
printer.  Again, I suspect few people would be able to tell the 
difference given the printed document.


-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: How to set a fixed distance between upper page edge and top line of first staff?

2019-07-30 Thread Aaron Hill

On 2019-07-30 10:21 am, kimfierens wrote:
Unfortunately none of your proposed solutions produced entirely 
satisfactory
results. For some odd reason, the one note examples work pretty well, 
but as

soon as more notes are added to a staff, the staffs are whacked out of
alignment.


It would be helpful to see precisely what you are trying and the results 
you are getting.  Simply saying "more notes are added" and "whacked out 
of alignment" leaves us having to guess at what might be going wrong.



Additionally, I find it difficult to get all the snippets equal width.


Set paper and line width appropriately with ragged-right set to false.  
Consider:



\version "2.19.83"

#(set-global-staff-size 20)
\paper {
  #(set! paper-alist (cons '("custom" . (cons (* 1.5 in) (* 40 pt))) 
paper-alist))

  #(set-paper-size "custom")
  top-margin = 0 bottom-margin = 0 indent = 0
  line-width = 1.5\in ragged-right = ##f
  oddHeaderMarkup = ##f evenHeaderMarkup = ##f tagline = ##f
  top-system-spacing =
#'( (basic-distance . 0) (minimum-distance . 4)
(padding . -100) (stretchability . 0) )
  last-bottom-spacing =
#'( (basic-distance . 0) (minimum-distance . 0)
(padding . -100) (stretchability . 0) )
}

music = { \time 3/4 c'4 g' d'' | a''2. \bar "|." }
\score { \transpose c' g \music }
\score { \transpose c' c' \music }
\score { \transpose c' f' \music }


Results attached for reference.


-- Aaron Hill

top-system-spacing.pdf
Description: Adobe PDF document
___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: padding problem

2019-07-31 Thread Aaron Hill

On 2019-07-31 10:24 pm, Werner LEMBERG wrote:

Folks,


please have a look at the attached (non-MWE) example.  If the
`padding' value in `system-system-spacing' is -2, both systems are
displayed on one page – and there is plenty of vertical space still
available at the bottom.

If I change `padding' to -1, I suddenly get two pages.  Why?  What
parameters am I missing to get the two systems on one page without
overlapping?  In case there is no bug in lilypond this should be
easily possible, right?


I would suspect it is simply LilyPond's early estimation for page 
breaking that is determining there would be insufficient room.  In my 
experience, LilyPond seems to be a little generous when estimating the 
potential size of objects.  This often results in music overflowing to 
additional pages when not strictly needed.  Adjusting variables like 
system-count and systems-per-page are usually helpful.


You could experiment with setting page-breaking-system-system-spacing, 
which can let you specify custom spacing variables that apply just for 
the determination of page breaking.  For instance, you will likely not 
want a negative padding for the real system-system-spacing so that you 
do not get any overlapping ink; but the negative padding could be needed 
with page-breaking-system-system-spacing.


-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: \unset in paper block

2019-08-05 Thread Aaron Hill

On 2019-08-05 2:30 pm, David Kastrup wrote:

Simon Albrecht  writes:

By the way, I happened to see that section 1.3.4 of the Extending
Manual sets off on the fact that it’s not possible to attach
articulations to variables (“We know that `{ \music -. -> }' will not
work in LilyPond”). So when that changes in future versions, this will
need to be rewritten.


It only works in music sequences now, not in general.  You'll still not
be able to state something like

var = \music -. ->

if I remember correctly.


What are the semantics of adding articulations to an instance of a music 
variable?  Specifically, to which events in the variable are the 
articulations applied?  Or would it be an error for the music variable 
to contain more than one note/chord to avoid ambiguity?  Does this new 
syntax support other post-events (e.g. \tweaks and scripts) or just 
articulations?


My apologies for the questions, but I cannot recall seeing any 
discussion of this feature in the main list.  Should I be subscribing to 
the developer list?



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: upgrading to 2.19.83-1 from 2.18.2 on Linux Mint

2019-08-09 Thread Aaron Hill

On 2019-08-09 4:16 pm, Bill via lilypond-user wrote:

Oh well I tried
i downloaded

lilypond-2.19.83-1.linux-64.sh
from this
GNU/Linux 64: LilyPond 2.19.83-1
 buttonat

http://lilypond.org/development.html
I tried to upgrade using Synaptic package Manager but that only showed
2.18.2 which i have installed.


This is an installation script, not a package.  To my knowledge, it has 
nothing to do with any package managers.


As such, you will first need to use your package manager to manually 
uninstall any existing LilyPond package if you have one that you want to 
replace.  Then you can simply run 'sudo sh 
lilypond-2.19.83-1.linux-64.sh' (no extra arguments needed) and follow 
the prompts.  This will install under /usr/local/lilypond with a 
shortcut under /usr/local/bin by default.


An alternative is to install LilyPond to your home directory for a 
user-specific installation.  This will be independent of any other 
installation, meaning you do not need to futz with any package managers. 
 In this case, do not use 'sudo'.  Just run 'sh 
lilypond-2.19.83-1.linux-64.sh'.  By default, it will install under 
/~/lilypond with a shortcut under /~/bin.



-- Aaron Hill

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


<    1   2   3   4   5   6   7   8   9   10   >