Strudelify
The Heat Is On cover art

The Heat Is On

The Heat Is On

Glenn Frey

KeyD majorTempo150 bpm
0:00/0:00
// The Heat Is On — Glenn Frey
// 150 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 145 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(150/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 · percussive organ · "Percusive Organ"
const percussive_organ = note(`<
  ~ A@7 B ~@5 C@4 D E F G H I@2 ~ J ~@2 K L@2 M N O P@4 Q@6 R@3 S T@8 U@3 K L@2 M V O P@4 W@6 X@2 ~@5 Y Z AA AB AC AD@3
  AE D E F G H I@2 ~ AF ~@2 K AG@2 M V O P@4 AH@6 AI@2 AJ@6 X@2 AK@6 AL@2 ~ AM@6 ~
>`.pickRestart({
  A: "[[c7,d7,f#7,a7]@27 [a6,b6] [d7,g7,b7] ~ [d7,f#7,a7]@61 [g6,a6,b6] [c7,d7]@2 [f#7,a7]@17 ~, ~@28 c7@2 ~@62 [g7,b7] ~@19]/7", // D7 Asus2 G D G Csus2 F#m G
  B: "~@4 e5 ~@11",
  C: "[~@8 [a6,c7]@8 b6@34 ~@2 [d6,g#6,c7] ~ d6 ~ g#6 ~ d6 ~@5, ~@8 d7@42 ~@7 a6@2 ~@5, ~@8 g#6 ~@43 [a6,d7]@2 ~@2 [d6,d7]@2 ~@6]/4", // Am Dm7b5 D5 D
  D: "~@2 [d6,g#6,a6,c7,c#7] ~ d6 ~@3 [d6,g#6] ~ d6 ~ [d6,g6,b6]@4, ~ d7 ~@2 c7 ~@3", // Ddim G
  E: "~@2 d6 ~ [d6,g#6,d7] a6 ~@2 g#6 a6 d6 ~@5, ~@4 [d6,d7] ~@3", // Ddim D
  F: "~@2 [d6,d7]@2 d6 ~@3 g#6 a6 d6 ~ [d6,g6,b6]@4, ~@2 [g#6,a6] ~@5 [d6,c7]@2 ~@6", // D G Amaj7 D7
  G: "~@2 d6 ~ [d6,g#6,c7] ~ d6 ~ [g#6,c7,c#7] a6 d6 ~@5, ~@2 d7 ~ [d6,d7] ~@3", // Dm7b5 C#maj7 D
  H: "~@2 [d6,a6,d7]@2 d6 ~@3 [d6,a6,c7]@2 d6 ~ [d6,g6,b6]@3 ~, ~@2 g#6 ~@5 g#6 ~@7", I: "[[d6,g6,b6,d7], c7 ~@31]/2",
  J: "~@12 [d6,a6,c7] ~ [d6,a6,c7,d7]@2, ~@6 d7 ~", K: "[a6,g7]@5 ~ [a6,f#7]@9 ~, d7@15 ~",
  L: "[[a6,d7,e7]@6 [a6,d7,f#7]@9 [e7,f7] [g6,b6]@6 [g6,c7,e7]@9 ~, ~@15 d7@6 ~@11]/2", // Asus4 D Fmaj7 G C
  M: "[e6,g6,c7]@3 [f6,a6,c7]@3 [g6,b6,d7]@2, ~@12 e7 ~@3", N: "[a6,d7,g7]@6 [a6,d7,f#7]@9 ~, [e7,f7] ~@15",
  O: "[a6,d7,e7]@5 ~ [a6,d7,f#7]@9 ~", // Asus4 D
  P: "[[e6,g6,a6,c7]@13 ~ [e6,g6,a6,c7,e7]@16 [e6,c7,e7,g7]@21 [a6,b6,d7] [b5,c6,d6,e6,f6,g6] [d5,e5,f5,g5,a5] ~@10, ~@15 [g6,a6]@10 ~@7]/4", // Am7 C Bm7 Cmaj7 Dm Gsus2
  Q: "[g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@10 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@11 ~ g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@10 ~@2, [d6,c7,d7]@95 ~]/6", // D7
  R: "[[d6,g6,b6,d7]@11 ~@5]/3", S: "[g#6,b6] a6@15, [d6,c7,d7]",
  T: "[~@9 [b4,d5] [e5,f5,g5,a5,b5] [c6,d6,e6,f6,g6] [c7,a7,a#7,b7] ~@2 [c7,d7,f#7]@60 [f6,g6,a6,b6] b7@2 [f#7,a7]@50, ~@12 f#7@2 a7@61 ~ d7@52]/8", // Bm Em C D7 G7 F#m
  U: "[~@11 [g6,a6,b6] [c7,d7,b7]@2 [d7,f#7,a7]@29 e7 ~ [e6,g6] d6 a5, ~@12 g7 ~@35]/3", // G D Em
  V: "[a6,d7,g7]@6 [a6,f#7]@9 ~, [e7,f7] ~@15", // Dsus4 D Fmaj7
  W: "[~@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@11 ~ g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@10 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@12, [c7,d7,f#7,a7]]/6", // D7
  X: "[b6,d7,g7,b7]/2", Y: "~@4 g#6 a6 d6 ~ [a6,d7]@2 ~@6, ~@2 [d6,d7] ~ d6@2 ~@2, ~@8 g#6 ~@7",
  Z: "~@4 [d6,g#6,a6,c7,d7] ~ d6 ~ [d6,a6,c7]@4 [g6,b6]@4, ~@8 g#6 ~@7", // D7 G
  AA: "d6 ~ d6 ~ [d6,d7]@2 d6 ~ [g#6,c7] a6 d6 ~@5, ~@4 [g#6,a6] ~@3 [d6,d7]@2 ~@6", // D G# Amaj7 D
  AB: "~@2 [a6,d7]@2 d6 ~@3 [d6,g#6] [a6,c#7] d6 ~ [d6,g6,b6]@4, ~@2 [d6,g#6] ~@5 c7@2 ~@6", // D5 Ddim A G Ddim
  AC: "d6 ~ d6 ~ [d6,g#6,a6,d7] ~@3 [g#6,c7,c#7] a6 d6 ~@5, ~@4 [d6,d7] ~@3", // D C#maj7 D
  AD: "[~@2 [d6,g#6,a6,c#7,d7] ~ d6 ~ g#6 ~ g#6 ~ d6 ~ d6@3 ~ [d6,d7]@32, ~@8 [d6,c7]@2 ~@6 c7 ~@31, ~@9 a6@2 ~ [g6,b6]@36]/3", // Dmaj7 D D7 G
  AE: "~@4 [d6,g#6,c7] ~ d6 ~ g#6 ~ d6 ~@5, ~@2 [a6,d7] ~ [d6,d7] ~@3, ~@9 a6@2 ~@5", // Dm7b5 D5 D
  AF: "~@10 [a5,b5,c6,d6] [e6,f6,g6,a6] [b6,d7] ~ [c7,d7]@2, ~@3 f#7", // D7 Fmaj7 Bm Csus2
  AG: "[[a6,d7,e7]@6 [a6,d7,f#7]@9 [e7,f7] b6@6 [g6,c7,e7]@9 ~, ~@15 d7@6 ~@11]/2", // Asus4 D Fmaj7 C
  AH: "[g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@12 g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@11 ~ g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@12, [c7,d7,f#7,a7]]/6", // D7
  AI: "[[b6,d7,g7,b7], e7 ~@31]/2", // G
  AJ: "[g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@10 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@10 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@11 ~, [c7,d7,f#7,a7]]/6", // D7
  AK: "[g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@11 ~ g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@10 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@2 ~@2 g#6@2 a6@3 ~ g#6@2 a6@12, [c7,d7,f#7,a7]]/6", // D7
  AL: "[b6,g7,b7]/2", // Em
  AM: "[[f#7,a7]@27 [g6,a6,b6] b7@2 [f#7,a7]@61 [f6,g6,a6] [c7,d7]@2 [c7,d7,f#7,a7]@2, [c7,d7]@15 ~, ~@28 g7 ~@63 [g7,b7] ~ b7 ~]/6", // F#m G F#m F Csus2 D7 Csus2 G
})).s("gm_percussive_organ").gain(0.18).pan(0.6)

