are stored in a lookup table:
@lilypond[verbatim, ragged-right, quote]
+\include "predefined-guitar-fretboards.ly"
\context FretBoards {
\chordmode {
c1 d
}
@end lilypond
-Fret diagrams are stored based on the pitches of a chord and the value of
-@code{StringTunings} that is currently in use. Currently, predefined chords
-are available only for @code{guitar-tuning}. Chord pitches can be entered
-either as simultaneous music or using chord mode (see
+The default predefined fret diagrams are contained in the file
+@code{predefined-guitar-fretboards.ly}. Fret diagrams are
+stored based on the pitches of a chord and the value of
+@code{stringTunings} that is currently in use.
+@code{predefined-guitar-fretboards.ly} contains predefined
+fret diagrams only for @code{guitar-tuning}. Predefined fret
+diagrams can be added for other instruments or other tunings
+by following the examples found in
+@code{predefined-guitar-fretboards.ly}.
+
+Chord pitches can be entered
+either as simultaneous music or using chord mode (see
@ref{Chord mode overview}).
@lilypond[verbatim, ragged-right,quote]
+\include "predefined-guitar-fretboards.ly"
\context FretBoards {
\chordmode {c1}
<c' e' g'>1
a @code{FretBoards} context and giving both contexts the same music.
@lilypond[verbatim, ragged-right, quote]
+\include "predefined-guitar-fretboards.ly"
mychords = \chordmode{
c1 f g
}
@end lilypond
Predefined fret diagrams are transposable, as long as a diagram for the
-transposed chord is stored in the fret diagram table.
+transposed chord is stored in the fret diagram table.
@lilypond[verbatim, ragged-right, quote]
+\include "predefined-guitar-fretboards.ly"
mychords = \chordmode{
c1 f g
}
The predefined fret diagram table contains seven chords (major, minor,
augmented, diminished, dominant seventh, major seventh, minor seventh)
-for each of 17 keys (C, C\sharp?, D\flat, D, D\sharp, E\flat, E, F,
-F\sharp, G\flat, G, G\sharp, A\flat, A, A\sharp, B\flat, and B). A
-complete list of the predefined fret diagrams is shown in
-@ref{Predefined fretboard diagrams}. If there is no entry
-in the table for a chord, the FretBoards
-engraver will calculate a fret-diagram using the automatic fret diagram
-functionality described in @ref{Automatic fret diagrams}.
-
-TODO -- example of existing chord, non-existing chord
-
-Fret diagrams can be added to the fret diagram table. To add a diagram you
-must specify the chord for the diagram, the tuning to be used, and the
+for each of 17 keys. A complete list of the predefined fret diagrams is
+shown in @ref{Predefined fretboard diagrams}. If there is no entry in
+the table for a chord, the FretBoards engraver will calculate a
+fret-diagram using the automatic fret diagram functionality described in
+@ref{Automatic fret diagrams}.
+
+@lilypond[verbatim, ragged-right, quote]
+\include "predefined-guitar-fretboards.ly"
+mychords = \chordmode{
+ c1 c:9
+}
+
+<<
+ \context ChordNames {
+ \mychords
+ }
+ \context FretBoards {
+ \mychords
+ }
+>>
+@end lilypond
+
+Fret diagrams can be added to the fret diagram table. To add a diagram,
+you must specify the chord for the diagram, the tuning to be used, and the
fret-diagram-terse definition string for the diagram.
-TODO -- add a few diagrams to the table and display it
+@lilypond[verbatim, ragged-right, quote]
+\include "predefined-guitar-fretboards.ly"
+
+\storePredefinedDiagram \chordmode {c:9}
+ #guitar-tuning
+ #"x;3-2;2-1;3-3;3-4;x;"
+
+mychords = \chordmode{
+ c1 c:9
+}
+
+<<
+ \context ChordNames {
+ \mychords
+ }
+ \context FretBoards {
+ \mychords
+ }
+>>
+@end lilypond
Different fret diagrams for the same chord name can be stored using different
octaves of pitches.
-TODO -- show the use of different fret diagrams
+@lilypond[verbatim, ragged-right, quote]
+\include "predefined-guitar-fretboards.ly"
+
+\storePredefinedDiagram \chordmode {c'}
+ #guitar-tuning
+ #(offset-fret 2 (chord-shape 'bes))
+
+mychords = \chordmode{
+ c1 c'
+}
+
+<<
+ \context ChordNames {
+ \mychords
+ }
+ \context FretBoards {
+ \mychords
+ }
+>>
+@end lilypond
In addition to fret diagrams, LilyPond stores an internal list of chord
shapes. The chord shapes are fret diagrams that can be shifted along
shapes can be added to the internal list and then used to define
predefined fret diagrams.
-TODO -- snippet with power chords
+@lilypond[verbatim, ragged-right, quote]
+\include "predefined-guitar-fretboards.ly"
+
+% add a new chord shape
+
+\addChordShape #'powerf #"1-1;3-3;3-4;x;x;x;"
+
+% add some new chords based on the power chord shape
+
+\storePredefinedDiagram \chordmode {f'}
+ #guitar-tuning
+ #(chord-shape 'powerf)
+\storePredefinedDiagram \chordmode {g'}
+ #guitar-tuning
+ #(offset-fret 2 (chord-shape 'powerf))
+
+mychords = \chordmode{
+ f1 f' g g'
+}
+
+<<
+ \context ChordNames {
+ \mychords
+ }
+ \context FretBoards {
+ \mychords
+ }
+>>
+@end lilypond
+
+The graphical layout of a fret diagram can be customized according to
+user preference through the properties of the @code{fret-diagram-interface}.
+Details are found at @rinternals{fret-diagram-interface}. For a
+predefined fret diagram, the interface properties belong to
+@code{FretBoards.FretBoard}.
+
+@c @snippets
+
+@seealso
+
+Notation Reference:
+@ref{Custom tablatures},
+@ref{Automatic fret diagrams},
+@ref{Chord mode overview},
+@ref{Predefined fretboard diagrams}.
+
+Installed Files:
+@file{ly/predefined-guitar-fretboards.ly}.
+
+Snippets:
+@rlsr{Fretted strings}.
+
+Internals Reference:
+@rinternals {fret-diagram-interface}.
-The appearance of the fret diagrams is controlled using the
-@code{fret-diagram-interface}, which is explained in TODO add ref.
@node Automatic fret diagrams
@subsubsection Automatic fret diagrams
@cindex chord diagrams
Fret diagrams can be automatically created from entered notes using the
-@code{FretBoards} context. This context calculates strings and frets
-which can be used to play the notes.
+@code{FretBoards} context. If no predefined diagram is available for
+the entered notes in the active @code{stringTunings}, this context
+calculates strings and frets that can be used to play the notes.
@lilypond[quote,ragged-right,verbatim]
<<
}
}
\context FretBoards {
- \predefinedDiagramsOff
< f, c f a c' f'>1
< g,\6 b, d g b g'>
}
>>
@end lilypond
+As no predefined diagrams are loaded by default, automatic calculation
+of fret diagrams is the default behavior. Once default diagrams are
+loaded, automatic calculation can be enabled and disabled with predefined
+commands:
+
+@lilypond[quote,ragged-right,verbatim]
+
+\storePredefinedDiagram <c\5 e g c' e'>
+ #guitar-tuning
+ #"x;3-1-(;5-2;5-3;5-4;3-1-1);"
+<<
+ \context ChordNames {
+ \chordmode {
+ c1 c c
+ }
+ }
+ \context FretBoards {
+ <c\5 e g c' e'>1
+ \predefinedFretboardsOff
+ <c\5 e g c' e'>
+ \predefinedFretboardsOn
+ <c\5 e g c' e'>
+ }
+ \context Staff {
+ \clef "treble_8"
+ <c\5 e g c' e'>1
+ <c\5 e g c' e'>
+ <c\5 e g c' e'>
+ }
+>>
+@end lilypond
+
+
+
Notes can be explicitly placed on a string. It is often enough
to place only the lowest note on an explicit string; the rest of
the notes will then be placed appropriately by the @code{FretBoards}
}
}
\context FretBoards {
- \predefinedDiagramsOff
< c e g c' e' > 1
< c\5 e g c' e' > 1
< d a d' f'>
}
}
\context FretBoards {
- \predefinedDiagramsOff
< c\5-3 e-2 g c'-1 e' > 1
< d\4 a-2 d'-3 f'-1>
}
user preference through the properties of the @code{fret-diagram-interface}.
Details are found at @rinternals{fret-diagram-interface}. For a
@code{FretBoards} fret diagram, the interface properties belong to
-@code{FretBoards}.
+@code{FretBoards.FretBoard}.
@snippets
The minimum fret to be used in calculating strings and frets for
@c TODO -- snippet for using StringTunings
+@predefined
+\predefinedFretboardsOff,
+\predefinedFretboardsOn.
+
@seealso
Notation Reference:
-@ref{Custom tablatures}
+@ref{Custom tablatures}.
Snippets:
@rlsr{Fretted strings}.