Strudelify

Change the World

The Offspring

KeyA majorTempo165 bpm
0:00/0:00
// Change the World — The Offspring
// 165 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 12 "Guit1b" overdriven guitar (copy of ch 2 "Guit1" distortion guitar); ch 13 "Guit2b" overdriven guitar (copy of ch 3 "Guit2" distortion guitar)
// note: Full arrangement: all 195 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(165/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 · "Guit1"
const distortion_guitar = note(`<
  ~@8 A@2 B C@2 D@3 E@2 F G@2 H I@2 J@3 K@2 L M@2 N@3 O@2 P Q O@2 P Q ~@84 R@2 S T@3 U V@3 W G@2 X Y@3 Z@4 AA AB@2 S AC
  AD AE@8 ~@33
>`.pickRestart({
  A: "[~@15 f#3@2 [f#3,a3]@2 [f#3,a3]@2 ~ [f#3,a3]@2 [f#3,g#3]@2 [f#3,g#3]@2 [f#3,a3]@2 [f#3,a3]@2]/2", // F#m F#sus2 F#m
  B: "~ [f#3,b3]@2 [f#3,b3]@2 [f#3,b3]@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,a3]@2 ~ [f#3,g#3]@2", // B5 F#m F#sus2
  C: "[[f#3,g#3]@2 e4@2 [e4,g#4]@2 [e4,g#4]@2 [e4,g#4]@2 ~ [e4,a4]@2 [e4,a4]@2 [e4,g#4]@2 [e4,g#4]@2 b3@2 [b3,d#4]@2 ~ [b3,d#4]@2 [b3,d#4]@2 d#4 e4 d#4@2, ~@7 b3]/2", // F#sus2 E A5 E B
  D: "[c#4@2 d#4@2 ~ f#3@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,g#3]@2 [f#3,g#3]@2 ~ [f#3,a3]@2 [f#3,a3]@2 [f#3,b3]@2 [f#3,b3]@2 [f#3,b3]@2 ~ [f#3,a3]@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,g#3]@2 [f#3,g#3]@2 e4@2 ~ [e4,g#4]@2 [e4,g#4]@2 [e4,g#4]@2, b3 ~@11]/3", // F#m F#sus2 F#m B5 F#m F#sus2 E
  E: "[[e4,a4]@2 [e4,a4]@2 [e4,g#4]@2 ~ [e4,g#4]@2 b3@2 [b3,d#4]@2 [b3,d#4]@2 [b3,d#4]@2 d#4 e4 ~ d#4@2 c#4@2 d#4@2 f#3@2 [f#3,a3]@2 [f#3,a3]@2, ~@17 b3@4 ~ b3@4 ~@6]/2", // A5 E B F#m
  F: "~ [f#3,a3]@2 [f#3,g#3]@2 [f#3,g#3]@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,b3]@2 ~ [f#3,b3]@2", // F#m F#sus2 F#m B5
  G: "[[f#3,b3]@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,g#3]@2 ~ [f#3,g#3]@2 e4@2 [e4,g#4]@2 [e4,g#4]@2 [e4,g#4]@2 ~ [e4,a4]@2 [e4,a4]@2 [e4,g#4]@2 [e4,g#4]@2 b3@2]/2", // B5 F#m F#sus2 E A5 E
  H: "[b3,d#4]@2 ~ [b3,d#4]@2 [b3,d#4]@2 d#4 e4 d#4@2 c#4@2 d#4@2 ~, ~@7 b3@4 b3@4 ~", // B
  I: "[f#3@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,g#3]@2 [f#3,g#3]@2 ~ [f#3,a3]@2 [f#3,a3]@2 [f#3,b3]@2 [f#3,b3]@2 [f#3,b3]@2 [f#3,a3]@2 ~ [f#3,a3]@2 [f#3,a3]@2 [f#3,g#3]@2]/2", // F#m F#sus2 F#m B5 F#m F#sus2
  J: "[[f#3,g#3]@2 e4@2 [e4,g#4]@2 ~ [e4,g#4]@2 [e4,g#4]@2 [e4,a4]@2 [e4,a4]@2 [e4,g#4]@2 ~ [e4,g#4]@2 b3@2 [b3,d#4]@2 [b3,d#4]@2 [b3,d#4]@2 d#4 e4 ~ d#4@2 c#4@2 d#4@2 f#3@2 [f#3,a3]@2 [f#3,a3]@2 ~ [f#3,a3]@2 [f#3,g#3]@2, ~@28 b3@4 ~ b3@4 ~@11]/3", // F#sus2 E A5 E B F#m F#sus2
  K: "[[f#3,g#3]@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,b3]@2 ~ [f#3,b3]@2 [f#3,b3]@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,g#3]@2 ~ [f#3,g#3]@2 e4@2 [e4,g#4]@2 [e4,g#4]@2 [e4,g#4]@2]/2", // F#sus2 F#m B5 F#m F#sus2 E
  L: "[e4,a4]@2 ~ [e4,a4]@2 [e4,g#4]@2 [e4,g#4]@2 b3@2 [b3,d#4]@2 [b3,d#4]@2 ~", // A5 E B
  M: "[[b3,d#4]@2 d#4 e4 d#4@2 c#4@2 d#4@2 ~ f#3@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,g#3]@2 [f#3,g#3]@2 ~ [f#3,a3]@2 [f#3,a3]@2 [f#3,b3]@2 [f#3,b3]@2, ~ b3@2 b3@2 ~@11]/2", // B F#m F#sus2 F#m B5
  N: "[[f#3,b3]@2 [f#3,a3]@2 ~ [f#3,a3]@2 [f#3,a3]@2 [f#3,g#3]@2 [f#3,g#3]@2 e4@2 [e4,g#4]@2 ~ [e4,g#4]@2 [e4,g#4]@2 [e4,a4]@2 [e4,a4]@2 [e4,g#4]@2 [e4,g#4]@2 ~ b3@2 [b3,d#4]@2 [b3,d#4]@2 [b3,d#4]@2 d#4 e4 d#4@2 ~ c#4@2 d#4@2, ~@39 b3@4 ~ b3@4]/3", // B5 F#m F#sus2 E A5 E B
  O: "[f#2,c#3,f#3]", P: "[e3,b3,e4]@3 [e3,b3,e4]@2 [e3,b3,e4]!3", Q: "[b2,f#3,b3]@3 [b2,f#3,b3]@2 [b2,f#3,b3]!3",
  R: "[~@13 f#3@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,a3]@2 ~ [f#3,g#3]@2 [f#3,g#3]@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,b3]@2]/2", // F#m F#sus2 F#m B5
  S: "~ [f#3,b3]@2 [f#3,b3]@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,a3]@2 ~ [f#3,g#3]@2 [f#3,g#3]@2", // B5 F#m F#sus2
  T: "[e4@2 [e4,g#4]@2 [e4,g#4]@2 ~ [e4,g#4]@2 [e4,a4]@2 [e4,a4]@2 [e4,g#4]@2 [e4,g#4]@2 ~ b3@2 [b3,d#4]@2 [b3,d#4]@2 [b3,d#4]@2 d#4 e4 ~ d#4@2 c#4@2 d#4@2 f#3@2 [f#3,a3]@2 ~ [f#3,a3]@2 [f#3,a3]@2 [f#3,g#3]@2 [f#3,g#3]@2, ~@26 b3@4 ~ b3@4 ~@13]/3", // E A5 E B F#m F#sus2
  U: "[f#3,a3]@2 ~ [f#3,a3]@2 [f#3,b3]@2 [f#3,b3]@2 [f#3,b3]@2 [f#3,a3]@2 ~ [f#3,a3]@2", // F#m B5 F#m
  V: "[[f#3,a3]@2 [f#3,g#3]@2 [f#3,g#3]@2 e4@2 ~ [e4,g#4]@2 [e4,g#4]@2 [e4,g#4]@2 [e4,a4]@2 [e4,a4]@2 ~ [e4,g#4]@2 [e4,g#4]@2 b3@2 [b3,d#4]@2 [b3,d#4]@2 ~ [b3,d#4]@2 d#4 e4 d#4@2 c#4@2 d#4@2 ~ f#3@2 [f#3,a3]@2 [f#3,a3]@2, ~@33 b3@4 b3@4 ~@7]/3", // F#m F#sus2 E A5 E B F#m
  W: "[f#3,a3]@2 [f#3,g#3]@2 ~ [f#3,g#3]@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,b3]@2 [f#3,b3]@2 ~", // F#m F#sus2 F#m B5
  X: "~ [b3,d#4]@2 [b3,d#4]@2 [b3,d#4]@2 d#4 e4 d#4@2 ~ c#4@2 d#4@2, ~@7 b3@4 ~ b3@4", // B
  Y: "[f#3@2 [f#3,a3]@2 [f#3,a3]@2 ~ [f#3,a3]@2 [f#3,g#3]@2 [f#3,g#3]@2 [f#3,a3]@2 [f#3,a3]@2 ~ [f#3,b3]@2 [f#3,b3]@2 [f#3,b3]@2 [f#3,a3]@2 [f#3,a3]@2 ~ [f#3,a3]@2 [f#3,g#3]@2 [f#3,g#3]@2 e4@2 [e4,g#4]@2 ~ [e4,g#4]@2 [e4,g#4]@2 [e4,a4]@2 [e4,a4]@2]/3", // F#m F#sus2 F#m B5 F#m F#sus2 E A5
  Z: "[[e4,g#4]@2 ~ [e4,g#4]@2 b3@2 [b3,d#4]@2 [b3,d#4]@2 [b3,d#4]@2 ~ d#4 e4 d#4@2 c#4@2 d#4@2 f#3@2 ~ [f#3,a3]@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,g#3]@2 [f#3,g#3]@2 ~ [f#3,a3]@2 [f#3,a3]@2 [f#3,b3]@2 [f#3,b3]@2 [f#3,b3]@2 ~ [f#3,a3]@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,g#3]@2 [f#3,g#3]@2 ~ e4@2 [e4,g#4]@2 [e4,g#4]@2, ~@7 b3@2 b3@2 ~@21]/4", // E B F#m F#sus2 F#m B5 F#m F#sus2 …
  AA: "[e4,g#4]@2 [e4,a4]@2 ~ [e4,a4]@2 [e4,g#4]@2 [e4,g#4]@2 b3@2 [b3,d#4]@2 ~", // E A5 E B
  AB: "[[b3,d#4]@2 [b3,d#4]@2 d#4 e4 d#4@2 b3@3 d#4@2 f#3@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,a3]@2 ~ [f#3,g#3]@2 [f#3,g#3]@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,b3]@2, ~@2 b3@2 c#4 ~@11]/2", // B F#m F#sus2 F#m B5
  AC: "e4@2 [e4,g#4]@2 [e4,g#4]@2 ~ [e4,g#4]@2 [e4,a4]@2 [e4,a4]@2 [e4,g#4]@2 [e4,g#4]", // E A5 E
  AD: "~@2 b3@2 [b3,d#4]@2 [b3,d#4]@2 [b3,d#4]@2 d#4 e4 ~ d#4@2 [b3,c#4], ~@5 b3@2 ~", // B Bsus2
  AE: "[~ d#4@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@4 [f#3,c#4,f#4]@4 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@4 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@4 [f#3,c#4,f#4]@4 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@4 [e3,b3,e4]@2 [e3,b3,e4]@4 [e3,b3,e4]@4 [e3,b3,e4]@2 [e3,b3,e4]@4 [b2,f#3,b3]@2 [b2,f#3,b3]@4 [b2,f#3,b3]@4 [b2,f#3,b3]@2 [b2,f#3,b3]@4 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@4 [f#3,c#4,f#4]@4 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@4 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@4 [f#3,c#4,f#4]@4 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@4 [e3,b3,e4]@2 [e3,b3,e4]@4 [e3,b3,e4]@4 [e3,b3,e4]@2 [e3,b3,e4]@4 [b2,f#3,b3]@2 [b2,f#3,b3]@4 [b2,f#3,b3]@4 [b2,f#3,b3]@2 [b2,f#3,b3]]/8", // F#5 E5 B5 F#5 E5 B5
})).s("gm_distortion_guitar").gain(0.39).pan(0.7)

