>
> Viktor, I suspect what is happening is that you first upgraded
> an old file to 2.20 without convert-ly, which didn't change
> this syntax, then upgraded from 2.20 to 2.22, which didn't
> change it either because the conversion rule is done when crossing
> the version in which the change was done, namely version 2.17.6.
>
Exactly!
I didn't know about convert-ly as a way of converting multiple files
through the terminal.
I used it only through Frescobaldy ( and I referred to it as update.ly in
my original post:-)


> That said, while true that this syntax is deprecated, it still
> works and replacing NoteName #'stencil with NoteName.stencil
> does not make a difference in the output.
>
As I read  David's email, I quickly learned how to use convert-ly on a
terminal and converted all my files, but the result was the same - no
letters!

>
> The problem appears to be that the NoteName text in 2.22 is
> not a simple string but a combination of \concat, \line and
> \simple that ends up printing the same thing. One can fix
> the snippet by first extracting the string from that markup
> before the alist lookup, using markup->string:
>
Now, "markup->string" is really beyond my comprehension. I am a music class
teacher and learn as much as 'need-to-know' in order to preserve sanity:-)

>
> \version "2.22.0"
> music =\relative c' { c4 d e f}
> chimenames =
> #`(
>      ("c" . "C")
>    ("d" . "D")
>     ("e" . "E")
>     ("f" . "F")
>     )
>
>    ChimeNoteNames =
> #(lambda (grob)
>     (let* ((default-name (markup->string (ly:grob-property grob 'text)))
>            (new-name (assoc-get default-name chimenames)))
>           (ly:grob-set-property! grob 'text new-name)
>     (ly:text-interface::print grob)))
>
>     \new StaffGroup
> <<
> \new Staff \music
>   \new NoteNames \with {
>    \override NoteName.stencil = #ChimeNoteNames
>      }
>        \music
>    >>
>

Thank you!  This works.

>
>

> Note that if the goal is to uppercase the note names, there
> is also a simpler solution that works in recent versions,
> thanks to the new string transformers facility:
>
> \version "2.23.80"
>
> #(define (ChimeNoteNames grob)
>     (grob-interpret-markup
>      grob
>      #{
>        \markup \with-string-transformer
>                  #(lambda (layout props str)
>                     (string-upcase str))
>                #(ly:grob-property grob 'text)
>      #}))
>
> music =\relative c' { <c d>4 dis e f}
>
> \new StaffGroup <<
>    \new Staff \music
>    \new NoteNames \with {
>      \override NoteName.stencil = #ChimeNoteNames
>    }
>    \music
>  >>
>
>
> Oh, this doesn't work on 2.22 and I am too scared to upgrade now before
report writing kicks in. But I will keep it and try it out as soon as I
upgrade.

Thank you David for waking me up to convert-ly (terminal) and Jean for the
"markup->string" solution.

Viktor

Reply via email to