Strudelify

Shot in the Dark

Ozzy Osbourne

KeyD majorTempo120 bpm
0:00/0:00
// Shot in the Dark — Ozzy Osbourne
// 120 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 8 "_rights" acoustic bass (copy of ch 6 fretless bass)
// note: Full arrangement: all 111 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 · distortion guitar · "_by"
const distortion_guitar = note(`<
  ~ A@2 B@2 A@2 C@2 D@2 E F D@2 G H I J K L M N O P Q R S R Q R S T U V W X ~ Y Z AA ~ D@2 E F D@2 G AB AC J K AD AC J K
  AD Q R S R Q R S AE U AF AG AH ~ AI AJ AK AL AM AN AO ~ AP@2 AQ AR AS@2 AT AU U AV AW AX AY AZ BA BB Q R S R Q R S AE
  U AF AG AH ~ AI AJ AK
>`.pickRestart({
  A: "[b3,b4,d5,f#5,b5] ~@3", // Bm
  B: "[[b3,b4,d5,f#5,b5]@4 ~@4 [b3,c#5]@5 ~ b3@10 [b3,c#5]@5 ~@3, ~@14 [b4,d5,g5,b5]@13 ~@5]/2", // Bm Bsus2 G
  C: "[[b3,b4,d5,f#5,b5]@4 ~@10 [b3,b4,d5,g5,b5]@13 ~@5]/2", D: "[a4,d5] ~@5 [a4,c#5]@3 ~@3 f#3 a3 ~@2",
  E: "[g4,d5] ~@5 [g4,c#5] ~@5 g4 ~@3", F: "d4 ~ g4 ~@5 d4 ~ e4 ~@3 e6 d6", G: "[g4,d5] ~@5 [g4,c#5] ~@9",
  H: "f#3 ~ [f#4,a6] ~@5 [f#4,a6] ~ [f#4,a6] ~@5", I: "~@3 c#5@5, ~ b4@3", J: "~@2 b3 ~ f#4 ~@5 b4 ~ c#5 ~@3",
  K: "~ g4@7, b3", L: "~@2 b3 ~@3 b4 ~@3 b4 ~@3 c#5 ~", M: "~@3 [c#5,f#5]@5, ~ f#4@7", N: "~@6 b4 ~ c#5 ~@5 a4 ~",
  O: "~ b4@3, b3", P: "~@2 b3 ~ g4 ~@5 b4 ~ e5 ~@3", Q: "[g4,d5] ~@5 [g4,c#5]@3 ~@3 [g4,d5] ~@3",
  R: "~@2 b3 ~ b3 ~@5 e5 ~@5", S: "[f#4,d5] ~@5 [f#4,c#5]@3 ~@3 [f#4,b4] ~@3", T: "[f#3,c#4] ~",
  U: "[b3,f#4,b4]@11 ~@5", V: "b4 ~@5 b3 ~ [a4,d5] ~ [a4,c#5] ~@5", W: "~@4 b4 ~@7 [b3,f#4] ~@3",
  X: "f#4 ~ [c4,g4] ~@9 f#3 ~@2 b3", Y: "[a4,e5] ~ d5 ~@5 b3 ~@5 [a4,d5] ~", Z: "~@6 [d4,a4]@4 ~@2 [b3,f#4] ~@3",
  AA: "f#4 ~ [c4,g4] ~@13", AB: "~@2 [f#4,f#6] ~@3 c#4 e4 c#4!2 ~@6", AC: "~ f#4@7, b3", AD: "~@6 b4 ~ c#5 ~@5 c#5 ~",
  AE: "[f#3,c#4]@8 ~@4 d4@3 ~", AF: "~@2 [a4,e5] ~ d5 ~@5 [a4,c#5] ~@5", AG: "~@4 a4 ~@7 [b3,f#4] ~ [b3,f#4] ~",
  AH: "~@4 [c4,g4]@5 ~@3 f#3 a3 ~@2", AI: "[a4,e5] ~ d5 ~@3 [b4,f#5] ~@3 [a4,e5]@3 ~@3",
  AJ: "[e4,b4]@3 ~ b4 ~@7 [b3,f#4] ~ [b3,f#4] ~", AK: "~@12 f#3 a3 b3 d4", AL: "~@14 [a4,e5] ~",
  AM: "~@2 b3!2 ~@2 b3!2 ~@2 b3!2 ~@2 b3!2", AN: "~@3 [d4,a4]@2 ~@3", AO: "g4 ~ [c4,g4] ~@13",
  AP: "[[d4,a4,d5]@27 ~@5]/2", AQ: "[d4,a4,d5] ~@15", AR: "~@6 [c4,g4,c5]!2 ~@4 [c4,g4,c5] ~ g4 ~",
  AS: "[~ [d4,a4,d5]@11 ~@4]/2", AT: "[d4,a4,d5] ~ [c4,g4,c5] ~@13", AU: "~@8 [c4,g4,c5]@3 ~@5",
  AV: "~@2 b5 a5 ~@4 f#5 g5 f#5 f5 ~@4", AW: "f#5 ~ e5 ~@5 a4 ~ c#5 ~@5", AX: "e4 ~ f#4 ~@13",
  AY: "a4 ~ a4 c#5 ~@4 a4 ~ b4 d5 ~@4", AZ: "b4 ~ d5 f#5 ~@4 d5 ~ e5 f#5 ~@4", BA: "f#5@2 ~@4 a5 ~@4 a5@2 ~@3",
  BB: "~@4 b5 f#6 b5 f#6 ~@4 e6 f#6 e6 f#6",
})).s("gm_distortion_guitar").gain(0.36).pan(0.3)

