Strudelify

Hungry Like a Wolf

Duran Duran

KeyE minorTempo120 bpm
0:00/0:00
// Hungry Like a Wolf — Duran Duran
// 120 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 98 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 · acoustic bass · "Bass"
const bass = note(`<
  A B C D A B A B E F A B G H A B I J C K L M N O P Q R S L Q T U V W X Y Z AA A B AB AC AD AE AB AC AB AC A B Y AF AG A
  L Q AH AI AJ AK X AL P AM AN AO AP M T AL G H Z AA A B K@2 P W T U AP W AQ S V AM AR AS AT Q T AU C@2 AV AW
>`.pickRestart({
  A: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2@2", B: "e2 ~ e2 ~ e2 ~ e2@2 e2 ~ e2@2 e2 ~ e2 ~",
  C: "e2 ~ e2 ~ e2 ~ e2@2 e2 ~ e2 ~ e2 ~ e2 e1", D: "e2 ~ e2 ~ e2 ~ e2 e1 e2 ~ e2 ~ e2 ~ d#2 ~",
  E: "d2 ~ d2@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 d1", F: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d#2 ~",
  G: "e2 ~ e2@2 e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 e1", H: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ d#2 ~",
  I: "d2 ~ d2@2 d2@2 d2 d1 d2 ~ d2 ~ d2 ~ d2@2", J: "d2 ~ d2 ~ d2 ~ d2 d1 d2 ~ d2 d1 d2 ~ d2 ~",
  K: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 e1 e2 e1 e2!2", L: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 c1 c2 c1 c2!2",
  M: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2@2", N: "f2 ~ f2@2 f2@2 f2 f1 f2 ~ f2 ~ f2 ~ f2@2",
  O: "f2 ~ f2 ~ f2 ~ f2 f1 f2 ~ f2 f1 f2 ~ f2 ~", P: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2@2",
  Q: "g2 ~ g2 ~ g2 ~ g2@2 g2 ~ g2 ~ g2 ~ g2 ~", R: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2@2 c#2 ~",
  S: "d2 ~ d2 ~ d2 ~ d2@2 d2 ~ d2 ~ d2 ~ d2 ~", T: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2@2",
  U: "f2 ~ f2 ~ f2 ~ f2@2 f2 ~ f2@2 f2 ~ f2 ~", V: "c2 ~ c2 ~ c2 ~ c2@2 c2 ~ c2 ~ c2 ~ c2 c1",
  W: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 g1 g2 g1 g2!2", X: "f2 ~ f2 ~ f2 ~ f2@2 f2 ~ f2 ~ f2 ~ f2 ~",
  Y: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2@2", Z: "e2 ~ e2@2 e2 ~ e2@2 e2 ~ e2@2 e2 ~ e2@2",
  AA: "e2 ~ e2@2 e2 ~ e2@2 e2 ~ e2 ~ e2 ~ e2 ~", AB: "e2 ~ e2 ~ e2 ~ e2 e1 e2 ~ e2 ~ e2 ~ e2@2",
  AC: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", AD: "d2 ~ d2 ~ d2 ~ d2@2 d2 ~ d2 ~ d2 ~ d2 d1",
  AE: "d2 ~ d2 ~ d2 ~ d2 d1 d2 ~ d2 ~ d2 ~ d#2 ~", AF: "d2 ~ d2 ~ d2 ~ d2@2 d2 ~ d2@2 d2 ~ d2 ~",
  AG: "e2 ~ e2 ~ e2 ~ e2 e1 e2 ~ e2 ~ e2@2 d#2 ~", AH: "f2 ~ f2@2 f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 f1",
  AI: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ b1 ~", AJ: "c2 ~ c2 ~ c2 ~ c2@2 c2 ~ c2 ~ c2 ~ c2 ~",
  AK: "g2 ~ g2 ~ g2 ~ g2@2 g2 ~ g2 ~ g2 ~ g2 g1", AL: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 d1 d2 d1 d2!2",
  AM: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2@2 e2 ~", AN: "f2 ~ f2@2 f2 ~ f2@2 f2 ~ f2@2 f2 ~ f2@2",
  AO: "f2 ~ f2@2 f2 ~ f2@2 f2 ~ f2 ~ f2 ~ f2 ~", AP: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2@2 f#2 ~",
  AQ: "f2 ~ f2 ~ f2 ~ f2@2 f2 ~ f2 ~ f2 ~ f2 f1", AR: "f2 ~ f2 ~ f2 ~ f2 f1 f2 ~ f2 ~ f2 ~ f2@2",
  AS: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~", AT: "c2 ~ c2 ~ c2 ~ c2 c1 c2 ~ c2 ~ c2@2 f#2 ~",
  AU: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2@2 d#2 ~", AV: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2!2",
  AW: "e2 ~ b2@2 d3 ~ e3 ~@5 e2@4",
})).s("gm_acoustic_bass").gain(0.8).pan(0.8)

