Strudelify

Teeth (5 Seconds of Summer)

and adapted by Jonah Buck

KeyE♭ majorTempo138 bpm
0:00/0:00
// Teeth (5 Seconds of Summer) — and adapted by Jonah Buck
// 138 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5842847; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 168 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(138/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.

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  ~@12 A B A C D E D F G H I J K H G L ~@6 M@2 N O N O P O Q@2 ~@2 A R S T D F G H I J K H G L ~@6 M@2 N O N O P O Q@2
  ~@3 U V@3 W ~@2 X Y Z AA AB@2 AC AD AC AD AE AD AF@2 ~@32 AG Y AG Y Z AA AB@2 AG Y AG Y Z AA AB@2 AG Y AG Y Z AA AB@2
  AG Y AG Y Z AA AB@2 AG Y ~@2
>`.pickRestart({
  A: "eb3!3 f3 gb3 f3 eb3 db3", B: "eb3 ~@7", C: "eb3@2 gb3@2 eb3 db3 ~@2", D: "ab3@2 gb3 ab3 eb3@2 ab3@2",
  E: "gb3 ab3 eb3@2 ~@3 eb3", F: "gb3 ab3 eb3@2 gb3 f3 ~@2", G: "ab3 bb3!3 ab3!4", H: "db4 db4@2 bb3@2 ~@3",
  I: "ab3 bb3!3 ab3@2 ab3!2", J: "ab3 g3@2 g3@2 ~@3", K: "ab3 bb3!4 ab3!3", L: "gb3 eb3@2 eb3@2 ~@3",
  M: "[~@3 ab3 ~@2 ab3 gb3@2 ab3 gb3@2 bb3@2 eb3@2]/2", N: "gb4@2 gb4@2 gb4!4", O: "gb4!2 bb4 ~",
  P: "gb4@2 ab4@2 bb4 ab4 gb4 f4", Q: "[eb4 db4@2 eb4 db4@2 eb4 db4@2 eb4 db4@2 gb4@2 bb3@2]/2",
  R: "eb3@2 gb3@2 eb3 db3!3", S: "gb3 ab3!2 gb3 ab3!3 gb3", T: "bb3@2 eb3@2 ~@2 eb3!2", U: "~@3 bb3 b3 bb3 ab3 gb3",
  V: "[gb3 eb3 ~@2 db4!3 bb3@2 ~@3 db4!3 eb3@3 ~@2 f3@4]/3", W: "gb3@4 ab3 bb3@2 ~", X: "~@4 eb3!4", Y: "eb3!2 eb4 ~",
  Z: "eb3@2 f3@2 gb3 f3 eb3 db3", AA: "eb3@2 eb3@2 eb4@2 ~ gb3",
  AB: "[ab3 gb3@2 ab3 gb3@2 ab3 gb3@2 ab3 gb3@2 bb3@2 eb3@2]/2", AC: "gb3@2 gb3@2 gb3!4", AD: "gb3!2 bb3 ~",
  AE: "gb3@2 ab3@2 bb3 ab3 gb3 f3", AF: "[eb3 db3@2 eb3 db3@2 eb3 db3@2 eb3 db3@2 gb3@2 bb3@2]/2",
  AG: "eb3@2 eb3@2 eb3!4",
})).s("gm_tenor_sax").gain(0.3)

// other · tenor sax · "Tenor Saxophone" · soft notes
const tenor_sax_soft = note("<~@28 A B A B C D E ~@9 F G ~@14 A B A B C D E ~@9 H@4 ~@6 I ~@79 J@2>".pickRestart({
  A: "eb3@2 eb3@2 eb3!4", B: "eb3!2 eb4 ~", C: "eb3@2 f3@2 gb3 f3 eb3 db3", D: "eb3@2 eb3@2 eb4@2 ~ gb3",
  E: "ab3 gb3@2 ~ gb3@2 ~@2", F: "eb3!3 f3 gb3 f3 eb3 db3", G: "eb3 ~@7",
  H: "[~@4 db4!3 bb3@2 ~@3 db4!3 eb3@2 ~@2 eb3 db4!3 bb3@2 bb3@2 ~@5]/4", I: "eb3!2 ~@2", J: "[~@2 ab3@5 eb3]/2",
})).s("gm_tenor_sax").gain(0.15)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note(`<
  ~@5 A ~ A ~ B ~ C ~ A ~ A ~ B ~ C D E F D@2 E F G ~ A ~ A B@2 ~ A H I H I J K J L ~ M ~@6 D E F D@2 E F G ~ A ~ A B@2
  ~ A H I H I J K ~ C D E F D@2 E F ~@2 N ~ A B@2 ~ A H I H I J K O P ~ A ~ A B@2 ~ A ~ A ~ A B@2 ~ A ~ A ~ A B@2 ~ A ~
  A ~ A B@2 ~ A H I H I J K J L H I H I J K J L H I H I J K J L H I H I J K J L Q R S@2
