Strudelify

No More Tears

Ozzy Osbourne

KeyC♯ minorTempo110 bpm
0:00/0:00
// No More Tears — Ozzy Osbourne
// 110 bpm, 4/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 3/4 at bar 103, 4/4 at bar 104, 9/4 at bar 176) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 185 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(110/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 · pan flute · "Brightness"
const pan_flute = note("<~@94 A@3 B@5 C ~@82>".pickRestart({
  A: "[~ a#4@6 c#4@5 [f4,a#4]@6 c#4@5 ~ [f4,a#4]@5 ~ c#4@5 ~ [f4,a#4]@6 c#4@4 ~@2 [f#4,a#4]@6 c#4@5 ~ f#4@6 c#4@5 ~ [f#4,a#4]@5 ~ c#4@6 [f#4,a#4]@6 c#4@5 ~, ~ a#3@17 ~@30 f#3@48, ~@20 a#4 ~@11]/3", // A#5 F#
  B: "[f4@6 c#4@5 ~ f4@6 c#4@5 [f4,a#4]@6 c#4@6 [f4,a#4]@6 c#4@6 f#4@6 c#4@6 [f#4,a#4]@6 c#4@5 ~ [f#4,a#4]@6 c#4@6 [f#4,a#4]@6 c#4@6 [f4,a#4]@6 c#4@6 [f4,a#4]@6 c#4@6 [f4,a#4]@6 c#4@6 f4@5 c#4@6 [f#4,a#4]@6 c#4@6 [f#4,a#4]@6, a#3@47 f#3@48 a#3@46 ~@19, a#4@3 ~@9 a#4@3 ~@32 a#4@3 ~@81 a#4@3 ~@20 a4 ~@5]/5", // A#5 F# A#5 F#
  C: "c#4@6 [f#4,a#4]@5 ~@21", // F#
})).s("gm_pan_flute").gain(0.4)

// chords · pad new age · "Brightness"
const pad_new_age = note("<~@102 A@5 B@4 C@8 ~@66>".pickRestart({
  A: "[~@18 [d#2,d#3,g3,a#3]@48 [c#2,c#3,f3,g#3]@46 ~ d#3@45 ~@2, ~@66 d#3 ~@45 [d#2,g3,a#3]@48]/5", // D# C# D#
  B: "[[e2,e3,g#3,b3]@24 [f#3,a#3,c#4]@21 ~@4 c#2@46 [b1,b2,d#3,f#3]@33, ~@12 f#2@12 [c#3,f3,g#3]@23 ~@17]/4", // E F# B C#
  C: "[~@15 [a2,e3]@46 ~ [f#1,f#3]@47 [c#2,g#2,f3]@48 [b1,d#3,f#3]@47 ~ [a1,a2,c#3,e3]@43 ~@8, ~@14 a1@48 a#2@45 ~@50 b2@43 ~@56, ~@15 c#3@142 ~@99]/8", // A5 F# C# B A
})).s("gm_pad_new_age").gain(0.47)

// bass · pad poly · "Brightness"
const bass = note("<~@119 A@2 B C D E F G@5 ~@54>".pickRestart({
  A: "[~@3 [f#1,f#2]@6 [f#1,f#2]@5 [f#1,f#2]@5 ~ [f#1,f#2]@4 [f#1,f#2]@5 [f#1,f#2]@5 [f#1,f#2]@5 [f#1,f#2]@4 [f#1,f#2]@4 [f#1,f#2]@4 ~ [f#1,f#2]@4 [f#1,f#2]@4 [f#1,f#2]@4]/2", // F#
  B: "[f#1,f#2]@4 [f#1,f#2]@4 [e1,e2]@5 ~@3 [e1,e2]@5 ~@3 [f#1,f#2]@2 ~ e1@2 ~@2 [f#1,f#2], ~@27 e2 ~@4", // F# E F#
  C: "~@3 [c#1,c#2]@6 ~ [c#1,c#2] ~@3 [c#1,c#2]@2 ~@2 [c#1,c#2] ~@3 [c#1,c#2]@2 ~@2 [c#1,c#2] ~@2 [c#1,c#2]@2 ~", // C#
  D: "~ [c#1,c#2] ~@3 [e1,e2]@6 ~@2 [e1,e2]@5 ~@2 f#2@2 ~@2 e1@2 ~@2 [f#1,f#2] ~@3, ~@20 f#1 ~@3 e2 ~@7", // C# E F#
  E: "[c#1,c#2]@6 ~ [c#1,c#2] ~@3 [c#1,c#2] ~@3 [c#1,c#2] ~@3 [c#1,c#2]@2 ~ [c#1,c#2]@2 ~@2 [c#1,c#2]@2 ~@2 c#1@2, ~@30 c#2 ~", // C#
  F: "~@2 [e1,e2]@5 ~@2 [e1,e2]@5 ~@3 f#2@2 ~@2 [e1,e2] ~@2 [f#1,f#2] ~@3 [c#1,c#2]@4, ~@17 f#1 ~@14", // E F# C#
  G: "[~@4 c#2@2 ~@2 c#1@2 ~ c#2@2 ~@2 [c#1,c#2]@2 ~@2 [c#1,c#2]@2 ~@2 [c#1,c#2]@2 ~@2 c#1@2 ~ [e1,e2]@7 ~ [e1,e2]@6 ~@2 [e1,e2]@6 ~@2 [e1,e2]@6 ~@2 f#2@7 ~ f#2@7 ~ [f#1,f#2]@7 ~ [f#1,f#2]@6 ~@2 g#2@7 ~ g#2@4 g#1@4 g#2@4 g#1@4 g#2@4 g#1@4 a2@4 ~@3 a2@4 a1@4 b2@4 b1@4 ~@4 b1@4 ~@3, ~@4 c#1 ~@3 c#2 ~@2 c#1 ~@15 c#2 ~@34 f#1@14 ~@18 g#1@11 ~@25 a1@6 ~@13 b2@7 ~@4]/5", // C# E F#
})).s("gm_pad_poly").gain(0.47)