// chords · distortion guitar · "_Rob"
const distortion_guitar_2 = note(`<
  ~ A B C D A@3 ~ E@2 F G E@2 F H I J K L M N O P Q R Q S Q R T U ~ V W X Y Z AA AB@2 E@2 F G E@2 F AC AD J K AE AF J K
  AE Q R Q S Q R T U AG AH AI AJ Y AK AL AM Y AN AO AP@2 ~@2 AQ@2 AR AS AT@2 AU AV AW AX AY AZ BA BB Q R Q S Q R T U AG
  AH AI AJ Y AK AL AM
>`.pickRestart({
  A: "~@6 [b3,c#5,e5,a5,b5]@5 ~@5", B: "~@6 [e5,a5,b5]@5 ~@5", C: "~@8 [b3,c#5]@5 ~@3, ~@6 [e5,a5,b5]@5 ~@5",
  D: "~@8 [b3,c#5]@5 ~@3", E: "~@2 b3 ~ b3 ~@5 b3!2 ~@2 b3 ~", F: "~@2 b3 ~ b3 ~@5 [e4,a4] ~@3 [g4,b4] ~",
  G: "~@4 a3 ~ b3 ~@5 d6 ~@3", H: "~@4 [f#4,a6]@3 ~@9", I: "~ f#4@7, b3", J: "~@6 b4 ~ c#5 ~@5 a4 ~",
  K: "~@4 b4 ~ [b4,e5]@10", L: "~@4 g4 ~@3 c#5 ~@3 e5 ~@3", M: "~ b4@3, b3", N: "~@2 b3 ~ f#4 ~@5 b4 ~ c#5 ~@3",
  O: "~@3 [b4,e5]@5, ~ g4@7", P: "~@6 b4 ~ c#5 ~@5 c#5 ~", Q: "~@2 b3 ~ b3 ~@5 e5 ~@5",
  R: "[g4,d5] ~@5 [g4,c#5]@3 ~@3 [g4,d5] ~@3", S: "[f#4,e5] ~@5 [f#4,c#5]@3 ~@3 [f#4,b4] ~@3",
  T: "~@2 b3 ~ b3 ~@5 e5 ~@3 f#3 ~", U: "f#4 ~", V: "~@2 [a4,e5] ~ d5 ~@9 f#3 ~",
  W: "[e4,b4]@3 ~@3 [d4,a4]@4 ~@4 [b3,f#4] ~", X: "~@4 [c4,g4]@5 ~@5 a3 ~", Y: "[b3,f#4,b4]@11 ~@5",
  Z: "~@4 [a4,e5] ~ [b4,f#5] ~@3 [a4,e5]@3 ~@3", AA: "[e4,b4]@3 ~ g4 ~@9 [b3,f#4] ~", AB: "[~ g4@5 ~@2, ~ c4@2 ~@5]/2",
  AC: "~@4 [e4,e6] ~@5 a3 ~ [b3,b5]@3 ~", AD: "~@3 c#5@5, ~ b4@3", AE: "~@2 b3 ~ g4 ~@5 b4 ~ e5 ~@3",
  AF: "~@3 [c#5,f#5]@5, ~ b4@3", AG: "~@14 [f#4,b4] ~", AH: "[a4,d5] ~@5 b3 ~ [a4,d5] ~@5 f#3 ~",
  AI: "[e4,b4]@3 ~@3 [d4,a4]@4 ~@6", AJ: "f#4 ~ [c4,g4] ~@11 b3 ~", AK: "~@4 [a4,e5] ~@3 b3 ~@5 [a4,d5] ~",
  AL: "~@3 [d4,a4]@2 ~@3", AM: "f#4 ~ [c4,g4] ~ [c4,g4]@5 ~@7",
  AN: "[b4,f#5] ~@3 [a4,e5] ~@3 [a4,d5] ~@3 [a4,e5] [b4,f#5] ~@2", AO: "[e4,b4]@3 ~ g4 ~@7 [b3,f#4] ~ [b3,f#4] ~",
  AP: "[~ [c4,g4]@5 ~@2]/2", AQ: "[~@2 [c4,g4,c5]@18 ~@4 [c4,g4,c5] ~ g4 ~@5]/2", AR: "[c4,g4,c5] ~@15",
  AS: "~@12 [d4,a4,d5] ~ a4 ~", AT: "[~@4 [c4,g4,c5]@17 ~@7 [c4,g4,c5] ~ a4 ~]/2",
  AU: "~@2 a5 ~@6 b5 a5 f#5 a5 ~ b5 ~, b5@7 ~@9", AV: "~@4 f#5 a5 f#5 f5 ~@4 f#5 f5 d5 e5",
  AW: "~@4 d5 ~ c#5 ~@5 a4 ~ e4 ~", AX: "~@4 f#4 ~ a4 ~ f#4@5 ~@3", AY: "~@4 e5 c#5 a4 c#5 ~@4 f#5 d5 b4 d5",
  AZ: "~@4 a5 f#5 d5 f#5 ~@4 f#5@3 ~", BA: "~@3 g5@2 ~@3 b5@2 ~@4 g5 ~", BB: "a5 f#6 a5 f#6 ~@4 d6 f#6 d6 f#6 ~@4",
})).s("gm_distortion_guitar").gain(0.36).pan(0.7)

