Strudelify

Winter

Tori Amos

KeyE♭ minorTempo85 bpm
0:00/0:00
// Winter — Amos, Tori
// 85 bpm, 4/4, key D# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 87 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(85/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 · "PIANO RH"
const piano = note(`<
  A B C D E@2 F G H I J K L M N O P Q R S T U@2 V W X Y Z AA@2 AB AC AD@2 AE AF@3 AG F AH AI I J K AJ AK AL O AM AN AO S
  T AP@2 AQ AR AS AT Z AU@2 AV AW AX@2 AE AY@2 AZ BA BB BC BD BE BF BG BH BI@2 BJ BK BL BM@3
>`.pickRestart({
  A: "~@14 db4 eb4",
  B: "eb3 ~ bb3@2 [bb4,eb5] ~ [bb4,eb5] f5 bb3@2 f4@2 [ab4,ab5]@2 f5@2, ~@4 eb4@2 ~@2 [db5,ab5]@4 eb5 ~@3", // Eb5 Ab Db5
  C: "[b4,gb5]@2 gb4@2 [db5,ab5]@2 gb4@2 ab3@2 eb4@2 ~@2 db4 eb4, b3 ~@7 [ab4,db5]@4 [bb4,eb5]@4", // B5 Db5 Eb5
  D: "eb3@2 bb3@2 [bb4,eb5]@2 [bb4,eb5] f5 bb3@2 f4@2 [ab4,ab5]@2 f5@2, ~@4 eb4@4 [db5,ab5]@4 eb5 ~@3", // Eb5 Ab Db5
  E: "[[db5,gb5]@2 ~ f5 [b4,f5] ~ [ab3,eb4,bb4,eb5]@2 bb4@2 ab4@2 bb4 ~ ab4@2 ab4@2 ab4@2 bb4@2 db4 eb4 eb3@2 bb3@2 [bb4,eb5]@2 eb5@2, b3 ~ gb4@2 ~@4 eb5@15 ~@9, ~@8 [ab3,eb4]@11 ~@9 eb4@4]/2", // Gb5 Bdim Absus2 Eb5 Ab5
  F: "bb3 f4 ab4 f5 b3 gb4 [db5,ab5] gb4, [ab4,db5]@4 eb5 ~@3 [b4,gb5]@4 ~@4", // Db5 B5
  G: "[ab3,ab4,db5]@2 ~ eb5 ~@2 db4 eb4 eb3@2 bb3@2 [bb4,eb5] ~ eb5@2, ~ eb4 [bb4,eb5]@2 ~@2 eb4 ~", // Db5 Eb5
  H: "[ab4,db5]@2 f4@2 ab4@2 f5@2 [b3,db5,gb5]@2 ~ f5 [b4,f5] ~ [ab3,eb4,bb4,eb5]@2, bb3 ~@3 eb5 ~@5 gb4@2 ~@4", // Db5 Bsus2 Bdim Absus2
  I: "bb4@2 ab4@2 bb4@2 db4 eb4 eb3@2 ~ bb4 [bb4,eb5] eb5 [bb4,eb5] f5, eb5@7 ~@9, [ab3,eb4]@5 ~@5 bb3@2 eb4@3 ~", // Eb5 Ab5
  J: "[ab4,db5] db5 b4 db5 ab4@2 eb5 f5 b3@2 gb4@2 [db5,ab5]@2 gb4@2, bb3@2 f4@2 db5 ~@3 [b4,gb5]@4 ~@4", // Db5 B5
  K: "[ab3,ab4,db5]@2 ~ eb5 [bb4,eb5]@2 db4 eb4 eb3@2 ~ bb4 [bb4,eb5] ~ eb5@2, ~@2 eb4@3 ~@5 bb3@2 eb4@2 ~@2", // Db5 Eb5
  L: "bb3@2 f4@2 ab4@2 f5@2 [b3,db5,gb5]@2 ~ f5 [b4,f5] ~ [ab3,eb4,bb4,eb5]@2, [ab4,db5]@4 eb5 ~@5 gb4@2 ~@4", // Bsus2 Bdim Absus2 Db5
  M: "bb4@2 ab4@2 bb4 ~ ab4@2 ab4@2 ab4@2 bb4@2 db4 eb4, eb5@15 ~, [ab3,eb4]@11 ~@5", // Ab5
  N: "eb3@2 bb3@2 [bb4,eb5] ~ eb5@2 bb2@2 f3@2 [ab4,eb5] ~ f5@2, ~@2 eb4 ~ [ab4,db5]@2 ab3 ~", // Eb5 Ab5 Db5
  O: "b2@2 gb3@2 [db5,ab5]@2 f3 gb3 [ab2,ab4,db5]@2 ~ eb5 [bb4,eb5]@2 db3 eb3, [b4,gb5]@4 ~@6 eb3@3 ~@3", // Db5 Eb5 B5
  P: "eb2 ~ bb2@2 [bb4,eb5] ~ eb5@2 [bb2,f5]@2 [f3,ab4,db5]@2 [eb5,ab5] ~ f5@2, ~@2 eb3 ~@3 bb3 ~", // Eb5 Bb5 Db Ab5
  Q: "[b2,b4,gb5]@2 f5!3 eb5 [eb3,bb3,ab4,eb5]@2 [eb3,bb3]@2 ab3@2 [eb4,bb4] ~ [db3,db4,ab4] [eb3,db5], ~ gb3 b3 ~ [ab4,eb5]@2 ~@2", // B5 Ebsus4 Eb5 Db5 Eb7 Ab5
  R: "[eb2,f4,bb4]@2 ~ bb3 [bb3,eb4] ~ eb4@2 bb1@2 f2@2 bb2@2 f4@2, ~@2 bb2@2 eb3@2 ~@2 [ab3,db4]@4 eb4 ~@3", // Ebsus2 Eb5 Db5
  S: "b1@2 gb2@2 [b2,db4,ab4]@3 ~ ab1@2 f2@2 [bb3,eb4]@2 db3 eb3, [b3,gb4]@4 ~@4 [ab3,db4]@4 bb2 ~@3", // Db7 Eb5 B5 Db5
  T: "eb2@2 b2@2 [bb3,eb4] ~ eb4@2 [bb1,ab3,db4]@2 ~ db4 [bb3,eb4] ~ f4@2, ~@2 eb3 ~@2 f2 bb2 ~", // Eb5 Bbm7 Eb5
  U: "[[b1,b3,gb4]@2 f4!2 [b2,f4] eb4 [ab2,eb3,bb3,eb4]@2 bb3@2 ab3@2 bb3 ~ ab3@2 ab3@2 ab3@2 bb3@2 db3@2 [bb3,gb4]@2 [bb3,gb4]@2 [bb3,gb4] ~ [gb2,db3,bb3,gb4]@2, ~@2 gb2@2 ~@4 eb4@15 ~@9, ~@8 [ab2,eb3]@11 ~@5 [gb2,db3]@6 ~@2]/2", // B5 Bdim Absus2 Ebm Gb Ab5 Gb5
  V: "[gb2,db3,bb3,gb4]@2 [db4,ab4]@2 [gb4,bb4]@2 [f4,ab4]@2 [f4,ab4]@2 bb3@2 [eb4,gb4] ~ [eb2,bb2,bb4]@2, ~ [gb2,db3]@3 [eb2,bb2]@3 ~", // Gb Db5 Gb Fm Ebm Eb5 Gb5 Eb5
  W: "db4@2 b3@2 [db4,gb4]@2 db3 gb3 [bb3,gb4]@2 [bb3,gb4]@2 [bb3,gb4] ~ [gb2,db3,bb3,gb4]@2, [b1,gb2,b2]@3 ~ [gb2,db3]@3 ~, ab4 ~@3", // Gb5 Ebm Gb B5 Gb5
  X: "[gb2,db3,bb3,gb4]@2 [db4,ab4]@2 [gb4,bb4] ~ [f4,ab4]@2 [f4,ab4]@2 [eb4,gb4]@2 bb3 ~ [b3,eb4]@2, ~@2 [gb2,db3]@6 [eb2,bb2]@7 ~", // Gb Db5 Gb Fm Ebm B Gb5 Eb5
  Y: "eb4@2 ~@4 db2 gb2 [bb3,gb4]@2 [bb3,gb4]@2 [bb3,gb4] ~ [gb2,db3,bb3,gb4]@2, [b1,gb2]@3 ~ [gb2,db3]@3 ~, b3 [b3,gb4] ~@2, ~@2 db4@5 ~@9", // Ebm Gb B5 Gb5 B5
  Z: "[gb2,db3,bb3,gb4]@2 [db4,ab4]@2 [gb4,bb4] ~ [f4,ab4]@2 ~@2 bb3@2 [eb4,gb4] ~ [bb2,eb4]@2, ~ [gb2,db3]@3 [eb2,bb2]@3 ~, ~@2 [f4,ab4] ~", // Gb Db5 Gb Fm Ebm Eb5 Gb5 Eb5 …
  AA: "[b4@2 b4@2 [eb4,gb4]@2 gb2 b2 [gb4,bb4]@2 [f4,ab4]@2 db4 ~ [gb2,gb3,bb3]@2 db4@4 [bb3,db4,gb4]@2 gb2 db3 b3@2 ab3@2 db4 ~ ab3@2, [b1,gb2,b2]@6 ~@2 [gb2,gb3]@6 ~@2 [gb2,gb3]@6 ~@2 [b1,b2,eb4]@7 ~, [eb4,gb4]@4 b4 ~ b4@2 ~@4 [f4,ab4]@7 ~@13]/2", // Ebm Gb Fm Gb B5 Gb B Ebm …
  AB: "b4@2 b4@2 [b3,eb4,b4]@3 ~ [gb4,bb4]@2 [f4,ab4]@2 bb3@2 [eb4,gb4]@2, [b1,b2]@7 ~ [eb2,eb3]@7 ~, [b3,eb4] ~@3", // B Gb Fm Ebm B Eb B
  AC: "[eb4,gb4]!2 bb3 ab4 b3 eb4 b3 eb4, eb3@7 ~ [ab2,ab3]@7 ~, ~@2 ab4 ~", // Ebm Ab
  AD: "[[b3,eb4]@2 b4@2 [b3,eb4]@2 b4@2 [gb4,bb4]@2 ab4@2 db4 ~ [gb2,gb3,gb4]@2 bb3@2 db4@2 [gb2,gb3]@2 [db4,ab4]@2 b3@2 gb3@2 db4 ~ [gb3,eb4]@2, [ab2,ab3]@7 ~ [gb2,gb3]@6 ~@2 [gb2,gb3]@4 ~@4 [b1,b2]@7 ~, b4 ~@3 b4 ~@3 db4@4 ab4@7 ~ [bb3,gb4] ~@3 eb4@5 ~@3]/2", // B Gb Db5 Ebm Ab Gb B Ebm
  AE: "b4@2 b4@2 b4@2 gb4@2 [gb4,bb4]@2 bb3@2 eb4 ~ bb3@2, [b2,b3]@7 ~ [eb2,eb3]@7 ~, eb4@4 eb4 ~@5 [f4,ab4]@6", // Gb B Eb Fm
  AF: "[[eb2,eb3,eb4]@2 db2@2 ab2 ~ [eb2,eb4,gb4] [db2,db4,f4] ~@2 gb3@2 b3@2 db2 eb2 ab3@2 ~@2 [f4,ab4]@3 ~ [eb2,eb3]@4 bb2@3 ~ eb2@4 [bb4,eb5] ~ f5@2 b3@2 gb4@2 [db5,ab5]@2 gb4 ab4, [f4,ab4]@6 ~@2 [b1,b2]@6 gb3@2 [db2,db3]@7 ~@25, ~@2 bb3@5 ~ [db4,f4]@10 db4@6 [gb3,bb3,eb4]@11 ~@5 [b4,gb5]@4 ~@4]/3", // Eb Ebm Db Fm Eb Eb5 Db5 Fm …
  AG: "ab3@2 eb4@2 [bb4,eb5]@2 db4 eb4 eb3@2 bb3@2 [bb4,eb5] ~ eb5@2, [ab4,db5]@2 ~@4 eb4 ~", // Eb5 Db5
  AH: "[ab3,ab4,db5]@2 ~ eb5 [bb4,eb5]@2 db4 eb4 eb3@2 bb3@2 [bb4,eb5] ~ eb5@2, ~@2 eb4@3 ~@7 eb4@2 ~@2", // Db5 Eb5
  AI: "bb3@2 f4@2 eb5@2 f5@2 [b3,db5,gb5]@2 ~ f5 [b4,f5]@2 [ab3,eb4,bb4,eb5]@2, [ab4,db5]@2 ab4@2 ~ gb4 ~@2", // Bsus2 Bdim Absus2 Db5
  AJ: "bb3@2 f4@2 eb5@2 f5@2 [b3,db5,gb5]@2 ~ f5 [b4,f5] ~ [ab3,eb4,bb4,eb5]@2, [ab4,db5]@2 ab4@2 ~ gb4 ~@2", // Bsus2 Bdim Absus2 Db5
  AK: "bb4@2 ab4@2 bb4@2 ab4@2 ab4@2 ab4@2 bb4@2 db4 eb4, eb5@15 ~, [ab3,eb4]@11 ~@5", // Ab5
  AL: "eb3@2 bb3@2 [bb4,eb5]@2 eb5@2 bb2@2 f3@2 [ab4,eb5] ~ f5@2, ~@2 eb4@2 [ab4,db5]@2 ab3 ~", // Eb5 Ab5 Db5
  AM: "eb2@2 bb2@2 [bb4,eb5] ~ eb5@2 [bb2,f5]@2 [f3,ab4,db5]@2 [eb5,ab5] ~ f5@2, ~@2 eb3 ~@3 bb3 ~", // Eb5 Bb5 Db Ab5
  AN: "[b2,b4,gb5]@2 f5!2 [b3,f5] eb5 [eb3,bb3,ab4,eb5]@2 [eb3,bb3]@2 ab3@2 [eb4,bb4] ~ [db3,db4,ab4] [eb3,db5], ~ gb3 ~@2 [ab4,eb5]@2 ~@2", // B5 Bdim Ebsus4 Eb5 Db5 Eb7 Ab5
  AO: "[eb2,f4,bb4]@2 ~ bb3 [bb3,eb4] ~ eb4@2 bb1@2 f2@2 eb4@2 f4@2, ~ bb2 eb3 ~ [ab3,db4]@2 bb2@2", // Ebsus2 Eb5 Db5
  AP: "[[b1,b3,gb4]@2 f4!2 [b2,f4] eb4 [ab2,eb3,bb3,eb4]@2 bb3@2 ab3@2 bb3@2 ab3@2 ab3@2 ab3@2 bb3@2 db3@2 [bb3,gb4]@2 [bb3,gb4]@2 [bb3,gb4] ~ [gb2,db3,bb3,gb4]@2, ~@2 gb2@2 ~@4 eb4@15 ~@9, ~@8 [ab2,eb3]@11 ~@5 [gb2,db3]@6 ~@2]/2", // B5 Bdim Absus2 Ebm Gb Ab5 Gb5
  AQ: "[gb2,db3,bb3,gb4]@2 [db4,ab4]@2 [gb4,bb4] ~ [f4,ab4]@2 [f4,ab4]@2 bb3@2 [eb4,gb4] ~ [eb2,bb2,bb4]@2, ~ [gb2,db3]@3 [eb2,bb2]@3 ~", // Gb Db5 Gb Fm Ebm Eb5 Gb5 Eb5
  AR: "db4@2 b3@2 ~@2 db3 gb3 [bb3,gb4]@2 [bb3,gb4]@2 [bb3,gb4] ~ [gb2,db3,bb3,gb4]@2, [b1,gb2,b2]@3 ~ [gb2,db3]@3 ~, ab4 [db4,gb4] ~@2", // Ebm Gb B5 Gb5
  AS: "[gb2,db3,bb3,gb4]@2 [db4,ab4]@2 [gb4,bb4] ~ [f4,ab4]@2 [f4,ab4]@2 [eb4,gb4]@2 bb3@2 [b3,eb4]@2, ~@2 [gb2,db3]@6 [eb2,bb2]@7 ~", // Gb Db5 Gb Fm Ebm B Gb5 Eb5
  AT: "eb4@2 ~@2 [b3,gb4]@2 db2 gb2 [bb3,gb4]@2 [bb3,gb4]@2 [bb3,gb4] ~ [gb2,db3,bb3,gb4]@2, [b1,gb2]@3 ~ [gb2,db3]@3 ~, b3 ~@3, ~@2 db4@5 ~@9", // B5 Ebm Gb B5 Gb5
  AU: "[b4@2 b4@2 [eb4,gb4]@2 gb2 b2 [gb4,bb4]@2 [f4,ab4]@2 db4 ~ [gb2,gb3,bb3]@2 db4@4 [bb3,db4,gb4]@2 gb2 db3 b3@2 ab3@2 db4@2 ab3@2, [b1,gb2,b2]@6 ~@2 [gb2,gb3]@6 ~@2 [gb2,gb3]@6 ~@2 [b1,b2,eb4]@7 ~, [eb4,gb4]@4 b4 ~ b4@2 ~@4 [f4,ab4]@7 ~@13]/2", // Ebm Gb Fm Gb B5 Gb B Ebm …
  AV: "b4!2 [b3,eb4,b4]@2 [gb4,bb4] [f4,ab4] bb3 [eb4,gb4], [b1,b2]@7 ~ [eb2,eb3]@7 ~, [b3,eb4] ~@3", // B Gb Fm Ebm B Eb B
  AW: "[eb4,gb4] ~ [eb4,gb4]@2 ~@2 ab4@2 b3@2 eb4@2 b3@2 eb4@2, eb3@7 ~ [ab2,ab3]@7 ~, ~ bb3 ab4 ~", // Ebm Ab
  AX: "[b4@2 b4@2 [b3,eb4]@2 b4@2 [gb4,bb4]@2 ab4@2 db4 ~ [gb2,gb3,gb4]@2 bb3@2 db4@2 [gb2,gb3]@2 [db4,ab4]@2 b3@2 gb3@2 db4 ~ [gb3,eb4]@2, [ab2,ab3]@7 ~ [gb2,gb3]@6 ~@2 [gb2,gb3]@4 ~@4 [b1,b2]@7 ~, [b3,eb4]@4 b4 ~@3 db4@4 ab4@7 ~ [bb3,gb4] ~@3 eb4@5 ~@3]/2", // B Gb Db5 Ebm Ab Gb B Ebm
  AY: "[[eb2,eb3,eb4]@2 db2@2 ab2 ~ [eb2,eb4,gb4] [db2,db4,f4] ~@2 gb3@2 b3 ~ db2 eb2 ab3@2 ~@2 [f4,ab4]@3 ~ [bb3,bb4]@4 [ab3,ab4]@3 ~, [f4,ab4]@6 ~@2 [b1,b2]@6 gb3@2 [db2,db3]@7 ~ [eb2,bb2,eb3,eb4]@7 ~, ~@2 bb3@5 ~ [db4,f4]@10 db4@6 ~@8]/2", // Eb Ebm Db Fm Bb Ab Fm B …
  AZ: "[gb2,db3,gb3,eb4,bb4,eb5]@4 [gb2,db3,gb3,db4,ab4,db5]@3 gb3 ~@4 [gb4,db5,gb5]@2 ~ [gb4,db5,gb5], ~@8 [gb2,db3,gb3]@7 ~", // Ebm7 Gbsus2 Gb5
  BA: "[ab4,eb5,ab5]@2 [gb4,db5,gb5]@2 [ab2,eb3,ab3]@2 db3 eb3 ~@4 [eb4,bb4,eb5]@2 [eb4,bb4,eb5]@2, [ab2,eb3,ab3]@4 [eb4,bb4,eb5]@4 [eb2,bb2,eb3]@7 ~", // Ab5 Gb5 Ab5 Eb5 Ab5 Eb5
  BB: "[db4,bb4,db5]@4 [eb4,eb5] ~ [f4,f5]@2 [gb4,bb4,gb5]@4 [ab4,eb5,ab5]@3 ~, [gb2,db3,gb3]@7 ~ [gb2,bb2,gb3]@7 ~", // Gb Eb F Gb Ab5 Gb5 Gb
  BC: "[ab2,eb3,ab3,db4,ab4,db5]@4 [eb4,bb4,eb5]@2 db3 eb3 ~@4 [eb4,bb4,eb5] ~ [eb4,eb5] [db4,db5], ~@4 [ab2,eb3,ab3] ~@3 [eb2,bb2,eb3]@7 ~", // Absus4 Eb5 Eb Db Ab5 Eb5
  BD: "db4@2 db4@2 gb4 ~ db4@2 [gb4,db5,gb5]@4 [f4,f5] ~ [eb4,bb4,eb5]@2, [gb2,db3,gb3,bb4,db5]@7 ~ [gb2,bb2,gb3]@7 ~", // Gb5 F Eb5 Gb
  BE: "[eb4,bb4]@2 eb4@2 [ab2,eb3,ab3,ab4] ~ db3 eb3 ~@4 [eb4,bb4,eb5] ~ [eb4,bb4,eb5]@2, eb5@7 ~@9, [ab2,eb3,ab3]@4 ~@2 db5@2 [eb2,bb2,eb3]@7 ~", // Eb5 Ab5 Eb5 Ab5 Eb5
  BF: "[db4,bb4,db5]@4 [eb4,eb5] ~ [f4,f5]@2 [gb4,db5,gb5]@4 [ab4,eb5,ab5]@3 ~, [gb2,db3,gb3]@7 ~ [gb2,bb2,gb3]@7 ~", // Gb Eb F Gb5 Ab5 Gb5 Gb
  BG: "[ab2,eb3,ab3,db4,ab4,db5]@4 [eb4,bb4,eb5]@2 db3 eb3 ~@4 [eb4,bb4,eb5] ~ [eb4,bb4,eb5]@2, ~@4 [ab2,eb3,ab3] ~@3 [eb2,bb2,eb3]@7 ~", // Absus4 Eb5 Ab5 Eb5
  BH: "[db4,bb4,db5]@4 [eb4,eb5] ~ [f4,f5]@2 [gb4,db5,gb5]@4 [f4,f5]@3 ~, [gb2,db3,gb3]@7 ~ [gb2,db3,gb3]@7 ~", // Gb Eb F Gb5 F Gb5
  BI: "[~@4 bb5 ~ ab5@2 ab5@2 bb5@2 bb5@2 ab5 bb5 eb5@7 ~@9, [ab2,eb3,ab3,eb4,bb4,eb5]@7 ~ [ab2,eb3,ab3]@15 ~@9, ~@8 [eb4,bb4,eb5]@7 ~@17]/2", // Absus2 Ab5 Eb5
  BJ: "eb3@2 bb3@2 [bb4,eb5] ~ [bb4,eb5] f5 bb3@2 f4@2 [eb5,ab5] ~ f5@2, eb4@2 eb4 ~ [db5,ab5]@2 ab4 ~", // Eb5 Ab5 Db5
  BK: "b3@2 gb4@2 ~@2 gb4@2 ab3@2 eb4@2 [bb4,eb5]@2 db4 eb4, [b4,gb5] [db5,ab5] [ab4,db5] ~", // Eb5 B5 Db5
  BL: "eb3@2 bb3@2 [bb4,eb5] ~ [bb4,eb5] f5 bb3@2 f4@2 [eb5,ab5]@2 f5@2, ~@2 eb4 ~ [db5,ab5]@2 ab4@2", // Eb5 Ab5 Db5
  BM: "[~ b3 [db5,f5] db4 [eb4,bb4,eb5]@16 ~@4, [b4,gb5] ~@11]/3", // Db Eb5 B5
})).s("gm_piano").gain(0.26)

stack(piano)

More by Tori Amos