lilypond-user
[Top][All Lists]
Advanced

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

figured bass: how to use scheme-function in event-chord?


From: Thomas Morley
Subject: figured bass: how to use scheme-function in event-chord?
Date: Fri, 20 Jun 2014 11:08:28 +0200

Hi,

for the first time since I use LilyPond I have to deal with figured
bass notation and noticed some problems. Here the first:

The following works as expected:
\figures { <6 4>2 }
\figures { <"a" "b">2 }
\figures { <\markup \with-color #red "a" \markup \with-color #green "b"> }


even this works:
one = \markup \with-color #red "a"
two = \markup \with-color #green "b"
\figures { <\one \two>2 }

Though using a scheme-function to create mrkups returns an error:
foo = #(define-scheme-function (parser location strg)(markup?) strg)
\figures { <\foo "a" \foo "b">2 }

-> syntax error, unexpected SCM_FUNCTION
\figures { <
            \foo "a" \foo "b">2 }

Well, I can make it work with:
#(define (make-bass-figure-event fig dur)
  (make-music
     'BassFigureEvent
     'duration dur
     (if (markup? fig)
         'text
         'figure)
     fig))

#(define (make-bass-figure-ev-chrd lst dur)
  (make-event-chord
    (map
      (lambda (e) (make-bass-figure-event e dur))
      lst)))

buzz =
#(define-music-function (parser location lst duration)(list? ly:duration?)
(make-bass-figure-ev-chrd lst duration))

\figures { \buzz #'("a" "b") 1 }
\figures { \buzz #`(,one ,two) 1 }
\figures { \buzz #`(,#{ \foo "a" #} ,#{ \foo "b" #}) 1 }

Probably the syntax could be simplified, though I assume it will stay
not very nice.

Is there a better way to use a scheme-function here?
or
Can \figures { <\foo "a" \foo "b">2 } be made work?

Cheers,
  Harm



reply via email to

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