Strudelify

Steal Away (The Night)

Ozzy Osbourne

KeyE minorTempo181 bpm
0:00/0:00
// Steal Away (The Night) — Ozzy Osbourne
// 181 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 151 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(181/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       (GS)"
const bass = note(`<
  A@2 B C A@2 B C D E F G H I J K D L M N O I J@2 P Q R Q R Q J S T@2 U V D E F G H I J K D L M N O I J@2 P Q R Q R Q J
  S A@2 W X A@2 W X Y Z@2 AA AB AC@8 AD@2 AE AF@6 AG@2 T@7 V A@2 B C A@2 B C AH@8 AI@8 AJ@2 AK@2 AL@6 AK@2 AL@6 AK@2 AM
  Q J AN@2 AO@2
>`.pickRestart({
  A: "e1 ~@3", B: "d2 ~@3", C: "f#1@2 ~ b1@2 b1 f#1 g1", D: "e1!4 e2!4", E: "f#2 g#2 b2 g#2 b2 c#3 e3@2",
  F: "d2!2 d2@2 d2!2 d2@2", G: "f#3 e3 d3 b2 a2 f#2 e2 d2", H: "g1!2 g1@2 g1!4", I: "e1 g1 c2 b1 a1 g1 f#1 e1",
  J: "b1!8", K: "b1!6 a1 g1", L: "f#2 g#2 b2 g#2 c#3 b2 g#2 f#2", M: "d2@3 e3@2 e3 f#3@2", N: "f#3 g3@2 g3 a3@2 a3@2",
  O: "g1!8", P: "e1!2 e2@3 e1@2 e1", Q: "e1@2 e3 e3@2 e3!2 b2", R: "e2!2 e1@3 e1@2 e1", S: "b1!2 c#2!2 d2!2 d#2!2",
  T: "a1!8", U: "g1 a1!7", V: "a1!6 g1 f#1", W: "c2 ~@3", X: "f#1@2 ~ b1@5", Y: "e1!2 e2@2 e2!4",
  Z: "[e2 f#2@2 e2@3 d2 g1@2 g1 g1@2 g1!2 g1@2]/2", AA: "a1@3 b1@2 b1!2 e1", AB: "~ e1 e2@2 e2!4",
  AC: "[f#2@3 ~@3 d2 g1@2 g1 g1@2 g1!4 a1@2 a1 b1@2 a1!2 g1@2 f1 f#1 g1!3 f1 f#1 g1 f1 f#1 g1!3 f1 f#1 g1 f1 f#1 g1!3 f1 f#1 g1 f1 f#1 g1!3 f1 f#1 g1 f1 f#1 g1!3 f1 f#1, ~@3 e2@61]/8",
  AD: "g1 f1 f#1 g1!3 f1 f#1", AE: "g1 f1 f#1 g1!3 a1 a#1", AF: "[b1 a1 b1@2 ~@3 b1@2 a1 b1@2 ~@4]/2",
  AG: "[b1 a1 b1@2 ~@3 b1@2 a1 b1 a1 b1 a1 b1!2]/2",
  AH: "[e1!4 e2!3 ~ f#2 g#2 b2 g#2 b2 c#3 e3@2 d2!2 d2@2 d2!2 d2@2 f#3 e3 d3 b2 a2 f#2 ~ d2 g1!2 g1@2 g1!4 e1 g1 c2 b1 a1 g1 f#1 e1 b1!8 b1!6 a1 g1, ~@7 e2@23 e2@34]/8",
  AI: "[e1!4 e2!3 ~ f#2 g#2 b2 g#2 c#3 b2 g#2 f#2 d2@3 e3@2 e3 f#3@2 f#3 g3@2 g3 a3@2 a3@2 g1!8 e1 g1 c2 b1 a1 g1 f#1 e1 b1!8 b1!8, ~@7 e2@57]/8",
  AJ: "[e1!2 ~@3 e1@2 e1 e1@2 e3 e3@2 e3!2 b2, ~ e2@7]/2", AK: "[e2 ~ e1@3 e1@2 e1 e1@2 e3 e3@2 e3!2 b2, ~ e2@15]/2",
  AL: "[e2@2 ~@2 e1@6 e1@4 e1@2 e1@4 ~@4 e3 d#3 e3 d#3 e3 d#3 e3 d#3 b1@2 b1@2 b1@2 b1@2 b1@2 b1@2 b1@2 b1@2 b1@2 b1@2 c#2@2 c#2@2 d2@2 d2@2 d#2@2 d#2@2 e1@2 e1@2 ~@6 e1@4 e1@2 e1@4 e3@2 e3@4 e3@2 e3@2 b2@2, ~ e2@33 e2@14]/6",
  AM: "e2@2 e1@3 e1@2 e1", AN: "[b1@5 b1@5 ~ c#2@10 d2@10 ~]/2", AO: "[d#2@5 e1@5 ~@6]/2",
})).s("gm_electric_bass_pick").gain(0.41)

