Strudelify
Diary of a Madman cover art

Diary Of A Madman

Diary of a Madman

Ozzy Osbourne

KeyE♭ majorTempo168 bpm
0:00/0:00
// Diary of a Madman — Ozzy Osbourne
// 168 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 264 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(168/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, A@4 for four bars: edit a riff to change every repeat.

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B C D E F G H I@6 J K@4 L@6 M@2 ~@16 N@2 O@3 ~@21 P@3 Q@3 R@3 S T U V W X Y Z AA AB ~@17 AC@2 AD@2 AE@2 AF@2 AC@2
  AD@2 AE@2 AF@2 AG@2 AH@2 AG@2 AI@2 AG@2 AH@2 AG@2 AJ@2 AG@2 AH@2 AG@2 AI@2 AG@2 AH@2 AG@2 AJ@2 AG@2 AH@2 AG@2 AI@2
  AG@2 AH@2 AG@2 AJ@2 AG@2 AH@2 AG@2 AI@2 ~@42 P@3 Q@3 R@3 S AK ~@34
>`.pickRestart({
  A: "~@7 a3, a2, ~ a3@5 db4@2, ~@2 db4@3 eb4@3, ~@6 eb4@2 e4@7 ~",
  B: "~@7 g3, a2, ~ g3@5 db4@2, ~@2 db4@3 eb4@3, ~@6 eb4@2 e4@7 ~",
  C: "~@7 gb3, a2, ~ gb3@5 c4@2, ~@2 c4@3 eb4@3, ~@6 eb4@2 a4@7 ~",
  D: "~@7 f3, a2, ~ f3@5 b3@2, ~@2 b3@3 d4@3, ~@6 d4@2 a4@7 ~",
  E: "~@7 e3, a2, ~ e3@5 b3@2, ~@2 b3@3 db4@3, ~@6 db4@2 e4@7 ~",
  F: "~@7 e3, a2, ~ e3@5 b3@2, ~@2 b3@3 c4@3, ~@6 c4@2 e4@7 ~",
  G: "~@7 e3, g2, ~ b3@2 b3@3 b3@2, ~@2 c4@3 c4@3, ~@8 e4@7 ~",
  H: "~@7 f3, f2, ~ f3@5 a3@2, ~@4 d4@4 e4@7 ~, ~@3 a3@2 d4@3",
  I: "[~@12 b3 ~@4 e3 c4 e3 b3 e3 ~ e3 a3 e3 b3 e3 c4 e3 b3 e3 a3 e3 ~ e3 c4 e3 b3 e3 a3 e3 b3 e3 c4 e3 b3@2, e2@8 ~@8 a2@5 ~ a2@11 ~ a2@14, ~ b2@2 b2@2 ab3@2 ab3@2 ab3@2 e4@2 ~@35, ~@2 gb3@2 gb3@2 gb3@2 b3@2 b3@2 ~ [b3,d4]@4 ~@31]/6", // Bm
  J: "e2@2 ~ e3 c4 e3 b3 e3, ~@2 a2@5 ~",
  K: "[~ e3 a3 e3 b3 e3 c4 e3 b3 e3 a3 e3 ~ e3 c4 e3 b3 e3 a3 e3 b3 e3 c4 e3 b3@2 e2@2 ~ e3 c4 e3, a2@11 ~ a2@14 ~@2 a2@4]/4",
  L: "[b3 e3 ~ e3 a3 e3 b3 e3 c4 e3 b3 e3 a3 e3 ~ e3 c4 e3 b3 e3 a3 e3 b3 e3 c4 e3 b3@2 e2@2 ~ e3 c4 e3 b3 e3 ~ e3 a3 e3 b3 e3 c4 e3 b3 e3 a3 e3, ~@2 a2@11 ~ a2@14 ~@2 a2@5 ~ a2@11 ~]/6",
  M: "[~ e3 c4 e3 b3 e3 a3 e3 b3 e3 c4 e3 ~@4, a2@7 ~]/2",
  N: "[~@4 c4 ~@2 c4, ~@8 a2@12 g2@11 ~, ~@12 b3@7 ~@5 b3@7 ~]/2",
  O: "[~@2 f3 ~@2 g3 ~@2 c4 ~@2 c4, c4@11 ~ d4@11 ~@5 a3@7 ~ g3@11 ~, ~@4 a3@8 ~@4 b3@7 ~ f3@11 ~@5 b3@7 ~]/3",
  P: "[~@2 c4 ~@2 c4 ~@2 f3 ~@2 g3, a2@12 g2@11 ~@5 a3@8 ~@4 b3@7 ~, ~@4 b3@7 ~@5 b3@7 ~ c4@11 ~ d4@11 ~]/3",
  Q: "[~@8 c4@4 ~@8 c4@4 ~@8 a3@3 ~ [f3,a3,c4,e4]@5 ~@3 [g3,b3,d4,g4]@4, f3@11 ~ g3@11 ~@5 c4@7 ~@13, ~@4 a3@7 ~@5 b3@7 ~ e4@11 ~@13]/3", // Fmaj7 G
  R: "[~@2 b3 ~@2 b3 ~ a3 g3 ~@2 g3, a2@12 g2@12 ~@16 b3@7 ~, ~@4 c4@7 ~@5 c4@7 ~ c4@10 ~@2 d4@12]/3",
  S: "~@8 f3@3 a3 b3@4, c4@11 ~@5, ~@4 a3@7 ~@5", T: "c4@2 b3@2 [a2,a3] e3 c4 e3", U: "b3 e3 a2 e3 a3 e3 b3 e3",
  V: "c4 e3 b3 e3 a3 e3 a2 e3", W: "c4 e3 b3 e3 a3 e3 b3 e3", X: "c4 e3 b3@2 e2@2 a2 e3", Y: "c4 e3 b3 e3 a2 e3 a3 e3",
  Z: "b3 e3 c4 e3 b3 e3 a3 e3", AA: "a2 e3 c4 e3 b3 e3 a3 e3", AB: "b3@2 e3@2 c4@2 e3 ~@9",
  AC: "[~ gb4 ~@3 g4 ~ g4, b3, ~@2 g4@2 e4@3 ~, ~@3 gb4@2 ~ gb4@2]/2",
  AD: "[~ gb4 ~@3 g4 ~ g4, c4, ~@2 g4@2 e4@3 ~, ~@3 gb4@2 ~ gb4@2]/2",
  AE: "[~ d4 ~@3 g4 ~ g4, b3, ~@2 g4@2 e4@3 ~, ~@3 d4@2 ~ d4@2]/2",
  AF: "[~ d3 ~@5 gb4, gb4@3 gb4@2 gb4@2 ~, ~@2 d4@2 e4@3 ~, ~@3 d4]/2",
  AG: "[~@2 gb4 g4 ~@3 g4, g4@4 ~@4 e4@3 ~ gb4@3 ~, ~ b3@7, ~@10 g4@3 ~@3]/2",
  AH: "[~@2 gb4 a4 e4 a4 gb4 a4, a4 ~@3, ~ d3@7]/2", AI: "[~@2 gb4 a4 e4 a4 g4 gb4, a4 ~@3, ~ d4@7]/2",
  AJ: "[~@2 gb4 a4 [g4,b4] [gb4,a4] [e4,g4] [d4,gb4], a4 ~@3, ~ d3@7]/2", AK: "c4@4 b3@4 a3@3 ~@5",
})).s("gm_acoustic_guitar_steel").gain(0.38)

// chords · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  ~@29 A@3 B C@6 B D@4 ~@4 E@6 F E@6 F E@6 F ~@32 G@4 ~@86 E@6 F E@6 F E@6 F E@6 F ~@10 H I J K L M N O P Q R S T U V W
  X Y I J K Z M N O P Q R S T U V AA X AB
>`.pickRestart({
  A: "[~@20 db4@4 ~@12 e4@2 ~@5 a4@5, ~@4 a2@15 ~@5, ~@6 e4@8 ~@2 eb4@3 ~@5, ~@8 eb4@5 ~ db4@5 ~@2 [c4,eb4]@3, ~@24 g3@14 gb3@7 ~@3]/3", // Cm
  B: "~@3 a4@5, f3@15 ~, ~@4 b3@11 ~, ~@5 d4@11",
  C: "[~@12 db4@4 ~@12 e4@2 ~@5 a4@5 ~@6 e4@10 ~@12 db4@4 ~@12 e4@2 ~@5 a4@5, a2@15 ~@13 a2@15 ~@5, ~@4 e4@16 ~@4 eb4@6 ~@15 db4@11 ~@4 e4@16 ~@4 eb4@6 ~@10, ~@8 eb4@10 ~@2 db4@10 ~@4 [c4,d4]@6 ~@4 b3@11 ~@9 eb4@10 ~@2 db4@10 ~@4 [c4,eb4]@6, ~@16 g3@14 gb3@7 ~@3 f3@15 ~@17 g3@14 gb3@7 ~@3]/6", // Csus2 Cm
  D: "[~@12 db4@4 ~@12 e4@2 ~@5 a4@5 ~@6 e4@11 ~@7, a2@15 ~@17, ~@4 e4@16 ~@4 eb4@6 ~@15 db4@11 ~@8, ~@8 eb4@10 ~@2 db4@10 ~@4 [c4,d4]@6 ~@4 b3@11 ~@9, ~@16 g3@14 gb3@7 ~@3 f3@15 ~@9]/4", // Csus2
  E: "[~@12 db4@4 ~@12 e4@2 ~@5 a4@5 ~@6 a4@10 ~@12 db4@4 ~@12 e4@2 ~@5 a4@5, a2@15 ~@13 a2@15 ~@5, ~@4 e4@16 ~@4 eb4@6 ~@15 d4@11 ~@4 e4@16 ~@4 eb4@6 ~@10, ~@8 eb4@10 ~@2 db4@10 ~@4 [c4,eb4]@6 ~@4 b3@11 ~@9 eb4@10 ~@2 db4@10 ~@4 [c4,d4]@6, ~@16 g3@14 gb3@7 ~@3 f3@15 ~@17 g3@14 gb3@7 ~@3]/6", // Cm Csus2
  F: "~@3 e4@5, f3@15 ~, ~@4 b3@11 ~, ~@5 db4@11",
  G: "[~@15 g4, e2 e2, ~@8 g4@7 ~ g4@11 ~ g4@8 ~@4 g4@7 ~ g4@9 ~@7, ~@12 gb4@7 ~ gb4@7 ~@17 gb4@7 ~ gb4@7 ~@5, ~@24 e4@8 ~@4 e4@17 ~@3 e4@7 ~]/4",
  H: "~@4 a2 e3 c4 e3", I: "b3 e3 a2 e3 a3 e3 b3 e3", J: "c4 e3 b3 e3 a3 e3 a2 e3", K: "c4 e3 b3 e3 a3 e3 b3 e3",
  L: "c4 e3 b3@2 e2@2 a2 e3", M: "c4 e3 b3 e3 a2 e3 a3 e3", N: "b3 e3 c4 e3 b3 e3 a3 e3", O: "a2 e3 c4 e3 b3 e3 a3 e3",
  P: "b3 e3 c4 e3 b3@2 e2@2", Q: "a2 e3 c4 e3 b3 e3 a2 e3", R: "a3 e3 b3 e3 c4 e3 b3 e3", S: "a3 e3 a2 e3 c4 e3 b3 e3",
  T: "a3 e3 b3 e3 c4 e3 b3@2", U: "e2@2 a2 e3 c4 e3 b3 e3", V: "a2 e3 a3 e3 b3 e3 c4 e3",
  W: "b3 e3 a3 e3 a2 [d3,e3] c4 e3", X: "b3 e3 a3 e3 b3 e3 c4 e3", Y: "b3@2 e2@2 a2 e3 c4 e3",
  Z: "c4@2 e3 ~ b3@4 e2@4 a2@2 e3@2", AA: "b3 e3 a3 e3 a2 e3 c4 e3", AB: "b3@2 e2@2 a2 ~@3",
})).s("gm_acoustic_guitar_steel").gain(0.36)

