Strudelify

Worry Rock

Green Day

KeyE majorTempo278 bpm
0:00/0:00
// Worry Rock — Green Day
// 278 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 168 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(278/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.

// bass · electric bass finger
const bass = note(`<
  ~@7 A B@2 C@2 D@2 E@2 C@2 F@2 B@2 C@2 D@2 G@2 D@2 E@2 H I J K L M N O H I J K P@2 E@2 C@2 E@2 Q D G@2 R@2 G@2 S@2 T@2
  U@2 V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL@2 AM AN AO AP AQ AR@2 AS AT AU@2 AV AW AX AY AZ H I J K L M N O H I
  J K P@2 E@2 BA ~@6 BB R@2 G@2 D@2 E@2 C@2 E@2 Q D G@2 R@2 G@2 S@2 T@2 U@2 BC C S@2 T@2 U@2 BC C S@2 T@2 U@2 BD ~
>`.pickRestart({
  A: "~@4 e2@3 ~ e2@3 ~ b1@3 ~", B: "a1@3 ~ a1@3 ~ a1@3 ~ a1@3 ~", C: "e2@3 ~ e2@3 ~ e2@3 ~ e2@3 ~",
  D: "a2@3 ~ a2@3 ~ a2@3 ~ a2@3 ~", E: "b2@3 ~ b2@3 ~ b2@3 ~ b2@3 ~", F: "b1@3 ~ b1@3 ~ b1@3 ~ b1@3 ~",
  G: "e3@3 ~ e3@3 ~ e3@3 ~ e3@3 ~", H: "c#3@3 ~ c#3@3 ~ [c#3,c#5,e5,g#5]@3 ~ [d#3,c#5,e5,g#5]@3 ~",
  I: "e3@3 ~ d#3@3 ~ [c#3,c#5,e5,g#5]@3 ~ c#3@3 ~", J: "~@4 g#2@3 ~ [g#2,c5,d#5,g#5]@3 ~ [g#2,c5,d#5,g#5]@3 ~",
  K: "g#2@3 ~ g#2@3 ~ [g#2,c5,d#5,g#5]@3 ~ g#2@3 ~", L: "a2@3 ~ a2@3 ~ [a2,c#5,e5,a5]@3 ~ [a2,c#5,e5,a5]@3 ~",
  M: "a2@3 ~ a2@3 ~ [a2,c#5,e5,a5]@3 ~ a2@3 ~", N: "e3@3 ~ e3@3 ~ [g#3,b4,e5,g#5]@3 ~ [a3,b4,e5,g#5]@3 ~",
  O: "g#3@3 ~ f#3@3 ~ [e3,b4,e5,g#5]@3 ~ d#3@3 ~", P: "f#2@3 ~ f#2@3 ~ f#2@3 ~ f#2@3 ~", Q: "a2@3 ~ a2@3 ~@5 a2@3 ~",
  R: "a3@3 ~ a3@3 ~ a3@3 ~ a3@3 ~",
  S: "[a2@3 ~ a2@3 ~ a2@3 ~ a2@3 ~ a2@3 ~ a2@3 ~ a2@3 ~ a2@3 ~, [a4,c#5,e5]@29 ~@3]/2", // A
  T: "[a2@3 ~ a2@3 ~ a2@3 ~ a2@3 ~ a2@3 ~ a2@3 ~ a2@3 ~ a2@3 ~, [c5,e5]@29 ~@3]/2", // C
  U: "[e2@3 ~ e2@3 ~@5 e2@3 ~ e2@3 ~ e2@3 ~ e2@3 ~ e2@3 ~, [b4,e5]@29 ~@3]/2", V: "e2@3 ~ b2@3 ~ b2@3 ~ b2@3 ~",
  W: "b2@3 ~ b2@3 ~ b2@4 b2@3 ~", X: "e2@4 e2@3 ~ [e2,g#2]@3 ~ [e2,a2]@3 ~", Y: "~@4 e2@3 ~ e2@4 e2@3 ~, b2@3 ~@5",
  Z: "b2@4 ~@4 b2@3 ~ b2@3 ~, ~@4 d#3@3 ~", AA: "b2@3 ~ b2@3 ~ b2@4 b2@3 ~, c#3@3 ~@5",
  AB: "a2@4 a2@3 ~ a2@3 ~ a2@3 ~, ~@4 c#3@3 ~", AC: "~@4 a2@3 ~ a2@4 a2@3 ~, b2@3 ~@5",
  AD: "[b2,e3]@3 ~ [f#2,e3]@3 ~ e3@3 ~@5", AE: "e3@3 ~ e3@3 ~ e3@3 ~@5", AF: "a2@4 ~@8 a2@3 ~, ~@4 c#3@3 ~",
  AG: "a2@3 ~ a2@3 ~ a2@4 a2@3 ~", AH: "~@4 e2@3 ~ e2@3 ~ e2@3 ~, ~@4 g#2@3 ~", AI: "e2@4 e2@3 ~ e2@3 ~@5",
  AJ: "a2@4 a2@3 ~ a2@4 a2@3 ~", AK: "a2@4 a2@3 ~ a2@3 ~ a2@3 ~, ~@4 g#2@3 ~",
  AL: "[b2@3 ~ b2@3 ~ b2@3 ~ b2@3 ~ b2@3 ~ b2@3 ~ b2@3 ~ b2@3 ~, g#2@6 ~@2 f#2@21 ~@3]/2",
  AM: "e2@3 ~ e2@3 ~ [e2,e5]@3 ~ [e2,e5]@3 ~", AN: "e2@3 ~ [e2,e5]@3 ~ [e2,e5]@3 ~ [e2,d#5]@3 ~",
  AO: "d#5@3 ~ [b2,e5]@3 ~ [b2,e5]@3 ~ b2@3 ~", AP: "[b2,f#5]@3 ~ [b2,e5]@3 ~ [b2,e5]@3 ~ [b2,b4]@3 ~",
  AQ: "a2@3 ~ a2@3 ~ a2@3 ~ [a2,b4,e5]@3 ~, [c#5,e5]@5 ~@3", // Asus2 C#m
  AR: "[[a2,c#5,e5]@3 ~ [a2,b4,e5]@3 ~ a2@3 ~ [a2,e5]@3 ~@5 e2@3 ~ [e2,b4,e5]@3 ~ [e2,b4,e5]@3 ~, ~@3 c#5@2 ~@3]/2", // A Asus2 A5 E5
  AS: "[e2,b4,e5]@3 ~ [e2,g#4,e5]@3 ~ [e2,g#4,e5]@3 ~ [e2,b4,e5]@3 ~", // E5 E E5
  AT: "a2@3 ~ a2@3 ~ a2@3 ~ [a2,b4,e5]@3 ~, [c#5,e5]@3 ~@5", // Asus2 C#m
  AU: "[a2@3 ~ [a2,b4,e5]@3 ~ [a2,g#4,e5]@3 ~ [a2,e5]@3 ~ [e2,e5]@3 ~ [e2,b4,e5]@3 ~ e2@3 ~ [e2,b4,e5]@3 ~, ~@12 c#5@7 ~@13]/2", // Asus2 Amaj7 A5 E E5
  AV: "[e2,b4,e5]@3 ~ e2@3 ~ e2@3 ~ e2@3 ~", AW: "a2@3 ~ a2@3 ~ a2@3 ~ a2@3 ~, [c#5,e5]@5 ~@3",
  AX: "[a2,c#5,e5]@3 ~ [a2,b4,e5]@3 ~ a2@3 ~ [a2,c#5,e5]@3 ~", AY: "[b2,b4]@3 ~ [b2,d#5]@3 ~ b2@3 ~ [b2,c#5]@3 ~",
  AZ: "b2@3 ~ [b2,b4]@3 ~ b2@3 ~ [b2,b4]@3 ~", BA: "e2@3 ~@13", BB: "~@8 e2@3 ~ b2@3 ~", BC: "e2@3 ~@5 e2@3 ~ e2@3 ~",
  BD: "e2@13 ~@3",
})).s("gm_electric_bass_finger").gain(0.36)

