Strudelify

Dolcissimo amore

Grandi

KeyB♭ minorTempo185 bpm
0:00/0:00
// Dolcissimo amore — Grandi
// 185 bpm, 4/4, key A# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 188 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(185/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/2 spreads a riff over 2 bars.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · fretless bass
const bass = note(`<
  ~ A@2 B@2 C D E@2 A@2 F@2 C D G@2 H I J K L M N@2 O P Q R O S T@2 H I Q K L M U@2 V W X Y A@2 B@2 C D Z@3 AA AB AC AD
  AE AF AG AH AA AB AI@2 AJ@2 AK AL AA AB AC AD AE AF AG AH AA AB AM@2 C D E@2 A@2 F@2 C D G@2 H I J K L AN N@2 O P AO
  AP O AQ T@2 V W X AR A@2 B@2 C D Z@3 AA AB AC AD AE AF AG AH AA AB AI@2 AJ@2 AS AT AU AV AC AW AX@2 AY AZ BA@2 BB BC
  BD@2 BE BF AA AB AC AD AE AF AG AH AA AB BG@4 A@2 B@2 C D E@2 A@2 F@2 BH@6 ~
>`.pickRestart({
  A: "[eb2@10 ~@2 eb2@7 ~ eb2@4 bb2@8]/2", B: "[bb1@5 ~ bb1@3 ~@3 ab1@11 ~ bb1@7 ~]/2", C: "eb1@5 ~ eb1@2",
  D: "~ eb1@3", E: "[bb1@12 ab1@11 ~ bb1@7 ~]/2", F: "[bb1@5 ~ bb1@2 ~@4 ab1@11 ~ bb1@7 ~]/2",
  G: "[gb1@21 ~@3 ab1@7 ~]/2", H: "bb2@12 bb1@3 ~", I: "~ f1 bb1 ~", J: "f2", K: "d2@4 eb2@3 ~",
  L: "bb1@11 ~ bb1@2 ~@2", M: "eb2 ~@3 eb2@4 bb1@6 ~@2", N: "[d2@12 eb2@10 ~@2 f2@7 ~]/2", O: "bb1@5 ~ bb1@2",
  P: "~@2 bb1 ~ f1@4 bb1@5 ~@3", Q: "f2@11 ~ f2@4", R: "d2@8 eb2@5 ~@3", S: "eb2 ~ eb2@2 bb1@3 ~",
  T: "[d2@10 ~@2 eb2@11 ~ f2@8]/2", U: "[d2@6 eb2@5 ~ f2@4]/2", V: "c2@11 ~ c2@4", W: "g2@4 c2@3 ~", X: "d2@5 ~ d2@2",
  Y: "a2@4 d2@3 ~", Z: "[bb1@12 ab1@8 eb2@2 e2 [f2,gb2] [g2,ab2] ~@23, ~ gb1]/3", AA: "gb1@11 ~ gb1@3 ~",
  AB: "db2@4 gb1@3 ~", AC: "ab1@11 ~ ab1@3 ~", AD: "~@4 ab1@4 eb1@7 ~", AE: "bb1@11 ~ bb1@4", AF: "f2@4 bb1@3 ~",
  AG: "ab1@10 ~@2 ab1@3 ~", AH: "~@2 eb1@2 ab1@3 ~", AI: "[ab1@9 ~@3 ab1@6 ~@2 ab1@3 ~ eb2@8]/2",
  AJ: "[bb2@4 f2 g2 bb2@6 f2@4]/2", AK: "ab1@4 eb2 f2 ab2@2", AL: "ab2 ab1, ~@8 f2 ~@7",
  AM: "[ab1@4 eb2 f2 ab2@6 ab1@4, ~@24 f2 ~@7]/2", AN: "eb2 ~@3 eb2@8 bb1@4", AO: "f2@11 ~ d2@4", AP: "~ d2 eb2@2",
  AQ: "eb2 ~@3 eb2@12", AR: "a2 ~ a2@2 d2@3 ~", AS: "ab2@14 f2 ~", AT: "ab2@4 f2@4 ab2@3 ~ f2@4", AU: "gb1@11 ~ gb1@4",
  AV: "~@4 gb1@3 ~ db2@6 ~@2", AW: "eb2@7 ~ ab1@7 ~", AX: "[bb1@5 ~ bb1@3 ~ bb1@2 f2@3 ~, ~@24 eb2 ~@7]/2",
  AY: "f1@9 ~@3 f1@4", AZ: "c2@4 f1@3 ~", BA: "[gb1@9 ~@3 gb1@6 ~@2 gb1@4 db2@6 ~@2]/2", BB: "ab1@2 ~ ab1",
  BC: "eb2 ab1", BD: "[bb1@10 ~@2 bb1@8 f2@2 ~ g2 bb2@6 ~ f2]/2", BE: "ab2@12 eb3@3 ~", BF: "eb3 gb1, ~@8 ab2 ~@7",
  BG: "[ab1@8 eb2@2 f2@2 ab2@44 g2 [f2,gb2] eb2 ~@5]/4", BH: "[gb1@91 ~@5]/6",
})).s("gm_fretless_bass").gain(0.38)

