Strudelify
Eye of the Tiger (From "Rocky II") cover art

Rocky IV

Eye of the Tiger (From "Rocky II")

Survivor

KeyC minorTempo119 bpm
0:00/0:00
// Eye of the Tiger (From "Rocky II") — Survivor
// 119 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 103 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(119/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.

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@4 A B C@2 A D E@2 F@2 G H F@2 G H F I F@3 I F@3 J K L M N K L M O P Q P R P S T U F I F@3 V F@3 O P W P R P M T X
  F@3 Y F@3 Z F@3 O P Q P R P M T H U F@3 AA AB H AC AD AB AE AD@2 AB H AD@2 AF@2
>`.pickRestart({
  A: "c2@2 ~@6 c2@2 ~ bb1@2 ~ c2@2", B: "~@8 c2@2 ~ bb1@2 ~ c2@2", C: "[~@8 c2@2 ~ g1@2 ~ ab1@14 ~@4]/2",
  D: "~@10 c2@2 ~ bb1@2 ~", E: "[c2@2 ~@6 c2@2 ~ g1@2 ~ ab1@11 ~@7]/2", F: "c2 ~ c2 ~ c2 ~ c2 ~",
  G: "c2@2 ~@2 c2@2 ~@2 c2@2 ~ f1@3 g1@2", H: "ab1@3 ~ ab1@3 ~ ab1@3 ~ ab1@3 ~",
  I: "c2@2 ~@2 c2@2 ~@2 c2@2 g1 bb1@2 g1 b1@2", J: "c2@2 ~@2 c2@2 ~@2 c2@2 ~ g1@3 bb1@2",
  K: "c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~", L: "ab1@2 ~@2 ab1@2 ~@2 ab1@2 ~@2 ab1@3 ~", M: "bb1@3 ~ bb1@3 ~ bb1@3 ~ bb1@3 ~",
  N: "c2@3 ~ c2@2 ~@2 c2@2 g1 bb1@2 g1@3", O: "c2@3 ~ c2@3 ~ c2 ~ bb1@3 g1@2 ~", P: "f1@3 ~ f1@2 ~@2 f1@3 ~ f1@3 ~",
  Q: "bb1@3 ~ bb1@3 ~ bb1 ~ bb1@3 g1@2 ~", R: "g1@3 ~ bb1@3 ~ bb1 ~ bb1@3 g1@3", S: "bb1@3 ~ bb1@3 ~ bb1@3 ~ bb1@2 ~@2",
  T: "f1@3 eb1@2 f1@2 ~ g1@3 f1@2 g1@2 ~", U: "ab1@7 ~ ab1 ~@7", V: "c2@2 ~@2 c2@3 ~ g2@2 bb2@2 g2 f2 eb2@2",
  W: "bb1@2 ~@2 bb1@3 ~ bb1 ~ bb1@3 g1@3", X: "ab1 ~", Y: "c2@2 ~@2 c2@2 ~@2 c2@2 ~ g1 bb1@2 g1@2",
  Z: "c2@2 ~@2 c2@2 ~@2 c2@3 g1 bb1@2 b1@2", AA: "c2@2 ~@2 c2@2 ~@2 c2 ~@3 c2 ~@3", AB: "c2 ~ c2 ~ c2 f1@2 g1",
  AC: "c2@3 ~ c2@2 bb1@2 c2@2 ~@2 c2@2 ~@2", AD: "c2@2 ~@2 c2@2 ~@2 c2@2 ~@2 c2 ~ bb1@2", AE: "ab1 ~ ab1 ~ ab1 ~ ab1 ~",
  AF: "[c2@2 ~@2 c2@2 ~@2 c2 ~@2 g1@2 ~ ab1@15 ~@3]/2",
})).s("gm_electric_bass_finger").gain(0.5)

// chords · piano · "A.PIANO"
const piano = note(`<
  ~@4 A B C@2 A D E@2 A B F@2 A B G@2 ~@2 H I J H@2 I K L@2 M K N O M K P Q R Q S Q T U V W ~ H I J O H M K P X R Q S Q
  T Y Z ~@4 H I J AA O M K AB X AC Q S Q AD Y Q AE ~@2 A B C@2 A B AF@2 AG AH C@2 A B AF@2
