Strudelify

Concerto for 2 Cellos in G minor

Antonio Vivaldi

KeyB♭ majorTempo96 bpm
0:00/0:00
// Concerto for 2 Cellos in G minor — Antonio Vivaldi
// 96 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/5494495; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 99 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(96/4)

// 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.

// other · cello · "Solo Violoncello 1"
const cello = note(`<
  A B A C@2 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 BX BY BZ@2 CA@2 CB CC CD CE CF CG
  CH CI CJ CK T V W CL CM@2
>`.pickRestart({
  A: "~@2 g3 gb3 g3@2 g2@2 bb3@2 c4@2 d4@2 eb4@2, g2 ~ g2 ~",
  B: "~@2 bb3 a3 bb3@2 g2@2 d4@2 e4@2 gb4@2 g4@2, g2 ~ g2 ~", C: "~@2 d4 c4 d4@2 bb3@2 ~@2 c4 bb3 c4@2 a3@2, g2 ~ g2 ~",
  D: "bb2 d3 g3 d3 bb2 d3 g3 d3 bb2@2 d3@2 g3@2 bb3@2, g2!4 g2@2 ~@2",
  E: "d3 g3 bb3 g3 d3 g3 bb3 g3 d3@2 g3@2 bb3@2 d4@2, g2!4 g2@2 ~@2",
  F: "g3 bb3 d4 bb3 g3 bb3 d4 bb3 g3@2 bb3@2 d4@2 g4@2, g2!4 g2@2 ~@2",
  G: "[bb2,d3] f4 [a2,c3] eb4 [g2,bb2] d4 [f2,a2] c4", H: "[eb2,g2] bb3 [d2,gb2] a3 [g2,bb3] g2!3",
  I: "g2!4 c3 [c3,eb4]!3", J: "[c3,e4]@2 [c3,e4]@2 e4 [e4,f4] [d4,f4] e4 [f3,f4]@2 f3@2 f3@2 f3@2, ~@2 c3!2 ~@4",
  K: "f3!4 bb2 [bb2,d4]!3", // Bb
  L: "[bb2,d4]@2 [bb2,d4]@2 d4 [d4,eb4] [c4,eb4] d4 [eb3,eb4]@2 eb3@2 eb3@2 eb3@2, ~@2 bb2!2 ~@4", // Bb Ebmaj7 Cm Eb
  M: "eb3!4 a2 [a2,c4]!3", N: "[a2,c4]@2 [a2,c4]@2 c4 [c4,d4] [bb3,d4] c4 [d3,d4]@2 d3@2 d3@2 d3@2, ~@2 a2!2 ~@4",
  O: "d3!4 g2@2 ~@2", P: "~ bb3 a3 g3 f3 eb3 d3 c3 bb2 d4 c4 bb3 a3 g3 f3 eb3, g2 ~ g2 ~",
  Q: "d3 g4 f4 eb4 d4 c4 bb3 a3 d3 g2!3 bb2 g2!3, g2@2 ~@2 g3 ~@3", R: "bb2 g2!3 bb2 g2!3 b2 g2!3 b2 g2!3",
  S: "b2 g2!3 b2 g2!3 c3 g2!3 c3 g2!3", T: "c3 g2!3 c3 g2!3 db3 g2!3 db3 g2!3", U: "db3 g2!3 db3 g2!3 d3@4 ~@4",
  V: "d3 ~ d3 ~", W: "g2!8", X: "g2@2 g2@2 g2@2 g2@2 g2@4 ~ c3 bb2 a2",
  Y: "g2@2 g3@2 c3@2 d3@2 g3 a3 bb3 c4 d4 bb3 a3 g3, ~@8 g2@4 g3@3 ~",
  Z: "a3 bb3 c4 d4 eb4 c4 bb3 a3 [g3,bb3]@2 a3 g3 [c3,a3]@2 g3 gb3, ~@2 gb3@2 ~ bb2 ~ d3", // Gm F
  AA: "g3 d3 g3@4 gb3@2, g2!2 ~@2", AB: "g3@2 bb2@2 c3@2 d3@2 g3 a3 bb3 c4 d4 bb3 a3 g3, ~@2 g2!2",
  AC: "eb4@2 g3@2 eb3@2 g3@2 f3 g3 a3 bb3 c4 a3 g3 f3, c3!2 f2!2",
  AD: "d4@2 f3@2 d3@2 f3@2 ~ f3 g3 a3 bb3 g3 f3 eb3, bb2@4 bb2@4 eb3@4 eb3@3 ~",
  AE: "c4@2 c3@2 ~@2 c3@2 d3 bb3 c4 bb3 d4 bb3 c4 bb3, a2!2 bb2 ~",
  AF: "d3 bb3 c4 bb3 d4 bb3 c4 bb3 ~ bb3 c4 bb3 d4 bb3 c4 bb3, bb2 ~ eb3 ~",
  AG: "~ bb3 c4 bb3 d4 bb3 c4 bb3 ~ a3 bb3 a3 c4 a3 bb3 a3, eb3 ~ f3 ~",
  AH: "f3 a3 bb3 a3 c4 a3 bb3 a3 bb2@4 ~@4, f2 ~@3", AI: "bb2 ~ eb3 ~", AJ: "eb3 ~ f3 ~", AK: "f2@2 ~@2 bb2!4",
  AL: "c3!4 f3!4", AM: "bb2!4 eb3!4", AN: "a2!4 d3!4", AO: "g2!4 c3!4", AP: "f2 ~ f2 ~", AQ: "f2@2 ~@2 bb2 bb3 eb3 f3",
  AR: "bb3 d4 c4 bb3 a3 bb3 a3 g3 f3 bb3 a3 g3 f3 g3 f3 eb3, bb2 ~ bb2 ~",
  AS: "d3 g3 f3 eb3 d3 eb3 d3 c3 bb2!2 d3 f3 bb3@2 ~@2, bb2 ~@3", AT: "bb2 ~ bb2 ~",
  AU: "bb2@4 ~ bb3 a3 bb3 c4!2 bb3 c4 d4!2 c4 d4, ~@3 bb2 a2@2 bb2@2",
  AV: "eb4!2 d4 eb4 f4!2 eb4 f4 g4!2 f4 g4 a4!2 g4 a4, c3 d3 eb3 f3",
  AW: "bb4!5 a4 g4 f4 g4!5 f4 eb4 d4, bb2@2 c3 d3 eb3@2 f3 g3",
  AX: "a4!5 g4 f4 eb4 f4!5 eb4 d4 c4, a2@2 bb2 c3 d3@2 eb3 f3",
  AY: "g4!5 f4 eb4 d4 eb4!5 d4 c4 bb3, g2@2 a2 bb2 c3@2 d3 eb3",
  AZ: "f4!5 eb4 d4 c4 d4 c4 bb3 a3 bb3 c4 d4 eb4, f2@2 g2 a2 bb2@2 ~@2",
  BA: "f4@2 eb4 d4 c4 b3 c4 d4 [c3,eb4]@2 g4 f4 g4 bb3 ab3 g3, b2@4 ~@2 eb3 ~", // Cm
  BB: "[f3,ab3]@2 f4 eb4 f4 a3 g3 f3 [eb3,g3]@2 eb4 d4 eb4 g3 f3 eb3, ~@2 d3 ~@3 c3 ~", // Fm Eb
  BC: "[d3,f3]@2 d4 c4 d4 f3 eb3 d3 eb3 g3 a3 b3 [eb3,c4] bb3 [c3,a3] g3, ~@2 b2 ~ c3@2 ~@2", // Dm Cm F
  BD: "~ c4 d4 c4 ~ c4 d4 b3 [c3,c4]@2 ~@2 eb3@2 ~@2, g2!2 ~@2", BE: "f3 ~ d3 ~ eb3 ~ c3 ~",
  BF: "d3@2 ~@2 b2@2 ~@2 c3@4 eb3 ~ c3 ~", BG: "g2@2 g2@2 c3!4", BH: "c3!8", BI: "bb2!8", BJ: "a2!4 ab2!4",
  BK: "[g2,g3] eb3!3 g3 eb3!3 g3 e3!3 g3 e3!3", BL: "ab3 f3!3 ab3 f3!3 a3 gb3!3 a3 gb3!3",
  BM: "bb3 g3!3 bb3 g3!3 b3 g3!3 b3 g3!3", BN: "c4 g3!3 c4 g3!3 d4 g3!3 d4 g3!3",
  BO: "eb4!4 g4 eb4!3 ~ d4!3 f4 d4!3, ~@2 g2 ~", BP: "~ eb4!3 g4 eb4!3 ~ d4!3 f4 d4!3, c2 ~ g2 ~",
  BQ: "~ eb4!3 g4 eb4!3 ab4@2 ab4@2 ab4@2 g4@2, c2 ~ f3 ~", BR: "f4 d4!3 f4 d4!3 g4@2 g4@2 g4@2 f4@2, bb2 ~ eb3 ~",
  BS: "eb4 c4!3 eb4 c4!3 f4@2 f4@2 f4@2 eb4@2, ab2 ~ d3 ~",
  BT: "d4 c4 bb3 ab3 g3 f3 eb3 d3 [ab2,c3]@2 [g2,bb2]@2 [eb2,eb4] [f2,d4] [g2,c4] [ab2,bb3], bb2 ~@3", // Ab Gm Eb Dm C5 Absus2
  BU: "[bb2,ab3]@2 [g2,g3]@2 [eb2,eb4] [f2,d4] [g2,c4] [ab2,bb3] [bb2,ab3]@2 [g2,g3]@2 [eb2,eb4] [f2,d4] [g2,c4] [ab2,bb3]", // Bb7 G Eb Dm C5 Absus2 Bb7 G …
  BV: "[bb2,ab3] [eb3,g3] [ab2,ab3] [bb2,f3] eb3!4", BW: "e3!4 f3!4", BX: "d3!4 eb3!4", BY: "c3!4 d3!4",
  BZ: "g3 f3 eb3 d3 c3 bb2 a2 g2 g3@2 bb3@2 d4@2 g4@2, g2 ~ g2 ~",
  CA: "d3 c3 bb2 a2 g2 gb2 e2 d2 d3@2 gb3@2 a3@2 d4@2, d2 ~ d2 ~",
  CB: "~ g4 f4 g4 ~ g4 f4 g4 ~ g4 f4 g4 ~ g4 f4 g4, g3!4", CC: "eb4 c4 eb4 g4 ~ c4 eb4 g4, c3!4",
  CD: "~ f4 eb4 f4 ~ f4 eb4 f4 ~ f4 eb4 f4 ~ f4 eb4 f4, f3!4", CE: "d4 bb3 d4 f4 ~ bb3 d4 f4, bb2!4",
  CF: "~ eb4 d4 eb4 ~ eb4 d4 eb4 ~ eb4 d4 eb4 ~ eb4 d4 eb4, eb3!4", CG: "c4 a3 c4 eb4 ~ a3 c4 eb4, a2!4",
  CH: "~ d4 c4 d4 ~ d4 c4 d4 ~ d4 c4 d4 ~ d4 c4 d4, d3!4",
  CI: "bb3 c4 bb3 c4 d4 eb4 d4 eb4 bb3 c4 bb3 c4 d4 eb4 d4 eb4, g2 ~ g2 ~",
  CJ: "bb3 c4 bb3 c4 d4 eb4 d4 eb4 [bb2,d3]@2 [g2,g3]@2 d2@2 [d3,gb3]@2, g2 ~@3", // Bb G D
  CK: "[g2,g3] g2!3 bb2 g2!3 b2 g2!3 b2 g2!3", CL: "g2@2 g2@2 g2@2 g2@2 d3@4 ~ c3 bb2 a2",
  CM: "[~ g2@2 g3@2 c3@2 ~ d3@2 g2@10 ~@12]/2",
})).s("gm_cello").gain(0.3)

