Strudelify

People of the Sun

Rage Against the Machine

KeyB minorTempo95 bpm
0:00/0:00
// People of the Sun — Rage Against the Machine
// 95 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 59 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Guitar doubled.
setcpm(95/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · overdriven guitar · "Chorus guitar"
const overdriven_guitar = note(`<
  ~@20
  [f#2 g2 f#2 g2 f#2 g2 f#2 g2 f#2 g2 f#2 g2 f#2 g2@3]!8
  ~@12
  [f#2 g2 f#2 g2 f#2 g2 f#2 g2 f#2 g2 f#2 g2 f#2 g2@3]!8
  ~@2
  [f#2 g2 f#2 g2 f#2 g2 f#2 g2 f#2 g2 f#2 g2 f#2 g2@3]!8
  ~
>`).s("gm_overdriven_guitar").gain(0.6).pan(1)

// bass · electric bass finger · "Bass"
const bass = note("<~@7 A B C B C B C B C B C B C D@8 B C B C E ~ E F E ~ E F D@8 ~@2 D@8 ~>".pickRestart({
  A: "~@8 d2 e2 d2@3 a1 c2 d2", B: "a1@3 c2@3 d2@3 c2@3 a1@3 ~", C: "a1@3 c2@3 d2@3 c2@3 ~@4",
  D: "f#1 g1 f#1 g1 f#1 g1 f#1 g1 f#1 g1 f#1 g1 f#1 g1@3", E: "a1 ~@7", F: "~@10 d2 e2 d2 a1 c2 d2",
})).s("gm_electric_bass_finger").gain(0.8)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A B@3 C B@3 C B@9 D B D B D B E B@5 F D G@4 H B D B D B D B D ~@2 B D B D B D B D ~
>`.pickRestart({
  A: "~@8 x!2 ~@2 x ~@3", B: "~ x ~ x", C: "~@4 x ~@2 x ~@4 x ~@3", D: "~@4 x ~@4 x ~@2 x ~@3", E: "~@4 x ~@5 x!5 ~",
  F: "~ x ~@2 x ~ x ~@3 x ~ x ~@3", G: "~ x ~@2 x ~@2 x ~@4 x ~@3", H: "~@4 x ~ x ~@5 x!4",
})).gain(0.8)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@3 [~@6 x!7 ~@3] ~@55>").gain(0.24)

// drums · hihat
const hihat = s("hh").struct("<~@3 A B@7 C B@3 C B@3 D ~@8 B@5 E C F B G C H ~@19>".pickRestart({
  A: "~@13 x ~@2", B: "x!8", C: "x!5 ~ x!2", D: "x!5 ~@3", E: "x!3 ~ x!4", F: "~ x!4 ~ x!2", G: "x!2 ~ x!5",
  H: "x!2 ~@6",
})).gain(0.8)

// drums · open hat
const open_hat = s("oh").struct("<~@3 A ~@7 B ~@3 B ~@3 C D@7 E ~@5 F B@2 ~ G B H D@8 ~@2 D@8 ~>".pickRestart({
  A: "~@3 x", B: "~@5 x ~@2", C: "~@5 x!2 ~", D: "x!8", E: "x!5 ~@3", F: "~@3 x ~@4", G: "~@4 x ~@8 x ~@2",
  H: "~@2 x!4 ~@2",
})).gain(0.56)

// drums · crash
const crash = s("cr").struct("<~@4 A ~@3 A ~@3 A ~@3 A ~@3 B@7 C A ~ A ~ A ~@2 A ~@3 D B@8 A ~ B@8 ~>".pickRestart({
  A: "x", B: "x!4", C: "x!3 ~", D: "x ~@3 x!2 ~@2",
})).gain(0.48)

// drums · bongos
const bongos = s("bongo:4").struct("<~@32 A B C D E D F G ~@19>".pickRestart({
  A: "~@14 x!2", B: "~ x ~@2 x ~ x ~@3 x ~@3 x!2", C: "~ x ~ x ~@5 x ~@2 x ~ x!2", D: "~@2 x ~ x ~@5 x!2 ~@2 x!2",
  E: "~@2 x ~ x ~@3 x!2 ~@4 x!2", F: "~@4 x ~@9 x!2", G: "~ x ~@2",
})).gain(1.05)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<~@34 [~ x ~@3 x ~@2] [~@3 x ~@5 x ~@6] [~@6 x!2 ~@4 x ~@3] ~ [~ x ~@6] ~@20>")
  .gain(1.05)

stack(overdriven_guitar, bass, kick, snare, snare_soft, hihat, open_hat, crash, bongos, bongos_2)

More by Rage Against the Machine