Strudelify
White Room cover art

White Room

Eric Clapton

KeyG majorTempo104 bpm
0:00/0:00
// White Room — Eric Clapton
// 104 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 144 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): tk8, tk9.
setcpm(104/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 · "tk2"
const bass = note(`<
  ~@2 A B C D E A B F G E H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS
  AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH@5 BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV BW BX BY BZ CA CB CC CD CE CF
  CG CH CI CJ CK CL CM CN@5 CO CP F G CQ CR@2 CS CT CU CV CW CX CY CZ DA DB DC DD DE DF DG DH DI DJ DK DL DM DN DO DP
  ~@8
>`.pickRestart({
  A: "g1@2 ~@2 g1!2 ~ g1 g1@2 ~@2 g1 ~ g1 ~", B: "g1@2 ~@2 f1@2 ~@2 f1!2 ~ f1 f1@2 ~@2",
  C: "f1 ~ f1 ~ f1 ~@3 d2@2 ~@2 d2!2 ~ d2", D: "d2@2 ~@2 d2 ~ d2 ~ d2@2 ~@2 c2@2 ~@2",
  E: "c2!2 ~ c2 c2@2 ~@2 c2 ~ c2 ~ c2@2 ~@2", F: "f1 ~ f1 ~ f1@3 ~ d2@2 ~@2 d2!2 ~ d2",
  G: "d2@2 ~@2 d2 ~ d2 ~ d2 ~@3 c2@2 ~@2", H: "a1@5 ~@3", I: "d2@3 ~ d2 ~ a1 b1 c2@7 ~",
  J: "b1 ~ a1 ~ g1@2 a1@2 a#1@4 c2@4", K: "d2 ~ d2 ~ d2@2 a1 b1 c2 ~ c2@3 b1 a1@2", L: "g1 ~ g1@5 ~ a#1@2 f2 ~ c2@4",
  M: "d2@3 ~ d2@3 ~ c2 ~ c2@2 ~@2 b1 a1", N: "g1 ~ g1@5 ~ a#1@4 c2@4", O: "d2 a1 d2 ~ d2@2 a1@2 ~@2 f1@2 g1@2 a1@2",
  P: "g1 ~ g1@6 a#1@4 c2@4", Q: "d2@2 ~@2 d2 ~@2 d2 c2 ~ c2@6", R: "g1@2 a#1 c2", S: "d2@3 ~ d2@4 c2 ~ c2@4 d2@2",
  T: "g2@2 ~ g2@3 d2@2 a#1@4 a1@4", U: "d2@2 d1@3 ~ c1@2 ~@2 c1@2 ~@2 d1@2", V: "g1@4 ~@2 g1 a1 a#1@4 c2@2 g2@2",
  W: "d2@2 ~@2 d2@2 ~ d2 f2@2 c3@2 f3@4", X: "d3 ~ d3@2 b2@2 g2@2 a#1 ~ a#1 ~ a#1 ~ a#1@2", Y: "~@6 e3@4 f3@3 e3@3, c2",
  Z: "d3@3 b2@3 g2@7 d2@3", AA: "~@3 d3@5, a#1@15 ~", AB: "a3@9 g3 a3@6", AC: "~@4 g2@2 e3@3 ~ f3@3 e3@3, c2",
  AD: "g1@10 d2@3 c2@3", AE: "a#1 ~ a#1!3 ~ a#1!3 ~ a#1!3 ~ a#1 b1", AF: "c2 ~ c2 ~ c2 ~ c2!2 a1 ~ a1 ~ a1@2 ~@2",
  AG: "d2 ~ d2!2 c2 ~ c2!2 b1 ~ b1!2 a1 ~ a1!2", AH: "d2 ~ d2 ~ f#1 ~ f#1@2 d1@2 ~@6",
  AI: "d1@3 ~ f#1@2 ~ d2 c1@5 ~ d1@2", AJ: "g1@2 a#1 a1", AK: "d2@5 ~ e2 d2 c2 ~ c2@2 ~ c2@2 ~",
  AL: "b1 ~ b1@6 a#1@4 c2@4", AM: "d2 ~ d2@2 a2@2 f#2 d2 c2 ~ c2@2 ~ c2@3", AN: "b1 a1 g1@2 a#1@2 c2@2",
  AO: "d2 ~ e2 f#2 e2 f#2 e2 d2 c2 ~ c2@5 ~", AP: "b1@2 a1@2 g1@2 a1@2 a#1@2 d2@2 a1@3 ~", AQ: "d1 d2 f1@2",
  AR: "g1@2 d2@3 ~ c2@2 a#1@4 a1@4", AS: "~@2 g3@2 f#3@3 ~ c2@5 ~ c2@2, d2 ~", AT: "~ d3@2 e3 a#1@2 c2@2, b1 ~",
  AU: "d2 ~ d2@2 e2 f#2 a2 b2 c3 ~ c3@2 ~@2 b2 a2", AV: "g2 d2 c2@2 b1@2 g1@2 a#1@4 a1@4",
  AW: "d1 ~ d1 ~ d1@2 ~ d1 e1 ~ e1@6", AX: "f1 ~ f1@2 g1@2 a1@2 a#1 ~ a#1@3 ~@3", AY: "c2@5 ~ c2@4 d2@3 c2@3",
  AZ: "b1@3 g1@4 a1", BA: "a#1@3 c2@3 d2 a#2", BB: "a2 ~ a1!2 ~@2 b2 ~@3 a2@6",
  BC: "c2@4 ~ d3 e3@4 f3@3 e3@3, ~@2 g2 ~@5", BD: "d3@3 b2@2 g2@2 d2", BE: "a#1@2 a#1 ~ a#1!11 ~",
  BF: "c2 ~ c2 ~ c2 ~ c2 g#1 a1 ~ a1 ~ a1 ~ a1@2", BG: "d2@2 a2 ~ a2 ~ b2 d3!3 b2@2 a2@2 d2@2",
  BH: "[g2@20 f2@19 ~ d2@20 c2@12 e2@2 g2@2 c3@2 a#2@2]/5", BI: "g2@3 ~ g2!2 ~ g2 g2@3 ~ g2 ~ g2 ~",
  BJ: "g2@3 ~ f2@3 ~ f2!2 ~ f2 f2@3 ~", BK: "f2 ~ f2 ~ f2@3 ~ d2@3 ~ d2!2 ~ d2", BL: "d2@2 ~@2 d2 ~ d2 ~ d2@4 c2@3 ~",
  BM: "c2@15 ~", BN: "a1@7 ~", BO: "d1@3 ~ d2@2 ~ e1!2 ~ e1@2 ~ f#1@2 ~", BP: "g1 ~ g1 ~ a1@3 ~ a#1@2 c2@2 ~@2 d2 e2",
  BQ: "d2 ~ e2 ~ f#2 ~@3 g2@2 ~ a2@3 b2@2", BR: "c3@2 d3 ~ e3@2 f3@2 e3 d3 c3 a2 g2 f2 d2 c2, ~@4 d3 ~@11",
  BS: "d2@2 ~@2 d2 d2@3 c2 ~ c2@4 b1 a1", BT: "g1 ~ g1@3 ~ g1@2 a#1@4 c2@3 ~", BU: "a2 ~ d3 ~ f3@3 ~ a2 ~ d3 ~ f3@3 ~",
  BV: "a3 ~ f3@2 d3@2 g2@2 f2@2 d2@2 a1@4", BW: "d1 ~ d1@2 d2@4 e1 ~ e1@4 f#1@2", BX: "g1 ~ g1@4 a1@2 a#1@4 c2@4",
  BY: "d2 ~ d2@2 d4@2 ~@2 c4@2 a3 g3 f3@2 g#3 g3", BZ: "f3 d3 c3 ~ f3@2 d3 c3 g#2 g2 f2@2 d2@4",
  CA: "d1@5 ~ d2@2 e1@2 ~ f1@2 ~ f#1@2", CB: "g1@3 ~ a1@4 a#1@2 d2@2 c2@4",
  CC: "~ g3 f#3 d2 ~ f3 e3 c2, d2@5 ~@3 c2@5 ~@3", CD: "~@2 e3@2 d3@2 b1@2 a#1@3 ~ a#1@4, b1 ~@3",
  CE: "c2@4 g2@2 c3@4 b2@3 a2@3", CF: "g2@6 e2@4 d2@3 c2@3", CG: "a#1@4 ~@2 a2@2 ~@2 g2@2 a#2@3 ~",
  CH: "c#2@5 ~ c#2 d2 c#2@8", CI: "c2 ~ c2!2 c1@2 e1@4 f1@3 f#1@2 ~", CJ: "~@6 e3@4 d3@3 a1@3, g1@13 ~@3",
  CK: "a#1 ~ a#1!3 ~ a#1!2 a#1@2 c2@2 d2@2 a#1@2", CL: "c2 ~ c2 ~ c2@2 b1 a#1 a1 ~ a1@2 c2@2 e2@2",
  CM: "d2@2 a2 ~ a2@2 c3 d3 c3@2 a2@2 d2@2 a2 d2",
  CN: "[g2@20 f2@20 d2@11 ~ d2 ~ d2 ~ d2@3 ~ c2@8 c2 e1@3 f1@4 f#1@4]/5", CO: "g1@3 ~ g1!2 ~ g1 g1@2 ~@2 g1 ~ g1 ~",
  CP: "g1@2 ~@2 f1@2 ~@2 f1!2 ~ f1 f1@3 ~", CQ: "c2!2 ~ c2 c2@2 ~@2 c2 ~ c2 ~ c2 ~@3", CR: "a1/2",
  CS: "d1@3 ~ d2 ~@2 d1 c1 ~ c1@6", CT: "g1@3 ~ g1 ~@2 g1 a#1@4 c2@4", CU: "d1@4 d2 ~@2 d1 c1 ~ c1@6",
  CV: "g1@3 ~ g1@3 ~ a#1@2 f2@2 c2@2 g2 ~", CW: "d1@3 ~ d2 ~@2 b0 c1 ~ c1@6",
  CX: "g1 ~ g1@2 ~@2 g1 a1 a#1@2 f1 a#1 a1@2 ~ a1", CY: "d1@3 ~ d1@2 ~ d1 c1 ~ c1@2 ~@2 g1@2",
  CZ: "~@4 g1@2 g2@3 ~ a#1@3 a1@3", DA: "d2@2 a1@2 d2 ~@2 d2 f2 c2 f1 ~ f1@3 ~",
  DB: "g1 ~ g1@5 ~ a#1@2 c3 c#3 [c2,d3]@3 ~", DC: "c2 d2 d2@3 ~ c2 d2 f2 ~ f2@3 ~ d2 f2",
  DD: "g2 ~ g2@4 f2 d2 a#1@4 a1@2 ~ a1", DE: "d2 ~ d2@4 ~@2 e2@2 d2@2 c2@3 ~", DF: "b1 ~ a1@2 g1@4 a#1@4 a1@4",
  DG: "d2 ~ d2@5 ~ e2@2 d2 c2@2 ~@2 c2", DH: "b1@2 a1@2 g1 ~ g1@2 a#1@2 f1@2 a1 ~ a1 ~",
  DI: "d2@4 c3@2 ~@2 c2 ~ c2@4 b1 a1", DJ: "g1 ~ g1@2 ~@2 g1 f1 a#1@4 a1@3 ~", DK: "d2 a1 d2@2 c2 b1 a1@2",
  DL: "b1 a1 g1@2 a#1@2 a1@2", DM: "d1 ~ d1 ~ d1 ~ d1@2 e1 ~ e1 ~ e1 ~ e1 ~",
  DN: "g1 ~ g1 ~ g1 ~ g1 ~ f1 ~ f1@2 e1 ~ e1 ~", DO: "d1 ~ d1 ~ d1 ~ d1 ~ e1 ~ e1 ~ e1 ~ e1@2",
  DP: "g1 ~ g1 ~ g1 ~ g1@2 a#1@4 ~@4",
})).s("gm_electric_bass_finger").gain(0.38)

// chords · piano · "tk3"
const piano = note("<~@112 A@2 B C D E F@2 G@2 H@2 I@2 J K L@2 M@2 N@2 O P ~@8>".pickRestart({
  A: "[~@4 a4@3 [c4,d4,g4]@4 ~ [c4,d4]@2 ~ g3 ~@4 [d4,g4,d5]@3 g3 a#2@2 [a3,a#3,d4,f4]@2 ~ [g3,c4,e4]@3, ~@4 d5@7 ~@4 d4@3 ~@14, ~@2 d4 ~@3 [g4,d5]@3 ~@7, ~@16 b2@7 ~@5 c3@4]/2", // Csus2 G5 A#maj7 C G5
  B: "~@2 a3 ~ [a3,d4,f4]@4 ~@4 [c4,f4,g4]@3 g3, d3@8 c3@7 ~", // Dm Csus4
  C: "~@2 g3@2 [d4,g4,d5]@2 g3 f3 a#2@2 [a3,d4,f4]@2 ~ [g3,c4,e4]@3, b2@3 ~@3 c3@2", // G5 Dm C
  D: "~@2 a3@2 [d4,a4]@2 a3 ~ c3 ~@5 g3@2, d3@7 [c4,d4,g4]@3 c3@5 ~, ~ d5@3, ~@3 [c4,d4,g4]", // D5 Csus2
  E: "~ g3 [d4,g4,d5] ~@2 c4 [c3,g3,c4,d4,g4]@2, b2@3 g3 [a#2,f3]@2 ~@2, ~@7 [c4,d4,f4]@3 ~@6", // G5 Csus2 A#5 Dm7
  F: "[~@2 d4 ~ [d4,a4]@3 ~ g3 ~ g3@2 ~@2 g3 ~@3 g3@2 ~@2 g3@2 ~@2 [a#2,f3,c4,f4]@3 [c3,g3,c4,d4,g4]@3, [d3,a3]@7 [c4,d4,g4]@4 ~ [c4,d4,g4,d5]@7 ~ [d4,g4,d5]@4 ~@8, ~@4 d5@7 ~@21]/2", // D5 A#sus2 Csus2 D5 Csus2 G5
  G: "[~@2 d4 ~ [d4,a4]@2 a3 [c4,d4,g4]@4 ~@5 g3 ~ g3@2 [d4,g4,d5]@2 g3 d4 ~@2 c#4 ~@3 f3 ~, a3@4 d5@6 ~@2 [c4,d4,g4,d5]@7 ~@6 a#2@3 c3@3 ~, ~@26 [a3,f4]@3 [g3,c4,e4]@3, ~@27 d4@2 ~@3]/2", // D5 Csus2 G5 Csus2 Dm C
  H: "[d3 ~@3 [a3,f4]@2 f3 g3@3 ~@4 g3!2 ~@2 g3@2 [a3,b3,d4,g4]@2 g3 f3 ~@2 a#2@2 c3 ~ c3 ~, ~@2 d3@5 ~@3 c3@4 ~@18, ~@2 c4@3 ~ [c4,d4,g4]@3 ~@3 [a3,a#3,d4,f4]@2 [g3,c4,e4]@2]/2", // Dm G Csus2 A#maj7 C
  I: "[~@2 d4 ~ [d4,a4]@3 ~ g3 ~ c3@2 [c4,d4]@2 g3 ~ g3 ~ g3@2 [d4,g4]@2 ~@2 [a#2,f3,f4]@3 ~ [c3,c4,g4]@4, d3@7 ~@9 b2@7 c4@4 ~@5, ~@4 d5@7 ~ [g4,d5]@6 ~@2 d5@8 ~@4, ~@4 a3 ~@2 [c4,d4,g4]@3 ~@5 d4@3 ~@4 g3@2 ~@4 g3 ~@3, ~@23 d4@2 ~@7]/2", // D5 Csus2 G5 A#5 C5 G5 Csus2
  J: "d4 ~ d4@2 d4@3 ~ [c4,d4,g4]@4 [c4,d4,g4,d5]@4, ~@4 [a4,d5]@7 ~@5", // Csus2 D5
  K: "~ d4 c4 [d4,g#4] [c4,a4] ~ c4 f4 d4 c4 a3@2 g#3 g3 f3@2, ~@3 d5@2 [g4,d5]@2 ~@9", // Ddim F G5
  L: "[~@4 [a3,d4]@3 ~ c3 ~@3 [g3,c4]@2 f3 g3 b2 ~@3 [a3,d4,g4]@2 g3 [a3,a#3,f4] ~@2 a#2@2 ~@2 c3 ~, d3@7 [g3,c4]@3 c3@4 ~ c4@2 ~ b2@4 ~@10, ~@4 f4@6 ~@2 f4@5 ~@6 d4@2 [a3,a#3,d4,f4]@3 [g3,c4,e4]@4]/2", // D5 C5 Dsus4 A#maj7 C5 A#maj7 C
  M: "[d3 ~ d3@2 [a3,a4]@3 ~ c3 ~@3 [c4,d4,a4]@2 a3 ~ g3 ~ g3@2 [d4,g4,d5]@2 g3 ~ [a#2,c4,f4]@4 [c3,g3,c4,d4,g4]@4, ~@2 d5@3 ~ d5@3 ~@7, ~@4 [c4,d4]@2 ~ [c4,d4,g4]@3 [c3,a3]@4 ~@9 f3@4 ~@5, ~@4 c5 ~@10 [d4,g4]@3 ~@14]/2", // A D7 G5 A#sus2 Csus2 F G5
  N: "[~@2 a3@2 [d4,a4]@2 a3 ~ g3 ~ g3 ~ [c4,d4,g4]@2 g3 c4@2 ~ g3@2 [c4,d4,g4]@2 g3 ~ [a#2,c4,f4]@2 f3 ~ g3@2 g3 ~, d3@7 [c4,d4,g4]@4 ~ g3 ~@2 g4 ~@7 f3@2 ~@3 [c3,c4,d4,e4,g4]@4, ~@2 d5@4 d5@5 ~@5]/2", // D5 Csus2 A#sus2 Csus2 C
  O: "d3 ~@3 a3@3 ~ g3 ~ g3@2 c4 ~ g3@2, ~ d3@3 ~@4, ~@2 [d4,f4]@3 ~ [d4,g4]@2", // Dm G5
  P: "~@2 g3@2 [a3,b3,d4,g4]@2 g3 ~ [a#2,f3,a3,a#3,d4,f4]@4 ~@4", // G A#maj7
})).s("gm_piano").gain(0.3)

// chords · overdriven guitar · "tk5"
const overdriven_guitar = note(`<
  ~@2 A@10 B C D E F G H I H J K L H M@2 N@2 O@2 P Q R S T U V W X D Y@2 Z@2 AA@2 AB@2 AC@2 AD@2 AE@2 AF AG AH AI AJ@2
  AK AL AM AN@5 AO@5 AP AQ AR AS@2 G H AT@2 AU@2 AV@2 AW@2 AX@2 AF AY AZ BA BB BC BD BE BF AO@5 BG@5 BH@2 BI@2 BJ BK@2
  BL BM BN BO BP BQ BR BS BT BU BV BW@2 BX BY BZ@2 CA CB ~@8
>`.pickRestart({
  A: "[[g2,d3,g3]@19 ~ [f2,c3,f3]@20 [d3,a3,d4]@20 [c3,g3,c4]@20]/5", B: "[a2,e3,a3]@9 ~@7",
  C: "~@3 d4, d3 c3, ~ a3@4 g3@3, ~@4 d4@7 ~@5", D: "~ d4 [a#2,f3,a#3] [c3,g3,c4], b2 ~, ~@2 g3@5 ~@9",
  E: "~@4 d4@4 c3 ~@3 [g3,d4]@4, d3@7 ~@3 c3@6, ~@2 a3@7 ~@7", // G5
  F: "c3 ~@3 d4@4 [a#2,f3,a#3]@4 [c3,g3,c4]@4, b2 ~, ~ g3@3 ~@4", G: "~@3 d4, d3 c3, ~@2 a3@7 ~ g3@6, ~@2 d4@3 ~@3",
  H: "~ d4 [a#2,f3,a#3] [c3,g3,c4], b2 ~, ~ g3@3 ~@4", I: "~ d4 ~ d4, d3 c3, ~@2 a3@7 ~ g3@6",
  J: "d3 ~ d3@2 g3@2 ~@6 [g3,d4]@4, ~@6 d4@5 ~@5, ~ c3", K: "b2 ~@3 [g3,d4]@4 a#2@4 [c3,g3,c4]@4, ~ b2@3 ~@4",
  L: "d3 ~ d3@2 [a3,d4]@4 c3 ~@3 [g3,d4]@4, ~@4 g3 ~@5 c3@5 ~", // D5 G5
  M: "[~@5 d4 [a#2,f3,a#3] [c3,g3,c4], d3 c3 b2 ~, ~@2 a3@7 ~ g3@7 ~ g3@6 g3 ~@7, ~@2 d4@3 ~ d4@3 ~@7]/2", // A#5 C5
  N: "[~@3 [f3,a#3], d3@8 c3@8 b2@9 ~@7, ~@2 a3@7 ~ g3@7 ~ g3@6 ~@8, ~@2 d4@3 ~ d4@3 ~ d4@6]/2", // A#5
  O: "[[c4,e4]@16 [b3,d4]@15 ~, g3@31 ~]/2", P: "[f3,a#3,d4]", Q: "[g3,c#4,e4]", R: "[c3,g3,c4,e4]",
  S: "[b2,g3,d4]@15 ~", T: "[f3,a#3,d4]!4",
  U: "[c3,g3,c4]@4 [c3,g3,c4]@3 ~ [c3,g3,c4]@2 [c3,g3,c4]@2 [c3,g3,c4]@2 [c3,g3,c4]@2", V: "[d3,a3,d4]!8",
  W: "[d3,a3,d4]!5 ~@3", X: "~@3 d4, d3@7 ~ c3@8, ~@2 a3@7 ~ g3@6, ~@2 d4@3 ~@3",
  Y: "[~@20 d4@4 [a#2,f3,a#3]@3 ~ [c3,g3,c4]@4, d3 c3 b2 ~, ~@2 a3@7 ~ g3@7 ~ g3@5 ~@9, ~@2 d4@3 ~ d4@3 ~@7]/2", // A#5 C5
  Z: "[d3 ~@19 d4@4 [a#2,f3,a#3]@4 [c3,g3,c4]@4, ~ d3@6 ~ c3@8 b2@8 ~@8, ~@2 a3@8 g3@6 ~@2 g3@5 ~@9, ~@2 d4@3 ~ d4@3 ~@7]/2", // A#5 C5
  AA: "[~@5 d4 [a#2,f3,a#3] [c3,g3,c4], d3 c3 b2 ~, ~@2 a3@7 ~ g3@7 ~ g3@5 ~@9, ~@2 d4@3 ~ d4@3 ~@7]/2", // A#5 C5
  AB: "[~@5 d4 [a#2,f3,a#3] [c3,g3,c4], d3 c3 b2 ~, ~@2 a3@8 g3@7 ~ g3@5 ~@9, ~@2 d4@3 ~ d4@3 ~@7]/2", // A#5 C5
  AC: "[~@6 [a#2,f3,a#3] [c3,g3,c4], d3 c3 b2 ~, ~@2 a3@7 ~ g3@6 ~@2 g3@6 ~@8, ~@2 d4@3 ~ d4@3 ~ d4@4 ~@2]/2", // A#5 C5
  AD: "[~@6 [a#2,f3,a#3] [c3,g3,c4,e4], d3@7 ~ c3@8 b2@8 ~@8, ~@2 a3@8 g3@7 ~ g3@6 ~@8, ~@4 d4@6 ~@2 d4@6 ~@2 d4@7 ~@5]/2", // A#5 C
  AE: "[~@3 [f3,a#3], d3@2 c3@2 b2 ~@3, ~@2 a3@8 g3@7 ~ g3@6 ~@8, ~@2 d4@3 ~ d4@3 ~ d4@6]/2", AF: "[g3,c4,e4]",
  AG: "~ g3 b3 d4@5", AH: "~@2 f3@2 a#3@4 d4@4 f4@3 ~", AI: "~@3 b3@5, ~@2 e3@13 ~, ~ a3@3",
  AJ: "[~@4 c4@2 ~@4 g3@7 ~@3 b3 c4 ~@4 g3@5 ~, ~ g3@2 e4@6 ~@2 d4@5, ~@8 c4@10 g3@6 b3@7 ~]/2",
  AK: "[f3,a#3,d4]@2 [f3,a#3,d4]@2 [f3,a#3,d4]!2 [f3,a#3,d4]@2", AL: "[g3,c4,e4]!8",
  AM: "[d3,a3,d4]!4 [d3,a3,d4]@2 [d3,a3,d4]@2", AN: "[[g2,d3,g3]@19 ~ [f2,c3,f3]@19 ~ [d3,a3,d4]@20 [c3,g3,c4]@20]/5",
  AO: "[[g2,d3,g3] [f2,c3,f3] [d3,a3,d4] [c3,g3,c4]]/5", AP: "[a2,a3]@9 ~@7",
  AQ: "[a3,d4]@2 ~ d4, d3@7 ~ c3@8, ~@5 g3@3", AR: "~ d4 [a#2,f3,a#3] [c3,g3,c4], b2@7 ~@9, ~@2 g3@5 ~@9",
  AS: "[~@4 d4@4 c3 ~@7 b2 ~@3 g3@2 d4@2 [a#2,f3,a#3]@3 ~ [c3,g3,c4]@4, d3@7 ~@2 c3@6 ~@3 b2@5 ~@9, ~@2 a3@7 ~ g3@8 ~@14, ~@6 d4@3 ~@7]/2", // A#5 C5
  AT: "[~@5 d4 [a#2,f3,a#3,f4] [c3,g3,c4,g4], d3 c3 b2 ~, ~@2 a3@7 ~ g3@7 ~ g3@6 ~@8, ~@4 d4@6 ~@2 d4@6 ~@6 e4 ~@7]/2", // A#5 C5
  AU: "[~@4 d4@4 ~@12 d4@4 [a#2,f3,a#3]@4 [c3,g3,c4]@3 ~, d3 c3 b2 ~, ~@2 a3@7 ~ g3@7 ~ g3@5 ~@9, ~@6 d4@3 ~@7]/2", // A#5 C5
  AV: "[~@5 d4 [a#2,f3,a#3] [c3,g3,c4], d3 c3 b2 ~, ~@2 a3@7 ~ g3@6 ~@2 g3@6 ~@8, ~@2 d4@3 ~ d4@3 ~@7]/2", // A#5 C5
  AW: "[~@5 d4 [a#2,f3,a#3] [c3,g3,c4], d3 c3 b2 ~, ~ a3@3 ~ g3@3 ~ g3@3 ~@4, ~@2 d4@3 ~ d4@3 ~@7]/2", // A#5 C5
  AX: "[~@3 [f3,a#3], d3@7 ~ c3@8 ~@16, ~@2 a3@7 ~ g3@14 ~@8, ~@2 d4@3 ~ d4@10]/2", AY: "~@2 b3@2 d4@2 g3@9 ~",
  AZ: "~@6 d4@9 ~, ~ f3@7, ~ a#3@3", BA: "~@4 a3@2 c#4 d4 ~@2 a3@5 ~, ~ e3@3 c#4@4", BB: "c4 ~@2 e4@5, ~ g3@7, ~ c4@3",
  BC: "~@8 d4@7 ~, ~ d3@7, ~@4 g3@11 ~, ~@6 b3@9 ~", BD: "[f3,a#3,d4]!2", BE: "[c3,g3,c4]@7 ~ [c3,g3,c4]@8",
  BF: "[d3,a3,d4]", BG: "[[g2,d3] [f2,c3,f3] [d3,a3,d4] [c3,g3,c4]]/5", BH: "[[a2,e3,a3]@15 ~]/2",
  BI: "[c5@4 c5@4 c5@4 a4@8 ~ d5 ~ d5 c5!2 ~ a4 g4!2 ~ f4]/2", BJ: "g4@3 f4 d4@8 f4@2 ~@2",
  BK: "[~@4 d5@8 f5 d5 g5@10 f5 d5 d5@6]/2", BL: "~@4 c5 d5 c5 d5 c5 a4 c5 a4 g4 ~ f4 d4",
  BM: "g4@3 f4 d4@2 d4@3 d4 c4 a3 g3 f3 d3 f3", BN: "d3 f3 g3 a3 c4 a3 c4 d4 c4 d4 g4 d4 f4 d4 g4 d4", BO: "[a4,c5]!8",
  BP: "[a4,c5]@2 [a4,c5]@2 [a4,c5]@2 [a4,c5]@2 c5 a4 g4@4 f4 g4", BQ: "c5 a4@2 g4 f4 d4 g4 d4 d4@8",
  BR: "d5 [a4,c5] d5 [a4,c5] d5 [a4,c5] d5 [a4,c5] d5 [a4,c5] d5 [a4,c5] c5 d5!2 c5", // Am
  BS: "~ a4 c5 a4 g4 a4!2 [f4,g4] g4!2 f4 d4 [a4,d5]!2 [a4,d5]@2", BT: "~@5 a4 ~ f5 d5 f5 ~ g5 f5 g5 ~ f5",
  BU: "g5@2 f5 g5 g5@7 f5 d5 c5 d5!2", BV: "c5!16", BW: "[f5@8 d5 f5 d5 c5 d5@9 d5 ~ e5!3 ~ d5 c5!2 ~ c5]/2",
  BX: "a4@12 a4 c5 g4@2", BY: "~ f4 d4 f4 g4 f4 g4 f4 a4 c5 g4 f4 [d4,g4] f4 d4 c4",
  BZ: "[d4@7 ~@5 d5 f5 g5@6 d5 f5 g5 ~ g5 ~ g5@2 g5@2 g5@2]/2", CA: "f5 d5 d5@7 a5@2 c6 a5 ~ c6 a5",
  CB: "~ a5 ~@2 a5@8 ~@4, c6@3 ~",
})).s("gm_overdriven_guitar").gain(0.28)

// chords · percussive organ · "tk6"
const percussive_organ = note(`<
  ~@13 A@2 B C D E F@2 G H I J K L M N O P Q R O S T U V@2 W@2 X@2 Y@2 Z AA AB@2 ~ AC AD@2 AE AF O AG@2 AH AI AG@2 AJ AK
  ~@11 AL@2 AM@2 AN@2 AO@2 AP@2 AQ@2 AR@4 AS@3 AT@3 AU AV AW ~@44
>`.pickRestart({
  A: "[~@4 d5@4 ~@10 g4@2 d5@3 ~ [d5,f5,a#5]@4 [e5,c6]@4, d4@7 ~ c4@8 b3@8 ~@8, ~@2 a4@6 ~@2 g4@7 ~@15, ~@6 d5@3 ~@7]/2", // A# C
  B: "~@4 c6 b5 a5@4 c6@2 d6@4", C: "g5@2 [d5,f5,a#5] [e5,g5,c6]", D: "d5@2 a5@2 c6 b5 a5 g5@8 d6",
  E: "[b4,d5]@2 [f5,a#5] [e5,g5,c6], ~@4 d5 ~@3", // Bm A#5 C
  F: "[d5@4 c6 b5 a5 ~@9 [b4,d5]@8 [f5,a#5]@4 [e5,g5,c6]@4, ~@7 g5@17 d5@2 ~@6]/2", // Bm A#5 C
  G: "d5@3 ~@2 b5 a5 g5@8 d6, ~@2 c6 ~@5", H: "[d5,g5]@2 [d5,f5,a#5] [e5,g5,c6]",
  I: "~@2 a5 ~ c6 b5 a5 g5@4 ~ g5 a5 g5@2", J: "~@5 f5 g5 ~ [d5,a#5]@4 [e5,g5,c6]@4, ~@7 f5@5 ~@4",
  K: "~@2 d5@2 c6 b5 a5 g5@8 d6", L: "~@4 b4@2 ~@2 [a#4,d5,f5]@4 [c5,e5,g5]@3 ~, [d5,g5] ~",
  M: "~@4 c6 b5 a5 ~ d5@8, ~@7 g5@8 ~", N: "~@2 b5 c6 d6@12", O: "[c6,e6]", P: "[b5,d6]", Q: "[f5,a#5,d6]",
  R: "~@6 c#6@4 [b5,d6]@3 c#6@3, a5@10 ~@3 d6 ~@2", S: "b5@15 ~", T: "[f5,a#5,f6]", U: "[e5,g5,c6,e6]",
  V: "[[d5,a5,d6]@3 ~]/2", // D5
  W: "[~@4 b3@2 [d5,f5,a#5] [e5,c6], d4 c4 ~@2, ~@2 a4@7 ~ g4@11 ~@11, ~@4 d5@7 ~ d5@12 ~@8]/2", // A# C
  X: "[~@4 c6 b5 a5 ~@9 b4@6 ~@2 [a#4,f5]@4 [c5,e5,g5]@4, ~@7 g5@17 ~@8, ~@4 d5@3 ~]/2", // A#5 C
  Y: "[~@24 [a#4,f5]@3 ~ [c5,e5,g5]@4, d5@7 ~]/2", Z: "d5@4 c6 b5 a5 g5@9",
  AA: "~@2 b5 c6 ~@4 [f5,a#5]@4 [g5,c6,e6]@4, ~ d6@2 ~", // A#5 C
  AB: "[~@16 b4@7 ~ [f4,a#4,d5]@4 [c5,e5]@2 ~@2, d4@7 ~ c4@8 ~@16, ~@2 a4@6 ~@2 g4@13 ~@5 g4 ~@3, ~@2 d5@3 ~ d5@6 ~@4]/2", // A# C
  AC: "c6@2 ~ d5@3 e5@2 f5@4 g5@4",
  AD: "[~@4 d5@4 ~@4 d5@11 ~ [a#3,a#4,d5]@4 [c4,c5,e5]@3 ~, d4@7 ~ c4@8 ~@16, ~@2 a4@6 ~@2 g4@13 ~@5 g4 ~@3]/2", // A# C
  AE: "a5@5 a5 b5 a5 g5@2 ~ g5@2 ~ a5 g5, ~@11 a5 ~@4", AF: "g5@2 b5 c6 ~@4 [f5,a#5]@8, ~ d6@3",
  AG: "[b5 [f5,a#5], d6]/2", AH: "a5", AI: "[g5,c6,e6]", AJ: "[c6,e6], g5@7 ~", AK: "[d5,a5,d6]@7 ~",
  AL: "[~@3 a4 ~@2 [a#3,a#4] [c4,g4,c5,e5], d4@7 ~ c4@8 b3@7 ~@9, ~@2 a4@7 ~@9 g4@6 f4@3 ~@5, ~@4 d5@6 ~@2 d5@7 ~ d5@8 ~@4]/2", // A# C
  AM: "[~@3 a4 ~ g4 [a#3,a#4] [g4,c5,e5], d4@8 ~@2 d4@7 ~ d4@4 ~@2 f4@2 ~@6, ~@2 a4@9 ~@5 b3@7 ~@9, ~@4 d5@15 ~ d5@7 ~@5]/2", // A# C
  AN: "[~@4 d5@7 ~@5 b3@8 [f4,a#4]@4 [c4,g4,c5,e5]@4, ~@2 d4@21 ~@9, ~@12 d5@15 ~@5, ~@12 g4@13 ~@7]/2", // A#5 C
  AO: "[~@18 b4 c5 b4@3 ~ [a#3,f4,a#4]@4 [c4,g4,c5,e5]@4, d4@8 c4@8 b3@7 ~@9, ~@2 a4@15 ~@15, ~ d5@3 ~ d5@2 ~, ~@12 g4@11 ~@9]/2", // A#5 C
  AP: "[~@8 g4@15 ~ [a#3,f4,a#4,d5]@4 [g4,c5,e5]@3 ~, d4@7 ~@25, ~@3 a4@20 ~@9, ~ d5@5 ~@2]/2", // A# C
  AQ: "[~@6 [a#3,f4,a#4] [c4,g4,c5,e5], d4@7 ~ c4@8 b3@8 ~@8, ~ a4@3 ~ a4@3 ~ g4@3 ~@4, ~@2 d5@3 ~ d5@3 ~ d5@4 ~@2]/2", // A#5 C
  AR: "[~@4 d5@6 ~@2 [a4,d5]@6 ~@2 a4@3 ~ [a#4,f5]@3 ~ g5@4 ~@16 [b3,g4]@8 [a#3,f4,a#4,f5]@8, d4@8 ~@2 g4@7 ~ g4@6 ~@8 d4@8 c4@8 ~@16, ~@2 a4@8 c4@5 ~@5 d5@8 [c5,e5]@8 d5@28, ~@34 a4@7 ~@3 a4@11 ~@9]/4", // D5 A#5 Em A#5 C
  AS: "[[c5,e5]@2 ~ b3 [a#4,f5]@2, [g4,g5]@2 ~, ~ d5@2]/3", // C A#5 G
  AT: "[[g4,a4,c#5]@16 ~@16 [b4,d5]@15 ~, e5@2 ~, ~ g4@2, ~@16 c5@15 ~@17, ~@24 g5@23 ~]/3", AU: "[a#4,d5,f5]",
  AV: "[c5,e5,g5]@15 ~", AW: "[d5,a5,d6]@15 ~",
})).s("gm_percussive_organ").gain(0.25)

// chords · percussive organ · "tk6" · soft notes
const percussive_organ_soft = note(`<
  ~@14 A ~@3 B ~@10 C@2 ~ D E@3 ~@4 A ~@11 F ~@2 C@2 ~ G ~ H ~@18 I J K ~@7 K ~@54
>`.pickRestart({
  A: "~@3 g5", B: "g5 ~", C: "g5/2", D: "c#6@6 ~@7 e6@2 ~, e5@15 ~", E: "[~ d6@2, g5@31 ~@17, ~@16 g6@15 ~@17]/3",
  F: "~@8 f4@3 ~@5", G: "[e5,g5,c#6]", H: "g5", I: "~@8 c4@7 ~", J: "~@2 a#3 ~", K: "~@10 g4 ~@5",
})).s("gm_percussive_organ").gain(0.15)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 A B C D E ~@2 F G H ~ I@7 J I@7 K L@3 M L M N@2 O P I@7 J I@7 M L@3 Q R M S@2 T A B C U E ~ V F G H ~ I@7 W I@3 J
  I@3 X L@3 Y L M S@2 T A B C U E ~ V F G H ~@2 I@2 Z I@3 AA AB I@15 AC ~@8
>`.pickRestart({
  A: "x", B: "x!2 ~@2", C: "~ x!2 ~", D: "~@2 x!2", E: "~@9 x ~ x ~ x ~ x", F: "~@5 x ~ x ~@8", G: "~@9 x ~ x ~@4",
  H: "~@13 x ~ x", I: "x!2 ~@2 x!2 ~@2", J: "x ~ x ~@4 x ~@2 x ~@2 x!2 ~", K: "x!2 ~ x ~@4",
  L: "x ~ x ~@3 x ~@3 x ~@4 x", M: "x!2 ~ x ~ x ~@2", N: "x ~ x ~@4 x!2 ~ x ~@4 x", O: "x ~ x ~@4 x!2 ~ x ~@5",
  P: "x ~@6 x ~@8", Q: "x ~ x!2 ~@2 x ~@2 x ~@6", R: "x ~ x!2 ~@2 x ~@3 x ~@4 x", S: "x ~ x ~@4 x!2 ~ x ~@2 x ~ x",
  T: "x ~ x ~@4 x!2 ~ x ~ x ~@3", U: "~@8 x ~@4 x ~ x", V: "~ x ~ x ~@12", W: "x ~@5 x ~@4 x ~ x ~@2",
  X: "x ~@2 x ~ x ~ x ~@3 x ~@4", Y: "x ~ x!2 ~@2 x ~@3 x ~@5", Z: "x ~ x ~@2 x ~@2 x ~ x ~@5", AA: "x!2 ~@2 x ~@2 x",
  AB: "~@4 x ~@5 x ~@2 x ~@2", AC: "x!2 ~@2 x ~@3",
})).gain(0.27)

// drums · snare
// … 112 more lines

More by Eric Clapton