Strudelify
Basket Case cover art

1994 · Dookie

Basket Case

Green Day

KeyE♭ majorTempo175 bpm
0:00/0:00
// Basket Case — Green Day
// 175 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 126 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(175/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 · fretless bass · "FRETLESS"
const bass = note(`<
  A B C D E F B@2 A B C D E F B@2 G B F@2 G B F@2 G B H I G B J K L M N O P Q R S T U N O P Q R S T V W O X Y W O X Z W
  O AA AB W O AC AD@2 AE AF AG AH AI AJ@2 B AK N O P Q R AL T U AM O P Q R AL T AN W O X Y W O X Z W O AA AB W O AO AP
  AQ AR AO AP AQ AR AO AP AQ AR AS AT AU@2 AV@3 ~
>`.pickRestart({
  A: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ bb1 ~", B: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~",
  C: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ g1 ~", D: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~",
  E: "ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ eb2 ~", F: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~",
  G: "ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ bb1 ~", H: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ db2 ~ db2 ~ db2 ~ c2 ~",
  I: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", J: "eb2@3 ~@13", K: "~@14 eb3 f3", L: "eb3@7 ~",
  M: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2@4", N: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ bb1@2",
  O: "~@2 bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~", P: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ f2@2 g2@2 g1@2",
  Q: "~@2 g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~", R: "ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1@2 eb2@2",
  S: "~@2 eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2@2 f2@2", T: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1@2",
  U: "~@2 bb2 ~ bb2@2 bb1 ~ bb1 ~ bb1 ~ bb1@2 c2 ~", V: "~@2 bb2 ~ bb2@2 bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~",
  W: "ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ bb1@2", X: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2@2",
  Y: "~@2 eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2@2 c2@2 bb1 ~", Z: "~@2 eb2 ~ eb2 ~ eb2 ~ ab2@2 ab2 ~ ab2 ~ ab2 ~",
  AA: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ db2 ~ db2 ~ db2 ~ c2@2", AB: "~@2 c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~",
  AC: "eb2@5 ~ bb1 ~ bb1@4 ~@2 c2 ~", AD: "[c2@5 ~ bb1 ~ bb1@3 ~ f2@2 eb2@6 ~@2 bb1 ~ bb1@5 ~ c2 ~]/2",
  AE: "c2@5 ~ bb1 ~ bb1@5 ~@3", AF: "eb2@4 ~@2 bb1 ~ bb1@5 ~ c2 ~", AG: "c2@5 ~ bb1 ~ bb1@3 ~ eb2@2 f2@2",
  AH: "eb2@5 ~ bb1 ~ bb1@5 ~ c2 ~", AI: "c2@5 ~ bb1 ~ bb1@3 ~ ab2@4",
  AJ: "ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~", AK: "bb1@2 ~@8 bb1 ~ eb2@2 f2@2",
  AL: "~@2 eb2 ~ eb2 ~ eb2@3 ~ eb2 ~ eb2@2 f2@2", AM: "eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ bb1@2",
  AN: "~@2 bb2@2 bb1@2 bb2@2 bb1@2 bb2@2 bb1@2 bb2 ~", AO: "eb2@3 ~ eb2 ~ eb2@3 ~ eb2 ~ eb2@2 d2 ~",
  AP: "c2@3 ~ c2 ~ c2@3 ~ c2 ~ c2 ~ bb1 ~", AQ: "ab1@3 ~ ab1 ~ ab1 ~ eb2 ~ eb2 ~ eb2 ~ bb1@2",
  AR: "~@2 bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1@2", AS: "eb2@3 ~ eb2 ~ eb2@3 ~ eb2 ~ eb2 ~ c2@2",
  AT: "~@2 c2 ~ c2 ~ c2@3 ~ c2 ~ c2 ~ bb1 ~", AU: "[ab1@7 ~ eb2@6 bb1@18]/2", AV: "[ab1@7 ~ eb1@6 bb1@32 ~@2]/3",
})).s("gm_fretless_bass").gain(0.46)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  A B C D E F G H A B C D E F I J K L M N O J P Q R J S T U@3 V W X Y@2 Z@2 AA@4 AB@2 AC@2 AD@2 AE@2 AF@4 AG@2 AH@2 AI@2
  AJ@4 AK AL AM AN AO@4 AP@2 AQ AR AS@2 AT@2 AU@4 AV@2 AW@2 AX@2 AY AZ K L M N O J P Q R J S T BA@2 BB BC BD@2 BB BE
  BF@2 BB BG BH@2 BB BG BI@2 BJ@4
