Strudelify

Stand Up

David Lee Roth

KeyD minorTempo139 bpm
0:00/0:00
// Stand Up — David Lee Roth
// 139 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(139/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 · piano
const piano = note(`<
  ~@12 A B C D E F G H I J K L I J K M@3 N ~@2 O P Q ~ R S T ~ U V W ~@9 I J K L I J K M@3 N ~@2 X Y Q ~ R Z T ~ U V W
  ~@8
>`.pickRestart({
  A: "d2 ~@3 [g3,c4,f4] ~@3 [c4,f4]@2 g3@2 ~@2 [f3,g3,c4] ~, ~@8 g3 ~ d4 ~@5", // Csus4 F5 Fsus2
  B: "~@2 g2 ~ [f3,g3,c4] ~@3 c4@2 d4@2 [a2,c4]@2 [f3,g3] ~, ~@4 [f3,g3]@3 d4", // Fsus2 Am Fsus2
  C: "d2 ~@3 [g3,c4,f4] ~ d2 ~ [c4,f4]@2 [g3,d4] ~ g2 ~ [c4,b4]@2, ~@8 g3 ~@5 g4 ~", // Csus4 F5 G5 Cmaj7
  D: "~@2 [d4,c5]@2 b4@2 g4 ~ c4 ~ b3@2 a3@2 [a2,g3] ~, ~@2 a2 ~@9 d3 ~@3", // D7 A7
  E: "d2 ~@3 [g3,c4] ~ d2 ~ [c4,f4]@2 d4@2 g3 ~ [f3,g3,c4] ~, ~@4 f4@2 ~@2 g3 ~ g3 ~@5", // C5 F5 Fsus2
  F: "~@2 g2 ~ [f3,g3,c4] ~ a2 ~ [g3,c4]@2 d4@2 c4@2 [a2,g3,d4] ~, ~@12 g3 ~@3", // Fsus2 C5 Dsus4
  G: "d2@2 ~@2 [c4,f4]@2 ~@2 f4@2 e4@2 g2 ~ c4@2, ~@4 g3 ~@3 c4@4 ~@4, ~@8 g3 ~ g3 ~@3 a2 ~", // F5
  H: "~@3 g4@5, d4 c4@3, ~ b4@2 ~@5", I: "~@5 [f4,a4,c5] c4 [f4,a4,c5]", J: "~@5 [g4,b4,d5] d4 [g4,b4,d5]",
  K: "~@2 [c5,f5] ~ [a4,d5]!2 ~ [c4,f4]", L: "[d4,g4] [eb4,ab4] [d4,g4] [c4,f4]@2 ~ g4 c4, ~@10 d4@4 f4 ~",
  M: "[[d4,g4] [eb4,ab4] [d4,g4] [c4,f4]@3 a4 [d4,f4,a4]@3 f5 [f4,a4,c5,d5]@3 ~ [a4,c5,d5,f5]@7 ~@2, ~@12 c5 ~@7 c5 ~@7 a5@16 ~@4]/3", // G5 Ab5 G5 F5 Dm Dm7
  N: "~@10 [eb5,e5,a5] ~ [a4,e5,a5]@2 ~@2, ~@9 a4@2 ~ eb5 ~@3", // A A5
  O: "~@4 [a4,d5,g5]@2 ~@2 [a4,d5] ~ [a4,gb5] ~@5, ~@4 g5 d5 ~@2", // Dsus4 D5 D
  P: "bb2 ~@9 [eb5,e5,a5] ~ [a4,d5,gb5,a5] ~@3, ~@9 a4@2 ~@5", // A D
  Q: "~@9 [a4,db5,e5,a5] a3 ~ [a4,e5,a5]@2 ~@2, ~@12 [g4,db5,g5] ~@3", // A A5 Gdim
  R: "~@9 [a4,d5,g5] d4 ~ [d5,g5]@2 [a4,d5,gb5] ~, ~@12 a4 ~@3", S: "bb2 ~@8 a4 [e5,a5] a3 [a4,e5,a5]@2 ~@2",
  T: "~@9 [a4,d5,g5] a3 ~ [a4,d5,gb5,a5]@2 [a4,e5] ~", U: "~@2 [a4,d5,gb5] ~ d4 ~@3 [a4,d5,g5]@2 [a4,d5,gb5] ~@5",
  V: "~@10 [a4,eb5,e5] ~ [a4,e5,a5]@3 ~, ~@10 a5@2 eb5 ~@3", W: "~@10 [e6,a6,b6] ~@5",
  X: "~@4 [a4,d5,g5]@2 ~@2 [a4,d5] ~ [d5,gb5]@2 ~@4, ~@8 g5@2 a4 ~@5", // Dsus4 D5 D
  Y: "~@10 [eb5,e5,a5] ~ [a4,d5,gb5,a5] ~@3, ~@9 a4@2 ~@5", Z: "~@10 [e5,a5] a3 [a4,e5,a5]@2 ~@2, ~@9 a4@2 ~@5",
})).s("gm_piano").gain(0.32).pan(0.3)

