lilypond-user
[Top][All Lists]
Advanced

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

Re: Multiple instances of same articulation/bowing on one note


From: Ahanu Banerjee
Subject: Re: Multiple instances of same articulation/bowing on one note
Date: Tue, 31 Jan 2023 22:19:08 -0500

I suppose there are different definitions for what a "bug" is. I said it was not one because it is obviously intended behavior—I figured my use case is a bit unusual so was not surprised by this. But if it can be treated as a bug and additional functionality can be added in a future version, that would be great!

Jean, thanks for the workaround. I could certainly not have come up with that myself. I'll give it a try tomorrow. 

-Ahanu 

On Tue, Jan 31, 2023, 22:07 Jean Abou Samra <jean@abou-samra.fr> wrote:
On 01/02/2023 03:51, Ahanu Banerjee wrote:
> It's obviously not a bug. Jean, thanks for pointing out where the relevant instruction is.
>
> What would be the easiest way to modify this behavior for a single score? 


It's a bit of a weird thing to do, but you could consider

\version "2.24.0"

allowMultipleArticulations =
#(define-music-function (mus) (ly:music?)
   (let ((syms '()))
     (for-each
      (lambda (art)
        (let* ((sym (ly:music-property art 'articulation-type))
               (fresh (make-symbol "unique-articulation")))
          (set! syms (acons fresh sym syms))
          (ly:music-set-property! art 'articulation-type fresh)))
      (extract-typed-music mus 'articulation-event))
     #{
       \context Bottom \applyContext
         #(lambda (context)
            (let* ((defs (ly:context-property context 'scriptDefinitions))
                   (defs-hash ((@ (ice-9 hash-table) alist->hashq-table)
                               defs))
                   (new-defs (append (map (lambda (p)
                                            (cons (car p)
                                                  (hashq-ref defs-hash (cdr p))))
                                          syms)
                                     defs)))
              (ly:context-set-property! context 'scriptDefinitions new-defs)))
       #mus
     #}))

\language "english"

\allowMultipleArticulations
{ g8 g_\upbow ^\upbow g g % fails
  g8 g_\upbow ^\downbow g g % works
}



If you have several voices, you must apply the function to each of them
separately.

Jean



reply via email to

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