// bass · electric bass pick · "Bass"
const bass = note(`<
  ~@35 A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C D E F@2 D E F G H@8 A@2 B C A@2 B C A@2 B C A@2 B C D E F@2 D E F
  G H@8 I@3 G A J A J A K L ~@36 M@8 N@8 O@8 P@8 Q@2 R ~@6
>`.pickRestart({
  A: "f#1!8", B: "e1!8", C: "b1!8", D: "a1@2 a1!4 a1@2 a1!4 a1@2 a1!2", E: "e2@2 e2!4 e2@2 e2!4 e2@2 e2!2",
  F: "b1@2 b1!4 b1@2 b1!4 b1@2 b1!2", G: "c#2!2 ~ d2!2 ~ e2!2", H: "[f#1!7 e1@2 e1!6 b1@2 b1!6 f#1@2 f#1!7]/4",
  I: "[f#1!7 e1@2 e1!6 b1@2 b1!7]/3", J: "a1!4 e1!4", K: "a1!2 ~@2 e2!2 ~@2", L: "f#2 ~@7",
  M: "[~@3 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 e1@2 e1@2 e1@2 e1@2 e1@2 e1@2 e1@2 e1@2 b1@2 b1@2 b1@2 b1@2 b1@2 b1@2 b1@2 b1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 e1@2 e1@2 e1@2 e1@2 e1@2 e1@2 e1@2 e1@2 b1@2 b1@2 b1@2 b1@2 b1@2 b1@2 b1]/8",
  N: "[~ b1@2 a1@2 a1!4 a1@2 a1!4 a1@2 a1!2 e2@2 e2!4 e2@2 e2!4 e2@2 e2!2 b1@2 b1!4 b1@2 b1!4 b1@2 b1!2 b1@2 b1!4 b1@2 b1!4 b1@2 b1!2 a1@2 a1!4 a1@2 a1!4 a1@2 a1!2 e2@2 e2!4 e2@2 e2!4 e2@2 e2!2 b1@2 b1!4 b1@2 b1!4 b1@2 b1!2 c#2@2 c#2@2 ~@2 d2@2 d2@2 ~@2 e2]/8",
  O: "[~ e2@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 e1@4 e1@2 e1@2 e1@2 e1@2 e1@2 e1@2 b1@4 b1@2 b1@2 b1@2 b1@2 b1@2 b1@2 f#1@4 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 e1@4 e1@2 e1@2 e1@2 e1@2 e1@2 e1@2 b1@4 b1@2 b1@2 b1@2 b1@2 b1@2 b1@2 f#1@4 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1]/8",
  P: "[~ f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 e1@4 e1@2 e1@2 e1@2 e1@2 e1@2 e1@2 b1@4 b1@2 b1@2 b1@2 b1@2 b1@2 b1@2 b1@2 c#2@2 c#2@2 ~@2 d2@2 d2@2 ~@2 e2@2 e2@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 a1@2 a1@2 a1@2 a1@2 e1@2 e1@2 e1@2 e1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 a1@2 a1@2 a1@2 a1@2 e1@2 e1@2 e1]/8",
  Q: "[~ e1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 a1@2 a1@2 ~@4 e2@2 e2@2 ~]/2", R: "~@3 f#2@2 ~@11",
})).s("gm_electric_bass_pick").gain(0.48)