// chords · piano
const piano = note(`<
  ~@4 A B A B C D E@2 F@2 A B G@2 H I J K L@2 M N O P J K Q@2 R S T U V@2 W X A B G@2 A B A B F@2 Y@2 H I Z AA AB@2 Z N
  AC AD Z AA AE@2 M S AF AG AH@2 AI@4 AJ AK AL S AM@2 AL AA O U AL K AN@2 AL K AO U AP AQ AR AS
>`.pickRestart({
  A: "~@4 [e3,b3]@2 ~@2 e2@2 [e3,b3]@3 ~ [e3,b3]@2", B: "~@2 [e3,b3]@3 ~ e2@2 [e3,b3]@2 e2@2 b3 ~ b3 ~, ~@3 e3",
  C: "~@4 [d3,a3]@2 ~@2 d2@2 [d3,a3]@3 ~ [d3,a3]@2", D: "~@2 [d3,a3]@3 ~ d2@2 [d3,a3]@2 d2@2 a3 ~ a3 ~, ~@3 d3",
  E: "[~@4 [e3,b3]@2 ~@4 [e3,b3]@2 ~@2 b3@4 e3@2 ~@2 e3@2 ~@2 e3@2 b3@2 e3 ~, ~@14 e3@3 ~@3 b3@4 e4@5 ~@3]/2", // E5
  F: "[~@3 e2 [e3,b3]@2 ~@2 e2 ~ [e3,b3]@2 e2 ~@3 e2@2 ~@8 b3@2 e3@2 b3@2, ~@14 [e3,b3]@4 e4@4 e3@5 ~@3 e3 ~, ~@20 b3@4 e4@5 ~@3]/2", // E5
  G: "[~@2 [d3,a3,d4] ~@3 a2 ~ [d3,a3,d4]@4 a2@2 [d3,a3,d4]@4 a2 ~ d3@2 a2@2 a3@2 a2@2 d3@2 a3 ~, ~@24 d3 ~@7]/2", // D5
  H: "~@2 [e3,a#3,b3] ~@3 e2@2 [e3,b3]@6 ~@2", I: "[e3,b3]@10 e2@2 e3@2 b3 ~",
  J: "~@2 c4 ~ g3@2 c3@2 c4 ~@2 c4 ~@2 c4 g3, c2, ~@9 g3@2 ~ g3@2 ~@2, ~@10 c3@2 ~ c3@2 ~",
  K: "g2@2 [d3,g3] ~ [d3,g3]@2 g2 ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [d3,g3] ~, ~@4 g2 ~@9 g2@2", // G5
  L: "[f3 ~@6 c4@2 f3 c4 f3 ~ f3 c4 f3, c4 ~@3 f2@5 ~ f2@22, ~@6 f3@8 f3@3 ~@15, ~@6 c4@6 ~@10 d4 ~ f4@4 ~@4]/2",
  M: "~@2 [c3,g3] ~ [c3,g3]@2 c2@2 ~@5 g3!2 ~, c2@5 ~@3 [c3,g3]@4 c3@3 ~, ~@5 c2@2 ~", // C5
  N: "g2@2 [d3,g3] ~@3 g2@2 [d3,g3]@2 g2 ~ g2 ~ [g2,d3,g3]@2", // G5
  O: "g3 ~@6 c#4 ~@4 f3@2 f4@2, f3@4 f2@5 ~ f2@4 ~@2, ~@2 c4@4 f3@5 ~@3 c4 ~",
  P: "~@2 a3 d3@2 d2 ~ a3, d2@9 ~@3 d3@4, ~@2 d3@4 [a3,d4]@7 ~@3", // D5
  Q: "[~@2 [f3,c4] ~@5 [f3,c4]@4 ~@2 [f3,c4]@4 ~@4 [f3,c4]@3 f4 ~@5 c4, f2@5 ~ f2@5 ~ f2@5 ~ f2@14, ~@8 g3 ~@17 c4@2 f4@2 f3@2, ~@27 f3@2 c4@2 ~]/2", // F5
  R: "c2@2 [c3,g3,c4] ~@3 c2@2 [c3,g3,c4]@2 ~@2 c3 ~ [c3,g3,c4]@2, ~@5 c2@2 ~", // C5
  S: "~@2 g3 ~ d3@2 ~@2 g3 ~@2 g3 ~@2 g3 d3, g2@9 d3@2 ~ d3@2 ~@2, ~@10 g2@2 ~ g2@2 ~",
  T: "~@2 c4 f3@2 f2 ~ c4, f2@9 ~@3 f3@4, ~@2 f3@4 [c4,f4]@7 ~@3", // F5
  U: "~@2 d4 ~ a3@2 d3@2 d4 ~@2 d4 ~@2 d4 a3, d2, ~@9 a3@2 ~ a3@2 ~@2, ~@10 d3@2 ~ d3@2 ~",
  V: "[e3 ~@6 b3@2 e3 b3 e3 ~ e3 b3 e3, b3 ~@3 e2@5 ~ e2@22, ~@6 e3@8 e3@3 ~@15, ~@6 b3@6 ~@10 c#4 ~ f#4@4 ~@4]/2",
  W: "e2@2 [e3,a#3,b3] ~@3 e2@2 [e3,b3]@4 e2@2 [e3,b3]@2", X: "~@2 [e3,b3]@2 e2 ~ [e3,b3]@4 e2@2 e3@2 [e3,b3]@2",
  Y: "[~@4 [d3,a3]@2 ~@4 [d3,a3]@2 ~@2 a3@4 d3@2 ~@2 d3@2 ~@2 d3@2 a3@2 d3 ~, ~@14 d3@3 ~@3 a3@4 d4@5 ~@3]/2", // D5
  Z: "~@2 g3 c3@2 c2 ~ g3, c2@9 ~@3 c3@4, ~@2 c3@4 [g3,c4]@7 ~@3", // C5
  AA: "a2 ~ d3@4 ~ d#3 ~@2 g2 ~ g2@2 g3@2, g2@4 ~@2 g2@3 ~@5 d3 ~",
  AB: "[f2 ~ [f3,c4]@2 ~@4 [f3,c4]@4 ~@2 [f3,c4]@3 f4 c4 ~@2 c4 ~@5 c4 f3 f4 ~ f3, ~@6 f2@5 ~ f2@20, ~@8 g3 ~@10 f3@2 ~ f3@2 c4@2 f4@2 ~@2 c4@2, ~@20 f4@2 ~ f4@2 f3@2 ~@5]/2", // F5
  AC: "~@2 f4 ~ c4@2 f3@2 f4 ~@2 f4 ~@2 f4 c4, f2, ~@9 c4@2 ~ c4@2 ~@2, ~@10 f3@2 ~ f3@2 ~",
  AD: "~@2 [d3,a3] ~ [d3,a3]@2 d2@2 ~@5 a3!2 ~, d2@5 ~@3 [d3,a3]@4 d3@3 ~, ~@5 d2@2 ~", // D5
  AE: "[f2 ~ [f3,c4] ~ [f3,c4]@2 ~@2 [f3,c4] ~ [f3,c4]@2 ~@2 [f3,c4]@4 ~@2 f3@2 c4@2 [f3,c4] ~ f3@2 c4@2 f3 ~, ~@4 g3 ~ f2@4 ~@2 f2@5 ~ f2@12 ~@2, ~@20 c4 ~@3 f4@4 ~@4]/2", // F5
  AF: "f2@2 [f3,c4,f4] ~@3 f2@2 [f3,c4,f4]@2 ~@2 f3 ~ [f3,c4,f4]@2, ~@5 f2@2 ~", // F5
  AG: "e3 ~@6 a#3 ~@4 d3@2 d4@2, d3@4 d2@5 ~ d2@4 ~@2, ~@2 a3@4 d3@5 ~@3 a3 ~",
  AH: "[~@2 e2@2 ~@2 e2@2 ~@4 c#4 ~ b3@3 ~ [e3,b3,f#4] ~@9 [e3,f#4]@3 ~, ~@4 e3@6 e2@10 ~@2 e2@4 e2@5 ~, ~@8 b3@4 e3@5 ~@7 [e3,b3]@4 b3 ~@3]/2", // Esus2 E5
  AI: "[e2 ~ [e3,b3]@2 ~@4 [e3,b3]@4 ~@2 [e3,b3]@3 f#4 b3 ~@2 b3 ~@5 b3 e3 f#4 ~ e3, ~@6 e2@5 ~ e2@20, ~@8 f#3 ~@10 e3@2 ~ e3@2 b3@2 f#4@2 ~@2 b3@2, ~@20 f#4@2 ~ f#4@2 e3@2 ~@5]/2", // E5
  AJ: "~@2 f#4@2 b3@2 e3@2 f#4 ~@2 f#4 ~@2 f#4 b3, e2, ~@2 d4 ~@6 b3@2 ~ b3@2 ~@2, ~@10 e3@2 ~ e3@2 ~",
  AK: "f#3 ~@6 c4 ~@4 e3@2 e4@2, e3@4 e2@5 ~ e2@4 ~@2, ~@2 b3@4 e3@5 ~@3 b3 ~",
  AL: "d3 ~@6 g#3 ~@4 c3@2 c4@2, c3@4 c2@5 ~ c2@4 ~@2, ~@2 g3@4 c3@5 ~@3 g3 ~",
  AM: "[~@2 f2@2 ~@2 f2@2 ~@4 d4 ~ c4@3 ~ [f3,c4,f4] ~@9 [f3,f4]@3 ~, ~@4 f3@6 f2@10 ~@2 f2@4 f2@5 ~, ~@8 c4@4 f3@5 ~@7 [f3,c4]@4 c4 ~@3]/2", // F5 F F5
  AN: "[[f3,c4]@2 f2@2 [f3,c4] ~ [f3,c4]@4 ~@2 f3 ~ [f3,c4]@4 ~@2 [f3,c4] ~ [f3,c4] ~ [f3,c4] ~ [f3,c4] ~ [f3,c4] ~ [f3,c4] ~, b3 ~@9 f2@7 ~ f2@13 ~]/2", // F5
  AO: "~@2 [f3,c4,f4] ~ [f3,c4,f4]@2 ~@2 [f3,c4,f4] ~ [f3,c4,f4] ~ [f3,c4,f4] ~ [c4,f4] ~, f2@5 ~ f2@10, ~@7 f3", // F5
  AP: "e2@2 [e3,b3,f#4] ~@3 e2@2 [e3,b3,f#4]@2 ~@2 e3 ~ [e3,b3,f#4]@2, ~@5 e2@2 ~", // Esus2
  AQ: "~@2 b3 e3@2 e2 ~ b3, e2@9 ~@3 e3@4, ~@2 e3@4 [b3,f#4]@7 ~@3", AR: "[e3,b3,f#4]",
  AS: "[e3,b3,f#4] ~@3 [d3,e3,a3,d4] ~ [e3,b3,d4,f#4] ~@5 [e3,b3,f#4]@4", // Esus2 Dsus2 Bm Esus2
})).s("gm_piano").gain(0.72).pan(0.7)

