Strudelify

Revelations

Iron Maiden

KeyA minorTempo160 bpm
0:00/0:00
// Revelations — Iron Maiden
// 160 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 169 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(160/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · distortion guitar · "Rhythm Guitar"
const distortion_guitar = note(`<
  A@4 B@4 C@4 D@8 E F G H I F G H I F G H I F G H I F G H I F G J ~@15 K@2 L@3 K M@3 N O P Q R S T U V W T X Y ~@23 Z AA
  AB AC AD AA AB AC AD ~@19 Z AA AB AC AD AA AB AC AD AE AF Q R S T U V AG AH AI@2 AJ AK AL AM AN AO AP AQ AR AS AT@3 AH
  AU@2
>`.pickRestart({
  A: "[~@19 [g2,d3,g3]@3 ~ [a2,e3,a3]@6 [g2,d3,g3]@3 ~ [a2,e3,a3]@26 ~ [g3,c4]@3 ~ [a3,c4]@3 [g3,c4]@3 ~ e3@15 ~@5 [c3,g3,c4]@5]/4", // G5 A5 G5 A5 C5 Am C5
  B: "[~@5 [d3,a3,d4]@26 ~@2 [g2,d3,g3]@3 [a2,e3,a3]@6 ~ [g2,d3,g3]@3 ~ [a2,e3,a3]@26 ~ [g3,c4]@3 [a3,c4]@3 ~ [g3,c4]@3 e3@12]/4", // D5 G5 A5 G5 A5 C5 Am C5
  C: "[~@9 [c3,g3,c4]@6 ~@4 [d3,a3,d4]@26 ~@2 [g2,d3,g3]@3 [a2,e3,a3]@6 ~ [g2,d3,g3]@3 [a2,e3,a3]@26 ~@2 [g3,c4]@3 [a3,c4]@3 ~ [g3,c4]]/4", // C5 D5 G5 A5 G5 A5 C5 Am …
  D: "[~@2 e3@15 ~@6 [c3,g3,c4]@6 ~@4 [d3,a3,d4]@26 ~ [g2,d3,g3]@3 ~ [a2,e3,a3]@6 ~ [g2,d3,g3]@3 [a2,e3,a3]@26 ~ [g3,c4]@3 ~ [a3,c4]@3 [g3,c4]@3 ~ e3@15 ~@5 [c3,g3,c4]@6 ~@5 [d3,a3,d4]@49]/8", // C5 D5 G5 A5 G5 A5 C5 Am …
  E: "~@19 [a2,e3,a3]@5", F: "~ [a2,e3,a3]@5 ~@13 [f2,c3,f3]@5", G: "~ [f2,c3,f3]@5 ~@13 [g2,d3,g3]@5",
  H: "~ [g2,d3,g3]@5 ~@13 [a2,e3,a3]@5", I: "~ [a2,e3,a3]@5 ~@4 [g2,d3,g3]@5 ~@4 [a2,e3,a3]@5",
  J: "~ [g2,d3,g3]@5 ~@18", K: "~@13 [a2,e3,a3]@3 g2@3 [a2,e3,a3]@3 ~@2",
  L: "[~@19 [g2,d3,g3]@11 ~ [d3,a3,d4]@11 ~@4 [f2,c3,f3]@8 ~ [g2,d3,g3]@5 ~ [a2,e3,a3]@3 g2@3 [a2,e3,a3]@3 ~@2]/3", // G5 D5 F5 G5 A5
  M: "[~@19 [g2,d3,g3]@11 ~ [d3,a3,d4]@11 ~@4 [f2,c3,f3]@8 ~ [g2,d3,g3]@5 ~ [a2,e3,a3]@3 g2@3 [a2,e3,a3]@4 ~]/3", // G5 D5 F5 G5 A5
  N: "a2@2 [a2,e3]@2 ~ a2@2 a2@2 ~ [a2,e3,a3]@2 g2@2 [a2,e3,a3]@4 ~ a2@2 ~ [a2,e3]@2", // A5
  O: "a2@2 a2@2 ~ [a2,e3,a3]@2 g2@2 ~ [g2,d3,g3]@4 g2@2 ~ g2@2 [d3,a3,d4]@4 ~", // A5 G5 D5
  P: "d3@2 d3@2 ~ [f2,c3,f3]@4 ~ f2@2 f2@2 [g2,d3,g3]@4 ~ [a2,e3,a3]@2 ~ g2@2", // F5 G5 A5
  Q: "[a2,e3,a3]@4 ~ a2@2 [a2,e3]@2 ~ a2@2 a2@2 [a2,e3,a3]@2 ~ g2@2 [a2,e3,a3]@4 ~", // A5
  R: "a2@2 [a2,e3]@2 ~ a2@2 a2@2 ~ [a2,e3,a3]@2 g2@2 [g2,d3,g3]@4 ~ g2@2 ~ g2@2", // A5 G5
  S: "[d3,a3,d4]@4 ~ d3@2 d3@2 ~ [f2,c3,f3]@4 f2@2 ~ f2@2 [g2,d3,g3]@4 ~", // D5 F5 G5
  T: "[a2,e3,a3]@2 g2@2 ~ [a2,e3,a3]@4 ~ a2@2 [a2,e3]@2 a2@2 ~ a2@2 [a2,e3,a3]@2 ~ g2@2", // A5
  U: "[a2,e3,a3]@4 ~ a2@2 [a2,e3]@2 ~ a2@2 a2@2 [a2,e3,a3]@2 ~ g2@2 [g2,d3,g3]@4 ~", // A5 G5
  V: "g2@2 g2@2 ~ [d3,a3,d4]@4 ~ d3@2 d3@2 [f2,c3,f3]@4 ~ f2@2 ~ f2@2", // D5 F5
  W: "[g2,d3,g3]@4 ~ [a2,e3,a3]@2 g2@2 ~ [a2,e3,a3]@4 a2@2 ~ [a2,e3]@2 a2@2 ~ a2@2", // G5 A5
  X: "[g2,d3,g3]@11 ~ [d3,a3,d4]@11 ~", Y: "[f2,c3,f3]@11 ~ [g2,d3,g3]@11 ~",
  Z: "[c3,e3]@5 ~ [d3,f3]@3 [c3,e3]@3 [b2,d3]@5 ~ [g2,b2]@5 ~", // C Dm C Bm G
  AA: "[a2,e3,a3]@5 ~ [a2,e3,a3]@3 [a2,e3,a3]@3 [a2,e3,a3]@3 g2@8 ~", // A5
  AB: "[a2,e3,a3]@5 ~ [a2,e3,a3]@3 [a2,e3,a3]@3 [a2,e3,a3]@3 [c3,g3,c4]@3 ~@6", AC: "[d3,a3,d4]@23 ~",
  AD: "[f2,c3,f3]@5 ~ [f2,c3,f3]@3 [f2,c3,f3]@3 [g2,d3,g3]@5 ~ [g2,d3,g3]@3 [g2,d3,g3]@3", AE: "[a2,e3,a3]@23 ~",
  AF: "~@6 [a2,e3,a3] g2", AG: "[g2,d3,g3]@4 ~ [b3,e4]@2 [a3,d4]@2 ~ [b3,e4]@4 a2@2 ~ a2@2 a2@2 ~ a2@2",
  AH: "[c4,f4]@2 [b3,e4]@2 ~ [a3,d4]@4 ~ a2@2 [a3,d4]@2 a2@2 ~ a2@2 [a3,d4]@2 ~ [g3,c4]@2", // F5 E5 D5 C5
  AI: "[a2@2 [a3,d4]@4 ~ a2@2 ~ [g3,c4]@2 a2@2 [f#3,b3]@2 ~ a2@2 [a2,e3,a3]@13 ~@2 [b3,e4]@2 [a3,d4]@2 [b3,e4]@4 ~ a2@2 ~ a2@2]/2", // D5 C5 B5 A5 E5 D5 E5
  AJ: "a2@2 a2@2 ~ [c4,f4]@2 [b3,e4]@2 ~ [a3,d4]@4 a2@2 ~ [a3,d4]@2 a2@2 ~ a2@2", // F5 E5 D5
  AK: "[a3,d4]@2 [g3,c4]@2 ~ a2@2 [a3,d4]@4 ~ a2@2 [g3,c4]@2 ~ a2@2 [f#3,b3]@2 ~ a2@2", // D5 C5 D5 C5 B5
  AL: "[a2,e3,a3]@13 ~ [b3,e4]@2 ~ [a3,d4]@2 [b3,e4]@4 ~", // A5 E5 D5 E5
  AM: "a2@2 a2@2 ~ a2@2 a2@2 ~ [c4,f4]@2 [b3,e4]@2 [a3,d4]@4 ~ a2@2 ~ [a3,d4]@2", // F5 E5 D5
  AN: "a2@2 a2@2 ~ [a3,d4]@2 [g3,c4]@2 ~ a2@2 [a3,d4]@4 ~ a2@2 [g3,c4]@2 ~ a2@2", // D5 C5 D5 C5
  AO: "[f#3,b3]@2 a2@2 ~ [a2,e3,a3]@13 ~ [b3,e4]@2 ~ [a3,d4]@2", // B5 A5 E5 D5
  AP: "[b3,e4]@4 ~ a2@2 a2@2 ~ a2@2 a2@2 [c4,f4]@2 ~ [b3,e4]@2 [a3,d4]@4 ~", // E5 F5 E5 D5
  AQ: "a2@2 [a3,d4]@2 ~ a2@2 a2@2 ~ [a3,d4]@2 [g3,c4]@2 a2@2 ~ [a3,d4]@4 ~ a2@2", // D5 C5 D5
  AR: "[g3,c4]@2 a2@2 ~ [f#3,b3]@2 a2@2 ~ [a2,e3,a3]@13 ~", // C5 B5 A5
  AS: "[b3,e4]@2 [a3,d4]@2 ~ [b3,e4]@4 ~ a2@2 a2@2 a2@2 ~ a2@2 [c4,f4]@2 ~ [b3,e4]@2", // E5 D5 E5 F5 E5
  AT: "[[a3,d4]@4 ~ a2@2 [a3,d4]@2 ~ a2@2 a2@2 [a3,d4]@2 ~ [g3,c4]@2 a2@2 ~ [a3,d4]@4 a2@2 ~ [g3,c4]@2 a2@2 ~ [f#3,b3]@2 a2@2 [a2,e3,a3]@13 ~@2 [b3,e4]@2 [a3,d4]@2 ~ [b3,e4]@4 a2@2 ~ a2@2 a2@2 ~ a2@2]/3", // D5 C5 D5 C5 B5 A5 E5 D5 …
  AU: "[a2@2 [a3,d4]@4 ~ a2@2 ~ [g3,c4]@2 a2@2 [f#3,b3]@2 ~ a2@2 [a2,e3,a3]@13 ~@16]/2", // D5 C5 B5 A5
})).s("gm_distortion_guitar").gain(0.72)

