Strudelify

Concerto for 2 Cellos in G minor RV 531

yyaname

KeyF majorTempo110 bpm
0:00/0:00
// Concerto for 2 Cellos in G minor RV 531 — yyaname
// 110 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/3519651; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 100 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(110/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 · "Vlc Solo 1"
const cello = note(`<
  A B A 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 ~@2 AH AI AJ AK AL AM AN AO AP AQ AR AS
  AT AU AV AW AX AY AZ BA ~@2 BB BC BD BE BF BG BH BI BJ ~ BK BL BM BN BO BP BQ BR BS BT BU BV@2 BW BX BY BZ CA CB CC CD
  CE CF T CG V W CH@3
>`.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 bb3@2 ~@2", I: "~@5 eb4!3",
  J: "e4@2 e4@2 e4 [e4,f4] [d4,f4] e4 f3@2 f3@2 f3@2 f3@2, ~@2 f4 ~", K: "f3!4 bb2 [bb2,d4]!3",
  L: "[bb2,d4]@2 [bb2,d4]@2 d4 [d4,e4] [c4,e4] d4 eb3@2 eb3@2 eb3@2 eb3@2, ~@2 bb2!2 eb4@2 ~@2", // Bb Dsus2 C
  M: "eb3!4 a2 [a2,c4]!3", N: "[a2,c4]@2 [a2,c4]@2 c4 [c4,d4] [bb3,d4] c4 d3@2 d3@2 d3@2 d3@2, ~@2 a2!2 d4@2 ~@2",
  O: "d3!4 ~@4", P: "~ bb3 a3 g3 f3 eb3 d3 c3 bb2 d4 c4 bb3 a3 g3 f3 eb3, g2 ~@3",
  Q: "d3 g4 f4 eb4 d4 c4 bb3 a3 g3 g2!3 bb2 g2!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: "g2!8", W: "g2@2 g2@2 g2@2 g2@2 d3@4 ~ c3 bb2 a2", X: "g2@2 g3@2 c3@2 d3@2 g3 a3 bb3 c4 d4 bb3 a3 g3, ~@2 g2 ~",
  Y: "a3 bb3 c4 d4 eb4 c4 bb3 a3 bb3@2 a3 g3 a3@2 g3 gb3", Z: "g3 d3 g2@2 ~@4", AA: "~@8 g3 a3 bb3 c4 d4 bb3 a3 g3",
  AB: "eb4@2 g3@2 eb3@2 g3@2 f3 g3 a3 bb3 c4 a3 g3 f3", AC: "d4@2 f3@2 d3@2 f3@2 ~ f3 g3 a3 bb3 g3 f3 eb3, ~@2 eb3 ~",
  AD: "c4@2 c3@2 ~@2 c3@2 d3 bb3 c4 bb3 d4 bb3 c4 bb3, ~ a2 ~@2",
  AE: "d3 bb3 c4 bb3 d4 bb3 c4 bb3 ~ bb3 c4 bb3 d4 bb3 c4 bb3, ~@2 eb3 ~",
  AF: "~ bb3 c4 bb3 d4 bb3 c4 bb3 ~ a3 bb3 a3 c4 a3 bb3 a3, eb3 ~ f3 ~", AG: "f3 a3 bb3 a3 c4 a3 bb3 a3 bb2@4 ~@4",
  AH: "~@4 bb2!4", AI: "c3!4 f3!4", AJ: "bb2!4 eb3!4", AK: "a2!4 d3!4", AL: "g2!4 c3!4", AM: "f2 ~ f2 ~",
  AN: "f2@2 ~@2 bb2 bb3 eb3 f3", AO: "bb3 d4 c4 bb3 a3 bb3 a3 g3 f3 bb3 a3 g3 f3 g3 f3 eb3, bb2 ~ bb2 ~",
  AP: "d3 g3 f3 eb3 d3 eb3 d3 c3 bb2!2 d3 f3 bb3@4, bb2 ~@3", AQ: "bb2 ~ bb2 ~",
  AR: "bb2@4 ~ bb3 a3 bb3 c4!2 bb3 c4 d4!2 c4 d4, ~@3 bb2 a2@2 bb2@2",
  AS: "eb4!2 d4 eb4 f4!2 eb4 f4 g4!2 f4 g4 a4!2 g4 a4, c3 d3 eb3 f3",
  AT: "bb4!5 a4 g4 f4 g4!5 f4 eb4 d4, bb2@2 c3 d3 eb3@2 f3 g3",
  AU: "a4!5 g4 f4 eb4 f4!5 eb4 d4 c4, a2@2 bb2 c3 d3@2 eb3 f3",
  AV: "g4!5 f4 eb4 d4 eb4!5 d4 c4 bb3, g2@2 a2 bb2 c3@2 d3 e3",
  AW: "f4!5 eb4 d4 c4 d4 c4 bb3 a3 bb3 c4 d4 eb4, f2@2 g2 a2 bb2@2 ~@2",
  AX: "f4@2 eb4 d4 c4 b3 c4 d4 eb4@2 g4 f4 g4 bb3 ab3 g3, b2 ~",
  AY: "ab3@2 f4 eb4 f4 ab3 g3 f3 g3@2 eb4 d4 eb4 g3 f3 eb3", AZ: "f3@2 d4 c4 d4 f3 eb3 d3 eb3 g3 a3 b3 c4 eb3 d3 c3",
  BA: "~ c4 d4 c4 ~ c4 d4 b3 c4@4 ~@4, g2 ~ g2 ~@5", BB: "~@4 c3!4", BC: "c3!8", BD: "bb2!8", BE: "a2!8",
  BF: "g2 eb3!3 g3 eb3!3 g3 e3!3 g3 e3!3", BG: "ab3 f3!3 ab3 f3!3 a3 gb3!3 a3 gb3!3",
  BH: "bb3 g3!3 bb3 g3!3 b3 g3!3 b3 g3!3", BI: "c4 g3!3 c4 g3!3 d4 g3!3 d4 g3!3",
  BJ: "eb4!4 g4 eb4!3 ~ d4!3 f4 d4!3, ~@2 g2 ~", BK: "~ eb4!3 g4 eb4!3 ab4@2 ab4@2 ab4@2 g4@2, c2 ~ f3 ~",
  BL: "f4 d4!3 f4 d4!3 g4@2 g4@2 g4@2 f4@2, bb2 ~ eb3 ~", BM: "eb4 c4!3 eb4 c4!3 f4@2 f4@2 f4@2 eb4@2, ab2 ~ d3 ~",
  BN: "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
  BO: "[bb2,ab3]@2 [eb2,g3]@2 [eb2,eb4] [f2,d4] [g2,c4] [ab2,bb3] [bb2,ab3]@2 [eb2,g3]@2 [eb2,eb4] [f2,d4] [g2,c4] [ab2,bb3]", // Bb7 Eb Dm C5 Absus2 Bb7 Eb Dm …
  BP: "[bb2,ab3]@2 [eb3,g3]@2 [ab2,ab3] ~ [bb2,f3] ~ eb3@2 eb3@2 eb3@2 eb3@2", BQ: "e3!4 f3!4", BR: "d3!4 eb3!4",
  BS: "c3!4 d3!4", BT: "g3 f3 eb3 d3 c3 bb2 a2 g2 g3@2 bb3@2 d4@2 g4@2, g2 ~@3",
  BU: "g3 f3 eb3 d3 c3 bb2 a2 g2 g3@2 bb3@2 d4@2 g4@2", BV: "~ c3 bb2 a2 g2 gb2 e2 d2 ~@2 gb3@2 a3@2 d4@2, d3 ~ d3 ~",
  BW: "~ g4 f4 g4 ~ g4 f4 g4 ~ g4 f4 g4 ~ g4 f4 g4, g3!4", BX: "eb4 c4 eb4 g4 ~ c4 eb4 g4",
  BY: "~ f4 eb4 f4 ~ f4 eb4 f4 ~ f4 eb4 f4 ~ f4 eb4 f4, f3!4", BZ: "d4 bb3 d4 f4 ~ bb3 d4 f4",
  CA: "~ eb4 d4 eb4 ~ eb4 d4 eb4 ~ eb4 d4 eb4 ~ eb4 d4 eb4, eb3!4", CB: "c4 a3 c4 eb4 ~ a3 c4 eb4",
  CC: "~ d4 c4 d4 ~ d4 c4 d4 ~ d4 c4 d4 ~ d4 c4 d4, d3!4", CD: "bb3 c4 bb3 c4 d4 eb4 d4 eb4 ~@8",
  CE: "bb3 c4 bb3 c4 d4 eb4 d4 eb4 gb3@2 d4@2 d2@2 gb3@2", CF: "g2!4 bb2 g2!3 b2 g2!3 b2 g2!3", CG: "d3 ~ d3 ~",
  CH: "[g2@2 g3@3 c3@3 d3@5 g2@22 ~@13]/3",
})).s("gm_cello").gain(0.27)