>`.pickRestart({
  A: "[eb3,bb3]@2 [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~ [bb2,f3]@2", // Eb5 Bb5
  B: "~@2 [bb2,f3] ~ [bb2,f3]@2 ~@2 [bb2,f3] ~ [bb2,f3] ~ [bb2,f3]@2 ~@2", // Bb5
  C: "[c3,g3] ~ [c3,g3] ~ [c3,g3]@2 ~@2 [c3,g3] ~ [c3,g3]@2 ~@2 [g2,d3]@2", // C5 G5
  D: "~@2 [g2,d3] ~ [g2,d3]@2 ~@2 [g2,d3] ~ [g2,d3] ~ [g2,d3]@2 ~@2", // G5
  E: "[ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3]@2 ~@2 [ab2,eb3] ~ [ab2,eb3]@2 ~@2 [eb3,bb3]@2", // Ab5 Eb5
  F: "~@2 [eb3,bb3] ~ [eb3,bb3]@2 ~@2 [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3]@2 [bb2,f3] ~", // Eb5 Bb5
  G: "[bb2,f3] ~ [bb2,f3] ~ [bb2,f3]@2 ~@2 [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3]@2", // Bb5
  H: "~@2 [bb2,f3] ~ [bb2,f3]@2 ~@2 [bb2,f3] ~ [bb2,f3] ~ [bb2,f3]@2 [bb2,f3] ~", // Bb5
  I: "[bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3]@2", // Bb5
  J: "[bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~", // Bb5
  K: "[ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [bb2,f3]@2", // Ab5 Bb5
  L: "[bb2,f3] ~ [bb2,f3] ~ [bb2,f3]@2 [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3]@2 ~@2", // Bb5
  M: "[eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3]@2 [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3]@2 [eb3,bb3] ~", // Eb5
  N: "[eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~", // Eb5
  O: "[ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3]@2 [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [bb2,f3] ~", // Ab5 Bb5
  P: "[eb3,bb3]@2 [eb3,bb3] ~ [eb3,bb3]@2 ~@2 [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3]@2", // Eb5
  Q: "[eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3]@2 [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3] ~", // Eb5
  R: "[ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [bb2,f3] ~", // Ab5 Bb5
  S: "[bb2,eb3,bb3]@7 ~ [ab2,f3,ab3]@8", T: "[g2,c3,g3]",
  U: "[[ab2,eb3,ab3]@14 [bb2,f3,bb3]@17 eb3 [bb2,g3]@6 [bb2,d3,f3]@2 [d3,f3]@6 [c3,eb3,g3]@2, ~@31 bb3@4 ~@13, ~@32 eb3 ~@7 bb2 ~@7]/3", // Ab5 Bb5 Eb Bb Dm Cm
  V: "[c3,eb3,g3]@3 [bb2,d3,f3] [bb2,d3,f3]@4", W: "[eb3,g3]@3 [bb2,d3,f3] [d3,f3]@3 [c3,eb3,g3], bb2 ~@7 bb2 ~@7",
  X: "[c3,g3]@3 [bb2,d3,f3] [bb2,d3,f3]@4, eb3 ~@15", // C5 Bb
  Y: "[~@4 [g3,bb3]@10 ~@6 [bb3,d4]@5 ~ [bb3,d4]@5 ~, eb3@7 ~@9, bb2@12 ~@2 [bb2,f3]@17 ~]/2", // Gm Bb Bb5
  Z: "[~@4 [c4,eb4]@10 ~@6 [g3,bb3]@11 ~, [c3,g3]@14 [g2,d3]@17 ~]/2", // Cm Gm C5 G5
  AA: "[~@4 [ab3,c4]@9 ~@6 [g3,bb3]@10 ~ [bb2,f3]@15 ~ [bb2,f3]@16 ~@2, [ab2,eb3]@13 ~ bb2@15 ~@35, ~@14 eb3@13 ~@37]/4", // Ab Gm Bb5 Ab5
  AB: "[[bb2,eb3]@14 [bb2,f3]@17 ~]/2", AC: "[[c3,g3]@14 [g2,d3]@17 ~]/2",
  AD: "[[ab2,eb3]@12 ~@2 bb2@17 ~, ~@14 eb3@15 ~@3]/2", AE: "[[bb2,f3]@31 ~]/2",
  AF: "[[ab2,eb3]@13 ~ f3@18 [eb3,bb3]@32, ~@7 bb2@10 ~@15]/4", AG: "[eb3 ~@13 [bb2,f3]@18, ab2 ~]/2",
  AH: "[eb3,bb3]/2", AI: "[[ab2,eb3]@7 [bb2,f3]@9]/2",
  AJ: "[[eb3,bb3]@8 [db3,ab3]@7 [c3,g3]@16 [ab2,eb3]@15 [bb2,f3]@16 ~@2]/4", // Eb5 Db5 C5 Ab5 Bb5
  AK: "[g3,bb3,eb4]@6 [f3,bb3,d4] ~ [f3,d4]@6 [g3,c4,eb4] ~, ~@2 bb3 ~", // Eb Bb Dm Cm
  AL: "[g3,c4,eb4]@6 [bb3,d4]@2 [bb3,d4]@6 [g3,eb4] ~, ~@3 f3@3 ~@2", // Cm Bb Cm
  AM: "[g3,bb3,eb4]@6 [f3,d4] ~ [f3,bb3,d4]@6 [g3,c4,eb4] ~", AN: "[g3,c4,eb4]@6 [f3,bb3,d4] ~ [f3,bb3,d4]@6 ~@2",
  AO: "[[g3,eb4]@6 [f3,d4] ~ [f3,bb3,d4]@6 [c4,eb4]@2 c4@6 [f3,bb3,d4] ~ [f3,bb3,d4]@6 ~@2 [g3,eb4]@6 [f3,d4] ~ [f3,bb3,d4]@6 eb4@2 [c4,eb4]@6 [f3,bb3,d4] ~ [f3,bb3,d4]@6 ~@2, ~@7 g3@3 ~@5 bb3@3 ~@5 g3@3 ~@6, ~@16 eb4@2 ~@28 c4 ~@17]/4", // Cm Dm Bb Cm Bb Cm Dm Bb …
  AP: "[ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~", // Ab5
  AQ: "[bb2,f3]@2 [bb2,f3] ~ [bb2,f3] ~ [bb2,f3]@2 [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~", AR: "[bb2,f3] ~@7",
  AS: "[eb3@13 ~ [bb2,f3]@18, bb2@11 ~@21]/2", AT: "[c3@7 [g2,d3]@9, g2@3 ~@5]/2",
  AU: "[[ab2,eb3]@13 ~ [bb2,eb3]@17 ~ bb2@13 ~ f3@18, ~@31 f3@13 ~@2 bb2@16 ~@2]/4", // Ab5 Eb5
  AV: "[eb3@13 ~ f3@17 ~, bb2@10 ~@4 bb2@15 ~@3]/2", AW: "[[c3,g3]@7 d3@9, ~@7 g2@8 ~]/2",
  AX: "[[ab2,eb3]@12 ~ [bb2,eb3]@17 ~@2]/2", AY: "bb2@2 bb2 [bb2,f3]!5, f3@3 ~@5",
  AZ: "[bb2,f3]@2 [bb2,f3] ~ [bb2,f3]@2 [bb2,f3]@2 [bb2,f3]@2 [bb2,f3] ~ [bb2,f3] ~ [bb2,f3]@2", // Bb5
  BA: "[[ab2,eb3,ab3]@14 [bb2,f3,bb3]@17 ~]/2", BB: "[bb2,eb3]@15 ~", BC: "[g2,c3]@7 ~",
  BD: "[[ab2,eb3]@7 ~ [bb2,eb3]@5 ~ [bb2,f3]@17 ~]/2", BE: "[g2,c3]@15 ~",
  BF: "[[ab2,eb3]@7 ~ [bb2,eb3]@6 ~ [bb2,f3]@3 ~@14]/2", BG: "c3, g2@7 ~",
  BH: "[[ab2,eb3]@7 ~ [bb2,eb3]@6 bb2@4 bb2@2 [bb2,f3]@2 [bb2,f3] ~ [bb2,f3]@2 [bb2,f3] ~ [bb2,f3] ~ [bb2,f3]@2, ~@7 f3@3 ~@6]/2", // Ab5 Eb5 Bb5
  BI: "[[ab2,eb3]@8 [bb2,eb3]@5 ~ [bb2,f3]@8 bb2 ~ bb3@2 a0@5 ~]/2", // Ab5 Eb5 Bb5
  BJ: "[ab2@8 [bb2,eb3]@5 ~ [bb2,f3]@50, eb3@3 ~@29]/4", // Eb5 Bb5
})).s("gm_distortion_guitar").gain(0.21).pan(0.3)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar_2 = note(`<
  ~@26 A B C@2 D E D F G@2 H@2 I@2 J@2 G@2 H@2 I@2 K L M N O P Q R S T U V W@2 X@2 Y Z AA AB Y Z AA AB AC@2 AD AE AF@2
  AG@2 AH@2 AI@2 AF@2 AG@2 AJ@2 AK@2 AL AM AN AO AP AQ AR AS AT AQ A B C@2 AU@2 AV@2 AW@2 AX@2 AW@2 AX@2 AY@2 AZ@2 BA@4