// chords · percussive organ · "Percusive Organ" · soft notes
const percussive_organ_soft = note(`<
  A ~ B@6 C ~@5 D@4 E F G H I ~@15 J ~@10 K ~@3 L@7 ~@4 M ~@4 J N ~@12 O P ~@2 Q R ~@3 E F G H I ~@3 S ~@4 T ~ M ~@4 J
  ~@22 U@2 ~@2 V ~@3 W ~
>`.pickRestart({
  A: "~@12 [g4,a4,b4,c5,d5] [e5,f5,g5,a5,b5] [c6,d6,e6] [f6,g6,a6,b6]", // G Em C G7
  B: "[~@11 [f6,g6] c8 ~ c7@61 ~@3 [c7,d7]@17 [e7,f7,g7]]/6", C: "[c7,d7] [a6,b6] [e6,f6,g6] d6 [f5,g5,a5,b5] d5 ~@10",
  D: "[~@16 g6@33 ~@15, ~@4 d6@21 ~@7]/4", E: "~@9 a6@2 ~@5", F: "d6 ~@5 d6 ~@9", G: "~@2 c#7 ~@13", H: "d6 ~@15",
  I: "~@6 g#6 ~@9", J: "~@2 f7 ~@2 c5 ~@10", K: "~@9 a4 ~@2 [a6,d7] ~@3",
  L: "[~@12 g7 ~ b7 ~@60 f6 ~@2 c7@28 g7 [d7,f7] [a6,b6,c7] f6 c6 [g5,b5], ~@12 c7@63 ~@37]/7", M: "~@6 d7@9 ~",
  N: "g#6 ~@7", O: "~@8 c7 ~@7", P: "~@3 d6", Q: "~@6 d6 ~@9", R: "~@8 b6 ~@7",
  S: "~@8 a4 [b4,d5,e5,f5] g5 ~ a7@4, ~@12 c7 ~@3", T: "g6@3 ~@5", U: "d7/2", V: "~@11 f6 ~@4", W: "~@11 e6 ~@4",
})).s("gm_percussive_organ").gain(0.09).pan(0.6)

