Re: nested beaming

2024-04-08 Thread Simon Albrecht

On 08.04.24 18:22, Paul Scott wrote:
Many years ago I could nest square brackets in Lilypond. How can I 
write this now incorrect code:


a16[[ 16 16] 16[ 16 16]]  i.e. two groups of 3 beamed 16th notes 
joined by a single beam.


The question is: what is the context and why do you want this?

Normally, this is called subdividing beams and there is a context 
property to turn it on. This is explained in the NR at Rhythms -> Beams 
-> Setting automatic beam behaviour (or similar). There have recently 
been significant improvements to how LilyPond handles this, but IIRC 
it’s not fully ‘there’ yet and in some situations manual intervention is 
needed besides defining baseMoment etc.


What Jean gave you is the fully manual version of this and may be 
necessary for ‘non-standard’ notation.


Best, Simon



Re: Adding to a tagGroup on the fly

2024-03-05 Thread Simon Albrecht

Added https://gitlab.com/lilypond/lilypond/-/issues/6702.



Re: Adding to a tagGroup on the fly

2024-03-02 Thread Simon Albrecht

Hi David!

On 02.03.24 12:44, David Kastrup wrote:

Just naming an existing member should be enough since taggroups are
exclusive.


Like this, for example?

\tagGroup soprano,alto
\addTagToGroupWith soprano mezzosoprano

I think I tend to agree with Raphael that having a name for the tagGroup 
is more user-friendly, maybe even helping the user to conceptualise a 
good use of tagGroups.


Best, Simon



Adding to a tagGroup on the fly

2024-03-02 Thread Simon Albrecht

On 01.03.24 14:29, David Kastrup wrote:

Simon Albrecht  writes:


The downside of that is that I cannot add more tags to those groups on
the fly, and always have to add them directly to the library file.)

Suggestions for a user interface to do that?



Interesting. Would of course require naming tag groups, right? So adding 
an optional first argument to the \tagGroup command, or if that doesn’t 
work for the parser, a dedicated \namedTagGroup command.


\tagGroup "performers" soprano,oboe,celeste
\addToTagGroup "performers" tuba,mezzosoprano

Best, Simon



Re: extracting a single “vocal line” (including lyrics) from multiple variables

2024-03-01 Thread Simon Albrecht

Hi Kieren,

On 29.02.24 15:42, Kieren MacMillan wrote:

I didn’t see an issue/request for quoting lyrics, so I added one 
(https://gitlab.com/lilypond/lilypond/-/issues/6700) and we’ll see how the 
discussion goes.  :)


I was curious and tried, and in fact you can quote lyrics perfectly 
well. It’s just that of course the quoting logic is based on durations, 
so I think explicit durations are unavoidable:


%%%
\version "2.25.12"

sopranoNotes = {
  4 4 8 8 4
}
\addQuote "sopranoNotes" \sopranoNotes
sopranoLyrics = \lyricmode {
  is4 this all8 the text?4
}
\addQuote "sopranoLyrics" \sopranoLyrics
altoNotes = {
  8 8 4 \quoteDuring "sopranoNotes" s2
}
altoLyrics = \lyricmode {
  no,8 it’s not4 \quoteDuring "sopranoLyrics" \notemode { s4 } text!4
}

\score {
  <<
    \new Staff \new Voice \sopranoNotes
    \new Lyrics \sopranoLyrics
    \new Staff \new Voice \altoNotes
    \new Lyrics \altoLyrics
  >>
}


Best, Simon

PS. I’ll add this to the issue right away while I’m at it.



Re: extracting a single “vocal line” (including lyrics) from multiple variables

2024-03-01 Thread Simon Albrecht

On 29.02.24 15:42, Kieren MacMillan wrote:

use both \keepWithTag_and_  \removeWithTag like this:


text = \lyricmode {
   \tag A { on -- ly al -- to }
   \tag nA { ev’ -- ry -- one ex -- cept al -- to }
}

#mindblown

Why didn’t I think of using set theory?!
THANK YOU! That hint alone makes your response gold.


Not that I think you need the hint, but for the record I might have 
included nesting tag commands in the example, where the technique begins 
to shine especially:


\text = \lyricmode {
  \tag S,A { on -- ly \tag nA { ve -- ry } high voi -- ces }
  \tag nT {
    ev’ -- ry -- one ex -- cept te -- nor
    \tag nY { now just S, A, B if this is five -- part mu -- sic }
  }
}

Yours, Simon



Re: extracting a single “vocal line” (including lyrics) from multiple variables

2024-03-01 Thread Simon Albrecht

Hi David,

On 29.02.24 15:54, David Kastrup wrote:

I'd rather use

\tagGroup alto,non-alto

\lyricmode {
   \tag alto { on -- ly al -- to }
   \tag non-alto { ev’ -- ry -- one ex -- cept al -- to }
}

\keepWithTag alto ...
\keepWithTag non-alto ...

But one would need to look at the rest to see whether this kind of tag
group would end up problematic.


I understand that using a single capital letter is navigating through a 
kind of small gap of available names in the namespace. But the 
advantages for both typing and reading (capital letters stand out, lines 
of code are shorter) are significant enough to me.


So far I’ve used S,A,T,B, plus M and Y for mezzosoprano and bar‘y’tone 
(voice types), plus Q for Quintus in five-part ancient music. I don’t 
think those are likely to collide with other uses as long as I reserve 
them within my personal code base, right?


(As a sidenote, since it doesn’t actually include those single-letter 
tags: In case anyone is interested, I attach a library file that via 
standard-include.ily gets used for practically all my projects now and 
defines a standard set of available tag groups. The downside of that is 
that I cannot add more tags to those groups on the fly, and always have 
to add them directly to the library file.)


Best, Simon\version "2.23.5"

\tagGroup
solo,
sop,sOne,sTwo,sThree,sFour,sOneB,
mez,mezOne,mezTwo,
alt,aOne,aTwo,aThree,aFour,
ten,tOne,tTwo,tThree,tFour,
bari,bariOne,bariTwo,
bass,bOne,bTwo,bThree,bFour
\tagGroup
nsolo,
nsop,nsOne,nsTwo,nsThree,nsFour,nsOneB,
nmez,nmezOne,nmezTwo,
nalt,naOne,naTwo,naThree,naFour,
nten,ntOne,ntTwo,ntThree,ntFour,
nbari,nbariOne,nbariTwo,
nbass,nbOne,nbTwo,nbThree,nbFour

\tagGroup
score,
score-single-choir,
score-double-choir,
score-similar-parts,
extract-single-choir,
extract-double-choir,
extract-similar-parts,
part,
parts-similar

\tagGroup
transposed,untransposed

Re: extracting a single “vocal line” (including lyrics) from multiple variables

2024-02-29 Thread Simon Albrecht

Hi Kieren,

huge respect for the kind of projects you are doing :)

Answering these questions is difficult because they can depend a lot on 
the specifics of the music and any solution can become cumbersome 
because of only a little instance that doesn’t fit the schematic. A few 
thoughts:


On 27.02.24 15:05, Kieren MacMillan wrote:

In terms of efficiency (e.g., compilation time) and complexity (q.v., code 
maintenance) would it be better to:

1. \tag the various sections in question and then try to combine them (using 
\partcombine?) into a single vocal line; or


This could be preferable if you can delineate the sections well. Trying 
out \partcombine quickly made me avoid it until absolutely necessary, 
but maybe it becomes manageable with clever and experienced use of 
\partCombineApart and friends. In choral pieces, I often use a single 
variable that contains all the lyrics, tagged depending on who does and 
doesn’t use which part and then filtered in the score setup. I believe 
that it makes a key difference to use both \keepWithTag _and_ 
\removeWithTag like this:



text = \lyricmode {
  \tag A { on -- ly al -- to }
  \tag nA { ev’ -- ry -- one ex -- cept al -- to }
}

\score {
<<
%{ simultaneous music expression with everything for soprano part %}
\keepWithTag A \removeWithTag nA <<
  \variableThatContainsAltoNotes
  \addlyrics \text
>>
%{ likewise for other parts %}
>>
}
%%

(addlyrics only for brevity of the example)



2. \addQuote everything and then \quoteDuring the appropriate sections? n.b. I 
believe lyrics aren’t quoteable (right?)…


I haven’t tried quoting lyrics, but I’ve often used a hybrid approach: 
quotes in the music, lyrics managed with tags.


HTH, yours
Simon




Re: [large/complex projects] where should transpositions go?

2024-01-29 Thread Simon Albrecht

Dear Kieren,

I’d like to share two approaches I’ve developed for such issues. There’s 
two caveats:


Firstly, I couldn’t take time to study your setup and how that makes 
these approaches viable or not—sorry for that.


Secondly, if possible, I always try to use vanilla LilyPond tools, so I 
prefer using tags as far as they may take me over using the 
editionEngraver and I prefer complicated \include setups with Scheme 
conditionals over using make. This is in an attempt to improve 
maintainability and reduce overhead.


On 27.01.24 23:03, Kieren MacMillan wrote:

I don’t believe quoted music can be transposed directly (i.e., you need to 
create a second, pre-transposed, quotation)


What I’ve started doing after running into this problem is for example

sop = { %{soprano music%} }
\addQuote "sop" \sop
\addQuote "sop8vb" \transpose c c, \sop

Recently I even put this into my standard include files to avoid having 
that third (or more) lines from the example:


addQuote =
#(define-void-function (name music) (string? ly:music?)
   (_i "Define @var{music} as a quotable music expression named
@var{name}, along with transposed versions @var{name8va} and
@var{name8vb}.")
   (add-quotable name music)
   (add-quotable (string-append name "8va")
 #{ \transpose c c' $music #})
   (add-quotable (string-append name "8vb")
 #{ \transpose c c, $music #}))

Another technique is this:

%%% from my library/ly-utility.ily file
musicFunctionDummy = #(define-music-function (mus) (ly:music?) mus)

addToplevelMusicFunctions =
#(define-scheme-function (names) (symbol-list-or-symbol?)
   (let* ((name-list (if (list? names) names (list names)))
  (lookup-function
   (lambda (name) (let ((fn (ly:parser-lookup name)))
    (if (equal? fn '())
    (begin
 (ly:warning "Cannot find music function
~a to add to toplevel functions.\n" name)
 musicFunctionDummy)
    fn
  (fn-list (map lookup-function name-list)))
 (set! toplevel-music-functions
   (append fn-list toplevel-music-functions
%%%

Example usage:

%%%
transposer = \transpose g f \etc
enharmonicsChooser = \keepWithTag #'originalSpelling \etc
\addToplevelMusicFunctions transposer,enharmonicsChooser
%%%

All the best for your projects!
Simon



Re: combining two whole notes into one

2023-09-27 Thread Simon Albrecht

Hi Yuriy,

it is possible, yes, but it’s not correct, unless you have a very 
specific reason to make an exception from the rule. There’s a reason why 
Lily provides commands for merging differently headed or differently 
dotted notes, but only for notes with a stem. If you merge notes without 
stem (like whole notes) the result will be unclear.


However, here’s two ways of doing it:

<<
  { \once\override NoteColumn.ignore-collision = ##t c'1 }
  \\
  { c'1 }
>>

<<
  { \once\override NoteColumn.force-hshift = #0 c'1 }
  \\
  { \once\override NoteColumn.force-hshift = #0 c'1 }
>>

Best,
Simon

On 27.09.23 05:28, Виноградов Юрий wrote:
Hello. I have two votes. And each one sings the same note. For 
example, F. When the notes are stylized, they are combined using the 
\mergeDifferentlyHeadedOn command. But whole notes are not joined 
together with this command. Please help me. Maybe someone knows how to 
do it.


Юрий Виноградов 





Re: Obscure message in Frescobaldi

2023-09-27 Thread Simon Albrecht

Hello Hajo,

I can’t answer your question, but I can say that the better place to ask 
it would be either the Issue tracker in the Frescobaldi project on 
Github, or via the contact adress included in Frescobaldi at Help->About.


Hope that helps!
Simon

On 26.09.23 21:51, Hajo Baess wrote:

This is not about a Lilypond problem, strictly speaking, but it is
related indirectly, and since here there are very many LilyPond users
around here, I also hope to address at least a couple of Frescobaldi
users here with an unanswered question, hoping that someone can solve
this for me:
I am localising Frescobaldi, and I am stuck with an obscure message
which I have never seen using it. It says:

Clear Grab

Since it is hard to translate something you don't understand: what is
this about? What is the context? What has been grabbed and can be
cleared?

The message entry can be found in the messages.py file in the i18n
folder of Frescobaldi:


_("QShortcut", "Clear Grab")

Thanks a lot for any suggestions to help me understand...






Re: what is an articulation that looks like a marcato but is shaped like a half-moon?

2023-09-18 Thread Simon Albrecht

Hi Kenneth,

On 18.09.23 04:31, Kenneth Wolcott wrote:

what is an articulation that looks like a marcato but is shaped like a
half-moon?

This is from an arrangement of the Marcello Oboe Concerto (Adagio
movement) by way of Bach and/or Vivaldi, re-arranged for two trumpets,
french horn and tuba.

The articulation in question is from the first trumpet part.

I don't see anything like this in the list of articulations in the
Notation Reference.


I haven’t seen anything like it before and without further context I 
would assume it’s an error: maybe a character doesn’t display properly 
due to pdf export issues? or maybe they’re supposed to be ties, 
suggesting a sort of portato or vibrato, and have been squashed?
Context could tell you whether there’s other instances to clarify the 
meaning, or maybe even a foreword/footnote/annotation. Or is there 
anything in the model that this is transcribed after?


Best, Simon



Re: squeezing a page

2023-07-10 Thread Simon Albrecht

Hi Tom,

On 10.07.23 03:09, Tom Sgouros wrote:
And also for pointing out page-count. That does seem easiest and in 
fact it worked. I always like it best when I can tell the computer, 
"you're a computer, figure it out".


to add to that: The spacing considerations for music are enormously 
complex, and while LilyPond aims to just “figure it out” by itself, 
often it can help to give it more constraints/hints.


Namely, a combination of page-count, system-count and systems-per-page 
(or min-systems-per-page/max-systems-per-page) can yield better results 
than specifying only one of these (even if it’s technically redundant), 
along with sometimes significantly reducing compilation time.


And, if all that fails, adding manual breaks or even forcing _only_ 
manual breaks can be necessary.


Best, Simon



Re: LyricExtender doesn't terminate before grace note

2023-07-08 Thread Simon Albrecht

Hi Abraham,

On 07.07.23 16:36, Abraham Lee wrote:

All,

This came up on the FB group and I determined that the problem is the 
presence of the \acciaccatura. In the following passage, the 
LyricExtender somehow misses the signal to end before the grace note 
appears, forming a continuous line from "bad" to "ex" instead of 
stopping near the "c2.". Is there any workaround that can fix this 
while keeping the grace note?


I think desired behaviour should be that the engraver terminates the 
extender before the grace note, however it’s understandable that it 
doesn’t, since grace notes are traditionally ignored for lyrics 
typesetting. There is a context property to change that, though, and 
then you can tweak (with some acrobatics) the alignment of the following 
syllable, or maybe insert a PhrasingSlur/quit considering slurs for 
melismata instead.


%
\version "2.25.5"

\layout {
  \context {
    \Lyrics
    includeGraceNotes = ##t
  }
}

selfAl = #(define-music-function (n) (number?)
  #{
    \once\override LyricText.self-alignment-X = $n
  #})
selfAlForce =
#(define-music-function (n) (number?)
   (let ((aligner (lambda (grob) (ly:grob-set-property! grob 
'self-alignment-X n

  #{
    \once\override LyricText.before-line-breaking = $aligner
  #}))

\new Voice \relative c' {
  \time 3/4
  g'4 a8 b c4 ~ |
  c2. |
  \acciaccatura g8 d'4 e4 c4 |
}
\addlyrics {
  This is a bad __ \selfAlForce #-3.3 ex -- ten -- der.
}
%

Note that \version "2.25" now generates an error message.

Best, Simon



Re: Define an alias to a parametrized command

2023-06-28 Thread Simon Albrecht

On 28.06.23 00:54, Valentin Petzel wrote:

If you want a real alias (that is a second binding to the same function) you
can do

#(define acc acciaccatura)

This will create another binding to the same object

AFAIK,
acc = #acciaccatura
and likewise
af = #after
will have the same effect.

Best, Simon



Re: Metronome marking with non-integer value

2023-06-26 Thread Simon Albrecht

On 25.06.23 16:36, Jean Abou Samra wrote:
|\layout { \context { \Score \remove Metronome_mark_engraver 
\cadenzaOn } \context { \Staff \remove Time_signature_engraver 
\consists Metronome_mark_engraver } }|


Would the relatively new

\layout {
  \enablePolymeter
}

be appropriate here? (plus of course \cadenzaOn and \remove 
Time_signature_engraver)


Best, Simon



LSR 1169 issue: missing point-and-click

2023-06-20 Thread Simon Albrecht

Hello everyone,

it’s great to have LSR 1169 and it seems to be working as it should—many 
thanks to Jean Abou Samra and Werner Lemberg!


However I’m sorry to write this mail because there is one issue I found 
;) Any syllable but the last in a word doesn’t have point-and-click the 
way it is implemented now. Maybe there’s a way to generate a transparent 
markup just for point-and-click on the other syllables? I might be able 
to work on this at some time, but I can’t say when, so in case someone™ 
wants to pick it up, I make it known here :)


Best regards,
Simon



Re: How to make a blank page

2023-06-11 Thread Simon Albrecht

Hi Paul,

On 11.06.23 15:41, Paul McKay wrote:
A solution which would also allow me to insert a blank space between 
scores (so I could begin a 2nd movement on an even-numbered page) 
would be good, but my current request is just for an initial one.


Jean already gave one solution, another common one would be to use a 
blank bookpart (each bookpart always starts on a new page).


%%
\version "2.24.0"

\bookpart { \markup \null }
\bookpart { \score { c' } }
\bookpart { \markup "Page intentionally left blank for page-turning 
purposes." }

\bookpart { \score { d' } }
%%

I don’t quite know what you mean by referring to the even-numbered page; 
maybe this could help: 
, 
especially the note at the bottom regarding odd/even.


Hope that helps,
Simon



Re: Magnetic snap and whiteout on LyricText: warnings

2023-06-06 Thread Simon Albrecht

Hi Jean, hi Werner,

On 05.06.23 22:28, Jean Abou Samra wrote:
Well, for my defense, I did also post a revised version of the 
“magnetic lyrics” snippet:


https://www.mail-archive.com/lilypond-user@gnu.org/msg149201.html


thanks for that pointer and your contributions. I reviewed that thread, 
since I had only noticed at the time that your, Jean’s, initial design 
wasn’t production-ready and not gotten around to following up…


Based on that, and on successful test on one (!) current score I was 
working on, I submitted the snippet to LSR as no. 1169 (pending 
approval) in the attached form. I hope that this is in your interest, as 
well as that of users who may find it there.


I also hope that LSR admins will review the ‘headers’ within the snippet 
code, namely the way you two are being credited and the list archive is 
being referred to.


Best, Simon\version "2.24.0"

%% LSR 1169 (to be confirmed)

\include "magnetic-lyrics.ily"

%% demonstration

\paper {
  indent = 0
  line-width = 31.5
  ragged-last = ##f
}

<<
  { 2 2 }
  \addlyrics { long -- ish }
>>% magnetic-lyrics.ily
%
%   written by
% Jean Abou Samra 
% Werner Lemberg 
%
% Version 2022-Apr-15

% https://www.mail-archive.com/lilypond-user@gnu.org/msg149350.html

\version "2.23.7"

#(define (Left_hyphen_pointer_engraver context)
   "Collect syllable-hyphen-syllable occurrences in lyrics and store
them in properties.  This engraver only looks to the left.  For
example, if the lyrics input is @code{foo -- bar}, it does the
following.

@itemize @bullet
@item
Set the @code{text} property of the @code{LyricHyphen} grob between
@q{foo} and @q{bar} to @code{foo}.

@item
Set the @code{left-hyphen} property of the @code{LyricText} grob with
text @q{foo} to the @code{LyricHyphen} grob between @q{foo} and
@q{bar}.
@end itemize

Use this auxiliary engraver in combination with the
@code{lyric-@/text::@/apply-@/magnetic-@/offset!} hook."
   (let ((hyphen #f)
 (text #f))
 (make-engraver
  (acknowledgers
   ((lyric-syllable-interface engraver grob source-engraver)
(set! text grob)))
  (end-acknowledgers
   ((lyric-hyphen-interface engraver grob source-engraver)
(when (not (grob::has-interface grob 'lyric-space-interface))
  (set! hyphen grob
  ((stop-translation-timestep engraver)
   (when (and text hyphen)
 (ly:grob-set-object! text 'left-hyphen hyphen))
   (set! text #f)
   (set! hyphen #f)

#(define (lyric-text::apply-magnetic-offset! grob)
   "If the space between two syllables is less than the value in
property @code{LyricText@/.details@/.squash-threshold}, move the right
syllable to the left so that it gets concatenated with the left
syllable.

Use this function as a hook for
@code{LyricText@/.after-@/line-@/breaking} if the
@code{Left_@/hyphen_@/pointer_@/engraver} is active."
   (let ((hyphen (ly:grob-object grob 'left-hyphen #f)))
 (when hyphen
   (let ((left-text (ly:spanner-bound hyphen LEFT)))
 (when (grob::has-interface left-text 'lyric-syllable-interface)
   (let* ((common (ly:grob-common-refpoint grob left-text X))
  (this-x-ext (ly:grob-extent grob common X))
  (left-x-ext
   (begin
 ;; Trigger magnetism for left-text.
 (ly:grob-property left-text 'after-line-breaking)
 (ly:grob-extent left-text common X)))
  ;; `delta` is the gap width between two syllables.
  (delta (- (interval-start this-x-ext)
(interval-end left-x-ext)))
  (details (ly:grob-property grob 'details))
  (threshold (assoc-get 'squash-threshold details 0.2)))
 (when (< delta threshold)
   (let* (;; We have to manipulate the input text so that
  ;; ligatures crossing syllable boundaries are not
  ;; disabled.  For languages based on the Latin
  ;; script this is essentially a beautification.
  ;; However, for non-Western scripts it can be a
  ;; necessity.
  (lt (ly:grob-property left-text 'text))
  (rt (ly:grob-property grob 'text))
  ;; Append new syllable.
  (ltrt (if (and (string? lt) (string? rt))
(string-append lt rt)
(make-concat-markup (list lt rt
  ;; Right-align `ltrt` to the right side.
  (markup (grob-interpret-markup
   grob
   (make-translate-markup
(cons (interval-length this-x-ext) 0)
(make-right-align-markup ltrt)
 (begin
   ;; Don't print `left-text`.
   

Magnetic snap and whiteout on LyricText: warnings

2023-06-05 Thread Simon Albrecht

Hello everyone,

I don’t know where the “Lyric syllable magnetic snap” snippet is mainly 
stored, I grabbed it from the list years ago and attach it in the 
version that I have, from December 2011 and with links to user list 
archive. I hope I’m not somehow behind time with this, having followed 
the user list only sporadically in the years since.


I have tracked down why I always got warnings about “infinity or nan” in 
every vocal music score I engraved: with the snippet, the last syllable 
of a LyricWord gets a #ly:text-interface::print stencil with 
#empty-markup as text, which results in multiple warnings each time Lily 
tries to apply whiteout to such a syllable. (tiny example below)


This is fixed by, in line 187 of the attached file, replacing 
ly:text-interface::print with point-stencil (an infinitely small 
stencil, IIUC). To avoid misunderstandings: the attached version does 
NOT have the fix applied.


I’m not aware of this snippet being available anywhere except the list 
archives. Surely it would be a good candidate for the LSR and OLL, 
wouldn’t it?


Best, Simon


\version "2.25.5"

\include "lyr-syl-magn-snap.ily"

\layout {
  \context {
    \Lyrics
    \override LyricText.whiteout = 1
  }
}

<<
  { 2 2 }
  \addlyrics { aaa -- b }
>>
%%%\version "2.23.5"

\include "lyr-syl-magn-snap.ily"

<<
  \new Voice = "foo" \relative c' {
\repeat unfold 16 { a8 b a2 a8 b }
  }
  \new Lyrics \lyricsto "foo" {
\override Lyrics.LyricWord.after-line-breaking = #(lyric-word-compressor 0)
\override Lyrics.LyricHyphen.minimum-distance = #0
\override Lyrics.LyricSpace.minimum-distance = #1
\repeat unfold 10 { foo }
\repeat unfold 10 { foo -- \markup \caps bar }
\repeat unfold 10 { \markup \bold syl -- la -- ble }
a \markup \with-color #red ran -- \markup \box dom string of mo -- no -- syl -- la -- bic
and mul -- ti -- \markup \fontsize #5 syl -- la -- bic
\markup \bold \underline ver -- \markup \italic bi -- age
\markup {
  \stencil #(make-circle-stencil 0.5 0 #f)
}
  }
>>

<<
  \new Voice = "foo" \relative c' {
\repeat unfold 16 { a8 b a2 a8 b }
  }
  \new Lyrics \lyricsto "foo" {
\override Lyrics.LyricWord.after-line-breaking = #(lyric-word-compressor 0.4)
\override Lyrics.LyricHyphen.minimum-distance = #0
\override Lyrics.LyricSpace.minimum-distance = #1
\repeat unfold 10 { foo }
\repeat unfold 10 { foo -- \markup \caps bar }
\repeat unfold 10 { \markup \bold syl -- la -- ble }
a ran -- \markup \box dom string of
\wordunderline mo -- no -- syl -- \markup \underline la -- bic
and \wordbox mul -- ti -- \markup \fontsize #5 syl -- la -- \markup \box bic
\wordunderline ver -- \markup \italic bi -- age
\markup {
  \stencil #(make-circle-stencil 0.5 0 #f)
}
  }
>>

\layout {
  ragged-last = ##t
}

Re: Get the margin values

2023-06-05 Thread Simon Albrecht

Hi Pierre,

On 05.06.23 15:07, Pierre Perol-Schneider wrote:

So how can I get the paper values as a markp?


the call to ly:output-def-lookup returns a number or an empty list. So 
this returns valid markup regardless:



\version "2.24.1"

\paper {
  top-margin = 30
  %bottom-margin = 30
  left-margin = 30
  %right-margin = 30
}

#(define-markup-command
  (margin layout props)()
  (let* ((prnt (lambda (i) (let ((mrgn (ly:output-def-lookup 
$defaultpaper i)))

 (if (number? mrgn)
 (number->string mrgn)
 "not yet known"
 (top-margin (prnt 'top-margin))
 (bottom-margin (prnt 'bottom-margin))
 (left-margin (prnt 'left-margin))
 (right-margin  (prnt 'right-margin)))
    (interpret-markup layout props
  #{
    \markup\column {
  \line { top-margin = #top-margin }
  \line { bottom-margin = #bottom-margin }
  \line { left-margin = #left-margin }
  \line { right-margin = #right-margin }
    }
  #})))

% Test:
\markup\margin

%

However, I can’t say why the right margin isn’t yet known by the time it 
is queried.


Best, Simon



Re: nested \relative ?

2023-02-11 Thread Simon Albrecht

On 10/02/2023 19:22, Saul Tobin wrote:

What is the reasoning behind having smaller relative blocks?


I agree that there are many factors in the workflow, project and 
templates that influence this decision. I want to give just one example: 
Piano score or similar with changing number and orientation of voices.


One way of setting that up (other staff would work the same): (this got 
longer than I expected, sorry)



{
  %\oneVoice
  \relative { %{ some music %} }
  <<
    \relative {
  \voiceOne
  % more music
    }
    \new Voice \relative {
  \voiceTwo
  % parallel music
    }
  >>
  \oneVoice
  \relative {
    % continue main voice without worrying about which pitch is preceding
  }
  <<
    \relative {
  % independent polyphonic part
    }
    \\
    \relative {
  % can freely switch around voices during editing
  % without worrying about wrong pitches
    }
  >>
}

Another way the same thing could be set up:

<<
  \new Voice = "default" {
    % one music expression for everything that’s oneVoice
    \relative {
  % first section of music
  % then I choose to stay in the music expression because it
  % immediately continues
  \voiceOne
  % second section
  \oneVoice
    }
    % now there’s a change of register, and instead of calculating
    % the number of octaves it is displaced, I just open a new
    \relative {
  % third section of music
    }
    % fourth section of music begins afresh, so I skip in this
    % music expression
    s32*7
  }
  \new Voice = "voiceOne" {
    \voiceOne
    % skips for first through third section
    \relative {
  % music for the fourth section, again just specify the first
  % pitch in absolute so I’m safe against future edits
    }
  }
  \new Voice = "voiceTwo" {
    \voiceTwo
    % skip a bit, but then...
    \voiceThree
    % I realise that I forgot a couple notes in voiceThree, but they
    % won’t influence any other pitches because of the independent
    % relative blocks
    \relative {
  % couple notes
    }
    % more skips
    \relative {
  \voiceTwo
  % second section
  % voiceXXX command inside or outside relative is of course
  % completely irrelevant and just personal preference
    }
    % skips
    {
  % fourth section is just a pedal point and doesn’t need
  % relative at all
  a,,,1~ 32.. 128 4
    }
  }
>>


Best, Simon




Re: nested \relative ?

2023-02-10 Thread Simon Albrecht

Hi Darren,

On 10/02/2023 11:46, Darren Ng wrote:

\ghostNoteWhichDoesNotActuallyAppear { c,,, }


I think what you want here is \resetRelativeOctave.

The best solution depends on many factors around your workflow and the 
setup of your project, but generally it is recommendable to split things 
up into smaller \relative {} blocks. It has taken me a long time to get 
better at this and actually do things like (silly example)


someMusicVariable = {
  \relative { c'4. e8 g4 c | a c8 a g2 }
  R1*10
  \relative { f'4. g8 e4 c | d2 c }
}

HTH, Simon


Re: Duplicate marks with removed Staves (frenched)

2023-02-10 Thread Simon Albrecht
Thanks for reiterating. I was being dense when replying and have since 
figured out the same, was just meaning to reply again and then saw your 
message :)


Thanks for the help and all the best!
Simon

On 10/02/2023 00:02, Saul Tobin wrote:
I think the reason is that the mark engravers belong to the staff 
grouping context, which isn't removed along with the child staves. 
Structuring the code like this avoids the duplicate marks:


\version "2.24.0"

\layout {
  \context {
    \Score
    \remove Bar_number_engraver
    \remove Staff_collecting_engraver
    \remove Mark_tracking_translator
    \remove Mark_engraver
    \remove Text_mark_engraver
  }
  \context {
    \ChoirStaff

  }
  \context {
    \Staff
    \RemoveEmptyStaves
    \consists Bar_number_engraver
    \consists Staff_collecting_engraver
    \consists Mark_tracking_translator
    \consists Mark_engraver
    \consists Text_mark_engraver
  }
}
marks = {
  s1
  s
  \break
  \mark\default
  s
  \textMark "here"
  s
  \break
  \mark\default
  s
  \textMark "there"
  s
}
A =  { 1 1 s1 s1 1 1 }
B =  { 1 1 1 1 1 1 }
<<
  \new ChoirStaff <<
    \new Staff << \marks \A >>
  >>
  \new ChoirStaff <<
    \new Staff << \marks \B >>
  >>
>>

Maybe I'm missing a way to do this while keeping the mark engravers in 
the ChoirStaff context.


Saul

On Thu, Feb 9, 2023 at 1:29 AM Simon Albrecht  
wrote:


Hi Saul,

On 08/02/2023 22:03, Saul Tobin wrote:

Is there a reason to have the marks in a child context rather
than just a simultaneous music variable?



You mean the Devnull? Just convenience. It works well with the way
I assemble different ChoirStaffs for different output formats and
adding marks to just one or multiple of them as needed.

Now this morning I had an empty extra staff appear on top and I
don’t know why, but it shouldn’t come from the Devnull.

Best, Simon


Re: Duplicate marks with removed Staves (frenched)

2023-02-09 Thread Simon Albrecht

Hi Saul,

On 08/02/2023 22:03, Saul Tobin wrote:
Is there a reason to have the marks in a child context rather than 
just a simultaneous music variable?



You mean the Devnull? Just convenience. It works well with the way I 
assemble different ChoirStaffs for different output formats and adding 
marks to just one or multiple of them as needed.


Now this morning I had an empty extra staff appear on top and I don’t 
know why, but it shouldn’t come from the Devnull.


Best, Simon


Duplicate marks with removed Staves (frenched)

2023-02-08 Thread Simon Albrecht

Hello everyone,

I am working on a large score with several ChoirStaves and want to have 
BarNumbers and Marks in the middle as well. However, when I use 
\RemoveEmptyStaves, removed Staves still have their BarNumbers etc.


How can I solve this without hard-coding where the Staves are removed? 
Of course I could use manual breaks and override the stencils, but that 
would be cumbersome and inflexible.


See the attached/following example—of course it has nothing actually to 
do with the ChoirStaff contexts.


Best, Simon

%
\version "2.25.0"

\layout {
  \context {
    \Score
    \remove Bar_number_engraver
    \remove Staff_collecting_engraver
    \remove Mark_tracking_translator
    \remove Mark_engraver
    \remove Text_mark_engraver
  }
  \context {
    \ChoirStaff
    \consists Bar_number_engraver
    \consists Staff_collecting_engraver
    \consists Mark_tracking_translator
    \consists Mark_engraver
    \consists Text_mark_engraver
  }
  \context {
    \Staff
    \RemoveEmptyStaves
  }
}
marks = \new Devnull {
  s1
  s
  \break
  \mark\default
  s
  \textMark "here"
  s
  \break
  \mark\default
  s
  \textMark "there"
  s
}
A = \new Staff { 1 1 s1 s1 1 1 }
B = \new Staff { 1 1 1 1 1 1 }
<<
  \new ChoirStaff << \marks \A >>
  \new ChoirStaff << \marks \B >>
>>
\version "2.25.0"

\layout {
  \context {
\Score
\remove Bar_number_engraver
\remove Staff_collecting_engraver
\remove Mark_tracking_translator
\remove Mark_engraver
\remove Text_mark_engraver
  }
  \context {
\ChoirStaff
\consists Bar_number_engraver
\consists Staff_collecting_engraver
\consists Mark_tracking_translator
\consists Mark_engraver
\consists Text_mark_engraver
  }
  \context {
\Staff
\RemoveEmptyStaves
  }
}
marks = \new Devnull {
  s1
  s
  \break
  \mark\default
  s
  \textMark "here"
  s
  \break
  \mark\default
  s
  \textMark "there"
  s
}
A = \new Staff { 1 1 s1 s1 1 1 }
B = \new Staff { 1 1 1 1 1 1 }
<<
  \new ChoirStaff << \marks \A >>
  \new ChoirStaff << \marks \B >>
>>

2023-02-08--duplicate-marks-on-removed-staffs.pdf
Description: Adobe PDF document


Re: Controlling Slur Marks

2022-08-31 Thread Simon Albrecht

Hi Greg,

great to hear you’re starting with LilyPond!

On 30/08/2022 21:52, Greg Lindstrom wrote:
I see later in the documentation there is a snippet on how to merge 
voices, so that's next on my list.



There’s one bit of important advice that usually makes the experience of 
learning LilyPond (which can be steep and/or daunting) much better: 
fully read and understand the Learning Manual at least once. It’s 
important to grasp some fundamental concepts such as to avoid 
misunderstandings down the line.


Voices are one of those concepts, so you’re definitely on the right 
track there ;)


Best, Simon




Re: Last note of a first alternative is a tie to the first note in the repeat; how to engrave this?

2022-07-28 Thread Simon Albrecht

On 28/07/2022 16:25, David Kastrup wrote:

There is also \startTrillSpan/\stopTrillSpan, \startGroup/\stopGroup,
\startGraceSlur/\stopGraceSlur, \startTextSpan/\stopTextSpan,
\startMeasureCount/\stopMeasureCount,
\startMeasureSpanner/\stopMeasureSpanner .  On the opposite side, there
is \endSpanners.

All of these strictly imply the beginning/end of typesetting, but then
the problem of halfties is that the usual connection of beginning/end of
typesetting with the flow of time is not there.

Exactly, I think this would be very misleading.

I was thinking of \leftTie/\rightTie instead, but then is the tie
pointing to the left, or is it supposed to be at the left end of a
repeat section?  I thought start/stop would be less ambiguous even if
somewhat uglier.


I find it difficult to come up with something succinct— 
\halfTieToTheLeft and \halfTieToTheRight would be clear, but way too 
cumbersome. Actually, I think \halfTieLeft and \halfTieRight would work 
just fine. There’s potential for confusion, but not if it’s clear that 
the direction is from the note head. Does that make sense?


Best, Simon





Re: Markup command trouble

2022-07-25 Thread Simon Albrecht

Hi David,

On 25/07/2022 16:35, David Kastrup wrote:

You probably meant

\markup spanish = \markup \italic \etc

which defines a markup command.  The way you wrote it, \spanish is just
a scheme function that happens to return the internals of a markup
command definition.


I did mean that. Strange that I didn’t remember that from when you 
introduced the \etc syntax—it is properly documented.


Thanks for helping out and all the best!
Simon




Issue with download link

2022-07-25 Thread Simon Albrecht

Hello everyone,

On 24/07/2022 19:44, Jonas Hahnfeld via LilyPond user discussion wrote:

Please refer to the Installing section in the
Learning Manual for instructions how to set up the provided binaries:
https://lilypond.org/doc/v2.23/Documentation/learning/installing


This link leads to a 2.23 documentation page which contains links for 
2.22.1 binaries.


Would it make more sense linking to 
 and 
 instead?


Best, Simon




Markup command trouble

2022-07-25 Thread Simon Albrecht

Dear list,

I wanted to define a markup command for easy switchable styling of text 
and ran into an issue which seems hard to understand:



\version "2.23.9"

spanish = \markup\italic \etc

\markup \column {
  \spanish \justify { test }
}


=> “error: not a markup”

My understanding would have been that \justify returns a list of markups 
and the \spanish command, as if I had just used \italic directly, should 
act on all elements of that list. What did I get wrong? Is it just me or 
should that be made more predictable, if possible?


Best, Simon




Re: Undertie in lyrics to show no breath

2022-07-22 Thread Simon Albrecht

Hi mancunius,

On 20/07/2022 12:34, mancunius wrote:
Hello. In the following example I want the undertie to be placed 
between the 2 “O sacrum convivium” lines of lyrics, to indicate that 
no breath should be taken by the singers - as per the normal choral 
convention. (cf. the commented-out \breathe command in the music 
itself.) As it currently compiles, the undertie is placed beneath the 
word “O” of the second phrase.


This is because the markup command \undertie requires an argument and so 
it is applied to the following syllable.


What I would suggest is a dotted or dashed slur between the notes like this:

{ \once\dashedSlur cs( d) }

Unfortunately there is no mechanism for creating a tie between different 
lyric syllables _yet_. However, LilyPond is very open to customisation 
and maybe some of the wizards on this list could help. This is the 
method I hoped might work:



\version "2.20.0"

\layout {
  \context {
    \Lyrics
    \consists "Slur_engraver"
  }
}

startLyricSlur = (
stopLyricSlur = )

\score {
  <<
    {  2 4( 4) }
    \addlyrics {
      um, \startLyricSlur
  O __ \stopLyricSlur
    }
  >>
}
%%

and I don’t know whether it’s a short or a long way from working…

Best, Simon




Re: Orchestral works good practice

2022-07-11 Thread Simon Albrecht

Hello,

On 07/07/2022 08:50, Rip _Mus wrote:

Good morning to everyone,
I am preparing a large orchestral work.
In my writing style, each instrument often has two voices in its 
staff, for various reason (for example, each clarinet can handle two 
voices when playing multiphonics trills with threshold tones, or other 
techniques), but in some other cases instruments couple have the same 
notes, or both tacet.

I read that, in these cases, \partCombine is not suitable.
Are there strategies for these kind of engraving needs?

Thank you

Rip_mus



it is not quite clear what you mean. Do you want both clarinets on one 
staff, or on separate staffs? Are you already using partCombine?


partCombine can handle some cases well, but often it will need manual 
adjustment through the commands \partCombineApart, \partCombineAutomatic 
etc.—you can find these easily through the command index in the Notation 
Reference, Appendix D, [1] along with links to documentation.


If that doesn’t help, please come back, ideally with a short example [2] 
of what doesn’t work and how you would like it to work.


Best, Simon

[1] 
http://lilypond.org/doc/v2.22/Documentation/notation/lilypond-command-index

[2] http://lilypond.org/tiny-examples.html




Re: \repeat unfold has problems inside \repeat volta

2022-07-03 Thread Simon Albrecht

On 02/07/2022 18:20, Jean Abou Samra wrote:
Simon, you moved this from bug-lilypond to lilypond-user. Was that 
intentional? 


Did I? I’m sure I just clicked Reply All, and the thread as I received 
is on the user list… this e-mail of yours is the first that for me shows 
the bug list as recipient as well.


Best, Simon




Re: \repeat unfold has problems inside \repeat volta

2022-07-02 Thread Simon Albrecht

Hi David and others,

On 01/07/2022 12:32, David Kastrup wrote:

I don't think so.  The problem is that repeats now support putting the
\alternative phrase inside of the construct since that is a saner way of
doing things.  But the previous way is still supported for compatibility
reasons.  Your input file could be interpreted either way, and the way
LilyPond interprets it is not the one you intended.

This is a design problem I think, and not a matter of you misreading the
documentation.  No idea what a long-term resolution would look like.



I agree that the new syntax is more sensible. Wouldn’t it be an option 
to deprecate the old syntax and disallow it in a future stable release? 
It seems to me like it would be worth it, even if convert-ly may only 
give a “Not smart enough, do it manually”-type warning.


Best, Simon




Re: Generating a spiccato

2022-06-27 Thread Simon Albrecht

Hi Jacques,

On 27/06/2022 22:13, Jacques Menu wrote:

Does anyone know of some way to generate spiccato articulations in the scores 
produced by Lily?



what would you expect that to look like?

{ a'4-! }

maybe?

Best, Simon




Re: shiftDurations and tempo

2022-06-27 Thread Simon Albrecht

Hi David,

On 27/06/2022 21:07, David Kastrup wrote:

Before looking for a possible following `=`
LilyPond has to have made a decision what type the token/expression
coming before that has.  It cannot look at the type of a #... expression
before deciding to look for `=` but it can (and will) look at the type
of a $... expression.

Now syntax errors are comparatively unhelpful, so one could try to
tentatively accept an #... = ... expression anyway and then barf if the
expression type does not support it.  The result would likely not be
worse for the user.



thanks for your consideration. I don’t think I’m qualified to speak on 
that… a decision might depend on how strongly a user is expected to know 
about the # vs. $ issue.


Best, Simon




Re: shiftDurations and tempo

2022-06-27 Thread Simon Albrecht

Hi Jean,

On 27/06/2022 20:37, Jean Abou Samra wrote:



Le 27/06/2022 à 20:10, Simon Albrecht a écrit :

Hello everyone,

I’m trying to encode a piece such that I can switch whether or not 
durations will be shifted (note values halved/doubled). Unfortunately 
\tempo isn’t affected by \shiftDurations (that would be a sensible 
feature request, right?),


Go open an issue.



I did: <https://gitlab.com/lilypond/lilypond/-/issues/6366>



so I tried this:
%%%
\version "2.23.9"

durationShiftOne = #-1
{
  \tempo #(ly:make-duration

[…]


Can I make that work some other way?



\version "2.23.9"

durationShiftOne = #-1
{
  \tempo $(ly:make-duration (+ 3 durationShiftOne)) = 152
  \shiftDurations \durationShiftOne #0 { 8 }
}


You just need to use $ instead of #.



I keep forgetting to try that. I’ll try understanding the difference 
better as well. Thanks for the help!


Best, Simon




shiftDurations and tempo

2022-06-27 Thread Simon Albrecht

Hello everyone,

I’m trying to encode a piece such that I can switch whether or not 
durations will be shifted (note values halved/doubled). Unfortunately 
\tempo isn’t affected by \shiftDurations (that would be a sensible 
feature request, right?), so I tried this:


%%%
\version "2.23.9"

durationShiftOne = #-1
{
  \tempo #(ly:make-duration (+ 3 durationShiftOne)) = 152
  \shiftDurations \durationShiftOne #0 { 8 }
}


but unfortunately Lily won’t accept that Scheme expression instead of 
the normal duration.


Can I make that work some other way?

Should the parser be able to take that Scheme expression there?

Best, Simon




Re: Score header and top-level markup

2022-06-06 Thread Simon Albrecht

Hi Jean,

thanks once more for the speedy and helpful reply!

On 06/06/2022 14:43, Jean Abou Samra wrote:

How can I change that?


That sounds like an XY question.


Sorry about that. I meant to imply: How do I swap the placement of the 
headers?




What is the use case?
Having a large, left-aligned header for an entire sonata, which is 
easiest achieved using toplevel markup, and then using the header 
mechanism for the movement headers (which I intended to include a common 
composer field, but I’m reconsidering that).


There are lots of ways. You could integrate the specific
title into the general title. You could integrate the general
title into the specific title. You could also put the specific
title in \score-level \header fields. 



I got confused about scores generating their own headers because I had 
forgotten


\paper { print-all-headers = ##t }

when trying score-level headers. I now got it to work properly.

Best, Simon




Score header and top-level markup

2022-06-06 Thread Simon Albrecht

Hi everyone,

%%%
\version "2.23.9"

\bookpart {
  \markup \fontsize #10 "general title"
  \header {
    title = "specific title"
  }
  \score {
    { 1 }
  }
}


why does "general title" appear below "specific title" and not above? 
How can I change that?


Best, Simon




Re: Three slurs from a single voice to three voices?

2022-06-06 Thread Simon Albrecht

Hi Kevin,

On 02/06/2022 22:56, Kevin Cole wrote:

The hand-written score I'm looking at shows an F# with three slurs
coming off of it going to each of the three notes in the following
measure. I tried the following but it only shows one slur. What did I
miss?



without context it’s hard to tell what the original notation wanted to 
achieve, so this is only one suggestion to fix some aspects that may or 
may not fit that context.


– One technical issue is this: If you write

\new Voice \voiceTwo { c4 }

then the Voice you explicitly created will contain _only_ the \voiceTwo 
command. The following music expression is separate and will again go 
into the voice context you were previously in. Move the brace:


\new Voice { \voiceTwo c4 }

Now there’s only one music expression which goes into the new Voice, and 
the \voiceTwo command works on the following music.


– LilyPond has a way of having slurs across Voices by moving 
Slur_engraver to the Staff (or a higher-level) context and linking the 
slurs like this:

{
  fs'4\=1 ( \=2 (
  <<
    { \voiceOne b'4\=1 ) }
    \new Voice { \voiceTwo d'4\=2 ) }
  >>
}

However, it isn’t very good (yet?) at making this look good, and in fact 
it can quickly get very difficult to make it look good at all.


– In general, having more than two independent parts on one Staff 
usually leads to difficult engraving issues that would generally be best 
solved by using more than one Staff, especially if it’s vocal music with 
Lyrics on top of everything.


What I suggest here is merging the bottom two parts into one Voice since 
they share the same rhythm. Note how the two music expressions end up in 
one Voice, and only the third one doesn’t because of the \new Voice.


%%%
\version "2.22.1"
\language "english"

\new Staff {
  \relative c' {
    \time 4/4
    \key d \major
    d2 r4
    <<
  {
    \voiceTwo
    fs4(
    d2) cs4 cs4  |
    d2 d2 |
  }
  {
    s4
    b2 as4 as4   |
    b2 b2 |
  }
  \new Voice {
    \voiceOne
    fs'4~
    fs4( g) g4 fs4   |
    fs4( b4) b2   |
  }
    >>
    \oneVoice
  }
}


This will work with Lyrics as well, since the Voice context first 
created continues all the way through.


HTH, Simon




Re: bookTitleMarkup and tocItem cause empty page

2022-06-01 Thread Simon Albrecht

Hi Jean,

On 01/06/2022 22:41, Jean Abou Samra wrote:

As said on the ticket, you need to move \tocItem inside
the second bookpart,



thanks for looking into it and opening the issue. The workaround is 
inconvenient, because I want to have the \bookpart{} statement in an 
include file for use in different contexts, but I guess I’ll have to 
make it work for now.


Best, Simon




bookTitleMarkup and tocItem cause empty page

2022-06-01 Thread Simon Albrecht

Hi Jean,

On 01/06/2022 15:24, Jean Abou Samra wrote:


Please give an example.



I’ve gone debugging, and it’s a weird combination of two things that 
causes the empty page:


%%%
\version "2.23.9"

\paper {
  bookTitleMarkup = \markup {
    \vspace #.3
  }
}

\bookpart { \markup { 1 } }

\tocItem \markup "toc2"
\bookpart { \markup { 2 } }
%

I don’t understand… in my real-world book, the empty pages were empty, 
now in this tiny example the second bookpart appears to get duplicated, 
and this only because the bookTitleMarkup contains _anything_ other than 
empty \fromproperty calls. Even \markup\null as bookTitleMarkup has the 
bug (?) occurring.


Best, Simon




Start bookPart on even page

2022-06-01 Thread Simon Albrecht

Hi everybody,

it’s been a long time since I’ve used bookPart, it seems, and I don’t 
know how to search for an answer.


How can I allow Lily to start a bookPart on even pages? She will insert 
empty pages to avoid that.


Best, Simon




Re: Scheme function and top-level markup

2022-05-27 Thread Simon Albrecht

Hi Jean,

On 27/05/2022 12:34, Jean Abou Samra wrote:
The solution for now is to use a plain Scheme function: 



Thanks a bunch for the solution and explanations, that does it!

Best, Simon




Re: Openlilylib

2022-05-27 Thread Simon Albrecht

Hi Andrew,

sorry that your investments into Dorico didn’t work out! It’s great to 
have you back in the Pond :)


I have been thinking that it would be nice to invest more time into Lily 
myself, but I don’t yet know whether/how/when I can make that happen.


Best, Simon

On 27/05/2022 10:24, Andrew Bernard wrote:

Hello All,

Having had to abandon the Openlilylib (OLL) work I took over from Urs 
Liska, for various reasons, in the meantime I went over to Dorico 
instead of Lilypond for my work. Having spent a lot of money on Dorico 
(AUD$800+) and given it my best shot for more than year, it really 
falls short for the modernist work that I do, dogmatically follows the 
Gould rule book and does not let you override most of that (it's what 
software people call an opinionated program), crashes often with the 
latest release and they cant solve it and just remain silent, and 
worse, the forum which I initially thought helpful is turning out to 
be quite toxic and I get a lot of personal abuse. along with 
deprecating comments about the music I work on. Consequently I have 
binned Dorico as of yesterday and I am coming back to lilypond.


The upshot of that is that I suppose I should revive the OLL work. 
I'll recreate the dedicated server I set up, recreate the Discourse 
forum for discussion, and work on the git repository, then people can 
collaboratively work together again and I can take pull requests and 
so on.


I stalled initially a couple of years ago when I decided to totally 
refactor the OLL github repostory, but now I think if we open it up 
again as is and I work on that on the background which would be useful.


I'll pay for the server resources out of my own pocket, but provide a 
Paypal link for donations for running costs (server, domain name, etc).


Andrew







Re: Scheme function and top-level markup

2022-05-27 Thread Simon Albrecht

Sorry for the garbled line breaks, I’ll try again:

%%% \version "2.23.9"

pieceTitle =
#(define-scheme-function (str) (markup?)
   #{
 \markup \huge $str
 \noPageBreak
   #})

\pieceTitle "I. Kyrie"
{ c'1 }
%


Parsing...
/tmp/frescobaldi-0fy0zxi0/tmpkd3e8qov/document.ly:7:6: error: markup outside of 
text script or \lyricmode
 
 \markup \huge $str

/tmp/frescobaldi-0fy0zxi0/tmpkd3e8qov/document.ly:11:1: error: error in #{ ... 
#}

\pieceTitle "I. Kyrie"
/tmp/frescobaldi-0fy0zxi0/tmpkd3e8qov/document.ly:11:1: error: bad expression 
type

\pieceTitle "I. Kyrie"
%%%%%%

On 27/05/2022 12:21, Simon Albrecht wrote:

Hello everyone,

I’m a bit surprised that the following doesn’t work and don’t know 
where to look for a solution.


% \version "2.23.9" pieceTitle = 
#(define-scheme-function (str) (markup?)    #{  \markup \huge $str 
 \noPageBreak    #}) \pieceTitle "I. Kyrie" { c'1 } 
%%%


Here are the error messages:

%%% Parsing... 
/tmp/frescobaldi-0fy0zxi0/tmpkd3e8qov/document.ly:7:6: error: markup 
outside of text script or \lyricmode \markup \huge $str 
/tmp/frescobaldi-0fy0zxi0/tmpkd3e8qov/document.ly:11:1: error: error 
in #{ ... #} \pieceTitle "I. Kyrie" 
/tmp/frescobaldi-0fy0zxi0/tmpkd3e8qov/document.ly:11:1: error: bad 
expression type \pieceTitle "I. Kyrie" %%%


What can I do?

Best, Simon






Scheme function and top-level markup

2022-05-27 Thread Simon Albrecht

Hello everyone,

I’m a bit surprised that the following doesn’t work and don’t know where 
to look for a solution.


% \version "2.23.9" pieceTitle = 
#(define-scheme-function (str) (markup?)    #{  \markup \huge $str 
 \noPageBreak    #}) \pieceTitle "I. Kyrie" { c'1 } 
%%%


Here are the error messages:

%%% Parsing... 
/tmp/frescobaldi-0fy0zxi0/tmpkd3e8qov/document.ly:7:6: error: markup 
outside of text script or \lyricmode \markup \huge $str 
/tmp/frescobaldi-0fy0zxi0/tmpkd3e8qov/document.ly:11:1: error: error in 
#{ ... #} \pieceTitle "I. Kyrie" 
/tmp/frescobaldi-0fy0zxi0/tmpkd3e8qov/document.ly:11:1: error: bad 
expression type \pieceTitle "I. Kyrie" %%%


What can I do?

Best, Simon




Re: Openlilylib

2022-05-11 Thread Simon Albrecht

Hi Andrew,

thanks for the information. Sorry to hear about your illness and all the 
best wishes nonetheless!


Best,
Simon

On 09/05/2022 09:53, Andrew Bernard wrote:

Hello All,

I've been absent from the list for a long time, but recently got CC'd 
about an Openlilylib pull request.


I must apologise for never getting around to updating the list on the 
Openlilylib project status. Some time ago I took over from Urs who is 
no longer able to do the work for private reasons I am not at liberty 
to share. All started well and I setup a Linux server and a Wordpress 
site and forum for the project. Taking over the code repository it had 
long needed a large amount of refactoring, which I started but this 
proved to be a complicated project for reasons I need not detain 
people with here.


Then due to what can only be described as sheer stupidity I managed to 
irrecoverably destroy my Linux server (it's a long story). What 
happened after that is twofold. First, I am sorry to say that I was 
diagnosed with the quite rare blood cancer Multiple Myeloma some ten 
years ago now. It's fatal and incurable, though it can be managed 
well, especially by the hospital here in Melbourne, Australia which 
has a world leading research department specializing, amazingly, in 
the particular cancer. So although I am doing well sometimes large 
software tasks become very onerous and difficult, compared to before I 
became ill. Second, with the difficulties mentioned, it seemed to me 
that I only ever got less than half a dozen people signed up on the 
Discourse forum, and the project seemed hardly worth the effort to 
continue, even though I do know there are quite a few OLL end users. 
The sum of all this is that I have left it dormant for such a long time.


So at present there is no repository owner to accept pull requests,

I am not really able to restart this project, and very happy for 
others to pick up the ball. People are welcome to contact me for any 
advice.


Once again, apologies for being incommunicado, and all the best to 
everyone.



Andrew Bernard









Re: openlilylib pull request

2022-05-08 Thread Simon Albrecht

On 08/05/2022 20:37, Jean Abou Samra wrote:

The case study of how OLL fell out of maintenance is one of the
things leading me to think that a model where snippets providing
significant functionality and becoming somewhat popular get
upstreamed into the LilyPond core is a better fit for LilyPond
than them letting them be provided through external packages. 



In many cases, that may be true. In other cases, it really makes sense 
to allow for a more flexible space of user code available to the community.


The TeX ecosystem may have some issues with maintaining packages and 
especially with interoperability, but it provides an unbelievable wealth 
of high-quality additions to the core software that could never be 
provided otherwise. Due to the relative lack of adoption and the small 
size of the community LilyPond can’t seem to take some threshold toward 
creating a similarly stable ecosystem (so far?).


Best, Simon




openlilylib pull request

2022-05-08 Thread Simon Albrecht

Dear community,

I have made some small updates to keep the openlilylib/bezier module 
working with current versions of LilyPond and created a pull request on 
GitHub. Is anyone currently able to notice and approve the request?


Best, Simon




Re: Removing all dynamics from MIDI

2022-04-18 Thread Simon Albrecht

Hi David,

On 16/04/2022 18:11, David Santamauro wrote:
Hi, it seems removing the Dynamic_performer doesn’t actually remove 
performance of articulations.



Articulations are Script grobs, not Dynamics. Maybe removing 
Script_engraver as well would do the trick? I don’t work with MIDI much, 
so I don’t know whether it will.


Best, Simon




Re: DurationLine avoiding RehearsalMarks

2022-04-12 Thread Simon Albrecht

Hi Jean,

On 11/04/2022 18:04, Jean Abou Samra wrote:

Well, maybe it doesn't make sense anyway -- I don't think I've
ever seen a breathing sign in one staff and not another. 



It definitely happens and is perfectly valid musically. 
Breathing_sign_engraver sits in Voice (and similar) by default, and that 
makes sense.


Best, Simon




Re: Musical questions

2022-04-11 Thread Simon Albrecht

Hi Jacques,

On 11/04/2022 16:16, Jacques Menu wrote:

Also, what is the musical meaning of the ligatures above the staff?



these are not standard notation and it’s impossible to tell. Maybe the 
larger context might give some hint, but most likely you’d need an 
explanation in foreword or critical apparatus (looks like a fairly 
recent edition…).


Best, Simon




Re: Ignore stems

2022-03-25 Thread Simon Albrecht

Hi Jean,

On 25/03/2022 13:20, Jean Abou Samra wrote:

In English: these properties (X-extent, Y-extent, horizontal-skylines,
vertical-skylines) have implicit defaults, which are given when the
property is found not to be set. Now you're setting them to the empty
list, which for some reason (David calls it a Lispism, I agree with
him) has been chosen as the value representing lack of value, so the
default gets applied. Try #f instead. 



thanks a lot for the expert explanation! I was so sure that I have 
always seen people use #'() for clearing skylines that I didn’t try the 
obvious alternative.


Best regards!
Simon




Ignore stems

2022-03-25 Thread Simon Albrecht

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?


Best, Simon


\version "2.23.6"

\layout {
  \context {
    \Lyrics
    \override LyricText.show-vertical-skylines = ##t
    \override VerticalAxisGroup.nonstaff-relatedstaff-spacing = 
#'((padding . 0.2))

  }
  \context {
    \Voice
    \override Stem.show-vertical-skylines = ##t
    \override Stem.vertical-skylines = #'()
  }
}

<<
  { b'4 }
  \addlyrics { M }
  { a'4 }
  \addlyrics { M }
>>


Width proportions of large note values

2022-03-13 Thread Simon Albrecht

Dear list,

while engraving 17th century music, I have an issue with the way Lily 
spaces large note values by default. If there are no shorter values 
present, breve and whole notes receive almost the same horizontal space 
which makes the rhythms hard to read. How can I override that?


Best, Simon
\version "2.23.6"

\paper {
  ragged-last = ##f
  indent = 0
  system-count = 1
}

\layout {
  \context {
\Voice
\override NoteHead.style = #'baroque
  }
}

{
  \time 24/1
  \longa \longa \longa  \maxima \longa
  \maxima \longa  \maxima \longa
  \maxima \maxima \maxima
  \longa \longa \longa \longa \longa \longa
}

{
  \time 6/1
  1 1 1  \breve 1
  \breve 1  \breve 1
  \breve \breve \breve
  1 1 1 1 1 1
}

{
  \time 6/4
  4 4 4  2 4
  2 4  2 4
  2 2 2
  4 4 4 4 4 4
}

{
  \time 6/16
  16 16 16  8 16
  8 16  8 16
  8 8 8
  16 16 16 16 16 16
}


debug.pdf
Description: Adobe PDF document


Re: Music publishing houses accepting Lilypond files?

2022-03-13 Thread Simon Albrecht

Hi Colin,

I haven’t tried it myself, but generally publishers have a house style 
and want all their publications to comply with that house style. It’s 
offputting to me, because I have my own aesthetic preferences which 
don’t match with what computer typesetting typically looks like, so I 
would love if them simply taking .pdfs and adding front matter/page 
numbers etc. was a thing. Sadly, I don’t think it is.


Urs Liska and collaborator(s) had a major success with their 
LilyPond/LaTeX edition of Oskar Fried lieder which received a German 
Edition of the Year award. However, the publisher they worked with is so 
small it barely exists.


Best, Simon

On 12/03/2022 18:51, Colin Campbell wrote:
As the title implies: I've just converted a score from Finale, after 
the composer had given up trying to get a readable layout. He's 
delighted with the result, and seems interested in exploring LP. As he 
is also considering publishing his piece, my question to the community 
is: which publishers  will accept submission in Lilypond format (or 
perhaps as .PDF or .SVG) and do you have any recommendations or 
experiences?


Cheers,

Colin






Re: Please tear apart this example lead sheet template for traditional Western folk tunes

2022-02-22 Thread Simon Albrecht

Hi Valentin,

one line in your Scheme code confused me. If you don’t mind explaining, 
why do you write


`(,CN ,FB ,VC . ,LY)

instead of

(list CN FB VC LY)

?

Best, Simon

On 22/02/2022 09:25, Valentin Petzel wrote:

Hello Tom,

A good template will separate content and form. Ideally you’d be able to use a
few templates that work so universally that you need only to define the music
variables and include the template file. This would mean that changing the
music and the form can be done simply. If for example you wanted to change the
layout a bit you do not want to have to change this in every score you have.
Instead you can change it in the included layout definition and you’re done.

We can even use functions to do this in a very clean manner. See the appended
example.

Cheers,
Valentin

Am Dienstag, 22. Februar 2022, 03:09:03 CET schrieb Tom Campbell:

I am about to transcribe a bunch of older Western folk music in lead sheet
form for an open source tunebook. Am trying to create a robust template so
I don't have to think too much about anything other than getting the notes,
chords, and lyrics right. You can see it below, or rendered by the
invaluable Lilybin at http://lilybin.com/u6p5m8/8.

Can you tell me what's bad about this as a template? The lead sheets will
contain chord names and guitar fretboard diagrams. Added a crucial (for me)
section overriding the predefined guitar fretboard diagram for a chord. I
also took too long to figure out how to get pickup notes in a format that
seemed natural.

Thanks!

% Lead sheet with:
% - Guitar fretboard diagrams
% - Override a predefined fretboard diagram
% - Pickup note with text above it suppressed
% - Chord and other text suppressed above the pickup note
 Please send critiques to tomcampb...@gmail.com
\version "2.18.2"
\include "predefined-guitar-fretboards.ly"

% Override predefined fretboard for e minor.
% This just adds a G to the first (highest) string.
% A little contrived but it's brief.
\storePredefinedDiagram #default-fret-table \chordmode { e:m }
#guitar-tuning
#"o;2-2;2-3;o;o;3-4;"

\header {
title = "Hit and Miss (Daphne)"
composer = "Trad."
}

theMelody = \relative c {
   \clef treble
   \key e \minor
   \time 6/8

% Pickup note
   \partial 8 e'8

% Verse melody (truncated for clarity)
g4 a8 b4 e8
d8. e16 fis8
e4 b16 c

}

theLyrics = \lyricmode {
When Daph -- ne from fair
   Phoe -- bus did fly the --
}

theChords = \chordmode {
% Replace the N.C. that would appear over
% the pickup note
\set noChordSymbol = ""
\partial 8 r8
   e2.:min
   b4.:min
   e4.:min
  }

\score {
   <<
   \new ChordNames { \theChords }
   \new FretBoards { \theChords }
   \new Voice = "one" { \autoBeamOn \theMelody }
   \new Lyrics \lyricsto "one" \theLyrics

   \layout { }
   \midi { }
}




Re: LilyPond 2.22.2 released

2022-02-22 Thread Simon Albrecht

On 22/02/2022 14:07, Phil Holmes wrote:
We are proud to announce the release of GNU LilyPond 2.22.2 on 2-22-22 
(i.e. February the 22nd, 2022).



Fabulous ;) Thanks to everyone involved!




Re: inconsistent \RemoveEmptyStaves action

2022-02-22 Thread Simon Albrecht

On 22/02/2022 23:28, Lukas-Fabian Moser wrote:
Do you consider this inferior (or unnecessarily verbose and therefore 
non-minimal)? 



No, the motivation for that was more naive. You’re probably right that 
it would actually be more minimal in a deeper sense to explicitly 
instantiate the staves.


Best, Simon




Re: inconsistent \RemoveEmptyStaves action

2022-02-22 Thread Simon Albrecht

Hi,

On 12/02/2022 20:22, jh wrote:

This is the shortest example I could figure out how to make



David and Lukas-Fabian have already answered the core question, so allow 
me to comment on this: tiny examples are important for communication on 
the list and it takes a while to learn how to make one.


This is a minimal example for the issue you were having:

%%%
\version "2.22.1"

upper = { 1 \break 1 }
lower = { R1*2 }

\score {
  \new PianoStaff << \upper \lower >>
  \layout {
    \context {
  \Staff
  \RemoveEmptyStaves
    }
  }
}


I hope that gives you some ideas on how to boil down your excerpt even more.

Best, Simon




Re: self-alignment-X on DynamicTextSpanner?

2022-01-31 Thread Simon Albrecht
Thanks, Jean and Valentin, for the replies. I’ll certainly be able to 
achieve the result that I want.


However, I do think that DynamicTextSpanner should simply use properties

bound-details.left.self-alignment-X and
bound-details.left.parent-alignment-X

for this, by default. attach-dir doesn’t seem very descriptive and it 
deviates from the way horizontal alignment is normally specified in 
LilyPond, and likewise being able to specify self-alignment-X would seem 
to be the normal thing to expect.


I’ll submit such a request to the bug list.

Best, Simon

On 31/01/2022 11:51, Valentin Petzel wrote:

Hello Simon,

You need to use bound-details.left for these kind of things. There you have
the property attach-dir, which acts like parent-alignment-X for the endpoint.
This one defaults to LEFT, so you cannot really get any further by this. The
other way is to use the text property to add a \right-align to have the actual
markup aligned to the right (you might want to change attach-dir to CENTER, as
the fff does the same.

We can infact add some sugar for this, like here.

Cheers,
Valentin

Am Sonntag, 30. Jänner 2022, 22:20:58 CET schrieb Simon Albrecht:

Hi List,

is there an equivalent to self-alignment-X for the left bound text of a
DynamicTextSpanner? See below.

Best, Simon

\version "2.23.5"

{
1-\tweak self-alignment-X 1 \fff
1
% this causes alignment to just fail indiscriminately
% (not a surprise, because I couldn’t find out how to use this property)
%-\tweak left-bound-info.self-alignment-X 0
% this is simply an offset against the default placement (default
#'(-.75 . -.5))
%-\tweak bound-details.left.stencil-offset #'(-3 . 0)
% I’m not sure what this does at all
%-\tweak bound-details.left.attach-dir -3
\cresc
1
1
1
1\!
}




self-alignment-X on DynamicTextSpanner?

2022-01-30 Thread Simon Albrecht

Hi List,

is there an equivalent to self-alignment-X for the left bound text of a 
DynamicTextSpanner? See below.


Best, Simon

\version "2.23.5"

{
  1-\tweak self-alignment-X 1 \fff
  1
  % this causes alignment to just fail indiscriminately
  % (not a surprise, because I couldn’t find out how to use this property)
  %-\tweak left-bound-info.self-alignment-X 0
  % this is simply an offset against the default placement (default 
#'(-.75 . -.5))

  %-\tweak bound-details.left.stencil-offset #'(-3 . 0)
  % I’m not sure what this does at all
  %-\tweak bound-details.left.attach-dir -3
  \cresc
  1
  1
  1
  1\!
}




Re: tagGroup question

2022-01-28 Thread Simon Albrecht
Thanks, David and Jean, for your replies. I have no intention to reopen 
a can of worms here, and I didn’t remember that discussion (IIRC, that 
was at a time when I more regularly kept up with all LilyPond issues).


Using \keepWithTag a \keepWithTag b \music is very reasonable, 
especially considering that I almost exclusively use them either as 
toplevelMusicFunctions or wrapping an entire score’s music.


Best, Simon

On 28/01/2022 15:17, David Kastrup wrote:

David Kastrup  writes:


Simon Albrecht  writes:


Dear list,

I have encountered some unexpected behaviour with tags and
tagGroups. In the following example, I thought the two staffs should
look the same, even without the \removeWithTag command, but they
don’t:


\version "2.23.5"
% tested with 2.23.5 (guile2-build) and 2.22.0

\tagGroup sol,mi
\tagGroup withCClefs,noCClefs

\keepWithTag mi,noCClefs
%\removeWithTag withCClefs
<<
   {
     \tag mi,withCClefs \clef alto
     1
     \tag mi,noCClefs \clef bass
     1
   }
   {
     \tag withCClefs \clef alto
     1
     \tag noCClefs \clef bass
     1
   }
%%


How come the other tagGroup interferes? Is this a bug?

‘\keepWithTag’ [music] - TAGS (symbol list or symbol) MUSIC (music)
  Include only elements of MUSIC that are tagged with one of the tags
  in TAGS.  TAGS may be either a single symbol or a list of symbols.

  Each tag may be declared as a member of at most one tag group
  (defined with ‘\tagGroup’).  If none of a MUSIC element’s tags
  share a tag group with one of the specified TAGS, the element is
  retained.

Essentially, \keepWithTag #'a \keepWithTag #'b is not the same as
the more inclusive \keepWithTag #'(a b) even when a and b are from
different tag groups.  That is in line with this documentation that is
close to the implementation.  Whether this is in line with sensible
expectations of what \tagGroup should achieve, I am not sure.

I do think that I have at times described the effect of \tagGroup as
making \keepWithTag #'(a b) equivalent to
\keepWithTag #'a \keepWithTag #'b when a and b belong to different tag
groups: that would point to even my expectations being more in line with
yours than with what the implementation does.

Interesting: in the original issue in the bug tracker, the proposed
commit message is a lot more verbose than what ended up eventually in
the repository:

 Issue 4083: Implement \tagGroup command

 After mulling this over and figuring out that declaring a \tagGroup
 will not just keep \keepWithTag of some package unaffected by any tags
 otherwise in use but will _also_ hide the use of tags internal to the
 package from any outside use of \keepWithTag, I decided to go forward
 on this approach.

 The given implementation does "nothing special" for \keepWithTag and
 \removeWithTag when given tags from different tag groups, or when
 defining the same tag group several times (possibly by loading some
 code twice).  It is arguable that either could warrant a warning.
 However, the functionality of \keepWithTag #'(fromgroupI fromgroupII)
 cannot easily be provided by anything else.
 While I currently cannot imagine a useful application for it myself,
 the implemented behavior is logically consistent.

 Also contains:
 Basic documentation for \tagGroup command


That would imply that I was very much aware at the time of writing this
of the implications.  The question is whether

 However, the functionality of \keepWithTag #'(fromgroupI fromgroupII)
 cannot easily be provided by anything else.
 While I currently cannot imagine a useful application for it myself,
 the implemented behavior is logically consistent.

really keeps options open that anybody would use, making this behavior
(that cannot be achieved in reasonably simple other ways) desirable.

Problem is that few uses of \keepWithTag #'(fromgroupI fromgroupII) are
likely to intentionally invoke that behavior.  Indeed, in my most recent
score under work I find

   \keepWithTag layout,pizz %pause %,dingding

With layout and pizz being in different tag groups and the intent being
exactly to be equivalent to \keepWithTag layout \keepWithTag pizz .

So the question is whether retaining this subtle feature (not otherwise
available) is worth its price when not even the author of it is able to
remember how it applies in case anyone would ever need it.





tagGroup question

2022-01-28 Thread Simon Albrecht

Dear list,

I have encountered some unexpected behaviour with tags and tagGroups. In 
the following example, I thought the two staffs should look the same, 
even without the \removeWithTag command, but they don’t:



\version "2.23.5"
% tested with 2.23.5 (guile2-build) and 2.22.0

\tagGroup sol,mi
\tagGroup withCClefs,noCClefs

\keepWithTag mi,noCClefs
%\removeWithTag withCClefs
<<
  {
    \tag mi,withCClefs \clef alto
    1
    \tag mi,noCClefs \clef bass
    1
  }
  {
    \tag withCClefs \clef alto
    1
    \tag noCClefs \clef bass
    1
  }
>>
%%


How come the other tagGroup interferes? Is this a bug?

Best, Simon




Re: ice-9 i18n string-locale-upcase

2022-01-18 Thread Simon Albrecht

On 18/01/2022 18:52, Jean Abou Samra wrote:

Because this is documentation for Guile 2
and current releases of LilyPond still have
Guile 1.8.



Thanks for the speedy reply! I wasn’t sure whether the switch to Guile 2 
had already been made. I got it to work with the experimental binary you 
linked to, albeit only after fixing the actual code (see bottom for the 
revised example).


Backwards compatibility would be great, so I still ask: Do you or does 
anyone know whether similar functionality is available for Guile 1.8? 
Although I’m aware that character handling is a major difference between 
the versions, so I wouldn’t be surprised if not.


Best regards
Simon




[openLilyLib] oll-core incompatible with Guile 2.2

2022-01-18 Thread Simon Albrecht

Dear list,

I have started using the experimental 2.23.5 build with Guile 2.2 [1] 
and it turns out to be incompatible with the core of openLilyLib.


Here are the error messages I got—it may be that only the first is relevant:

%%
/home/simon/openlilylib/oll-core/internal/init.ily:46:2: error: GUILE 
signaled an error for the expression beginning here

#
 (use-modules
Omitting the destination on a call to format is deprecated.
Pass #f as the destination, before the format string.
Unbound variable: use-syntax
/home/simon/openlilylib/oll-core/internal/init.ily:59:1: error: unknown 
escaped string: `\registerOption'


\registerOption #'(_propsets) #'()
/home/simon/openlilylib/oll-core/internal/init.ily:59:17: error: syntax 
error, unexpected SCM_TOKEN, expecting '.' or '='

\registerOption
    #'(_propsets) #'()
/home/simon/openlilylib/oll-core/internal/init.ily:60:1: error: unknown 
escaped string: `\definePropertySet'


\definePropertySet #'(OLL global) #'()
/home/simon/openlilylib/oll-core/internal/init.ily:60:20: error: syntax 
error, unexpected SCM_TOKEN, expecting '.' or '='

\definePropertySet
   #'(OLL global) #'()
/home/simon/openlilylib/oll-core/internal/init.ily:63:1: error: unknown 
escaped string: `\registerOption'


\registerOption oll-core.root #(this-parent)
/home/simon/openlilylib/oll-core/internal/init.ily:63:17: error: syntax 
error, unexpected SYMBOL, expecting '.' or '='

\registerOption
    oll-core.root #(this-parent)
/home/simon/openlilylib/oll-core/internal/init.ily:63:31: error: syntax 
error, unexpected SCM_TOKEN, expecting '='

\registerOption oll-core.root
  #(this-parent)
/home/simon/openlilylib/oll-core/internal/init.ily:66:1: error: unknown 
escaped string: `\registerOption'


\registerOption loaded-packages #'(oll-core)
/home/simon/openlilylib/oll-core/internal/init.ily:67:1: error: unknown 
escaped string: `\registerOption'


\registerOption loaded-modules.oll-core #'()
/home/simon/openlilylib/oll-core/internal/init.ily:67:41: error: syntax 
error, unexpected SCM_TOKEN, expecting '='

\registerOption loaded-modules.oll-core
    #'()
/home/simon/openlilylib/oll-core/internal/init.ily:79:1: error: unknown 
escaped string: `\setLogLevel'


\setLogLevel log
ERROR: In procedure %resolve-variable:
Unbound variable: getOption
%%

I would have to delve in order to find the root of the error and solve 
the problem, which I don’t really have time for, unless I must…


Can someone help me out?

Best regards
Simon

[1] https://lists.gnu.org/archive/html/lilypond-devel/2021-12/msg7.html




Re: [openLilyLib] oll-core incompatible with Guile 2.2

2022-01-18 Thread Simon Albrecht

https://github.com/openlilylib/oll-core/issues/62

On 18/01/2022 20:43, Simon Albrecht wrote:
I have started using the experimental 2.23.5 build with Guile 2.2 [1] 
and it turns out to be incompatible with the core of openLilyLib.


Here are the error messages I got—it may be that only the first is 
relevant:


%%
/home/simon/openlilylib/oll-core/internal/init.ily:46:2: error: GUILE 
signaled an error for the expression beginning here

#
 (use-modules
Omitting the destination on a call to format is deprecated.
Pass #f as the destination, before the format string.
Unbound variable: use-syntax
/home/simon/openlilylib/oll-core/internal/init.ily:59:1: error: 
unknown escaped string: `\registerOption'


\registerOption #'(_propsets) #'()
/home/simon/openlilylib/oll-core/internal/init.ily:59:17: error: 
syntax error, unexpected SCM_TOKEN, expecting '.' or '='

\registerOption
    #'(_propsets) #'()
/home/simon/openlilylib/oll-core/internal/init.ily:60:1: error: 
unknown escaped string: `\definePropertySet'


\definePropertySet #'(OLL global) #'()
/home/simon/openlilylib/oll-core/internal/init.ily:60:20: error: 
syntax error, unexpected SCM_TOKEN, expecting '.' or '='

\definePropertySet
   #'(OLL global) #'()
/home/simon/openlilylib/oll-core/internal/init.ily:63:1: error: 
unknown escaped string: `\registerOption'


\registerOption oll-core.root #(this-parent)
/home/simon/openlilylib/oll-core/internal/init.ily:63:17: error: 
syntax error, unexpected SYMBOL, expecting '.' or '='

\registerOption
    oll-core.root #(this-parent)
/home/simon/openlilylib/oll-core/internal/init.ily:63:31: error: 
syntax error, unexpected SCM_TOKEN, expecting '='

\registerOption oll-core.root
  #(this-parent)
/home/simon/openlilylib/oll-core/internal/init.ily:66:1: error: 
unknown escaped string: `\registerOption'


\registerOption loaded-packages #'(oll-core)
/home/simon/openlilylib/oll-core/internal/init.ily:67:1: error: 
unknown escaped string: `\registerOption'


\registerOption loaded-modules.oll-core #'()
/home/simon/openlilylib/oll-core/internal/init.ily:67:41: error: 
syntax error, unexpected SCM_TOKEN, expecting '='

\registerOption loaded-modules.oll-core
    #'()
/home/simon/openlilylib/oll-core/internal/init.ily:79:1: error: 
unknown escaped string: `\setLogLevel'


\setLogLevel log
ERROR: In procedure %resolve-variable:
Unbound variable: getOption
%% 




ice-9 i18n string-locale-upcase

2022-01-18 Thread Simon Albrecht

Hi everyone,

I wanted to set up some customisable headings using #(string-upcase 
"string"), but it doesn’t work on German umlauts, so I came upon 
string-locale-upcase on this page:


https://www.gnu.org/software/guile/docs/docs-2.2/guile-ref/Character-Case-Mapping.html#Character-Case-Mapping

However, I can’t get it to work. To this example file:


\version "2.23.5"
#(use-modules (ice-9 i18n))
\markup \column {
  #(string-upcase "üß")
  #(string-locale-upcase "üß" "de_DE")
}


Guile says: “no code for module (ice-9 i18n)”.

Why? Can I load the module another way? Will it do what I want? Should I 
use another tool? ;-)


Thanks in advance,
Simon




Weird interference between OLL, input mode, note name language

2021-12-04 Thread Simon Albrecht

Hi everyone,

I have had a very weird error pop up, which doesn’t appear to be related 
to a specific LilyPond version, nor was it triggered by any recent 
update to OLL (though I’m using chordmode very rarely):


In the following snippet,after loading the core package loader from 
openLilyLib,Lily won’t recognise the changed note name language inside 
any explicit input mode.


%%
\version "2.23.5"

\language "deutsch"

\include "oll-core/package.ily"
<<
  \chordmode {
    h b % h isn’t understood
  }
  \notemode {
    h b % h isn’t understood
  }
  {
    h b % h is understood
  }
>>
%

I attach the package.ily file from openLilyLib—I can’t see anything in 
there which might cause this odd behaviour…


Best, Simon

%%%
% %
% This file is part of openLilyLib,   %
%  ===%
% the community library project for GNU LilyPond  %
% (https://github.com/openlilylib)%
%  ---%
% %
% Library: oll-core   %
%     %
% %
% openLilyLib is free software: you can redistribute it and/or modify %
% it under the terms of the GNU General Public License as published by%
% the Free Software Foundation, either version 3 of the License, or   %
% (at your option) any later version. %
% %
% openLilyLib is distributed in the hope that it will be useful,  %
% but WITHOUT ANY WARRANTY; without even the implied warranty of  %
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   %
% GNU General Public License for more details.%
% %
% You should have received a copy of the GNU General Public License   %
% along with openLilyLib. If not, see . %
% %
% openLilyLib is maintained by Urs Liska, u...@openlilylib.org  
%
% and others. %
%   Copyright Urs Liska, 2016 %
% %
%%%

% This is the main entry file for openLilyLib.
% To use openLilyLib this file has to be in LilyPond's include path.
% including this file with
% \include "openlilylib.ily"
% will initialize openLilyLib and make the library management available
% as well as significant utility functionality.
%
% This does several things:
% - defines a global variable 'openlilylib-root
%   which is the absolute path to the root of openLilyLib
%   (the parent of the folder this file is located in)
% - adds openlilylib-root to Scheme's module path
% - adds library/module handling support
% - adds option handling
% - adds logging tools
% - adds miscellaneous helper functionality (e.g. version predicates)

% We won't support 2.18 anymore as there are simply too many
% substantial improvements in the 2.19 branch starting from 2.19.22.
\version "2.20.0"

#(ly:set-option 'relative-includes #t)

% Initialize oll-core *once*
#(if (null? (ly:parser-lookup 'openlilylib-root))
 (let*
  ((this (car (ly:input-file-line-char-column (*location*
   (path (string-split this #\/))
   (oll-root (list-head path (- (length path) 2)))
   (scheme-path (append oll-root '("oll-core" "scheme")))
   )
  ;; Add openLilyLib root to Guile path
  ;; (enable packages to load Scheme modules through )
  (set! %load-path `(,(string-join oll-root "/") ,@%load-path))
  ;; store root path as a marker that oll-core has been loaded
  (ly:parser-define! 'openlilylib-root oll-root)
  (ly:parser-include-string "\\include \"oll-core/internal/init.ily\"")))


Re: lyric-syllable-magnetic-snap stopped working in 2.23.5—meta.classes error

2021-12-04 Thread Simon Albrecht

Dear Jean,

amazing, thanks a lot!

Best, Simon

On 03/12/2021 14:03, Jean Abou Samra wrote:
Please find attached an updated version. 




lyric-syllable-magnetic-snap stopped working in 2.23.5—meta.classes error

2021-12-03 Thread Simon Albrecht

Dear list,

I’ve just upgraded to 2.23.5 from 2.23.3 and when I now use the attached 
library file, I get this error message in my log:


Interpreting music... fatal error: meta.classes must be non-empty list, 
found #f Exited with return code 1.


Can someone help with fixing it?

Thanks in advance and best regards Simon

\version "2.19.82"

%% CHANGE-LOG harm ()
%%
%% line 52:
%% map becomes for-each
%%
%% line 133:
%% typo in comment
%%
%% lines 234 ff, 260:
%% exclude line-starting LyricHyphen

\header {
  snippet-title = "Magnetic snapping lyric syllables"
  snippet-author = "David Nalesnik, Mike Solomon, harm"
  % snippet-source = 
"http://lists.gnu.org/archive/html/lilypond-user/2014-03/msg00489.html;
  snippet-source = "see 
https://lists.gnu.org/archive/html/lilypond-user/2019-05/msg00388.html;
  snippet-description = \markup {
This snippet handles lyric syllables that belong to one word together
and ensures that there are no irritating gaps between them (solves issue 
2458).
  }
  % add comma-separated tags to make searching more effective:
  tags = "lyrics, syllable, gap, hyphen"
  % is this snippet ready?  See meta/status-values.md
  status = "undecided"
}

%%
% here goes the snippet: %
%%

% ADD NEW GROB INTERFACE %%

#(ly:add-interface
  'lyric-word-interface
  "A word of lyrics. Includes syllables and hyphens."
  '(text-items))

%%%

% CREATE NEW GROB PROPERTY 

#(define (define-grob-property symbol type? description)
   (if (not (equal? (object-property symbol 'backend-doc) #f))
   (ly:error (_ "symbol ~S redefined") symbol))

   (set-object-property! symbol 'backend-type? type?)
   (set-object-property! symbol 'backend-doc description)
   symbol)

%% harm:
#(for-each
  (lambda (x)
(apply define-grob-property x))

  `(
 (text-items ,list? "Syllables and hyphens of a word of lyrics")))

%%%

 ADD DEFINITION OF GROB %%%

#(define (add-grob-definition grob-name grob-entry)
   (let* ((meta-entry   (assoc-get 'meta grob-entry))
  (class(assoc-get 'class meta-entry))
  (ifaces-entry (assoc-get 'interfaces meta-entry)))
 (set-object-property! grob-name 'translation-type? ly:grob-properties?)
 (set-object-property! grob-name 'is-grob? #t)
 (set! ifaces-entry (append (case class
  ((Item) '(item-interface))
  ((Spanner) '(spanner-interface))
  ((Paper_column) '((item-interface
 paper-column-interface)))
  ((System) '((system-interface
   spanner-interface)))
  (else '(unknown-interface)))
  ifaces-entry))
 (set! ifaces-entry (uniq-list (sort ifaces-entry symbol (interval-length hyphen-ex) threshold)
 '() ; no compression--DO NOTHING!

 (let*
  ((syl-a-text (ly:grob-property syl-a 'text))
   (syl-a-text (if (markup? syl-a-text) syl-a-text (markup syl-a-text)))
   (syl-b-text (ly:grob-property syl-b 'text))
   (syl-b-text (if (markup? syl-b-text) syl-b-text (markup syl-b-text)))
   (full-text (make-concat-markup (list syl-a-text syl-b-text

  (set! (ly:grob-property syl-a 'text) full-text)
  (set! (ly:grob-property syl-b 'text) empty-markup)
  (set! (ly:grob-property syl-a 'stencil) lyric-text::print)
  (set! (ly:grob-property syl-b 'stencil) lyric-text::print)
  (set! (ly:grob-property hyphen 'stencil) empty-stencil)

#(define (lyric-word-compressor threshold)
   (lambda (grob) ; LyricWord
 (let* ((items (ly:grob-object grob 'text-items))
(item-list (ly:grob-array->list items)))
   (if (> (length item-list) 1) ; do nothing to monosyllabic words
   (let* ((text-grobs
   (filter
(lambda (item)
  (grob::has-interface item 'lyric-syllable-interface))
item-list))
  (hyphen-grobs
   (filter
(lambda (item)
  (grob::has-interface item 'lyric-hyphen-interface))
item-list)))

 (define (helper seed tx-list hy-list)
   (if (and (pair? (cdr tx-list))
(pair? hy-list))
   (let ((next-syl (cadr tx-list))
 (hyphen (car hy-list)))
 (compress-pair seed hyphen next-syl threshold)
 (if (equal? empty-markup 

Re: Feature request: Alternative G clef

2020-10-24 Thread Simon Albrecht

Hi Martín,

On 24.10.20 11:47, Martín Rincón Botero wrote:
I wish Perol-Schneider's clef could be considered for inclusion into 
standard Lilypond, possibly named as "G2" (which would actually 
produce a "second" G clef) or as \clef varG.



two things here: there has been a lot of work to making LilyPond work 
with other music fonts. This seems like it doesn’t have to do with any 
syntactic differentiation but merely with design choices (well, \clef 
"GG" and "tenorG" at least hold some residue of suggesting another 
stylistic context/hinting at the transposing nature). Hence I wouldn’t 
think it should be added concurrently to the LilyPond core.


The naming of \clef "G2" doesn’t mean ‘second G clef’ or ‘alternative’, 
but it means ‘a G clef sitting on the 2nd staff line’ (staff lines 
traditionally being counted from the bottom up). In ancient music, it’s 
customary e.g. to describe the clefs used in a piece as “G2, C2, C3, 
F3”, meaning treble, mezzosoprano, alto, and baritone clefs.


Best, Simon




Re: Once for all and one last time (was Future of openLilyLib)

2020-10-10 Thread Simon Albrecht

There’s no such thing as retracting an e-mail, but I would like to do it.

Sorry for failing to realise how old the thread was before replying.

Best, Simon

On 10.10.20 14:11, Simon Albrecht wrote:

Dear Karsten and list,

On 22.09.20 22:40, Karsten Reincke wrote:
5) I've learned, that all(?) of you consider this an untenable if not 
silly position and that the PDFs and midi-files compiled by Lilypond 
are never affected by the strong copyleft effect of the GPL. That's 
good to hear. But I don't understand, why - under this circumstances 
- it should be garbage to add a respective clarifying statement (the 
'include clause' or however you want to name it), if it is at least 
partially conceivable that such a position will be taken and if all 
of you do not want to use / establish its consequences. But that's my 
problem. 



I would like to join in asking this question, namely what’s the reason 
not to add such an ‘include clause’? (Am I correct in gathering that 
LGPL basically means GPL + such an include clause?)


Best,
Simon






Re: Once for all and one last time (was Future of openLilyLib)

2020-10-10 Thread Simon Albrecht

Dear Karsten and list,

On 22.09.20 22:40, Karsten Reincke wrote:
5) I've learned, that all(?) of you consider this an untenable if not 
silly position and that the PDFs and midi-files compiled by Lilypond 
are never affected by the strong copyleft effect of the GPL. That's 
good to hear. But I don't understand, why - under this circumstances - 
it should be garbage to add a respective clarifying statement (the 
'include clause' or however you want to name it), if it is at least 
partially conceivable that such a position will be taken and if all of 
you do not want to use / establish its consequences. But that's my 
problem. 



I would like to join in asking this question, namely what’s the reason 
not to add such an ‘include clause’? (Am I correct in gathering that 
LGPL basically means GPL + such an include clause?)


Best,
Simon




Re: 2.21 and OLL

2020-07-16 Thread Simon Albrecht

On 16.07.20 23:27, Urs Liska wrote:

I could not reproduce this with 2.21.3, which I just downloaded. Could
you please try that too? If it's something that was present from 2.21.0
to 2.21.2 but not now anymore I wouldn't bother investigating more
closely.


Of course. And indeed, neither 2.20.0 nor 2.21.3 exhibit the problem.

Thanks and best regards to Freiburg,
Simon




Re: 2.21 and OLL

2020-07-16 Thread Simon Albrecht

Hi Urs et al.,

On 15.07.20 08:15, Urs Liska wrote:

MWE please, and the error message.


This one is very minimal :-)

 \version "2.21.0" \include "oll-core/package.ily" 



=>

Starting lilypond 2.21.0 [Untitled]... Processing 
`/tmp/frescobaldi-ux6dspgj/tmpa64z83u_/document.ly' Parsing... 
/home/simon/openlilylib/oll-core/package.ily:57:2: error: GUILE signaled 
an error for the expression beginning here # (if (not (defined? 
'openlilylib-root)) Value out of range 0 to 18446744073709551615: -1 
fatal error: failed files: 
"/tmp/frescobaldi-ux6dspgj/tmpa64z83u_/document.ly" Exited with return 
code 1.


Best, Simon




2.21 and OLL

2020-07-14 Thread Simon Albrecht

Hello everybody,

apologies if the question is redundant—I haven’t been able to follow the 
lists recently.


With 2.21.0, I have GUILE throwing an error message for 
oll-core/package.ily:57 that doesn’t appear with 2.19.84.


Is that a known problem? Should I try isolating it?

Best, Simon




Re: GS problem with Lily 2.21.0

2020-04-19 Thread Simon Albrecht

On 18.04.20 09:05, Urs Liska wrote:

Which gets back to my question: how did you invoke it, do you run LilyPond from 
Frescobaldi?



Yes, and somehow when adding 2.20.0 and 2.21.0 to the ‘Preferences > 
LilyPond preferences’ dialogue I went down to the lilypond/usr/bin/ 
subdirectory instead of just bin/—as I correctly did with all previous 
versions…


Best, Simon




Re: GS problem with Lily 2.21.0

2020-04-19 Thread Simon Albrecht

On 18.04.20 09:01, Jonas Hahnfeld wrote:

To address the original problem you should invoke lilypond via the
wrapper script /usr/local/lilypond-2.21.0/bin/lilypond
instead of using the the directly binary from
/usr/local/lilypond-2.21.0/lilypond/usr/bin/lilypond.



Thanks, Jonas, for the explanations and the solution. That did it. 
Whatever lead me to make that mistake… probably just inattentiveness.


Best, Simon




Re: GS problem with Lily 2.21.0

2020-04-17 Thread Simon Albrecht

On 16.04.20 20:15, Timothy Lanfear wrote:

On my machine

/usr/local/lilypond-2.21.0/lilypond/usr/bin/gs --version returns 9.26, 
conflicting with 
/usr/local/lilypond-2.21.0/lilypond/usr/share/ghostscript/9.21


I hadn't noticed because I run my distribution's gs not Lilypond's. A 
packaging error somewhere? 



Well spotted! That’s the case for both my 2.20.0 and 2.21.0, which I 
installed unaltered directly from the website. I’ll ask about that on 
-devel.


Best, Simon




Re: GS problem with Lily 2.21.0

2020-04-17 Thread Simon Albrecht

On 16.04.20 18:09, Mats Bengtsson wrote:


On 4/16/20 2:46 PM, Simon Albrecht wrote:

Hello everyone,

I’m having a problem with my newly installed Lilypond versions 2.20.0 
and 2.21.0: Any compilation I start aborts while GS tries writing a PDF.


I installed both versions yesterday, and the first tests were 
successful, before this problem came up. Inbetween I mounted and 
unmounted an SD card.


Any clues for how to investigate/proceed? A complete, verbose log is 
found below. 


I hope you don't find this question insulting,


Only in the slightest ;-)


but you didn't by chance have the PDF files open in Adobe reader or 
some other PDF viewer that locks the file? If so, the simple solution 
is to close the PDF file before trying to run Lilypond.


If not, it might help others to provide debugging hints if you tell 
what operating system you use.



I’m using Ubuntu 18, so that’s definitely not the reason.

Best, Simon




GS problem with Lily 2.21.0

2020-04-16 Thread Simon Albrecht

Hello everyone,

I’m having a problem with my newly installed Lilypond versions 2.20.0 
and 2.21.0: Any compilation I start aborts while GS tries writing a PDF.


I installed both versions yesterday, and the first tests were 
successful, before this problem came up. Inbetween I mounted and 
unmounted an SD card.


Any clues for how to investigate/proceed? A complete, verbose log is 
found below.


Best, Simon

%%

Starting lilypond 2.21.0 [bug.ly]...

Log level set to 287

Relocation

LilyPond binary has absolute file name:

/home/simon/lilypond/2.21.0/lilypond/usr/bin/lilypond

Setting INSTALLER_PREFIX to '/home/simon/lilypond/2.21.0/lilypond/usr'

Using run-time value for datadir,

setting it to 
'/home/simon/lilypond/2.21.0/lilypond/usr/share/lilypond/current'


Using run-time value for localedir,

setting it to '/home/simon/lilypond/2.21.0/lilypond/usr/share/locale'

Using run-time value for relocdir,

setting it to '/home/simon/lilypond/2.21.0/lilypond/usr/etc/relocate'

Using relocation config directory 
'/home/simon/lilypond/2.21.0/lilypond/usr/etc/relocate'


Relocation file 
'/home/simon/lilypond/2.21.0/lilypond/usr/etc/relocate/fontconfig.reloc'


Setting FONTCONFIG_FILE to 
'/home/simon/lilypond/2.21.0/lilypond/usr/etc/fonts/fonts.conf'


Setting FONTCONFIG_PATH to 
'/home/simon/lilypond/2.21.0/lilypond/usr/etc/fonts'


Relocation file 
'/home/simon/lilypond/2.21.0/lilypond/usr/etc/relocate/gs.reloc'


warning: No such directory 
'/home/simon/lilypond/2.21.0/lilypond/usr/share/ghostscript/9.21/fonts' 
for GS_FONTPATH


warning: No such directory 
'/home/simon/lilypond/2.21.0/lilypond/usr/share/gs/fonts' for GS_FONTPATH


Prepending 
'/home/simon/lilypond/2.21.0/lilypond/usr/share/ghostscript/9.21/Resource' 
to GS_LIB


Setting GS_LIB to 
'/home/simon/lilypond/2.21.0/lilypond/usr/share/ghostscript/9.21/Resource'


Prepending 
'/home/simon/lilypond/2.21.0/lilypond/usr/share/ghostscript/9.21/Resource/Init' 
to GS_LIB


Setting GS_LIB to 
'/home/simon/lilypond/2.21.0/lilypond/usr/share/ghostscript/9.21/Resource/Init:/home/simon/lilypond/2.21.0/lilypond/usr/share/ghostscript/9.21/Resource'


Relocation file 
'/home/simon/lilypond/2.21.0/lilypond/usr/etc/relocate/guile.reloc'


Prepending '/home/simon/lilypond/2.21.0/lilypond/usr/share/guile/1.8' to 
GUILE_LOAD_PATH


Setting GUILE_LOAD_PATH to 
'/home/simon/lilypond/2.21.0/lilypond/usr/share/guile/1.8'


Prepending '/home/simon/lilypond/2.21.0/lilypond/usr/bin' to PATH

Setting PATH to 
'/home/simon/lilypond/2.21.0/lilypond/usr/bin:/home/simon/bin:/home/simon/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin'


Setting GUILE_MIN_YIELD_1 to '65'

Setting GUILE_MIN_YIELD_2 to '65'

Setting GUILE_MIN_YIELD_MALLOC to '65'

Setting GUILE_INIT_SEGMENT_SIZE_1 to '10485760'

Setting GUILE_MAX_SEGMENT_SIZE to '104857600'

Effective prefix: 
'/home/simon/lilypond/2.21.0/lilypond/usr/share/lilypond/current'


FONTCONFIG_FILE="/home/simon/lilypond/2.21.0/lilypond/usr/etc/fonts/fonts.conf"

FONTCONFIG_PATH="/home/simon/lilypond/2.21.0/lilypond/usr/etc/fonts"

GS_LIB="/home/simon/lilypond/2.21.0/lilypond/usr/share/ghostscript/9.21/Resource/Init:/home/simon/lilypond/2.21.0/lilypond/usr/share/ghostscript/9.21/Resource"

GUILE_LOAD_PATH="/home/simon/lilypond/2.21.0/lilypond/usr/share/guile/1.8"

PATH="/home/simon/lilypond/2.21.0/lilypond/usr/bin:/home/simon/bin:/home/simon/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"

[]

Guile 1.8

[/home/simon/lilypond/2.21.0/lilypond/usr/share/lilypond/current/scm/lily-library.scm]

[/home/simon/lilypond/2.21.0/lilypond/usr/share/lilypond/current/scm/output-lib.scm]

[/home/simon/lilypond/2.21.0/lilypond/usr/share/lilypond/current/scm/markup-macros.scm]

[/home/simon/lilypond/2.21.0/lilypond/usr/share/lilypond/current/scm/parser-ly-from-scheme.scm]

[/home/simon/lilypond/2.21.0/lilypond/usr/share/lilypond/current/scm/file-cache.scm]

[/home/simon/lilypond/2.21.0/lilypond/usr/share/lilypond/current/scm/define-event-classes.scm]

[/home/simon/lilypond/2.21.0/lilypond/usr/share/lilypond/current/scm/define-music-callbacks.scm]

[/home/simon/lilypond/2.21.0/lilypond/usr/share/lilypond/current/scm/define-music-types.scm]

[/home/simon/lilypond/2.21.0/lilypond/usr/share/lilypond/current/scm/define-note-names.scm]

[/home/simon/lilypond/2.21.0/lilypond/usr/share/lilypond/current/scm/c++.scm]

[/home/simon/lilypond/2.21.0/lilypond/usr/share/lilypond/current/scm/chord-entry.scm]

[/home/simon/lilypond/2.21.0/lilypond/usr/share/lilypond/current/scm/skyline.scm]

[/home/simon/lilypond/2.21.0/lilypond/usr/share/lilypond/current/scm/markup.scm]

[/home/simon/lilypond/2.21.0/lilypond/usr/share/lilypond/current/scm/define-markup-commands.scm]

[/home/simon/lilypond/2.21.0/lilypond/usr/share/lilypond/current/scm/stencil.scm]


Re: Re: An exciting new release… of Sibelius!!!

2020-03-29 Thread Simon Albrecht
Let's be honest, they really had to get their stuff together to keep any ground 
all against Dorico.

Best, Simon

> On 27.03.2020 - 15:26, Shane Brandes wrote:
>
>
> They are really on the ball on that one. 
> 
> 
> -Shane
> 
> 
> On Fri, Mar 27, 2020 at 10:09 AM Valentin Villenave  
> wrote:
> 
> Hi everybody,
> I know it’s off-topic but I wanted to share the news because, let’s be
> honest, nobody in their right mind would want to miss it:
> Yes!  It’s finally here!  The latest and brightest version of Sibelius
> is out…  *And* it offers one particularly exciting, exclusive new
> feature:
> https://is.gd/x16C0B
> 
> … Oh wait, that’s the wrong link.  There you go:
> https://is.gd/ussdKG
> 
> Seriously guys, how cool is that??
> 
> Cheers,
> V.




Re: openLilyLib website

2020-02-23 Thread Simon Albrecht

Hi Urs,

this looks great! As often, I can’t offer much more than applause and 
some nitpicking…


On the ‘About LilyPond’ I’d rather write “GNU LilyPond is a music 
notation program /strongly inspired by/ traditional craftsmanship”. 
After all, the process of working with LilyPond doesn’t resemble 
traditional craftsmanship at all…


The use of the word ‘domain’ in the About/LilyPond and /openLilyLib 
seems quite technical considering IIUC the site is supposed to be read 
also by people without a background in software development…


‘Get started/Install openLilyLib’ has an instance of [oll-core} that 
seems unintentional.


s/documenation/documentation

… but generally, the texts seem very appropriate and useful :-)

Very best regards
Simon

On 20.02.20 22:44, Urs Liska wrote:

Hi all,

as a starting point for a - hopefully - comprehensive documentation
effort I have finally updated https://openlilylib.org with a completely
new website, which I'd like to have some feedback about and
contributions for.

There are several parts to that effort, most of which are essentially
not started yet.

  * A general introduction website. This is basically complete and
should finally give a proper introduction about what OLL "is" and
how it can be made to work
  * Independent sub-sites for each OLL package. These have not been
written at all, only the links to empty starting pages work without
404 errors.
  * I've settled with MkDocs (https://www.mkdocs.org), which seems to
provide what I need, especially a suitable way to hook into and
extend to our needs.
  * Each sub-site is maintained in a separate Git repository and
included as a Git submodule, so it should be straightforward to
manage independent authoring of the documentation by the respective
package maintainers.
  * There's a link to a contributor's guide, which is also essentially
empty, except for an entry page.

What I have so far is an infrastructure for textual, Markdown-authored
manuals, although I have already created a plugin for LilyPond syntax
highlighting using python-ly (
https://github.com/uliska/markdown-lilypond/).

What I really *want* to have but have no idea so far how to achieve is
additional code/API documentation retrieved from the actual source
files. There should be a tool to retrieve that from comments (or actual
signatures?), resulting in either HTML or Markdown documentation that
can be automatically integrated in the "manual-style" documentation.

Best
Urs






Re: [Scheme coding] turning a list into a markup/string

2020-01-22 Thread Simon Albrecht

On 21.01.20 22:05, Kieren MacMillan wrote:

I’m pretty sure I would have taken quite a while to find my way to 
"make-simple-markup"



Note that

(make-simple-markup "foo")

is equivalent to

(markup #:simple "foo")

in other words it’s the spelled-out version of what’s usually accessed 
through the markup macro in Scheme.


HTH, Simon




Re: Unusual cross-staff stem in Bartók

2020-01-20 Thread Simon Albrecht

On 14.01.20 18:15, Arle Lommel wrote:
Why Bartók didn’t simply show the bottom D in the treble clef is an 
interesting question. I think he was trying to keep the relationship 
between the hands clear, but couldn’t quite include the upper D in a 
way that made sense without splitting it like this. Had he put the 
lower D in the treble clef where it more apparently belongs, it might 
have led to confusion about which hand was to play it.


To me the question would be why these two chords can’t be all stem-down, 
i.e. with the beam within or below the lower staff. That would put the 
noteheads on the same side and allow for using common constructs.


Best, Simon




Re: Override a StaffSymbol property outside \new Staff { ... } context

2020-01-16 Thread Simon Albrecht

Hi Paolo,

it seems like you have some very specific setup of lilypond files and 
framework and need a solution that works within that, but you’re trying 
to avoid explaining the whole setup either because it’s too much effort 
or for privacy or similar. From my experience, when I get into that kind 
of situation I have usually ended up in some kind of ‘rabbit hole’ and 
the problem would be easier solved with a different setup in the first 
place.


Can you describe the reason why you need this?

Best, Simon

On 16.01.20 03:41, Paolo Prete wrote:
I need to override a property of StaffSymbol, for every staff, outside 
any music expression/block context. Probably I'm not using the right 
words even now.
But what I need is a sort of a "global" variable which is set for any 
staff without having to put it into some music expression (like 
\layout {\context {...}} , or \new Staff \with { ... } etc.).

This is why I asked if is there a Scheme solution




Re: ANN: LilyJSSVG, first pre-release (BIG improvement)

2020-01-06 Thread Simon Albrecht

Hi Paolo,

On 05.01.20 23:32, Paolo Prete wrote:

https://github.com/paolo-prete/LilyJSSVG/blob/master/LilyJSSVG.ogv



it seems like github can’t display the video—even the ‘raw’ option shows 
a zero-length video.


Best, Simon




Re: QtWebEngine vs. Ubuntu 16.04

2020-01-03 Thread Simon Albrecht

On 03.01.20 14:25, Wols Lists wrote:

On 29/12/19 04:30, Simon Albrecht wrote:

thanks for the reply. I have learned from painful experience that it
seems better to just reinstall the OS completely, avoiding any issues
with the upgrade, and restore user data from backup. I have made all
preparations for that and am trying to do it (freshly install 18.04).

In that case, if you haven't already, make sure you put /home on its own
partition. That will make things a lot easier as the re-install won't go
anywhere near your home directories ...



Thanks for the reply—seems like I forgot reporting my success. It turns 
out that last time around I did set up some things in a way that made 
re-installing the OS easier, including a separate home partition. After 
finding that the snap software manager should be avoided at all cost I’m 
pretty well off now.


Best, Simon




Re: Score Wizard Fresco 3.1

2020-01-02 Thread Simon Albrecht

On 02.01.20 13:19, Peter Gentry wrote:

Date: Wed, 1 Jan 2020 17:31:10 -0700 (MST)
From: Michael Rivers

The score wizard does nothing for me in Frescobaldi 3.1 (Windows version). I
uninstalled it and reinstalled the old version, whose score wizard works
fine.

If you mean the \score{...} option in Snippets then it works fine for me.



That’s not the score wizard.

Best, Simon




Re: nudging a note

2019-12-31 Thread Simon Albrecht

Hi Mark,

another low-maintenance solution would be:

<<
  { %{ notes for top voice %} }
  \\
  { %{ notes for bottom voice %} }
  \\ \\ % NB!
  { %{ notes for middle voice %} }
>>

Best, Simon

On 31.12.19 07:09, Mark Stephen Mrotek wrote:


Hello to All

Please provide some suggestions/alternatives for the positioning of 
the first note of the middle voice.


Thank you and Happy New Year!

Mark

\version "2.19.83"

\relative c' {

 <<{c'2~ c8. dis16 e8. c16 | b2~ b8. dis16 e8. b16 |

   a2~ a8. b16 c8. a16}\\

  {e2 fis | dis e | cis dis}\\

  {\stemDown

    b'8. b16 a8. gis16 a2~ | a8. a16 g8. fis16 g2~ |

   g8. g16 fis8. e16 fis2}>>

}





Re: Frescobaldi doesn’t recognise python-ly

2019-12-30 Thread Simon Albrecht

On 30.12.19 18:11, Ralf Mattes wrote:

The most sensible explanation for that would be an error in the bash
file, so I attach it in case someone else can see one…

Where did you get this shell script from?
I tried to assemble it from the ‘echo’ calls in 
…

Shouldn' that read:

export  PYTHONPATH=~/python-ly:$PYTHONPATH

???



Obviously, yes. Thanks, that fixes it. I never read up on sh basics…

Best, Simon




Frescobaldi doesn’t recognise python-ly

2019-12-30 Thread Simon Albrecht

Hello everybody,

after upgrading to Ubuntu 18.04 I freshly installed Frescobaldi (and 
python-ly) according to the guide in the wiki (except for writing the 
~/bin/frescobaldi within gedit, because somehow the first echo line 
wouldn’t work… and I cloned both repos from github.com/frescobaldi/… 
instead of /wbsoft/…).


Now when I try to launch Frescobaldi, I get this error:

“We are sorry, but Frescobaldi can't run properly.

The python-ly package is not available or too old.

At least version 0.9.4 is required to run Frescobaldi.

If you did install python-ly correctly, please remove the old

ly package from the frescobaldi_app directory, or completely

remove and then reinstall Frescobaldi.”

The most sensible explanation for that would be an error in the bash 
file, so I attach it in case someone else can see one…


(I cloned the repos directly in the home directory, so ~/python-ly 
should be the correct location)


@Urs: Should the wiki guide be updated to point to the repos in the 
frescobaldi organisation instead of wbsoft?


Best, Simon

#!/bin/bash
PYTHONPATH=~/python-ly:$PYTHONPATH
python3 ~/frescobaldi/frescobaldi $@


Re: QtWebEngine vs. Ubuntu 16.04

2019-12-28 Thread Simon Albrecht

On 28.12.19 20:00, ma...@masonhock.com wrote:

On 12/28, Simon Albrecht wrote:

I want to spend as little time as possible on maintaining/upgrading
the OS. So I’m reluctant to ditch 16.04 just yet. Should I bite the
bullet and take the time to install 18.04?

18.04 has been out long enough that major bugs should have been worked
out by now.  Do you mostly stick to packages in the repo, or do you
often install third party packages?  The distro I use is Ubuntu-based,
and when I recently upgraded from 16.04 to 18.04 the only problems I ran
into were related to packages I had compiled from source and needed to
recompile against the upgraded system libraries.  You may also run into
issues if you have many PPAs added.  Otherwise, the upgrade should be
pretty smooth.


Does it make sense to skip 18 and wait for 20.04 in April?

I think for the smoothest upgrade process, upgrade to 18.04 and resolve
any issues that arise first, and then upgrade to 20.04 and resolve any
new issues.  The more things break at once, the harder it will be to
troubleshoot them.  You might also want to wait until 20.04 has been out
for a few months before you upgrade from 18.04 to 20.04.



Hi Mason,

thanks for the reply. I have learned from painful experience that it 
seems better to just reinstall the OS completely, avoiding any issues 
with the upgrade, and restore user data from backup. I have made all 
preparations for that and am trying to do it (freshly install 18.04).


In case you have an immediate idea why the machine might fail to boot 
into a live USB stick, please let me know—I’m going to try enabling USB 
legacy support in BIOS right now…


Best, Simon




Re: QtWebEngine vs. Ubuntu 16.04

2019-12-28 Thread Simon Albrecht

Hi everybody,

On 28.12.19 09:46, Urs Liska wrote:
Before upgrading to a newer OS it might be an option to use a current 
Qt/PyQt downloaded or compiled from somewhere. @Simon you could do us 
a huge favor by exploring that possibility and providing information 
about it for the Wiki. 


This is sort of a two part question, since I’m unsure whether to just 
upgrade (i.e. reinstall) the OS or figure out installing QtWebEngine in 
16.04.


I want to spend as little time as possible on maintaining/upgrading the 
OS. So I’m reluctant to ditch 16.04 just yet. Should I bite the bullet 
and take the time to install 18.04? Does it make sense to skip 18 and 
wait for 20.04 in April?


If I should try within 16.04, here’s some sites I checked out on a brief 
search:


 – 
the ppa mentioned there doesn’t exist anymore
 
– the answers here seem to suggest setting up a whole different route of 
installing Qt, which seems like overkill
 – this also seems like 
overkill if all I need is the ‘subpackage’ QtWebEngine


I’m sorry this is somewhat helpless on my part—I do these things far too 
rarely to get by sensibly…


Best, Simon




Re: ANN: Frescobaldi 3.1 has been released!

2019-12-27 Thread Simon Albrecht

On 27.12.19 17:10, Kevin Cole wrote:


If I'm installing on my machine, do I need QtWebEngine? (I can't
find that through Ubuntu Software, either.)


As to the Qt stuff, I find using synaptic ("sudo apt install 
synaptic") a bit more helpful than the Ubuntu Software installer. 
Slightly less friendly, but a hell of a lot more informative. For 
example, searching synaptic for "qtweb" reveals "libqt5webengine5" 
among other things.  That's what you would want, if you don't already 
have it.



I happen to have a little problem with that as well; here on my Ubuntu 
16.04 machine neither apt nor synaptic can find any variation of 
qtwebengine5. There are several variations of webkit or so, but that’s 
probably something different, right? What can I do?


Best, Simon




Re: ANN: Frescobaldi 3.1 has been released!

2019-12-27 Thread Simon Albrecht

Dear Frescobaldi devs,

that sounds absolutely great and I chime into thanking you a lot for 
this great software!


Best, Simon

On 27.12.19 11:20, Wilbert Berendsen wrote:

Dear Friends,

Frescobaldi 3.1 has been released! There are many new features.

Most notably:

- A new Fonts dialog to select fonts for text, and with more recent
   LilyPond versions, also for music.

- The Music View is completely rewritten under the hood. New
   possiblities:

   * Copy selected music to PDF, SVG or EPS in addition to PNG and JPG.

   * Zoom much deeper than ever before: thanks to tile-based rendering
 the Music View can zoom in virtually unlimited.

   * New layout modes: horizontal/vertical, continuous/non continuous,
 rotation, etc.

And there are many other little feature improvements and bug fixes.
Lastly, many improvements under the hood pave the way for new exiting
future possibilities, such as good multicore compile support, and
support for much more file formats in the Manuscript viewer etc.

I am very grateful to many co-developers that now contribute on a
regular basis: Urs Liska, Peter Bjuhr, and many others.

See all changes in the ChangeLog:
https://github.com/frescobaldi/frescobaldi/blob/master/ChangeLog

Download the source tarball at:
https://github.com/frescobaldi/frescobaldi/releases

Please give packagers some time to prepare Windows/MacOSX installers,
they will be announced when ready.

Note that Frescobaldi is now part of the GitHub organisation with the
same name :-) to reflect that I'm certainly not the only one managing
this project :-)

Note to distributors and users of a git checkout: the MO (Message
Object) files with the translations are not in git anymore, but they are
built manually before packaging a source tarball.See INSTALL. When
installing from the source tarball it is not needed to build the MO
files.

Other notes:

- A recent version of the poppler library is needed to make vector
   graphics drawing and copying in the Music View work well.

- Frescobaldi does not use QtWebkit anymore, but instead now depends on
   QtWebEngine and its related modules.

Thanks to ALL the translators and contributors!
Enjoy!
Merry Christmas and happy new year!

|_|  .  |) |) \./
| | /-\ |  |   |
' ''   ''  ''
  . .  _ |  |
  |\| |- \/\/
  ' '  ~
\./  _  .  |)
  |  |- /-\ |\
  '   ~'   '' '






  1   2   3   4   5   6   7   8   9   10   >