Strudelify

Who's Cheatin' Who

Alan Jackson

KeyG majorTempo133 bpm
0:00/0:00
// Who's Cheatin' Who — Alan Jackson
// 133 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 142 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(133/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 · electric bass finger · "BASS"
const bass = note(`<
  ~@8 A B C B D E F G H E I B J K L M N O L P B C B D E I G H E I Q R K L M N O L S T U V W X U Y Z AA AB ~@6 AC AD AE
  AF AG K L M N O L S T U V W X U Y Z AA K L M N O L S T U V W X U Y Z AA U V W X U Y Z AA U V W X U Y Z AA U V W X U Y
  Z AA K L M N O L S T U V W X U Y Z T@2 AH
>`.pickRestart({
  A: "~@5 e1 f1 f#1", B: "g1 d2", C: "g1@4 d2 g1 a#1@2", D: "g1@4 d2 f2 e2 d2", E: "g1!2", F: "c2!2", G: "g1@2 g1 c2",
  H: "d2@2 d2!2", I: "c2@2 c2 a#1", J: "g1@3 d2 g2!2 d2 a#1", K: "g1@2 b1@2 d2!2 e2 d2", L: "c2@2 e2 c2 g2!2 e2 g2",
  M: "g1@2 b1@2 d2!2 b1@2", N: "d2!2 f1!2", O: "g1@2 b1 g1 d2!2 e2 d2", P: "g1@2 b1@2 d2!2 f1 f#1", Q: "g1 b1 d2!2",
  R: "g1 g2!5 d2 a#1", S: "g1@2 b1@2 d2 c2 a#1@2", T: "g1 b1@2 c2@2 c#2@2 d2", U: "g1!2 a#1 b1 d2!2 e2 d2",
  V: "c2!2 d#2 e2 g2!2 a2 g2", W: "g1!2 a#1 b1 d2!2 b1 d2", X: "d2!2 e2 d2 b1 d2 f1 f#1", Y: "c2!2 e2 c2 g2!2 e2 g2",
  Z: "g1!2 b1 c2 d2 e1 f1 f#1", AA: "g1@3 g1@2 e1 f1 f#1", AB: "g1 ~@3", AC: "~@6 f1 f#1", AD: "g1@13 ~ g1@2", AE: "c2",
  AF: "g1@8 d2@3 ~ d2@4", AG: "g1 ~@5 f1 f#1", AH: "g1 ~@7",
})).s("gm_electric_bass_finger").gain(0.8)

// chords · violin · "FIDDLE"
const violin = note("<~@8 A@2 B@2 C@2 ~@18 D E ~ F G@3 H ~@67 I J K L@2 M N O@2 ~@26>".pickRestart({
  A: "[~@2 d5 f5@3 d5 g5@9]/2", B: "[~@10 [d5,f5] ~ [c5,e5] ~ [a#4,d5]@11 ~ a#4@2 a4@2 g4@2]/2",
  C: "[~@2 [g4,d5] ~ [g4,d5]@3 ~ d5 ~ [g4,d5]@2 ~@2 [g4,d5]@7 ~@11]/2", D: "~@8 d5@5 ~ d5@2", E: "g5@3 ~",
  F: "d5@2 c#5 ~ c5@2 a#4 ~ g4 f4 d4 ~ c4@2 a#3@2",
  G: "[g3@4 ~@8 [g4,c5]@11 ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [d4,g4]@9 ~@7 [g5,a#5]@2]/3", // C5 G5 Gm
  H: "~@2 a5 ~ g5@2 f5 ~ d5 c#5 c5@2 a#4@2 g4@2", I: "~@7 [d5,g5]",
  J: "~@2 g5 ~ [d5,g5]@3 ~ [d5,g5] ~ [d5,g5]@3 ~ [e5,g5]@2", K: "~@2 [e5,g5] ~ [e5,g5]@3 ~ f5 ~ [c5,e5]@4 ~@2",
  L: "[~@2 d5@2 g5@2 ~@2 a#5@2 a5@2 g5 ~ a5@5 ~@7 f5 e5 d5@2 c5 ~]/2", M: "a#4@2 d5 ~ a#4@3 ~@3 g4@3 ~ g4 ~",
  N: "[d#5,e5,g5] ~ [e5,g5]!2 ~@2 [e5,g5]@2 ~@2 [e5,g5]!2 f5 [c5,e5]@3", // D# Em C
  O: "[~@2 d5@4 g5 d5 a#5 ~ g5 d5 g5 f5 ~ [g4,a#4]@3 d4 ~ [g4,a#4]@3 ~@3 [g4,a#4]@4 ~@2, ~@7 d5 ~@8]/2", // Gm
})).s("gm_violin").gain(0.54)

