Strudelify

Stuck With Me

Green Day

KeyE♭ majorTempo189 bpm
0:00/0:00
// Stuck With Me — Green Day
// 189 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 106 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(189/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · "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.

// other · distortion guitar · "Guitar"
const distortion_guitar = note(`<
  A B C D E F C G H I J K L K L M E N O P Q R Q M S T U V@2 W X Y S Z@2 AA AB AC AD AE U AF AG K Q M L AH AI AJ J M L M
  AK M AL T U AA AL AM AN AO S AP AN AQ AR AC E AS AR AB E AS AR AT E F C AU E AV AR AB ~@4 AL AW@2 AO S W X AX@2 AM AY
  AZ BA AC AD BB
>`.pickRestart({
  A: "eb3@3 ~ eb3@3 ~ eb3 ~ eb3 ~ eb3@2 ~@2", B: "eb3@3 ~ eb3 ~ c3 ~@3 bb2@5 ~",
  C: "ab2@3 ~ ab2@3 ~ ab2 ~ ab2 ~ ab2@3 ~", D: "ab2@3 ~ ab2 ~ ab2@3 ~ ab2 ~ ab2@3 ~",
  E: "eb3@3 ~ eb3@3 ~ eb3 ~ eb3 ~ eb3@3 ~", F: "eb3@3 ~ eb3 ~ c3@2 ~@2 bb2@6", G: "ab2@3 ~ ab2 ~ ab2@4 ab2 ~ ab2@4",
  H: "eb3@3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~", I: "eb3 ~ eb3 ~ eb3@3 ~ eb3@3 ~ eb3@4",
  J: "bb2@3 ~ bb2@3 ~ bb2 ~ bb2 ~ bb2 ~ bb2@2", K: "~@2 bb2 ~ bb2@3 ~ bb2@3 ~ bb2@4",
  L: "ab2@3 ~ ab2@3 ~ ab2@3 ~ ab2@2 bb2@2", M: "~@2 bb2 ~ bb2@3 ~ bb2@3 ~ bb2@3 ~",
  N: "eb3@3 ~ eb3 ~ eb3@3 ~ eb3 ~ eb3@4", O: "bb2@3 ~ bb2@3 ~ bb2 ~ bb2 ~ bb2@3 ~",
  P: "bb2@3 ~ bb2 ~ bb2@3 ~ bb2 ~ bb2@4", Q: "ab2@3 ~ ab2@3 ~ ab2@2 ~@2 ab2@2 bb2@2",
  R: "~ bb2 ~@2 bb2@3 ~ bb2@3 bb2@4 ~", S: "c3@3 ~ c3@3 ~ c3@3 ~ c3 ~ c3@2", T: "~@2 c3 ~ c3@3 ~ c3@3 ~ c3@4",
  U: "eb3@3 ~ eb3@3 ~ eb3@3 ~ eb3 ~ eb3@2", V: "[~ eb3 ~@2 eb3@3 ~ eb3@3 ~ eb3@3 c3@3 ~ c3@3 ~@2 c3@3 c3 ~@2 c3@2]/2",
  W: "~ c3 ~@2 c3@3 ~ c3@3 ~ c3@4", X: "eb3@3 ~ eb3@3 ~ eb3@3 eb3 ~ eb3@3", Y: "~ eb3 ~ eb3@3 ~ eb3@3 ~@2 eb3@4",
  Z: "[~@2 c3 ~ c3@3 ~ c3@3 ~ c3@3 eb3@3 ~@2 eb3@3 ~ eb3@3 ~ eb3 ~ eb3@2]/2", AA: "~@2 eb3 ~ eb3@3 ~ eb3@3 ~ eb3@3 ~",
  AB: "ab2@3 ~ ab2@3 ~ ab2@3 ~ ab2@4", AC: "bb2@3 ~ bb2@3 ~ bb2@3 ~ bb2@4", AD: "eb3@3 ~ eb3@3 ~ eb3@3 ~ eb3@3 ~",
  AE: "eb3@2 ~@2 eb3@3 ~ eb3@2 ~@6", AF: "~@2 eb3 ~ eb3@3 ~ eb3@3 ~ eb3@4", AG: "bb2@3 ~ bb2@3 ~ bb2@3 ~ bb2 ~ bb2@2",
  AH: "~@2 bb2 ~ bb2@3 ~ bb2 ~ bb2 ~ bb2@4", AI: "eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3@2",
  AJ: "~@2 eb3 ~ eb3 ~ eb3 ~ eb3@3 ~ eb3@4", AK: "ab2@3 ~ ab2@4 ab2@3 ~@2 bb2@3, ~@6 ab2 ~",
  AL: "c3@3 ~ c3@3 ~ c3@2 ~@2 c3 ~ c3@2", AM: "~ c3 ~@2 c3@3 ~ c3@3 ~ c3@3 ~",
  AN: "eb3@3 ~ eb3@3 ~ eb3@3 eb3 ~@2 eb3@2", AO: "~ eb3 ~@2 eb3@3 ~ eb3@3 ~ eb3@3 ~",
  AP: "~@2 c3 ~ c3@3 ~ c3@2 ~@2 c3@4", AQ: "~ eb3 ~@2 eb3@3 ~ eb3@3 ~ eb3@4", AR: "ab2@3 ~ ab2@3 ~ ab2@3 ~ ab2@3 ~",
  AS: "eb3@3 ~ eb3 ~ c3@2 ~@2 bb2@5 ~", AT: "ab2@3 ~ ab2 ~ ab2@3 ~ ab2 ~ ab2@4",
  AU: "ab2@3 ~ ab2 ~ ab2@3 ab2 ~@2 ab2@4", AV: "eb3@3 ~ eb3@2 c3@2 ~@2 bb2@6",
  AW: "[~@2 c3 ~ c3@3 ~ c3@3 ~ c3@3 eb3@3 ~@2 eb3@3 ~ eb3@3 eb3 ~@2 eb3@2]/2",
  AX: "[~ eb3 ~@2 eb3@3 ~ eb3@3 ~ eb3@3 c3@3 ~@2 c3@3 ~ c3@3 ~ c3 ~ c3@2]/2",
  AY: "eb3@2 ~@2 eb3@3 ~ eb3@3 ~ eb3 ~ eb3@2", AZ: "~@2 eb3@2 eb3@3 ~ eb3@3 ~ eb3@3 ~",
  BA: "ab2@3 ~ ab2@3 ~ ab2@2 ~@2 ab2@4", BB: "eb3@3 ~ eb3@3 ~ eb3@3 ~@5",
})).s("gm_distortion_guitar").gain(0.51)

