Re: Stop Emails directed to miguelabram...@gmail.com

2020-07-04 Thread Andrew Bernard

Here's how to do it. Standard for very many lists.

https://lists.gnu.org/mailman/listinfo/lilypond-user


On 5/07/2020 4:49 am, Miguel Abrams wrote:

Request to Unsubscribe from this mailing list

thank
Michael Abrams
miguelabram...@gmail.com 


Re: Double-stemming question.

2020-07-04 Thread Hwaen Ch'uqi
Greetings Carl,

Thank you for your explanation. What you say makes sense. I suppose I
would have liked an appearance where, at first glance, the second pair
of chords in the example do not look like four chords but two, like
the first two chords. Given that the entire piece is made up of these
gestures, one should fairly easily intuit that the chords with seconds
are in fact the same chords from upper to lower voice.

Thank you again.

Hwaen Ch'uqi


On 7/4/20, Carl Sorensen  wrote:
> On Sat, Jul 4, 2020 at 9:20 AM Hwaen Ch'uqi  wrote:
>
>> Greetings,
>>
>> In the following measure of code, there are several instances of
>> double-stemming. The single notes and triads merge correctly, but the
>> four-note chords do not. I feel like the reason and solution should be
>> straightforward, but I cannot seem to wrap my head around the
>> situation. Any help would be greatly appreciated. Please forgive the
>> slight length of the code. I have also attached the pdf output.
>>
>
> What would you like to have happen with double-stemming when the chord
> includes an interval of a second?
>
> For a chord not including a second, the stem is on the left side for a down
> stem and on the right side for an up stem.
>
> For a chord including a second, both the down stem and the up stem have the
> same position.  For a quarter-note or half-note chord, that notation would
> be confusing.  For an eighth-note or shorter chord, the flags or beams can
> show the direction of the stem.
>
> It seems to me that if you want to have a chord containing a second in two
> voices, the current LilyPond way of doing it is correct for quarter note or
> longer chords.  If there is a problem, it is that we might not need to do
> it that way for shorter chords.
>
> Carl
>



Stop Emails directed to miguelabram...@gmail.com

2020-07-04 Thread Miguel Abrams
Request to Unsubscribe from this mailing list

thank
Michael Abrams
miguelabram...@gmail.com


Re: Double-stemming question.

2020-07-04 Thread Carl Sorensen
On Sat, Jul 4, 2020 at 9:20 AM Hwaen Ch'uqi  wrote:

> Greetings,
>
> In the following measure of code, there are several instances of
> double-stemming. The single notes and triads merge correctly, but the
> four-note chords do not. I feel like the reason and solution should be
> straightforward, but I cannot seem to wrap my head around the
> situation. Any help would be greatly appreciated. Please forgive the
> slight length of the code. I have also attached the pdf output.
>

What would you like to have happen with double-stemming when the chord
includes an interval of a second?

For a chord not including a second, the stem is on the left side for a down
stem and on the right side for an up stem.

For a chord including a second, both the down stem and the up stem have the
same position.  For a quarter-note or half-note chord, that notation would
be confusing.  For an eighth-note or shorter chord, the flags or beams can
show the direction of the stem.

It seems to me that if you want to have a chord containing a second in two
voices, the current LilyPond way of doing it is correct for quarter note or
longer chords.  If there is a problem, it is that we might not need to do
it that way for shorter chords.

Carl


Re: Accidentals' font

2020-07-04 Thread Jamie Beardslee
Paolo Prete  writes:
> 1) Is there a GPL or open-source alternative for FETA fonts for
> accidentals that can be used with Lilypond?

Have a look through these repos: https://github.com/OpenLilyPondFonts

Instructions for using these fonts are available at
https://github.com/OpenLilyPondFonts/lilyjazz/blob/master/LilyPond-Fonts-Installation-And-Usage.txt

The gist is to use a paper block something like this after installing
the font in the appropriate place on your system:

--8<---cut here---start->8---
\paper {
  #(define fonts
(set-global-fonts
  #:music "mtf-beethoven"
  ))
}
--8<---cut here---end--->8---

--
Jamie




Re: Double-stemming question.

2020-07-04 Thread Lukas-Fabian Moser

Hi Hwaen,


The single notes and triads merge correctly, but the
four-note chords do not.


This seems to be a bug. The culprit is the combination of two notes a 
step apart (and you can see that they are aligned differently in both 
instances).


While I can't provide you with a solution right now, maybe the following 
minimal example helps:


\version "2.20.0"

\new Staff \fixed c'
<<
  {} \\
  {}
>>

Lukas

PS. As an aside: To be honest, I think that the triple-dots in the 
lowest voice, while perfectly correct, are overkill. Of course it's a 
matter of style and taste, but my feeling is that lots of composers 
(like Schumann for instance) would just have written a downwards stem 
without bothering to much about the mathematically correct length.





