Strudelify

What's This Life For

Creed

KeyF majorTempo280 bpm
0:00/0:00
// What's This Life For — Creed
// 280 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 282 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): guitar.
setcpm(280/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 · electric guitar clean · "guitar"
const electric_guitar_clean = note(`<
  A B C@2 D E@2 F@3 C@2 D E@2 G@3 C@2 D E@2 H I@2 C@2 D E@2 H I@2 C@2 D E@2 H I@2 C@2 ~@38 I@2 C@2 D E@2 H I@2 C@2 D E@2
  H I@2 C@2 D E@2 H I@2 C@2 D E@2 H I@2 C@2 ~@40 J K L@2 J K L@2 M N@2 O P Q@2 R S T@2 U M V@2 W K X@2 Y K X@2 Y J K L@2
  J K L@2 M N@2 O P Q@2 R S T@2 U M V@2 W ~@68
>`.pickRestart({
  A: "~ g4@7, g3, ~ d4@15", B: "[g3,d4,g4]@3 [g3,g4]", C: "[~@4 a3@4 d4@4 gb4@4 gb4 g4@3 gb4@4 d4@4 a3@4, d3]/2",
  D: "b2@2 b2 [b2,gb3]", E: "[[b2,gb3,b3]@2 b2 b2@2 c3 ~ c4, ~@2 [gb3,b3]@3 ~ [c3,g3]@2]/2",
  F: "[c4 ~ c3 ~@4 g3 [d3,g3,g4]@3 g3, g4 g2@2, [c3,g3]@4 g3@5 ~@15, ~@2 c4@7 ~@15, ~@6 c3@3 ~@3 d3@4 ~@8]/3", // G5 C5
  G: "[c4 ~ c3 ~@4 g3 [d3,g3,g4]@3 g3, g4 ~@2, [c3,g3] g3 g2@4, ~ c4@3 ~@8, ~@6 c3@3 ~@3 d3@4 ~@8]/3", // G5 C5
  H: "c4 ~ c3!2, g4, [c3,g3] g3, ~ c4@3", I: "[~@3 g3 [d3,g3,g4]@3 g3, g2, ~ d3 ~@2]/2", J: "[g3,d4,g4]",
  K: "[g3,d4,g4]@3 [g3,d4,g4]", L: "[~ [g3,d4,g4] [g3,d4,g4]@3 [g3,d4,g4] [g3,d4] [g3,d4,g4]]/2",
  M: "[c3,g3,c4]@3 [c3,g3,c4]", N: "[[c3,g3,c4] [b2,gb3,b3]@2 [b2,gb3,b3]]/2", O: "[c3,g3,c4]",
  P: "[a2,e3,a3]@3 [a2,e3,a3]", Q: "[[a2,e3,a3] [a2,e3,a3]@2 [a2,e3,a3]]/2", R: "[a2,e3,a3]!2",
  S: "[d3,a3,d4]@3 [d3,a3,d4]", T: "[[d3,a3,d4]@2 [d3,a3,d4]@4 [d3,a3,d4]!2]/2", U: "[d3,a3,d4]!4",
  V: "[[c3,g3,c4]@2 [c3,g3,c4]@4 [c3,g3,c4]!2]/2", W: "[c3,g3,c4]!2", X: "[[g3,d4,g4] [g3,d4,g4]@2 [g3,d4,g4]]/2",
  Y: "[g3,d4,g4]!2", // G5
})).s("gm_electric_guitar_clean").gain(0.61).pan(0.3)

// chords · overdriven guitar · "guitar"
const overdriven_guitar = note(`<
  ~@44 A B@2 C D@2 E@2 A@2 F G D@2 E@2 A@2 F G D@2 E@2 A@2 F G D@2 E@2 A@2 H@4 ~@36 A I@2 C D@2 E@2 A@2 F G D@2 E@2 A@2
  F G D@2 E@2 A@2 F G D@2 E@2 A@2 J@6 K L M@2 K L M@2 N O@2 P Q R@2 S T U@2 V N W@2 G L X@2 Y L X@2 Y K L M@2 K L M@2 N
  O@2 P Q R@2 S T U@2 V N W@2 G Z@8 AA AB@2 AC AA AB@2 AC N AD A P Q AE@2 AF T AG@2 AH N AI@2 G D@8 AA AB@2 AC AA AB@2
  AC N AD A P Q AE@2 AF T AG@2 AH N AI@2 G AJ@4
>`.pickRestart({
  A: "[b2,gb3,b3]!2", B: "[[b2,gb3,b3]@2 [b2,gb3,b3] [c3,g3,c4]@2 [c3,g3,c4] [c3,g3,c4]@2]/2", C: "[c3,g3,c4]!4",
  D: "[g2,d3,g3]!2", E: "[d3,a3,d4]!2", F: "[b2,gb3,b3] [c3,g3,c4] [c3,g3,c4]@2", G: "[c3,g3,c4]!2", H: "[c3,g3,c4]/4",
  I: "[[b2,gb3,b3]@2 [b2,gb3,b3] [c3,g3,c4]@5]/2", J: "[c3,g3,c4]/6", K: "[g3,d4,g4]", L: "[g3,d4,g4]@3 [g3,d4,g4]",
  M: "[~ [g3,d4,g4] [g3,d4,g4]@3 [g3,d4,g4] [g3,d4] [g3,d4,g4]]/2", N: "[c3,g3,c4]@3 [c3,g3,c4]",
  O: "[[c3,g3,c4] [b2,gb3,b3]@2 [b2,gb3,b3]]/2", P: "[c3,g3,c4]", Q: "[a2,e3,a3]@3 [a2,e3,a3]",
  R: "[[a2,e3,a3] [a2,e3,a3]@2 [a2,e3,a3]]/2", S: "[a2,e3,a3]!2", T: "[d3,a3,d4]@3 [d3,a3,d4]",
  U: "[[d3,a3,d4]@2 [d3,a3,d4]@4 [d3,a3,d4]!2]/2", V: "[d3,a3,d4]!4", W: "[[c3,g3,c4]@2 [c3,g3,c4]@4 [c3,g3,c4]!2]/2",
  X: "[[g3,d4,g4] [g3,d4,g4]@2 [g3,d4,g4]]/2", Y: "[g3,d4,g4]!2", Z: "[g2,d3,g3]!4", AA: "[g2,d3,g3]@3 [g2,d3,g3]",
  AB: "[[g2,d3,g3] [g2,d3,g3]@3]/2", AC: "[g2,d3,g3]", AD: "[c3,g3,c4] [b2,gb3,b3]", AE: "[[a2,e3,a3] [a2,e3,a3]@3]/2",
  AF: "[a2,e3,a3]", AG: "[[d3,a3,d4] [d3,a3,d4]@3]/2", AH: "[d3,a3,d4]", AI: "[[c3,g3,c4] [c3,g3,c4]@2 [c3,g3,c4]]/2",
  AJ: "[[g2,d3,g3]@31 ~]/4", // G5
})).s("gm_overdriven_guitar").gain(0.42).pan(0.7)

// bass · electric bass finger · "bass"
const bass = note(`<
  ~@44 A B@2 C D@2 E@2 A@2 F@2 D@2 E@2 A@2 F@2 D@2 E@2 A@2 F@2 D@2 E@2 A@2 G@4 H I J K L M N O H I J K L M N O H I J K L
  M N O H I J K L M N O H I J K L M N O H I J K L M N O H I J K L M N O H I J K L M N O H I J K L M P@6 I Q@2 R I Q@2 R
  S T@2 C U V@2 W X Y@2 Z S AA@2 C I Q@2 R I Q@2 R I Q@2 R I Q@2 R S T@2 C U V@2 W X Y@2 Z S AA@2 C I Q@2 R I Q@2 R I
  Q@2 R I Q@2 R S T@2 C U V@2 W X Y@2 Z S AA@2 C I Q@2 R I Q@2 R I Q@2 R I Q@2 R S T@2 C U V@2 W X Y@2 Z S AA@2 C AB@4
>`.pickRestart({
  A: "b1!2", B: "[b1@2 b1 c2@5]/2", C: "c2!4", D: "g1!2", E: "d2!2", F: "c2!2", G: "c2/4", H: "g1", I: "g1@3 g1",
  J: "d2 d2@3", K: "d2@2 d2!2", L: "b1", M: "b1@3 b1", N: "b1 c2 c2@2", O: "c2@2 c2!2", P: "c2/6",
  Q: "[g1@2 g1@3 g1!3]/2", R: "g1!4", S: "c2@3 c2", T: "[c2@2 b1@3 b1!3]/2", U: "a1@3 a1", V: "[a1@2 a1@3 a1!3]/2",
  W: "a1!4", X: "d2@3 d2", Y: "[d2@2 d2@3 d2!3]/2", Z: "d2!4", AA: "[c2@2 c2@3 c2!3]/2", AB: "[g1@31 ~]/4",
})).s("gm_electric_bass_finger").gain(0.61)

// chords · piano
const piano = note(`<
  ~@193 A B@3 ~ C@2 ~@2 D@4 E@3 F G@4 H@4 ~@4 I@8 J@4 K@4 L@4 M@4 N@8 O@4 P@4 Q@2 ~ R S@3 T U@3 V W@3 X Y@4
>`.pickRestart({
  A: "~ [g3,d4,g4]", B: "[[g3,b3,d4,g4]@7 [g3,b3,d4,g4]@4 ~]/3", C: "[[g3,c4,e4,g4]@3 ~]/2",
  D: "[a4@3 b4@3 c5@2, [a3,c4,e4]]/4", E: "[[a3,d4,gb4,a4] [a3,d4,gb4,a4]]/3", F: "[a3,d4,gb4,a4]",
  G: "[c5 e5 g5 c5 e5 g5 c5 e5 g5 c5 e5 g5 c5 e5 g5 e5, c4]/4", H: "[g4,b4,d5]/4",
  I: "[b4!2 d5 b4 b4 d5 b4!2 d5 b4!2 d5 b4!2 d5 b4 b4 d5 b4!2 d5 b4!2 d5 b4!2 d5 b4 b4 d5 b4!2, g4]/8",
  J: "[c5!2 g5 c5 c5 e5 g5 e5 c5!2 e5 g5 c5!2 g5 c5, g4]/4", K: "[~@2 a4!2 e5 c5 a4 c5 a4 c5 e5 c5 a4 c5 a4 c5, e4]/4",
  L: "[a4 c5 e5!2 g5 e5 c5 e5 g5@2 gb5@2 e5@2 d5@2, d4]/4", M: "[c5@2 ~@8 c5!2 [c5,e5,g5] c5!2 b4, c4]/4",
  N: "[g4,b4,d5,g5]!4", O: "[g4,b4,d5,g5]/4", P: "[[g4,b4,d5,g5]@7 [g4,b4,d5,g5]]/4", Q: "[[g4,c5,e5,g5]@3 ~]/2",
  R: "[g4,c5,e5,g5]", S: "[[e4,a4,c5,e5] [e4,a4,c5,e5]]/3", T: "[e4,a4,c5,e5]", U: "[[d4,gb4,a4,d5] [d4,gb4,a4,d5]]/3",
  V: "[d4,gb4,a4,d5]", W: "[[c4,e4,g4,c5] [c4,e4,g4,c5]]/3", X: "[c4,e4,g4,c5]", Y: "[[d4,g4,b4,d5]@7 ~]/4",
})).s("gm_piano").gain(0.61)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@43 A ~@3 B ~@29 C ~@39 D ~@3 B ~@29 C ~@61 C ~@7 E ~@54 A F ~@4>".pickRestart({
  A: "~@3 x", B: "~@4 x!3 ~", C: "~ x!2 ~", D: "~@3 x!2 ~ x ~", E: "~ x", F: "x!3 ~",
})).gain(0.61)