// bass · slap bass 1
const bass = note(`<
  A B C D A E C D A E C F A E C F A E C F G H I J K L J M L N O P@6 Q O P O@2 P R@2 A B C D A E C D S T U V W T X Y Z AA
  AB AC AD AE AC@2 AD AF AG AC AH AI AC AJ@2 A B C D A B C
>`.pickRestart({
  A: "d1@2 ~@2 d1@2 ~@2 d1@2 c2@2 d1 ~ d2@2", B: "d1 ~@3 d1@2 ~@2 d1 ~ c2@2 d1@2 a1@2",
  C: "d1 ~@3 d1@2 ~@2 d1 ~ c2@2 d1@2 d2@2", D: "d1 ~@3 d1@2 ~@2 d1 ~ c2@2 d1 ~ a1 ~",
  E: "d1 ~@3 d1@2 ~@2 d1 ~ c2@2 d1 ~ a1@2", F: "d1 ~@3 d1@2 ~@2 d1 ~ c2@2 d1@2 a1 ~",
  G: "d1 ~@3 d1@2 ~@2 d1@2 d1@2 d1@2 d1 ~", H: "d1 ~@3 d1 ~@3 d1@2 d1 ~ d1 ~ d1 ~",
  I: "d1@2 ~@2 d1@2 ~@2 d1 ~ d1@2 d1@2 d1@2", J: "d1 ~@3 d1@2 ~@2 d1@2 d1@2 d1 ~ d1@2", K: "d1 ~ d1 ~ d1!4",
  L: "d1 ~@3 d1 ~@3 d1@2 d1@2 d1 ~ d1@2", M: "d1@2 ~@2 d1@2 ~@2 d1 ~ d1@2 d1 ~ d1@2",
  N: "d1@2 ~@2 d1@2 ~@2 d1@2 d1@2 d1@2 d1 ~", O: "d1@2 ~@2 d1@2 ~@2 d1 ~ d1 ~ d1@2 d1 ~",
  P: "d1@2 ~@2 d1@2 ~@2 d1@2 d1 ~ d1@2 d1 ~", Q: "d1@2 ~@2 d1 ~@3 d1 ~ d1 ~ d1@2 d1 ~",
  R: "[d1@2 ~@2 d1 ~@3 d1 ~ d1 ~ d1 ~ d1@17 ~]/2", S: "f1 ~@3 f1@2 ~@2 f1@2 f2@2 f1@2 f2 ~",
  T: "g1 ~@3 g1 ~@3 g1@2 g2@2 g1 ~ f2@2", U: "d1@2 ~@2 d1@2 ~@2 d1 ~ c2@2 d1@2 d2@2", V: "d1 ~ d1 ~ d1 d2 d1 c2",
  W: "f1 ~ f1 ~ f1 f2 f1 f2", X: "d1 ~@3 d1@2 ~@2 d1@2 c2@2 d1 ~ d2@2", Y: "d1@2 ~@2 d1@2 ~@2 d1 ~ c2@2 d1@2 a1@2",
  Z: "d1 ~@3 d1 ~@3 d1@2 c2@2 d1@2 d2@2", AA: "d1@2 ~@2 d1@2 ~@2 d1@2 c2@2 d1@2 a1 ~",
  AB: "~@4 a1@2 ~@2 a1 ~ a2 ~ a2@2 g2 ~", AC: "a1@2 ~@2 a1@2 ~@2 a1@2 a2 ~ a2@2 g2 ~",
  AD: "g1@2 ~@2 g1@2 ~@2 g1@2 g2 ~ g2@2 f2 ~", AE: "d1@2 ~@2 d1@2 ~@2 d1@2 d2 ~ d2@2 c2 ~",
  AF: "d1@2 ~@2 d1 ~@3 d1 ~ d2 ~ d2@2 c2 ~", AG: "a1@2 ~@2 a1@2 ~@2 a1 ~ a2 ~ a2@2 g2 ~",
  AH: "g1@2 ~@2 g1@2 ~@2 g1 ~ g2 ~ g2@2 f2 ~", AI: "d1@2 ~@2 d1@2 ~@2 d1 ~ d2 ~ d2@2 c2 ~",
  AJ: "[a1@2 ~@2 a1 ~@3 a1 ~ e1 ~ g1 ~ f1@17 ~]/2",
})).s("gm_slap_bass_1").gain(0.19)

