Strudelify

Don't Stop (Wiggle Wiggle)

The Outhere Brothers

KeyD minorTempo131 bpm
0:00/0:00
// Don't Stop (Wiggle Wiggle) — The Outhere Brothers
// 131 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: ch 3 "Ch  3" Doctor Solo -> lead 8 bass lead
// note: Full arrangement: all 101 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(131/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · synth bass 2 · "Ch  1"
const bass = note(`<
  ~@6 A B A B A C D E D E D E D E A B A B A B A B F G H I F G H I D E D E D E D E A B A B A B A ~ J K L M J K L N O P O
  P O P O P Q R Q R Q R Q R J K L M J K L N O P O P O P O P O P O P O P O P S
>`.pickRestart({
  A: "~ d2@3 ~@3 d2@3 ~@2 d2@3 ~ f2@3 d2@3 f2@2", B: "~ d2@3 ~@3 d2@3 ~@2 d2@3 ~ f2@3 d2@3 c2@2",
  C: "~ d2@3 ~@3 d2@3 ~@2 d2@3 ~ f2@3 g2@3 c3@2", D: "~ d2@3 ~@3 d2@3 ~@2 d2@3 d2 f2@3 d2@3 f2@2",
  E: "~ d2@3 ~@3 d2@3 ~@2 d2@3 d2 f2@3 d2@3 c2@2", F: "~ d2 ~ d2 ~@2 d2!2 ~@2 e2@4 ~ e2!2 ~@2 e2 ~@2 e2 ~",
  G: "~ f2 ~ f2 ~@2 f2!2 ~@2 f2 ~ g2 ~@2 g2!2 ~@2 a2 ~@2 g2 ~", H: "~ d2 ~ d2 ~@2 d2!2 ~@2 e2@4 ~ e2 ~@3 e2 ~@2 e2 ~",
  I: "~ f2 ~ f2 ~@2 f2!2 ~@2 g2 ~ g2 ~@2 g2!2 ~@2 f2 ~@2 g2 ~",
  J: "~ d2!2 ~@2 d2 ~ d2 ~@2 e2@4 e2 ~ e2 ~@2 e2 ~@2 e2 ~",
  K: "~ f2!2 ~@2 f2 ~ f2 ~@2 f2 g2 ~@2 g2 ~ g2 ~@2 a2 ~@2 g2 ~", L: "~ d2!2 ~@2 d2 ~ d2 ~@2 e2@4 e2 ~@4 e2 ~@2 e2 ~",
  M: "~ f2!2 ~@2 f2 ~ f2 ~@2 g2!2 ~@2 g2 ~ g2 ~@2 f2 ~@2 g2 ~",
  N: "~ f2!2 ~@2 f2 ~ f2 ~@2 g2!2 ~@2 g2 ~ g2 ~@2 a2 ~@2 g2 ~", O: "~ d2@3 ~@3 d2@3 ~ d2@3 d2 ~ f2@3 d2@3 f2@2",
  P: "~ d2@3 ~@3 d2@3 ~ d2@3 d2 ~ f2@3 d2@3 c2@2", Q: "~ d2@3 ~@3 d2@3 ~ d2@3 ~@2 f2@3 d2@3 f2@2",
  R: "~ d2@3 ~@3 d2@3 ~ d2@3 ~@2 f2@3 d2@3 c2@2", S: "~ d2@3 ~@20",
})).s("gm_synth_bass_2").gain(0.48)

