Strudelify

The Wizard

Uriah Heep

KeyD♭ majorTempo167 bpm
0:00/0:00
// The Wizard — Uriah Heep
// 167 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 111 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(167/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 · acoustic guitar steel · "Guitar"
const acoustic_guitar_steel = note(`<
  A@7 B@8 C@2 D E D F@7 G@8 H@8 I@2 J K J L@5 M N M O ~@15 P@7 Q@8 R@6 J K J L@5 M N M S M S T U@3
>`.pickRestart({
  A: "[~@6 f4 db4@2 f4@2 ab3 gb4 f4 eb4 db4 eb4 f4 db4@2 ~@8 eb2 db2 eb2 f2 ~@2 [db4,f4]@4 f4 db4@2 f4@2 ab3 gb4 f4 eb4 db4 eb4 f4 db4@2 ~@3 f4, ~@2 db3@8 b2@2 bb2@2 ~@2 db2@3 ~@9, ~@21 ab3@2 f4@2 ~ db4@7 ~ f3@12 ~@8 db4@2, ~@22 db4@2 ~ ab3@8 ~ db3@18 b2@4, ~@27 f4@6 ~ ab3@8 ~@11 ab3@2 ~]/7", // Db
  B: "[~@4 eb2 db2 eb2 f2 db2@2 [db4,f4]@4 f4 db4@2 f4@2 ab3 gb4 f4 eb4 db4 eb4 f4 db4@2 ~@8 eb2 db2 eb2 f2 ~@2 [db4,f4]@4 f4 db4@2 f4@2 ab3 gb4 f4 eb4 db4 eb4 f4 db4@2 ~@3 f4, bb2@2 ~@3 db3@9 b2@2 bb2@2 ~@2 db2@3 ~@9, ~ ab3@8 ~ ab3@8 ~@11 ab3@2 ~@2 ab3@8 ~ db3@18 b2@4, ~@2 db4@7 ~@21 db4@2 ~@2 db4@7 ~ f3@12 ~@8 db4@2, ~@3 f4@6 ~@22 f4@2 ~@2 f4@6 ~ ab3@8 ~@11 ab3@2 ~]/8", // Db
  C: "[~@4 eb2 db2 eb2 f2 db2@2 [gb2,b2,eb3,gb3,b3,eb4]@4 [gb2,b2,eb3,gb3,b3,eb4] [b2,eb3,gb3,b3,eb4,gb4], bb2 ~@3, ~ ab3@8 ~@7, ~@2 db4@7 ~@7, ~@3 f4@6 ~@7]/2", // B
  D: "[gb2,b2,eb3,gb3,b3,eb4]@2 [gb2,b2,eb3,gb3,b3,eb4]!2 [bb2,db3,gb3,bb3,db4,gb4]@2 [bb2,db3,gb3,bb3,db4,gb4]!2", // B Gb
  E: "[bb2,db3,gb3,bb3,db4,gb4] ~@2 db3 [gb2,b2,eb3,gb3,b3,eb4]@2 [gb2,b2,eb3,gb3,b3,eb4] [b2,eb3,gb3,b3,eb4,gb4], ~ [bb2,gb3,bb3,db4,gb4]@3 ~@4", // Gb B Gb
  F: "[[gb3,bb3,db4,gb4] [bb2,db3,gb3,bb3,db4,gb4]@3 ~@2 f4 db4@2 f4@2 ab3 gb4 f4 eb4 db4 eb4 f4 db4@2 ~@8 eb2 db2 eb2 f2 ~@2 [db4,f4]@4 f4 db4@2 f4@2 ab3 gb4 f4 eb4 db4 eb4 f4 db4@2 ~@3 f4, ~@2 db3@8 b2@2 bb2@2 ~@2 db2@3 ~@9, ~@21 ab3@2 f4@2 ~ db4@7 ~ f3@12 ~@8 db4@2, ~@22 db4@2 ~ ab3@8 ~ db3@18 b2@4, ~@27 f4@6 ~ ab3@8 ~@11 ab3@2 ~]/7", // Gb Db
  G: "[~@4 eb2 db2 eb2 f2 ~@2 db4@3 ~ f4 db4@2 f4@2 ab3 gb4 f4 eb4 db4 eb4 f4 db4@2 ~@8 eb2 db2 eb2 f2 ~@2 [db4,f4]@4 f4 db4@2 f4@2 ab3 gb4 f4 eb4 db4 eb4 f4 db4@2 ~@3 f4, bb2@4 ~@4 db2@6 ~@21 f4@6 ~ ab3@8 ~@11 ab3@2 ~, ~ ab3@8 ~ db3@18 b2@4 bb2@4 ~@4 db2@6 ~@18, ~@2 db4@7 ~ f3@12 ~@8 db4@2 ~ ab3@8 ~ db3@18 b2@4, ~@3 f4@6 ~ ab3@8 ~@11 ab3@2 f4@2 ~ db4@7 ~ f3@12 ~@8 db4@2]/8", // Db
  H: "[~@4 eb2 db2 eb2 f2 db2@2 db4@3 ~ f4 db4@2 f4@2 ab3 gb4 f4 eb4 db4 eb4 f4 db4@2 ~@8 eb2 db2 eb2 f2 ~@2 [db4,f4]@4 f4 db4@2 f4@2 ab3 gb4 f4 eb4 db4 eb4 f4 db4@2 ~@3 f4, bb2@2 ~@3 db3@9 b2@2 bb2@2 ~@2 db2@3 ~@9, ~ ab3@8 ~ f3@12 ~@11 ab3@8 ~ db3@18 b2@4, ~@2 db4@7 ~ ab3@8 ~@11 ab3@2 f4@2 ~@2 f4@6 ~ ab3@8 ~@11 ab3@2 ~, ~@3 f4@6 ~@21 db4@2 ~@2 db4@7 ~ f3@12 ~@8 db4@2]/8", // Db
  I: "[~@4 eb2 db2 eb2 f2 db2@2 [eb3,gb3,b3,eb4]@4 [eb3,gb3,b3,eb4] [gb3,b3,eb4,gb4], bb2 ~@3, ~ ab3@8 ~@7, ~@2 db4@7 ~@7, ~@3 f4@6 ~@7]/2", // B
  J: "[eb3,gb3,b3,eb4]@2 [eb3,gb3,b3,eb4]!2 [gb3,bb3,db4,gb4]@2 [gb3,bb3,db4,gb4]!2", // B Gb
  K: "[gb3,bb3,db4,gb4] ~@2 db3 [eb3,gb3,b3,eb4]@2 [eb3,gb3,b3,eb4] [gb3,b3,eb4,gb4], ~ [gb3,bb3,db4,gb4]@3 ~@4", // Gb B Gb
  L: "[[gb3,bb3,db4,gb4] [gb3,bb3,db4,gb4]@3 ~@2 f4 db4@2 f4@2 ab3 gb4 f4 eb4 db4 eb4 f4 db4@2 ~@8 eb2 db2 eb2 f2 ~@2 [db3,f3,ab3,db4]@2 [b2,eb3,gb3,b3]@2 [b2,eb3,gb3,b3]!2, ~@2 db3@8 b2@2 bb2@2 ~@2 db2@3 ~, ~@21 ab3@2 f4@2 ~ db4@7 ~@7, ~@44 db4@4 ~@2 ab3@17 ~@13, ~@27 f4@6 ~@7]/5", // Gb Db B
  M: "[bb2,db3,gb3,bb3]@2 [bb2,db3,gb3,bb3]!2 eb3 db3 eb3 f3", // Gb
  N: "~@2 ab3 db4 [b2,eb3,gb3,b3]@2 [b2,eb3,gb3,b3]!2, db3 ~", O: "db3 ~@3",
  P: "[~@6 f4 db4@2 f4@2 ab3 gb4 f4 eb4 db4 eb4 f4 db4@2 ~@8 eb2 db2 eb2 f2 ~@2 db4@3 ~ f4 db4@2 f4@2 ab3 gb4 f4 eb4 db4 eb4 f4 db4@2 ~@3 f4, ~@2 db3@8 b2@2 bb2@2 ~@2 db2@3 ~@9, ~@4 f3@10 ~@8 db4@2 ~ ab3@8 ~ db3@18 b2@4, ~@4 ab3@6 ~@11 ab3@2 f4@2 ~ db4@7 ~ f3@12 ~@8 db4@2, ~@27 f4@6 ~ ab3@8 ~@11 ab3@2 ~]/7",
  Q: "[~@4 eb2 db2 eb2 f2 ~@2 [db4,f4]@4 f4 db4@2 f4@2 ab3 gb4 f4 eb4 db4 eb4 f4 db4@2 ~@8 eb2 db2 eb2 f2 db2@2 db4@3 ~ f4 db4@2 f4@2 ab3 gb4 f4 eb4 db4 eb4 f4 db4@2 ~@3 f4, bb2@4 ~@4 db2@6 ~@21 f4@6 ~@21 db4@2, ~ ab3@8 ~ db3@18 b2@4 bb2@4 ~@6 db3@18 b2@4, ~@2 db4@7 ~ f3@12 ~@8 db4@2 ~ ab3@8 ~ f3@12 ~@10, ~@3 f4@6 ~ ab3@8 ~@11 ab3@2 f4@2 ~ db4@7 ~ ab3@8 ~@11 ab3@2 ~]/8", // Db
  R: "[~@4 eb2 db2 eb2 f2 ~@2 [db4,f4]@4 f4 db4@2 f4@2 ab3 gb4 f4 eb4 db4 eb4 f4 db4@2 ~@8 eb2 db2 eb2 f2 db2@2 [eb3,gb3,b3,eb4]@4 [eb3,gb3,b3,eb4] [gb3,b3,eb4,gb4], bb2@4 ~@4 db2@6 ~@21 f4@6 ~@7, ~ ab3@8 ~ db3@18 b2@4 bb2@4 ~@12, ~@2 db4@7 ~ f3@12 ~@8 db4@2 ~ ab3@8 ~@7, ~@3 f4@6 ~ ab3@8 ~@11 ab3@2 f4@2 ~ db4@7 ~@7]/6", // Db B
  S: "db3@4 [b2,eb3,gb3,b3]@2 [b2,eb3,gb3,b3]!2", // B
  T: "[bb2,db3,gb3,bb3]@4 ~ [bb2,db3,gb3,bb3]@2 [bb2,db3,gb3,bb3]@2 eb3@3 db3@2 eb3@2", U: "[~ f3@2 db3@39 ~@6]/3",
})).s("gm_acoustic_guitar_steel").gain(0.35).pan(0.7)

