Strudelify

speechless

Dan + Shay

KeyD♭ majorTempo68 bpm
0:00/0:00
// speechless — Dan + Shay
// 68 bpm, 4/4, key Db major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5820448; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 61 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(68/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/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.

// chords · piano
const piano = note(`<
  A B C D A B E D F G H I J K L M J K N O P Q A R S T U V W X Y Z AA X Y Z AB AC AD AE AF AG AH AI ~ AJ AK AL AM AN AO
  AP AQ AR AS AT AU@2 AV@3
>`.pickRestart({
  A: "[db2,f3,ab3,db4]@23 ~", B: "[f3,ab3,c4]@20 ~ ab3@2 db4, f2@23 ~", C: "db4@3 f4@20 ~, [gb2,gb3,bb3]@23 ~",
  D: "ab3@2 gb3 f3@2 gb3 [ab3,db4]@17 ~, eb2@23 ~, db4 ~@3", E: "db4@3 f4@6 db4@14 ~, [gb2,gb3,bb3]@23 ~",
  F: "[db4,f4] db4 eb4 f4, [bb2,bb3]@23 ~", G: "[c4,f4] db4 eb4 f4, [ab2,ab3]@23 ~",
  H: "f4 db4 eb4 f4, [gb2,gb3,bb3]@23 ~", I: "~ [db4,gb4]@11 ~@12, [gb2,gb3,bb3] ~",
  J: "~@3 [ab3,db4,f4]@2 ~@4 db2@3, db2@17 ~@7, ~@12 [f3,ab3]@11 ~", // Db Fm
  K: "~@3 [ab3,c4,f4]@2 ~@4 f2@3, f2@17 ~@7, ~@12 [ab3,c4]@11 ~", // Fm Ab
  L: "~@3 [bb3,db4,gb4]@2 ~@4 gb2@3, gb2@17 ~@7, ~@12 [bb3,db4]@11 ~", // Gb Bbm
  M: "~@3 [bb3,db4,gb4]@2 ~@4 eb2@3, eb2@17 ~@7, ~@12 [bb3,db4]@11 ~", // Gb Bbm
  N: "~@6 [bb3,db4,gb4]@4 ~@2 [bb3,db4]@11 ~, gb2@23 ~", O: "~@3 [a3,db4,gb4]@2 ~@7, eb2@11 ~@13",
  P: "~@6 [ab3,db4,f4]@4 ~@2 f3@3 ab3@3 bb3@3 ab3@2 ab4, db2@17 ~ db2@6", Q: "[b2,gb3,b3,eb4]@9 [gb2,gb3,bb3,db4]@14 ~",
  R: "f4@8 ~ ab4@14 ~, [f2,ab3,c4]@23 ~, eb4 ~@23", S: "f4@2 ~ ab4@3 f4@3 bb4@14 ~, [gb2,bb3,db4]@23 ~, eb4 ~@23",
  T: "db4@9 f4 gb4 ab4 db5@2 c5@2 ab4@2 eb4@6, [eb2,gb3,bb3]@23 ~", // Ebm
  U: "eb4@2 f4@18 ~@2 eb4 f4, [db2,ab3]@23 ~, db4@21 db4@2 ~", // Db5
  V: "f4@14 ~ db4 f4 bb4 ab4@5 ab4, [f2,ab3,c4]@23 ~, eb4 ~@23", // Fm
  W: "f4@3 db4 eb4 f4 db4@3 bb3 c4 db4 [eb2,bb3]@3 bb3 c4 db4 eb1@3 eb1@3, [gb2,gb3]@2 [gb2,gb3]@2 ~ eb2 [gb3,bb3]@2", // Eb5 Gb
  X: "db1@2 [db2,ab3,db4,f4] db2 [db2,f3] [db2,ab3] [db1,db4] [db1,f4]", // Db Db5 Db
  Y: "f1!2 [f2,ab3,c4,f4] f2 [f2,ab3] [f2,c4] [f1,f4] [f1,ab4]", // Fm F5 F Fm
  Z: "gb1!2 [gb2,bb3,db4,gb4] gb2 [gb2,bb3] [gb2,db4] [gb1,gb4] [gb1,bb4]", // Gb Gb5 Gb
  AA: "eb1!2 [eb2,bb3,db4,gb4] eb2!3 eb1@2, ~@12 [bb3,db4]@11 ~", // Ebm7 Bbm
  AB: "[eb1,bb3,db4,f4]@6 [bb3,db4,gb4]@4 ~@2 [gb2,bb3,db4,f4]@2 [f2,bb3,db4,f4] [eb2,bb3,db4,gb4]@3 [bb3,db4,gb4]@3 eb4@3, ~ bb2 ~ eb1", // Bbm Gb Gbmaj7 Bbm Ebm7 Gb
  AC: "db1@2 db2@2 db2!4, [ab3,db4,f4]@11 ~ [ab3,db4,f4]@6 [f3,ab3,db4]@6", // Db
  AD: "f1@3 f1@3 f2@3 f2@3 f2@3 ~ ab4 bb4 [f2,ab4,db5]@3 bb4 ab4 f4, [f3,ab3,c4]@3 [f3,ab3,c4,db4]@2 f2 ~ f2", // Db Fm Dbmaj7
  AE: "[gb1,eb4]@2 ~ gb1@3 gb2@3 gb2@3 gb2@3 gb2@3 gb2@3 gb2@3, ~@2 db4@7 [gb3,bb3,db4]@9 [gb3,bb3,db4]@6", // Ebm Gb
  AF: "eb1!2 [eb2,eb3,gb3,bb3] eb2@2 eb3!3, [gb3,bb3,db4]@2 ~ [gb3,bb3,db4]@3 [gb3,bb3,db4]@2", // Ebm Gb
  AG: "bb1!2 [bb2,db5,db6]!2 [bb2,eb5,eb6]!2 [bb2,f5,f6]!2, [f3,bb3,db4] ~@3", // Bbm Eb5 Bb5 Bbm
  AH: "ab1!2 [ab2,db5,db6]!2 [ab2,eb5,eb6]!2 [ab2,f5,f6]!2, [c5,c6] ~@3", // Db5 Ab5 Db C
  AI: "gb1!2 [gb2,db5,db6]!2 [gb2,eb5,eb6]!2 [gb2,f5,f6] [db2,f5,f6], [bb4,bb5] ~@3", // Gb5 Ebm Gbmaj7 Db Bb
  AJ: "~@6 [db5,db6]@6 [db5,db6]@11 ~, [db4,f4,ab4]@23 ~", AK: "~@6 [db5,db6]@6 [db5,db6]@11 ~, [db4,eb4,ab4]@23 ~",
  AL: "~@6 [db5,db6]@6 [db5,db6]@11 ~, [bb3,db4,ab4]@23 ~", AM: "[a2,db4]!2 [ab2,b3]!2 [gb2,a3]!2 [eb2,gb3]!2",
  AN: "[db2,f3,ab3,db4]@5 [ab3,ab4] [db4,db5]@2 ~@4 db2@5 db4 bb2@3 ab2@3, ~ db2 ~@2, ~@9 [db4,ab4]@8 ~ db4@6", // Db Ab Db Db5
  AO: "[c4,f4,ab4]@3 [ab4,ab5]@3 [c5,c6]@2 ~@4 f2@6 [f2,db4,eb4,ab4]@6, f2!2 ~@2, ~@3 [f4,ab4,c5]@3 ~@2", // Fm Ab C Db Fm
  AP: "gb2@6 [bb3,db4,gb4]@2 ~@6 eb2 gb2@3 db2@3 gb2@3, ~@3 gb2@4 ~@5, ~@3 [bb3,db4,ab4]@3 [ab3,bb3,db4]@2", // Gb Bbm7
  AQ: "a3!2 ~@2, [gb2,gb3,db4]@11 ~@13", // Gb5
  AR: "[f3,ab3,db4]@6 [db4,db5]@2 ~ [db2,ab3,ab4]@9 eb3@2 f3 ab3@2 bb3, db1@3 ~@3 db2@2", // Db Db5
  AS: "[b1,b2,eb3,gb3,b3]@9 [gb2,db3,gb3,bb3]@14 ~", // B Gb
  AT: "~@6 [ab3,db4,f4]@4 ~@2 [ab3,db4,f4]@2 [bb3,db4,gb4]@4 db4@3 ab3@3, [db1,db2]@17 ~ [db1,db2]@6", // Db Gb Db
  AU: "[eb4@3 gb4@6 [gb1,gb2,db3,gb3,bb3]@37 ~@2, [b1,b2,gb3,b3]@3 ~@13]/2", // Gb B5
  AV: "[~ ab3@50 ~@21, [db1,db2,db3,f3]@25 ~@11]/3", // Db
})).s("gm_piano").gain(0.3)

stack(piano)