// bass · electric bass pick · "Bass"
const bass = note(`<
  A B C D E F G H I ~ J K L K M N O P@2 K Q R S T U V W X@2 Y@2 Z U AA@2 AB AC AD AE AF O AB AG AH AI AJ AK T AL ~ AM N
  L R AN AO@2 AP AQ AR AS AT@2 AU AV AW AX AY AC AZ@2 BA BB BC BD@2 BE BF BG BH BI@2 E BJ BK H BL@2 BM BN BO BP BQ BR U
  BS O BT@2 BU O BV BW BX BG AF
>`.pickRestart({
  A: "eb2@3 ~@2 eb2@2 ~ eb2 ~ eb2 ~ eb2@3 ~", B: "eb2@3 ~ eb2 c2@2 ~@3 bb1@4 ~@2", C: "ab1@3 ~ ab1@3 ~@3 g1@3 ~@3",
  D: "f1@3 ~@2 g1@3 ~@4 ab1@3 ~", E: "eb2@3 ~ eb2@3 ~ eb2 ~ eb2 ~ eb2@3 ~", F: "eb2@3 ~ eb2 ~ c2@2 ~@2 bb1@5 ~",
  G: "ab1 ~ ab1 ~ g1 ~ g1 ~ f1 ~ f1 ~ g1 ~ g1 ~", H: "ab1 ~ ab1 ~ g1 ~ g1 ~ f1 ~ f1 ~ g1 ~ g1@2", I: "eb2 ~@7",
  J: "bb1@3 bb1@3 ~@2 bb1!2 ~ bb1 ~@2 bb1@2", K: "~@2 bb1 ~ bb1@3 ~ bb1@3 ~ bb1@3 ~",
  L: "ab1@3 ~ ab1@3 ~ ab1@3 ~ ab1 ~ bb1@2", M: "ab1@3 ~ ab1@3 ~ ab1@2 ~@2 ab1@2 bb1@2",
  N: "~@2 bb1 ~ bb1@3 ~ bb1@3 bb1@4 ~", O: "eb2@3 ~ eb2@3 ~ eb2@3 ~ eb2 ~ eb2@2",
  P: "[~@2 eb2 ~ eb2@3 ~ eb2@2 ~ eb2@4 bb1@3 ~@2 bb1@3 ~ bb1@3 bb1 ~ bb1@3]/2",
  Q: "ab1@3 ~ ab1@2 ~ ab1@4 ~ ab1@2 bb1@2", R: "~@2 bb1 ~ bb1@3 ~ d2@2 ~ c2@2 d2@2 ~, ~@5 db2 ~@2",
  S: "ab1@3 ab1@3 ~@2 ab1@2 ~ ab1@2 ~ bb1@2", T: "~ bb1 ~@2 bb1@3 ~ bb1@3 ~ bb1@4", U: "c2@3 ~ c2@3 ~ c2@3 ~ c2 ~ c2@2",
  V: "~@2 c2 ~ c2@2 ab1@8 ~@2", W: "~@4 bb1 ~ bb1@2 ~@4 eb2 ~ eb2@2",
  X: "[~@4 bb1 ~ bb1@2 ~@3 eb2 ~ eb2 ~ c2@3 ~@2 c2@3 ~ c2@3 ~ c2 ~ c2@2]/2",
  Y: "[~ c2 ~ c2@3 ~ c2@3 ~@2 c2@3 eb2@3 ~@2 eb2@3 ~ eb2@3 ~ eb2 ~ eb2@2]/2",
  Z: "~@2 eb2 ~ c2 ~ c2 ~ db2 ~ db2 ~ d2 ~ d2 ~",
  AA: "[~ c2 ~@2 c2@3 ~ c2@3 ~ c2@3 eb2@3 ~ eb2@3 ~@2 eb2@3 eb2 ~ eb2@3]/2", AB: "~ eb2 ~@2 eb2@3 ~ eb2@3 ~ eb2@3 ~",
  AC: "ab1@3 ~ ab1@3 ~ ab1@3 ~ ab1@4", AD: "bb1@3 ~ bb1@3 ~ bb1@3 ~ bb1@4", AE: "eb2@3 ~ eb2@3 ~ eb2@3 ~ eb2@2 ~@2",
  AF: "eb2@3 ~ eb2@3 ~ eb2@2 ~@6", AG: "bb1@3 ~ bb1@3 ~ bb1@3 bb1 ~@2 bb1@2", AH: "~ bb1 ~@2 bb1@3 ~ bb1@3 ~ bb1@3 ~",
  AI: "ab1@3 ~ ab1@3 ~ ab1@3 ab1 ~@2 bb1@2", AJ: "~@2 bb1 ~ bb1@3 d2@2 ~@2 c2@2 d2@2 ~, ~@5 db2 ~@2",
  AK: "ab1@3 ~ ab1@3 ~ ab1@3 ~ ab1@2 bb1@2", AL: "eb2@3 ~@13", AM: "bb1@3 ~ bb1@3 bb1@3 ~@2 bb1 ~ bb1@2",
  AN: "ab1@3 ~ ab1@2 ~@2 ab1@2 ~ ab1@2 ~ bb1@2",
  AO: "[~ bb1 ~@2 bb1@3 ~ bb1@3 ~ bb1@3 c2@3 ~@2 c2@3 ~ c2@2 ~@2 c2 ~ c2@2]/2", AP: "~@2 c2 ~ c2@2 ab1@10",
  AQ: "~@4 bb1 ~ bb1@3 ~@3 eb2 ~ eb2@2", AR: "~@3 bb1 ~ bb1@2 ~@5 eb2!2 ~@2", AS: "c2@2 ~@2 c2@3 c2@3 ~@2 c2 ~ c2@2",
  AT: "[~ c2 ~ c2@3 ~@2 c2@2 ~@2 c2@3 eb2@3 ~@2 eb2@3 ~ eb2@2 ~@2 eb2 ~ eb2@2]/2",
  AU: "~ eb2 ~@2 c2 ~ c2 ~ db2!2 ~@2 d2 ~ d2 ~", AV: "c2@3 ~ c2@3 ~ c2@3 c2 ~ c2@3", AW: "~ c2 ~ c2@2 ab1@9 ~@2",
  AX: "eb2@3 ~ eb2@3 ~ eb2@3 eb2 ~ eb2@3", AY: "~ eb2 ~@2 eb2@3 ~ eb2@3 eb2@4 ~",
  AZ: "[bb1@3 ~ bb1@3 bb1@3 ~@2 bb1@3 eb2@3 ~@2 eb2@3 ~ eb2 ~ eb2 ~ eb2@3 ~]/2", BA: "eb2@3 ~ eb2@2 c2@2 ~@2 bb1@5 ~",
  BB: "ab1@3 ~ ab1@4 ~@2 g1@4 ~@2", BC: "f1@3 ~@3 g1@4 ~@2 ab1@3 ~",
  BD: "[eb2@3 ~ eb2@3 ~ eb2@3 ~ eb2@3 eb2@3 ~ eb2@2 c2@3 ~@2 bb1@5 ab1]/2",
  BE: "~ ab1 ~@2 g1 ~ g1 ~ f1 ~ f1 ~ g1 ~ g1 ~", BF: "ab1 ~ ab1 ~ g1 ~ g1 ~ f1!2 ~@2 g1@4",
  BG: "eb2@3 ~ eb2@3 ~ eb2@3 ~ eb2@3 ~", BH: "eb2@3 ~ eb2 ~ c2@3 ~ bb1@5 ~",
  BI: "[ab1@3 ab1@4 ~@3 g1@3 ~@2 f1@4 ~@2 g1@3 ~@3 ab1@3 ~@2]/2", BJ: "eb2@3 ~ eb2 ~ c2@2 ~@2 bb1@4 ~ ab1",
  BK: "~ ab1 ~ g1 ~ g1 ~ f1 ~ f1 ~@2 g1 ~ g1 ~",
  BL: "[eb1 ~ eb1 ~ g1 ~ g1@2 bb1 ~@2 bb1 ~ c2 ~ c2@2 eb2 ~ eb2 ~ c2 ~ c2 ~ bb1 ~ bb1 ~ g1 ~ g1]/2",
  BM: "~ eb1 ~ eb1 ~ g1 ~ g1@2 ~ bb1!2 ~@2 g1 ~", BN: "g1 ~ eb1 ~ eb2 ~ c2 ~ c2 ~@2 bb1 ~ bb1 ~ g1",
  BO: "~ g1 ~@2 c2@3 ~ c2@3 ~ c2 ~ c2@2", BP: "~ c2 ~ c2@2 ~ ab1@10", BQ: "~@3 bb1 ~@2 bb1@2 ~@3 eb2 ~ eb2@2 ~",
  BR: "~@4 bb1 ~ bb1@2 ~@3 eb2 ~ eb2 ~@2", BS: "~ c2 ~ c2@2 ab1@3 ~@4 ab1@4",
  BT: "[~ eb2 ~@2 c2 ~ c2 ~ db2 ~ db2 ~ d2 ~ d2 c2@2 ~@3 c2@3 ~ c2@3 c2 ~@2 c2@2]/2",
  BU: "~ c2 ~ c2@3 ~@2 c2@3 ~ c2@3 ~", BV: "~ eb2 ~ eb2@3 ~@2 eb2@3 ~ eb2@3 ~", BW: "ab1@3 ~ ab1@3 ~ ab1@3 ~ ab1@3 ~",
  BX: "bb1@3 bb1@3 ~@2 bb1@3 ~ bb1@3 ~",
})).s("gm_electric_bass_pick").gain(0.51)

