Strudelify

Prelude and Fugue in C minor BWV 847

Johann Sebastian Bach

KeyE♭ majorTempo96 bpm
0:00/0:00
// Prelude and Fugue in C minor BWV 847 — Johann Sebastian Bach
// 96 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/34280; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 33 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(96/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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.

// other · piano
const piano = note("<A B C@4 D E F G H I@5 J K L M N@4 O P Q@4 R S@2>".pickRestart({
  A: "~ c5@2 b4@2 c5@2 ~@2 g4@2 ~@2 ab4@2 ~@2 c5@2 b4@2 c5@2 ~@2 d5@2 ~@2 g4@2 ~",
  B: "~ c5 b4 c5 ~ d5 ~ f4 g4 ab4@4 g4 f4 eb4",
  C: "[c5@2 b4@2 a4@2 ~ g4@2 f4@2 eb4@2 d4@2 c4@2 ~@2 eb5@2 ~@2 d5@2 ~@2 c5@2 ~@2 bb4@2 ~@2 a4@4 bb4@2 ~@2 c5@2 ~@2 gb4@4 g4@4 a4@4 gb4@4 g4@8 ~@2 c4@2 d4@2 eb4@2 f4@2 g4@2 ab4@6 d4@2 eb4@2 f4@2 g4@2 a4@2 bb4@6 ~ eb4@2 f4@2 g4@2 ab4@2 g4@2 f4@2 eb4@2 d4@2 ~@2 c5@2 b4@2]/4",
  D: "c5@4 ~@6 f5@2 eb5 ~ d5 ~", E: "~@2 ab4@2 g4@2 f4 ~ g4 ~ f4 eb4 f4 ~ d4 ~",
  F: "g4@8 ~@4 b4@2 ~@2 c5@2 ~@3 c5@2 b4@2 c5@2 ~@2 g4@2 ~", G: "~ ab4@8 ~@4 a4@4 bb4@4 bb4@2 a4@2 bb4@4 f4@3",
  H: "~ g4@8 ~@4 g4@4 ab4@4 ab4@4 g4@4 f4@3",
  I: "[~@5 ab3@4 bb3@4 c4@4 ~@4 ab3@2 g3@2 ~ ab3@4 f3@4 bb3@4 c4@4 bb3@4 ab3@4 bb3@4 g3@4 f3@4 eb3@4 f3@4 ~ db4@4 c4@4 bb3@4 c4@4 ab3@4 g3@4 f3@4 g3@4 g4@2 gb4@2 g4@2 ~@2 c4@2 ~@2 eb4@4 g4@2 gb4@2 g4@2 ~@2 a4@2 ~@2 d4@4 g4@2 gb4@2 g4@2 ~@2 a4@2 ~@2 c4@2 d4@2 eb4@8 ~]/5",
  J: "d4 c4 bb3@2 ~@3 d4 e4 gb4 g4 a4 bb4@3 e4",
  K: "f4@2 g4@2 ~ a4@2 bb4@2 c5@4 c5@2 gb4@2 g4@2 a4@2 bb4@4 eb4@2 d4@2 eb4@2 ~",
  L: "~ g3@2 ~@2 ab3@2 ~@2 f4@2 eb4@2 f4@4 a3@2 ~@2 bb3@4 g4@2 f4@2 g4@2 ~",
  M: "~ b3@2 ~@2 c4@2 f4@2 eb4@2 ~ d4@2 c4@2 bb3@2 ab3@2 g3@2 f3@4 ab4@4 g4@2",
  N: "[~@2 f4@2 ~@2 eb4@4 d4@4 eb4@4 f4@4 b3@4 c4@4 d4@4 b3@4 c4@8 ~@4 eb4@4 f4@4 ~ f4@2 e4@2 f4@4 c4@4 d4@8 ~@4 d4@4 eb4@4 eb4@2 d4@2 eb4@4 bb3@4 c4@21 d4@2 eb4@2]/4",
  O: "f4 eb4 f4 d4 b3@2 ~@4 b3@2 c4@2 ~@2", P: "~@5 eb4@4 d4@4 ~@8 f4@4 f4@4 ~@3",
  Q: "[~@6 f4@4 eb4@4 ab4@4 g4@4 f4@4 eb4@4 d4@4 eb4@4 f4@4 b3@4 c4@4 d4@4 b3@4 b3@4 c4@4 ~@5 c4@4 f4@2 d4@2 eb4@2 c4@6 b3@4 ~ c4@9 ~@3 eb4@4 ~ f4@9 ~@4 [f4,ab4]@2 ~@2 f4@2]/4", // Fm
  R: "~@4 eb4@2 d4@2 eb4@4 ~ f4@4 [b3,d4]@4 ~@7 [b3,d4]@4", S: "[~@8 [g3,c4]@31 ~@25]/2",
})).s("gm_piano").gain(0.3)