// chords · rock organ
const rock_organ = note(`<
  ~@41 A@2 B@2 C@2 D@2 C@2 D@2 ~ E@8 ~@3 F G@4 H@2 I@2 H@2 I@2 J@2 K@2 ~@28 A@2 B@2 C@2 D@2 C@2 D@2 ~ E@8 ~@3 L G@4 H@2
  I@2 H@2 I@2 J@2 K@2 G@4 M@2 N@2 O@6 ~@23
>`.pickRestart({
  A: "[[g4,bb4,eb5]@31 ~]/2", B: "[[a4,c5,f5]@31 ~]/2", C: "[bb4,db5,f5]/2",
  D: "[[bb4,db5]@11 ~ [ab4,c5]@18 ~@2, f5@31 ~]/2", E: "[f5@127 ~]/8", F: "~@13 [d4,e4] f4 ~",
  G: "[[bb4,f5,bb5,d6] [ab4,eb5,ab5,c6], f6]/4", H: "[[bb5,db6], f5@15 ~]/2", I: "[[eb5,ab5]@15 ~, c6]/2",
  J: "[db5,gb5,bb5]/2", K: "[ab5@3 ~, c6@11 ~@5]/2", L: "~@12 [b3,c4] [d4,e4] f4 g4", M: "bb5/2", N: "[c6@15 ~]/2",
  O: "[db6@8 ~@7 bb5@8 ~, ~@16 c6@15 ~@17]/6",
})).s("gm_rock_organ").gain(0.12).pan(0.7)

// chords · rock organ · soft notes
const rock_organ_soft = note("<~@47 A ~@3 A ~@13 B ~@14 C@2 ~@34 A ~@3 A ~@13 D ~@14 C@2 ~@37>".pickRestart({
  A: "gb4@11 ~@5", B: "~@10 g3 a3 [b3,c4] ~@2 g4, ~@5 f3 ~@2", C: "[eb5@3 ~]/2", D: "~@10 g3 a3 ~@4, ~@5 f3 ~@2",
})).s("gm_rock_organ").gain(0.07).pan(0.7)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@66 A@2 B@2 C@2 D@2 E@2 D@2 C@2 D@2 ~@53 A@2 B@2 C@2 D@2 E@2 D@2 C@2 D@2 ~@4 C@2 D@2 E@2 D@2 C@2 D@2 ~@21
>`.pickRestart({
  A: "[[bb3,d4], f3@15 ~]/2", B: "[[ab3,c4,eb4]@15 ~]/2", C: "[gb3,bb3,db4]/2", D: "[ab3,c4,eb4]/2",
  E: "[f3,bb3,db4]/2", // Bbm
})).s("gm_synth_strings_1").gain(0.15).pan(0.3)

// chords · pad warm
const pad_warm = note(`<
  ~ A@2 B@2 C@2 D@2 A@2 B@2 C@2 E@2 F@2 G H I ~ J@2 F@2 G K I ~ J@2 L@2 G M N O@3 P@2 Q@2 A@2 B@2 C@2 D@2 ~ R@2 S@2 T@2
  S@2 R@2 S@2 ~@4 U@4 V@4 W@4 C@2 X ~ A@2 X ~ Y@2 E@2 F@2 G H I ~ J@2 F@2 G K I ~ J@2 P@2 Q@2 A@2 B@2 C@2 D@2 ~ R@2 S@2
  T@2 S@2 R@2 S@2 ~@4 U@4 V@4 W@4 ~@4 U@4 V@4 W@4 ~@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 E@2 ~@3
