Strudelify

after ever after

Jon Cozart

KeyD♭ majorTempo120 bpm
0:00/0:00
// after ever after — Jon Cozart
// 120 bpm, 4/4, key Db major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/2 at bar 9, 4/4 at bar 44) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/2015991; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 129 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · flute
const flute = note(`<
  A B C D E F G H I J K L I M K N O P Q R O P Q S T U V W T X@2 Y V Z AA AB AC AD@2 AE AF AG AH AI AJ AK AL AK AM ~@2 AN
  AO AP AQ ~ AR AL AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BI BQ BR BL BS BT BU BV BW BX
  BU ~ BU BY BU@2 H BZ CA CB BU CC CD AX CE CF CG CH CI CJ CK CL ~ CM CN CO CP ~@3 CQ BU CR CS CT CU CD
>`.pickRestart({
  A: "b4 b5 a5 ab5", B: "f5 gb5 db6 ~", C: "e5 eb6 db6 b5", D: "bb5 b5 e6@2", E: "gb6 e6 eb6 db6", F: "b5 a5 ab5 gb5",
  G: "db6 e5", H: "e5@15 ~", I: "b4 gb5 bb5 b5 ~ b5 ~ gb5", J: "bb5 ~ db6 ~ b5@2 gb5@2",
  K: "b4 db5 eb5 gb5 ~ gb5 ~ eb5", L: "db5 ~ gb5 ~ eb5@4", M: "bb5 ~ db6 ~ b5@2 gb5 ~", N: "db5 ~ gb5 ~ b4@4",
  O: "~@2 ab5 b5 ~ b5 ~ ab5", P: "gb5 b5 gb5 b5", Q: "~@2 b5 db6 ~ db6 ~ b5", R: "eb6 db6 b5@2", S: "eb6 db6 b5 ~",
  T: "~@3 eb6 ~ db6 b5 ~", U: "ab5 ~@3", V: "~@3 eb6@2 db6 b5 ~", W: "gb5 ~@3", X: "ab5 gb5 ~ eb6 ~ db6 b5 ~",
  Y: "eb6 ~@3", Z: "ab5@2 b5!2 ~ ab5 ~ db6", AA: "~@3 db6 ~ db6 b5 db6", AB: "eb6 ~ db6 b5 ~ eb6 db6 ~",
  AC: "b5@2 ~ eb6 ~ db6 b5 ~", AD: "ab5@2 gb5 eb6 ~ db6 b5 ~", AE: "b5 ~@3", AF: "db6 ~ e6 ~ eb6 ~ b5 ~",
  AG: "b4 ~@2 eb5 ~ eb5 ~ b4", AH: "bb5 ~ db6 ~ b5 ~@3", AI: "db5@2 ab5!2 db5@2 ab5!2 db5@2 ab5@2 a5@2 ab5@2",
  AJ: "a4@2 e5!2 a4@2 e5!2 a4@2 e5@2 f5@2 e5@2", AK: "db5@15 ~", AL: "a4@15 ~", AM: "~@2 g5!2 g5@4 eb6@8",
  AN: "a4 g4 a4 g4", AO: "d5@11 ~@5", AP: "d5 bb5", AQ: "d5 ~", AR: "~@7 bb4",
  AS: "f6@2 f6 e6@2 f6@2 f6@2 f6@2 f6 d6 c6 a5 ~", AT: "d6 ~ d6 d6@2 e6 f6 ~ d6 ~ d6 d6@2 e6!2 ~",
  AU: "d6!2 ~ d6!2 eb6 ~ f6 ab6@2 ~@2 bb5@2 ~@2", AV: "d5@11 ~ a4@4", AW: "bb4 ~@3 a4@4", AX: "d5@15 ~",
  AY: "~@3 c6 f6 ~@2 a5", AZ: "~ a5 c6 ~ a5 ~ a5@2", BA: "~ a5 bb5 d6 c6 a5 bb5 g5", BB: "a5 c6 a5 c6",
  BC: "~ f5 g5 a5 bb5 g5 a5 d6", BD: "c6@2 ~@12 c6 d6", BE: "eb6 c6 d6 f6 bb5@2 ~ c6", BF: "db6 bb5 c6 eb6 ab5@2 ~ bb5",
  BG: "c6 a5 bb5 g5 a5 f5 g5 e5", BH: "f5 ~ c6@2 a5@2 db6@2", BI: "d6", BJ: "e6 d6!2 e6 f6@3 e6",
  BK: "eb6 e6@3 eb6@2 c6@2 c6@8", BL: "~ c6!2 d6 e6@3 d6", BM: "a5 f5", BN: "g5@2 ~ d6", BO: "c6@15 ~", BP: "~ f5",
  BQ: "e6 d6!2 eb6 g6@3 eb6", BR: "~ f6 e6 c6 c6@4", BS: "a5 g5 f5 a5", BT: "d6@2 ~ a5 f5@2 e5@2", BU: "f5@15 ~",
  BV: "~@4 f5 e5 d5 c5", BW: "a4@11 ~ c5@4", BX: "d5 a4@2 ~", BY: "e5@11 ~ c5@4", BZ: "d5 e5 f5 g5", CA: "c5@2 a4 c5",
  CB: "~@2 g5 a5", CC: "e5@2 a5 c6", CD: "a5@15 ~", CE: "e5!2", CF: "f5 ~ c5@2", CG: "a5@4 ~@10 e6 d6",
  CH: "f5 a5!2 c6", CI: "d6@13 ~ f5 a5", CJ: "g5@11 ~@5", CK: "f5 c5 a5 ~", CL: "a5 d5", CM: "~@6 bb4 d5",
  CN: "d5 f5!2 e5 e5@2 c5 d5", CO: "f5 a5!2 c6 d6@4", CP: "d6 ~", CQ: "~@3 ab5@2 g5 f5@2", CR: "~ a5@2 bb5 bb5@2 bb5@2",
  CS: "g6@15 ~", CT: "~@3 c5", CU: "c6@8 bb5@3 a5@2 g5@3",
})).s("gm_flute").gain(0.3)

stack(flute)