// chords · piano · "Ch  2"
const piano = note(`<
  A B C B D E F E G ~@3 H I J K H I J K ~@8 L M L N O P Q R H I J K H I J K ~@8 S T S U V W X ~ Y Z AA AB Y Z AA AB ~@8
  S T S U V W X ~ Y Z AA AB Y Z AA AB Y Z AA AB Y Z AA AB ~
>`.pickRestart({
  A: "~ [d4,f4,a4] ~ [d3,a3] ~@2 [d4,f4,a4] [d3,a3] ~@2 [d4,f4,a4] ~ [d3,a3] ~@2 [d3,a3] [f4,a4,c5] ~ [f3,c4] [d4,f4,a4] ~ [d3,a3] [f4,a4,c5] ~", // Dm D5 Dm D5 Dm D5 F F5 …
  B: "[f3,c4] [d4,f4,a4] ~ [d3,a3] ~@2 [d4,f4,a4] [d3,a3] ~@2 [d4,f4,a4] ~ [d3,a3] ~@2 [d3,a3] [f4,a4,c5] ~ [f3,c4] [d4,f4,a4] ~ [d3,a3] [c4,e4,g4] ~", // F5 Dm D5 Dm D5 Dm D5 F …
  C: "[c3,g3] [d4,f4,a4] ~ [d3,a3] ~@2 [d4,f4,a4] [d3,a3] ~@2 [d4,f4,a4] ~ [d3,a3] ~@2 [d3,a3] [f4,a4,c5] ~ [f3,c4] [d4,f4,a4] ~ [d3,a3] [f4,a4,c5] ~", // C5 Dm D5 Dm D5 Dm D5 F …
  D: "[c3,g3] [d4,f4,a4] ~ [d3,a3,d4,f4,a4] ~@2 [d4,f4,a4] [d3,a3] ~@2 [d4,f4,a4] ~ [d3,a3] ~@2 [d3,a3,d4,f4,a4] [f4,a4,c5] ~ [f3,c4,f4,a4,c5] [d4,f4,a4] ~ [d3,a3,f4,a4,c5] [d4,f4,a4,c5] ~", // C5 Dm D5 Dm D5 Dm F Dm …
  E: "[f3,c4,f4,a4,c5] [d4,f4,a4] ~ [d3,a3,d4,f4,a4] ~@2 [d4,f4,a4] [d3,a3] ~ [c4,e4,g4] [d4,f4,a4] ~ [d3,a3] ~@2 [d3,a3,d4,f4,a4] [f4,a4,c5] ~ [f3,c4,f4,a4,c5] [d4,f4,a4] ~ [d3,a3,f4,a4,c5] [c4,d4,e4,f4,g4,a4] ~", // F Dm D5 C Dm D5 Dm F …
  F: "[c3,g3,c4,e4,g4] [d4,f4,a4] ~ [d3,a3,d4,f4,a4] ~@2 [d4,f4,a4] [d3,a3] ~@2 [d4,f4,a4] ~ [d3,a3] ~@2 [d3,a3,d4,f4,a4] [f4,a4,c5] ~ [f3,c4,f4,a4,c5] [d4,f4,a4] ~ [d3,a3,f4,a4,c5] [d4,f4,a4,c5] ~", // C Dm D5 Dm D5 Dm F Dm …
  G: "[c3,g3,c4,e4,g4] ~@23", // C
  H: "~ [d4,f4,a4] ~ [d4,f4,a4] ~@3 [d4,f4,a4] ~@2 [d4,f4,a4] ~ [d4,f4,a4] ~@2 [d4,f4,a4] [f4,a4,c5] ~@2 [d4,f4,a4] ~@2 [f4,a4,c5] ~", // Dm F Dm F
  I: "~ [d4,f4,a4] ~@4 [d4,f4,a4] ~@3 [d4,f4,a4] ~@4 [d4,f4,a4] [f4,a4,c5] ~@2 [d4,f4,a4] ~@2 [c4,e4,g4] ~", // Dm F Dm C
  J: "~ [d4,f4,a4] ~ [d4,f4,a4] ~@2 [d4,f4,a4] ~@3 [d4,f4,a4] ~@4 [d4,f4,a4] [f4,a4,c5] ~@2 [d4,f4,a4] ~@2 [f4,a4,c5] ~", // Dm F Dm F
  K: "~ [d4,f4,a4] ~ [d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4]!2 ~@4 [d4,f4,a4] ~@2 [f4,a4,c5] [d4,f4,a4] ~ [d4,f4,a4] [c4,e4,g4] ~", // Dm F Dm C
  L: "~ [d4,f4,a4] ~ [d4,f4,a4] ~@2 [d4,f4,a4]!2 ~@2 [e4,g4,b4]@4 ~@2 [e4,g4,b4] ~@4 [e4,g4,b4] ~@2", // Dm Em
  M: "~ [f4,a4,c5] ~ [f4,a4,c5] ~@2 [f4,a4,c5]!2 ~@2 [g4,b4,d5] ~ [g4,b4,d5] ~@2 [g4,b4,d5]!2 ~@2 [a4,c5,e5] ~@2 [g4,b4,d5] ~", // F G Am G
  N: "~ [f4,a4,c5] ~ [f4,a4,c5] ~@2 [f4,a4,c5]!2 ~@2 [g4,b4,d5] ~ [g4,b4,d5] ~@2 [g4,b4,d5]!2 ~@2 [f4,a4,c5] ~@2 [g4,b4,d5] ~", // F G F G
  O: "~ [d4,f4,a4] ~ [d4,f4,a4] ~@2 [d4,f4,a4]!2 ~@2 [e4,g4,b4] ~@4 [e4,g4,b4]!2 ~@2 [e4,g4,b4] ~ [e4,g4,b4] ~@2", // Dm Em
  P: "[e4,g4,b4] [f4,a4,c5] ~ [f4,a4,c5] ~@2 [e4,g4,c5] [f4,a4,c5] ~@2 [g4,b4,d5] ~@4 [g4,b4,d5]!2 ~@2 [a4,c5,e5] ~ [a4,c5,e5] [g4,b4,d5] ~", // Em F C F G Am G
  Q: "~ [d4,f4,a4] ~ [d4,f4,a4] ~@2 [d4,f4,a4]!2 ~@2 [e4,g4,b4] ~@4 [e4,g4,b4] ~@2 [e4,g4,b4]!2 ~@2 [e4,g4,b4] ~", // Dm Em
  R: "~ [f4,a4,c5] ~ [f4,a4,c5] ~@2 [f4,a4,c5]!2 ~@2 [f4,a4,c5] ~ [g4,b4,d5] ~@2 [g4,b4,d5]!2 ~ [g4,b4,d5] [f4,a4,c5] ~ [f4,a4,c5] [g4,b4,d5] ~", // F G F G
  S: "~ [d4,f4,a4]!2 ~@2 [d4,f4,a4] ~ [d4,f4,a4] ~@2 [e4,g4,b4]@4 ~@2 [e4,g4,b4] ~@3 [e4,g4,b4] ~@3", // Dm Em
  T: "~ [f4,a4,c5]!2 ~@2 [f4,a4,c5] ~ [f4,a4,c5] ~@2 [g4,b4,d5]!2 ~@2 [g4,b4,d5] ~ [g4,b4,d5] ~@2 [a4,c5,e5] ~@2 [g4,b4,d5] ~", // F G Am G
  U: "~ [f4,a4,c5]!2 ~@2 [f4,a4,c5] ~ [f4,a4,c5] ~@2 [g4,b4,d5]!2 ~@2 [g4,b4,d5] ~ [g4,b4,d5] ~@2 [f4,a4,c5] ~@2 [g4,b4,d5] ~", // F G F G
  V: "~ [d4,f4,a4]!2 ~@2 [d4,f4,a4] ~ [d4,f4,a4] ~@2 [e4,g4,b4] ~@3 [e4,g4,b4] ~ [e4,g4,b4] ~@2 [e4,g4,b4]!2 ~@2 [e4,g4,b4]", // Dm Em
  W: "~ [f4,a4,c5]!2 ~@2 [e4,g4,c5] ~ [f4,a4,c5] ~@2 [g4,b4,d5] ~@3 [g4,b4,d5] ~ [g4,b4,d5] ~@2 [a4,c5,e5]!2 ~ [g4,b4,d5] ~", // F C F G Am G
  X: "~ [d4,f4,a4]!2 ~@2 [d4,f4,a4] ~ [d4,f4,a4] ~@2 [e4,g4,b4] ~@3 [e4,g4,b4] ~@2 [e4,g4,b4] ~ [e4,g4,b4] ~@2 [e4,g4,b4] ~", // Dm Em
  Y: "~ [d4,f4,a4]!2 ~@4 [d4,f4,a4] ~@2 [d4,f4,a4]!2 ~@2 [d4,f4,a4] ~ [f4,a4,c5] ~@2 [d4,f4,a4] ~@2 [f4,a4,c5] ~", // Dm F Dm F
  Z: "~ [d4,f4,a4] ~@3 [d4,f4,a4] ~@4 [d4,f4,a4] ~@3 [d4,f4,a4] ~ [f4,a4,c5] ~@2 [d4,f4,a4] ~@2 [c4,e4,g4] ~", // Dm F Dm C
  AA: "~ [d4,f4,a4]!2 ~@2 [d4,f4,a4] ~@4 [d4,f4,a4] ~@3 [d4,f4,a4] ~ [f4,a4,c5] ~@2 [d4,f4,a4] ~@2 [f4,a4,c5] ~", // Dm F Dm F
  AB: "~ [d4,f4,a4]!2 ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~ [d4,f4,a4] ~@3 [d4,f4,a4] ~@2 [f4,a4,c5] ~ [d4,f4,a4]!2 ~ [c4,e4,g4] ~", // Dm F Dm C
})).s("gm_piano").gain(0.4)