// other · cello · "Vlc Solo 1" · soft notes
const cello_soft = note(`<
  ~@4 A ~@4 B C D ~@4 E@2 F ~@4 G ~@2 H I J K L M N O ~ P Q R P ~@15 S T U S T U V ~@8 W ~@9 E X ~@3 Y ~ Z ~ AA ~ AB AC
  ~@8
>`.pickRestart({
  A: "~@2 d4 c4 d4@2 bb3@2 ~@2 c4 bb3 c4@2 a3@2, g2 ~ g2 ~", B: "~@4 g2!4", C: "g2!4 c3!4", D: "c3!4 ~@4",
  E: "~@2 g2 ~", F: "g2@4 ~@4 g2 ~@7", G: "d3 ~ d3 ~", H: "~@12 g3@3 ~", I: "~@2 gb3@2 g3 bb2 c3 d3", J: "g2 g3@2 gb3",
  K: "g3 bb2 c3 d3 g2@2 g2@2", L: "c3!2 f2!2", M: "bb2@4 bb2@4 ~@4 eb3@3 ~", N: "a2 ~ bb2 ~", O: "bb2 ~@3", P: "f2 ~@3",
  Q: "bb2 ~ eb3 ~", R: "eb3 ~ f3 ~", S: "~@4 c3 ~ eb3 ~", T: "f3 ~ d3 ~ eb3 ~ c3 ~",
  U: "d3@2 ~@2 b2@2 ~@2 c3@4 eb3 ~ c3 ~", V: "g2!2 ~@2", W: "~ eb4!3 g4 eb4!3 ~ d4!3 f4 d4!3, c2 ~ g2 ~",
  X: "g2 ~ g2 ~", Y: "c3!4", Z: "bb2!4", AA: "a2!4", AB: "g2@4 ~@4 bb3 c4 bb3 c4 d4 eb4 d4 eb4, ~@2 g2 ~",
  AC: "g2@2 ~@2 d3 g2 ~ d3",
})).s("gm_cello").gain(0.14)

