Strudelify
Do You Wanna Go the Whole Way? cover art

1994 · Crash! Boom! Bang!

Do You Wanna Go the Whole Way?

Roxette

KeyB minorTempo100 bpm
0:00/0:00
// Do You Wanna Go the Whole Way? — Roxette
// 100 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 14 "STEEL GTR" acoustic guitar steel (copy of ch 8 "NYLON GTR" acoustic guitar nylon)
// note: Full arrangement: all 77 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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.

// bass · electric bass finger · "FINGERDBA"
const bass = note("<~@2 A B@15 C D E B@10 F G H B F G I D J K ~@17 L M@2 N@7 O P Q R S M T@3>".pickRestart({
  A: "~@2 [b1,b2]!6", B: "[b1,b2]!8", C: "[b1,b2]!2 [g1,g2]!6", D: "[g1,g2]!2 [a1,a2]!6", E: "[a1,a2]!2 [b1,b2]!6",
  F: "[b1,b2]!2 [d2,d3]!6", G: "[d2,d3]!2 [e2,e3]!6", H: "[e2,e3]!2 [b1,b2]!6", I: "[e2,e3]!2 [g1,g2]!6",
  J: "[a1,a2]!2 [e2,e3]!6", K: "[e2,e3]!2 ~@6", L: "~@8 [d2,d3]@4 [d2,d3]@4 ~ [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@3",
  M: "~ [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@3", // D
  N: "[~ [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 ~ [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 ~ [d2,d3]@4 [d2,d3]@4 [a#1,a#2]@4 [a#1,a#2]@4 [a#1,a#2]@4 [a#1,a#2]@4 [a#1,a#2]@4 [a#1,a#2]@4 [a#1,a#2]@4 [a#1,a#2]@4 [c2,c3]@4 [c2,c3]@4 [c2,c3]@4 [c2,c3]@4 [c2,c3]@4 [c2,c3]@4 [c2,c3]@4 [c2,c3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 ~]/7", // D A# C D
  O: "[d2,d3]!8", P: "[d2,d3] [a#1,a#2]!7", Q: "[a#1,a#2] [c2,c3]!7",
  R: "~ [c2,c3]@4 [g1,g2]@4 [g1,g2]@4 [g1,g2]@4 [g1,g2]@4 [g1,g2]@4 [g1,g2]@4 [g1,g2]@3", // C G
  S: "~ [g1,g2]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@3", // G D
  T: "[~ [d2,d3]@4 ~ [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 [d2,d3]@4 ~@26]/3", // D
})).s("gm_electric_bass_finger").gain(0.48)

