Strudelify

bereite dich zion

Johann Sebastian Bach

KeyA minorTempo120 bpm
0:00/0:00
// bereite dich zion — Johann Sebastian Bach
// 120 bpm, 3/8, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/8 at bar 1, 3/8 at bar 2, 2/8 at bar 139, 1/8 at bar 139, ...) are rendered on a constant 3/8 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/36243; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 277 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/1.5)

// 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(`<
  A B C D E F G H I J@2 K@2 L M N O B C D P F G H Q R J@2 S@2 T U V W X Y Z AA AB AC AD AE AF AG@2 AH AI AJ AK AL AM AN
  AO AP AQ AR AS@2 AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH B C BI BJ F BK H I J@2 K@2 L M BL BM BN BO BP BQ@2 BR BS
  BT@2 BU@2 BV BW@3 BX BY BZ CA CB CC CD@3 CE CF CG CH@2 CI CJ CK CL CM@2 CN@2 CO@2 CP CQ CR@2 CS@2 CT@4 CU B C D E F G
  H I J@2 K@2 L M N O B C D P F G H Q R J@2 S@2 T U V W X Y Z AA AB AC AD AE AF AG@2 AH AI AJ AK AL AM AN AO AP AQ AR
  AS@2 AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH B C BI BJ F BK H I J@2 K@2 L M BL BM BN BO BP BQ@2 BR BS BT@2 BU@2
  BV BW@3 BX BY BZ CA CB CC CD@3 CE CF CG CH@2 CI CJ CK CL CM@2 CN@2 CO@2 CP CQ CR@2 CS@2 CT@4 CV
