Strudelify

Rubberband Man

Spinners

KeyD minorTempo105 bpm
0:00/0:00
// Rubberband Man — Spinners
// 105 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 88 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(105/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 · trombone
const trombone = note(`<
  ~@4 A@4 B C D E F G@2 H I J@2 K L M N O P Q R Q S T@4 U@3 V K L M N O P Q R Q R W ~ W ~ W X Y K L M N O P Z AA Z AB AC
  AD W AD W X Y K L M N O P Z AA Z AB AC AD W AD W X AE
>`.pickRestart({
  A: "[[g4,bb4,eb5]@11 ~@3 [g4,bb4,eb5] [f4,bb4,d5]@12 ~@3 [f4,bb4,d5] [f4,a4,c5]@23 ~ ab4 a4 [d4,bb4] ab4 a4 f4 c4 d4@2]/4", // Eb Bb F Gm
  B: "[g4,bb4,eb5]@2 ~@12 [g4,bb4,eb5]!2", C: "~@6 [g4,bb4,eb5] [g4,bb4,eb5]@2 c5 d5 ~ [f4,f5]@3 ~",
  D: "[f4,f5]@2 [f4,f5]@2 [f4,f5]@2 [f4,f5] [f4,f5]@2 ab4 a4 [d4,bb4] ab4 a4 f4 d4", // F Gm
  E: "c6@2 a5 f5@2 ~ d5 eb5@2 d5@2 d5 c5@3 ~", F: "eb5@2 d5 eb5@2 c5@2 ~ a4@4 ~@4",
  G: "[eb5@2 c5 f5@2 ~ f5@2 a5 f5@2 f5@2 c5 d5 eb5@2 d5@2 c5@2 ~ a4@2 f4@4 ~@4]/2",
  H: "eb5 d5@2 eb5 c5@2 c5@2 f5@2 d5 f5@3 ~ d5", I: "f5@2 d5 f5@2 d5 a5@2 g5@4 ~@4",
  J: "[eb5@2 c5 f5@2 ~ d5 f5@2 f5@2 f5@2 ~ d5 eb5@2 ~ d5 d5@2 ~ c5@2 f4@4 ~@4]/2",
  K: "~@2 ab4@2 ab4@2 ~ bb4 c5@2 ab4 ab4@2 ~ f4 eb4", L: "eb4@2 bb4@2 bb4@4 ~@4 c5@2 bb4 ab4",
  M: "~@2 ab4@2 ab4@2 ~ bb4 c5@2 bb4 ab4@2 ~ f4!2", N: "eb4@2 bb4@2 bb4@4 ~@3 f5@2 ~ eb5@2",
  O: "~@2 c5@2 ab4@2 ~ bb4 c5@2 ab4 ab4@2 ~ f4!2", P: "eb4@2 bb4@2 bb4@3 ~ bb4@2 bb4 c5@5",
  Q: "~@8 [d4,f4,bb4]@2 ~ [c4,eb4,ab4]@5", R: "~@7 [c4,eb4,ab4]@2 ~ [a3,c4,f4]@6",
  S: "~@7 [c4,eb4,ab4]@2 ~ [a3,c4,f4]@5 ~", // Ab F
  T: "[eb5@2 d5@2 d5@2 c5 c5@2 c5@2 c5@2 c5 d5 eb5@2 ~ d5@2 c5@2 bb4@2 a4@4 ~ c5 d5 eb5@2 ~ d5!2 c5!2 d5 f5@2 ~ d5!2 c5!2 d5 eb5@2 ~ d5@2 c5@2 ab4@2 f4@4 ~@4]/4",
  U: "[eb5 d5@2 d5@2 c5@2 c5@2 c5@2 c5@2 c5 d5 eb5@2 ~ d5@2 c5@2 c5@2 a4@4 ~ c5 d5 ab5@2 f5@2 f5@2 f5!2 ab5@2 a5@2 f5@2 f5 f5@2]/3",
  V: "c6 bb5 c6 a5 f5@2 ~@2",
  W: "~@2 [bb3,eb4,g4] [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 [bb3,eb4,g4] [bb3,eb4,g4]@2 [c4,f4,a4]!2", // Eb F
  X: "~@6 [c4,f4,a4]!2 ~ c4 d4@2 f4@3 ~", // F
  Y: "[c4,f4,a4]@2 [c4,f4,a4]@2 [c4,f4,a4]@2 [c4,f4,a4]!2 ~ ab4 a4 [d4,bb4] a4 f4 d4 c4", // F Gm
  Z: "~@2 [c4,c5]@2 [c4,c5]@2 [d4,d5]@2 [eb4,eb5]@2 [d4,d5]@2 [c4,c5] [d4,d5] ~@2", // C D Eb D C D
  AA: "~@2 [c4,c5]@2 [c4,c5]@2 [d4,d5]@2 [eb4,eb5]@2 [f4,f5]@2 [g4,g5] [ab4,ab5] ~@2", // C D Eb F G Ab
  AB: "[c4,c5]!2 [c4,c5]@2 [c4,c5]@2 [c4,c5]!2 [c4,c5]@2 [c4,c5]@2 ~@2 [f4,f5]@2", // C F
  AC: "[eb4,eb5]@2 [bb3,eb4,g4] [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 [bb3,eb4,g4] [bb3,eb4,g4]@2 [c4,f4,a4]!2", // Eb F
  AD: "~@2 g4 ab4 a4 [f4,f5]@2 ~ g4 ab4 a4 [f4,f5]@5", AE: "[c4,f4,a4]@2 [c4,f4,a4]@2 [c4,f4,a4]@2 [c4,f4,a4]!2 ~@8",
})).s("gm_trombone").gain(0.72).pan(0.8)