// other · distortion guitar · "Lead Guitar"
const distortion_guitar_2 = note("<~@43 A@4 B@4 C@8 D ~@7 E@3 F G@2 H I J K L I M N ~@88>".pickRestart({
  A: "[~@13 a4@3 g4@3 a4@17 ~ a4@3 g4@3 f4@17 ~ g4@3 f4@3 e4@8 ~ d4@3 c4@5 ~ b3@5 ~ a4@3 g4 a4]/4",
  B: "[g4 f4@3 e4@3 f4@3 e4@3 a4@3 g4@3 a4@17 ~ a4@3 g4@3 f4@17 ~ g4@3 f4@3 e4@8 ~ d4@3 c4@5 ~ b3@5 ~ a4@3 g4 a4]/4",
  C: "[g4 f4@3 e4@3 f4@3 e4@3 c5@3 b4@3 c5@17 ~ c5@3 b4@3 a4@17 ~ g4@3 c5@3 g4@8 ~ f4@3 e4@5 ~ d4@5 ~ a4@3 g4 a4]/4",
  D: "g4 f4@3 e4@3 f4@3 e4@3 ~@11",
  E: "[~@13 e5@3 d5@3 e5@13 ~@2 e5@2 d5@2 e5@13 ~@2 e5@2 d5@2 ~ e5@4 d5@2 ~ c5@2 d5@4 ~]/3",
  F: "c5@2 b4@2 ~ c5@4 ~ b4@2 a4@2 b4@4 ~ e5@2 ~ d5@2",
  G: "[e5@13 ~ e5@2 ~ d5@2 e5@13 ~@2 e5@2 d5@2 e5@4 ~ d5@2 ~ c5@2]/2", H: "d5@4 ~ c5@2 b4@2 ~ c5@4 b4@2 ~ a4@2 b4@4 ~",
  I: "e5@2 d5@2 ~ e5@13 ~ e5@2 ~ d5@2", J: "e5@13 ~ e5@2 ~ d5@2 e5@4 ~",
  K: "d5@2 c5@2 ~ d5@4 ~ c5@2 b4@2 c5@4 ~ b4@2 ~ a4@2", L: "b4@4 ~ e5@2 d5@2 ~ e5@13 ~", M: "e5@11 ~ d5@11 ~",
  N: "c5@11 ~ b4@11 ~",
})).s("gm_distortion_guitar").gain(0.72)

