Strudelify
Mr. Crowley cover art

Blizzard Of Ozz

Mr. Crowley

Ozzy Osbourne

KeyD minorTempo108 bpm
0:00/0:00
// Mr. Crowley — Ozzy Osbourne
// 108 bpm, 4/4, key D 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: duplicate parts dropped: ch 8 epiano1 (copy of ch 3 piano)
// note: Full arrangement: all 134 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(108/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 · piano · "untitled"
const piano = note("<A@8 B C@3 D@7 E@6 ~@109>".pickRestart({
  A: "[~@11 d6@27 e5@29 f6@27 ~@29 a5@28 [g5,b5]@22 ~@7 [c5,e5,a5]@12, ~@10 f5@28 c6@113 ~@41, ~@11 a5@86 ~@95, ~@94 g5@29 ~@69, ~@95 e6@78 ~@19]/8", // G Am
  B: "~@2 bb5@7 c6@7 d6@7 c6", C: "[~@6 b5@7 c6@7 [d5,f5]@28 [db5,e5]@24, ~@5 a5@13]/3",
  D: "[~@4 [f5,d6]@27 ~@30 f6@27 ~ e6@28 a5@27 ~ [b4,e6]@23, ~@2 a5@43 ~@39, ~@31 e5@30 ~@27 g5@29 ~@27 g5@24, ~@32 c6@113 ~@23]/7", // Dm E5
  E: "[~@6 [c5,e5,a5]@13 [bb4,bb5]@7 ~ [c5,c6]@7 [d5,d6]@7 [c5,c6]@6 [b4,b5]@8 [c5,c6]@6 [d5,f5]@29 [db5,e5]@42 ~@12, ~@61 a4@70 ~@13]/6", // Am Bb C D C B C Dm …
})).s("gm_piano").gain(0.31)

// other · piano
const piano_2 = note("<A B@5 C@6 D E@5 F G@6 ~@109>".pickRestart({
  A: "~@10 d3@11 e3@3",
  B: "[~ f3@6 g3@6 ~ a3@7 e3@7 a2@7 ~@3 g3@3 ~ f3@11 g3@4 a3@6 b3@6 ~ c4@7 g3@7 c3@7 ~ c4@3 b3@4 a3@10 b3@4 c4@7, ~@7 a3 ~@16]/5",
  C: "[d4@6 e4@8 b3@6 e4@9 ~@7 a3@14 [bb2,bb3]@7 [f2,f3]@7 [g2,g3]@6 ~ f3@7 [e2,e3]@6 [f2,f3]@7 a3@48 ~@2 f3@3, ~@35 a2@14 ~@21 f2@7 ~@67]/6", // Bb F G E F
  D: "e3@3 ~ d3@11 e3@3 f3@6",
  E: "[~ g3@7 a3@7 e3@7 a2@7 a3@3 g3@3 ~ f3@11 g3@4 a3@6 b3@7 c4@7 g3@7 c3@7 c4@4 b3@3 a3@11 b3@3 c4@7 d4@7]/5",
  F: "e4@7 b3@8 e4@9",
  G: "[~@5 [a2,a3]@13 ~ bb2@7 ~ f3@6 [g2,g3]@7 [f2,f3]@7 [e2,e3]@7 [f2,f3]@7 a3@72 ~@11, ~@19 bb3@9 ~@116, ~@26 f2@7 ~@111]/6", // A G F E F
})).s("gm_piano").gain(0.36)

// other · piano
const piano_3 = note("<~@9 A@4 ~@8 B@4 ~@109>".pickRestart({
  A: "[~@19 a5@57 ~@20]/4", B: "[~@14 a5@69 ~@13]/4",
})).s("gm_piano").gain(0.46)

// other · piano
const piano_4 = note("<~@12 A@6 B C@6 ~@109>".pickRestart({
  A: "[~@4 d5@27 c5@29 f5@27 e5@29 c5@28]/6", B: "e5", C: "[~@6 a4@13 ~ bb4@5 c5@8 d5@7 c5@7 b4@7 c5@7 a4@71 ~@12]/6",
})).s("gm_piano").gain(0.52)

