Strudelify

What It's Like

Everlast

KeyD minorTempo170 bpm
0:00/0:00
// What It's Like — Everlast
// 170 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 219 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(170/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@2 B@12 C@5 D@32 E@5 F@6 G@2 H@3 D@40 E@5 A@2 B@20 I@4 F@4 G@2 H@3 D@36 E@5 G@2 J@2 K@2 L@2 G@2 J@2 K@2 L@2 G@2 J@2
  K@2 L@2 G@2 J@2 K@2 M
>`.pickRestart({
  A: "[~@6 g4@4 f4@2 g4 f4 ~ c4, d3, ~@2 a3@11 ~@3, ~@2 d4@4 ~ d4]/2",
  B: "[~@2 c4@2 [c4,e4]@3 ~@5 [c4,e4]@3 ~@7 g4@4 f4@2 g4 f4 ~ c4, f3 c3 d3@2, ~@7 [c4,e4]@3 g3@5 [c4,e4]@3 a3@11 ~@3, ~@10 d4@4 ~ d4]/4", // C
  C: "[~@2 c4@2 [c4,e4]@3 ~@5 [c4,e4]@3 ~ d3@4 ~@6 d4 d4@2 f3@3 ~@6 g3@2, f3@8 c3@8 ~@4 [d3,a3]@4 f3@5 ~@3 c3@8, ~@7 [c4,e4]@3 g3@5 [c4,e4]@3 ~@4 d4@4 ~@3 c4@5 g3@4 ~@2, ~@9 c4]/5", // C D5 C
  D: "[~ f4@2 ~ g4 d4!2 ~ d3@4 ~@6 d4 d4@2 f3@3 ~@6 g3@2, d3@8 ~@4 [d3,a3]@4 f3@5 ~@3 c3@8, ~ d4@4 f4@2 [d4,f4]@5 ~@2 d4@4 ~@3 c4@5 g3@4 ~@2, ~@7 c4]/4", // D5 Dm
  E: "[~ f4@2 ~ g4 d4!2 ~ d3@4 ~@6 d4 d4@2 f3@3 ~@6 g3@2 ~@6 g3@2, d3@8 ~@4 [d3,a3]@4 f3@5 ~@3 c3@8 c3@8, ~ d4@4 f4@2 [d4,f4]@5 ~@2 d4@4 ~@3 c4@5 g3@4 ~@4 g3@4 ~@2, ~@28 c4@7 ~ c4@4]/5", // D5 Dm
  F: "[~@4 e4 ~ e4 ~@3 d4@2 d4@2 d4@2 ~@4 f4 ~@5 g4@2 g4@2 g4@2, d3, d4@5 ~@3 d4@8, ~@3 f4@4 ~@4 a4@3 ~@2]/2",
  G: "[~@4 e4 ~ e4 ~@11 d4@4 ~@4 d4@6, d3, d4@5 d4@3 ~@8, ~@3 f4@4 f4@4 f4@5]/2",
  H: "[d3@4 ~@6 d4 d4@2 f3@3 ~@6 g3@2, ~@4 [d3,a3]@4 f3@5 ~@3 c3@8, ~@6 d4@4 ~@3 c4@5 g3@4 ~@2, ~@5 c4]/3", // D5
  I: "[~@4 c4@4 [c4,e4]@6 ~@10 [c4,e4]@6 ~@6 e4 ~ e4 ~@3 d4@2 d4@2 d4@2 ~@4 f4 ~@5 g4@2 g4@2 g4@2, f3 c3 d3@2, ~@7 [c4,e4]@3 g3@5 [c4,e4]@3 ~ f4@4 ~@4 a4@3 ~@2, ~@16 d4@5 ~@3 d4@8]/4", // C
  J: "[~@4 d4 ~ d4 ~@11 f3@4 ~@4 f3@6, f2, f3@5 f3@3 ~@8, ~@3 e4@4 e4@4 e4@5]/2",
  K: "[~@4 eb4 ~ eb4 ~@11 c4@4 ~@4 c4@6, c3, c4@5 c4@3 ~@8, ~@3 e4@4 e4@4 e4@5]/2",
  L: "[~@4 e4 ~ e4 ~@11 d4@4 ~@4 g4@6, d3, d4@5 d4@3 ~@8, ~@3 f4@4 f4@4 a4@5]/2",
  M: "~@4 e4 ~ e4 ~@3 d4@4 [d3,d4]@2, d3@7 ~, d4@5 ~@3, ~@3 f4@4 ~", // D
})).s("gm_acoustic_guitar_steel").gain(0.8)

// bass · fretless bass · "bass"
const bass = note(`<
  ~@16 A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B E@2 F@8 A B C D A B C D A B C D A B C
  D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B E@2 G@2 H I G@2 H I G@2 H I G@2 H I G@2 H I G@2 H I F@8
  A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B E@2 G@2 J@2 E@2 G@4 J@2 E@2 G@4
  J@2 E@2 G@4 J@2 E@2 K