// chords · electric guitar muted · "Muted Electric"
const electric_guitar_muted = note(`<
  ~ A@14 B@2 A@6 B@2 A@4 C@2 D E F@2 G@3 H A@6 B@2 ~ A@12 C@2 D E F@2 G@3 H A@6 B@2 ~ A@10 B@2 A@6 B@2 A@4 C@2 D E F@2
  G@3 H A@6 B@2 A@6 B@2 A@6 B@2 ~ A@6 ~
>`.pickRestart({
  A: "~ [d3,a3,d4] ~@2 [d3,a3,d4] ~@3", // D5
  B: "[~@2 [g2,g3,d4,g4]@2 ~@4 [g2,d3,g3,d4,g4]@2 ~@4 [e4,g4,c5,e5]@4 [d4,g4,b4]@2 [d4,g4,b4] ~@3 [g#3,a3,c#4] [a#3,b3] d4@2 d4@3 ~, ~@26 g4@5 ~, ~@28 b4 ~@3]/2", // G5 C G Amaj7 Bmaj7
  C: "[[a3,d4]@29 ~@3, d3@31 ~]/2", D: "b2@6 c3@9 ~", E: "e2@6 f2@5 ~ g2@2 ~@2",
  F: "[[d3,a3]@3 [d3,a3]@5 [d3,a3]@3 [d3,a3]@4 ~, [a2,d4]@31 ~]/2", // D5
  G: "[a2@2 ~@2 a3@2 ~@2 g3 ~ g3 ~@5 a2 ~@3 a3@2 ~@2 g3@2 g3@2 ~@4 a2 ~@3 a3@2 ~@2 g3@2 g3@2 a3@2 ~@2, ~@2 a2@10 a3@6 a2@6 ~@4 a3@6 a2@5 ~@9]/3",
  H: "~@2 a2 ~@13, [a2,c#3] ~@7, ~ e3@2 ~@13", // A
})).s("gm_electric_guitar_muted").gain(0.31).pan(0.3)

