Strudelify
Detroit Rock City cover art

1997 · Destroyer

Detroit Rock City

Kiss

KeyC♯ minorTempo176 bpm
0:00/0:00
// Detroit Rock City — Kiss
// 176 bpm, 4/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 8 "Bass" fretless bass (copy of ch 1 "Bass" electric bass pick)
// note: Full arrangement: all 161 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Solo 3, Solo 4.
setcpm(176/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 pick · "Bass"
const bass = note(`<
  A@2 B C@5 A@2 D E@5 F G H I H J H I F G H I H J H K@5 L@2 M N@5 H G H I O G H P H G H I O G H Q@5 L@2 M R L@2 M S@2 T
  U T V@2 W@3 O X H I O X Y Z O X H I O X Y AA@5 ~@19 AB@2 AC@3 AD@2 AE AF@5 O X H I O X Y Z O X H I O X Y AG@2 AH@3 ~@2
  AI@5 ~
>`.pickRestart({
  A: "c#2@3 b1 c#2@3 b1 c#2@3 b1 c#2@3 b1", B: "c#2@3 b1 c#2@3 b1 c#2@2 ~ b1 c#2@2 ~@2",
  C: "[c#3!2 ~ c#3!3 ~ c#3 c#3@2 ~@2 e2@3 a1@29 e1@3 b1@29 ~@4]/5", D: "c#2@3 b1 c#2@3 b1 c#2@3 b1 c#2@2 ~@2",
  E: "[c#3!2 ~ c#3!3 ~ c#3 c#3@2 ~@2 e1@3 a1@29 e1@3 b1@29 ~@4]/5", F: "c#2@4 b1@4 ~@7 c#2",
  G: "c#2 b1 ~ g#1 b1@3 c#2 ~@8", H: "c#2 b1 ~@2", I: "c#3 b2 ~ g#2 e2@3 c#2 ~@8", J: "c#2 b1 ~ g1 b1@3 c#2 ~@8",
  K: "[c#3 b2 ~ g#2 e2@3 c#2 ~@4 e2@3 a1@29 e1@3 b1@29 ~@4]/5", L: "[c#2@4 ~@4 c#2@3 b1 g#1@3 b1@5 c#2@4 ~@7 c#2]/2",
  M: "b1@3 c#2 ~@3 e2@5 c#2@4", N: "[f#1@3 g#1 e2@3 c#2 ~@4 e2@3 a1@29 e1@3 b1@29 ~@4]/5", O: "c#2@4 b1@4 ~@7 b1",
  P: "f#2 e2 ~ c#2 e2@3 c#2 ~@8", Q: "[f#2 e2 ~ c#2 e2@3 c#2 ~@4 e2@3 a1@29 e1@3 b1@30 ~@3]/5",
  R: "f#1@3 g#1 e2@3 c#2 ~@8", S: "[d#2@4 ~@4 d#2@3 c#2 a#1@3 c#2@5 d#2@4 ~@7 d#2]/2", T: "c#2@3 d#2 ~@3 f#2@5 d#2@4",
  U: "g#1@3 a#1 f#2@3 d#2 ~@7 d#2", V: "[f#1@3 g#1 e2@3 c#2 ~@4 e1@3 a1@16 a1]/2", W: "[a2@12 e1@3 b1@29 ~@4]/3",
  X: "c#2 b1 ~ g#1 b1@3 c#2 ~@7 b1", Y: "c#2@4 b1@4 ~@7 f#2", Z: "f#2 e2 ~ c#2 e2@3 c#2 ~@7 b1",
  AA: "[f#2 e2 ~ c#2 e2@3 c#2 ~@4 e2@3 a1@29 e1@3 b1@29 g#1@3 c#2]/5",
  AB: "[c#3!2 ~ c#3!3 ~ c#3 c#3@2 ~@2 c#2@3 a1@17]/2", AC: "[a2@4 e1 b1@10 ~]/3",
  AD: "[c#2@3 c#2 ~@4 c#2@3 b1 g#1@3 b1@5 c#2@4 ~@7 c#2]/2", AE: "b1@2 ~ c#2 ~@3 e2@5 c#2@4",
  AF: "[f#1@3 g#1 e2@3 c#2 ~@4 e1@3 a1@9 [a1,a2]@20 e1@3 b1@5 b2@24 ~@4]/5", // A
  AG: "[f#2 e2 ~ c#2 e2@3 c#2 ~@4 e2@3 a1@17]/2", AH: "[a2@12 e1@2 ~ b1@29 g#1@3 c#2]/3",
  AI: "[~@12 a2@3 a1@5 a2@24 e1@3 b1@29 g#1@3 c#2]/5",
})).s("gm_electric_bass_pick").gain(0.48)

// other · distortion guitar · "Solo 1"
const distortion_guitar = note(`<
  ~@104 A B C D E F G H@2 B C D E F I J K@2 L M N O P@2 Q@2 L M R S@3 ~@14 T@2 U ~@4 V@2 W ~
>`.pickRestart({
  A: "~@8 g#3@3 b3@2 d#4@3", B: "c#4", C: "e4@3 d#4@2 c#4@3 e4@3 d#4@2 c#4@3", D: "b3@6 ~ b3",
  E: "d#4@3 e4@2 d#4@3 b3@3 a3@2 g#3@3", F: "a3", G: "c#4@3 b3@2 a3@3 c#4@3 b3@2 a3@3",
  H: "[g#3@24 g#3 ~@2 b3@2 d#4@3]/2", I: "a3 ~@7 b3@8", J: "c4", K: "[c#4!2 ~ c#4!3 ~ c#4 c#4@4 b3@3 e4@17]/2",
  L: "g#4@3 f#4@2 e4@3 g#4@3 f#4@2 e4@3", M: "d#4", N: "f#4@3 g#4@2 f#4@3 e4@3 d#4@2 f#4@3", O: "e4@3 ~",
  P: "[g#4@3 g#4 f#4@3 f#4 e4@4 d#4@3 d#4@4 e4@12 g#4]/2", Q: "[c#5@4 b4 c#5 ~ b4 g#4@4 f#4@3 e4@17]/2",
  R: "f#4@3 g#4@2 f#4@3 e4@3 d#4@2 d#5@3", S: "[c#5@5 ~]/3", T: "[~@12 e4@3 d#4@5 d#4@8 ~@4]/2",
  U: "d#5@3 e5@2 d#5@3 c#5@4 b4@3 c#5", V: "[g#4@3 f#4@2 e4@3 f#4@20 ~@4]/2", W: "f#4@3 g#4@2 f#4@3 e4@4 g#5@3 c#6",
})).s("gm_distortion_guitar").gain(0.4).pan(0.1)

// other · distortion guitar · "Solo 2"
const distortion_guitar_2 = note("<~@112 A B C D E F G H I@3 J K L M N O@3 P K Q@3 ~@16 R ~@4 S@2 T ~>".pickRestart({
  A: "~@8 b3@3 d#4@2 f#4@3", B: "e4", C: "g#4@3 f#4@2 e4@3 g#4@3 f#4@2 e4@3", D: "d#4@7 d#4",
  E: "f#4@3 g#4@2 f#4@3 d#4@3 c#4@2 c4@3", F: "c#4", G: "c#4 ~@7 c#4@8", H: "d#4@15 ~",
  I: "[c#3!2 ~ c#3!3 ~ c#3 c#3@4 g#3@3 c#4@17 e4@3 d#4@2 c#4@3 e4@3 d#4@2 c#4@3]/3", J: "b3",
  K: "d#4@3 e4@2 d#4@3 c#4@3 b3@2 d#4@3", L: "c#4@3 ~", M: "e4@3 e4 d#4@3 d#4 c#4@4 b3@3 b3", N: "~@3 c#4@12 e4",
  O: "[g#4@4 f#4 g#4 ~ f#4 e4@4 d#4@3 c#4@17 e4@3 d#4@2 c#4@3 e4@3 d#4@2 c#4@3]/3", P: "b3@15 ~", Q: "[c#4@41 ~@7]/3",
  R: "d#4@3 e4@2 d#4@3 c#4@4 b3@3 c#4", S: "[e4@3 d#4@2 c#4@3 d#4@20 ~@4]/2", T: "d#4@3 e4@2 d#4@3 c#4@8",
})).s("gm_distortion_guitar").gain(0.4).pan(0.9)

// chords · distortion guitar · "Rhythm Gt"
const distortion_guitar_3 = note(`<
  A@3 B@5 A@3 B@5 C@8 D@7 E@5 F@2 G H@5 I@8 J@7 E@5 F@2 G K F@2 G L@5 M@5 N@8 O@6 P@6 ~@19 Q@5 R@2 G H@5 S@8 T@7 U@5 ~@2
  V@5 ~
>`.pickRestart({
  A: "c#3@3 b2 c#3@3 b2 c#3@3 b2 c#3@3 b2",
  B: "[[g#3,c#4]!2 ~ [g#3,c#4]!3 ~ [g#3,c#4] [g#3,c#4]@3 ~ e2@3 [a2,e3,a3]@29 e2@3 [b2,f#3,b3]@32 ~]/5", // C#5 A5 B5
  C: "[[g#3,c#4]@62 ~ [e3,b3,e4]@32 [b2,f#3,b3]@16 [f#3,c#4,f#4]@16 ~, c#3@63 ~@65]/8", // C#5 E5 B5 F#5
  D: "[[c#3,g#3,c#4]@62 ~ [e3,b3,e4]@31 ~ [b2,f#3,b3]@16 [f#3,c#4,f#4]]/7", // C#5 E5 B5 F#5
  E: "[~@12 e2@3 [a2,e3,a3]@29 e2@3 [b2,f#3,b3]@32 ~]/5", F: "[c#3@4 ~@4 c#3@3 b2 g#2@3 b2@5 c#3@4 ~@7 c#3]/2",
  G: "b2@3 c#3 ~@3 e3@5 c#3@4", H: "[f#2@3 g#2 e3@3 c#3 ~@4 e2@3 [a2,e3,a3]@29 e2@3 [b2,f#3,b3]@32 ~]/5",
  I: "[[c#3,g#3,c#4]@62 ~ [e3,b3,e4]@32 [b2,f#3]@16 [f#3,c#4,f#4]@16 ~, ~@95 b3 ~@32]/8", // C#5 E5 B5 F#5
  J: "[[c#3,g#3,c#4]@63 [e3,b3,e4]@32 [b2,f#3,b3]@16 [f#3,c#4,f#4]]/7", K: "f#2@3 g#2 e3@3 c#3 ~@8",
  L: "[[d#3,a#3,d#4]@31 [c#3,g#3,c#4]@31 ~ [f#3,c#4,f#4]@17]/5", // D#5 C#5 F#5
  M: "[[e3,b3,e4]@12 e2@3 [a2,e3,a3]@29 e2@3 [b2,f#3]@33, ~@47 b3@31 ~@2]/5", // E5 A5 B5
  N: "[[g#3,c#4]@63 [e3,b3,e4]@32 [b2,f#3]@16 [f#3,c#4,f#4]@16 ~, c#3@62 ~@33 b3 ~@32]/8", // C#5 E5 B5 F#5
  O: "[[c#3,g#3,c#4]@63 [e3,b3,e4]@32 [b2,f#3,b3]]/6", // C#5 E5 B5
  P: "[~@15 [f#3,c#4,f#4]@13 e2@3 [a2,e3,a3]@29 e2@3 ~@29 [c#3,g#3,c#4]@3 [c#3,g#3,c#4], ~@63 [b2,f#3,b3]@32 ~]/6", // F#5 A5 C#5 B5
  Q: "[~@12 e2@3 [a2,e3,a3]@29 e2@3 [b2,f#3,b3]@31 ~@2]/5", R: "[c#3@4 ~@4 c#3@3 b2 g#2@3 b2@4 ~ c#3 ~@10 c#3]/2",
  S: "[[c#3,g#3,c#4]@63 [e3,b3,e4]@31 ~ [b2,f#3,b3]@16 [f#3,c#4,f#4]@16 ~]/8", // C#5 E5 B5 F#5
  T: "[[c#3,g#3,c#4]@62 ~ [e3,b3,e4]@32 [b2,f#3,b3]@16 [f#3,c#4,f#4]]/7", // C#5 E5 B5 F#5
  U: "[~@12 e2@3 [a2,e3,a3]@29 e2@3 ~@29 g#2@3 c#3, ~@47 [b2,f#3,b3]@32 ~]/5", // A5 B5
  V: "[~@12 [a2,e3,a3]@3 [a2,e3,a3]@29 e2@3 [b2,f#3,b3]@29 g#2@3 [c#3,g#3,c#4]]/5", // A5 B5 C#5
})).s("gm_distortion_guitar").gain(0.4).pan(0)

// chords · distortion guitar · "Rhythm Gt"
const distortion_guitar_4 = note(`<
  ~@2 A B@6 ~ A C@5 D@8 E@7 F@6 G@2 H@5 I@8 J@7 K@7 L M N@2 L O@2 P Q P R@5 S@8 T@7 U@5 ~@19 V@5 N@2 L W@5 X@8 Y@7 Z@5
  ~@2 AA@5 ~
>`.pickRestart({
  A: "g#3@3 f#3 g#3@3 f#3 g#3@3 f#3 g#3@3 f#3",
  B: "[c#3!2 ~ c#3!3 ~ c#3 c#3@3 ~ [e2,b2]@3 [a2,e3]@29 [g#3,b3,e4]@3 [f#3,b3,d#4]@34 ~@15]/6", // E5 A5 E B
  C: "[c#3!2 ~ c#3!3 ~ c#3!2 ~@3 [e2,b2]@3 [a2,e3]@29 [g#3,b3,e4]@3 [f#3,b3,d#4]@33]/5", // E5 A5 E B
  D: "[[c#3,g#3,c#4]@62 [e3,b3]@32 ~ [b2,f#3]@16 [f#3,c#4]@16 ~]/8", // C#5 E5 B5 F#5
  E: "[~@62 [e3,b3]@31 ~@2 [b2,f#3]@16 [f#3,c#4], [c#3,g#3,c#4]@4 ~@3]/7", // E5 B5 F#5 C#5
  F: "[~@12 e2@3 [a2,e3]@29 [g#3,b3,e4]@3 [f#3,b3,d#4]@33 [c#3,g#3]@3 [b2,f#3] [c#3,g#3]@3 [b2,f#3] [c#3,g#3]@3 [b2,f#3] [c#3,g#3]@3 [b2,f#3]]/6", // A5 E B C#5 B5 C#5 B5 C#5 …
  G: "[c#3,g#3]@3 [b2,f#3] [c#3,g#3]@3 [b2,f#3] [c#3,g#3]@3 [b2,f#3] [c#3,g#3]@3 [b2,f#3]", // C#5 B5 C#5 B5 C#5 B5 C#5 B5
  H: "[[c#3,g#3,c#4]!2 ~ [c#3,g#3,c#4]!3 ~ [c#3,g#3,c#4] [c#3,g#3,c#4]@3 ~ e2@3 [a2,e3]@29 [g#3,b3,e4]@3 [f#3,b3,d#4]@33]/5", // C#5 A5 E B
  I: "[[c#3,g#3,c#4]@62 ~ [e3,b3]@32 [b2,f#3]@16 c#4@16 ~, ~@111 f#3 ~@16]/8", // C#5 E5 B5
  J: "[[c#3,g#3,c#4]@63 [e3,b3]@32 [b2,f#3]@16 [f#3,c#4]]/7", // C#5 E5 B5 F#5
  K: "[~@12 e2@3 [a2,e3]@29 [g#3,b3,e4]@3 [f#3,b3,d#4]@33 c#3@4 ~@4 c#3@3 b2 g#2@3 b2@5 c#3@4 ~@7 c#3]/7", // A5 E B
  L: "b2@3 c#3 ~@3 e3@5 c#3@4", M: "f#2@3 g#2 e3@3 c#3 ~@8", N: "[c#3@4 ~@4 c#3@3 b2 g#2@3 b2@5 c#3@4 ~@7 c#3]/2",
  O: "[d#3@4 ~@4 d#3@3 c#3 a#2@3 c#3@5 d#3@4 ~@7 d#3]/2", P: "c#3@3 d#3 ~@3 f#3@5 d#3@4",
  Q: "g#2@3 a#2 f#3@3 d#3 ~@7 d#3", R: "[f#2@3 g#2 e3@3 c#3@3 ~@2 e2@3 [a2,e3]@29 [g#3,b3,e4]@3 [f#3,b3,d#4]@33]/5",
  S: "[[c#3,g#3,c#4]@63 [e3,b3]@32 [b2,f#3]@16 c#4@16 ~, ~@111 f#3 ~@16]/8", // C#5 E5 B5
  T: "[[c#3,c#4]@63 [e3,b3]@32 [b2,f#3]@16 [f#3,c#4], g#3@31 ~@25]/7", // C# E5 B5 F#5
  U: "[~@12 e2@3 [a2,e3]@29 [g#3,b3,e4]@3 ~@29 [c#3,g#3,c#4]@3 [c#3,g#3,c#4], ~@47 [f#3,b3,d#4]@33]/5", // A5 E C#5 B
  V: "[~@12 e2@3 [a2,e3]@29 [g#3,b3,e4]@3 [f#3,b3,d#4]@33]/5", // A5 E B
  W: "[f#2@3 g#2 e3@3 c#3 ~@4 e2@3 [a2,e3]@29 [g#3,b3,e4]@3 [f#3,b3,d#4]@29 ~@4]/5", // A5 E B
  X: "[[g#3,c#4]@63 [e3,b3]@32 [b2,f#3]@16 c#4@16 ~, c#3@61 ~@50 f#3 ~@16]/8", // C#5 E5 B5
  Y: "[c#4@62 [e3,b3]@32 ~ [b2,f#3]@16 [f#3,c#4], [c#3,g#3]@4 ~@3]/7", // E5 B5 F#5 C#5
  Z: "[~@12 e2@3 [a2,e3]@29 [g#3,b3,e4]@3 ~@29 g#2@3 c#3, ~@47 [f#3,b3,d#4]@33]/5", // A5 E B
  AA: "[~@12 [a2,e3,a3]@3 [a2,e3]@29 e2@3 [b2,f#3,b3]@29 g#2@3 [c#3,g#3,c#4], ~@15 a3 ~@64]/5", // A5 B5 C#5
})).s("gm_distortion_guitar").gain(0.35).pan(1)

// chords · trumpet · "Back Voca"
const trumpet = note("<~@31 A@2 B@2 ~@4 C@2 D@2 ~@16 E@2 F@2 ~@33 G@2 H@2 ~@48 I@3 ~@4 J@2 K@2 ~@2>".pickRestart({
  A: "[~@12 [c#4,e4]@3 [c#4,e4]@6 c4 ~@10]/2", B: "[~@12 [b3,d#4]@2 ~ [b3,d#4]@6 ~@11]/2",
  C: "[~@12 [c#4,e4]@2 ~ [c#4,e4]@5 ~ [b3,c4,d4,d#4] ~@10]/2", // C#m
  D: "[~@13 b3@2 ~ b3@5 d4 a#3 ~@9, ~@12 d#4@2 ~ d#4@6 ~@11]/2",
  E: "[~@12 [c#4,e4]@3 [c#4,e4]@5 [f#3,b3,c4,d#4] a#3 ~@10]/2", F: "[~@12 [b3,d#4]@2 ~ [b3,d#4]@6 [a#3,d4] ~@10]/2",
  G: "[~@12 [c#4,e4]@3 [c#4,e4]@6 [b3,c4,d4,d#4] ~@10]/2", // C#m
  H: "[~@12 b3@3 [b3,d#4]@6 ~ [a3,a#3,c#4,d4] ~@9, ~@12 d#4 ~@2 c4 ~@16]/2", // B Dmaj7
  I: "[~@13 e4@2 ~ c#4@31 ~, ~@4 c#4 e4@10 ~]/3", J: "[~@12 [c#4,e4]@2 ~ [c#4,e4]@6 [c4,d#4] [a#3,b3,d4] ~@9]/2",
  K: "[~@12 [b3,d#4]@2 ~ [b3,d#4]@9 [a#3,d4] ~@7]/2", // B A#
})).s("gm_trumpet").gain(0.66).pan(0.6)

// chords · trumpet · "Back Voca" · soft notes
const trumpet_soft = note("<~@40 A B ~@17 C D E ~@36 F ~@49 G ~@7 H I@2 ~@2>".pickRestart({
  A: "~@5 d#3@2 ~@9, ~@5 f#3 ~@10", B: "~@12 d4 ~@3", C: "~@12 g3 ~@3", D: "~@5 d#3@2 ~@9", E: "~@15 c#5",
  F: "~@12 f#4 d#4 ~@2", G: "~@12 c4 ~@3", H: "~@5 f#3 d#3@3 ~@7", I: "[~@13 g#4@11 ~@8]/2",
})).s("gm_trumpet").gain(0.2).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  ~@3 A B C B D@3 E A B A B D@16 F B A B D@4 G H A B D I@15 J H A B I@13 A H A B I@16 K B A B I E L ~@2 E@15 A B A B I@4
  A B A B I@16 K B A B M ~@2 A B M B M ~
>`.pickRestart({
  A: "~@12 x ~@2 x", B: "~@8 x ~@2 x ~@4", C: "x ~@2 x ~@4 x ~@3 x ~@2 x", D: "x ~@2 x ~@4 x ~@2 x ~@4",
  E: "x ~@2 x ~@3 x!2 ~@2 x ~@3 x", F: "x ~@2 x ~@3 x ~@4 x ~@3", G: "x ~@2 x ~@3 x ~@7 x", H: "~@8 x ~@2 x ~@3 x",
  I: "x ~@7 x ~@2 x ~@4", J: "x ~@14 x", K: "x ~@6 x ~@7 x", L: "x ~@2 x ~@3 x!2 ~@2 x ~@4", M: "x ~@7 x ~@6 x",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A B C B@5 A B A B@17 D B A B@5 E B F B@17 E B F B@14 A B A B@17 E B F B@3 G H@2 B@15 A B F B@5 I B F B@17 E B F B
  J ~ H ~ B J B J ~
>`.pickRestart({
  A: "x!2 ~ x!3 ~ x!2 ~@7", B: "~ x ~ x", C: "~@4 x ~@6 x ~@4", D: "~@4 x ~@3 x!2 ~ x ~@3 x",
  E: "~@4 x ~@3 x!2 ~ x!2 ~@3", F: "x!2 ~ x!3 ~ x ~@8", G: "~@4 x ~@7 x ~@2 x", H: "x!2 ~ x!3 ~ x!3 ~ x!3 ~ x",
  I: "x!2 ~ x!3 ~ x!3 ~ x ~@4", J: "~@4 x ~@6 x!2 ~@3",
})).gain(0.5)

