1 %%%% predefined-fretboard-init.ly
3 %%%% source file of the GNU LilyPond music typesetter
5 %%%% (c) 2008 Carl D. Sorensen <c_sorensen@byu.edu>
9 %%%%% define storage structures
11 % base-chord-shapes is an alist of chord shapes
12 % in the form of fret-diagram-terse strings with
13 % scheme symbols as keys. For convenience, the
14 % symbols are LilyPond chordmode chord descriptions,
15 % but that is unnecessary.
17 #(define base-chord-shapes
'())
20 % music function for adding a chord shape to
24 #(define-music-function
(parser location key-symbol shape-string
)
26 (set
! base-chord-shapes
27 (acons key-symbol shape-string base-chord-shapes
))
28 (make-music
'SequentialMusic
'void
#t
))
30 % for convenience, to eliminate storage list in .ly references
32 #(define
(chord-shape shape-code
)
33 (get-chord-shape shape-code base-chord-shapes
))
35 % music function for adding a predefined diagram to
38 storePredefinedDiagram
=
39 #(define-music-function
(parser location chord tuning terse-definition
)
40 (ly
:music? list? string?
)
41 (let
* ((pitches
(event-chord-pitches
42 (car
(extract-named-music chord
'EventChord
))))
43 (hash-key
(cons tuning pitches
)))
44 (hash-set
! fretboard-table
46 (parse-terse-string terse-definition
)))
47 (make-music
'SequentialMusic
'void
#t
))