Strudelify

Men in Black

Will Smith

KeyG minorTempo115 bpm
0:00/0:00
// Men in Black — Will Smith
// 115 bpm, 4/4, key G 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: duplicate parts dropped: ch 5 "Bell2" glockenspiel (copy of ch 4 "Bell1" tinkle bell)
// note: Full arrangement: all 209 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(115/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.

// other · soprano sax · "Lead"
const soprano_sax = note(`<
  ~@33 A@2 B@2 C@2 D@2 E@2 F G H@2 I J K ~@15 A@2 B@2 C@2 D@2 E@2 F G H@2 I J K ~@8 L M ~@2 N O@2 ~@66 C@2 P@2 ~@4 Q@2
  ~@9 R S@2 T@2 U@2 V W ~@11 X Y ~@5
>`.pickRestart({
  A: "[~@8 g4@2 a4@2 bb4 ~ c5@6 a4@2 g4@2 f4@7 ~, ~@20 g4 ~@11]/2",
  B: "[f4@2 g4 ~ g4 ~ bb4@2 g4 ~ g4 ~ f4 ~ f4 g4@2 f4 d4 ~ d4@2 c4@2 bb3@8]/2",
  C: "[~@8 [g3,g4]@2 a4@2 [bb3,bb4] ~ [c4,c5]@4 [bb3,bb4] ~ [d4,d5] ~ [bb3,bb4] c5@3 bb4@2 ~@4, ~@10 a3 ~@11 c4@3 ~ bb3 ~@5]/2", // G Bb C Bb D Bb
  D: "[[g4,bb4] ~ [f4,a4] ~ g4@2 [c4,f4] ~ [c4,f4,g4] d4 [bb3,d4] ~ [c4,d4] [d4,f4] d4@16 ~@2, ~@4 d4 ~@9 bb3@14 ~@4]/2", // Gm F F5 Csus4 Bb Csus2 Dm
  E: "[~@8 g4@2 a4 ~ bb4 ~ c5@5 ~ a4@2 g4@2 f4@7 ~, ~@20 g4 ~@11]/2", F: "f4@2 g4 ~ g4 ~ bb4@2 g4 ~ g4@2 d4 ~ f4@2",
  G: "g4 ~ g4@2 ~@12",
  H: "[~@8 [g3,g4]@2 [a3,a4] ~ [bb3,bb4] ~ [c4,c5]@4 [bb3,bb4] ~ [d4,d5] ~ [bb3,bb4] [c4,c5]@3 bb3@2 ~@2 g4 ~, ~@26 bb4 ~@5]/2", // G A Bb C Bb D Bb C
  I: "d5 ~ eb5 ~ d5 ~ c5 ~ bb4@4 g4@2 d5@2", J: "~@2 eb5 ~ d5@2 c5 ~ bb4@2 g4 ~ c5@2 bb4 c5", K: "bb4",
  L: "~@6 g4 ~ c5@4 bb4 ~ g4@2", M: "f4@3 ~", N: "~@7 g4 c5@4 bb4 ~ g4 f4", O: "[g4 bb4@22 ~@9]/2",
  P: "[bb4 ~ a4 ~ g4@2 f4 ~ [f4,g4] d4!2 ~ d4 f4 d4@16 ~@2]/2", // Fsus2
  Q: "[~@8 [g3,g4]@2 [a3,a4] ~ [bb3,bb4] ~ [c4,c5]@4 [bb3,bb4] ~ [d4,d5] ~ [bb3,bb4] [c4,c5]@3 bb3@2 ~@4, ~@26 bb4 ~@5]/2", // G A Bb C Bb D Bb C
  R: "~@8 d5@2 c5 ~ bb4 ~ db5@2, ~@8 c5 ~@5 c5 ~", S: "[c5@6 bb4@14 ~@2 c5@7 ~ bb4 ~]/2",
  T: "[~ g4 ~@2 g4 f4 g4@12 ~@6 d5@2 c5@2 bb4 ~ c5 db5, ~@24 c5 ~@7]/2",
  U: "[c5@4 ~ c5@2 bb4@13 ~@4 c5@4 bb4 ~ bb4@2, ~@5 bb4 ~@18 b4 ~@7]/2",
  V: "g4 ~ g4@2 f4 ~ f4@2 d4 ~ d4@2 bb3 ~ [c4,d4] c4", W: "bb3 c4@8 ~ d4 ~@5",
  X: "d5@2 c5 ~ c5 db5 c5 ~ c5 ~ c5 bb4 g4 ~ g4@2, c5 ~@8 db5@2 ~@5", Y: "bb4@5 ~@3",
})).s("gm_soprano_sax").gain(0.32)

