Strudelify
I Promised Myself cover art

1990 · I Promised Myself

I Promised Myself

Nick Kamen

KeyE♭ majorTempo120 bpm
0:00/0:00
// I Promised Myself — Nick Kamen
// 120 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 135 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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, A@4 for four bars: edit a riff to change every repeat.

// bass · synth bass 2 · "SYNTH BASS"
const bass = note(`<
  ~@31 A@2 B@2 C@2 B@2 A@2 B@2 C@2 D@2 E@2 F@2 C@2 D@2 E@2 F@2 C@2 B@2 G ~@3 A@2 B@2 C@2 B@2 E@2 F@2 C@2 D@2 E@2 F@2 C@2
  B@2 A@2 B@2 C@2 B@2 A@2 B@2 C@2 B@2 A@2 B@2 C@2 B@2 A@2 B@2 C@2 B@2 A@4 G ~@7
>`.pickRestart({
  A: "ab1!16", B: "eb1!16", C: "bb1!16", D: "eb2!16", E: "c2!16", F: "f1!16", G: "ab1 ~@15",
})).s("gm_synth_bass_2").gain(0.36)

// bass · piano · "FLUTE"
const bass_2 = note("<db-1 ~@134>").s("gm_piano").gain(0.05)

// chords · flute
const flute = note(`<
  ~@3 A B C B C D E F G H E F I B J K L M N O P@2 Q R S@2 T U V W X Y Z M AA AB AC B AD AE AF H AG AH AI P Q AJ AK AL AM
  AN P@2 Q AO S AL AM AP AQ AR AQ AR AS@2 AT@2 AU@2 AV@2 P@2 Q R S@2 AM AN P@2 Q R S@2 AM AN AQ AR AW AX AY AZ AW AX AQ
  AR AW AX AY AZ AW AX AQ AR AW AX BA AZ AW AX BB AR AW AX AY AZ AW BC AQ AR AQ AR BD ~@7
>`.pickRestart({
  A: "[eb5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,bb5] ~ [eb5,ab5,bb5] ~, ab5 ~@15", // Cm Ab Ebsus4
  B: "[eb5,ab5,db6] ~ [eb5,ab5,db6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~", // Dbsus2 Ab
  C: "[eb5,ab5,c6]@2 ~@2 [eb5,ab5,c6]@3 ~ [eb5,ab5,bb5]@2 ~@2 [eb5,ab5,bb5]@2 ~@2", // Ab Ebsus4
  D: "[eb5,ab5,db6]@2 ~@2 [eb5,ab5,db6]@2 ~@2 [eb5,ab5,c6]@2 ~@2 [ab5,c6] ~@3, ~@6 eb5 ~", // Dbsus2 Ab
  E: "[bb4,eb5,ab5] ~ [bb4,eb5,ab5] ~ [bb4,eb5,g5] ~ [bb4,eb5,g5] ~", // Ebsus4 Eb
  F: "[bb4,eb5,f5]@3 ~ [bb4,eb5,f5]@2 ~@2 [bb4,eb5,g5]@2 ~@2 [bb4,eb5] ~@3, ~@6 g5 ~", // Bbsus4 Eb Eb5
  G: "[f5,db6]@2 ~@2 [f5,bb5,db6]@2 ~@2 [f5,bb5,c6]@2 ~@2 [f5,bb5,c6]@3 ~, bb5 ~@15", // Db Bbm Fsus4
  H: "[f5,bb5,eb6]@3 ~ [f5,bb5,eb6]@3 ~ [f5,bb5,db6]@2 ~@2 [f5,bb5,db6]@2 ~@2", // Ebsus2 Bbm
  I: "[eb5,ab5] ~@3 [eb5,ab5,c6]@3 ~ [eb5,ab5,bb5]@2 ~@2 [eb5,ab5,bb5]@2 ~@2, c6 ~@7", // Ab5 Ab Ebsus4
  J: "[bb4,eb5,ab5]@3 ~ [bb4,eb5,ab5]@3 ~ [bb4,eb5,g5]@2 ~@2 [bb4,eb5,g5]@3 ~", // Ebsus4 Eb
  K: "[eb5,f5]@2 ~@2 [bb4,eb5,f5]@2 ~@2 [bb4,g5]@2 ~@2 [bb4,eb5] ~@3, ~@8 eb5 ~@3 g5@2 ~@2", // Ebsus2 Bbsus4 Eb Eb5
  L: "[f5,bb5,db6]@2 ~@2 [bb5,db6]@2 f5 ~ [f5,bb5,c6]@2 ~@2 [bb5,c6]@2 f5 ~, ~@12 f5 ~@3", // Bbm Fsus4 Bbsus2
  M: "[f5,bb5,eb6]@2 ~@2 [bb5,eb6]@3 ~ [f5,bb5,db6]@2 ~@2 [bb5,db6] ~@3, ~@4 f5 ~@7 f5@2 ~@2", // Ebsus2 Eb5 Bbm
  N: "[bb4,eb5,ab5] ~@3 [bb4,eb5,ab5]@2 ~@2 [bb4,eb5,g5]@2 ~@2 [eb5,g5]@2 bb4 ~", // Ebsus4 Eb
  O: "[bb4,eb5,f5]@2 ~@2 [bb4,eb5,f5]@2 ~@2 [bb4,eb5,g5]@2 ~@2 [eb5,g5]@2 bb4 ~", // Bbsus4 Eb
  P: "[c5,eb5,g5] ~ [c5,eb5,g5] ~ [c5,eb5,g5] ~ [c5,eb5,g5] ~", // Cm
  Q: "[c5,f5,bb5] ~ [c5,f5,bb5] ~ [c5,f5,bb5] ~ [c5,f5,a5] ~", R: "[c5,f5,a5] ~ [c5,f5,a5] ~ [c5,f5,a5] ~ [c5,f5,a5] ~",
  S: "[db5,f5,bb5] ~ [db5,f5,bb5] ~ [db5,f5,bb5] ~ [db5,f5,bb5] ~", // Bbm
  T: "[eb5,ab5,bb5]@2 ~@2 [eb5,ab5,bb5]@2 ~@2 [eb5,ab5,bb5]@2 ~@2 [eb5,ab5] ~@3, ~@6 bb5 ~", // Ebsus4 Ab5
  U: "[eb5,g5,bb5]@2 ~@2 [eb5,g5,bb5]@2 ~@2 [eb5,g5,bb5]@2 eb5 ~ [g5,bb5]@2 eb5 ~", // Eb Gm
  V: "[ab5,c6]@2 ~@2 [ab5,c6]@2 eb5 ~ [eb5,ab5,bb5]@2 ~@2 [eb5,ab5,bb5]@3 ~", // Ab Ebsus4
  W: "[ab5,db6]@2 eb5 ~ [ab5,db6]@2 eb5 ~ [eb5,ab5,c6]@2 ~@2 [eb5,ab5,c6]@2 ~@2", // Db5 Ab
  X: "[bb4,eb5,ab5]@2 ~@2 [eb5,ab5]@2 bb4 ~ [eb5,g5]@2 ~@2 [eb5,g5]@2 ~@2", // Ebsus4 Ab5 Eb
  Y: "[eb5,f5]@2 ~@2 [eb5,f5]@2 bb4@2 [eb5,g5]@2 ~@2 [bb4,g5] ~@3, ~@6 eb5 ~", // Ebsus2 Eb
  Z: "[f5,bb5,db6]@2 ~@2 [f5,bb5,db6]@3 ~ [bb5,c6]@2 f5 ~ [bb5,c6]@2 f5 ~", // Bbm Bbsus2
  AA: "[bb4,eb5,ab5]@2 ~@2 [eb5,ab5]@2 bb4 ~ [bb4,eb5,g5]@2 ~@2 [bb4,eb5,g5]@2 bb4 ~", // Ebsus4 Ab5 Eb
  AB: "[bb4,eb5,f5]@2 ~@2 [eb5,f5]@2 bb4 ~ [bb4,eb5,g5]@2 ~@2 [eb5,g5]@2 ~@2, ~@12 bb4 ~@3", // Bbsus4 Ebsus2 Eb
  AC: "[eb5,ab5,c6]@2 ~@2 [ab5,c6]@2 eb5 ~ [ab5,bb5]@2 ~@2 [eb5,ab5,bb5]@2 ~@2", // Ab Absus2 Ebsus4
  AD: "[bb4,eb5,ab5]@2 ~@2 [eb5,ab5]@2 bb4 ~ [bb4,eb5,g5]@2 ~@2 [eb5,g5]@2 bb4 ~", // Ebsus4 Ab5 Eb
  AE: "[eb5,f5]@2 ~@2 [bb4,eb5,f5]@3 ~ [bb4,eb5,g5]@2 ~@2 [eb5,g5]@2 ~@2, ~@12 bb4 ~@3", // Ebsus2 Bbsus4 Eb
  AF: "[f5,db6]@3 ~ [bb5,db6]@2 f5 ~ [f5,bb5,c6]@2 ~@2 [f5,bb5,c6]@3 ~, bb5 ~@15", // Db Bbm Fsus4
  AG: "[bb4,eb5,ab5]@3 ~ [eb5,ab5]@2 bb4 ~ [bb4,eb5,g5]@2 ~@2 [bb4,eb5,g5]@3 ~", // Ebsus4 Ab5 Eb
  AH: "[bb4,eb5,f5]@2 ~@2 [bb4,eb5,f5]@2 ~@2 [bb4,eb5,g5]@3 ~ [bb4,eb5,g5]@2 ~@2", // Bbsus4 Eb
  AI: "[c5,eb5,g5]@2 ~@2 [eb5,g5]@2 c5 ~ [c5,eb5,g5]@2 ~@2 [c5,eb5,g5]@2 ~@2", // Cm Eb Cm
  AJ: "[f5,a5]@2 c5 ~ [c5,f5,a5]@2 ~@2 [c5,f5,a5]@2 ~@2 [c5,f5,a5]@2 ~@2", // F
  AK: "[db5,f5,bb5]@3 ~ [db5,f5,bb5]@2 ~@2 [db5,f5,bb5]@3 ~ [f5,bb5]@2 db5@2", // Bbm Bb5
  AL: "[db5,f5,bb5]@2 ~@2 [db5,f5,bb5]@2 ~@2 [f5,bb5]@2 db5 ~ [db5,f5]@2 ~@2, ~@12 bb5 ~@3", // Bbm Bb5 Db
  AM: "[bb4,eb5,ab5]@3 ~ [bb4,eb5,ab5]@2 ~@2 [bb4,eb5,ab5]@2 ~@2 [bb4,eb5,g5]@2 ~@2", // Ebsus4 Eb
  AN: "[bb4,eb5,g5] ~ [bb4,eb5,g5] ~ [bb4,eb5,g5] ~ [bb4,eb5,g5] ~", // Eb
  AO: "[f5,a5]@2 c5 ~ [c5,f5,a5]@3 ~ [c5,f5,a5]@2 ~@2 [f5,a5]@2 c5 ~", // F
  AP: "[bb4,eb5,g5]@2 ~@2 [bb4,eb5,g5]@2 ~@2 [bb4,eb5,g5]@2 ~@2 [bb4,eb5,g5] ~@3", // Eb
  AQ: "[c5,eb5,ab5]@2 ~@2 [c5,eb5,ab5]@2 ~@2 [bb4,eb5,ab5]@3 ~ [bb4,eb5,ab5]@2 ~@2", // Ab Ebsus4
  AR: "[db5,eb5,ab5] ~ [db5,eb5,ab5] ~ [c5,eb5,ab5] ~ [c5,eb5,ab5] ~", AS: "ab5/2",
  AT: "[eb5@21 ~ eb5@2 eb6@2 db6@2 ~@2 c6@2]/2", AU: "[db6@21 ~ eb5@2 eb6@2 db6@3 ~ c6@2]/2", AV: "[bb5@15 ~]/2",
  AW: "[ab4,bb4,eb5] ~ [ab4,bb4,eb5] ~ [g4,bb4,eb5] ~ [g4,bb4,eb5] ~", // Absus2 Eb
  AX: "[f4,bb4,eb5]@2 ~@2 [f4,bb4,eb5]@2 ~@2 [g4,bb4,eb5]@2 ~@2 [g4,bb4] ~@3, ~@6 eb5 ~", // Ebsus2 Eb Gm
  AY: "[db5,bb5] ~ [db5,f5,bb5] ~ [c5,f5,bb5] ~ [c5,f5,bb5] ~, f5 ~@15", // Gb Bbm Fsus4
  AZ: "[eb5,f5,bb5] ~ [eb5,f5,bb5] ~ [db5,f5,bb5] ~ [db5,bb5] ~, ~@12 f5 ~@3", // Ebsus2 Bbm Gb
  BA: "[db5,f5,bb5] ~ [db5,f5,bb5] ~ [c5,f5,bb5] ~ [c5,f5,bb5] ~", // Bbm Fsus4
  BB: "[c5,eb5,ab5] ~ [c5,eb5,ab5] ~ [bb4,eb5,ab5] ~ [bb4,eb5,ab5] ~", // Ab Ebsus4
  BC: "[f4,bb4,eb5]@3 ~ [f4,bb4,eb5]@3 ~ [g4,bb4,eb5]@3 ~ [g4,bb4] ~ ab5 ~, ~@6 eb5 ~", BD: "[c5,eb5,ab5] ~@7",
})).s("gm_flute").gain(0.25).pan(0.2)