// chords · distortion guitar · "DIST GUITAR"
const distortion_guitar = note(`<
  ~@18 A@7 B@3 C@2 ~@13 D@2 E@3 F@2 ~@19 G@3 H@3 G@3 I@8 J@2 K L M@2 N O@2 N P@2 Q R@2 S@4 ~@72 T U V@2 W X V@2 W X V@2
  W X Y Z AA AB AC AD@2 AE AF AG@2 AH AI@2 ~@14 G@3 H@3 G@3 I@8 AJ@2 AK@4 AL AM@4 AN@6 AJ@2 AK@4 AL AO@4
>`.pickRestart({
  A: "[~@2 e2@2 ~ e3 c4 e3 b3 e3 ~ e3 a3 e3 b3 e3 c4 e3 b3 e3 a3 e3 ~ e3 c4 e3 b3 e3 a3 e3 b3 e3 c4 e3 b3@2 e2@2 ~ e3 c4 e3 b3 e3 ~ e3 a3 e3 b3 e3 c4 e3 b3 e3 a3 e3, ~@4 a2@5 ~ a2@11 ~ a2@14 ~@2 a2@5 ~ a2@11 ~]/7",
  B: "[~ e3 c4 e3 b3 e3 a3 e3 b3 e3 c4 e3 [e2,b2]@6 [f2,c3]@6, a2@7 ~@5]/3", // E5 F5
  C: "[[gb2,db3]@3 [c3,g3]@2 [b2,gb3] ~@2]/2", D: "[~@2 [a2,e3]@3 [g2,d3]@3]/2",
  E: "[[f2,c3] [g2,d3] [f2,c3] [g2,d3]]/3", F: "[[a2,e3]@13 ~@3]/2", G: "[[a2,e3] [g2,d3] [f2,c3] [g2,d3]]/3",
  H: "[[f2,c3]@3 [g2,d3]@3 [a2,e3]@3 [f2,c3]@2 [g2,d3]]/3", // F5 G5 A5 F5 G5
  I: "[[f2,c3]@6 [g2,d3]@6 ~ e3 c4 e3 b3 e3 ~ e3 a3 e3 b3 e3 c4 e3 b3 e3 a3 e3 ~ e3 c4 e3 b3 e3 a3 e3 b3 e3 c4 e3 b3@2 e2@2 ~ e3 c4 e3 b3 e3 ~ e3 a3 e3 b3 e3 c4 e3 b3 e3 a3 e3, ~@12 a2@5 ~ a2@11 ~ a2@14 ~@2 a2@5 ~ a2@11 ~]/8", // F5 G5
  J: "[~ e3 c4 e3 b3 e3 a3 e3 b3 e3 c4 e3 c3@4, a2@7 ~]/2", K: "d3 c3 gb2@3 gb2 g2 gb2", L: "~ e2 g3 b2 gb3 b2 e2 b2",
  M: "[e3 b2 gb3 b2 ~@4 g4@2 ~@4 g4@2, ~@2 g3@3 gb3@3, ~@3 d4@2 ~ d4@2]/2", N: "~ b2 g3 b2 gb3 b2 e2 b2, e2 ~@3",
  O: "[e3 b2 gb3 b2 ~@4 g3@2 a2@2 ~@2 g3@2, ~@4 bb2@5 ~@7, ~@3 e3@2 ~ e3@2]/2",
  P: "[e3 b2 gb3 b2 ~@4 g4@2 ~@4 d4@2, ~@2 g3@2 ~ gb3@2 ~, ~@3 d4@2 ~ a4@2]/2", Q: "e2 b2 g3 b2 gb3 b2 e2 b2",
  R: "[e3 b2 gb3 b2 ~@4 g3@2 ~@4 g3@2, ~@2 bb2@2 ~ a2@3, ~@3 e3@2 ~ e3@2]/2", S: "[[e2,b2]@15 ~]/4",
  T: "c3@3 ~ c3 d3 c3@2", U: "gb2@3 ~ gb2 g2 gb2@2",
  V: "[e2 ~ e2@2 [e3,b3] [d3,a3] e3@2 e2@2 [c4,e4] [b3,eb4] e4@4, ~@6 b3@3 ~@3 c4@3 ~]/2", // E5 D5 C B
  W: "e2 gb2!3 [e4,a4]@2 gb2@2", X: "c3 b2 c3 d3 g3 gb3 e3 d3", Y: "g4@15 ~", Z: "a4 g4 f4 e4 f4 e4 eb4 e4",
  AA: "eb4 c4 a3!3 ab3 e3 eb3", AB: "f3 a2@3 ~@2 e4 eb4", AC: "e4 gb4 e4 eb4 a4 db5 eb4@2", AD: "[~@2 a4 c5 e5@11 ~]/2",
  AE: "e5 f5 ab5 f5 e5 eb5 c5 b4", AF: "a4 ab4 a4 b4 c5 b4 c5 eb5",
  AG: "[e5@2 eb5@2 e5@2 gb5@2 c6@2 b5@2 ab5@11 ~ e3 d3 ~ e3 g3 e3 ~ g3]/2",
  AH: "a3 g3 ~ a3 c4 a3 ~ c4 d4 c4 ~ d4 e4 d4 ~ e4", AI: "[g4 e4 ~ g4 a4 g4 ~ e4 c5@20 ~@4]/2",
  AJ: "[~ e3 c4 e3 b3 e3 a3 e3 b3 e3 c4 e3!2 ~ e2@2, a2@7 ~]/2",
  AK: "[~ e3 c4 e3 b3 e3 ~ e3 a3 e3 b3 e3 c4 e3 b3 e3 a3 e3 ~ e3 c4 e3 b3 e3 a3 e3 b3 e3 c4 e3 b3@2, a2@5 ~ a2@11 ~ a2@14]/4",
  AL: "e2@2 ~ e3 c4 e3 b3 e3, ~@2 a2@5 ~",
  AM: "[~ e3 a3 e3 b3 e3 c4 e3 b3 e3 a3 e3 ~ e3 c4 e3 b3 e3 a3 e3 b3 e3 c4 e3 e3 ~ e2@2 ~ e3 c4 e3, a2@11 ~ a2@14 ~@2 a2@4]/4",
  AN: "[b3 e3 ~ e3 a3 e3 b3 e3 c4 e3 b3 e3 a3 e3 ~ e3 c4 e3 b3 e3 a3 e3 b3 e3 c4 e3 b3@2 e2@2 ~ e3 c4 e3 b3 e3 ~ e3 a3 e3 b3 e3 c4 e3 b3 e3 a3 e3, ~@2 a2@11 ~ a2@14 ~@2 a2@5 ~ a2@11 ~]/6",
  AO: "[~ e3 a3 e3 b3 e3 c4 e3 b3 e3 a3 e3 ~ e3 c4 e3 b3 e3 a3 e3 b3 e3 c4 e3 ~@2 [e2,b2]@2 [a2,e3]@2 ~@2, a2@11 ~ a2@14 ~@6]/4", // E5 A5
})).s("gm_distortion_guitar").gain(0.46)

