Strudelify

Count Me In

Gary Lewis

KeyF majorTempo163 bpm
0:00/0:00
// Count Me In — Gary Lewis
// 163 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: duplicate parts dropped: ch 2 "Vocal Melody" lead 2 sawtooth (copy of ch 1 "Vocal Melody" english horn)
// note: Full arrangement: all 99 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(163/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 · piano · "Piano Treble"
const piano = note(`<
  A B C D E F G H I J K L M N O P@2 Q R S E T U H I J K L M N O P@2 V R S E T W X Y Z AA AB AC@3 AD@7 AE@8 AF@8 AG@8
  AH@3 AI@3 AJ@2 AK@3 AL AM ~@8
>`.pickRestart({
  A: "~@3 f2 ~@3 [c4,f4,a4,c5], [f1,f2]@3 ~ f2@2 [f1,f2]@2, ~@2 c5@3 ~@3, ~@2 [c4,f4,a4]@2 ~ [c4,f4,a4,c5]@2 ~", // F
  B: "~@3 ab2 ~@3 [c4,eb4,ab4], [ab1,ab2]@3 ~ ab2@2 [ab1,ab2]@2, ~@2 [c4,eb4,ab4]@2 ~ [c4,eb4,ab4]@2 ~", // Ab
  C: "~@3 db2 ~@3 [db4,f4,ab4], [db1,db2]@3 ~ db2@2 [db1,db2]@2, ~@2 [db4,f4,ab4]@2 ~ [db4,f4,ab4]@2 ~", // Db
  D: "gb1@2 ~ gb2 ~@3 [c4,e4,ab4], gb2@3 ~ gb2@2 [gb1,gb2]@2, ~@2 [c4,e4,ab4]@3 [c4,e4,ab4]@2 ~", // Caug Gb Caug
  E: "~@7 [c4,f4,a4], f2@3 c3@3 f2@2, ~@2 [c4,f4,a4]@2 ~ [c4,f4,a4]@2 ~", // F
  F: "~@7 [c4,eb4,ab4], ab2@3 eb3@3 ab2@2, ~@2 [c4,eb4,ab4]@2 ~ [c4,eb4,ab4]@2 ~", // Ab
  G: "~@7 [db4,f4,ab4], db3@3 ab2@3 db3@2, ~@2 [db4,f4,ab4]@2 ~ [db4,f4,ab4]@2 ~", // Db
  H: "~@7 [bb3,e4,ab4], gb2@3 db3@3 gb2@2, ~@2 [bb3,e4,ab4]@3 [bb3,e4,ab4]@2 ~", // Bbm7b5
  I: "~@7 [c4,f4,a4], f2@3 c3@3 c3@2, ~@2 [c4,f4,a4]@2 ~ [c4,f4,g4]@2 ~", // F Csus4
  J: "[d4,f4,bb4] [c4,f4,a4] ~ [c4,f4,g4] ~@3 [c4,f4,a4], f2@3 c3@3 d3@2, ~@5 [c4,f4,g4]@2 ~", // Bb F Csus4 F Csus4
  K: "~@7 [c4,e4,a4], e3@3 a2@3 e3@2, ~@2 [c4,e4,a4]@3 [c4,e4,a4]@2 ~", // Am
  L: "~@4 [e4,a4,c5] ~@2 [d4,g4,bb4], c3@3 g2@3 c3@2, ~@2 c4@3 [d4,g4,bb4]@2 ~, ~ [e4,a4] ~@2", // Am Gm A5
  M: "~@5 [c4,f4,g4]@2 [c4,f4,a4], f2@3 c3@3 ~@2, ~ [c4,f4,a4] ~@2", // Csus4 F
  N: "[d4,f4,bb4] [c4,f4,a4] ~ [c4,f4,g4] ~ [c4,f4,g4]@2 [c4,f4,a4], f2@3 c3@3 ~@2", // Bb F Csus4 F
  O: "a2@2 ~ e3@2 ~@2 [c4,e4,a4], ~@2 [c4,e4,a4]@3 [c4,e4,a4]@2 ~, ~@3 a2", // Am
  P: "[f1@2 ~@2 [eb4,f4,a4,c5] ~@5 d5 ~ [d4,f4,bb4,c5] d5 ~ [d4,f4,bb4,d5], f2@3 g2@3 ~@5 f2@3 f3@2, ~@2 [a3,eb4,f4]@2 ~ [eb4,a4,f5]@2 [f4,bb4,d5]@2 ~ [d4,f4,bb4]@2 ~ [d4,f4,bb4]@2 ~, ~@3 g1@2 ~ [a1,a2]@2 [bb1,bb2]@3 ~@5]/2", // F7 Bb F7 Bb A Bb
  Q: "[g4,bb4,eb5] [f4,bb4,d5] ~ [f4,bb4,c5]@2 ~@2 [d4,f4,bb4,d5], bb2@3 f2@3 f3@2, ~@5 [f4,bb4,d5]@2 ~", // Eb Bb Fsus4 Bb
  R: "~@7 [d4,g4,bb4], d3@3 g2@3 d3@2, ~@2 [d4,g4,bb4]@3 [d4,g4,bb4]@2 ~", // Gm
  S: "~@7 [d4,g4,bb4], g2@3 d3@3 d3@2, ~@2 [d4,g4,bb4]@3 [d4,g4,bb4]@2 ~", // Gm
  T: "~@7 [c4,eb4,ab4], ab2@3 eb3@3 ab2@2, ~@2 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~", // Ab
  U: "~@7 [db4,f4,ab4,c5], db3@3 ab2@3 db3@2, ~@2 c5@3 ~@3, ~@2 [db4,f4,ab4]@2 ~ [db4,f4,ab4,c5]@2 ~", // Dbmaj7 Db Dbmaj7
  V: "[f4,bb4,eb5] [f4,bb4,d5] ~ [f4,bb4,c5]@2 ~@2 [d4,f4,bb4,d5], bb2@3 f2@3 f3@2, ~@5 [f4,bb4,d5]@2 ~", // Ebsus2 Bb Fsus4 Bb
  W: "~@7 [bb3,c4,e4], c3@3 g2@3 c3@2, ~@2 [bb3,c4,e4]@3 [bb3,c4,e4]@2 ~", // C7
  X: "~@2 [a4,c5,f5,a5]!2 [f4,g4,f5,g5] [a4,a5]@2 ~, ~@5 [c5,f5] ~@2", // F Fsus2 A F5
  Y: "[bb4,c5,bb5]@4 [a4,f5,a5]@2 [f4,g4,f5,g5]@4 [f4,a4,f5]@5 [c5,e5,a5,c6], c6 ~ c5@2 ~@4", // Bbsus2 Dm Fsus2 F Am
  Z: "[c5,e5,a5,c6]@3 [a4,c5,e5,a5] [a4,c5,e5,a5]@3 [e4,a4,c5,e5] [e4,a4,c5,e5]@3 [c4,e4,a4,c5] ~ [c4,e4,a4,c5]@3", // Am
  AA: "~@4 [c4,c5]@3 [d4,d5]@3 ~ [e4,e5]@2 [f4,f5]@3", // C D E F
  AB: "[g4,g5]@3 ~@3 [a4,c5,f5,a5]@2 [a4,c5,f5,a5]@2 [f4,g4,f5,g5]@2 [a4,a5]@4, ~@6 [c5,f5] ~", // G F Fsus2 A F5
  AC: "[~@2 [bb4,c5,bb5]@4 [a4,f5,a5]@2 [f4,g4,f5,g5]@4 [f4,a4,f5]@5 [e5,a5,c6,e6] [e5,a5,c6,e6]@3 [c5,e5,a5,c6] ~ [c5,e5,a5,c6]@3 [a4,c5,e5,a5] [a4,c5,e5,a5]@3 [e4,a4,c5,e5] [e4,a4,c5,e5]@3 ~@4 [e3,c4,c5]@3 ~ [f3,d4,d5]@3 [g3,e4,e5]@2 [a3,f4,f5], ~ c6 ~ c5@2 ~@19]/3", // Bbsus2 Dm Fsus2 F Am C Dm C …
  AD: "[~@2 [g4,g5]@3 ~ c4@3 ~@10 [c4,f4,a4]@2 [d4,f4,bb4]@2 [c4,f4,a4]@2 ~@2 [c4,f4,g4]@2 ~@6 [c4,f4,a4]@2 ~@14 [c4,e4,a4]@2 ~@8 [e4,a4,c5]@2 ~@4 [c4,e4,bb4]@2 ~@10 [c4,f4,g4]@4 [c4,f4,a4]@2 [d4,f4,bb4]@2 [c4,f4,a4]@2 ~@2 [c4,f4,g4]@2 ~@2 [c4,f4,g4]@4 [c4,f4,a4]@2 a2@4 ~@2 e3@4 [c4,e4,a4], ~@5 f2@6 c3@6 c3@4 f2@6 c3@6 d3@4 e3@6 a2@6 e3@4 c3@6 g2@6 c3@4 f2@6 c3@6 ~@4 f2@6 c3@6 ~@15, ~@9 c4@6 [c4,f4,g4]@4 ~@12 [c4,f4,g4]@4 ~@6 [c4,e4,a4]@6 [c4,e4,a4]@4 ~@6 c4@6 [d4,bb4]@4 ~@6 [c4,f4,a4]@4 ~@28 [c4,e4,a4]@6 ~, ~@9 [f4,a4]@4 ~@44 [e4,a4]@4 ~@2 g4@6 ~@43]/7", // G F Bb F Csus4 F Am C7 …
  AE: "[~@3 [c4,e4,a4]@2 f1@4 ~@4 [eb4,f4,a4,c5]@2 ~@10 d5@2 ~@2 [d4,f4,bb4,c5]@2 d5@2 ~@2 [d4,f4,bb4,d5]@2 [g4,bb4,eb5]@2 [f4,bb4,d5]@2 ~@2 [f4,bb4,c5]@4 ~@4 [d4,f4,bb4,d5]@2 ~@14 [d4,g4,bb4]@2 ~@14 [d4,g4,bb4]@2 ~@14 [c4,f4,a4]@2 ~@14 [c4,eb4,ab4]@2 ~@6 ab2@4 [db4,f4,ab4], ~ a2@4 f2@6 g2@6 ~@10 f2@6 f3@4 bb2@6 f2@6 f3@4 d3@6 g2@6 d3@4 g2@6 d3@6 d3@4 ~@6 c3@6 ~@10 eb3@6 ~@4 db3@6 ~@5, ~@9 [a3,eb4,f4]@4 ~@2 [eb4,a4,f5]@4 [f4,bb4,d5]@4 ~@2 [d4,f4,bb4]@4 ~@2 [d4,f4,bb4]@4 ~@12 [f4,bb4,d5]@4 ~@6 [d4,g4,bb4]@6 [d4,g4,bb4]@4 ~@6 [d4,g4,bb4]@6 [d4,g4,bb4]@4 ~@6 [c4,f4,a4]@4 ~@2 [c4,f4,a4]@4 ~@6 [c4,eb4,ab4]@6 [c4,eb4,ab4]@4 ~@6 [db4,f4,ab4]@4 ~@3, ~@11 g1@4 ~@2 [a1,a2]@4 [bb1,bb2]@6 ~@58 f2@6 ~@6 f2@4 ab2@6 ~@6 ab2@4 ~@11]/8", // Am F7 Bb Eb Bb Fsus4 Bb Gm …
  AF: "[~@3 [db4,f4,ab4]@2 ~@14 [bb3,e4,ab4]@2 ~@14 [c4,f4,a4]@2 [d4,f4,bb4]@2 [c4,f4,a4]@2 ~@2 [c4,f4,g4]@2 ~@6 [c4,f4,a4]@2 ~@14 [c4,e4,a4]@2 ~@8 [e4,a4,c5]@2 ~@4 [d4,g4,bb4]@2 ~@10 [c4,f4,g4]@4 [c4,f4,a4]@2 [d4,f4,bb4]@2 [c4,f4,a4]@2 ~@2 [c4,f4,g4]@2 ~@2 [c4,f4,g4]@4 [c4,f4,a4]@2 a2@4 ~@2 e3@4 [c4,e4,a4], ~ db3@4 gb2@6 db3@6 gb2@4 f2@6 c3@6 c3@4 f2@6 c3@6 d3@4 e3@6 a2@6 e3@4 c3@6 g2@6 c3@4 f2@6 c3@6 ~@4 f2@6 c3@6 ~@15, ~@9 [bb3,e4,ab4]@6 [bb3,e4,ab4]@4 ~@6 [c4,f4,a4]@4 ~@2 [c4,f4,g4]@4 ~@12 [c4,f4,g4]@4 ~@6 [c4,e4,a4]@6 [c4,e4,a4]@4 ~@6 c4@6 [d4,g4,bb4]@4 ~@6 [c4,f4,a4]@4 ~@28 [c4,e4,a4]@6 ~, ~@73 [e4,a4]@4 ~@51]/8", // Db Bbm7b5 F Bb F Csus4 F Am …
  AG: "[~@3 [c4,e4,a4]@2 f1@4 ~@4 [eb4,f4,a4,c5]@2 ~@10 d5@2 ~@2 [d4,f4,bb4,c5]@2 d5@2 ~@2 [d4,f4,bb4,d5]@2 [g4,bb4,eb5]@2 [f4,bb4,d5]@2 ~@2 [f4,bb4,c5]@4 ~@4 [d4,f4,bb4,d5]@2 ~@14 [d4,g4,bb4]@2 ~@14 [d4,g4,bb4]@2 ~@14 [c4,f4,a4]@2 ~@14 [c4,eb4,ab4]@2 ~@6 g2@4 [bb3,c4,e4], ~ a2@4 f2@6 g2@6 ~@10 f2@6 f3@4 bb2@6 f2@6 f3@4 d3@6 g2@6 d3@4 g2@6 d3@6 d3@4 ~@6 c3@6 ~@10 eb3@6 ~@4 c3@6 ~@5, ~@9 [a3,eb4,f4]@4 ~@2 [eb4,a4,f5]@4 [f4,bb4,d5]@4 ~@2 [d4,f4,bb4]@4 ~@2 [d4,f4,bb4]@4 ~@12 [f4,bb4,d5]@4 ~@6 [d4,g4,bb4]@6 [d4,g4,bb4]@4 ~@6 [d4,g4,bb4]@6 [d4,g4,bb4]@4 ~@6 [c4,f4,a4]@4 ~@2 [c4,f4,a4]@4 ~@6 [c4,eb4,ab4]@6 [c4,eb4,ab4]@4 ~@6 [bb3,c4,e4]@6 ~, ~@11 g1@4 ~@2 [a1,a2]@4 [bb1,bb2]@6 ~@58 f2@6 ~@6 f2@4 ab2@6 ~@6 ab2@4 ~@11]/8", // Am F7 Bb Eb Bb Fsus4 Bb Gm …
  AH: "[~@3 [bb3,c4,e4]@2 ~@4 [a4,c5,f5,a5]@2 [a4,c5,f5,a5]@2 [f4,g4,f5,g5]@2 [a4,a5]@4 ~@2 [bb4,c5,bb5]@4 [a4,f5,a5]@2 [f4,g4,f5,g5]@4 [f4,a4,f5]@5 [c5,e5,a5,c6] [c5,e5,a5,c6]@3 [a4,c5,e5,a5] [a4,c5,e5,a5]@3 [e4,a4,c5,e5] [e4,a4,c5,e5]@3, ~ c3@4 ~@10 [c5,f5]@2 ~@4 c6@2 ~@2 c5@4 ~@19]/3", // C7 F Fsus2 A Bbsus2 Dm Fsus2 F …
  AI: "[[c4,e4,a4,c5] [c4,e4,a4,c5]@3 ~@5 [c4,c5]@3 [d4,d5]@3 [e4,e5]@3 [f4,f5]@3 [g4,g5]@3 ~@3 [a4,c5,f5,a5]@2 [a4,c5,f5,a5]@2 [f4,g4,f5,g5]@2 [a4,a5]@4 ~@2 [bb4,c5,bb5]@4 [a4,f5,a5]@2 [f4,g4,f5,g5]@3, ~@33 [c5,f5]@2 ~@4 c6@2 ~@2 c5@4 ~]/3", // Am C D E F G F Fsus2 …
  AJ: "[~ [f4,a4,f5]@5 [e5,a5,c6,e6] [e5,a5,c6,e6]@3 [c5,e5,a5,c6] [c5,e5,a5,c6]@3 [a4,c5,e5,a5] [a4,c5,e5,a5]@3 ~ [e4,a4,c5,e5] [e4,a4,c5,e5]@3 ~@4 [c4,c5]@3 [d4,d5]@2]/2", // F Am C D
  AK: "[~@2 [e4,e5]@2 [f4,f5]@3 [g4,g5]@2 ~@4 [a4,c5,f5,a5]@2 [a4,c5,f5,a5]@2 [f4,g4,f5,g5]@2 [a4,a5]@4 ~@2 [bb4,c5,bb5]@4 [a4,f5,a5]@2 [f4,g4,f5,g5]@4 [f4,a4,f5]@5 [c5,e5,a5,c6] [c5,e5,a5,c6]@3 [a4,c5,e5,a5] ~ [a4,c5,e5,a5]@2, ~@19 [c5,f5]@2 ~@4 c6@2 ~@2 c5@4 ~@15]/3", // E F G F Fsus2 A Bbsus2 Dm …
  AL: "~ [e4,a4,c5,e5] [e4,a4,c5,e5]@3 [c4,e4,a4,c5] [c4,e4,a4,c5]@3 ~@4 [c4,c5]@3", // Am C
  AM: "~ [d4,d5]@3 [e4,e5]@2 [f4,f5]@3 [g4,g5]@3 ~@4", // D E F G
})).s("gm_piano").gain(0.6).pan(0.7)

