Strudelify

Passacaglia in C minor BWV 582

J. S. Bach

KeyE♭ majorTempo120 bpm
0:00/0:00
// Passacaglia in C minor BWV 582 — JS Bach
// 120 bpm, 3/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 3/4 at bar 2) are rendered on a constant 3/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/495426; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 33 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/3)

// 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("<~@8 A@8 B@8 C D@4 E F@2 G>".pickRestart({
  A: "[~@13 c5@5 ~ d5@2 [g4,b4]@5 ~@3 eb5@5 ~ f5@2 [ab4,d5]@5 ~@3 [g4,d5]@5 ~ [f4,eb5]@2 [f4,c5]@5 ~@3 c5@5 ~ d5@2 [g4,b4]@5 ~@3 ab5@5 ~ bb5@2 [c5,g5]@5 ~@3 f5@5 ~ g5@2 [g4,eb5]@5 ~@3 [ab4,eb5]@5 ~ [g4,f5]@2 [f4,d5]@5 ~@3 [f4,d5]@3, ~@13 g4@8 ~@8 c5@8 ~@24 ab4@8 ~@8 bb4@8 ~@8 ab4@8 ~@27]/8", // G Abdim G5 F7 F5 G C5 Cm …
  B: "[~@3 [g4,eb5]@2 [eb4,c5]@5 ~@3 c5@5 ~ d5@2 [g4,b4]@5 ~@3 bb4@5 ~ c5@2 [f4,ab4]@5 ~@3 g4@5 ~ ab4@2 [d4,f4]@5 ~@3 ab4@5 ~ g4@2 g4 ab4 [g4,ab4] g4 [g4,ab4] ab4 ~@2 f4@5 ~ g4@2 [c4,eb4]@5 ~@3 [ab3,d4]@5 ~ eb4@2 c4@5 ~@3 c4@5 ~ d4@2 b3 c4 [b3,c4] b3 [b3,c4] c4 [b3,c4] b3 b3@2 f3, ~@13 g4@8 ~@8 g4@8 ~@8 eb4@8 ~@8 eb4@8 ~@8 b3@8 ~@14 g3@8 ~@2 ab3@8 ~@3 ab3@3 g3@4 ~, ~@125 c4 ~@2]/8", // Cm G Fm Dm Abmaj7 Cm Abdim Cmaj7
  C: "c4@3 g4@2 c5@3 d5@3 eb5@2 f5@3, eb3@5 ~@11",
  D: "[~@3 d4@2 g4@3 ab4@3 bb4@2 c5@3 ~@8 ab4@3 g4@2 f4@3 eb4@3 g5@2 [f4,f5]@3 [g4,eb5]@3 d5@2 c5@3 ~@3 ab4@2 g4@3 c5@3 ~@2 ab5@3, d5@11 g5@10 f5@5 ~ eb5@8 ~@13 b4@5 ~@6 b4@5, ~@16 ab4@8 ~@19 ab4@8 ~@13]/4", // F Cm
  E: "g5@3 f5@2 ~@3 ab4@3 g4@2 [f4,ab5]@3, c5 ~, ~@5 eb5@5 ~@6", // Fm
  F: "[[eb4,g5]@3 [d4,f5]@2 eb5@5 ~@3 ab5@3 g5@3 [b3,ab4,f5]@2 [c4,g4,eb5]@3 [d4,f4,d5]@3 [eb4,c5]@2 [d4,f4,b4]@3, ~@5 c4@13 ~@14]/2", // Eb Dm Fdim Cm Dm Cm Bdim
  G: "[c4,eb4,c5]", // Cm
})).s("gm_piano").gain(0.3)

// chords · piano
const piano_2 = note("<A B C D E F G H I@8 J@8 K L M N O P Q R S>".pickRestart({
  A: "~@11 [c2,c3]@5", B: "[g2,g3]@11 [eb2,eb3]@5", C: "[f2,f3]@11 [g2,g3]@5", D: "[ab2,ab3]@11 [f2,f3]@5",
  E: "[g2,g3]@11 [d2,d3]@5", F: "[eb2,eb3]@11 [b1,b2]@5", G: "[c2,c3]@11 [f1,f2]@5", H: "[g1,g2]",
  I: "[[c1,c2]@11 ~@8 d4@8 ~@8 f4@8 ~@10 c4@5 ~@9 d4@8 ~@8 eb4@8 ~@8 c4@8 ~@13 d4@3 b3@5, ~@11 c3@5 g3@11 eb3@5 f3@11 g3@5 ab3@11 f3@5 g3@11 d3@5 eb3@11 b2@5 c3@11 f2@5 g2@16, ~@13 eb4@5 ~@11 g4@5 ~@11 b3@8 ~@8 eb4@5 ~@11 f4@5 ~@11 d4@5 ~@11 c4@11 ~@8]/8", // C
  J: "[c4@3 g3@8 ~@8 d4@8 ~@8 c4@8 ~@8 c4@8 ~@8 d4@2 b3@5 ~@9 g3@8 ~@10 eb3@5 ~@9 d3@5 f3@3 eb3@4 d3, c2@11 c3@5 g3@11 eb3@5 f3@11 g3@5 ab3@11 f3@5 g3@11 d3@5 eb3@11 b2@5 c3@11 f2@5 g2@16, ~@13 eb4@5 ~@11 db4@5 ~@11 b3@5 ~@11 c4@5 ~@11 ab3@5 ~@11 f3@8 ~@8 eb3@5 ~@14]/8",
  K: "c3@5 ~@3 g3@3 c4@2 d4@3, c2@11 [c2,c3]@5", L: "b3@8 c4@3 d4@2 eb4@3, [g2,g3]@11 [eb2,eb3]@5",
  M: "c4@3 f4@2 d4@3 c4@3 [g2,g3,b3]@5, [f2,f3]@11 ~@5", // G F
  N: "c4@3 bb3@2 ~@3 c4@3 f4@2 eb4@3, ab2@11 [f2,f3]@5, ab3@5 ab3@5 ~@6", O: "d4@8 eb4@3 [d2,d3,f4]@5, [g2,g3]@11 ~@5",
  P: "eb4@3 f4@2 g4@3 ~@3 [b1,b2,d4]@5, [eb2,eb3]@11 ~@5", Q: "~@3 ab3@2 g3@3 f3@3 eb3@2 d3@3, [c2,c3]@11 [f1,f2]@5",
  R: "eb3@3 f3@2 g3@3 ab3@3 g3@5, [g1,g2]", S: "[c1,c2,eb3,g3]",
})).s("gm_piano").gain(0.3)

stack(piano, piano_2)

More by J. S. Bach