// other · tenor sax · "Sax"
const tenor_sax = note(`<
  ~@4 A@4 B C D E F G@2 H I J@2 K L M N O P Q R Q S T@4 U@3 V K L M N O P Q R Q R W ~ W ~ W X Y K L M N O P Z AA Z AB AC
  AD W AD W X Y K L M N O P Z AA Z AB AC AD W AD W X AE
>`.pickRestart({
  A: "[[g3,bb3,eb4]@11 ~@3 [g3,bb3,eb4] [f3,bb3,d4]@12 ~@3 [f3,bb3,d4] [f3,a3,c4]@23 ~ ab3 a3 [d3,bb3] ab3 a3 f3 c3 d3@2]/4", // Eb Bb F Gm
  B: "[g3,bb3,eb4]@2 ~@12 [g3,bb3,eb4]!2", C: "~@6 [g3,bb3,eb4] [g3,bb3,eb4]@2 c4 d4 ~ [f3,f4]@3 ~",
  D: "[f3,f4]@2 [f3,f4]@2 [f3,f4]@2 [f3,f4] [f3,f4]@2 ab3 a3 [d3,bb3] ab3 a3 f3 d3", // F Gm
  E: "c5@2 a4 f4@2 ~ d4 eb4@2 d4@2 d4 c4@3 ~", F: "eb4@2 d4 eb4@2 c4@2 ~ a3@4 ~@4",
  G: "[eb4@2 c4 f4@2 ~ f4@2 a4 f4@2 f4@2 c4 d4 eb4@2 d4@2 c4@2 ~ a3@2 f3@4 ~@4]/2",
  H: "eb4 d4@2 eb4 c4@2 c4@2 f4@2 d4 f4@3 ~ d4", I: "f4@2 d4 f4@2 d4 a4@2 g4@4 ~@4",
  J: "[eb4@2 c4 f4@2 ~ d4 f4@2 f4@2 f4@2 ~ d4 eb4@2 ~ d4 d4@2 ~ c4@2 f3@4 ~@4]/2",
  K: "~@2 ab3@2 ab3@2 ~ bb3 c4@2 ab3 ab3@2 ~ f3 eb3", L: "eb3@2 bb3@2 bb3@4 ~@4 c4@2 bb3 ab3",
  M: "~@2 ab3@2 ab3@2 ~ bb3 c4@2 bb3 ab3@2 ~ f3!2", N: "eb3@2 bb3@2 bb3@4 ~@3 f4@2 ~ eb4@2",
  O: "~@2 c4@2 ab3@2 ~ bb3 c4@2 ab3 ab3@2 ~ f3!2", P: "eb3@2 bb3@2 bb3@3 ~ bb3@2 bb3 c4@5",
  Q: "~@8 [d3,f3,bb3]@2 ~ [c3,eb3,ab3]@5", R: "~@7 [c3,eb3,ab3]@2 ~ [a2,c3,f3]@6",
  S: "~@7 [c3,eb3,ab3]@2 ~ [a2,c3,f3]@5 ~", // Ab F
  T: "[eb4@2 d4@2 d4@2 c4 c4@2 c4@2 c4@2 c4 d4 eb4@2 ~ d4@2 c4@2 bb3@2 a3@4 ~ c4 d4 eb4@2 ~ d4!2 c4!2 d4 f4@2 ~ d4!2 c4!2 d4 eb4@2 ~ d4@2 c4@2 ab3@2 f3@4 ~@4]/4",
  U: "[eb4 d4@2 d4@2 c4@2 c4@2 c4@2 c4@2 c4 d4 eb4@2 ~ d4@2 c4@2 c4@2 a3@4 ~ c4 d4 ab4@2 f4@2 f4@2 f4!2 ab4@2 a4@2 f4@2 f4 f4@2]/3",
  V: "c5 bb4 c5 a4 f4@2 ~@2",
  W: "~@2 [bb2,eb3,g3] [bb2,eb3,g3]@2 [bb2,eb3,g3]@2 [bb2,eb3,g3]@2 [bb2,eb3,g3]@2 [bb2,eb3,g3] [bb2,eb3,g3]@2 [c3,f3,a3]!2", // Eb F
  X: "~@6 [c3,f3,a3]!2 ~ c3 d3@2 f3@3 ~", // F
  Y: "[c3,f3,a3]@2 [c3,f3,a3]@2 [c3,f3,a3]@2 [c3,f3,a3]!2 ~ ab3 a3 [d3,bb3] a3 f3 d3 c3", // F Gm
  Z: "~@2 [c3,c4]@2 [c3,c4]@2 [d3,d4]@2 [eb3,eb4]@2 [d3,d4]@2 [c3,c4] [d3,d4] ~@2", // C D Eb D C D
  AA: "~@2 [c3,c4]@2 [c3,c4]@2 [d3,d4]@2 [eb3,eb4]@2 [f3,f4]@2 [g3,g4] [ab3,ab4] ~@2", // C D Eb F G Ab
  AB: "[c3,c4]!2 [c3,c4]@2 [c3,c4]@2 [c3,c4]!2 [c3,c4]@2 [c3,c4]@2 ~@2 [f3,f4]@2", // C F
  AC: "[eb3,eb4]@2 [bb2,eb3,g3] [bb2,eb3,g3]@2 [bb2,eb3,g3]@2 [bb2,eb3,g3]@2 [bb2,eb3,g3]@2 [bb2,eb3,g3] [bb2,eb3,g3]@2 [c3,f3,a3]!2", // Eb F
  AD: "~@2 g3 ab3 a3 [f3,f4]@2 ~ g3 ab3 a3 [f3,f4]@5", AE: "[c3,f3,a3]@2 [c3,f3,a3]@2 [c3,f3,a3]@2 [c3,f3,a3]!2 ~@8",
})).s("gm_tenor_sax").gain(0.33).pan(0.3)