// chords · synth brass 1
const synth_brass_1 = note(`<
  ~@3 A@5 B C D E ~@8 F G ~@2 H@2 ~@4 I J K L J@2 M N J O P Q J R@2 ~@4 S@3 T F G ~@2 H@2 ~@4 I J K L J@2 M N J I U Q J
  R@2 ~ V@4 ~@2
>`.pickRestart({
  A: "[~@10 [c4,eb4,g4,bb4]@23 ~@9 [c4,eb4,g4,bb4]@23 ~@15]/5", // Cm7
  B: "~@4 [c5,f5]@2 ~@2 [a4,d5] ~ [a4,d5]@2 ~@2 [c4,f4]@2", C: "[d4,g4]@3 [c4,f4]@3 g4 f4, ~@12 d4 ~ c4 ~",
  D: "~@2 [c5,f5] ~ d5 [a4,d5] ~@2, ~@8 a4 ~@7", E: "f5@2 d5 c5@3 a4 g4@7 ~@2", F: "[c4,f4,a4,c5]", G: "[d4,g4,b4,d5]",
  H: "[c5!2 ~@14 [d4,d5]@15 ~, [g4,a4], f4@17 ~@15, c4@15 ~ [e4,e5] ~@15]/2", I: "[a4,d5,e5]@5 ~ [a4,db5,e5]@2 ~@8",
  J: "[a4,d5,e5]@3 [a4,db5,e5] ~@4", K: "~@4 [g4,d5] ~@3 [g4,c5,d5]@2 [g4,b4,d5]@2 ~@4, ~@2 c5 ~@5",
  L: "~@2 [d5,g5] ~ [d5,g5] [a4,d5,gb5] ~@2, ~@4 a4 ~@3 a4 ~@7", // G5 D
  M: "~@2 g4 ~ [g4,c5,d5]@2 ~@2 [g4,c5,d5]@2 [g4,b4,d5]@2 ~@4", // Gsus4 G
  N: "~@2 a4 ~ [a4,d5,g5]@2 ~@2 [a4,d5,g5]@2 [a4,d5,gb5]@2 ~@4", O: "[a4,d5,e5]@5 ~ [db5,e5]@2 ~@8, ~@6 a4 ~@9",
  P: "~@4 [g4,c5,d5]@2 ~@2 [g4,d5] ~ [g4,b4,d5]@2 ~@4, ~@4 c5 ~@3", // Gsus4 G5 G
  Q: "~@4 [a4,d5] ~@3 [a4,d5] ~ [a4,d5,gb5]@2 ~@4, ~@2 g5 ~ g5 ~@3", // D5 D
  R: "[[a4,d5,e5]@5 ~ [a4,db5,e5]@2 ~@6 [f4,g4,c5]@18]/2", S: "[[c5,f5]@9 [a4,d5]@8 [b3,e4]@7]/3",
  T: "[c4,f4]@9 d4 c4 a3 g3 a3 g3 f3", U: "~@2 [g4,c5,d5] ~ [c5,d5] [g4,b4,d5] ~@2, ~@8 g4 ~@7",
  V: "[~@10 [c4,eb4,g4,bb4]@23 ~@9 [c4,eb4,g4,bb4]@22]/4", // Cm7
})).s("gm_synth_brass_1").gain(0.19).pan(0.3)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note("<~@12 A B C D A B C D ~@2 E ~@62>".pickRestart({
  A: "~@2 d4@2 c4@2 d4@2 [c4,d4]@2 c4 ~ [a3,d4]@2 [f3,c4]@2", B: "a3 f3 g3 f3 g3 f3 g3@2, g3 ~@3",
  C: "~ d4 ~ d4 [c4,d4] c4 [a3,d4] [f3,c4], ~ c4 ~@2", D: "[g3,a3]@2 f3 ~ g3@2 f3 ~ f3@3 ~ f3@3 ~, ~@8 g3 ~@7",
  E: "[d5,f5,a5] ~ [d5,f5,a5] ~ [c5,e5,g5]@3 ~ [a4,d5,f5]@2 ~@2 [d5,f5,a5,c6]@3 ~", // Dm C Dm Dm7
})).s("gm_acoustic_guitar_nylon").gain(0.19)

