Strudelify
KeyE minorTempo147 bpm
0:00/0:00
// Wind Below — Rage Against the Machine
// 147 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 188 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(147/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.

// bass · electric bass finger
const bass = note(`<
  ~ A@2 B C A@2 B C A@2 B C A@2 B D E F E F E F E F E F E F E F E F E F E F E F E G A@2 B C A@2 B C A@2 B C A@2 B H E F
  E F E F E F E F E F E F I G A@2 B C A@2 B C A@2 B C A@2 B H J K J K J K J K E F E F E F E F E F E F E F E F E G E G E
  G E G E G E G E G E G E G E G E G E G E G E G E G E G E G E G E G E G E G E G E G E G E G E G E G E G E G E G E G E G
  E G E G E G E G L@3
>`.pickRestart({
  A: "[b1 a1 b1 c2 b1 a1@2 f#1@2 f1 e1@2 a1 f#1@3]/2", B: "c#2 e1@3 b1 a#1 b1 c#2",
  C: "b1@2 a#1@2 e1@2 e1 ~ e1 ~@3 e1 ~ e1 ~", D: "b1@2 a#1@2 e1@10 [e1,b1] [d2,e2]", E: "e2 d2 e2 d2 a#1 e1 ~ e1",
  F: "e1@14 [e1,f#1] [b1,d2]", G: "e1", H: "b1 a#1 e1@6", I: "~ d2 e2 d2 a#1 e1 ~ e1",
  J: "f1@2 f1@2 e1@2 e1 ~ e1 ~ e1 ~ e1 ~ e1 ~", K: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1@2", L: "e1/3",
})).s("gm_electric_bass_finger").gain(0.64)

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

// drums · snare
const snare = s("sd").struct(`<
  A B C@2 D B C@2 D B C@2 D B C@2 D ~@4 C@20 B C@2 D B C@2 D B C@2 D B C@2 D C@16 B C@2 D B C@2 D B C@2 D B C@2 D ~@8
  C@56 ~@8 C@7 D E C@6 D E C E C E C E D ~@3
>`.pickRestart({
  A: "~@2 x!2", B: "~@4 x ~@2 x", C: "~ x", D: "~@4 x ~ x!2", E: "~@3 x!2 ~@3",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<~@113 [x!4]!40 ~@35>").gain(0.48)

// drums · low tom
const low_tom = s("lt").struct("<x ~@88 [~@7 x]!8 ~@91>").gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@89 [~@8 x!3 ~ x ~@3]!8 ~@91>").gain(0.64)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@4 A ~@3 A ~@3 A ~@3 A ~@27 A ~@3 A ~@3 A ~@3 A ~@19 A ~@3 A ~@3 A ~@3 A ~@72 B C B C B C B C B C B C B C B C B C B C
  B C B C ~@3
>`.pickRestart({
  A: "~ x!3", B: "~ x ~ x", C: "x!2 ~ x",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct(`<
  ~ A@3 B A@3 B A@3 B A@3 B ~ C ~@2 D A@22 B A@3 B A@3 B A@3 B A@19 B A@3 B A@3 B A@3 B C ~ C ~ C ~ C ~ A@16 ~@48 E F E
  F E F E F E F E F E F E F E F E F E F E F C ~@2
>`.pickRestart({
  A: "x!4", B: "x!2 ~@2", C: "x", D: "~@2 x!2", E: "x!2", F: "~ x",
})).gain(0.48)

// drums · ride
const ride = s("rd").struct("<~@17 [~@8 x!8] x ~@134 [x!8]!8 ~@25 [x!3 ~@13] ~>").gain(0.64)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@17 [x!8 ~@8] ~@170>").gain(0.32)

stack(bass, kick, snare, hihat, low_tom, mid_tom, open_hat, crash, ride, ride_soft)

More by Rage Against the Machine