Strudelify

Harpsichord Concerto No.1 in D minor BWV 1052

J. S. Bach

KeyB♭ majorTempo33 bpm
0:00/0:00
// Harpsichord Concerto No.1 in D minor BWV 1052 — J. S. Bach
// 33 bpm, 3/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/6001078; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 87 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(33/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · violin · "Violine"
const violin = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V W X Y V Z AA AB AC AB AD AE AF AG AH AI AJ AK AL AM AB AN V AO AP AQ AJ AR
  V AB AS AT AU AV AW V AX AY Q N O P Q AJ AZ T U V AS BA BB BC BD A B C D E F G H I J K L M
>`.pickRestart({
  A: "g4!2 bb4!2 d5!2", B: "eb4 d4!2 eb4 ~@2", C: "a4!2 c5!2 eb5!2", D: "gb4!2 a4!2 c5!2", E: "d4!2 gb4!2 a4!2",
  F: "bb3 a3 bb3 bb4 gb4 g4", G: "c4 bb3 c4 bb4 gb4 g4", H: "d4 c4 d4 bb4 gb4 g4", I: "eb4@2 ~ g4 ab4 f4",
  J: "b3!2 d4!2 f4!2", K: "ab3@2 ~ d4 eb4 c4", L: "gb4 g4 d4@2 d4@2", M: "g3 ~@2", N: "bb4@2 g4@2 d4 c4", O: "bb3 ~@2",
  P: "gb4@2 gb4 a4 c4 eb4", Q: "a3 ~@2", R: "gb4 ~@2", S: "d4 g4 bb4", T: "a4", U: "a4 c5 a4", V: "g4 ~@2",
  W: "f4 d4 b3", X: "f4@2 ~ d4 g4!2", Y: "ab4!2 g4@4", Z: "g4 eb4 c4", AA: "db5 a4 g4", AB: "f4 ~@2",
  AC: "f5@2 d5@2 a4 g4", AD: "db5@2 db5 e5 g4 bb4", AE: "e4 ~@2", AF: "db5 ~@2", AG: "a4 d4 f4", AH: "e4",
  AI: "e4 g4 e4", AJ: "d4 ~@2", AK: "c5 a4 gb4", AL: "c4@2 ~ c5 bb4 a4", AM: "bb4 f4!2", AN: "d5 b4 g4",
  AO: "eb5@2 c5@2 g4 f4", AP: "eb4 ~@2", AQ: "b4@2 b4 d5 f4 ab4", AR: "ab4 f4 d4", AS: "d5", AT: "c5 ~@2",
  AU: "bb4 g4 e4", AV: "bb4@2 ~ g4 f4!2", AW: "f4 eb4 g4@2 g4@2", AX: "c5 a4 g4", AY: "eb4 c4 a3",
  AZ: "d4@2 g4@2 a4 bb4", BA: "d5@2 ~ f5 eb5 d5", BB: "c5 g4 g4@2 ~@2", BC: "e5 d5!2", BD: "d5 ~@2",
})).s("gm_violin").gain(0.2)

// other · viola · "Bratsche"
const viola = note(`<
  A B C D E F G H I J K L M N M O P Q R S T U V W X Y Z AA P AB P AC AD U AE AF AG P AH AI AJ P AK P AL Q AM U AN AO Q
  AP Q AQ AR AS Y AT AU AV N M O P AV AW S AX U AY AZ BA BB BC A B C D E F G H I J K L M
