Strudelify
Higher Love cover art

Back In The High Life

Higher Love

Steve Winwood

KeyC majorTempo101 bpm
0:00/0:00
// Higher Love — Steve Winwood
// 101 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// 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(101/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.

// chords · drawbar organ · "ORGAN 1"
const drawbar_organ = note("<~@16 A B A C A B A D ~@20 A B A C A B A D ~@28 E@3 F G H I J K@4 ~@43 L ~@6>".pickRestart({
  A: "[b3,d4,g4]@15 ~", B: "[c4,e4,a4]@15 ~", C: "[g3,b3,e4]@3 ~ [a3,c4,f4]@11 ~", D: "[b3,e4,g4]@3 ~ [c4,e4,a4]@11 ~",
  E: "[[b3,d4,g4]@47 ~]/3", F: "[a3,c4,f4]@15 ~", G: "[c4,f4,a4]@6 ~ [c4,e4,g4]@8 ~",
  H: "[a#3,d4,f4]@6 ~ [a3,c4,f4]@8 ~", I: "[c4,f4,a4]@6 ~ [c4,e4,g4]@7 ~@2", J: "[c4,e4,g4]@6 ~ [d4,f#4,a4]@6 ~@3",
  K: "~@2 g5 ~@2 g4 ~@2 g5 ~@2 g4 ~@2 g5 ~", L: "g3@7 ~@9",
})).s("gm_drawbar_organ").gain(0.32).pan(0.6)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  ~@16 A B C D A E F G H I J K L I L M ~@4 N@3 O ~@4 A B C D A E F G H I J K L I L M H I J K L I L M P@8 ~@4 Q@3 R S T U
  V W@4 H I J K L I L M ~@12 H I J K H I J K H I J K H I J K H I J K X I Y@2 ~@6