// chords · violin · "FIDDLE" · soft notes
const violin_soft = note("<~@12 A ~@25 B C ~@68 D E ~@2 A F G H ~@26>".pickRestart({
  A: "~@8 g4 ~@7", B: "~ [d4,a4]", C: "[d4,g4]@3 ~@13", D: "~@2 d5 ~@13", E: "~@8 d5 ~@7",
  F: "~@5 e5 ~@3 e5 ~@2 d5 ~@3", G: "~@9 a5 ~@6", H: "~@8 a#4 ~@5 d4 ~",
})).s("gm_violin").gain(0.27)

// chords · electric guitar clean · "GUITAR-CLEAN"
const electric_guitar_clean = note(`<
  A@5 B@3 ~ C@4 D@3 E@5 F G H I J K L C@4 D@3 E@5 F G H I J K L M ~@8 C@4 D@3 N@5 F G H I J K L O ~@8 F G H I J K L M
  ~@32 F G H I J K L M ~@10
>`.pickRestart({
  A: "[~@10 e2@2 g2@2 [d3,g3]@4 g2 ~ [e3,g3]@2 g2 ~ [f3,g3] ~ [d3,g3]@2 g2 ~ [d3,g3]@4 g2 ~ [e3,g3]@2 g2 ~ [f3,g3] ~ [d3,g3]@2 ~@2 [d3,g3]@4 g2 ~ [e3,g3]@2 g2 ~ [f3,g3] ~ [d3,g3]@2 ~@2 [d3,g3]@4 g2 ~ [e3,g3]@2 g2 ~ [f3,g3] ~ [d3,g3]@2 ~@4, ~@30 a3 ~@49]/5", // G5 Em Fsus2 G5 Em Fsus2 G5 Em …
  B: "[~@4 [e3,g3]@2 g2 ~ [f3,g3] ~ [d3,g3]@2 ~@2 [d3,g3]@4 g2 ~ [e3,g3]@2 g2 ~ [f3,g3] ~ [d3,g3]@2 ~@2 [d3,g3]@4 ~@2 [e3,g3]@2 g2 ~ [f3,g3] ~ [d3,g3]@2 ~@4]/3", // Em Fsus2 G5 Em Fsus2 G5 Em Fsus2 …
  C: "[[d3,g3]@2 g2 ~ [e3,g3]@2 g2 ~ [f3,g3,a3] ~ [d3,g3]@2 g2 ~ [d3,g3]@4 g2 ~ [e3,g3]@2 g2 ~ [f3,g3] ~ [d3,g3]@2 ~@2 [d3,g3]@4 g2 ~ [e3,g3]@2 g2 ~ [f3,g3] ~ [d3,g3]@3 ~ [d3,g3]@4 g2 ~ [e3,g3]@2 g2 ~ [f3,g3] ~ [d3,g3]@4 ~@2]/4", // G5 Em F G5 Em Fsus2 G5 Em …
  D: "[[d3,g3]@2 g2 ~ [e3,g3]@2 g2 ~ [f3,g3] ~ [d3,g3]@2 ~@2 [g3,c4]@4 c3 ~ [a3,c4]@2 c3 ~ [a#3,c4] ~ [g3,c4]@2 ~@2 [d3,g3]@4 g2 ~ [e3,g3]@2 g2 ~ [f3,g3] ~ [d3,g3]@4 ~@2]/3", // G5 Em Fsus2 G5 C5 Am A#sus2 C5 …
  E: "[~@14 [d3,g3]@4 g2 ~ [e3,g3]@2 g2 ~ [f3,g3] ~ [d3,g3]@2 ~@2 [g3,c4]@4 c3 ~ [a3,c4]@2 c3 ~ [a#3,c4] ~ [g3,c4]@2 c3 ~ [d3,g3]@4 g2 ~ [e3,g3]@2 g2 ~@3 [a2,d3]@3 ~ [d3,g3]@4 g2 ~ [e3,f3,g3]@2 g2 ~ [f3,g3] ~ [d3,g3]@2 g2 ~ [d3,g3]@2, ~ a3@4 ~ a3@2 ~@32, ~@4 c4@5 ~ c4@6 ~@64, ~@3 f#4@5 ~@32]/5", // G5 Em Fsus2 G5 C5 Am A#sus2 C5 …
  F: "[g2,d3]@2 [g2,d3]@2 [g2,e3]@2 d3 ~ [g2,d3] ~ [g2,d3]@2 [g2,e3]@2 d3 ~", // G5 C G5 C
  G: "[c3,g3] ~ [c3,g3] ~ [c3,g3,a3]@2 g3 ~ [c3,g3] ~ [c3,g3] ~ [c3,a3]@2 g3 ~", // C5 Am7 C5 F
  H: "d3 ~ d3 ~ [g2,e3]@2 d3 ~ d3 ~ d3 ~ [g2,e3]@2 [g2,d3] ~", // C G5
  I: "a3 ~ d3 ~ [d3,b3]@2 a3 ~ [f2,c3,f3]@2 ~@2 [f2,c3,f3]@2 ~@2", // G F5
  J: "[g2,d3] ~ [g2,d3]@2 [g2,e3]@2 d3 ~ d3 ~ d3@2 [g2,e3]@2 d3 ~", // G5 C
  K: "[c3,g3] ~ [c3,g3]@2 [c3,g3,a3] ~ g3 ~ c3 ~ [c3,g3]@2 [c3,a3]@2 [c3,g3] ~", // C5 Am7 C5 F C5
  L: "[g2,d3] ~ [g2,d3]@2 [g2,e3]@2 [g2,d3] ~ a3 ~ [d3,a3]@2 [d3,b3]@2 [d3,a3] ~", // G5 C G5 D5 G D5
  M: "[g2,d3] ~ [g2,d3]@2 [g2,e3]@2 d3 ~ d3 ~ [g2,d3]@2 [g2,e3]@2 [g2,d3] ~", // G5 C G5 C G5
  N: "[~@14 [d3,g3]@4 g2 ~ [e3,g3]@2 g2 ~ [f3,g3] ~ [d3,g3]@2 ~@2 [g3,c4]@4 c3 ~ [a3,c4]@2 c3 ~ [a#3,c4] ~ [g3,c4]@2 c3 ~ [d3,g3]@4 g2 ~ [e3,g3]@2 g2 ~@3 [a2,d3]@3 ~ d3@2 [g2,d3]@2 ~@14, ~ a3@4 ~ a3@2 ~@23 g3@2 ~@7, ~@4 c4@5 ~ c4@6 ~@64, ~@3 f#4@5 ~@32]/5", // G5 Em Fsus2 G5 C5 Am A#sus2 C5 …
  O: "[g2,d3]@2 [d3,g3] ~ [d3,g3]@2 g2 ~ [d3,g3] ~ [d3,g3]@2 ~@2 [d3,g3]@2", // G5
})).s("gm_electric_guitar_clean").gain(0.45).pan(0.7)

