Strudelify

The Chauffeur

Duran Duran

KeyE minorTempo82 bpm
0:00/0:00
// The Chauffeur — Duran Duran
// 82 bpm, 2/4, key E minor. 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 219 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(82/2)

// 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 · string ensemble 2 · "string"
const string_ensemble_2 = note("<~@137 A@4 B@4 C@4 D@4 E F ~@64>".pickRestart({
  A: "[[b3,d#4,f#4]@61 ~@3, b2 ~@15]/4", B: "[[c4,e4,g4]@31 ~ [a#3,g4]@31 ~, ~@31 e4@30 ~@3]/4",
  C: "[[b3,d#4,f#4]@31 ~]/4", D: "[c4@29 ~@3 a#3@31 ~, [e4,g4]@31 ~]/4", E: "[b3,d#4,f#4]", F: "[b3,d#4,f#4]@15 ~",
})).s("gm_string_ensemble_2").gain(0.08)

// other · whistle · "sifflet"
const whistle = note("<~@4 A@4 B@4 A@4 B@4 A@4 B@4 A@8 C ~@182>".pickRestart({
  A: "[e5@4 g5@4 b5@43 ~@13]/4", B: "[e5@2 g5@2 b5@21 ~@7]/4", C: "e5 ~@15",
})).s("gm_whistle").gain(0.03)

// chords · piano · "piano 2"
const piano = note("<~@51 A@4 ~@31 B@2 C@2 D@2 E@2 F@4 ~@39 G@2 H@2 I@2 J@2 K@4 L@2 M@2 N O P@2 ~@62>".pickRestart({
  A: "[[b2,b3,d#4]@30 ~@2 [b2,b3,d#4]@31 ~, f#3@28 ~@2 f#3@33 ~]/4", B: "[[b2,b3,d#4]@30 f#3 ~, f#3@27 ~@5]/2",
  C: "[[f#3,b3,d#4]@7 ~, b2@31 ~]/2", D: "[[c3,g3], [c4,e4]@7 ~]/2", E: "[[a#2,a#3]@31 ~, [g3,e4]@7 ~]/2",
  F: "[b2@29 ~@3 b2@8 a2@8 g2@7 ~ f#2@8, [f#3,b3,d#4]]/4", G: "[[b2,f#3,b3,d#4]@30 f#3 ~]/2",
  H: "[[f#3,b3,d#4]@7 ~, b2]/2", I: "[~ [g3,e4]@30 ~, c3@31 ~, c4@7 ~]/2", J: "[[g3,a#3,e4]@7 ~, a#2@31 ~]/2",
  K: "[[f#3,b3,d#4]@40 ~@6 [f#4,b4,d#5] ~ [f#4,b4,d#5]@13 ~@3, b2@31 ~]/4", L: "[[c3,g3,c4,e4]@15 ~]/2",
  M: "[[a#2,g3,a#3,e4]@15 ~]/2", N: "[b2,f#3,b3,d#4]", O: "g2@7 ~ f#2@7 ~, [f#3,b3,d#4]@15 ~",
  P: "[~@4 e3@4 e2@11 ~ f#2@4 f#2@3 ~ f#2@4]/2",
})).s("gm_piano").gain(0.37)