>`.pickRestart({
  A: "~@11 e4@5", B: "a4@5 c5@5 ~ b4 c5 b4 ~ c5, ~@11 [e2,g#4]@5", C: "[a2,a4,c5]@5 [b2,d4,g#4]@5 ~ [c3,e4,a4]@5",
  D: "g4@3 f4@2 e4@3 d4@3 [g2,b3,g4]@5, [d3,a3]@5 [b2,g3]@5 ~@6", // G D5 Em
  E: "[c4,e4] [d4,f4] ~ [c4,e4] [d4,f4] d4@3 c4@3 [a2,e4,c5]@5, c3@5 e3@5 ~@6", // C Dm C Dm Am
  F: "b4@5 c5@3 b4@3 a4@2 g#4@3, [d3,f4]@11 [e3,d4]@5", // Dm E7
  G: "[c3,a4]@5 d3@3 c3@3 b2@2 a2@3, e4, ~@5 [g#4,b4]@5 ~ [a4,c5]@5", // F G#m Am
  H: "[g#2,b4,d5]@5 [a2,c5]@3 [g#2,b4]@3 [a2,a4,c5]@5, e4", // G#dim Am G#m Am
  I: "[e2,c5]@5 b4@3 b4@3 e5@2 d5@3, [e4,g#4]@11 ~@5, ~@5 e3@5 ~ [g#3,b3,e4]@5", // C E
  J: "[c#5@3 e5@2 c#5@3 a4@3 ~@2 g4@3 ~@3 a4@2 d4@3 a4@3 d5@2 c5@3, a3@21 ~@11, e4@11 ~@21, ~@5 a2@5 ~ [c#3,e4]@5 [d3,f4]@5 ~@6 [f3,a3,d4]@5]/2", // C#m Dm
  K: "[b4@3 d5@2 b4@3 g4@3 ~@2 f4@3 ~@3 g4@2 c4@3 g4@3 c5@2 b4@3, g3@21 ~@6 [e3,g3,c4]@5, d4@11 ~@21, ~@5 g2@5 ~ [b2,d4]@5 [c3,e4]@5 ~@11]/2", // C Bm C
  L: "a4@3 g#4@2 a4@3 g#4@3 ~@2 f5@3, c4@11 ~@5, f3@5 e3@5 ~ [d3,a4]@5", // D5
  M: "e5@3 d#5@2 e5@3 d#5@3 e5@2 g#5@3, [c3,a4]@5 [a2,c5]@5 ~ [b2,d5]@5", // F Am Bm
  N: "[c3,a4,e5,a5]@5 [d3,f4,a4,c5]@5 ~ [e3,d4,g#4,b4]@5", O: "[a2,c4,a4]@11 e4@5",
  P: "[c3,c4,e4]@5 d4@3 c4@3 [a2,e4,c5]@5, ~@5 e3@5 ~@6", Q: "e2@5 e3@5 ~ [d#3,f#4,a4,b4]@5, [e4,g#4,b4]@11 ~@5",
  R: "[e3,e4,g#4,b4]@5 ~@3 b4@3 e5@2 d5@3, ~@11 [g#3,b3,e4]@5", // E
  S: "[b4@3 d5@2 b4@3 g4@3 ~@2 f4@3 ~@3 g4@2 c4@5 ~ [b3,d4,g4]@5, g3@21 ~@11, d4@11 ~@5 e4@11 ~@5, ~@5 g2@5 ~ [b2,d4]@5 c3@5 ~@11]/2", // G Bm
  T: "[c4,e4,g4]@5 e3@3 d3@3 e3@2 c3@3, ~@11 c4@5", // C
  U: "[b2,d4,g4]@5 [c3,e4,g4,b4]@5 ~ [f#4,a4] [g4,b4] [f#4,a4] ~ [g4,b4], ~@11 d3@5", // G Cmaj7 F#m G F#m G
  V: "[g2,g4,b4]@5 g3@3 f3@3 g3@2 e3@3, ~@5 [b3,g4]@5 ~ c#4@5", W: "f3@5 [g3,a#4]@5 ~ [a3,c#4,a4]@5, d4@11 ~@5",
  X: "[d3,d4,f4]@5 f3@3 e3@3 f3@2 e3@3, ~@11 d4@5", Y: "[c3,e4,a4]@5 [d3,f4,a4,c5]@5 ~ [e3,g#4,b4]@5",
  Z: "[a4,c5]@5 a4@3 c5@3 b4@2 d5@3, a2@11 ~@5", AA: "c5@3 e5@2 c5@3 a4@3 [e4,g#4]@2 b4@3, ~@11 e2@5",
  AB: "[e4,a4]@3 c5@2 e5@3 d5@3 [e4,c5]@2 b4@3, a2@5 ~@6 a2@5", // A5 C
  AC: "d3@5 [f3,d5]@5 ~ [f4,b4] [g4,c5] [f4,b4] ~ [g4,c5], a4@11 g3@5", // Dm Fdim C5 Fdim C5
  AD: "[e4,c5]@3 g4@2 e4@3 g4@3 [a4,c5]@2 e5@3, c3@5 ~@6 a2@5", // C Am
  AE: "[a4,b4,d5]@3 f5@2 [c5,e5]@3 [b4,d5]@3 [a4,c5]@2 [g#4,b4]@3, d3@5 ~@6 e3@5", // Bm7 C Bm Am G#m
  AF: "f3@3 [e3,g4]@2 [d3,f4]@3 [c3,e4]@3 [b2,d4]@2 [a2,c4]@3, a4", // Em Dm C Bm Am
  AG: "[[g#2,b3,e4]@5 [e2,e4,g#4]@5 ~ [a2,e4]@5 ~@3 f#4@2 g#4@3 ~@3 [g#2,e4,d5]@5, ~@11 a4@8 ~@5 b4@8, ~@16 [e2,e4]@5 e3@5 ~@6]/2", // E A5 E7 E
  AH: "[a2,e4,a4,c#5]@5 e5@5 ~ [c#3,a3,e4,g4]@5", // A A7
  AI: "f4 g4 ~ f4 g4 e4@3 d4@3 [d3,a3,f4,c5]@5, a3@11 ~@5, [d3,d4]@5 f3@5 ~@6", // Dm7 D
  AJ: "[g3,f4,b4]@5 d5@5 ~ [b2,g3,d4,f4]@5", AK: "e4 f4 ~ e4 f4 d4@3 c4@3 [c3,g3,e4]@5, g3@11 ~@5, [c3,c4]@5 e3@5 ~@6",
  AL: "[f3,d5]@5 [e3,c5]@5 ~ [d3,e4,g#4,b4]@5, a4@11 ~@5", AM: "[c3,e4,g4,e5]@5 [f3,c4,a4]@5 ~ [d3,f4,b4]@5",
  AN: "e3@5 c5@3 b4@3 a4@2 g#4@3, e4, ~@5 d3@5 ~ e3@5", AO: "[f2,c4,a4]@5 f3@3 e3@3 d3@2 c3@3",
  AP: "[a#2,f3]@5 ~@3 f4@3 a#4@2 a4@3, d4 ~", AQ: "g4@3 a#4@2 g4@3 e4@3 a#3@2 d4@3, [e2,e3,d4]@5 ~@11",
  AR: "c#4@3 e4@2 a3@3 c#4@3 e4@2 g4@3, [a2,e3]@5 ~@11", // A5
  AS: "[f4@3 a4@2 f4@3 d4@3 a3@2 c4@3 b3@3 d4@2 g#2@3 f#2@3 g#2@2 e2@3, [d2,d3,a3]@5 ~@6 d3@11 ~@10, ~@11 f4@5 e4@5 f4@5 ~ [e4,b4]@5]/2", // D5 E5
  AT: "b4@5 ~@3 b2@3 c#3@2 a2@3, e4@11 [a3,e4,g4]@5, a2 ~, ~@5 a4@5 ~@6", // A7
  AU: "[d3,f#4]@5 f#2@3 e2@3 f#2@2 d2@3, [a3,d4]@11 [d4,a4,c5]@5, ~@5 a4@5 ~@6", // D D5 D7
  AV: "[a4,c5]@5 ~@3 a2@3 b2@2 g2@3, d4@11 [d4,f4]@5, g2 ~, ~@5 [g4,b4]@5 ~@6", // Am Dm G
  AW: "c3@5 e2@3 d2@3 e2@2 c2@3, [c4,e4]@11 [e4,g4]@5", // C Em
  AX: "[f2,g4]@5 f3@3 e3@3 f3@2 d3@3, c4@11 ~@5, ~@5 f4@5 ~ [a4,d5]@5", // Fsus2 D5
  AY: "[e3,c#5]@5 [c#3,e5]@5 ~ [a2,a3,c#4,g4]@5, g4@11 ~@5", AZ: "f4@3 a4@2 f4@3 d4@3 a3@2 d4@3, [d3,a3]@5 d2@5 ~ f2@5",
  BA: "e4@3 g4@2 e4@3 c#4@3 a3@2 c#4@3, a2@5 ~@6 a2@5", BB: "d4@3 f4@2 a3@3 d4@3 f4@2 a4@3, [d3,a3]@5 ~@6 [d2,d4]@5",
  BC: "b4@3 d5@2 b4@3 g4@3 d4@2 f4@3, [g2,d4]@5 ~@6 [b2,g3]@5", // G5 Em
  BD: "e4@3 g4@2 c4@3 e4@3 g4@2 a#4@3, [c3,g3]@5 ~@6 [c2,e5]@5", // C5 C
  BE: "a4@3 g#4@2 a4@3 g#4@3 a4@2 f5@3, [f2,d5]@5 [e3,c5]@5 ~ [d3,b4]@5", // Dm C G
  BF: "e5@3 d#5@2 e5@3 d#5@3 e5@2 g#5@3, [c3,a4]@5 ~@6 [b2,d5]@5", BG: "[c3,e5,a5]@5 [d3,f3,a3,c4]@5 ~ [e3,b3]@5",
  BH: "[a2,a3]@11 e4@5", BI: "g4@3 f4@2 e4@3 d4@3 g2@5, [d3,a3]@5 b3@11, ~@5 g3@5 ~ g4@3 ~@2",
  BJ: "e4 f4 ~ e4 f4 d4@3 c4@3 [a2,e4,c5]@5, [c3,c4]@5 e3@5 ~@6", // Am C
  BK: "[c3,a4]@5 d3@3 c3@3 b2@2 a2@3, e4, ~@5 [g#4,b4]@5 ~ c5@5", // F G#m
  BL: "[c3,e5,a5]@5 [d3,a3,c4]@5 ~ [g#3,b3] [a3,c4] [g#3,b3] ~ [a3,c4], ~@11 e3@5", // Am D7 G#m Am G#m Am
  BM: "a2@3 c3@2 e3@3 ~@3 e3@2 c3@3, a3!2", BN: "a2@11 ~@5", BO: "~@5 e3@3 d3@3 c3@2 b2@3, [e4,g4]",
  BP: "a2@3 b2@2 c3@3 b2@3 a2@2 g2@3, [c4,g4]@5 d4@11, ~@5 f#4@5 ~ g4@5", // C5
  BQ: "[f#2@3 a2@2 d3@3 a2@3 f#2@2 d2@3 g2@3 b2@2 d3@3 b2@3 g2@2 d2@3, [d4,a4]@11 d4@21, ~ b4]/2", // D5
  BR: "f#2@3 a2@2 d3@3 c3@3 b2@2 a2@3, [d4,a4]@11 [f#4,a4]@5", // D5 F#m
  BS: "b2@3 e3@2 d3@3 c3@3 b2@2 a2@3, [f4,a4]@5 e4@11, ~@5 g#4@5 ~ a4@5", // F
  BT: "[g#2@3 b2@2 e3@3 b2@3 g#2@2 e2@3 a2@3 c3@2 e3@3 c3@3 a2@2 e2@3, [e4,b4]@11 e4@21, ~ c5]/2", // E5
  BU: "[g#2@3 b2@2 e3@3 d3@3 c3@2 b2@3 c3@3 e3@2 d3@3 c3@3 b2@2 a2@3, e4, b4@16 a4@5 b4@5 ~ c5@5]/2",
  BV: "[d#3,f#4,b4]@5 a4@5 ~ [e3,e4,g4]@5", // B Em
  BW: "[a3@3 g3@2 a3@3 b3@3 c4@2 a3@3 b3@3 c4@2 ~@3 [a3,f#4]@3 [g3,b4]@2 [f#3,a4]@3 g4@3 b4@2 g4@3 e4@3 d#4@2 f#4@3, f#4@21 ~@11 e3@5 g3@5 ~ [f#3,a3]@5, c4@11 e4@5 d#4@5 b3@21 ~@6]/3", // D G F#m
  BX: "e4@3 g4@2 f#4@3 a4@3 g4@2 d5@3, g3@5 b3@11, ~@5 d#3@5 ~ e3@5",
  BY: "e5@3 d5@2 c5@3 b4@3 a4@2 g#4@3, [c3,e3]@5 d3@5 ~ e3@5", // C
  BZ: "a4@3 e4@2 c4@3 e4@3 [f#3,a4]@2 [e3,g4]@3, a2@5 ~@3 a3@5 ~@3", // F#m Em
  CA: "f#4@3 a4@2 g4@3 d4@3 c#4@2 e4@3, a3@11 ~@5, d3@5 f#3@5 ~ [e3,g3]@5", // Em
  CB: "d4@3 f#4@2 e4@3 g4@3 f#4@2 a4@3, a3, f#3@5 c#3@5 ~ d3@5",
  CC: "d5@3 c5@2 b4@3 a4@3 g4@2 f#4@3, [b2,d3]@5 [c3,e3]@5 ~ [d3,a3]@5", // Bm C D5
  CD: "[g4@3 d4@2 b3@3 d4@3 e2@5 a2@5 f#4@3 g4@3 c3@5 ~@3 g4@2 f#4@3 e4@3 d#4@2 f#4@3, [g2,g3]@5 f#2@5 ~ g4@10 b2@5 ~ a4@8 ~@13, ~@32 b2@5 d#3@5 ~ b2@5]/3", // G
  CE: "[e3,e4]@5 [a2,c4,g4]@5 ~ f#4 g4 f#4 ~ g4, ~@11 [b2,a3]@5", CF: "[e3,g3]@3 f#3@2 g3@3 a3@3 ~@2 a3@3, e4@11 b3@5",
  CG: "[g3,e4]@5 [e3,g4]@5 ~ f#4 g4 f#4 ~ g4, ~@11 [b2,b3,d#4]@5", // C Em B
  CH: "[[e3,b3,e4,g4]@5 [f#3,a3,d#4]@5 ~ e4@5 d4@3 c4@2 b3@3 a3@3 [f#3,d4]@3 ~@2, ~@11 g3@11 ~@10, ~@16 a2@5 [d3,f#3]@5 ~ d2@5]/2", // Em D#dim D
  CI: "[g2,b3]@5 [b2,g3]@5 ~ [e3,b3,g4]@5, d3@11 ~@5", CJ: "f#4@5 g4@3 f#4@3 e4@2 d#4@3, [a2,c4]@11 [b2,a3,b3]@5",
  CK: "[g2,e4]@5 a2@3 g2@3 f#2@2 e2@3, b3, ~@5 [d#4,f#4]@5 ~ [e4,g4]@5", // C D#m Em
  CL: "[d#2,f#4,a4]@5 g4@3 f#4@3 [e3,b3,g4]@5, b3@11 ~@5, ~@5 e2@5 ~@6", // D#dim Em
  CM: "[[b2,b3]@5 ~@3 f#5@3 b5@2 a5@3 g#5@3 b5@2 g#5@3 e5@3 b4@2 d5@3, [d#4,f#4]@8 ~@3 d#3@5 e3@5 ~@11, ~@5 b3@16 ~@11]/2", // B D#m
  CN: "[c5@3 e5@2 a4@3 e5@3 a5@2 g5@3 f#5@3 a5@2 f#5@3 d5@3 a4@2 c5@3, ~@5 a3@16 ~@11, ~@11 c3@5 d3@5 ~@11]/2",
  CO: "[b4@3 d5@2 g4@3 d5@3 g5@2 f#5@3 e5@3 g5@2 e5@3 c5@3 g4@2 b4@3, ~@5 g3@16 ~@11, ~@5 b2@5 ~ g2@5 c3@5 ~@11]/2",
  CP: "a4@3 c5@2 f#4@3 a4@3 [a4,c5,f#5]@2 e5@3, ~@5 a2@5 ~ f#2@5", // F#dim
  CQ: "[a4,d#5]@3 f#5@2 d#5@3 b4@3 [d#4,f#4]@2 a4@3, b2@5 ~@11", // Adim D#m
  CR: "[[e4,g4]@3 b4@2 e4@3 b4@3 e5@2 d5@3 c#5@3 e5@2 c#5@3 a4@3 [c#4,e4]@2 g4@3, ~@5 e3@16 ~@11, ~@5 g2@5 ~ e2@5 a2@5 ~@11]/2", // Em C#m
  CS: "[f4@3 a4@2 d4@3 a4@3 d5@2 c5@3 b4@3 d5@2 b4@3 g4@3 d4@2 g4@3, d4@5 d2@5 ~ d3@11 ~@10, ~@11 f4@5 f4@5 e3@5 ~ [f3,b3]@5]/2", // Fdim
  CT: "[[e3,g3]@3 g3@2 f3@3 e3@3 d3@2 c3@3 a4@3 g4@2 [f4,d5]@3 [g4,e5]@3 a4@2 b4@3 g3@5 [f3,b4]@5 ~ e3@5 [a3,e4]@5 [f3,a3,d4]@5 ~ b4 c5 b4 ~ c5, ~@5 [e4,g4]@5 ~ c5@11 ~@5 f5@11 ~@5 c5@11 ~@10, ~@16 f3@5 e3@5 ~ d3@5 g4@16 ~@11 [g3,f4]@5]/4", // Em Dm C Fdim A5 Dm Em G7
  CU: "[c3,e4,c5]@11 e4@5", CV: "[c3,e4,c5]@11 ~@5",
})).s("gm_piano").gain(0.3)

stack(piano)

More by Johann Sebastian Bach