// other · lead 8 bass lead · "Halo Pad"
const lead_8_bass_lead = note(`<
  ~@5 A@2 B@2 C@2 B@2 A@2 B@2 A@2 B@2 ~@18 D@2 E@2 F@2 G@2 H@2 I@2 J@2 K@2 L@2 ~@10 D@2 E@2 F@2 G@2 H@2 I@2 J@2 K@2 L@2
  M@2 N@2 O@2 P@2 ~ Q@2 R S@2 T@3 ~@30 U@6 V@3 ~@15 W@7 X@4 Y Z AA AB Y AC AD AE@3 AF AG AH@5 ~
>`.pickRestart({
  A: "[[g#4,c#5,f5]@7 [a#4,d#5]@8 ~]/2", B: "[[b4,e5,g#5]@27 ~ [c#5,e5,a5]@35 ~]/2",
  C: "[[g#4,b4,f5]@7 [a#4,d#5]@8 ~]/2", D: "[[g#4,c#5,f5]@27 ~ [a#4,d#5,f#5]@32 ~@4]/2",
  E: "[[b4,g#5]@27 ~ [c#5,e5,a5]@32 ~@4, e5@3 ~@5]/2", F: "[[g#4,c#5,f5]@27 ~ [a#4,d#5,f#5]@33 ~@3]/2",
  G: "[[b4,e5,g#5]@26 ~@2 [c#5,e5,a5]@35 ~]/2", H: "[[d#4,d#5]@5 [c#4,c#5] d#4 [e4,e5]@9, ~@24 d#5@7 ~@33]/2",
  I: "[c#5@4 c#6@8 c#5@4 b5@8 c#5@4 a#5@9 ~@3 a5@7 ~ [f#3,f#5]@4 [g3,g5]@4 [f#3,f#5]@4 [e3,e5]@2 ~@2]/2", // F# G F# E
  J: "[[c#3,c#5]@2 c#6@4 c#5@2 b5@4 ~@2 a#5@4 ~@2 a5@4 [f#3,f#5]@2 [g3,g5]@2 [f#3,f#5]@2 [e3,e5] ~]/2", // C# F# G F# E
  K: "[[c#3,c#5]@4 c#6@8 c#5@4 b5@8 c#5@4 a#5@8 c#5@4 a5@8 [f#3,f#5]@4 [g3,g5]@3 ~ [f#3,f#5]@3 ~ [e3,e5]@2 ~@2]/2", // C# F# G F# E
  L: "[[c#3,c#5]@4 c#6@8 ~@4 b5@8 c#5@4 a#5@8 ~@4 a5@8 [f#3,f#5]@3 ~ [g3,g5]@3 ~ [f#3,f#5]@3 ~ [e3,e5]@2 ~@2]/2", // C# F# G F# E
  M: "[c#5@4 c#6@8 c#5@3 ~ b5@8 c#5@4 a#5@8 c#5@4 a5@7 ~ [f#2,f#3,f#5]@3 ~ [g2,g3,g5]@3 ~@2 f#5@3 [e2,e3,e5]@2 ~@2, [c#2,c#3]@45 ~@11 [f#2,f#3]@3 ~@5]/2", // F# G E C# F#
  N: "[~ d5@3 ~ d6@7 ~ d5@2 ~@2 c#6@7 d5@3 ~@9 d5@3 ~ b5@6 ~@2 [f#2,f#3,f#5]@3 ~ [g2,g3,g5]@3 ~ [f#2,f#3,f#5]@4 [e2,e3,e5]@2 ~@2, [d2,d3]@7 c6@2 ~@7, ~@31 [e2,e3]@15 ~@18]/2", // F# G F# E D E
  O: "[d5@2 ~@2 f#6@7 ~@2 d5@3 ~ f6@5 ~@2 d5@3 ~@9 d5@3 ~ d#6@5 ~@4 d6@3 [g2,g3,c#6]@3 ~ [f#2,f#3,b5]@3 ~@2 a5@2 ~, [d2,d3]@31 ~ [e2,e3]@14 ~@2 [f#2,f#3]@3 ~@9 [e2,e3]@2 ~@2, ~@7 e6@2 ~@7]/2", // Gdim B5 D E F# E
  P: "[[f#2,f#3]@4 [c#5,c#6]@3 ~ [g2,g3]@4 [a4,a5]@2 ~@2 [a#2,a#3]@4 [c#5,c#6]@3 ~ [b2,b3]@4 [a4,a5]@2 ~@2 [d#3,d#4]@4 [c#5,c#6]@2 ~@2 b5@2 ~@2 a5@2 ~@2 d6@2 ~@2 c#6@2 ~@6 a5@3 ~, [d5,d6]@3 ~@5 [b4,b5]@2 ~@6 [d5,d6]@2 ~@6 [b4,b5]@2 ~@5 d5@2 ~@6 b4@2 ~@2 a4@2 ~@2 d5@2 ~@2 c#5@3 ~ [b4,b5]@2 ~@2 a4@4 ~, ~@32 d6@3 ~@5 [e3,e4]@5 ~@3 [g3,g4]@6 ~@2 [g#3,g#4]@6 ~@2]/2", // F# C# G A A# C# B A …
  Q: "[~ [f4,a#4]@6 c#4@5 [f4,a#4]@6 c#4@5 ~ [f4,a#4]@5 ~ c#4@5 ~ [f4,a#4]@7 ~@5 [f#4,a#4]@6 c#4@5 ~ [f#4,a#4]@4, ~ a#3@17 ~@46]/2", // A#5 F#
  R: "~@2 c#4@5 ~ [f#4,a#4]@5 ~ c#4@6 [f#4,a#4]@6 c#4@5 ~, ~@20 a4 ~@11", // F#
  S: "[f4@6 c#4@5 ~ f4@6 c#4@5 [f4,a#4]@6 c#4@6 f4@6 c#4@6 f#4@6 c#4@6 f#4@5, a#3@47 ~@17, a#4@3 ~@9 a#4@3 ~@49]/2", // A#5
  T: "[~ c#4@5 ~ [f#4,a#4]@6 c#4@6 a#4@4 ~@2 c#4@6 [f4,a#4]@6 c#4@6 [f4,a#4]@6 c#4@6 f4@6 c#4@6 f4@5 c#4@6 f#4@6 ~@6 [f#4,a#4]@6, ~@31 a#3@46 ~@19, ~@67 a#4@3 ~@26]/3", // F# A#5 F#
  U: "[~@29 [g#4,c#5,f5]@28 [a#4,d#5]@32 ~@4 [b4,e5,g#5]@27 ~ [c#5,e5,a5]@35 ~ [g#4,c#5,f5]@28 [a#4,d#5]@7]/6", // C# D#5 E A C# D#5
  V: "[~@29 [b4,e5,g#5]@27 ~ [c#5,e5,a5]@35 ~@4]/3", // E A
  W: "[~@29 [g#4,c#5,f5]@27 ~ [a#4,d#5,f#5]@32 ~@4 [b4,g#5]@27 ~ [c#5,e5,a5]@32 ~@4 [g#4,c#5,f5]@27 ~ [a#4,d#5,f#5]@33 ~@3 [b4,e5,g#5]@3, ~@93 e5@24 ~@107]/7", // C# D#m E A C# D#m E
  X: "[~@25 [c#5,e5,a5]@35 ~ [d#4,d#5]@20 c#5@4 d#4@4 [e4,e5]@36 c#5@3, ~@85 d#5@7 ~@36]/4", // A D# E
  Y: "~ c#6@8 c#5@4 b5@8 c#5@4 a#5@7", Z: "~@5 a5@7 ~ f#5@4 g5@4 f#5@4 e5@2 ~@2 c#5@3",
  AA: "~ c#6@8 c#5@4 b5@8 ~@4 a#5@7", AB: "~@5 a5@8 f#5@4 g5@4 f#5@4 e5@2 ~@2 c#5@3",
  AC: "~ c#5@4 a5@8 f#5@4 g5@3 ~ f#5@3 ~ e5@2 ~@2 c#5@3", AD: "~ c#6@8 ~@4 b5@8 c#5@4 a#5@7",
  AE: "[~@5 a5@8 f#5@3 ~ g5@3 ~ f#5@3 ~ e5@2 ~@2 c#4@8 c#5@8 ~@4 b4@8 c#4@4 a#4@8 c#4@4 a4@10 ~@2 f#2@4 [g2,g4]@4 [f#2,f#4]@3, ~@45 c#4@8 ~@31 f#4@4 ~@8]/3", // G F#
  AF: "~ [e2,e4]@2 ~@2 c#4@8 c#5@8 ~@4 b4@7, ~@21 c#4@8 ~@3", AG: "~ c#4@4 a#4@8 c#4@4 a4@10 ~@2 f#2@3, ~@7 f#4",
  AH: "[~ [g2,g4]@4 [f#2,f#4]@4 [e2,e4]@2 ~@2 c#4@8 c#5@8 ~@4 b4@8 c#4@4 a#4@8 c#4@4 a4@10 ~@2 f#2@4 [g2,g4]@4 [f#2,f#4]@4 [e2,e4]@2 ~@2 c#4@8 c#5@8 ~@4 b4@8 c#4@4 a#4@8 c#4@4 a4@10 ~@2 f#2@4 [g2,g4]@4 [f#2,f#4]@4 [e2,e4]@2 ~@2 c#4 ~@2, ~@29 c#4@8 ~@31 f#4@4 ~@29 c#4@8 ~@31 f#4@4 ~@16]/5", // G F# E G F# E G F# …
})).s("gm_lead_8_bass_lead").gain(0.48)