// other · piano
const piano_2 = note(`<
  ~@7 A@6 B@4 C@8 D@7 E@3 F ~@19 G@8 H@8 ~@27 I@8 J@8 I@8 ~@35 K@3 L@8 M@8 N@8 O@3 P@7 Q@8 R@8 S T@4 U@3 ~
>`.pickRestart({
  A: "[~@4 d#2@3 ~ d#2@3 ~ d#2@8 e2@4 e1@12 f#1@3 ~ f#1@3 ~ f#1@8 g1@3 ~ g1@12 d#2@3 ~ d#2@3 ~ d#2@8 e2@4 e1@8]/6",
  B: "[~@4 f#1@3 ~ f#1@3 ~ f#1@8 g1@3 ~ g1@12 d#2@3 ~ d#2@3 ~ d#2@8 e2@4 e1@8]/4",
  C: "[~@4 f#1@3 ~ f#1@3 ~ f#1@8 g1@3 ~ g1@12 d#2@3 ~ d#2@3 ~ d#2@8 e2@4 e1@12 f#1@3 ~ f#1@3 ~ f#1@8 g1@3 ~ g1@12 d#2@3 ~ d#2@3 d#2@8 ~ e2@4 e1@8]/8",
  D: "[~@4 f#1@3 ~ f#1@3 ~ f#1@8 g1@3 ~ g1@12 d#2@3 ~ d#2@3 ~ d#2@8 e2@4 e1@12 f#1@3 ~ f#1@3 ~ f#1@8 g1@3 ~ g1@11 ~ d#2@3 ~ d#2@3 d#2@5]/7",
  E: "[~@4 e2@4 e1@12 f#1@3 ~ f#1@3 ~ f#1@8 g1@3 ~ g1@8]/3", F: "~@4 d#2@3 ~ d#2@3 d#2@4 ~",
  G: "[~@4 e2@4 e1@11 ~ f#1@3 ~ f#1@3 ~ f#1@8 g1@3 ~ g1@12 d#2@3 ~ d#2@3 ~ d#2@8 e2@4 e1@12 f#1@3 ~ f#1@3 ~ f#1@8 g1@3 ~ g1@12 d#2@3 ~ d#2@3 d#2@5]/8",
  H: "[~@4 e2@4 e1@11 ~ f#1@3 ~ f#1@3 ~ f#1@8 g1@3 ~ g1@12 d#2@3 ~ d#2@3 ~ d#2@8 e2@4 e1@12 f#1@3 ~ f#1@3 ~ f#1@8 g1@3 ~ g1@11 ~ d#2@3 ~ d#2@3 d#2@5]/8",
  I: "[~@4 e3@4 e2@11 ~ f#2@3 ~ f#2@3 ~ f#2@8 g2@3 ~ g2@12 d#3@3 ~ d#3@3 ~ d#3@8 e3@4 e2@12 f#2@3 ~ f#2@3 ~ f#2@8 g2@3 ~ g2@12 d#3@3 ~ d#3@3 d#3@5]/8",
  J: "[~@4 e3@4 e2@11 ~ f#2@3 ~ f#2@3 ~ f#2@8 g2@3 ~ g2@12 d#3@3 ~ d#3@3 ~ d#3@8 e3@4 e2@12 f#2@3 ~ f#2@3 ~ f#2@8 g2@3 ~ g2@11 ~ d#3@3 ~ d#3@2 ~ d#3@5]/8",
  K: "[f#2@3 g2@4 ~ g2@12 d#3@3 ~ d#3@3 ~ d#3@8 e3@4 e2@8]/3",
  L: "[~@4 f#2@3 ~ f#2@3 ~ f#2@8 g2@3 ~ g2@12 d#3@4 d#3@3 ~ d#3@8 e3@4 e2@12 f#2@3 ~ f#2@3 ~ f#2@8 g2@3 ~ g2@12 d#3@3 ~ d#3@3 ~ d#3@8 e3@4 e2@8]/8",
  M: "[~@4 f#2@3 ~ f#2@3 ~ f#2@8 g2@3 ~ g2@12 d#3@4 d#3@3 ~ d#3@8 e3@4 e2@12 f#2@3 ~ f#2@3 ~ f#2@8 g2@3 ~ g2@12 d#3@4 d#3@3 ~ d#3@8 e3@4 e2@8]/8",
  N: "[~@4 f#2@3 ~ f#2@3 ~ f#2@8 g2@3 ~ g2@12 d#3@3 ~ d#3@3 ~ d#3@8 e3@4 e2@12 f#2@3 ~ f#2@3 ~ f#2@8 g2@3 ~ g2@12 d#3@4 d#3@3 ~ d#3@8 e3@4 e2@8]/8",
  O: "[~@4 f#2@4 f#2@3 ~ f#2@8 g2@3 ~ g2@12 d#3@4 d#3@3 d#3@5]/3",
  P: "[~@4 e3@4 e2@12 f#2@3 ~ f#2@3 ~ f#2@8 g2@3 ~ g2@12 d#3@4 d#3@4 ~@8 e3@4 e2@11 ~ f#2@3 ~ f#2@3 ~ f#2@8 g2@3 ~ g2@8, d#3@13 ~@2 d#3@13]/7",
  Q: "[~@4 d#3@4 d#3@4 ~@8 e3@4 e2@12 f#2@3 ~ f#2@3 ~ f#2@8 g2@3 ~ g2@12 d#3@4 d#3@4 ~@8 e3@4 e2@12 f#2@3 ~ f#2@3 ~ f#2@8 g2@3 ~ g2@8, ~@3 d#3@14 ~@2 d#3@13]/8",
  R: "[~@4 d#3@4 d#3@4 ~@8 e3@4 e2@12 f#2@3 ~ f#2@3 ~ f#2@8 g2@3 ~ g2@12 d#3@4 d#3@4 ~@8 e3@4 e2@12 f#2@4 f#2@3 ~ f#2@8 g2@3 ~ g2@8, ~@3 d#3@14 ~@2 d#3@13]/8",
  S: "~@4 d#3@4 d#3@3 d#3@5", T: "[~@4 e3@4 e2@12 f#2@3 ~ f#2@3 ~ f#2@8 g2@3 ~ g2@12 d#3@4 d#3@8, d#3@13 ~@3]/4",
  U: "[[e1,e2]@19 ~@5]/3", // E
})).s("gm_piano").gain(0.17)