// chords · piano · "Piano Treble" · soft notes
const piano_soft = note("<~@47 A ~@43 B C D E F@2 G H>".pickRestart({
  A: "~@5 [g4,g5] ~@10", B: "[a4,c5,f5,a5]!2 [f4,g4,f5,g5] [a4,a5]@2 ~ [bb4,c5,bb5]@2, ~@3 [c5,f5] ~@2 c6 ~",
  C: "[a4,f5,a5]@2 [f4,g4,f5,g5]@4 [f4,a4,f5]@5 [e5,a5,c6,e6] [e5,a5,c6,e6]@3 [c5,e5,a5,c6], c5 ~@3", // Dm Fsus2 F Am
  D: "[c5,e5,a5,c6]@3 [a4,c5,e5,a5] [a4,c5,e5,a5]@3 [e4,a4,c5,e5] [e4,a4,c5,e5]@3 ~@5", // Am
  E: "[c4,c5]@3 [d4,d5]@3 [e4,e5]@3 [f4,f5]@3 [g4,g5]@2 ~@2", // C D E F G
  F: "[~@2 [a4,c5,f5,a5]@2 [a4,c5,f5,a5]@2 [f4,g4,f5,g5]@2 [a4,a5]@4 ~@2 [bb4,c5,bb5]@4 [a4,f5,a5]@2 [f4,g4,f5,g5]@4 [f4,a4,f5]@5 [c5,e5,a5,c6] [c5,e5,a5,c6]@2, ~@4 [c5,f5] ~@2 c6 ~ c5@2 ~@5]/2", // F Fsus2 A Bbsus2 Dm Fsus2 F Am …
  G: "~ [a4,c5,e5,a5] [a4,c5,e5,a5]@3 [e4,a4,c5,e5] [e4,a4,c5,e5]@3 [c4,e4,a4,c5] [c4,e4,a4,c5]@3 ~@3", // Am
  H: "~ [c4,c5]@3 [d4,d5]@3 [e4,e5]@2 [f4,f5]@3 [g4,g5]@2 ~@2", // C D E F G
})).s("gm_piano").gain(0.23).pan(0.7)