>`.pickRestart({
  A: "[bb3,db4,gb4]/2", B: "[[bb3,db4]@5 ~ [ab3,c4,eb4]@10, f4@3 ~@5]/2", C: "[[bb3,db4,gb4]@31 ~, eb4 ~@31]/2",
  D: "[[bb3,f4]@3 [ab3,c4,eb4]@5, db4@5 ~@11]/2", E: "[[bb3,db4,f4]@21 ~@11]/2", F: "[[f3,bb3,d4]@7 ~]/2",
  G: "[f3,a3,c4]@7 ~", H: "[a3,d4]@7 ~ [bb3,bb4]@7 ~", I: "d4@7 ~",
  J: "[[d3,f3,a3,c4]@11 ~ [eb3,bb3]@16 ~@4, ~@6 g3@9 ~]/2", K: "[a3,d4]@7 ~ [bb3,eb4,g4]@7 ~",
  L: "[[f3,bb3,d4]@13 ~@3]/2", M: "[a3,d4,f4,a4]@4 [bb3,eb4,g4,bb4]@3 ~", N: "[f3,bb3,d4] ~",
  O: "[bb3@8 [d3,f3,a3,c4]@5 ~ [g3,d4]@10, [g3,eb4]@9 ~@5 [eb3,bb3]@9 ~]/3", P: "[[g3,eb4], bb3@15 ~]/2",
  Q: "[[c4,f4]@15 ~]/2", R: "[gb3,bb3,db4]/2", S: "[ab3,c4,eb4]/2", T: "[f3,bb3,db4]/2",
  U: "[~@44 eb4@9 ~@3 ab4@8, f4@3 ~]/4", V: "[~@44 eb4@9 ~@3 ab4@8, f4@49 ~@15]/4", W: "[~@14 eb4@13 ~@5, f4 ~]/4",
  X: "[bb3,db4,f4] ~@2 [ab3,c4,eb4]", Y: "[[bb3,gb4]@31 ~]/2",
})).s("gm_pad_warm").gain(0.12).pan(0.4)

// chords · pad warm · soft notes
const pad_warm_soft = note("<~@20 A B C D@2 ~@3 E B C D@2 ~@64 A B C D@2 ~@3 E B C D@2 ~@78>".pickRestart({
  A: "[f4,a4]@7 ~ [eb4,g4]@7 ~", B: "[f3,bb3]@7 ~", C: "[g3,bb3,eb4]@7 ~", D: "[~@6 d4@9 ~]/2",
  E: "[f4,a4]@7 ~ bb4@7 ~", // F
})).s("gm_pad_warm").gain(0.07).pan(0.4)

// chords · epiano1
const epiano1 = note(`<
  ~ A@2 B@4 C@4 B@4 D@2 E@2 F G H I J@2 E@2 F G H I J@2 E@2 F G H I J@2 K@2 L@2 A@2 B@4 M@2 ~ N@4 O@2 P@2 Q@2 R@2 S@2
  T@2 N@4 O@2 P@2 Q@2 R@2 U@2 C@4 B@4 D@2 E@2 F G H I J@2 E@2 F G H I J@2 K@2 L@2 A@2 B@4 M@2 ~ N@4 O@2 P@2 Q@2 R@2 S@2
  T@2 N@4 O@2 P@2 Q@2 R@2 ~@4 N@4 O@2 P@2 Q@2 R@2 ~@2 A@2 B@4 C@4 B@4 D@2 ~@3
