Hi James
I'm not sure if this is what you're looking for but here's a snippet
with examples ranging from the straightforward -- those that _I_ can
understand -- to the more involved (chordRootNamer).
- - - - [START]
\version "2.11.60"
\layout { ragged-right = ##t }
% --------------------------------------------------------------------
% Set up list of customized chord patterns/names in the format
% <chord>-\markup{...}
% Note that in this example we define chords in the key of C. But
% Lilypond isn't racist ... it will use the name when it finds the
% same patten in any key.
% --------------------------------------------------------------------
myChordDefinitions = {
<c e>-\markup{\super\circle{\number{3}}} % c:3
<c f>-\markup{\sub\hbracket{\number{4}}} % c:4^3
<c f bes>-\markup{\super\number{\column{4 7}}} % c:4.7^3
}
% (Disclaimer -- you may want to use more sensible markup)
% --------------------------------------------------------------------
% Yes, some scheme is needed. But once it's written in an include file
% we can effectively forget about it. All that needs to be updated are
% the chord definitions above whenever we find a new one.
%
% This code translates the music in \myChordDefinitions above to a
% list of exceptions and adds the standard (ignatzek) exception to the
% end to get a complete list of chord exceptions.
% --------------------------------------------------------------------
myChordExceptions = #(append
(sequential-music-to-chord-exceptions myChordDefinitions #t)
ignatzekExceptions)
% --------------------------------------------------------------------
% Changing the root name of the chord. YOU REALLY SHOULDN'T NEED TO DO
% THIS, but just for the sake of completeness...!
% --------------------------------------------------------------------
#(define-public ((chord-name->my-markup) pitch)
"Return pitch markup for PITCH, using my note names. Loosely based
on chord-name->italian-markup in scm/chord-names.scm"
(let* ((name (ly:pitch-notename pitch))
(alt (ly:pitch-alteration pitch)))
(make-line-markup
(list
(make-simple-markup (vector-ref #("c" "d" "e" "f" "g" "a" "b")
name))
(if (= alt 0)
(make-line-markup (list empty-markup))
(make-line-markup
(list
(make-with-color-markup
(rgb-color 1 0 0)
(make-raise-markup 0.7 (alteration->text-accidental-markup
alt))
))))))))
% --------------------------------------------------------------------
% That's all right -- you can wake up now...
% --------------------------------------------------------------------
% --------------------------------------------------------------------
% Install the chord exceptions by executing the scheme snippet above.
% Just to be complete, you can add other customisation macros here
% too.
% --------------------------------------------------------------------
myChordInit = {
%\frenchChords % If you want
simplicity
\set chordRootNamer = #(chord-name->my-markup) % ) If you're a
masochist
\set chordPrefixSpacer = #0.4 % )
\set majorSevenSymbol = \markup{"7M"}
\set chordNameExceptions = #myChordExceptions
}
% --------------------------------------------------------------------
% And now you can chord away to your heart's content
% --------------------------------------------------------------------
preamble = {\key g \major \time 4/4 }
thechords = \chordmode { \myChordInit g2:3 g:4^3 | g:4.7^3 gis }
themusic = \relative c' { e4 e e e | e e e e }
\score { <<
\new ChordNames { \preamble \thechords }
\new Staff { \preamble << \thechords \\ \themusic >> }
}
- - - - [END]
Hope that helps
Roman