// other · cello · "Violoncello 1"
const cello_2 = note(`<
  ~@9 A B C D E F G H ~@5 I J K L M ~@11 A N O P Q R S T ~@14 E U V W X ~@10 A Y Z AA AB ~@12 AC AD AE K AF AG@2
>`.pickRestart({
  A: "~@5 bb4!3", B: "b4@2 b4@2 b4 [b4,c5] [a4,c5] b4 c5@4 ~@4", C: "~@5 a4!3",
  D: "a4@2 a4@2 a4 [a4,bb4] [g4,bb4] a4 bb4@4 ~@4", E: "~@5 g4!3", F: "g4@2 g4@2 g4 [g4,a4] [f4,a4] g4 a4@4 ~@4",
  G: "~@5 gb4!3", H: "gb4@2 gb4@2 gb4 [gb4,g4] [e4,g4] gb4 g4@4 ~@4", I: "~@5 a4 bb4 c5", J: "~ a4 bb4 c5 ~ a4 bb4 c5",
  K: "bb4@3 a4 g4 f4 eb4 d4 g4@3 f4 eb4 d4 c4 bb3", L: "eb4@3 d4 c4 bb3 a3 g3 gb3@4 ~ gb4 g4 a4",
  M: "bb4 g4 a4 gb4 g4@2 ~@2", N: "bb4@2 a4 g4 a4@4 ~@2 a4@2 a4@2 a4@2", O: "a4@2 g4 f4 g4@4 ~@2 g4@2 g4@2 g4@2",
  P: "g4@2 f4 eb4 f4@4 ~@2 f4@2 f4@2 f4@2", Q: "f4@2 eb4 d4 eb4@4 ~@2 eb4@2 eb4@2 eb4@2",
  R: "eb4@2 c4 d4 eb4@2 eb4@2 eb4@2 a4@2 bb4@2 c5@2", S: "~ a4 bb4 c5 d5 bb4 c5 a4", T: "bb4 ~@3", U: "ab4!3 g4 gb4!4",
  V: "g4!3 f4 e4!4", W: "f4!3 eb4 d4!4", X: "eb4 ~@7", Y: "c5!3 bb4 a4!4", Z: "bb4!3 a4 g4!4", AA: "a4!3 g4 gb4!4",
  AB: "g4 ~@3", AC: "g3!3 ~@2 g3!3 b3 g3!3 b3 g3!3", AD: "c4 g3!3 c4 g3!3 db4 g3!3 db4 g3!3",
  AE: "d4 a4 bb4 c5 ~ a4 bb4 c5", AF: "eb4@3 d4 c4 bb3 a3 g3 gb4@4 ~ gb4 g4 a4",
  AG: "[~ bb4@2 g4@2 a4@2 ~ gb4@2 g4@10 ~@12]/2",
})).s("gm_cello").gain(0.3)