>`.pickRestart({
  A: "[[gb3,bb3,db4,f4]@15 ~, eb2]/2", // Gbmaj7
  B: "[[bb2,db4,f4]@6 [ab3,c4,eb4]@10 [bb3,db4,f4]@15 ~, bb3@5 ~ ab2@11 ~@15, ~ eb2]/4", // Bbm Ab Bbm
  C: "[[bb3,db4,f4]@5 ~ ab3@3 ~@7 [gb3,bb3,db4,f4]@15 ~, bb2@6 [ab2,c4,eb4]@9 ~ eb2@16, ~@9 ab3@6 ~@17, ~@24 ab4@17 ~@23]/4", // Bbm Gbmaj7 Ab
  D: "[[gb2,bb3,db4,f4]@31 ~]/2", E: "[[f3,bb3,d4]@15 ~]/2", F: "[f3,a3,c4]@15 ~",
  G: "[a3,d4,f4,a4]@4 [bb3,eb4,g4,bb4]@3 ~", H: "[f3,bb3,d4] ~", I: "[g3,bb3,eb4]",
  J: "[[d3,f3,a3,c4]@10 ~@2 [eb3,g3,bb3,d4]@19 ~]/2", K: "[[bb3,eb4]@31 ~, g3@29 ~@3]/2", L: "[[a3,c4,f4]@29 ~@3]/2",
  M: "[[bb3,db4,f4]@5 ~ [ab2,c4,eb4]@9 ~, bb2@6 ab3@3 ~@7]/2", // Bbm Ab
  N: "[bb3@16 [ab3,c4]@15 ~, db4@17 ~@15, gb3@15 ~ eb4@16]/4", O: "[[bb3,db4], f3@15 ~]/2", P: "[[ab3,c4]@15 ~, eb4]/2",
  Q: "[[bb3,db4], gb3@15 ~]/2", R: "[[ab3,c4,eb4]@15 ~]/2", S: "[[bb3,d4]@31 ~]/2", T: "[[c4,eb4]@29 ~@3]/2",
  U: "[[bb3,db4,f4]@15 ~, eb2]/2", // Bbm
})).s("gm_epiano1").gain(0.23).pan(0.7)

// other · woodblock
const woodblock = note(`<
  ~@17 A B ~@5 C ~@3 D ~@2 E F A B ~@5 C ~@14 G ~ H ~ I ~ J ~ K ~@7 G ~ H ~ I ~ J ~@16 A B ~@5 C ~@3 D ~@2 E F ~@14 G ~
  H ~ I ~ J ~ K ~@7 G ~ H ~ I ~ J ~@9 G ~ H ~ I ~ J ~@25
>`.pickRestart({
  A: "~@15 f4", B: "f4@3 ~ f4@4 ~@8", C: "~@4 bb5 ~@2 f5 f4@4 ~@4", D: "~@8 a5 ~@7", E: "d5 ~@7",
  F: "~@4 bb5 ~@2 f5 c4@3 ~@5", G: "~@4 bb3 ~@3", H: "~@4 d4 ~@3", I: "~@8 d4 ~@7", J: "~@4 bb4 ~@11",
  K: "~@3 bb4 ~@12",
})).s("gm_woodblock").gain(0.07).pan(0.7)

// other · woodblock · soft notes
const woodblock_soft = note("<~@18 A ~@15 A ~@44 B ~@15 A ~@52 B ~@15 B ~@23>".pickRestart({
  A: "~@6 f4 ~", B: "~@3 bb4 ~@12",
})).s("gm_woodblock").gain(0.06).pan(0.7)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~ A B ~ C A B ~ C A B ~ C A B ~@30 D ~ E F ~@7 G H ~@2 I J ~@2 K L M@2 N@2 ~@2 G H ~@2 I J ~@2 K ~ A B ~ C A B ~ C A B
  ~@22 D ~ E F ~@7 G H ~@2 I J ~@2 K L M@2 N@2 ~@2 G H ~@2 I J ~@2 K ~@7 G H ~@2 I J ~@2 K ~@3 A B ~ C A B ~ C A B ~ C
  ~@7
>`.pickRestart({
  A: "~@12 bb3 ~@2 ab3", B: "bb3 ~ bb3 ~@13", C: "~@6 bb3 ~ ab3@2 ~ bb3 ab3@2 bb3 ~", D: "~@4 bb3@2 ~@2 bb3@3 ~@5",
  E: "~@4 bb3@2 ~ ab3 bb3 ~@7", F: "ab3 ~@3 ab3 ~@3", G: "~@11 bb3 ab3@2 ~@2", H: "~@4 bb3 ~@6 bb3 ~@4",
  I: "~@11 bb3 ~@4", J: "~@7 bb3 ~@3 bb3 ab3 ~@3", K: "~@7 bb3 ~@7 bb3", L: "~@7 bb3 ~@4 bb3 ~@3",
  M: "[~@4 bb3 ~@3 bb3 ~@3 bb3@19 ~]/2", N: "[~@4 ab3@3 ~ bb3@2 ~@2 bb3@19 ~]/2",
})).s("gm_electric_guitar_muted").gain(0.22)