// chords · overdriven guitar · "_Horvath"
const overdriven_guitar = note(`<
  ~@2 A B C ~ A D E ~@16 F G H G F G H I ~@25 F G H G F G H J ~@13 K L M N ~ O ~ P Q R S T Q R U V F G H G F G H J ~@8
>`.pickRestart({
  A: "~@3 f#5@2 ~@3", B: "c#6@5 ~@3 b5@5 ~@3", C: "~@6 d6 ~ f#6 ~@3 e6@3 ~", D: "f#6@11 ~@3 a4 ~", E: "[a4,d5,e6] ~",
  F: "[g4,d5] ~@5 [g4,c#5]@3 ~@3 [g4,d5] ~@3", G: "~@2 b3 ~ b3 ~@5 e5 ~@5",
  H: "[f#4,d5] ~@5 [f#4,c#5]@3 ~@3 [f#4,b4] ~@3", I: "[f#3,c#4] ~", J: "[f#3,c#4]@8 ~@4 d4@3 ~", K: "~@14 d5 ~",
  L: "a5 ~@5 a4 ~ g5 ~@3 d5 ~@3", M: "~@14 g4 ~", N: "g5 ~@5 g4 ~ f#5 ~@5 g4 ~", O: "a5 ~@5 a4 ~ g5 ~@5 a4 ~",
  P: "g5 ~ e5 ~@5 f#5 ~ e5 ~@5", Q: "[b3,f#4] ~ a3 ~@7 d4 ~@5", R: "~@2 a3 ~ [b3,f#4]@3 ~@7 [g#3,e4]@2",
  S: "~@2 g3 ~ [g#3,e4]@3 ~@9", T: "~@2 f#3 ~ [g3,d4] ~@5 b3 ~ a3 ~@3", U: "~@10 e4 ~@5",
  V: "~@2 f#3 ~ [g3,d4] ~@5 c#4 ~ d4 ~@3", // G5
})).s("gm_overdriven_guitar").gain(0.36).pan(0.2)