// chords · piano · "Ch  2" · soft notes
const piano_soft = note("<~@44 A B A B A B A ~@50>".pickRestart({
  A: "~ [d4,f4,a4]@2 ~@4 [d4,f4,a4]@2 ~@3 [d4,f4,a4]@2 ~@2 [f4,a4,c5]@2 ~ [d4,f4,a4]@2 ~ [f4,a4,c5]@2", // Dm F Dm F
  B: "~ [d4,f4,a4]@2 ~@4 [d4,f4,a4]@2 ~@3 [d4,f4,a4]@2 ~@2 [f4,a4,c5]@2 ~ [d4,f4,a4]@2 ~ [c4,e4,g4]@2", // Dm F Dm C
})).s("gm_piano").gain(0.23)

// chords · string ensemble 2 · "Ch  4"
const string_ensemble_2 = note("<~@52 A B A C ~ D ~@18 A B A C ~ D ~@19>".pickRestart({
  A: "~ [a4,d5,f5]@12 [b4,e5,g5]@11", // Dm Em
  B: "~@4 e5 ~@2 d5 e5 ~@7 g4 ~@2 g4 a4 ~@3, ~ [f5,a5]@12 ~@11, ~ c5@9 c5@3 [d5,g5,b5]@11, ~@11 a4@4 ~@9", // F G
  C: "~@4 e5 ~@2 d5 ~@2 a4 ~@5 e4 ~@2 g4 a4 ~@3, ~ [f5,a5]@12 [d5,g5,b5]@11, ~ c5@7 c5@3 g4@4 ~@9", // F G
  D: "~@4 c6 ~@3 g5 ~ e5 g5@2 ~@3 a5 ~@7, ~@7 a5@6 ~@11",
})).s("gm_string_ensemble_2").gain(0.16)