>`.pickRestart({
  A: "~@8 eb3@3 ~ eb2@3 ~", B: "~@8 b3@3 ~ b2@3 ~", C: "~@8 db3 ~ bb2 ~ db3 ~ eb3 ~", D: "bb2", E: "db3", F: "gb2 db3",
  G: "~@10 bb2 ~ db3 ~ eb3 ~", H: "eb2@2 eb3 eb2@2 eb3 eb2@2", I: "eb3@2 eb2@4 eb3@2 eb3@3 ~ eb2@3 ~",
  J: "b2@2 b3 b2@2 b3 b2@2", K: "b3@2 b2@4 b3@2 b3@3 ~ b2@3 ~", L: "b3@2 b2@4 b3@2 bb3@3 ~ eb3@3 ~",
  M: "~@4 b3 bb3 gb3 ~", N: "~@8 b2 ~ bb2 ~ gb2 ~ eb2 ~", O: "b2 ~ b2 ~ b2 ~ b2 ~",
  P: "b2@2 bb2@2 gb2@2 b2@2 db3 ~ bb2 ~ db3 ~ eb3 ~", Q: "eb3@2 eb3@2 eb3!4", R: "eb3@4 eb3@4 eb3@3 ~ eb2@3 ~",
  S: "[~ f3@6 eb3]/2",
})).s("gm_baritone_sax").gain(0.3)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax_2 = note(`<
  A B A B ~@3 C ~@3 D A B A E F B F G H I J K@2 L M N ~@3 C ~@3 D A B A E F B F G ~ O A E F B F G H I J K@2 L M N ~@3 C
  ~@3 D A B A E F B F P ~@5 Q R S ~ T ~ C F B F G A B A E F B F G A B A E F B F G A B A E F B F G A B A E F B F G A B A
  E F B F G A B A E F B F G A B A E F B F G A B A E F B F G A B A E F B F G A B ~ U
>`.pickRestart({
  A: "eb2 ~ eb2 ~ eb2 ~ eb2 ~", B: "b2 bb2 gb2 eb2 b2 bb2 gb2 eb2", C: "~@8 b2 ~ bb2 ~ gb2 ~ db3 ~",
  D: "~@8 db3 ~ bb2 ~ db3 ~ eb3 ~", E: "b2@2 bb2@2 gb2@2 eb2@2 b2 ~ bb2 ~ gb2 ~ db3 ~", F: "b2 ~ b2 ~ b2 ~ b2 ~",
  G: "b2@2 bb2@2 gb2@2 b2@2 db3 ~ bb2 ~ db3 ~ eb3 ~", H: "eb2", I: "gb2", J: "b2 db2", K: "eb2@2 eb2!2 eb2@2 eb2!2",
  L: "gb2@2 gb2!2 gb2@2 gb2!2", M: "bb2@2 bb2!2 db2@2 db2!2", N: "~@10 eb2 ~ db2 ~ eb2 ~",
  O: "~@4 gb2 ~ eb2 ~ b2@2 bb2@2 gb2@2 eb2@2", P: "b2 bb2 gb2 b2 db3 bb2 db3 eb3", Q: "~@4 gb2@2 gb2!2",
  R: "b2!4 db2!4", S: "eb2!4 eb2@2 eb2!2", T: "~@8 b2 ~ bb2 ~ gb2 ~ eb2 ~", U: "~@3 eb2",
})).s("gm_baritone_sax").gain(0.3)

// other · baritone sax · "Baritone Saxophone" · soft notes
const baritone_sax_soft = note(`<
  ~@4 A B A C D B D E ~@16 A B A C D B D E ~@9 F ~@14 A B A C D B D E ~@8 G H I J@2 K ~@84 L@2
>`.pickRestart({
  A: "eb2 ~ eb2 ~ eb2 ~ eb2 ~", B: "b2 bb2 gb2 eb2 b2 bb2 gb2 eb2", C: "b2 bb2 gb2 eb2 ~@4", D: "b2 ~ b2 ~ b2 ~ b2 ~",
  E: "b2 bb2 gb2 b2 ~@4", F: "b2 ~ bb2 ~@13", G: "eb2", H: "gb2", I: "b2 db2", J: "eb2@2 eb2!2 eb2@2 eb2!2",
  K: "gb2@2 gb2!2 ~@4", L: "[db2@7 ~]/2",
})).s("gm_baritone_sax").gain(0.2)

stack(tenor_sax, tenor_sax_soft, baritone_sax, baritone_sax_2, baritone_sax_soft)