Strudelify

Blue Eyes Blue

Eric Clapton

KeyB majorTempo134 bpm
0:00/0:00
// Blue Eyes Blue — Eric Clapton
// 134 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 163 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(134/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
const bass = note(`<
  ~ A B C@2 D B E@2 F G H I F G H I F G H J K G H L M I N O M I P Q R S T U R S V U W I X@2 Y@2 Z AA D AB AC AD F G H I
  F G H I F G H J K G H L M I N O M I P Q R S T U R S V U W I X@2 Y@2 Z AA D AB AC AD K AE AF J K AE AG J K AE AF J K AE
  AG J M I N O M I P Q AH@2 G AI D AJ K AE AF J K AE AG J AK G AL@2 AM@2 AN AO K AE AF J K AE AG J K AE AF J K AE AP@6
>`.pickRestart({
  A: "a2", B: "e2 f#2", C: "d2/2", D: "a1", E: "[d2@10 a1 b1 d2@3 ~]/2", F: "b1", G: "f#1", H: "g#1", I: "e1",
  J: "e1@3 f#1", K: "b1@15 ~", L: "e1@8 b1@5 ~@3", M: "e1@15 ~", N: "d#1", O: "g#1@3 f#1", P: "d#1@11 ~ d#1@4",
  Q: "f#1@4 g#1@3 ~", R: "a1@15 ~", S: "e1 f#1", T: "d1@11 ~ d1@2 ~@2", U: "d1@3 e1", V: "d1@11 ~ d1@3 ~",
  W: "f#1@11 ~ f#1@4", X: "[d#1@7 d#1]/2", Y: "[b1@13 ~ b1@2]/2", Z: "d2@3 d1", AA: "e1@7 ~", AB: "e2",
  AC: "d2@11 ~ d2@3 ~", AD: "d2@3 ~", AE: "f#1 g#1", AF: "e1@11 ~ e1@2 ~@2", AG: "e1@11 ~ e1@3 ~", AH: "[a1@3 e1]/2",
  AI: "d1", AJ: "e1@13 ~@3", AK: "g#1@11 ~ g#1@4", AL: "[f1@7 f1]/2", AM: "[c#2@13 ~ c#2@2]/2", AN: "e2@3 e1",
  AO: "f#1@7 ~", AP: "[e1@41 ~@7]/6",
})).s("gm_electric_bass_finger").gain(0.26)

// other · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@3 A@3 B@2 C D ~@15 E F G@2 E H I J K ~ L M L N O P@2 Q R@2 S T@2 U ~ V W X D ~@15 E F G@2 E H I J K Y@2 Z AA N O P@2
  Q AB@2 AC T@2 U AD ~ AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV E F G@2 E H I J ~@6 AW AX ~ AY AZ BA BB@2
  BC BD BE@2 BF BG@2 BH BI ~@4 BA BJ@2 BK BL BM BN BO BP BQ@6
