% Pop chords as used in English/American popular music % by James L. Hammons % Written against \version "2.17.29" chordFlat = \markup { \hspace #0.2 \tiny \raise #1.0 \flat } chordSharp = \markup { \hspace #0.1 \teeny \raise #1.0 \sharp } popChordsMusic = { % Triads -\markup { "5" } -\markup { "2" } % -\markup { "sus2" } -\markup { "sus" } % -\markup { "sus4" } % -\markup { \small \raise #1.0 "o" } -\markup { \raise #0.8 "o" } % -\markup { "dim" } % -\markup { "aug" } % or + % Sixths -\markup { "6" } -\markup { "m6" } % Sevenths (including altered) -\markup { "7" } -\markup { "m7" } -\markup { "maj7" } -\markup { "7sus4" } -\markup { "7sus2" } -\markup { "7" \chordFlat "5" } -\markup { "7" \chordSharp "5" } % -\markup { "aug7" } % or +7 -\markup { "m(maj7)" } % -\markup { \small \raise #1.0 { "o" } "7" } -\markup { \raise #0.8 { "o" } "7" } % -\markup { "dim7" } % -\markup { \small \raise #1.0 { $(ly:wide- char->utf-8 #x00f8) } "7" } % -\markup { \raise #0.8 { $(ly:wide-char- >utf-8 #x00f8) } "7" } -\markup { "m7" \chordFlat "5" } -\markup { "maj7" \chordFlat "5" } -\markup { "maj7" \chordSharp "5" } % Ninths (including altered--incomplete) -\markup { "9" } -\markup { "m9" } -\markup { "maj9" } -\markup { "add9" } -\markup { "6/9" } -\markup { "m6/9" } -\markup { "m(maj9)" } -\markup { "7" \chordFlat "9" } -\markup { "7" \chordSharp "9" } %dim7add9, dim7b9, dim7#9, 9#5, 9b5, maj9#5, maj9b5, 9sus4, 9sus2 % Elevenths (incomplete) -\markup { "11" } -\markup { "m11" } -\markup { "maj11" } -\markup { "add11" } -\markup { "m add11" } -\markup { "m7add11" } % Thirteenths (incomplete) -\markup { "13" } -\markup { "m13" } -\markup { "maj13" } -\markup { "add13" } % Misc add chords -\markup { "7" \chordFlat "9" \chordFlat "13" } -\markup { "7" \chordSharp "5" \chordFlat "9" } -\markup { "maj9" \chordSharp "11" } -\markup { "9" \chordSharp "11" } } % Add to existing exceptions popChordsAdd = #(append (sequential-music-to-chord-exceptions popChordsMusic #t) ignatzekExceptions) % Bah, can't we set this globally? YES! See below... % \set chordNameExceptions = #popChords % Bah, this doesn't work either... % #(set chordNameExceptions popChords) % Let's try fixing the accidentals with some Scheme... %It breaks the file, let's not. %{ #(define (chord-name->pop-markup pitch) (let* ((alt (ly:pitch-alteration pitch))) (make-line-markup (list (make-simple-markup (vector-ref #("C" "D" "E" "F" "G" "A" "B") (ly:pitch-notename pitch))) ;; If it's natural, do nothing (if (= alt 0) (make-line-markup (list empty-markup)) (if (= alt FLAT) ;; Otherwise, handle adding the flat symbol (make-line-markup (list (make-hspace-markup 0.3) ;; WAS: 0.4 (make-tiny-markup (make-raise-markup 1.0 (make-musicglyph-markup "accidentals.flat"))) ) ) ;; or handle adding the sharp symbol (make-line-markup (list (make-hspace-markup 0.1) ;; WAS: 0.2 (make-teeny-markup (make-raise-markup 1.0 (make-musicglyph-markup "accidentals.sharp"))) ) ) ) ) ) ) ) ) %} %{ popChords = { \set chordNameExceptions = #popChordsAdd \set chordRootNamer = #chord-name->pop-markup \override ChordName.extra-spacing-width = #'(-1.25 . 1.25) } %} \layout { \context { \Score chordNameExceptions = #popChordsAdd % chordRootNamer = #chord-name->pop-markup \override ChordName.extra-spacing-width = #'(-1.25 . 1.25) } }