// chords · brass section · "Brass"
const brass_section = note(`<
  ~@11 A@6 B@2 C D C E C F ~@4 G@2 H@4 I@2 C D C E C F ~@11 C D C E C F ~@11 C D C E C F ~@11
>`.pickRestart({
  A: "[[c4,f4,a4]@23 ~@6 eb4 e4 [a3,c4,f4]@25 ~ [g4,bb4,eb5]@2 [g4,bb4,eb5] [f4,bb4,d5]@2 [f4,bb4,d5] [f4,a4,c5]@33]/6", // F Eb Bb F
  B: "[[c4,f4,a4]@22 ~@6 [c4,eb4,ab4]@3 ~]/2", C: "[db4,f4]@3 ~ [db4,f4]@3 ~ [eb4,ab4]@2 ~ [c4,eb4]@4 ~",
  D: "eb4@2 g4@2 [eb4,g4]@6 ~@2 [eb4,g4]@3 ~", E: "eb4@2 g4@2 [eb4,g4]@4 ~@3 [g4,bb4]@4 ~",
  F: "eb4@2 g4@2 g4@3 ~ [eb4,g4]@2 [eb4,g4] [f4,a4]@5", G: "[[f4,a4]@20 ~@5 ab4 a4 [d4,bb4] a4 f4 d4 c4]/2",
  H: "[[f4,a4]@20 ~@5 [g4,bb4,eb5]@2 [g4,bb4,eb5] [f4,bb4,d5]@2 [f4,bb4,d5] [f4,a4,c5]@33]/4", // F Eb Bb F
  I: "[[f4,a4,c5]@22 ~@6 [c4,eb4,ab4]@3 ~]/2", // F Ab
})).s("gm_brass_section").gain(0.51).pan(0.1)

