bug-lilypond
[Top][All Lists]
Advanced

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

Re: Changing volta number text


From: Ralph Palmer
Subject: Re: Changing volta number text
Date: Tue, 18 May 2021 07:47:57 -0700

On Fri, May 14, 2021 at 7:26 PM Aaron Hill <lilypond@hillvisions.com> wrote:

> On 2021-05-14 6:40 pm, Ralph Palmer wrote:
> > Excellent! Thank you, Aaron. I wish I could understand what your
> > function
> > does - how it works.
>
> The technique involves querying the current Score.repeatCommands and
> replacing any existing (volta "...") command with the user-provided
> version.  This preserves the other repeat commands such as (end-repeat)
> and (volta #f).
>
> Here is a minorly-refactored version with some documentation, comments,
> and a helpful usage warning:
>
> %%%%
> \version "2.22.0"
> \include "english.ly"
>
> changeVoltaText =
> #(define-music-function
>    (text) (markup?)
>    (_i "Replaces the volta text within the currently-set
> @code{repeatCommands}.")
>
>    (define (volta-text? cmd)
>     ;; Look for the (volta "...") pattern.
>     (and (pair? cmd)
>          (eq? 'volta (car cmd))
>          (markup? (cadr cmd))))
>    (define (replacer cmd)
>     (if (volta-text? cmd) `(volta ,text) cmd))
>    (define (proc ctxt)
>     (let ((cmds (ly:context-property ctxt 'repeatCommands '())))
>      (if (any volta-text? cmds)
>       (ly:context-set-property! ctxt 'repeatCommands (map replacer cmds))
>       (ly:input-warning (*location*) "No volta text was replaced."))))
>
>    #{ \context Score \applyContext #proc #})
>
> test = {
>    \time 3/4
>    \repeat volta 3
>    {
>      a'4 b' c' |
>      \changeVoltaText "dud"
>      #(ly:expect-warning "No volta text was replaced.")
>      b'4 c' d' |
>    }
>    \alternative {
>      {
>        \changeVoltaText "1., 3."
>        e'4 f' g' |
>      }
>      {
>        d'4 c' b' |
>      }
>      {
>        \changeVoltaText \markup \with-color #red "4."
>        g'4 a' b' |
>      }
>    }
>    c'1
> }
>
> \score {
>    \test
> }
> %%%%
>
>
>
> -- Aaron Hill
>

Thanks for this modification, Aaron Hill.
Ralph


-- 
Ralph Palmer
Seattle
USA
(he, him, his)
palmer.r.violin@gmail.com


reply via email to

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