Strudelify

The Graduation Song

Rhett and Link

KeyA majorTempo148 bpm
0:00/0:00
// The Graduation Song — Rhett and Link
// 148 bpm, 2/2, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/913496; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 103 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(148/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · choir aahs · "Bass"
const bass = note(`<
  A B@2 C D E@3 F G H I J K@2 L M N O P Q R S M T@4 U V W@2 X@4 ~@3 Y Z AA AB AC AD ~ AE AF AG ~@7 AH AI ~@8 AJ AK AL
  ~@4 AM@2 AN AO@2 ~@6 AP@6 ~@2 Y Z AA AB AQ@2 ~ AR@3 AS
>`.pickRestart({
  A: "~@6 e3!2", B: "[a2@3 a2@3 a2@3 a2@3 a2@2 a2@2]/2", C: "a2@2 a2@2 a2@2 c#3 a2", D: "c#3 c#3@6 ~",
  E: "[~@5 a2@2 b2@2 a2@2 g#2 c#3!2 f#2 c#3@2 e2@2 a2@2 a2@2 c#3]/3", F: "c#3 e3 e3@4 ~@2", G: "~ c#3 e3@2",
  H: "e3@2 e2 e3@2 ~@3", I: "e2@2 e3@2 e3 d3 e3@2", J: "a2!2 g#2@4 ~@2", K: "[c#3 c#3@2 a2@2 g#2@2 g#2@2 a2@4 ~@3]/2",
  L: "c#3!2 c#3@2 c#3@2 b2@2", M: "a2!2 g#2@2", N: "~ g#2 a2@2", O: "a2 g#2 a2@4 g#2 ~", P: "e3@2 e3@2 a2@2 a2 g#2",
  Q: "~@6 g#2!2", R: "a2 g#2!2 a2", S: "~@2 g#2!2 a2@2 a2@2",
  T: "[~@4 g#2@2 a2@4 a2@2 g#2@2 a2 g#2@2 ~@3 g#2@2 a2 a2@2 g#2@4 g#2@2 f#2]/4", U: "g#2@2 ~@2 a2!4",
  V: "a2@2 a2@2 a2!2 a2@2", W: "[a2 a2@2 ~@2 c#3@2 a2@2 b2 b2@6]/2", X: "[~ a2@2 b2@2 c#3@2 b2@2 c#3@2 d3@2 c#3@2 ~]/4",
  Y: "~@6 a2!2", Z: "a2!2 a2@2", AA: "b2 a2@2 g#2", AB: "f#2 ~@3", AC: "a2!2 g#2 a2", AD: "a2@2 b2 a2",
  AE: "a2!2 b2 c#3", AF: "c#3@2 e3 c#3", AG: "c#3 ~@3", AH: "~@3 a2 a2@2 b2@2", AI: "a2@2 a2@2 g#2 a2@2 ~",
  AJ: "~@3 e3", AK: "e3@2 e3@2 e3!4", AL: "e3 c#3 ~ a2 b2@2 b2@2", AM: "[~@7 a2@2 a2!2 a2@2 a2@2 d3]/2",
  AN: "b2 a2@2 b2@2 a2@2 g#2", AO: "[e2 d3!2 b2@2 a2@2 c#3@2 c#3@2 b2 a2 b2@2 ~]/2",
  AP: "[~@7 g#2@2 g#2 g#2@2 ~@2 a2@4 b2@4 c#3@4 b2@4 c#3@4 d3@4 c#3@4 ~@6]/6", AQ: "[a2!3 a2@3 a2!2]/2",
  AR: "[c#3!2 b2 c#3@3 d3 c#3@2 ~@3]/3", AS: "a2!2 ~@2",
})).s("gm_synth_bass_1").gain(0.3)

stack(bass)