// chords · overdriven guitar
const overdriven_guitar_2 = note(`<
  ~@2 A@2 B C D@2 E ~@16 F G F H F G I J ~@25 F G F H F G I J ~@14 K ~ L M N O P Q R S T Q R U V F G F H F G I J ~@8
>`.pickRestart({
  A: "[b4@4 ~@8 b5@17 ~@3]/2", B: "~@2 d6 ~ e6 ~@5 f6 ~@5", C: "d6@3 ~@13", D: "[b4@4 ~@8 b5@17 ~@2 d5]/2",
  E: "[g5,b5] ~", F: "~@2 b3 ~ b3 ~@5 e5 ~@5", G: "[g4,d5] ~@5 [g4,c#5]@3 ~@3 [g4,d5] ~@3",
  H: "[f#4,e5] ~@5 [f#4,c#5]@3 ~@3 [f#4,b4] ~@3", I: "~@2 b3 ~ b3 ~@5 e5 ~@3 f#3 ~", J: "f#4 ~",
  K: "~@4 d5 ~@5 f5 ~@3 a4 ~, ~ f5@4 ~@3", L: "~@2 e5 ~ c5 ~@5 e5 ~ c5 ~@3", M: "~@14 d4 ~",
  N: "~@2 f5 ~ d5 ~@5 f5 ~ d5 ~@3", O: "~@14 g4 ~", P: "~@4 c5 ~ g4 ~@5 c5 ~ g4 ~", Q: "~@4 [b3,f#4]@3 ~@7 [b3,f#4]@2",
  R: "~@10 d4 ~@5", S: "~@10 d4 ~@3 [g3,d4]@2", T: "~@6 d4 ~ c#4 ~@5 f#3 ~", U: "~@2 g3 ~ [g#3,e4]@3 ~@7 [g3,d4]@2",
  V: "~@6 a3 ~ b3 ~@5 e4 ~",
})).s("gm_overdriven_guitar").gain(0.36).pan(0.8)

