Strudelify
All Star cover art

1999 · Astro Lounge

All Star

Smash Mouth

KeyG majorTempo108 bpm
0:00/0:00
// All Star — Smash Mouth
// 108 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 7 "Staff-7" music box (copy of ch 6 "Staff-6" ocarina)
// note: Full arrangement: all 84 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(108/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · electric guitar clean · "Staff-5"
const electric_guitar_clean = note(`<
  ~@16 A B C B C B C D E ~@7 A B C B C B C D E ~@7 A B C B C B C D ~@15 A B C B C B C B C B C D E
>`.pickRestart({
  A: "~@12 d#2@3 f2", B: "[f#2,c#3]!4 [b2,f#3]!4", C: "[c3,f#3]!4 [b2,f#3]!4", D: "[f#2,c#3]!4 [e2,b2]!4",
  E: "[f#2,b2,f#3]@15 ~", // B5
})).s("gm_electric_guitar_clean").gain(0.72)

// other · acoustic guitar steel · "Staff-8"
const acoustic_guitar_steel = note("<~@41 A ~@14 B C B C B C B ~ D E D E D E D F ~@11 G>".pickRestart({
  A: "c#3 ~@7", B: "f#2 a#3 f#3 c3 c#3 a#3 g#3 [d#3,f#4]", C: "g#2 a#3 f#3 a#2 b2 a#3 f#3 [c#3,c#4]",
  D: "f#2 c#3 f#3 c#3 b2 d#3 f#3 d#3", E: "c3 d#3 f#3 d#3 b2 d#3 f#3 d#3", F: "c3 d#3 f#3 d#3 b2 d#3 ~@2",
  G: "[f#2,b2,f#3]@15 ~", // B5
})).s("gm_acoustic_guitar_steel").gain(0.72)

// bass · electric bass finger · "Staff-1"
const bass = note(`<
  ~ A B A B A B A B A B A B A B A C D E D E D E F G A B A B A B A C D E D E D E F G H I H I H I H J D E D E D E F A B A
  B A B K ~ L M L M L M L N D E D E D E D E D E F G
>`.pickRestart({
  A: "f#1 ~@2 c2 c#2 ~@2 d#2", B: "g#1 ~@2 a#1 b1 ~@2 c#2", C: "g#1@2 ~@4 a#1@2 b1@2 ~@2 d#2@3 f2", D: "f#2!4 b2!4",
  E: "c3!4 b2!4", F: "f#2!4 e2!4", G: "b2@15 ~", H: "f#2 ~@3 b2 ~@2 b2", I: "c3 ~@3 b2 ~@3",
  J: "c3@2 ~@6 b2@2 ~@2 d#2@3 f2", K: "f#1 ~@2 c2 c#2 ~@2 g#1", L: "f#1@3 ~@5 b1@3 ~@5", M: "c2@3 ~@5 b1@3 ~@5",
  N: "c2@3 ~@5 b1@3 ~ d#2@3 f2",
})).s("gm_electric_bass_finger").gain(0.72)

// chords · distortion guitar · "Staff-2"
const distortion_guitar = note("<~ A B A B A B A C A B A B A B A C ~@8 A B A B A B A B ~@51>".pickRestart({
  A: "~@4 [c#4,f#4] ~@5 [d#4,g#4] ~ [d#4,g#4] ~@3", B: "~@4 [d#4,g#4] ~@5 [c#4,f#4] ~@3 [c#4,f#4] ~",
  C: "~@4 [d#4,g#4] ~@5 [c#4,f#4] ~@5", // G#5 F#5
})).s("gm_distortion_guitar").gain(0.72)

// chords · rock organ · "Staff-3" · F#
const rock_organ = note("<~@4 [~@6 c#5 [f#5,a#5] [c#5,f#5,a#5]@7 ~] ~@79>").s("gm_rock_organ").gain(0.72)

// other · ocarina · "Staff-6"
const ocarina = note("<~@41 A@8 ~@35>".pickRestart({
  A: "[c#6@3 ~ a#5@3 ~ g#5@2 f#5@2 ~@2 a#5@4 b5@2 a#5@3 ~ g#5@2 f#5@2 d#5@2 c#5@2]/2",
})).s("gm_ocarina").gain(0.72)

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

// drums · snare
const snare = s("sd").struct("<~@8 A B@7 C B@7 ~ B@7 C B@7 D ~@2 B@5 E B@14 ~ B@7 C B@11 ~>".pickRestart({
  A: "~@12 x ~ x!2", B: "~ x ~ x", C: "~@4 x ~@7 x!4", D: "~@10 x ~ x!2 ~@2", E: "~@4 x ~@3 x!4 ~@4",
})).gain(0.72)

// drums · low tom
const low_tom = s("lt").struct("<~@17 A@6 ~@10 A@6 ~@10 A@6 ~@17 A@10 B ~>".pickRestart({
  A: "~@12 x!4", B: "~@6 x!2",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct("<~@9 A@7 B ~@7 A@8 B ~@7 C ~@2 A@5 D ~@7 A@6 E ~ A@4 E A@2 B ~@12>".pickRestart({
  A: "x!8", B: "x!6 ~@2", C: "x!5 ~@3", D: "x!4 ~@4", E: "x!7 ~",
})).gain(0.72)

// drums · open hat
const open_hat = s("oh").struct("<~@17 A@7 ~@9 A@7 B ~@8 A@7 ~@6 B ~@5 B ~@3 A@10 C ~>".pickRestart({
  A: "x!8", B: "~@7 x", C: "x!7 ~",
})).gain(0.72)

// drums · china
const china = s("cr").struct(`<
  ~@4 A B@4 C ~@7 C ~@3 C ~@11 C ~@3 C ~@11 C ~@3 C ~@18 C ~@3 C ~@3 C ~@2 C
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "x",
})).gain(0.72)

stack(
  electric_guitar_clean, acoustic_guitar_steel, bass, distortion_guitar, rock_organ, ocarina, kick, snare, low_tom,
  hihat, open_hat, china
)

More by Smash Mouth