// other · distortion guitar
const distortion_guitar = note("<~@20 A B C@2 D E@5 ~@55>".pickRestart({
  A: "~@10 d5 ~ d5 ~ d5 e5", B: "f5 ~ f5 ~ e5@2 ~@2 d5@4 f5@4", C: "[a4 ~ a4 ~ g4@3 ~ f4@2 ~@2 c5@16 ~@4]/2",
  D: "~@10 d5 ~ d5 ~ d5 ~", E: "[g5@4 f5@3 ~ e5@4 f5@2 ~@14 d5@2 c5@6 g4@2 g4 ~@5 e4@2 e4@30 ~@4, ~@7 e5@31 ~@2]/5",
})).s("gm_distortion_guitar").gain(0.42).pan(0.2)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@11 A@2 ~@7 B C D E B F G@2 H I J@3 K L@3 M N@2 O P Q@7 ~@4 R S@2 T U V@5 W@3 K L@3 M N@2 O P X@4 ~@6
>`.pickRestart({
  A: "[~@4 f5@2 d5 c5@3 a4 ~ f5@2 d5 c5@3 a4 g4@7 ~@6, ~@11 g4@7 ~@14]/2", B: "~@14 d5 ~",
  C: "d5 ~ d5 ~ f5 ~ f5 ~ e5@2 ~@2 d5@4", D: "f5@3 ~ a4 ~ a4 ~ g4@2 ~@2 f4@4", E: "a4@3 ~@11 g4 ~",
  F: "d5 ~ d5 ~ b5@2 ~@2 a5@2 ~@2 g5@4", G: "[a5 g5@8 f5@3 ~ f5@3]/2", H: "~@4 a4@2 ~ c5 ~ g5 ~@2 g5@3 c5, ~@6 a4 ~",
  I: "~ g5 ~@2 g5 ~ c5 e5 [f5,c6] f5 e5 c6 [e5,f5] c5 [a4,b4,c5] [e4,f4,g4,e5]", // F5 Fmaj7 Am Em
  J: "[[b3,c4,f5,c6] [a3,f5] [d3,e3,f3,e5] c6 [e5,f5] c5 [a4,b4] [e4,f4,g4] [b3,c4] a3 [d3,e3,f3,db5] ~ e5@6 db5 ~ e5@6 gb5 ~ e5@6 gb5 ~@3 d5 ~ d5@2 ~@2 d5@2 [d5,e5]@2]/3", // F Dm Fmaj7 Asus2 Em Cmaj7 Dsus2
  K: "d5@2 b4 ~ d5@2 [c5,e5]@2 e5@2 b4 ~ d5@2 c5!2", // C
  L: "[e5@3 ~ d5@3 c5 a4 ~ db5 ~ e5@6 db5 ~ e5@6 gb5 ~@3 a5 ~ a5 ~ [gb5,ab5] ~@3 a5 ~ [g5,a5] ~ a5@3 ~ a5 ~, a4 ~@3 e5@6 ~@18 e5@6 a5@3 ~@5 ab5 ~@5]/3", // Gbsus2 Gsus2
  M: "[eb5,e5,g5] ~ [d5,a5]@4 c5 ~ [eb5,e5]@2 d5@4 c5 a4", // Eb D5 Emaj7
  N: "[e5@2 ~@2 eb5 ~ c5 a4 ~@2 db5 ~ e5@6 db5 ~ e5@6 gb5 ~ e5@2 e5 ~, ~@2 d5@4 ~@6 eb5 ~@19, ~@2 e5@3 ~@11]/2",
  O: "gb5 ~ g5@3 ~ [e5,g5] ~ [gb5,g5]@2 g5@2 g5 ~ g5 ~, ~@2 gb5 ~@13", // Em Gmaj7
  P: "g5@2 ~@2 [g5,ab5,a5] ~ a5 ~ a5@2 ~@2 [ab5,a5] ~ a5 ~", // Amaj7
  Q: "[a5@2 ~ eb5 e5@6 db5 eb5 e5@6 db5 ~ e5@6 gb5 ~ e5@6 [a4,d5,g5]@8 [a4,d5,g5]@10 [d1,d2]@8 [d1,d2]@39 ~@13, ~@4 a5@2 ~@28 gb5 ~@77]/7", // Dsus4 D
  R: "~@4 c6@8 c6 ~ c6@2",
  S: "[~ a5@2 ~ c6 ~ c6 a5@2 [g5,a5]@2 ~ [a5,c6]@3 a5@2 g5@2 ~ [d5,f5] g5 c6 [f5,g5] c5 d5 [f5,g5,c6] f5 [b4,d5,f5] [c5,f5,g5] c6 [f5,g5], ~@5 a5@2 ~]/2", // Gsus2 Am Dm Fsus2 Bdim Csus4 Fsus2
  T: "[a4,c5] [d5,e5,f5] [f5,g5,c6] [f5,g5] [g4,b4] [c5,e5,f5] [f5,c6] [f5,g5,c6] [a4,c5,d5,f5] [e5,f5] [f5,c6] [f5,g5,c6] [g4,a5] [e5,g5] f5 [d5,g5,c6]", // Am Dm Fsus2 G Fmaj7 F5 Fsus2 Dm7 …
  U: "[c5,d5,f5] [a4,e5] [g4,f5] [f4,g5,c6] [g5,a5] g5 f5 d5 c5 a4 g4 f4 g5@2 f5 ~", // Dm7 A5 G7 Fsus2 Gsus2
  V: "[~ g5 ~@2 g5@2 f5 ~@2 [f5,g5]@2 ~ g5@3 f5@2 [d5,f5]@2 ~ g5@3 f5@2 d5@2 ~ e5@47 ~@5, ~@5 e5@2 ~@13]/5", // Fsus2 Dm
  W: "[~@4 e5@6 db5 ~ e5@6 db5 ~ e5@6 gb5 ~ e5@6 gb5 ~@3 d5 ~ d5@2 ~@2 d5@2 [d5,e5]@2]/3", // Dsus2
  X: "[a5@2 ~@2 e5@6 db5 ~ e5@6 db5 ~ e5@6 gb5 ~ e5@6 [a4,d5,g5]@8 [a4,d5,g5]@18 ~@4, ~@4 a5@2 ~@28 gb5 ~@29, ~@4 eb5 ~@7 eb5 ~@51]/4", // Dsus4
})).s("gm_overdriven_guitar").gain(0.3).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~@7 A B C D E B C B C B C B C B C B C B C B C B F B C B C B C B C B C B C G H I ~@3 J B C B C B C B C B C B C B F B C
  B C B C B C B C B C G H I B C B C B C B
>`.pickRestart({
  A: "~@4 x ~@4 x ~@4 x ~", B: "x ~ x ~ x ~ x!2", C: "x ~ x ~ x!4", D: "x!4", E: "x!6 ~ x", F: "x ~@2 x ~ x!3",
  G: "x ~ x ~ x!2 ~ x", H: "x ~ x ~ x ~@2 x", I: "~@10 x!2 ~@4", J: "~@2 x ~ x ~@3 x ~ x ~@2 x ~ x",
})).gain(0.41)