// bass · fretless bass
const bass = note(`<
  A B C D E B C D F B C D F B C D F B C D E B C D G H I J K L M N O B P Q R B P S T@2 B C D F B C D F B@2 C E B C D U H
  V B K L M N W B P Q X B P Q R B P S Y@2 Z AA AB AC Z AA AB AD AE AF AG AH AE AI AJ AK H I B K L M AL O B P Q AM B P Q
  AM
>`.pickRestart({
  A: "~@12 b2@3 ~", B: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~", C: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ f#1 ~",
  D: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~", E: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g2 ~ a1 ~ a2 ~",
  F: "g1 ~ g2 ~ a1 ~ b1 ~ d2 ~ e2 ~ g2 ~ a2 ~", G: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ c#2@3 ~",
  H: "g2 ~ g2 ~ g2 ~ a2 ~ a2 ~ a2 ~ b2 ~ b2 ~", I: "g2 ~ g2 ~ g2 ~ a2 ~ a2 ~ a2 ~ b2 ~ a1 ~",
  J: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ a1 b1", K: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ c#2 ~ d2 ~ f#2 ~",
  L: "g1 ~ g1 ~ g1 ~ a1 ~ a1 ~ a1 ~ b1 ~ b1 ~", M: "b1 ~ c#2 ~ c#2 ~ c#2 ~ d2 ~ d2 ~ e2 ~ e2 ~",
  N: "f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ e2@3 ~", O: "f#2@5 ~@3 f#2@3 ~@5",
  P: "b1 ~ c#2 ~ c#2 ~ d2 ~ d2 ~ f#2 ~ f#2 ~ d2 ~", Q: "e2@4 ~@2 d2@4 ~@2 b1 ~ b1@2",
  R: "~@2 c2 ~ c2@3 ~ c2 ~ b1 ~ f#1 a1 b1 d2", S: "e2@4 ~@2 d2@4 ~@2 b1 ~ b1 ~", T: "[~@2 c2 ~ c2@17 ~@3 c2@3 ~@5]/2",
  U: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ c#2 ~ f#2 ~", V: "g2 ~ g2 ~ g2 ~ a2 ~ a2 ~ a2 ~ b2 ~@3", W: "f#2@8 ~@4 f#2@3 ~",
  X: "~@2 c2 ~ c2@3 ~ c2 ~ b1 ~ f#1 a1 b1 ~", Y: "[c#2 ~ c2 ~ c2@17 ~@3 c2@3 ~@5]/2",
  Z: "d2 ~ d2 ~ f#2!2 d2 ~ d2 ~ a2 ~ d2 ~ d2 ~", AA: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ a1 ~ b1 ~",
  AB: "c2 ~ c2 ~ e2!2 c2 ~ c2 ~ g2 ~ c2 ~ c2 ~", AC: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~",
  AD: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ a1 ~", AE: "b1 ~ a1 ~ b1@3 ~ c#2 ~ d2 ~ c#2 ~ b1@2",
  AF: "~@2 a1 ~ b1@3 ~ c#2 ~ d2 ~ b1 ~ g#1@2", AG: "~@2 g1 ~ g#1@3 ~ d2 ~ d2 ~ c#2 ~ g1@2",
  AH: "~@2 f#1 ~ g1 ~ d2 ~ c#2 ~ b1 ~ a1 ~ f#1 ~", AI: "~@2 a1 ~ b1@3 ~ b1 ~ d2 ~ b1 ~ g#1@2",
  AJ: "~@2 g1 ~ g#1@3 ~ c#2 ~ d2 ~ c#2 ~ g1@2", AK: "~@2 f#1 ~ g1 ~ a1 ~ b1 ~ c#2 ~ d2 ~ e2 ~",
  AL: "f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ e2 ~ e2 ~", AM: "~@2 c2 ~ c2@3 ~@3 b1!2 f#1 a1 b1 d2",
})).s("gm_fretless_bass").gain(0.41)