// chords · piano
const piano = note(`<
  ~@11 A@2 B@2 A@2 C D E F E G E H ~@4 B@2 I@2 A@2 J K L G M F N O ~@4 P@2 Q@2 R@2 S T U M V W X ~@4 Y@2 Z@2 AA@2 AB T
  AC M AC E AD ~@4 AE@2 AF@2 AG@2 AH
>`.pickRestart({
  A: "[[a3,c4,f4]@31 ~]/2", B: "[f4@23 ~ f4 ~@3 a4@2 c5 ~, c5@7 ~, a4@26 f4@5 ~]/2", C: "[a3,c4,f4]@5 f3 [a3,c4,f4] ~",
  D: "[f4,a4,c5]@2 ~ [ab3,c4,eb4]", // F Ab
  E: "[ab4,db5,f5,ab5]!4 ~ [ab4,db5,f5,ab5] ~ [ab4,db5,f5,ab5] [ab5,c6,eb6,ab6]!4 ~ [ab5,c6,eb6,ab6] ~ ab2", // Db Ab
  F: "[eb5,g5,bb5,eb6]!4 ~ [eb5,g5,bb5,eb6] ~ eb3 [eb5,g5,bb5,eb6]!4 [g4,c5,eb5,g5]!4", // Eb Cm
  G: "[eb5,g5,bb5,eb6]!4 ~ [eb5,g5,bb5,eb6] ~ [eb5,g5,bb5,eb6]!5 [g4,c5,eb5,g5]!4", // Eb Cm
  H: "[eb5,g5,bb5,eb6]!4 ~ eb3 [eb5,g5,bb5,eb6]!2 [f5,a5,c6,f6]!4 ~ [f5,a5,c6,f6] ~ [f5,a5,c6,f6]", // Eb F
  I: "[f4@7 ~ f4 ~ f4@2 ~@14 f5@4 ~@2, c5@14 f4@17 ~, a4@5 ~ a4@9 ~, ~@16 c5@15 ~]/2",
  J: "~@13 c6 f6 ~, [f3,f4,a4,c5]@7 ~, ~@6 a5 ~", K: "[f4,a4,c5]@4 ~ ab2 [ab3,c4,eb4]@2",
  L: "[ab4,db5,f5,ab5]!4 ~ [ab4,db5,f5,ab5] ~ [ab4,db5,f5,ab5] [ab5,c6,eb6,ab6]!4 ~ ab2 [ab5,c6,eb6,ab6]!2", // Db Ab
  M: "[ab4,db5,f5,ab5]!4 ~ [ab4,db5,f5,ab5] ~ db2 [ab5,c6,eb6,ab6]!4 ~ [ab5,c6,eb6,ab6] ~ ab2", // Db Ab
  N: "[ab4,db5,f5,ab5]!4 ~ [ab4,db5,f5,ab5] ~ db2 [ab5,c6,eb6,ab6]!4 ~ [ab5,c6,eb6,ab6] ~ [ab5,c6,eb6,ab6]", // Db Ab
  O: "[eb5,g5,bb5,eb6]!4 ~ eb3 [eb5,g5,bb5,eb6]!2 [f5,a5,c6,f6]!4 ~ [f5,a5,c6,f6] ~ f3", // Eb F
  P: "[eb4@7 ~@5 g4@2 [f4,a4,c5]@12 f3@2 [f4,a4,c5]@2 ~@2, bb4@3 ~@5, g4@5 ~@11, ~@4 eb4@3 ~@9]/2", // F
  Q: "[eb4@10 ~@2 eb4 ~ [f4,a4,c5]@12 f3@2 [f4,a4,c5]@2 ~@2, [g4,bb4]@7 ~@9, ~@5 f3@2 ~@9]/2", // F Gm
  R: "[eb4@10 ~@2 eb4 ~ f4@12 ~@2 f4 ~ f4@2, [g4,bb4]@7 [a4,c5]@9, ~@5 f3@2 ~@6 f3@3]/2", // Gm Am
  S: "f4@10 ~@2 f4 ~ f4@2, [a4,c5], ~@5 f3@3", // Am
  T: "[ab4,db5,f5,ab5]!4 ~ db2 [ab4,db5,f5,ab5]!2 [ab5,c6,eb6,ab6]!4 ~ [ab5,c6,eb6,ab6] ~ [ab5,c6,eb6,ab6]", // Db Ab
  U: "[eb5,g5,bb5,eb6]!4 ~ [eb5,g5,bb5,eb6] ~ eb3 [g4,c5,eb5,g5]!4 ~ c2 [g4,c5,eb5,g5]!2", // Eb Cm
  V: "[eb5,g5,bb5,eb6]!4 ~ [eb5,g5,bb5,eb6] ~ eb3 [g4,c5,eb5,g5]!4 ~ [g4,c5,eb5,g5] ~ c2", // Eb Cm
  W: "[ab4,db5,f5,ab5]!4 ~ [ab4,db5,f5,ab5] ~ [ab4,db5,f5,ab5] [ab5,c6,eb6,ab6]!4 ~ [ab5,c6,eb6,ab6] ~ [ab5,c6,eb6,ab6]", // Db Ab
  X: "[eb5,g5,bb5,eb6]!4 ~ eb3 [eb5,g5,bb5,eb6]!4 ~ [f5,c6,f6]@2 [f5,a5,c6,f6]!3, ~@11 a5 ~@4", // Eb F5 F
  Y: "[[eb4,g4,bb4]@10 f3@2 [eb4,g4,bb4]@2 f4@13 ~ f4@4, ~@7 [f3,a4,c5,f5]@9]/2", // Eb F
  Z: "[[g3,bb3,eb4]@10 f3@2 [g3,bb3,eb4]@2 f4@12 ~@2 f4 ~ f4@2, ~@7 [a4,c5]@9, ~@13 f3@3]/2", // Eb Am
  AA: "[[f3,eb4,g4,bb4]@12 g5 ~ f4@9 ~@5 a4@2 c5 ~, ~@7 c5@7 ~@2, ~@7 a4@6 ~@3, ~@24 f4@7 ~]/2", AB: "[f4,a4,c5] ~",
  AC: "[eb5,g5,bb5,eb6]!4 ~ eb3 [eb5,g5,bb5,eb6]!2 [g4,c5,eb5,g5]!4 ~ [g4,c5,eb5,g5] ~ c2", // Eb Cm
  AD: "[eb5,g5,bb5,eb6]!4 ~ [eb5,g5,bb5,eb6] ~ eb3 [eb5,g5,bb5,eb6]!2 ~ [c6,f6]@2 [f5,a5,c6,f6]!3, ~@11 [f5,a5] ~@4", // Eb F5 F
  AE: "[[g3,bb3,eb4]@14 f4@12 ~@2 f4 ~ f4@2, ~@7 [a4,c5]@9, ~@13 f3@3]/2", // Eb Am
  AF: "[eb4@11 ~ eb4@2 [a3,c4,f4]@12 f3@2 [a3,c4,f4]@2 ~@2, [g4,bb4,eb5]@7 ~@9]/2", // F Eb
  AG: "[[f3,eb4,g4,bb4]@12 g5 ~ [a3,c4,f4]@12 f3@2 [a3,c4,f4]@2 ~@2]/2", AH: "[f4,a4,c5]@7 [a3,c4,f4] ~@8",
})).s("gm_piano").gain(0.31).pan(0.9)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@2 A@6 B C D A@7 E F G F G F H I J I J A@7 K F G F G F H I J I J L A L A B C M F G F G F H N@3 O P Q P Q R S M F G F
  G F H N@3 O P Q P Q R S M