// other · electric guitar muted · soft notes
const electric_guitar_muted_2 = note(`<
  ~@45 A ~@2 B ~@7 C D ~@2 D ~@11 C D ~@2 D ~@37 A ~@2 B ~@7 C D ~@2 D ~@11 C D ~@2 D ~@11 C D ~@2 D ~@26
>`.pickRestart({
  A: "~@7 ab3 ~@3 bb3 ~@4", B: "~@3 ab3 ~@6 bb3@2 ~@4", C: "~@4 bb3 ~@11", D: "~@12 ab3 ~@3",
})).s("gm_electric_guitar_muted").gain(0.12)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@19 A@2 B@2 ~@4 C@2 B@2 ~@4 D@2 B@2 ~ E@5 F@2 ~@2 G@5 H@2 ~@2 H@2 ~@2 H@2 ~@2 H@4 I@2 ~@2 J@2 ~@2 I@2 ~@16 A@2 B@2
  ~@4 C@2 B@2 ~ K@5 L@2 ~@2 L@2 ~@3 M@2 ~@2 M@2 ~@2 M@2 ~@2 M@4 N@2 ~@2 O@2 ~@2 N@2 ~@4 M@2 I@2 ~@2 J@2 ~@2 I@2 ~@18 P@4
  ~
>`.pickRestart({
  A: "[~@15 [f4,a4]@8 ~ bb4@8]/2", B: "[f4@23 ~@9]/2", C: "[~@15 f4@8 ~@9]/2", D: "[~@15 f4@8 ~ bb4@8]/2",
  E: "[~@17 eb4@30 ~@2 f4@28 ~@3, ~@15 c3@33 [d3,c4]@29 ~@3, ~@16 [g3,bb3]@31 a3@29 ~@4]/5", F: "[~@2 bb4@13 ~]/2",
  G: "[~@4 bb4@39 ~ bb4@33 ~@3]/5", H: "[~ bb4@3]/2", I: "[~ [f4,f5]@3]/2", J: "[[f4,f5]@3 ~]/2",
  K: "[~@17 [eb4,g4]@30 ~@2 [f4,a4]@28 ~@3, ~@15 c3@33 [d3,c4]@29 ~@3, ~@16 [g3,bb3]@31 a3@29 ~@4]/5", // Eb F D7 Gm
  L: "[[bb3,db4,f4,bb4]@13 ~@3]/2", M: "[~ [bb4,bb5]@3]/2", N: "[~ f4@3]/2", O: "[f4@3 ~]/2",
  P: "[~ [db3,bb4]@61 ~@2, f4@31 ~]/4", // Gb
})).s("gm_electric_guitar_jazz").gain(0.19).pan(0.4)

// chords · electric guitar jazz · soft notes
const electric_guitar_jazz_2 = note(`<
  ~@20 A B@2 ~@4 C@2 B@2 ~@4 D@2 B@2 ~@58 A B@2 ~@4 C@2 B@2 ~@74 E@5 ~