>`.pickRestart({
  A: "g4!2 bb4!2 d5!2", B: "eb4 d4!2 eb4 ~@2", C: "a4!2 c5!2 eb5!2", D: "gb4!2 a4!2 c5!2", E: "d4!2 gb4!2 a4!2",
  F: "bb3 a3 bb3 bb4 gb4 g4", G: "c4 bb3 c4 bb4 gb4 g4", H: "d4 c4 d4 bb4 gb4 g4", I: "eb4@2 ~ g4 ab4 f4",
  J: "b3!2 d4!2 f4!2", K: "ab3@2 ~ d4 eb4 c4", L: "gb4 g4 d4@2 d3@2", M: "g3 ~@2", N: "g4@2 d4@2 bb3 a3",
  O: "c4 eb4 a3", P: "d4 ~@2", Q: "c4 ~@2", R: "bb3 d4 g4", S: "g4", T: "gb4 a3 d4", U: "g4 ~@2", V: "d4 b3 ab3",
  W: "d4@2 ~ f4 eb4!2", X: "f4 c4 g4 eb4 f4 d4", Y: "eb4 ~@2", Z: "eb4 c4 g3", AA: "e4@2 e4@2 e4 db4",
  AB: "d5@2 a4@2 f4 e4", AC: "g4 bb4 e4", AD: "a4 ~@2", AE: "f4 a3 d4", AF: "d4", AG: "db4 e4 a3", AH: "a4 gb4 eb4",
  AI: "a3@2 ~ g4 f4 eb4", AJ: "d4 c4 d4 eb4 f4 c4", AK: "g4 d4 b3", AL: "c5@2 g4@2 eb4 d4", AM: "f4 ab4 d4",
  AN: "d4 b3 g3", AO: "eb3 ~@2", AP: "f4", AQ: "g4 e4 db4", AR: "g4@2 ~ bb4 ab4 bb4", AS: "d4 eb4 b3 c4 d4 f4",
  AT: "a3 eb4 c4", AU: "a3 gb3 d3", AV: "gb4 ~@2", AW: "bb3 c4 bb3 bb4 a4 g4", AX: "gb4 a4 d4", AY: "b3 ab4 f4",
  AZ: "d4@2 ~ b4 c5 g4", BA: "a4 g4 c4@2 ~@2", BB: "db4@2 a3 bb3 c4 d4", BC: "bb3 ~@2",
})).s("gm_viola").gain(0.2)

// bass · contrabass · "Kontrabass"
const bass = note(`<
  A B C D E F G H I J K L M A B C D E F G H I J K N O P Q R S T U V Q W X Y Z AA AB AC AD J AE P AF AG J AH AI AJ AK AL
  U AM AN O AO AA R A B C D E F G H I J K AP AQ M A B C D E F G H I J K L M
>`.pickRestart({
  A: "g2!2 bb2!2 d3!2", B: "eb2 d2!2 eb2 ~@2", C: "a2!2 c3!2 eb3!2", D: "gb2!2 a2!2 c3!2", E: "d2!2 gb2!2 a2!2",
  F: "bb1 a1 bb1 bb2 gb2 g2", G: "c2 bb1 c2 bb2 gb2 g2", H: "d2 c2 d2 bb2 gb2 g2", I: "eb2@2 ~ g2 ab2 f2",
  J: "b1!2 d2!2 f2!2", K: "ab1@2 ~ d2 eb2 c2", L: "gb2 g2 d2@2 d1@2", M: "g1 ~@2", N: "ab2 f2 g2@2 g1@2", O: "c2 ~@2",
  P: "c2!2 eb2!2 g2!2", Q: "a1!2 db2!2 e2!2", R: "d1 ~@2", S: "d2!2 f2!2 a2!2", T: "bb1 a1!2 bb1 ~@2",
  U: "e2!2 g2!2 bb2!2", V: "db2!2 eb2 e2 g2!2", W: "f1 e1 f1 f2 db2 d2", X: "g1 f1 g1 f2 db2 d2",
  Y: "a1 g1 a1 f2 db2 d2", Z: "bb1@2 ~ d2 eb2 c2", AA: "gb1!2 a1!2 c2!2", AB: "eb1@2 ~ a1 bb1 c2",
  AC: "d2 eb2 f2@2 f1@2", AD: "bb1 ~@2", AE: "g1 f1!2 g1 ~@2", AF: "ab1 g1!2 ab1 ~@2", AG: "d2!2 f2!2 ab2!2",
  AH: "g1!2 b1!2 d2!2", AI: "eb2 d2 eb2 eb3 b2 c3", AJ: "f2 eb2 f2 eb3 b2 c3", AK: "g2 f2 g2 eb3 b2 c3",
  AL: "ab2@2 ~ c3 db3 bb2", AM: "db2@2 ~ g2 ab2 f2", AN: "b2 c3 g2@2 g1@2", AO: "a1!2 c2!2 eb2!2",
  AP: "gb2 g2 eb2@2 ~@2", AQ: "db2 d2 d1",
})).s("gm_contrabass").gain(0.2)

// chords · harpsichord · "Cembalo"
const harpsichord = note(`<
  A B C D E F G H I J K L M N O P Q 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 BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV BW B C D E F G H I J K L BX