// other · cello · "Violoncello 1" · soft notes
const cello_soft = note("<~@54 A B C A B C ~@32 D ~@6>".pickRestart({
  A: "~@4 g4 ~ g4 ~", B: "f4 ~ f4 ~ eb4 ~ eb4 ~", C: "d4 ~ d4 ~ c4@2 ~@2", D: "~@3 g3 bb3 ~@11",
})).s("gm_cello").gain(0.2)

// other · cello · "Violoncello 2"
const cello_3 = note(`<
  ~@9 A B C D E F G H ~ I J K L M N O P Q ~@12 R S T U V W X ~@14 E Y Z AA AB ~@10 A AC AD Y AE ~@13 L AF O P AG@2
>`.pickRestart({
  A: "~@5 g4!3", B: "f4@2 f4@2 f4 [f4,g4] [eb4,g4] d4 eb4@4 ~@4", C: "~@5 f4!3",
  D: "eb4@2 eb4@2 eb4 [eb4,f4] [d4,f4] c4 d4@4 ~@4", E: "~@5 eb4!3", F: "eb4@2 eb4@2 eb4 [eb4,f4] [c4,f4] bb3 c4@4 ~@4",
  G: "~@5 d4!3", H: "c4@2 c4@2 c4 [c4,d4] [bb3,d4] a3 bb3@4 ~@4", I: "~@8 bb3 g3!2 ~@4 g3",
  J: "bb3 g3!3 bb3 g3!3 b3 g3!3 b3 g3!3", K: "b3 g3!3 b3 g3!3 c4 g3!3 c4 g3!3", L: "c4 g3!3 c4 g3!3 db4 g3!3 db4 g3!3",
  M: "db4 g3!3 db4 g3!3 d4@2 gb4@2 g4@2 a4@2", N: "~ gb4 g4 a4 ~ gb4 g4 a4",
  O: "g4@3 f4 eb4 d4 c4 bb3 eb4@3 d4 c4 bb3 a3 g3", P: "g4@3 f4 eb4 d4 c4 bb3 a3@4 ~ a3 bb3 c4",
  Q: "d4 bb3 c4 a3 bb3@2 ~@2", R: "~@2 eb4@2 eb4@2 eb4@2 eb4@2 d4 c4 d4@4", S: "~@2 d4@2 d4@2 d4@2 d4@2 c4 bb3 c4@4",
  T: "~@2 c4@2 c4@2 c4@2 c4@2 bb3 a3 bb3@4", U: "~@2 bb3@2 bb3@2 bb3@2 bb3@2 a3 g3 a3@4",
  V: "c4@2 a3 bb3 c4@2 c4@2 c4@2 f4@2 g4@2 a4@2", W: "~ f4 g4 a4 bb4 d4 eb4 c4", X: "d4 ~@3", Y: "eb4!4 d4!4",
  Z: "d4!4 c4!4", AA: "c4!4 bb3!4", AB: "bb3 ~@7", AC: "g4!4 f4!4", AD: "f4!4 eb4!4", AE: "bb3 ~@3",
  AF: "d4 gb4 g4 a4 ~ gb4 g4 a4", AG: "[~ d4@2 bb3@2 c4@2 ~ a3@2 bb3@10 ~@12]/2",
})).s("gm_cello").gain(0.3)