// chords · synth strings 2 · "SYN STRING"
const synth_strings_2 = note(`<
  ~@3 A@6 B@2 C@2 D@2 E@2 F@2 G@2 H@2 I@6 J@6 K@2 L@6 C@2 M@6 N@2 O@2 P@2 Q@4 R@2 S@8 K@2 T U@7 V@2 P@2 W@2 N@2 X@4 D@2
  Y@2 Z@6 C@2 AA@4 AB@2 C@2 AC@6 AD@2 AE@7 ~@7
>`.pickRestart({
  A: "[c5@8 bb4@7 db5@9 c5@16 bb4@7 db5@9 c5@16 bb4@8 db5@8 c5@8, [eb4,ab4]@95 ~]/6", // Ab5
  B: "[ab4@7 g4@7 ~@2 f4@8 g4@6 ~@2, bb3, eb4@15 ~]/2", C: "[db5 c5 eb5 db5, [f4,bb4]@15 ~]/2",
  D: "[ab4@8 g4@7 f4@8 g4@6 ~@3, [bb3,eb4]]/2", E: "[c5 bb4 db5 c5, [eb4,ab4]@31 ~]/2",
  F: "[ab4@7 g4@7 ~@2 f4@8 g4@8, bb3, eb4@15 ~]/2", G: "[db5@8 c5@7 eb5@8 db5@9, [f4,bb4]@15 ~]/2",
  H: "[ab4@8 g4@7 f4@8 ~ g4@7 ~, [bb3,eb4]]/2", // Eb5
  I: "[[c4,g4]@31 bb4@13 ~ a4@18 ~ [f4,bb4]@32, eb4@30 ~ [c4,f4]@31 ~ db4@31 ~@2]/6", // C5 Bb5 F5
  J: "[ab4@14 g4@16 ~ c5@9 bb4@8 db5@8 c5@8 ~@8 g4@7 f4@8 ~ g4@7 ~, eb4@95 ~, bb3@31 ab4@40 ~@25, ~@2 bb3]/6",
  K: "[db5@8 c5@7 eb5@8 ~ db5@8, [f4,bb4]@15 ~]/2", // Bb5
  L: "[ab4@8 g4@8 f4@8 g4@6 ~ c5@8 ~ bb4@8 db5@8 c5@7 ~@9 g4@7 ~ f4@8 g4@8, eb4@95 ~, bb3@33 ~@30 bb3@32 ~, ~@31 ab4@41 ~@24]/6",
  M: "[ab4@8 g4@8 f4@8 ~@40 bb4@13 a4@18 ~, eb4@63 ~ f4@31 ~, bb3@16 c4@31 ~, ~@3 g4@5 ~@4]/6", N: "[db4,f4,bb4]/2",
  O: "[ab4@14 g4@17 ~, bb3, eb4@15 ~]/2", P: "[[c4,g4], eb4@15 ~]/2",
  Q: "[bb4@14 a4@17 ~ f4@31 ~, [c4,f4]@31 [db4,bb4]@31 ~@2]/4", R: "[ab4@7 g4@8 ~, [bb3,eb4]]/2",
  S: "[c5 bb4 db5 c5@2 bb4 db5 c5@2 bb4 db5 c5 ~ g4 f4 g4, ab4@13 ~@3, eb4@3 [bb3,eb4]]/8", // Eb5
  T: "ab4@7 g4@7 ~@2, [bb3,eb4]", // Eb5
  U: "[f4@7 g4@7 ~@33 bb4@14 a4@18 ~ f4@31 bb3, ~@15 g4@32 f4@31 ~ bb4@33, ~@15 eb4@30 ~@67, ~@16 c4@62 ~ db4@31 ~@2]/7",
  V: "[ab4@14 g4@17 ~, eb4@31 ~]/2", W: "[bb4@14 a4@17 ~, [c4,f4]@31 ~]/2",
  X: "[ab4@7 g4@8 ~ c5@4 bb4@4 db5@4 c5@4, bb3@33 ~@31, eb4@31 ~ [eb4,ab4]@31 ~]/4", // Ab5
  Y: "[db5 c5 eb5 db5, bb4, f4@15 ~]/2",
  Z: "[ab4@4 g4@4 f4@4 g4@3 ~ c5@4 bb4@4 db5@4 c5@4 ~@4 g4@4 f4@4 g4@3 ~, eb4@63 ~ [bb3,eb4]@32, bb3@4 ab4@5 ~@3]/6", // Eb5
  AA: "[ab4@8 g4@7 f4@8 ~ g4@5 ~@3 c5@8 bb4@8 db5@8 c5@8, eb4@63 ~, bb3@32 ab4@31 ~]/4",
  AB: "[ab4@7 g4@8 f4@8 g4@6 ~@3, bb3, eb4@15 ~]/2",
  AC: "[ab4@8 g4@7 f4@8 ~ g4@5 ~@3 c5@8 bb4@8 db5@8 c5@8 ab4@8 g4@7 f4@8 ~ g4@7 ~, eb4@47 ~, bb3@31 ab4@31 ~@2 bb3@32]/6",
  AD: "[db5@8 c5@7 ~ eb5@8 db5@8, f4@15 ~, bb4@15 bb4@14 ~@3]/2",
  AE: "[ab4@7 g4@8 ~ f4@8 g4@6 ~@2 c5@8 bb4@8 db5@8 c5@16 bb4@8 db5@8 c5@16 ~@8, eb4@101 ~@11, bb3@16 ab4@35 ~@5]/7",
})).s("gm_synth_strings_2").gain(0.28).pan(0.7)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@23 A@2 B@2 C@2 D@3 ~@15 E F B@2 G H I@2 E F B@2 G H D@3 ~@3 J@2 K@2 L M N O P@2 Q@6 R@4 S@4 ~@8 T U V W U X V W T U
  V W U X V W Y L Z AA L M Z AA Y AB@2 AC@2 ~@7