// other · epiano2
const epiano2 = note(`<
  ~@24 A@2 B@2 C@2 D E F@3 G H I@2 J@3 K@2 C@2 L M N O@2 G P Q@2 R@2 ~@15 A@2 B@2 S@2 D E T@3 U V@2 W X@2 ~@9 Y@2 Z AA
  AB AC@2 ~@29
>`.pickRestart({
  A: "[~@12 f4@6 e4@2 ~ e4@5 ~ d4@9 ~@12]/2", B: "[~@4 d4@4 e4@3 ~ f4@3 ~ e4@4 f4@2 ~ f4@3 ~ bb3@5 ~@16]/2",
  C: "[~@6 f4@6 e4@5 f4@4 e4@6 d4@9 ~@12]/2", D: "~@3 d4@4 ~ e4@3 ~ f4@4 e4@4 f4@2 ~@2", E: "f4@3 bb3@5 ~@16",
  F: "[~@20 f4@3 g4@2 ~ g4@3 f4@2 ~ g4@5 ~ g4@3 f4@3 ~ g4@5 ~ c4@3 ~@9 c4@3 d4@2 f4@2 ~@2]/3",
  G: "f4@2 ~ f4 ~ f4@3 ~ d4@8 ~@7", H: "~@7 f4", I: "[g4@2 g4@3 f4@3 g4@5 ~ g4@3 f4@4 g4@5 ~ c4@3 ~@9 d4@5 ~ f4@2 ~]/2",
  J: "[f4 ~@2 f4@2 ~ f4@5 ~ f4@2 ~ e4 ~@2 f4@2 ~ e4@9 ~@6 f4@6 e4@2 ~ e4@5 ~ d4@9 ~@12]/3",
  K: "[~@3 d4@5 e4@3 ~ f4@4 e4@4 f4@2 ~ f4@2 ~@2 bb3@4 ~@17]/2", L: "~@3 d4@5 e4@3 ~ f4@4 ~ e4@3 f4@2 ~@2",
  M: "f4@3 bb3@4 ~@17", N: "~@5 f4", O: "[g4@2 g4@3 f4@3 ~ g4@5 ~ g4@3 f4@3 g4@5 ~ c4@3 ~@9 d4@5 ~ f4@2 ~]/2",
  P: "~@9 e4 f4@2", Q: "[g4@2 g4@3 f4@3 ~ g4@5 ~ g4@3 f4@3 g4@5 ~ c4@4 ~@11 d4@3 f4@2 ~]/2",
  R: "[f4@2 ~ f4@2 ~ f4@6 g4@3 f4@3 g4@2 ~ a4@15 ~@12]/2", S: "[~@12 e4@6 f4@2 ~ e4@5 ~ d4@13 ~@8]/2",
  T: "[~@20 f4@3 g4@2 ~ g4@3 f4@2 ~ g4@5 ~ g4@3 f4@3 ~ g4@5 ~ c4@3 ~@13 c4@2 d4@3]/3",
  U: "f4@2 ~ f4@2 ~ f4@3 ~ d4@11 ~@3", V: "[~@20 f4@2 ~ g4@2 ~ g4@2 ~ f4@2 ~@2 g4@5 ~ g4@2 ~ f4@2 ~ g4@3]/2",
  W: "~ c4 ~@6", X: "[f4@2 ~ f4 ~@2 f4 ~@2 f4@2 ~ g4@3 f4@3 g4@2 ~ a4@10 ~@17]/2",
  Y: "[~@3 a4@2 ~ a4@2 ~ a4@2 ~ a4@3 g4@2 ~ g4@2 ~ e4@12 ~@15]/2", Z: "~@3 f4@2 ~ f4 ~@2 f4@2 ~ g4@2 ~ a4@3 g4@3 f4@3",
  AA: "d4 ~@2", AB: "~@3 e4@2 ~ e4@2 ~ e4@2 ~ e4@11 ~",
  AC: "[~@3 e4@2 ~ e4@2 ~ e4@2 ~ e4@2 ~ e4 ~@2 e4@2 ~ a4@12 ~@3 a4@10 ~@2]/2",
})).s("gm_epiano2").gain(0.64)