// chords · rock organ · "Organ"
const rock_organ = note(`<
  ~@28 A@3 B C@3 D E@3 B C@3 D F@7 G H I J I K L M N O L M P O L M P O L M P Q ~@3 A@3 B C@3 D E@3 B C@3 D F@7 G H I J I
  J I J R S@3
>`.pickRestart({
  A: "[~ [db4,f4,ab4,db5]@9 [b3,eb4,gb4,b4]@2]/3", B: "[bb3,db4,gb4,bb4]@4 eb4 db4 eb4 f4",
  C: "[db4 [db4,f4,ab4,db5]@9 [gb4,b4,eb5,gb5]@2]/3", D: "[gb4,bb4,db5,gb5]@4 eb5 db5 eb5 f5",
  E: "[db5 [db4,f4,ab4,db5]@9 [b3,eb4,gb4,b4]@2]/3", // Db B
  F: "[db5 [eb4,gb4,b4,eb5]@5 [gb4,bb4,db5,gb5]@4 [eb4,gb4,b4,eb5]@4 [gb4,bb4,db5,gb5]@4 [db5,f5,ab5,db6]@8 [b4,eb5,gb5,b5]@2]/7", // B Gb B Gb Db B
  G: "[bb4,db5,gb5,bb5]@4 [eb4,eb5] [db4,db5] [eb4,eb5] [f4,f5]", H: "[db4,f4,ab4,db5,f5,ab5] [b3,eb4,gb4,b4,eb5,gb5]",
  I: "[bb3,db4,gb4,bb4,db5,gb5]@4 eb5 db5 eb5 f5", J: "[db5,f5,ab5] [b3,eb4,gb4,b4,eb5,gb5]",
  K: "[db5,f5,ab5]@8 [gb4,bb4,db5]@2 [ab4,b4,eb5]@2 [db6,eb6] [ab5,bb5,b5] [db5,eb5,gb5] [ab4,bb4,b4]", // Db Gb Abm Dbsus2 Abm Ebm7 Abm
  L: "[eb5,ab5,b5,eb6]@4 [ab5,b5,eb6]@2 [gb5,bb5,db6]@2 [ab4,b4,eb5,ab5]@2 [ab4,b4,eb5,ab5]!2 [db6,eb6] [ab5,bb5,b5] [db5,eb5,gb5] [ab4,bb4,b4], gb4 ~@15", // Abm Gb Abm Dbsus2 Abm Ebm7 Abm
  M: "[eb5,ab5,b5,eb6]@2 [ab5,b5,eb6] [gb5,bb5,db6] [eb5,gb5,b5,eb6]@4, gb4 ~@15", // Abm Gb B
  N: "[db5,f5,ab5,db6,f6]@8 [ab5,b5,eb6,ab6] ~ eb6@2 [gb5,bb5,db6,gb6]@2 db6@2", // Db Abm Gb
  O: "[b5,eb6,gb6,b6]@2 ab6@2 [gb5,bb5,db6,gb6,bb6]@2 gb6@2 [gb4,bb4,db5]@2 [ab4,b4,eb5]@2 [db6,eb6] [ab5,bb5,b5] [db5,eb5,gb5] [ab4,bb4,b4]", // B Gb Abm Dbsus2 Abm Ebm7 Abm
  P: "[db5,f5,ab5,db6,f6]@8 eb6 [ab5,b5,eb6,ab6] eb6@2 [gb5,bb5,db6,gb6]@2 db6@2", // Db Abm Gb
  Q: "[b5,eb6,gb6,b6] ab6 [gb5,bb5,db6,gb6,bb6] gb6 ~@4", R: "[bb3,db4,gb4,bb4,db5,gb5]@9 eb5@2 ~ db5@2 eb5@2",
  S: "[f5@2 ~ [db5,f5,ab5]@39 ~@6]/3", // Db
})).s("gm_rock_organ").gain(0.64).pan(0.3)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@28 A B C D E B C D E B C D E B C D F G H I J B C D K D L D M N O P Q N O P Q N O P Q N O P R@3 ~ A B C D E B C D E B
  C D E B C D F G H I J B C D K D L D S D S T U@3
