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 <j...@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