Strudelify

Magnificat in E-flat major BWV 243a

J. S. Bach

KeyE♭ majorTempo60 bpm
0:00/0:00
// Magnificat in E-flat major BWV 243a — J. S. Bach
// 60 bpm, 3/8, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 15 church organ (copy of ch 12 cello)
// note: Transcription provider: pdmx. https://musescore.com/score/2277871; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 92 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(60/1.5)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · violin
const violin = note(`<
  A B C D E F G H I J K L M ~@3 I J K L A B N O P Q R S I T U V W X Y Z AA AB AC AD ~@10 AE AF AG AH AI AJ AK AL AM ~@10
  AN E F G H I AO AP AD ~@2 A B C D E F G H I J K AQ
>`.pickRestart({
  A: "bb3@5 eb4@5 ~ g4@5", B: "ab4@3 f4@2 g4@5 ~@6", C: "ab4@5 g4@5 ~ c5@5", D: "f4@5 bb4@5 ~@6",
  E: "bb3@5 eb4@3 f4@3 g4@2 ab4@3", F: "bb4@5 ab4@5 ~@6", G: "c4@5 f4@5 ~ a4@5", H: "c5@5 bb4@5 ~@6",
  I: "f4@5 bb4@3 c5@3 d5@2 eb5@3", J: "f5@3 d5@2 bb4@3 g4@3 ab4@2 f4@3", K: "g4@3 ab4@2 f4@8 g4@3",
  L: "g4@3 g4@2 g4@3 eb4@3 eb4@2 bb3@3", M: "bb3@11 ~@5", N: "ab4@5 f4@5 ~ bb4@5", O: "eb4@5 f4@5 ~ f4@5",
  P: "f4@5 bb4@5 ~ d5@5", Q: "eb5@3 c5@2 d5@5 ~@6", R: "c5@5 d5@5 ~ f5@5", S: "f4@5 bb4@5 ~ f4@5",
  T: "f5@3 d5@2 eb5@5 ~@6", U: "g4@5 c5@5 ~ c5@5", V: "c5@5 f5@5 ~@6", W: "c4@5 f4@5 ~ f4@5", X: "f4@5 f4@5 ~ g4@5",
  Y: "g4@5 f4@5 ~ f4@5", Z: "f4@3 d4@2 d4@3 bb3@3 bb3@2 bb3@3", AA: "bb3@3 g4@2 g4@3 eb4@3 eb4@2 c4@3", AB: "c4@5 ~@11",
  AC: "~@3 d5@2 d5@3 b4@3 b4@2 g4@3", AD: "g4@5 ~@11", AE: "g3@5 c4@5 ~ eb4@5", AF: "g4@5 f4@5 ~@6",
  AG: "a3@5 d4@5 ~ gb4@5", AH: "a4@5 g4@5 ~@6", AI: "d4@5 g4@5 ~ b4@5", AJ: "d5@5 g4@3 eb4@3 f4@2 d4@3",
  AK: "eb4@3 f4@2 d4@8 eb4@3", AL: "eb4@3 eb4@2 eb4@3 c4@3 c4@2 g3@3", AM: "g3@5 ~@11",
  AN: "~@3 f4@2 f4@3 d4@3 d4@2 bb3@3", AO: "ab4@5 g4@5 ~@3 ab4@3", AP: "bb4@3 c5@2 bb4@5 ~ ab4@5", AQ: "g4",
})).s("gm_violin").gain(0.25)

// other · viola
const viola = note(`<
  A B C D A B E F G H I J K ~@3 G H I J A B L M N O P Q R S T U V W X Y Z AA AB AC ~@10 AD AE AF AG AH AI AJ AK AL ~@10
  AM A B E F G AN AO AP ~@2 A B C D A B E F G H I AQ
>`.pickRestart({
  A: "g3@5 bb3@5 ~ eb4@5", B: "eb4@5 eb4@5 ~@6", C: "d4@5 eb4@5 ~ eb4@5", D: "bb3@5 f4@5 ~@6", E: "f4@5 c4@5 ~ f4@5",
  F: "f4@5 f4@5 ~@6", G: "bb4@5 f4@5 ~ bb4@5", H: "d4@5 eb4@5 ~ ab4@5", I: "c5@5 bb4@5 ~ bb3@5",
  J: "bb3@3 eb4@2 eb4@3 bb3@3 bb3@2 g3@3", K: "g3@11 ~@5", L: "eb4@5 bb3@5 ~ f4@5", M: "g4@5 bb4@5 ~ eb4@5",
  N: "d4@5 f4@5 ~ bb4@5", O: "bb4@5 bb4@5 ~@6", P: "a4@5 bb4@5 ~ f4@5", Q: "f4@5 eb4@5 ~ c4@5", R: "bb3@5 f4@5 ~ bb4@5",
  S: "d4@5 bb4@5 ~@6", T: "e4@5 g4@5 ~ g4@5", U: "f4@5 c5@5 ~@6", V: "a3@5 c4@5 ~ eb4@5", W: "c5@5 bb4@5 ~ eb4@5",
  X: "bb3@5 d4@5 ~ c4@5", Y: "d4@3 bb3@2 bb3@3 f3@3 f3@2 eb3@3", Z: "eb3@3 eb4@2 eb4@3 bb3@3 bb3@2 ab3@3",
  AA: "ab3@5 ~@11", AB: "~@3 g4@2 ab4@3 f4@3 f4@2 d4@3", AC: "d4@5 ~@11", AD: "eb3@5 g3@5 ~ c4@5", AE: "e4@5 c4@5 ~@6",
  AF: "d4@5 a3@5 ~ d4@5", AG: "eb4@5 d4@5 ~@6", AH: "b3@5 d4@5 ~ g4@5", AI: "g4@5 c5@5 ~ f4@5", AJ: "c4@5 g3@11",
  AK: "g3@3 c4@2 c4@3 g3@3 g3@2 eb3@3", AL: "eb3@5 ~@11", AM: "~@3 d4@2 d4@3 bb3@3 bb3@2 f3@3",
  AN: "bb4@5 bb3@5 ~@3 f4@3", AO: "eb4@3 f4@2 g4@5 ~ bb3@5", AP: "eb4@5 ~@11", AQ: "bb3",
})).s("gm_viola").gain(0.25)