// other · distortion guitar · "Harmony Guitar"
const distortion_guitar_3 = note("<~@43 A@4 B@12 C ~@7 D@3 E F@2 G H I J K H L M ~@88>".pickRestart({
  A: "[~@13 e4@3 d4@3 e4@17 ~ f4@3 e4@3 d4@17 ~ e4@3 d4@3 c4@8 ~ b3@3 a3@5 ~ g3@5 ~ f4@3 e4 f4]/4",
  B: "[e4 d4@3 c4@3 d4@3 c4@3 e4@3 d4@3 e4@17 ~ f4@3 e4@3 d4@17 ~ e4@3 d4@3 c4@8 ~ b3@3 a3@5 ~ g3@5 ~ f4@3 e4 f4]/4",
  C: "e4 d4@3 c4@3 d4@3 c4@3 ~@11",
  D: "[~@13 c5@3 b4@3 c5@13 ~@2 c5@2 b4@2 c5@13 ~@2 c5@2 b4@2 ~ c5@4 b4@2 ~ a4@2 b4@4 ~]/3",
  E: "a4@2 g4@2 ~ a4@4 ~ g4@2 f4@2 g4@4 ~ c5@2 ~ b4@2",
  F: "[c5@13 ~ c5@2 ~ b4@2 c5@13 ~@2 c5@2 b4@2 c5@4 ~ b4@2 ~ a4@2]/2", G: "b4@4 ~ a4@2 g4@2 ~ a4@4 g4@2 ~ f4@2 g4@4 ~",
  H: "c5@2 b4@2 ~ c5@13 ~ c5@2 ~ b4@2", I: "c5@13 ~ c5@2 ~ b4@2 c5@4 ~",
  J: "b4@2 a4@2 ~ b4@4 ~ a4@2 g4@2 a4@4 ~ g4@2 ~ f4@2", K: "g4@4 ~ c5@2 b4@2 ~ c5@13 ~", L: "c5@11 ~ b4@11 ~",
  M: "a4@11 ~ g4@11 ~",
})).s("gm_distortion_guitar").gain(0.72)