// bass · electric bass finger · soft notes
const bass_soft = note(`<
  ~@34 A ~@7 A ~@9 B ~@9 C@2 D@2 ~@3 E F ~@2 G H@2 I J K L ~@5 M N ~@2 O P ~@2 Q R S T O U V ~@2 A ~@7 A ~@25 B ~@9 C@2
  D@2 W ~@3 C@2 D@2 W ~@3 C@2 D@2 ~@2
>`.pickRestart({
  A: "g#2@3 ~@13", B: "~@8 a2@3 ~@5", C: "[a4@29 ~@3]/2", D: "[~@8 e2@3 ~@21, g#4@29 ~@3]/2", E: "e2@3 ~@13",
  F: "~@4 b2@3 ~@9", G: "a2@3 ~@13", H: "[~@12 e3@3 ~@13 e3@3 ~, ~@8 g#2@21 ~@3]/2", I: "~@4 a2@3 ~ a2@3 ~@5",
  J: "b2@3 ~@5", K: "b2@3 ~@5, e2@3 ~@13", L: "~@12 e2@3 ~", M: "e5@3 ~@13", N: "b2@3 ~@9 f#5@3 ~",
  O: "~@8 [g#4,e5]@3 ~@5", P: "[e2,e5]@4 [b4,e5]@3 ~@9", Q: "[c#5,e5]@3 ~@13", R: "~@8 [b4,e5]@3 ~@5",
  S: "~@4 [g#4,e5]@3 ~ [g#4,e5]@3 ~ [b4,e5]@3 ~", T: "~@12 [b4,e5]@3 ~", U: "~@8 [d#5,f#5]@3 ~@5",
  V: "[c#5,e5]@3 ~@5 [b4,d#5]@3 ~@5", W: "~@4 e2@3 ~@9",
})).s("gm_electric_bass_finger").gain(0.22)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  A@2 B@2 C@2 A D E@2 F@2 C@2 B@2 A@2 B@2 G C A@2 C@2 A@2 C@2 B@2 H I J K L M N O P I J K Q@2 R@2 F@2 B@2 C@2 A@2 C@2
  A@2 S T U V W X Y Z AA AB AC AD AE AF A@2 AG G AH AI AF AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB H I J
  K L M N O P I J K Q@2 R@2 BC ~@6 BD C@2 A@2 C@2 B@2 F@2 B@2 C@2 A@2 C@2 A@2 S T U V W X BE N S T U V W X BE N S T U V
  W X BF@2