>`.pickRestart({
  A: "g3!2 bb3!2 d4!2", B: "eb3 d3!2 eb3 ~@2", C: "a3!2 c4!2 eb4!2", D: "gb3!2 a3!2 c4!2", E: "d3!2 gb3!2 a3!2",
  F: "bb2@4 a2@4 bb2@4 bb3 ~@3 gb3@4 g3@4", G: "c3@4 bb2@4 c3@4 bb3 ~@3 gb3@4 g3@4",
  H: "d3@4 c3@4 d3@4 bb3 ~@3 gb3@4 g3@4", I: "eb3@2 ~ g3 ab3 f3", J: "b2!2 d3!2 f3!2", K: "ab2@2 ~ d3 eb3 c3",
  L: "gb3 g3 d3@2 d2@2", M: "[g2,d5]@8 c5@4 bb4@4 [g4,a4] gb4@7", N: "[g3,g4] [g3,gb4] [bb3,gb4] [bb3,g4] d4!2",
  O: "eb3@4 d3@4 [d3,f5]@4 [eb3,eb5]@4 [c5,d5] b4@7, g5 ~@2", P: "[a3,c5] [a3,b4] c4!2 eb4!2, ~ b4 c5",
  Q: "gb3@4 gb3@4 [a3,bb4]@4 [a3,a4]@4 [c4,g4]@4 gb4 a4 c5 eb5, c5@2 ~@3 c4", // Bbmaj7 A C5
  R: "d3@4 d3@4 d5 d5@3 [gb3,c5]@4 [a3,c5]@4 ~@2 bb4 a4, eb5@2 gb3 ~@2 a3, ~@9 eb5 ~@14", // Gbdim Am
  S: "[bb2,g4]@4 ~@2 a4 gb4 bb2@4 bb3 ~@3 gb3@4 g3@4, ~ a2 g4@2 ~@2", // Eb
  T: "eb5@2 d5@2 f5@2 eb5@2 c3@4 bb3 ~@3 gb3@4 g3@4, c3 bb2 eb5@2 ~@2",
  U: "[d3,gb5]@4 g5 gb5 e5 gb5 [gb5,g5] ~@3 bb3 ~@3 gb3@4 e5@2 gb5@2, ~ c3 d3 ~@2 g3, ~@9 gb5@11 ~@4", // D Gmaj7
  V: "g5 d5 eb5 [g3,b4] [ab3,c5] [f3,ab4], eb3 ~@2", W: "b2!2 d3!2 f3!2, f4",
  X: "f4@2 d4@2 eb4@2 g4 f4 [eb3,g4]@2 b4 a4, ab2@2 ~ d3 ~ c3", // Eb
  Y: "[ab3,b4]@4 [f3,c5]@4 [g3,eb5]@8 d5 [d5,eb5] c5@2 d5@4, ~@2 g2", Z: "[c3,c5]@2 g4@2 f4 eb4",
  AA: "d4 c4 [c3,b3]@2 [eb3,b3]@2 [eb3,c4]@2 g3@2 g3@2, c3 ~@5", // Cmaj7 Abm Cm
  AB: "[a2,bb5]@4 bb5 a5 g5 f5 e5@2 g5@2 f5@2 e5@2 d5@2 db5@2 b4@2 a4@2, ~ a2 db3!2 e3!2", // Bbmaj7
  AC: "f5 bb5 a5@6 g5@4 f5@2 e5@2 d5@2 e5@2 db5@4, d2 ~@2",
  AD: "[d3,d5]@4 d5 e5 d5 db5 f3@4 f3@4 a3@4 a3@4, ~ d3 d5@2 ~@2", // D
  AE: "bb2@4 a2@4 [a2,c6]@4 [bb2,bb5]@4 [g5,a5] gb5@7, d6 ~@2", // Am Bb Gsus2
  AF: "g5@2 gb5@2 a5@2 g5@2 [gb5,g5] ~@3 g3@4 bb3@4 bb3@4, e3!2 g3 ~@3, ~@3 g5@5", // Gmaj7
  AG: "db3@2 db3@2 g5 f5 [e3,e5]@2 e5 d5 db5 bb5, g5@2 e3 ~ g3!2", // E
  AH: "bb5 a5 g5 f5 g5@2 bb5@2 bb5 a5 g5 f5 e5@2 g5@2 g5 f5 e5 d5 e5@2 db5@2, a2!2 db3!2 e3!2",
  AI: "[f2,d5]@4 ~@2 e5 f5 [f2,e5]@4 d5@4 db3@4 d3@4, ~@4 e2@4 ~@4 f3 ~@11", // Dm Fmaj7
  AJ: "bb5@2 a5@2 c6@2 bb5@2 g2@4 f3 ~@3 bb5@2 a5@2 g5 gb5 g5 bb5, g2 f2 bb5@2 db3 d3",
  AK: "[a2,db6]@4 d6 db6 b5 db6 [db6,d6] ~@3 f3 ~@3 db3@4 b5@2 db6@2, ~ g2 a2 ~@2 d3, ~@9 db6@11 ~@4", // A Dmaj7
  AL: "d6@2 a5@2 bb5@2 [d3,gb5]@2 [eb3,g5]@2 gb5 eb5, bb2@2 ~@3 c3", // D Eb
  AM: "[c5,d5] d5 ~@2 gb2@4 a2@4 a2@4 c3@4 c3@4, gb2 ~@5, ~ c5@22 ~", // Csus2
  AN: "c5@4 a4@4 bb4 c5 bb4 a4 bb4@2 c5@2 d5 eb5 d5 c5 d5@2 eb5@2, eb2@2 ~ a2 bb2 c3",
  AO: "f5!2 g5 ab5 g5@2 f5@2 eb5@4 d5@4 c5@2 bb4@2 c5@4, d3 eb3 f3@2 f2@2",
  AP: "bb4 f4 g4 d4 eb4 c4 d4 bb3 ab3 g3 ab3 f4, bb2 ~@2", AQ: "b2!2 d3!2 f3!2, a3@2 [g3,f4]",
  AR: "[g3,f4]@2 b3@2 d4@2 f4@2 ab4@2 b4@2 d5@2 f5@2 ab5@2 g5@2 f5 eb5 f5 d5, g2 f2!2 g2 ~@2", // G7
  AS: "[d5,eb5] d5 ~@2 c3@4 eb3@4 eb3@4 g3@4 g3@4, c3 ~@5, ~ eb5@22 ~", // Ebmaj7
  AT: "eb5@2 ~@4 db5 b4 c5 bb4 ab4 g4 ab4@2 e4@2 f4@2 db5@2 c5@2 b4@2, ab2 g2!2 ab2 ~@2, ~ c5@2 ~@9",
  AU: "d3!2 f3!2 ab3!2, [b4,f5]", // Bdim
  AV: "[b4,f5]@2 e5@2 f5@2 ab5@2 f5@2 e5@2 f5 [e5,f5] ab5 g5 f5 e5 f5@2 [f3,db6]@3 c6, b2!2 d3!2 f3 ~", // Bdim Fmaj7 Db
  AW: "b5 c6 b5 c6 [c6,d6] [b5,c6] c6@2 b2@4 b2@4 d3@4 d3@4, g2!2 d6@4", // Csus2 Cmaj7
  AX: "d6@2 c6@2 b5@2 c6@2 c6@2 bb5@2 ab5@2 g5 bb5 [b2,bb5]@4 [c3,ab5]@4, eb2@4 d2@4 eb2@4 eb3 ~@11", // Bmaj7 Fm
  AY: "[f2,ab5]@4 [eb2,c5]@4 eb5 db5 c5@2 db5@2 ab5@2 g5@2 f5@2 e5@2 f5@2, ~@8 f2@4 eb3 ~@3 b2@4 c3@4", // Fm Cm
  AZ: "g4@2 b4 d5 [f2,f5]@4 g2@4 g4@4 [b2,ab4]@4 [c3,g4]@4, g2@4 ~@8 eb3 ~@11", // F E C5
  BA: "g4@2 eb5 d5 c5@2 ab4@2 g4@2 f4@2 e4@2 f4@2 f4@2 db4@2 a3@2 bb3@2, ab2@2 ~ c3 db3 bb2",
  BB: "[a3,bb3] ~@3 e2@4 g2@4 g2@4 bb2@4 bb2@4, e2 ~@5, ~ bb3@23", // Bbmaj7
  BC: "bb3@4 a3 [f3,g3] g3@2 ab3@2 ~@4 c4@2 c4@2 ~@2 f3@4, db2@4 ~ db4@2 ~@2 f4@3, ~@3 g3 ab3 ~", // Fsus2
  BD: "f4@2 ab4@2 gb4@2 g4@2 g4@4 eb5@2 d5@2 c5 [c5,d5] b4@2 c5@4, b3 c4 g3@2 g2@2", // Csus2
  BE: "c5@4 c5 g4 a4 b4 c5 d5 eb5 d5 c5 bb4 a4 bb4 c5 gb4 g4 a4 g4 gb4 e4 d4, c3 ~@2",
  BF: "a2@4 a2@4 gb5 g5 gb5 e5 gb5@2 g5@2 [g5,a5] ~@5 gb5 g5, gb5@2 c3!2 eb3!2, ~@17 g5@5 ~@2", // Gsus2
  BG: "a5@2 eb5@2 c5@2 b4@2 c5@2 eb5@2 gb5@2 g5@2 a5 bb5 a5 g5 a5@2 bb5@2, gb2!2 a2!2 c3!2",
  BH: "c6 bb5 a5 g5 gb5 g5 a5@2 eb5@2 db5@4 d5@2 d5 c6@2 bb5 g5@2 gb5@2, d2@8 ~@12 a5 ~@3",
  BI: "[g3,g5]@4 ~@2 ab5 [gb5,g5] bb3@4 bb3@4 d4@4 d4@4, ~ g3 gb5@2 g5@2", // G Gmaj7
  BJ: "g5@2 g4@2 a4@2 c5 bb4 c5 g4 a4 bb4 c5@2 eb5 d5 eb5@3 d5 c5@2 eb5 g5, eb3@4 d3@4 d3@4 eb3@4 ~@4 b4 ~@3",
  BK: "a3!2 c4!2 eb4!2, c6", BL: "gb3@4 gb3@4 c6 bb5 c6 d6 c6 bb5 a5 g5 [c4,g5]@4 [c4,gb5]@4, c6@2 a3!2 ~@2",
  BM: "gb5 e5 gb5 bb5 a5 g5 gb5 e5 [gb3,eb5]@4 eb5 d5 e5 gb5 e5 gb5 g5@2 [gb5,g5] gb5@2 e5, d3!2 ~ gb3 a3!2", // Ebm Gmaj7
  BN: "bb2@4 a2@4 g5@2 ab5@2 g5@2 f5@2 eb5 d5@3 f5 eb5@3, g5 ~@2, gb5 ~@7 bb2@4 bb3 ~@3 gb3@4 g3@4",
  BO: "c3@4 bb2@4 eb5@2 f5@2 eb5@2 d5@2 c5 b4@3 d5 c5@3, eb5@8 c3@4 bb3 ~@3 gb3@4 g3@4",
  BP: "d3@4 c3@4 c5@2 g5@2 gb5@2 g5 a5 eb5@2 c5@2 bb4 [bb4,c5] a4@2, c5@8 d3@4 bb3 ~@3 gb3@4 g3@4", // Bbsus2
  BQ: "g4@2 gb4@2 g4 [gb4,g4] bb4@2 eb4@2 d4@2 eb4 [d4,eb4] g4@2 c4@2 b3@2 c4 [b3,c4] eb4@2, eb3@2 ~ g3 ab3 f3", // Gmaj7 Ebmaj7 Cmaj7
  BR: "ab3 g3 ab3 d4 f4 eb4 f4 ab4 d4 c4 d4 f4, b2!2 d3!2 f3!2",
  BS: "b3@2 d4@2 f4@2 ab4@2 g4@2 f4@2 eb4 [eb4,f4] d4@2 c4@2 eb4@2 g4@2 b4@2, ab2@2 ~ d3 eb3 c3", // Ebsus2
  BT: "c5 eb5 db5 b4 c5 eb5 ab5 gb5 g5 eb5 db5 d5, gb3 g3 eb3@2 ~@2",
  BU: "bb5@2 ab5@2 gb5@2 g5@2 [d3,c6]@8 c6@3 bb5 a5 g5 a5@2, db3 ~ d2", // D7
  BV: "g5@4 g5 bb5 a5 g5 gb5 eb5 d5 c5 bb4 c5 [c5,d5] c5 [bb4,c5,d5] [g4,bb4] [gb4,g4] [bb3,d4] [c4,d4] [bb3,c4] [c4,d4] bb3, g2 ~@2", // Csus2 Bb Gm Gmaj7 Bb Csus2 Bbsus2 Csus2
  BW: "g3 bb3 d4 g4 bb4 d5 g5@2 bb3@4 bb3@4 d4@4 d4@4, ~ g3 ~@4", BX: "g2 ~@2",
})).s("gm_harpsichord").gain(0.3)

stack(violin, viola, bass, harpsichord)

More by J. S. Bach