Strudelify

Concerto for 2 violins in D minor (Il Largo)

Bach Johann Sebastian

KeyF majorTempo52 bpm
0:00/0:00
// Concerto for 2 violins in D minor (Il Largo) — Bach Johann Sebastian
// 52 bpm, 12/8, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 17 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(52/6)

// 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 · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<A B C D@3 E F G H I J K@3 L M>".pickRestart({
  A: "[f2,c4,f4,a4]@2 f1 [g1,bb3,g4,bb4]@2 g2 [a2,c4,f4,c5]@2 a1 [bb1,f3,d4,d5]@2 bb2", // F Gm F Bb
  B: "e5 c5 [a2,c4,c5] d5!2 [c3,g4,c5,e5] [f2,f4,c5,f5]@2 [a2,a4,c5] [d2,f4,a4,c5]@2 [g2,g4,b4], [bb2,c4,g4]@4 f5@4 ~@8 f4 ~@7, ~@3 [g2,g4]@2 ~@7", // Am C F5 Am Dm7 G C7 G
  C: "[c2,e4,g4,c5]@3 ~ c2@2 [d4,f4,f5]@3 ~@3 [e2,g3,c5,e5]@3 ~ e2@2 [f2,c4,a4,c5]@4 f2 ~, ~ d2 ~@2", // C Dm C F
  D: "[[f2,g3,d5,g5]@2 [e2,g3,e5,g5] [d2,d4,a4,f5]@2 [g2,b3,g4,d5] [c2,g3,g4,c5]@2 bb1 a1@2 [f1,a3,f4] ~ bb4 a1 g1@2 [e1,g3] ~ a4 g1 f1@2 [d1,f3] ~ g4 f1 e1@2 [c1,e4,g4] ~ f5 [bb1,bb3,f4] [e1,g4,bb4,d5]@2 [a1,a4,db5], ~@22 c5@4 ~@8 bb4@4 ~@8 a4@4 ~@8 c5@4 ~@2 d5 ~@7, ~@24 [bb1,bb3,f4]@4 ~@6 e4 ~ [a1,a3,e4]@4 ~@6 d4 ~ [g1,g3,d4]@4 ~@8 [f1,c4,f4]@4 ~@8]/3", // G7 Em Dm G C5 F Em Dm …
  E: "[d2,f4,a4,d5]@2 d1 [e1,e4,g4,g5]@2 e2 [f2,a3,f4,c5]@2 f1 [g1,d4,f4,bb4]@2 g2", // Dm Em F Gm7
  F: "[g2,e4,a4]@2 [f2,a3,f4,a5] [e2,e4,bb4,g5]@2 [a2,db4,a4,e5] [d2,a3,a4,d5]@2 d3 gb2@2 [d2,gb4,c5], ~@22 d4 ~", // A7 F Edim A D5 D7
  G: "[g2,d4,bb4]@2 eb3 g2@2 [eb2,d4,g4] [a2,c4,eb4,f4]@2 f3 a2@2 [f2,a4], ~@10 eb4 ~@11 [eb4,f4] ~", // Gm Ebmaj7 F7 F Ebsus2
  H: "[bb2,d4,f4,bb4]@2 bb1 [c2,c4,eb4,eb5]@2 c3 [d3,bb3,f4,d5]@2 d2 [eb2,g3,bb4,g5]@2 eb3", // Bb Cm Bb Eb
  I: "[eb3,c4,c5,f5]@2 [d3,f3,d5,f5] [c3,c4,g4,eb5]@2 [f2,a3,f4,c5] [bb2,f3,f4,bb4]@2 [d3,bb3,d4,f5] [g2,g4,d5,f5]@2 [c3,g4,c5,e5]", // F7 Dm Cm F Bb5 Bb G7 C
  J: "[f2,f4,c5,f5]@4 f1@2 [g1,g4,bb4]@4 g2@2 [a2,a4,c5,f5]@4 a1@2 [bb1,d4,f4,f5]@4 bb2 ~", // F5 Gm F Bb
  K: "[[bb2,c4,c5,g5]@4 [a2,f4,c5,a5]@2 [g2,g4,bb4,d5]@4 [c2,e4,g4,c5]@2 [f2,c4,f4,c5]@4 g2@2 a2@4 [f2,a3,f4]@2 ~@2 bb5 ~ a2@2 g2@4 [e2,g3,e4]@2 ~@2 a5 ~ g2@2 f2@4 [d2,f3]@2 ~@2 g5@2 f2@2 e2@4 [c2,e4]@2 ~@2 f5@2 [d2,f3,bb4]@2 a4@2 [g4,bb4]@2 [bb3,e4,g4]@2, ~@11 c6@2 ~@4 bb5@2 ~@4 a5@2 ~@4 g5@2 ~ f4@2 ~@2, ~@24 [bb2,bb3,f4]@4 ~@8 [a2,a3,e4]@4 ~@6 d4 ~ [g2,g3,d4]@4 ~@6 c4 ~ [f2,c4,f4]@4 ~@2 c2@6, ~@33 c4@2 ~]/3", // C7 F Gm C F5 F Em Dm …
  L: "[f1,a3,c4,f4]@4 f2 ~ f2@4 f1 ~ f1@4 f2 ~ f2@3 ~ f1 ~", M: "f1 ~",
})).s("gm_string_ensemble_1").gain(0.16)