>`.pickRestart({
  A: "[c4,eb4,g4] ~@7 [c4,eb4,g4] ~@2 [bb3,d4,f4] ~@2 [c4,eb4,g4] ~", // Cm Bb Cm
  B: "~@8 [c4,eb4,g4] ~@2 [bb3,d4,f4] ~@2 [c4,eb4,g4] ~", C: "[~@8 [c4,eb4,g4] ~@2 [g3,d4] ~@2 [ab3,c4,eb4]@15 ~@3]/2",
  D: "~@10 [c4,eb4,g4] ~@2 [bb3,d4,f4] ~@2", E: "[[c4,eb4,g4] ~@7 [c4,eb4,g4] ~@2 [g3,d4] ~@2 [ab3,c4,eb4]@15 ~@3]/2",
  F: "[~@8 [c4,eb4,g4] ~@2 [g3,d4] ~@2 [c4,eb4]@15 ~@3, ~@14 ab3@17 ~]/2", // Cm G5 Cm
  G: "[~@8 [c4,eb4,g4] ~@2 [g3,d4] ~@2 [c4,eb4]@17 ~, ~@14 ab3@15 ~@3]/2", H: "[c4,eb4,g4]@15 ~",
  I: "[ab3,c4,eb4]@15 ~", J: "[bb3,f4]@15 ~, d4@13 ~@3", K: "[bb3,d4,f4]@13 ~@3", L: "[c4,eb4,g4]@7 ~",
  M: "[ab3,c4,eb4]@13 ~@3", N: "[c4,eb4,g4]@13 ~@3, db4 ~@15", O: "[c4,eb4,g4]@13 ~@3",
  P: "[c4,eb4,g4]@8 ~@2 [bb3,d4,f4]@2 ~ [bb3,eb4,g4]@2 ~", Q: "[c4,eb4,ab4]@13 ~@3",
  R: "[bb3,eb4,f4]@7 ~ [bb3,d4,f4]@4 ~ [bb3,eb4,g4]@2 ~", // Bbsus4 Bb Eb
  S: "[bb3,eb4,g4]@2 ~@2 [bb3,d4,f4]@5 ~ [bb3,d4,f4]@2 ~ [bb3,eb4,g4]@2 ~", T: "[bb3,eb4,f4]@7 ~ [bb3,d4,f4]@6 ~@2",
  U: "[c4,eb4,ab4]@5 ~@3 [eb4,g4,bb4]@5 ~@3", V: "[c4,eb4,c5]@9 ~@7, ab4 ~@15", W: "[c4,eb4,g4]", X: "[c4,eb4,ab4]@7 ~",
  Y: "[c4,eb4,ab4]@3 ~ [bb3,eb4,g4]@3 ~", Z: "[c4,eb4,ab4]@9 ~@7",
  AA: "[c4,eb4,g4]@9 ~ [ab3,c4,eb4] [ab3,c4,eb4]@2 [f3,bb3,d4]@3", // Cm Ab Bb
  AB: "[eb4,g4] ~@9 [bb3,d4,f4]@3 [bb3,eb4,g4]@2 ~, c4 ~", // Eb Bb Eb
  AC: "[bb3,eb4,f4]@7 ~ [bb3,d4,f4] ~ [bb3,d4,f4]@3 [bb3,eb4,g4]@2 ~", AD: "[bb3,eb4,f4]@7 ~ [bb3,d4,f4]@5 ~@3",
  AE: "[ab3,c4,eb4]@3 ~@13", AF: "[~@8 [c4,eb4,g4] ~@2 [g3,d4] ~@2 [ab3,c4,eb4]@17 ~]/2",
  AG: "[c4,eb4,g4] ~@7 [c4,eb4,g4] ~@2 [bb3,d4,f4] ~@2 [c4,eb4,g4]@2", // Cm Bb Cm
  AH: "~@8 [c4,eb4,g4] ~@2 [bb3,d4,f4] ~@2 [c4,eb4,g4]@2", // Cm Bb Cm
})).s("gm_piano").gain(0.56).pan(0.7)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~@88 A@2 B@2 A@2 C@2 D@2 E@2 F@3>".pickRestart({
  A: "[~@14 [g5,c6,eb6]@17 ~]/2", B: "[ab6@15 g5@6 ~@11, [c6,eb6]@11 ~@5]/2", C: "[ab6@14 g5@9 ~@9, [c6,eb6]@23 ~@9]/2",
  D: "[~@10 [g5,c6,eb6]@21 ~]/2", E: "[ab6@14 ~ g5@7 ~@10, [c6,eb6]@11 ~@5]/2",
  F: "[~@10 g5@19 ~ ab5@5 ~@13, ~@10 [c6,eb6]@25 ~@13]/3", // Cm
})).s("gm_string_ensemble_1").gain(0.32).pan(0.2)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~@4 A B C@2 A D E@2 F@4 G@4 H ~@17 I J K L I M N O ~@2 P@2 Q R P@2 Q S T U V L W X N O ~@12 Y Z AA L AB AC AD AE ~@3 A
  B AF@2 AG@4 AH@4 AI@4
>`.pickRestart({
  A: "[g3,c4]@2 ~@6 [g3,c4]@2 ~ [f3,bb3]@2 ~ [g3,c4]@2", B: "~@8 [g3,c4]@2 ~ [f3,bb3] ~@2 [g3,c4]@2",
  C: "[~@8 [g3,c4]@2 ~ [d3,g3]@2 ~ [eb3,ab3]@12 ~@6]/2", D: "~@10 [g3,c4]@2 ~ [f3,bb3] ~@2",
  E: "[[g3,c4]@3 ~@5 [g3,c4]@2 ~ [d3,g3] ~@2 [eb3,ab3]@11 ~@7]/2", // C5 G5 Ab5
  F: "[[eb4,g4]@3 ~@5 [eb4,g4]@2 ~ [d4,f4]@3 [eb4,g4]@5 ~@5 [eb4,g4]@2 ~ [d4,f4]@2 ~ [eb4,g4]@6 ~@4 [eb4,g4] ~@2 [b3,d4]@2 ~ [c4,eb4]@15 ~@3]/4", // Eb Dm Eb Dm Eb Bm Cm
  G: "[[eb4,g4]@3 ~@5 [eb4,g4]@2 ~ [d4,f4]@3 [eb4,g4]@5 ~@5 [eb4,g4]@2 ~ [d4,f4]@2 ~ [eb4,g4]@6 ~@4 [eb4,g4] ~@2 [b3,d4]@2 ~ [c4,eb4]@15 ~ [g3,c4]!2]/4", // Eb Dm Eb Dm Eb Bm Cm C5
  H: "[g3,c4] ~@3", I: "[c3,f3]@9 ~ f3@4 c3@2, ~@5 c3 ~@2", J: "[bb3,eb4,f4]@4 [bb3,d4,f4]@3 ~",
  K: "[c3,f3]@10 [c3,f3]@4 c3 ~, db4 ~@15", L: "[eb3,bb3]@3 ~ [f3,bb3]@11 ~",
  M: "[bb3,eb4,f4]@3 ~ [d4,f4]@8 ~ g4@2 ~, ~@2 bb3@3 ~@3", N: "ab4@3 g4@2 ~ ab4@2 bb4@3 ab4@2 bb4@2 ~", O: "c5@9 ~@7",
  P: "g4/2", Q: "f4", R: "eb4@15 ~", S: "eb4@3 ~", T: "[c3,f3] ~@9 f3@4 c3@2, ~@10 c3@3 ~@3",
  U: "[bb3,eb4,f4] [bb3,d4], ~@4 f4@3 ~", V: "[c3,f3]@15 ~", W: "f3@3 ~ [c3,f3]@5 ~ [c3,f3]@3 ~ [c3,f3]@2, c3 ~@15",
  X: "[bb3,eb4,f4]@8 [bb3,d4]@4 ~@2 g4 ~, ~@4 f4@3 ~", Y: "[c3,f3]@9 ~ [c3,f3]@3 ~ [c3,f3] ~",
  Z: "[bb3,eb4,f4]@7 ~ [bb3,d4,f4]@7 ~", AA: "[c3,f3]@9 ~ [c3,f3]@6", AB: "[c3,f3]@9 ~ [c3,f3]@3 ~ [c3,f3]@2",
  AC: "[bb3,eb4,f4]@7 ~ [d4,f4]@7 ~, ~@2 bb3 ~", AD: "ab4@3 g4@3 ab4@2 bb4@3 ab4@3 bb4@2", AE: "c5",
  AF: "[~@8 [g3,c4]@2 ~ [d3,g3]@2 ~ [eb3,ab3]@14 ~@4]/2", // C5 G5 Ab5
  AG: "[[g3,c4]@2 ~@6 [g3,c4]@2 ~ [f3,bb3]@2 ~ [g3,c4]@5 ~@5 [g3,c4]@2 ~ [f3,bb3]@2 ~ [g3,c4]@5 ~@5 [g3,c4]@2 ~ [d3,g3]@2 ~ [eb3,ab3]@14 ~@4]/4", // C5 Bb5 C5 Bb5 C5 G5 Ab5
  AH: "[[eb4,g4]@3 ~@5 [eb4,g4]@2 ~ [d4,f4]@3 [eb4,g4]@5 ~@5 [eb4,g4]@2 ~ [d4,f4]@2 ~ [eb4,g4]@6 ~@4 [eb4,g4]@2 ~ [b3,d4]@2 ~ [c4,eb4]@14 ~@4]/4", // Eb Dm Eb Dm Eb Bm Cm
  AI: "[[eb4,g4]@3 ~@5 [eb4,g4]@2 ~ [d4,f4]@3 [eb4,g4]@5 ~@5 [eb4,g4]@2 ~ [d4,f4]@2 ~ [eb4,g4]@6 ~@4 [eb4,g4]@2 ~ [g3,d4]@2 ~ [ab3,eb4]@15 ~@3]/4", // Eb Dm Eb Dm Eb G5 Ab5
})).s("gm_overdriven_guitar").gain(0.64).pan(0.9)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar = note("<~@4 A B C@2 A D E@2 F@4 G@4 H ~@66 A I@3 A B J@2 A I@3 K@4>".pickRestart({
  A: "[c3,g3]@2 ~@6 [c3,g3]@2 ~ [bb2,f3]@2 ~ [c3,g3]@2", B: "~@8 [c3,g3]@2 ~ [bb2,f3]@2 ~ [c3,g3]@2",
  C: "[~@8 [c3,g3] ~@2 [g2,d3] ~@2 [ab2,eb3]@14 ~@4]/2", D: "~@10 [c3,g3] ~@2 [bb2,f3] ~@2",
  E: "[[c3,g3]@2 ~@6 [c3,g3]@2 ~ [g2,d3]@2 ~ [ab2,eb3]@14 ~@4]/2", // C5 G5 Ab5
  F: "[[c3,g3]@2 ~@6 [c3,g3]@2 ~ [bb2,f3]@2 ~ [c3,g3]@7 ~@3 [c3,g3]@2 ~ [bb2,f3]@2 ~ [c3,g3]@6 ~@4 [c3,g3] ~@2 [g2,d3] ~@2 [ab2,eb3]@15 ~@3]/4", // C5 Bb5 C5 Bb5 C5 G5 Ab5
  G: "[[c3,g3]@2 ~@6 [c3,g3]@2 ~ [bb2,f3]@2 ~ [c3,g3]@7 ~@3 [c3,g3]@2 ~ [bb2,f3]@2 ~ [c3,g3]@6 ~@4 [c3,g3]@2 ~ [g2,d3]@2 ~ [ab2,eb3]@18]/4", // C5 Bb5 C5 Bb5 C5 G5 Ab5
  H: "[c3,g3]@3 ~@13", I: "[~@8 [c3,g3]@2 ~ [bb2,f3]@3 [c3,g3]@4 ~@6 [c3,g3]@2 ~ [g2,d3]@2 ~ [ab2,eb3]@14 ~@4]/3",
  J: "[~@8 [c3,g3]@2 ~ [g2,d3]@2 ~ [ab2,eb3]@14 ~@4]/2", // C5 G5 Ab5
  K: "[[c3,g3]@2 ~@6 [c3,g3] ~@2 [bb2,f3]@2 ~ [c3,g3]@6 ~@4 [c3,g3]@2 ~ [bb2,f3]@2 ~ [c3,g3]@6 ~@4 [c3,g3]@2 ~ [g2,d3]@2 ~ [ab2,eb3]@14 ~@4]/4", // C5 Bb5 C5 Bb5 C5 G5 Ab5
})).s("gm_distortion_guitar").gain(0.64).pan(0.2)

