Strudelify
KeyE majorTempo100 bpm
0:00/0:00
// Fugue — Emerson, Lake & Palmer
// 100 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 6/8 at bar 37, 4/4 at bar 40) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 68 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/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 · "right"
const piano = note(`<
  A B@2 C@2 D E F G H I J K L M@5 N@2 O P Q R S T O U V W X@2 Y@3 Z@3 AA AB AC AD AE AB AF AG AH@2 AI AJ AA AB AC AD AE
  AB AF AG AH@2 AI AK@2 AL AM AN AO
>`.pickRestart({
  A: "e4 b3 f#3 [g#2,g#3]@3 d#4 a#3 f3 [a2,a3]@3 d4 a3 d#3 [f#2,f#3]@3 c#4 g#3 d3 [g2,g3]@3", // G# A F# G
  B: "[e3 b2 f#2 [g#1,g#2]@3 d#3 a#2 f2 [a1,a2]@3 d3 a2 d#2 [f#1,f#2]@3 c#3 g#2 d#2 [g1,g2]@27]/2", C: "c#2!4",
  D: "e3 a3 d#4 c#4 a3 e4 b3 e4 a#4 g#4 e4 b4, [c#2,c#3] c#2!3", E: "e4 a4 d#5 c#5 a4 e5 b4 e5 a#5 g#5 e5 a#5, c#2!4",
  F: "[e5,c#6] f#5 a#5 [b4,g#5] c#5 e5 [g#4,e5] a4 c#5 [d#4,b4] e4 g#4, [f#4,c#5] [c#4,g#4] [a3,e4] [e3,b3]", // C#m E C#m G#m F#5 C#5 A5 E5
  G: "f4 f#4 [b4,c#5] a#4 g#4 f#4 e4 c#4 b3 [c#3,g#3,c#4]@3, [f#3,c#4] [e3,b3] [d#3,a3] ~", // Bsus2 C#5 F#5 E5 D#dim
  H: "c#4 f#4 g#4 c#5 d#5 g#4 [g#4,g#5] f#5 [g#4,g#5] f#5 d5 a4, c#2 b1 a1 d2", // G#
  I: "g#4 d#5 c#5 f#5 d#5 c#5 b4 g#4 b4 a#4 f#4 d#4, d#2@3 d#2", J: "c#4 g#4 f#4 g#4 d#5 c#5 d#5 g#4 ~ g#4@3, f2",
  K: "g#4 d#5 c#5 f#5 d#5 c#5 b4 g#4 b4 a#4 f#4 d#4, e2", L: "e4 f4 f#4 a#4 c5 c#5 f5 f#5 a#5 c6 a#5 f#5, f2",
  M: "[f5@2 [e5,d#6]@2 c#6@2 [f5,d#6]@2 c#6@2 [d#5,d#6]@2 c#6@2 [g5,d#6]@2 c#6@2 [f5,d#6]@2 c#6@2 ~@2 f6@2 c#6@2 a#5@2 d#6@2 c6@2 c#6@2 a#5@2 f5@2 d#5@2 g#5@2 d#5@2 ~ a#2@8 ~@13 a#4@2 ~@2 [c2,c3,g4]@2 d#5@2 [g2,c5]@2 [c2,c3,d5]@2 a#4@2 [g2,f4]@2 [c2,c3,d4]@2 f4@2 [g2,d4]@2 [c2,c3]@2 ~@4 [c2,c3]@2 ~@4 [c2,c3]@2 ~@2 [g2,g5]@2 [c2,c3]@2 ~@2 g2@2 [c2,c3,c5]@2 a#4@2 [g2,f4]@2, f2@18 f2@4 [a5,d#6]@2 d#2@18 ~@4 f5@8 ~@17 f4@2 ~@17 [c4,g4]@5 f5@2 ~@3 g2@2 ~@18, ~@23 f2@2 ~@17 f2@5 ~@47 g2@2 g5@5 f5@5 ~@2 a#4@6 ~@6]/5", // Emaj7 F7 D# Cm F7 C5 Csus2 G7 …
  N: "[[g#1,g#2,g4] d#5 [d#2,c5] [g#1,g#2,d5] a#4 [d#2,f4] [g#1,g#2,d4] f4 [d#2,d4] [g#1,g#2] ~@2 [g#1,g#2] ~ d#2 [g#1,g#2] ~@2 [g#1,g#2,a#4] c5 d#2 [g#1,g#2,c5] a#4 [d#2,f4], ~@18 [c4,g4]@5 f5@2 ~@5 f5@4 d#2@2 ~@12, ~@22 d#2@2 g5@6 ~@5 g5@2 ~@11]/2", // G#maj7 Cm G#dim D#sus2 G#dim D#maj7 G# G#sus2 …
  O: "[f1,f2,a#4] d#5 [c2,c5] [f1,f2,d5] a#4 [c2,g4] [f1,f2,g#5] f5 [c2,g5] [f1,f2,d#5] c5 [c2,a#4]", // A#5 C Dm C5 Fm C5 F7 C7
  P: "[g1,g2,g4] a#4 [d2,g4] [g1,g2] ~ d2 [g1,g2] ~ d2 [g1,g2,a#4] ~ [d2,f4], ~@3 [f4,c5]@6 ~ c5 ~, ~@21 a#4@2 ~", // G G5 G Gm Dm F5
  Q: "[c2,c3,g4] d#5 [g2,c5] [c2,c3,d5] a#4 [g2,f4] [c2,c3,d4] f4 [g2,d4] [c2,c3] ~ g2, ~@3 [c4,g4]", // C5 Csus2 G7 Csus2 G5 C C5
  R: "[c2,c3,d4] d#4 [g2,g4] [c2,c3,a#4] d5 [g2,f5] [c2,c3,d5] d#5 [g2,a#5] [c2,c3,g5] a#4 [g2,f4]", // Csus2 G C7 G7 Csus2 Gm C5 G7
  S: "[g#1,g#2,g4] d#5 [d#2,c5] [g#1,g#2,d5] a#4 [d#2,f4] [g#1,g#2,d4] f4 [d#2,d4] [g#1,g#2] ~ d#2, ~@3 [c4,g4]", // G#maj7 Cm G#dim D#sus2 G#dim D#maj7 G# C5
  T: "[g#1,g#2,d4] d#4 [d#2,g4] [g#1,g#2,a#4] d5 [d#2,f5] [g#1,g#2,d#5] f5 [d#2,a#5] [g#1,g#2,g5] d5 [d#2,f4]", // G#dim D# G#sus2 D#sus2 G#5 D#5 G#maj7 D#sus2
  U: "[g1,g2,g4] a#4 [d2,g4] [g1,g2] ~ d2 [g1,g2] ~ d2 [g1,g2,c5] d#5 [d2,c5], ~ [f4,c5]@2 ~", // G G5 G C5 D7 F5
  V: "[b4,g5] c5 d#5 [g4,d#5] g#4 c5 [c5,g#5] c#5 f5 [g#4,e5] a4 c#5, [c4,g4] [g#3,d#4] [c#4,g#4] [a3,e4]", // Em Cm Fm C#m C5 G#5 C#5 A5
  W: "[c#5,a5] d5 f5 [a4,f5] a#4 d5 [d5,a#5] d#5 g5 [b4,g5] c5 e5, [d4,a4] [a#3,f4] [d#4,a#4] [c4,g4]", // F#m Dm Gm Em D5 A#5 D#5 C5
  X: "[f#2,f#3,c#4,f#4,a#4,c#5] [e2,e3,g3,c4,e4,g4]@2 ~", // F# C
  Y: "[[b1,b2,f#3,b3,e4]@5 ~ [d2,d3,a3,d4,g#4]@5 ~ [f2,f3,c4,f4,b4]@5 ~ [g#2,g#3,d#4,g#4,d5]@5 ~ [c#3,c#4,g#4,c#5,g5]@5 ~ [b3,b4,e5,a#5]@6 [a2,a3,c5,f5,b5]@36, ~@5 d#4@2 ~@4 f#4@2 ~@4 a4@2 ~@4 c5@2 ~@4 b2@6 ~@37]/3", // Bsus4 D F G# C# E F
  Z: "[g#3@3 c#4@3 f#4@3 f4@2 c#4@3 ~ g#4@3 b3@3 e4@3 a#4@3 g#4@3 e4@3 b4@3 e4@3 a4@3 d#5@3 c#5@3 a4@3 e5@3 b4@3 e5@3 a#5@3 g#5@3 d#5@3 b5@3, [c#2,c#3] [b1,b2] [a1,a2] [g#1,g#2]]/3", // C# B A G#
  AA: "[f#3,f#4,a#4,c#5]@4 [d#4,a#4]@2 f#4 g#4, ~ d#3", AB: "[c#4,f4,g#4]@2 f4 c#4, c#3",
  AC: "[a#2,c#4,f#4]@4 [b3,d#4]@2 b3 c#4, ~ b2", AD: "[f#2,a#3,c#4]",
  AE: "[f#3,f#4,a#4,c#5]@11 ~ a#4@6 f#4@3 g#4@3, ~@11 d#4@6 ~@7, ~ d#3", AF: "[a#2,d#4,f#4]@4 [b3,d#4]@2 b3 c#4, ~ b2",
  AG: "[f#2,f#3,a#3,c#4]@2 ~ [b1,g#3,c#4,f4]", AH: "[a#1,f#3,c#4,f#4]@3 f#4 c#5 a#4, ~ [b1,f#3,b3,d#4]",
  AI: "[f2,d#4,g#4]@11 ~ g#4@4 a#4@4 f#4@4, ~@11 d#4@12 ~, ~ b1", // Fm7
  AJ: "d#4@2 f4@2 f#4@2 [c#2,g#3,c#4,f4]@3 [f#1,a#3,c#4,f#4]@3, [g#1,c4] ~", // C# F# G#
  AK: "[d#4@2 f4@2 f#4@2 [c#2,g#3,c#4,f4]@3 [f#1,a#3,c#4,f#4]@6 b4 c#5 f#5 [b1,f#4,c#5,f5]@3 [c#2,e4,b4,d#5]@3, [g#1,c4] ~@3]/2", // C# F# Bsus2 C#m7 G#
  AL: "~ f#5!4 e5 f5 e5, [d#2,f#4,c#5]@2 [e2,g4,a#4] [a1,a4,d5], ~ b4@12 ~@11", AM: "[d2,a4,d5,f#5]",
  AN: "[c2,f#4]@11 ~ e4@12, [c4,g4], ~@11 c2@12 ~", AO: "~@2 a3 d4 e4 a4 [d#4,g4,b4]@3 f#4@3, d2 ~",
})).s("gm_piano").gain(0.41)

stack(piano)

More by Emerson, Lake & Palmer