]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/user/fretted-strings.itely
Merge branch 'master' of ssh://kainhofer@git.sv.gnu.org/srv/git/lilypond into dev...
[lilypond.git] / Documentation / user / fretted-strings.itely
index 0cf29233f1b562a518c005d66d12a71684bcf8dd..3c2d64d28bf26b64d502c69a50164dede5cf117d 100644 (file)
@@ -626,6 +626,7 @@ default, the @code{FretBoards} context will display fret diagrams that
 are stored in a lookup table:
 
 @lilypond[verbatim, ragged-right, quote]
+\include "predefined-guitar-fretboards.ly"
 \context FretBoards {
   \chordmode {
     c1 d
@@ -633,13 +634,22 @@ are stored in a lookup table:
 }
 @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
@@ -651,6 +661,7 @@ This is achieved by putting a @code{ChordNames} context in parallel with
 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
 }
@@ -666,9 +677,10 @@ mychords = \chordmode{
 @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
 }
@@ -690,26 +702,76 @@ mychordlist = {
 
 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
@@ -717,10 +779,61 @@ the neck to different posistions to provide different chords.  Chord
 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
@@ -728,8 +841,9 @@ The appearance of the fret diagrams is controlled using the
 @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]
 <<
@@ -739,7 +853,6 @@ which can be used to play the notes.
      }
   }
   \context FretBoards {
-  \predefinedDiagramsOff
     < f, c f a c' f'>1
     < g,\6 b, d g b g'>
   }
@@ -751,6 +864,40 @@ which can be used to play the notes.
 >>
 @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}
@@ -764,7 +911,6 @@ context.
      }
   }
   \context FretBoards {
-  \predefinedDiagramsOff
     < c e g c' e' > 1
     < c\5 e g c' e' > 1
     < d a d' f'>
@@ -790,7 +936,6 @@ Fingerings can be added to FretBoard fret diagrams.
      }
   }
   \context FretBoards {
-  \predefinedDiagramsOff
     < c\5-3 e-2 g c'-1 e' > 1
     < d\4 a-2 d'-3 f'-1>
   }
@@ -811,7 +956,7 @@ 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 
 @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
@@ -822,10 +967,14 @@ property.
 
 @c TODO -- snippet for using StringTunings
 
+@predefined
+\predefinedFretboardsOff,
+\predefinedFretboardsOn.
+
 @seealso
 
 Notation Reference:
-@ref{Custom tablatures}
+@ref{Custom tablatures}.
 
 Snippets:
 @rlsr{Fretted strings}.