// chords · distortion guitar · "DISTORTION" · soft notes
const distortion_guitar_soft = note("<~@14 A ~@2 B ~@30 C@2 D E C@2 D E ~@45 F ~>".pickRestart({
  A: "~@11 eb3 ~@4", B: "~@14 bb2 ~", C: "eb4/2", D: "d4", E: "c4@15 ~", F: "~@8 bb2 ~@2 eb3 ~@4",
})).s("gm_distortion_guitar").gain(0.24).pan(0.2)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  A B C D E C F G C@2 H I J C@3 J C H K H L M L@2 N L@2 M O L@4 C M P Q ~@8 M O M@2 L R M R M S ~@8 R L@2 G M@3 L M@3 T
  ~@9 O C O C L@2 M@2 L@2 M U L@2 M L V ~
>`.pickRestart({
  A: "c3!6 ~@2 c3!7 ~", B: "c3!7 ~ c3 ~ c3!6", C: "c3!16", D: "c3 ~ c3!5 ~ c3!8", E: "c3!15 ~", F: "c3!3 ~ c3!12",
  G: "c3 ~ c3!14", H: "c3!13 ~ c3!2", I: "c3 ~ c3 ~ c3 ~ c3 ~ c3!8", J: "c3!5 ~ c3!10", K: "c3 ~ c3!8 ~ c3!5",
  L: "c3 ~ c3!3 ~ c3!3 ~ c3!6", M: "c3 ~ c3!3 ~ c3!3 ~ c3!3 ~ c3!2", N: "c3 ~ c3!7 ~ c3!6", O: "c3 ~ c3!3 ~ c3!10",
  P: "c3!9 ~ c3!3 ~ c3!2", Q: "c3 ~ c3!3 ~ c3!3 ~@7", R: "c3 ~ c3!3 ~ c3!3 ~ c3!4 ~ c3",
  S: "c3 ~ c3!3 ~ c3!3 ~ c3!4 ~@2", T: "c3 ~ c3!3 ~ c3!3 ~ c3!2 ~@4", U: "c3 ~ c3!3 ~ c3!7 ~ c3!2", V: "c3 ~ c3!3 ~@11",
})).s("gm_electric_guitar_muted").gain(0.48).pan(0.6)

// other · electric guitar muted · "MUTED GTR" · soft notes
const electric_guitar_muted_2 = note(`<
  A B ~ C D ~ E F ~@2 G H I ~@3 I ~ G J G K L M N O P@2 L I M@4 ~ K Q ~@9 G ~@5 G R ~@33 K ~ P N G ~@2 P S T P ~ G F ~@2