>`.pickRestart({
  A: "~@4 g4@3 ~", B: "[d4@23 ~@9]/2", C: "[~@15 a4@8 ~ bb4@8, ~@12 g4@3 ~]/2", D: "[~@15 a4@8 ~ g4@6 ~@2]/2",
  E: "[~@8 db4@31 ~, ~@15 gb2@64 ~]/5",
})).s("gm_electric_guitar_jazz").gain(0.09).pan(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@65 A@4 B C@4 D@4 C@4 ~@52 A@4 B C@4 E@5 ~ F@2 G@4 C@4 D@4 H@4 ~@16 I@5
>`.pickRestart({
  A: "[~@16 [d4,f4]@18 ~ [bb2,bb3,d4,f4]@2 ~ [bb2,bb3,d4,f4] ~@4 [bb2,bb3,d4,f4]@2 ~@3 [ab3,c4,f4]@13 ~ [bb2,ab3,c4,f4] ~, ~@15 [bb2,bb3]@19 ~@13 bb2@15 ~@2]/4", // Dm Bb Fm Bb
  B: "~@2 [bb2,ab3,c4,f4] ~@3 [bb2,ab3,c4,f4]@2 ~@2 [bb2,ab3,c4,f4]@4 ~@2", // Fm
  C: "[[gb3,bb3,db4,f4]@34 ~@10 eb4@12 ab4@7 ~]/4", D: "[[bb2,bb3,db4,f4]@34 ~@10 eb4@12 ab4@7 ~]/4",
  E: "[[bb2,bb3,db4,f4]@34 ~@6 [bb2,bb3]@3 ~ eb3@7 ~ [eb3,eb4]@3 ~ [ab3,ab4]@15 ~@9, ~@43 [c3,c4]@2 ~@10 [f3,f4]@2 ~@23, ~@44 eb4@5 ~@31]/5", // Bbm Bb Eb Ab C F
  F: "[~@12 eb4@12 ab4@7 ~]/2",
  G: "[~@59 eb4@3 ~@2, ~@3 bb3@26 ~@35, ~@4 d4@6 ~ d4@7 ~ d4@8 d4@7 ~ eb4@6 ~@2 eb4@7 ~ eb4@7 ~@6, ~@7 f4@7 ~ f4@8 f4@8 f4@7 ~ f4@7 ~ f4@7 ~ f4@7 ~@2]/4",
  H: "[[gb3,bb3,db4,f4]@17 ~@5 eb4@6 ~@4]/4", // Gbmaj7
  I: "[~@47 f4@4 bb3@4 f4@13 ~@12, gb3@11 ~@5, ~@3 bb3@7 ~ bb3@6 ~ bb3@6 ~@3 bb3@7 ~ bb3@6 ~@2 bb3@6 ~@31, ~@4 db4@7 ~ db4@7 ~ db4@7 ~ db4@8 db4@6 ~@2 db4@11 ~@25, ~@7 f4@7 f4@6 ~@3 f4@6 ~@2 f4@7 ~ f4@6 ~@35]/5",
})).s("gm_acoustic_guitar_steel").gain(0.12).pan(0.6)

// chords · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  ~ A B C@2 A B D@2 E B D@2 E B F@2 G H I J K@2 L@2 M@2 I J K@2 L@2 N ~ I J K@2 L@2 O P Q R A B C@2 A B D@2 ~ S T U V W
  X U V S T U V Y Z AA@2 S T U V AB X U V AC T U ~ A B D@2 E B D@2 E B F@2 AD H I J K@2 L@2 M@2 I J K@2 L@2 O P Q R A B
  C@2 A B D@2 ~ S T U V W X U V S T U V Y Z AA@2 S T U V AB X U V AC T U ~ AE@4 S T U V AB X U V AC T U ~@3 A B C@2 A B
  D@2 E B AF@2 AG AH AI@2 ~@3