// drums · low tom
const low_tom = s("lt").struct("<~@33 A ~@7 A ~@19 A ~@16 B ~@19 A ~@23 A ~@7 A ~@19 A ~@4 C ~@5>".pickRestart({
  A: "~@9 x ~ x ~@4", B: "~@11 x ~@4", C: "~@5 x ~@2 x ~@7",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@8 A@3 B ~ B ~@2 C D C D C D C D C D C D C D A ~ C B C A@4 E A ~ A@2 C D C D C D C D C D C D C D C E C ~ A@9 C A@4 ~
  C ~ A@2 C D C D C D C D C D C D C D C ~ C ~ C A@3 ~@2 C A@14 ~ C ~ C A C A@2 ~ C ~ C A C D C D C D C D C D C D C D C ~
  C ~ C E A ~@2 C D A D ~
>`.pickRestart({
  A: "x!4", B: "~@3 x", C: "~ x!3", D: "x!3 ~", E: "x!2 ~@2",
})).gain(0.5)

// drums · mid tom
const mid_tom = s("mt").struct("<~@41 A ~@19 A ~@16 B ~@19 A ~@23 A ~@7 A ~@19 A ~@4 C ~@5>".pickRestart({
  A: "~ x", B: "~@9 x ~@6", C: "x ~@2 x ~@12",
})).gain(0.5)

// drums · open hat
const open_hat = s("oh").struct("<~@4 A B A C ~@4 A ~ A C ~@15 C ~ D ~@118 E ~@8>".pickRestart({
  A: "~ x!3", B: "x!3 ~", C: "x!4", D: "~@3 x", E: "~ x",
})).gain(0.57)

// drums · crash
const crash = s("cr").struct(`<
  ~@3 A ~ A ~@5 A ~ A ~@2 B C B C B C B C B C B C B C B A ~ A ~@5 A ~ A ~@2 B C B C B C B C B C B C B C B A ~ D ~@9 B
  ~@4 A ~ A ~@2 B C B C B C B C B C B C B C B A ~ A ~@6 B ~@14 A ~ A ~@2 B ~@2 A ~ A ~@2 B C B C B C B C B C B C B C B A
  ~ A ~@4 A ~@5
>`.pickRestart({
  A: "~@15 x", B: "x", C: "~@3 x", D: "x ~@14 x",
})).gain(0.5)

stack(
  bass, distortion_guitar, distortion_guitar_2, distortion_guitar_3, distortion_guitar_4, trumpet, trumpet_soft, kick,
  snare, low_tom, hihat, mid_tom, open_hat, crash
)

More by Kiss