// drums · snare
const snare = s("sd").struct("<~@6 A B C@3 D C@17 E C@13 F D ~@2 E G C@13 E C@13 F D C@7>".pickRestart({
  A: "~ x ~@6", B: "~ x", C: "~ x ~ x", D: "~@3 x", E: "~ x!2 ~@5", F: "~@2 x ~@2 x ~@2", G: "x ~@2 x ~@2 x ~",
})).gain(0.41)

// drums · hihat
const hihat = s("hh").struct("<~@4 A@3 B A@3 C A D A@5 E ~@2 A@2 ~ F A ~@2 G H ~@14 A@3 C I J@2 K B ~@31>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@2 x ~@2 x ~@2", D: "~@2 x ~@4 x", E: "~@2 x ~@2 x ~ x", F: "~@7 x", G: "~@5 x ~@2",
  H: "x", I: "x!2 ~ x", J: "x!4", K: "x ~ x!3 ~ x ~",
})).gain(0.32)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@13 A ~@22 B ~@8 C ~@2 D E ~@2 D ~@32>".pickRestart({
  A: "~@3 x", B: "~ x ~@2", C: "x", D: "~@7 x", E: "~@7 x ~@8",
})).gain(0.18)

// drums · low tom
const low_tom = s("lt").struct("<~@7 A B@2 ~ C B@17 D B@13 E ~@3 F G B@13 D B@13 E ~ B@7>".pickRestart({
  A: "~ x ~@4 x ~", B: "~@7 x", C: "~@5 x ~@2", D: "~@6 x!2", E: "~@3 x", F: "~@4 x!2 ~@2",
  G: "~ x ~ x ~ x ~ x ~ x ~ x ~@2 x ~",
})).gain(0.41)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@6 A B ~ B ~ C ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ D ~ B ~ B ~ B ~ B ~ B ~ B ~@8 B ~ B ~ B ~ B ~ B ~ B ~ D ~ B ~ B ~ B
  ~ B ~ B ~ B ~@4 B ~ B ~ B ~
