Strudelify

The Mighty Quinn

Manfred Mann

KeyC majorTempo95 bpm
0:00/0:00
// The Mighty Quinn — Manfred Mann
// 95 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 112 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(95/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 · epiano1 · "Rhodes"
const epiano1 = note("<~@51 A@2 B@3 C D E ~@53>".pickRestart({
  A: "[[a#3,c4,d#4,g4]@6 [a#3,d#4,g4] [c4,d4,f4,a4]@7 ~@2, c3@14 c3 ~@17, ~@12 c4 ~@19]/2", // Cm7 D# Dm7
  B: "[[a#3,c4,d#4,g4]@12 [d#4,g4]@2 [c4,d4,f4,a4]@14 ~@3 [c3,g3,a#3,c4,d#4]@15 ~@2, c3@14 c3 ~@33, ~@12 [a#3,c4] ~@35]/3", // Cm7 D# Dm7 Cm7 A#sus2
  C: "[c3,a3,c4,d4,f4]@15 ~", D: "[c3,a#3,d#4,g4]@15 ~", E: "[f2,a3,c4,f4]@15 ~",
})).s("gm_epiano1").gain(0.35).pan(0.2)

// chords · rock organ · "Hammond"
const rock_organ = note(`<
  ~ A B A C A C D B A E F@4 G@2 H@2 G@2 I J K L@2 M K L@2 N F@4 G@2 H@2 G@2 I J K L@2 M K L@2 O ~@8 P Q P Q P Q P Q R S
  T@2 U V U W X Y X Y Z AA AB AC AD AE AF AG@5 G@2 A M K L@2 M K L@2 M K L@2 M K L@2 AH AI
>`.pickRestart({
  A: "[c4,e5,g5,c6] [b3,d5,g5,b5]", B: "[a3,c5,f5,a5]@8 g3@4 g3 a3 c4@2, ~ [c5,e5,g5]",
  C: "f6@2 e6@2 d6@2 ~@2 g3@4 g3 a3 c4@2, [a3,c5,f5,a5] [c5,e5,g5], e6 ~@5 c6@10", // F C
  D: "[c4,e5,g5] [b3,d5,g5,b5], c6 ~@15", // C G
  E: "f6 e6 d6 ~ [c5,e5,g5] [g3,g4] [a#3,a#4,d5,f5]@2, [a3,c5,f5,a5] ~, e6 ~@5 c6@5 ~@5", // C G A# F
  F: "[[e5,g5]@4 ~ g3 d#4@2 [e5,g5]@4 ~ g3 a#3@2 [e5,g5]@4 ~ g3 d#4@2 c4@2 g3 a#3@2 g3 a#3@2, c5@27 [a#4,d5,f5]@5, c4@5 ~@3 c4@5 ~@3 c4@5 ~@11, ~@4 [f5,a5]@4 ~@4 [f5,a5]@4 ~@4 [f5,a5]@4 [e5,g5]@3 ~@5]/4", // Em A# F Em
  G: "[[e5,g5] [f5,a5] [e5,g5] [f5,a5], [c4,c5]]/2", // Em F Em F C
  H: "[[e5,g5]@4 [f5,a5]@4 e5@2 g3 a#3@2 g3 a#3@2, [c4,c5]@21 ~@11, ~@16 g5@6 [a#4,d5,f5]@9 ~]/2", // Em F C A#
  I: "[c4,c5,e5] [b3,b4,d5], g5", J: "[a3,a4,c5,f5] [g3,g4,c5,e5]", K: "[c4,c5,e5,g5]",
  L: "[[g4,b4,d5,g5] [c5,e5,g5] [e5,g5,c6] [b3,d5,g5,b5], ~ c4@2 ~]/2", M: "[a3,c5,f5,a5] [g3,c5,e5,g5]",
  N: "[a3,c5,f5,a5]@8 g3@2 g3 ~ [a#3,a#4,d5,f5]@4, ~@2 [c5,e5,g5] ~", // F A# C
  O: "[a3,c5,f5,a5]@7 ~@3 g3@2 [a#3,a#4,d5,f5]@4, ~@7 g3@3 ~@6, ~@2 [c5,e5,g5] ~", P: "[g4,a#4,d#5]", Q: "[a4,c5,f5]",
  R: "[c4,g4,a#4,d#5]@3 ~@13", S: "~@2 [d#4,g4,a#4,d#5] [f4,a4,c5,f5]", T: "[g3@4 g3 a3 a#3 b3, [b4,d5,g5]]/2",
  U: "[a#3,a#4] [c4,c5]@9 [d#4,a#4,d#5,g5] [f4,c5,f5,a5]@3 [d#4,a#4,d#5,g5]@2", V: "[a#3,a#4] [c4,c5]@15",
  W: "a#3 c4@14 ~, [d#5,g5,a#5]", // D#
  X: "c5 [g5,a#5,c6,d#6]!2 c5 [g5,a#5,c6,d#6]!2 c5 [g5,a#5,c6,d#6] [g5,c6] ~ [d#5,a#5,d#6,g6] [f5,c6,f6,a6]@3 [d#5,a#5,d#6,g6]@2, ~@4 [a#5,d#6] ~@3, ~@9 c5@2 ~@5", // Cm7 C5 D# F D# D#5
  Y: "c5 [g5,a#5,c6,d#6]!2 c5 [g5,a#5,c6,d#6]!2 c5 [g5,a#5,c6,d#6]!2 ~ [d#5,a#5,d#6,g6] [f5,c6,f6,a6]@3 [d#5,a#5,d#6,g6]@2, ~@9 c5@2 ~@5", // Cm7 D# F D#
  Z: "[g#4,g#5] [g4,g5] [f#4,f#5] [f4,f5] [e4,e5] [d#4,d#5] [d4,d5] [c#4,c#5]", // G# G F# F E D# D C#
  AA: "[c4,g4,a#4,c5,d#5]!10 [d#4,d#5] [a#3,a#4]@3 [c4,c5]@2", AB: "[c4,g4,a#4,e5] ~@11 [a#3,a#4]@4",
  AC: "[c4,c5]@9 ~@7", AD: "~@5 [g3,g4] [a#3,a#4]@2", AE: "[c4,c5]@5 ~@3", AF: "~@5 g3 a#3@2",
  AG: "[[e5,g5]@3 [f5,a5] [e5,g5] [f5,a5] [e5,g5] [f5,a5] [e5,g5] [f5,a5], c5, c4@3 c4@2]/5", // Em F Em F Em F Em F
  AH: "[a3,c5,f5,a5]@4 [c4,e5,g5] [g3,g4] [a#3,a#4]@2, ~@8 c5 ~@7", AI: "[c4,c5]@2 [c4,c5] ~@13",
})).s("gm_rock_organ").gain(0.15).pan(0.3)

