Strudelify
KeyE♭ majorTempo102 bpm
0:00/0:00
// I Don't Care — Ed Sheeran & Justin Bieber
// 102 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/6356587; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 92 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(102/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 A B C D E F G H I J K L M N O@3 P K Q M N O R O P K Q M N O R S T U V W X Y Z AA AB AC AD AE AF AA ~ AA AB AC AD
  AE AF AA AG AA AB AC AD AE AF AA AG AH AI AJ AK AL AM AN ~ AA AB AC AD AE AF AA AG AA AB AC AD AE AF AA AG AO AP
>`.pickRestart({
  A: "[db7,gb7]@3 [db7,gb7]@3 [gb4,db7,gb7]@2 [db7,gb7]@3 [db7,gb7]@3 [gb4,db7,gb7]@2, ~@3 gb4 ~@7 gb4 ~@4", // Gb5
  B: "[db7,gb7]@3 [db7,gb7]@3 [gb4,db7,gb7]@2 [db7,gb7]@3 [db7,gb7]@3 ab4 bb4, ~@3 gb4 ~@7 ab4 ~@2 [db7,gb7]@2", // Gb5
  C: "[eb7,gb7]@3 [eb7,gb7]@3 [gb4,eb7,gb7]@2 [eb7,gb7]@3 [eb7,gb7]@3 [eb4,gb4,eb7,gb7]@2, ~@3 gb4 ~@7 [eb4,gb4] ~@4", // Ebm
  D: "[eb7,gb7]@3 [eb7,gb7]@3 [eb4,gb4,eb7,gb7]@2 [eb7,gb7]@3 [eb7,gb7]@3 ab4 bb4, ~@3 [eb4,gb4] ~@7 [eb4,ab4] ~@2 [eb4,eb7,gb7]@2", // Ebm Ab5 Ebm
  E: "[eb7,gb7]@3 [eb7,gb7]@3 [b3,gb4,eb7,gb7]@2 [eb7,gb7]@3 [eb7,gb7]@3 [b3,gb4,eb7,gb7]@2, ~@3 [b3,gb4] ~@7 [b3,gb4] ~@4", // Ebm B Ebm B B5
  F: "[f7,ab7]@3 [f7,ab7]@3 [db4,gb4,f7,ab7]@2 [f7,ab7]@3 [f7,ab7]@3 [db4,gb4,f7,ab7]@2, ~@3 [db4,gb4] ~@7 [db4,gb4] ~@4", // Fm Db Fm Db Gb5
  G: "~@3 [db7,gb7]@3 [gb4,db7,gb7]@2 [db7,gb7]@3 [db7,gb7]@3 [gb4,db7,gb7]@2, ~@3 gb4 ~@7 gb4 ~@4", // Gb5
  H: "[db7,gb7]@3 [db7,gb7]@3 [gb4,db7,gb7]@2 [db7,gb7]@3 [db7,gb7]@3 [gb3,gb4,db7,gb7]@2, ~@3 gb4 ~@7 gb4 ~@4", // Gb5
  I: "gb3@3 [gb2,db4,gb4] ~@2 [gb2,db4,gb4]@2 ~@3 [gb2,db4,gb4] ~@2 [gb2,db4,gb4]@2", // Gb5
  J: "~@3 [gb2,db4,gb4] ~@2 [gb2,db4,gb4]@2 ~@3 [gb2,db4,ab4] ~@2 [gb2,db4,bb4]@2", // Gb5 Gbsus2 Gb
  K: "~@3 [eb3,eb4,gb4] ~@2 [eb3,eb4,gb4]@2 ~@3 [eb2,eb4,gb4] ~@2 [eb2,eb4,gb4]@2", // Ebm
  L: "~@3 [eb2,eb4,gb4] ~@2 [eb2,eb4,gb4]@2 ~@3 [eb2,eb4,ab4] ~@2 [eb2,eb4,bb4]@2", // Ebm Ab5 Eb5
  M: "~@3 [b1,eb4,gb4] ~@2 [b1,eb4,gb4]@2 ~@3 [b1,eb4,gb4] ~@2 [b1,eb4,gb4]@2", // B
  N: "~@3 [db2,db4,f4] ~@2 [db2,db4,f4]@2 ~@3 [db2,db4,f4] ~@2 [db2,db4,f4]@2", // Db
  O: "~@3 [gb2,db4,gb4] ~@2 [gb2,db4,gb4]@2 ~@3 [gb2,db4,gb4] ~@2 [gb2,db4,gb4]@2", // Gb5
  P: "~@3 [gb2,db4,gb4] ~@2 [gb2,db4,gb4]@2 ~@3 [gb2,db4,ab4] gb2 gb3 [gb2,db4,bb4]@2", // Gb5 Gbsus2 Gb
  Q: "~@3 [eb2,eb4,gb4] ~@2 [eb2,eb4,gb4]@2 ~@3 [eb2,eb4,ab4] eb2 eb3 [eb2,eb4,bb4]@2", // Ebm Ab5 Eb5
  R: "~@3 [gb2,db4,gb4] ~@2 [gb2,db4,gb4]@2 ~@3 [gb2,db4,gb4] gb2 gb3 [gb2,db4,gb4]@2", S: "~@7 [gb1,gb4]",
  T: "~@3 [gb1,gb4] ~@2 [gb1,gb4]@2 ~@3 [gb1,ab4] gb1 gb2 ab4 bb4, ~@7 gb1", // Gb Gbsus2
  U: "~@3 [eb2,gb4] ~@2 [eb2,gb4]@2 ~@3 [eb1,gb4] ~@2 [eb1,gb4]@2", // Ebm
  V: "~@3 [eb1,gb4] ~@2 [eb1,gb4]@2 ~@3 [eb1,ab4] eb1 eb2 ab4 bb4, ~@7 eb1", // Ebm Ab5
  W: "~@3 [b1,gb4] ~@2 [b1,gb4]@2 ~@3 [b1,gb4] ~@2 [b1,gb4]@2", // B5
  X: "~@3 [db2,f4] ~@2 [db2,f4]@2 ~@3 [db2,f4] ~@2 [db2,f4]@2", // Db
  Y: "~@3 [gb1,gb4] ~@2 [gb1,gb4]@2 ~@3 [gb1,gb4] ~@2 [gb1,gb4]@2", // Gb
  Z: "~@3 [gb1,gb4] ~@2 [gb1,gb4]@2 ~@3 [gb1,gb4] gb1 gb2 [gb1,gb4]@2", // Gb
  AA: "~@3 [gb1,db4,gb4] ~@2 [gb1,db4,gb4]@2 ~@3 [gb1,db4,gb4] ~@2 [gb1,db4,gb4]@2", // Gb5
  AB: "~@3 [gb1,db4,gb4] ~@2 [gb1,db4,gb4]@2 ~@3 [gb1,db4,ab4] gb1 gb2 [gb1,db4,bb4]@2", // Gb5 Gbsus2 Gb
  AC: "~@3 [eb2,eb4,gb4] ~@2 [eb2,eb4,gb4]@2 ~@3 [eb1,eb4,gb4] ~@2 [eb1,eb4,gb4]@2", // Ebm
  AD: "~@3 [eb1,eb4,gb4] ~@2 [eb1,eb4,gb4]@2 ~@3 [eb1,eb4,ab4] eb1 eb2 [eb1,eb4,bb4]@2", // Ebm Ab5 Eb5
  AE: "~@3 [b0,eb4,gb4] ~@2 [b0,eb4,gb4]@2 ~@3 [b0,eb4,gb4] ~@2 [b0,eb4,gb4]@2", // B
  AF: "~@3 [db1,db4,f4] ~@2 [db1,db4,f4]@2 ~@3 [db1,db4,f4] ~@2 [db1,db4,f4]@2", // Db
  AG: "~@3 [gb1,db4,gb4] ~@2 [gb1,db4,gb4]@2 ~@3 [gb1,db4,gb4] gb1 gb2 [gb1,db4,gb4]@2", AH: "[gb4,gb5]@15 ~",
  AI: "~ [db5,db6]", AJ: "[eb4,eb5]@15 ~", AK: "~ [bb4,bb5]", AL: "~@3 gb2 ~@2 gb2@2 ~@3 gb2 ~@2 gb2@2, [b3,b4]@15 ~",
  AM: "~@3 f2 ~@2 f2@2 ~@3 f2!2 f3 f2@2, [db4,db5]@15 ~", AN: "~@3 gb2 ~@2 gb2@2 ~@3 gb2 ~@2 gb2@2, [gb4,gb5]@15 ~",
  AO: "[db4,gb4]@3 [db4,gb4]@3 [gb2,db4,gb4]@2 [db4,gb4]@3 [db4,gb4]@3 [gb2,db4,gb4]@2, ~@3 gb2 ~@7 gb2 ~@4", // Gb5
  AP: "[db4,gb4]@3 [db4,gb4]@3 [gb2,db4,gb4]@2 [db4,gb4]@3 [db4,gb4]@3 ab2 bb2, ~@3 gb2 ~@7 ab2 ~@2 [db4,gb4]@2", // Gb5
})).s("gm_piano").gain(0.25)

stack(piano)