// other · distortion guitar · "DISTORTIO"
const distortion_guitar = note("<~@2 A B C@2 D E@2 ~@11 F D E@2 ~@34 G H I@2 J K@2 ~@8 L M@3>".pickRestart({
  A: "~@8 [a3,a4]@2 [g#3,g#4]@2 [f#3,f#4] ~ [g#3,g#4]@3 ~ [a3,a4] ~ [a3,a4]@2 [g#3,g#4] ~@3 [f#3,f#4] ~ [a3,a4] ~@3, ~@25 [a3,a4]@2 ~@5", // A G# F# G# A G# F# A
  B: "[b3,b4]@5 ~@3 [a3,a4]@2 [g#3,g#4]@2 [f#3,f#4] ~ [g#3,g#4]@3 ~ [a3,a4] ~ [a3,a4]@2 [g#3,g#4] ~ [a3,a4]@2 [b3,b4] ~ [g#3,g#4] ~@3", // B A G# F# G# A G# A …
  C: "[[f#3,f#4]@3 ~ [e3,e4] ~ [f#3,f#4]@33 ~ [a3,a4,a5]@2 [g#3,g#4,g#5]@2 [f#3,f#4,f#5] ~ [g#3,g#4,g#5]@3 ~ [a3,a4,a5] ~ [a3,a4,a5]@2 [g#3,g#4,g#5] ~@3 [f#3,f#4,f#5] ~ [a3,a4,a5] ~@3, ~@57 [a3,a4,a5]@2 ~@5]/2", // F# E F# A G# F# G# A …
  D: "[b3,b4,b5]@5 ~@3 [a3,a4,a5]@2 [g#3,g#4,g#5]@2 [f#3,f#4,f#5] ~ [g#3,g#4,g#5]@3 ~ [a3,a4,a5] ~ [a3,a4,a5]@2 [g#3,g#4,g#5] ~ [a3,a4,a5]@2 [b3,b4,b5] ~ [g#3,g#4,g#5] ~@3", // B A G# F# G# A G# A …
  E: "[[f#3,f#4,f#5]@3 ~ [e3,e4,e5] ~ [f#3,f#4,f#5]@33 ~@25]/2", // F# E F#
  F: "~@8 [a3,a4,a5]@2 [g#3,g#4,g#5]@2 [f#3,f#4,f#5] ~ [g#3,g#4,g#5]@3 ~ [a3,a4,a5] ~ [a3,a4,a5]@2 [g#3,g#4,g#5] ~@3 [f#3,f#4,f#5] ~ [a3,a4,a5] ~@3, ~@25 [a3,a4,a5]@2 ~@5", // A G# F# G# A G# F# A
  G: "~@8 [c4,c5]@2 [b3,b4]@2 [a3,a4] ~ [b3,b4]@3 ~@2 [c4,c5] ~ [c4,c5]@2 [b3,b4] ~ [c4,c5]@2 [a3,a4] ~ [c4,c5] ~@2", // C B A B C B C A …
  H: "~ [d4,d5]@5 ~@3 [c4,c5]@2 [b3,b4]@2 [a3,a4] ~ [b3,b4]@3 ~ [c4,c5] ~ [c4,c5]@2 [b3,b4] ~ [c4,c5]@2 [d4,d5] ~ [b3,b4] ~@2", // D C B A B C B C …
  I: "[~ [a3,a4]@3 ~ [g3,g4] ~ [a3,a4]@33 ~ [c4,c5,c6]@2 [b3,b4,b5]@2 [a3,a4,a5] ~ [b3,b4,b5]@3 ~@2 [c4,c5,c6] ~ [c4,c5,c6]@2 [b3,b4,b5] ~ [c4,c5,c6]@2 [a3,a4,a5] ~ [c4,c5,c6] ~]/2", // A G A C B A B C …
  J: "~@2 [d4,d5,d6]@5 ~@3 [c4,c5,c6]@2 [b3,b4,b5]@2 [a3,a4,a5] ~ [b3,b4,b5]@3 ~ [c4,c5,c6] ~ [c4,c5,c6]@2 [b3,b4,b5] ~ [c4,c5,c6]@2 [d4,d5,d6] ~ [b3,b4,b5] ~", // D C B A B C B C …
  K: "[~@2 [a3,a4,a5]@3 ~ [g3,g4,g5] ~ [a3,a4,a5]@33 ~@23]/2", // A G A
  L: "~@5 [c4,c5,c6]@2 [b3,b4,b5]@2 [a3,a4,a5]@2 ~ [b3,b4,b5]@3 [c4,c5,c6] ~ [c4,c5,c6]@2 [b3,b4,b5] ~ [c4,c5,c6] ~ [a3,a4,a5] ~ [c4,c5,c6]@2 ~@2 [d4,d5,d6]@3", // C B A B C B C A …
  M: "[~@5 [c4,c5,c6]@2 ~ [b3,b4,b5]@2 [a3,a4,a5]@2 [b3,b4,b5]@3 [c4,c5,c6] ~ [c4,c5,c6]@2 ~ [b3,b4,b5] ~ [c4,c5,c6]@2 [d4,d5,d6] ~ [b3,b4,b5]@2 ~@2 [a3,a4,a5]@4 [g3,g4,g5]@2 [a3,a4,a5]@33 ~@27]/3", // C B A B C B C D …
})).s("gm_distortion_guitar").gain(0.8)