// chords · electric guitar clean · "GUITAR-CLEAN" · soft notes
const electric_guitar_clean_2 = note(`<
  ~@7 A ~@13 B C D E F G H ~@12 B C D E F G H I ~@20 B C D E F G H ~@9 B C D E F G H I ~@32 B C D E F G H I ~@10
>`.pickRestart({
  A: "~@2 g2 ~@13", B: "~@6 g2 ~@9", C: "~@6 c3 ~@7 c3 ~", D: "g2 ~ g2 ~@3 g2 ~ g2 ~ g2 ~@5", E: "d3 ~ a3 ~@13",
  F: "~@6 g2 ~ g2 ~ g2@2 ~@2 g2 ~", G: "~@6 c3 ~ g3 ~@7", H: "~@8 d3 ~@7", I: "~@6 g2 ~ g2 ~@7",
})).s("gm_electric_guitar_clean").gain(0.28).pan(0.7)

// other · electric guitar clean · "GUITAR-CLEAN 2"
const electric_guitar_clean_3 = note("<~ A@3 B C@4 D@4 ~@15 D@4 ~@24 D@4 ~@82>".pickRestart({
  A: "~@6 b2 ~", B: "~@6 c3 a#2",
  C: "[g2@4 ~@8 e3@2 d3@5 ~@9 b2@2 d3@5 ~@11 a#3@4 g3 ~ f3 ~ g3@3 ~ d3 c3 a#2 g2 f2@2]/4",
  D: "[~@12 e3@2 d3@5 ~@9 b2@2 d3@6 ~@8 e3@2 d3@6 ~@8 b2@2 d3@2]/4",
})).s("gm_electric_guitar_clean").gain(0.68).pan(0.4)

