Strudelify

build me up buttercup

The Temptations

KeyD♭ majorTempo138 bpm
0:00/0:00
// build me up buttercup — The Temptations
// 138 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5913128; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 52 bars on a 24-step grid, each part at one level. 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 · alto sax · "Alto Saxophone"
const alto_sax = note("<~@13 A@3 B C@2 D E ~ F G H I@3 J K L M N O@2 P F Q@2 R@2 S@2 T U ~ V W X@3 Y>".pickRestart({
  A: "[~@6 e5@6 db5@6 b4@4 a4@6 ab4@2 ab4@3 ~@13 a4@6 ab4@2 ab4@4 gb4@6 ab4@2 ab4@4 ab4@2]/3",
  B: "gb4@2 e4 e4@2 ~@6 b3", C: "[a4@2 a4 a4@2 ab4@3 gb4 e4@2 a4@3 ab4 ab4@2 ~@6 b3]/2",
  D: "a4@2 ab4 ab4@2 gb4@3 ab4 ab4@2 ab4", E: "gb4@2 e4 e4@2 ~@7", F: "~@2 ab4 a4@2 b4@7", G: "e5", H: "db5",
  I: "[c5@9 a4@2 a4@3 ab4 ab4@2 ~@6 ab4@3 gb4 gb4@2 ~ gb4@2 e4@2 eb4@2]/3", J: "e4@9 e4@2 e4", K: "~@3 gb4",
  L: "ab4@5 gb4@7", M: "gb4@5 e4@7", N: "~@2 e4 gb4@2 ab4@7", O: "[a4@6 ~@2 ab4 a4@2 b4@6 b4@7]/2", P: "a4@5 a4@7",
  Q: "[db5@12 db5@3 ~ b4@5 ~ a4@8 ~@6 a4@12]/2", R: "[gb4@12 ab4@3 ~ a4@5 ~ b4@8 ~@6 b4@12]/2",
  S: "[db5@12 db5@3 ~ b4@5 ~ db5@8 ~@6 db5@12]/2", T: "e5 db5", U: "b4@3 ~", V: "db5@3 ab4@2 b4@7",
  W: "~@3 e5@3 db5@3 b4@2 a4", X: "[e4@18 e4@3 ~ e4@50]/3", Y: "~@4 b4@8 b4@6 b4@3 ~ e5 ~",
})).s("gm_alto_sax").gain(0.4)

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

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note(`<
  A B C D A B C D A B C E@2 ~ A B C D A B C D F@2 G H I@2 J K L@3 M L@3 N@2 O@2 P@2 Q R S T U J@4
>`.pickRestart({
  A: "e3@3 ~@2 e3 e3@3 ~@2 ab2", B: "~@2 ab2 ~@2 ab2 ab2@3 ~@3", C: "a2@3 ~@2 a2 a2@3 ~@2 b2",
  D: "~@2 b2 ~@2 b2 b2@3 ~@3", E: "[~@2 b2 ~@2 b2 b2@9 gb3@2 b3@7]/2",
  F: "[e3@2 e3@3 e3 ~@2 e3 e3@2 d3@3 d3 d3@2 d3@3 d3@3 d3]/2", G: "db3!6", H: "c3@3 b2",
  I: "[e3@3 ~@2 e3 e3@3 ~@2 b2@3 b2 b2@2 ~ b2@2 b2@2 b2@2]/2", J: "~@4 a3@8 ab3@6 gb3@3 ~ e3 ~", K: "~@9 b2@2 b2",
  L: "[b2@2 db3 e3@2 gb3@3 gb3 gb3@2 gb3@3 e3 e3@2 e3@3 db3 e3@2 ab3@3 ~@6 ab3 gb3@2 e3]/3",
  M: "gb3@2 db3 db3@5 ~@3 b2", N: "[gb3@4 db3@2 db3@6 a3@3 ~ ab3@5 ~ gb3@8 ~@6 gb3@12]/2",
  O: "[b2@12 b3@3 ~ a3@5 ~ ab3@8 ~@6 ab3@12]/2", P: "[db3@12 db3@3 ~ b2@5 ~ a2@14 ~@4 a2@2 b2@4 db3@2]/2",
  Q: "eb3@2 e3 gb3@3 gb3@2 gb3@2 gb3@2", R: "b2@3 ~@2 b2 b2@3 ~@2 b2", S: "~@2 b2 ~@2 b2 b2@3 ~@2 b2", T: "b2!4",
  U: "b2 ~@3",
})).s("gm_baritone_sax").gain(0.3)

stack(alto_sax, tenor_sax, baritone_sax)

More by The Temptations