]> git.donarmstrong.com Git - lilypond.git/blob - ly/predefined-fretboards-init.ly
Add predefined fret diagrams to FretBoards context
[lilypond.git] / ly / predefined-fretboards-init.ly
1 %%%% predefined-fretboard-init.ly
2 %%%%
3 %%%% source file of the GNU LilyPond music typesetter
4 %%%%
5 %%%% (c) 2008 Carl D. Sorensen <c_sorensen@byu.edu>
6
7 %%%%% define storage structures
8
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.
14
15 #(define base-chord-shapes
16   (list
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;")
31   ))
32
33
34 % music function for adding a chord shape to
35 % base-chord-shapes
36
37 addChordShape =
38 #(define-music-function (parser location shape-pair)
39    (pair?)
40    (set! base-chord-shapes (acons
41                              (car shape-pair)
42                              (cdr shape-pair)
43                              base-chord-shapes))
44    (make-music 'SequentialMusic 'void #t))
45
46
47 % music function for adding a predefined diagram to
48 % fretboard-table
49
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 
57              hash-key 
58              (parse-terse-string terse-definition)))
59   (make-music 'SequentialMusic 'void #t))
60
61
62 % for convenience, to eliminate storage list in .ly references
63
64 #(define (chord-shape shape-code)
65    (get-chord-shape shape-code base-chord-shapes))
66
67 #(define predefined-diagram-table fretboard-table)
68
69 %%%%%%%%%%%%%%%%%%%%%%%
70 %%%
71
72 % definitions of predefined diagrams below here
73
74 %%%%  c chords
75 %
76 \storePredefinedDiagram \chordmode {c}
77                         #guitar-tuning 
78                         #"x;3-3;2-2;o;1-1;o;"  
79 \storePredefinedDiagram \chordmode {c:m} 
80                         #guitar-tuning 
81                         #(offset-fret 2 (chord-shape 'bes:m))
82 \storePredefinedDiagram \chordmode {c:aug} 
83                         #guitar-tuning 
84                         #(chord-shape 'c:aug)
85 \storePredefinedDiagram \chordmode {c:dim} 
86                         #guitar-tuning 
87                         #(chord-shape 'c:dim)
88 \storePredefinedDiagram \chordmode {c:7} 
89                         #guitar-tuning 
90                         #"o;3-3;2-2;3-4;1-1;o;"  
91 \storePredefinedDiagram \chordmode {c:maj7} 
92                         #guitar-tuning 
93                         #"x;3-3;2-2;o;o;o;"  
94 \storePredefinedDiagram \chordmode {c:m7} 
95                         #guitar-tuning 
96                         #(offset-fret 2 (chord-shape 'bes:m7))
97
98 %%%%  cis chords
99 %
100 \storePredefinedDiagram \chordmode {cis} 
101                         #guitar-tuning 
102                         #(chord-shape 'cis)
103 \storePredefinedDiagram \chordmode {cis:m} 
104                         #guitar-tuning 
105                         #"x;x;2-2;1-1;2-3;o;"  
106 \storePredefinedDiagram \chordmode {cis:aug} 
107                         #guitar-tuning 
108                         #"x;4-4;3-3;2-1;2-2;x;"  
109 \storePredefinedDiagram \chordmode {cis:dim} 
110                         #guitar-tuning 
111                         #(offset-fret 1 (chord-shape 'c:dim))
112 \storePredefinedDiagram \chordmode {cis:7} 
113                         #guitar-tuning 
114                         #"x;x;3-2;4-3;2-1;4-4;"  
115 \storePredefinedDiagram \chordmode {cis:maj7} 
116                         #guitar-tuning 
117                         #"x;4-4;3-3;1-1-(;1-1;1-1-);"  
118 \storePredefinedDiagram \chordmode {cis:m7} 
119                         #guitar-tuning 
120                         #"x;4-4;2-2;1-1;o;o;"
121
122 %%%%  des chords
123 %
124 \storePredefinedDiagram \chordmode {des} 
125                         #guitar-tuning 
126                         #"x;x;3-3;1-1-(;2-2;1-1-);"  
127 \storePredefinedDiagram \chordmode {des:m} 
128                         #guitar-tuning 
129                         #"x;x;2-2;1-1;2-3;o;"  
130 \storePredefinedDiagram \chordmode {des:aug} 
131                         #guitar-tuning 
132                         #"x;4-4;3-3;2-1;2-2;x;"  
133 \storePredefinedDiagram \chordmode {des:dim} 
134                         #guitar-tuning 
135                         #(offset-fret 1 (chord-shape 'c:dim))
136 \storePredefinedDiagram \chordmode {des:7} 
137                         #guitar-tuning 
138                         #"x;x;3-2;4-3;2-1;4-4;"  
139 \storePredefinedDiagram \chordmode {des:maj7} 
140                         #guitar-tuning 
141                         #"x;4-4;3-3;1-1-(;1-1;1-1-);"  
142 \storePredefinedDiagram \chordmode {des:m7} 
143                         #guitar-tuning 
144                         #"x;4-4;2-2;1-1;o;o;"
145
146 %%%%  d chords
147 %
148 \storePredefinedDiagram \chordmode {d} 
149                         #guitar-tuning 
150                         #"x;x;o;2-1;3-2;2-3;"  
151 \storePredefinedDiagram \chordmode {d:m} 
152                         #guitar-tuning 
153                         #"x;x;o;2-2;3-3;1-1;"  
154 \storePredefinedDiagram \chordmode {d:aug} 
155                         #guitar-tuning 
156                         #"x;x;o;3-2;3-3;2-1;"  
157 \storePredefinedDiagram \chordmode {d:dim} 
158                         #guitar-tuning 
159                         #"x;x;o;1-1;o;1-2;"  
160 \storePredefinedDiagram \chordmode {d:7} 
161                         #guitar-tuning 
162                         #"x;x;o;2-2;1-1;2-3;"  
163 \storePredefinedDiagram \chordmode {d:maj7} 
164                         #guitar-tuning 
165                         #"x;x;o;2-1;2-2;2-3;"  
166 \storePredefinedDiagram \chordmode {d:m7} 
167                         #guitar-tuning 
168                         #"x;x;o;2-2;1-1-(;1-1-);"  
169
170 %%%%  dis chords
171 %
172 \storePredefinedDiagram \chordmode {dis} 
173                         #guitar-tuning 
174                         #(offset-fret 2 (chord-shape 'cis))
175 \storePredefinedDiagram \chordmode {dis:m} 
176                         #guitar-tuning 
177                         #"x;x;4-3;3-2;4-4;1-1;"  
178 \storePredefinedDiagram \chordmode {dis:aug} 
179                         #guitar-tuning 
180                         #"3-3;2-2;1-1;o;o;3-4"  
181 \storePredefinedDiagram \chordmode {dis:dim} 
182                         #guitar-tuning 
183                         #(chord-shape 'ees:dim) 
184 \storePredefinedDiagram \chordmode {dis:7} 
185                         #guitar-tuning 
186                         #"x;x;1-1;3-3;2-2;3-4;"  
187 \storePredefinedDiagram \chordmode {dis:maj7} 
188                         #guitar-tuning 
189                         #"x;x;1-1;3-2;3-3;3-4;"  
190 \storePredefinedDiagram \chordmode {dis:m7} 
191                         #guitar-tuning 
192                         #"x;x;1-1;3-2;2-3;2-4;"  
193
194 %%%%  ees chords
195 %
196 \storePredefinedDiagram \chordmode {ees} 
197                         #guitar-tuning 
198                         #(offset-fret 2 (chord-shape 'cis))
199 \storePredefinedDiagram \chordmode {ees:m} 
200                         #guitar-tuning 
201                         #"x;x;4-3;3-2;4-4;1-1;"  
202 \storePredefinedDiagram \chordmode {ees:aug} 
203                         #guitar-tuning 
204                         #"3-3;2-2;1-1;o;o;3-4"  
205 \storePredefinedDiagram \chordmode {ees:dim} 
206                         #guitar-tuning 
207                         #(chord-shape 'ees:dim) 
208 \storePredefinedDiagram \chordmode {ees:7} 
209                         #guitar-tuning 
210                         #"x;x;1-1;3-3;2-2;3-4;"  
211 \storePredefinedDiagram \chordmode {ees:maj7} 
212                         #guitar-tuning 
213                         #"x;x;1-1;3-2;3-3;3-4;"  
214 \storePredefinedDiagram \chordmode {ees:m7} 
215                         #guitar-tuning 
216                         #"x;x;1-1;3-2;2-3;2-4;"  
217
218 %%%%  e chords
219 %
220 \storePredefinedDiagram \chordmode {e} 
221                         #guitar-tuning 
222                         #"o;2-2;2-3;1-1;o;o;"  
223 \storePredefinedDiagram \chordmode {e:m} 
224                         #guitar-tuning 
225                         #"o;2-2;2-3;o;o;o;"  
226 \storePredefinedDiagram \chordmode {e:aug} 
227                         #guitar-tuning 
228                         #"o;3-3;2-2;1-1;x;x;"  
229 \storePredefinedDiagram \chordmode {e:dim} 
230                         #guitar-tuning 
231                         #(offset-fret 1 (chord-shape 'ees:dim))
232 \storePredefinedDiagram \chordmode {e:7} 
233                         #guitar-tuning 
234                         #"o;2-2;o;1-1;o;o;"  
235 \storePredefinedDiagram \chordmode {e:maj7} 
236                         #guitar-tuning 
237                         #"o;2-3;1-1;1-2;o;x;"  
238 \storePredefinedDiagram \chordmode {e:m7} 
239                         #guitar-tuning 
240                         #"o;2-2;o;o;o;o;"  
241
242 %%%%  f chords
243 %
244 \storePredefinedDiagram \chordmode {f} 
245                         #guitar-tuning 
246                         #(chord-shape 'f)
247 \storePredefinedDiagram \chordmode {f:m} 
248                         #guitar-tuning 
249                         #(chord-shape 'f:m)
250 \storePredefinedDiagram \chordmode {f:aug} 
251                         #guitar-tuning 
252                         #"x;x;1-1;4-3;4-4;3-2;"  
253 \storePredefinedDiagram \chordmode {f:dim} 
254                         #guitar-tuning 
255                         #"x;x;o;1-1;o;1-2;"  
256 \storePredefinedDiagram \chordmode {f:7} 
257                         #guitar-tuning 
258                         #(chord-shape 'f:7)
259 \storePredefinedDiagram \chordmode {f:maj7} 
260                         #guitar-tuning 
261                         #"x;3-3;3-4;2-2;1-1;"  
262 \storePredefinedDiagram \chordmode {f:m7} 
263                         #guitar-tuning 
264                         #(chord-shape 'f:m7)
265
266 %%%%  fis chords
267 %
268 \storePredefinedDiagram \chordmode {fis} 
269                         #guitar-tuning 
270                         #(offset-fret 1 (chord-shape 'f))
271 \storePredefinedDiagram \chordmode {fis:m} 
272                         #guitar-tuning 
273                         #(offset-fret 1 (chord-shape 'f:m))
274 \storePredefinedDiagram \chordmode {fis:aug} 
275                         #guitar-tuning 
276                         #"2-2;1-1;o;3-4-(;3-4-);2-3;" 
277 \storePredefinedDiagram \chordmode {fis:dim} 
278                         #guitar-tuning 
279                         #"x;x;1-1;2-3;1-2;2-4;"  
280 \storePredefinedDiagram \chordmode {fis:7} 
281                         #guitar-tuning 
282                         #(offset-fret 1 (chord-shape 'f:7))
283 \storePredefinedDiagram \chordmode {fis:maj7} 
284                         #guitar-tuning 
285                         #"x;x;4-4;3-3;2-2;1-1;"  
286 \storePredefinedDiagram \chordmode {fis:m7} 
287                         #guitar-tuning 
288                         #(offset-fret 1 (chord-shape 'f:m7))
289
290 %%%%  ges chords
291 %
292 \storePredefinedDiagram \chordmode {ges} 
293                         #guitar-tuning 
294                         #(offset-fret 1 (chord-shape 'f))
295 \storePredefinedDiagram \chordmode {ges:m} 
296                         #guitar-tuning 
297                         #(offset-fret 1 (chord-shape 'f:m))
298 \storePredefinedDiagram \chordmode {ges:aug} 
299                         #guitar-tuning 
300                         #"2-2;1-1;o;3-4-(;3-4-);2-3;" 
301 \storePredefinedDiagram \chordmode {ges:dim} 
302                         #guitar-tuning 
303                         #"x;x;1-1;2-3;1-2;2-4;"  
304 \storePredefinedDiagram \chordmode {ges:7} 
305                         #guitar-tuning 
306                         #(offset-fret 1 (chord-shape 'f:7))
307 \storePredefinedDiagram \chordmode {ges:maj7} 
308                         #guitar-tuning 
309                         #"x;x;4-4;3-3;2-2;1-1;"  
310 \storePredefinedDiagram \chordmode {ges:m7} 
311                         #guitar-tuning 
312                         #(offset-fret 1 (chord-shape 'f:m7))
313
314 %%%%  g chords
315 %
316 \storePredefinedDiagram \chordmode {g} 
317                         #guitar-tuning 
318                         #"3-2;2-1;o;o;o;3-3;"  
319 \storePredefinedDiagram \chordmode {g:m} 
320                         #guitar-tuning 
321                         #(offset-fret 2 (chord-shape 'f:m))
322 \storePredefinedDiagram \chordmode {g:aug} 
323                         #guitar-tuning 
324                         #"x;x;5-1;8-3;8-4;7-2;"  
325 \storePredefinedDiagram \chordmode {g:dim} 
326                         #guitar-tuning 
327                         #"x;x;5-2;6-4;5-3;3-1;"  
328 \storePredefinedDiagram \chordmode {g:7} 
329                         #guitar-tuning 
330                         #"3-3;2-2;o;o;o;1-1;"  
331 \storePredefinedDiagram \chordmode {g:maj7} 
332                         #guitar-tuning 
333                         #"x;x;5-4;4-3;3-2;2-1;"  
334 \storePredefinedDiagram \chordmode {g:m7} 
335                         #guitar-tuning 
336                         #(offset-fret 2 (chord-shape 'f:m7))
337
338 %%%%  gis chords
339 %
340 \storePredefinedDiagram \chordmode {gis} 
341                         #guitar-tuning 
342                         #(offset-fret 3 (chord-shape 'f))
343 \storePredefinedDiagram \chordmode {gis:m} 
344                         #guitar-tuning 
345                         #(offset-fret 3 (chord-shape 'f:m))
346 \storePredefinedDiagram \chordmode {gis:aug} 
347                         #guitar-tuning 
348                         #"o;3-4;2-3;1-1;1-2;o;"  
349 \storePredefinedDiagram \chordmode {gis:dim} 
350                         #guitar-tuning 
351                         #"x;x;o;1-1;o;1-2;"  
352 \storePredefinedDiagram \chordmode {gis:7} 
353                         #guitar-tuning 
354                         #(offset-fret 3 (chord-shape 'f:7))
355 \storePredefinedDiagram \chordmode {gis:maj7} 
356                         #guitar-tuning 
357                         #"x;x;1-1-(;1-1;1-1-);3-3;"  
358 \storePredefinedDiagram \chordmode {gis:m7} 
359                         #guitar-tuning 
360                         #(offset-fret 3 (chord-shape 'f:m7))
361
362 %%%%  aes chords
363 %
364 \storePredefinedDiagram \chordmode {aes} 
365                         #guitar-tuning 
366                         #(offset-fret 3 (chord-shape 'f))
367 \storePredefinedDiagram \chordmode {aes:m} 
368                         #guitar-tuning 
369                         #(offset-fret 3 (chord-shape 'f:m))
370 \storePredefinedDiagram \chordmode {aes:aug} 
371                         #guitar-tuning 
372                         #"o;3-4;2-3;1-1;1-2;o;"  
373 \storePredefinedDiagram \chordmode {aes:dim} 
374                         #guitar-tuning 
375                         #"x;x;o;1-1;o;1-2;"  
376 \storePredefinedDiagram \chordmode {aes:7} 
377                         #guitar-tuning 
378                         #(offset-fret 3 (chord-shape 'f:7))
379 \storePredefinedDiagram \chordmode {aes:maj7} 
380                         #guitar-tuning 
381                         #"x;x;1-1-(;1-1;1-1-);3-3;"  
382 \storePredefinedDiagram \chordmode {aes:m7} 
383                         #guitar-tuning 
384                         #(offset-fret 3 (chord-shape 'f:m7))
385
386 %%%%  a chords
387 %
388 \storePredefinedDiagram \chordmode {a} 
389                         #guitar-tuning 
390                         #"x;o;2-1;2-2;2-3;o;"  
391 \storePredefinedDiagram \chordmode {a:m} 
392                         #guitar-tuning 
393                         #"x;o;2-2;2-3;1-1;o;"  
394 \storePredefinedDiagram \chordmode {a:aug} 
395                         #guitar-tuning 
396                         #"x;o;3-4;2-2;2-3;1-1;"  
397 \storePredefinedDiagram \chordmode {a:dim} 
398                         #guitar-tuning 
399                         #(chord-shape 'a:dim)
400 \storePredefinedDiagram \chordmode {a:7} 
401                         #guitar-tuning 
402                         #"x;o;2-1;o;2-3;o;"  
403 \storePredefinedDiagram \chordmode {a:maj7} 
404                         #guitar-tuning 
405                         #"x;o;2-2;1-1;2-3;o;"  
406 \storePredefinedDiagram \chordmode {a:m7} 
407                         #guitar-tuning 
408                         #"x;o;2-2;o;1-1;o;"  
409
410 %%%%  ais chords
411 %
412 \storePredefinedDiagram \chordmode {ais} 
413                         #guitar-tuning 
414                         #(chord-shape 'bes)
415 \storePredefinedDiagram \chordmode {ais:m} 
416                         #guitar-tuning 
417                         #(chord-shape 'bes:m)
418 \storePredefinedDiagram \chordmode {ais:aug} 
419                         #guitar-tuning 
420                         #"2-2;1-1;o;3-4-(;3-4-);2-3;"  
421 \storePredefinedDiagram \chordmode {ais:dim} 
422                         #guitar-tuning 
423                         #(offset-fret 1 (chord-shape 'a:dim))
424 \storePredefinedDiagram \chordmode {ais:7} 
425                         #guitar-tuning 
426                         #(chord-shape 'bes:7)
427 \storePredefinedDiagram \chordmode {ais:maj7} 
428                         #guitar-tuning 
429                         #"x;1-1;3-3;2-2;3-4;x;"  
430 \storePredefinedDiagram \chordmode {ais:m7} 
431                         #guitar-tuning 
432                         #(chord-shape 'bes:m7)
433
434 %%%%  bes chords
435 %
436 \storePredefinedDiagram \chordmode {bes} 
437                         #guitar-tuning 
438                         #(chord-shape 'bes)
439 \storePredefinedDiagram \chordmode {bes:m} 
440                         #guitar-tuning 
441                         #(chord-shape 'bes:m)
442 \storePredefinedDiagram \chordmode {bes:aug} 
443                         #guitar-tuning 
444                         #"2-2;1-1;o;3-4-(;3-4-);2-3;"  
445 \storePredefinedDiagram \chordmode {bes:dim} 
446                         #guitar-tuning 
447                         #(offset-fret 1 (chord-shape 'a:dim))
448 \storePredefinedDiagram \chordmode {bes:7} 
449                         #guitar-tuning 
450                         #(chord-shape 'bes:7)
451 \storePredefinedDiagram \chordmode {bes:maj7} 
452                         #guitar-tuning 
453                         #"x;1-1;3-3;2-2;3-4;x;"  
454 \storePredefinedDiagram \chordmode {bes:m7} 
455                         #guitar-tuning 
456                         #(chord-shape 'bes:m7)
457
458 %%%%  b chords
459 %
460 \storePredefinedDiagram \chordmode {b} 
461                         #guitar-tuning 
462                         #(offset-fret 1 (chord-shape 'bes))
463 \storePredefinedDiagram \chordmode {b:m} 
464                         #guitar-tuning 
465                         #(offset-fret 1 (chord-shape 'bes:m))
466 \storePredefinedDiagram \chordmode {b:aug} 
467                         #guitar-tuning 
468                         #"x;3-2;2-1;o;o;x;"  
469 \storePredefinedDiagram \chordmode {b:dim} 
470                         #guitar-tuning 
471                         #"x;x;o;1-1;o;1-2;"  
472 \storePredefinedDiagram \chordmode {b:7} 
473                         #guitar-tuning 
474                         #(offset-fret 1 (chord-shape 'bes:7))
475 \storePredefinedDiagram \chordmode {b:maj7} 
476                         #guitar-tuning 
477                         #"x;2-1;4-3;3-2;4-4;x;"  
478 \storePredefinedDiagram \chordmode {b:m7} 
479                         #guitar-tuning 
480                         #(offset-fret 1 (chord-shape 'bes:m7))
481