Strudelify

Chills

Why Don't We

KeyD♭ majorTempo81 bpm
0:00/0:00
// Chills — Why Don't We
// 81 bpm, 4/4, key Db major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5943842; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 55 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(81/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · piano
const piano = note(`<
  A B C D C D E F C D G H G H I J I J K L M L N O P Q G H G R S T S T U V U V W V W V X Y X Z AA T S AB S T S AB AC
>`.pickRestart({
  A: "[gb4,bb4,db5]@11 ~ [eb4,ab4,c5]@4", B: "[f4,bb4,db5]@11 ~ [ab3,c4]@4", C: "[gb3,bb3,db4]@11 ~ [eb3,ab3,c4]@4",
  D: "[f3,bb3,db4]@11 ~ [ab3,c4]@4", E: "[ab3,db4,f4]@11 ~ [ab3,c4,ab4]@4", F: "[bb3,db4]@11 ~ [ab3,c4,f4]@4",
  G: "~@4 [gb4,bb4]@4 bb4@4 ~@3 eb3, gb2@8 gb4@4 [ab2,eb4,ab4,bb4] eb3 c4@2, [gb4,bb4] db4@3, ~ db3@2 db3@13, ~ bb3@7", // Gb Absus2 Gb
  H: "~@4 [ab4,db5]@4 [ab4,db5]@4 ~@3 ab3, bb2@7 f3, [ab4,db5] f4@2 [f2,f4,ab4,db5], ~ f3@2 f3@10 db3@3, ~ db4@7", // Db5 Db
  I: "[db3,gb4,bb4,db5]@11 ~ [c3,eb4,ab4,c5]@4", J: "[db3,f4,bb4,db5]@11 ~ [db3,f4,ab4,db5]@4",
  K: "~@12 eb2 ab2@3, ~@3 c4", L: "~@7 f3, [bb2,bb3,db4], ~ f3@2 f3@4 ~, ~ ab3 ab3@2, ~@3 [f2,c4]",
  M: "~@7 ab3, [gb2,db4]@3 [ab2,c4], bb3 bb3@3, ~ db3@2 db3@5, ~ gb3", // Gb5 Ab
  N: "~@7 ab3, [gb2,db4,f4]@3 [ab2,c4,ab4], ~ db3@2 db3@5, ~ bb3@3, ~ gb3", // Gbmaj7 Ab
  O: "~@7 f3, [bb2,db4], ~ f3@2 f3@4 ~, ~ ab3 ab3@2, ~@3 [f2,c4]", P: "[gb3,bb3,db4,f4]@11 ~ [eb3,ab3,c4,ab4]@4",
  Q: "[f3,bb3,db4,f4]@11 ~ [f2,f3,c4,f4,ab4]@4", // Bbm Fm
  R: "~@4 [ab4,db5]@4 [ab4,db5]@2 [ab4,db5]@2 ~@3 ab3, bb2@7 [f3,f4,ab4,db5], [ab4,db5] f4@2 f2, ~ f3@2 f3@9 [f4,ab4,db5] db3@3, ~ db4@7", // Db5 Db Db5 Db
  S: "~@6 gb2 ~@8 eb3, [gb2,gb4,bb4,db5]@6 [gb4,bb4,db5]@4 bb3@2 [ab2,eb4,ab4,c5] eb3 [ab3,c4]@2, ~ db3@2 db3@4 gb2@9, ~ bb3 gb3@6, ~@4 bb3@5 db3@7", // Gb Ab
  T: "~@6 bb2 ~@8 ab3, [bb2,f4,bb4,db5]@6 bb4@6 [f2,f4,ab4,db5] db3 f3@2, ~ f3@2 f3@3 [f4,db5]@3 f3 db4@6, ~ db4 bb3@6, ~@4 db4@3 bb2@9", // Bbm Db
  U: "[gb2,gb3,bb3,db4]@11 ~ [eb2,ab2,eb3,ab3,c4]@4", V: "[f2,bb2,f3,bb3,db4]@11 ~ [ab2,f3,ab3,db4]@4",
  W: "[gb2,bb2,gb3,bb3,db4]@11 ~ [eb2,ab2,eb3,ab3,c4]@4", // Gb Ab
  X: "~@6 ab3!2, [gb2,db4]@3 [ab2,eb3,c4], gb3!2, bb3 bb3@3, ~ db3@2 db3@5", // Gb5 Ab
  Y: "f3 ~@3 ab3@2 f3!2, [bb2,bb3], db4@3 ~, ~ f3@2 f3@3 [f2,ab3,db4]@2, ~ ab3 ~@2", // Bb Db
  Z: "f3@2 ~@2 [db4,f4]@2 ~@2 [ab4,db5]@2 [ab4,db5]@2 [f4,ab4,db5]!4, bb2@6 f2 f3, [bb3,db4] bb3@3, ~ f3@2 [db4,bb4]@5, ~@2 ab3 [f3,f4] ab3@4", // Db Db5 Db Bbm Gb F
  AA: "~@6 gb2 ~@8 eb3, ~@4 gb3@6 bb3@2 [ab2,eb4,ab4,c5] eb3 [ab3,c4]@2, ~@4 bb3@5 db3@7, ~@3 [gb4,bb4,db5]@5, ~@7 gb2@9", // Ab Gb
  AB: "~@6 bb2 ~@5 [f4,ab4,db5]!3 [ab3,f4,ab4,db5], [bb2,f4,bb4,db5]@6 bb4@6 f2 db3 f3@2, ~ f3@2 f3@3 [f4,db5]@3 f3 db4@6, ~ db4 bb3@6, ~@4 db4@3 bb2@9", // Db Bbm Db
  AC: "[ab3,db4]@15 ~", // Db5
})).s("gm_piano").gain(0.25)

stack(piano)