>`.pickRestart({
  A: "[eb3,bb3] db3", B: "[c3,g3]", C: "[[ab2,eb3]@7 [bb2,f3]@9]/2", D: "[eb3,bb3]@3 [bb2,f3] [bb2,f3]@3 [c3,g3]",
  E: "[c3,g3]@3 [bb2,f3] [bb2,f3]@4", F: "[c3,g3]@3 [bb2,f3] f3@4, ~@8 bb2 ~@7",
  G: "[[eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3] ~ [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2 f3@4 [bb2,f3]@2 [bb2,f3]@2 ~@2 [bb2,f3]@2 [bb2,f3]@2 f3@4, ~@14 bb2@2 ~@12 bb2 ~@3]/2", // Eb5 Bb5
  H: "[[c3,g3]@2 [c3,g3]@2 [c3,g3] ~@3 [c3,g3]@2 g3@4 [g2,d3]@4 [g2,d3]@2 d3@4 [g2,d3]@2 [g2,d3]@2 g2@4, ~@10 c3@2 ~@8 g2@2 ~@6 d3 ~@3]/2", // C5 G5
  I: "[[ab2,eb3]@2 [ab2,eb3]@2 [ab2,eb3] ~@3 [ab2,eb3]@2 eb3@4 bb3@4 [eb3,bb3]@2 eb3@4 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2 [bb2,f3]@2, ~@10 ab2@2 ~@2 eb3 ~@5 bb3 ~@11]/2", // Ab5 Eb5 Bb5
  J: "[[bb2,f3]@2 [bb2,f3] ~ f3@4 [bb2,f3]@2 [bb2,f3]@2 [bb2,f3] ~ f3@4 [bb2,f3]@2 f3@4 [bb2,f3]@2 [bb2,f3]@2 [bb2,f3]@2 [bb2,f3]@2, ~@4 bb2@2 ~@8 bb2 ~@5 bb2@2 ~@10]/2", // Bb5
  K: "[bb2,f3]@2 [bb2,f3] ~ [bb2,f3]@2 [bb2,f3] ~ [bb2,f3]@2 [bb2,f3]@2 [bb2,f3] ~ [bb2,f3]@2", // Bb5
  L: "[bb2,f3]@2 [bb2,f3] ~ [bb2,f3]@2 [bb2,f3]@2 [bb2,f3] ~ [bb2,f3]@2 [bb2,f3]@2 [bb2,f3]@2", // Bb5
  M: "[ab2,eb3]@2 [ab2,eb3]@2 [ab2,eb3] ~ [ab2,eb3]@2 [ab2,eb3]@2 [ab2,eb3]@2 [ab2,eb3]@2 [bb2,f3]@2", // Ab5 Bb5
  N: "[bb2,f3] ~ [bb2,f3]@2 [bb2,f3]@2 [bb2,f3]@2 [bb2,f3] ~ [bb2,f3]@2 [bb2,f3]@4", // Bb5
  O: "[eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3] ~ [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2", // Eb5
  P: "[eb3,bb3]@2 [eb3,bb3] ~ [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3] ~ [eb3,bb3] ~", // Eb5
  Q: "[ab2,eb3]@2 [ab2,eb3]@2 [ab2,eb3]@2 [ab2,eb3]@2 [ab2,eb3]@2 [ab2,eb3]@2 [ab2,eb3] ~ [bb2,f3]@2", // Ab5 Bb5
  R: "[bb2,f3]@2 [bb2,f3]@2 [bb2,f3]@2 [bb2,f3] ~ [bb2,f3]@2 [bb2,f3]@2 [bb2,f3]@2 [bb2,f3] ~", // Bb5
  S: "[eb3,bb3]@2 [eb3,bb3] ~ [eb3,bb3] ~@3 [eb3,bb3] ~ [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2", // Eb5
  T: "[eb3,bb3]@2 [eb3,bb3] ~ [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3] ~ [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3] ~", // Eb5
  U: "[ab2,eb3]@2 [ab2,eb3]@2 [ab2,eb3] ~ [ab2,eb3]@2 [ab2,eb3] ~ [ab2,eb3]@2 [ab2,eb3]@2 [bb2,f3]@2", // Ab5 Bb5
  V: "[bb2,f3]@2 [bb2,f3] ~ [bb2,f3]@2 [bb2,f3]@2 [bb2,f3]@2 [bb2,f3]@2 [bb2,f3]@2 [bb2,f3]@2", // Bb5
  W: "[eb3@4 [ab2,db3]@3 [g2,c3]@9, bb2@3 ~@13]/2", // Db5 C5
  X: "[[ab2,eb3]@2 [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3]@2 [ab2,eb3] ~ [ab2,eb3]@4 [bb2,f3]@4 [bb2,f3] ~ [bb2,f3] ~ [bb2,f3]@2 [bb2,f3]@2 [bb2,f3]@2 [bb2,f3]@2 [bb2,f3]@2]/2", // Ab5 Bb5
  Y: "[bb2,eb3,g3]@3 [bb2,d3,f3] [d3,f3]@3 [c3,eb3,g3], ~@8 bb2 ~@7", Z: "[c3,eb3,g3]@3 [bb2,d3,f3] [bb2,d3,f3]@4",
  AA: "[eb3,g3]@3 [bb2,d3,f3] [d3,f3]@3 [c3,eb3,g3], bb2 ~@7 bb2 ~@7", // Eb Bb Dm Cm
  AB: "[c3,g3]@3 [bb2,d3,f3] [bb2,d3,f3]@4, eb3 ~@15", // C5 Bb
  AC: "[ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~", // Ab5
  AD: "[bb2,f3]@2 [bb2,f3]@2 [bb2,f3]@2 [bb2,f3] ~ [bb2,f3] ~ [bb2,f3]@2 [bb2,f3]@2 [bb2,f3]@2", AE: "[bb2,f3] ~@7",
  AF: "[[bb2,eb3]@13 ~ bb2@17 ~, ~@13 [f3,bb3,d4]@18 ~]/2", // Eb5 Bb
  AG: "[[g3,c4]@4 [g3,c4]@4 [g3,c4] ~ [g3,c4]@2 [g3,bb3]@2 [d3,g3]@4 [d3,g3]@2 [d3,g3] ~@3 [d3,g3]@2 [d3,g3] ~ [d3,g3]@2 [d3,g3]@2, c3@7 g2@8 ~, ~@7 c4 ~@8]/2", // C5 Gm G5
  AH: "[bb3@2 c4@2 eb4 bb3 c4 ~@4 g3 bb3 ~ [bb3,eb4]@2, [ab2,eb3]@13 ~ [bb2,eb3]@18, ~@7 bb3@4 ~@5, ~@9 eb4@4 ~@3]/2", // Eb5 Ab5 Eb5
  AI: "[f3 ~@3 d4@6 [bb3,d4] ~@3 bb3@4 [bb3,d4]@2 [bb3,d4]@4 [bb3,d4] ~ d4 ~ [bb3,d4]@2 [bb3,d4]@2, bb2@13 ~ [bb2,f3]@17 ~, bb3@5 ~@2 d4 ~@8]/2", // Bb Bb5
  AJ: "[bb3@2 c4@2 eb4 bb3 c4 ~@4 g3 bb3 ~ bb3@2, [ab2,eb3]@13 ~ [bb2,eb3,bb3]@8 [bb2,eb3]@8 ~@2, ~@9 eb4@4 ~@3]/2", // Ab5 Eb5
  AK: "[[bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4]@2 [f3,bb3,d4]@2 [bb3,d4]@2 [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4]@2, bb2@14 bb2@17 ~, f3 ~@13 f3 ~@17]/2", // Bb
  AL: "[ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [bb2,f3]@2", // Ab5 Bb5
  AM: "[bb2,f3] ~ [bb2,f3] ~ [bb2,f3]@2 [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3]@2 ~@2", // Bb5
  AN: "[eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3]@2 [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3]@2 [eb3,bb3] ~", // Eb5
  AO: "[eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~", // Eb5
  AP: "[ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3]@2 [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [bb2,f3] ~", // Ab5 Bb5
  AQ: "[bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~", // Bb5
  AR: "[eb3,bb3]@2 [eb3,bb3] ~ [eb3,bb3]@2 ~@2 [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3]@2", // Eb5
  AS: "[eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3]@2 [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3] ~", // Eb5
  AT: "[ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [bb2,f3] ~", // Ab5 Bb5
  AU: "[g3@6 ab3@8 ~ g3@6 ~ ab3@9 ~, [bb2,eb3]@7 [g2,c3]@9]/2", // Eb5 C5
  AV: "[[ab2,eb3,ab3]@8 [eb3,eb4]@6 [f3,bb3]@4 [bb2,f3,bb3] ~ [bb2,f3,bb3]@2 [bb2,f3,bb3] ~ [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [bb2,eb3,g3]@2, ~@4 bb2@5 ~@7]/2", // Ab5 Eb Bb5 Eb
  AW: "[g3@3 ~@5 g3@3 ab3@4 [ab2,eb3,ab3], [bb2,eb3]@7 [g2,c3]@8 ~, ~@3 ab3@5 ~@8]/2", // Ab5 Eb5 C5
  AX: "[[eb3,ab3]@4 [eb3,ab3]@2 [eb3,ab3]@2 [bb3,eb4]@2 [bb3,eb4] ~ [bb3,eb4] ~ [bb2,bb3] ~@3 [bb2,f3,bb3]@2 [bb2,f3,bb3] ~ [bb2,f3,bb3]@2 [bb2,f3,bb3] ~ [bb2,f3,bb3]@2 [bb2,f3,bb3] ~ [bb2,f3,bb3]@2, ab2 ~@3 ab2@4 bb2@6 ~@18, ~@8 eb3 ~@5 f3@4 ~@14]/2", // Ab5 Eb5 Bb Bb5
  AY: "[g3@3 ~@5 g3@3 ab3@5, [bb2,eb3]@7 [g2,c3]@9, ~@3 ab3@5 ~@8]/2", // Eb5 C5
  AZ: "[[ab2,eb3,ab3]@4 [bb2,bb3,eb4]@3 [f3,bb3]@9, ~@8 eb3 ~@5 bb2 ~@17]/2", // Ab5 Eb5 Bb5
  BA: "[[eb3,ab3]@4 [bb2,eb3]@3 [bb2,f3,bb3]@25]/4", // Ab5 Eb5 Bb5
})).s("gm_distortion_guitar").gain(0.39).pan(0.7)

// bass · slap bass 1 · "SLAPBASS 1" · Eb F
const bass_2 = note("<~@75 [~@6 [eb2,eb3] [f2,f3]] ~@50>").s("gm_slap_bass_1").gain(0.46)

// other · alto sax
const alto_sax = note(`<
  ~@5 A@2 ~@6 B@2 ~ C D@2 ~ E F@2 G H@2 ~@2 I@3 ~@8 A@2 ~@6 J@2 ~ C D@2 ~ E F@2 G H@2 ~@2 I@3 ~@6 K L M N ~@17 C D@2 ~ E
  F@2 G H@2 ~@2 O@4 ~@18