// other · distortion guitar · "GUITAR-DIST"
const distortion_guitar = note("<~@6 A@3 ~@122 B@2 C D@5 E F@2>".pickRestart({
  A: "[g3,d4,f4]/3", B: "[~@14 g3@14 a#3@2 g3 ~]/2", C: "c4@3 a#3 c4@3 a#3 c4@2 a#3 ~ g3@2 f3@2",
  D: "[g3@2 f3 ~ a#3@4 g3@2 f3 ~ c4@13 ~ f4@2 ~@2 f4@9 ~ a#4@2 g4 ~@3 a#4@4 g4@2 f4@2 g4@4 f4@2 ~ c#4 ~@2 c#4 d4 f4@2 ~ d4 ~ c#4 c4 a#3 ~@2 c#4 c4@2 a#3, ~@60 d4@2 ~ c4@2 ~@3 c4@2 ~@5 g3@2 ~@3]/5",
  E: "g2 ~ b2@3 ~ c3@3 ~ c#3@3 ~ d3 ~, ~@2 g3 ~@13",
  F: "[g2 ~ b2@3 ~ c3@3 ~ c#3@3 d3 ~@2 c#3 ~@15, ~@15 [g2,d3]@2 ~@15]/2", // G5
})).s("gm_distortion_guitar").gain(0.79)