// other · cello
const cello = note(`<
  A B C D E F G H I J K L A B M N I J K L A B O P Q H R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP
  AQ AR AS AT AU AV AW AX AY AZ BA BB E F C BC BD BE BC BF F G H I J BG BH BI BJ A B C D E F G H I J K BK
>`.pickRestart({
  A: "eb3@11 ~@5", B: "~@3 eb4 d4 eb4@3 bb3@3 g3@2 eb3@3", C: "f3@5 g3@5 ~ ab3@5", D: "bb3@5 ab3@5 ~@6", E: "g3@11 ~@5",
  F: "~@3 ab3 g3 ab3@3 eb3@3 c3@2 ab2@3", G: "a3@11 ~@5", H: "~@3 bb3 a3 bb3@3 f3@3 d3@2 bb2@3", I: "d3@11 ~@5",
  J: "bb2@5 eb3@5 ~ c3@5", K: "ab2@5 bb2@5 ~ bb2@5", L: "eb2@5 g2@5 ~ bb2@5", M: "ab3@5 f3@5 ~ bb3@5",
  N: "eb3@3 bb3 a3 bb3@3 f3@3 d3@2 bb2@3", O: "ab3@5 bb3@5 ~ bb2@5", P: "eb3@5 bb2@5 ~ c3@5", Q: "d3@5 bb2@5 ~@6",
  R: "c3@5 f2@5 ~ eb3@5", S: "d3@5 eb3@5 ~ f3@5", T: "d3@5 f3@5 ~ d3@5", U: "bb2@5 eb3@5 ~@6",
  V: "~@3 c4 bb3 c4@3 g3@3 e3@2 c3@3", W: "f3@5 f2@5 ~@6", X: "f3@5 eb3@3 d3@3 c3@2 bb2@3", Y: "a2@5 bb2@5 ~ g2@5",
  Z: "eb2@5 f2@5 ~ f3@5", AA: "bb2@3 c3@2 d3@3 eb3@3 f3@2 g3@3", AB: "ab3@3 f3@2 g3@5 ~@6",
  AC: "ab3@5 g3@3 f3@3 eb3@2 d3@3", AD: "c3@3 a2@2 b2@5 ~@6", AE: "g2@5 a2@5 ~ b2@5", AF: "c3@5 c4@5 ~ eb3@5",
  AG: "f3@5 ab2@5 ~ f2@5", AH: "bb2@5 bb3@5 ~ d3@5", AI: "eb3@5 g2@5 ~ eb2@5", AJ: "ab2@5 ab3@5 ~ f3@5",
  AK: "d3@5 eb3@5 ~ f3@3 ~@2", AL: "g2@3 g3@2 f3@3 d3@3 eb3@2 c3@3", AM: "b2@5 ~@3 b2@3 c3@2 d3@3",
  AN: "eb3@3 f3@2 g3@3 eb3@3 ab3@5", AO: "f3@5 g3@5 ~ g2@5", AP: "c3@11 ~@5", AQ: "~@3 f3 e3 f3@3 c3@3 a2@2 f2@3",
  AR: "gb3@11 ~@5", AS: "~@3 g3 gb3 g3@3 d3@3 b2@2 g2@3", AT: "f3@11 ~@5", AU: "b2@5 c3@5 ~ ab2@5",
  AV: "f2@5 g2@5 ~ g2@5", AW: "c2@5 eb2@5 ~ g2@5", AX: "c3@3 d3@2 eb3@3 f3@3 g3@2 ab3@3", AY: "bb3@3 g3@2 ab3@5 ~@6",
  AZ: "db3@5 c3@5 ~ eb3@5", BA: "ab2@11 ~@5", BB: "~@3 ab3 g3 ab3@3 f3@3 d3@2 bb2@3", BC: "bb3@5 bb2@5 ~ ab2@5",
  BD: "g2@3 bb2@2 c3@3 d3@3 eb3@2 f3@3", BE: "g3@3 ab3@2 d3@5 ~ eb3@5", BF: "g2@11 ~@5", BG: "ab2@5 bb2@5 ~ bb3@5",
  BH: "c4@5 g3@5 ~ ab3@5", BI: "d3@5 bb2@5 ~ eb3@2 f3@3", BJ: "g3@3 ab3@2 bb3@5 ~ bb2@5", BK: "eb2",
})).s("gm_cello").gain(0.25)

stack(violin, viola, cello)

More by J. S. Bach