>`.pickRestart({
  A: "[e3,b3,e4]@3 ~ [e3,b3,e4]@3 ~ [e3,b3,e4]@3 ~ [e3,b3,e4]@3 ~", // E5
  B: "[b2,f#3,b3]@3 ~ [b2,f#3,b3]@3 ~ [b2,f#3,b3]@3 ~ [b2,f#3,b3]@3 ~", // B5
  C: "[a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~", // A5
  D: "[e3,b3,e4]@3 ~ [e3,b3]@3 ~ [e3,b3]@3 ~ [b2,e3]@3 ~", // E5
  E: "[e3,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~", // A5
  F: "[e2,b2,e3]@3 ~ [e2,b2,e3]@3 ~ [e2,b2,e3]@3 ~ [e2,b2,e3]@3 ~", // E5
  G: "[a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ [e3,a3]@3 ~ [e3,a3]@3 ~", // A5
  H: "[c#3,g#3,c#4]@3 ~ [c#3,g#3,c#4]@3 ~ [g#3,c#4]@3 ~ [c#3,g#3,c#4]@3 ~", // C#5
  I: "c#4@3 ~ [c#3,c#4]@3 ~ c#4@3 ~ [c#3,g#3,c#4]@3 ~", // C# C#5
  J: "d#3@3 ~ [g#2,d#3,g#3]@3 ~ [g#2,d#3,g#3]@3 ~ [g#2,d#3,g#3]@3 ~", // G#5
  K: "[g#2,d#3,g#3]@3 ~ [g#2,d#3,g#3]@3 ~ [d#3,g#3]@3 ~ [g#2,d#3,g#3]@3 ~", // G#5
  L: "[a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3]@3 ~ [a2,e3]@3 ~", // A5
  M: "[a2,e3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~", // A5
  N: "[e2,b2,e3]@3 ~ [b2,e3]@3 ~ [e2,b2,e3]@3 ~ [e2,b2,e3]@3 ~", // E5
  O: "[e2,b2,e3]@3 ~ [e2,b2,e3]@3 ~ [e2,b2,e3,b3,e4,g#4]@3 ~ [e2,b2,e3]@3 ~", // E5 E E5
  P: "[c#3,g#3,c#4]@3 ~ [c#3,g#3,c#4]@3 ~ g#3@3 ~ [c#3,g#3,c#4]@3 ~", Q: "f#2@3 ~ f#2@3 ~ f#2@3 ~ f#2@3 ~",
  R: "b2@3 ~ b2@3 ~ b2@3 ~ b2@3 ~", S: "[a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ [e3,a3]@3 ~ e3@3 ~",
  T: "[e3,a3]@3 ~ e3@3 ~ e3@3 ~ e3@3 ~", U: "[e3,a3]@3 ~ e3@3 ~ e3@3 ~ [a2,e3]@3 ~", V: "e3@3 ~ e3@3 ~ [e3,a3]@3 ~@5",
  W: "~@4 e3@3 ~ [b2,e3]@3 ~@5", X: "b2@3 ~@9 b2@3 ~", Y: "[e2,b2,e3]@3 ~ d#4@3 ~ [f#3,b3,d#4]@3 ~ [b3,d#4]@3 ~",
  Z: "[f#3,b3,d#4]@3 ~ [b3,d#4]@3 ~ [b3,d#4]@3 ~ [b3,d#4]@3 ~", AA: "b3@3 ~ [e3,b3]@3 ~ b3@3 ~ [e3,b3]@3 ~",
  AB: "b3@3 ~ [b3,e4]@3 ~ e4@3 ~ e4@3 ~", AC: "[b2,f#3,b3]@3 ~ [b2,b3]@3 ~ b3@3 ~ b3@3 ~",
  AD: "[f#3,b3]@3 ~ [f#3,b3]@3 ~ [f#3,b3]@3 ~@5", AE: "e3@3 ~ [e3,a3]@3 ~ [e3,a3]@3 ~ [e3,a3]@3 ~",
  AF: "[e3,a3]@3 ~ [e3,a3]@3 ~ [e3,a3]@3 ~ [e3,a3]@3 ~", AG: "[a2,e3]@3 ~ [e3,a3]@3 ~ [e3,a3]@3 ~ [e3,a3]@3 ~",
  AH: "[b3,e4]@3 ~ [e3,b3,e4]@3 ~ [b3,e4]@3 ~ e3@3 ~", AI: "[b3,e4]@3 ~ [b3,e4]@3 ~ [e3,b3,e4]@3 ~ [e3,b3,e4]@3 ~",
  AJ: "[e3,a3]@3 ~ [e3,a3]@3 ~ e3@3 ~ [e3,a3]@3 ~", AK: "[b2,b3]@3 ~ [b2,f#3,b3]@3 ~ b3@3 ~ [f#3,b3]@3 ~",
  AL: "[f#3,b3]@3 ~ b3@3 ~ [b2,f#3,b3]@3 ~ [f#3,b3]@3 ~", AM: "[b3,e4]@3 ~ [b3,e4]@3 ~ [b3,e4]@3 ~ [b3,e4]@3 ~",
  AN: "[e3,b3]@3 ~ [b3,e4]@3 ~ [b3,e4]@3 ~ [e3,b3,e4]@3 ~", AO: "[f#3,b3]@3 ~ [b2,b3]@3 ~ b3@3 ~ [b2,f#3,b3]@3 ~",
  AP: "[b2,b3]@3 ~ b3@3 ~ [b2,f#3,b3]@3 ~ b3@3 ~", AQ: "a3@3 ~ [a2,e3,a3]@3 ~ [e3,a3]@3 ~ [e3,a3]@3 ~",
  AR: "[a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ a3@3 ~ [e3,a3]@3 ~", AS: "e3@3 ~ [e3,b3,e4]@3 ~ [e3,b3,e4]@3 ~ [e3,e4]@3 ~",
  AT: "[e3,b3,e4]@3 ~ [e3,b3,e4]@3 ~ [b3,e4]@3 ~ [b3,e4]@3 ~", AU: "~@4 [a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3]@3 ~",
  AV: "[e3,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ a3@3 ~", AW: "b3@3 ~ [e3,b3,e4]@3 ~ [e3,b3,e4]@3 ~ [b3,e4]@3 ~",
  AX: "[e3,b3,e4]@3 ~ [e3,b3,e4]@3 ~ [e3,b3,e4]@3 ~ [b3,e4]@3 ~", AY: "~@4 [a2,e3,a3]@3 ~ a3@3 ~ a3@3 ~",
  AZ: "a3@3 ~ [e3,a3]@3 ~ a3@3 ~ [e3,a3]@3 ~", BA: "[b2,f#3,b3]@3 ~ [b2,f#3,b3]@3 ~ b3@3 ~ [b2,b3]@3 ~",
  BB: "[b2,b3]@3 ~ b3@3 ~ [b2,f#3,b3]@3 ~ [b2,f#3,b3]@3 ~", BC: "[e2,b2,e3]@3 ~@13",
  BD: "~@4 [e3,b3,e4]@3 ~ [e3,b3,e4]@3 ~ [b2,f#3,b3]@3 ~", BE: "[b2,e3]@3 ~ [b2,e3]@3 ~ [e2,b2,e3]@3 ~ [b2,e3]@3 ~",
  BF: "[[e2,e3]@29 ~@3]/2", // E
})).s("gm_overdriven_guitar").gain(0.31)

// chords · overdriven guitar · soft notes
const overdriven_guitar_soft = note(`<
  ~@8 A@2 ~@10 B ~@11 C D E F G H I ~ J D E F ~@16 K L M N O P Q R S T U V W X ~@2 Y B Z AA X AB AC AD AE AF AG AH AI AJ
  AK AL AM AN AO AP AQ AR AS AT C D E F G H I ~ J D E F ~@32 K L M N O P AU I K L M N O P AU I K L M N O P AV@2
