Ernie,

I'll point it out below.

On Tue, Jul 14, 2020 at 10:42 AM Ernie Braganza <ernie.braga...@gmail.com>
wrote:

> I am not sure where to place this new engraver code so I can use it. I
> tried researching this in the manual, but was still unclear. Where should
> it appear? Again, thanks for your help
>
> On Mon, Jul 13, 2020 at 8:15 PM Thomas Morley <thomasmorle...@gmail.com>
> wrote:
>
>>
>> Here an engraver which transforms the default stencil to an empty
>> stencil under certain conditions (it's not a rewrite of
>> Chord_name_engraver)
>>
>> Right here is a new ChordNames context that has everything you need.  Put
the whole context into your file, replacing the current  ChordNames
context.

> \new ChordNames
>>   \with {
>>     chordChanges = ##t
>>       \consists
>>       #(lambda (ctx)
>>         (let* ((chord #f)
>>                (last-chord #f))
>>
>>        (define (at-line-beginning? grob)
>>          (let* ((col (ly:item-get-column grob))
>>                 (ln (ly:grob-object col 'left-neighbor))
>>                 (col-to-check (if (ly:grob? ln) ln col)))
>>            (and (eq? #t (ly:grob-property col-to-check 'non-musical))
>>                 (= 1 (ly:item-break-dir col-to-check)))))
>>
>>          (make-engraver
>>           (acknowledgers
>>            ((chord-name-interface this-engraver grob source-engraver)
>>
>>              (if chord
>>                  (begin
>>                    (set! last-chord chord)
>>                    (set! chord #f)))
>>
>>              (set! chord (ly:grob-property grob 'text))
>>
>>              ;; If two subsequent chords are equal and chordChanges is
>> enabled,
>>              ;; set 'after-line-breaking to a procedure which sets the
>> stencil
>>              ;; to an empty-stencil if the new chord is at line-start.
>>              (if (and (equal? chord last-chord)
>>                       (ly:context-property ctx 'chordChanges #f))
>>                  (ly:grob-set-property! grob 'after-line-breaking
>>                    (lambda (grob)
>>                      (if (at-line-beginning? grob)
>>                          (ly:grob-set-property! grob 'stencil
>> empty-stencil))
>>                      ;; keep default
>>                      (ly:chord-name::after-line-breaking grob))))))
>>           ((finalize this-engraver)
>>             ;; house keeping
>>             (set! chord #f)
>>             (set! last-chord #f)))))
>>   }
>>
> This is the end of the ChordNames context


>   \chordmode { d2 c~ \break c d }
>>
>> The chormode code is then placed in the ChordNames context.  You may wish
to surround it with{}, although it is not necessary here because the
\chordmode {} is a single music expresion.

HTH,

Carl

Reply via email to