Strudelify
Then the Morning Comes cover art

1999 · Astro Lounge

Then the Morning Comes

Smash Mouth

KeyC minorTempo118 bpm
0:00/0:00
// Then the Morning Comes — Smash Mouth
// 118 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 89 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 30.
setcpm(118/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, A@4 for four bars: edit a riff to change every repeat.

// other · muted trumpet · "Then The"
const muted_trumpet = note("<A@2 ~@87>".pickRestart({
  A: "[~@11 bb4 f4 bb4 f4@4 ~@14]/2",
})).s("gm_muted_trumpet").gain(0.25)

// bass · fretless bass · "Morning Comes"
const bass = note(`<
  ~@2 A@2 B@8 C@8 D@5 E F G H I J K L@3 M N@2 O P O@2 Q R Q@2 S T U@2 V W@2 X@2 Y Z AA AB AA AB AC AD AE@8 AF AG AH AG
  AI AJ@2 AK@4 AL@5 AM ~
>`.pickRestart({
  A: "c2@5 ~@2 c2 g1 ~ bb1 ~@3 bb1@2",
  B: "[c2@10 ~@4 c2@2 g1@2 ~@2 bb1@2 ~@5 bb1@4 c2@10 ~@4 c2@2 g1@2 ~@2 bb1@2 ~@2 g1@4 bb1@4 c2@10 ~@4 c2@2 g1@2 ~@2 bb1@2 ~@6 bb1@4 c2@10 ~@4 c2@2 g1@2 ~@2 bb1@2 ~@6 bb1@4 c2@10 ~@4 c2@2 g1@2 ~ bb1@2 ~@6 bb1@4 c2@14 eb2@4 ~@2 f2@2 ~@2 g2@2 f2@2 eb2@2 c2@2 c2@10 ~@4 c2@2 g1@2 ~@2 bb1@2 ~@6 bb1@4 c2@10 ~@4 c2@2 g1@2 ~@2 bb1@2 ~@6 bb1@4 c2@2]/8",
  C: "[~@11 c2@2 g1@2 ~@2 bb1@2 ~@6 bb1@4 c2@10 ~@4 c2@2 g1@2 ~@2 bb1@2 ~@2 g1@4 bb1@4 c2@10 ~@4 c2@2 g1@2 ~@2 bb1@2 ~@6 bb1@4 c2@10 ~@4 c2@2 g1@2 ~@2 bb1@2 ~@6 bb1@4 c2@10 ~@3 c2@2 g1@2 ~@2 bb1@2 ~@6 bb1@4 c2@10 ~@4 c2@2 g1@2 ~@2 bb1@2 ~@2 g1@4 bb1@4 c2@10 ~@4 c2@2 g1@2 ~@2 bb1@2 ~@6 bb1@4 c2@10 ~@4 c2@2 g1@2 ~@2 bb1@2 ~@6 bb1@4 c2@4]/8",
  D: "[~@9 c2@2 g1@2 ~@2 bb1@2 ~@2 g1@4 bb1@2 ~@2 g1@10 ~@2 g1@2 g1@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 bb1@2 ~@2 c2@10 ~@4 c2@2 g1@2 ~@2 bb1@2 ~@6 bb1@4 c2@10 ~@4 c2@2 g1@2 ~@2 bb1@2 ~@6 bb1@4 c2@10 ~@3 c2@2 g1@2 ~@2 bb1@2 ~@6 bb1@4 c2@4 ~@2]/5",
  E: "~@11 d2@2 eb2@3", F: "~@3 g1@2 ab1@2 c2@2 ~@2 bb1@5", G: "~@9 bb1@2 ~@2 bb1@4 c2@4 d2@4 eb2@4 d2@3",
  H: "~ eb2@4 g1@4 ab1@4 c2@4 ~@4 bb1@11", I: "~@9 bb1@2 ~@2 bb1@4 c2@4 eb2@11",
  J: "~ eb2@4 ~@4 ab1@2 ~@2 c2@4 ~@3 bb1@12", K: "~@2 c2!2 eb2 bb1 c2@2", L: "~@3 c2 g1 ~ bb1 ~@3 bb1@2 c2@4",
  M: "~@5 c2@2 g1@2 ~@2 bb1@2 ~@10 c2@9", N: "~@5 c2@2 g1@2 ~@2 bb1@2 ~@6 bb1@4 c2@9",
  O: "~@2 c2 g1 ~ bb1 ~@3 bb1@2 c2@5", P: "~@2 c2 g1 ~ bb1 ~ g1@2 bb1@2 c2@5",
  Q: "~@3 c2@2 g1@2 ~@2 bb1@2 ~@6 bb1@4 c2@10 ~", R: "~@3 c2@2 g1@2 ~@2 bb1@2 ~@2 g1@4 bb1@4 c2@10 ~",
  S: "~ c2 g1 ~ bb1 ~ g1@2 bb1 ~ g1@5 ~", T: "g1!3 ~ g1 ~ g1 ~ bb1 ~ c2@5 ~", U: "~ c2 g1 ~ bb1 ~@3 bb1@2 c2@5 ~",
  V: "~ c2@2 g1@2 ~@2 bb1@2 ~@6 bb1@4 c2@4 ~@9", W: "[~@15 d2@4 eb2@8 ~@4 g1@4 ab1@4 c2@4 ~@4 bb1@12 ~@5]/2",
  X: "[~ bb1 ~ bb1@2 c2@2 d2@2 eb2@2 d2@2 eb2@2 g1@2 ab1@2 c2@2 ~@2 bb1@6 ~@3]/2",
  Y: "~ bb1 ~ bb1@2 c2@2 eb2@6 eb2@2 ~", Z: "~@2 ab1@2 ~@2 c2@4 ~@4 bb1@12 ~@3 c2@3",
  AA: "~ c2@4 db2@4 c2@4 d2@4 c2@12 c2@3", AB: "~ c2@4 c2@10 ~@2 f1@14 ~", AC: "c2 db2 c2 d2 c2@3 c2",
  AD: "c2@2 c2@4 c2@2 f1@7 ~",
  AE: "[c2@12 c3@4 a2@6 ~@5 a2@2 ~@2 d3@4 d3@2 ~@6 c3@4 a2@6 ~@6 a2@2 ~@2 d3@4 d3@2 ~@6 c3@4 a2@6 ~@6 a2@2 ~@2 d3@4 d3@2 ~@6 c3@4 a2@6 ~@6 a2@2 ~@2 d3@4 d3@2 ~@6 d3@4 c2@6 ~@5 ab2@2 ~@2 f2@4 f2@2 ~@6 eb2@4 c2@6 ~@6 ab2@2 ~@2 f2@4 f2@2 ~@6 c2@4 c2@6 ~@6 ab2@2 ~@2 f2@4 f2@2 ~@6 eb2@4 c2@6 ~@6 ab2@2 ~@2 f2@2]/8",
  AF: "~@2 f2@2 ~@5 c2@4 c2@6 ~@6 ab2@2 ~@2 f2@3", AG: "~ f2@2 ~@6 eb2@4 c2@6 ~@6 ab2@2 ~@2 f2@3",
  AH: "~ f2@2 ~@6 c2@4 c2@6 ~@6 ab2@2 ~@2 f2@3", AI: "f2 ~@3 c2@2 c2@5 ~@2 c2 g1 ~",
  AJ: "bb1 ~@3 bb1@2 c2@5 ~@2 c2 g1 ~",
  AK: "[bb1@2 ~@2 g1@4 bb1@2 ~@2 g1@10 ~ g1@2 g1@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 bb1@2 ~@2 c2@10 ~@4 c2@2 g1@2 ~@2 bb1@2 ~@6 bb1@4 c2@10 ~@4 c2@2 g1@2 ~@2 bb1@2 ~@6 bb1@4 c2@10 ~@4 c2@2 g1@2 ~@2 bb1]/4",
  AL: "[~@7 bb1@3 eb2@8 ~@4 g1@4 ab1@4 c2@4 ~@4 bb1@12 ~@8 bb1@2 ~@2 bb1@4 c2@4 d2@4 eb2@4 d2@4 eb2@4 g1@4 ab1@4 c2@4 ~@4 bb1@12 ~@8 bb1@2 ~@2 bb1@3 c2@4 eb2@12 eb2@4 ~@4 ab1@2 ~@2 c2@3]/5",
  AM: "~@5 bb1@20 ~@7",
})).s("gm_fretless_bass").gain(0.4)

// chords · distortion guitar
const distortion_guitar = note("<~@2 A@8 ~@15 B@7 C@2 D@2 ~@15 E@3 F@2 G ~@10 H@3 ~ I@2 J ~@8 K@6 ~>".pickRestart({
  A: "[~@8 c4@4 c4@4 eb4@4 f4@4 ~@4 gb4@18 f4@6 eb4@4 c4@4 bb3@12 c4@4 c4@4 eb4@4 f4@4 ~@4 gb4@17 f4@6 eb4@4 c4@4 bb3@12 c4@4 c4@4 eb4@4 f4@4 ~@4 gb4@18 f4@6 eb4@4 c4@4 bb3@12 c4@4 c4@4 eb4@3 bb4@8 a4@36 ~@2]/8",
  B: "[~@26 [eb4,g4,bb4]@16 [eb4,ab4,c5]@12 [d4,f4,bb4]@15 [eb4,ab4,c5]@20 [eb4,g4,bb4]@16 [eb4,ab4,c5]@12 [d4,f4,bb4]@16 [eb4,ab4,c5]@20 [eb4,g4,bb4]@16 [eb4,ab4,c5]@12 [d4,f4,bb4]@15 [eb4,ab4,c5]@18 ~@10]/7", // Eb Ab Bb Ab Eb Ab Bb Ab …
  C: "[c4@2 c4@2 eb4@2 f4@2 ~@2 gb4@9 f4@3 eb4@2 c4@2 bb3@6]/2", D: "[c4@4 c4@4 eb4@3 bb4@8 a4@28 ~@17]/2",
  E: "[~@19 [eb4,g4,bb4]@16 [eb4,ab4,c5]@12 [d4,f4,bb4]@15 [eb4,ab4,c5]@20 [eb4,g4,bb4]@14]/3", // Eb Ab Bb Ab Eb
  F: "[~ [eb4,ab4,c5]@6 [d4,f4,bb4]@8 [eb4,ab4,c5]@10 [eb4,g4,bb4]@7]/2", G: "~ [eb4,ab4,c5]@6 [d4,f4,bb4]@8 ~",
  H: "[~@11 bb4@2 bb4 ~ bb4@4 a4@2 a4 ~ a4@4 g4@4 g4@2 g4@2 f4@2 g4 ~@10]/3",
  I: "[~@21 bb4@4 bb4@2 ~@2 bb4@8 a4@4 a4@2 ~@2 a4@8 g4@8 g4@3]/2", J: "~ g4@4 f4@4 g4@2 ~@21",
  K: "[~@10 [eb4,g4,bb4]@16 [eb4,ab4,c5]@12 [d4,f4,bb4]@16 [eb4,ab4,c5]@20 [eb4,g4,bb4]@16 [eb4,ab4,c5]@12 [d4,f4,bb4]@16 [eb4,ab4,c5]@19 [eb4,g4,bb4]@16 [eb4,ab4,c5]@12 [d4,f4,bb4]@16 ~@11]/6", // Eb Ab Bb Ab Eb Ab Bb Ab …
})).s("gm_distortion_guitar").gain(0.2).pan(0.2)

// chords · distortion guitar
const distortion_guitar_2 = note("<~@84 [~@9 gb0@4 ~@3] ~@4>").s("gm_distortion_guitar").gain(0.2).pan(0.8)

// other · vibraphone
const vibraphone = note("<~@2 A@8 ~@8 B@2 C@2 ~@10 D@2 E@2 ~@6 F G H I J ~@20 K@3 ~ L@2 M ~ N O N P ~@10>".pickRestart({
  A: "[~@8 c5@4 c5@4 eb5@4 f5@4 ~@4 gb5@18 f5@6 eb5@4 c5@4 bb4@12 c5@4 c5@4 eb5@4 f5@4 ~@4 gb5@17 f5@6 eb5@4 c5@4 bb4@12 c5@4 c5@4 eb5@4 f5@4 ~@4 gb5@18 f5@6 eb5@4 c5@4 bb4@12 c5@4 c5@4 eb5@3 bb5@8 a5@36 ~@2]/8",
  B: "[~@2 c4@2 c4@2 eb4@2 f4@2 ~@2 g4@7 ~@13]/2", C: "[~@3 c4@4 c4@4 eb4@4 f4@4 ~@4 d4@16 ~@25]/2",
  D: "[c5@2 c5@2 eb5@2 f5@2 ~@2 gb5@9 f5@3 eb5@2 c5@2 bb4@6]/2", E: "[c5@4 c5@4 eb5@3 bb5@8 a5@36 ~@9]/2",
  F: "~@13 g4@2 ~@17", G: "~@13 bb3@2 ~@14 c4@3", H: "~ c4@4 eb4@4 f4@4 ~@4 g4@14 ~", I: "~@7 c4",
  J: "c4 eb4 f4 ~ d4@4",
  K: "[~@11 [bb4,bb5]@2 [bb4,bb5] ~ [bb4,bb5]@4 [a4,a5]@2 [a4,a5] ~ [a4,a5]@4 [g4,g5]@4 [g4,g5]@2 [g4,g5]@2 [f4,f5]@2 [g4,g5] ~@10]/3", // Bb A G F G
  L: "[~@21 [bb4,bb5]@4 [bb4,bb5]@2 ~@2 [bb4,bb5]@8 [a4,a5]@4 [a4,a5]@2 ~@2 [a4,a5]@8 [g4,g5]@8 [g4,g5]@3]/2", // Bb A G
  M: "~ [g4,g5]@4 [f4,f5]@4 [g4,g5]@2 ~@21", N: "~@5 c4!2 eb4", O: "f4@2 ~@2 g4@7 ~@5", P: "f4 ~ d4@4 ~@2",
})).s("gm_vibraphone").gain(0.8).pan(0.6)

// other · vibraphone · soft notes
const vibraphone_soft = note("<~@39 A B C D E ~@3 F G H@2 ~@28 I J@2 K ~@6>".pickRestart({
  A: "~@11 c4 ~@4", B: "~ eb4 ~@5 g4 ~@5 bb4 ~ bb4",
  C: "~@2 bb4@2 ~@2 c5@2 ~@2 eb5@2 ~@2 g5@2 ~@2 eb5@2 ~@2 [c4,c5]@2 ~ g4@2 ~@5", D: "~ eb4@2 ~@22 g4@2 ~@5",
  E: "~ f4@2 ~@6 eb4@2 ~@21", F: "~@10 c4 ~@5", G: "eb4 ~@5 g4 ~@5 bb4 ~ bb4 ~",
  H: "[bb4@2 ~ c5@2 ~@2 eb5@2 ~@2 g5@2 ~@2 eb5@2 ~@2 [c4,c5]@2 ~@10 eb4@2 ~@10 c4@2 ~@19]/2", // C
  I: "~@11 c4@2 ~@10 eb4@2 ~@7",
  J: "[~@3 g4@2 ~@10 bb4@2 ~@2 bb4@2 ~@2 bb4@2 ~@2 c5@2 ~@2 eb5@2 ~@2 g5@2 ~@2 eb5@2 ~@2 [c4,c5]@2 ~@10 eb4@2 ~@7]/2", // C
  K: "~@3 c4@2 ~@27",
})).s("gm_vibraphone").gain(0.4).pan(0.6)

// chords · reed organ · "Alan Tyrrell"
const reed_organ = note("<~@20 A@2 ~@3 B C@2 D@2 E@2 ~@14 F G ~@3 H@6 ~@21 I@2 ~@2 J@6 ~>".pickRestart({
  A: "[~@31 [d5,g5,d6]@2 ~@2 [d5,g5,d6]@2 ~@6 [d5,g5,d6]@2 ~@2 [d5,g5,d6]@2 ~@15]/2", B: "~@13 [eb3,g3,bb3,eb4]@3",
  C: "[~@2 g4@4 eb4@4 ab4@4 c5@8 ~@8 [ab4,c5]@3 [ab4,c5]@4 [ab4,c5]@4 [ab4,c5]@4 [ab4,c5]@4 [ab4,c5]@4 ~@4 [eb3,g3,bb3,eb4]@7, ~@5 [ab3,c4,eb4]@4 ~@2 bb4@4 ~@17, ~@13 [bb3,d4,f4]@14 ~@5]/2", // Ab Eb Ab Bb
  D: "[~ g4@4 eb4@4 ab4@4 c5@8 ~@8 [ab4,c5]@4 [ab4,c5]@4 [ab4,c5]@4 [ab4,c5]@4 [ab4,c5]@4 [ab4,c5]@4 ~@4 [eb3,g3,bb3,eb4]@7, ~@9 [ab3,c4,eb4]@8 ~@4 bb4@8 ~@35, ~@25 [bb3,d4,f4]@28 ~@11]/2", // Ab Eb Ab Bb
  E: "[~ g4@4 eb4@4 ab4@4 c5@7 ~@4 [bb3,d4,f4]@16 [c4,eb4,g4]@16 ~@8, ~@9 [ab3,c4,eb4]@8 ~@3 bb4@20 ~@24]/2", // Bb Cm Ab
  F: "~@12 [d5,g5,d6] ~ [d5,g5,d6] ~", G: "~@2 [d5,g5,d6] ~ [d5,g5,d6] ~@11",
  H: "[~@19 [eb3,g3,bb3,eb4]@8 g4@4 eb4@4 ab4@4 c5@8 ~@8 [ab4,c5]@3 [ab4,c5]@4 [ab4,c5]@4 [ab4,c5]@4 [ab4,c5]@4 [ab4,c5]@4 ~@4 [eb3,g3,bb3,eb4]@8 g4@4 eb4@4 ab4@4 c5@8 ~@8 [ab4,c5]@4 [ab4,c5]@4 [ab4,c5]@4 [ab4,c5]@4 [ab4,c5]@4 [ab4,c5]@4 ~@4 [eb3,g3,bb3,eb4]@8 g4@4 eb4@4 ab4@4 c5@8 bb4@18, ~@35 [ab3,c4,eb4]@8 ~@4 bb4@8 ~@55 bb4@8 ~@74, ~@51 [bb3,d4,f4]@28 ~@19 [ab3,c4,eb4]@8 ~@8 [bb3,d4,f4]@28 ~@20 [ab3,c4,eb4]@8 ~@22]/6", // Eb Ab Eb Ab Eb Ab Bb Ab …
  I: "[~@16 [d5,g5,d6]@2 ~ [d5,g5,d6]@2 ~@6 [d5,g5,d6]@2 ~@2 [d5,g5,d6]@2 ~@31]/2", // G5
  J: "[~@10 [eb3,g3,bb3,eb4]@8 g4@4 eb4@4 ab4@4 c5@8 ~@8 [ab4,c5]@4 [ab4,c5]@4 [ab4,c5]@4 [ab4,c5]@4 [ab4,c5]@4 [ab4,c5]@4 ~@4 [eb3,g3,bb3,eb4]@8 g4@4 eb4@4 ab4@4 c5@8 ~@8 [ab4,c5]@4 [ab4,c5]@4 [ab4,c5]@4 [ab4,c5]@4 [ab4,c5]@3 [ab4,c5]@4 ~@4 [eb3,g3,bb3,eb4]@8 g4@4 eb4@4 ab4@4 c5@8 bb4@20 ~@7, ~@13 [ab3,c4,eb4]@4 ~@2 bb4@4 ~@28 bb4@4 ~@41, ~@42 [bb3,d4,f4]@28 ~@20 [ab3,c4,eb4]@8 ~@8 [bb3,d4,f4]@28 ~@19 [ab3,c4,eb4]@8 ~@31]/6", // Eb Ab Eb Ab Eb Ab Bb Ab …
})).s("gm_reed_organ").gain(0.28)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@2 A@3 B@4 C ~@16 D E F E F G H@2 I@8 J@4 K L M N O P Q R S R S T U V W X Y Z ~@11 AA AB@2 AC AD AE@2 AF AG AH AG AI
  AJ ~
>`.pickRestart({
  A: "~@4 [c3,g3,eb4] ~@7 [c3,g3,eb4] ~@3, ~@2 [c4,g4] ~@3 [c4,g4] ~", // Cm C5
  B: "~@7 [c3,g3,eb4]@2 ~@14 [c3,g3,eb4]@2 ~@7, ~@7 [c4,g4]@4 ~@12 [c4,g4]@4 ~@5", // Cm C5
  C: "~@3 [c3,g3,eb4] ~@7 [c3,g3,eb4] ~@4, ~@3 [c4,g4]@2 ~@6 [c4,g4]@2 ~@3", // Cm C5
  D: "~ [g3,bb3,g4] ~@7 [ab3,c4,ab4] ~@6, ~ [eb4,bb4]@2 ~@6 [eb4,c5]@2 ~@5", // Gm Ab Eb5 Cm
  E: "~ [f3,bb3,f4]@2 ~@14 [ab3,c4,ab4]@2 ~@13, ~ [d4,bb4]@4 ~@12 [eb4,c5]@4 ~@11", // Bb5 Ab Gm Cm
  F: "~ [g3,bb3,g4]@2 ~@14 [ab3,c4,ab4]@2 ~@13, ~ [eb4,bb4]@4 ~@12 [eb4,c5]@4 ~@11", // Gm Ab Eb5 Cm
  G: "[f3,bb3,f4] ~@7 [c3,g3,eb4] ~@7, [d4,bb4] ~@3 [c4,g4] ~@3", // Bb5 Cm Gm C5
  H: "[c3,g3,eb4] ~@7 [c3,g3,eb4] ~@7, [c4,g4] ~@3 [c4,g4] ~@3", // Cm C5
  I: "[[c3,g3,eb4]@2 ~@13 [c3,g3,eb4]@2 ~@14 [c3,g3,eb4]@2 ~@14 [c3,g3,c4,eb4]@2 ~@14 [c3,g3,eb4]@2 ~@14 [c3,g3,eb4]@2 ~@14 [c3,g3,eb4]@2 ~@13 [c3,g3,eb4]@2 ~@14 [c3,g3,eb4]@2 ~@14 [c3,g3,eb4]@2 ~@14 [c3,g3,eb4]@2 ~@14 [c3,g3,eb4]@2 ~@14 [c3,g3,eb4]@2 ~@14 [c3,g3,eb4]@2 ~@14 [c3,g3,eb4]@2 ~@14 [c3,g3,eb4]@2 ~@14 [c3,g3,c4,eb4,g4]@2, [c4,g4]@4 ~@11 [c4,g4]@4 ~@12 [c4,g4]@4 ~@12 g4@4 ~@12 [c4,g4]@4 ~@12 [c4,g4]@4 ~@12 [c4,g4]@4 ~@11 [c4,g4]@4 ~@12 [c4,g4]@4 ~@12 [c4,g4]@4 ~@12 [c4,g4]@4 ~@12 [c4,g4]@4 ~@12 [c4,g4]@4 ~@12 [c4,g4]@4 ~@12 [c4,g4]@4 ~@12 [c4,g4]@4 ~@14]/8", // Cm C5
  J: "~@13 [c3,g3,eb4]@2 ~@14 [c3,g3,c4,eb4,g4]@3, ~@13 [c4,g4]@4 ~@15", // Cm C5
  K: "~@6 [c3,g3,eb4] ~@7 [d3,g3,d4] ~, ~@3 [c4,g4] ~@3 [b3,g4]", // Cm G5 C5 Em
  L: "~@6 [d3,g3,d4] ~@7 [c3,g3,eb4] ~, ~@3 [b3,g4] ~@3 [c4,g4]", // G5 Cm Em C5
  M: "~@6 [c3,g3,eb4] ~@7 [c3,g3,eb4] ~, ~@3 [c4,g4] ~@3 [c4,g4]", // Cm C5
  N: "~@11 [c3,g3,eb4]@2 ~@14 [c3,g3,eb4]@2 ~@3, ~@11 [c4,g4]@4 ~@12 [c4,g4]@4 ~", // Cm C5
  O: "~@11 [c3,g3,eb4]@2 ~@19, ~@11 [c4,g4]@4 ~@17", P: "~@27 [g3,bb3,g4]@2 ~@3, ~@27 [eb4,bb4]@4 ~",
  Q: "~@11 [ab3,c4,ab4]@2 ~@13 [f3,bb3,f4]@2 ~@4, ~@11 [eb4,c5]@4 ~@11 [d4,bb4]@4 ~@2", // Ab Bb5 Cm Gm
  R: "~@5 [ab3,c4,ab4] ~@7 [g3,bb3,g4] ~@2, ~@5 [eb4,c5]@2 ~@6 [eb4,bb4]@2 ~", // Ab Gm Cm Eb5
  S: "~@5 [ab3,c4,ab4] ~@7 [f3,bb3,f4] ~@2, ~@5 [eb4,c5]@2 ~@6 [d4,bb4]@2 ~", // Ab Bb5 Cm Gm
  T: "~@9 [f3,bb3,d4,f4,bb4]@2 ~@14 [g3,c4,g4]@2 ~@5, ~@25 [e4,c5]@4 ~@3", // Bb C5 C
  U: "~@9 [g3,c4,g4]@2 ~@14 [c4,f4,c5]@2 ~@5, ~@9 [e4,c5]@4 ~@12 [a4,f5]@4 ~@3", // C5 F5 C Dm
  V: "~@9 [c4,f4,c5]@2 ~@14 [g3,c4,g4]@2 ~@5, ~@9 [a4,f5]@4 ~@12 [e4,c5]@4 ~@3", // F5 C5 Dm C
  W: "~@4 [g3,c4,g4] ~@7 [c4,f4,c5] ~@3, ~@2 [e4,c5] ~@3 [a4,f5] ~", // C5 F5 C Dm
  X: "~@4 [c4,f4,c5] ~@7 [g3,c4,g4] ~@3, ~@2 [a4,f5] ~@3 [e4,c5] ~", // F5 C5 Dm C
  Y: "~@4 [g3,c4,g4] ~@7 [f4,a4,f5]@2 ~@2, ~@4 [e4,c5]@2 ~@6 [c4,c5] ~@3", Z: "~@2 [f4,a4,f5] ~@5, ~@4 [c4,c5] ~@11",
  AA: "~@10 [c3,g3,eb4] ~@5, ~@5 [c4,g4] ~@2", AB: "~@2 [c3,g3,eb4] ~@7 [c3,g3,eb4] ~@5, ~ [c4,g4] ~@3 [c4,g4] ~@2",
  AC: "~@4 [c3,g3,eb4]@2 ~@13 [d3,g3,d4]@2 ~@11, ~@4 [c4,g4]@4 ~@11 [b3,g4]@4 ~@9", // Cm G5 C5 Em
  AD: "~@3 [d3,g3,d4]@2 ~@14 [c3,g3,eb4]@2 ~@11, ~@3 [b3,g4]@4 ~@12 [c4,g4]@4 ~@9", // G5 Cm Em C5
  AE: "~@3 [c3,g3,eb4]@2 ~@14 [c3,g3,eb4]@2 ~@11, ~@3 [c4,g4]@4 ~@12 [c4,g4]@4 ~@9", // Cm C5
  AF: "~@3 [c3,g3,eb4]@2 ~@13 [g3,bb3,g4]@2 ~@12, ~@3 [c4,g4]@4 ~@11 [eb4,bb4]@4 ~@10", // Cm Gm C5 Eb5
  AG: "~ [ab3,c4,ab4] ~@7 [f3,bb3,f4] ~@6, ~ [eb4,c5]@2 ~@6 [d4,bb4]@2 ~@5", // Ab Bb5 Cm Gm
  AH: "~ [ab3,c4,ab4] ~@7 [g3,bb3,g4] ~@6, ~ [eb4,c5]@2 ~@6 [eb4,bb4]@2 ~@5", // Ab Gm Cm Eb5
  AI: "~ [ab3,c4,ab4]@2 ~@14 [g3,bb3,g4]@2 ~@13, ~ [eb4,c5]@4 ~@12 [eb4,bb4]@4 ~@11", // Ab Gm Cm Eb5
  AJ: "~ [ab3,c4,ab4]@2 ~@14 [f3,bb3,f4]@2 ~@13, ~ [eb4,c5]@4 ~@12 [d4,bb4]@4 ~@11", // Ab Bb5 Cm Gm
})).s("gm_acoustic_guitar_steel").gain(0.19).pan(0.4)

// other · tenor sax
const tenor_sax = note("<~@25 A B@2 C@2 D@2 ~@19 E@6 ~@12 F@2 G ~ H I@2 ~@6 J@6 ~>".pickRestart({
  A: "~@11 d3@2 g3@3", B: "[~@2 g3@4 g3@4 eb3@4 eb3@8 f3@15 ab3@4 ab3@4 ab3@4 ab3@4 ab3@4 g3@7]/2",
  C: "[~ g3@4 g3@4 eb3@4 eb3@8 f3@16 ab3@4 ab3@4 ab3@4 ab3@4 ab3@4 g3@7]/2",
  D: "[~ g3@4 g3@4 eb3@4 eb3@7 f3@20 c3@16 ~@8]/2",
  E: "[~@19 g3@8 g3@4 g3@4 eb3@4 eb3@8 f3@15 ab3@4 ab3@4 ab3@4 ab3@4 ab3@4 g3@8 g3@4 g3@4 eb3@4 eb3@8 f3@16 ab3@4 ab3@4 ab3@4 ab3@4 ab3@4 g3@8 g3@4 g3@4 eb3@4 eb3@8 f3@18]/6",
  F: "[~@11 c3@2 c3@2 eb3@2 f3@10 gb3@2 eb3@2 f3]/2", G: "~@2 f3@2 ~@2 f3@3 eb3@4 c3@10 ~@9", H: "~@21 c3@4 c3@4 eb3@3",
  I: "[~ bb3@8 a3@46 ~@9]/2",
  J: "[~@10 g3@8 g3@4 g3@4 eb3@4 eb3@8 f3@16 ab3@4 ab3@4 ab3@4 ab3@4 ab3@4 g3@8 g3@4 g3@4 eb3@4 eb3@8 f3@16 ab3@4 ab3@4 ab3@3 ab3@4 ab3@4 g3@8 g3@4 g3@4 eb3@4 eb3@8 f3@20 ~@7]/6",
})).s("gm_tenor_sax").gain(0.48).pan(0.6)

// chords · piano
const piano = note("<~@57 A B C D E F G ~@25>".pickRestart({
  A: "~@17 [e3,g3,c4,e4,g4]@2 ~@2 [e3,g3,c4,e4,g4]@2 ~@2 [e3,g3,c4,e4,g4]@2 ~@2 [e3,g3,c4,e4,g4]@2 ~", // C
  B: "~ [e3,g3,c4,e4,g4]@2 ~@2 [e3,g3,c4,e4,g4]@2 ~@2 [e3,g3,c4,e4,g4]@2 ~@2 [e3,g3,c4,e4,g4]@2 ~@2 [f3,a3,c4,f4,a4]@2 ~@2 [f3,a3,c4,f4,a4]@2 ~@2 [f3,a3,c4,f4,a4]@2 ~@2 [f3,a3,c4,f4,a4]@2 ~", // C F
  C: "~ [f3,a3,c4,f4,a4]@2 ~@2 [f3,a3,c4,f4,a4]@2 ~@2 [f3,a3,c4,f4,a4]@2 ~@2 [f3,a3,c4,f4,a4]@2 ~@2 [e3,g3,c4,e4,g4]@2 ~@2 [e3,g3,c4,e4,g4]@2 ~@2 [e3,g3,c4,e4,g4]@2 ~@2 [e3,g3,c4,e4,g4]@2 ~", // F C
  D: "~ [e3,g3,c4,e4,g4]@2 ~ [e3,g3,c4,e4,g4]@2 ~@2 [e3,g3,c4,e4,g4]@2 ~@2 [e3,g3,c4,e4,g4]@2 ~@2 [f3,a3,c4,f4,a4]@2 ~@2 [f3,a3,c4,f4,a4]@2 ~@2 [f3,a3,c4,f4,a4]@2 ~@2 [f3,a3,c4,f4,a4]@2 ~@2", // C F
  E: "[f3,a3,c4,f4,a4] ~ [f3,a3,c4,f4,a4] ~ [f3,a3,c4,f4,a4] ~ [f3,a3,c4,f4,a4] ~ [e3,g3,c4,e4,g4] ~ [e3,g3,c4,e4,g4] ~ [e3,g3,c4,e4,g4] ~ [e3,g3,c4,e4,g4] ~", // F C
  F: "[e3,g3,c4,e4,g4] ~ [e3,g3,c4,e4,g4] ~ [e3,g3,c4,e4,g4] ~ [e3,g3,c4,e4,g4] ~ [f3,a3,c4,f4,a4] ~ [f3,a3,c4,f4,a4] ~ [f3,a3,c4,f4,a4] ~ [f3,a3,c4,f4,a4] ~", // C F
  G: "[f3,a3,c4,f4,a4] ~ [f3,a3,c4,f4,a4] ~ [f3,a3,c4,f4,a4] ~ [f3,a3,c4,f4,a4] ~@9", // F
})).s("gm_piano").gain(0.4)

// other · orchestra hit
const orchestra_hit = note("<~@63 A@8 B@5 ~@13>".pickRestart({
  A: "[~@15 a2@8 e3@4 c3@4 d3@8 ~@8 a2@8 e3@4 c3@4 d3@8 ~@8 a2@8 e3@4 c3@4 d3@8 ~@8 a2@8 e3@4 c3@4 d3@8 ~@7 c3@8 g3@4 eb3@4 f3@8 ~@8 c3@8 g3@4 eb3@4 f3@8 ~@8 c3@8 g3@4 eb3@4 f3@8 ~@8 c3@8 g3@4 eb3@4 f3@2]/8",
  B: "[~@13 c3@8 g3@4 eb3@4 f3@8 ~@8 c3@8 g3@4 eb3@4 f3@8 ~@8 c3@8 g3@4 eb3@4 f3@8 ~@8 c3@8 g3@4 eb3@4 f3@8 ~@7 [c3,c4]@8 ~@12]/5", // C
})).s("gm_orchestra_hit").gain(0.5).pan(0.4)

// other · string ensemble 1
const string_ensemble_1 = note("<~@63 A@8 B@4 C ~@13>".pickRestart({
  A: "[~@15 a3@4 ~@4 e4@4 c4@4 d4@4 ~@12 a3@4 ~@4 e4@4 c4@4 d4@4 ~@12 a3@4 ~@4 e4@4 c4@4 d4@4 ~@12 a3@4 ~@4 e4@4 c4@4 d4@4 ~@11 c4@4 ~@4 g4@4 eb4@4 f4@4 ~@12 c4@4 ~@4 g4@4 eb4@4 f4@4 ~@12 c4@4 ~@4 g4@4 eb4@4 f4@4 ~@12 c4@4 ~@4 g4@4 eb4@4 f4@2]/8",
  B: "~@13 c4@4 ~@4 g4@4 eb4@4 f4@3", C: "~@3 [c4,c5] ~@4",
})).s("gm_string_ensemble_1").gain(0.5).pan(0.7)

// other · pan flute
const pan_flute = note(`<
  ~@19 A@2 ~@4 B C D E F G ~@13 H I ~@4 J@2 K@4 L M N@2 O P Q R ~@12 S T ~@3 U@2 V@3 W@2 ~
>`.pickRestart({
  A: "[~@4 c4@2 ~@2 c4@4 eb4@4 f4@6 ~ c4@12 ~@29]/2", B: "~@3 g4@2 ab4@2 g4@2 ab4@7", C: "~@15 c5",
  D: "~ c5@4 c5@4 c5@4 c5@4 c5@4 bb4@10 ~", E: "~ g4@4 g4@4 g4@4 eb4@6 ~@2 eb4@10 ~",
  F: "~@5 c5@4 c5@4 c5@4 c5@4 c5@4 bb4@7", G: "~ g4@8 g4@4 g4@6 ~ f4@12", H: "~@29 c4@2 ~",
  I: "~ c4@4 eb4@4 f4@6 ~ c4@12 ~@4", J: "[~@31 g4@4 ab4@4 g4@4 ab4@16 ~@5]/2",
  K: "[~@23 c5@3 c5@4 c5@4 c5@4 c5@4 c5@4 bb4@10 ~@2 g4@4 g4@4 g4@4 eb4@6 ~@2 eb4@10 ~@6 c5@4 c5@4 c5@4 c5@4 c5@4 bb4@8 g4@6]/4",
  L: "~ g4@2 g4@3 ~ f4@7 ~@2", M: "~@17 [e4,g4]@15",
  N: "[~ [e4,g4]@16 [f4,a4]@10 ~@2 [f4,a4]@8 [f4,a4]@4 [f4,a4]@4 [f4,a4]@4 [e4,g4]@8 [e4,g4]@6 ~]/2", // Em F Em
  O: "~ [e4,g4]@3 [e4,g4]@4 ~@4 [f4,a4]@8 ~@12", P: "~@4 [f4,a4]@2 [f4,a4]@2 [e4,g4]@3 ~ [e4,g4]@4",
  Q: "[e4,g4]@2 [e4,g4]@3 ~ [f4,a4]@5 ~@3 b3@2", R: "c4@2 d4@2 c4@2 b3@2 c4@4 a3@3 ~", S: "~@10 c4 ~ c4@2 eb4@2",
  T: "f4@3 ~ c4@6 ~@6", U: "[~@23 g4@4 ab4@4 g4@4 ab4@16 ~@13]/2",
  V: "[~@7 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 bb4@5 ~ g4@2 g4@2 g4@2 eb4@3 ~ eb4@5 ~@3 c5@2 c5@2 c5]/3",
  W: "[~ c5@4 c5@4 bb4@8 g4@8 g4@4 g4@6 ~@2 f4@14 ~@13]/2",
})).s("gm_pan_flute").gain(0.22).pan(0.4)

// bass · synth bass 1 · Cm
const bass_2 = note("<~@35 [~@19 [c-1,g-1,c0,eb0]@8 ~@5] ~@53>").s("gm_synth_bass_1").gain(0.8)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 A@2 B C@4 D@3 E@4 F@4 G@4 H I H J@4 K@4 L@3 M@4 N@4 O@4 P Q P R@3 S T@3 U@3 V W@4 X@3 Y@4 Z AA@2 AB@4 AC@4 AD AE ~
>`.pickRestart({
  A: "x ~@6 x!2 ~@7", B: "x ~@13 x ~ x ~@14 x", C: "~@13 x ~ x ~@15 x", D: "~@6 x!2 ~@7 x", E: "~@11 x ~ x ~@15 x ~@2",
  F: "~@5 x!2 ~@7 x ~", G: "~@9 x ~ x ~@15 x ~@4", H: "~@4 x!2 ~@7 x ~@2", I: "~@13 x ~@2", J: "~@7 x ~ x ~@15 x ~@6",
  K: "~@3 x!2 ~@7 x ~@3", L: "~@5 x ~ x ~@15 x ~@8", M: "~@2 x!2 ~@7 x ~@4", N: "~@3 x ~ x ~@15 x ~@10",
  O: "~ x!2 ~@7 x ~@5", P: "~ x ~ x ~@15 x ~@12", Q: "~@19 x ~@12", R: "x!2 ~@7 x ~@6", S: "x ~ x ~@14 x ~@13 x",
  T: "~ x ~@15 x ~@13 x", U: "x ~@7 x ~@6 x", V: "x ~@15 x ~@12 x ~ x", W: "~@3 x ~@3 x ~@7 x ~@13 x ~ x",
// … 74 more lines

More by Smash Mouth