>`.pickRestart({
  A: "~@2 db2@4 db2 ab1", B: "~ db2@2 ab1 gb1 ab1 b1 ab1", C: "db2 b1", D: "bb1@4 eb2 db2 eb2 f2",
  E: "db2@2 db2@4 db2 ab1", F: "db2@2 b1@4 gb1!2", G: "b1@2 eb2@2 db2@3 gb1", H: "db2@2 db2@2 b1@3 gb1",
  I: "b1 eb2 db2@2", J: "db2 ab1@3 db2@2 db2 ab1", K: "db2@3 ~ db2@2 db2@2 b1@8", L: "db2@2 db2!2 b1@4",
  M: "db2!2 ab1!2 gb1 ab1 ~ ab1", N: "ab1@2 ab1!2 gb1 ab1 ~ ab1", O: "ab1@2 ab1!2 b1@4", P: "gb1@4 gb1 ab1 b1 ab1",
  Q: "gb2 ab1 b1 gb1!2 ab1 ~ ab1", R: "[gb2 ab1 b1 gb1 db2@16 ~@4]/3", S: "db2!2 ab1!2 b1@4",
  T: "bb1@9 eb2@2 ~ db2@2 eb2@2", U: "[~ f2@2 db2@39 ~@6]/3",
})).s("gm_electric_bass_finger").gain(0.64)

// chords · distortion guitar · "Dis Guitar"
const distortion_guitar = note("<~@56 A B C D E B C D F B C D F B C D G ~@38>".pickRestart({
  A: "~@4 [gb2,gb3,bb3] [ab2,ab3] ~ [ab2,ab3]", // Gb Ab
  B: "[b2,ab3,b3,eb4]@2 [ab2,ab3,b3] [ab2,ab3] [gb2,gb3,bb3] [ab2,ab3] ~ [ab2,ab3]", // Abm Ab Gb Ab
  C: "[b2,ab3,b3,eb4]@2 [ab2,ab3,b3] [ab2,ab3] [b2,ab3,b3]@4", // Abm Ab E
  D: "[gb2,gb3,db4]@4 [gb2,gb3] [ab2,ab3] [b2,b3] [ab2,ab3]", // Gb5 Gb Ab B Ab
  E: "[gb3,gb4] [ab2,ab3] ~ gb3 [gb2,gb3,bb3] [ab2,ab3] ~ [ab2,ab3], ~@2 [b2,b3] ~@5, ~@5 gb2@2 ~@9", // Gb Ab Gb Ab B
  F: "[gb3,gb4] [ab2,ab3] [b2,b3] [gb2,gb3] [gb2,gb3,bb3] [ab2,ab3] ~ [ab2,ab3]", // Gb Ab B Gb Ab
  G: "[gb3,gb4] [ab2,ab3] [b2,b3] [gb2,gb3] ~@4", // Gb Ab B Gb
})).s("gm_distortion_guitar").gain(0.55).pan(0.7)

// other · overdriven guitar · "Lead Guitar"
const overdriven_guitar = note("<~@64 A B C D E@2 F G H ~@38>".pickRestart({
  A: "ab5!2", B: "gb5@4 b4 db5 eb5 b4", C: "ab4@8 ab4@2 gb4@2 eb4 ~@3", D: "b4@2 bb4@2 ab4 gb4 eb4 b3",
  E: "[ab4@4 ab4 bb4 b4 ab5@2 eb5 db5 b4 eb5 gb5 b5 bb5]/2", F: "ab5@2 gb5@2 eb5 db5 b4@2 b5@2 bb5@2 db6@2 b5@2",
  G: "bb5@2 gb5 eb5 gb4 ab4 b4 ab4", H: "gb5 ab4 b4 gb4 ~@4",
})).s("gm_overdriven_guitar").gain(0.72).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@28 A B C ~ D B C ~ D B C ~ D B C ~ E C F@2 G B C ~ H I J I K L M N O L M N O L M N O L M P Q ~@3 A B C ~ D B C ~ D B
  C ~ D B C ~ E C F@2 G B C ~ H I J I J I J R ~@3
>`.pickRestart({
  A: "~@2 x ~@4 x", B: "~@2 x!2", C: "~ x", D: "x ~ x ~@4 x", E: "x ~ x ~@3 x!2", F: "~@4 x ~@2 x",
  G: "~ x!2 ~ x ~@2 x", H: "x!2", I: "~@4 x!2 ~@2", J: "~ x ~@2 x ~@3", K: "~ x ~@2 x!2 ~ x", L: "~@4 x!2 ~ x",
  M: "~@2 x!3 ~@3", N: "x ~@3 x!2 ~ x", O: "~@2 x ~ x!2 ~ x", P: "x ~@4 x ~ x", Q: "x!3 ~", R: "~@9 x ~@2 x ~@3",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct(`<
  ~@29 A B C ~ A B C ~ A B C ~ A B C ~ A@3 D A B C ~ A E A E B A F ~ B A F ~ B A F ~ B A G H ~@4 A B C ~ A B C ~ A B C ~
  A B C ~ A@3 D A B C ~ A E A E A E A I ~@2
>`.pickRestart({
  A: "x", B: "x ~ x!2 ~@4", C: "x ~@3 x!2 ~@2", D: "x ~@2 x ~@4", E: "x!2 ~@2", F: "~@3 x", G: "~@2 x!2", H: "x!3 ~@13",
  I: "~@3 x ~@12",
})).gain(0.64)

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

// drums · low tom
const low_tom = s("lt").struct("<~@52 A ~@6 B ~@3 B ~@3 B ~@3 B ~@28 A ~@10>".pickRestart({
  A: "~ x ~@6", B: "~@3 x ~@4",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@31 A ~@3 A ~@3 A ~@3 A ~@7 A B ~ C ~ C ~ D E F ~ D E F ~ D E F ~ D E ~@7 A ~@3 A ~@3 A ~@3 A ~@7 A B ~ C ~ C ~ C ~@4
>`.pickRestart({
  A: "~@6 x!2", B: "~@2 x!2 ~@4", C: "~@3 x ~@4", D: "~@7 x", E: "~ x!2 ~@5", F: "~@4 x!3 ~@9",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@30 A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A@2 B ~@3 C D B ~ E D B ~ E D B ~ E D B ~ F ~@5 A ~ B ~ A ~ B ~ A ~ B ~ A
  ~ B ~ A ~ B ~ A@2 B ~@10
>`.pickRestart({
  A: "~ x", B: "x", C: "~@5 x ~@2", D: "x ~@4 x ~@2", E: "~@2 x ~@2 x ~@2", F: "x ~ x!2 ~@4",
})).gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<~@58 A ~ B ~ A ~ B ~ A ~ B ~ A ~@40>".pickRestart({
  A: "~@5 x!2 ~", B: "x!3 ~@13",
})).gain(0.64)

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

// drums · ride bell
const ride_bell = s("rd").struct("<~@64 A B C ~ A B C ~@40>".pickRestart({
  A: "~@3 x", B: "x!2 ~ x", C: "x!2 ~@2",
})).gain(0.8)

// drums · tambourine
const tambourine = s("tb").struct("<~@28 A B@7 C B@7 D B@11 E ~@19 A B@7 C B@7 D B@14 F G ~@2>".pickRestart({
  A: "~@5 x!3", B: "x!8", C: "x!2 ~@3 x!3", D: "x!2 ~ x!5", E: "x!4 ~@4", F: "x ~ x ~@2 x ~ x ~ x ~@2 x ~ x ~", G: "x",
})).gain(0.4)

stack(
  acoustic_guitar_steel, rock_organ, bass, distortion_guitar, overdriven_guitar, kick, snare, hihat, low_tom, mid_tom,
  open_hat, high_tom, crash, ride_bell, tambourine
)

More by Uriah Heep