Re: Alignment issues of Time signature above the staff

2020-04-21 Thread Kevin Barry
Hi Chen,

I am glad that it is working for you now.

In my opinion, this solution is too ugly/hacky to be put in the
snippet repository (but I would be happy to see it there if wanted).

Kevin

On Mon, 20 Apr 2020 at 10:37, Chen Leo  wrote:
>
> Hi Kevin,
>
> I will have to thank you again for all the help, this now works perfectly in 
> my score!
>
> One more minor suggestion will be to add
> \override TimeSignature.break-align-symbol = #'staff-bar
> in the context of the dynamics, this removes the extra spaces between the 
> cautionary time signature at the end of the line.
>
> Please consider uploading this to the lilypond snippet repository as this 
> solves a lot of problems for the original version.
> ( http://lsr.di.unimi.it/LSR/Item?id=272 )
>
> Best,
> Leo



Changing the size of the arpeggio's arrow

2020-04-21 Thread Paolo Prete
Hello.

The following code uses a (very, very, very helpful) function that Harm
wrote some months ago.
Unfortunately, it causes a compiler's error if  the size of the arrow is
too big (in the following snippet the error is obtained when the size
(my-scale) is >= 2).
Harm (or anyone else), please can you fix it if possible?
Many thanks,

Best,
P


\version "2.19.84"

biggerArrow =
#(define-music-function (scale)(number?)
"Returns an override for @code{Arpeggio.stencil}, with arrow-heads scaled by
@var{scale}"
#{
  \override Arpeggio.stencil =
  #(lambda (grob)
(let* ((arp-dir (ly:grob-property grob 'arpeggio-direction)))
  ;; If 'arpeggio-direction is unset use default-stencil
  (if (null? arp-dir)
  (ly:arpeggio::print grob)
  (let* ((arrow-glyph
   (format #f
 "scripts.arpeggio.arrow.~a1"
 (if (negative? arp-dir) "M" "")))
 (font (ly:grob-default-font grob))
 (arrow-head-stil (ly:font-get-glyph font arrow-glyph))
 (arrow (ly:stencil-scale arrow-head-stil scale scale))
 (arrow-y-ext (ly:stencil-extent arrow Y))
 (arrow-x-ext (ly:stencil-extent arrow X))
 (arrow-width (interval-length arrow-x-ext))
 (pos (ly:grob-property grob 'positions)))

;; 'positions modified to reflect the height of the arrow-head
(ly:grob-set-property! grob 'positions
  (if (positive? arp-dir)
  (cons (car pos) (- (cdr pos) arrow-width))
  (cons (+ (car pos) arrow-width) (cdr pos

;; unset 'arpeggio-direction to get the default trill-line
stencil
(ly:grob-set-property! grob 'arpeggio-direction '())

(let* ((stil (ly:arpeggio::print grob))
   (stil-y-ext (ly:stencil-extent stil Y))
   (stil-x-ext (ly:stencil-extent stil X))
   (stil-width (interval-length stil-x-ext))
   ;; A scaled arrow-head will be slightly off, find the
value
   ;; to compensate for x-axis, before adding it to the
   ;; arpeggio-line
   (scale-compensate-x (/ (- stil-width arrow-width) 2))
   (new-stil
 (ly:stencil-add
   (ly:stencil-translate
 arrow
 (cons
   scale-compensate-x
   (if (negative? arp-dir)
   ;; For a down pointing arrow, it's top will
be at
   ;; arpeggio-line-bottom, move by it's height
to
   ;; let the arrow-basis match with the
line-bottom
   (- (car stil-y-ext)
  (interval-length arrow-y-ext))
   (cdr stil-y-ext
   stil)))

   ;; We need to adjust 'X-extent to reflect the enlarged arrow,
   ;; in order to avoid spacing issues
   (ly:grob-set-property! grob 'X-extent
 (interval-widen
   (ly:arpeggio::width grob)
   (* scale-compensate-x -2)))

   ;; Do we need to resize the stencil? For now commented
   ;(ly:make-stencil
   ;  (ly:stencil-expr new-stil)
   ;  (interval-widen stil-x-ext (* scale-compensate-x -2))
   ;  (ly:stencil-extent new-stil Y))
   new-stil
   )
#})

%% enlarged
my-scale = 1.5

{
  \arpeggioArrowUp
  \biggerArrow \my-scale
  \arpeggio
}