>`.pickRestart({
  A: "[c3,c4]/2", B: "[f3,f4]/2", C: "[bb2,bb3]/2", D: "[[eb3,eb4]@11 ~@5]/3", E: "[c3,c4]",
  F: "[eb3,eb4] [c3,c4] [eb3,eb4] [c3,c4]", G: "[bb2,bb3]", H: "[db3,db4] [bb2,bb3] [db3,db4] [bb2,bb3]",
  I: "[eb3,eb4]/2", J: "[ab4,ab5]/2", K: "[bb4,bb5]/2", L: "[db5,db6] [c5,c6]", M: "[eb5,eb6] [db5,db6]",
  N: "[bb4,bb5]", O: "[db5,db6]", P: "[c5,c6]/2", Q: "[[bb4,bb5]@14 ~ a4@17 [bb4,bb5]@64, ~@14 a5@19 ~@63]/6",
  R: "[c5,c6]/4", S: "[bb4,bb5]/4", T: "c5 bb4", U: "db5 c5", V: "ab4 g4", W: "f4 g4", X: "eb5 db5",
  Y: "[c5,c6] [bb4,bb5]", Z: "[ab4,ab5] [g4,g5]", AA: "[f4,f5] [g4,g5]", AB: "[[db5,db6] [c5,c6]@2 [bb4,bb5]]/2",
  AC: "[[db5,db6]@4 c5@4 ab4@3 ~@5, ~@8 c6@13 ~@11]/2", // Db
})).s("gm_string_ensemble_1").gain(0.16).pan(0.8)

// other · string ensemble 2 · "STRINGS"
const string_ensemble_2 = note(`<
  ~@22 A B@2 C@2 D@2 E@2 ~@16 F G C@2 H I J@2 F G C@2 H I J@2 K ~@11 F G C@2 H I J@2 F G C@2 H I J@2 ~@44