>`.pickRestart({
  A: "[~@2 b3 ~@3 a3 ~ b3@5 ~@3 e4@2 ~@14 [e3,a3,c#4,e4]@16, d3@9 ~@7, e4@13 ~@5 f#4@16 ~@14]/3", // A
  B: "[~@14 b4@6 a4@9 ~@3]/2", C: "c#4 b3 a3 f#3 b3 a3 f#3 e3", D: "[f#3,b3]@3 ~", E: "~@5 f#4 g#4 d#4", F: "f#4",
  G: "[~@2 f#4@2 g#4@2 d#4@2 f#4@10 e4@2 d#4@2 c#4@2 b3@7 ~]/2", H: "f#4@7 ~", I: "~ d#4 g#4 d#4 f#4@2 d#4 f#4",
  J: "a4 g#4 f#4 e4 f#4 e4 f#4@2", K: "~@4 a4@9 ~@3, c#5@13 ~@3", L: "~ a4, ~ c#5@3", M: "[e4,b4]@15 ~",
  N: "[g#4,b4]@7 ~@9", O: "~@2 a4 ~, ~@4 c#5@7 ~@5", P: "[d4 c#4 d4 c#4 d4 c#4 b3 ~ f#4@8, ~@7 a3@9]/2",
  Q: "[b3,e4]@7 ~", R: "[~@6 f#4@2 a4@7 ~, ~ a3@6 ~, ~@4 c#4@3 ~@9]/2", S: "~ [a4,c#5]@3",
  T: "[~@2 [a4,c#5] b4@3 a4@2, ~@3 f#4@5]/2", U: "~@2 f#4@2 a4@2 b4@2 a4@5 ~@3, e4@13 ~@3", V: "~ c#5",
  W: "~@2 a4@4 f#4 e4", X: "c#4@2 b3@2 a3@2 f#3@2 b3@2 a3@2 f#3@2 e3 ~",
  Y: "[~ a4 g#4 f#4 g#4 ~@7 a4@4, ~@5 f#4@10 ~, ~@5 c#5@3]/2", Z: "~@6 c#5 b4, [e4,b4]@7 ~", AA: "~ a4, a4 ~, ~ c#5@3",
  AB: "[f#4 g#4 a4 c#5 ~@2 f#4@2 a4@7 ~, ~ a3@6 ~, ~@2 f#5@5 ~, ~@4 c#4@3 ~@9]/2", AC: "a4 [a4,c#5]@3, f#5@5 ~@3",
  AD: "a4@2 f#4@2 a4@9 ~@3", AE: "~@6 f#4 a4", AF: "b4 c#5 b4 a4 f#4 a4 f#4 e4", AG: "[d#4,b4]@2 d#5 f#5@4 c#5",
  AH: "d#5 ~ f#5@4 c#5 ~ g#5@2 f#5@2 d#5@2 c#5 ~", AI: "f#5@2 g#5@11 ~@3", AJ: "~@2 g#4 ~ d#5@4 c#5@2 b4@2 ~@2 b4 g#4",
  AK: "b4@13 ~ b4 ~", AL: "e5@8 d#5@6 ~ c#5", AM: "d#5 c#5 b4@4 ~@2 b4@6 ~@2", AN: "b4@2 g#4 f#4 e4 c#4 b3 g#3",
  AO: "f#4@4 c#4@2 b3@3 ~ d#4@2 c#4@2 b3@2", AP: "g#3@2 a#3@2 b3@2 c#4@2 d#4@2 ~ e4@3 d#4 ~",
  AQ: "d#4 e4 d#4 c#4 b3 a#3 g#3 e3 f#3 a#3 g#3 f#3 e3 d#3 c#3 a#2", AR: "b2@6 ~@2 g#2@2 b2 c#3 d#3@2 g#3@2",
  AS: "d#3@3 f#3@3 d#3@2 g#3@5 ~@3", AT: "f#3@2 g#3@2 a#3@2 b3@2 d#4@2 ~ c#4@3 b3 c#4",
  AU: "d#4@2 e4@4 d#4@2 e4@3 d#4@3 e4@2", AV: "d#4@2 c#4@2 ~@2 b3 g#3 b3@4 ~@4", AW: "~@2 c#4 d#4 f#4@4",
  AX: "[c#4,a#4]@4 [d#4,b4]@3 ~", AY: "~ d#5 c#5 b4 c#5 b4 g#4 f#4", AZ: "b4@13 ~@3", BA: "~@4 b3 c#4 d#4 e4",
  BB: "[b3@14 f#3 g#3]/2", BC: "b3@7 ~", BD: "~@2 g#4 f#4", BE: "[b3@12 b4 a#4 g#4 f#4]/2", BF: "g#4",
  BG: "[~ e4 g#4 d#5 c#5@5 e4 g#4 d#5 c#5@4]/2", BH: "b4@2 g#4@2 e4@2 f#4 ~ g#4@2 f#4@2 e4@2 c#4 ~",
  BI: "[f#3,d#4]@7 ~", BJ: "[f#4@4 g#4@3 ~ g#4@4 f#4@7 ~ g#4@11 ~]/2", BK: "~ g#4@3", BL: "~@4 f#4 g#4 f#4 d#4",
  BM: "c#4 d#4 c#4 b3@4 ~", BN: "~@2 g#3@2 b3@2 c#4 ~ d#4@2 c#4@2 b3@2 g#3@2", BO: "b3@15 ~",
  BP: "a#4@4 g#4@2 f#4 ~ g#4@4 f#4@3 ~", BQ: "[d#4@2 c#4@2 b3@2 c#4@2 b3@83 ~@5]/6",
})).s("gm_acoustic_guitar_nylon").gain(0.24).pan(0.6)

// other · synth brass 2
const synth_brass_2 = note("<~@2 A B@2 ~ A B@2 ~@154>".pickRestart({
  A: "a4 g#4 f#4@2", B: "[e4@21 ~@11]/2",
})).s("gm_synth_brass_2").gain(0.27).pan(0.6)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@17 A@2 B@2 C@2 D@2 E@2 F G E@2 H I J K L@2 M N O@2 P Q R@2 S@2 T U V W X@2 Y Z AA AB AC Z AA AB AC AD AE@2 AF@2 AG@2
  AH@2 AI AJ@3 AK AL AM AN@3 AO AP AQ@2 AR AS AT@2 AU@2 AV AW V W X@2 AX AY@3 AZ BA BB@2 AX AY@3 AZ BA BB@2 BC@2 BD BE@3
  BF BG BH@2 BI BJ BK@2 BL BM@3 BN BO BB@2 BP BQ BR@2 BS@3 BT AX AY@3 AZ BA BB@2 AX AY@3 AZ BA BU@6
>`.pickRestart({
  A: "[~@6 d#2 f#2@9]/2", B: "[g#2@31 ~]/2", C: "f#2/2", D: "[g#2@29 ~@3]/2", E: "[e3,g#3]/2", F: "[f#3,a#3]",
  G: "[g#3,b3]@15 ~", H: "[f#3,a#3]@7 ~", I: "[f#3,a3]@4 [g#3,b3]@3 ~", J: "[e3,a3,c#4]", K: "[g#3,b3] [f#3,a3]",
  L: "[[d3,f#3]@15 ~]/2", M: "[a3,c#4]", N: "[g#3,b3]@8 [f#3,a3]@7 ~", O: "[[d3,f#3]@29 ~@3]/2", P: "[f#3,a3]",
  Q: "[g#3,b3]@6 [f#3,a3] ~", R: "[[f#3,a3]@27 ~@5]/2", S: "[[d3,f#3]@7 ~]/2", T: "[f#3,a3]@15 ~", U: "[e3,b3]@3 ~",
  V: "[e3,c#4]", W: "[g#3,b3] [e3,c#4]", X: "[[f#3,a3]@15 ~]/2", Y: "[b2,d#3]", Z: "[c#3,a#3]", AA: "[d#3,b3]",
  AB: "[e3,g#3]@7 ~", AC: "[d#3,f#3]", AD: "[c#3,a#3]@15 ~", AE: "[[d#3,b3]@16 [e3,g#3,g#5]@15 ~, b5@31 ~]/2",
  AF: "[[d#3,b3]@16 g#5@8 [f#5,c#6]@7 ~, b5@3 ~, ~ [f#3,c#4]]/2", AG: "[a#5@4 g#5@11 ~, [g#3,b3]@15 ~]/2",
  AH: "[e3,g#3,g#4,b4]/2", AI: "[f#3,a#3,f#4,a#4]", AJ: "[[g#3,b3]@15 ~ [e3,g#3]@32, [g#4,b4]]/3",
  AK: "[f#3,a#3,f#4,a#4]@7 ~", AL: "[f#3,a3,f#4,a4]@4 [g#3,b3,g#4,b4]@3 ~", AM: "[e3,a3,c#4,e4,c#5]",
  AN: "[[g#3,b3,g#4,b4]@4 a3@4 [d3,f#3]@15 ~, ~@4 [f#4,a4]@19 ~, ~@8 f#3@7 ~@33]/3", AO: "[a3,c#4,a4,c#5]",
  AP: "[g#3,b3,g#4,b4]@8 [f#3,a3,f#4,a4]@7 ~", AQ: "[[d3,f#3,a4,c#5]@29 ~@3]/2", AR: "[f#3,a3,f#4,a4]",
  AS: "[g#4,b4]@4 ~@2 [f#3,a3] ~, [g#3,b3]@13 ~@3, ~@4 [f#4,a4]@3 ~", AT: "[[f#3,a3]@27 ~@5, f#4@3 ~, d#4@21 ~@11]/2",
  AU: "[[d4,f#4]@15 ~, [d3,f#3]@7 ~]/2", AV: "[f#3,a3,f#4,a4]@15 ~", AW: "[e4,a4]@7 ~ [e4,b4]@5 ~@3, [e3,b3]@3 ~",
  AX: "[f#3,b3,d#4,f#4,d#5]", AY: "[[a#3,c#4,a#4,c#5]@4 b3@4 [e3,g#3]@15 ~, ~@4 [g#4,b4]@19 ~, ~@8 g#3@7 ~@33]/3",
  AZ: "[b3,d#4,b4,d#5]", BA: "[a#3,c#4,a#4,c#5]@8 [g#3,b3,g#4,b4]@7 ~", BB: "[[e3,g#3,b4,d#5]@29 ~@3]/2",
  BC: "[e3,g#3,g#4,b4,b5]/2", BD: "[f#3,a#3,f#4,a#4,a#5]",
  BE: "[[g#3,b3]@15 ~@17 c#6@16, [g#4,b4], b5@2 ~, ~ [e3,g#3]@2]/3", BF: "[f#3,a#3,f#4,a#4]@7 ~, d#6",
  BG: "[f#3,a3,f#4,a4]@4 [g#3,b3,g#4,b4]@3 ~, e6@3 ~", BH: "[e6@2 c#6 [e2,g#3,b3,g#5,e6], [a1,a2,e3,c#4,e5]@3 ~]/2",
  BI: "[f#2,a3,c#4,a5,c#6]", BJ: "[d2,d4,f#5,d6], f#3@7 ~",
  BK: "[[a2,e3,c#4]@16 ~@8 [g#5,b5]@5 ~@3, [a5,c#6]@25 ~@7, ~@16 [e2,g#3,b3]@13 ~@3]/2", BL: "[f#3,b3,d#4,f#4,d#5,b5]",
  BM: "[[a#3,c#4,a#4,c#5,a#5]@4 b3@4 [e3,g#3]@15 ~, ~@8 [g#4,b5]@39 ~, ~@8 b4@37 ~@3, ~@8 g#3@7 ~@33]/3", // A#m E G#m
  BN: "[b3,d#4,b4,d#5,b5]", BO: "[a#3,c#4,a#4,c#5,a#5] [g#3,b3,f#5], ~@4 [g#4,b4]@3 ~", BP: "[g#3,b3,g#4,b4,b5]",
  BQ: "[a#4,c#5]@4 ~@2 [g#3,b3] ~, c#6, [a#3,c#4]@13 ~@3, ~@4 [g#4,b4]@3 ~", // A#m G#m A#m G#m
  BR: "[[g#3,b3]@27 ~@5, d#6, g#4@3 ~, f4@21 ~@11]/2", // G#m
  BS: "[c#6@8 ~@12 e5 f#5 g#5@2, [e4,g#4]@5 ~@3, [e3,g#3]@28 ~@4 [g#3,b3,g#4,b4]@15 ~, ~@2 g#5@3 ~]/3", // E G#m
  BT: "[f#4,b4,f#5]@7 ~ [f#4,c#5,c#6]@5 ~@3, [f#3,c#4]@3 ~", BU: "[e2@16 e1@67 ~@13, [f#3,g#3,b3,d#4]@83 ~@13]/6",
})).s("gm_string_ensemble_1").gain(0.13)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A B C D E F G@2 H I J K L@2 M N O I M P@2 Q R S T@2 U V W@2 X Y Z AA AB@2 AC AD AE@2 AF AG@3 AH@2 AI@2 AJ AK AL@2 AM
  AN AO AP AQ AR AS AT AM AU AV AW@2 AX AY AZ T@2 U V W@2 X Y Z AA AB@2 AC AD AE@2 AF AG@3 AH@2 AI@2 AJ AK AL@2 BA BB
  BC@2 BD BE BF@2 BA BB BC@2 BD BE BF@2 T@2 U V W@2 X Y ~@6 BA BB BC@2 BD BE BF@2 BG BH@3 BI@2 BJ@2 BA BB BC@2 BK BE
  BF@2 BA BB BC@2 BK BE BL@4 ~@2