>`.pickRestart({
  A: "g4@15 ~", B: "a4@3 ~ e4@5 ~ c4@2 e4@2 a4@2", C: "g4 d4@3", D: "e4@3 ~ f4@5 ~ c4 ~ a3 ~ a4 ~",
  E: "a4@3 ~ e4@5 ~ c4 ~ e4 ~ a4 ~", F: "g4@3 ~ d4@11 ~", G: "[b3,e4,g4] [c4,e4,a4]@3",
  H: "[f3,a3,c4,f4] [c3,e3,g3,c4,e4]", I: "[d3,g3,b3,d4]@7 [e3,a3,c4,e4]@9", J: "[a3,c4,f4] [g3,c4,e4]",
  K: "[d3,g3,b3,d4]@7 [a2,e3,a3,c4]@9", L: "[f3,a3,c4,f4] [c3,g3,c4,e4]", M: "[e3,a3,c4,e4]@3 [g3,b3,d4,g4]@3 ~@2",
  N: "c5/3", O: "g4", P: "[~@24 a3@7 ~, a4@31 ~]/8", Q: "[[g3,b3,d4,g4]@47 ~]/3", R: "[f3,a3,c4,f4]@15 ~",
  S: "[f3,a3,c4,f4]@7 [c3,g3,c4,e4]@9", T: "[a#2,f3,a#3,d4]@7 [c3,f3,a3,c4]@9", U: "[f3,a3,c4,f4]@7 [e3,g3,c4,e4]@9",
  V: "[e3,g3,c4,e4]@7 [f#3,a3,d4,f#4]@9", W: "~@2 g5 ~@2 g4 ~@2 g5 ~@2 g4 ~@2 g5 ~", X: "[f3,a3,c4,f4] [e3,g3,c4,e4]",
  Y: "[[f3,a3,c4,f4]@8 [c3,g3,c4,e4]@7 [g2,g3]@9 ~ [d4,b4,g5]!2 ~ [d4,b4,g5] ~ [d4,b4,g5] [e4,c5,a5]]/2", // F C G Am
})).s("gm_synth_strings_1").gain(0.32).pan(0.3)

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  ~@8 A B A C A B A D ~@3 E F@2 ~ G H I H J H I H K L M L N L M L O P Q R S ~@3 E F@2 ~ G H I H J H I H K H I H J H I H
  K T U V W X Y Z AA AB AC R AD ~ AE AF AG ~@6 AH@2 H I H J H I H K AI AJ AK AL ~@8 H I H J H I H J H I H J H I H J H I
  H J H I AM@2 ~@6
>`.pickRestart({
  A: "[f4,a#4,c5,d5]@2 ~@4 [f4,a4,c5]@5 ~@5", B: "[d4,f4,g4,a#4]@2 ~@4 [f4,g4,a4,c5]@7 ~@3",
  C: "[d4,f4,g4,a#4]@2 ~@4 [e4,g4,a#4,c5]@7 ~@3", D: "[e4,g4,a#4,c5]@2 ~@4 [f4,g4,b4,d5]@7 ~@3",
  E: "~@11 f4 ~@3 c5, ~@4 f5@3 a4, ~@9 c5@4 f4@3, ~@5 a4 c4@2", F: "[~ g5@28 ~@3, [g4,b4,d5]@29 ~@3]/2",
  G: "[e4,g4,b4,e5]@3 ~ [a3,e4,a4,c5]@11 ~", H: "[a4,c5,f5]@7 ~ [g4,c5,e5]@7 ~", I: "[g4,b4,d5]@7 [a4,c5,e5]@9",
  J: "[g4,b4,d5]@7 [e4,a4,c5]@9", K: "[a4,c5,e5]@5 ~ [g4,b4,d5]@10", L: "[f5,a#5,d6]@2 ~@4 [f5,a5,c6]@5 ~@5",
  M: "[d5,f5,a#5]@2 ~@4 [f5,a5,c6]@7 ~@3", N: "[d5,f5,g5,a#5]@2 ~@4 [e5,g5,a#5,c6]@7 ~@3",
  O: "[c5,e5,g5,a#5]@2 ~@4 [f5,g5,b5,d6]@7 ~@3", // C7 G7
  P: "[a4,a5]!2 [g4,g5] ~ [a4,a5] ~ [g4,g5] ~ [a4,a5] ~ [g4,g5] [a4,a5] ~ [c5,c6] ~ [a4,a5]", // A G A G A G A C …
  Q: "~ [a4,a5] [g4,g5] ~ [a4,a5] ~ [g4,g5] ~ [d5,d6]!2 ~ [c5,c6] ~ [a4,a5] ~ [a4,a5]", // A G A G D C A
  R: "~ [a4,a5] [g4,g5] ~ [a4,a5] ~ [g4,g5] ~ [a4,a5] ~ [g4,g5] [a4,a5] ~ [c5,c6] ~ [a4,a5]", // A G A G A G A C …
  S: "~ [a4,a5] [g4,g5] ~ [a4,a5] ~ [g4,g5] ~ [d5,d6]!2 ~ [c5,c6] ~ [a4,a5] ~@2", // A G A G D C A
  T: "~@3 [f4,a4,c5,f5] ~@2 [g4,b4,d5,g5] ~ [a4,c5,e5,a5]@3 ~@5", // F G Am
  U: "[a4,c5,e5,a5] ~@2 [g4,b4,d5,g5] ~@2 [f4,a4,c5,f5]@6 ~@4", V: "~@4 [g4,b4,d5,g5] ~@2 [a4,c5,e5,a5]@4 ~@5",
  W: "[a4,c5,e5,a5]@2 ~ [g4,b4,d5,g5] ~@2 [f4,a4,c5,f5]@6 ~@4", // Am G F
  X: "~@2 [f4,a4,c5,f5] ~ [g4,b4,d5,g5] ~ [a4,c5,e5,a5]@5 ~@5", // F G Am
  Y: "[g4,b4,d5,g5] ~ [g4,b4,d5,g5]@2 ~@2 [f4,a4,c5,f5]@6 ~@4", Z: "~@6 [a4,c5,e5,a5]@5 ~@5",
  AA: "[g4,b4,d5,g5] ~ [g4,b4,d5,g5] ~@3 [f4,a4,c5,f5]@6 ~@4", // G F
  AB: "a5 [a4,a5] g5 ~ [a4,a5] ~ [g4,g5] ~ [a4,a5] ~ [g4,g5] [a4,a5] ~ [c5,c6] ~ [a4,a5]", // A G A G A C A
  AC: "~ [a4,a5] [g4,g5] ~ [a4,a5] ~ [g4,g5] ~ d6!2 ~ [c5,c6] ~ [a4,a5] ~ [a4,a5]", // A G A G C A
  AD: "~ [a4,a5] [g4,g5] ~ [a4,a5] ~ [g4,g5] ~ [d5,d6] d6 ~ [c5,c6] ~ [a4,a5] ~@2", // A G A G D C A
  AE: "~@9 [g4,g5] [a4,a5] [b4,b5] ~@4", AF: "~ [g4,g5] [a4,a5] [b4,b5] ~@12",
  AG: "~@2 f5 g5 f5@2 c5 d5 c5@2 a4 a#4 a4 a#4 a4 a#4", AH: "~@2 g6 ~ g6 g5 ~ g5 g6 ~ g6 g5 ~ g5 g6 ~",
  AI: "~@2 [a5,c6,f6] ~@3 [a5,c6,f6]!4 [g5,c6,e6] ~@3 [g5,c6,e6]!2", // F C
  AJ: "[g5,c6,e6]!2 [g5,b5,d6]!2 ~ [g5,b5,d6]@2 [g5,b5,d6]@2 [g5,c6,e6]@2 [g5,c6,e6]@2 [g5,c6,e6] [g5,b5,d6] ~", // C G C G
  AK: "~@2 [f5,a5,c6,f6] ~@3 [f5,a5,c6,f6] ~ [f5,a5,c6,f6]!2 [e5,g5,c6,e6] ~@3 [e5,g5,c6,e6]!2", // F C
  AL: "[e5,g5,c6,e6]!2 [d5,g5,b5,d6]!2 ~ [d5,g5,b5,d6]@2 [d5,g5,b5,d6]@2 [e5,g5,c6,e6]@2 [e5,g5,c6,e6]@2 [e5,g5,c6,e6] [d5,g5,b5,d6] ~", // C G C G
  AM: "[[a4,c5,f5]@7 ~ [g4,c5,e5]@7 g3@9 ~ [g3,b4,d5,g5]!2 ~ [g3,b4,d5,g5] ~ [g3,b4,d5,g5] [a3,c5,e5,a5]]/2", // F C G Am
})).s("gm_epiano1").gain(0.56).pan(0.7)