// chords · rock organ · "Hammond"
const rock_organ_2 = note("<~@104 A B C D A B C ~>".pickRestart({
  A: "[g5,b5,d6] [g5,b5,d6]@4 ~ [e5,g5,c6] [e5,g5,c6]@5 ~@2 [c6,e6,g6] ~", // G C
  B: "[c6,e6,g6]@3 ~ [c6,e6,g6]@3 [b5,d6,a6]@2 ~ [b5,d6,g6] ~ [g5,b5,e6] ~ [g5,b5,d6] ~", // C Bm7 G Em G
  C: "[f5,a5,c6]@2 [f5,a5,c6]@3 ~ [e5,g5,c6]@6 ~@4", D: "[e5,g5,c6] [e5,g5,c6]@5 [e5,g5,a5] [e5,g5,c6]@5 ~@4",
})).s("gm_rock_organ").gain(0.16).pan(0.7)

// chords · distortion guitar · "Guitar"
const distortion_guitar = note(`<
  ~@10 A B C D E F G F H F I ~@2 J K L M J K L N B C D O F G F P F I ~@2 J K L M J K L Q R ~@2 S@5 T U V W X W V Y Z AA
  AB AC AD AE AD AF AG AH AG AH AI AJ AK AL AM AL ~@3 AN ~@6 AO AP AQ AR AO AP AQ AR AO AP AQ AR AO AP AQ AS AT
>`.pickRestart({
  A: "~@10 [g2,d3] ~ [a#2,f3]@4", B: "[c3,g3]@4 ~@6 [g2,d3] ~ [d#3,a#3]@4",
  C: "[c3,g3]@2 [c3,g3]@2 ~@6 [g2,d3] ~ [a#2,f3]@4", D: "[c3,g3]@5 ~@5 [g2,d3] ~ [d#3,a#3]@4",
  E: "[c3,g3]!2 [g2,d3] [a#2,f3]@2 [g2,d3] [a#2,f3]@2", // C5 G5 A#5 G5 A#5
  F: "[g3,c4]@2 [g3,a#3,d#4]!2 ~@2 [g3,a#3,d#4]!2 ~@2 [d3,g3] ~ [a#3,d#4]@3 ~", // C5 D# G5 D#5
  G: "[g3,c4]@2 [g3,c4] [g3,a#3,d#4] ~@2 [g3,a#3,d#4]!2 ~@2 [d3,g3] ~ [f3,a#3]@4", // C5 D# G5 A#5
  H: "[g3,c4]@2 [g3,c4] ~@5 [g4,a#4]!6 g4@2", I: "[g3,c4]@2 [g3,a#3,c4,d#4] [g3,a#3,d#4] ~@2 [g3,a#3,d#4]!2 ~@8",
  J: "[g3,c4] [g3,c4,e4]!2 ~ [g3,c4,e4] ~ [g3,c4,e4]!2 ~ [g3,c4] [g3,c4,e4]!3 ~ [g3,c4,e4] [g3,b3]", // C5 C C5 C G
  K: "~ [g3,b3] [g3,b3,d4]!3 ~ [g3,b3,d4]!2 ~ [g3,c4,e4]!4 ~ [g3,c4,e4] ~", L: "[c4,e4,g4] [b3,d4,g4]",
  M: "[a3,c4,f4] [g3,c4,e4]", N: "[a3,c4,f4]@8 [g3,c4,e4]@2 [g2,d3] ~ [a#2,f3]@4",
  O: "[c3,g3]@2 [c3,g3]@2 [g2,d3]@2 [a#2,f3]@2 [g4,a#4]!6 g4@2", P: "[g3,c4]@2 [g3,c4] ~@13",
  Q: "[a3,c4,f4]@4 [g3,c4,e4] ~ [f3,a#3]@2", R: "[g3,c4] ~@3",
  S: "[~@15 [c3,g3,a#3,d#4]@15 [a3,c4,f4]@16 [c4,f4]@14 d#4@2 c4@4 d#4@3 ~@11]/5", // Cm7 F F5
  T: "[g4,a#4,c5,d#5] ~ [g4,a#4,c5,d#5] ~@3 [g4,a#4,c5,d#5] ~@2 [g4,a#4,c5,d#5] ~@2 [g4,a#4,c5,d#5] ~ [g4,a#4,c5,d#5] ~", // Cm7
  U: "[f4,a4,c5,d#5] ~ [f4,a4,c5,d#5] ~@2 [f4,a4,c5,d#5] ~ [a4,c5,d#5] ~ [a4,b4,c5,d#5,f5] ~@2 [a4,c5,d#5,f5]@2 [a4,c5,d#5,f5] ~", // F7 Adim F7
  V: "[g4,a#4,c5,d#5] ~ [g4,a#4,c5,d#5] ~@2 [g4,a#4,c5,d#5] ~ [g4,a#4,c5,d#5] ~ [g4,a#4,c5,d#5] ~@2 [g4,a#4,c5,d#5] ~ [g4,a#4,c5,d#5] ~", // Cm7
  W: "[a4,c5,d#5,f5] ~ [a4,c5,d#5,f5] ~@2 [a4,c5,d#5,f5] ~ [a4,c5,d#5,f5] ~ [a4,c5,d#5,f5] ~@2 [a4,c5,d#5,f5] ~ [a4,c5,d#5,f5] ~", // F7
  X: "[g4,a#4,c5,d#5] ~ [g4,a#4,c5,d#5] ~@2 [g4,a#4,c5,d#5] ~ [g4,a#4,c5,d#5] ~ [g4,a#4,c5,d#5] ~@2 [g4,a#4,c5,d#5]@2 [g4,a#4,c5,d#5] ~", // Cm7
  Y: "[a4,c5,d#5,f5] ~ [a4,c5,d#5,f5] ~@2 [a4,c5,d#5,f5] ~ [a4,c5,d#5,f5] ~ [a4,c5,d#5,f5] ~@2 [a4,c5,d#5,f5]@2 [c5,d#5,f5] ~", // F7
  Z: "c3!2 [g3,a#3,d#4]@2 c3@2 [g3,a#3,d#4]@2 c3!2 [g3,a#3,d#4]@2 c3@2 [a3,c4,f4]@2", // D# F
  AA: "c3!2 [g3,a#3,d#4]@2 c3@2 [g3,a#3,d#4]@2 [g3,a#3,d#4]@4 [a3,c4,f4]@3 ~", AB: "[g3,b3,d4]",
  AC: "g2@4 a2@4 a#2@4 b2@3 ~", AD: "[a#2,f3] [c3,g3]@9 [d#3,a#3] [f3,c4]@3 [d#3,a#3]@2", AE: "[a#2,f3] [c3,g3]@15",
  AF: "[a#2,f3] [c3,g3]@14 ~", // A#5 C5
  AG: "~ [a#3,d#4,g4]!2 d#4 [a#3,d#4,g4] [a#3,d#4]!2 [a#3,d#4,g4] ~ [a#3,d#4,g4]!3 d#4 [c4,f4,a4]!3", // D# D#5 D# F
  AH: "[c4,f4,a4] d#4 [a#3,d#4,g4] [a#3,d#4]!3 [a#3,d#4,g4]!2 ~ [a#3,d#4,g4]!4 [c4,f4,a4] [c4,f4] [c4,f4,a4]", // F D# D#5 D# F F5 F
  AI: "g#3 g3 f#3 f3 e3 d#3 d3 c#3", AJ: "c3@2 [g3,c4,d#4]!2 ~@2 [g3,c4,d#4]!2 ~@2 d#3 a#2@3 c3@2",
  AK: "c3 ~@11 [f3,a#3]@4", AL: "[g3,c4]@9 ~@7", AM: "~@5 [d3,g3] [f3,a#3]@2", AN: "~@3 [g3,a#3,d#4]",
  AO: "~@4 [e4,g4,c5] ~@7 [e4,g4,c5]@2 ~@2", AP: "~@4 [g4,b4,d5]@2 ~@6 [e4,g4,c5] ~@3",
  AQ: "~@2 [e4,g4,c5] ~@3 [d4,g4,b4] ~", AR: "~@4 [c4,f4,a4]@2 ~@6 [c4,e4,g4] ~@3",
  AS: "~@4 [c4,f4,a4]@2 ~@4 [d3,g3]@2 [c4,e4,g4] ~@3, ~@3 [f3,a#3]", AT: "[g3,c4]!2 ~@6",
})).s("gm_distortion_guitar").gain(0.17).pan(0.1)