>`.pickRestart({
  A: "[gb3,bb3,db4,ab4]@6 db4 [gb3,bb3,db4,gb4]", B: "~ [gb3,bb3,db4] [gb3,bb3,db4,gb4]@3 ~@3",
  C: "[[bb3,db4,f4,ab4]@3 [bb3,db4,f4,ab4] ~@2 [ab3,c4,eb4,ab4]@6 ~ [ab3,eb4]@3]/2", // Bbm7 Ab Ab5
  D: "[[bb3,db4,f4,ab4]@6 [bb3,db4,f4,ab4] ~@5 [ab3,c4,eb4,ab4]@12 ~@2 [ab3,eb4]@6]/2", // Bbm7 Ab Ab5
  E: "[gb3,bb3,db4,ab4]@12 db4@2 [gb3,bb3,db4,gb4] ~", // Gb
  F: "[[f4,ab4]@21 ~@3 [ab3,c4,eb4,ab4]@7 ~, db4@23 ~@9, bb3 ~@31]/2", // Fm Ab
  G: "[bb2,f3,bb3,d4]@12 [bb2,f3,bb3,d4]@2 ~ [bb2,f3,bb3], ~@7 d4", // Bb Bb5
  H: "~@2 d4 [bb2,f3,bb3] [bb2,f3,bb3,d4]@4 [bb2,f3,bb3,d4]@8", I: "[f2,f3,a3,c4]",
  J: "[d3,f3,a3,c4]@7 ~ [eb3,g3,eb4]@8, ~@4 bb3@3 ~", // Dm7 Eb
  K: "[[bb2,f3,bb3,d4]@12 [bb2,f3,bb3,d4]@2 ~ bb3 ~@16, ~@7 eb4@6 ~@3]/2", // Bb
  L: "[[f3,a3,c4,f4]@6 [f3,a3,c4,f4] ~@5 [bb3,c4,f4]@18 ~@2, ~@6 g3@7 ~@3]/2", // F Bbsus2
  M: "[[f3,bb3]@25 ~@7, d4@7 ~, bb2@23 ~@9]/2", N: "[bb2,f3,bb3,d4]", O: "[c3,c4,eb4,g4]@13 ~ g4 [c3,c4,eb4]",
  P: "[c3,c4,eb4,g4]@5 ~ g4 [c3,c4,eb4] [c3,c4,eb4,g4]@6 ~@2", Q: "[d3,d4,f4,a4]@13 ~ [d4,f4,a4] d3",
  R: "[d3,d4,f4,a4]@2 ~ [d3,d4] [d3,d4,f4,a4]@2 ~ [d3,d4] [d3,d4,f4,a4]@2 ~@6, ~ [f4,a4] ~ [f4,a4] ~@4", // Dm D Dm D Dm F
  S: "[gb3,bb3,db4,f4] ~ [gb3,bb3,db4,f4]@10 [gb3,bb3,db4,f4]@2 f4 [gb3,bb3,db4]", // Gbmaj7 Gb
  T: "~@3 [gb3,bb3,db4,f4] [gb3,bb3,db4,f4]@4 [gb3,bb3,db4,f4]@8", // Gbmaj7
  U: "[ab3,c4,eb4,f4] ~ [ab3,c4,eb4,f4]@10 [ab3,c4,eb4,f4]@2 f4 [ab3,c4,eb4]", // Fm7 Ab
  V: "~@3 [ab3,c4,eb4,f4] [ab3,c4,eb4,f4]@4 [ab3,c4,eb4,f4]@8", // Fm7
  W: "[bb3,db4,f4] ~ [bb2,bb3,db4,f4]@10 [bb2,bb3,db4,f4]@2 f4 [bb2,bb3,db4]", // Bbm
  X: "~@3 [bb2,bb3,db4,f4] [bb2,bb3,db4,f4]@4 [bb2,bb3,db4,f4]@8", // Bbm
  Y: "[bb2,bb3,f4] ~ [bb2,bb3,d4,f4]@10 [bb2,bb3,d4,f4]@2 f4 d4", Z: "~@3 [bb3,d4,f4] [bb3,d4,f4]@4 [bb2,bb3,d4,f4]@8",
  AA: "[[ab3,c4,eb4,f4]@3 ~@9 [ab3,c4,eb4,f4]@2 f4 [ab3,c4,eb4]@4 [ab3,c4,eb4,f4] [ab3,c4,eb4,f4]@4 [ab3,c4,eb4,f4]@8]/2", // Fm7 Ab Fm7
  AB: "[bb2,bb3,db4,f4] ~ [bb2,bb3,db4,f4]@10 [bb2,bb3,db4,f4]@2 f4 [bb2,bb3,db4]", // Bbm
// … 122 more lines

More by Grandi