// chords · distortion guitar · "Guit2"
const distortion_guitar_2 = note(`<
  ~@26 A B@2 C D@2 E@3 F@8 G ~@7 H@2 I J G ~@2 K L M N@2 L M N O P@4 Q@4 R@5 ~@3 H@2 I J G ~@2 K L M N@2 L M N O P@4 Q@4
  S@3 O T U T U T V W X Y@8 ~@18 Z@3 AA AB@2 AC AD@8 AE@2 AF@8 AG@8 AH@8 AI@2 AJ AK@6
>`.pickRestart({
  A: "~@5 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 ~ [f#2,c#3]@2 [f#2,c#3]@2", // F#5
  B: "[[f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 ~ [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 ~ [f#2,c#3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2]/2", // F#5 E5
  C: "[e3,b3]@2 ~ [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 ~", // E5 B5
  D: "[[b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 ~ [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 ~ [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2]/2", // B5 F#5
  E: "[[f#2,c#3]@2 [f#2,c#3]@2 ~ [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [e3,b3]@2 [e3,b3]@2 ~ [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 ~ [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 ~ [b2,f#3]@2 [b2,f#3]@2]/3", // F#5 E5 B5
  F: "[f#3,f#4] [f#3,f#4]@2 [f#3,f#4]@2 [f#3,f#4]!3", G: "[f#2,c#3,f#3] ~@7",
  H: "[[f#3,c#4,f#4]@11 [f#3,c#4,f#4]@2 [f#3,c#4,f#4] [f#3,c#4,f#4]@2]/2", // F#5
  I: "[e3,b3,e4]@5 [e3,b3,e4]!2 [b2,f#3,b3,d#4]", J: "[b2,f#3,b3,d#4]@3 [b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4]!2 e2",
  K: "~@3 g#3", L: "[a2,e3,a3]@2 a2!4 [a2,e3,a3]@2 a2!4 [a2,e3,a3]@2 a2!2",
  M: "[e3,b3,e4]@2 e3!4 [e3,b3]@2 e3!4 [e3,b3,e4]@2 e3!2", // E5
  N: "[b2,f#3,b3]@2 b2!4 [b2,f#3,b3]@2 b2!4 [b2,f#3,b3]@2 b2!2", // B5
  O: "[c#3,g#3,c#4]@2 [c#3,g#3,c#4]@2 [c#3,c#4] ~ [d3,a3,d4]@2 [d3,a3,d4]@2 [d3,d4] ~ [e3,b3,e4]@2 [e3,b3,e4]@2", // C#5 C# D5 D E5
  P: "[[f#2,c#3,f#3]@3 [f#2,c#3,f#3]!4 [e3,b3,e4]@4 [e3,b3,e4]!4 [b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4]!6 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]!7]/4", // F#5 E5 B F#5
  Q: "[[f#3,c#4,f#4]!7 [e3,b3,e4]@4 [e3,b3,e4]!4 [b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4]!6 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]!7]/4", // F#5 E5 B F#5
  R: "[f#2,c#3,f#3]/5", S: "[[f#2,c#3,f#3]!7 [e3,b3,e4]@4 [e3,b3,e4]!4 [b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4]!7]/3",
  T: "[f#3,c#4,f#4]@4 [f#3,c#4,f#4]@4 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4] ~", // F#5
  U: "[a2,e3,a3]@4 [a2,e3,a3]@2 [a2,e3,a3] ~ [e3,b3,e4]@4 [e3,b3,e4]@2 [e3,b3,e4] ~", // A5 E5
  V: "[a2,e3,a3]!2 ~@2 [e3,b3,e4]!2 ~@2", W: "[f#3,c#4,f#4] ~@7", X: "~@3 [d3,g3,b3]", Y: "[f#2,c#3,f#3]/8",
  Z: "[~@6 [f#2,c#3]@2 ~ [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 ~ [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 ~ [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 ~ [e3,b3]@2 [e3,b3]@2 [e3,b3]@2]/3", // F#5 E5
  AA: "[e3,b3]@2 [e3,b3]@2 ~ [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [b2,f#3]@2 [b2,f#3]@2 ~", // E5 B5
  AB: "[[b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 ~ [b2,f#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 ~ [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2]/2", // B5 F#5
  AC: "~ [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 ~ [f#2,c#3]@2 [f#2,c#3]@2", // F#5
  AD: "[[e3,b3]@2 [e3,b3]@2 [e3,b3]@2 ~ [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 ~ [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 ~ [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [f#3,f#4]@2 [f#3,f#4]@4 [f#3,f#4]@4 [f#3,f#4]@2 [f#3,f#4]@2 [f#3,f#4]@2 [f#3,f#4]@2 [f#3,f#4]@4 [f#3,f#4]@4 [f#3,f#4]@2 [f#3,f#4]@2 [f#3,f#4]@2 [f#3,f#4]@2 [f#3,f#4]@4 [f#3,f#4]@4 [f#3,f#4]@2 [f#3,f#4]@2 [f#3,f#4]@2 [f#3,f#4]@2 [f#3,f#4]@4 [f#3,f#4]@4 [f#3,f#4]@2 [f#3,f#4]@2 [f#3,f#4]@2 [f#3,f#4]@2 [f#3,f#4]@4 [f#3,f#4]@4 [f#3,f#4]@2 [f#3,f#4]@2 [f#3,f#4]@2 [f#3,f#4]@2 [f#3,f#4]@4 [f#3,f#4]@4 [f#3,f#4]@2 [f#3,f#4]]/8", // E5 B5 F#
  AE: "[~ [f#3,f#4]@2 [f#3,f#4]@2 [f#3,f#4]@4 [f#3,f#4]@4 [f#3,f#4]@2 [f#3,f#4]@2 [f#3,f#4]@2 [f#3,f#4]@2 [f#3,f#4]@4 [f#3,f#4]@4 [f#3,f#4]@2 [f#3,f#4]]/2", // F#
  AF: "[~ [f#3,f#4]@2 [a2,e3,a3]@2 a2!4 [a2,e3,a3]@2 a2!4 [a2,e3,a3]@2 a2!2 [e3,b3,e4]@2 e3!4 [e3,b3]@2 e3!4 [e3,b3,e4]@2 e3!2 [b2,f#3,b3]@2 b2!4 [b2,f#3,b3]@2 b2!4 [b2,f#3,b3]@2 b2!2 [b2,f#3,b3]@2 b2!4 [b2,f#3,b3]@2 b2!4 [b2,f#3,b3]@2 b2!2 [a2,e3,a3]@2 a2!4 [a2,e3,a3]@2 a2!4 [a2,e3,a3]@2 a2!2 [e3,b3,e4]@2 e3!4 [e3,b3]@2 e3!4 [e3,b3,e4]@2 e3!2 [b2,f#3,b3]@2 b2!4 [b2,f#3,b3]@2 b2!4 [b2,f#3,b3]@2 b2!2 [c#3,g#3,c#4]@2 [c#3,g#3,c#4]@2 [c#3,c#4] ~ [d3,a3,d4]@2 [d3,a3,d4]@2 [d3,d4] ~ [e3,b3,e4]]/8", // F# A5 E5 B5 A5 E5 B5 C#5 …
  AG: "[~ [e3,b3,e4]@2 [f#2,c#3,f#3]@6 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [e3,b3,e4]@8 [e3,b3,e4]@2 [e3,b3,e4]@2 [e3,b3,e4]@2 [e3,b3,e4]@2 [b2,f#3,b3,d#4]@4 [b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4]@2 [f#3,c#4,f#4]@4 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [e3,b3,e4]@8 [e3,b3,e4]@2 [e3,b3,e4]@2 [e3,b3,e4]@2 [e3,b3,e4]@2 [b2,f#3,b3,d#4]@4 [b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4]@2 [f#3,c#4,f#4]@4 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]]/8", // E5 F#5 E5 B F#5 E5 B F#5
  AH: "[~ [f#3,c#4,f#4]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [e3,b3,e4]@8 [e3,b3,e4]@2 [e3,b3,e4]@2 [e3,b3,e4]@2 [e3,b3,e4]@2 [b2,f#3,b3,d#4]@4 [b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4]@2 [c#3,g#3,c#4]@2 [c#3,g#3,c#4]@2 [c#3,c#4] ~ [d3,a3,d4]@2 [d3,a3,d4]@2 [d3,d4] ~ [e3,b3,e4]@2 [e3,b3,e4]@2 [f#3,c#4,f#4]@4 [f#3,c#4,f#4]@4 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4] ~ [a2,e3,a3]@4 [a2,e3,a3]@2 [a2,e3,a3] ~ [e3,b3,e4]@4 [e3,b3,e4]@2 [e3,b3,e4] ~ [f#3,c#4,f#4]@4 [f#3,c#4,f#4]@4 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4] ~ [a2,e3,a3]@4 [a2,e3,a3]@2 [a2,e3,a3] ~ [e3,b3,e4]@4 [e3,b3,e4]]/8", // F#5 E5 B C#5 C# D5 D E5 …
  AI: "[~ [e3,b3,e4] ~ [f#3,c#4,f#4]@4 [f#3,c#4,f#4]@4 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4] ~ [a2,e3,a3]@2 [a2,e3,a3]@2 ~@4 [e3,b3,e4]@2 [e3,b3,e4]@2 ~]/2", // E5 F#5 A5 E5
  AJ: "~@3 [f#3,c#4,f#4]@2 ~@11", AK: "[~@15 [d3,g3,b3]@4 [f#2,c#3,f#3]@64 ~@13]/6",
})).s("gm_distortion_guitar").gain(0.48).pan(0.3)