// other · overdriven guitar · "E.Guitar 3 (GS)"
const overdriven_guitar = note(`<
  ~@80
  [b5 g#5 ~ e5 g#5 e5 ~ c#5 e5 c#5 ~ b4 c#5 b4 ~ g#4]
  [b4 g#4 ~ e4 g#4 e4 ~ c#4 e4 c#4 ~ b3 c#4 b3 ~ g#3]
  [e4 g#4 e4 g#4!2 b4 g#4 b4!2 c#5 b4 c#5!2 e5 c#5 e5]
  [e5 g#5 e5 g#5 b5 c#6 b5 c#6 ~@8]
  ~@67
>`).s("gm_overdriven_guitar").gain(0.41)

// chords · overdriven guitar · "(GS)"
const overdriven_guitar_2 = note(`<
  A B C D A B C D E F G H I J K L M N G O P@2 Q@2 R S R S R T U V W X Y Z E F G H I J K L M N G O P@2 Q@2 R S R S R T U
  V A B C D A B C D AA AB@2 AC@2 AD@2 AE@8 AF AG@2 AH@4 AG@2 AI AJ AI AJ AI AJ AI AK A B C D A B C D E F G H I J K L M N
  G O P@2 Q@2 R S R S R T AL AM R S R S R T AL AM R S R S R T AN@3 AO@2
>`.pickRestart({
  A: "e2!2 [b3,e4] b2 c#3 [a3,d4] c#3 b2", B: "[b3,e4] b2 c#3 [a3,d4] c#3 b2 [b3,e4]@2",
  C: "c3!2 [g3,c4] g2 a2 [f3,a#3] a2 g2", D: "[f#2,c#3] [f2,c3] [f#2,c#3] [b2,f#3]@2 [b2,f#3] f#2 g2",
  E: "e2 ~ e2 ~ [b3,e4]@2 e2 ~ e2 ~ e2 ~ [a3,d4]@2 e2 ~", // E5 D5
  F: "[a3,d4]@2 e2 ~ e2 ~ [a3,d4]@2 e2 ~ e2 ~ [a3,d4]@2 [b3,e4]@2", G: "b2 d3 [d3,g3]@3 [d3,a3]@3",
  H: "[d3,g3]@3 [d3,a3]@3 [e3,b3]@2", I: "[g2,d3,g3]", J: "e2 g2 c3 b2 a2 g2 f#2 e2",
  K: "b2 ~ b2 ~ [f#3,b3]@2 b2 ~ b2 ~ [f#3,b3]@2 [f#3,b3]@2 [f#3,b3]@2", // B5
  L: "[b2,f#3,a3] [b2,f#3]!2 [b2,f#3,a3] [b2,f#3,b3] [b2,f#3] [e3,a3] [f#3,b3]", // B7 B5 B7 B5 A5 B5
  M: "e2 ~ e2 ~ [b3,e4]@2 e2 ~ e2 ~ [a3,d4]@2 e2 ~ e2 ~", // E5 D5
  N: "[b3,e4]@2 e2 ~ e2 ~ [a3,d4]@2 e2 ~ e2 ~ [a3,d4]@2 [b3,e4]@2", O: "[d3,g3]@3 [d3,a3]@3 [d3,g3]@2",
  P: "[[g2,d3,g3]@9 g2 c3 b2 a2 g2 f#2 e2]/2", Q: "[b2!2 [b2,f#3,b3,e4]@3 [b2,f#3,b3] [b2,f#3,b3]@10]/2",
  R: "e2!2 [e2,e3,g#3,b3,e4]@3 [e2,e3,g#3,b3,e4]@3", // E
  S: "e2@2 [e2,e3,g#3,b3,e4] [e2,e3,g#3,b3,e4]@2 [e2,e3,g#3,b3,e4]!2 g2", // E
  T: "e2@2 [e2,e3,g#3,b3,e4] [e2,e3,g#3,b3,e4]@2 [e2,e3,g#3,b3,e4] [e2,e3,g#3,b3,e4]@2", // E
  U: "b2!2 [c3,c4]!2 [c#3,c#4]!2 [d3,d4]!2", V: "[d#3,d#4]!2 [e3,e4]!2 [f3,f4]!2 [f#3,f#4]@2",
  W: "[f#3,b3]@2 a2 ~ a2 ~ [e3,a3,c#4]@2 a2 ~ a2 ~ [e3,b3]@2 a2 ~", // B5 A E5
  X: "a2 ~ [e3,a3,c#4]@2 a2 ~ a2 ~ [e3,b3]@2 a2 ~ [e3,a3,c#4]@2 a2 ~", // A E5 A
  Y: "[e3,b3]@2 a2 ~ a2 ~ [e3,a3,c#4]@2 a2 ~ a2 ~ [e3,b3]@2 a2 ~", // E5 A E5
  Z: "a2 ~ [e3,a3,c#4]@2 a2 ~ a2 ~ [e3,b3]@2 a2 ~ g2 ~ e2 ~", AA: "[e3,b3]",
  AB: "[[b2,f#3,b3]@3 [a2,e3,a3]@3 [d3,a3,d4] [g2,d3,g3]@9]/2", // B5 A5 D5 G5
  AC: "[[d3,a3,d4]@3 [a2,e3,a3]@2 [b2,f#3,b3]@2 [e3,b3]@9]/2", // D5 A5 B5 E5
  AD: "[b3@2 b3 [a2,e3,a3]@3 [d3,a3,d4] [g2,d3,g3]@5 [g2,d3,g3]!2 [a2,e3,a3]!2, [b2,f#3]@3 ~@13]/2", // A5 D5 G5 A5 B5
  AE: "[[d3,a3,d4]@6 [a2,e3,a3]@8 [d3,g3]@6 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ [e3,a3]@6 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ [f3,a#3]@6 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ [e3,a3]@6 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ [d3,g3]@6 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ [e3,a3]@6 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ [f3,a#3]@6 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ [e3,a3]@2]/8", // D5 A5 G5 A5 A#5 A5 G5 A5 …
  AF: "e3@4 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ [d3,g3]@2", // G5
  AG: "[[b2,f#3] [a2,e3] [b2,f#3]@4 ~ [b2,f#3]@2 [a2,e3] [b2,f#3]@4 ~@2]/2", // B5 A5 B5 A5 B5
  AH: "[[b2,f#3] [a2,e3] [b2,f#3]@4 ~ [b2,f#3]@2 [a2,e3] [b2,f#3]@4 ~ [a2,e3]]/2", // B5 A5 B5 A5 B5 A5
  AI: "[a2,e3,b3] [a2,e3,a3] a2!4 [a2,e3,b3] [a2,e3,a3]", AJ: "a2!4 [a2,e3,b3] [a2,e3,a3] a2!2",
  AK: "a2!4 [a2,e3,b3] [a2,e3,a3] g2 f#2", // Asus2 A5
  AL: "[b3,b4]@2 [b3,b4]!2 [c4,c5]@2 [c4,c5]!2 [c#4,c#5]@2 [c#4,c#5]!2 [d4,d5]@2 [d4,d5]!2", // B C C# D
  AM: "[d#4,d#5]@2 [d#4,d#5]!2 [e4,e5]@2 [e4,e5]!2 [f4,f5]@2 [f4,f5]!2 [f#4,f#5]@4", // D# E F F#
  AN: "[[b2,f#3]@6 [c3,g3]@6 [c#3,g#3]@9 [d3,a3]@16 [d#3,a#3]@10 ~]/3", AO: "[[e3,b3]@5 [e3,g#3,d4,g4]@5 ~@6]/2",
})).s("gm_overdriven_guitar").gain(0.45).pan(1)

