lilypond-user
[Top][All Lists]
Advanced

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

Re: Generate music with scheme


From: Jean Abou Samra
Subject: Re: Generate music with scheme
Date: Mon, 11 Apr 2022 12:30:19 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0



Le 11/04/2022 à 11:50, Henrik Frisk a écrit :
Hi,

I have not worked with scheme and lilypond for some years. I realize that this is more of a scheme question than Lilypond, but perhaps someone knows how to do this. I can generate four notes with the following:

  \version "2.18.0"
  \score {
    {
      $ (make-sequential-music
   (map (lambda (x)
          (make-music 'NoteEvent
                      'pitch
                      (ly:make-pitch 0 x)
                      'duration
                      (ly:make-duration 2)))
        (list 1 2 3 4)))
    }
  }

However, if I would like to add a markup to each note to each note I fail. I would have guessed something like this would do it but it generates an (almost) empty staff:

\version "2.18.0"
  \score {
    {
   $(make-sequential-music
   (map (lambda (x)
           (make-music 'NoteEvent
                       'pitch
                       (ly:make-pitch 0 x)
                       'duration
                       (ly:make-duration 2))
           (make-music 'MarkEvent
                       'label
                       (markup
                        #:line
                        (#:override (cons (quote font-size) -3) "10"))))
        (list 1)))
    }
  }



A Scheme lambda returns the value of the last expression
inside. If there are other expressions before, they are
evaluated for their side effects, but the result is thrown
away. You want to combine both music events in a single
music expressions.

\version "2.22.2"

{
  $(make-sequential-music
    (map (lambda (x)
           (make-sequential-music
            (list
             (make-music 'NoteEvent
                         'pitch
                         (ly:make-pitch 0 x)
                         'duration
                         (ly:make-duration 2))
             (make-music 'MarkEvent
                         'label
                         (markup
                          #:line
                          (#:override (cons (quote font-size) -3) "10"))))))
         (list 1 2 3 4)))
}

(This doesn't work well if there is no bar line at the end,
issue https://gitlab.com/lilypond/lilypond/-/issues/4826.)

Best,
Jean




reply via email to

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