// chords · celesta
const celesta = note(`<
  ~@25 A B C D E B F G H I J ~ H K L M N O P D Q O R S T@2 U V H W X Y Z AA AB Z AA AC AD AE AF AA AG Z AH AC AI@2 E B P
  D AJ@2 R D H K AK AL T K L Y AM AN@2 AO@2 AP AQ AR AM AN@2 AO@2 AP AQ AR AS AT AG AU AA AV AW AX Z AY AG AZ BA AV BB
  BC BD BE AG AZ BF BG BH BI BJ BE BK BL BM
>`.pickRestart({
  A: "[d5,a5,d6]@23 ~", B: "[d5,a5,d6]@17 ~ [d5,a5,d6]@3 ~@3", C: "[bb4,f5,bb5]@8 ~ [bb4,f5,bb5]@13 ~@2",
  D: "[bb4,f5,bb5]@8 ~ [bb4,f5,bb5]@12 ~@3", E: "[d5,a5,d6]@2 ~", F: "[bb4,f5,bb5]@7 ~@2 [bb4,f5,bb5]@2 ~",
  G: "[bb4,f5,bb5]@14 ~ [bb4,f5,bb5]@5 ~ [f5,bb5] ~@2, ~@21 bb4@2 ~", // Bb5
  H: "[c5,g5,c6]@7 ~@2 [c5,g5,c6] ~@2 [c5,g5,c6]@7 ~@2 [c5,g5,c6] ~@2", // C5
  I: "[c5,g5,c6]@8 ~ [c5,g5,c6] ~@2 [c5,g5,c6]@5 ~ [c5,g5,c6]@4 ~@2", // C5
  J: "[d5,a5,d6]@8 ~ [d5,d6]@2 ~ [d5,a5,d6]@12, ~@9 a5 ~@14", // D5 D D5
  K: "[c5,g5,c6]@7 ~@2 [c5,g5,c6] ~@2 [c5,g5,c6]@4 ~@2 [c5,g5,c6]@3 ~@3", // C5
  L: "[bb4,f5,bb5]@8 ~ [bb4,f5,bb5] ~@2 [bb4,f5,bb5]@5 ~ [bb4,f5,bb5]@4 ~@2", M: "[a4,e5,a5]@11 ~@13",
  N: "[d5,d6]@5 ~@3, a5@13 ~@11", O: "[d5,a5,d6]@11 ~ [d5,a5,d6]@9 ~@3", P: "[bb4,f5,bb5]@7 ~@2 [bb4,f5,bb5]@4 ~@11",
  Q: "[d5,a5,d6]@13 ~@11", R: "[bb4,f5,bb5]@8 ~ [bb4,f5,bb5]@6 ~@9", S: "[bb4,f5,bb5]@8 ~ [bb4,f5,bb5]@9 ~@6",
  T: "[c5,g5,c6]@8 ~ [c5,c6]@2 ~ [c5,g5,c6]@10 ~@2, ~@9 g5 ~@14", // C5 C C5
  U: "[d5,a5,d6]@8 ~ [a5,d6] ~@2 [d5,a5,d6]@9 ~@3, ~@9 d5@2 ~@13", V: "~@18 [d5,a5,d6]@5 ~",
  W: "[c5,g5,c6]@10 ~@2 [c5,g5,c6]@5 ~ [c5,g5,c6]@4 ~@2", X: "[bb4,f5,bb5]@11 ~ [bb4,f5,bb5]@5 ~ [bb4,f5,bb5]@4 ~@2",
  Y: "[a4,e5,a5]@17 ~@7", Z: "[d5,a5,d6,f6]@16 ~@2 [d5,a5,d6,f6]@3 ~@3",
  AA: "[bb4,f5,bb5,d6]@16 ~@2 [bb4,f5,bb5,d6]@3 ~@3", AB: "[c5,g5,c6,e6]@17 ~ [c5,g5,c6,e6]@4 ~@2",
  AC: "[e5,bb5,d6,g6]@16 ~@2 [e5,bb5,d6,g6]@3 ~@3", AD: "[a4,e5,db6,e6]@23 ~", AE: "[a4,e5,db6,e6]@5 ~",
  AF: "[d5,a5,d6,f6]@15 ~@3 [d5,a5,d6,f6]@2 ~@4", AG: "[c5,g5,c6,e6]@8 ~ [c5,g5,c6,e6] ~@2",
  AH: "[bb4,f5,bb5,d6]@8 ~ [bb4,f5] ~@2, ~@18 [bb5,d6] ~@5", AI: "[[a4,e5,db6,e6]@15 ~]/2", AJ: "[d5,a5,d6]@7 ~",
  AK: "[d5,d6]@12 [d5,a5,d6]@11 ~, a5@5 ~@7", AL: "~@6 [d5,a5,d6]@2 ~ [d5,a5,d6]@2 ~",
  AM: "~@8 a5 d6 ~ e6 f6@3 e6@3 d6@3 c6@3", AN: "[bb5@9 g6@3 g6@18 ~@2 g5 c6 ~ d6 e6@3 d6@3 c6@3 g5@3]/2",
  AO: "[a5@9 f6@3 f6@18 ~@2 f5 bb5 ~ c6 d6@3 c6@3 bb5@3 a5@3]/2", AP: "g5@3 e6 e6@4", AQ: "db6 d6 e6 f6",
  AR: "e6 d6 db6@2", AS: "[d5,a5,d6,f6]@17 ~ [d5,a5,d6,f6]@3 ~@3",
  AT: "[g4,d5,g5,bb5,d6,g6]@16 ~@2 [g4,d5,g5,bb5,d6,g6]@3 ~@3", AU: "[f4,c5,f5,a5]@16 ~@2 [f4,c5,f5,a5] ~@5",
  AV: "[e4,e5,bb5,d6,g6]@8 ~ [e4,e5,bb5,d6,g6] ~@2", AW: "[a4,e5,a5,db6,e6]@23 ~",
  AX: "[a4,e5,a5,db6,e6]@17 ~ [a4,e5,a5,db6,e6]@3 ~@3", AY: "[g4,d5,g5,bb5,d6]@8 ~ [g4,d5,g5,bb5,d6] ~@2",
  AZ: "[f4,c5,f5,a5,c6,f6]@16 ~@2 [f4,c5,f5,a5,c6,f6] ~@5", BA: "[bb4,f5,bb5]@16 ~@2 [bb4,f5,bb5] ~@5, d6@7 ~@2 d6 ~@2",
  BB: "[a4,e5,a5,d6,e6]@9 [a4,e5,a5,d6,e6] ~@2 [a4,e5,a5,d6,e6]@7 ~@2 [a4,e5,a5,d6]@2 ~, ~@21 e6 ~@2", // Asus4
  BC: "[a4,e5,a5,db6,e6]@3 ~", BD: "[d5,a5,d6,f6]@17 ~ [d5,a5,d6,f6]@2 ~@4",
  BE: "[g4,d5,g5,bb5,d6,g6]@17 ~ [g4,d5,bb5,d6,g6]@2 ~@4, ~@18 g5 ~@5", // Gm
  BF: "[bb4,f5,bb5,d6]@17 ~ [bb4,f5,bb5] ~@5, ~@9 d6 ~@2", BG: "[e4,e5,bb5,d6,g6]@17 ~ [e4,e5,bb5,d6] ~@5, ~@9 g6 ~@2",
  BH: "[a4,e5,a5,db6,e6]@20 ~ [a4,e5,db6,e6]@2 ~, ~@21 a5 ~@2", BI: "[a4,e5,a5,db6,e6]@17 ~ [a4,e5,a5,db6,e6]@2 ~@4",
  BJ: "[d5,a5,d6,f6]@17 ~ [d5,a5,d6] ~@5, ~@9 f6 ~@2", BK: "[c5,g5,c6,e6]@17 ~ [c5,g5,e6] ~@5, ~@9 c6 ~@2",
  BL: "[f4,c5,f5,a5,c6,f6]@7 ~", BM: "[bb4,f5,bb5,d6]@5 ~",
})).s("gm_celesta").gain(0.19)

