Strudelify
Iron Man cover art

1980 · Paranoid

Iron Man

Black Sabbath

KeyE♭ minorTempo118 bpm
0:00/0:00
// Iron Man — Black Sabbath
// 118 bpm, 4/4, key D# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 8 "Elec Guitar" named as a guitar, played on electric guitar clean (its lead 5 charang patch is not one)
// note: Full arrangement: all 151 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Elec Guitar (intro 1).
setcpm(118/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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.

// other · overdriven guitar · "Solo Guitar"
const overdriven_guitar = note("<~@86 A B@2 C D@2 E F G@2 H@2 ~@53>".pickRestart({
  A: "b3 c4 eb4!2 c4 bb3 c4 eb4",
  B: "[c5 bb4 g4 gb4 g4 bb4 c5 eb5 c5 bb4 gb4 g4 eb4@2 c5@4 eb5@2 c5@4 eb5@2 c5@2 c5 bb4 c5 bb4]/2",
  C: "c5 eb5 c5 bb4 c5 bb4 c5 bb4 c5 eb5 c5 gb4 g4 gb4 g4 gb4",
  D: "[eb5 c5 bb4 eb5 c5 bb4 eb5 c5 bb4 eb5 c5 bb4 eb5 c5 bb4@4 g5@3 c5@3 g5@3 c5@3 g5 gb5]/2",
  E: "g5 gb5 g5 gb5 g5 c5 bb4 g4 gb4 c5 bb4 g4 gb4 c4 bb3 c4", F: "bb3 c4 eb4 c4 bb3 eb4 c4 bb3 eb4 c4 bb3 c4@5",
  G: "[c4@3 c4@3 c4@3 c4@3 c4@2 c4@2]/2", H: "[c4@3 c4@3 c4@3 c4@3 c4@4]/2",
})).s("gm_overdriven_guitar").gain(0.48).pan(0.3)

// other · overdriven guitar · "Elec Guitar (intro 2)"
const overdriven_guitar_2 = note("<~@4 [eb3!2]!6 ~@141>").s("gm_overdriven_guitar").gain(0.36).pan(0.2)

// bass · synth bass 2 · "Bass"
const bass = note(`<
  ~@14 A B C B A B C B D@2 E F D@2 E F D@2 G ~ A B C B A B C B H@2 I J K L K M H@2 I J K L K M A B C B A B C B H@2 I J K
  L K M H@2 I J K L K M N O N O P@3 Q R@2 S T U@2 V W N O N O K L K M A B C B A B C B D@2 E F D@2 E F D@2 X ~ Y Z@11 AA
  AB AC AD AE AB AC AD AF AG ~ AH AI
>`.pickRestart({
  A: "bb1 db2", B: "db2 eb2 eb2@2", C: "gb2 f2 gb2 f2 gb2 f2 db2@2", D: "[bb1 bb1@2 db2@2 bb1@2 a1]/2",
  E: "ab1@2 ab1@2 ab1@3 eb2", F: "ab2 gb2 ab2 gb2 ab2 gb2 eb2 db2", G: "ab1@4 ab1@4 ab1@3 ~@5",
  H: "[eb2@2 eb2@2 bb2@2 eb3@3 db3 bb2 a2 ab2 gb2@2 ~]/2", I: "db2!2 db2@2 db2@4", J: "db3 b2 ab2 db3 ~ b2 ab2 gb2",
  K: "bb1@2 bb1@2 db2 d2 eb2@2", L: "eb2 e2 f2@2 g2 a2 bb2@2", M: "eb2 e2 f2@2 ab2 a2 bb2@2",
  N: "c3 bb2 ~ g2 ~ gb2 ~ f2", O: "~ eb2 ~ bb1!2 c2!2 ~", P: "c2!6 bb1 b1", Q: "c2 c3 bb2 g2 gb2 f2 eb2@2",
  R: "c3!6 bb2 b2", S: "c3 g3 gb3 f3 eb3 c3 bb2!2", T: "g2 gb2 f2 eb2 db2 c2 bb1!2", U: "c2!8", V: "c3!7 eb3",
  W: "c3 bb2 g2 gb2 eb2 d2 db2 c2", X: "ab1@2 ab1@2 ab1 ~@3", Y: "eb2@2 eb2@2 eb2!12", Z: "eb2!16",
  AA: "eb2!12 eb2@2 eb2@2", AB: "eb2!12 db2@2 db2@2", AC: "db2!12 eb2@2 eb2@2", AD: "eb2!12 f2!3 gb2",
  AE: "gb2!2 f2!2 gb2!3 f2!3 db2@2 eb2@2 eb2@2", AF: "gb2!2 f2!2 gb2!3 f2!3 db2@2 eb2@2 db2@2", AG: "eb2 ~@7",
  AH: "~@3 eb1@5", AI: "~ eb2@2 ~@13",
})).s("gm_synth_bass_2").gain(0.64).pan(0.4)

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

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

// drums · ride
const ride = s("rd").struct(`<
  ~@14 A B C ~ A B ~ D A ~ A E A ~ A E A ~ F ~ A B C ~ A B ~ D A ~ A G H ~ H I A ~ A G H ~ H I A B C ~ A B ~ D A ~ A G H
  ~ H I A ~ A G H ~ H I ~ J ~@2 K@12 ~ J ~@2 H ~ H I A B C ~ A B ~ D A ~ A E A ~ A E A ~ F ~@4 E K F E K F E K F E K@2 F
  L K@2 F M A ~@2 N
>`.pickRestart({
  A: "x", B: "~@5 x ~@2", C: "~@15 x", D: "x ~@2 x", E: "~@3 x", F: "x!3 ~", G: "~ x", H: "x!2 ~@2", I: "~@4 x!3 ~",
  J: "~@5 x ~ x", K: "x!4", L: "~@5 x!2 ~", M: "~@5 x!3", N: "~ x ~@14",
})).gain(0.72)

// drums · splash
const splash = s("cr").struct(`<
  ~@14 A B@3 A B@2 C A B A D A B A D A B ~@2 A B@3 A B@2 C A E A B F G F H A E A B F G F H A B@3 A B@2 C A E A B F G F H
  A E A B F G F H I J I K ~@3 L ~@3 L ~@3 L I J I K F G F H A B@3 A B@2 C A B A D A B A D A B ~@17 M N ~@2 M N ~@4
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "~ x!2 ~", D: "x!3 ~", E: "x ~ x ~ x ~ x!2", F: "~ x", G: "x ~ x!2", H: "x!2 ~@2",
  I: "x!2 ~ x ~ x ~ x", J: "~ x ~ x!2 ~ x ~", K: "~ x ~ x!4 ~", L: "~@7 x ~@3 x ~@3 x", M: "~@7 x", N: "x!5 ~@3",
})).gain(0.4)

stack(overdriven_guitar, overdriven_guitar_2, bass, kick, snare, ride, splash)

More by Black Sabbath