Strudelify

Redundant

Green Day

KeyA majorTempo122 bpm
0:00/0:00
// Redundant — Green Day
// 122 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 93 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(122/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 · distortion guitar · "tk2"
const distortion_guitar = note(`<
  A B C D E F A G H F I J A F K L H F I J A F K@2 A B C D E F A G H F I J A F K L H F I J A F K@2 A B C D E F A G H F I
  J A F K L H F I J D E K@2 A B C D E F A@3 B C D E F A G M N O P@2
>`.pickRestart({
  A: "[a2,e3,a3]!8", B: "[g#2,d#3,g#3]!8", C: "[g2,d3,g3]!8", D: "[f#2,c#3,f#3]!8", E: "[b2,f#3,b3]!8",
  F: "[d3,a3,d4]!8", G: "[a2,e3,a3]!4 [e3,b3,e4]@2 [e3,b3,e4]@2", H: "[a2,e3,a3]@2 [a2,e3,a3]!6",
  I: "[a2,e3,a3]!6 [d3,a3,d4]@2", J: "[a2,e3,a3]!7 [g#2,d#3,g#3]", K: "[e2,b2,e3]!8",
  L: "[e2,b2,e3]!4 [g2,d3,g3]@2 [g2,d3,g3]@2", M: "[a2,e3,a3]", N: "[g#2,d#3,g#3]", O: "[g2,d3]", P: "f#2/2",
})).s("gm_distortion_guitar").gain(0.4)

// bass · electric bass pick · "tk3"
const bass = note(`<
  A B C D E F G H I F J K L F M N I F J K L F M O A B C D E F G H I F J K L F M N I F J K L F M O A B C D E F G H I F J
  K L F M N I F J K P Q M O A B C D E F G R A B C D E F G H S T U V@2
>`.pickRestart({
  A: "a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 a1 b1 a1@2", B: "g#1@2 g#1@2 g#1@2 g#1@2 g#1@2 g#1@2 g#1 a1 g#1@2", C: "g1!8",
  D: "f#2!5 e2 d2 c#2", E: "b1!7 c#2", F: "d2!7 c#2", G: "a1!4 e2 a1!2 c#2", H: "a1!2 b1 a1 e2@2 e2@2",
  I: "a1@2 a1!5 c#2", J: "a1!6 d2@2", K: "a1!7 g#1", L: "a1!7 c#2", M: "e1!4 b1 e1!2 g#1", N: "e1!4 g1@2 g1@2",
  O: "e1!2 f#1 g#1 f#1 e1!3", P: "f#1!7 a#1", Q: "b1!7 g1", R: "a1!2 b1 c#2 b1 a1!3", S: "a1@6 a1@6 a1 b1 a1@2",
  T: "g#1@6 g#1@6 g#1 a1 g#1@2", U: "g1@3 g1@2 a1 g1@2", V: "f#1/2",
})).s("gm_electric_bass_pick").gain(0.44)

// chords · distortion guitar · "tk4"
const distortion_guitar_2 = note(`<
  A B C ~@21 A B C ~@21 A B C ~@5 D E F G D E H@2 D E F G I J K@2 A B C ~@5 A B C ~@5 A B C ~@2
>`.pickRestart({
  A: "a2@3 c#4@2 a3@3", B: "g#2@3 c#4@2 a3@3", C: "g2@3 c#4@2 a3@3",
  D: "~@3 c#5@2 ~@2 c#4, a4@2 a4@2 ~ a4@2 ~, ~ e4@2 ~@3 e4@2",
  E: "~@3 f#5@2 ~@2 f#4, d5@2 d5@2 ~ d5@2 ~, ~ a4@2 ~@3 a4@2", F: "~@3 c#5@2 a4 d5@2, a4!2 ~@2, ~ e4@2 ~@5",
  G: "~@3 c#5@2 a4@2 g#4, a4!2 ~@2, ~ e4@2 ~@5",
  H: "[~@3 g#4@2 ~@2 b4@2 ~@2 b3 ~@4, e4@2 e4@2 ~ e4@2 ~@3 e4@2 ~@4, ~ b3@2 ~@3 g#4@2 ~ g#4@2 ~@5]/2",
  I: "~@3 a#4@2 ~@2 a#3, f#4@2 f#4@2 ~ f#4@2 ~, ~ c#4@2 ~@3 c#4@2",
  J: "~@3 d#4@2 ~@2 f#4, b3@2 b3@2 ~ b3@2 ~, ~ f#3@2 ~@3 d#4@2",
  K: "[~@3 g#4@2 ~@2 b4@2 ~@2 b3 ~@3 b3, e4@2 e4@2 ~ e4@2 ~@3 e4@2 e4@2 g#3@2, ~ b3@2 ~@3 g#4@2 ~ g#4@2 ~@2 b3@2 ~]/2",
})).s("gm_distortion_guitar").gain(0.4)

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

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

// drums · low tom
const low_tom = s("lt").struct("<A@3 B ~@19 C A@3 B ~@19 C A@3 B ~@19 C A@3 B ~@4 A@3 B ~@4 A@3 ~@2>".pickRestart({
  A: "~@2 x!6", B: "~@2 x!3 ~@3", C: "~@15 x",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<~@8 A B C B@3 ~@2 A B C B@3 ~@10 A B C B@3 ~@2 A B C B@3 ~@47>".pickRestart({
  A: "~@2 x!6", B: "x!8", C: "x!6 ~@2",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<A@3 B ~@19 C A@3 B ~@19 C A@3 B ~@19 C A@3 B ~@4 A@3 B ~@4 A ~@4>".pickRestart({
  A: "~@3 x!5", B: "~@3 x!2 ~@3", C: "~@7 x",
})).gain(0.4)

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

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

// drums · ride bell
const ride_bell = s("rd").struct("<~@91 x ~>").gain(0.4)

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

More by Green Day