// other · violin · "Violins 1"
const violin = note(`<
  ~@11 A B C D E F ~@7 G H I ~@11 J K L M N O P Q ~@14 C R S T U V W X Y ~@6 J Z AA AB AC ~ AD ~@10 AE AF AG G H AH@3
>`.pickRestart({
  A: "~@5 a5!3", B: "a5@2 a5@2 a5 [a5,bb5] [g5,bb5] a5 bb5@4 ~@4", C: "~@5 g5!3",
  D: "g5@2 g5@2 g5 [g5,a5] [f5,a5] g5 a5@4 ~@4", E: "~@5 gb5!3", F: "gb5@2 gb5@2 gb5 [gb5,g5] [e5,g5] gb5 ~@8",
  G: "bb5@3 a5 g5 f5 eb5 d5 g5@3 f5 eb5 d5 c5 bb4", H: "eb5@3 d5 c5 bb4 a4 g4 gb4@4 ~ gb5 g5 a5",
  I: "bb5 g5 a5 gb5 g5@2 ~@2", J: "~@5 bb5!3", K: "bb5@2 a5 g5 a5@4 ~@2 a5@2 a5@2 a5@2",
  L: "a5@2 g5 f5 g5@4 ~@2 g5@2 g5@2 g5@2", M: "g5@2 f5 eb5 f5@4 ~@2 f5@2 f5@2 f5@2",
  N: "f5@2 eb5 d5 eb5@4 ~@2 eb5@2 eb5@2 eb5@2", O: "eb5@2 c5 d5 eb5@2 eb5@2 eb5@2 a5@2 bb5@2 c6@2",
  P: "~ a5 bb5 c6 d6 bb5 c6 a5", Q: "bb5 ~@3", R: "ab5!3 g5 gb5!4", S: "g5!3 f5 e5!4", T: "f5!3 eb5 d5!4",
  U: "eb5 eb4!3 g4 eb4!3 g4 e4!3 g4 e4!3", V: "ab4 f4!3 ab4 f4!3 a4 gb4!3 a4 gb4!3",
  W: "bb4 g4!3 bb4 g4!3 b4 g4!3 b4 g4!3", X: "c5 g4!3 c5 g4!3 d5 g4!3 d5 g4!3", Y: "eb5 ~@3", Z: "c6!3 bb5 a5!4",
  AA: "bb5!3 a5 g5!4", AB: "a5!3 g5 gb5!4", AC: "g5 ~@3", AD: "gb5 ~@3", AE: "g3!4 bb3 g3!3 b3 g3!3 b3 g3!3",
  AF: "c4 g3!3 c4 g3!3 db4 g3!3 db4 g3!3", AG: "d4 a5 bb5 c6 ~ a5 bb5 c6", AH: "[bb5@2 g5@3 a5@3 gb5@5 g5@22 ~@13]/3",
})).s("gm_violin").gain(0.3)