// chords · drawbar organ · "Organ"
const drawbar_organ = note(`<
  ~@4 A B C D ~@12 E F G D ~@12 E F H E I J K@6 ~@11 L@5 ~@11 M@5 N O@3 P@8 ~@7
>`.pickRestart({
  A: "[c5,f5,a5]", B: "[c5,eb5,ab5]", C: "[db5,f5,ab5]", D: "[bb4,e5,ab5]", E: "[a4,c5,f5]", F: "[eb4,ab4,c5]",
  G: "[db5,f5,ab5,c6]", H: "[c4,e4,bb4]", I: "[c4,f4,a4]", J: "[e4,a4,c5]",
  K: "[~ [c4,e4,bb4]@17 [a4,c5,f5]@16 [c4,f4,a4]@16 [e4,a4,c5]@17 [c4,e4,bb4]@18 ~@11]/6", // C7 F Am C7
  L: "[~@5 [a4,c5,f5]@16 [eb4,ab4,c5]@16 [db5,f5,ab5]@16 [bb4,e5,ab5]@16 ~@11]/5", // F Ab Db Bbm7b5
  M: "[~@5 [a4,c5,f5]@16 [eb4,ab4,c5]@16 [c4,e4,bb4]@16 [a4,c5,f5]@16 [c4,f4,a4]@11]/5", N: "~@5 [e4,a4,c5]@11",
  O: "[~@5 [c4,e4,bb4]@18 [a4,c5,f5]@16 [c4,f4,a4]@9]/3", // C7 F
  P: "[~@7 [e4,a4,c5]@17 [c4,e4,bb4]@17 [a4,c5,f5]@16 [c4,f4,a4]@16 [e4,a4,c5]@17 [c4,e4,bb4]@18 [a4,c5,f5]@16 ~@4]/8", // Am C7 F Am C7 F
})).s("gm_drawbar_organ").gain(0.37).pan(0.3)