// chords · electric guitar muted · "GUITAR-MUTES"
const electric_guitar_muted = note(`<
  ~@48 A B C D C E F A ~@20 A B C D C E F A ~@8 A B C D C E F A@2 B C D C E F A@2 B C D C E F A@2 B C D C E F A ~@8 A B
  C D C E F G@2 H
>`.pickRestart({
  A: "[g2,d3] ~ [g2,d3]@2 [g2,e3]@2 [g2,d3] ~ [g2,d3] ~ [g2,d3]@2 [g2,e3]@2 [g2,d3] ~", // G5 C G5 C G5
  B: "[c3,g3] ~ [c3,g3]@2 [c3,g3,a3] ~ c3 ~ [c3,g3] ~ [c3,g3]@2 a3@2 [c3,g3] ~, ~@12 c3 ~@3", // C5 Am7 C5
  C: "d3 ~ [g2,d3]@2 [g2,e3]@2 [g2,d3] ~ [g2,d3] ~ [g2,d3]@2 [g2,e3]@2 [g2,d3] ~", // G5 C G5 C G5
  D: "[d3,a3] ~ [d3,a3]@2 [d3,b3]@2 [d3,a3] ~ [d3,a3] ~ [d3,a3]@2 [d3,b3]@2 [d3,a3] ~", // D5 G D5 G D5
  E: "[c3,g3] ~ [c3,g3]@2 [c3,a3]@2 [c3,g3] ~ [c3,g3] ~ [c3,g3]@2 a3@2 [c3,g3] ~, ~@12 c3 ~@3", // C5 F C5
  F: "[g2,d3] ~ [g2,d3]@2 [g2,e3]@2 [g2,d3] ~ [d3,a3] ~ [d3,a3]@2 [d3,b3]@2 [d3,a3] ~", // G5 C G5 D5 G D5
  G: "g2 ~ b2@3 ~ c3@3 ~ c#3@3 ~ d3 ~", H: "g2 ~@7",
})).s("gm_electric_guitar_muted").gain(0.54)

// other · electric guitar clean · "GUITAR-SOLO"
const electric_guitar_clean_4 = note("<~@48 A B C D E@2 F@3 ~@35 G H I J K L M N O P Q R S@2 T U V ~@33>".pickRestart({
  A: "a2@4 g2@2 g2@2 a2@4 g2 ~ g2 ~", B: "d3@4 c3 ~ c3@5 ~ d3@2 c3 ~", C: "a2@4 g2 ~ g2 ~ a2@4 g2 ~ g2 ~",
  D: "b2 d3 e3 d3@3 b2 d3", E: "[a#4 ~@3 a4@2 ~@2 g4@2 [f4,g4] ~ e4@2 g4@4 f4 ~ d4 c#4 c4@4 a#3 ~ g3@2 f3 ~]/2",
  F: "[g4@2 g3 f4@2 g3 d4@2 g3 c#4@2 g3 c#4 c4 a#3 g3@8 ~ f3@2 d3 ~ f3@2 g3@7 ~@11]/3",
  G: "~ a4 ~ d4 [b4,d5]@3 ~, b4@3 ~@5, ~ g4 ~@2", H: "~ d5 c5 g4 [c5,e5]@3 ~, e5@7 ~@9",
  I: "e5@2 g5 ~ g5@2 e5 ~ a5@3 ~ a5@4", J: "d5@10 a4 b4 d5@2 b4 ~", K: "a#4@2 g4 ~ a#4@4 g4@4 f4@2 d4 ~",
  L: "~@2 [d4,f4]@2 [c#4,e4] ~ [c4,d#4] ~ [a#3,d4]@4 ~@4", // Dm C#m Cm A#
  M: "[d4,g4]@2 g3 ~ [e4,g4]@2 g3 ~ [f4,g4,a4] ~ [d4,g4]@3 ~ [d5,f5]@2", // G5 Em F G5 Dm
  N: "~@2 [d5,f5] ~ [d5,f5]@4 e5 ~ d2@2 e2@2 [g2,g4,a#4] ~, ~@5 [a#4,d5]@2 ~", O: "a2@3 ~ a2@4 g2@4 e2@2 d2@2",
  P: "e2@2 g2@2 e2 ~ g2@5 ~ e2@2 g2 ~", Q: "a2@3 ~ a2@4 g2@4 e2@2 g2@2", R: "d2 ~ d2@2 f#2@2 a2@2 b2@2 c3@2 b2@2 a2 ~",
  S: "[~@2 d3@4 e3 d3 f3 e3 d3 ~ c3@2 a#2@4 g2 ~ a#2@4 g2 f2 a#2@2 g2@2 ~ g2, ~@15 f2]/2",
  T: "g3@2 g2 f3@2 g2 d3@2 g2 c#3@2 g2 c3 a#2 g2 ~", U: "g2@3 ~ e2 ~ g2@4 e2 ~ g2@2 e2@2", V: "g2 ~@3",
})).s("gm_electric_guitar_clean").gain(0.8).pan(0.3)