// other · clavinet
const clavinet = note(`<
  ~@25 A B C D A B E F G H I@2 H G J K L B C D L B C M G@2 N O P Q R K S T U V T W X@2 V Y U V T Z AA AB AC B C D A B E
  F G H I AD G AE AF AG V T U V Y W X@2 V T U AH T W AI AJ B AK AL AM AN AO AP K B AK AL AM AN AO K AJ S AQ U AR Y W AS
  K B AK AL AM AT
>`.pickRestart({
  A: "d4@13 ~@2 a4@3 ~@3 f4@2 ~", B: "d4@23 ~", C: "bb3@6 ~@3 bb3@5 ~@5 c4 ~@2 a3 ~, ~@18 bb3@2 ~ bb3@2 ~",
  D: "bb3@9 bb3@8 ~ c4@5 ~", E: "bb3@6 ~@3 bb3@4 ~@6 c4 ~ bb3@2 a3, ~@9 bb3 ~@2", F: "bb3@8 ~ bb3@10 ~@2 bb3@2 ~",
  G: "c4@8 ~ c4@2 ~ c4@8 ~ c4@2 ~", H: "c4@9 c4@2 ~ c4@12", I: "d4@8 ~ d4@2 ~ d4@11 ~", J: "bb3@5 ~ bb3@5 ~", K: "a3",
  L: "d4@14 ~ a4@3 ~@3 f4@3", M: "bb3@8 ~ bb3@7 ~@2 bb3@6", N: "d4@7 ~@2 d4 ~@2 d4@9 d4@2 ~",
  O: "d4@9 d4 ~@2 d4@9 d4@3", P: "c4@8 ~ c4@2 ~ c4@11 ~", Q: "c4@9 c4 ~@2 c4@11 ~",
  R: "bb3@5 ~ bb3@8 ~ bb3@2 ~ bb3@4 ~@2", S: "d4@8 ~ d4@2 ~", T: "bb3@17 ~ bb3@5 ~", U: "c4@16 ~@2 c4@5 ~",
  V: "d4@8 ~ c4@2 ~", W: "e3@16 ~@2 e3@5 ~", X: "a3@17 ~ a3@5 ~", Y: "bb3@16 ~@2 bb3@5 ~", Z: "e3@17 ~ e3@5 ~",
  AA: "a3@17 ~ bb3@5 ~", AB: "a3@5 ~ g3@5 ~ f3@5 ~ e3@3 ~@3", AC: "d3@13 ~@2 a4@2 ~@4 f4@2 ~", AD: "d4@8 ~@10 d4@5 ~",
  AE: "c4@11 ~ c4@5 ~ c4@4 ~@2", AF: "bb3@8 ~ bb3 ~@2 bb3@8 ~@4", AG: "a3@5 ~@3", AH: "d4@17 ~ c4@4 ~@2",
  AI: "a3@9 a3@2 ~ a3@11 ~", AJ: "a3@23 ~", AK: "g3@23 ~", AL: "c4@11 ~", AM: "f3", AN: "bb3@11 ~", AO: "e3@11 ~",
  AP: "a3@19 ~@2 a3@2 ~", AQ: "g3@17 ~ g3@4 ~@2", AR: "f3@8 ~ f3@2 ~", AS: "a3@20 ~ bb3@3", AT: "bb3",
})).s("gm_clavinet").gain(0.47)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@25 A@2 B C A D B E@4 F E@2 G ~ A@2 B E A@2 B E@4 H E@2 G ~ E@6 I J E@6 ~@2 K A B C A L B E@4 I E@3 ~ E@6 ~ M E@7 N
  E@6 O P E@6 Q R E@6 Q R E@5