>`.pickRestart({
  A: "d2@3 e2", B: "f2@7 ~", C: "c2@3 db2", D: "d2@5 ~@2 d2", E: "c2/2", F: "d2/4", G: "d2/2", H: "f2", I: "c2",
  J: "e1/2", K: "d2@7 d2",
})).s("gm_fretless_bass").gain(0.45)

// other · pad halo · "synth"
const pad_halo = note(`<
  ~@7 A B@2 C D E@2 F D ~@15 G H F I J H F I K L@2 M@2 L@2 M@2 L@2 M@2 L@2 N@2 B@2 L@4 O@2 ~@15 G H F I J H F I K H F I
  J H F P K L@2 M@2 L@2 M@2 L@2 M@2 L@2 N@2 Q@32 ~@15 G H F I J H F I K H F I J H F P K L@2 M@2 L@2 M@2 L@2 N@2 L@2 R@2
  N@2 L@4 R@2 N@2 L@4 R@2 N@2 L@4 R@2 N@2 S
>`.pickRestart({
  A: "e3", B: "d3/2", C: "f3", D: "[c3,c4]", E: "[[d3,d4]@7 [e3,e4]]/2", F: "[f3,f4]", G: "~@2 f3 e3",
  H: "d3@3 [e3,e4]", I: "[c3,c4]@3 [db3,db4]", J: "[d3,d4]", K: "d4@2 f4 e4, d3", L: "[d3,d4]/2",
  M: "[[c3,c4]@9 [d3,d4]@7]/2", N: "[c3,c4]/2", O: "[d3,d4,a4]/2", P: "f4@2 ~ db3, c3@3 ~, ~ e4", Q: "[d3,d4]/4",
  R: "[f2,f3]/2", S: "[d3,d4]@7 [d3,d4]",
})).s("gm_pad_halo").gain(0.68)

// other · pad halo · "synth" · soft notes
const pad_halo_soft = note(`<
  ~@6 A ~ B@2 C ~@20 D E ~@3 E ~@26 F ~@15 D E ~@3 E ~@3 E ~@3 E ~@66 D E ~@3 E ~@3 E ~@3 E ~@46
>`.pickRestart({
  A: "d3", B: "d4/2", C: "f4", D: "~@3 c4", E: "d4@3 ~", F: "d5",
})).s("gm_pad_halo").gain(0.41)

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

// drums · snare
const snare = s("sd").struct("<~@15 A B@15 C B@22 ~@10 B@46 ~ D ~@6 B@16 ~@2 E F ~@5 G B@42 ~ H B@30 I>".pickRestart({
  A: "x!8", B: "~ x", C: "~@4 x!4", D: "~@3 x", E: "~ x!3", F: "x!4", G: "~@2 x!2", H: "~ x ~ x", I: "~@4 x ~@2 x",
})).gain(0.8)

// drums · low tom
const low_tom = s("lt").struct("<~@218 [~@7 x]>").gain(0.8)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@16 A@40 ~@8 A@48 ~@7 B A@16 C ~@7 A@74 D>".pickRestart({
  A: "x!4", B: "~@2 x!2", C: "x", D: "x ~ x ~ x ~ x!2",
})).gain(0.8)

stack(acoustic_guitar_steel, bass, pad_halo, pad_halo_soft, kick, snare, low_tom, pedal_hat)