// drums · kick
const kick = s("bd").struct(`<
  A@7 B ~@2 C A@4 B A@3 B A@7 B A@11 ~ C B A@5 D A@3 B A@3 B A@30 ~@4 C A@14 E
>`.pickRestart({
  A: "x!2 ~ x!3 ~ x", B: "x ~@2 x!2 ~@3", C: "~ x ~ x!3 ~ x", D: "~ x ~@6", E: "~ x ~@2 x ~@3",
})).gain(0.51)

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

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@47
  [~@12 x!4]
  ~@38
  [x ~@3 x ~@4 x ~@3 x ~@2]
  [~ x ~@3 x ~@3 x ~@4 x ~]
  [~ x ~@4 x ~@3 x ~@3 x ~]
  [~@2 x ~@4 x ~@2 x ~@3 x ~]
  ~@16
>`).gain(0.51)

// drums · mid tom
const mid_tom = s("mt").struct("<~@47 [~@8 x ~ x!2 ~@4] ~@58>").gain(0.51)

// drums · open hat
const open_hat = s("oh").struct(`<
  A@7 B ~@2 C A@4 B A@3 B A@7 B A@11 ~ C B A@5 ~ A@3 B A@3 B A@30 ~@4 C A@14 ~
>`.pickRestart({
  A: "x!8", B: "x!3 ~", C: "~ x!7",
})).gain(0.51)

// drums · crash
const crash = s("cr").struct(`<
  A B ~ A@2 ~ A C ~@2 A B D ~ E ~ E ~ E ~ E B F B ~@2 A B ~@2 A B F ~ E ~ A@2 G A@2 B ~ B D ~ E B ~@2 A B F B F B D ~
  H@2 E ~ A ~ I B D ~ E D ~ J C ~ A@2 E B ~ I C ~ C ~ A@2 K L M N O ~ E ~ A B P ~ E ~ E ~ A@2 Q R
>`.pickRestart({
  A: "x", B: "~@15 x", C: "x ~@14 x", D: "~@7 x", E: "x ~@6 x", F: "~@13 x ~@2", G: "x!3 ~", H: "x!2", I: "~ x ~@14",
  J: "~@5 x ~@10", K: "x ~@3 x ~@3 x ~@4 x ~@2", L: "~ x ~@3 x ~@4 x ~@3 x ~", M: "~ x ~ x ~ x ~ x",
  N: "~@2 x ~@4 x ~@3 x ~@3 x", O: "~ x ~@6", P: "~@7 x ~@8", Q: "x!4", R: "x ~@3 x ~@2 x ~@8",
})).gain(0.51)

// drums · ride
const ride = s("rd").struct("<~@39 [~@8 x ~ x ~ x ~@2 x] ~@66>").gain(0.26)

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

More by Green Day