// chords · overdriven guitar · "Guitar"
const overdriven_guitar = note(`<
  ~@8 A B C D ~@4 A@2 E ~ F G H I F ~@2 J F G H@2 F K H ~@7 A B C D ~@4 A B E ~ F L H I F ~@2 B F G H@2 F K H ~@8 D F L
  H@2 F ~@2 A F M H@2 F K H ~@5
>`.pickRestart({
  A: "~@4 [d4,f#4,a4,d5] ~ [d4,f#4,a4,d5] ~@5 [d4,f#4,a4,d5] ~@3", // D
  B: "~@4 [d4,f#4,a4,d5] ~ [d4,f#4,a4,d5] ~@3 [d4,f#4,a4,d5] ~ [d4,f#4,a4,d5] ~ [d4,f#4,a4,d5] ~", // D
  C: "[e4,g#4,b4,e5] ~@3 [e4,g#4,b4,e5] ~ [e4,g#4,b4,e5] ~@5 [e4,g#4,b4,e5] ~@3", // E
  D: "~@2 [e4,g#4,b4,e5] ~ [e4,g#4,b4,e5] ~ [e4,g#4,b4,e5] ~ [e4,g#4,b4,e5] ~ [e4,g#4,b4,e5] ~ [e4,g#4,b4,e5] ~ [e4,g#4,b4,e5] ~", // E
  E: "~@4 [e4,g#4,b4,e5] ~ [e4,g#4,b4,e5] ~@5 [e4,g#4,b4,e5] ~@3", // E
  F: "~@4 [g3,c4,e4,g4] ~ [g3,c4,e4,g4] ~@5 [g3,c4,e4,g4] ~@3", // C
  G: "~@4 [g4,b4,d5,g5] ~ [g4,b4,d5,g5] ~@5 [g4,b4,d5,g5] ~@3", // G
  H: "~@4 [f4,a4,c5,f5] ~ [f4,a4,c5,f5] ~@5 [f4,a4,c5,f5] ~@3", // F
  I: "~@4 [f4,a4,c5,f5] ~ [f4,a4,c5,f5] ~@3 [f4,a4,c5,f5] ~ [f4,a4,c5,f5] ~ [f4,a4,c5,f5] ~", // F
  J: "~@4 [d4,f#4,a4,d5] ~ [d4,f#4,a4,d5] ~@4 f#4 [d4,f#4,a4,d5] ~ [d4,f#4,a4,d5] ~, ~@5 d4 ~@2", // D
  K: "~@2 [g4,b4,d5,g5] ~ [g4,b4,d5,g5] ~ [g4,b4,d5,g5] ~ [g4,b4,d5,g5] ~ [g4,b4,d5,g5] ~ [g4,b4,d5,g5] ~ [g4,b4,d5,g5] ~", // G
  L: "~@4 [g3,b3,d4,g4] ~ [g3,b3,d4,g4] ~@3 [g3,b3,d4,g4] ~ [g3,b3,d4,g4] ~ [g3,b3,d4,g4] ~", // G
  M: "~@4 [g3,b3,d4,g4] ~ [g3,b3,d4,g4] ~@4 b3 [g3,b3,d4,g4] ~ [g3,b3,d4,g4] ~, ~@5 g3 ~@2", // G
})).s("gm_overdriven_guitar").gain(0.64).pan(0.4)