// bass · fretless bass
const bass = note(`<
  ~ A B A B A B A B A B A B A B C D A B A B A B C D A B A B E F G H F@2 I@3 J A B A B A B C D ~ A B A B A B A B A B A B
  E F G H F@2 I@3 J A B A B A B C D ~ A B A B A B A B A B C D A B A B A B C D A B A B E F G H F@2 I@3 J A B A B A B C D
  A B A B A B C D A B A B A B C D ~ A B A B A K@2
>`.pickRestart({
  A: "d1@2 d2@2 c2@2 b1@2 c2@2 d2 ~@3 a1 ~", B: "d2 ~ d2@2 ~@2 g1@2 a1 ~ a1@2 c2@2 d2@2", C: "g1 g2 f2 e2 f2 g2 ~ d2",
  D: "g2 ~ g2@2 ~@2 c2@2 d2 ~ d2@2 f2@2 g2@2", E: "~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~",
  F: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", G: "b1 ~ b1 ~ b1 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~",
  H: "e1 ~ e1 ~ e1 ~ f1 ~ f1 ~ f1@2 g1@3 ~", I: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1@2 g1@2", J: "a1 ~@7",
  K: "[d2 ~ d2@2 ~@2 g1@2 a1 ~ a1@2 c2@2 d2@4 ~@14]/2",
})).s("gm_fretless_bass").gain(0.42)

// other · overdriven guitar · "Overdrive Guitar"
const overdriven_guitar = note("<~@38 A ~@12 B C@2 D@2 E@2 F G ~@9 H ~@42 H ~@32>".pickRestart({
  A: "~@8 g5@7 ~, g5 a4 ~@2, ~ d5@2 b5@2 ~@3", B: "~@2 f#4@4 a4@2 c5@2 ~@2 c5 ~@3",
  C: "[d5@19 ~@3 d5@2 g5@2 d5@2 f5@2 f#5@2]/2", D: "[d5@7 ~@3 c5@2 a4@2 f4@7 ~ g4@2 c5@2 ~@2 c5@2 ~@2]/2",
  E: "[~@10 f5@10 ~@2 d5 ~ g5@2 d5@2 f5@2 f#5@2, d5@7 ~@9]/2", F: "d5@2 ~@2 [g4,b4] [f4,a4]@2 d4",
  G: "[g4,b4]@2 [f4,a4]@4 ~@2 [g4,b4] ~ [f4,a4]@5 ~, ~@3 d4@2 ~@3", H: "g5",
})).s("gm_overdriven_guitar").gain(0.4)

// other · overdriven guitar · "Overdrive Guitar" · soft notes · G#maj7
const overdriven_guitar_soft = note("<~@58 [~@4 c5 a#4 [g4,g#4] ~@9] ~@86>").s("gm_overdriven_guitar").gain(0.15)

// other · tenor sax
const tenor_sax = note(`<
  ~ A B C D E B F ~@17 G H F I@3 ~@17 A B J K A L F M A L N O@3 ~@37 P Q R S@3 ~@33 A H T U E B ~
>`.pickRestart({
  A: "~@2 c3@2 e3@2 g3@2 f#3@2 d3 ~@3 d3@2", B: "e3 c3 g3 f#3 ~@4", C: "~@2 c3@2 e3 ~ g3@2 f#3@2 d3@2 ~@4",
  D: "~@2 a2 ~ b2@2 c3@2 ~@2 f#2 ~ g2@2 a2 ~", E: "~ c3 e3 g3 f#3 d3 ~ d3", F: "~ c3 e3 g3 f#3 d3 ~@2",
  G: "~@2 c3 ~ e3@2 g3@2 f#3@2 d3@2 ~@2 d3 ~", H: "e3@2 c3@2 g3@2 f#3 ~@9",
  I: "[~@2 a2@2 b2@2 c3@2 ~@2 f#2@2 g2@2 a2@33 ~]/3", J: "~@2 c3 ~ e3@2 g3@2 f#3@2 d3 ~@5",
  K: "~@2 a2@2 b2@2 c3 ~@3 f#2@2 g2@2 [g#2,a2] ~", L: "e3@2 c3 ~ g3@2 f#3@2 ~@8", M: "~ a2 b2 c3 ~ f#2 g2 a2",
  N: "~@2 c3@2 e3@2 g3@2 f#3@2 d3 ~@5", O: "[~ a2 b2 c3 ~ f#2 g2 a2@13 ~@4]/3",
  P: "~@2 c3 ~ e3 ~ g3 ~ f#3 ~ d3 ~@3 d3 ~", Q: "e3 ~ c3 ~ g3 ~ f#3 ~@9", R: "~@2 c3 ~ e3 ~ g3 ~ f#3 ~ d3 ~@5",
  S: "[~@2 a2 ~ b2 ~ c3 ~@3 f#2 ~ g2 ~ a2@25 ~@9, ~@14 g#2 ~@33]/3", T: "~@2 c3@2 e3@2 g3 ~ f#3@2 d3 ~@5",
  U: "~@2 a2 ~ b2@2 c3@2 ~@2 f#2 ~ g2@2 a2@2",
})).s("gm_tenor_sax").gain(0.4).pan(0.7)