>`.pickRestart({
  A: "~@6 c3!2 ~@7 c3", B: "~@7 c3 ~ c3 ~@6", C: "~ c3 ~@5 c3 ~@8", D: "~@15 c3", E: "~@3 c3 ~@12", F: "~ c3 ~@14",
  G: "~@13 c3 ~@2", H: "~ c3 ~ c3 ~ c3 ~ c3 ~@8", I: "~@5 c3 ~@10", J: "~ c3 ~@8 c3 ~@5", K: "~ c3 ~@3 c3 ~@10",
  L: "~ c3 ~@3 c3 ~@3 c3 ~@3 c3 ~@2", M: "~ c3 ~@3 c3 ~@3 c3 ~@6", N: "~@9 c3 ~@6", O: "~ c3 ~@7 c3 ~@6",
  P: "~@5 c3 ~@3 c3 ~@6", Q: "~@9 c3 ~@3 c3 ~@2", R: "~@14 c3 ~", S: "~@5 c3 ~@3 c3 ~@3 c3 ~@2", T: "~ c3 ~@11 c3 ~@2",
})).s("gm_electric_guitar_muted").gain(0.16).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~@4 A B@2 ~ A C A ~ D@7 E D@25 F D@17 F D@20 F D@16 G ~>".pickRestart({
  A: "x ~@7 x ~@2 x ~@2 x ~", B: "~@8 x ~@2 x ~@2 x ~", C: "~@10 x ~@2 x ~@2", D: "x!4", E: "x ~@3 x ~@3 x ~@2 x ~@4",
  F: "x!3 ~", G: "x ~@3 x ~@3 x ~@2 x ~@2 x ~",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct("<~@12 A@17 B A@15 C A@17 C A@20 C A@16 D E>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~ x!2 ~@2", C: "x!2 ~ x ~@4 x ~@7", D: "~ x ~@2", E: "~@11 x!2 ~@3",
})).gain(0.5)

// drums · low tom
const low_tom = s("lt").struct("<~@29 A ~@15 B ~@17 B ~@20 B ~@18>".pickRestart({
  A: "~@7 x", B: "~@7 x ~@8",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct("<~@12 A@17 B A@15 C ~ D A@15 C ~@2 A@18 C A@16 E ~>".pickRestart({
  A: "x!8", B: "x!7 ~", C: "x", D: "~@7 x", E: "x!3 ~@5",
})).gain(0.5)

// drums · mid tom
const mid_tom = s("mt").struct("<~@29 A ~@15 B ~@17 B ~@20 B ~@18>".pickRestart({
  A: "~@13 x ~@2", B: "~@5 x!2 ~@9",
})).gain(0.5)

// drums · high tom
const high_tom = s("ht").struct("<~@29 A ~@15 B ~@17 B ~@20 B ~@18>".pickRestart({
  A: "~@3 x", B: "~ x ~@2",
})).gain(0.5)

// drums · crash
const crash = s("cr").struct("<~@4 A B@2 ~ A C A ~@27 D ~@17 D ~@19 D ~@24 B ~>".pickRestart({
  A: "x ~@7 x ~@2 x ~@2 x ~", B: "~@8 x ~@2 x ~@2 x ~", C: "~@10 x ~@2 x ~@2", D: "x",
})).gain(0.5)

// drums · tambourine
const tambourine = s("tb").struct("<~@12 [~ x ~@2]!8 ~@67 [~ x ~@2]!15 ~>").gain(0.5)

stack(
  bass, piano, string_ensemble_1, overdriven_guitar, distortion_guitar, distortion_guitar_soft, electric_guitar_muted,
  electric_guitar_muted_2, kick, snare, low_tom, hihat, mid_tom, high_tom, crash, tambourine
)

More by Survivor