// other · pad new age · "Intro"
const pad_new_age = note(`<
  [~@2 e5@2 e4@3 ~ e5@3 ~@5]
  [a4@2 g#4@2 ~@2 a4@3 ~ g#4@2 e4@3 ~]
  [~@2 e5@2 e4@3 ~ e5@3 ~@5]
  [a4@2 g#4@2 ~@2 a4@3 ~ g#4@2 e4@3 ~]
  ~@94
>`).s("gm_pad_new_age").gain(0.43)

// chords · brass section · "Brass"
const brass_section = note(`<
  A ~ A ~@23 B C ~@6 B D E@2 ~@22 B C ~@6 B D F@2 A@4 G ~@7 B C ~@6 B D F@2 ~@2
>`.pickRestart({
  A: "~@12 [b3,e4,g#4] ~ [b3,e4,g#4] ~", B: "[a3,c4,f4]", C: "[a3,d4,f#4]@3 ~@5", D: "[a3,d4,f#4]",
  E: "[[d4,e4]@12 [d4,e4,g#4]!4, g#3@29 ~@3]/2", F: "[[g#3,d4,e4]@29 ~@3]/2", G: "~ [b3,b4] [c#4,c#5]@2",
})).s("gm_brass_section").gain(0.8).pan(0.6)