// chords · overdriven guitar · "E.Guitar 1 (GS)"
const overdriven_guitar_3 = note(`<
  A B C D A B C D E F G H I J K L M N G O P@2 Q@2 R S R S R T U V W X Y Z E F G H I J K L M N G O P@2 Q@2 R S R S R T U
  V A B C D A B C D AA AB@2 AC@2 AD@2 AE@8 AF AG@2 AH@4 AG@2 AI AJ AI AJ AI AJ AI AK A B C D A B C D E F G H I J K L M N
  G O P@2 Q@2 R S R S R T AL AM R S R S R T AL AM R S R S R T AN@3 AO@2
>`.pickRestart({
  A: "e3!2 [b4,e5] b3 c#4 [a4,d5] c#4 b3", B: "[b4,e5] b3 c#4 [a4,d5] c#4 b3 [b4,e5]@2",
  C: "c4!2 [g4,c5] g3 a3 [f4,a#4] a3 g3", D: "[f#3,c#4] [f3,c4] [f#3,c#4] [b3,f#4]@2 [b3,f#4] f#3 g3",
  E: "e3 ~ e3 ~ [b4,e5]@2 e3 ~ e3 ~ e3 ~ [a4,d5]@2 e3 ~", // E5 D5
  F: "[a4,d5]@2 e3 ~ e3 ~ [a4,d5]@2 e3 ~ e3 ~ [a4,d5]@2 [b4,e5]@2", G: "b3 d4 [d4,g4]@3 [d4,a4]@3",
  H: "[d4,g4]@3 [d4,a4]@3 [e4,b4]@2", I: "[g3,d4,g4]", J: "e3 g3 c4 b3 a3 g3 f#3 e3",
  K: "b3 ~ b3 ~ [f#4,b4]@2 b3 ~ b3 ~ [f#4,b4]@2 [f#4,b4]@2 [f#4,b4]@2", // B5
  L: "[b3,f#4,a4] [b3,f#4]!2 [b3,f#4,a4] [b3,f#4,b4] [b3,f#4] [e4,a4] [f#4,b4]", // B7 B5 B7 B5 A5 B5
  M: "e3 ~ e3 ~ [b4,e5]@2 e3 ~ e3 ~ [a4,d5]@2 e3 ~ e3 ~", // E5 D5
  N: "[b4,e5]@2 e3 ~ e3 ~ [a4,d5]@2 e3 ~ e3 ~ [a4,d5]@2 [b4,e5]@2", O: "[d4,g4]@3 [d4,a4]@3 [d4,g4]@2",
  P: "[[g3,d4,g4]@9 g3 c4 b3 a3 g3 f#3 e3]/2", Q: "[b3!2 [b3,f#4,b4,e5]@3 [b3,f#4,b4] [b3,f#4,b4]@10]/2",
  R: "e3!2 [e3,e4,g#4,b4,e5]@3 [e3,e4,g#4,b4,e5]@3", // E
  S: "e3@2 [e3,e4,g#4,b4,e5] [e3,e4,g#4,b4,e5]@2 [e3,e4,g#4,b4,e5]!2 g3", // E
  T: "e3@2 [e3,e4,g#4,b4,e5] [e3,e4,g#4,b4,e5]@2 [e3,e4,g#4,b4,e5] [e3,e4,g#4,b4,e5]@2", // E
  U: "b3!2 [c4,c5]!2 [c#4,c#5]!2 [d4,d5]!2", V: "[d#4,d#5]!2 [e4,e5]!2 [f4,f5]!2 [f#4,f#5]@2",
  W: "[f#4,b4]@2 a3 ~ a3 ~ [e4,a4,c#5]@2 a3 ~ a3 ~ [e4,b4]@2 a3 ~", // B5 A E5
  X: "a3 ~ [e4,a4,c#5]@2 a3 ~ a3 ~ [e4,b4]@2 a3 ~ [e4,a4,c#5]@2 a3 ~", // A E5 A
  Y: "[e4,b4]@2 a3 ~ a3 ~ [e4,a4,c#5]@2 a3 ~ a3 ~ [e4,b4]@2 a3 ~", // E5 A E5
  Z: "a3 ~ [e4,a4,c#5]@2 a3 ~ a3 ~ [e4,b4]@2 a3 ~ g3 ~ e3 ~", AA: "[e4,b4]",
  AB: "[[b3,f#4,b4]@3 [a3,e4,a4]@3 [d4,a4,d5] [g3,d4,g4]@9]/2", // B5 A5 D5 G5
  AC: "[[d4,a4,d5]@3 [a3,e4,a4]@2 [b3,f#4,b4]@2 [e4,b4]@9]/2", // D5 A5 B5 E5
  AD: "[b4@2 b4 [a3,e4,a4]@3 [d4,a4,d5] [g3,d4,g4]@5 [g3,d4,g4]!2 [a3,e4,a4]!2, [b3,f#4]@3 ~@13]/2", // A5 D5 G5 A5 B5
  AE: "[[d4,a4,d5]@6 [a3,e4,a4]@8 [d4,g4]@6 g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ [e4,a4]@6 g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ [f4,a#4]@6 g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ [e4,a4]@6 g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ [d4,g4]@6 g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ [e4,a4]@6 g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ [f4,a#4]@6 g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ [e4,a4]@2]/8", // D5 A5 G5 A5 A#5 A5 G5 A5 …
  AF: "e4@4 g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ [d4,g4]@2", // G5
  AG: "[[b3,f#4] [a3,e4] [b3,f#4]@4 ~ [b3,f#4]@2 [a3,e4] [b3,f#4]@4 ~@2]/2", // B5 A5 B5 A5 B5
  AH: "[[b3,f#4] [a3,e4] [b3,f#4]@4 ~ [b3,f#4]@2 [a3,e4] [b3,f#4]@4 ~ [a3,e4]]/2", // B5 A5 B5 A5 B5 A5
  AI: "[a3,e4,b4] [a3,e4,a4] a3!4 [a3,e4,b4] [a3,e4,a4]", AJ: "a3!4 [a3,e4,b4] [a3,e4,a4] a3!2",
  AK: "a3!4 [a3,e4,b4] [a3,e4,a4] g3 f#3", // Asus2 A5
  AL: "[b4,b5]@2 [b4,b5]!2 [c5,c6]@2 [c5,c6]!2 [c#5,c#6]@2 [c#5,c#6]!2 [d5,d6]@2 [d5,d6]!2", // B C C# D
  AM: "[d#5,d#6]@2 [d#5,d#6]!2 [e5,e6]@2 [e5,e6]!2 [f5,f6]@2 [f5,f6]!2 [f#5,f#6]@4", // D# E F F#
  AN: "[[b3,f#4]@6 [c4,g4]@6 [c#4,g#4]@9 [d4,a4]@16 [d#4,a#4]@10 ~]/3", AO: "[[e4,b4]@5 [e4,g#4,d5,g5]@5 ~@6]/2",
})).s("gm_overdriven_guitar").gain(0.45).pan(0)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A ~@3 A B@4 C B@10 D E F G F G F H@2 B@3 I B@4 C B@10 D E F G F G F H@2 ~@7 A B@15 J B@7 K B@7 L ~@3 A ~@3 A B@4 C
  B@10 D E M G M G M B@2 E M G M G M B@2 E M G M G M@2 N@2 O ~