// chords · piano
const piano = note(`<
  ~@9 A@2 B@2 C D E F E D G H I J I K E L G A@2 B@2 C D E F E D G H I J I K E L G M N O P Q R S T R A@2 B@2 C D E F E D
  G U I J I K E L G V R S R W X@2 G C Y Z C AA C AB AC AD C S C AE C D G C@2 S C AE C D G C@2 S C AE C D G C@2 S C AE C
  D G C AF AB Y K C L G H C D C F C D G AG AH@2
>`.pickRestart({
  A: "[g1,d3,g3]/2", B: "[[g1,d3,g3,d4]@15 ~]/2", C: "[g1,d3,g3,d4]", D: "[c2,e3,g3,a#3]", E: "[g1,g3,d4], d3@7 ~",
  F: "[d2,d3,f#3,a3]", G: "[g1,d3,g3,d4] [d2,d3,f#3,a3]", H: "[g1,d3,g3,d4]@15 ~", I: "[g1,d3,g3]", J: "[c2,e3,g3]",
  K: "[d2,d3,f#3,a3]@7 ~ [f1,c3,f3,a3]@2 ~@2 [f1,c3,f3,a3]@2 ~@2", L: "[e3,g3]@7 ~, c2", M: "[g1,g3,d4]@15 ~",
  N: "[g3,d4]@7 ~, g1", O: "[c2,a#3], [e3,g3]@7 ~", P: "[g1,g3,d4]@15 ~, c4 ~@15", Q: "[a3,d4]@7 ~, d2, c4 ~@15",
  R: "[g1,g3,d4]", S: "[c2,e3,g3,a#3]@15 ~", T: "[g1,g3] [d2,a3,d4], d4@3 ~@5", U: "[g2,d3,g3]@3 ~@13",
  V: "[g1,d3,g3]@15 ~", W: "[d2,f#3,a3], d3@7 ~", X: "[[g1,d4]@16 [c2,e3,a#3]@15 ~, g3@31 ~]/2",
  Y: "[g1,d4], [d3,g3]@7 ~", Z: "[c2,e3,a#3], g3@7 ~",
  AA: "[d2,d3]@8 [f1,c3,f3,a3]@2 ~@2 [f1,c3,f3,a3]@3 ~, [f#3,a3]@3 ~@5", AB: "[e3,g3,a#3]@7 ~, c2",
  AC: "[g1,d3,g3,d4] [d2,f#3,a3], ~@4 d3@3 ~", AD: "[g1,d3,g3,d4]@7 ~", AE: "[d2,a3], [d3,f#3]@7 ~",
  AF: "[g1,d3,d4], g3@7 ~", AG: "g1 [b1,b3]@2 [c2,c4]@2 [c#2,c#4]@2 d4, g3 ~@13 d2 ~",
  AH: "[[g1,g3]@2 [b1,b3]@4 [c2,c4]@4 [c#2,c#4]@4 d4 ~ [g1,g3,d4,g4]@3 ~@13, a1 ~@13 d2@4 ~@14]/2", // G B C C# G5
})).s("gm_piano").gain(0.54).pan(0.6)

