Compare commits

..

30 Commits
main ... main

Author SHA1 Message Date
Louis Thurman 93075e4300 FIXED IT!
This was the worst one!
2023-03-12 19:48:27 +00:00
Louis Thurman cdef9b76f4 Merge branch 'take2' into main 2023-03-12 19:19:19 +00:00
Louis Thurman bd074e4740 Corrects C part chords, key sig, and accids. 2023-03-12 19:08:44 +00:00
Louis Thurman 5a738801db Fixes B part repeat 2023-03-12 18:28:09 +00:00
Louis Thurman 7d5350c212 Transpose to D major, in line with how its normally played 2023-03-12 18:22:39 +00:00
Louis Thurman adef481827 Corrects key signature 2023-03-12 18:02:06 +00:00
Louis Thurman 58469b094b Adds chords 2023-03-12 17:59:44 +00:00
Louis Thurman 767ea11d3b Corrects timing issue, updates chords, adds common alternate ending 2023-03-12 17:47:38 +00:00
Louis Thurman 2d3f7a1f5d Improves B part chords 2023-03-12 17:32:06 +00:00
Louis Thurman 70c62c1fde Simplified chords. 2023-03-07 01:30:17 +00:00
Louis Thurman 5d22fc9539 Adds passing note 2023-03-07 01:25:58 +00:00
Louis Thurman 4305a67650 Adds runs as played. 2023-03-07 01:05:01 +00:00
Louis Thurman ed9c847e1f Slight tempo decrease 2023-03-07 01:04:50 +00:00
Louis Thurman 59cf7def78 Chord corrections/improvements 2023-03-07 00:41:38 +00:00
Louis Thurman 0a67785da1 Update chords
Chords were too frequent and cause overbearing chord smashes, simplified so that it plays better.
2023-03-07 00:33:11 +00:00
Louis Thurman 17065ed00d Update util script 2023-03-07 00:32:26 +00:00
Louis Thurman 7d0de39b84 Remove chord from pickup notes. 2023-03-07 00:28:10 +00:00
Louis Thurman d57b94a271 Update util script 2023-03-06 21:52:27 +00:00
Louis Thurman e327aeaca9 Add utility script 2023-03-06 20:46:19 +00:00
Louis Thurman a1c3f6d053 Corrects key signatures and adds alternative ending. 2023-03-01 21:45:55 +00:00
Louis Thurman 28dd380b07 Correct chords and timing, and adds B part variation. 2023-03-01 18:04:03 +00:00
Louis Thurman f44e459c33 Minor chord correction 2023-03-01 17:33:59 +00:00
Louis Thurman a301b654ce Correct end note length 2023-03-01 17:30:42 +00:00
Louis Thurman 1eaa5bd683 Minor A part note correction, and B part chord corrections 2023-03-01 17:28:08 +00:00
Louis Thurman 91bfddefc8 Correct repeats and pickups 2023-03-01 17:04:08 +00:00
Louis Thurman 288cb33e5a Fixes repeats and pickups 2023-03-01 16:53:34 +00:00
Louis Thurman 7ec0679154 Correct repeats 2023-03-01 16:21:17 +00:00
Louis Thurman f9559471a1 Fixes repeats, endings, and chords. 2023-02-27 19:15:42 +00:00
Louis Thurman 5daaa07260 Corrects repeats and repeat ends. 2023-02-27 18:30:39 +00:00
Louis Thurman 257d04d0ea Pre fork changes. 2023-02-27 18:22:43 +00:00
39 changed files with 236 additions and 140 deletions

2
.gitignore vendored
View File

@ -12,5 +12,5 @@ Library-.*
*.aux *.aux
*.log *.log
*.orig *.orig
*.mid
*~ *~
__pycache__

View File