// other · recorder · "Beep"
const recorder = note(`<
  ~@9 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@18 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@18 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@8
  A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@26 A@2 ~@2 A@2 ~@18 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2
  ~@2 A@2 ~@2 A B
>`.pickRestart({
  A: "d7 ~@3 d7 ~@3 d7 ~@3 d7 ~@3", B: "d7 ~@3 d7 ~@11",
})).s("gm_recorder").gain(0.12)

// other · tinkle bell · "Bell1"
const tinkle_bell = note("<~@37 A ~@7 A ~@23 A ~@7 A ~@85 A ~@7 A ~@37>".pickRestart({
  A: "c6 a5 f5 g5@3 ~@2",
})).s("gm_tinkle_bell").gain(0.22)

// other · alto sax · "Sax"
const alto_sax = note("<~@102 A B C D E@2 F@2 G@2 ~@78 H@2 I J K L M N ~ O P Q R S ~@5>".pickRestart({
  A: "~@10 [c6,db6] ~@2 c6@2 ~, ~@13 bb5 ~@2", B: "bb5@3 ~ g5@3 ~ f5@3 ~ [c5,d5] c5 bb4 g4, ~@4 f5 ~@11",
  C: "bb4@4 c5 ~@7 d4 f4 g4 f4", D: "bb4 ~ g4 bb4@2 ~@3 bb4 ~ g4 bb4@3 ~@2",
  E: "[db5 c5 bb4 c5 bb4 g4 f4 g4 f4 ~ c4 d4 c4 bb3 [g3,a3] f3@2 ~ f3 ~ f3 g3 ~@10, ~@9 d4@2 ~@21]/2", // Gsus2
  F: "[~@2 d3 f3 g3 ~ f3 g3 bb3 a3 c4!2 d4 f4 bb4 g4@4 ~ [f4,g4] ~ f4 ~ c4 d4 c4 ~ bb3@2 g3 ~, ~@5 bb3@2 ~@25]/2", // Fsus2
  G: "[f3 g3 bb3 ~ g3 bb3 c4 ~ c4 d4 f4 ~ f4 g4 bb4 g4@7 ~@10]/2", H: "[~@8 f4 ~ g4 ~ bb4 g4 f4 g4@4 ~@13]/2",
  I: "~@10 f4 ~ g4 ~ bb4 ~", J: "d5@2 eb5 d5@3 [e4,f4,g4,a4,b4,c5] [g3,a3,b3,c4,d4] ~@8", K: "~@8 f5 d5@3 c5 bb4 g4 f4",
  L: "g4@5 ~@11", M: "~@8 f4 ~ g4 ~ bb4@2 ~ eb5", N: "d5@3 d5@3 [a4,b4,c5] [b3,c4,d4,e4,f4,g4] [g3,a3] ~@7",
  O: "~@12 g4 ~ bb4 ~", P: "~ c5@5 bb4 ~@2 bb4 c5@4 bb4 ~, ~ bb4 ~@14",
  Q: "~ c5@5 bb4 ~@2 [bb4,b4] ~@4 bb4 ~, ~ bb4 ~@7 c5@5 ~@2", R: "g4@2 ~@2 g4 f4 d4 ~ d4 c4 [a3,bb3] ~ c4@2 bb3@2",
  S: "g3 ~@7",
})).s("gm_alto_sax").gain(0.25)