// other · overdriven guitar · "Guitar"
const overdriven_guitar = note(`<
  ~@10 A B A B C D E F G D E H I J@2 K L@3 M A B A B C D E F G D E H I N@2 O P Q@2 R S ~@7 T@2 U V@4 W X Y Z AA@2 ~ AB
  ~@2 AC AD AC AD AE AF AG AH AI AJ ~@5 AK AL AM H AN ~@15 AI AO
>`.pickRestart({
  A: "~@10 [d3,g3] ~ [f3,a#3]@3 ~", B: "[g3,c4]@4 [a#3,d#4,g4]@5 ~@7",
  C: "~@4 [d3,g3] ~ [f3,a#3]@4 [f3,c4]@2 [f3,a#3]@3 ~", D: "[c3,g3]@4 ~@6 [g2,d3] ~ [d#3,a#3]@4",
  E: "[c3,g3]@2 [c3,g3]@2 ~@6 [g2,d3] ~ [a#2,f3]@4", F: "[c3,g3]@5 ~@5 [g2,d3] ~ [d#3,a#3]@4",
  G: "[c3,g3]!2 [g2,d3] [a#2,f3]@2 [g2,d3] [a#2,f3]@2", H: "c3 b2", I: "a2 g2",
  J: "[~@8 d5@2 f5 ~ d5 ~ d5@6 ~@4 d5!6 d5@2]/2", K: "c5@11 ~@5",
  L: "[~@6 g3@2 c4 ~ d4 ~ d4@10 ~@2 d4@2 c4 a3 d4 ~ d4@7 ~@3 d4@2 g4 ~ g4@2 c5 ~]/3", M: "c5@9 ~@7",
  N: "[~@8 g4@2 c5 ~ d5@2 d5@6 ~@4 d5@2 f5 ~ d5@2 c5 ~]/2", O: "c5@8 b4@7 ~", P: "~@2 g4@2 c5 ~ d5@10",
  Q: "[~@5 g5@7 e5@2 d5 f5]/2", R: "d5@4 c5@4 g4@2 c5 ~ a4 c5@3", S: "g4@2 e4 d4 c4 ~ c4@6 ~@4",
  T: "[~@10 c5@11 a#4 g4 c5@3 a#4 c5@3 ~ [g4,a#4], ~@27 g4 ~@4]/2", U: "c5@6 a#4 c5@4 f4@5, ~@7 g4 ~@8",
  V: "[~@2 f4@9 [c4,d#4] d#4@2 c4@4 a3 [a3,c4] d#4 [c4,d#4] f4 [d#4,f4] a4 [f4,a4] [a4,c5] c5 d#5@7 [a#4,c5] c5@6 c5 [g4,a#4] f#4 [d#4,f4] c4 f4@4 [c4,d#4] d#4@2 c4 [c4,d#4] a#3 [f#3,g3] f3 [d#3,f3] d#3 [c3,d#3] f3 [c3,d#3]]/4", // Cm Am Cm D#sus2 F Am A#sus2 Gm …
  W: "a#2@9 ~@6 f5", X: "~ f5!3 ~ f5!3 ~ f5!3 ~ d#5 c5@2",
  Y: "a#3 [b3,c4] d#4 [e4,f4] a#3 [b3,c4] d#4 [e4,f4] a#3 [b3,c4] d#4 [e4,f4] a#3 [b3,c4] d#4 [e4,f4]", // Cmaj7 Fmaj7 Cmaj7 Fmaj7 Cmaj7 Fmaj7 Cmaj7 Fmaj7
  Z: "a#3 [b3,c4] d#4 [e4,f4] a#3 [b3,d#4] ~ [d#4,f4] ~ f4@4 a#4 ~ c5", // Cmaj7 Fmaj7 B D#sus2
  AA: "[d#5 c5 ~ g5 d#5 c5 g5 ~ d#5 c5 g5 ~ a#5!2 ~ a#5@17]/2", AB: "~@8 [g4,a#4,d#5]@7 ~",
  AC: "a#2 c3!2 ~ c3@2 ~ c3 ~ c3 d#3 f3@3 d#3@2", AD: "a#2 c3@2 ~ c3@2 ~ c3@2 c3 d#3 f3@3 d#3@2",
  AE: "g#4 g4 f#4 f4 e4 d#4 d4 c#4", AF: "c4!10 d#4 a#3@3 c4@2", AG: "e4 ~@5 [a#2,f3]@2", AH: "[c3,g3] ~",
  AI: "~@5 [g2,d3] [a#2,f3]@2", AJ: "[c3,g3]@5 ~@3", AK: "~@5 g2 a#2@2", AL: "c3@9 ~ g2@2 d#3@4",
  AM: "c3@9 ~ g2 ~ a#2@4", AN: "a2@8 g2@7 ~", AO: "[c3,g3]@2 [c3,g3] ~@13",
})).s("gm_overdriven_guitar").gain(0.23).pan(0.9)