// other · piano
const piano_2 = note("<~@6 A B C@3 D@5 E F@3 G H@3 I@2 J K L@5>".pickRestart({
  A: "~@2 c4 b3 c4 ~ g3 ~ ab3 ~ c4 b3 c4 ~ d4 ~", B: "g3 ~ c4 b3 c4 ~ d4 ~ f3 g3 ab3@4 g3 f3",
  C: "[eb3@2 c4@2 b3@2 a3@2 g3@2 f3@2 eb3@2 d3@2 c3@2 ~ d3@2 eb3@2 d3@2 c3@2 bb2@2 ab2@2 g2@2 f2@2 bb3@2 ab3@2 g3@2 f3@2 eb3@2 d3@2 c3@2 bb2@2 c3@2 d3@2 c3@2 bb2@2 ab2@2 g2@2 f2@2 eb2@2 ab3@2 g3@2 f3@2 eb3@2 db3@2 c3@2 bb2@2 ab2@2 ~@2 c4@4 bb3@2 ~@2 ab3@2 ~]/3",
  D: "[~ g3@4 f3@4 g3@4 ab3@4 d3@4 eb3@4 ~ f3@4 d3@4 c3@4 ab3@4 g3@4 f3@4 g3@4 eb3@4 d3@4 c3@4 d3@4 ~ bb3@4 ab3@4 g3@4 ab3@4 f3@4 eb3@4 d3@4 eb3@4 ~@16 c3@4 bb2@2 ~@2 a2@2 ~@6 eb3@4 d3@2 ~@2 c3@2 ~@2 d3@2 ~@2 c3@2 ~ bb2@2 c3@2 ~@2]/5",
  E: "d3 ~ g2@2 bb3 a3 bb3 ~ d3 ~ eb3 ~ c4 bb3 c4 ~",
  F: "[e3@2 ~@3 f3@2 ~@2 d4@2 c4@2 d4@2 ~@2 gb3@2 ~@2 g3@8 ~@2 g2@2 a2@2 b2@2 c3@2 d3@2 eb3@6 a2@2 bb2@2 c3@2 d3@2 eb3@2 f3@4 f3@2 b2@2 c3@2 d3@2 eb3@2 ~@11 e3@2 ~@2 f3@2 ~@2 f2@4 eb2@2]/3",
  G: "~ d2 ~@3 ab2@2 g2 ~ f2 ~ g2 ~ f2 eb2 f2",
  H: "[~@2 g2@2 ~@2 c3@2 d3@2 eb3@2 d3@2 c3@2 bb2@2 ab2@2 g2@2 f2@2 ~ bb3@2 ab3@2 g3@2 f3@2 eb3@2 d3@2 c3@2 bb2@2 c3@2 d3@2 c3@2 bb2@2 ab2@2 g2@2 f2@2 eb2@2 ab3@2 g3@2 f3@2 eb3@2 d3@2 c3@2 bb2@2 ab2@2 bb2@2 ~ c3@2 bb2@2 ab2@2 g2@2 f2@2 eb2@2 d2@2 g3@2 f3@2 eb3@2]/3",
  I: "[d3@2 c3@2 b2@2 a2@2 g2@8 ~@11 g2@2 a2@2 b2@2 c3@2 d3@2 eb3@2 f3@2 g3@2 f3@2 ab3@2 g3@2 f3@2 eb3@2 d3@2 c3@2 b2@4 c3@2 ~]/2",
  J: "b2 c3@2 g2@2 ab2 ~ c3 b2 c3 ~ d3 ~ g2@2 c3", K: "b2 c3 ~ d3 ~ f2 g2 ab2@4 g2 f2 eb2@3",
  L: "[~@7 eb3@4 d3@4 c3@4 g3@4 g2@4 ~ [c2,c3]@107 ~@25]/5", // C
})).s("gm_piano").gain(0.3)

stack(piano, piano_2)

More by Johann Sebastian Bach