// chords · drawbar organ · "Organ" · soft notes
const drawbar_organ_soft = note("<~@91 A@8>".pickRestart({
  A: "[~@6 [c4,f4,a4]@8 [e4,a4,c5]@8 [c4,e4,bb4]@9 [a4,c5,f5]@8 [c4,f4,a4]@8 [e4,a4,c5]@8 [c4,e4,bb4]@8 ~]/8", // F Am C7 F Am C7
})).s("gm_drawbar_organ").gain(0.15).pan(0.3)

// other · celesta · "Celeste"
const celesta = note("<A@2 B C A@2 B C ~@12 A@2 B C ~@12 A@2 B C ~@19 D E F G@2 ~@11 D E F G@2 ~@19>".pickRestart({
  A: "[c6,c7]@3 [c6,c7]@3 [c6,c7]@2", B: "[eb6,eb7]@3 [c6,c7]@3 [bb5,bb6]@2", C: "[c6,c7]",
  D: "~@5 [c6,c7]@6 [c6,c7]@5", E: "~ [c6,c7]@4 [c6,c7]@6 [c6,c7]@5", F: "~ [c6,c7]@4 [eb6,eb7]@6 [c6,c7]@5",
  G: "[~ [bb5,bb6]@4 [c6,c7]@16 ~@11]/2", // Bb C
})).s("gm_celesta").gain(0.46).pan(0.4)