// chords · pad poly · "POLYSYNTH"
const pad_poly = note("<A@8 B@8 C@8 D@7 E@7 F@5 ~@15 G@6 H I@4 J@8>".pickRestart({
  A: "[~@2 [d4,f#4,a4]@8 [e4,g#4,b4]@8 [d4,f#4]@7 ~ [g#4,b4]@8 [d#4,f#4]@8 [d4,f#4,a4]@8 [e4,g#4]@7 ~ [d#4,f#4]@6, ~ b3@31, ~@18 a4@8 e4@7 ~@17 b4@8 ~@6]/8", // D E D G#m D#m D E D#m
  B: "[~@8 d#4@29 ~@3 [d4,a4]@29 ~@3 [e4,g#4,b4]@29 ~@67 [d4,a4]@30 ~@2 [g#4,b4]@32 [d#4,f#4]@24, ~ b3@31, ~@8 f#4@61 ~@34 d#4@63 ~@34 e4@29 ~@27, ~@104 f#4@95 ~@57]/8", // D5 E D5 G#m D#m
  C: "[~ [b3,d4,f#4,a4]@4 [b3,e4,g#4,b4]@4 [b3,d4,f#4]@4 [c#4,e4,f#4,a4]@4 [b3,d4,f#4,a4]@4 [b3,e4,g#4,b4]@4 [b3,d#4,f#4]@7]/8", // Bm7 E Bm F#m7 Bm7 E B
  D: "[~@8 [b3,d4,f#4,a4]@32 [b3,e4,g#4,b4]@32 [b3,d#4,f#4]@64 [b3,d4,f#4,a4]@32 [b3,e4,g#4,b4]@33 ~@23]/7", // Bm7 E B Bm7 E
  E: "[~ [f#3,a3,d4]@4 [g#3,b3,e4]@4 [f#3,b3,d#4]@8 [a3,d4,f#4]@4 [g#3,b3,e4]@4 [b3,d4,b4]@3]/7", // D E B D E Bm
  F: "[~@8 [c#4,e4,f#4,a4]@32 [e4,g#4,b4]@32 [d#4,f#4,b4]@63 ~@25]/5", // F#m7 E B
  G: "[~@8 [f4,a4]@28 ~@5 [b4,d5]@32 [f#4,a4]@32 [f4,a4,c5]@32 ~ [g4,b4]@28 ~@4 [f#4,a4]@22, ~@8 c5@32 ~ g4@28 ~@69 d5@32 ~@22]/6", // F Bm F#m F G F#m
  H: "~ [f#4,a4]@12 ~@3, ~ d4@15", I: "[~@3 [d4,f4,a#4]@31 [c4,e4,g4]@33 [d4,f4,a4]@61]/4",
  J: "[~@4 [d4,f4,a#4]@32 [c4,e4,g4]@32 [g4,b4,d5]@33 [f4,a4]@64 ~ [g4,b4,d5]@32 [f#4,a4]@32 ~@26, ~@101 d4@129 ~@26]/8", // A# C G F G F#m
})).s("gm_pad_poly").gain(0.64)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<A B@2 ~@2 C D E@2 ~@9 F@3 ~@16 G@3 H@3 ~@18 I J K@2 ~@8 L M@3>".pickRestart({
  A: "~@2 g5@2 ~ a5@2 a#5@2 b5@19 a5@2 b5@2, ~ f#5@2 ~ g#5@2 ~@26",
  B: "[c#6@2 d6@2 c#6@2 a5@2 b5@3 ~ b5@2 a5@2 b5@3 ~ b5@2 a5@2 b5@13 ~@27]/2",
  C: "~@8 a6@2 g#6@2 f#6 ~ g#6@3 ~ a6 ~ a6@2 g#6 ~@3 f#6 ~ a6 ~@3, ~@25 a6@2 ~@5",
  D: "b6@5 ~@3 a6@2 g#6@2 f#6 ~ g#6@3 ~ a6 ~ a6@2 g#6 ~ a6@2 b6 ~ g#6 ~@3", E: "[f#6@3 ~ e6 ~ f#6@33 ~@25]/2",
  F: "[~@27 a5@2 b5@2 c#6@2 d6@2 c#6@2 a5@2 ~ b5@3 ~@2 a5@2 ~ b5@3 ~@2 a5@2 ~ b5@14 ~@26, ~@8 [g4,b4,d5]@21 ~@67, ~@9 f#5@21 ~@14 b5@2 ~@6 b5@2 ~@42]/3", // G
  G: "[~@8 [g4,d5,f#5,b5]@19 a5@2 b5@2 c#6@2 d6@2 c#6@3 a5@2 b5@3 ~ b5@2 a5 ~ b5@3 ~@2 a5@2 ~ b5@35 ~ a5 ~ b5@2, ~@26 b5 ~@21]/3", // Gmaj7
  H: "[c#6@2 d6@2 ~ a5@2 ~ b5@63 ~@25, ~@2 c#6 ~@45]/3", I: "~@9 c7@2 b6@2 a6 ~ b6@3 ~@2 c7 ~ c7@2 b6 ~ c7@2 a6 ~ c7 ~",
  J: "~@2 d7@5 ~@3 c7@2 b6@2 a6 ~ b6@3 ~ c7 ~ c7@2 b6 ~ c7@2 d7 ~ b6 ~", K: "[~@2 a6@3 ~ g6 ~ a6@33 ~@23]/2",
  L: "~@5 c7@2 b6@2 a6@2 ~ b6@3 c7 ~ c7@2 b6 ~ c7 ~ a6 ~ c7@2 ~@2 d7@3",
  M: "[~@5 c7@2 ~ b6@2 a6@2 b6@3 c7 ~ c7@2 ~ b6 ~ c7@2 d7 ~ b6@2 ~@2 a6@4 g6@2 a6@33 ~@27]/3",
})).s("gm_string_ensemble_1").gain(0.64)