>`.pickRestart({
  A: "f2!8", B: "f2@2 ~@12 f2!2", C: "~@6 f2!2 ~ c3 [d2,d3]@2 [f2,f3]@3 ~", D: "f2@2 f2@2 f2@2 f2!2 ~@8",
  E: "f1!6 ab1!2", F: "db2!4 ab1!4", G: "eb2!6 c2!2", H: "eb2@2 eb2@2 eb2@2 eb2@2 eb2@2 eb2 f2@2 ~ eb2!2",
  I: "eb2 f2 f2@2 f2@8 ~@2 eb2!2", J: "eb2 f2 f2@2 f2@10 ~@2", K: "f2!6 ab1!2", L: "f2 ~@7",
  M: "[f2,f3]@2 [f2,f3]@2 [f2,f3]@2 [f2,f3]!2 ~@8", N: "eb2 f2 f2@2 f2@2 f1@6 ~@2 eb2!2",
  O: "eb2 f2 f2@2 f2@2 f1@6 ~@2 [f1,f2]@2", P: "[f1,f2] ~@7", Q: "[f1,f2]!8", R: "[f1,f2]@2 ~@12 [f1,f2]!2",
  S: "~@6 [f1,f2]!2 ~ c3 [d2,d3]@2 [f2,f3]@3 ~", // F D F
})).s("gm_electric_bass_finger").gain(0.6).pan(0)

// drums · kick
const kick = s("bd").struct(`<
  ~@2
  [x ~@3 x ~@2 x!2 ~@3 x!4]!68
  [x ~@3 x ~@2 x ~@8]
  [x ~@3 x ~@2 x!2 ~@3 x!4]!16
  [x ~@3 x ~@2 x ~@8]