// other · glockenspiel · "Bells"
const glockenspiel = note(`<
  A@2 B C A@2 B D@2 ~@2 E F ~@7 A@2 B G@2 ~@11 A@2 B C ~@2 H I ~@2 J K ~@2 L M ~@7 N O P Q R ~@2 L R ~@7 N O P S@2 ~ T U
  ~@2 V W ~@3 X ~@8
>`.pickRestart({
  A: "c6@3 c6@3 c6@2", B: "eb6@3 c6@3 bb5@2", C: "c6",
  D: "[~@6 a6 g6 f6 e6 d6 ~ b5 a5 g5 f5@2 ~@15, c6@11 c6@2 ~@19]/2", E: "~@5 c7 bb6 a6 g6 f6 e6 d6 c6 b5 a5 g5",
  F: "f5 ~@3", G: "[c6@4 c7 bb6 a6 g6 f6 e6 d6 c6 b5 a5 g5 f5@4 ~@13]/2", H: "~@5 c7 bb6 a6 g6 ~ f6 e6 d6 c6 b5 a5",
  I: "g5 ~@15", J: "~@7 c7 ~ bb6 a6 g6 f6 e6 d6 c6", K: "b5 a5 g5 ~@13", L: "~@9 c7 bb6 a6 g6 f6 e6 d6",
  M: "c6 b5 a5 g5 f5 f5@4 ~@7", N: "~@5 c6@6 c6@5", O: "~ c6@4 c6@6 c6@5", P: "~ c6@4 eb6@6 c6@5",
  Q: "~ bb5@4 c6@4 c7 bb6 a6 g6 f6 e6 d6", R: "c6 b5 a5 g5 f5@4 ~@8", S: "[~ bb5@4 c6@16 ~@11]/2",
  T: "~@10 c7 bb6 a6 g6 f6 e6", U: "d6 ~ c6 b5 a5 g5 ~@10", V: "~@14 a6 g6", W: "~ f6 e6 d6 c6 b5 a5 g5 ~@8",
  X: "~ a6 g6 f6 e6 d6 c6 b5 a5 g5 ~@6",
})).s("gm_glockenspiel").gain(0.64).pan(0.7)