Double-stemming question.

2020-07-04 Thread Hwaen Ch'uqi
Greetings,

In the following measure of code, there are several instances of
double-stemming. The single notes and triads merge correctly, but the
four-note chords do not. I feel like the reason and solution should be
straightforward, but I cannot seem to wrap my head around the
situation. Any help would be greatly appreciated. Please forgive the
slight length of the code. I have also attached the pdf output.

Hwaen Ch'uqi

\version "2.20.0"

\score {
  \new PianoStaff <<
\new Staff = up {
  \relative c' {
\key gis \minor \time 4/4 \clef treble
<<
  {
\mergeDifferentlyHeadedOn
s8.. 32 4 s8.. 32
4
  }
  \\
  {
s1
  }
>>
  }
}
\new Staff = down {
  \relative c' {
\key gis \minor \time 4/4 \clef bass
<<
  {
\mergeDifferentlyHeadedOn
\mergeDifferentlyDottedOn
gis,,32 gis'' cis \change Staff = up \voiceTwo eis eis' cis gis'
  gis cis eis, gis, \change Staff = down
\voiceOne eis gis, gis,, gis gis'' dis' \change Staff = up \voiceTwo
fisis fisis' cis ais'   ais,
cis dis, ais \change Staff = down \voiceOne fisis gis, gis,,
  }
  \\
  {
gis4... gis32 gis4... gis32
  }
>>
  }
}
  >>
}


MWE.pdf
Description: Adobe PDF document


Re: Making markup functions parametric

2020-07-04 Thread David Kastrup
Lukas-Fabian Moser  writes:

>>> Of course I can do
>>>
>>> circlefunc = \markup\circle\etc
>>> \markup \test \circlefunc "whatever"
>> You can?  Have you tried?  \circlefunc here is quite equivalent to
>> \circle .
>
> Hm, I think I do not understand. With
>
> test =
> #(define-scheme-function (enclosure content)
>(markup-function? markup?)
>(list enclosure #{ \markup \box #content #}))
>
> I can do and compile
>
> \test \markup \circle \etc "whatever"
>
> as well as
>
> circlefunc = \markup\circle\etc
> \markup \test \circlefunc "whatever"
>
> but
>
> \markup \test \circle "whatever"
>
> fails with
>
> /tmp/frescobaldi-7l5ntq0c/tmp1iduvtxw/document.ly:8:15: Fehler: syntax
> error, unexpected MARKUP_FUNCTION, expecting \header
>
> \markup \test
>
> \circle "whatever"
>
> /tmp/frescobaldi-7l5ntq0c/tmp1iduvtxw/document.ly:8:33: Fehler:
> Haupt-Eingabe nicht beendet
>
> \markup \test \circle "whatever"
>
> schwerer Fehler: gescheiterte Dateien:
> "/tmp/frescobaldi-7l5ntq0c/tmp1iduvtxw/document.ly"
>
> So, I can't believe that \circlefunc and \circle should be actually
> equivalent.

Ah right, there is a difference.  They would be equivalent when writing

\markup circlefunc = \markup \circle \etc

The actually embedded markup function is the same, but it is packaged
differently.  You can get at the markup function part of the package by
using

test =
#(define-scheme-function (enclosure content)
  (markup-function? markup?)
  (list enclosure #{ \markup \box #content #}))

\markup \test \circle-markup "whatever"


Markups and their commands are an abomination.

-- 
David Kastrup


Re: Making markup functions parametric

2020-07-04 Thread Lukas-Fabian Moser

Of course I can do

circlefunc = \markup\circle\etc
\markup \test \circlefunc "whatever"

You can?  Have you tried?  \circlefunc here is quite equivalent to
\circle .


Hm, I think I do not understand. With

test =
#(define-scheme-function (enclosure content)
   (markup-function? markup?)
   (list enclosure #{ \markup \box #content #}))

I can do and compile

\test \markup \circle \etc "whatever"

as well as

circlefunc = \markup\circle\etc
\markup \test \circlefunc "whatever"

but

\markup \test \circle "whatever"

fails with

/tmp/frescobaldi-7l5ntq0c/tmp1iduvtxw/document.ly:8:15: Fehler: syntax 
error, unexpected MARKUP_FUNCTION, expecting \header


\markup \test

\circle "whatever"

/tmp/frescobaldi-7l5ntq0c/tmp1iduvtxw/document.ly:8:33: Fehler: 
Haupt-Eingabe nicht beendet


\markup \test \circle "whatever"

schwerer Fehler: gescheiterte Dateien: 
"/tmp/frescobaldi-7l5ntq0c/tmp1iduvtxw/document.ly"


So, I can't believe that \circlefunc and \circle should be actually 
equivalent.


Lukas



Re: Making markup functions parametric

2020-07-04 Thread David Kastrup
Lukas-Fabian Moser  writes:

> Hi David,
>
>> test =
>> #(define-scheme-function (enclosure content)
>>(markup-function? markup?)
>>(list enclosure #{ \markup \box #content #}))
>>
>> \markup \test \markup \circle \with-color #red \etc "whatever"
>
> Amazing, wonderfully elegant.
>
> Is there a way to avoid the second "\markup" and "\etc" in \markup
> \test \markup \box \etc "whatever" ?

No.

> Of course I can do
>
> circlefunc = \markup\circle\etc
> \markup \test \circlefunc "whatever"

You can?  Have you tried?  \circlefunc here is quite equivalent to
\circle .

-- 
David Kastrup



Re: Making markup functions parametric

2020-07-04 Thread Lukas-Fabian Moser

Hi David,


test =
#(define-scheme-function (enclosure content)
   (markup-function? markup?)
   (list enclosure #{ \markup \box #content #}))

\markup \test \markup \circle \with-color #red \etc "whatever"


Amazing, wonderfully elegant.

Is there a way to avoid the second "\markup" and "\etc" in \markup \test 
\markup \box \etc "whatever" ? Of course I can do


circlefunc = \markup\circle\etc
\markup \test \circlefunc "whatever"

but this requires an extra function definition, so it makes it harder to 
exchange \circle for something different. (In my own super-clumsy idea I 
could write \markup \test #'circle "whatever".)


Lukas




Re: Making markup functions parametric

2020-07-04 Thread David Kastrup
Urs Liska  writes:

> In the following markup command definition
>
> #(define-markup-command (test layout props enclosure content)
>   (scheme? markup?)
>(interpret-markup layout props (markup #:circle content)))
>
> I would like to make the #:circle parametric, i.e. I want to pass
> something into the function (e.g. as the 'enclosure' argument) and
> apply the corresponding markup function within the markup expression.
> The argument could be a function directly or a symbol from which it is
> referenced.
>
> Howeve, I would like to dynamically apply the markup function here
> rather than create a structure that chooses a complete markup
> expression based on the desirec markup type.
>
> Unfortunately I don't really have an idea what "#:circle" actually
> *is*, so I have no clue about getting where I need to.
>
> BestUrs

test =
#(define-scheme-function (enclosure content)
  (markup-function? markup?)
  (list enclosure #{ \markup \box #content #}))

\markup \test \markup \circle \with-color #red \etc "whatever"



-- 
David Kastrup


Re: Making markup functions parametric

2020-07-04 Thread Urs Liska
Hi Lukas,

Am Samstag, den 04.07.2020, 10:22 +0200 schrieb Lukas-Fabian Moser:
> Hi Urs,
> 
> > I have tried various things, but I don't seem to understand how
> > that
> > primitive-eval actually works here. Your solution does only work
> > when
> > the input is a simple markup (string), not when it is wrapped in
> > other
> > markup commands.
> 
> It seems to work quite robustly if you draw the given content markup 
> into a stencil and insert this stencil in the markup expression that 
> will be fly-evaluated:
> 
> \version "2.20"
> 
> #(define (get-scheme-markup-function func)
> (symbol-append 'make- func '-markup))
> 
> #(define-markup-command (enclose layout props func content)(symbol?
> markup?)
> (interpret-markup layout props
>   (primitive-eval
>(list 'markup
>  (list
>   (get-scheme-markup-function func)
>   `(make-stencil-markup ,(interpret-
> markup 
> layout props content)))
> 
> \markup \enclose #'box "C"
> \markup \enclose #'circle \italic \concat { "Camel" "Case" }
> \markup \enclose #'circle \enclose #'box \italic "E"
> 
> Does this help?
> 

Yes, indeed, thank you very much! With it I could for now complete my
function for a highly configurable object to denote the reference key
in harmonic analysis.

The following code produces the (non-sensical) attached result. It is
also a first demonstration of the new "properties/property
sets/presets" feature I'm right now finalizing for openLilyLib.
If you want to check it our yourself, the code is in oll-core (branch
'properties') and anaLYsis (branch 'harmony-initial'). The full
implementation of the function (also with property sets in action) can
be seen in 
https://github.com/openlilylib/analysis/blob/harmony-initial/harmony/ref-key.ily
When a function is created with the with-property-set macro arguments
are type-checked against the property set, defaults are given,
properties can be changed globally, in presets or locally in a call.
Within a function there's a function 'property' available to retrieve
the current property value. There's also a function 'use-preset' (not
used in this example, which works together with a set of preset filters
to determine whether a function should be "used" based on the given
presets. This can be used to selectively activate functions, for
example to hide them until needed or to highlight them on demand. The
Frames, Arrows, and Highlighters modules of anaLYsis are the first
real-world examples for this new functionality, which I'm pretty
excited about.

Best
Urs

\version "2.20.0"

\include "oll-core/package.ily"
\loadModule analysis.harmony

\definePreset \with {
  color = #red
  box-padding = 1
} analysis.harmony.ref-key default

\definePreset \with {
  parent = default
  box-type = ellipse
  box-padding = 0.3
  space-before-separator = 0.7
} analysis.harmony.ref-key one

\definePreset \with {
  parent = default
  accidental-size = 4
  space-before-accidental = -0.5
} analysis.harmony.ref-key two


{
  <<
\new Staff { c' d' e' f' g' a' b' c' }
\new Lyrics \lyricmode {
  \refKey  \with  { preset = one } C> T1
  \refKey  \with  { preset = two } F< S
}
  >>
}

(The complete list of (so far) configurable properties for \refKey can
be seen here: 
https://github.com/openlilylib/analysis/blob/harmony-initial/harmony/ref-key.ily#L20-L38
)

> Best
> Lukas
> 
> 


Re: Making markup functions parametric

2020-07-04 Thread Lukas-Fabian Moser

Hi Urs,


I have tried various things, but I don't seem to understand how that
primitive-eval actually works here. Your solution does only work when
the input is a simple markup (string), not when it is wrapped in other
markup commands.


It seems to work quite robustly if you draw the given content markup 
into a stencil and insert this stencil in the markup expression that 
will be fly-evaluated:


\version "2.20"

#(define (get-scheme-markup-function func)
   (symbol-append 'make- func '-markup))

#(define-markup-command (enclose layout props func content)(symbol? markup?)
   (interpret-markup layout props
 (primitive-eval
  (list 'markup
    (list
 (get-scheme-markup-function func)
 `(make-stencil-markup ,(interpret-markup 
layout props content)))


\markup \enclose #'box "C"
\markup \enclose #'circle \italic \concat { "Camel" "Case" }
\markup \enclose #'circle \enclose #'box \italic "E"

Does this help?

Best
Lukas





Re: Making markup functions parametric

2020-07-04 Thread Urs Liska
Am Samstag, den 04.07.2020, 05:28 +0200 schrieb Urs Liska:
> 
> Am 3. Juli 2020 23:33:42 MESZ schrieb Lukas-Fabian Moser 
> :
> > > #(define (get-scheme-markup-function func)
> > >(string->symbol
> > > (string-append "make-"
> > >(symbol->string func)
> > >"-markup")))
> > 
> > ... which should be replaced by
> > 
> > #(define (get-scheme-markup-function func)
> >(symbol-append 'make- func '-markup))
> > 
> 
> That's fantastic, thank you very much.
> (You'll soon see that code again, I assume ;-) ).

Oops, unfortunately it's not enough ...

I have tried various things, but I don't seem to understand how that
primitive-eval actually works here. Your solution does only work when
the input is a simple markup (string), not when it is wrapped in other
markup commands. 
Consider this:

\version "2.20"

#(define (get-scheme-markup-function func)
   (symbol-append 'make- func '-markup))

#(define-markup-command (enclose layout props func content)(symbol?
markup?)
   (ly:message "content: ~a" content)
   (interpret-markup layout props
 (primitive-eval
  (list 'markup
(list
 (get-scheme-markup-function func)
 content)

\markup \enclose #'box "C"
\markup \enclose #'circle \concat { "D" } 
\markup \enclose #'circle \italic "E"


While it works for the first case, both the \concat and the \italic
produce an error like
  Wrong type to apply: "D"

The content entering the markup command is printed as
  (# (D))
or
  (# E)

What will go there in the \enclose is a concatted and potentially
formatted markup expression.

I got one step further accepting a second symbol, which made the
\italic work:

\version "2.20"

#(define (get-scheme-markup-function func)
   (symbol-append 'make- func '-markup))

#(define-markup-command (enclose layout props func func2
content)(symbol? symbol? markup?)
   (ly:message "content: ~a" content)
   (interpret-markup layout props
 (primitive-eval
  (list 'markup
(list
 (get-scheme-markup-function func)
 (list (get-scheme-markup-function func2)
 content))

%\markup \enclose #'box "C"
%\markup \enclose #'circle #'concat \concat { "D" "e" }
\markup \enclose #'circle #'italic "E"


But with the \concat it still doesn't work.
Content prints
  (# Best
> Urs
> 
> > Sorry, I had not realized that symbol-append is available in Guile
> > 1.8.
> > 
> > Lukas