// other · music box · "Voc2"
const music_box = note(`<
  ~@59 A B ~@2 A B ~@2 C D ~@2 C D ~@18 A B ~@2 A B ~@2 C D ~@2 C D ~@2 C D ~@53 E@2 ~@2 E@2 ~@2 F@2 ~@2 F@2 ~@2 F@2
  ~@15
>`.pickRestart({
  A: "a5", B: "g#5 ~@3", C: "f#5", D: "e5 ~@3", E: "[~@3 a5@16 g#5@4 ~@9]/2", F: "[~@3 f#5@16 e5@4 ~@9]/2",
})).s("gm_music_box").gain(0.57).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  A B C D E F G H I J H I J K L M N B C D B C D E F G H I J K I J K L O P@24 Q@7 R Q@8 P@16 Q@7 R Q@11 R Q@5 ~ S ~ N L J
  T I G E U D B M N L J T I G E U D B M N L J T I G E U D B M N V W X@7 Y Z@6 AA AB Z@10 AA AB Z@4 ~ O ~ O ~@4
>`.pickRestart({
  A: "~@4 x ~@4 x ~@3 x ~@2", B: "~ x ~@4 x ~@3 x ~@3 x ~", C: "~@3 x ~@3 x ~@3 x ~@4", D: "x ~@3 x ~@3 x ~@4 x ~@2",
  E: "~ x ~@3 x ~@4 x ~@3 x ~", F: "~@2 x ~@4 x ~@3 x ~@3 x", G: "~ x!3", H: "~ x ~@3 x ~@3 x ~@4 x ~",
  I: "~@2 x ~@3 x ~@4 x ~@3 x", J: "~@3 x ~@4 x ~@3 x ~@3", K: "x ~@4 x ~@3 x ~@3 x ~@2", L: "~@2 x ~@3 x ~@3 x ~@4 x",
  M: "~@3 x ~@3 x ~@4 x ~@3", N: "x ~@3 x ~@4 x ~@3 x ~@2", O: "~@3 x ~@12", P: "x ~@3 x ~ x ~@5 x!2 ~@2", Q: "x!4",
  R: "x!8", S: "x", T: "x ~@4 x ~@3 x ~@4 x ~", U: "~@2 x ~@4 x ~@3 x ~@4", V: "~ x ~ x ~@4",
  W: "~@3 x ~@3 x ~ x ~@5 x", X: "x ~@2 x ~@3 x ~ x ~@5 x", Y: "x ~@2 x ~@3 x ~@3 x ~@3 x",
  Z: "~@3 x ~@3 x ~@3 x ~@3 x", AA: "~@3 x ~ x ~ x ~ x ~ x ~ x ~ x", AB: "~ x ~ x ~@3 x ~@3 x ~@3 x",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct(`<
  ~@34 A B@31 C B@31 C B@11 C B@5 D E F ~@34 G H I@14 J I@11 J I@5 K L M ~@5