// other · lead 1 square · "Lead (Square Lead)"
const lead_1_square = note(`<
  ~@8 A B C ~ A D E F G H I ~ J K L@2 M ~@4 N O P Q R S T U V W K X@2 W K Y ~ Z ~ B ~@11 N O P Q R S T U V W K X@2 W K Y
  ~ Z ~ B ~@2 Z B AA@2 AB B AC@2 AD ~ AE AF AG D AH AI AJ ~@4 N O P Q R S T U V W K X@2 W K Y ~ W K X@2 W K Y ~ W K X@2
  W K Y ~ Z ~ D ~@6
>`.pickRestart({
  A: "~@6 d4 ~ g4@4 f4@4", B: "d4 ~@3", C: "~@8 c4@2 d4 ~ d4 ~ d4@2", D: "d4@3 ~@13", E: "~@6 a3@2 d4@3 ~ d4 ~ d4@2",
  F: "b3 ~@3", G: "~@4 d4 ~ d4@2 g4@2 ~@2 f4@2 ~@2", H: "f4@2 d4@3 ~@11", I: "~@8 d4@3 ~ d4 ~ d4@2",
  J: "~@6 d4 ~ g4@2 ~@2 a4@2 ~@2", K: "f4 f#4@4 ~@11", L: "[~@2 a3 ~@3 a3@2 d4@3 ~ d4 ~ d4@6 ~@12]/2",
  M: "~@2 c4 d4 f4 d4 f4 d4", N: "g4@4 a4 ~ f#4@2 ~@2 d4 c4@3 ~@2", O: "g4@4 a4@2 f#4@2 ~@2 d4 c4@2 ~@3",
  P: "c4 ~ c4 ~ c4 ~ c4 ~ c4@2 ~@2 c4 ~ c4@2", Q: "~@2 c4 ~ c4 ~ d4 ~ f4 ~ e4 ~ d4@2 ~@2",
  R: "g4@4 a4 ~ f#4@2 ~@2 d4 c4@4 ~", S: "g4@4 a4 ~ f#4 ~@3 d4 c4 ~@2 c4@2",
  T: "~@2 c4 ~ c4 ~ c4 ~ c4 ~ c4 ~@3 [c4,e4]@2", // C
  U: "~@2 [c4,e4] ~ [c4,e4] ~ [c4,e4] ~ [c4,e4] ~ [c4,e4]@2 ~@2 [c4,e4,g4]@2", // C
  V: "~@2 [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4]@3 ~ [c4,e4,g4]@3 ~", W: "~@3 d4 g4@2 a4@2",
  X: "[~@6 d4@2 g4@4 a4 ~ f4 f#4@2 ~ d4@6 ~@8]/2", Y: "~@6 d4@2 g4@3 ~ g4 ~ g4@2", Z: "~@3 d4 g4@2 f4@2",
  AA: "[~@2 a3@2 ~@2 a3@2 c4@2 d4 ~ d4 ~ d4@5 ~@13]/2", AB: "~@6 d4@2 g4@4 f4@2 d4 ~",
  AC: "[~@4 a3 ~ a3@2 c4@2 d4 ~ d4 ~ d4@5 ~@13]/2", AD: "~@4 c4@2 d4 ~ f4@2 d4 ~ f4@2 d4@2", AE: "~@8 d4@3 ~ d4@2 c4@2",
  AF: "d4@2 f4@5 ~@9", AG: "~@2 d4 ~ d4 ~ d4@2 g4@4 f4@4", AH: "~@4 d4 ~ d4 ~ f4@2 ~@2 g4@3 ~", AI: "g4 ~@3",
  AJ: "~@4 a3 ~ a3@2 b3@2 d4 ~ f4@2 d4@2",
})).s("gm_lead_1_square").gain(0.48)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@9 B A B A B A B A B A B A B A B A@6 C@2 A C B@2 D ~ E@8 F A@16 G@2 A@3 H E I B@6 F A@5 B A B A B A B A B A B A B A
  B A@6 C@2 G@2 B@2 J H B@24 F A@6 ~