// chords · recorder · "SOLO"
const recorder = note(`<
  ~@36 A B C D E F G F ~@27 H I J K L K M K H K N K H O P ~@77 Q R S T U V W X U Y S Z AA Y AB AC ~@40
>`.pickRestart({
  A: "~@8 [g3,b3,d4] ~ [g3,b3,d4] ~@5", B: "~@8 [b3,d#4,f#4] f#4 [b3,d#4] ~@5", C: "~@8 [b3,e4,g4] e4 [b3,g4] ~@5",
  D: "~@8 [b3,d#4,f#4] [d#4,f#4] b3 ~@5", E: "~@8 [g3,b3,d4] [b3,d4] g3 ~@5", F: "~@8 [b3,d#4,f#4] d#4 [b3,f#4] ~@5",
  G: "~@8 [b3,e4,g4] g4 [b3,e4] ~@5", H: "~@8 [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4]@2 ~@2",
  I: "~@8 [b3,d#4,f#4] [d#4,f#4] b3 [b3,d#4,f#4]@2 ~@3", J: "~@8 [b3,e4,g4] ~ [b3,e4,g4] e4 [b3,g4]@2 ~@2",
  K: "~@8 [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4]@2 ~@2", L: "~@7 b3 [g3,d4] b3 [g3,d4] ~ [g3,b3,d4]@2 ~@2",
  M: "~@7 [b3,e4,g4] ~ [b3,e4,g4] ~ [b3,g4]@2 ~@3, ~@11 e4 ~@4", N: "~@7 e4 [b3,g4] [b3,e4] g4 [b3,e4,g4]@2 ~@3",
  O: "~@8 [b3,d#4,f#4] [d#4,f#4] b3 ~ [b3,d#4]@2 ~@2, ~@11 f#4@3 ~@2", // B D#m B
  P: "~@7 g4 [b3,e4] e4 [b3,g4] ~ [b3,e4,g4]@2 ~@2", Q: "~@4 e5 ~@3 e5@5 ~@3", R: "e5@2 f#5 ~@3 f#5 ~ f#5@5 ~@3",
  S: "f#5@2 g5@2 ~@2 g5 ~ g5@2 ~@2 a5 ~ g5@2", T: "~@2 f#5 ~@3 e5 ~ g5 f#5 ~ [f#5,g5] g5 f#5@2 ~",
  U: "~@4 e5 ~@3 e5@4 ~@4", V: "e5@2 f#5@2 ~@2 f#5 ~ f#5@5 ~@3", W: "f#5@2 g5@2 ~@2 g5 ~ g5@2 ~ a5 ~@2 g5@2",
  X: "~@2 f#5 ~@3 e5 ~ g5 f#5 g5 f#5 g5 f#5 [f#5,g5] ~", Y: "e5@2 f#5@2 ~@2 f#5 ~ f#5@3 ~@5",
  Z: "~@2 f#5@2 ~@2 e5 ~ g5 f#5 g5 f#5 g5 f#5 [f#5,g5] ~", AA: "~@2 e5 ~ e5@2 ~@2",
  AB: "f#5@2 g5@2 ~@2 g5 ~ g5@2 ~@2 a5 ~ b5@2", AC: "~@2 b5@2 ~@2 b5 ~ b5@4 ~@4",
})).s("gm_recorder").gain(0.1)