>`.pickRestart({
  A: "[~@12 g4@2 f4@6 f4@3 ~@9]/2", B: "[~@6 g4 f4@2 ~@7]/2", C: "~@6 ab3 ~ c4@2 eb4@2 ~@2 eb4@2",
  D: "[~@2 eb4@2 ~@2 eb4@2 ~@2 eb4 ~ eb4 ~ eb4@4 ~@2 eb4@5 ~@7]/2", E: "~@6 ab3 ~ c4 ~ eb4@3 ~ eb4@2",
  F: "[~@2 eb4@2 ~@2 eb4@2 ~@2 eb4 ~ eb4 ~ eb4@4 ~@2 eb4@4 ~@8]/2", G: "~@14 eb4 ~",
  H: "[ab3@2 ~@2 ab3@3 ~ c4@2 eb4@3 ~ f4@4 ~@14]/2",
  I: "[eb4@3 ~ eb4@3 ~ eb4 ~ eb4@3 ~ d4@4 ~@4 bb3@2 f4@2 g4@3 ~ g4@4 ~@14]/3", J: "[~@6 g4 f4@2 ~ f4@2 ~@4]/2",
  K: "~@7 bb3", L: "c4@5 ~@3 eb4@7 ~", M: "g4@6 ~@2 eb4@7 ~", N: "d4",
  O: "[eb4@3 ~ eb4@3 ~ eb4 ~ eb4@3 ~ d4@4 ~@4 bb3@2 f4@2 g4@3 ~ g4@26 ~@8]/4",
})).s("gm_alto_sax").gain(0.16)

// drums · kick
const kick = s("bd").struct(`<
  ~@26 A ~ B C D ~@2 E B F B F B G B F B F B F B G B H B I B H B I B J B J B ~ B C K@3 L K@3 M N@2 G O B F B F B G B F B
  F B F B G B H B I B H B I B H B J B ~ B P Q R S G Q R S G Q R S G Q I A ~ A ~@3