// chords · epiano1 · "E.PIANO 1" · soft notes
const epiano1_soft = note("<~@8 A ~ A ~ A ~ A ~@61 B C ~ D ~@8 E@2 ~@12 F ~@31 G@2 ~@6>".pickRestart({
  A: "~@6 g4@5 ~@5", B: "a4 ~ g4 ~@13", C: "~@8 d5!2 ~@6", D: "~@9 d5 ~@6",
  E: "~@2 g6 ~ g6 g5 ~ g5 g6 ~ g6 g5 ~ g5 g6 ~", F: "~@7 [f5,a5,c6,f6] ~@8", G: "[~@15 g2@9 ~@8]/2",
})).s("gm_epiano1").gain(0.32).pan(0.7)

// bass · synth bass 1 · "SYN BASS 1"
const bass = note(`<
  ~@12 A B C D E F G H I J K L M N O P O N O Q A B C B A B C R S T U V I W G X I W K Y O N O P O N O Q O N O P O N O Q Z
  AA AB AC AD AE AF AG AH AI U AJ AK@3 AL AM AN AO AP AQ AR AQ AS O N O P O N O Q ~@12 O N O P O N O P O N O P O N O P O
  N O P O N AT@2 ~@6
>`.pickRestart({
  A: "f2@2 ~@5 c2@3 c3 ~ c2@3 ~", B: "a#2@2 ~@5 c2@3 c3 ~ c2@3 ~", C: "a#2@2 ~@5 f2@3 f3 ~ f2@3 ~",
  D: "[c2,c3]@2 ~@5 g2@3 [g1,g3]@2 g2@3 ~", E: "g2@3 ~ g2@2 ~ g2 d2 ~ g2 ~@5",
  F: "[a1,a2]@3 ~ a2@2 ~ a2!2 [a1,a2] a2 ~ a2@4", G: "g2@2 ~@2 g2@2 ~ g2 d2 ~ g2@3 ~@3",
  H: "[e1,e2]@3 ~ [f1,f2]@10 ~@2", I: "g2@2 ~@2 g2@2 ~ g2 d2 ~ g2 ~@5",
  J: "[a1,a2]@2 ~@2 a2@2 ~ a2!2 [a1,a2] a2 ~ a2@3 ~", K: "g2@2 ~@2 g2@2 ~ g2 d2 ~ g2@2 d2 ~ g2 ~",
  L: "[e1,e2]@3 ~ [a1,a2]@10 ~@2", M: "[f1,f2]@3 ~@4 g2 c2 ~ c2 ~@5", N: "g2@3 ~@4 a2!2 ~ a2 ~ e2@2 ~@2",
  O: "f2@3 ~@4 g2 c2 ~ c2 ~@5", P: "g2@3 ~@4 g2 a2 g2 a2 ~ e2 ~ g2 ~", Q: "a2@5 ~ g2@9 ~",
  R: "c3@2 ~@5 g2@3 g2 ~ g2@3 ~", S: "a2@12 ~@2 e2 ~", T: "[a1,a2]@12 ~ e2 g2 ~", U: "a2@13 e2 g2 ~",
  V: "a2 ~ [a1,a2]@14", W: "a2@2 ~@2 a2@2 ~ a2 ~ a2!2 ~ a2@3 ~", X: "e2@3 ~ f2@10 ~@2", Y: "e2@3 ~ a2@10 ~@2",
  Z: "~@3 f3 ~ f2 g2 g3 a2@4 ~@4", AA: "a2@2 ~ g2 ~@2 f2@4 f2@2 ~@4", AB: "~@4 g2@2 ~ a2@4 ~@5",
  AC: "a2@2 ~ g2 ~@2 f2@4 ~@6", AD: "~@2 f2 ~ g2 ~ a2@5 ~@5", AE: "g2 ~ g2@2 ~@2 f2@4 f3@4 ~@2", AF: "~@6 a2@5 ~@5",
  AG: "g2 ~ g2@2 ~@2 f2@2 ~ f3 f2 ~ f3 ~ f2 ~", AH: "a2@7 e2", AI: "a1@13 e2 g2 ~", AJ: "a2 ~ a1@14",
  AK: "g2@2 ~@2 g2@2 ~ g2 d2 ~ g2@2 ~@4", AL: "f2@2 ~@2 f2@2 ~ f2 c2 ~ c2@2 f2@3 ~", AM: "f2@6 ~ f2 a2 ~ a2@2 e2@3 ~",
  AN: "a#2@3 ~ a#2@2 ~ c2 f2 ~ f2@2 ~@4", AO: "f2@3 ~ f2@2 ~ e2 a2 ~ a2@3 ~@3", AP: "c2@3 ~ c2 ~@2 c2 ~ d2!2 ~ d2@3 ~",
  AQ: "[g2,g3]@11 ~ [d2,d3]@3 ~", AR: "[g1,g2]@15 ~", AS: "g2@15 ~, g1@11 ~@5",
  AT: "[f2@3 ~@4 g2 c2 ~ c2 ~@4 g2@8 ~@2 g2!2 ~ g2 ~ g2 a2, ~@3 [g1,g3]]/2", // G
})).s("gm_synth_bass_1").gain(0.48).pan(0)