// chords · piano · "PIANO 2"
const piano_2 = note(`<
  ~@21 A B C D E F G H ~@11 A B C D E F G H ~@15 I ~ J ~@2 A B C D E F G H ~@8 A B C D E F G H ~@32 A B C D E F G H ~@7
  K L M
>`.pickRestart({
  A: "[g5,d6,f6,g6] ~ [g5,d6,g6] ~ [g5,d6,g6] ~ [g5,d6,g6] ~ [g5,d6,g6] ~ [d6,g6] ~ [g5,d6,g6] ~ [g5,d6,g6] ~", // G7 G5
  B: "[g5,c6,g6] ~ [c6,g6] ~ [g5,c6,g6] ~ [g5,c6,g6] ~ [g5,c6,g6] ~ [g5,c6,g6] ~ [g5,c6,f6,g6] ~ [g5,c6,g6] ~", // C5 Csus4 C5
  C: "[g5,c#6,d6,g6] ~ [d6,g6] ~ [g5,d6,g6] ~ [d6,g6] ~ [g5,d6,g6] ~ [g5,d6,g6] ~ [g5,g6] ~ g6 ~", // G G5 G
  D: "[a5,d6,a6] ~ [d6,a6] ~ [a5,d6,a6] ~ [a5,d6] ~ [c6,f6]@2 ~@2 [c6,f6]@2 ~@2", // D5 F5
  E: "[g5,d6,g6] ~ [g5,d6,g6] ~ [g5,d6,g6] ~ [g5,d6,g6] ~ [g5,g6] ~ [g5,g6] ~ [g5,d6,g6] ~ [g5,g6] ~", // G5 G G5 G
  F: "[g5,c6,g6] ~ [c6,g6] ~ [g5,c6,g6] ~ [c6,g6] ~ [g5,c6,g6] ~ [g5,c6,g6] ~ [g5,c6,g6] ~ [g5,c6,g6] ~", // C5
  G: "[g5,c#6,d6,g6] ~ [g5,d6,g6] ~ [g5,d6,g6] ~ [g5,g6] ~ [e6,a6] ~ [a5,d6,a6] ~ [a5,d6,a6] ~ [a5,d6,g6,a6] ~", // G G5 G A5 D5 Dsus4
  H: "[g5,d6,g6] ~@7", // G5
  I: "[c#6,d6,e6,f6] ~ [c#6,d6,e6,f6] ~ [c#6,d6,f6] ~ [c#6,d6,e6,f6] ~ [d6,g6,a6] ~ [d6,g6,a6] ~ [d6,g6,a6] ~ [d6,g6] ~, ~@7 a6", // C# Dsus4 G5
  J: "~@8 [a5,a#5,d6] ~ [a5,a#5,d6] ~ [a5,a#5] ~ g5 ~, ~@6 d6 ~", // A#maj7
  K: "[g3,g5] ~ [b3,b5]@3 ~ [c4,c6]@3 ~ [c#4,c#6]@3 ~ [d4,d6] ~", // G B C C# D
  L: "g5 ~ [b3,b5]@3 ~ [c4,c6]@3 ~ [c#4,c#6]@3 ~ [d4,d6] ~", M: "[g3,g5,f6] ~@15, [d6,g6] ~@7",
})).s("gm_piano").gain(0.27).pan(0.3)

// chords · piano · "PIANO 2" · soft notes
const piano_soft = note(`<
  ~@21 A B C D E F G ~@12 A B C D E F G ~@21 A B C D E F G ~@9 A B C D E F G ~@33 A B C D E F G ~@9 H ~
>`.pickRestart({
  A: "~@10 g5 ~@5", B: "~@2 g5 ~@13", C: "~@2 g5 ~@3 g5 ~@5 d6 ~ [g5,d6] ~", D: "~@2 a5 ~@3 a6 ~@9",
  E: "~@8 d6 ~ d6 ~@3 d6 ~", F: "~@2 g5 ~@3 g5 ~@9", G: "~@6 d6 ~ [a5,d6] ~@7", H: "g3 ~@15",
})).s("gm_piano").gain(0.14).pan(0.3)