// bass · electric bass finger · "Electric Bass"
const bass = note(`<
  A@4 B@3 C@8 D@6 E F G H E F G H I J K H I J K H I J K H I J L@4 M@4 N@4 M@4 O P Q@3 P R@3 S T U V W X Y Z AA AB Y AC
  AD AE AF AG AH AE AI AJ AK AE AF AG AL AE AI AJ AK AE AF AG AH AE AI AJ AK AM AN AO AD AM AN AO AD AE AF AG AH AE AI
  AJ AK AE AF AG AL AE AI AJ AK AE AF AG AH AM AN AO AD AM AN AO AD AP ~@27
>`.pickRestart({
  A: "[~@19 g1@3 ~ a1@6 g1@3 ~ a1@26 ~ g2@3 ~ a2@3 g2@3 ~ e2@15 ~@5 c2@5]/4",
  B: "[~@5 d2@26 ~@2 g1@3 a1@6 ~ g1@3 ~ a1@25]/3",
  C: "[~@2 g2@3 a2@3 ~ g2@3 e2@15 ~@6 c2@6 ~@4 d2@26 ~@2 g1@3 a1@6 ~ g1@3 a1@26 ~@2 g2@3 a2@3 ~ g2@3 e2@15 ~@6 c2@6 ~@4 d2@26 ~ g1@3 ~ a1@6 ~ g1]/8",
  D: "[~@2 a1@26 ~ g2@3 ~ a2@3 g2@3 ~ e2@15 ~@5 c2@6 ~@5 d2@50 ~@18 a1@5]/6", E: "~ a1@5 ~@13 f1@5",
  F: "~ f1@5 ~@13 g1@5", G: "~ g1@5 ~@13 a1@5", H: "~ a1@5 ~@4 g1@5 ~@4 a1@5", I: "~ a1@5 ~@4 c2@8 ~ f1@5",
  J: "~ f1@5 ~@4 c2@8 ~ g1@5", K: "~ g1@5 ~@4 c2@8 ~ a1@5",
  L: "[~ g1@5 ~@4 c2@8 ~ a2@17 ~ d2@3 e2@3 f2@17 ~ d2@3 e2@3 c2@23 ~ c2@3 d2@2]/4",
  M: "[~ c2@3 b1@5 ~ a1@3 g1@5 ~ a2@17 ~ d2@3 e2@3 f2@17 ~ g2@3 a2@3 g2@23 ~ c3@3 d3@2]/4",
  N: "[~ c3@3 b2@5 ~ a2@3 g2@5 ~ a2@17 ~ d2@3 e2@3 f2@17 ~ d2@3 e2@3 c2@23 ~ c2@3 d2@2]/4",
  O: "~ c3@3 b2@5 ~ a2@3 a1@3 g1@3 a1@3 ~@2", P: "~@13 a1@3 g1@3 a1@3 ~@2",
  Q: "[~@19 g1@11 ~ d2@11 ~@4 f1@8 ~ g1@5 ~ a1@3 g1@3 a1@3 ~@2]/3",
  R: "[~@19 g1@11 ~ d2@11 ~@4 f1@8 ~ g1@5 ~ a1@3 g1@3 a1@2 ~ a1@2]/3",
  S: "a1@2 a1@2 ~ a1@2 a1@2 ~ a1@2 g1@2 a1@2 ~ a1@2 a1@2 ~ a1@2",
  T: "a1@2 a1@2 ~ a1@2 g1@2 ~ g1@2 g1@2 g1@2 ~ g1@2 d2@2 ~ d2@2",
  U: "d2@2 d2@2 ~ f1@2 f1@2 ~ f1@2 f1@2 g1@2 ~ g1@2 a1@2 ~ g1@2",
  V: "a1@2 a1@2 ~ a1@2 a1@2 ~ a1@2 a1@2 a1@2 ~ g1@2 a1@2 ~ a1@2",
  W: "a1@2 a1@2 ~ a1@2 a1@2 ~ a1@2 g1@2 g1@2 ~ g1@2 g1@2 ~ g1@2",
  X: "d2@2 d2@2 ~ d2@2 d2@2 ~ f1@2 f1@2 f1@2 ~ f1@2 g1@2 ~ g1@2",
  Y: "a1@2 g1@2 ~ a1@2 a1@2 ~ a1@2 a1@2 a1@2 ~ a1@2 a1@2 ~ g1@2",
  Z: "a1@2 a1@2 ~ a1@2 a1@2 ~ a1@2 a1@2 a1@2 ~ g1@2 g1@2 ~ g1@2",
  AA: "g1@2 g1@2 ~ d2@2 d2@2 ~ d2@2 d2@2 f1@2 ~ f1@2 f1@2 ~ f1@2",
  AB: "g1@2 g1@2 ~ a1@2 g1@2 ~ a1@2 a1@2 a1@2 ~ a1@2 a1@2 ~ a1@2", AC: "g1@11 ~ d2@11 ~", AD: "f1@11 ~ g1@11 ~",
  AE: "a2@17 ~ d2@3 e2@3", AF: "f2@17 ~ d2@3 e2@3", AG: "c2@23 ~", AH: "c2@3 d2@3 c2@3 b1@5 ~ a1@3 g1@5 ~",
  AI: "f2@17 ~ g2@3 a2@3", AJ: "g2@23 ~", AK: "c3@3 d3@3 c3@3 b2@5 ~ a2@3 g2@5 ~",
  AL: "d2@3 c2@2 ~@4 b1@5 ~ a1@3 g1@5 ~", AM: "a1@5 ~ a1@3 a1@3 a1@3 g1@8 ~", AN: "a1@5 ~ a1@3 a1@3 a1@3 c2@3 ~@6",
  AO: "d2@11 ~ d2@3 c2@3 a1@3 g1@3", AP: "a1@23 ~",
})).s("gm_electric_bass_finger").gain(0.72)

