I'm working on charts/scores for a full rock/funk band performance, and I
am wondering whether there's an easy way to do what I'm looking for.

I understand chordmode and nodemode, and I understand how to set up
separate voices to show the chordnames and a pitch squashed rhythmic
notation of hte chords.  This makes for a really nice way to notate rhythm
and chor dnames of guitar chords from the same chordnames variable without
having to tweak it separately for both.  The minimal Lilypond example looks
like this (sorry about lack of attestation on the Scheme snippet to convert
chords into just one note for the pitch squash staff, picked it up some
time ago and lost track of it.)

\version "2.24.1"

VerseRhythmChords = {
    \chordmode {
        e16:9 r8 q16 r8 q16 r16 r16 q16 r8 q16 q16 r8
        e16:9 r8 q16 r8 q16 r16 r16 q16 r8 q16 q16 r8
        e16:9 r8 q16 r8 q16 r16 r16 q16 r8 q16 q16 r8
        bes16 q16 r16 q16 q4 g16 q16 r16 q16 q4
    }
}

firstNoteOfChord =
#(define-music-function (music) (ly:music?)
   (define (iter mus)
     (let ((elt (ly:music-property mus 'element))
           (elts (ly:music-property mus 'elements)))
       (map iter elts)
       (if (not (null? elt)) (iter elt))
       (if (and (music-is-of-type? mus 'event-chord) (not (null? elts)))
           (ly:music-set-property! mus 'elements (list (car elts))))))
   (iter music)
   music)

<<
    \new ChordNames {
        \set noChordSymbol = ""
        \set chordChanges = ##t
        \VerseRhythmChords
    }
    \new Voice \with {
        \consists "Pitch_squash_engraver"
    } {
        \improvisationOn
        \firstNoteOfChord \VerseRhythmChords
        \improvisationOff
    }
>>

Attached find a .PNG of the output.  I tried to hide the noChordSymbol with
the \set noChordSymbol = "".  That hides the chord symbols, as I want to
specify the rhythm in the chord part and don't want to show N.C. on every
little rest.  And I'd like to show just changes in the chord, not on every
note.  That works in cases where there are no rests between chords.  But
the hidden N.C. symbols still "cancel" whatever the last chord was, kinda
flooding the page with lots of extraneous chords in this particular
application.

I see how the default behavior is logical and valuable in most cases, but
I'm wondering, in individual user-specified caess:

* Is there a way to somehow turn off the N.C. handling entirely, without a
lot of trouble, for a given stretch of /chordmode?  Not just hide the N.C.
symbol, but cancel the fact that it determines those to be no-chord spots
in the score.

* Failing that, what's a good workflow for handling situations where I want
to specify something more detailed than the "basic slash rhythm notation"
in the manuals, and the chord names, without overly duplicating my work?

Workarounds are welcome for now.  What I find myself _wanting_ is a way to
combine the articulations possible in /notemode (posisbly using special
markups, as the syntax conflicts some) in /chordmode, in a way that passes
through to the pitch squash engraver, without having to overly repeat
myself.  I have basic programming knowledge and a decent understanding of
Scheme the language itself, but not lots of experience with the internals
of Lilypond.

I get that I'm steering outside what lots of people do with this, just
wondering what approaches make sense here.
[image: rhythm-chord-repeats-with-rests.png]

Reply via email to