@ -11,10 +11,10 @@ d>B |\
"G" G2 G>A B2 B2 | "D7" A>B (3cBA "G" G>A B2 |\ "G" G2 G>A B2 B2 | "D7" A>B (3cBA "G" G>A B2 |\
"G" G2 G>A B2 B2 | "D7" A>B (3cBA "G" G2 d>B | "G" G2 G>A B2 B2 | "D7" A>B (3cBA "G" G2 d>B |
"G" G2 G>A B2 B2 | "D7" A>B (3cBA "G" G>A B2 |\ "G" G2 G>A B2 B2 | "D7" A>B (3cBA "G" G>A B2 |\
"G" G2 G>A B2 B2 | "Am" A>B (3cBA "G" G3 || "G" G2 G>A B2 B2 | "Am" A>B (3cBA "G" G4 |]
M: 6/8 M: 6/8
Q: 3/8=80 Q: 3/8=80
P: B P: B
"G" B>AG B>AG | B/2(d3d2) B | "D7" A>BA A2 B | "C" c2 d e>dc | "G" B>AG B>dB |\ "G" B>AG B>AG | B/2 d4-d/2 B | "D7" A>BA A2 B | "C" c2 d e>dc | "G" B>AG B>dB |\
M: 9/8 M: 9/8
"D7" ABc def "G" g3 |] "D7" ABc def "G" g3 |]

View File

@ -5,6 +5,6 @@ M: C
L: 1/4 L: 1/4
Q: 160 Q: 160
K: Gmaj K: Gmaj
"D" d | "D" d B c d | "G" B>A G d | "G" d B c d | "G" B3 :| d | "D" d B c d | "G" B>A G d | "G" d B c d | "G" B3 :|
"G" B | "D" A F G A | "G" B>A G B | "D" A F G A | "G" B3 B | B | "D" A F G A | "G" B>A G B | "D" A F G A | "G" B3 B |
"D" A F G A | "G" B>A G d | "D" d B c d | "G" B3 :| "D" A F G A | "G" B>A G d | "D" d B c d | "G" B3 :|

View File

@ -4,9 +4,7 @@ M: 4/4
L: 1/8 L: 1/8
K: D K: D
Q: 160 Q: 160
de | \ de |: "D" f2 d2 A2 F2 | "Em" G2GF G4 | "A" edcA B2c2 | "D" defd A2de |
"D" f3d A2F2 | "A" G2GF G4 | edcA B2c2 | "D" dffd A2de | "D" f2 d2 A2F2 | "Em" G2GF G4 | "A" edcA B2c2 | "D" d6 de :|
"D" f3d A2F2 | "Em" G2GF G4 | "A" edcA B2c2 | "D" d6 :| |: "D" f2fd f2f2 | "Em" gf ed c4 | "A" gfed cABc | "D" defd A2de |
de | \ "D" f3d A2F2 | "Em" G2GF G4 | "A" edcA B2c2 | "D" d6 de :|
"D" f2fd f2f2 | "A" gf "D" ed "A" c4 | gfed cABc | "D" dffd A2de |
"D" f3d A2F2 | "Em" G2GF G4 | "A" edcA B2c2 | "D" d6 :|

View File

@ -7,8 +7,7 @@ M:C
L:1/8 L:1/8
Q:130 Q:130
K:G K:G
"G" GABc A2>G2 | "D" F2D2 D4 | "D" d2A2 "G" d3 "D7" c | "G" B2G2 G4 | "G" GABc "C" A2> G2 | "D" F2D2 D4 | "D" d2A2 d3 c | "G" B2G2 G4 |
"Em" GABc "Am" A2>G2 | "D" F2 FG A2D2 | "C" EFG2 "D7" FGAB | "G" G4 G4 :| "Em" GABc "Am" A2>G2 | "D" F2 FG A2D2 | "C" EFG2 "D7" FGAB | "G" G4 G4 :|
"D" FGA2 FGA2 | "D" d2 "A7" A2 "D" d2 "A7" A2 |\ "D" FGA2 FGA2 | "D" d2 A2 d2 A2 | "C" FG A2 FG A2 | "D" d2 A2 d4 |
"D" FG "A" A2 "D" FG "A" A2 | "D" d2 "A7" A2 "D" d4 | "G" d2cB "Am" c2dc | "Bm" B2AG "C" A3D | "D" EFG2 "C" FGAB | "G" G4 G4 :|
"G" d2cB "D" c2dc | "G" B2AG "D" A3D | "C" EFG2 "D7" FGAB | "G" G4 G4 :|

View File

@ -10,6 +10,6 @@ M:4/4
Q:180 Q:180
K:G K:G
dB|"G"G2G2 G2FG|"D"A2A2 A2BA|"C"GFED E2F2|"G"GABc dcBA| dB|"G"G2G2 G2FG|"D"A2A2 A2BA|"C"GFED E2F2|"G"GABc dcBA|
G2G2 G2FG|"D"A2A2 A2BA|"C"GFED "D7"E2F2|G4G2 :| G2G2 G2FG|"D"A2A2 A2BA|"C"GFED "D"E2F2|"G" G4G2 :|
GA|B2B2 B2AB|"Am"c2c2 cdcB| "D7"A2A2 A2GA|"G"B2B2 BcBA| GA|"G" B2B2 B2AB|"Am"c2c2 cdcB| "D"A2A2 A2GA|"G"B2B2 BcBA|
G2G2 G2FG|"D"A2A2 A2BA|"C"GFED "D7"E2F2|"G"G4G2 :| "Em" G2G2 G2FG|"Am"A2A2 A2BA|"D" GFED E2F2|"G"G4G2 :|

View File

@ -6,7 +6,7 @@ L: 1/4
H: Dottes: The melody should be accompanied by a continuous drone H: Dottes: The melody should be accompanied by a continuous drone
H:+ on the string below on the fiddle. The chords are a suggested drone. H:+ on the string below on the fiddle. The chords are a suggested drone.
K: G K: G
D | "C" E/F/ G G F | E2 E D | E>D E F | "G" G/F/G/A/ G D | D |: "C" E/F/ G G F | E2 E D | E>D E F | "G" G/F/G/A/ G D |
"C" E/F/ G G F | E2 E D | E>D E F | "G" G2 G :| "C" E/F/ G G F | E2 E D | E>D E F |1 "G" G2 G D :|2 "G" G2 G A ||
A | "G" B/c/ d d B | B A "D" A2 | "G" B/A/B/c/ d A | B/A/B/c/ d D | |: "G" B/c/ d d B | B A "D" A2 | "G" B/A/B/c/ d A | B/A/B/c/ d D |
"C" E/F/ G G F | E2 E D | E>D E F | "G" G3 :| "C" E/F/ G G F | E2 E D | E>D E F |1 "G" G2 G A :|2 "G" G4 ||

View File

@ -11,7 +11,7 @@ H:+ piping's greatest premature losses.
M: 9/8 M: 9/8
L: 1/8 L: 1/8
K: G K: G
Q: 120 Q: 100
d>c |\ d>c |\
"G" BdB G3 GFG | "D" AGE E3 D3 | "C" EGE D3 G3 | "D" BdB A3- Ad>c | "G" BdB G3 GFG | "D" AGE E3 D3 | "C" EGE D3 G3 | "D" BdB A3- Ad>c |
"G" BdB G3 GFG | "D" AGE E3 D3 | "C" EGE D3 B3 | "D" ABA G3- G :| "G" BdB G3 GFG | "D" AGE E3 D3 | "C" EGE D3 B3 | "D" ABA G3- G :|

View File

@ -13,6 +13,6 @@ L:1/16
Q:1/4=120 Q:1/4=120
K:Em K:Em
"Em" B2 E2 E4| B2 E2 E3 F| G2G2F2G2|"D" A4G2A2| "Em" B2 E2 E4| B2 E2 E3 F| G2G2F2G2|"D" A4G2A2|
|"Em" B2B2 "D" A2A2|"Em" G2G2 "D" F4|"Em" E2G2 "D" F2D2|"Em" E4 E4:| |"Em" B2B2 "D" A2A2|"Em" G2G2 "D" F4|"Em" EFG2 "D" F2D2|"Em" E4 E4:|
"Em" E2G2E2G2|"D" F2D2D4|"C" E2G2E2G2|"D" A4G2A2| "Em" EFG2 EFG2|"D" F2D2D4|"C" EFG2 EFG2|"D" A4G2A2|
|"Em" B2B2 "D" A2A2|"C" G2G2 "D" F4|"Em" E2G2 "D" F2D2|"Em" E4 E4:| |"Em" B2B2 "D" A2A2|"C" G2G2 "D" F4|"Em" EFG2 "D" F2D2|"Em" E4 E4:|

View File

@ -5,8 +5,8 @@ N: Dottes: Change: <HarpersFrolick.abc>.
L: 1/4 L: 1/4
K: G K: G
Q: 180 Q: 180
d e f |: "G" g>f g>f | "G" g d d B | "C" c/d/ e d>c | "G" B G G>A | d e f |: "G" g> f g> f | "G" g d d B | "C" c/d/ e d>c | "G" B G G>A |
"Em" B G G A/B/ | "Am" c A A2 | "G" B/c/ d "D" c B |\ "Em" B G G A/B/ | "Am" c A A2 | "G" B/c/ d "D" c B |\
[1 "D" A d e f :| [2 "D" A4 |] [1 "D" A d e f :| [2 "D" A4 |]
|: "G" B G2 A/B/ | "Am" c A "Bm" d B | "C" e c c e | "D" f2 d e/f/ | |: "G" B GG A/B/ | "Am" c A "Bm" d B | "C" e c c e | "D" f> e d e/f/ |
"G" g>f g f/e/ | "D" d e/f/ "G" g B | "C" c/d/ e "D" d>c | "G" B G G2 :| "G" g>f g f/e/ | "D" d e/f/ "G" g B | "C" c/d/ e "D" d>c | "G" B G G2 :|

View File

@ -10,8 +10,8 @@ M:4/4
L:1/8 L:1/8
Q:1/4=180 Q:1/4=180
K:G K:G
gf| "G" e2dc B2A2 | "C" B2G2E2D2 | "G" G2G2GABc | "D7" d4B2gf| gf| "G" e2dc B2A2 | "C" B2G2E2D2 | "G" G2G2GABc | "D" d4B2gf|
"G" e2dc B2A2 | "C" B2G2E2G2 | "D7" FG A2D2EF| "G" G4G2:| "G" e2dc B2A2 | "C" B2G2E2G2 | "D" FG A2D2EF| "G" G4G2:|
dc | "G" B2d2 "D7" e2f2 | "G" g2dc "D7" BA G2 |\ dc | "G" B2d2 "Am" e2f2 | "C" g2dc "G" BA G2 |\
"G" Bc d2 "Em" e2f2 | "C" g4 "D7" f2gf| "G" Bc d2 "Em" e2f2 | "C" g4 "D" f2gf|
"G" e2dc B2A2 | "C" B2G2E2G2 | "D7" FG A2D2EF | |"G" G4G2 :| "G" e2dc B2A2 | "C" B2G2E2G2 | "D" FG A2D2EF | |"G" G4G2 :|

View File

@ -7,11 +7,7 @@ R: Schottische
K: G K: G
L: 1/4 L: 1/4
Q: 140 Q: 140
"G" B B "C" c/B/A/G/ | "G" B B "C" c/B/A/G/ | "Em" E/F/G/B/ "D" A>G |\ A |: "G" B B "C" c/B/A/G/ | "G" B B "C" c/B/A/G/ | "Em" E/F/G/B/ "D" A>G | "D" F/G/E/F/ D2 |
"D" F/G/E/F/ D D | "G" B B "C" c/B/A/G/ | "G" B B "C" c/B/A/G/ | "Em" E/F/G/B/ "D" A>G |1 "G" G3 A :|1 "G" G2 Bc ||
"G" B B "C" c/B/A/G/ | "G" B B "C" c/B/A/G/ | "Em" E/F/G/B/ "D" A>G |\ |: "G" d d "C" c/B/A/G/ | "G" d d "C" c/B/A/G/ | "Em" E/F/G/B/ "D" A>G | "D" F/G/E/F/ D2 |
"G" G3 A :| "G" d d "C" c/B/A/G/ | "G" d d "C" c/B/A/G/ | "Em" E/F/G/B/ "D" A>G |1 "G" G2 Bc :|2 "G" G4 ||
"G" d d "C" c/B/A/G/ | "G" d d "C" c/B/A/G/ | "Em" E/F/G/B/ "D" A>G |\
"D" F/G/E/F/ D2 |
"G" d d "C" c/B/A/G/ | "G" d d "C" c/B/A/G/ |\
"Em" E/F/G/B/ "D" A>G | "G" G4 :|

View File

@ -6,5 +6,5 @@ Q: 160
K: Gmaj K: Gmaj
"G" G2 B d2 g | "G" gfe d3 | "D" cdc "G" B2 B | "D" AGA "Em" B2 G | "G" G2 B d2 g | "G" gfe d3 | "D" cdc "G" B2 B | "D" AGA "Em" B2 G |
"G" G2 B d2 g | "G" gfe d3 | "D" cdc "G" B2 B | "D" AGA "G" G3 :| "G" G2 B d2 g | "G" gfe d3 | "D" cdc "G" B2 B | "D" AGA "G" G3 :|
"B" B3 B3 | "B" BAB "D" c3 | "G" B2 c d2 c | "G" B2 A B2 G | "G" B3 "Em" B3 | "C" BAB "D" c3 | "G" B2 c d2 c | "G" B2 A B2 G |
"Em" B3 B3 | "Em" BAB "C" c3 | "G" B2 g dBG | "D" A3 "G" G3 :| "G" B3 "Em" B3 | "C" BAB "D" c3 | "G" B2 g dBG | "D" A3 "G" G3 :|

View File

@ -10,4 +10,4 @@ D |: "G" G>AB | d>BA | "C" G>EC | "G" D/G/-G D | "G" G>AB |
d>BG | [1 "G" B/d/-dB | "D" A2 D :| [2 "D" A/B/-B A | "G" G2 d || d>BG | [1 "G" B/d/-dB | "D" A2 D :| [2 "D" A/B/-B A | "G" G2 d ||
"G" d>Bd | "C" g>eg | "G" d>BG | B/d/-d d | "G" d>Bd | "G" d>Bd | "C" g>eg | "G" d>BG | B/d/-d d | "G" d>Bd |
"C" g>eg | "G" d>BG | "D" A2 D | "G" G>AB | d>BA | "C" g>eg | "G" d>BG | "D" A2 D | "G" G>AB | d>BA |
"C" G>EC | "G" D/G/-GD | G>AB | d>BG | "D" A/B/-B A | "G" G2 |] "C" G>EC | "G" D/G/-GD | G>AB | d>BG | "D" A/B/-B A | "G" G3 |]

View File

@ -10,7 +10,7 @@ M: 4/4
L: 1/8 L: 1/8
Q: 1/4=140 Q: 1/4=140
K: Gmaj K: Gmaj
"G" B2 B>A G2 B>d | "C" g2 g>f e4 | "G" d2 d>e d2 B>G | "A7" A2 A>B A4 | "G" B2 B>A G2 B>d | "C" g2 g>f e4 | "G" d2 d>e d2 B>G | "D" A2 A>B A4 |
"G" B2 B>A G2 B>d | "C" g2 g>f e4 | "D7" a>g f>e d>c B>A | "G" G2 g2 g4 || "G" B2 B>A G2 B>d | "C" g2 g>f e4 | "D" a>g f>e d>c B>A | "G" G2 g2 g4 ||
"D7" a2 a>g f2 a2 | "G" g2 b2 g4 | "C" e2 e>f g2 f>e | "G" d>e d>B "D" A4 | "D" a2 a>g f2 a2 | "G" g2 b2 g4 | "C" e2 e>f g2 f>e | "G" d>e d>B "D" A4 |
"G" B2 B>A G2 B>d | "C" g2 g>f e4 | "D7" a>g f>e d>c B>A | "G" G2 g2 g4 |] "G" B2 B>A G2 B>d | "C" g2 g>f e4 | "D7" a>g f>e d>c B>A | "G" G2 g2 g4 |]

View File

@ -1,14 +1,15 @@
X: 1 X: 1
T: Dancing Oolert, The T: Dancing Oolert, The
C: Sally Kirkpatrick C: Sally Kirkpatrick
M: 4/4 M: 4/4
L: 1/8 L: 1/8
Q: 1/4=130 Q: 1/4=130
H: Dottes: An oolert, or wollert, is a name used in Shropshire for a barn owl. H: Dottes: An oolert, or wollert, is a name used in Shropshire for a barn owl. Often the last bar and half of the B part modulates back to D Mix.
K: G K: DMix
"D" .!>!A2 AG FD FA | dA FA "C" c2 B2 | "D" .!>!A2 AG FD EF | "Em" GA GF EF G2 | G2 | "D" .!>!A2 AG FD FA | dA FA "C" c2 B2 | "D" .!>!A2 AG FD EF | "Em" GA GF EF G2 |
"D" .!>!A2 AG FD FA | dA FA "Am" c2 "Bm" B2 | "D" AB AG "A" F2 E2 | "D" D6 :| "D" .!>!A2 AG FD FA | dA FA "Am" c2 "Bm" B2 | "D" AB AG "A" F2 E2 |1 "D" D6 :|2 "D" D8 ||
K: D K: EDor
F2 | \ |: "Em" .!>!E2 EF GE DC | "D" DE FG A2 F2 | "C" .!>!E2 EF GE DC | "G" D4 "D" A,4 |
"Em" .!>!E2 EF GE DC | "D" DE FG A2 F2 | "Em" .!>!E2 EF GE | "D" DC D4 A,2 | "Em" .!>!E2 EF GE DC | "D" DE FG A2 F2 | "Em" E2 EF "G" GE cB | "D" A8 :|
"Em" .!>!E2 EF GE DC | "D" DE FG A2 F2 | "Em" E2 EF "G" GE cB | "D" A6 :| | "_Alternative B part ending." "C" E2 EF GE =cB | "D" A4 "G" G4 ||

View File

@ -7,11 +7,7 @@ L: 1/8
R: waltz R: waltz
K: Gmaj K: Gmaj
Q: 1/4=120 Q: 1/4=120
D GA | "G" B2 Bc B2 |"D" A2ABA2 |"C" G2E2GE |"G" D2>D2 GA|\ D GA | "G" B2 Bc B2 |"D" A2ABA2 |"C" G2E2GE |"G" D2>D2 GA | "G" B2 d2 e2 | "Am" d2 c2 B2 | "C" d2 c2 B2 |
"G" B2 d2 e2 | d2 c2 B2 | d2 c2 B2 | "D" A2>D2 GA | "G" B2 Bc B2 | "D" A2ABA2 | "C" G2E2GE | "G" D2>D2 GA | "G" B2 d2 e2 | "Am" d2 c2 B2 | "D" A2 G2 F2 | "G "G3 ||
"D" A2>D2 GA | "G" B2 Bc B2 | "D" A2ABA2 | "C" G2E2GE | "G" D2>D2 GA|\ G Bd | "C" e2 d2>B2 | c2 B2 Bc | "G" d2 c2 B2 | "D" A4 B2 | "C" c2 cd c2 | "G" B2 Bc B2 | "Am" A2 G2 E2 |
"G" B2 d2 e2 | d2 c2 B2 | "D" A2 G2 F2 | "G "G3 || "D" D2>D2 GA | "G" B2 Bc B2 | "D" A2 AB A2 | "C" G2 E2 GE | "G" D2>D2 GA | "G" B2 d2 e2 | "C" d2 c2 B2 | "D" A2 G2 F2 | "G" G3 |]
G Bd | "C" e2 d2>B2 | c2 B2 Bc | "G" d2 c2 B2 | "D" A4 B2 |\
"C" c2 cd c2 | "G" B2 Bc B2 | "Am" A2 G2 E2 |
"D" D2>D2 GA | "G" B2 Bc B2 | "D" A2 AB A2 | "C" G2 E2 GE |\
"G" D2>D2 GA | "G" B2 d2 e2 | d2 c2 B2 | "D" A2 G2 F2 | "G" G3 |]

View File

@ -4,7 +4,7 @@ M: 3/4
L: 1/4 L: 1/4
O: Finland O: Finland
Q: 140 Q: 140
K: FMaj K: Dm
D/F/ |: "Dm" A2 A | F D F | A2 A | F D D/F/ | D/F/ |: "Dm" A2 A | F D F | A2 A | F D D/F/ |
"A7" E2 E/F/ | G F E | [1 "Dm" D>EF/G/ | A2 D/F/ :| [2 "n.c." D3 | D F A || "A7" E2 E/F/ | G F E | [1 "Dm" D>EF/G/ | A2 D/F/ :| [2 "n.c." D3 | D F A ||
|: "Gm" d2 d | d c B | "Dm" A2 A | A G F | |: "Gm" d2 d | d c B | "Dm" A2 A | A G F |

View File

@ -1,10 +1,10 @@
X: 1 X: 1
T: Fiery Clock Face, The T: Fiery Clock Face, The
R: jig
M: 6/8 M: 6/8
L: 1/8 L: 1/8
Q: 160 K: Dmaj
K: Gmaj c | "D" d2 d D2 E | F2 G A2 B | "C" =c2 =c E2 F | G2 A B2 c |
d | "G" g2 g G2 A | B2 c d2 e | "F" =f2 f A2 B | c2 d e2 ^f | "D" d2 d D2 E | F2 G A3 |"A" Bcd ecA | "D" d3 d2 :|
"G" g2 g G2 A | B2 c d2 d | "C" efg "D7" a2 f | "G" g3 g2 :| g | "D" f2 d def | "Em" g2 f e2 d | "A" c2 B A2 B | c2 d e2 g |
A | "G" B2 B GAB | "Am" c2 B A2 G | "D7" F2 E D2 E | F2 G A2 ^A | "D" f2 d def | "Em" g2 f e2 d | "A" c2 A B2 c | "D" d3 d2 :|
"G" B2 B GAB | "Am" c2 B A2 G | "D7" FED E2 F | "G" G3 G2 :|

View File

@ -7,6 +7,6 @@ K:G
dc | "G" B2B2B2G2 | "D" AGAB "G" G2AB | "Am" cBAG "G" GABc | "D" d2ec B2dc | dc | "G" B2B2B2G2 | "D" AGAB "G" G2AB | "Am" cBAG "G" GABc | "D" d2ec B2dc |
"G" B2B2B2G2 | "D" AGAB "G" G2AB | "Am" cBAG "G" GABG |\ "G" B2B2B2G2 | "D" AGAB "G" G2AB | "Am" cBAG "G" GABG |\
[1 "D" A4 "G" G2 :| [2 "D" A4 "G" G4 |] [1 "D" A4 "G" G2 :| [2 "D" A4 "G" G4 |]
"G" GABc "D" d2d2| "D" d2 e2 d4 | "C" e2d2 "G" g2B2 | "D" d2ec B2A2 | |: "G" GABc "D" d2d2| "D" d2 e2 d4 | "C" e2d2 "G" g2B2 | "D" d2ec B2A2 |
"G" B2B2B2G2 | "D" AGAB "G" G2AB | "Am" cBAG "G" GABc | "D" d2ec B2A2 | "G" B2B2B2G2 | "D" AGAB "G" G2AB | "Am" cBAG "G" GABc | "D" d2ec B2A2 |
"G" B2B2B2G2 | "D" AGAB "G" G2AB | "Am" cBAG "G" GABG | "D" A4 "G" G4 :| "G" B2B2B2G2 | "D" AGAB "G" G2AB | "Am" cBAG "G" GABG | "D" A4 "G" G4 :|

View File

@ -16,5 +16,6 @@ K:G
"G" G>A B B | "D" c B A c | "Em" B G "D" A F | "G" G2 G2 :| "G" G>A B B | "D" c B A c | "Em" B G "D" A F | "G" G2 G2 :|
"D" d c/B/ A "G" B | "D" c B/A/ "G" G/A/ B | "D" A G F "G" G | "D" A2 A2 | "D" d c/B/ A "G" B | "D" c B/A/ "G" G/A/ B | "D" A G F "G" G | "D" A2 A2 |
d c/B/ A "G" B | "D" c B/A/ "G" G/A/ B | "D" A G G F | "G" G2 G2 :| d c/B/ A "G" B | "D" c B/A/ "G" G/A/ B | "D" A G G F | "G" G2 G2 :|
"Em" _B A/G/ B A/G/ | "D" F G A2 | D E F G | A _B A G | K:Gdor
"Em" _B A/G/ B A/G/ | "D" F G A2 | D E F G | G F "G" G2 :| "Gm" B A/G/ B A/G/ | "D" ^F G A2 | D E ^F G | A B A G |
"Gm" B A/G/ B A/G/ | "D" ^F G A2 | D E ^F G | G ^F "G" G2 :|

View File

@ -6,8 +6,8 @@ M: 3/4
L: 1/8 L: 1/8
K: Gmaj K: Gmaj
DGA |\ DGA |\
"G" B3A Bd | "Em" B3A Bd | "C" E3B AB | "D" D3B AG | "G" B3A B<d | "Em" B3A B<d | "C" E3B AB | "D" D3B A<G |
"G" B3A Bd | "Em" B3A Bd | "C" G3B "D" (3AGF | "G" G3 :| "G" B3A B<d | "Em" B3A B<d | "C" G3B "D" A/G/F | "G" G3 :|
ABd |\ ABd |\
"C" e3f ed | "G" B3A Bd | "C" gf ed (3Bcd | "C" e3f e<d | "G" B3A Bd | "C" ef ed B/c/d |
"C" e4 Bd | "Am" e3f ed | "G" B3A Bd | "G" D3B "D" (3AGF| "G" G3 :| "C" e4 Bd | "Am" e3f e<d | "G" B3A B<d | "G" D3B "D" A/G/F| "G" G3 :|

View File

@ -1,7 +1,7 @@
X: 1 X: 1
T: Jessie's Hornpipe T: Jessie's Hornpipe
C: attrib. to Aird's Collection 1794 C: attrib. to Aird's Collection 1794
H: Dottes: A little tune Susie's been working on. H: Dottes: A little tune Susie's been working on recently.
R: Hornpipe R: Hornpipe
M: 4/4 M: 4/4
L: 1/8 L: 1/8

View File

@ -4,8 +4,6 @@
# to print the first line of the music only. # to print the first line of the music only.
# #
import argparse
import pathlib
import sys import sys
def process(inf): def process(inf):
@ -23,20 +21,21 @@ def process(inf):
if len(start) > 1 and start[1] == ":" and (start[0].isalpha() or start[0] == '+'): if len(start) > 1 and start[1] == ":" and (start[0].isalpha() or start[0] == '+'):
if start[0] in ["M", "K", "L"]: if start[0] in ["M", "K", "L"]:
print(line) print(line)
# Output line. If the line ends with a continuation, carry # Output line. If it is a continuation, output at most one
# on outputting lines, otherwise stop. # continuation.
else: else:
print(line) print(line)
if line[-1] != "\\": if continued or line[-1] != "\\":
break break
else:
continued = True
if __name__ == "__main__": if len(sys.argv) > 1:
parser = argparse.ArgumentParser(description="Write minimal version of ABC input file with just the first line of music.") for arg in sys.argv[1:]:
parser.add_argument('input', type=argparse.FileType('r'), try:
help='input ABC file') inf = open(arg, "r")
args = parser.parse_args() process(inf)
finally:
path = pathlib.Path(args.input.name) inf.close()
with path.open() as f: else:
process(f) process(sys.stdin)
sys.exit(0)

81
auto_render.py Normal file
View File

@ -0,0 +1,81 @@
#!/usr/bin/python3 -u
import logging
import pathlib
import subprocess
import sys
import time
win_root = pathlib.Path(r"C:\Users\louis\GitKraken\dottes")
lin_root = pathlib.Path("~/dottes")
file_update_times = {}
def run_continuous():
logging.info("Run continous")
pwd = pathlib.Path()
while True:
for obj_path in pwd.rglob("*"):
obj_path_str = str(obj_path)
if not obj_path.is_file():
continue
if not obj_path_str.lower().endswith(".abc"):
continue
if obj_path_str not in file_update_times:
file_update_times[obj_path_str] = obj_path.lstat().st_mtime
else:
if obj_path.lstat().st_mtime > file_update_times[obj_path_str]:
file_update_times[obj_path_str] = obj_path.lstat().st_mtime
convert_single(lin_path=obj_path_str)
def convert_single(win_path: str = None, lin_path: str = None):
if win_path:
input_path = win_path
win_abc_file_path = pathlib.Path(win_path)
lin_abc_file_path = lin_root / win_abc_file_path.relative_to(win_root)
elif lin_path:
input_path = lin_path
lin_abc_file_path = pathlib.Path(lin_path)
else:
raise Exception("Argument win_path or lin_path must be given")
logging.info(f"Converting {input_path}")
out_file_name = lin_abc_file_path.name.rsplit(".", 1)[0] + ".mid"
output_path = lin_abc_file_path.parent / out_file_name
if output_path.exists():
output_path.unlink()
r = subprocess.run(
[
"abc2midi",
lin_abc_file_path.as_posix(),
"-o", output_path.as_posix()
]
)
if r.returncode != 0:
logging.error(f"Error whilst convering {lin_abc_file_path}")
else:
logging.info(f"Converted {input_path} > {output_path}")
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO)
if len(sys.argv) > 1:
if sys.platform == "win32":
convert_single(win_path=sys.argv[1])
elif sys.platform == "linux":
convert_single(lin_path=sys.argv[1])
else:
raise Exception(f"Unknown platform '{sys.platform}', don't know how to interpret path")
else:
run_continuous()

View File

@ -61,9 +61,7 @@
Booke contains all the Session tunes and all the Morris tunes in Booke contains all the Session tunes and all the Morris tunes in
a single book. There is an a single book. There is an
<a href="../Bumper-A5@INSTRUMENT@.pdf">A5 landscape book</a> with one <a href="../Bumper-A5@INSTRUMENT@.pdf">A5 landscape book</a> with one
tune per page, tune per page, an <a href="../Bumper-A4@INSTRUMENT@.pdf">A4 book</a>
a <a href=@../Bumper-Nook@INSTRUMENT@.pdf>4x5in portrait book</a>,
an <a href="../Bumper-A4@INSTRUMENT@.pdf">A4 book</a>
with two or more tunes per page, and an with two or more tunes per page, and an
<a href="../Bumper-A5bookletA4@INSTRUMENT@.pdf">A5 booklet</a> <a href="../Bumper-A5bookletA4@INSTRUMENT@.pdf">A5 booklet</a>
for printing on A4 paper and folding in half. for printing on A4 paper and folding in half.

View File

@ -38,7 +38,7 @@
</div> </div>
</div> </div>
</div> </div>
<img class="dottes-svg" src="${name}.svg" alt="${title} dots"> <img class="dottes-png" src="${name}.png" alt="${title} dots">
<div class="dottes-notes-${notesvisibility}"> <div class="dottes-notes-${notesvisibility}">
${notes} ${notes}
</div> </div>

View File

@ -9,7 +9,7 @@
</div> </div>
<div class="dottes-tune-list-item-image"> <div class="dottes-tune-list-item-image">
<a href="../${tunedir}/index.html"> <a href="../${tunedir}/index.html">
<img class="dottes-tune-table-image" src="../${tunedir}/firstline-${name}.svg" <img class="dottes-tune-table-image" src="../${tunedir}/firstline-${name}.png"
alt="${fulltitle} first line" title="${fulltitle} first line"> alt="${fulltitle} first line" title="${fulltitle} first line">
</a> </a>
</div> </div>

View File

@ -170,7 +170,7 @@
\textbf{Ye Crie Havoc Booke of Dottes} \textbf{Ye Crie Havoc Booke of Dottes}
Tune collection and presentation is copyright \copyright{} Jim Hague 2013-2024 Tune collection and presentation is copyright \copyright{} Jim Hague 2013-2020
and is licensed under a Creative Commons and is licensed under a Creative Commons
Attribution-NonCommercial-ShareAlike 2.0 UK: England \& Wales License. Attribution-NonCommercial-ShareAlike 2.0 UK: England \& Wales License.
Details at \url{http://creativecommons.org/licenses/by-nc-sa/2.0/uk/}. Details at \url{http://creativecommons.org/licenses/by-nc-sa/2.0/uk/}.
@ -183,7 +183,7 @@ asserted by him in accordance with the Copyright, Designs and Patents Act 1998.
First published in the UK 2013 by Jim Hague.\\ First published in the UK 2013 by Jim Hague.\\
Second printed edition 2019. Second printed edition 2019.
Third printed edition 2024. Third printed edition 2022.
The Booke of Dottes is a constant work in progress. The latest version The Booke of Dottes is a constant work in progress. The latest version
is always available from \url{http://dottes.cryhavoc.org.uk/}. is always available from \url{http://dottes.cryhavoc.org.uk/}.
@ -191,9 +191,9 @@ This is issue \build, generated \today.
\textbf{Technical data} \textbf{Technical data}
Book sources can be found at in a Git Book sources can be found at in a Mercurial
(\url{https://git-scm.com/}) repository at (\url{https://www.mercurial-scm.org/}) repository at
\url{https://git.lunch.org.uk/CryHavoc/dottes/}. Tunes are \url{http://hg.cryhavoc.org.uk/dottes/}. Tunes are
in Chris Walshaw's abc notation (\url{http://abcnotation.com/}). in Chris Walshaw's abc notation (\url{http://abcnotation.com/}).
Music typeset by Jef Moine's abcm2ps (\url{http://moinejf.free.fr/}). Music typeset by Jef Moine's abcm2ps (\url{http://moinejf.free.fr/}).
@ -249,7 +249,7 @@ If this is not the case, please contact me at
\href{mailto:dottes@cryhavoc.org.uk}{\url{dottes@cryhavoc.org.uk}} and I will \href{mailto:dottes@cryhavoc.org.uk}{\url{dottes@cryhavoc.org.uk}} and I will
remove the offending tune. remove the offending tune.
This book has an accompanying website, {\url{https://dottes.cryhavoc.org.uk}}. This book has an accompanying website, {\url{http://dottes.cryhavoc.org.uk}}.
It's updated from time to time with the latest tunes we're playing. It's updated from time to time with the latest tunes we're playing.
As well as the written music (the dots), you can listen to the computer play As well as the written music (the dots), you can listen to the computer play
each tune and its chords, or download the audio or the dots. each tune and its chords, or download the audio or the dots.
@ -259,7 +259,7 @@ four different speeds. You can also download the latest version of
the various print books, formatted for A4 or A5 size paper, to print at home. the various print books, formatted for A4 or A5 size paper, to print at home.
Finally, many, many thanks to all who have helped me with this project, Finally, many, many thanks to all who have helped me with this project,
in particular fellow Havocs KateK, Nerys, MickP, LouisT, Susie and Ed. And most in particular fellow Havocs KateK, Nerys, MickP, Susie and Ed. And most
especially to Jane, without whose enthusiasm, support and encouragement especially to Jane, without whose enthusiasm, support and encouragement
this would never have been possible. this would never have been possible.
@ -270,7 +270,7 @@ We practice between September and April on Thursday evenings at the
Botley Womens' Institute Hall, North Hinksey Lane, Botley, Oxford OX2 0LT and Botley Womens' Institute Hall, North Hinksey Lane, Botley, Oxford OX2 0LT and
dance out in the summer months at locations around Oxfordshire. dance out in the summer months at locations around Oxfordshire.
Find out more at \url{https://www.cryhavoc.org.uk/}, or email Find out more at \url{http://www.cryhavoc.org.uk/}, or email
\href{mailto:bag@cryhavoc.org.uk}{\url{bag@cryhavoc.org.uk}} for more \href{mailto:bag@cryhavoc.org.uk}{\url{bag@cryhavoc.org.uk}} for more
information. Would-be dancers or musicians always welcome. information. Would-be dancers or musicians always welcome.

View File

@ -1,12 +1,15 @@
% Format for a graphic with a single tune % Format for a graphic with a single tune
continueall false continueall false
measurenb false measurenb false
stretchlast 1.0 writefields SRBDZHN 0
writefields ABCDFGHILMmNOPRrSsTWwXZ 0 titleformat Y0
titlespace 0 titlespace 0
topspace 0 topspace 0
infoline false
writehistory false
musiconly true
scale 0.9 scale 0.9
botmargin 0pt botmargin 0pt
leftmargin 0pt leftmargin 0pt
rightmargin 0pt rightmarin 0pt
topmargin 0pt topmargin 0pt

View File

@ -20,14 +20,14 @@ makeBookePrint()
# Normal graphics printed output. # Normal graphics printed output.
./makeBookeTunePages.sh "$1" ./makeBookeTunePages.sh "$1"
./makeBooke.sh A4 "$1" ./makeBooke.sh A4 "$1"
# ./makeBooke.sh A4NoCover "$1" ./makeBooke.sh A4NoCover "$1"
./makeBooke.sh Nook "$1" ./makeBooke.sh Nook "$1"
# Compact graphics printed output. # Compact graphics printed output.
./makeBookeTunePages.sh --use-compact "$1" ./makeBookeTunePages.sh --use-compact "$1"
./makeBooke.sh A5 "$1" ./makeBooke.sh A5 "$1"
./makeBooklet.sh "$1" ./makeBooklet.sh "$1"
# ./makeBooke.sh A5NoCover "$1" ./makeBooke.sh A5NoCover "$1"
} }
# Make a single booke. # Make a single booke.
@ -79,7 +79,7 @@ makeABumperBooke()
./makeBookeTunePages.sh "${booke}" ./makeBookeTunePages.sh "${booke}"
done done
./makeBooke.sh A4 "$@" ./makeBooke.sh A4 "$@"
# ./makeBooke.sh A4NoCover "$@" ./makeBooke.sh A4NoCover "$@"
./makeBooke.sh Nook "$@" ./makeBooke.sh Nook "$@"
for booke in "$@" for booke in "$@"
do do
@ -87,7 +87,7 @@ makeABumperBooke()
done done
./makeBooke.sh A5 "$@" ./makeBooke.sh A5 "$@"
./makeBooklet.sh "Bumper" ./makeBooklet.sh "Bumper"
# ./makeBooke.sh A5NoCover "$@" ./makeBooke.sh A5NoCover "$@"
} }
makeBumperBookes() makeBumperBookes()

View File

@ -29,10 +29,6 @@ shift
mkdir -p $builddir mkdir -p $builddir
# Clear any XeLaTeX intermediate/generated files in case old ones
# interfere with the build. This has been known to happen.
rm $builddir/dottes.*
if [ $# -eq 1 ]; then if [ $# -eq 1 ]; then
bookename=$1 bookename=$1
for item in title subtitle instrument for item in title subtitle instrument

View File

@ -22,16 +22,25 @@ find $booke -maxdepth 1 -name "*.abc" |
do do
name=`basename $filename .abc` name=`basename $filename .abc`
# Make the tune graphic PDF. # Make the tune graphic.
abcm2ps -E -F singletune -O $graphicsdir/$name.eps $filename abcm2ps -E -F singletune -O $graphicsdir/$name.eps $filename
epstopdf --outfile=$graphicsdir/$name.pdf $graphicsdir/${name}001.eps # Make $name.eps so we can build with LaTeX.
rm $graphicsdir/${name}001.eps mv $graphicsdir/${name}001.eps $graphicsdir/${name}.eps
# And make the corresponding PDF.
epstopdf --outfile=$graphicsdir/$name-tocrop.pdf $graphicsdir/${name}.eps
# And crop it, so the graphic is as big as possible on the page.
pdfcrop $graphicsdir/$name-tocrop.pdf $graphicsdir/$name.pdf
rm $graphicsdir/$name-tocrop.pdf
# and make the first line graphic. # and make the first line graphic.
$dir/abcfirstline.py $filename > firstline.abc $dir/abcfirstline.py $filename > firstline.abc
abcm2ps -E -F firstline -O $graphicsdir/firstline-$name.eps firstline.abc abcm2ps -E -F firstline -O $graphicsdir/firstline-$name.eps firstline.abc
epstopdf --outfile=$graphicsdir/firstline-$name.pdf $graphicsdir/firstline-${name}001.eps mv $graphicsdir/firstline-${name}001.eps $graphicsdir/firstline-${name}.eps
rm firstline.abc $graphicsdir/firstline-${name}001.eps rm firstline.abc
epstopdf --outfile=$graphicsdir/firstline-$name-tocrop.pdf $graphicsdir/firstline-${name}.eps
# And crop it, so the graphic is as big as possible on the page.
pdfcrop $graphicsdir/firstline-$name-tocrop.pdf $graphicsdir/firstline-$name.pdf
rm $graphicsdir/firstline-$name-tocrop.pdf
done done
# And make any compact tune graphics. # And make any compact tune graphics.
@ -44,8 +53,13 @@ find ${booke}/Compact -maxdepth 1 -name "*.abc" |
do do
name=`basename $filename .abc` name=`basename $filename .abc`
# Make the tune graphic PDF. # Make the tune graphic.
abcm2ps -E -F singletune -O $graphicsdir/compact-${name}.eps $filename abcm2ps -E -F singletune -O $graphicsdir/compact-${name}.eps $filename
epstopdf --outfile=$graphicsdir/compact-${name}.pdf $graphicsdir/compact-${name}001.eps # Make $name.eps so we can build with LaTeX.
rm $graphicsdir/compact-${name}001.eps mv $graphicsdir/compact-${name}001.eps $graphicsdir/compact-${name}.eps
# And make the corresponding PDF.
epstopdf --outfile=$graphicsdir/compact-${name}-tocrop.pdf $graphicsdir/compact-${name}.eps
# And crop it, so the graphic is as big as possible on the page.
pdfcrop $graphicsdir/compact-${name}-tocrop.pdf $graphicsdir/compact-${name}.pdf
rm $graphicsdir/compact-${name}-tocrop.pdf
done done

View File

@ -26,7 +26,7 @@ makeaudiofiles()
abc2midi $1 -o $tunedir/${name}.tmp.mid -silent abc2midi $1 -o $tunedir/${name}.tmp.mid -silent
mv $tunedir/${name}.tmp.mid $tunedir/${name}.mid mv $tunedir/${name}.tmp.mid $tunedir/${name}.mid
timidity --quiet -A600,600 -OwM $3 -o $tunedir/${name}.wav $tunedir/${name}.mid timidity --quiet -OwM $3 -o $tunedir/${name}.wav $tunedir/${name}.mid
lame -m m -V 9 --silent $tunedir/${name}.wav $tunedir/${name}.tmp.mp3 lame -m m -V 9 --silent $tunedir/${name}.wav $tunedir/${name}.tmp.mp3
mv $tunedir/${name}.tmp.mp3 $tunedir/${name}.mp3 mv $tunedir/${name}.tmp.mp3 $tunedir/${name}.mp3
# Timidity can generate OGG directly. But we need to generate WAV # Timidity can generate OGG directly. But we need to generate WAV

View File

@ -32,12 +32,12 @@ find $booke -maxdepth 1 -name "*.abc" |
mkdir -p $tunedir mkdir -p $tunedir
abcm2ps -g -F singletune -O $tunedir/$name.svg $filename tmpname=${name}.tmp
mv $tunedir/${name}001.svg $tunedir/$name.svg convert -colors 256 -quality 90 -density 200 $graphicsdir/${name}.pdf $tunedir/${tmpname}.png
$dir/abcfirstline.py $filename > firstline.abc convert -colors 256 -quality 90 -density 200 $graphicsdir/firstline-${name}.pdf $tunedir/firstline-${tmpname}.png
abcm2ps -g -F firstline -O $tunedir/firstline-$name.svg firstline.abc
mv $tunedir/firstline-${name}001.svg $tunedir/firstline-$name.svg mv $tunedir/${tmpname}.png $tunedir/${name}.png
rm -f firstline.abc mv $tunedir/firstline-${tmpname}.png $tunedir/firstline-${name}.png
# Make the web downloadable PDF with the tune title. # Make the web downloadable PDF with the tune title.
abcm2ps -E -F singletuneweb -O $tunedir/$name.eps $filename abcm2ps -E -F singletuneweb -O $tunedir/$name.eps $filename

View File

@ -1,12 +1,19 @@
% Format for a graphic with a single tune % Format for a graphic with a single tune
partsbox true partsbox true
measurenb false measurenb false
stretchlast 1.0
writefields ABCDFGHIKLMmNORrSsTXZ 0
botmargin 0 botmargin 0
leftmargin 0 leftmargin 0
rightmargin 0 rightmarin 0
topmargin 0 topmargin 0
titleformat Y0 titleformat Y0
titlespace 0 titlespace 0
topspace 0 topspace 0
% I don't want any info fields in the graphics. To turn off the
% fields, give a blank infoname for that letter.
infoname S
infoname R
infoname B
infoname D
infoname Z
infoname H
infoname N

View File

@ -1,7 +1,14 @@
% Format for a downloadable PDF with a single tune with tune title % Format for a downloadable PDF with a single tune with tune title
partsbox true partsbox true
measurenb false measurenb false
stretchlast 1.0
scale 0.9 scale 0.9
titleformat P-1 T0 C1 titleformat P-1 T0 C1
writefields ABDFGHILMmNORrSsWwXZ 0 % I don't want any info fields in the graphics. To turn off the
% fields, give a blank infoname for that letter.
infoname S
infoname R
infoname B
infoname D
infoname Z
infoname H
infoname N

View File

@ -383,7 +383,7 @@ ul.tune-type-list li
display: inline-block; display: inline-block;
} }
img.dottes-svg img.dottes-png
{ {
display: block; display: block;
width: 100%; /* Make image fill width */ width: 100%; /* Make image fill width */

View File

@ -177,8 +177,8 @@
of <a href="www.creativefreedom.co.uk">Creative Freedom</a>. of <a href="www.creativefreedom.co.uk">Creative Freedom</a>.
Thanks to them.</p> Thanks to them.</p>
<p>Above all, profuse and grateful thanks to all my fellow <p>Above all, profuse and grateful thanks to all my fellow
Havocs, notably MickP, Nerys, KateK, LouisT, Susie and Ed, Havocs, notably MickP, Nerys, KateK, Susie and Ed, and most especially
and most especially to Jane. They have supplied the tunes, to Jane. They have supplied the tunes,
checked the renditions, and offered corrections and suggestions. checked the renditions, and offered corrections and suggestions.
Without them, this project couldn't have happened.</p> Without them, this project couldn't have happened.</p>
</div> </div>