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 20:17:22 +0100

On Tue, 2017-04-18 at 10:04 -0500, David Nalesnik wrote:
> On Tue, Apr 18, 2017 at 9:25 AM, Richard Shann <address@hidden> wrote:
> > On Tue, 2017-04-18 at 14:47 +0100, Richard Shann wrote:
> >> ;; 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)))
> >
> > This part of the code is commented out like this in
> > translation-functions.scm, but I tried it out, and it improves the
> > centering over whole-notes but makes it worse over other notes.
> >
> > I see that  (ly:event-property event 'duration) gives the duration of
> > the note that the bass figure is on as:
> >
> > #<Duration 1 >
> >
> > for a whole note.
> >
> > so if I could test that I could use that code for this case (and the 1.
> > case). But here my understanding of Guile's display syntax runs out ...
> > what sort of a type is ly:event-property returning, and how do I test
> > for particular values?
> >
> 
> 
> It's a Duration object.

Hmm, that's the LilyPond type, but I'm still curious as to what Scheme
type it is that displays using #< ...>
I've been combing the Guile manual and thought for a moment it was a
vector, but no, no that.

> 
> Why not:
> 
> (if (and (markup? fig-markup)
>             (eqv? 0 (ly:duration-log (ly:event-property event 'duration))))
>     (set!
>        fig-markup (markup #:translate (cons 1.0 0)
>                                        #:center-align fig-markup)))

That's perfect - it even works with Breve!


> 
> BTW, your snippet above won't compile because of the following:
> 
>  (plus-markup (if (eq? #t (ly:event-property event 'augmented))
>                           (markup #:number \"+\")
>                           #f))
> 
> Why are you trying to escape the quotation marks here?

yes, sorry, I just cut and pasted this from a Scheme script, not
noticing that there were embedded quotation marks in it. (That is, the
whole thing had surrounding quotes and is passed to (eval-string ...)

below is the complete code, including your contribution, pasted from the
LilyPond output of Denemo so as to avoid any quoting 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)))

    (if (and (eqv? 0 (ly:duration-log  (ly:event-property event 'duration))) 
(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)))
\layout {
  \context {
    \Score
    figuredBassFormatter = #format-bass-figures
  }
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 suspect that this code would be welcomed by most users as the default
output for LilyPond.

> 
> Hope this helps--

It certainly does - to celebrate I attach a PDF of a sonata which has
these tweaks - the fourth bar of movement 4 illustrates the nicely
placed sharp centered on the whole note in the bass.

Thank you.

Richard




Attachment: Sonata XVI-Default Score Layout.pdf
Description: Adobe PDF document


reply via email to

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