7

I can get Lilypond to display Alt chords on a lead sheet by explicitly spelling the Alt chord, but this seems like a real nuisance. Here is an example:

E-alt chord symbol

\version "2.22.2"

\header {
  title = "Alt Chords"
}

% Is there a better way to get Alt chords displayed than spelling them
% explicitly?
chord_sequence = \relative {
  \chordmode { a1:7 }
  < e gis b d f g ais c >1
}

melody = \relative {
  \key a \major
  \time 4/4
  a1 | e'1 |
}

\score {
  <<
  \new ChordNames {
    \set chordChanges = ##t
    \chord_sequence
  }
  \new Staff {
    \melody
  }
  >>
}

There seem to be a lot of modifiers that can be used in chordmode, but I don't see a way to get Alt chords when in chordmode. Is there a way to display Alt chords within chordmode, or is there some better way to display Alt chords that doesn't involve spelling them out all the time?

2
  • 1
    In case anyone else didn't know, an alt chord is apparently a dominant chord that fits into its root's altered scale. And to forestall the next question, an altered scale is apparently a scale where all tones not essential to the dominant 7th chord (root, maj.3rd, min.7th) have been changed: e.g. the altered scale in C would be C, D♭, E♭, F♭, G♭, A♭, B♭, C. — Presumably, this means that there are multiple ‘alt’ chords possible; I don't know if the question refers to any particular one.
    – gidds
    Commented Jun 5, 2022 at 18:25
  • 1
    I don’t have an answer because I don’t use Lilypond but “alt” should be preceded by a “7” since it is a dominant chord: E7alt. Commented Jun 5, 2022 at 18:26

1 Answer 1

4

Of course we could use \chordmode to enter that chord as e:9-.10-.11+.13-. But if you need this more often you could define the chord modifier alt to simply be able to enter e:alt like this:

\version "2.22.2"

\header {
  title = "Alt Chords"
}

%% taken from scm/chord-ignatzek-names.scm
#(define (replace-step p ps)
   "Copy PS, but replace the step of P in PS."
   (if (null? ps)
       '()
       (let* ((t (replace-step p (cdr ps))))
         (if (= (ly:pitch-steps p) (ly:pitch-steps (car ps)))
             (cons p t)
             (cons (car ps) t)))))

#(define (alt-modifier pitches)
   (set! pitches (replace-step (ly:make-pitch 0 2 0) pitches)) ; assure major 3rd
   (set! pitches (replace-step (ly:make-pitch 0 4 0) pitches)) ; assure pure 5th
   (append pitches
           (list
            (ly:make-pitch 0 6 FLAT) ; minor 7
            (ly:make-pitch 0 8 FLAT) ; minor 9
            (ly:make-pitch 0 9 FLAT) ; minor 10
            (ly:make-pitch 0 10 SHARP) ; aug 11
            (ly:make-pitch 0 12 FLAT) ; minor 13
            )))

%% update chordmodifiers to use alt
chordmodifiers =
#`((alt . ,alt-modifier) . ,chordmodifiers)

chord_sequence = \relative {
  \chordmode { a1:7 e:alt d:alt cis:alt }
}

melody = \relative {
  \key a \major
  \time 4/4
  a1 | e'1 | d | cis
}

\score {
  <<
  \new ChordNames {
    \set chordChanges = ##t
    \chord_sequence
  }
  \new Staff {
    \melody
  }
  \new Staff \with {
    \magnifyStaff #0.8
  } \chord_sequence
  >>
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.