>`.pickRestart({
  A: "~@7 eb4", B: "c4/2", C: "[f4@31 ~]/2", D: "bb4/2", E: "eb4/2", F: "c4", G: "eb4@4 c4@4 eb4@4 c4@3 ~", H: "bb3",
  I: "db4 bb3 db4 bb3", J: "[eb4@31 ~]/2", K: "ab3 ~",
})).s("gm_string_ensemble_2").gain(0.4)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@3 A B A B A C D E F G D E A B H E F G D E I@2 J K L@2 D E A C D M F G D E A C D E N O P E Q R S T U V W X Y Z AA T
  AB AC AD AE AF C AG C A C AH E F G D E AI Z AJ AK AL AM AN AO Y AI AP AQ AL AR AS AT AU AV AW AX AY AZ BA E BB C BC BD
  N BE D BF BG C P BH BI G D BJ BK BL BM E BN BO BM E BP C BQ BR@2 ~@7
>`.pickRestart({
  A: "[eb4,ab4,c5] ~ [eb4,ab4,c5]!2 ~ [eb4,ab4,c5]!2 ~ [eb4,ab4,bb4] ~ [eb4,ab4,bb4]!2 ~ [eb4,ab4,bb4]!2 ~", // Ab Ebsus4
  B: "[eb4,ab4,db5] ~ [eb4,ab4,db5]!2 ~ [eb4,ab4,db5]!2 ~ [eb4,ab4,c5] ~ [eb4,ab4,c5]!2 ~ [eb4,ab4,c5]!3", // Dbsus2 Ab
  C: "[eb4,ab4,db5] ~ [eb4,ab4,db5]!2 ~ [eb4,ab4,db5]!2 ~ [eb4,ab4,c5] ~ [eb4,ab4,c5]!2 ~ [eb4,ab4,c5]!2 ~", // Dbsus2 Ab
  D: "[bb3,eb4,ab4] ~ [bb3,eb4,ab4]!2 ~ [bb3,eb4,ab4]!2 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4]!2 ~ [bb3,eb4,g4]!2 ~", // Ebsus4 Eb
  E: "[bb3,eb4,f4] ~ [bb3,eb4,f4]!2 ~ [bb3,eb4,f4]!2 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4]!2 ~ [bb3,eb4,g4]!2 ~", // Bbsus4 Eb
  F: "[f4,bb4,db5] ~ [f4,bb4,db5]!2 ~ [f4,bb4,db5]!2 ~ [f4,bb4,c5] ~ [f4,bb4,c5]!2 ~ [f4,bb4,c5]!2 ~", // Bbm Fsus4
  G: "[f4,bb4,eb5] ~ [f4,bb4,eb5]!2 ~ [f4,bb4,eb5]!2 ~ [f4,bb4,db5] ~ [f4,bb4,db5]!2 ~ [f4,bb4,db5]!2 ~", // Ebsus2 Bbm
  H: "[bb3,eb4,g4] ~ [bb3,eb4,ab4]!2 ~ [bb3,eb4,ab4]!2 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4]!2 ~ [bb3,eb4,g4]!2 ~", // Eb Ebsus4 Eb
  I: "[c4,eb4,g4] ~ [c4,eb4,g4]!2 ~ [c4,eb4,g4]!2 ~ [c4,eb4,g4] ~ [c4,eb4,g4]!2 ~ [c4,eb4,g4]!2 ~", // Cm
  J: "[c4,f4,bb4] ~ [c4,f4,bb4]!2 ~ [c4,f4,bb4]!2 ~ [c4,f4,bb4] ~ [c4,f4,a4]!2 ~ [c4,f4,a4]!2 ~", // Fsus4 F
  K: "[c4,f4,a4] ~ [c4,f4,a4]!2 ~ [c4,f4,a4]!2 ~ [c4,f4,a4] ~ [c4,f4,a4]!2 ~ [c4,f4,a4]!2 ~", // F
  L: "[db4,f4,bb4] ~ [db4,f4,bb4]!2 ~ [db4,f4,bb4]!2 ~ [db4,f4,bb4] ~ [db4,f4,bb4]!2 ~ [db4,f4,bb4]!2 ~", // Bbm
  M: "[bb3,eb4,f4] ~ [bb3,eb4,f4]!2 ~ [bb3,eb4,f4]!2 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] eb5 ~ [bb3,eb4,g4]!2 ~", // Bbsus4 Eb
  N: "[f4,bb4,db5] ~ [f4,bb4,db5]!2 ~ [f4,bb4,db5]!3 [f4,bb4,c5] ~ [f4,bb4,c5]!2 ~ [f4,bb4,c5]!2 ~", // Bbm Fsus4
  O: "[f4,bb4,eb5] ~ [f4,bb4,eb5]!2 ~ [f4,bb4,eb5]!3 [f4,bb4,db5] ~ [f4,bb4,db5]!2 ~ [f4,bb4,db5]!2 ~", // Ebsus2 Bbm
  P: "[bb3,eb4,ab4] ~ [bb3,eb4,ab4]!2 ~ [bb3,eb4,ab4]!3 [bb3,eb4,g4] ~ [bb3,eb4,g4]!2 ~ [bb3,eb4,g4]!2 ~", // Ebsus4 Eb
  Q: "[c4,eb4,g4] ~@2 [c4,eb4,g4] ~@2 [c4,eb4,g4] ~ [c4,eb4,g4] ~ [c4,eb4,g4]!2 ~ [c4,eb4,g4]!2 ~", // Cm
  R: "[c4,eb4,g4] ~@2 [c4,eb4,g4] ~@2 [c4,eb4,g4] ~ [c4,eb4,g4] ~ [c4,eb4,g4]!2 ~ [eb4,g4] [c4,eb4,g4] ~", // Cm Eb Cm
  S: "[c4,f4,bb4] ~ [c4,f4,bb4]!2 ~ [c4,f4,bb4]!2 ~ [c4,f4,bb4] ~@2 [c4,f4,bb4] ~@2 [c4,f4,bb4] ~", // Fsus4
  T: "[c4,f4,a4] ~ [c4,f4,a4]!2 ~ [c4,f4,a4]!2 ~ [c4,f4,a4] ~@2 [c4,f4,a4] ~@2 [c4,f4,a4] ~", // F
  U: "~@2 f4 [db4,f4,bb4] ~ [db4,f4,bb4]!2 ~ [db4,f4,bb4] ~@2 [db4,f4,bb4] ~@2 [db4,f4,bb4] ~", // Bbm
  V: "[db4,f4,bb4] ~ [db4,f4,bb4]!2 ~ [db4,f4,bb4]!2 ~ [db4,f4,bb4] ~@2 [db4,f4,bb4] ~@2 [db4,f4,bb4] ~", // Bbm
  W: "[bb3,eb4,ab4] ~ [bb3,eb4,ab4]!2 ~ [bb3,eb4,ab4]!2 ~ [bb3,eb4,ab4] ~ [bb3,eb4,ab4] ~ [bb3,eb4,ab4] ~ [bb3,eb4,g4] ~", // Ebsus4 Eb
  X: "[bb3,eb4,g4] ~ [bb3,eb4,g4]!2 ~ [bb3,eb4,g4]!2 ~ [bb3,eb4,g4] ~@2 [bb3,eb4,g4] ~@2 [bb3,eb4,g4] ~", // Eb
  Y: "~@2 [c4,eb4,g4]!2 ~ [c4,eb4,g4]!2 ~ [c4,eb4,g4] ~@2 [c4,eb4,g4] ~@2 [c4,eb4,g4] ~", // Cm
  Z: "[c4,eb4,g4] ~ [c4,eb4,g4]!2 ~ [c4,eb4,g4]!2 ~ [c4,eb4,g4] ~@2 [c4,eb4,g4]!2 ~ [c4,eb4,g4] ~", // Cm
  AA: "[c4,f4,bb4] ~ [c4,f4,bb4]!2 ~ [c4,f4,bb4]!2 ~ [c4,f4,bb4] ~@2 [c4,f4,a4] ~@2 [c4,f4,a4] ~", // Fsus4 F
  AB: "~@2 [db4,f4,bb4]!2 ~ [db4,f4,bb4]!2 ~ [db4,f4,bb4] ~@2 [db4,f4,bb4] ~@2 [db4,f4,bb4] ~", // Bbm
  AC: "[db4,f4,bb4] ~ [db4,f4,bb4]!2 ~ [db4,f4,bb4]!2 ~ [db4,f4,bb4] ~ [db4,f4,bb4]!2 ~@2 [db4,f4,bb4] ~", // Bbm
  AD: "[bb3,eb4,ab4] ~ [bb3,eb4,ab4]!2 ~ [bb3,eb4,ab4]!2 ~ [bb3,eb4,ab4] ~@5 [bb3,eb4,g4] ~", // Ebsus4 Eb
  AE: "[bb3,eb4,g4] ~ [bb3,eb4,g4]!2 ~ [bb3,eb4,g4]!2 ~ [bb3,eb4,g4] ~@2 [bb3,eb4,g4]!2 ~@3", // Eb
  AF: "~@2 [eb4,ab4,c5]!2 ~ [eb4,ab4,c5]!2 ~ [eb4,ab4,bb4] ~ [eb4,ab4,bb4]!2 ~ [eb4,ab4,bb4] [eb4,ab4,eb5] ~", // Ab Ebsus4 Ab5
  AG: "[eb4,ab4,c5] ~ [eb4,ab4,c5]!2 ~ [eb4,ab4,c5]!2 ~ [eb4,bb4] ~@2 [eb4,ab4,bb4] ~@2 [eb4,ab4,bb4] ~", // Ab Eb5 Ebsus4
  AH: "[bb3,eb4,ab4] ~ [bb3,eb4,ab4] eb5 ~ [bb3,eb4,ab4]!2 ~ [bb3,eb4,g4,ab4] ~ [bb3,eb4,g4]!2 ~@2 [bb3,eb4,g4] ~", // Ebsus4 Eb
  AI: "~@2 [c4,eb4,g4]!2 ~ [c4,eb4,g4]!2 ~ [c4,eb4,g4] ~@2 [c4,eb4,g4]!2 ~ [c4,eb4,g4] ~", // Cm
  AJ: "~@2 [c4,f4,bb4]!2 ~ [c4,f4,bb4]!2 ~ [c4,f4,bb4] ~@2 [c4,f4,bb4]!2 ~ [c4,f4,bb4] ~", // Fsus4
  AK: "[c4,f4,a4] ~ [c4,f4,a4]!2 ~ [c4,f4,a4]!2 ~ [c4,f4,a4] ~@2 [c4,f4,a4]!2 ~ [c4,f4,a4] ~", // F
  AL: "~@2 [db4,f4,bb4]!2 ~ [db4,f4,bb4]!2 ~ [db4,f4,bb4] ~@2 [db4,f4,bb4]!2 ~ [db4,f4,bb4] ~", // Bbm
  AM: "[db4,f4,bb4] ~ [db4,f4,bb4]!2 ~ [db4,f4,bb4]!2 ~ [db4,f4,bb4] ~@2 [db4,f4,bb4]!2 ~ [db4,f4,bb4] ~", // Bbm
  AN: "~@2 [bb3,eb4,ab4]!2 ~ [bb3,eb4,ab4]!2 ~ [bb3,eb4,ab4] ~@2 [bb3,eb4,ab4] ~@2 [bb3,eb4,ab4] ~", // Ebsus4
  AO: "[bb3,eb4,g4] ~ [bb3,eb4,g4]!2 ~ [bb3,eb4,g4]!2 ~ [bb3,eb4,g4] ~@2 [bb3,eb4,g4]!2 ~ [bb3,eb4,g4] ~", // Eb
  AP: "~@2 [c4,f4,bb4]!2 ~ [c4,f4,bb4]!2 ~ [c4,f4,bb4] ~@2 [c4,f4,a4] ~@2 [c4,f4,a4] ~", // Fsus4 F
  AQ: "~@2 [f4,a4] [c4,f4,a4] ~ [c4,f4,a4]!2 ~ [c4,f4,a4] ~@2 [c4,f4,a4]!2 ~ [c4,f4,a4] ~", // F
  AR: "[f4,bb4] ~ [db4,f4,bb4]!2 ~ [db4,f4,bb4]!2 ~ [db4,f4,bb4] ~@2 [db4,f4,bb4]!2 ~ [db4,f4,bb4] ~", // Bb5 Bbm
  AS: "~@2 [bb3,eb4] [bb3,eb4,ab4] ~ [bb3,eb4,ab4]!2 ~ [bb3,eb4,ab4] ~@2 [bb3,eb4,ab4] ~@2 [bb3,eb4,g4] ~", // Eb5 Ebsus4 Eb
  AT: "~@2 [bb3,eb4,g4]!2 ~ [bb3,eb4,g4]!2 ~ [bb3,eb4,g4] ~@2 [bb3,eb4,g4]!2 ~ [bb3,eb4,g4] ~", // Eb
  AU: "~@2 [eb4,ab4,c5]!2 ~ [eb4,ab4,c5]!2 ~ [eb4,ab4,bb4] ~@2 [eb4,ab4,bb4] ~@2 [eb4,ab4,bb4] ~", // Ab Ebsus4
  AV: "~@2 [eb4,ab4,db5]!2 ~ [eb4,ab4,db5]!2 ~ [eb4,ab4,c5] ~@2 [eb4,ab4,c5] ~@2 [eb4,ab4,c5] ~", // Dbsus2 Ab
  AW: "~@2 [bb3,eb4,ab4]!2 ~ [bb3,eb4,ab4]!2 ~ [bb3,eb4,g4] ~@2 [bb3,eb4,gb4,g4] ~@2 [bb3,eb4,g4] ~", // Ebsus4 Eb
  AX: "~@2 [bb3,eb4,f4]!2 ~ [bb3,eb4,f4]!2 ~ [bb3,eb4,g4] ~@2 [bb3,eb4,g4] ~@2 [bb3,eb4,g4] ~", // Bbsus4 Eb
  AY: "~@2 [f4,bb4,db5]!2 ~ [f4,bb4,db5]!2 ~ [f4,bb4,c5] ~@2 [f4,bb4,c5] ~@2 [f4,bb4,c5] ~", // Bbm Fsus4
  AZ: "~@2 [f4,bb4,eb5]!2 ~ [f4,bb4,eb5]!2 ~ [f4,bb4,db5] ~@2 [f4,bb4,db5] ~@2 [f4,bb4,db5] ~", // Ebsus2 Bbm
  BA: "~@2 [bb3,eb4,ab4]!2 ~ [bb3,eb4,ab4]!2 ~ [bb3,eb4,g4] ~@2 [bb3,eb4,g4] ~@2 [bb3,eb4,g4] ~", // Ebsus4 Eb
  BB: "~@2 [eb4,ab4,c5]!2 ~ [eb4,ab4,c5]!2 ~ [eb4,ab4,bb4] ~ [eb4,ab4,bb4]!2 ~ [eb4,ab4,bb4]!2 ~", // Ab Ebsus4
  BC: "~@2 [bb3,eb4,ab4]!2 ~ [bb3,eb4,ab4]!2 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4]!2 ~ [bb3,eb4,g4]!2 ~", // Ebsus4 Eb
  BD: "[bb3,eb4,f4] ~ [bb3,eb4,f4]!2 ~ [bb3,eb4,f4]!3 [bb3,eb4,g4] ~ [bb3,eb4,g4]!2 ~ [bb3,eb4,g4]!2 ~", // Bbsus4 Eb
  BE: "[f4,bb4,eb5] ~ [f4,bb4,eb5]!2 ~ [f4,bb4,eb5]!3 [f4,bb4,db5] ~@2 [f4,bb4,db5] ~@2 [f4,bb4,db5] ~", // Ebsus2 Bbm
  BF: "[bb3,eb4,f4] ~ [bb3,eb4,f4]!2 ~ [bb3,eb4,f4]!2 ~ [bb3,eb4,g4] ~ [eb4,g4] [bb3,eb4,g4] ~ [bb3,eb4,g4]!2 ~", // Bbsus4 Eb
  BG: "~@2 [eb4,ab4,c5]!2 ~ [eb4,ab4,c5]!3 [eb4,ab4,bb4] ~ [eb4,ab4,bb4]!2 ~ [eb4,ab4,bb4]!2 ~", // Ab Ebsus4
  BH: "[bb3,eb4,f4] ~ [bb3,eb4,f4]!2 ~ [bb3,eb4,f4]!2 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4]!5 ~", // Bbsus4 Eb
  BI: "[db4,f4,bb4] ~ [f4,bb4,db5]!2 ~ [f4,bb4,db5]!2 ~ [f4,bb4,c5] ~ [f4,bb4,c5]!2 ~ [f4,bb4,c5]!2 ~", // Bbm Fsus4
  BJ: "[bb3,eb4,f4] ~ [bb3,eb4,f4]!2 ~ [bb3,eb4,f4]!2 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,eb4,g4]!3 ~", // Bbsus4 Eb
// … 76 more lines