// other · lead 8 bass lead · "Halo Pad" · soft notes
const lead_8_bass_lead_soft = note(`<
  ~@5 A@2 B ~ A@2 B ~ A@2 B ~ A@2 B ~@30 C D C ~@2 E C ~@21 C D C ~@2 E C ~@10 F@2 ~ G@2 H I@2 ~@30 J@2 K ~ J@2 K ~@28 L
  M L ~@2 N L ~@10
>`.pickRestart({
  A: "[~@28 f#5@31 ~@5]/2", B: "~@14 f5 ~", C: "~ c#5 ~@6", D: "~@6 c#5 ~", E: "~@3 c#5 ~@4",
  F: "[~@5 c#4@2 ~ f#3@24]/2", G: "[~@3 a#4@6 ~@6 a#4@3 ~@9 a#4@5 ~@19 f#4@6 ~@7, ~@15 f#3@48 ~]/2",
  H: "~@23 a#4@5 ~@4", I: "[~@14 a#4@5 ~ c#4@6 a4 ~@5 c#4@6 [f#4,a#4]@5 ~ c#4@6 ~@14, ~@14 f#3@47 ~@3]/2",
  J: "[~@25 f#5@31 ~@8]/2", K: "~@25 f5@2 ~@5", L: "~ c#5@4 ~@27", M: "~@21 c#5@4 ~@7", N: "~@9 c#5@4 ~@19",
})).s("gm_lead_8_bass_lead").gain(0.32)