// chords · pad new age · "Pad"
const pad_new_age = note(`<
  ~ A B C D A B C D 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@2 E F H@2 E F G@2 E F H@2 A B C D A B C D A B
  C D A B C D E F G@2 E F H@2 E F G@2 E F H@2 A B C D A B C D A B C D A B C D ~@6 A B C D A B C D A B C D A B C D A B C
  D A B C D A B C D A B C D ~@16 A B C D A B C D E F G@2 E F H@2 E F G@2 E F H@2 A B C D A B C D A B C D A B C D A B C D
  A B C D A B C D A B C D A I
>`.pickRestart({
  A: "[g3,bb3,d4,f4]@5 ~ [g3,bb3,d4,f4]@9 ~", B: "[a3,c4,d4,f4]@7 ~ [a3,c4,d4,f4]@8",
  C: "~@2 g4@2 f4 ~ [bb3,d4,g4]@10, [c4,d4,a4]@5 ~@11", D: "[g3,c4,e4]@7 ~ [g3,c4,e4]@7 ~", E: "[g3,bb3,d4,f4]@15 ~",
  F: "[a3,c4,d4,f4]@15 ~", G: "[[g3,bb3,d4]@29 ~@3]/2", H: "[[g3,bb3,d4]@7 ~]/2",
  I: "[a3,c4,d4,f4] ~ [a3,c4,d4,f4] ~ [a3,c4,d4,f4] ~@11", // Dm7
})).s("gm_pad_new_age").gain(0.22)

