Re: Symmetrical hairpins

2023-09-25 Thread David Kastrup
Valentin Petzel  writes:

> Hello Arjen,
>
> I’m wondering if in your case it ight be beneficial to not create two
> Hairpins, but rather a special case stencil like this:

Huh.  Maybe this would not be the worst strategy for implementing messa
di voce graphically in general.  It would take care of symmetry and
length issues.

-- 
David Kastrup



Re: Symmetrical hairpins

2023-09-25 Thread Valentin Petzel
Hello Arjen,

I’m wondering if in your case it ight be beneficial to not create two Hairpins, 
but rather a special case stencil like this:

%

#(define (ly:expr-hairpin::print grob)
   (let* ((orig (ly:hairpin::print grob))
  (sp (ly:grob-property grob 'shorten-pair '(0 . 0)))
  (spl (car sp))
  (spr (cdr sp))
  (t (ly:grob-property grob 'text #f))
  (tst (if t (grob-interpret-markup grob t) empty-stencil))
  (tst (ly:stencil-translate-axis
(ly:stencil-aligned-to (ly:stencil-aligned-to tst Y CENTER) X 
CENTER)
(interval-center (ly:stencil-extent orig X))
X))
  (bp (ly:grob-property grob 'gap 0.3))
  (bp2 (ly:grob-property grob 'bound-padding 0.3))
  (len (interval-length (ly:stencil-extent orig X)))
  (pad (if t (* 2 bp2) bp))
  (shorten (/ (+ len pad (interval-length (ly:stencil-extent tst X))) 
2))
  (st1 #f)
  (st2 #f))
 (ly:grob-set-property! grob 'shorten-pair (cons spl (+ spr shorten)))
 (ly:grob-set-property! grob 'grow-direction RIGHT)
 (set! st1 (ly:hairpin::print grob))
 (ly:grob-set-property! grob 'shorten-pair (cons (+ spl shorten) spr))
 (ly:grob-set-property! grob 'grow-direction LEFT)
 (set! st2 (ly:hairpin::print grob))
 (ly:grob-set-property! grob 'shorten-pair sp)
 (ly:grob-set-property! grob 'grow-direction RIGHT)
 (ly:stencil-add st1 st2 tst)))

expr = -\tweak stencil #ly:expr-hairpin::print -\<

{
  
  2\expr 2\!
  2\mp\expr 2\!
  1\mp\tweak text \markup\dynamic f \expr 1 1 \!
}

%

Cheers,
Valentin

Am Sonntag, 24. September 2023, 16:58:18 CEST schrieb Arjen:
> Hi,
> 
> I'm trying to place symmetrical hairpins under a bar, but it turns out
> that the left (crescendo) hairpin is longer than the right
> (descrescendo) hairpin.
> MWE:
> \version "2.24.1"
> \new Voice \relative <<
>{ c'2 c2 }
>{ s2\< s2\> <>\! }
> 
> 
> Tweaking with the lengths of the spacers turns out very difficult and
> results in hairpins at unequal vertical positions:
> \version "2.24.1"
> \new Voice \relative <<
>{ c'2 c2 }
>{ s4...\< s32\! s2\> <>\! }
> 
> 
> And sometimes I need an absolute dynamic in front of the hairpins, in
> which case the left hairpin becomes very small:
> \version "2.24.1"
> \new Voice \relative <<
>{ c'2 c2 }
>{ s4...\pp\< s32\! s2\> <>\! }
> 
> 
> Is there an (hopefully easy) way to give both hairpins equal size and
> vertical alignment, regardless of the presence of an absolute dynamic in
> front?
> 
> Regards,
> Arjen



signature.asc
Description: This is a digitally signed message part.


Re: How do I set the Scheme sandbox to \language = "english"?

2023-09-25 Thread Jean Abou Samra
Le lundi 25 septembre 2023 à 17:56 -0400, Kevin Cole a écrit :
> I'm trying to learn more about Scheme by "playing in the sandbox".
> 
> When I tried to convert the string "d" to a pitch, it converted correctly.
> 
> When I tried the same thing with "bf" I ended up with what I think is
> still a string.
> 
> I'm guessing that's because the sandbox is not using English note names.
> 
> Is there a variable to set or some sort of "include" that would
> convince it to use English note names?


GNU LilyPond 2.25.9 (running Guile 3.0)
Processing 
`/home/jean/repos/lilypond/build/out/share/lilypond/current/ly/scheme-sandbox.ly'
Parsing...
GNU Guile 3.0.7
Copyright (C) 1995-2021 Free Software Foundation, Inc.

Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
This program is free software, and you are welcome to redistribute it
under certain conditions; type `,show c' for details.

Enter `,help' for help.
scheme@(#{ g90}#)> #{ c #}
$1 = #
scheme@(#{ g90}#)> #{ bf #}
$2 = "bf"
scheme@(#{ g90}#)> #{ \language english #}
scheme@(#{ g90}#)> #{ bf #}
$3 = #





signature.asc
Description: This is a digitally signed message part


How do I set the Scheme sandbox to \language = "english"?

2023-09-25 Thread Kevin Cole
I'm trying to learn more about Scheme by "playing in the sandbox".

When I tried to convert the string "d" to a pitch, it converted correctly.

When I tried the same thing with "bf" I ended up with what I think is
still a string.

I'm guessing that's because the sandbox is not using English note names.

Is there a variable to set or some sort of "include" that would
convince it to use English note names?



Re: Beam issue

2023-09-25 Thread Rajesh Baskar

Thanks William for your help.

On 9/23/2023 1:09 PM, William Rehwinkel wrote:
See 
https://lilypond.org/doc/v2.25/Documentation/notation/setting-automatic-beam-behavior 



In engraving from the Romantic and Classical periods, beams often 
begin midway through the measure in 3/4 time, but modern practice is 
to avoid the false impression of 6/8 time (see Gould, p. 153). Similar 
situations arise in 3/8 time. This behavior is controlled by the 
context property beamHalfMeasure, which has effect only in time 
signatures with 3 in the numerator:


\relative a' {
  \time 3/4
  r4. a8 a a |
  \set Timing.beamHalfMeasure = ##f
  r4. a8 a a |
}

Thanks,
-William

On 9/23/23 14:32, Rajesh Baskar wrote:

Hi,

In a normal musical notation when you have a time signature of 3/4 
and have a dotted note, eighth note, eighth note and an eighth note - 
that the first eighth note should have "no beam". This is how other 
software like MuseScore and Finale works. Why does Lilypond do this? 
I know there is a \noBeam markup but in my case this is be difficult 
to use as I'm dynamically generating the notation.


Any advise will be helpful. See the attached image for illustration.

Thanks,
Raj

\version "2.22.2" \language english \header { tagline = ##f }
\score {\new Staff
 {\set Staff.midiInstrument = #"acoustic grand" \key c \major 
\time 3/4 \clef bass e,4. d,8 c, e, \bar "||"} \layout { \context { 
\Score proportionalNotationDuration = #(ly:make-moment 1/2) } } \midi 
{ \tempo 1 = 72}}