>`.pickRestart({
  A: "~@7 x!3 ~ x!5", B: "~ x ~ x ~ x ~ x", C: "~@4 x!2 ~@4 x!2 ~@2 x ~", D: "x!2 ~@2 x!2 ~@2", E: "x ~@3 x!12",
  F: "x!8 ~@8", G: "~@10 x!2 ~ x!3", H: "x!3 ~@2 x ~@3 x ~@3 x ~@2", I: "~ x ~@3 x ~@3 x ~@3 x ~@2",
  J: "~ x ~@5 x!2 ~@4 x!2 ~", K: "~ x ~ x ~ x ~@5 x ~ x ~@2", L: "~@3 x ~@3 x!9", M: "x!11 ~@5",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct(`<
  A B C D E F G H I B J K E F L M N O J K B C D M N G H I B C K E F G H ~@84 N L E P I Q M R K B H N L E P I Q M R K B H
  N L E P I Q M R K B H N L S ~@40
>`.pickRestart({
  A: "~@4 x ~ x ~@2 x ~ x ~ x ~ x", B: "~ x ~ x ~@2 x ~ x ~ x ~ x ~ x ~", C: "x ~@2 x ~ x ~ x ~ x ~ x ~ x ~@2",
  D: "x ~ x ~ x ~ x ~ x ~ x ~@2 x ~ x", E: "~ x ~ x ~ x ~@2 x ~ x ~ x ~ x ~", F: "x ~ x ~@2 x ~ x ~ x ~ x ~ x ~ x",
  G: "~@2 x ~ x ~ x ~ x ~ x ~ x ~@2 x", H: "~ x ~ x ~ x ~ x ~ x ~@2 x ~ x ~", I: "x ~ x ~ x ~ x ~@2 x ~ x ~ x ~ x",
  J: "~ x ~ x ~ x ~ x ~ x ~ x ~@2 x ~", K: "x ~ x ~ x ~ x ~ x ~@2 x ~ x ~ x", L: "~@2 x ~ x ~ x ~ x ~ x ~@2 x ~ x",
  M: "~ x ~ x ~ x ~ x ~@2 x ~ x ~ x ~", N: "x ~ x ~ x ~@2 x ~ x ~ x ~ x ~ x", O: "~ x ~@2 x ~ x ~ x ~ x ~ x ~ x ~",
  P: "x ~@2 x ~ x ~ x ~ x ~ x ~@2 x ~", Q: "~ x ~@2 x ~ x ~ x ~ x ~ x ~@2 x", R: "x ~ x ~@2 x ~ x ~ x ~ x ~ x ~@2",
  S: "~ x ~@14",
})).gain(0.3)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~@4 A B C D E F D E F G H I J K L M K L M N B C D E F G E F G H I ~@88 O C N P M K I J H F Q E C N P M K I J H F Q E C
  N P M K I J H ~@41
>`.pickRestart({
  A: "~@5 x ~ x", B: "~@2 x ~@4 x ~@3 x ~@3 x", C: "~ x!3", D: "~ x ~@3 x ~@3 x ~@4 x ~", E: "~@2 x ~@3 x ~@4 x ~@3 x",
  F: "~@3 x ~@4 x ~@3 x ~@3", G: "x ~@4 x ~@3 x ~@3 x ~@2", H: "~@2 x ~@3 x ~@3 x ~@4 x", I: "~@3 x ~@3 x ~@4 x ~@3",
  J: "x ~@3 x ~@4 x ~@3 x ~@2", K: "~ x ~@4 x ~@3 x ~@3 x ~", L: "~@3 x ~@3 x ~@3 x ~@4", M: "x ~@3 x ~@3 x ~@4 x ~@2",
  N: "~ x ~@3 x ~@4 x ~@3 x ~", O: "~@6 x ~@4 x ~@3 x", P: "~@2 x ~@4 x ~@3 x ~@4", Q: "x ~@4 x ~@3 x ~@4 x ~",
})).gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  A B C D E F G H I J K L M A B N O P Q R S T U V W X Y Z N AA AB AC AD AE AF ~@83 AG AH AI AJ AK C AL E Q R S T AH AI
  AJ AK C AL E Q R S T AH AI AJ AK C AL E Q R S T AH G ~@35 AM AN ~@4