// chords · electric guitar muted · "Solo" · E7 G#dim
const electric_guitar_muted = note(`<
  ~@74
  [[b3,d4,e4,g#4]@2 [b3,d4,e4,g#4] [b3,d4,e4,g#4]@2 ~ [b3,d4,e4,g#4] [b3,d4,g#4]@3 ~@6, ~@7 e4@7 ~@2]
  ~@23
>`).s("gm_electric_guitar_muted").gain(0.5).pan(0.6)

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

// drums · snare
const snare = s("sd").struct(`<
  A@3 B A@7 C A@7 C A@6 D A@6 ~ A D@2 E A@7 F A@7 E A@6 D@2 A@5 F A G A@7 H A@5 G A@7 E A@3 C A C
>`.pickRestart({
  A: "~ x ~ x", B: "x ~ x!6", C: "x ~@2 x ~@2 x ~", D: "~@4 x ~@4 x ~@2 x ~@3", E: "~@3 x",
  F: "x!2 ~ x!2 ~ x!2 ~@2 x!3 ~@3", G: "x ~@5 x ~@3 x ~@2 x ~@2", H: "~@9 x ~@2 x ~@3",
})).gain(0.6).pan(0.4)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@3 A ~@7 B ~@7 B ~@13 C ~@3 D ~@7 E ~@7 D ~@13 E ~ F ~@13 F ~@7 D ~@3 B ~ G
>`.pickRestart({
  A: "~@3 x!5", B: "~@3 x", C: "~@10 x!6", D: "~@10 x!2 ~ x!3", E: "~@7 x", F: "~@4 x ~@4 x ~@2 x ~@3", G: "~ x ~@6",
})).gain(0.6).pan(0.4)

// drums · hihat
const hihat = s("hh").struct("<~@45 [x!4] ~@21 [x!4] ~@30>").gain(0.54).pan(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@11 A ~@7 A ~@13 B ~@3 B ~@7 C ~@7 B ~@13 C ~ D ~@13 D ~@7 B ~@3 A ~ E>".pickRestart({
  A: "~@3 x ~@4", B: "~@4 x!4 ~@8", C: "~@13 x ~@2", D: "~@4 x ~@4 x ~@2 x ~@3", E: "~ x ~@6",
})).gain(0.6).pan(0.4)

// drums · open hat
const open_hat = s("oh").struct("<A@3 B A@6 C ~ A@2 C A@4 ~@19 A@7 ~ A@7 ~@43 A ~>".pickRestart({
  A: "x!4", B: "x", C: "x ~@3 x ~@3 x!2 ~@2 x ~@3",
})).gain(0.6).pan(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@11 A ~@7 A ~@13 B ~@3 B ~@15 B ~@37 B ~@3 A ~@2>".pickRestart({
  A: "x", B: "x!2 ~@14",
})).gain(0.6).pan(0.4)

// drums · ride
const ride = s("rd").struct(`<
  A ~@2 B A ~@7 A ~@7 A ~@13 A ~@3 A ~@7 A ~@7 A ~@13 A ~ A ~@7 A ~@5 A ~@7 A ~@3 A C
>`.pickRestart({
  A: "x", B: "~ x ~@2", C: "~@3 x",
})).gain(0.6).pan(0.4)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@3 A ~@16 A@4 B A C A B A@3 B ~ A C@2 ~@17 A B A B A@2 C@2 B A@4 ~ A ~ A@3 B A@3 ~ A B A@3 ~ A@7 ~ A@3 ~@3
>`.pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~", C: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x!2",
})).gain(0.6).pan(0.4)

stack(
  bass, piano, overdriven_guitar, pad_new_age, brass_section, electric_guitar_muted, kick, snare, low_tom, hihat,
  mid_tom, open_hat, high_tom, ride, tambourine
)

More by Duran Duran