// bass · pan flute · "fx"
const bass = note("<~@44 A@7 ~@168>".pickRestart({
  A: "c2/7",
})).s("gm_electric_bass_finger").gain(0.08)

// bass · fretless bass · "fretless"
const bass_2 = note(`<
  ~@55 A B C D E F G H A F C I A F C I ~@19 J@2 K@5 L ~@43 M@2 N@2 O P Q@2 R@2 N@2 O S ~@60 T U@2 ~
>`.pickRestart({
  A: "e2 e3", B: "f#3@8 e3@2 f#3@2 e3@3 d3", C: "g2@3 g3", D: "b2", E: "e2@8 e3@7 ~", F: "f#3@4 e3 f#3 e3@2",
  G: "g2@11 ~ g3@4", H: "~ b2@15", I: "b2@15 ~", J: "[c3, e2 ~@31]/2", K: "[a#2@31 b2@41 a2@8]/5", L: "g2 f#2",
  M: "[c2@31 ~]/2", N: "[a#2@7 ~]/2", O: "b2@11 ~@5", P: "b3@2 c4@2 b3@11 ~", Q: "[b3 c4 b3 c4 b3@10 ~@2]/2",
  R: "[c2@29 ~@3]/2", S: "b3@13 ~@3", T: "e2", U: "[~ e3@18 ~@13]/2",
})).s("gm_fretless_bass").gain(0.3)

// other · pad warm · "warm"
const pad_warm = note(`<
  ~@71 A@2 B C@2 D@2 E F@2 B E G H@2 I@4 ~@8 J@2 K L@3 M@2 N O M@2 N O P Q N O R@2 S@2 T@2 A@2 B C@2 D@2 E F@2 B E G H@2
  U ~@17 V O K W V O K W V O K W V O K W V O K W V O K W V O K W V O K W V O K W V O K W V O K W V O K W V O K W V O K W
  V O K W X@3 ~
>`.pickRestart({
  A: "[g5@15 b5@17]/2", B: "e5", C: "[b5@15 g5@17]/2", D: "[b5@15 e5@13 a5@4]/2", E: "b5",
  F: "[~ g5@14 b5@17, ~ f5 ~@30]/2", G: "g5", H: "[b5@15 e5@12 ~ a5@4]/2", I: "[~@32 a5 ~@31, b5]/4",
  J: "[[e4,e5]@15 [d4,d5]@16 ~]/2", K: "[g4,g5]", L: "[[b3,b4]@15 [e4,e5]@16 [d4,d5]@17]/3",
  M: "[[g4,g5]@15 ~ b3@16, ~@15 b4@17]/2", N: "[e4,e5]", O: "[d4,d5]", P: "[g4,g5]@15 ~", Q: "[b3,b4]",
  R: "[[g4,g5]@15 [b3,b4]@16 ~]/2", S: "[[e4,e5]@15 [d4,d5]@17]/2", T: "[[g4,g5]@15 ~ b4@16, ~@15 b3@16 ~]/2",
  U: "b5 ~@15", V: "[e4,e5]@15 ~", W: "[b3,b4]@11 ~@5", X: "[[e2,e3,e4]@11 ~@5]/3",
})).s("gm_pad_warm").gain(0.12)

// bass · electric bass finger · "electric bass"
const bass_3 = note(`<
  ~@98 A B C D A B C D A B C D A B C D A B C D A B C D E F G F E F H I E J G F E F H K@2 L@2 M@2 N@2 L@2 F O P@2 Q@2 F R
  A B C D A B C D A B C D A B C D A B C D A B C S A B C D A B C S A B C D A B C D A B C D T B C D A B C D A B C D A B C
  D U@2 ~@2
>`.pickRestart({
  A: "e1@2 ~@2 e1 ~@3 e1@8", B: "d2 ~ d2 ~ d2@4", C: "g1@3 ~ g1@2 ~@2 g1@7 ~", D: "b1@2 ~@2 b1@3 ~ a1@2 b1@6", E: "g1",
  F: "b1", G: "e1", H: "e1@3 a1", I: "b1@3 a1", J: "b1@4 a1 b1 a1@2", K: "[b1@29 ~ b1 ~]/2", L: "[b1@31 ~]/2",
  M: "[c2@15 ~]/2", N: "[a#1@15 ~]/2", O: "b1@11 ~ b1@4", P: "[~ c2@30 ~]/2", Q: "[a#1@27 ~ a#1@4]/2", R: "g1 f#1",
  S: "b1 ~ b1 ~ a1 b1@3", T: "e1 ~@3 e1 ~@3 e1@8", U: "e1/2",
})).s("gm_electric_bass_finger").gain(0.31)