// other · cello · "Violoncello 2" · soft notes
const cello_soft_2 = note("<~@18 A ~@35 B C D B C D ~@39>".pickRestart({
  A: "~@11 g3 bb3 g3!2 ~", B: "~@4 eb4 ~ eb4 ~", C: "c4 ~ d4 ~ bb3 ~ c4 ~", D: "a3 ~ b3 ~ g3@2 ~@2",
})).s("gm_cello").gain(0.2)

// other · cello · "Violoncello 3"
const cello_4 = note(`<
  ~@9 A B C D E F G H ~@5 I J K L M ~@11 A N O P Q R S T ~@14 U V W X Y ~@10 E Z AA AB AC ~@14 J AD AE AF@2
>`.pickRestart({
  A: "~@5 d4!3", B: "d4!2 b3!2 g3@2 ~@2", C: "~@5 c4!3", D: "c4!2 a3!2 f3@2 ~@2", E: "~@5 bb3!3",
  F: "bb3!2 g3!2 d3@2 ~@2", G: "~@5 a3!3", H: "a3!2 gb3!2 d3@2 ~@2", I: "~@5 c4 bb3 a3", J: "~ c4 bb3 a3 ~ c4 bb3 a3",
  K: "d3@3 d3 g3 f3 eb3 d3 eb3@3 a2 bb2 c3 d3 eb3", L: "c3@3 d3 eb3 bb2 c3 d3 d3@4 ~ eb3 d3 c3",
  M: "bb2 d3 eb3 d3 d3@2 ~@2", N: "g4!2 eb4!2 c4!2 a3!2", O: "f4!2 d4!2 bb3!2 g3!2", P: "eb4!2 c4!2 a3!2 f3!2",
  Q: "d4!2 bb3!2 g3!2 eb3!2", R: "a3 ~ a3 ~", S: "a3@2 ~@2 f4!2 g4 f4", T: "f4 ~@3", U: "~@5 g3!3", V: "eb3!3 g3 a3!4",
  W: "bb3!4 g3!4", X: "a3!4 f3!4", Y: "g3 ~@7", Z: "g3!4 c4!4", AA: "d4!4 bb3!4", AB: "eb4!4 a3!3 gb3", AC: "eb3 ~@3",
  AD: "d4@3 d4 g4 f4 eb4 d4 eb4@3 a3 bb3 c4 d4 eb4", AE: "c4@3 d4 eb4 bb3 c4 d4 d4@4 ~ eb4 d4 c4",
  AF: "[~ bb3@2 d4@2 eb4@2 ~ d4@2 d4@10 ~@12]/2",
})).s("gm_cello").gain(0.3)

// other · cello · "Violoncello 3" · soft notes
const cello_soft_3 = note(`<
  ~@54
  [~@4 c4 ~ c4 ~]
  [ab3 ~ bb3 ~ g3 ~ ab3 ~]
  [f3 ~ g3 ~ eb3@2 ~@2]
  [~@4 c4 ~ c4 ~]
  [ab3 ~ bb3 ~ g3 ~ ab3 ~]
  [f3 ~ g3 ~ eb3@2 ~@2]
  ~@39
>`).s("gm_cello").gain(0.2)

stack(cello, cello_2, cello_soft, cello_3, cello_soft_2, cello_4, cello_soft_3)

More by Antonio Vivaldi