>`).gain(0.8)

// drums · rim
const rim = s("rim").struct("<[x!2] [x!4] [x!8]!68 [x!4 ~@4] [x!8]!16 [x!4 ~@4]>").gain(0.48)

// drums · rim · soft notes
const rim_soft = s("rim").struct(`<
  ~@2
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!68
  [~ x ~ x ~ x ~ x ~@8]
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!16
  [~ x ~ x ~ x ~ x ~@8]
>`).gain(0.32)

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

// drums · clap
const clap = s("cp").struct("<~@2 [~ x ~ x]!68 [~ x ~@2] [~ x ~ x]!16 [~@4 x ~@2 x ~@8]>").gain(0.72)

// drums · hihat
const hihat = s("hh").struct("<~@2 [x!16]!68 [x!8 ~@8] [x!16]!16 [x!8 ~@8]>").gain(0.48)

// drums · crash
const crash = s("cr").struct(`<
  ~@2 A ~@8 A ~@3 A ~@3 A ~@3 A ~@5 A ~@3 A ~@3 A ~@3 A ~@5 A ~@3 A ~@2 A ~@3 A ~@5 A ~@3 A ~@2 A ~@3 A ~@5 A ~@3 A ~@2
>`.pickRestart({
  A: "x",
})).gain(0.64)

// drums · tambourine
const tambourine = s("tb").struct("<~@2 [x!8]!68 [x!4 ~@4] [x!8]!16 [x!4 ~@4]>").gain(0.72)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct(`<
  ~@2
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!68
  [~ x ~ x ~ x ~ x ~@8]
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!16
  [~ x ~ x ~ x ~ x ~@8]
>`).gain(0.4)

// drums · cowbell
const cowbell = s("cb").struct(`<
  ~@2
  [x ~ x ~@3 x!3 ~ x ~@5]!68
  [x ~ x ~@3 x!2 ~@8]
  [x ~ x ~@3 x!3 ~ x ~@5]!16
  [x ~ x ~@3 x!2 ~@8]
>`).gain(0.72)

stack(
  trombone, tenor_sax, brass_section, piano, bass, kick, rim, rim_soft, snare, clap, hihat, crash, tambourine,
  tambourine_soft, cowbell
)

More by Spinners