// chords · piano · "PIANO SOLO"
const piano_3 = note("<~@115 A B C D E F G H I@2 ~@17>".pickRestart({
  A: "~@14 [g4,c#5,f5,g5] ~, ~@7 d5", // Gm7b5
  B: "[g4,d5,g5]!2 [d5,g5] ~ [g4,d5,g5]@2 ~ [d5,f5]@2 g4 [c5,d5,e5] g4 [a#4,c#5,d5] b4 g4 ~, ~@7 [c5,e5] ~@8", // G5 Dm C A# C
  C: "[f#4,a#4] ~@2 [c4,a#4]@2 ~ [f#4,a#4] ~ [g4,a#4] g4 [f4,a4] ~ [e4,g4] c4 ~@2, c4@2 ~ f#4 ~@2 c4@6 ~@4", // F# C7 F# Gm F Em
  D: "c#5 [d5,f5] c#5 [d5,f5] c#5 [d5,f5] c#5 [d5,f5] c#5 [d5,f5] d5 [c5,c#5] a#4 g4 [c5,c#5] [a#4,c5]", // Dm C#maj7 A#sus2
  E: "a4@3 ~ [d5,a5]@2 d4 [d5,a5] ~ [d5,a5]@2 ~ [d5,a5]@2 ~@2, ~@4 [c#5,g5] ~@7 g5 ~@3", // D5 C#dim
  F: "~ [g4,a#4,c#5,d5] ~ [g4,c5,e5] [g4,a#4,d5] ~ [g4,c5,e5] a#4 b4 [g4,c5,e5] [a#4,d5] b4 [a#4,b4,d5] g4 ~@2, ~@7 [g4,d5]@2 ~@7", // Gm C Gm C A# G5
  G: "c#5 c5 a#4 g4 c#5 c5 a#4 g4 [c#5,d#5] c5 a#4 g4 c#5 c5 a#4 g4", // C#sus2
  H: "g4 a4 a#4 b4 c5 c#5 d5 c#5 c5 a#4 g4 f4 d4 c#4 c4 a#3",
  I: "[g3@7 [c#4,f4,g4] d4 f4@2 g3 [d4,f4] g3 [b3,c4,d4,e4] ~ [d4,g4]@11 ~@5, ~@9 c#4 ~@5 g3@2 ~@15]/2", // Gm7b5 Dm Cmaj7 G5
})).s("gm_piano").gain(0.72).pan(0.7)

// chords · piano · "PIANO SOLO" · soft notes · Gm
const piano_soft_2 = note(`<
  ~@116
  [~@2 g4 ~@13]
  [~@2 g4 ~@2 g4 ~ [g4,a#4] ~@8]
  ~@2
  [~@2 b4 ~@3 b4 ~@4 c5 ~@4, ~@5 g4 ~@2]
  ~@2
  [~@10 d4 ~@5]
  ~@18
>`).s("gm_piano").gain(0.4).pan(0.7)

// other · electric guitar jazz · "STEEL PBD=2"
const electric_guitar_jazz = note("<~@75 A B C@4 D E@2 ~@58>".pickRestart({
  A: "~@10 g3 ~ b3@2 d4 ~", B: "[g4,b4]@5 ~ [g4,b4]@6 e4@2 g4 ~",
  C: "[[c5,e5]@5 ~ [c5,e5]@7 ~ b4@4 d5 ~ e5@2 d5 ~ e5@2 d5@2 e5@2 d5@6 ~@6 a5@3 ~ g5@5 ~ e5@2 g5 ~ d5@5 ~ c5@2]/4", // C
  D: "~@2 a#4 ~ c5@2 d5 ~ a#4@2 g4@3 ~@3",
  E: "[g4@2 a#4 b4 c5 ~ c#5 ~ d5@2 c5 ~ a#4@2 g4@5 ~ [g4,d5]@3 ~ [g4,d5] ~ [g4,d5]@3 ~ [g4,d5]@2]/2", // G5
})).s("gm_electric_guitar_jazz").gain(0.61).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
// … 65 more lines

More by Alan Jackson