>`.pickRestart({
  A: "~@4 x ~@2 x", B: "~@5 x ~@2", C: "~ x ~ x ~@4", D: "~@4 x!2 ~@2",
})).gain(0.36)

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

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@23 A ~@5 B C@2 B D E F D G H I J D ~@15 K ~@27>".pickRestart({
  A: "~@7 x", B: "~ x ~@2", C: "~@2 x!2", D: "x", E: "~ x!3", F: "x!3 ~", G: "x ~@3 x ~@2 x", H: "~ x!2 ~",
  I: "x!2 ~@2", J: "~@3 x!2 ~@3", K: "~ x",
})).gain(0.14)

// drums · crash
const crash = s("cr").struct(`<
  ~@7 A ~@4 B ~@7 B ~@3 B ~@4 C B ~@2 A B A ~@2 B A ~ C ~ D ~@4 E B ~@12 F B A ~ A ~ A ~ G ~ A ~ H ~ I ~ B ~@6
>`.pickRestart({
  A: "~@7 x", B: "x", C: "~@6 x!2", D: "~@5 x!3", E: "~@15 x", F: "~ x ~@2 x ~ x ~", G: "~@2 x!2", H: "~@5 x ~@2",
  I: "~@5 x ~ x",
})).gain(0.32)

// drums · ride bell
const ride_bell = s("rd").struct("<~@57 x ~@27>").gain(0.27)

stack(
  piano, bass, synth_brass_1, acoustic_guitar_nylon, distortion_guitar, overdriven_guitar, kick, snare, hihat,
  hihat_soft, low_tom, mid_tom, open_hat, open_hat_soft, crash, ride_bell
)

More by David Lee Roth