>`.pickRestart({
  A: "a2@3 ~@13", B: "~@8 a2@3 ~ a2@3 ~", C: "~@8 c#3@3 ~@5", D: "[c#3,g#3]@3 ~ g#3@3 ~ [c#3,g#3]@3 ~@5",
  E: "[g#2,g#3]@3 ~@13", F: "~@8 g#2@3 ~@5", G: "~@8 a3@3 ~ a3@3 ~", H: "a3@3 ~@13", I: "~@4 e2@3 ~@9",
  J: "~@8 [c#3,c#4]@3 ~@5", K: "~@8 a2@3 ~ [a2,a3]@3 ~", L: "a2@3 ~ [a2,a3]@3 ~ [a2,a3]@3 ~ [a2,a3]@3 ~",
  M: "a2@3 ~ [a2,a3]@3 ~ [a2,a3]@3 ~ a3@3 ~", N: "[a2,a3]@3 ~ [a2,a3]@3 ~ a2@3 ~ [a2,e3]@3 ~",
  O: "[e2,b2,e3]@3 ~ [e2,b2]@3 ~ e2@3 ~ [e2,b2,e3]@3 ~", P: "[e2,e3]@3 ~ [e2,b2,e3]@3 ~ [e2,b2,e3]@3 ~ [e2,e3]@3 ~",
  Q: "~@4 [f#3,b3]@3 ~@5 f#3@3 ~", R: "~@4 f#3@3 ~ f#3@3 ~ f#3@3 ~", S: "[e3,e4]@3 ~ e4@3 ~ [e3,e4]@3 ~ e4@3 ~",
  T: "[e3,e4]@3 ~ e3@3 ~ [e3,b3]@3 ~ [e3,b3]@3 ~", U: "~@4 f#3@3 ~ [b2,f#3]@3 ~ [b2,f#3]@3 ~",
  V: "b2@3 ~ b2@3 ~ b2@3 ~ [b2,f#3,b3]@3 ~", W: "[a2,a3]@3 ~ a2@3 ~ a2@3 ~ a2@3 ~", X: "a2@3 ~ a2@3 ~ a2@3 ~ a2@3 ~",
  Y: "a3@3 ~ a2@3 ~ a2@3 ~ a2@3 ~", Z: "e3@3 ~@5 e3@3 ~ [b3,e4]@3 ~", AA: "e3@3 ~ e3@3 ~@9",
  AB: "a2@3 ~ a2@3 ~ [a2,a3]@3 ~ a2@3 ~", AC: "f#3@3 ~@5 [b2,f#3]@3 ~ b2@3 ~", AD: "b2@3 ~ [b2,f#3]@3 ~@5 b2@3 ~",
  AE: "e3@3 ~ e3@3 ~ e3@3 ~ e3@3 ~", AF: "e4@3 ~ e3@3 ~ e3@3 ~@5", AG: "b2@3 ~ f#3@3 ~ [b2,f#3]@3 ~@5",
  AH: "f#3@3 ~ [b2,f#3]@3 ~@5 [b2,f#3]@3 ~", AI: "[a2,e3]@3 ~@5 a2@3 ~ a2@3 ~", AJ: "~@8 [a2,e3]@3 ~ a2@3 ~",
  AK: "[b3,e4]@3 ~@9 b3@3 ~", AL: "~@8 e3@3 ~ e3@3 ~", AM: "[a2,e3,a3]@3 ~@9 a3@3 ~", AN: "a2@3 ~@9 [a2,e3]@3 ~",
  AO: "[e3,e4]@3 ~@9 e3@3 ~", AP: "~@12 e3@3 ~", AQ: "[a2,e3,a3]@3 ~@5 [a2,e3]@3 ~ [a2,e3]@3 ~",
  AR: "[a2,e3]@3 ~ a2@3 ~ [a2,e3]@3 ~ a2@3 ~", AS: "~@8 [b2,f#3]@3 ~ f#3@3 ~", AT: "f#3@3 ~ [b2,f#3]@3 ~@9",
  AU: "e2@3 ~ e2@3 ~@5 e2@3 ~", AV: "[b2@29 ~@3]/2",
})).s("gm_overdriven_guitar").gain(0.15)

// drums · snare
const snare = s("sd").struct(`<
  ~@6 A B C@7 D C@15 D E F E F E F E F E F E F G@2 H D C@35 D C@15 I E F E F E F E F E F E F G@2 H D B ~@5 J A C@7 D
  C@18 J D C@6 J D C@6 ~@2
>`.pickRestart({
  A: "x!2", B: "x", C: "x!2 ~ x", D: "x!8", E: "~@2 x!2", F: "~ x", G: "x!4", H: "x ~ x!3 ~ x!2", I: "x ~ x ~ x!4",
  J: "x!5 ~ x!2",
})).gain(0.31)

// drums · splash
const splash = s("cr").struct(`<
  ~@7 A B@7 ~ B@15 ~ C@12 ~@4 B@35 ~ B@15 ~ C@12 ~@11 C B@7 ~ B@18 ~@2 B@6 ~@2 B@6 D ~
>`.pickRestart({
  A: "~ x!3", B: "~ x", C: "x!4", D: "x",
})).gain(0.31)

stack(bass, bass_soft, overdriven_guitar, overdriven_guitar_soft, snare, splash)

More by Green Day