// other · lead 3 calliope · "CALLIOPE"
const lead_3_calliope = note("<~@31 A B C D@2 E ~@11 F@2 G@2 ~ H@4 ~@8 I J K@2 L M ~@6>".pickRestart({
  A: "~@17 b4@3 a3@2 [b3,b4]@4 a3@2 [b3,b4]@4, ~@16 b3@4 a4 ~@5 a4 ~@5", // B
  B: "~@16 [b3,b4]@4 a3@2 [b3,b4]@3 ~ a4 ~ [b3,b4]@4, ~@20 a4 ~@4 a3@2 ~@5", C: "~@24 d5@3 ~ d5@3 ~",
  D: "[d5@2 ~@2 d5 ~@3 d5@5 ~ c#5@6 a4@4 b4@7 a4@5 f#4@10 ~@2 [b3,b4]@3 ~ [a3,a4] ~ [b3,b4]@3 ~ [a3,a4] ~ [b3,b4]@3 ~, ~ f#4@3 ~@4]/2", // B A B A B
  E: "~@16 [b3,b4]@3 ~ [a3,a4] ~ [b3,b4]@4 a3@2 [b3,b4]@4, ~@26 a4 ~@5", // B A B
  F: "[~ f#4@2 f#4@2 ~ f#4@2 g4@2 ~ a4@5 f#4@2 e4@5 f#4@7 ~ d4@30 ~@3]/2",
  G: "[~@4 a3@2 ~ d4@2 d4@2 ~ d4@5 f#4@5 d4@15 ~@27]/2",
  H: "[~ f#4@2 f#4@2 ~ f#4@2 g4@2 ~ a4@5 f#4@2 e4@5 f#4@7 ~ d4@29 ~ f4@2 f4@2 ~ d4@5 f4@2 f4@2 ~ d4@5 f#4@5 d4@15 ~@27]/4",
  I: "~@10 [d4,d5]@4 [c4,c5]@2 ~ [d4,d5]@4 [c4,c5]@2 [d4,d5]@4 ~@5", // D C D C D
  J: "~@11 [d4,d5]@4 c4@2 [d4,d5]@4 c4@2 [d4,d5]@4 ~@5, ~@15 c5 ~@5 c5 ~@10", // D
  K: "[~@20 d5@2 ~ [d4,d5]@2 ~@2 [d4,d5]@2 ~@2 [d4,d5]@2 ~@2 [f4,f5]@5 ~ [e4,e5]@6 [c4,c5]@4 [d4,d5]@8 [c4,c5]@2 ~@3, ~@19 d4@2 ~@43]/2", // D F E C D C
  L: "[a3,a4]@12 [d4,d5]@3 ~ c5 ~ [d4,d5]@3 ~ c5 ~ [d4,d5]@4 ~@4, ~@15 c4@2 ~@4 c4@2 ~@9", // A D
  M: "~@13 [d4,d5]@3 c4@2 ~ d5@4 c4@2 [d4,d5]@5 ~@2, ~@16 c5 ~ d4@4 ~ c5 ~@8", // D
})).s("gm_lead_3_calliope").gain(0.48)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note("<~@43 A@3 B@5 C@5 D@3 ~@18>".pickRestart({
  A: "[~@15 b3@5 ~@16 d4@5 ~@9 b3@5 ~@5 f#4@20 ~@11 e4@5, ~ b2@19 a2@21 g2@39 ~@16, ~@5 f#3@15 ~@5 f#3@16 ~@4 f#3@34 ~@2 d3@15, ~@9 d4@10 ~@11 f#4@11 ~@14 b3@25 ~@6 a3@10]/3",
  B: "[~@3 d4 a3 g2 d3 g3 ~@3 d4 ~@3 e4 ~@3 d4 ~@3 g3 ~@4 g3 ~@2 e4, d4@15 ~@25 d4@15 ~@5 g3@20 d4@15 ~@5 a3@20 d4@15 d4@9 ~@6 a3@10, ~@5 a#2@16 ~@24 f2@17 ~@8 a3@12 ~@8 d3@12 ~@8 d3@12 ~@8 d3@14 ~ d3@15, ~@10 d3@11 ~@29 d3@12 ~@3 d3@17 ~@3 a#2@17 ~@3 g2@17 ~@3 f2@19 ~@16]/5",
  C: "[~@3 d4 ~@3 g3 ~@3 d4 ~@3 e4 ~@3 d4 ~@3 g3 ~@3 d4 ~@3 e4, d4@3 ~ a3@4 d4@3 ~ g3@4 d4@3 ~ a3@4 d4@3 ~ g3@4, ~@5 a#2@16 ~@4 g2@16 ~@4 f2@17 ~@8 a3@11 ~@9 d3@12 ~@8 d3@11 ~@9 d3@11 ~@4 d3@15, ~@10 d3@11 ~@9 d3@11 ~@9 d3@12 ~@3 d3@16 ~@4 a#2@17 ~@3 g2@16 ~@4 f2@16 ~@9 a3@10]/5",
  D: "[~@20 a3@5 [g2,d3,g3]@41 ~@30, d4@15 d4@8 ~@73, ~@5 a#2@18 ~@73, ~@10 d3@13 ~@73]/3", // G5
})).s("gm_acoustic_guitar_nylon").gain(0.8).pan(0)