>`.pickRestart({
  A: "~ x!2 ~", B: "~@6 x ~@11 x ~ x!3 ~", C: "~ x ~@2", D: "~@6 x ~@5 x ~ x!3 ~@7", E: "~ x ~ x",
  F: "~@6 x ~@11 x ~@2 x ~ x", G: "~ x ~ x ~ x ~ x", H: "~@6 x ~@11 x ~@2 x!2 ~", I: "~ x!3", J: "x!2 ~@2 x ~ x ~@17",
  K: "~@6 x ~@4 x!2 ~@11", L: "~@6 x!2 ~@16", M: "~@12 x ~ x!3 ~@7", N: "~@2 x!3 ~ x!2 ~ x!2 ~@13",
  O: "~@6 x ~ x!3 ~@7 x!2 ~ x!2 ~", P: "~@6 x ~ x!2 ~ x!13", Q: "~@3 x ~ x!2 ~@8 x ~ x ~ x ~ x ~@2",
  R: "~@3 x ~@2 x ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~@2",
})).gain(0.52)

// drums · low tom
const low_tom = s("lt").struct("<~@56 A ~@7 B ~@6 C D ~@22 E F ~@37>".pickRestart({
  A: "~@2 x!2", B: "~@15 x!2 ~ x ~@5", C: "x!8", D: "x", E: "~ x!3 ~ x!3", F: "~ x!3 ~@4",
})).gain(0.59)

// drums · mid tom
const mid_tom = s("mt").struct("<~@30 A ~@9 B ~@15 C ~@7 D ~@13 E ~@9 F ~@7 A ~@7 G ~@29>".pickRestart({
  A: "~@18 x!2 ~ x!2 ~", B: "~@3 x!2 ~@3", C: "~@11 x ~@4 x ~@7", D: "~@9 x!2 ~ x ~@11", E: "~@3 x", F: "~@3 x!3",
  G: "~@12 x!2 ~ x!2 ~ x!2 ~ x!2 ~",
})).gain(0.59)

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

// drums · high tom
const high_tom = s("ht").struct("<~@40 A ~@15 B ~@21 C ~@9 D ~@45>".pickRestart({
  A: "~ x!2 ~@5", B: "~ x!3 ~ x ~@2", C: "~ x", D: "x!3 ~@3",
})).gain(0.59)

stack(piano, piano_2, piano_3, piano_4, epiano2, celesta, clavinet, kick, snare, low_tom, mid_tom, crash, high_tom)

More by Ozzy Osbourne