// bass · synth bass 1 · "SYN BASS 1" · soft notes
const bass_soft = note("<~@68 A B C D E F G H ~@66>".pickRestart({
  A: "~@3 f2 ~ f1 g1 g2 ~@8", B: "a1@2 ~ g1 ~@2 f1@4 f1@2 ~@4", C: "~@4 g1@2 ~ a1@4 ~@5", D: "a1@2 ~ g1 ~@2 f1@4 ~@6",
  E: "~@2 f1 ~ g1 ~@11", F: "g1 ~ g1@2 ~@2 f1@4 f2@4 ~@2", G: "~@6 a1@5 ~@5",
  H: "g1 ~ g1@2 ~@2 f1@2 ~ f2 f1 ~ f2 ~ f1 ~",
})).s("gm_synth_bass_1").gain(0.32).pan(0)

// other · trumpet
const trumpet = note(`<
  ~@21 A@2 ~ B C B A@2 C D E ~@5 F@2 G H I H I ~@5 A@2 ~ B C B A@2 C D E J C J A@2 C D K ~@4 L@4 M I H I ~@12 J C J A@2
  C D N ~@2 O P ~@8 J C J Q@2 C J Q@2 C J Q@2 C J Q@2 C J Q@2 C R@2 ~@6
>`.pickRestart({
  A: "[~@9 [g3,g4,g5] [a3,a4,a5] ~ [c4,c5,c6] ~ [c4,c5,c6] [c4,c5,c6]@2 [d4,d5,d6] ~@14]/2", // G A C D
  B: "~@6 [a3,a4,a5] [c4,c5,c6] ~@8", C: "~@4 [d4,d5,d6]!2 ~ [d4,d5,d6] ~ [c4,c5,c6]!2 ~@5",
  D: "[c4,f4,a4,c5,f5,a5]@7 ~ [c4,e4,g4,c5,e5,g5]@7 ~", // F C
  E: "[c4,e4,a4,c5,e5,a5]@3 ~ [c5,c6]@2 [g4,b4,d5,b5,d6]@9 ~, ~@4 [e4,e5] ~@11", F: "[~@5 d5 c5@10]/2", G: "g4",
  H: "~@8 [b3,d4,g4,b4,d5,g5]@2 ~ [c4,e4,a4,c5,e5,a5] ~@2 [b3,d4,g4,b4,d5,g5]@2", I: "[c4,e4,a4,c5,e5,a5] ~@15",
  J: "~@6 [a3,a4] [c4,c5,c6] ~@8", K: "[c4,e4,a4,c5,e5,a5]@3 ~ [c5,c6]@2 [g4,b4,d5,g5,b5,d6]@9 ~, ~@4 [e4,e5] ~@11",
  L: "[a3,a5]/4", M: "a4 ~@7 [b3,d4,g4,b4,d5,g5]@2 ~ [c4,e4,a4,c5,e5,a5] ~@2 [b3,d4,g4,b4,d5,g5]@2",
  N: "[c4,a4,c5,a5]@3 ~ [c5,c6]@2 [d5,d6]@10, ~@4 [e4,e5] ~ [g4,g5]@7 ~@3", // F C D E G
  O: "~@2 [f5,f6] ~@3 f5!2 [f5,f6] f5 e5 ~@3 e5!2", P: "e5!2 d5!2 ~ d5@2 d5@2 e5@2 e5@2 e5 d5 ~",
  Q: "[~@9 [g3,g4,g5] [a3,a4,a5] ~ [c4,c5,c6] ~ [c4,c5,c6] [c4,c5,c6]@2 [d4,d5,d6] ~@4 [a3,a4] [c4,c5,c6] ~@8]/2", // G A C D A C
  R: "[~@6 [a3,a4] [c4,c5,c6] ~@17 [d4,b4,d5,g5,b5,g6]!2 ~ [d4,b4,d5,g5,b5,g6] ~ [d4,b4,d5,g5,b5,g6] [e4,c5,e5,a5,c6,a6], ~@15 [g1,g2,g3]@15 ~@2]/2", // A C G Am G
})).s("gm_trumpet").gain(0.48).pan(0.7)