// chords · pad choir · "SPACEVOIC"
const pad_choir = note("<~@51 A ~@4 B@2 ~@19>".pickRestart({
  A: "[f#4,a4,f#5,a5]@5 [e4,g4,e5,g5]@20 ~@7", B: "[~@25 g5@38 ~, ~@24 [g4,d5]@39 ~]/2",
})).s("gm_pad_choir").gain(0.56)

// chords · pad warm · "WARM PAD"
const pad_warm = note("<~@43 A@3 B@2 C@3 D@2 E@5 ~@19>".pickRestart({
  A: "[~ [b2,b4]@16 ~@3 a2@20 g2@40 [d3,d5,a5,d6]@16, ~ d5@69 ~@26, ~ f#5@39 g5@35 ~@21, ~@19 a5@20 ~@57]/3", // B D5
  B: "[~@3 [a#2,a#4,f5,a#5]@19 ~@2 [g2,g4]@20 [f2,f4]@20, ~@12 [d5,g5]@19 ~]/2", // A#5 G F G5
  C: "[[d3,d5,a5,d6]@20 [a#2,a#4,f5,a#5]@20 [g2,g4]@20 ~ f2@18 ~ [d3,d5,a5,d6]@16, ~@20 [d5,g5]@19 ~@9, ~@10 f4@3 ~@3]/3", // D5 A#5 G D5 G5
  D: "[~@2 [a#4,f5,a#5]@9 ~ g2@10 f2@10, ~@4 a#2@20 [d5,g5]@37 ~@3, ~@24 g4@18 ~@2 f4@17 ~@3]/2", // A#5 G5
  E: "[[d5,a5,e6]@17 ~@3 [a#2,f5,a#5]@20 [g2,g4]@19 [f2,f4]@20 ~ d3@19 ~ [a#2,a#4,f5,a#5]@18 ~@2 [g2,g4,g5]@40, d3 ~@7, d6@2 ~@38 [d5,g5]@39 [a5,d6]@19 ~@21 d5@39 ~@2]/5", // Dsus2 A#5 G F A#5 G G5 D5
})).s("gm_pad_warm").gain(0.31)