>`.pickRestart({
  A: "~@5 x!3", B: "~ x ~ x", C: "~@3 x ~@2 x ~", D: "~@4 x ~@7 x ~ x!2", E: "x ~ x ~@2 x ~@2", F: "x ~@2 x",
  G: "~@2 x ~@2 x ~@2", H: "x!4", I: "~ x!2 ~ x ~@3", J: "~ x!7", K: "~ x ~@2 x ~@2 x", L: "x!2 ~@2 x!2 ~@6 x ~@3",
  M: "x ~@2 x ~@2 x ~", N: "~@5 x ~@10", O: "x",
})).gain(0.37)

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

// drums · open hat
const open_hat = s("oh").struct("<~@9 A ~@11 B ~ B ~@11 C ~ A ~@11 B ~ B ~@31 D ~@25 A ~@11 B ~ B ~@27>".pickRestart({
  A: "~@3 x", B: "~@2 x!2", C: "x", D: "~ x!7",
})).gain(0.37)

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

// drums · high tom
const high_tom = s("ht").struct("<~@35 [~@5 x!2 ~] ~@63 [~ x] ~@51>").gain(0.37)

// drums · ride
const ride = s("rd").struct(`<
  ~@24 A B C@4 ~@22 A B C@4 ~@10 C D C B C D E B C B@6 ~ F C F C F C@2 A G H G H G H G ~@25 A B I B I B@3 A B I B I B@3
  A B I B I B ~@5
>`.pickRestart({
  A: "~@2 x!2", B: "x!4", C: "~ x!3", D: "x ~ x ~ x!3 ~", E: "~ x!2 ~ x ~ x ~", F: "~@2 x ~ x!3 ~", G: "~@2 x!6",
  H: "x!8", I: "x ~ x!2",
})).gain(0.37)

stack(
  bass, overdriven_guitar, overdriven_guitar_2, overdriven_guitar_3, kick, snare, hihat, open_hat, crash, high_tom, ride
)

More by Ozzy Osbourne