Strudelify

sail

Awolnation

KeyD♭ majorTempo120 bpm
0:00/0:00
// sail — AWOLNATION
// 120 bpm, 4/4, key Db major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/1426801; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 129 bars on a 24-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 · [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 B D E F G H@2 I@2 J@2 K L M N O N P Q R S T U V U W X Y Z T U AA U AB X AC Z AD AE AF AE AG AH AI AJ T U AA U AK
  X AC Z T U AA U AB X AC AL AM AN AO AP AQ AR AS AT AU AV AW AV AX AY AZ BA BB BC BD AV BE BF BG AL AM AN BH AP BI AR
  AS AT AD AN AO AP AQ AR AS AT BJ@2 BK@2 BL@2 BM BN BO@2 BK@2 BL@2 BM BN BP@2 BQ@2 BR@2 BS@3
>`.pickRestart({
  A: "[eb4,ab4]!2 [eb2,eb4,gb4]!2", B: "[eb2,eb4,gb4]!4", C: "[eb2,eb4,ab4]!2 [eb2,eb4,gb4]!2",
  D: "[eb2,eb4,ab4]!2 [db2,db4,f4]!2", E: "[db2,db4,f4]!4", F: "[db2,db4,f4]!2 [gb2,gb4,bb4,db5]!2",
  G: "[gb2,gb4,bb4,db5]!2 [db2,f4,ab4]!2", // Gb Db
  H: "[[db2,f4,ab4]@3 [db2,f4,ab4]@3 [gb4,bb4]@6 eb4!3 gb4!3 ab4@3 bb4@3, ~@12 [eb2,bb2,eb3]@29 ~@7]/2", // Db Gb Eb5
  I: "[ab4 ~ gb4 eb4@3 [gb4,bb4]@6 eb4!3 gb4!3 ab4@3 bb4@3, ~@12 [eb2,bb2,eb3]@29 ~@7]/2", // Gb Eb5
  J: "[ab4 ~ gb4 eb4@3 [f4,ab4]@6 db4!3 eb4!3 bb3@3 eb4@3, ~@12 [db2,ab2,db3]@29 ~@7]/2", // Fm Db5
  K: "gb4 ~ eb4 db4@3 [gb4,bb4,db5]@3 [gb4,bb4,db5]@3, ~@12 [gb2,db3,gb3]@11 ~", // Gb Gb5
  L: "bb4!3 db5!3 [f4,ab4]@3 [f4,ab4]@3, ~@12 [db2,ab2,db3]@11 ~", M: "eb5!3 gb5@3 [eb2,bb2,eb3]@3 eb2@3, ~ [gb4,bb4]",
  N: "eb4!3 gb4 ~ gb4 [bb2,eb3,ab4]@3 [eb2,bb4]@3, [eb3,gb3]@3 ~ gb4 ~@7, ~@3 eb2 ~@4", // Ebsus4 Eb5 Ebm
  O: "ab4 ~ gb4 [eb2,eb4]@3 [eb2,bb2,eb3]@3 eb2@3, [eb3,gb3] ~ [gb4,bb4]@2", // Eb Eb5 Ebm Gb
  P: "[eb3,gb3,ab4] ~ [bb2,gb4] eb2 ~ bb2 [db2,ab2,db3]@3 db2@3, ~ eb4 [f4,ab4]@2", // Ab7 Ebm Db5 Fm
  Q: "db4!3 eb4 ~ eb4 [ab2,db3,bb3]@3 [db2,eb4]@3, [db3,f3]@3 ~ eb4 ~@7, ~@3 db2 ~@4", // Bbm7 Dbsus2 Db
  R: "gb4 ~ eb4 [db2,db4]@3 [gb2,db3,gb3,gb4,bb4,db5]@3 [gb2,db3,gb3,gb4,bb4,db5]@3, [f3,ab3] ~@3", // Db Gb Fm
  S: "bb4!3 db5!3 [db2,ab2,db3,f4,ab4]@3 [db2,ab2,db3,f4,ab4]@3, [gb2,db3,gb3]!2 ~@2", // Db Gb5
  T: "eb5!3 [db2,ab2,db3,gb5]@3 [eb2,bb2,eb3]@3 eb2@3, [db2,ab2,db3] ~@3", // Dbsus4 Eb5 Db5
  U: "[eb3,ab4] eb3 [eb3,eb4,bb4] [gb3,ab4] gb3 [gb3,eb4,gb4] [ab3,ab4]@3 [bb3,eb4,gb4]@3", // Ab5 Eb5 Gbsus2 Ebm Ab Ebm
  V: "ab3 ~ gb3 eb3@3 [eb2,bb2,eb3]@3 ~@2 gb4, [eb4,gb4] ~@2 eb2", // Eb5 Ebm
  W: "ab3 ~ gb3 eb3@3 [db2,ab2,db3]@3 ~@2 gb4, [eb4,gb4] ~@2 db2", // Db5 Ebm
  X: "[db3,ab4] db3 [db3,db4,bb4] [eb3,ab4] eb3 [eb3,db4,gb4] [bb2,ab4]@3 [eb3,db4,gb4]@3", // Db5 Gb Ab5 Ebm7 Bb7 Ebm7
  Y: "gb3 ~ eb3 eb4 ~ [db4,gb4] ~@3 [gb4,bb4,db5]@3, [db4,gb4] db3 [gb2,db3,gb3]@2", // Gb5 Gb Gb5
  Z: "[gb4,bb4,db5] bb4!2 db5!3 [db2,ab2,db3,f4,ab4]@3 [db2,ab2,db3,f4,ab4]@3, [gb2,db3,gb3]!2 ~@2", // Gb Db Gb5
  AA: "ab3 ~ gb3 eb3@3 [eb2,bb2,eb3]@3 eb2@3, [eb4,gb4] ~@3", // Eb5 Ebm
  AB: "ab3 ~ gb3 eb3@3 [db2,ab2,db3]@3 db2@3, [eb4,gb4] ~@3", // Db5 Ebm
  AC: "gb3 ~ eb3 eb4 ~ [db4,gb4] [gb2,db3,gb3]@3 [gb2,db3,gb3,gb4,bb4,db5]@3, [db4,gb4] db3 ~@2", // Gb5 Gb Gb5
  AD: "eb5!3 [db2,ab2,db3,gb5]@3 [eb2,bb2,eb3]@3 eb2@3, [db2,ab2,db3] ~ [gb4,bb4]@2", // Dbsus4 Eb5 Db5 Gb
  AE: "[eb4,eb5]!3 [gb4,gb5] ~ [gb4,gb5] [bb2,eb3,ab4,ab5]@3 [eb2,bb4,bb5]@3, [eb3,gb3]@3 ~ [gb4,gb5] ~@7, ~@3 eb2 ~@4", // Eb Gb Ebsus4 Eb5 Ebm Gb
  AF: "[ab4,ab5] ~ [gb4,gb5] [eb2,eb4,eb5]@3 [eb2,bb2,eb3]@3 eb2@3, [eb3,gb3] ~ [gb4,bb4]@2", // Ab Gb Eb Eb5 Ebm Gb
  AG: "[eb3,gb3,ab4,ab5] ~ [bb2,gb4,gb5] eb2 ~ bb2 [db2,ab2,db3]@3 db2@3, ~ [eb4,eb5] [f4,ab4]@2", // Ab7 Ebm Db5 Eb Fm
  AH: "[db4,db5]!3 [eb4,eb5] ~ [eb4,eb5] [ab2,db3,bb3,bb4]@3 [db2,eb4,eb5]@3, [db3,f3]@3 ~ [eb4,eb5] ~@7, ~@3 db2 ~@4", // Db Eb Bbm7 Dbsus2 Db Eb
  AI: "[gb4,gb5] ~ [eb4,eb5] [db2,db4,db5]@3 [gb2,db3,gb3,gb4,bb4,db5]@3 [gb2,db3,gb3,gb4,bb4,db5]@3, [f3,ab3] ~@3", // Gb Eb Db Gb Fm
  AJ: "[gb4,bb4,db5] bb4!2 db5!3 [db2,ab2,db3,db4,f4,ab4]@3 [db2,ab2,db3,db4,f4,ab4]@3, [gb2,db3,gb3]!2 ~@2", // Gb Db Gb5
  AK: "ab3 ~ gb3 [eb3,eb4,gb4]@3 [db2,ab2,db3,db4,gb4]@3 db2@3, [eb4,gb4] ~@3", // Ebm Dbsus4 Ebm
  AL: "[gb2,db3,gb3,gb4,bb4,db5] bb4 [gb2,bb4] [db3,gb3,db5] db5 [gb2,db5] [db2,ab2,db3,f4,ab4]@3 [db2,ab2,db3] ~ db2, ~@3 [f4,ab4]", // Gb Gb5 Db Db5 Fm
  AM: "[ab2,db3,eb5] eb5 [db2,eb5] [ab2,db3] db2 [ab2,db3] [eb2,bb2,eb3]@3 eb2@3, ~ gb5 [gb4,bb4]@2", // Absus4 Dbsus2 Db5 Eb5 Gb
  AN: "[gb4,gb5]@2 ~@7 eb2@3 [bb2,eb3,gb4,gb5]@6 [eb2,ab4,ab5]@6, [eb3,gb3] ~@3, ~ [eb4,eb5]@2 ~@3", // Gb Ebm Ab5 Ebm Eb
  AO: "[eb3,gb3,bb4,bb5] [eb2,ab4,ab5] [eb2,bb2,eb3] eb2, ~ [gb4,bb4]", // Ebm Ab5 Eb5 Gb
  AP: "[gb4,gb5]@2 ~@7 eb2@3 [bb2,eb3,db4,db5]@6 [eb2,eb4,eb5]@6, [eb3,gb3] ~@3, ~ [eb4,eb5]@2 ~@3", // Gb Eb7 Eb Ebm Eb
  AQ: "[eb3,gb3] ~ bb2 eb2 ~ bb2 [db2,ab2,db3]@3 db2@3, [gb4,gb5] [eb4,eb5] [f4,ab4]@2", // Ebm Db5 Gb Eb Fm
  AR: "[gb4,gb5] ~ [eb4,eb5] [db4,db5] ~ [bb3,bb4] [ab2,db3,db4,db5]@3 [db2,eb4,eb5]@3, [db3,f3]@2 ~ db2 ~@4", // Gb Eb Db Bb Db5 Dbsus2 Db
  AS: "[f3,ab3,gb4,gb5] db2 [gb2,db3,gb3,gb4,bb4,db5]!2", // Fm Gb
  AT: "[gb4,bb4,db5] bb4!2 [gb4,bb4,db5] db5!2 [db2,ab2,db3,db4,f4,ab4]@3 [db2,ab2,db3,db4,f4,ab4]@3, [gb2,db3,gb3]!2 ~@2", // Gb Db Gb5
  AU: "eb5!3 [db2,ab2,db3,gb5]@3 eb2@3 eb5 ~ db5, [db2,ab2,db3] ~@2 eb2", // Dbsus4 Db5
  AV: "[eb3,eb5] eb3 [eb3,db5] [gb3,bb4] gb3 [gb3,db5] eb5 ~ db5 eb5 ~ db5, ~@2 ab3 bb3", // Eb Eb7 Gb Gb5
  AW: "[ab3,eb5] ~ [gb3,db5] bb4 ~@2 eb2@3 eb5 ~ db5, ~ eb3 ~ eb2, ~@10 eb4@5 ~@9", // Ab5 Gb5
  AX: "[ab3,eb5] ~ [gb3,db5] bb4 ~@2 db2@3 eb5 ~ db5, ~ eb3 ~ db2, ~@10 ab4@5 ~@9", // Ab5 Gb5
  AY: "[db3,eb5] db3 [db3,db5] [eb3,bb4] eb3 [eb3,db5] eb5 ~ db5 eb5 ~ db5, ~@2 bb2 eb3", // Dbsus2 Db Eb5 Eb7
  AZ: "[gb3,eb5] ~ [eb3,db5] bb4 ~@2 gb2@3 eb5 ~ db5, ~ db3 ~ gb2, ~@10 db4@5 ~@9", // Ebm Eb7
  BA: "[bb3,eb5] bb3 [bb3,db5] [db4,bb4] db4!2 db2@3 eb5 ~ db5, ~@10 ab4@5 ~@3 db2@6", // Eb5 Bbm Gb
  BB: "[eb3,eb5] eb3 [eb3,db5] bb4 ~ eb4 eb2@3 [eb4,eb5] ~ [db4,db5], ~ gb3 ~ eb2", // Eb Eb7 Eb Db
  BC: "[eb3,eb4,eb5] eb3 [eb3,db4,db5] gb3!3 ab3@3 [eb4,eb5] ~ [db4,db5], ~ [bb3,bb4] ~ bb3", // Eb Eb7 Eb Db Bb
  BD: "[ab3,eb4,eb5] ~ gb3 ~@3 eb2@3 eb5 ~ db5, ~@4 [db4,db5]@4 ~@2 [eb4,eb5]@5 ~@9, ~ eb3 ~ eb2", // Ab5 Db Eb
  BE: "[ab3,eb5] ~ [gb3,db5] bb4 ~@2 db2@3 [eb4,eb5] ~ [db4,db5], ~ eb3 ~ db2, ~@10 ab4@5 ~@9", // Ab5 Gb5 Eb Db
  BF: "[db3,eb4,eb5] db3 [db3,db4,db5] eb3!3 bb2@3 [eb4,eb5] ~ [db4,db5], ~ [bb3,bb4] ~ eb3", // Dbsus2 Db Eb Db Bb
  BG: "[gb3,eb4,eb5] ~ eb3 ~@3 [gb2,db3,gb3]@3 [gb2,db3,gb3,gb4,bb4,db5]@3, ~@4 [db4,db5]@4 ~@2 [eb4,eb5]@5 ~@9, ~ db3 ~@2", // Ebm Gb5 Gb Db Eb
  BH: "[eb3,gb3] eb2 [eb2,bb2,eb3] eb2, [bb4,bb5] [gb4,bb4]", // Ebm Eb5 Bb Gb
  BI: "[eb3,gb3] ~ bb2 eb2 ~ bb2 [db2,ab2,db3]@3 db2@3, [gb4,gb5] [f4,ab4]", // Ebm Db5 Gb Fm
  BJ: "[eb5!3 [db2,ab2,db3,gb5]@3 [eb4,gb4]@3 [eb4,gb4]@3 [eb4,gb4]@3 ~@2 eb2 [eb2,eb4,gb4]@3 [eb2,eb4,gb4]@3, [db2,ab2,db3] ~ [eb2,bb2,eb3]@3 [eb4,gb4] ~@2]/2", // Dbsus4 Ebm Db5 Eb5 Ebm
  BK: "[[bb2,eb3,eb4,ab4]@3 [eb2,eb4,ab4]@3 [eb4,gb4]@3 [eb4,gb4]@3 [eb4,gb4]@3 ~@2 eb2 [eb2,eb4,gb4]@3 [eb2,eb4,gb4]@3, ~@2 [eb2,bb2,eb3]@3 [eb4,gb4] ~@2]/2", // Ebsus4 Ab5 Ebm Eb5 Ebm
  BL: "[[bb2,eb3,eb4,ab4]@3 eb2 ~ [bb2,eb3] [db4,f4]@3 [db4,f4]@3 [db4,f4]@3 ~@2 db2 [db2,db4,f4]@3 [db2,db4,f4]@3, ~ [eb4,ab4] [db2,ab2,db3]@3 [db4,f4] ~@2]/2", // Ebsus4 Eb5 Db Ab5 Db5 Db
  BM: "[ab2,db3,db4,f4] [db2,db4,f4] [gb4,bb4,db5]!2, ~ [gb2,db3,gb3]", // Db Gb Gb5
  BN: "[gb4,bb4,db5]@3 gb2 ~ [db3,gb3] [f4,ab4]@3 [f4,ab4]@3, ~ [gb4,bb4,db5] [db2,ab2,db3]@2", // Gb Gb5 Fm Gb Db5
  BO: "[[f4,ab4]@3 db2 ~ [ab2,db3] [eb4,gb4]@3 [eb4,gb4]@3 [eb4,gb4]@3 ~@2 eb2 [eb2,eb4,gb4]@3 [eb2,eb4,gb4]@3, ~@6 [f4,ab4]@6 [bb2,eb3]@35 ~, ~@6 eb2@11 ~@7, ~@5 [eb4,gb4] ~@2]/2", // Fm Db5 Ebm Fm Eb5 Ebm
  BP: "[[f4,ab4]@3 db2 ~ [ab2,db3] [eb4,gb4]@3 [eb4,gb4]@3 [eb4,gb4]@3 [eb4,gb4]@3 [eb4,gb4]@3 [eb4,gb4]@3, ~@6 [f4,ab4]@6 [eb2,bb2,eb3]@35 ~]/2", // Fm Db5 Ebm Fm Eb5
  BQ: "[[eb4,ab4]!2 [eb4,gb4]!2 [eb4,gb4]!4, ~@12 [eb2,bb2,eb3]@35 ~]/2", // Ab5 Ebm Eb5
  BR: "[[eb4,ab4]!2 [db4,f4]!2 [db4,f4]!4, ~@12 [db2,ab2,db3]@35 ~]/2", // Ab5 Db Db5
  BS: "[[db4,f4]!2 [gb4,bb4,db5]!2 [gb4,bb4,db5]!2 [f4,ab4]!2 [f4,ab4]!2 ~@2, ~@12 [gb2,db3,gb3]@23 ~ [db2,ab2,db3]@23 ~@13]/3", // Db Gb Fm Gb5 Db5
})).s("gm_piano").gain(0.4)

stack(piano)

More by Awolnation