// other · brass section · "brass"
const brass_section = note("<~@130 A B C B A B D E@2 ~@80>".pickRestart({
  A: "g3", B: "b3", C: "e3", D: "e3@3 a3, ~@12 g3 ~@3", E: "[b3@23 ~@9]/2",
})).s("gm_brass_section").gain(0.14)

// other · recorder · "SOLO"
const recorder_2 = note(`<
  ~@47 A@3 ~@113 B C D E F G@2 H B C D I J K L M N O P Q R S T U V W X Y Z AA AB AC AD@2 AE AF AG AH AI@2 AJ AK AL AM AN
  AO AP AQ AR AS AT AU AV AW AX AY
>`.pickRestart({
  A: "[~@3 e3@8 ~]/3", B: "~@4 g5 ~@3 g5@5 ~@3", C: "g5@2 a5@2 ~@2 a5 ~ a5@5 ~@3",
  D: "a5@2 b5@2 ~@2 b5 ~ b5@3 ~ c6@2 b5@2", E: "~@2 a5@2 ~@2 g5 ~ b5 a5 b5 a5 b5 ~ a5 ~", F: "~@5 g5@2 ~ g5@5 ~@3",
  G: "[g5@2 a5@2 ~@2 a5 ~ a5@5 ~@2 a5@2 ~ b5@2 ~@2 b5 ~ b5@3 ~ c6@2 b5@2]/2",
  H: "~@2 a5@2 ~@2 g5 ~ b5 a5 b5 a5 b5 a5@2 ~", I: "~@2 a5@2 ~@2 g5 ~ b5 a5 [a5,b5] b5 a5 b5 a5 ~",
  J: "~@4 g5@2 ~@2 g5@5 ~@3", K: "g5@2 a5 ~@3 a5 ~ a5@5 ~@3", L: "b5 ~ b5@2 ~@2 b5 ~ b5@3 ~ b5@2 ~ b5",
  M: "~@2 b5@2 ~@2 b5 ~ b5@4 ~@4", N: "~@4 b5@2 ~@2 b5@5 ~ c6 ~", O: "b5 ~ a5@2 ~@2 g5@2 a5@6 ~@2",
  P: "a5@2 a5@2 ~@2 g5 ~ a5@3 ~ g5@2 a5@2", Q: "~@2 b5@2 ~@2 c6 ~ b5 c6 b5 [b5,c6] ~ b5@2 ~, ~@6 c6 ~",
  R: "~@2 b5 ~ b5@2 ~ c6", S: "b5@2 a5@2 ~@2 g5 ~ a5@7 ~", T: "~@4 e5@2 ~@2 e5@4 ~@2 e5 ~",
  U: "g5@2 ~ a5@2 ~ b5@2 ~@2 b5@2 ~@2 b5 ~", V: "c6 ~ b5@2 ~@2 a5@2 ~@2 g5@2 ~@2 b5 ~", W: "a5@8 ~@2 e5 ~ f#5 ~ g5 ~",
  X: "~@2 a5@2 ~@2 b5@2 ~@2 a5@3 ~ g5 ~", Y: "~ a5 b5@2 ~@2 b5@6 ~@4", Z: "~@2 b5 ~ c6 b5 ~ a5",
  AA: "~@2 a5@2 ~@2 c6@2 b5@2 ~@2 a5 ~ g5 ~", AB: "a5 ~ g5@3 ~ e5@2 g5@3 ~ g5@3 ~",
  AC: "a5@2 b5@2 ~@2 b5@3 ~ b5@3 ~ b5@2",
  AD: "[a5 ~ g5 ~ f#5 ~ g5@3 ~ a5 ~@2 b5 c6 ~ c6 ~@9 g5@2 ~@2 a5 ~, ~@15 b5@8 ~@9]/2",
  AE: "b5@2 b5@3 ~ a5@3 ~ g5@2 ~@2 a5@2", AF: "g5@8 f#5@7 ~", AG: "~@2 e5 ~ e5 f#5 ~ g5",
  AH: "~@2 a5@2 ~@2 b5@3 ~ a5 ~ b5@2 a5 ~", AI: "[c6@2 b5@2 ~@2 a5@2 ~@2 g5@2 a5@2 b5@10 ~@2 b5@2 ~@2 b5 ~]/2",
  AJ: "c6@2 b5@2 ~@2 a5@2 ~@3 g5@2 ~ b5 ~", AK: "a5@9 ~ e5 ~ f#5 ~ g5 ~", AL: "a5@2 b5@2 ~@2 a5@3 ~ g5@2 ~@2 a5@2",
  AM: "g5 f#5", AN: "e5@9 ~ b5@2 ~@2 b5@2", AO: "~@2 b5@2 ~@2 c6 ~ [b5,c6] c6 b5 [b5,c6] ~ [b5,c6]!2 c6",
  AP: "b5 ~ g5@2 ~ a5@2 ~ b5@2 ~ a5@2 g5@3", AQ: "a5@2 ~ b5@2 ~ b5@10", AR: "~@4 b5@2 ~@2 b5@5 ~@3",
  AS: "~@2 b5@2 ~@2 c6@2 b5 c6 b5 [b5,c6] c6 b5 c6 [b5,c6]", AT: "~@4 b5 ~@3 b5@5 ~@3",
  AU: "~@2 b5@2 ~@2 c6@2 b5 c6 b5 [b5,c6] c6 b5 [b5,c6] c6", // Cmaj7
  AV: "b5 [b5,c6] c6 b5 [b5,c6] c6 b5 [b5,c6] c6 b5 c6 [b5,c6] b5 c6 b5 c6", // Cmaj7
  AW: "c6 b5 [b5,c6] c6 b5 [b5,c6] c6 b5 [b5,c6] c6 b5 c6 [b5,c6] b5 c6 [b5,c6]", // Cmaj7
  AX: "b5 c6 [b5,c6] b5 [b5,c6] c6 b5 [b5,c6] c6 b5 [b5,c6] c6 b5 [b5,c6] c6 b5", AY: "[b5,c6] c6 b5 [b5,c6] ~@12",
})).s("gm_recorder").gain(0.43)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@36 A B A B A B A ~ A B A B A B A ~@20 A B A B A B A ~ A B A B A B A ~@133
>`.pickRestart({
  A: "x ~@3 x!2 ~ x", B: "~ x",
})).gain(0.2)

// drums · rim
const rim = s("rim").struct(`<
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@17 A ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@17 A
  ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A@2 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~@5