// other · acoustic guitar steel · "Clean Electric Guitar"
const acoustic_guitar_steel = note(`<
  ~@43 A B C D E B C D E B C D E B C F ~@22 G H I J G H I J G H I J G H I J G H I J G H I ~@9 G H I J G H I J G H I J G
  H I J G H I ~@37
>`.pickRestart({
  A: "~@19 a2@3 e3@2", B: "~ c4@3 e3@3 a2@3 e3@3 c4@3 e3@3 c3@3 f3@2", C: "~ c4@3 f3@3 c3@3 f3@3 c4@3 f3@3 c3@3 e3@2",
  D: "~ c4@3 e3@3 c3@3 e3@3 c4@3 e3@3 c3@3 e3@2", E: "~ c4@3 e3@3 g2@3 d3@3 c4@3 d3@3 a2@3 e3@2",
  F: "~ c4@3 e3@3 c3@3 e3@3 c4@3 e3@3 ~@5", G: "a2 e3 c4 e3 a2 e3 c4 e3", H: "c3 f3 c4 f3 c3 f3 c4 f3",
  I: "c3 e3 c4 e3 c3 e3 c4 e3", J: "c3 e3 c4 e3 g2 d3 c4 d3",
})).s("gm_acoustic_guitar_steel").gain(0.72)

stack(distortion_guitar, distortion_guitar_2, distortion_guitar_3, bass, acoustic_guitar_steel)

More by Iron Maiden