Strudelify

Anthem For The Year 2000

Silverchair

KeyA minorTempo88 bpm
0:00/0:00
// Anthem For The Year 2000 — Silverchair
// 88 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 83 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(88/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 · overdriven guitar · "E. Guitar"
const overdriven_guitar = note(`<
  ~@4 A B A B A B A B ~@8 A B A B A B A B C D E F G H E F G F E F G F I B I B I B I B J K J K ~@12 I B I B I B I B I B I
  B J K J K ~
>`.pickRestart({
  A: "[a2,e3,a3]@2 [a2,e3,a3] [g2,d3,g3] [a2,e3,a3] [g2,d3,g3] ~ [e2,b2,e3]", // A5 G5 A5 G5 E5
  B: "[f2,c3,f3]@2 [f2,c3,f3] [c3,g3,c4] [d2,a2,d3]@2 [d2,a2,d3]@2", C: "[a2,e3,a3]", D: "[d#2,a#2,d#3]", E: "a3@7 c4",
  F: "g3 f3", G: "a3@7 b3", H: "g3@2 f3 e3",
  I: "[a2,e3,a3]@2 [a2,e3,a3] [g2,d3,g3] [a2,e3,a3] [g2,d3,g3] [a2,e3,a3] [e2,b2,e3]", J: "[a2,e3,a3]!2 ~@2",
  K: "~@3 [c3,g3,c4] [d2,a2,d3]@2 [d2,a2,d3]@2", // C5 D5
})).s("gm_overdriven_guitar").gain(0.53)

// bass · electric bass pick · "Bass Guitar"
const bass = note(`<
  ~@4 A B C B A B A B ~@8 A B A B A B A B ~@6 D B D B D B D B E B E B E B E B F G F G E B E B E B E B ~@4 E B E B E B E
  B E B E B F G F G ~
>`.pickRestart({
  A: "a1@2 a1 g1 a1 g1 ~ e1", B: "f1@2 f1 c2 d1@2 d1@2", C: "a1@2 a1 g1 a1 g1 ~ d1", D: "a1@2 a1 g1 a1 g1 a1 d1",
  E: "a1@2 a1 g1 a1 g1 a1 e1", F: "a1!2 ~@2", G: "~@3 c2 d1@2 d1@2",
})).s("gm_electric_bass_pick").gain(0.52)

// other · overdriven guitar · "Solo Guitar"
const overdriven_guitar_2 = note("<~@4 A B C B D@2 E@2 ~@8 A B C B D@2 E@2 ~@55>".pickRestart({
  A: "a3!4", B: "a3@2 a3@2 a3@2 a3 g3", C: "g3 a3@3 a3@4 a3@4 a3@4", D: "[g3 a3@5 c4@8 d4@16 g3@2]/2",
  E: "[g3 a3@5 d4@4 a3@4 e4@18]/2",
})).s("gm_overdriven_guitar").gain(0.55)

// drums · kick
const kick = s("bd").struct("<A@28 B@2 A@4 C A C A C A C A C@8 D E D E A@12 C@12 D F D F ~>".pickRestart({
  A: "x ~@4 x ~@2", B: "x", C: "x ~@3 x!2 ~@2", D: "x ~ x ~@2 x ~@2", E: "x ~@2 x!2 ~@3", F: "x ~@2 x!2 ~ x ~",
})).gain(0.6)

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

// drums · hihat
const hihat = s("hh").struct("<A@12 ~@7 B C A@7 ~@5 B A@7 D ~@12 A@8 ~@3 B ~@17>".pickRestart({
  A: "x!8", B: "~@3 x", C: "~ x!7", D: "x!5 ~@3",
})).gain(0.6)

// drums · open hat
const open_hat = s("oh").struct("<~@19 A ~@13 A ~@7 A B@8 ~@15 A C D C D C D C D C D C@2 ~@5>".pickRestart({
  A: "~@5 x ~@2", B: "x!8", C: "~ x!7", D: "~ x!3 ~ x!3",
})).gain(0.6)

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

stack(overdriven_guitar, bass, overdriven_guitar_2, kick, snare, hihat, open_hat, crash)

More by Silverchair