// bass · electric bass pick · "Bass"
const bass = note(`<
  ~@9 A B C D A E F D G H C D I H C D J K C L J H C D M H N O P H N Q R E N S T H N U J H C D J H F D J E C V W K C X R
  H N O M H N S R H N Y Z H N AA AB K C D A E C AC J K C AD AE K C D AF ~ AG AH AI AJ AK AL C AM AN K C AO AE K C D AP
  AQ C D J H C AR AE H C D ~@12 AS AT AU AV AU AV AW AX AU AY AU AZ J H C BA J K C D BB H N BC R E N BD R H N O Z H N BE
  AE K BF D J K BG BH AE H BI BJ BK K C BL BM K BF D AE K BN BO AE H C BA BP H BQ AO J BR
>`.pickRestart({
  A: "g1@2 g2 ~ bb1@2 eb2@2 ~@2 eb3 ~ eb2@2 ~@2", B: "[f2,g2] ~@3 f2@3 eb2 d2 ~ d2 ~ d2@2 c2 d2",
  C: "g1@2 g2 ~ bb1@2 eb2@2 ~@2 eb3 ~ eb2@2 ~ g2", D: "a2 g2 a2 g2 a2@2 ~ g2 a2 ~ d2@2 f2@2 g2@2",
  E: "f2 ~@3 f2@4 d2 ~ d2 ~ d2@2 c2 d2", F: "g1@2 g2 ~ bb1@2 eb2@2 ~@2 eb3 ~ eb2@3 g2",
  G: "g1 ~ g2 ~ bb1@2 eb2@2 ~@2 eb3 ~ eb2@2 ~@2", H: "f2 ~@3 f2@3 eb2 d2 ~ d2 ~ d2@2 c2 d2",
  I: "g1@2 g2 ~ bb1@2 eb2@2 eb2 ~ eb3 ~ eb2@2 ~ eb2", J: "g1 ~ g2 ~ bb1@2 eb2@2 ~@2 eb3 ~ eb2@2 ~ eb2",
  K: "f2 ~@3 f2@3 eb2 d2 ~ d2 ~ d2@2 c2 d2, ~@4 e2 ~@11", L: "a2 g2 [g2,a2] ~ a2@2 ~ g2 a2 ~ d2@2 f2@2 g2@2",
  M: "eb2@2 eb3@2 eb2@2 eb2@2 ~@7 eb2", N: "g1@2 g2@2 g1 ~ g1@2 ~@6 f2 g2",
  O: "g1 g2 g1 ~ a1@2 bb1@2 ~ g1 a1@2 g1@2 ~ d2", P: "eb2@2 eb3@2 eb2@2 ~@9 eb2, ~@4 db2 ~@11",
  Q: "g1 g2 g1 ~ a1@2 bb1@2 ~@2 a1@2 g1@2 ~@2", R: "eb2@2 eb3@2 eb2 ~ eb2@2 ~@7 eb2",
  S: "g1 g2 g1 ~ a1@2 bb1@2 ~ g1 a1@2 g1@2 ~@2", T: "eb2@2 eb3@2 eb2 ~ eb2@2 e2 ~@6 eb2",
  U: "g1 g2 g1 ~ g1 ~ g1@2 ~@2 f2 g1 g2@3 f2, ~@12 f2 ~@3", V: "a2 g2 a2 g2 a2@2 ~ f2 [bb2,c3] ~ bb2 ~ f2@2 g2@2",
  W: "g1@2 g2 ~ bb1@2 eb2@2 ~@2 eb3 ~ eb2@3 eb2", X: "a2 g2 a2 g2 a2 ~@2 g2 [a2,b2] ~ d2@2 f2@2 g2@2",
  Y: "g1 g2 g1 ~ a1@2 bb1 ~@3 a1@2 g1@2 ~ [c2,d2]", Z: "eb2@2 eb3@2 eb2@2 eb2@2 e2 ~@6 eb2",
  AA: "g1 g2 g1 ~ g1 ~ g1 ~@3 g2@3 f2@2 g2, ~@10 f2 ~@5",
  AB: "g1 ~ g2 ~ bb1@2 eb2@2 eb2 ~ eb3 ~ eb2@2 ~ eb2, ~@12 db2 ~@3",
  AC: "a2 g2 a2 g2 a2 ~@2 g2 a2 ~ d2@2 f2@2 g2@2, ~@12 d2 ~@3", AD: "a2 g2 a2 g2 a2@2 ~ f2 g2 ~ f2@2 g2@2 bb2@2",
  AE: "g1@2 g2 ~ bb1@2 eb2@2 ~@2 eb3 ~ eb2@2 ~ eb2", AF: "f2 ~@7", AG: "~@4 c2 bb1 ab1 f1@3 ab1 ~@4 f1",
  AH: "c2 bb1 ab1 f1@3 ab1 ~@3 ab1 ~ bb1@3 ~", AI: "f1 ~@2 f1 c2 bb1 ab1 f1@3 ab1 ~ f1 ~@2 f1",
  AJ: "c2 bb1 ab1 f1@3 ab1 ~ f1 ~@3 g2@3 f2, ~@12 f2 ~@3", AK: "g1 ~ g2 ~ bb1@2 eb2@2 ~@2 eb3 ~ eb2@3 ~",
  AL: "f2 ~@3 f2@3 ~ d2 ~ d2 ~ d2@2 c2 d2", AM: "~ g2 a2 g2 a2@2 ~ f2 c3@2 bb2 ~ f2@2 g2@2, ~@8 b2 ~@7",
  AN: "g1@2 g2 ~ bb1@2 eb2@2 e2 ~ eb3 ~ eb2@2 ~ eb2", AO: "a2 g2 a2 g2 a2 ~@2 g2 a2 ~ d2@2 f2@2 g2@2",
  AP: "g1 ~ g2 ~ bb1@2 eb2@2 ~@2 eb3 ~ eb2@3 eb2", AQ: "f2 ~@3 f2@3 eb2 d2 ~ d2 ~ d2@2 f2 g2",
  AR: "a2 g2 a2 g2 a2@2 ~ g2 a2 ~ f2 ~ g2@2 f2@2", AS: "~@4 c2 bb1 ab1 f1@3 ab1 ~@5",
  AT: "c2 bb1 ab1 f1@3 ab1 ~@3 ab1 ~ bb1@3 ab1", AU: "f1 ~@2 f1 c2 bb1 ab1 f1@3 ab1 ~@4 f1",
  AV: "c2 bb1 ab1 f1@3 ab1 ~@3 ab1 ~ ab1 bb1@2 ab1", AW: "f1 ~@2 f1 [bb1,c2] bb1 ab1 f1@3 ab1 ~@5",
  AX: "c2 bb1 ab1 f1@3 ab1 ~@8 f1", AY: "c2 bb1 ab1 f1@3 ab1 ~@3 ab1 ~ bb1@2 ~ ab1, ~@12 ab1 ~@3",
  AZ: "c2 bb1 ab1 f1@3 ab1 ~@4 f1 g2@3 f2, ~@12 f2 ~@3", BA: "a2 g2 a2 g2 a2@2 ~ g2 a2 ~ d2@2 g2@2 ~ f2, ~@12 f2 ~@3",
  BB: "eb2@2 eb3@2 eb2 ~ eb2 ~@8 eb2", BC: "g1 g2 g1 ~ a1@2 bb1@2 ~ g1 a1@2 g1@2 f2 c2",
  BD: "g1 g2 g1 ~ a1@2 bb1@2 ~ g1 a1 ~ g1@2 ~@2", BE: "g1 g2 g1 ~ g1 ~ g1@2 ~@2 f2 g1 [f2,g2] ~ bb2@2",
  BF: "g1@2 g2 ~ bb1@2 eb2@2 db2 ~ eb3 ~ eb2@2 ~ g2", BG: "g1 ~ g2 ~ bb1@2 eb2@2 ~@2 eb3 ~ eb2@2 ~ g2",
  BH: "a2 g2 a2 g2 a2@2 ~ d2 c3@2 bb2 ~ [e2,f2] ~ g2@2, ~@8 bb2 ~@7", // Fmaj7
  BI: "g1 ~ g2 ~ bb1@2 eb2@2 eb3 ~ eb3 ~ [eb3,gb3] ~ a2 eb2", BJ: "g2 a2 g2 ~ a2@2 ~ d2 f2 ~ g2 ~ d2@2 f2@2",
  BK: "g1@2 g2 ~ bb1@2 eb2@2 ~@2 eb3 ~ eb2@2 ~ eb2, ~@12 db2 ~@3", BL: "a2 g2 a2 g2 a2@2 ~ g2 a2 ~ d2@2 f2 g2@2 f2",
  BM: "g1 ~ g2 ~ bb1@2 eb2@2 eb2 ~ eb3 ~ eb2@2 ~ eb2", BN: "g1@2 g2 ~ bb1@2 eb2@2 ~@2 eb3 ~ eb2@2 ~ g2, ~@12 db2 ~@3",
  BO: "a2 g2 a2 g2 a2@2 ~ f2 [g2,a2] f2 g2 f2 bb2@2 c3@2", BP: "g1 ~ g2 ~ bb1@2 eb2@2 e2 ~ eb3 ~ eb2@2 ~ eb2",
  BQ: "g1@2 g2 ~ bb1 ~ eb2@2 ~@2 eb3 ~ eb2@2 ~ g2", BR: "f2 ~ f2 ~ f2 ~@11",
})).s("gm_electric_bass_pick").gain(0.45)