// other · trumpet · soft notes
const trumpet_soft = note(`<
  ~@31 A ~@5 B@2 C ~@19 A D ~ D ~@13 E ~@15 D ~ D ~@7 F G ~@8 D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~@7
>`.pickRestart({
  A: "~@6 g5@9 ~", B: "[~@5 d6 c6@10]/2", C: "g5", D: "~@6 a5 ~@9", E: "a5 ~@15", F: "~@6 f6!2 ~ f6 e6 ~@3 e6!2",
  G: "e6!2 d6!2 ~ d6@2 d6@2 e6@2 e6@2 e6 d6 ~",
})).s("gm_trumpet").gain(0.24).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~@8 A B@3 C D C@2 A E A F G H G I A@3 B A@3 J A B@3 C D C@2 A@3 B A H A K G H L I A@3 B A@3 J A@3 B A@3 J G A@2 B A@3
  J A@3 B M N A N G E G O ~@4 A@3 B A@3 G A N A@3 P A@3 P A P A@3 B A@3 B A@3 B A@3 J A@3 B A@3 Q ~@6
>`.pickRestart({
  A: "x ~@6 x!2 ~ x ~@5", B: "x ~@6 x!2 ~ x ~@2 x ~@2", C: "x ~@6 x!2 ~ x ~ x ~@3", D: "x ~@6 x!2 ~ x ~ x!2 ~@2",
  E: "x ~@6 x ~ x!2 ~@5", F: "x ~@6 x!2 ~ x ~ x ~ x!2", G: "x ~@6 x!2 ~ x ~@3 x ~", H: "x ~@6 x ~ x!2 ~ x ~@3",
  I: "x ~@3 x ~@3 x ~ x ~@2 x ~@2", J: "x!8", K: "x ~@3 x ~@2 x!2 ~ x ~@2 x ~ x", L: "x ~@6 x!2 ~ x ~ x ~ x ~",
  M: "x ~@6 x!2 ~ x ~@4 x", N: "x ~@6 x ~ x ~ x ~@2 x ~", O: "x ~@6 x ~ x ~ x ~@4", P: "x ~@6 x ~ x ~ x ~@2 x!2",
  Q: "x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x",
})).gain(0.64)

// drums · rim
const rim = s("rim").struct(`<
  A B C D C D C D C D C D C D C E ~@16 C D C D C D C D ~@48 F@3 ~@13 C D C D C D C E C D C D C D C E C D C D C D C E C D
  C D C D C G ~@6