// other · piano · "A.PIANO 1"
const piano = note("<A B C D E F G H I J K L M E N O P>".pickRestart({
  A: "f3@4 f3@2 [g3,bb3]@4 ~@2 [a3,c4]@4 a3@2 [bb3,d4]@3 ~@3, a3 ~@3", B: "bb3@2 a3 g3 d3 e3 f3@2 a2 d3@2 b2",
  C: "c3@4 c3@2 [d3,f3]@4 ~@2 e3@4 e3@2 [f3,a3]@3 ~@3, ~@2 g3 ~", D: "f3@2 e3 d3 a3 b3 c4@2 bb3 a3@2 f3",
  E: "bb3@2 a3 g3@2 e3 a3@2 g3 f3@2 d3", F: "g3@2 f3 e3@2 c3 f3@2 ~ e3@2 a2",
  G: "d3@4 d3@2 [e3,g3]@3 ~@3 [f3,a3]@4 f3@2 [g3,bb3]@3 ~@3", H: "g3@2 f3 e3@2 a2 d3@3 gb3@2 d3", I: "g3 a3",
  J: "bb3@4 d3@2 [c3,eb3]@4 ~@2 [d3,f3]@4 d3@2 [eb3,g3]@3 ~@3", K: "eb3@2 d3 c3@2 f3 bb2@2 d3 g3@2 c3",
  L: "f3@3 ~ f3@2 [g3,bb3]@3 ~@3 [a3,c4]@4 a3@2 [bb3,d4]@3 ~@3", M: "bb3@2 a3 g3@2 c4 f3@2 g3 a3@2 f3",
  N: "g3@2 f3 e3@2 c3 f3@2 d3 c3@3", O: "f3@5 ~ d4 ~ c4 ~ bb3 ~ [f3,a3]@5 ~ d4 ~ c4 ~ bb3 ~, ~@6 f3@5 ~@7 f3@5 ~",
  P: "[f3,a3] ~", // F
})).s("gm_piano").gain(0.3)

// other · piano · "A.PIANO 1"
const piano_2 = note("<A B C D@3 E F G H I A J@3 K L>".pickRestart({
  A: "f5@4 e5 d5 c5@4 bb4 a4", B: "g4@2 e4@2 f4@2 bb4@8 a4@2 c5@2 f5@2 g5 f5 e5 d5", C: "c5@4 b4 a4 g4@4 f4 e4",
  D: "[d4@2 b3@2 c4@2 f4@8 e4@2 g4@2 c5@4 eb4@4 d4@2 f4@2 bb4@4 d4@4 c4@2 e4@2 a4@4 c4@4 bb3@2 d4@2 g4@4 bb3@4 a3@2 d4@2 g4@2 a4 g4 f4 e4]/3",
  E: "d5@4 c5 bb4 a4@4 g4 f4", F: "e4@2 db4@2 d4@2 g4@7 e4 gb4 g4 a4 bb4 c5 eb5 d5 c5 bb4 a4",
  G: "bb4 gb4 g4 a4 bb4 c5 d5 f5 eb5 d5 c5 bb4 c5 g4 a4 bb4 c5 d5 eb5 g5 f5 eb5 d5 c5", H: "bb4@4 a4 g4 f4@4 eb4 d4",
  I: "c4@2 a3@2 bb3@2 eb4@8 d4@2 f4@2 bb4@2 c5 bb4 a4 g4",
  J: "[g4 e4 f4 bb4@4 a4 bb4 c5@2 eb4@2 d4 f4 bb4@2 d4@2 c4 e4 a4@2 c4@2 bb3 d4 g4@2 bb3@2 a3 bb4 a4 bb4 g4]/3",
  K: "f4 c4 d4 bb3 c4 ~ bb4 ~ a4 ~ g4 ~ f4 c4 d4 bb3 c4 ~ bb4 ~ a4 ~ g4@2", L: "f4 ~",
})).s("gm_piano").gain(0.36)

// other · violin
const violin = note("<~@2 A B@3 C D E F G H I J K L M>".pickRestart({
  A: "c6@4 b5 a5 g5@4 f5 e5",
  B: "[d5@2 b4@2 c5@2 f5@8 e5@2 g5@2 c6@4 eb5@4 d5@2 f5@2 bb5@4 d5@4 c5@2 e5@2 a5@4 c5@4 bb4@2 d5@2 g5@4 bb4@4 a4@2 d5@2 g5@2 a5 g5 f5 e5]/3",
  C: "f5 e5 f5 d5 a4 d5 g5 f5 g5 e5 c5 e5 a5 g5 a5 f5 d5 f5 bb5 a5 bb5 g5 a5 bb5",
  D: "db5 a5 d5@2 b4 db5 d5@2 ~@2 a4@2", E: "~ gb4 g4 a4 bb4 c5 d5 f5 eb5 d5 c5 bb4 c5@5 ~@7",
  F: "bb5@4 a5 g5 f5@4 eb5 d5", G: "c5@2 a4@2 bb4@2 eb5@8 d5@2 f5@2 bb5@2 c6 bb5 a5 g5",
  H: "a5 g5 a5 f5 c5 f5 bb5 a5 bb5 g5 e5 g5 c6 bb5 c6 a5 f5 a5 d6 c6 d6 bb5 c6 d6",
  I: "e5@2 c6@2 f5@4 d5@2 e5@2 f5 e5 f5 a5 e5 g5 f5 g5 a5 bb5 c6 a5",
  J: "f5 eb5 f5 bb5 d5 f5 e5 f5 g5 a5 bb5 g5 e5 d5 e5 a5 c5 e5 d5 e5 f5 g5 a5 f5",
  K: "d5 c5 d5 g5 bb4 d5 c5 d5 e5 f5 g5 e5 c5 bb4 c5 f5 c4 ~ f4@2 g4 ~ e4 ~",
  L: "f4@4 ~@2 d4 ~ c4 ~ bb3 ~ a3 c4 d4 bb3 c4 ~ bb4 ~ a4 ~ g4 ~", M: "f4 ~",
})).s("gm_violin").gain(0.19).pan(0.2)

stack(string_ensemble_1, piano, piano_2, violin)

More by Bach Johann Sebastian