>`.pickRestart({
  A: "[e3,a3] ~@4 e4@3, a2, ~@2 e3@13 ~, ~ a3@3, ~@3 b3@5", B: "~@2 g#3 b3 [f#2,f#3,a3,c#4]@3 ~, e3 ~, ~@2 f#3@5 ~@9",
  C: "[d3,f#3,a3,c#4,f#4]@7 ~", D: "~@8 e4@7 ~, d3@7 ~, ~@2 f#3@13 ~, ~@4 a3@11 ~, ~@6 b3@9 ~",
  E: "[e3,a3] ~@4 e4@3, a2@15 ~, ~ e3@6 ~, ~ a3@3, ~@3 b3@5", // A5
  F: "~@2 g#3 b3 [f#3,a3,c#4]@3 ~, e3@7 ~ [f#2,e3]@8, ~ f#3@2 ~@5", // F#m F#7
  G: "[~@8 b3@21 ~@3, d3@29 ~@3, ~@2 f#4@27 ~@3, ~@4 f#3@25 ~@3, ~@6 a3@23 ~@3]/2",
  H: "[b2,d#4]@6 c#4 d#4, [f#3,b3,f#4]@15 ~", I: "[f#3,a#3,c#4,f#4]@7 ~", J: "[d#3,g#3,b3,d#4,f#4]@13 ~@3",
  K: "~@3 [f#4,b4]@4 ~, [e3,g#3]@13 ~@3, ~ b3@6 ~, ~@2 e4@5 ~", // B5 E
  L: "[[b2,f#3,d#4,f#4]@6 b3 d#4 [f#3,a#3,c#4]@7 ~, b3@5 ~@2 f#4@8 ~]/2", M: "[b3,d#4,f#4], [d#3,g#3]@7 ~",
  N: "~@4 g#4@3 ~, [e3,g#3]@13 ~@3, ~ b3@6 ~, ~@4 e4@9 ~@3, ~@6 b4@7 ~@3", O: "[f#3,b3,d#4,f#4]@7 ~, b2@3 ~",
  P: "[~@6 f#4@6 g#4@4 [b2,f#3,f#4]@12 [c#4,f#4]@2 d#4 ~, e3@3 ~@5, ~ g#3@5 ~@10, ~@4 b3@27 ~, ~@6 e4@8 ~@2 d#4@11 ~@5]/2", // B5 F#5
  Q: "[c#3,f#3,a#3,c#4,f#4]@7 ~", R: "b3@6 ~@6 g#4@3 ~, [d#3,g#3]@15 ~, [d#4,g#4]@10 d#4@5 ~, ~@4 b3@3 ~",
  S: "b3@3 ~ b3@2 ~@2, [e3,g#3,e4,g#4]@13 ~@3", T: "[~@12 [e3,g#3]@3 ~, [e3,g#3]@23 ~@9, ~ b3@7, ~ c#4@3, ~@3 f#4@5]/2",
  U: "~@3 [d#4,f#4], d#3@13 ~@3, ~@4 f#3@9 ~@3, ~ a#3", V: "~ [b3,g#4], d#3@7 ~, ~@4 g#3@11 ~",
  W: "[~@7 b3, e3@10 e3@5 ~, ~ g#3@4 ~ g#3@2, ~ [c#4,f#4]@3]/2", X: "~@8 [c#4,g#4]@7 ~, d#3@15 ~, ~@2 f#3@5 ~",
  Y: "[f#3,a3,c#4,a4]@6 ~@2 [g#3,b3,e4,b4]@5 ~@3", Z: "~ [e4,a4], e3@13 ~@3, ~@2 a3@11 ~@3, ~ b3@3, ~@3 c#4@5",
  AA: "[e3,g#3] [f#3,c#4,f#4], ~@4 a3@3 ~", // E F#5
  AB: "[~@24 f#4@7 ~, d3@8 f#4@13 ~ e4@9 ~, ~ a3@8 d3@6 ~, ~@4 e4@15 ~ a3@10 ~@2, ~@3 a4@7 ~@6]/2",
  AC: "~@4 [b3,e4,a4]@2 ~@2 [c#4,e4,a4]@7 ~, [e3,a3]@15 ~", AD: "~ [b3,g#4] [f#3,a3,c#4,f#4]@2, [e3,g#3]@7 ~@9",
  AE: "[~@4 [e4,a4] ~@19 f#4@4 e4@4, d3@15 ~ d3@12 ~@4, ~@2 a3@14 ~@4 a3@9 ~@3, ~@2 [f#4,a4]@3 ~ a4@2]/2", // A5 F#m
  AF: "~@4 [c#4,f#4] ~@3 [c#4,f#4]@7 ~, [f#3,a3]@15 ~", // F#5 F#m
  AG: "[~@28 f#4@15 ~@5, e3@12 a3@31 ~@5, ~@4 f#4@12 ~@4 c#4@23 ~@5, ~@6 e4@10 d#3@27 ~@5, ~@24 a4@19 ~@5]/3",
  AH: "[~@28 a4@3 ~, b2@29 ~@3, ~ [f#3,d4]@29 ~@2, ~ [a3,f#4,c#5]@14 ~]/2", // D F#m
  AI: "[~@2 c#5@12 ~@3 [f#4,b4]@11 ~@4, d3@14 ~ e3@12 ~@5, ~ [a3,e4,f#4]@13 ~@2 [b3,d4]@11 ~@5]/2", // B5 F#m7 Bm
  AJ: "~@4 [c#4,e4] ~@3 [c#4,e4]@8, a3@13 ~@3, e3@11 ~@5", AK: "~ [b3,g#4]@3, [e3,g#3]@13 ~@3",
  AL: "[~@4 [c#4,f#4] ~@19 a4@5 ~@3, [d3,a3]@15 ~ d3@13 ~@3, ~@8 [c#4,f#4]@10 a3@11 ~@3, ~@20 c#4@9 ~@3, ~@22 f#4@7 ~@3]/2", // F#5 D5 F#5
  AM: "~ [b3,d#4,f#4], b2@15 ~, ~ f#3@3", AN: "~@3 f#4@5, c#3@13 ~@3, ~@2 a#3@13 ~, ~ c#4@3",
  AO: "~ [b3,f#4], d#3@15 ~, ~ g#3@3", AP: "~@2 f#4 ~, e3@3 ~, ~ g#3@5 ~@2, ~ b3@2 ~, ~@3 e4@3 ~@2",
  AQ: "~@7 f#3, b2@11 ~ b2@4, ~ [f#3,b3]@11 ~@4, ~ c#4@2 ~@13, ~ [d#4,f#4]@7", AR: "~ [c#4,f#4], c#3@7 ~, ~@4 a#3@11 ~",
  AS: "~ [b3,g#4], d#3@15 ~, ~ g#3@3", AT: "~@2 g#4 f#4, e3@13 ~@3, ~@4 g#3@9 ~@3, ~ b3", AU: "~ f#4, c#3, ~ c#4@3",
  AV: "~@3 g#4@5, d#3@15 ~, ~@2 g#3@13 ~, ~ b3@3",
  AW: "[~@3 g#4 f#4@2 e4@2 [b2,d#4]@8, e3@13 ~@19, ~ g#3@6 ~@9, ~ b3@7]/2", // B
  AX: "~@3 f#4@5, c#3@13 ~@3, ~ a#3@6 ~, ~ c#4@3", AY: "~@3 g#4@5, d#3@7 ~, ~@2 g#3@13 ~, ~@4 b3@11 ~",
  AZ: "~@6 g#4@2 f#4@5 ~@3, e3@13 ~@3, ~@2 g#3@11 ~@3, ~@4 b3@9 ~@3",
  BA: "~ [f#4,b4], f#3@13 ~@3, ~@2 b3@11 ~@3, ~ c#4@3, ~@3 d#4@5", BB: "[f#3,a#3] [g#3,d#4,g#4], ~@4 b3@3 ~",
  BC: "[~@24 g#4@7 ~, e3@8 g#4@13 ~ f#4@9 ~, ~ b3@8 e3@6 ~, ~@4 f#4@15 ~ b3@10 ~@2, ~@3 b4@7 ~@6]/2",
  BD: "~@4 [c#4,f#4,b4]@2 ~@2 [d#4,f#4,b4]@7 ~, [f#3,b3]@15 ~", BE: "~ [c#4,a#4] [g#3,b3,d#4,g#4]@2, [f#3,a#3]@7 ~@9",
  BF: "[~@4 [f#4,b4] ~@19 g#4@4 f#4@4, e3@15 ~ e3@12 ~@4, ~@2 b3@14 ~@4 b3@9 ~@3, ~@2 [g#4,b4]@3 ~ b4@2]/2", // B5 G#m
  BG: "~@4 [d#4,g#4] ~@3 [d#4,g#4]@7 ~, [g#3,b3]@15 ~", // G#5 G#m
  BH: "[~@28 g#4@15 ~@5, f#3@12 b3@31 ~@5, ~@4 g#4@12 ~@4 d#4@23 ~@5, ~@6 f#4@10 f3@27 ~@5, ~@24 b4@19 ~@5]/3",
  BI: "[~@28 b4@3 ~, c#3@29 ~@3, ~ [g#3,e4]@29 ~@2, ~ [b3,g#4,d#5]@14 ~]/2", // C#m G#m
  BJ: "[~@2 d#5@12 ~@3 [g#4,c#5]@11 ~@4, e3@14 ~ f#3@12 ~@5, ~ [b3,f#4,g#4]@13 ~@2 [c#4,e4]@11 ~@5]/2", // C#5 G#m7 C#m
  BK: "~@2 [c#4,f#4,b4] ~ [d#4,f#4,b4]@4, [f#3,b3]@15 ~", // F#sus4 B B5
  BL: "[~@5 g#4@58 ~, b2@63 ~, ~ [e3,f#3]@63, ~@2 b3@61 ~, ~@3 d#4@60 ~]/4", // Esus2
})).s("gm_acoustic_guitar_steel").gain(0.22).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~ A ~ A ~ A ~ A B A ~ A ~ A ~ A ~ A ~ A B A ~ A B C A C A C A C D A@2 C A@3 C A C A@2 C A C A@2 C A C@2 E A E A@2 E A
  C E A E A@2 E A C@2 A C@5 A C A C@2 A C A C@3 A C@4 F C A C@3 A C@2 A C A C@2 A C@2 A C A C@2 A C@5 A@2 ~@5 C A C@2 A
  C A C@3 A C@4 F C A C@2 A C A C@2 A C@2 A C A ~@5
>`.pickRestart({
  A: "x", B: "~@3 x", C: "x ~@2 x", D: "x!2", E: "x ~@6 x", F: "x!2 ~ x",
})).gain(0.35)