// chords · string ensemble 2 · "Ch  4" · soft notes
const string_ensemble_2_soft = note("<~@56 A B A ~@21 A B A ~@18>".pickRestart({
  A: "~ [a4,d5,f5]@12 [b4,e5,g5]@11", B: "~ [c5,f5]@12 [d5,g5,b5]@11, ~ a5@6 ~@17",
})).s("gm_string_ensemble_2").gain(0.08)

// other · synth brass 1 · "Ch  5"
const synth_brass_1 = note("<~@12 A B C D A B C D ~@72 A B C D A B C D B>".pickRestart({
  A: "~ a4@3 g4@3 a4 ~@8 c5@3 ~@3 c5@2", B: "~ a4@3 g4@3 a4 ~@16", C: "~ a4@3 g4@3 a4@3 ~@6 c5@3 ~@3 c5@2",
  D: "~ a4@3 g4 ~@2 a4 ~@16",
})).s("gm_synth_brass_1").gain(0.57)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 A@6 ~@4 A@8 B@10 A@2 B@2 A@10 B@7 ~ C@2 A@2 C@2 A ~ A@8 C@10 A@2 C@2 A ~ A@16 ~
>`.pickRestart({
  A: "~ x ~@5 x ~@5 x ~@5 x ~@4", B: "~ x ~@5 x ~@4 x!2 ~@5 x ~@4", C: "~ x ~@5 x ~@3 x ~ x ~@5 x ~@4",
})).gain(0.8)

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

// drums · clap
const clap = s("cp").struct(`<
  ~@12 A B C D E B C D F ~@15 G H I J H@2 I J F ~@15 K@2 L M K@2 L M ~@16 K@2 L M K@2 L M N O P Q N O P Q ~