// other · tubular bells · "Chimes"
const tubular_bells = note("<~@102 A ~ B C ~ D@2 E@8 F@4 ~@64>".pickRestart({
  A: "~@9 d#4@6 ~", B: "~ c#4@12 ~@19", C: "~@17 d#4@12 ~@3", D: "[e4@6 f#4@6 c#4@3 ~]/2",
  E: "[~@31 b3@44 ~@4 a3@44 ~@3 a#3@44 ~@4 c#4@44 ~@4 d#4@34]/8", F: "[~@13 a3@44 ~@4 f#3@39 ~@28]/4",
})).s("gm_tubular_bells").gain(0.8)

// chords · timpani
const timpani = note("<~@78 A B C B D B E F@2 G H I J K L ~@92>".pickRestart({
  A: "~@20 f#2@3 ~ f2@3 ~ d#2@2 ~@2", B: "c2", C: "~@16 f2@4 f#2@3 ~@5 d#2@2 ~@2",
  D: "~@16 f2@4 f#2@3 ~ f2@2 ~@2 d#2@2 ~@2", E: "~@16 f2@3 ~ f#2@2 ~@2 f2@3 ~ d#2@2 ~@2",
  F: "[c2@45 ~@3 f2@3 ~ f#2@3 ~ f2@3 ~ d#2@3 ~]/2", G: "c#2@15 ~", H: "d#2@15 ~ f2@3 ~ f#2@2 ~@2 f2@3 ~ d#2@2 ~@2",
  I: "c#2 ~@3", J: "d#2@8 ~@8 f2@3 ~ f#2@2 ~@2 f2@3 ~ d#2@2 ~@2", K: "~ c3 ~@2 c3!10 ~ c3!17, f2 f#2 a2 a#2",
  L: "c3!29 ~@3, d3@4 d#3@4 f#3@4 g3@3 ~",
})).s("gm_timpani").gain(0.64)

// chords · timpani · soft notes
const timpani_soft = note("<~@78 [~@4 f2 ~@3] ~ [~@24 f2@3 ~@5] ~@10 [c3 ~ c3!2 ~@10 c3 ~@17] ~@93>")
  .s("gm_timpani").gain(0.4)

// other · french horn
const french_horn = note("<~@86 A B@2 C@3 ~@93>".pickRestart({
  A: "~ b3", B: "[~ g#3@47 e4@16]/2", C: "[c#4@29 ~@3]/3",
})).s("gm_french_horn").gain(0.8)