>`.pickRestart({
  A: "x!2", B: "x ~@3 x!2 ~@2", C: "x ~@2 x ~ x ~@2", D: "x ~@4 x ~ x", E: "x ~@2 x!2 ~@3", F: "x!4", G: "x ~@2 x ~@4",
  H: "x", I: "x ~@2 x!3 ~@2", J: "x ~@3 x!4",
})).gain(0.42)

// drums · snare
const snare = s("sd").struct(`<
  ~ A B A@3 B A@19 B A C A@3 B A@5 D A@8 ~ A B A@3 B A@3 B A C A@3 C A@5 D A@8 E A@21 B A C A@3 B A@4 C D A@24 ~ A B A@3
  B ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@3 x!2", C: "~@2 x ~@2 x!3", D: "x ~@2 x", E: "~@3 x",
})).gain(0.42)

// drums · clap
const clap = s("cp").struct("<~@39 A@8 ~@23 A@8 ~ B@3 C ~@30 A@24 ~@8>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2",
})).gain(0.34)

// drums · hihat
const hihat = s("hh").struct(`<
  A B@3 C B@3 C B C B C B C B C B C B C B C B C B@9 C B@3 ~ B C B C B C B C B@4 C B@3 C B@3 C B@5 C B C A ~ B C B C B C
  B C B@2 C B C B C B C B C B C B C B C B C B C B@9 C B@3 ~ B@3 C B C B C B C B C B C B C B C B C B C B C B@4 C B@2 ~
>`.pickRestart({
  A: "x!4", B: "x!8", C: "x!7 ~",
})).gain(0.38)

// drums · low tom
const low_tom = s("lt").struct("<~@47 [x!4] ~@30 [x!4] ~@58 [x!4] ~@7>").gain(0.38)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@4 A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~@5 A ~ A ~ A ~ A ~@4 A ~@3 A ~@3 A ~@5 A ~ A B ~@2 A ~ A ~ A ~ A
  ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@4 A ~@3
>`.pickRestart({
  A: "~@7 x", B: "~ x ~ x ~ x ~@2",
})).gain(0.38)

// drums · crash
const crash = s("cr").struct(`<
  ~ A B ~@3 B ~@19 B ~@2 A@2 ~@2 A C ~@4 A ~@8 A B ~@3 B ~@3 B ~@2 A@2 ~@2 C@2 ~@4 A ~@8 A ~@3 A ~@5 A ~ A ~@5 A ~@2 B
  ~@2 A@2 ~@2 C@2 ~@4 A ~@24 A B ~@3 B ~
>`.pickRestart({
  A: "x", B: "~@6 x!2", C: "x ~@2 x ~@4",
})).gain(0.38)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~ A@8 ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@14 A@8 ~ A@12 ~@10 A@8 ~@6 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@14 A@24 ~ A@5 C ~
>`.pickRestart({
  A: "x!8", B: "~@3 x", C: "x!7 ~",
})).gain(0.34)

stack(
  percussive_organ, percussive_organ_soft, electric_guitar_muted, bass, overdriven_guitar, overdriven_guitar_soft,
  tenor_sax, lead_1_square, kick, snare, clap, hihat, low_tom, open_hat, crash, tambourine
)

More by Glenn Frey