Strudelify

cuphead - floral fury

Misc Computer Games

KeyD majorTempo140 bpm
0:00/0:00
// cuphead - floral fury — Misc Computer Games
// 140 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (2/4 at bar 1, 4/4 at bar 2, 2/4 at bar 65, 4/4 at bar 65, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5943852; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 116 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(140/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.

// other · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  ~@9 A B A C D E F G H I J ~ A B A K L M N O P Q R S T@4 U V W X Y Z AA AB P Q R S A B A B A B A AC AD AE@2 AF AD AE AF
  AG AH@2 AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD AO AP AQ BE ~@3 BF BG BH BI BJ@8 BK BL BK BL
  BK BL BM BN
>`.pickRestart({
  A: "g3 ~@2 a#3 d4 e4 ~ f3 ~ f3 ~ a3 d4 ~ e4 ~", B: "e3 ~@2 g3 a#3 c#4 ~ d4@2 ~@2 a#3 d4 ~ e4 ~",
  C: "e3 ~@2 g4 f4 e4 ~ d4 ~@4 d5 ~ d5 ~", D: "c5 d5 a#4 ~ g4@4 ~@4 c5 ~ c5 ~", E: "b4 c5 a4 ~ f4@4 ~@4 a#4 ~ a#4 ~",
  F: "a4 a#4 g4 ~ e4@4 a4 a#4 g4 ~ e4@4", G: "g4 ~ a4@6 ~@4 d5 ~ d5!2", H: "c5 d5 a#4 ~ g4@4 ~@4 c5 ~ b4 c5",
  I: "d5 c5 a4 ~ f4@4 ~@4 a#4 ~ a#4 ~", J: "a4 a#4 g4 ~ c#5@4 a4 a#4 g4 ~ c#5@3 d5",
  K: "e3 ~@2 g4 f4 e4 ~ d4 ~@4 d4@2 ~@2", L: "~@4 d4@3 d4 ~@6 d4@2", M: "~@4 d4@3 d4 ~@4 d4@4",
  N: "c#4@3 c#4 ~@4 c#4@4 c#4 ~@3", O: "a3@3 a3 ~@4 a3@4 a3 ~@3", P: "~@2 d4@3 d4 ~@3 d4 ~@2 d4@2 ~@2",
  Q: "a3@3 a3 ~@4 d4@2 ~@2 d4@2 ~@2", R: "~@2 c#4@2 ~@4 c#4@2 ~@2 c#4 ~@3", S: "c4@3 c4 ~@4 c4@4 c4@2 ~@2",
  T: "[~@2 c5@2 c5 c5@3 c5@3 c5@2 d5 c5@4 c5@2 c5 c5@3 c5@3 c5@2 d5 c5@4 c#5@2 c#5 c#5@3 c#5@3 c#5@2 d5 c#5@4 d5 ~ d5@4 d5@4 ~@4]/4",
  U: "~ d4 ~@2 d4 ~ d4 ~", V: "c4@3 c4 ~@6 a3@3 a3 ~@2", W: "c#4@3 c#4 ~@4 c#4@2 ~@2 c#4@2 ~@2", X: "a3 ~ a3 ~ a3 ~@3",
  Y: "~@4 d4@3 d4 ~@5 d4 ~@2", Z: "~@4 c4@3 c4 ~@4 d4@2 ~@2", AA: "c#4@3 c#4 ~@4 c#4@4 c#4@2 ~@2",
  AB: "c4@3 c4 ~@4 a3@2 ~@2 a3@2 ~@2", AC: "e3 ~@2 g3 a#3 c#4 ~ d4 ~@8", AD: "a#3@4 a#3@3 a#3", AE: "a3!2",
  AF: "a3@4 a3@3 a3", AG: "a3@8 g3 ~@2 a#3 d4 e4 ~ f3",
  AH: "[~ f3 ~ a3 d4 ~ e4 ~ e3 ~@2 g3 a#3 c#4 ~ d4@2 ~@2 a#3 d4 ~ e4 ~ g3 ~@2 a#3 d4 e4 ~ f3]/2",
  AI: "~ f3 ~ a3 d4 ~ e4 ~ e3 ~@2 g3 a#3 c#4 ~ d4", AJ: "~@12 d4@3 d4", AK: "~@6 d4@2 ~@4 d4@3 d4",
  AL: "~@4 d4@4 c#4@3 c#4 ~@4", AM: "c#4@4 c#4 ~@3 a3@3 a3 ~@4", AN: "a3@4 a3 ~@5 d4@3 d4 ~@2",
  AO: "~ d4 ~@2 d4@2 ~@2 a3@3 a3 ~@4", AP: "d4 ~ d4 ~@2 c#4 ~@2", AQ: "c#4@2 ~@2 c#4 ~@3 c4@3 c4 ~@4",
  AR: "c4@4 c4@2 ~@2 a#3@3 d4 ~@4", AS: "~ a#3 ~@3 a#3 ~@2 c4@3 a3 ~@4", AT: "~ d4 ~@3 c4 ~@2 c#4@3 c#4 ~@4",
  AU: "c#4@2 ~@2 c#4@2 ~@2 c4@3 c4 ~@4", AV: "c4@3 c4 ~@6 d4@2 ~@4", AW: "d4@2 ~@2 d4@2 ~@2 c4@3 c4 ~@4",
  AX: "~@2 a3@3 a3 ~@2 c#4@3 c#4 ~@4", AY: "c#4 ~ c#4 ~ a3 ~ a3 ~", AZ: "a3@2 ~@10 d4@3 d4", BA: "~@5 d4 ~@6 c4@3 c4",
  BB: "~@4 d4@2 ~@2 c#4@3 c#4 ~@4", BC: "c#4@4 c#4@2 ~@2 c4@3 c4 ~@4", BD: "a3@2 ~@2 a3@2 ~@4 d4@3 d4 ~@2",
  BE: "c4@2 c4 ~@5", BF: "~@4 f4 ~ f4!2 e4 f4 d4 ~ a#3@4", BG: "~@4 e4 ~ d4 e4 f4 e4 c4 ~ a3@4",
  BH: "~@4 d4 ~ d4 ~ c4 d4 a#3 ~ e4@4", BI: "c4 d4 a#3 ~ e4@3 f4 ~@8",
  BJ: "[~@4 a#3@8 a#3@6 a#3@2 a3@8 a3@8 a3@8 a3@8 a3@8 a3@6 a3@2 a#3@8 a#3@6 a#3@2 a3@8 a3@8 a3@8 a3@6 a3@2 a3@8 g3 ~@2 a#3]/8",
  BK: "d4 e4 ~ f3 ~ f3 ~ a3 d4 ~ e4 ~ e3 ~@2 g3", BL: "a#3 c#4 ~ d4@2 ~@2 a#3 d4 ~ e4 ~ g3 ~@2 a#3",
  BM: "d4 e4 ~ f3 ~ f3 ~ a3 d4 ~ e4 ~ e3 ~@2 g4", BN: "f4 e4 ~ d4 ~@4 d4@2 ~@6",
})).s("gm_alto_sax").gain(0.3)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  ~@9 A B A C D E F G D E F ~ H I J K L M N O P Q R S T U V W X Y V Z AA AB AC AD P Q R S H I H I H I H I AE AF AG AH@2
  AF AG AI AJ AK AJ AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF AQ AR AS BG ~@7 BH@8 BI BJ BI BJ BI
  BJ BI BK
>`.pickRestart({
  A: "g3 ~@2 a#3 d4 e4 ~ f3 ~ f3 ~ a3 d4 ~ e4 ~", B: "e3 ~@2 g3 a#3 c#4 ~ d4@2 ~@2 a#3 d4 ~ e4 ~",
  C: "e3 ~@2 g4 f4 e4 ~ d4 ~@8", D: "g3 ~@2 g3 ~@4", E: "f3 ~@2 f3 ~@4", F: "e3 ~@2 e3 ~@4", G: "d3 ~@2 f3 ~@4",
  H: "~@4 g3@4 f3 ~@7", I: "e3 c#3 d3 ~", J: "g3@4 ~@3 f3@5 ~@4", K: "e3 c#3 d3!2", L: "~@4 e3@3 e3 ~@6 e3@2",
  M: "~@4 e3@3 e3 ~@4 e3@4", N: "f3@3 f3 ~@4 e3@4 e3 ~@3", O: "d3@3 d3 ~@4 d3@4 a2 ~@3",
  P: "~@2 e3@3 e3 ~@3 e3 ~@2 e3@2 ~@2", Q: "e3@3 e3 ~@4 e3@2 ~@2 e3@2 ~@2", R: "~@2 f3@2 ~@4 e3@2 ~@2 e3 ~@3",
  S: "e3@3 e3 ~@4 d#3@4 d#3@2 ~@2", T: "d3@3 f3 ~@5 d3 ~@3 d3 ~@2", U: "f3@3 c3 ~@5 f3 ~@3 f3 ~@2",
  V: "f3@3 f3 ~@4 e3@2 ~@2 e3@2 ~@2", W: "e3@3 e3 ~@4 d#3@3 d#3 ~@4", X: "~ f3 ~@2 f3 ~ f3 ~",
  Y: "f3@3 f3 ~@6 c3@3 c3 ~@2", Z: "d3 ~ c#3 ~ c3 ~@3", AA: "~@4 e3@3 e3 ~@5 e3 ~@2", AB: "~@4 e3@3 e3 ~@4 e3@2 ~@2",
  AC: "f3@3 f3 ~@4 e3@4 e3@2 ~@2", AD: "e3@3 e3 ~@4 c3@2 ~@2 c3@2 ~@2", AE: "e3@3 d3 d3@4", AF: "d3@4 d3@3 d3",
  AG: "c#3@4 c#3@3 c#3", AH: "d3!2", AI: "d3@2 ~ g3", AJ: "f3 ~@7 e3@4 c#3@4", AK: "d3 ~@2 g3", AL: "d3@4 ~@8 e3@3 e3",
  AM: "~@6 e3@2 ~@4 e3@3 e3", AN: "~@4 e3@4 f3@3 f3 ~@4", AO: "e3@4 e3 ~@3 d3@3 d3 ~@4", AP: "d3@4 a2 ~@5 e3@3 e3 ~@2",
  AQ: "~ e3 ~@2 e3@2 ~@2 e3@3 e3 ~@4", AR: "e3 ~ e3 ~@2 f3 ~@2", AS: "e3@2 ~@2 e3 ~@3 e3@3 e3 ~@4",
  AT: "d#3@4 d#3@2 ~@2 d3@3 f3 ~@4", AU: "~ d3 ~@3 d3 ~@2 f3@3 c3 ~@4", AV: "~ f3 ~@3 f3 ~@2 f3@3 f3 ~@4",
  AW: "e3@2 ~@2 e3@2 ~@2 e3@3 e3 ~@4", AX: "d#3@3 d#3 ~@6 f3@2 ~@4", AY: "f3@2 ~@2 f3@2 ~@2 f3@3 f3 ~@4",
  AZ: "~@2 c3@3 c3 ~@2 f3@3 f3 ~@4", BA: "e3 ~ e3 ~ d3 ~ c#3 ~", BB: "c3@2 ~@10 e3@3 e3", BC: "~@5 e3 ~@6 e3@3 e3",
  BD: "~@4 e3@2 ~@2 f3@3 f3 ~@4", BE: "e3@4 e3@2 ~@2 e3@3 e3 ~@4", BF: "c3@2 ~@2 c3@2 ~@4 e3@3 e3 ~@2",
  BG: "d#3@2 d#3 ~@5",
  BH: "[~@2 e3@3 d3 d3@4 d3@4 d3@3 d3 c#3@4 c#3@3 c#3 d3@4 d3@4 d3@4 d3@4 d3@4 d3@3 d3 c#3@4 c#3@3 c#3 d3@4 ~@2]/8",
  BI: "g3@4 f3 f3@3 ~@4 e3@4", BJ: "c#3 d3 ~@2", BK: "c#3@2 d3@2 d3 ~@3",
})).s("gm_tenor_sax").gain(0.3)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note(`<
  ~@9 A B A C D E F G D E F ~ H I J K L M N O L M N P Q R S P Q R S P L M N O L M N P H I H I H I H I T U V W T U V X Y
  Z Y AA AB AC AD AE AB AC AF AG AH AI AJ AG AH AI AJ AE AB AC AD AE AB AC AF AK ~@7 AL@8 AM AN AM AN AM AN AM AO
>`.pickRestart({
  A: "g2 ~@2 a#2 d3 e3 ~ f2 ~ f2 ~ a2 d3 ~ e3 ~", B: "e2 ~@2 g2 a#2 c#3 ~ d3@2 ~@2 a#2 d3 ~ e3 ~",
  C: "e2 ~@2 g3 f3 e3 ~ d3 ~@8", D: "[g2,g3] ~@2 [g2,g3] ~@4", E: "[f2,f3] ~@2 [f2,f3] ~@4",
  F: "[e2,e3] ~@2 [e2,e3] ~@4", G: "[d2,d3] ~@2 [f2,f3] ~@4", H: "~@4 g3@4 f3 ~@7", I: "e3 c#3 d3 ~",
  J: "g3@4 ~@3 f3@5 ~@4", K: "e3 c#3 d3!2", L: "g3 d3 g3 d3", M: "a3 d3 a3 d3", N: "a3 e3 a3 e3",
  O: "d3!2 a3@2 d3@2 a3@2", P: "d3 a3 d3 a3", Q: "a#3 f3 a#3 f3", R: "a3 f3 a3 f3", S: "e3 a3 e3 a3", T: "g3@7 g3",
  U: "f3@7 f3", V: "e3@7 e3", W: "d3@7 f3", X: "d3@2 ~ g3", Y: "f3 ~@7 e3@4 c#3@4", Z: "d3 ~@2 g3", AA: "d3 ~ g3 d3",
  AB: "g3 d3 a3 d3", AC: "a3 d3 a3 e3", AD: "a3@2 e3@2 d3!2 a3@2", AE: "d3 a3 g3 d3", AF: "a3 e3 d3 a3",
  AG: "d3 a3 a#3 f3", AH: "a#3 f3 a3 f3", AI: "a3 f3 e3 a3", AJ: "e3 a3 d3 a3", AK: "d3 a3 ~@2",
  AL: "[~@2 g3@7 g3 f3@7 f3 e3@7 e3 d3@7 f3 g3@7 g3 f3@7 f3 e3@7 e3 d3@4 ~@2]/8", AM: "g3@4 f3 f3@3 ~@4 e3@4",
  AN: "c#3 d3 ~@2", AO: "c#3@2 d3@2 d3 ~@3",
})).s("gm_baritone_sax").gain(0.3)

stack(alto_sax, tenor_sax, baritone_sax)

More by Misc Computer Games