// other · violin · "Violins 1" · soft notes
const violin_soft = note("<~@9 A B ~@5 C D E F G H I J ~@30 K L M K L M ~@23 N ~@16>".pickRestart({
  A: "~@5 bb5!3", B: "b5@2 b5@2 b5 [b5,c6] [a5,c6] b5 c6@4 ~@4", C: "~@2 g5 ~", D: "g5 ~ g5 ~",
  E: "g5@4 ~@4 g5 g3!3 bb3 g3!3", F: "bb3 g3!3 bb3 g3!3 b3 g3!3 b3 g3!3", G: "b3 g3!3 b3 g3!3 c4 g3!3 c4 g3!3",
  H: "c4 g3!3 c4 g3!3 db4 g3!3 db4 g3!3", I: "db4 g3!3 db4 g3!3 d4@2 a5@2 bb5@2 c6@2", J: "~ a5 bb5 c6 ~ a5 bb5 c6",
  K: "~@4 g5 ~ g5 ~", L: "f5 ~ f5 ~ eb5 ~ eb5 ~", M: "d5 ~ d5 ~ c5@2 ~@2", N: "g5 ~@3",
})).s("gm_violin").gain(0.15)

// other · violin · "Violins 2"
const violin_2 = note(`<
  ~@11 A B C D E F ~@7 G H I ~@12 J K L M N O P ~@14 C Q R S T U V W X ~@6 Y Z AA Q AB ~ P ~@10 AC AD AE G H AF@3
>`.pickRestart({
  A: "~@5 f5!3", B: "eb5@2 eb5@2 eb5 [eb5,f5] [d5,f5] c5 d5@4 ~@4", C: "~@5 eb5!3",
  D: "eb5@2 eb5@2 eb5 [eb5,f5] [c5,f5] bb4 c5@4 ~@4", E: "~@5 d5!3", F: "c5@2 c5@2 c5 [c5,d5] [bb4,d5] a4 ~@8",
  G: "g5@3 f5 eb5 d5 c5 bb4 eb5@3 d5 c5 bb4 a4 g4", H: "g5@3 f5 eb5 d5 c5 bb4 a4@4 ~ a4 bb4 c5",
  I: "d5 bb4 c5 a4 bb4@2 ~@2", J: "~@2 eb5@2 eb5@2 eb5@2 eb5@2 d5 c5 d5@4", K: "~@2 d5@2 d5@2 d5@2 d5@2 c5 bb4 c5@4",
  L: "~@2 c5@2 c5@2 c5@2 c5@2 bb4 a4 bb4@4", M: "~@2 bb4@2 bb4@2 bb4@2 bb4@2 a4 g4 a4@4",
  N: "c5@2 a4 bb4 c5@2 c5@2 c5@2 f5@2 g5@2 a5@2", O: "~ f5 g5 a5 bb5 d5 eb5 c5", P: "d5 ~@3", Q: "eb5!4 d5!4",
  R: "d5!4 c5!4", S: "c5!4 bb4!4", T: "bb4 eb4!3 g4 eb4!3 g4 e4!3 g4 e4!3", U: "ab4 f4!3 ab4 f4!3 a4 gb4!3 a4 gb4!3",
  V: "bb4 g4!3 bb4 g4!3 b4 g4!3 b4 g4!3", W: "c5 g4!3 c5 g4!3 d5 g4!3 d5 g4!3", X: "eb5 ~@3", Y: "~@5 g5!3",
  Z: "g5!4 f5!4", AA: "f5!4 eb5!4", AB: "bb4 ~@3", AC: "g3!4 bb3 g3!3 b3 g3!3 b3 g3!3",
  AD: "c4 g3!3 c4 g3!3 db4 g3!3 db4 g3!3", AE: "d4 gb5 g5 a5 ~ gb5 g5 a5", AF: "[d5@2 bb4@3 c5@3 a4@5 bb4@22 ~@13]/3",
})).s("gm_violin").gain(0.3)

