@item chordNameSeparator
-Different parts of a chord name are normally separated by a slash.
-By setting @code{chordNameSeparator}, you can use any desired markup
-for a separator.
+Different parts of a chord name are normally separated by a small
+amount of horizontal space. By setting @code{chordNameSeparator}, you
+can use any desired markup for a separator. This does not affect the
+separator between a chord and its bass note; to customize that, use
+@code{slashChordSeparator}.
+
+@lilypond[verbatim,quote,ragged-right]
+\chords {
+ c4:7.9- c:7.9-/g
+ \set chordNameSeparator = \markup { "/" }
+ \break
+ c4:7.9- c:7.9-/g
+}
+@end lilypond
+
+@funindex slashChordSeparator
+
+@item slashChordSeparator
+
+Chords can be played over a bass note other than the conventional root
+of the chord. These are known as ``inversions'' or ``slash chords'',
+because the default way of notating them is with a forward slash
+between the main chord and the bass note. Therefore the value of
+@code{slashChordSeparator} defaults to a forward slash, but you can
+change it to any markup you choose.
+
+@lilypond[verbatim,quote,ragged-right]
+\chords {
+ c4:7.9- c:7.9-/g
+ \set slashChordSeparator = \markup { " over " }
+ \break
+ c4:7.9- c:7.9-/g
+}
+@end lilypond
@funindex chordNameExceptions
--- /dev/null
+\version "2.15.16"
+\header {
+ texidoc = "The layout of chord inversions can be tuned with
+@code{slashChordSeparator}."
+}
+
+\chords {
+ des/c
+ \set slashChordSeparator = " over "
+ des/c
+}
chordNameFunction = #ignatzek-chord-names
majorSevenSymbol = #whiteTriangleMarkup
chordNameLowercaseMinor = ##f
- chordNameSeparator = #(make-simple-markup "/")
+ chordNameSeparator = #(make-hspace-markup 0.5)
+ slashChordSeparator = #(make-simple-markup "/")
chordNameExceptions = #ignatzekExceptions
chordNoteNamer = #'()
chordRootNamer = #note-name->markup
(make-line-markup total)))
(let* ((sep (ly:context-property context 'chordNameSeparator))
+ (slashsep (ly:context-property context 'slashChordSeparator))
(root-markup (name-root root lowercase-root?))
(add-markups (map (lambda (x) (glue-word-to-step "add" x))
addition-pitches))
suffixes
add-markups) sep))
(base-stuff (if (ly:pitch? bass-pitch)
- (list sep (name-note bass-pitch #f))
+ (list slashsep (name-note bass-pitch #f))
'())))
(set! base-stuff
,exception-markup
.
,(if (ly:pitch? bass-pitch)
- (list (ly:context-property context 'chordNameSeparator)
+ (list (ly:context-property context 'slashChordSeparator)
(name-note bass-pitch #f))
'()))))
(chordNameLowercaseMinor ,boolean? "Downcase roots of minor chords?")
(chordNameSeparator ,markup? "The markup object used to
separate parts of a chord name.")
+ (slashChordSeparator ,markup? "The markup object used to separate
+a chord name from its root note in case of inversions or slash
+chords.")
(chordNoteNamer ,procedure? "A function that converts from a pitch
object to a text markup. Used for single pitches.")
(chordPrefixSpacer ,number? "The space added between the root