// bass · fretless bass · "Bass"
const bass = note(`<
  ~@4 A B C D E@2 F G H@2 F I J K L M N O C P E@2 F G H@2 F I J K L M N O Q E@2 R S@5 T U V W X@2 V Y Z AA AB AC AD AE
  AF AG@2 U V W X@2 V Y Z AA AB AC AD AE AH AI U V AJ@8 AK AL@2 ~@7
>`.pickRestart({
  A: "f2@3 c3@3 f2@2", B: "ab2@3 eb2@4 ~", C: "db2@3 ab2@3 db2@2", D: "gb2@3 gb1@4 ~", E: "f1@3 c2@3 c2@2",
  F: "a1@3 e2@3 a1@2", G: "c2@3 g1@3 c2@2", H: "f2@3 c3@3 c2@2", I: "f1@2 ~ g1@2 ~ a1@2", J: "bb1@3 f1@3 f1@2",
  K: "bb1@3 f1@3 bb1@2", L: "g1@3 d2@3 d2@2", M: "g1@3 d2@3 g1@2", N: "f1@3 c2@3 f1@2", O: "ab1@3 eb2@3 ab1@2",
  P: "gb1@3 db2@3 gb1@2", Q: "c2@3 g1@3 c1@2", R: "a1@6 e2@6 ~ a1@3",
  S: "[~ c2@6 g1@7 c2@4 f2@6 c2@6 c2@4 f2@6 c3@6 c2@4 a1@6 ~ e2@6 a1@4 c2@7 g1@6]/5", T: "c2@4 ~ f1@6 c2@5",
  U: "~ c2@4 f1@6 c2@5", V: "~ c2@4 a1@6 e2@5", W: "~ a1@4 c2@6 g1@5", X: "~ c2@4 f2@6 c3@5",
  Y: "~ a1@4 f1@4 ~@2 g1@4 ~", Z: "~ a1@4 bb1@6 f1@5", AA: "~ f1@4 bb1@6 f1@5", AB: "~ bb1@4 g1@6 d2@5",
  AC: "~ d2@4 g1@6 d2@5", AD: "~ g1@4 f1@6 c2@5", AE: "~ f1@4 ab1@6 eb2@5", AF: "~ ab1@4 db2@6 ab2@5",
  AG: "[~ db2@4 gb2@6 gb1@8 ~@2 f1@6 c2@5]/2", AH: "~ ab1@4 c2@6 g1@5", AI: "~ c1@4 f1@6 c2@5",
  AJ: "[~ a1@4 c2@7 g1@7 c2@4 f2@6 c3@6 c2@4 f2@6 c3@6 c2@4 a1@6 e2@6 ~ a1@4 c2@6 g1@7 c2@4 f1@6 c2@6 c2@4 f1@6 c2@6 c2@4 a1@6 ~]/8",
  AK: "e2@3 a1@2 c2@3", AL: "[~ g1@6 c2@4 ~ f2@6 ~@14]/2",
})).s("gm_fretless_bass").gain(0.63)