>`.pickRestart({
  A: "~@5 x ~@2",
})).gain(0.2)

// drums · clap
const clap = s("cp").struct(`<
  ~@3 A ~@3 A ~ A ~@3 A ~@5 A ~@3 A ~ A ~@3 A ~@5 A B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@5 A ~@5 A ~@3 A ~ A ~@2 B ~ B ~ B ~
  B ~ B ~ B ~ B ~ B ~@7 A ~@3 A ~ A ~@5 A ~@3 A ~ A ~@3 A ~@5 A ~@3 A ~ A ~@3 A ~@7 A ~@3 A ~@3 A ~@3 A ~@4 A ~@5 A ~@3
  A ~ A ~@5 A ~@3 A ~ A ~@5 A ~@3 A ~ A ~@5 A ~@3 A ~ A ~@5 A ~@3 A ~@4
>`.pickRestart({
  A: "~@4 x!3 ~", B: "~@7 x",
})).gain(0.3)

// drums · snare
const snare = s("sd").struct("<~@98 [~ x]!114 ~@7>").gain(0.46)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~@18 A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~@18 A ~@3 A ~
  A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~@5 A ~@3 A ~@3 A ~@3 A ~@4 A ~ A ~@3 A ~ A
  ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~@4
>`.pickRestart({
  A: "~@4 x!3 ~",
})).gain(0.35)
// … 71 more lines

More by Duran Duran