>`.pickRestart({
  A: "~@4 x ~@4 x ~@3 x ~@4 x ~@2 x!2 ~", B: "x ~@3 x ~@2 x ~ x ~@2 x ~@2 x!2 ~@2 x ~ x!2 ~",
  C: "~ x ~@4 x ~@3 x ~@4 x ~@2 x!2 ~ x ~@2", D: "~ x ~@2 x ~ x ~@2 x ~@2 x!2 ~@2 x ~ x!2 ~ x!2 ~",
  E: "x ~@3 x ~@4 x ~@3 x ~@4 x ~@2 x!2 ~", F: "x", G: "~@7 x ~@4 x ~@2 x ~@2 x!2 ~@2 x ~",
  H: "x ~@6 x ~@4 x ~@2 x ~@2 x!2 ~@2 x ~", I: "x ~@6 x ~@4 x ~@2 x!2 ~@2 x ~@2 x ~",
  J: "x ~@6 x ~@4 x ~@2 x!2 ~ x!2 ~ x!2 ~", K: "~@7 x ~@3 x ~@2 x ~@2 x ~ x ~@2 x!2",
  L: "~@7 x ~@3 x ~@2 x ~ x ~@2 x ~@2 x!2", M: "~@7 x ~@3 x ~@2 x ~ x!2 ~ x!2 ~ x!2",
  N: "~@4 x ~@3 x ~@4 x ~@3 x ~@2 x ~ x!2", O: "~@4 x ~@2 x!2 ~@2 x ~@2 x ~ x ~@2 x!2 ~ x ~",
  P: "~ x ~@3 x ~@4 x ~@3 x ~@2 x ~ x!2 ~@3", Q: "~ x ~@2 x!2 ~@2 x ~@2 x ~ x ~@2 x!2 ~ x!2 ~ x!2",
})).gain(0.56)

// drums · clap · soft notes
const clap_soft = s("cp").struct("<~@20 A B C B C B C B D ~@39 E F E F E F E F ~@25>".pickRestart({
  A: "~@7 x ~@4 x ~@2 x ~@3 x ~@2 x ~", B: "x ~@3 x ~@2 x ~ x ~@2 x ~@2 x!2 ~@2 x ~ x!2 ~",
  C: "x ~@6 x ~@4 x ~@2 x ~@3 x ~@2 x ~", D: "x", E: "~@7 x ~@3 x ~@2 x ~@4 x ~@2 x!2",
  F: "~@4 x ~@2 x!2 ~@2 x ~@2 x ~ x ~@2 x!2 ~ x!2",
})).gain(0.32)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@12 A B@7 C D C D C D C D C D C D C D C D B@8 C D C D C D C E F G H G H G H ~ I@8 H G H G H G H G H G H G H G H ~
  I@16 ~
>`.pickRestart({
  A: "~@3 x!2 ~ x!2 ~ x!2 ~ x ~@2 x!2 ~ x!2 ~ x!2 ~", B: "x ~@2 x!2 ~ x!2 ~ x!2 ~ x ~@2 x!2 ~ x!2 ~ x!2 ~",
  C: "x ~@2 x!2 ~ x ~@2 x!2 ~ x ~@2 x!2 ~ x ~@2 x!2 ~", D: "x ~@2 x!2 ~@2 x ~ x ~@5 x!2 ~ x ~@2 x ~@2",
  E: "x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~", F: "x ~ x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x!2",
  G: "~@2 x ~ x ~@2 x!2 ~@5 x ~ x!2 ~@2 x ~@2 x", H: "~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x!2",
  I: "~@2 x ~ x!2 ~ x!2 ~ x!2 ~@2 x ~ x!2 ~ x!2 ~ x!2",
})).gain(0.64)

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

// drums · crash
const crash = s("cr").struct("<~@8 [~ x ~@22] ~@91 [~ x ~@22]>").gain(0.72)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@4 A B@3 C ~@3 D E@3 D E@3 ~@16 D E@3 D E@3 ~@7 F ~@7 A G E@3 D E@3 ~@15 A G E@3 D E@3 D E@3 D E@3 ~
>`.pickRestart({
  A: "~ x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~", B: "x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~", C: "x",
  D: "~@13 x ~@10", E: "~ x ~@11 x ~@10", F: "~ x ~@22", G: "x ~@12 x ~@10",
})).gain(0.64)

// drums · bongos
const bongos = s("bongo:4").struct("<~@12 A B@7 C ~@15 A B@7 C ~@15 D@8 ~@16 D@16 ~>".pickRestart({
  A: "~ x!3", B: "x!4", C: "x", D: "~@5 x ~@5 x ~@5 x ~@5 x",
})).gain(1.26)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<~@12 A@8 ~@16 A@8 ~@16 A@8 ~@16 A@16 ~>".pickRestart({
  A: "~@2 x ~@2 x ~@2 x ~@2 x",
})).gain(1.26)

// drums · congas
const congas = s("conga:13").struct("<~@20 A@16 ~@8 A@7 ~ B@7 ~@9 B@15 ~@18>".pickRestart({
  A: "~@4 x ~@5 x ~ x ~@2 x!2 ~@7", B: "~@4 x ~@5 x!2 ~@2 x ~ x ~@7",
})).gain(2.05)

// drums · congas
const congas_2 = s("conga:18").struct("<~@20 A@16 ~@8 A@7 ~ A@7 ~@9 A@15 ~@18>".pickRestart({
  A: "~@13 x ~@10",
})).gain(2.05)

// drums · agogo bells
const agogo_bells = s("agogo:2").struct("<~@6 [~ x ~@2 x ~@7 x ~@2 x ~@2 x ~@5]!2 ~@93>").gain(3.06)

// drums · agogo bells
const agogo_bells_2 = s("agogo:4").struct("<~@6 [~@7 x ~@2 x ~@8 x ~@2 x ~]!2 ~@93>").gain(3.06)
// … 29 more lines

More by The Outhere Brothers