// bass · electric bass pick · "_All"
const bass_2 = note(`<
  A B C D E B C D F B C D F B C D F B C D E B C D G H I J K L M N O B P Q R B P S T@2 B C D F B C D F B@2 C E B C D U H
  V B K L M N W B P Q X B P Q R B P S Y@2 Z AA AB AC Z AA AB AD AE AF AG AH AE AI AJ AK H I B K L M AL O B P Q AM B P Q
  AM
>`.pickRestart({
  A: "~@12 b3@3 ~", B: "b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~", C: "b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ f#2 ~",
  D: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~", E: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g3 ~ a2 ~ a3 ~",
  F: "g2 ~ g3 ~ a2 ~ b2 ~ d3 ~ e3 ~ g3 ~ a3 ~", G: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ c#3@3 ~",
  H: "g3 ~ g3 ~ g3 ~ a3 ~ a3 ~ a3 ~ b3 ~ b3 ~", I: "g3 ~ g3 ~ g3 ~ a3 ~ a3 ~ a3 ~ b3 ~ a2 ~",
  J: "b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ a2 b2", K: "b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ c#3 ~ d3 ~ f#3 ~",
  L: "g2 ~ g2 ~ g2 ~ a2 ~ a2 ~ a2 ~ b2 ~ b2 ~", M: "b2 ~ c#3 ~ c#3 ~ c#3 ~ d3 ~ d3 ~ e3 ~ e3 ~",
  N: "f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ e3@3 ~", O: "f#3@5 ~@3 f#3@3 ~@5",
  P: "b2 ~ c#3 ~ c#3 ~ d3 ~ d3 ~ f#3 ~ f#3 ~ d3 ~", Q: "e3@4 ~@2 d3@4 ~@2 b2 ~ b2@2",
  R: "~@2 c3 ~ c3@3 ~ c3 ~ b2 ~ f#2 a2 b2 d3", S: "e3@4 ~@2 d3@4 ~@2 b2 ~ b2 ~", T: "[~@2 c3 ~ c3@17 ~@3 c3@3 ~@5]/2",
  U: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ c#3 ~ f#3 ~", V: "g3 ~ g3 ~ g3 ~ a3 ~ a3 ~ a3 ~ b3 ~@3", W: "f#3@8 ~@4 f#3@3 ~",
  X: "~@2 c3 ~ c3@3 ~ c3 ~ b2 ~ f#2 a2 b2 ~", Y: "[c#3 ~ c3 ~ c3@17 ~@3 c3@3 ~@5]/2",
  Z: "d3 ~ d3 ~ f#3!2 d3 ~ d3 ~ a3 ~ d3 ~ d3 ~", AA: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ a2 ~ b2 ~",
  AB: "c3 ~ c3 ~ e3!2 c3 ~ c3 ~ g3 ~ c3 ~ c3 ~", AC: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~",
  AD: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ a2 ~", AE: "b2 ~ a2 ~ b2@3 ~ c#3 ~ d3 ~ c#3 ~ b2@2",
  AF: "~@2 a2 ~ b2@3 ~ c#3 ~ d3 ~ b2 ~ g#2@2", AG: "~@2 g2 ~ g#2@3 ~ d3 ~ d3 ~ c#3 ~ g2@2",
  AH: "~@2 f#2 ~ g2 ~ d3 ~ c#3 ~ b2 ~ a2 ~ f#2 ~", AI: "~@2 a2 ~ b2@3 ~ b2 ~ d3 ~ b2 ~ g#2@2",
  AJ: "~@2 g2 ~ g#2@3 ~ c#3 ~ d3 ~ c#3 ~ g2@2", AK: "~@2 f#2 ~ g2 ~ a2 ~ b2 ~ c#3 ~ d3 ~ e3 ~",
  AL: "f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ e3 ~ e3 ~", AM: "~@2 c3 ~ c3@3 ~@3 b2!2 f#2 a2 b2 d3",
})).s("gm_electric_bass_pick").gain(0.41).pan(0.3)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@12 A ~@22 B ~@3 B ~@28 B ~@4 C ~@2 B ~@28 B ~@4 C>".pickRestart({
  A: "~@12 x!2 ~@2", B: "~@5 x!2 ~", C: "~@12 x!2 ~ x",
})).gain(0.41)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@16 A ~@15 B ~@24 A ~@15 C ~@4 D ~@31 C>".pickRestart({
  A: "~@13 x!2 ~", B: "~@12 x!2 ~ x", C: "~@8 x ~ x!2 ~@4", D: "~@12 x!2 ~@2",
})).gain(0.41)

// drums · high tom
const high_tom = s("ht").struct("<~@12 A ~@3 B ~@15 C ~@24 B ~@20 D ~@32>".pickRestart({
  A: "~@8 x!3 ~@5", B: "~@8 x!5 ~@3", C: "~@4 x ~ x!5 ~@5", D: "~@11 x ~@4",
})).gain(0.41)

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

// drums · ride
const ride = s("rd").struct("<~@17 A B@2 C A B@2 C B@2 D B@3 C ~@26 A D B C A B@2 ~@30 A B@2 D A B@2 ~@9>".pickRestart({
  A: "~@2 x!6", B: "x!8", C: "x!6 ~@2", D: "x!7 ~",
})).gain(0.41)

stack(
  distortion_guitar, distortion_guitar_2, overdriven_guitar, overdriven_guitar_2, bass, bass_2, kick, snare, low_tom,
// … 2 more lines

More by Ozzy Osbourne