// drums · mid tom
const mid_tom = s("mt").struct("<~@43 A ~@3 B ~@29 C ~@39 D ~@3 B ~@29 C ~@61 C ~@7 C ~@54 B ~@5>".pickRestart({
  A: "~@2 x!3 ~@3", B: "x!2 ~@2", C: "x", D: "~ x ~@2",
})).gain(0.61)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@44 A@3 ~ A@28 B ~ B@4 A@35 B A@3 ~ A@28 B ~ B@7 ~@7 B C ~@22 B ~@7 B ~ B ~@5 B ~ B ~ B ~@3 A@7 ~ A@56 B ~@3
>`.pickRestart({
  A: "x!2", B: "x", C: "~ x",
})).gain(0.61)

// drums · crash
const crash = s("cr").struct(`<
  ~@44 A@3 ~ B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@5 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 A@3 ~
  B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@5 B ~@14 C ~@46 B ~@7 B C ~@2 B C ~@2 B C ~@2 B C ~@2 B C ~@2 B C ~@2 B C ~@2
  B ~@3 B C ~@2 B ~@3 B C ~@6 B C ~@2 B C ~@2 B ~@3
>`.pickRestart({
  A: "x!2", B: "x", C: "~ x",
})).gain(0.61)

// drums · ride
const ride = s("rd").struct(`<
  ~@48 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 ~@6 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@2 C ~@4 A B@3 A
  B@3 A B@3 A B@3 A B@3 A B@3 A B@3 ~@8 B@9 C B@46 A B@7 A C B@2 A C B@2 A C B@2 A C B@2 A C B@2 A C B@2 A C B@2 A B@3 A
  C B@2 A B@3 A C B@6 A C B@2 A C B@2 ~@4
>`.pickRestart({
  A: "~ x", B: "x!2", C: "x",
})).gain(0.61)

stack(electric_guitar_clean, overdriven_guitar, bass, piano, kick, snare, low_tom, mid_tom, open_hat, crash, ride)

More by Creed