// bass · electric bass finger · "Bass (mute)"
const bass_2 = note(`<
  A B@2 C D E F G H B@4 E F I H B@3 J G F@2 K B@3 L M J N H O J F H O P Q@2 R@2 S@2 T@2 U@2 V@2 W@4 X@2 Y Z F H B@2 F H
  M AA AB@2 R@2 AC@2 T@2 AD AE W@2 AF@2 AG@2 V@2 AH@2 AI AJ AK AL AM AN ~@9 AO@2 AP@3 AQ AR@6 AS@5 AT AU AV@2 AW@3 AX@3
  AY@2 AZ BA@5 BB@2 BC BD@3 BE BF@3 BB BG@3 BH BI@3 BB BJ@2 BK@2 BL@2 BM@2 BN@2 BO@3 BP BQ BP BQ BP BR@3 BS BT BU BV@5
>`.pickRestart({
  A: "~@14 b2 c#3", B: "c#2 ~ c#2@2 b2 c#3 c#2 ~ c#2@2 b2 c#3 c#2@2 b2 c#3",
  C: "c#2 ~ c#2@2 b2 ~ c#2 ~ c#2@2 b2 c#3 c#2@2 b2 c#3, ~@5 c#3@2 ~@9",
  D: "c#2 ~ c#2@2 b2 ~ c#2 ~ c#2@2 b2 c#3 c#2 ~ b2 c#3, ~@5 c#3@2 ~@9",
  E: "b2 ~ c#2 ~ c#2@2 b2 c#3 c#2 ~ c#2@2 b2 c#3 c#2@2, ~ c#3@2 ~@13",
  F: "b2 c#3 c#2 ~ c#2@2 b2 c#3 c#2 ~ c#2@2 b2 c#3 c#2@2",
  G: "b2 c#3 c#2 ~ c#2@2 b2 ~ c#2 ~ c#2@2 b2 c#3 c#2@2, ~@7 c#3@2 ~@7",
  H: "b2 c#3 c#2 ~ c#2@2 b2 c#3 c#2 ~ c#2@2 b2 c#3 b2 c#3",
  I: "b2 ~ c#2 ~ c#2@2 b2 c#3 c#2 ~ c#2@2 b2 c#3 c#2 ~, ~ c#3@2 ~@13",
  J: "c#2 ~ c#2@2 b2 c#3 c#2 ~ c#2@2 b2 c#3 c#2 ~ b2 c#3",
  K: "b2 c#3 c#2 ~ c#2@2 b2 ~ c#2 ~ c#2 ~ b2 c#3 b2 c#3, ~@7 c#3@2 ~@7",
  L: "b2 c#3 c#2@2 c#2 ~ b2 c#3 c#2 ~ c#2 ~ b2 c#3 b2 c#3", M: "c#2@2 c#2@2 b2 c#3 c#2 ~ c#2@2 b2 c#3 c#2@2 b2 c#3",
  N: "b2 ~ c#2 ~ c#2@2 b2 c#3 c#2 ~ c#2 ~ b2 c#3 c#2 ~, ~ c#3@2 ~@13",
  O: "c#2 ~ c#2 ~ b2 c#3 c#2 ~ c#2@2 b2 c#3 c#2@2 b2 c#3", P: "c#2 ~ c#2@2 b2 c#3 c#2@2 c#2 ~ b2 c#3!5",
  Q: "[c#2@5 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ d#2@4 c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2!2]/2",
  R: "[e2@8 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 a2@8 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 b2@2 c#3@2 ~ f#3@2 ~@2 c#3@2 b2, ~@56 e3@2 ~ e3@2 ~@3, ~@30 f#3 ~]/2",
  S: "[c#2@4 c#2@4 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 d#2@7 b1 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 c#2@2]/2",
  T: "[e2@4 c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ a2@4 c#2 ~ b2 c#3 f#3 ~ c#3 ~ f#3 e3 c#3!2 f#3 ~]/2",
  U: "[d#2@4 ~@4 d#2@4 ~@4 d#2@4 c#2@4 d#2@4 e2@7 ~ e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 e2@2 e2@2]/2",
  V: "[c#2@2 c#3@4 c#2@2 b2@4 c#2@2 a#2@4 c#2@2 a2@4 f#2@2 g2@2 f#2@2 e2 ~]/2",
  W: "[c#2@2 c#3@4 c#2@2 b2@4 c#2@2 a#2@4 c#2@2 a2@4 f#2 ~ g2@2 f#2@2 e2 ~]/2",
  X: "[c#2 c#3@2 c#2 b2@2 c#2 a#2@2 c#2 a2@2 f#2 g2 f#2 e2]/2", Y: "b2 c#3 c#2@2 c#2 ~ b2 c#3 c#2 ~ c#2 ~ b2 c#3 c#2@2",
  Z: "b2 c#3 c#2 ~ c#2 ~ b2 c#3 c#2@2 c#2 ~ b2 c#3 c#2 ~", AA: "c#2 ~ c#2@2 b2 c#3 c#2 ~ c#3@2 g#2@2 c#2@2 g#2@2",
  AB: "[c#2@3 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ d#2@4 c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2!2]/2",
  AC: "[c#2@3 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ d#2@4 c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~]/2",
  AD: "d#2@3 ~ d#2@3 ~ d#2@2 c#2@2 d#2@2 e2@2", AE: "~@2 e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2!2",
  AF: "[c#2@2 c#3@4 c#2 ~ b2@4 c#2@2 a#2@4 c#2@2 a2@4 f#2 ~ g2@2 f#2@2 e2 ~]/2",
  AG: "[c#2@2 c#3@4 c#2@2 b2@4 c#2 ~ a#2@4 c#2@2 a2@4 f#2@2 g2@2 f#2@2 e2 ~]/2",
  AH: "[[c#2,c#3]@21 ~@3 [f#1,f#2] ~ [g1,g2] ~ [f#1,f#2] ~ [e1,e2] ~]/2", AI: "d1@5 ~@3 d2@5 ~@3, d2 ~@7",
  AJ: "e2@10 ~@6 [f#1,f#2]@3 [g1,g2]@4 ~ [f#1,f#2]@4 [e1,e2]@4", AK: "d2", AL: "~@7 f#2", AM: "f#2!2 g1 a#1!2 b1!2 c#2",
  AN: "c#2 e2!2 g2!2 g#2 g#2@2", AO: "[~@9 d#2@22 d#3]/2", AP: "[~ c#3@48 d#2@47]/3", AQ: "e2@3 f#2",
  AR: "[~@16 c#3@44 ~@3 [b1,b2]@44 ~@4 [a1,a2]@44 ~@3 [f#1,f#2]@34, ~@16 c#2@41 ~@135]/6", // B A F#
  AS: "[~@14 [c#2,c#3]@48 [b1,b2]@41 ~@6 [a1,a2]@47 ~ [f#1,f#2]@3]/5", // C# B A F#
  AT: "~@3 [f#1,f#2]@3 ~@3 [f#1,f#2]@3 ~@2 [f#1,f#2]@3 ~@3 [f#1,f#2]@2 ~@2 [f#1,f#2]@2 ~@3 [f#1,f#2]@2 ~", // F#
  AU: "~@2 [f#1,f#2]@2 ~@3 [f#1,f#2]@2 ~@2 [f#1,f#2]@2 ~@2 [f#1,f#2]@2 ~@3 [f#1,f#2]@2 ~@2 [f#1,f#2]@2 ~@2 [f#1,f#2]@2 ~@2", // F#
  AV: "[[f#1,f#2]@2 ~@2 [f#1,f#2]@2 ~@2 e2@6 ~@2 e2@6 ~ f#2@2 ~@2 e2@2 ~@2 f#2@2 ~@2 c#2@7 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~ f#2@2 f#2@2 g#2@2 ~]/2", // F#
  AW: "[~ b2@2 ~@2 e2@6 ~ e2@8 f#2@4 f#2@3 f#2@4 c#2@6 e3@2 c#3@2 b2@2 c#3@2 ~ c#3@2 ~@3 c#3@2 ~ c#3@2 ~@2 e3@2 d#3@2 ~ f#2@2 e2@6 ~@2 e2@6 ~@2 f#2@3 e2@4 f#2@4 c#2@4, ~@50 e3@2 ~ b2@2 ~@7 g#2@2 ~@32]/3",
  AX: "[~@4 c#2@2 ~ c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~ c#2@2 ~@2 c#2@2 ~@2 e2@6 ~@2 e2@6 ~@2 e2@6 ~@2 e2@6 ~@2 f#2@6 ~@2 f#2@6 ~@2 f#2@6 ~@2 f#2@6 ~ g#2@3]/3",
  AY: "[~ g#2@2 g#2@2 g#2@4 g#2@2 g#2@2 g#2@4 g#2@4 g#2@4 g#2@4 a2@8 a2@8 b2@4 b2@2 ~@2 b2@4 b2@4 c#2@3]/2",
  AZ: "~ c#2@4 b2@2 c#3@2 c#2@4 c#2@4 b2@2 c#3@2 c#2@4 b2@2 c#3@2 c#2@2 ~",
  BA: "[~ c#2@4 b2@2 c#3@2 c#2@2 ~@2 c#2@4 b2@2 c#3@2 c#2@4 b2@2 c#3@2 b2@2 ~@2 c#2@2 ~@2 c#2@4 b2@2 c#3@2 c#2@2 ~@2 c#2@4 b2@2 c#3@2 c#2@4 b2@2 c#3@2 c#2@2 ~@2 c#2@2 ~@2 b2@2 c#3@2 c#2@2 ~@2 c#2@4 b2@2 c#3@2 c#2@4 b2@2 c#3@2 c#2@2 ~@2 c#2@4 b2@2 ~@2 c#2@2 ~@2 c#2@4 b2@2 c#3@2 c#2@4 b2@2 c#3@2 c#2@2 ~@2 c#2@4 b2@2 c#3@2 c#2@2 ~@2 c#2@2 ~@2 b2@2 c#3@2 b2@2 c#3@2 c#2@2 ~, ~@31 c#3@4 ~@72 c#3@4 ~@49]/5",
  BB: "~ c#2@4 b2@2 c#3@2 c#2@2 ~@2 c#2@4 b2@2 c#3@2 c#2@4 b2@2 c#3@2 c#2@2 ~",
  BC: "~ c#2@4 b2@2 c#3@2 c#2@2 ~@2 d#2@2 ~@2 b2@2 c#3@2 c#2@4 b2@2 c#3@2 c#2@2 ~",
  BD: "[~ c#2@4 b2@2 c#3@2 c#2@2 ~@2 c#2@4 b2@2 c#3@2 c#2@4 b2@2 c#3@2 b2@2 c#3@2 c#2@2 ~@2 c#2@4 b2@2 c#3@2 c#2@2 ~@2 c#2@4 b2@2 c#3@2 c#2@4 b2@2 c#3@2 c#2@2 ~@2 c#2@4 b2@2 c#3@2 c#2@2 ~@2 c#2@4 b2@2 c#3@2 b2@2 c#3@2 c#2@2 ~]/3",
  BE: "~ c#2@2 ~@2 b2@2 c#3@2 c#2@2 ~@2 c#2@2 ~@2 b2@2 c#3@2 c#2@2 ~@4 c#3@2 c#2@2 ~, ~@25 b2@4 ~@3",
  BF: "[~ c#2@2 ~@2 b2@2 c#3@2 c#2@2 ~@2 c#2@2 ~@6 c#2@2 ~@2 b2@2 c#3@2 b2@2 c#3@2 c#2@4 c#2@2 ~@2 b2@2 c#3@2 c#2@4 c#2@2 ~@4 c#3@2 c#2@2 ~@2 b2@2 c#3@2 c#2@4 c#2@2 ~@2 b2@2 c#3@2 c#2@4 c#2@2 ~@2 b2@2 c#3@2 b2@2 c#3@2 c#2@2 ~, ~@17 b2@4 ~@32 b2@4 ~@39, ~@19 c#3@4 ~@73]/3",
  BG: "[~ c#2@4 b2@2 c#3@2 c#2@2 ~@2 c#2@4 b2@2 ~@2 c#2@2 ~@2 b2@2 c#3@2 b2@2 c#3@2 c#2@2 ~@2 c#2@4 b2@2 c#3@2 c#2@2 ~@2 c#2@4 b2@2 c#3@2 c#2@4 b2@2 c#3@2 c#2@2 ~@2 c#2@4 b2@2 c#3@2 c#2@2 ~@2 c#2@4 b2@2 c#3@2 ~@2 c#3@2 c#2@2 ~, ~@19 c#3@4 ~@66 b2@4 ~@3]/3",
  BH: "~ c#2@2 ~@4 c#3@2 c#2@2 ~@2 c#2@2 ~@6 c#2@2 ~@2 b2@2 c#3@2 c#2@2 ~, ~@5 b2@4 ~@8 b2@4 ~@11, ~@19 c#3@4 ~@9",
  BI: "[~ c#2@2 ~@4 c#3@2 c#2@2 ~@2 c#2@2 ~@4 c#3@2 c#2@2 ~@2 b2@2 c#3@2 b2@2 c#3@2 c#2@4 c#2@2 ~@2 b2@2 c#3@2 c#2@4 c#2@2 ~@4 c#3@2 c#2@2 ~@2 b2@2 c#3@2 c#2@4 c#2@2 ~@2 b2@2 c#3@2 c#2@4 c#2@2 ~@4 c#3@2 b2@2 c#3@2 c#2@2 ~, ~@5 b2@4 ~@8 b2@4 ~@32 b2@4 ~@28 b2@4 ~@7]/3",
  BJ: "[~ c#2@4 b2@2 c#3@2 c#2@2 ~@2 c#2@4 b2@2 c#3@2 c#3@2 c#3@2 c#3@2 c#3@2 c#2@6 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 d#2@7]/2",
  BK: "[~ c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 c#2@2 e2@8 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 a2@7]/2",
  BL: "[~ c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 b2@2 c#3@2 ~ f#3@2 ~@2 c#3@2 b2 c#2@6 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 d#2@7, ~@21 e3@2 ~ e3@2 ~@38, ~@25 f#3@2 ~@37]/2",
  BM: "[~ c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 c#2@2 e2@8 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 a2@6 ~]/2",
  BN: "[~ c#2@2 ~@2 b2@2 c#3@2 f#3@2 ~@2 c#3@2 ~@2 f#3@2 e3@2 c#3@2 c#3@2 f#3@2 ~@2 d#2@6 ~@2 d#2@4 ~@4 d#2@4 c#2@4 d#2@2 ~@2 e2@6 ~, ~@57 d#2@2 ~@5]/2",
  BO: "[~ e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 c#2@4 c#3@8 c#2@4 b2@8 c#2@4 a#2@8 c#2@4 a2@8 f#2@4 g2@4 f#2@4 e2@2 ~@2 c#2@3]/3",
  BP: "~ c#3@8 c#2@4 b2@8 c#2@4 a#2@7", BQ: "~ c#2@4 a2@8 f#2@4 g2@4 f#2@4 e2@2 ~@2 c#2@3",
  BR: "[~ c#2@4 a2@8 f#2@4 g2@4 f#2@4 e2@2 ~@2 c#2@8 c#3@8 c#2@4 b2@8 c#2@4 a#2@8 c#2@4 a2@12 f#2@4 g2@4 f#2@3]/3",
  BS: "~ e2@2 ~@2 c#2@6 ~@2 c#3@8 c#2@4 b2@7", BT: "~ c#2@4 a#2@8 c#2@4 a2@12 f#2@3",
  BU: "~ g2@4 f#2@4 e2@2 ~@2 c#2@8 c#3@8 ~@3",
  BV: "[~ b2@8 c#2@4 a#2@8 c#2@4 a2@10 ~@2 f#2@4 g2@4 f#2@4 e2@2 ~@2 c#2@8 c#3@8 c#2@4 b2@8 c#2@4 a#2@8 c#2@4 a2@12 f#2@4 g2@4 f#2@4 e2@2 ~@2 [c#1,c#2]@16 ~@19]/5", // C#
})).s("gm_electric_bass_finger").gain(0.72)

