1 %%%% predefined-fretboard-init.ly
3 %%%% source file of the GNU LilyPond music typesetter
5 %%%% (c) 2008 Carl D. Sorensen <c_sorensen@byu.edu>
7 %%%%% define storage structures
9 % base-chord-shapes is an alist of chord shapes
10 % in the form of fret-diagram-terse strings with
11 % scheme symbols as keys. For convenience, the
12 % symbols are LilyPond chordmode chord descriptions,
13 % but that is unnecessary.
15 #(define base-chord-shapes
17 '(f . "1-1-(;3-3;3-4;2-2;1-1;1-1-);")
18 '(f:m . "1-1-(;3-3;3-4;1-1;1-1;1-1-);")
19 '(f:7 . "1-1-(;3-3;1-1;2-2;1-1;1-1-);")
20 '(f:m7 . "1-1-(;3-3;1-1;1-1;1-1;1-1-);")
21 '(bes . "x;1-1-(;3-2;3-3;3-4;1-1-);")
22 '(bes:m . "x;1-1-(;3-3;3-4;2-2;1-1-);")
23 '(bes:m7 . "x;1-1-(;3-3;1-1;2-2;1-1-);")
24 '(bes:7 . "x;1-1-(;3-2;1-1;3-3;1-1-);")
25 '(bes:maj7 . "x;1-1;3-3;2-2;3-4;x;")
26 '(c:dim . "x;x;1-1;2-3;1-2;2-4;")
27 '(c:aug . "x;x;2-2;1-1-(;1-1-);4-4;")
28 '(cis . "x;x;3-3;1-1-(;2-2;1-1-);")
29 '(ees:dim . "x;x;1-1;2-3;1-2;2-4;")
30 '(a:dim . "x;x;1-1;2-3;1-2;2-4;")
34 % music function for adding a chord shape to
38 #(define-music-function (parser location shape-pair)
40 (set! base-chord-shapes (acons
44 (make-music 'SequentialMusic 'void #t))
47 % music function for adding a predefined diagram to
50 storePredefinedDiagram =
51 #(define-music-function (parser location chord tuning terse-definition)
52 (ly:music? list? string?)
53 (let* ((pitches (event-chord-pitches
54 (car (extract-named-music chord 'EventChord))))
55 (hash-key (cons tuning pitches)))
56 (hash-set! fretboard-table
58 (parse-terse-string terse-definition)))
59 (make-music 'SequentialMusic 'void #t))
62 % for convenience, to eliminate storage list in .ly references
64 #(define (chord-shape shape-code)
65 (get-chord-shape shape-code base-chord-shapes))
67 #(define predefined-diagram-table fretboard-table)
69 %%%%%%%%%%%%%%%%%%%%%%%
72 % definitions of predefined diagrams below here
76 \storePredefinedDiagram \chordmode {c}
79 \storePredefinedDiagram \chordmode {c:m}
81 #(offset-fret 2 (chord-shape 'bes:m))
82 \storePredefinedDiagram \chordmode {c:aug}
85 \storePredefinedDiagram \chordmode {c:dim}
88 \storePredefinedDiagram \chordmode {c:7}
90 #"o;3-3;2-2;3-4;1-1;o;"
91 \storePredefinedDiagram \chordmode {c:maj7}
94 \storePredefinedDiagram \chordmode {c:m7}
96 #(offset-fret 2 (chord-shape 'bes:m7))
100 \storePredefinedDiagram \chordmode {cis}
103 \storePredefinedDiagram \chordmode {cis:m}
105 #"x;x;2-2;1-1;2-3;o;"
106 \storePredefinedDiagram \chordmode {cis:aug}
108 #"x;4-4;3-3;2-1;2-2;x;"
109 \storePredefinedDiagram \chordmode {cis:dim}
111 #(offset-fret 1 (chord-shape 'c:dim))
112 \storePredefinedDiagram \chordmode {cis:7}
114 #"x;x;3-2;4-3;2-1;4-4;"
115 \storePredefinedDiagram \chordmode {cis:maj7}
117 #"x;4-4;3-3;1-1-(;1-1;1-1-);"
118 \storePredefinedDiagram \chordmode {cis:m7}
120 #"x;4-4;2-2;1-1;o;o;"
124 \storePredefinedDiagram \chordmode {des}
126 #"x;x;3-3;1-1-(;2-2;1-1-);"
127 \storePredefinedDiagram \chordmode {des:m}
129 #"x;x;2-2;1-1;2-3;o;"
130 \storePredefinedDiagram \chordmode {des:aug}
132 #"x;4-4;3-3;2-1;2-2;x;"
133 \storePredefinedDiagram \chordmode {des:dim}
135 #(offset-fret 1 (chord-shape 'c:dim))
136 \storePredefinedDiagram \chordmode {des:7}
138 #"x;x;3-2;4-3;2-1;4-4;"
139 \storePredefinedDiagram \chordmode {des:maj7}
141 #"x;4-4;3-3;1-1-(;1-1;1-1-);"
142 \storePredefinedDiagram \chordmode {des:m7}
144 #"x;4-4;2-2;1-1;o;o;"
148 \storePredefinedDiagram \chordmode {d}
150 #"x;x;o;2-1;3-2;2-3;"
151 \storePredefinedDiagram \chordmode {d:m}
153 #"x;x;o;2-2;3-3;1-1;"
154 \storePredefinedDiagram \chordmode {d:aug}
156 #"x;x;o;3-2;3-3;2-1;"
157 \storePredefinedDiagram \chordmode {d:dim}
160 \storePredefinedDiagram \chordmode {d:7}
162 #"x;x;o;2-2;1-1;2-3;"
163 \storePredefinedDiagram \chordmode {d:maj7}
165 #"x;x;o;2-1;2-2;2-3;"
166 \storePredefinedDiagram \chordmode {d:m7}
168 #"x;x;o;2-2;1-1-(;1-1-);"
172 \storePredefinedDiagram \chordmode {dis}
174 #(offset-fret 2 (chord-shape 'cis))
175 \storePredefinedDiagram \chordmode {dis:m}
177 #"x;x;4-3;3-2;4-4;1-1;"
178 \storePredefinedDiagram \chordmode {dis:aug}
180 #"3-3;2-2;1-1;o;o;3-4"
181 \storePredefinedDiagram \chordmode {dis:dim}
183 #(chord-shape 'ees:dim)
184 \storePredefinedDiagram \chordmode {dis:7}
186 #"x;x;1-1;3-3;2-2;3-4;"
187 \storePredefinedDiagram \chordmode {dis:maj7}
189 #"x;x;1-1;3-2;3-3;3-4;"
190 \storePredefinedDiagram \chordmode {dis:m7}
192 #"x;x;1-1;3-2;2-3;2-4;"
196 \storePredefinedDiagram \chordmode {ees}
198 #(offset-fret 2 (chord-shape 'cis))
199 \storePredefinedDiagram \chordmode {ees:m}
201 #"x;x;4-3;3-2;4-4;1-1;"
202 \storePredefinedDiagram \chordmode {ees:aug}
204 #"3-3;2-2;1-1;o;o;3-4"
205 \storePredefinedDiagram \chordmode {ees:dim}
207 #(chord-shape 'ees:dim)
208 \storePredefinedDiagram \chordmode {ees:7}
210 #"x;x;1-1;3-3;2-2;3-4;"
211 \storePredefinedDiagram \chordmode {ees:maj7}
213 #"x;x;1-1;3-2;3-3;3-4;"
214 \storePredefinedDiagram \chordmode {ees:m7}
216 #"x;x;1-1;3-2;2-3;2-4;"
220 \storePredefinedDiagram \chordmode {e}
222 #"o;2-2;2-3;1-1;o;o;"
223 \storePredefinedDiagram \chordmode {e:m}
226 \storePredefinedDiagram \chordmode {e:aug}
228 #"o;3-3;2-2;1-1;x;x;"
229 \storePredefinedDiagram \chordmode {e:dim}
231 #(offset-fret 1 (chord-shape 'ees:dim))
232 \storePredefinedDiagram \chordmode {e:7}
235 \storePredefinedDiagram \chordmode {e:maj7}
237 #"o;2-3;1-1;1-2;o;x;"
238 \storePredefinedDiagram \chordmode {e:m7}
244 \storePredefinedDiagram \chordmode {f}
247 \storePredefinedDiagram \chordmode {f:m}
250 \storePredefinedDiagram \chordmode {f:aug}
252 #"x;x;1-1;4-3;4-4;3-2;"
253 \storePredefinedDiagram \chordmode {f:dim}
256 \storePredefinedDiagram \chordmode {f:7}
259 \storePredefinedDiagram \chordmode {f:maj7}
261 #"x;3-3;3-4;2-2;1-1;"
262 \storePredefinedDiagram \chordmode {f:m7}
268 \storePredefinedDiagram \chordmode {fis}
270 #(offset-fret 1 (chord-shape 'f))
271 \storePredefinedDiagram \chordmode {fis:m}
273 #(offset-fret 1 (chord-shape 'f:m))
274 \storePredefinedDiagram \chordmode {fis:aug}
276 #"2-2;1-1;o;3-4-(;3-4-);2-3;"
277 \storePredefinedDiagram \chordmode {fis:dim}
279 #"x;x;1-1;2-3;1-2;2-4;"
280 \storePredefinedDiagram \chordmode {fis:7}
282 #(offset-fret 1 (chord-shape 'f:7))
283 \storePredefinedDiagram \chordmode {fis:maj7}
285 #"x;x;4-4;3-3;2-2;1-1;"
286 \storePredefinedDiagram \chordmode {fis:m7}
288 #(offset-fret 1 (chord-shape 'f:m7))
292 \storePredefinedDiagram \chordmode {ges}
294 #(offset-fret 1 (chord-shape 'f))
295 \storePredefinedDiagram \chordmode {ges:m}
297 #(offset-fret 1 (chord-shape 'f:m))
298 \storePredefinedDiagram \chordmode {ges:aug}
300 #"2-2;1-1;o;3-4-(;3-4-);2-3;"
301 \storePredefinedDiagram \chordmode {ges:dim}
303 #"x;x;1-1;2-3;1-2;2-4;"
304 \storePredefinedDiagram \chordmode {ges:7}
306 #(offset-fret 1 (chord-shape 'f:7))
307 \storePredefinedDiagram \chordmode {ges:maj7}
309 #"x;x;4-4;3-3;2-2;1-1;"
310 \storePredefinedDiagram \chordmode {ges:m7}
312 #(offset-fret 1 (chord-shape 'f:m7))
316 \storePredefinedDiagram \chordmode {g}
318 #"3-2;2-1;o;o;o;3-3;"
319 \storePredefinedDiagram \chordmode {g:m}
321 #(offset-fret 2 (chord-shape 'f:m))
322 \storePredefinedDiagram \chordmode {g:aug}
324 #"x;x;5-1;8-3;8-4;7-2;"
325 \storePredefinedDiagram \chordmode {g:dim}
327 #"x;x;5-2;6-4;5-3;3-1;"
328 \storePredefinedDiagram \chordmode {g:7}
330 #"3-3;2-2;o;o;o;1-1;"
331 \storePredefinedDiagram \chordmode {g:maj7}
333 #"x;x;5-4;4-3;3-2;2-1;"
334 \storePredefinedDiagram \chordmode {g:m7}
336 #(offset-fret 2 (chord-shape 'f:m7))
340 \storePredefinedDiagram \chordmode {gis}
342 #(offset-fret 3 (chord-shape 'f))
343 \storePredefinedDiagram \chordmode {gis:m}
345 #(offset-fret 3 (chord-shape 'f:m))
346 \storePredefinedDiagram \chordmode {gis:aug}
348 #"o;3-4;2-3;1-1;1-2;o;"
349 \storePredefinedDiagram \chordmode {gis:dim}
352 \storePredefinedDiagram \chordmode {gis:7}
354 #(offset-fret 3 (chord-shape 'f:7))
355 \storePredefinedDiagram \chordmode {gis:maj7}
357 #"x;x;1-1-(;1-1;1-1-);3-3;"
358 \storePredefinedDiagram \chordmode {gis:m7}
360 #(offset-fret 3 (chord-shape 'f:m7))
364 \storePredefinedDiagram \chordmode {aes}
366 #(offset-fret 3 (chord-shape 'f))
367 \storePredefinedDiagram \chordmode {aes:m}
369 #(offset-fret 3 (chord-shape 'f:m))
370 \storePredefinedDiagram \chordmode {aes:aug}
372 #"o;3-4;2-3;1-1;1-2;o;"
373 \storePredefinedDiagram \chordmode {aes:dim}
376 \storePredefinedDiagram \chordmode {aes:7}
378 #(offset-fret 3 (chord-shape 'f:7))
379 \storePredefinedDiagram \chordmode {aes:maj7}
381 #"x;x;1-1-(;1-1;1-1-);3-3;"
382 \storePredefinedDiagram \chordmode {aes:m7}
384 #(offset-fret 3 (chord-shape 'f:m7))
388 \storePredefinedDiagram \chordmode {a}
390 #"x;o;2-1;2-2;2-3;o;"
391 \storePredefinedDiagram \chordmode {a:m}
393 #"x;o;2-2;2-3;1-1;o;"
394 \storePredefinedDiagram \chordmode {a:aug}
396 #"x;o;3-4;2-2;2-3;1-1;"
397 \storePredefinedDiagram \chordmode {a:dim}
399 #(chord-shape 'a:dim)
400 \storePredefinedDiagram \chordmode {a:7}
403 \storePredefinedDiagram \chordmode {a:maj7}
405 #"x;o;2-2;1-1;2-3;o;"
406 \storePredefinedDiagram \chordmode {a:m7}
412 \storePredefinedDiagram \chordmode {ais}
415 \storePredefinedDiagram \chordmode {ais:m}
417 #(chord-shape 'bes:m)
418 \storePredefinedDiagram \chordmode {ais:aug}
420 #"2-2;1-1;o;3-4-(;3-4-);2-3;"
421 \storePredefinedDiagram \chordmode {ais:dim}
423 #(offset-fret 1 (chord-shape 'a:dim))
424 \storePredefinedDiagram \chordmode {ais:7}
426 #(chord-shape 'bes:7)
427 \storePredefinedDiagram \chordmode {ais:maj7}
429 #"x;1-1;3-3;2-2;3-4;x;"
430 \storePredefinedDiagram \chordmode {ais:m7}
432 #(chord-shape 'bes:m7)
436 \storePredefinedDiagram \chordmode {bes}
439 \storePredefinedDiagram \chordmode {bes:m}
441 #(chord-shape 'bes:m)
442 \storePredefinedDiagram \chordmode {bes:aug}
444 #"2-2;1-1;o;3-4-(;3-4-);2-3;"
445 \storePredefinedDiagram \chordmode {bes:dim}
447 #(offset-fret 1 (chord-shape 'a:dim))
448 \storePredefinedDiagram \chordmode {bes:7}
450 #(chord-shape 'bes:7)
451 \storePredefinedDiagram \chordmode {bes:maj7}
453 #"x;1-1;3-3;2-2;3-4;x;"
454 \storePredefinedDiagram \chordmode {bes:m7}
456 #(chord-shape 'bes:m7)
460 \storePredefinedDiagram \chordmode {b}
462 #(offset-fret 1 (chord-shape 'bes))
463 \storePredefinedDiagram \chordmode {b:m}
465 #(offset-fret 1 (chord-shape 'bes:m))
466 \storePredefinedDiagram \chordmode {b:aug}
469 \storePredefinedDiagram \chordmode {b:dim}
472 \storePredefinedDiagram \chordmode {b:7}
474 #(offset-fret 1 (chord-shape 'bes:7))
475 \storePredefinedDiagram \chordmode {b:maj7}
477 #"x;2-1;4-3;3-2;4-4;x;"
478 \storePredefinedDiagram \chordmode {b:m7}
480 #(offset-fret 1 (chord-shape 'bes:m7))