// bass · fretless bass · "Bass" · soft notes
const bass_soft = note("<~@91 A@8>".pickRestart({
  A: "[~@2 c3@6 c2@4 f2@6 c3@6 c2@4 a1@6 e2@6 a1@4 c2@7 g1@7 c2@4 f1@6 c2@6 c2@4 f1@6 c2@6 c2@4 a1@6 e2@6 a1@4 c2@6 g1@6 c2@4 ~@2]/8",
})).s("gm_fretless_bass").gain(0.24)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@91
  [~ x!2 ~@3 x ~]!3
  [x ~@2 x ~@2 x ~@3 x ~ x ~ x ~]
  [~@2 x!2 ~@3 x]!3
  [~ x ~@2 x ~@2 x ~@2 x ~ x ~@3]
>`).gain(0.16)

// drums · rim
const rim = s("rim").struct("<~@3 [~@3 x] ~@95>").gain(0.49)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@91
  [x!2]!3
  [x ~@2 x ~@2 x ~@3 x!4 ~@2]
  [~ x ~@3 x ~@2]!3
  [~ x ~@2 x ~@2 x ~@2 x!4 ~@2]
>`).gain(0.16)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@4 A@37 B ~ C@2 D ~ E F@33 G H I@2 J K L M N ~@9>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@8 x ~@2", C: "~@3 x ~@3 x", D: "~@7 x ~@7 x", E: "~@9 x ~@6", F: "~ x ~@7 x ~@6",
  G: "~ x ~@14", H: "~@11 x ~@4", I: "~@3 x ~@7 x ~@4", J: "~ x ~@2", K: "~@13 x ~@2", L: "~@5 x ~@7 x ~@2",
  M: "~@5 x ~@8 x ~", N: "~@3 x ~@4",
})).gain(0.44)

