diff --git a/.gitignore b/.gitignore index 6b7b37b..297cb21 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,5 @@ Library-.* *.aux *.log *.orig +*.mid *~ diff --git a/Session/ALaModeDeFrance.abc b/Session/ALaModeDeFrance.abc index d7217ce..e05204d 100644 --- a/Session/ALaModeDeFrance.abc +++ b/Session/ALaModeDeFrance.abc @@ -5,6 +5,6 @@ M: C L: 1/4 Q: 160 K: Gmaj -d |: "G" d B c d | "G" B>A G d | "G" d B c d |1 "G" B3 d :|2 "G" B3 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" B4 || +d | "D" d B c d | "G" B>A G d | "G" d B c d | "G" B3 :| +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 :| diff --git a/Session/Argeers.abc b/Session/Argeers.abc index c1c0aa5..3b8dff5 100644 --- a/Session/Argeers.abc +++ b/Session/Argeers.abc @@ -7,8 +7,7 @@ M:C L:1/8 Q:130 K:G -"G" GABc "Am" A2>G2 | "D" F2D2 D4 | d2A2 d3 c | "G" B2G2 G4 | -"G" GABc "Am" A2>G2 | " D" F2 FG A2 D2 | "C" EFG2 "D" FGAB | "G" G4 G4 :| -"D" FGA2 FGA2 | "D" d2 A2 d2 A2 |\ -"C" FG A2 FG A2 | "D" d2 A2 d4 | -"G" d2cB "C" c2dc | "G" B2AG "D" A3D | "C" EFG2 "D" FGAB | "G" G4 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 :| +"D" FGA2 FGA2 | "D" d2 A2 d2 A2 | "C" FG A2 FG A2 | "D" d2 A2 d4 | +"G" d2cB "Am" c2dc | "Bm" B2AG "C" A3D | "D" EFG2 "C" FGAB | "G" G4 G4 :| diff --git a/Session/AstleysRide.abc b/Session/AstleysRide.abc index 72c5f82..30240d9 100644 --- a/Session/AstleysRide.abc +++ b/Session/AstleysRide.abc @@ -10,6 +10,6 @@ M:4/4 Q:180 K:G dB|"G"G2G2 G2FG|"D"A2A2 A2BA|"C"GFED E2F2|"G"GABc dcBA| -G2G2 G2FG|"D"A2A2 A2BA|"C"GFED "D7"E2F2|G4G2 :| -GA|B2B2 B2AB|"Am"c2c2 cdcB| "D7"A2A2 A2GA|"G"B2B2 BcBA| -G2G2 G2FG|"D"A2A2 A2BA|"C"GFED "D7"E2F2|"G"G4G2 :| +G2G2 G2FG|"D"A2A2 A2BA|"C"GFED "D"E2F2|"G" G4G2 :| +GA|"G" B2B2 B2AB|"Am"c2c2 cdcB| "D"A2A2 A2GA|"G"B2B2 BcBA| +"Em" G2G2 G2FG|"Am"A2A2 A2BA|"D" GFED E2F2|"G"G4G2 :| diff --git a/Session/BattleOfTheSomme.abc b/Session/BattleOfTheSomme.abc index cf0d5f5..f49db62 100644 --- a/Session/BattleOfTheSomme.abc +++ b/Session/BattleOfTheSomme.abc @@ -11,8 +11,10 @@ H:+ piping's greatest premature losses. M: 9/8 L: 1/8 K: G -Q: 160 -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 B3 |1 "D" ABA "G" G3-G2 c :|2 "D" ABA "G" G3-G2 G || -|: "G" GFG "D" A3 D3 | AGA "G" BdB G3 | "G" GAB "C" c3 D3 | BdB "D" A3- Ad>c | -"D" BdB "G" G3 GFG | "C" AGE E3 D3 | EGE D3 B3 |1 "D" ABA "G" G3-G2 G :|2 "D" ABA "G" G6 || +Q: 100 +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 B3 | "D" ABA G3- G :| +zG |\ +"G" GFG A3 D3 | "D" AGA BdB G3 | "G" GAB c3 D3 | "D" BdB A3- Ad>c | +"G" BdB G3 GFG | "D" AGE E3 D3 | "C" EGE D3 B3 | "D" ABA G3- G :| diff --git a/Session/BearDance.abc b/Session/BearDance.abc index fbdf241..806ae42 100644 --- a/Session/BearDance.abc +++ b/Session/BearDance.abc @@ -13,6 +13,6 @@ L:1/16 Q:1/4=120 K:Em "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" E2G2E2G2|"D" F2D2D4|"C" E2G2E2G2|"D" A4G2A2| -|"Em" B2B2 "D" A2A2|"C" 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" EFG2 EFG2|"D" F2D2D4|"C" EFG2 EFG2|"D" A4G2A2| +|"Em" B2B2 "D" A2A2|"C" G2G2 "D" F4|"Em" EFG2 "D" F2D2|"Em" E4 E4:| diff --git a/Session/BonnyKate.abc b/Session/BonnyKate.abc index ab7ab41..d7881e7 100644 --- a/Session/BonnyKate.abc +++ b/Session/BonnyKate.abc @@ -8,5 +8,5 @@ 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 | "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 |] -|: "G" B G G A/B/ | "Am" c A "Bm" d B | "C" e c c e | "D" f> e 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 :| diff --git a/Session/BrightonCamp.abc b/Session/BrightonCamp.abc index b56fcf4..f6b12b2 100644 --- a/Session/BrightonCamp.abc +++ b/Session/BrightonCamp.abc @@ -10,7 +10,8 @@ M:4/4 L:1/8 Q:1/4=180 K:G -gf |: "G" e2dc B2A2 | "C" B2G2E2D2 | "G" G2G2GABc | "D7" d4B2gf | -| "G" e2dc B2A2 | "C" B2G2E2G2 | "D7" FG A2D2EF |1 "G" G6 gf :|2 "G" G6 dc || -|: "G" B2d2 "D7" e2f2 | "G" g2dc "D7" BA G2 | "G" Bc d2 "Em" e2f2 | "C" g4 "D7" f2gf | -| "G" e2dc B2A2 | "C" B2G2E2G2 | "D7" FG A2D2EF |1 "G" G6 dc :|2 "G" G8|| +gf| "G" e2dc B2A2 | "C" B2G2E2D2 | "G" G2G2GABc | "D" d4B2gf| + "G" e2dc B2A2 | "C" B2G2E2G2 | "D" FG A2D2EF| "G" G4G2:| +dc | "G" B2d2 "Am" e2f2 | "C" g2dc "G" BA G2 |\ + "G" Bc d2 "Em" e2f2 | "C" g4 "D" f2gf| + "G" e2dc B2A2 | "C" B2G2E2G2 | "D" FG A2D2EF | |"G" G4G2 :| diff --git a/Session/CaptainLanoesQuickMarch.abc b/Session/CaptainLanoesQuickMarch.abc index c2b2bcc..6e89404 100644 --- a/Session/CaptainLanoesQuickMarch.abc +++ b/Session/CaptainLanoesQuickMarch.abc @@ -4,7 +4,7 @@ M: 6/8 L: 1/8 Q: 160 K: Gmaj -"G" G2 B d2 d | "G" gfe d3 | "D" cdc "G" B2 B | "D" AGA "Em" B2 G | -"G" G2 B d2 d | "G" gfe d3 | "D" cdc "G" B2 B | "D" AGA "G" G3 :| -"Em" B3 B3 | "C" BAB "D" c3 | "G" B2 c d2 c | "G" B2 A B2 G | -"Em" B3 B3 | "C" BAB "D" c3 | "G" B2 g dBG | "D" A3 "G" G3 :| +"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" B3 "Em" B3 | "C" BAB "D" c3 | "G" B2 c d2 c | "G" B2 A B2 G | +"G" B3 "Em" B3 | "C" BAB "D" c3 | "G" B2 g dBG | "D" A3 "G" G3 :| diff --git a/Session/DancingOolert.abc b/Session/DancingOolert.abc index 0ad1d02..813fcaa 100644 --- a/Session/DancingOolert.abc +++ b/Session/DancingOolert.abc @@ -1,3 +1,4 @@ + X: 1 T: Dancing Oolert, The C: Sally Kirkpatrick @@ -6,9 +7,9 @@ L: 1/8 Q: 1/4=130 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: DMix -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 |1 "D" D6 G2 :|2 "D" D8 || +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 |1 "D" D6 :|2 "D" D8 || K: EDor |: "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 "G" GE cB | "D" A8 :| -| "_Alternative B part ending." "C" E2 EF GE =cB | "D" A4 "G" G4 :| \ No newline at end of file +| "_Alternative B part ending." "C" E2 EF GE =cB | "D" A4 "G" G4 || diff --git a/Session/ElizabethClare.abc b/Session/ElizabethClare.abc index d383035..8b89858 100644 --- a/Session/ElizabethClare.abc +++ b/Session/ElizabethClare.abc @@ -7,11 +7,7 @@ L: 1/8 R: waltz K: Gmaj Q: 1/4=120 - D GA | "G" B2 Bc B2 |"D" A2ABA2 |"C" G2E2GE |"G" D2>D2 GA|\ -"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 | 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 |] + 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 | +"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 || +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 | "C" d2 c2 B2 | "D" A2 G2 F2 | "G" G3 |] diff --git a/Session/EmmaFromFinland.abc b/Session/EmmaFromFinland.abc index 45a76c0..5e1bfbf 100644 --- a/Session/EmmaFromFinland.abc +++ b/Session/EmmaFromFinland.abc @@ -4,7 +4,7 @@ M: 3/4 L: 1/4 O: Finland Q: 140 -K: FMaj +K: Dm 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 || |: "Gm" d2 d | d c B | "Dm" A2 A | A G F | diff --git a/Session/FieryClockFace.abc b/Session/FieryClockFace.abc index ccb4362..af367ed 100644 --- a/Session/FieryClockFace.abc +++ b/Session/FieryClockFace.abc @@ -1,10 +1,10 @@ X: 1 T: Fiery Clock Face, The +R: jig M: 6/8 L: 1/8 -Q: 160 -K: Gmaj -d | "G" g2 g G2 A | B2 c d2 e | "F" =f2 f A2 B | c2 d e2 ^f | - "G" g2 g G2 A | B2 c d2 d | "C" efg "D7" a2 f | "G" g3 g2 :| -A | "G" B2 B GAB | "Am" c2 B A2 G | "D7" F2 E D2 E | F2 G A2 ^A | - "G" B2 B GAB | "Am" c2 B A2 G | "D7" FED E2 F | "G" G3 G2 :| +K: Dmaj +c | "D" d2 d D2 E | F2 G A2 B | "C" =c2 =c E2 F | G2 A B2 c | +"D" d2 d D2 E | F2 G A3 |"A" Bcd ecA | "D" d3 d2 :| +g | "D" f2 d def | "Em" g2 f e2 d | "A" c2 B A2 B | c2 d e2 g | +"D" f2 d def | "Em" g2 f e2 d | "A" c2 A B2 c | "D" d3 d2 :| diff --git a/Session/FromNightTillMorn.abc b/Session/FromNightTillMorn.abc index 8870664..b0d469d 100644 --- a/Session/FromNightTillMorn.abc +++ b/Session/FromNightTillMorn.abc @@ -7,6 +7,6 @@ K:G dc | "G" B2B2B2G2 | "D" AGAB "G" G2AB | "Am" cBAG "G" GABc | "D" d2ec B2dc | "G" B2B2B2G2 | "D" AGAB "G" G2AB | "Am" cBAG "G" GABG |\ [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" GABG | "D" A4 "G" G4 :| diff --git a/Session/HorsesBrawl.abc b/Session/HorsesBrawl.abc index 47b5a66..ed17e04 100644 --- a/Session/HorsesBrawl.abc +++ b/Session/HorsesBrawl.abc @@ -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 :| "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 :| -"Em" _B A/G/ B A/G/ | "D" F G A2 | D E F G | A _B A G | - "Em" _B A/G/ B A/G/ | "D" F G A2 | D E F G | G F "G" G2 :| +K:Gdor +"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 :| diff --git a/auto_render.py b/auto_render.py new file mode 100644 index 0000000..d978475 --- /dev/null +++ b/auto_render.py @@ -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()