>`.pickRestart({
  A: "~@2 x ~ x ~@3 x ~ x ~@2 x ~@2", B: "x ~ x ~ x ~ x ~ x ~ x ~@2 x ~@2", C: "~@3 x!2 ~@3 x ~ x ~@2 x ~@2",
  D: "x!3 ~ x ~@2 x!2 ~ x ~@2 x ~ x", E: "x!3 ~ x ~@2 x!2 ~ x ~@5", F: "x!4", G: "x",
})).gain(0.48)

// drums · rim · soft notes
const rim_soft = s("rim").struct(`<
  A B C D C D C D C D C D C D C E ~@16 C D C D C D C D ~@64 C D C D C D C E C D C D C D C E C D C D C D C E C D C D C D
  C ~@7
>`.pickRestart({
  A: "~@3 x ~ x ~ x ~@6 x!2", B: "~ x ~ x ~@3 x ~@6 x!2", C: "~@2 x ~@2 x ~ x ~@6 x!2", D: "~@3 x ~@2 x ~@7 x ~",
  E: "~@3 x ~@2 x ~@9",
})).gain(0.24)

// drums · snare
const snare = s("sd").struct(`<
  ~@15 A@8 ~ B@7 C D@7 A ~@4 A@7 ~ B@7 ~ B@7 E ~@7 F ~@4 A@4 B@3 G ~@3 H B@7 D B@11 I B@7 J B@7 E B@7 K ~@6
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@3 x!2 ~@11", D: "~ x ~@2", E: "~@4 x ~@5 x ~ x ~ x!2", F: "~@12 x!4",
  G: "~@4 x ~@7 x ~ x!2", H: "~@13 x ~@2", I: "~@4 x ~@7 x!4", J: "~@4 x ~@3 x ~ x ~@2 x ~ x",
  K: "~@5 x!3 ~ x!2 ~ x ~ x!2",
})).gain(0.72)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@15 A ~@75 B ~@19 C ~@7 D ~@15 E ~@6>".pickRestart({
  A: "~@14 x!2", B: "~@6 x!5 ~ x ~ x!2", C: "~@7 x!5 ~@4", D: "~@7 x ~ x ~@2 x ~ x ~", E: "x!5 ~@11",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@2 A B A B A B A B A B A B A C D@7 ~ D@8 A B A B A B A C E ~ E ~ D@7 F D@16 G@3 H G@3 ~ E ~ E ~ D@7 I ~@4 J D@2 K D@7
  L D@7 M N D@2 K D@7 K D@7 K D@3 O ~@6