// other · violin · "Violins 2" · soft notes
const violin_soft_2 = note("<~@9 A B ~@5 C D E F G H I J ~@30 K L M K N M ~@23 O ~@16>".pickRestart({
  A: "~@5 g5!3", B: "f5@2 f5@2 f5 [f5,g5] [eb5,g5] d5 eb5@4 ~@4", C: "~@2 bb4 ~", D: "bb4 ~ bb4 ~",
  E: "bb4@4 ~@4 bb4 g3!3 bb3 g3!3", F: "bb3 g3!3 bb3 g3!3 b3 g3!3 b3 g3!3", G: "b3 g3!3 b3 g3!3 c4 g3!3 c4 g3!3",
  H: "c4 g3!3 c4 g3!3 db4 g3!3 db4 g3!3", I: "db4 g3!3 db4 g3!3 d4@2 gb5@2 g5@2 a5@2", J: "~ gb5 g5 a5 ~ gb5 g5 a5",
  K: "~@4 eb5 ~ eb5 ~", L: "c5 ~ d5 ~ bb4 ~ c5 ~", M: "a4 ~ b4 ~ g4@2 ~@2", N: "d5 ~ d5 ~ bb4 ~ c5 ~", O: "bb4 ~@3",
})).s("gm_violin").gain(0.15)

// other · viola · "Violas"
const viola = note(`<
  ~@11 A B C D E F ~@7 G H I ~@11 J K L M N O P Q ~@14 R S T U V W X Y Z ~@6 AA AB AC AD AE ~ AF ~@10 AG AH AI AJ AK
  AL@3
>`.pickRestart({
  A: "~@5 c4!3", B: "c4!2 a3!2 f3@2 ~@2", C: "~@5 bb3!3", D: "bb3!2 g3!2 e3@2 ~@2", E: "~@5 a4!3", F: "a4!2 gb4!2 ~@4",
  G: "g3!8", H: "g3@2 g3@2 g3@2 g3@2 d4@4 ~ eb4 d4 c4", I: "bb3 d4 eb4 d4 d4@2 ~@2", J: "~@5 d4!3",
  K: "g4!2 eb4!2 c4!2 a3!2", L: "f4!2 d4!2 bb3!2 g3!2", M: "eb4!2 c4!2 a3!2 f3!2", N: "d4!2 bb3!2 g3!2 eb3!2",
  O: "a3 ~ a4 ~", P: "a4@2 ~@2 f4!2 g4 f4", Q: "f4 ~@3", R: "~@5 g4!3", S: "eb4!3 g4 a4!4", T: "bb4!4 g4!4",
  U: "a4!4 f4!4", V: "g4 eb3!3 g3 eb3!3 g3 e3!3 g3 e3!3", W: "ab3 f3!3 ab3 f3!3 a3 gb3!3 a3 gb3!3",
  X: "bb3 g3!3 bb3 g3!3 b3 g3!3 b3 g3!3", Y: "c4 g3!3 c4 g3!3 d4 g3!3 d4 g3!3", Z: "eb4 ~@3", AA: "~@5 bb4!3",
  AB: "g4!4 c4!4", AC: "d4!4 bb3!4", AD: "eb4!4 a4!3 gb4", AE: "d4 ~@3", AF: "a3 ~@3",
  AG: "g3!4 bb3 g3!3 b3 g3!3 b3 g3!3", AH: "c4 g3!3 c4 g3!3 db4 g3!3 db4 g3!3", AI: "d4 c5 bb4 a4 ~ c5 bb4 a4",
  AJ: "d4@3 d4 g4 f4 eb4 d4 eb4@3 a3 bb3 c4 d4!2", AK: "c4@3 d4 eb4 bb3 c4 d4 d4@4 ~ eb4 d4 c4",
  AL: "[bb3@2 d4@3 eb4@3 d4@5 d4@22 ~@13]/3",
})).s("gm_viola").gain(0.29)

// other · viola · "Violas" · soft notes
const viola_soft = note("<~@9 A B ~@5 C D E F G H I D ~@30 J K L J K L ~@23 M ~@16>".pickRestart({
  A: "~@5 d4!3", B: "d4!2 b3!2 g3@2 ~@2", C: "~@2 d4 ~", D: "d4 ~ d4 ~", E: "d4@4 ~@4 d4 g3!3 bb3 g3!3",
  F: "bb3 g3!3 bb3 g3!3 b3 g3!3 b3 g3!3", G: "b3 g3!3 b3 g3!3 c4 g3!3 c4 g3!3", H: "c4 g3!3 c4 g3!3 db4 g3!3 db4 g3!3",
  I: "db4 g3!3 db4 g3!3 d4@4 ~@4", J: "~@4 c5 ~ c5 ~", K: "ab4 ~ bb4 ~ g4 ~ ab4 ~", L: "f4 ~ g4 ~ eb4@2 ~@2",
  M: "d4 ~@3",
})).s("gm_viola").gain(0.15)

stack(cello, cello_soft, violin, violin_soft, violin_2, violin_soft_2, viola, viola_soft)