// chords · pad warm · "WARM PAD" · soft notes
const pad_warm_soft = note("<~@43 A@3 ~@7 B@2 C ~@21>".pickRestart({
  A: "[~ f#3@16 ~@2 a4@19 ~@2 g4@35 ~@21]/3", B: "[~@19 a#4@20 ~@25]/2", C: "~@15 d5@17",
})).s("gm_pad_warm").gain(0.15)

// other · pad sweep · "SWEEP PAD"
const pad_sweep = note("<~@43 A@5 B@5 C@5 ~@19>".pickRestart({
  A: "[~ b6@18 a6@21 g6@40 d6@19 a#5@21 g5@20 f6@20]/5", B: "[d6@20 a#5@21 g5@18 f5@21 d6@19 a#5@21 g5@20 f6@20]/5",
  C: "[d6@19 a#5@21 g5@20 f6@20 d6@20 a#5@20 g4@39 ~]/5",
})).s("gm_pad_sweep").gain(0.2)

// other · pad bowed · "BOWEDGLAS"
const pad_bowed = note("<~@43 A@5 B@5 C@5 ~@19>".pickRestart({
  A: "[~ d5@18 f#5@21 b5@40 a5@20 d5@21 b5@39]/5", B: "[a5 d5@3 a5 d5 b5 g5]/5",
  C: "[a5@20 d5@20 b5@20 g5@21 a5@19 d5@20 ~ d5@38 ~]/5",
})).s("gm_pad_bowed").gain(0.36)

// drums · kick
const kick = s("bd").struct("<~@2 A@38 B ~@17 C D@2 E F@2 G H I@2 J@3 K@3 L@2 M>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@8 x ~@16 x ~@6", D: "~@9 x ~@15 x ~@6", E: "~@9 x ~@16 x ~@5", F: "~@5 x ~@7 x ~@2",
  G: "~@10 x ~@16 x ~@4", H: "~@19 x ~@12", I: "~@3 x ~@15 x ~@12", J: "~ x ~@3 x ~@2", K: "~@5 x ~@15 x ~@10",
  L: "~@3 x ~@7 x ~@4", M: "~@3 x ~@12",
})).gain(0.72)

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~@2 A B@5 A B A B@5 A B A B@5 A B A B@5 A B A B@5 ~@18 C D E F G@2 H I@2 J B K B E@3 L G M
>`.pickRestart({
  A: "~@2 x!6", B: "x!8", C: "~@8 x ~@3 x ~@4 x ~@3 x ~@3 x ~@3 x ~@2", D: "~@9 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2",
  E: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2", F: "~@9 x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x ~",
  G: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", H: "~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4 x ~@3 x",
  I: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x", J: "~@11 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4", K: "x ~@2 x!5",
  L: "~ x ~@12 x ~@3 x ~@3 x ~@3 x ~@3 x ~", M: "~ x ~@14",
})).gain(0.72)

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

// drums · crash
const crash = s("cr").struct(`<
  ~@2 A ~ A@2 ~ A ~ A ~@3 A ~@2 A ~ A ~ A ~ A ~ A ~@3 A ~@2 A ~@3 A ~@4 A ~@17 A ~ B@2 ~ C ~@5 D ~@3 E ~@2 F
>`.pickRestart({
  A: "~ x ~@2", B: "~@9 x ~@22", C: "~@5 x ~@10", D: "~ x ~@6", E: "~@5 x ~@26", F: "~@3 x ~@12",
})).gain(0.72)

stack(
  bass, distortion_guitar, pad_poly, string_ensemble_1, lead_3_calliope, acoustic_guitar_nylon, pad_choir, pad_warm,
  pad_warm_soft, pad_sweep, pad_bowed, kick, snare, hihat, open_hat, crash
)

More by Roxette