// bass · electric bass pick · "Bass" · soft notes
const bass_soft = note(`<
  ~@9 A ~ B ~ A C ~@2 D ~ E ~@3 F ~ E@2 G ~ E@3 ~ E ~@3 H ~@2 I E J ~@2 E ~@3 E@2 F ~ K ~ E ~ L ~ E ~ E ~ E ~ E ~@2 M N
  ~ O ~ E ~@2 P Q R S ~ T ~ F ~ D ~ E ~ E@3 U V J E ~@4 W X ~ Y Z F AA ~ AB E ~ E AB AC ~ AD ~ AE ~ E ~ E ~ AF J E ~@13
  AG ~@5 AG ~@3 X ~ AH ~ E AI AJ J F ~@2 E ~@2 AK ~@7 AL ~@3 E ~ AE ~ E ~ F ~ E ~ AM AN E ~ AO ~@3 AE ~@2 AP F ~@3 AO AQ
  E ~ AR ~@3
>`.pickRestart({
  A: "~@15 eb2", B: "~@8 e2 ~@7", C: "~@12 eb2 ~@3", D: "~@8 eb2 ~@6 eb2", E: "~@8 eb2 ~@7", F: "~@8 eb2 ~@5 eb2 ~",
  G: "~@8 [db2,eb2] ~@7", H: "~@6 eb2@2 eb2 ~@7", I: "~@9 g1 ~@6", J: "~@14 gb2 ~", K: "~@8 eb2 ~@6 db2",
  L: "~@12 db2 ~@3", M: "~@6 ab1 ~@9", N: "~@2 gb3 ~@13", O: "d2 ~@15", P: "~@7 bb1 ~ g1 ~@6", Q: "~@12 b1 ~@3",
  R: "eb2 ~@7 eb2 ~@7", S: "~@8 g1 ~@7", T: "~@6 db2 ~@9", U: "~@4 b2 ~@7 a2 ~@3", V: "~@8 [eb2,e2,db3] ~@7",
  W: "~@8 ab1 ~@6 ab1", X: "~@14 ab1 ~", Y: "~@8 [db2,eb2] ~@6 eb2", Z: "~@4 e2 ~@2 eb2 ~@8", AA: "a2 ~@15",
  AB: "eb2 ~@15", AC: "~@8 [eb2,db3] ~@5 eb2 ~", AD: "~@8 db2 ~@7", AE: "~@14 eb2 ~", AF: "a1 ~@11 db2 ~@3",
  AG: "~@15 f1", AH: "~@5 a1 ~@2 eb2 ~@7", AI: "~@4 b2 ~@11", AJ: "~@8 db3 ~@7", AK: "~@4 db2 ~@11",
  AL: "~@2 [eb2,gb3] ~@5 eb2 ~@7", AM: "~@14 b2 ~", AN: "~@6 f2 ~@9", AO: "~@8 eb2 ~@3 db2 ~ eb2 ~",
  AP: "~@5 eb2 ~@2 eb2 ~@7", AQ: "~@15 g2", AR: "~@8 [eb2,eb3] ~@5 eb2 ~",
})).s("gm_electric_bass_pick").gain(0.18)