// drums · pedal hat · soft notes
const pedal_hat_soft = s("hh").struct("<~@91 [x!2]!3 ~ [~ x ~@3 x ~@2]!3 ~>").gain(0.16)

// drums · open hat
const open_hat = s("oh").struct("<~@4 A@37 B C D A E F G H@7 I H@15 I H@9 J K H@2 L M H N O P ~@8>".pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x ~ x ~ x ~@2 x ~ x", C: "~ x ~@14", D: "~ x!7", E: "x ~ x ~ x ~@2 x ~ x ~ x ~ x ~ x",
  F: "~ x ~ x ~@12", G: "~@5 x ~ x ~ x ~ x ~ x ~ x", H: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x",
  I: "~@3 x ~ x ~ x ~ x ~ x ~ x ~ x", J: "~ x ~ x ~ x ~@10", K: "~@7 x ~ x ~ x ~ x ~ x", L: "~ x ~@2 x ~ x ~ x ~@7",
  M: "~@9 x ~ x ~ x ~ x", N: "~ x ~ x ~ x ~ x ~ x ~ x ~@2 x ~", O: "x!6 ~@2", P: "~@3 x",
})).gain(0.44)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@90 [~@7 x] [x!8]!2 [x!7 ~] [~@7 x] [x!8]!3 ~>").gain(0.16)

// drums · crash
const crash = s("cr").struct(`<
  ~@20 A ~@3 A ~@7 A ~@9 B C ~@2 D E ~@7 F ~@7 F ~@7 F ~@9 G H ~@2 I J ~@2 K L ~@8
>`.pickRestart({
  A: "x", B: "~ x ~@2 x ~@2 x ~@3 x ~@2 x ~", C: "~ x ~@6", D: "~@3 x ~@2 x ~@3 x ~@2 x ~@2", E: "x ~@4 x ~@10",
  F: "~@5 x ~@10", G: "~@5 x ~@3 x ~@2 x ~@2 x", H: "~@3 x ~@3 x ~@8", I: "~@8 x ~@2 x ~@2 x ~", J: "~@2 x ~@2 x ~@10",
// … 21 more lines

More by Gary Lewis