// drums · kick
const kick = s("bd").struct(`<
  ~@5 A@34 B C B C D C D C D C A D A D A D A D A E A@6 F G D C D C D C D C D H A D A I A D A I ~@36 J K L M N O P Q@2 R
  ~ S Q@19 T Q@4 U V W V U Q W V W X Q Y Q Y Q T Q T Q Z AA@2 Q@2 AB AA AC ~
>`.pickRestart({
  A: "x!2", B: "x ~@3 x ~@2 x", C: "~ x ~@2 x ~@3", D: "x ~@3 x!2 ~ x", E: "x ~@7 x!2 ~@6", F: "x ~@7 x ~@5 x!2",
  G: "~@4 x!2 ~@10", H: "~@2 x ~@7 x!2 ~@2 x ~", I: "x ~@3 x!2 ~@2", J: "~@8 x ~@14 x ~@8", K: "~@3 x ~@7 x ~@4",
  L: "~ x ~@3 x ~@14 x ~@3 x ~@6 x", M: "~@11 x ~@2 x ~@7 x ~ x ~@5 x ~", N: "~ x ~@14 x ~@3 x ~@7 x ~@3",
  O: "~@4 x ~@10 x ~@3 x ~@10 x ~", P: "~@7 x ~@7 x", Q: "~@13 x ~@15 x ~@2", R: "~@5 x ~@7 x ~@3 x ~@3 x ~@10",
  S: "~@29 x ~@2", T: "~@13 x ~@11 x ~@3 x ~@2", U: "~@13 x ~@11 x ~@6", V: "~ x ~@11 x ~@15 x ~@2",
  W: "~@13 x ~@3 x ~@7 x ~@6", X: "~ x ~@11 x ~@3 x ~@7 x ~@3 x ~@2", Y: "~@13 x ~@3 x ~@7 x ~@3 x ~@2",
  Z: "~@13 x ~@18", AA: "~@5 x ~@15 x ~@10", AB: "~@21 x ~@10", AC: "~@5 x ~@23 x ~@2",
})).gain(0.56)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A B@3 C B@3 D B@25 C B@13 E B F B@11 G B C B H B C B I B J B C B C B C B K L ~@35 M N O P Q R S T U V ~ W U@3 X
  U@3 Y U@15 Z U@3 X U X U@7 AA U X U AA U AB AC AD U@2 AE AD AF ~
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@4 x ~@7 x ~ x!2", D: "~@4 x ~@7 x!4", E: "~@2 x ~@2 x!2 ~", F: "~@2 x ~@2 x!3",
  G: "x!2 ~ x!5", H: "~@4 x ~@4 x!2 ~ x ~@3", I: "~@4 x ~@5 x!3 ~@3", J: "~ x!3", K: "~@2 x ~@3 x!2", L: "x",
  M: "~@4 x ~ x ~@9 x ~@14 x", N: "~@14 x ~@14 x ~@2", O: "~ x ~ x ~@8 x ~@14 x ~@4", P: "~@7 x ~@10 x ~@7 x ~@5",
  Q: "~@9 x ~@14 x ~@7", R: "~@7 x ~@11 x ~ x!3 ~@2 x ~ x ~@3", S: "~@3 x ~@7 x ~@4", T: "~@6 x ~@14 x ~@10",
  U: "~@5 x ~@15 x ~@10", V: "~ x ~ x ~ x ~@3 x ~ x ~@9 x ~@3 x ~ x ~@4", W: "~@21 x ~@10",
  X: "~@5 x ~@15 x ~@3 x ~ x ~@4", Y: "~@5 x ~@15 x ~ x ~ x ~ x ~@4", Z: "~@5 x ~@26", AA: "~@5 x ~@11 x ~@3 x ~@10",
  AB: "~@5 x ~@15 x ~@7 x ~@2", AC: "~ x ~ x ~@9 x ~@15 x ~@2", AD: "~@13 x ~@15 x ~@2",
  AE: "~@5 x ~@5 x ~ x ~@15 x ~@2", AF: "~@13 x ~@7 x ~@3 x ~ x ~@4",
})).gain(0.64)

// … 51 more lines

More by Ozzy Osbourne