>`.pickRestart({
  A: "~@9 x ~@5 x", B: "~@3 x ~ x ~@2", C: "x ~@10 x ~@4", D: "~@2 x ~@5 x ~@4 x ~@2", E: "~@3 x ~@10 x ~",
  F: "~@5 x ~@5 x ~@3 x", G: "~@3 x ~@4", H: "~ x ~@5 x ~@6 x ~", I: "~@2 x ~@6 x ~@6", J: "~@3 x ~@6 x ~@5",
  K: "~ x ~@3 x ~@5 x ~@4", L: "~@6 x ~@6 x ~@2", M: "~@3 x ~@4 x ~@5 x ~", N: "~ x ~@10 x ~@3",
  O: "~@2 x ~@6 x ~@3 x ~@2", P: "~@2 x ~@4 x", Q: "~@5 x ~@5 x ~@4", R: "x ~@2 x ~@4", S: "~ x ~@6 x ~@5 x ~",
  T: "~@3 x ~@5 x ~@6", U: "~@2 x ~@2 x ~@2", V: "~ x ~@3 x ~@6 x ~@3", W: "~@7 x ~@5 x ~@2", X: "~@4 x ~@3 x ~@6 x",
  Y: "~@9 x ~@6", Z: "x ~@5 x ~@4 x ~@4", AA: "~@3 x ~@5 x ~@3 x ~@2", AB: "~@4 x ~@10 x", AC: "~@5 x ~@6 x ~@3",
  AD: "x ~@6 x ~@8", AE: "~ x ~@2 x ~@3", AF: "~@3 x ~@12", AG: "~@8 x!8", AH: "~@4 x ~@6 x ~@4",
  AI: "~@2 x ~@3 x ~@6 x ~@2", AJ: "~@4 x ~@2 x", AK: "~@5 x ~@3 x ~@6", AL: "~ x ~@6 x ~@3 x ~@3", AM: "~@11 x!5",
  AN: "x!3 ~@13",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@35 A@24 ~@8 B@8 A@16 ~@8 B@11 ~@44 C@8 ~@8 D E@10 F ~@13>".pickRestart({
  A: "x!4", B: "x!8", C: "~@3 x ~@3 x ~@3 x ~@3 x", D: "~@3 x ~ x ~ x ~ x ~ x ~ x ~ x",
  E: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", F: "~ x ~@14",
})).gain(0.3)

// drums · crash
const crash = s("cr").struct(`<
  ~@35 A ~@7 A ~@7 A ~@14 B C@3 ~ C@3 ~ A ~@7 A ~@14 B C@3 ~ C@3 ~ C@3 B ~ D A D ~ E A ~@36 F ~@14 G ~ H@3 ~ H@3 ~ H@2 I
  ~ J F J ~ K F ~ F ~@4
>`.pickRestart({
  A: "x", B: "~@3 x ~@2 x ~", C: "~@7 x", D: "x!2", E: "x!2 ~@2 x!2 ~@2", F: "~@3 x ~@12", G: "~@9 x ~@5 x",
  H: "~ x ~@14", I: "~ x ~@7 x ~@5 x", J: "~@3 x ~@7 x ~@4", K: "~@3 x ~ x ~@5 x ~ x ~@2",
})).gain(0.3)

// drums · ride
const ride = s("rd").struct("<~@59 A@8 ~@24 A@8 ~@11 A@6 ~@46 B C@7 D ~@10 B C@5 D ~@7>".pickRestart({
  A: "x!8", B: "~@3 x ~ x ~ x ~ x ~ x ~ x ~ x", C: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", D: "~ x ~@14",
})).gain(0.3)

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

More by The Offspring