Le 04/01/2023 à 01:43, Alasdair McAndrew a écrit :
Many thanks indeed for that heads-up!  But I have another problem, in that I'm typesetting my chords as per the practice of the time, which was to have the stem of the upper note up, and the stem of the lower note(s) down.  I have done this using voices, and a simple function to save typing:

chord =
#(define-music-function
     (topnote bottomnote)
     (ly:music? ly:music?)
   #{
    << { $topnote } \\ { $bottomnote } >>
   #})

(Thanks to people here - including you! - who helped me with this.)  I do have another function:

stRight = \set stringNumberOrientations = #'(right)

which I can place before any string number.  I suppose I could also set a stencil property here too (when I learn how to include two variable assignments in one function).  But it's a pain to have to include this function for every string number.

Of course I could get round a lot of this if I could tweak the chord function so that any chord is typeset as I want.




This should get you started:

\version "2.24.0"

chord =
#(define-music-function
     (topnote bottomnote)
     (ly:music? ly:music?)
   #{
    << { < $topnote > } \\ { < $bottomnote > } >>
   #})

{
  \set Staff.stringNumberOrientations = #'(right)
  \override Staff.StringNumber.stencil = #ly:text-interface::print
  \chord c''\3 c'\4
}


Note that

- The function needs to include chord brackets < ... >, as David pointed out. - You need to set stringNumberOrientations on Staff level, otherwise the setting applies to the current Voice, while the << \\ >> construct creates new Voices. - The default StringNumber stencil is computed by print-circled-text-callback (see https://lilypond.org/doc/v2.24/Documentation/internals/stringnumber), which prints the text property of the StringNumber in a circle, but you can use ly:text-interface::print, which only prints the text property.

Best,
Jean

Attachment: OpenPGP_signature
Description: OpenPGP digital signature

Reply via email to