Strudelify

Humpty Dumpty

Tori Amos

KeyG majorTempo116 bpm
0:00/0:00
// Humpty Dumpty — Amos, Tori
// 116 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 79 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(116/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 · "Bösendorfer"
const piano = note(`<
  A B A C D E F@2 G H I J A C K L M N O P Q R S T U V W X Y@2 Z AA AB AC AB AC AD AE AB AC AB AC AB AC AB AC AB AC AB AF
  AG AH AI AJ D E F@2 G H I J A AK@2 AL@3 AM AN AM AN AM AO AM AN AM AP AQ
>`.pickRestart({
  A: "e2@2 ~ a#4 [b4,e5]@2 e4@2 [g2,a#4,e5]@2 [g2,b4,e5]@2 ~@2 e4@2, ~ e2 e2@2 ~@2 g2@2", // E5 Edim Em
  B: "[a2,a#4,e5] [a2,b4,e5] [a2,e4] [a#4,e5]!2 [g2,b4,e5] g2!2, ~@3 e4", // A Asus2 A5 A#dim Em
  C: "[a#4,e5] [b4,e5] a4 [c#4,a4] [a2,b3,c#4,g4]!2 a2 b2, ~@3 [a3,c#4,a4]", // A#dim E5 F#m A7 A
  D: "e2@2 e2@2 [b4,e5]@2 a#4@2 [g2,b4,e5]@2 a4 ~ g2@4, ~@2 e2@2 ~ g2 ~@2, ~@11 b4@4 ~", // E5 Em
  E: "[a2,a#4] [a2,b4]!2 [b4,e5]@2 g2!3, e5 ~ e5 ~ e5 ~@11", // A#maj7 Asus2 E5
  F: "[e2@2 e2@2 [b4,e5]@2 a4@2 [g2,a4]@2 [g2,b4]@2 b4!2 ~@2 a2@3 ~@2 a#4 [b4,e5]@4 ~@2 a2@2 [b2,e4]@2, ~ e2 ~ g2 ~@4, ~@7 b4@3 ~@3 [c#4,e4]@2 ~]/2", // E5 Gsus2 G E5 C#m
  G: "[e2,b4,e5]@2 ~ a4 g4 ~ [b4,e5]@2 g2@2 [g2,b4]@2 ~@2 e4 ~, ~ e2 e2@2 ~@2 g2@2", // E5 G
  H: "[b4,e5] ~ a2@2 [a2,b4,e5]@3 ~ [b4,e5]@2 a2@2 a2@4, a2@2 b4 ~@13", // E5 Asus2 E5
  I: "[c3,e4]@2 ~ [e3,g4]@2 [g3,c5]@2 ~ [g2,b4]@3 ~@2 c4@2 ~, ~@11 g4@2 ~@3, ~@12 g3@3 ~", // C Em C5 G
  J: "c4 ~ b3@3 ~ c3@2 a3 ~ [g2,g3]@4 f#2 ~, b2@4 ~@2 a3 ~@9", // G
  K: "e2@2 e2@2 [b4,e5] ~ a#4 ~ [b4,e5] ~ g2@2 a#4 b4 e4 ~, ~@4 e2@4 g2@2 a4 ~ g2@4", // E5
  L: "[a#4,e5] ~ a2@2 a2@2 [b4,e5]@3 ~ g2@2 g2@2 g2@2, a2@2 b4 ~ b4 ~@5 e4@4 ~@2", // A#dim E5
  M: "e2@2 e2@2 [a#4,e5] ~ [b4,e5] ~ [b4,e5] ~ g2@2 a4 ~ g4 ~, ~@2 e4 ~ e2@4 g2@2 a4 ~ g2@4", // A#dim E5
  N: "[b4,e5] ~ b4 ~ b4 ~ [c#4,e4]@2 [a2,c#4,e4] ~ [a2,b3,e4] ~ [a2,a3,e4] ~ [b2,e4] ~", // E5 C#m A Asus2 A5 E5
  O: "e2@2 e2@2 [b4,e5] ~ a4 ~ [a4,e5] ~ g2@2 g2@4, ~@4 e2@4 g2@2 b4 ~@5", // E5 A5
  P: "a2!3 [a#4,e5]@2 g2 [g2,b4,e5] g2, [a#4,e5] ~@3", Q: "e2!2 ~@2 g2!2 [g2,a4]@2, ~ e2 ~@2, ~@3 d5@2 ~@3",
  R: "a2 ~@5 [c#4,a4]@2 a2@2 [c#4,a4] ~ [a2,c#4,a4] ~ [b2,b3,g4] ~", // F#m A Em
  S: "e2@2 a4 g4 [e2,e4]@4 g2@2 g2@2 g2@4, b4 ~ e2@2 ~@12", // E
  T: "a2 ~@3 a4!2 [c#4,a4]@3 ~ [c#2,a4] ~ [d2,a4] ~ [e2,g4] ~", // F#m D5 Em
  U: "e2@2 e2@2 ~@2 a#4 ~ [g2,e4,b4]@2 g2@2 g2@4, [e4,b4] e2 ~@2", // Em E5
  V: "a2 ~ a2 ~ a2@2 [c#4,a4]@3 ~ [c#2,b3,g4] ~ [d2,c#4,a4] ~ [e2,b3,g4] ~", // F#m C#m7b5 Dmaj7 Em
  W: "e2@2 a4 g4 [e2,e4]@4 [g2,a#4,e5]@2 g2@2 g2@4, b4 ~ e2@2 ~@6 [b4,e5]@6", // E Edim E5
  X: "a2 ~ [a2,a4] ~ [b4,e5] ~ a4 ~ [b4,e5] ~ [c#2,a4] ~ [d2,b4,e5] ~ [e2,a4] ~, ~@2 a2 ~@5", // A E5 F#m E7 A5
  Y: "[e2@2 e2@2 e2@4 g2@2 g2@2 a#4 ~@3 a2 ~ a2 ~ a2@3 ~ [a2,a4,e5] ~ [a2,b4,e5] ~ a2 ~@3, [b4,e5]@5 ~@7 g2@4 ~@16, ~@7 [b4,e5]@4 ~@5]/2", // A5 Asus2 E5
  Z: "[c4,d4,f#4] ~ [c4,d4,f#4] ~ [c4,d4,f#4] ~ [c4,d4,f#4] ~ [c4,d4,f#4] ~ [c4,d4,f#4] ~ [c4,d4,f#4] ~ [c4,d4,f#4] ~, d2@4 ~@2 a2 ~", // D7
  AA: "[b3,d4,g4,b4] ~ [b3,d4,g4,b4] ~ [b3,d4,g4,b4] ~ [b3,d4,g4,b4] ~ [b3,d4,g4,b4] ~ [b3,d4,g4,b4] ~ [b3,d4,g4,b4] ~ [b3,d4,g4,b4] ~, g2@4 ~@2 d3 ~", // G
  AB: "[c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~, c2@2 ~ e2@2 ~ g2 ~", // Cmaj7
  AC: "[b3,d4,f#4,a4] ~ [b3,d4,f#4,a4] ~ [b3,d4,f#4,a4] ~ [b3,d4,f#4,a4] ~ [b3,d4,f#4,a4] ~ [b3,d4,f#4,a4] ~ [b3,d4,f#4,a4] ~ [b3,d4,f#4,a4] ~, g1@4 ~@2 d2 ~", // Bm7
  AD: "[c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c3,c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~, c2@2 ~ c3 ~@2 c2 ~", // Cmaj7
  AE: "[b3,d4,f#4,a4] ~ [b3,d4,f#4,a4] ~ [b3,d4,f#4,a4] ~ [b3,d4,f#4,a4] ~ [b3,d4,f#4,a4] ~ [b3,d4,f#4,a4] ~ [b3,d4,f#4,a4] ~ [b3,d4,f#4,a4] ~, g1@2 ~ g2@2 ~ g1 ~", // Bm7
  AF: "[b3,d4,f#4,a4] ~ [b3,d4,f#4,a4] ~ [b3,d4,f#4,a4] ~ [b3,d4,f#4,a4] ~@5 g2@2 f#2@2, g1 [b3,d4,f#4,a4]", // Bm7
  AG: "[e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~, e2@2 ~ g2@2 ~ g#2 ~", // E5
  AH: "[e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,a#4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,a#4,e5] ~ [e3,e4,a#4,e5] ~, a2@2 ~ c#3 ~ d3 ~@2", // E5 Edim E5 Edim
  AI: "[e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ a#2 ~, e2 ~@3", // E5
  AJ: "a2@3 ~ [d5,a5] ~ [c#5,a5] ~ [b4,e5] ~ [a1,a4,e5] ~ [a4,e5]@2 a1 ~, ~@12 a2 ~@3", // D5 F#m E5 A5
  AK: "[[a2,a#4,e5] ~ [a2,b4,e5] ~ e4@2 a2 ~ [a2,a#4,e5] ~ [a2,b4,e5] ~ [a2,a#4,e5] ~ b2 ~ e2@2 ~ a#4 [b4,e5] ~ e4 ~ [a4,e5] ~ [b4,e5] ~@3 e4 ~, ~@4 a2 ~@9 [b4,e5]@4 e2@2 e2@4 g2@2 g2@2 g2@4]/2", // A Asus2 A Asus2 A E5 A5 E5
  AL: "[[a2,a#4,e5] ~ [a2,b4,e5] ~ e4@2 a2 ~ [a2,a#4,e5] ~ [a2,b4] ~ [c#3,a4] ~ e3 ~ e2@2 e2@2 ~@2 e4 ~ [a#4,e5] ~ [b4,e5] ~@5 a2 ~ [a2,c#4,a4] ~ [c#4,a4]@2 a2 ~ [c#4,a4]@2 a2 ~ c#3 ~ e3 ~, ~@4 a2 ~@9 [b4,e5]@4 ~@2 e2@4 g2@2 g2@2 g2@4 ~@4 a2 ~@3 a2 ~@7, ~@15 [c#4,a4]@2 ~@7]/3", // A Asus2 A Asus2 F#m A#dim E5 A …
  AM: "[e2,e4,a4,e5] ~ [e2,e4,b4,e5] ~ [e2,e4,a4,e5] ~ [e2,e4,b4,e5] ~ [g2,e4,a4,e5] ~ [g2,e4,b4,e5] ~ [g2,e4,a4,e5] ~ [g2,e4,b4,e5] ~", // A5 E5 A5 E5 A7 Em A7 Em
  AN: "[a2,e4,a4,e5] ~ [a2,e4,b4,e5] ~ [a2,e4,a4,e5] ~ [a2,e4,b4,e5] ~ [a2,e4,a4,e5] ~ [a2,e4,b4,e5] ~ [c#3,e4,a4,e5] ~ [e3,e4,b4,e5] ~", // A5 Asus2 A5 Asus2 A5 Asus2 A E5
  AO: "[a2,a4,e5] ~ [e4,c#5] ~ [d4,a4] ~ [c#4,e4] ~ [b3,e4] ~ [a3,e4] ~ [a3,e4]@3 ~", // A5 C#m D5 C#m E5 A5
  AP: "[a2,a4,e5] ~ [a2,e4,c#5] ~ [a2,d4,a4]@3 ~ [a3,d4] ~ [e3,b3] ~ [d3,a3] ~ [e3,b3] ~", AQ: "~@6 [e3,b3] ~@9",
})).s("gm_piano").gain(0.41)

stack(piano)

More by Tori Amos