// drums · kick
const kick = s("bd").struct("<~ [x!4]!207 [x!2 ~@2]>").gain(0.59)

// drums · clap
const clap = s("cp").struct("<[~@3 x] [~ x ~ x]!207 [~ x ~@2]>").gain(0.46)

// drums · clap · soft notes
const clap_soft = s("cp").struct(`<
  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 ~ 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 ~ 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 ~ A ~ A ~ A ~ A ~ A ~@2
>`.pickRestart({
  A: "~@5 x ~@2",
})).gain(0.26)

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!96 ~@6 [~ x ~ x]!32 ~@16 [~ x ~ x]!56 [~@4 x ~@7 x ~@2 x] [x!3 ~@5]>")
  .gain(0.59)

// drums · low tom
const low_tom = s("lt").struct("<~@97 A B@4 C ~@32 B@15 C ~@57 D>".pickRestart({
  A: "~@15 x", B: "x ~@14 x", C: "x", D: "~ x ~@2",
})).gain(0.52)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~ A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B@17 A B A B A B A B A B A B A B A B@17 A B A B A B A
  B A B A B A B A B ~@6 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~@16 A B A C A B A B@17 A B A B
  A B A C A B A B A B A C A B A B A B A C A B A B A B A B A D
>`.pickRestart({
  A: "~@3 x ~ x ~ x", B: "~ x ~ x ~ x ~ x", C: "~ x ~ x ~ x ~@2", D: "~ x ~@6",
})).gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct("<~@208 [~ x ~@6]>").gain(0.66)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@17 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@17 A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~@6 B ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@16 B ~@2 A B ~@2 A ~@17 A ~ A ~
  A ~ A B ~@2 A ~ A ~ A B ~@2 A ~ A ~ A B ~@2 A ~ A ~ A ~@3
>`.pickRestart({
  A: "x", B: "~@3 x",
})).gain(0.59)

// drums · high tom
const high_tom = s("ht").struct("<~@208 x>").gain(0.66)

// drums · ride
const ride = s("rd").struct("<~@102 A ~@47 A ~@3 A ~@27 A ~@7 A ~@7 A ~@10>".pickRestart({
  A: "~@3 x",
// … 30 more lines

More by Will Smith