// bass · electric bass finger · "BASS"
const bass = note(`<
  ~@18 A B C D E D B C F G H@2 I J K L M I@3 J L@2 M I N@2 O@3 L M I@3 J L@2 M I P I Q L@2 R I@3 J S T@3 U@3 T@3 V@2 B W
  X Y@2 B C Z AA AB AC@2 AD AE AF AD AG AH AI AJ@2 AK@16 AL@4 AM@4 AN@2 AO@2 AP@2 AQ@2 AR@2 AQ@2 AS@2 AQ@2 AT AU AV@2
  AP@2 AW@2 AT AU AX@2 AT AY AZ BA AT BB AZ BA AT BC AZ BA AT BB AZ BA AT BB AZ BA AT BC AZ BA BD BE BF@2 BG BH BI@2 BG
  BH BF@2 BG BH L M BJ BK I J L@2 M I@3 J L@2 M I P I Q L@2 R I@3 J S T@3 U@3 T@3 V@2 B C D BL D B C BM C D B C BN C D B
  BO B C D BL D B C BP C D B C BN BQ D B BO
>`.pickRestart({
  A: "~@4 e1@4 a1@3 ~@5", B: "~@4 a1@3 ~@9", C: "a1@3 ~@9 a1@3 ~", D: "~@8 a1@3 ~@5", E: "~@4 a1@4 e1@4 a1@3 ~",
  F: "~@8 e1@5 ~ e1 ~", G: "e1 ~ e1 ~ f1@6 f1 ~ f1@2 f1 ~", H: "[gb1@6 gb1 ~ gb1@3 ~ c2@8 b1@3 ~ g1 ~ a1@2 ~@4]/2",
  I: "~@8 g1 ~ a1@2 ~@4", J: "~@4 g1 ~ a1@2 ~@8", K: "g1 ~ a1@3 ~ d2 e2 a2 ~@7", L: "g1 ~ a1@2 ~@12",
  M: "g1 ~ a1@2 ~@8 g1 ~ a1@2", N: "[~@8 a1@11 ~ g1@12]/2", O: "[f1@12 g1@11 ~ f1@12 g1@10 ~@2]/3", P: "~@4 g1 a1 ~@2",
  Q: "~@2 g1 a1 ~@4", R: "g1 a1 ~@4 g1 a1", S: "g1 ~ a1@2 ~@2 c2 e2 a2 ~@7", T: "[a1 g1 f1 g1]/3",
  U: "[f1@12 g1@10 ~@2 a1@11 ~ f1@8 g1@4]/3", V: "[f1@12 g1@11 ~ a1@2 ~@6]/2", W: "a1@2 ~@10 a1@3 ~", X: "~@4 a1 ~@3",
  Y: "[~@4 a1@4 e1@3 ~ a1@11 ~ a1@2 ~@6]/2", Z: "a1 ~ a1 ~ c2@4", AA: "d2 c2 d2@4 g1 gb1", AB: "e1 g2 gb2 e1",
  AC: "[gb1@2 e1@2 gb1@3 ~ g1@12 d2@12]/2", AD: "e1@9 ~@3 e1@4", AE: "e1 gb1 bb1@2", AF: "g1 a1@2 g1",
  AG: "a2 g2 e2 ~ g1@2 d2@2", AH: "g1@4 d2@7 ~ gb1@4", AI: "e1@2 g2@2 gb2@2 e1 ~", AJ: "[e1@4 gb1@4 bb1@11 ~ a1@12]/2",
  AK: "[e1@61 ~@3]/4", AL: "[~@28 gb2 g2 gb2 d2, e1@61 ~@3]/4", AM: "[e2 d2]/4", AN: "[~@12 gb2 g2 gb2 g2, e1@15 ~]/2",
  AO: "[d2@15 ~]/2", AP: "e1/2", AQ: "[d2@23 ~ gb2@2 g2@2 gb2@2 d2@2]/2", AR: "[e2@8 e1@23 ~]/2", AS: "[e2 e1 e2@6]/2",
  AT: "e2 e1", AU: "e2", AV: "d2/2", AW: "[~@12 gb2 g2 gb2 d2, d2@13 ~@3]/2", AX: "[~@12 gb2 g2 gb2 d2, d2]/2",
  AY: "e1@4 gb2 g2 gb2 e2", AZ: "d2!2", BA: "d2@4 gb2 g2 gb2 d2", BB: "e2@4 gb2 g2 gb2 g2", BC: "e1@4 gb2 g2 gb2 g2",
  BD: "c2@3 ~ c2 d2 c2@2", BE: "gb1@3 ~ gb1 g1 gb1@2", BF: "[e1 ~ e1@2 e2 d2 e2@3 e1 c2 b1 c2@4]/2",
  BG: "e1 gb1!3 gb1@3 ~", BH: "c2 b1 c2 d2 g2 gb2 e2 d2",
  BI: "[e1@2 ~@2 e1 ~ e1 ~ e2@2 d2@2 e2@6 e1@2 c2@2 b1@2 c2@8]/2", BJ: "~@8 g1 ~ a1@3 ~ d2 e2",
  BK: "a2 ~@7 g1 ~ a1@2 ~@4", BL: "~@4 a1@3 ~ e1@2 ~@2 a1@4", BM: "~@8 a1@3 ~ e1@2 ~@2", BN: "e1 ~ a1@2 ~@4",
  BO: "a1@3 ~ e1@2 ~@2 a1@3 ~@5", BP: "~@4 a1 ~ e1 ~", BQ: "a1@4 ~@8 a1@3 ~",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · string ensemble 2 · "SLOW STRINGS"
const string_ensemble_2 = note(`<
  ~@103 A@2 B@6 C@2 B@6 C@2 D@2 C@2 D@2 C@2 E@2 F@2 G@2 F@2 E@2 C@2 D@2 C@2 D@2 C@2 E@2 C@2 H@2 F@2 E@2 F@2 G@2 F@2 G@2
  C@2 D@2 C@2 D@2 I@2 ~@87
>`.pickRestart({
  A: "e4/2", B: "[b3 c4 b3, g4]/6", C: "[d4,gb4]/2", D: "[e4,g4]/2", E: "[b3,g4]/2", F: "[a3,gb4]/2", G: "[b3,e4]/2",
  H: "[~@4 c4 ~@3, [b3,e4]]/2", I: "[d4,a4]/2",
})).s("gm_string_ensemble_2").gain(0.22)

// chords · violin
const violin = note(`<
  ~@113 A@2 B@2 C@2 D@2 ~@2 E@2 F@2 E G H@2 I@2 J K L M N O P@6 Q@3 R S@4 ~@2 T U@3 T V W@2 T V X@2 ~@3 Y@2 Z AA AB AC@2
  AD AE ~@32 AF AG AH@3 ~@30 AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ
>`.pickRestart({
  A: "[b3,g4] ~@3 [b3,g4] ~@3 [b3,g4] ~@3 [b3,g4] ~@3", B: "[c4,g4] ~@3 [c4,g4] ~@3 [c4,g4] ~@3 [c4,g4] ~@3",
  C: "[d4,g4] ~@3 [d4,g4] ~@3 [d4,g4] ~@3 [d4,g4] ~@3", D: "[e4,gb4] ~@3 [e4,gb4] ~@3 [e4,gb4] ~@3 [e4,gb4] ~@3",
  E: "[d4,gb4] ~@3 [d4,gb4] ~@3 [d4,gb4] ~@3 [d4,gb4] ~@3", F: "[e4,g4] ~@3 [e4,g4] ~@3 [e4,g4] ~@3 [e4,g4] ~@3",
  G: "g4 gb4 e4 d4", H: "[~@4 g5@2 ~@2 gb5@2 ~@2 g5 ~@3 e5@16, b3]/2", I: "[[a3,d5]@31 ~]/2",
  J: "e5 ~@3 g5 ~@2 gb5@2 ~@3 g5 ~@3", K: "e5 ~@3 g5@2 ~ gb5@2 ~@3 g5@2 ~@2", L: "d5@2 ~@2 g5@2 ~ gb5@2 ~@3 g5 ~@3",
  M: "a5 ~ g5 ~ gb5 ~ g5 ~", N: "e5 ~ g5 ~ gb5 ~ g5 ~", O: "e5 ~@3 g5@2 ~@2 gb5@2 ~@2 e5@2 ~@2",
  P: "[~@16 b4@47 ~@21 g5@2 ~@2 gb5 ~@3 g5 ~@3, d5@63 a4@31 ~@2]/6", Q: "[e5@2 gb5]/3", R: "b5 a5 g5 gb5",
  S: "[e5@31 d5@30 ~@3]/4", T: "~@2 e5 gb5", U: "[[e5,g5]@4 [gb5,a5]@4 [e5,g5]@4 [d5,gb5]@3 ~ g5@31 ~, ~@15 e5@32 ~]/3",
  V: "[e5,g5] [gb5,a5] [e5,g5] [d5,gb5]", W: "[b4, g5@15 ~]/2", X: "[~@8 b4@23 ~, e5, g5@15 ~]/2",
  Y: "[gb5 ~ g5 ~ gb5 ~ g5 ~ gb5@2 ~ gb5@2 ~@2 gb5@2 ~ g5@2 gb5@2 g5@2 gb5@2 ~ gb5@2 ~ g5@2, ~@5 g5 ~ g5 ~@5 g5 ~@2]/2",
  Z: "gb5 g5 gb5 g5 gb5 g5 gb5 g5", AA: "gb5 ~@8 d6 ~ e6 d6 ~ e6 ~", AB: "d6 ~ e6 ~ d6 ~ e6 ~ d6 ~ e6 ~ d6 ~ e6 ~",
  AC: "[~@6 d6 b5, e6@31 ~]/2", AD: "[c6,e6]", AE: "[d6,gb6]", AF: "~@3 d5 eb5 f5 gb5 g5", AG: "a5@15 ~",
  AH: "[g5@13 gb5@11 d5@16 ~@8]/3", AI: "~@3 c5", AJ: "b4 ~ a4 b4", AK: "c5 b4 a4 ~", AL: "c5 b4 a4 b4",
  AM: "c5 b4 ~@2", AN: "c5 b4 ~ a4", AO: "b4@4 c5@4 b4@4 a4@3 ~", AP: "~ c5 b4 a4", AQ: "b4 c5 a4 ~",
  AR: "~@4 e5@4 d5@3 ~@5", AS: "c5 d5 e5 d5", AT: "c5 ~ e5 d5", AU: "c5@4 d5@4 e5@3 d5@4 ~", AV: "~@7 a5@4 ~ g5@3 ~",
  AW: "~ e5 g5 a5", AX: "g5@4 e5@3 ~@5 a5@4", AY: "g5 e5 g5 a5", AZ: "g5@3 ~ e5@3 ~ a5@5 ~@3",
})).s("gm_violin").gain(0.24)

// drums · kick
const kick = s("bd").struct(`<
  ~@18 A B C D E D B C D F G H@2 I J K L H@3 I M K L N O P H D Q K L N H@2 I M K L H@3 I M K L H@3 I J R I K S B ~ R A T
  O@2 B C D E D B C D U V W X Y D F Y W Z AA AB AC V ~@3 V ~@3 V ~@3 V ~@3 V ~@3 V ~@3 V ~@3 V ~@3 V ~@3 O ~@3 O ~@3 V
  ~@3 V ~@3 O@24 C@2 AD AE U AF AD AE AG AH AD AE AG ~ K L AI H@2 I K@2 L N H@2 I M K L H@3 I M K L H@3 I J R I K S B ~
  R A T O@2 B C D E D B C AJ C D B C AD C D B AK B C D E D B C AJ C D B C AD C D B AK
>`.pickRestart({
  A: "~ x!2 ~", B: "~ x ~@2", C: "x ~@2 x", D: "~ x", E: "~ x!3", F: "x!3 ~@3 x!2", G: "~@7 x", H: "~@4 x!2 ~@2",
  I: "~@2 x!2 ~@4", J: "x ~ x ~@3 x!2 ~@8", K: "x!2 ~@6", L: "x!2 ~@4 x!2", M: "x!2 ~ x ~@4", N: "~@4 x!2 ~ x",
  O: "x!2", P: "x ~ x ~@3 x!2", Q: "x!2 ~@4 x ~", R: "x ~ x!2", S: "x ~@3 x!2 ~@2", T: "x ~@3 x ~@2 x", U: "x!2 ~ x",
  V: "x", W: "~@4 x ~@2 x", X: "~ x!2 ~@2 x ~ x", Y: "x ~@2 x ~@2 x ~", Z: "~@2 x ~@2 x!2 ~", AA: "x ~@2 x ~@2 x!2",
  AB: "~ x ~@2 x ~@2 x", AC: "~@2 x ~@2 x ~@2", AD: "x!2 ~@2", AE: "x ~ x!2 ~@4", AF: "~@3 x ~ x ~@2",
  AG: "x ~ x ~@4 x", AH: "~@3 x ~@4", AI: "~@8 x ~ x ~@3 x!2", AJ: "~@2 x!2", AK: "x!3 ~",
})).gain(0.54)

// drums · snare
const snare = s("sd").struct(`<
  ~@19 A B C A C A B D E F G H B C@3 A I H B C@3 A J E K L M C@2 A H@2 B N C@2 A H@2 B C@3 A H@2 B C O P Q R S ~ O T U R
  V A B C A C A B D E W ~ B X Y E Z AA AB AC AD AE ~@3 AF H ~@2 AG H ~@2 AG H ~@2 AG H ~@2 AG H ~@2 AG AH ~@2 C H ~@2 AI
  AH ~@2 AG AH H ~ AG AJ H ~ C AK H ~ AG AK H ~ AG AL AM AL AN AO AN AL AN AL AN AP AN AQ AN AL AR AM AN AO AM AQ AM AS
  ~ C@3 AT C AU C AT C AV C AT C AW C@2 A H@2 B N C@2 A H@2 B N C@2 A H@2 B C@3 A H@2 B C O P Q R S ~ O T U R V A B C A
  C A B C AX C A B ~ B C A H A B C A C A B C AX C A B ~ B C A H
>`.pickRestart({
  A: "~ x ~@2", B: "x ~@2 x", C: "~ x", D: "x ~ x ~@4 x", E: "~@5 x ~@2", F: "x ~@2 x!4 ~", G: "x ~@2 x ~@4", H: "x",
  I: "x!2 ~@6", J: "x ~@6 x", K: "x ~@2 x ~@2 x!2", L: "x!4 ~@3 x", M: "~@2 x ~@2 x ~ x", N: "~@4 x!2 ~@2",
  O: "~@3 x ~@4", P: "~ x ~@2 x ~@2 x", Q: "~@2 x!6", R: "~@3 x ~@2 x ~", S: "~@2 x ~@3 x ~ x!2 ~@6", T: "~ x ~@5 x",
  U: "~@2 x ~@2 x!2 ~", V: "~@2 x!2 ~@4", W: "~@4 x!2 ~ x ~@8", X: "~@4 x!2 ~@2 x ~ x ~@3 x!2", Y: "x!2 ~@12 x ~",
  Z: "~@4 x ~@3 x ~ x ~@3 x!2", AA: "x!4 ~@2 x ~", AB: "x!2 ~@2 x ~@2 x", AC: "~@2 x ~ x!2 ~@2", AD: "x ~ x!2 ~ x!2 ~",
  AE: "x!2 ~ x!2 ~ x!2", AF: "~@4 x!2 ~ x", AG: "~@4 x!4", AH: "x ~@2 x!2 ~@3", AI: "~@4 x ~@2 x", AJ: "x!2",
  AK: "x ~@3 x ~@2 x", AL: "x ~ x ~ x ~@2 x", AM: "x ~ x ~ x!2 ~ x", AN: "x ~ x ~ x!4", AO: "x ~ x ~ x ~ x!2",
  AP: "x ~@2 x!2 ~ x!2", AQ: "x ~ x!3 ~ x!2", AR: "x!3 ~ x!4", AS: "x!8", AT: "~ x ~@2 x ~@3", AU: "x!3 ~ x ~ x!2",
  AV: "x!3 ~@5", AW: "x ~ x ~ x ~ x ~ x!3 ~ x ~ x ~", AX: "~@3 x",
})).gain(0.54)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@28 A ~@16 B ~@25 A ~@5 C A ~@10 D ~@10 A ~@3 E ~@27 F ~@15 G ~@5 E ~@6 E ~ H ~@3 E ~@4 E ~ E ~@46 A ~@5 C A ~@35
>`.pickRestart({
  A: "~@7 x ~@8", B: "~@15 x", C: "~@11 x ~@4", D: "~@3 x ~@4", E: "~@3 x", F: "~@5 x!2 ~", G: "~@9 x ~@6",
  H: "~ x ~@2",
})).gain(0.3)

// drums · low tom
// … 50 more lines

More by Ozzy Osbourne