>`.pickRestart({
  A: "x!5 ~ x!2 ~ x!7", B: "x!5 ~ x!3 ~ x ~ x ~ x ~", C: "x!5 ~ x!3 ~ x ~@2 x!3", D: "x!16", E: "~@7 x",
  F: "~ x!3 ~ x!11", G: "~ x!3 ~ x!3 ~ x!3 ~ x!3", H: "~ x!3 ~ x!3 ~ x ~ x ~ x!3", I: "x!12 ~@4", J: "~@4 x!12",
  K: "x!8 ~ x ~ x!5", L: "x!8 ~@8", M: "x!7 ~@9", N: "~@3 x!13", O: "x ~@14 x",
})).gain(0.24)

// drums · low tom
const low_tom = s("lt").struct("<~@23 A ~@19 B ~@7 C ~@7 D ~@31 E ~@19 F ~@3 F ~@7 F ~@7 F ~@10>".pickRestart({
  A: "~@6 x!2 ~@6 x!2", B: "~@7 x", C: "~@6 x!5 ~ x ~@3", D: "~@6 x!2 ~@4 x ~@3", E: "~@12 x!4", F: "~@15 x",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@4 A B A B C D C D C D C E ~@7 F ~@7 G ~@11 F ~@7 H ~@7 I ~@15 J ~@15 K ~@7 H ~@3 L ~@7 M ~@3 M ~@7 M ~@7 M ~@3 N ~@6
>`.pickRestart({
  A: "~@11 x!2 ~@3", B: "~@7 x ~@4 x!2 ~@2", C: "~@11 x ~@4", D: "~@3 x", E: "~@4 x!3 ~", F: "~@12 x!2 ~@2",
  G: "~@12 x!3 ~", H: "~@14 x!2", I: "~@8 x!3 ~@3 x!2", J: "~@6 x!2 ~@2 x ~@5", K: "~@8 x!8", L: "~@11 x!5", M: "~@7 x",
  N: "~@11 x!4 ~",
})).gain(0.48)

// drums · mid tom · soft notes
// … 89 more lines

More by Steve Winwood