// other · overdriven guitar · "Guitar"
const overdriven_guitar_2 = note("<~@3 A B ~@2 A C ~@43 D E D F@2 G H ~@53>".pickRestart({
  A: "g5@2 ~@2 g5@3 g5 a5 g5@3 e5@2 d5@2", B: "c5 ~ c5@3 ~ c5@7 ~@3", C: "c5@2 c5@3 ~ c5@7 ~@3", D: "~@12 d5 ~ d5 c5",
  E: "a#4 c5@6 ~@9", F: "[a#4 c5@6 ~@5 [g5,c6]@16 d5 ~ d5 c5]/2", G: "a#4 c5@6 ~@9, [g4,d#5]@13 ~@3",
  H: "[a4,d#5,f5]@6 c5@4 d#5@3 ~@3, c5 ~@3", // F7
})).s("gm_overdriven_guitar").gain(0.23)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~ A B A B A B A B A C D E D F D E D F G H I J K L M N O P Q R D E D F D E D F G H I J K L M N O P Q R S T S U S V W X
  Y Z AA AB Y Z AA AB AC AD AE AF AG AH AG AH AG@4 AI AJ AK AL AM AN AO ~@4 AP AQ AR AS AT K L M N O P Q AU AV ~@5 AW AX
  AY
>`.pickRestart({
  A: "c2 b1", B: "a1@8 g1@4 g1 a1 c2@2", C: "a1@8 g1 ~ g1@2 a#1@3 ~", D: "c2@2 ~@3 g1 d#2@2", E: "c2!2 ~@3 g1 a#1@2",
  F: "c2 ~ c2@2 g1@2 a#1@4 g1@2 a#1@3 ~", G: "c2@4 ~@6 g1 ~ d#2@4", H: "c2 ~ c2@2 ~@6 g1@2 a#1@4", I: "c2@4 b1@3 b1",
  J: "a1@6 a1 ~ g1@4 g2 f2 e2 d2", K: "c2@2 c2 ~ c2@2 g1 c2@4 ~ e1 f1 f#1@2", L: "g1@2 g1@3 ~@2 c2!2 ~ c2@2 ~@2 f2 g2",
  M: "c2@6 g2 c2 b1 ~ b1@4 b1@2", N: "a1 ~ a1@4 a1@2 g1 ~ g1 ~ g1 a1 c2 a1", O: "c2@3 ~ c2@2 g1 c2@2 ~@5 f2 g2",
  P: "g1 ~ g1@2 ~ g1 ~ g1 c2@4 g1 a1 c2 a1", Q: "c2@6 ~ c2 b1 ~ b1@3 ~ b1@2", R: "a1 ~ a1@3 ~@2 a1 g1 ~ g1@2 a#1@4",
  S: "c2 ~ c2 ~@3 c2!2 ~@7 c2", T: "c2 ~ c2 ~@3 c2!2 ~@5 a1 a#1 b1", U: "c2 ~ c2 ~@3 c2!2 ~@3 a#2 ~@2 a2@2",
  V: "c2 ~ c2 ~@2 c2 ~@2 c2@2 f2 ~ a#2 a2@3", W: "c2 ~ c2@2 ~@2 c2!2 ~@3 c2 d#2 ~ d#2 e2",
  X: "f2 ~ f2 ~ f1 ~ f1 f1@2 g1 a1!2 a#1!2 b1!2", Y: "c2 ~ c2 ~ c2 ~ c2!2 ~ c2 d2@2 d#2@2 e2@2",
  Z: "f2 ~ f2@2 f2 ~ f2 f1@2 f1 g1@2 a1@2 a#1 b1", AA: "c2!3 ~ c2 ~ c2!2 ~ c2 d2!2 d#2!2 e2!2",
  AB: "f2!3 ~ f2@2 f2 f1 ~ f1 g1!3 a1 a#1 b1", AC: "c2 ~@7", AD: "~@2 d#2 f1", AE: "g1",
  AF: "g1 ~ g1@2 a1@2 a1@2 a#1 ~ a#1@2 b1 ~ b1 ~", AG: "c2!10 d#2 f2@3 d#2@2", AH: "c2!16",
  AI: "g#2 g2 f#2 f2 e2 d#2 d2 c#2", AJ: "c2!10 d#2 a#1@3 c2@2", AK: "c2 ~@11 a#1@4", AL: "c2@9 ~ g1@2 d#2@4",
  AM: "c2@2 c2@7 ~ g1@2 a#1@4", AN: "c2@5 g1 d#2@2", AO: "c2@2 c2@8 g1@2 a#1@3 ~", AP: "~@10 g1 ~ a#1@4",
  AQ: "c2@10 g1 ~ d#2@4", AR: "c2 ~ c2@8 ~@2 a1 a#1 b1@2", AS: "c2@5 ~ c2@2 b1 ~ b1@4 b1@2",
  AT: "a1@5 ~ a1@2 g1@3 ~ g1 a1 c2 a1", AU: "a1 ~ a1@3 ~@2 a1 g1 ~ g1@2 a1@4", AV: "c2@7 c2@2 ~ c2 ~ c2 ~@3",
  AW: "c2@5 ~ c2 ~ b1@4 ~@2 b1 ~", AX: "a1@5 ~ a1 ~ g1 ~ g1@2 a#1@4", AY: "c2 ~ c2@2 ~@12",
})).s("gm_electric_bass_finger").gain(0.2)

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

// drums · rim
const rim = s("rim").struct("<[x!4] ~@111>").gain(0.19)

// drums · clap
const clap = s("cp").struct("<~@104 [~ x ~ x]!7 ~>").gain(0.31)

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@9 B C@3 D E@3 F E F G E@8 H C@3 D E@3 F E F G I ~@39 J A@3 K@9 E@7 H E@7 L ~
>`.pickRestart({
  A: "x!4", B: "x ~ x!2 ~@4", C: "x!15 ~", D: "x!13 ~@3", E: "x!2 ~ x!7 ~ x!5", F: "x!2 ~ x!7 ~ x ~@4",
  G: "~ x ~ x!7 ~ x!5", H: "x!2 ~ x!7 ~@6", I: "x!2 ~ x!5 ~@8", J: "~ x!3", K: "x!10 ~ x!3 ~ x", L: "x!2 ~ x!8 ~@3 x!2",
})).gain(0.16)

