Strudelify

Madman

Silverchair

KeyD majorTempo130 bpm
0:00/0:00
// Madman — Silverchair
// 130 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 100 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(130/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.

// chords · distortion guitar · "Grt 1"
const distortion_guitar = note(`<
  A@4 B@3 C B@3 C A@4 B@3 C B@3 C A@4 D E D E D E D F G@4 B@3 C B@3 C A@4 B@3 C B@3 C A@4 D E D E D E D H D E D E D E D
  E G@16 B@3 C
>`.pickRestart({
  A: "[d2,d3]@2 d2!5 [d2,d3]@2 [d2,d3] [d2,d3]@2 d2!4", // D
  B: "[e2,b2] [d2,a2] [e2,b2] [d2,a2] [e2,b2] [f2,c3] [d2,a2] [e2,b2]@2 [d2,a2] [e2,b2] [d2,a2] [e2,b2] [f2,c3] [d2,a2]@2", // E5 D5 E5 D5 E5 F5 D5 E5 …
  C: "[e2,b2] [d2,a2] [e2,b2] [d2,a2] [e2,b2] [f2,c3] [d2,a2] [e2,b2]@2 [d2,a2] [e2,b2] [d2,a2] [c#3,g#3]@2 [c#3,g#3]@2", // E5 D5 E5 D5 E5 F5 D5 E5 …
  D: "[d3,a3] d2!3 [d3,a3] d2!2 [d3,a3]", E: "d2 [d3,a3] d2!2 [d3,a3] d2!3",
  F: "d2@2 [d3,a3]@2 d2@2 d2@2 [d3,a3]@2 ~@2 d2@2 ~ [d3,a3]", G: "[~@7 [e2,b2,e3]@2 ~@7]/2",
  H: "d2 [d3,a3] d2!2 [d3,a3] d2 g6@2", // D5
})).s("gm_distortion_guitar").gain(0.32)

// chords · acoustic guitar steel · "Grt 3"
const acoustic_guitar_steel = note("<~@12 A@4 ~@8 A@6 ~@18 A@4 ~@8 A@6 ~@34>".pickRestart({
  A: "[[d3,a3,d4,e4]@31 ~]/2", // Dsus2
})).s("gm_acoustic_guitar_steel").gain(0.4)

// other · distortion guitar · "Grt 4" · D5
const distortion_guitar_2 = note("<~@35 [~@4 [d3,a3]!4] ~@40 [a3!8] [a3!5 b3 g3@2] [a3!8] [a3!5 b3 g3@2] ~@20>")
  .s("gm_distortion_guitar").gain(0.32).pan(1)

// bass · slap bass 2 · "Bass"
const bass = note(`<
  ~@4 A@3 B A@3 B C@4 A@3 B A@3 B C@4 D E D E D E D E ~@4 A@3 B A@3 B C@4 A@3 B A@3 B C@4 D E D E D E D E D E D E D E D
  E ~@4 F@12 A@3 B
>`.pickRestart({
  A: "e1 d1 e1 d1 e1 f1 d1 e1@2 d1 e1 d1 e1 f1 d1@2", B: "e1 d1 e1 d1 e1 f1 d1 e1@2 d1 e1 d1 c#2@2 c#2@2",
  C: "[d1@31 ~]/2", D: "d2 d1!3 d2 d1!2 d2", E: "d1 d2 d1!2 d2 d1!3",
  F: "[e1 d1 e1 d1 e1 f1 d1 e1@2 d1 e1 d1 e1 f1 d1@2]/2",
})).s("gm_slap_bass_2").gain(0.64)

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

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

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@7 A ~@3 A ~@3 B ~@3 A ~@3 A ~@4 C D C D C D C D E F E ~@4 A ~@3 A ~@3 B ~@3 A ~@3 A ~@4 C D C D C D C D C D C D C D
  C D E F E G ~@8 E F E ~@4 A
>`.pickRestart({
  A: "~@6 x!2", B: "~@14 x!2", C: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", D: "x!8", E: "x", F: "~@3 x", G: "~@5 x!3",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<~@37 A B C ~@41 D ~@11 A E ~@5>".pickRestart({
  A: "x!3 ~", B: "~ x!3", C: "x!2 ~@2", D: "~ x", E: "~ x ~@2",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@7 A ~@3 A ~@3 B ~@3 A ~@3 A ~@4 C D C D C D C D E F E ~@4 A ~@3 A ~@3 B ~@3 A ~@3 A ~@4 C D C D C D C D C D C D C D
  C D E F E G ~@8 E F E ~@4 A
>`.pickRestart({
  A: "~@6 x!2", B: "~@13 x ~@2", C: "x ~@7 x ~@5 x!2", D: "~ x", E: "x", F: "~@3 x", G: "~@5 x!2 ~",
})).gain(0.64)

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

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@7 B@3 A@2 ~@7 B@3 A ~@12 A ~@7 B@3 A@2 ~@7 B@3 A ~@20 A ~ A ~ A ~ A ~@5 A ~@3
>`.pickRestart({
  A: "x", B: "x ~@2 x",
})).gain(0.64)

// drums · ride
const ride = s("rd").struct("<~@12 A@3 B ~@8 A@3 C ~@20 A@3 B ~@8 A@3 C ~@36>".pickRestart({
  A: "~ x!5 ~ x", B: "~ x!5 ~@2", C: "~ x!6 ~",
})).gain(0.64)

stack(
  distortion_guitar, acoustic_guitar_steel, distortion_guitar_2, bass, kick, snare, low_tom, hihat, mid_tom, open_hat,
  crash, ride
)

More by Silverchair