lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to enlarge the size of accidentals in a figured bass ?


From: Richard Shann
Subject: Re: How to enlarge the size of accidentals in a figured bass ?
Date: Tue, 18 Apr 2017 14:47:36 +0100

On Thu, 2017-04-13 at 20:48 +0200, Thomas Morley wrote:
> 2017-04-13 19:52 GMT+02:00 Ziad Gholam <address@hidden>:
> > Hello,
> >
> >
> >
> > Could someone help with advice about :
> >
> > How to enlarge the size of accidentals in a figured bass ?
> > ... Either leaving the size of the numbers unchanged or not ...
> >
> > (version used = 2.18.2)
> >
> >
> > Thanks you &
> > R
> > egards,
> >
> >
> > Ziad R. GHOLAM
> 
> 
> Hi,
> 
> figured bass is fomated by the context-property `figuredBassFormatter'
> which is set per default to the procedure `format-bass-figure'.
> 
> There is no single property to affect fontsize of accidentals only, afaik.
> 
> Though you could c/p the definition from translation-functions.scm
> into your ly-file, change it to fit your needs and let LilyPond use
> it.
> Below I did exactly that, giving accidentals a far too huge fontsize
> (just to make it obvious).
> 
> 
> #(define-public (format-bass-figures figure event context)
>   (let* ((fig (ly:event-property event 'figure))
>          (fig-markup (if (number? figure)
> 
>                          ;; this is not very elegant, but center-aligning
>                          ;; all digits is problematic with other markups,
>                          ;; and shows problems in the (lack of) overshoot
>                          ;; of feta-alphabet glyphs.
>                          ((if (<= 10 figure)
>                               (lambda (y) (make-translate-scaled-markup
>                                            (cons -0.7 0) y))
>                               identity)
> 
>                           (cond
>                            ((eq? #t (ly:event-property event 'diminished))
>                             (markup #:slashed-digit figure))
>                            ((eq? #t (ly:event-property event 
> 'augmented-slash))
>                             (markup #:backslashed-digit figure))
>                            (else (markup #:number (number->string figure 
> 10)))))
>                          #f))
> 
>          (alt (ly:event-property event 'alteration))
>          (alt-markup
>           (if (number? alt)
>               (markup
>                #:general-align Y DOWN #:fontsize
> ;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>                (if (not (= alt DOUBLE-SHARP))
>                    ;-2 2 :; is the default
>                    4 4 ;; changed
>                  )
> ;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


I've been long wanting to tweak the size of the accidentals in the
figured bass and not got round to looking at it. This code you have
pointed to has given me a start. I noticed that simply changing the font
size of the accidental leads to knock-on effects with the figure
placement. What I find undesirable in the current default is the size of
lone accidentals (those indicating a third) and also the heights of the
sharp and flat when they precede a number - sharp too high, flat too
low. I have come up with the following version which fixes these two
problems:

8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><
#(define-public (format-bass-figures figure event context)
  (let* ((fig (ly:event-property event 'figure))
         (fig-markup (if (number? figure)

                         ;; this is not very elegant, but center-aligning
                         ;; all digits is problematic with other markups,
                         ;; and shows problems in the (lack of) overshoot
                         ;; of feta-alphabet glyphs.
                         ((if (<= 10 figure)
                              (lambda (y) (make-translate-scaled-markup
                                           (cons -0.7 0) y))
                              identity)

                          (cond
                           ((eq? #t (ly:event-property event 'diminished))
                            (markup #:slashed-digit figure))
                           ((eq? #t (ly:event-property event 'augmented-slash))
                            (markup #:backslashed-digit figure))
                           (else (markup #:number (number->string figure 10)))))
                         #f))

         (alt (ly:event-property event 'alteration))
         (alt-markup
          (if (number? alt)
              (markup
               #:general-align Y DOWN #:fontsize
               (if (not (= alt DOUBLE-SHARP))
                   ;-2 2 ;; is the default
                    (if (not fig-markup) 0 -2) 4 ;; changed
                 )
               (alteration->text-accidental-markup alt))
              #f))

         (plus-markup (if (eq? #t (ly:event-property event 'augmented))
                          (markup #:number \"+\")
                          #f))

         (alt-dir (ly:context-property context 'figuredBassAlterationDirection))
         (plus-dir (ly:context-property context 'figuredBassPlusDirection)))

    (if (and (not fig-markup) alt-markup)
        (begin
          (set! fig-markup (markup #:left-align #:pad-around 0.3 alt-markup))
          (set! alt-markup #f)))


    ;; hmm, how to get figures centered between note, and
    ;; lone accidentals too?

     ; (if (markup? fig-markup)
     ;  (set!
     ;  fig-markup (markup #:translate (cons 1.0 0)
     ;                     #:center-align fig-markup)))

    (if alt-markup
        (set! fig-markup
              (markup #:put-adjacent
                      X (if (number? alt-dir)
                            alt-dir
                            LEFT)
                      fig-markup
                      #:pad-x 0.2 #:raise (if (= alt FLAT) 0.1 -0.1) 
alt-markup))) ;changed

    (if plus-markup
        (set! fig-markup
              (if fig-markup
                  (markup #:put-adjacent
                          X (if (number? plus-dir)
                                plus-dir
                                LEFT)
                          fig-markup
                          #:pad-x 0.2 plus-markup)
                  plus-markup)))

    (if (markup? fig-markup)
        (markup #:fontsize -2 fig-markup)
        empty-markup)))

8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><

I'll make this available as a tweak in Denemo.

Richard




reply via email to

[Prev in Thread] Current Thread [Next in Thread]