// drums · rim
const rim = s("rim").struct("<~ A@47 B A@27 ~@17 A@4 ~@16 A@7 ~@43>".pickRestart({
  A: "~ x", B: "~ x ~@2",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@76 A@17 ~@4 A@16 ~@7 A ~@5 B A@30 ~@6>".pickRestart({
  A: "~ x", B: "~ x ~ x ~@3 x",
})).gain(0.35)

// drums · hihat
const hihat = s("hh").struct(`<
  A ~@32 A@3 B A@3 B A@3 B A@3 B C A@2 B A D A D A D A D A D A D A D A D C D A E A@3 ~ A D A E A D A E A D A E A D A E C
  A@2 B A D A E A D A E A D A E A D A E C D A E A@3 ~@7 A D A E A D A E A D A E A D A E A D A E A D A E A D A E A D ~@6
>`.pickRestart({
  A: "x!4", B: "x!2 ~@2", C: "~ x!3", D: "x!2 ~ x", E: "x!3 ~",
})).gain(0.25)

// drums · low tom
const low_tom = s("lt").struct("<~@48 A ~@27 B ~@35 C ~@7 B ~@5 D ~@23 C ~@12>".pickRestart({
  A: "~@6 x!2", B: "~@3 x ~@3 x", C: "~@7 x", D: "~@3 x",
})).gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@48 A ~@27 B ~@35 C ~@7 B ~@5 D ~@23 C ~@12>".pickRestart({
  A: "~ x", B: "~@3 x", C: "~@4 x!2 ~@2", D: "x!2",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@36 A ~@3 A ~@3 A ~@3 A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B ~@5 A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~@3 A ~ A ~ B
  ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~@11 A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A C ~@5
>`.pickRestart({
  A: "~ x", B: "~@3 x", C: "x",
})).gain(0.2)

// drums · high tom
const high_tom = s("ht").struct("<~@76 A ~@35 B ~@7 A ~@29 B ~@12>".pickRestart({
  A: "~ x ~@6", B: "~ x ~@2",
})).gain(0.35)

// drums · crash
const crash = s("cr").struct(`<
  ~@33 A ~@15 A ~@3 A ~@7 A ~@7 A ~@6 A@2 ~@15 A ~@3 A ~@7 A ~@5 A ~ A ~@6 A@2 ~@5 A ~@15 A ~@7 A ~@4 B A ~@5
// … 56 more lines

More by Eric Clapton