// drums · low tom
const low_tom = s("lt").struct("<~@30 A ~@15 A ~@3 A ~@5 A ~@13 B ~ A ~ B ~@4 A ~@4 C D ~@24 B ~>".pickRestart({
  A: "~@15 x", B: "~@14 x!2", C: "~ x", D: "~@7 x",
})).gain(0.28)

// drums · mid tom
const mid_tom = s("mt").struct("<~@30 A ~@15 A ~@3 B ~@5 C ~ D ~@11 E ~ B ~ F ~@4 C ~@2 G ~ H I ~@24 J ~>".pickRestart({
  A: "~@7 x", B: "~@12 x!3 ~", C: "~@13 x!2 ~", D: "~@13 x ~ x", E: "~@11 x!3 ~@2", F: "~@8 x!6 ~@2",
  G: "~@4 x ~ x!2 ~@8", H: "~@4 x!4 ~@8", I: "~@10 x ~@2 x ~@2", J: "~@6 x!2 ~ x!2 ~ x ~@3",
})).gain(0.28)

// drums · open hat
const open_hat = s("oh").struct("<~@2 A ~ A ~ A ~ A ~@2 B@3 C D@16 B@3 C D@7 E ~@40 A ~ A F@9 D@16 ~>".pickRestart({
  A: "~@7 x", B: "~@15 x", C: "~@13 x ~@2", D: "~ x ~@3 x ~@2", E: "~ x ~@6", F: "~@5 x ~ x",
})).gain(0.19)

// drums · high tom
const high_tom = s("ht").struct("<~@30 A ~@19 B ~@5 C ~ D ~@11 E ~ D ~ F ~@7 G ~ G ~@25 H ~>".pickRestart({
// … 23 more lines

More by Manfred Mann