>`.pickRestart({
  A: "x ~@3 x ~@2 x", B: "x ~@3 x!2 ~ x", C: "~ x ~ x!3 ~@2", D: "x", E: "x ~ x!2 ~ x ~ x", F: "~ x ~@2 x!2 ~ x",
  G: "~ x ~ x ~ x ~ x", H: "~ x ~@6", I: "~ x ~@3 x ~@2", J: "~ x ~@2 x!2 ~@2", K: "x ~@2 x!2 ~@2 x",
  L: "x ~@5 x ~ x ~@2 x ~@2 x ~", M: "x ~@2 x!2 ~@3", N: "x!2 ~ x!3 ~ x", O: "~@5 x ~ x", P: "~ x ~ x!2 ~@3",
  Q: "x ~@2 x ~ x ~ x", R: "x!2 ~ x ~ x ~ x", S: "x ~@2 x!3 ~ x",
})).gain(0.41)

// drums · snare
const snare = s("sd").struct(`<
  ~@26 A B C@2 ~@3 D C@15 E C@3 F C@6 G B C@9 H C@2 I J C@15 K C@3 F C@3 F C@2 G B C L C@3 M C@3 ~ C@3 M C@3 ~ N ~@3
>`.pickRestart({
  A: "~@2 x!6 ~@5 x ~@2", B: "~@4 x!4 ~@2 x!2 ~@2 x!2", C: "~ x ~ x", D: "x ~@2 x!2 ~ x ~@2 x!2 ~ x ~@3",
  E: "~@4 x!4 ~@8", F: "~@2 x!2 ~@4", G: "~@2 x!6 ~@4 x ~@3", H: "~@4 x ~@5 x!6", I: "x!4", J: "x ~@2 x",
  K: "~@4 x!4 ~@4 x!4", L: "~@4 x ~@3 x!8", M: "~ x!3", N: "~ x ~@2",
})).gain(0.37)

// drums · low tom
const low_tom = s("lt").struct("<~@49 A ~@3 B ~@41 B ~@17 C ~@12>".pickRestart({
  A: "~@8 x ~@5 x!2", B: "~@6 x!2", C: "~@14 x!2",
})).gain(0.37)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@16 A ~@4 B ~@4 A ~@3 A ~@18 C D@10 A ~@11 E@2 ~@17 C D@10 A ~@3 D@15 A D ~@3
>`.pickRestart({
  A: "x", B: "~ x ~@2", C: "~ x!3", D: "x!4", E: "x!8",
})).gain(0.27)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@16 A B@4 C B@4 A B ~@32 A B ~@40 A B ~@22>".pickRestart({
// … 40 more lines

More by Green Day