Strudelify

Casta Diva for String Quartet

Vincenzo Bellini

KeyF majorTempo75 bpm
0:00/0:00
// Casta Diva for String Quartet — Vincenzo Bellini
// 75 bpm, 12/8, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 5 pizzicato strings (copy of ch 2 pizzicato strings)
// note: Transcription provider: pdmx. https://musescore.com/score/5627130; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 60 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(75/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.

// other · violin
const violin = note(`<
  A B C D E F G H I J K L M N C O P Q R S T U V L W X Y Z AA AB AC AD AE AF AG AD AE AH AI AJ D E F G H AK J AL AM AN D
  AO AP AQ AR@2 AS AT@2 ~
>`.pickRestart({
  A: "bb3 db4 gb4 bb4 gb4 db4 bb3 db4 gb4 bb4 gb4 db4", B: "ab3 c4 f4 ab4 f4 c4 g3 bb3 e4 g4 e4 bb3",
  C: "a3 c4 f4 a4 f4 c4 a3 c4 f4 a4 f4 c4", D: "a3 c4 f4 a4 f4 c4 bb3 c4 e4 g4 e4 c4",
  E: "bb3 c4 e4 g4 e4 c4 a3 c4 f4 a4 f4 c4", F: "a3 c4 f4 a4 f4 c4 a3 c4 d4 gb4 d4 c4",
  G: "bb3 d4 g4 bb4 g4 d4 bb3 d4 g4 bb4 g4 d4", H: "bb3 d4 g4 bb4 g4 d4 c4 d4 gb4 a4 gb4 d4",
  I: "~ c4 d4 a4 gb4 d4 bb3 d4 g4 bb4 g4 d4", J: "bb3 c4 e4 g4 e4 c4 bb3 c4 e4 g4 e4 c4", K: "~@9 a4@2 d5",
  L: "d5 db5 e5 bb4@3 ~ ab4 a4 f5 e5 d5, e5 ~@23", M: "d5@2 db5@2 e5@2 bb4@6 b4@6 c5@2 ~@2 c5 ~, e5 ~@23",
  N: "c5@2 db5 d5 a4 bb4 c5 bb4 gb4 g4@2 ab4", O: "f4 [e4,bb4]", P: "[e4,bb4] a4", Q: "a4 gb4", R: "g4",
  S: "g4 [c4,gb4]", T: "[c4,gb4] [bb3,g4]", U: "[bb3,e4]", V: "[a3,f4]@6 ~@3 a4@2 d5",
  W: "d5@2 db5@2 e5@2 bb4@6 ~@6 c5@5 c5, e5 ~@23", X: "d5@4 c5@2 d5@4 c5@2 b4@4 c5@2 b4 c5 d5 e5 f5 g5",
  Y: "a5 a5@3 a5@3 a5@3 a5@2", Z: "bb5@3 a5 g5 f5 g5@3 f5 e5 d5 e5@3 d5 c5 bb4 c5@3 bb4 a4 g4",
  AA: "d5@3 c5 b4 c5 e5@3 f5 c5 a4 a4@3 g4 gb4 g4 b4@3 c5 bb4 g4", AB: "f4@4 ~@2 f4@5 f4 a4@5 f4 f4@5 f4",
  AC: "a4@5 f4 e4@5 f4 g4@5 f4 e4@5 d4", AD: "f4@5 e4 g4@5 f4 f4@5 e4 bb4@5 a4",
  AE: "a4@5 g4 bb4@5 c5 e5@5 d5 c5@5 bb4", AF: "a4@2 ~@4 a4@5 a4 c5@5 a4 a4@5 a4",
  AG: "c5@5 a4 g4@5 a4 bb4@5 a4 g4@5 f4", AH: "a4 ~@5 f4@6", AI: "f4@9 e4 d4 e4, ~@18 f4 ~@5", AJ: "f4 ~@3",
  AK: "c4 d4 gb4 a4 gb4 d4 bb3 d4 g4 bb4 g4 d4", AL: "~ a3 c4 a4 f4 c4 ~ a3 d4 f4 d4 a3",
  AM: "~ g3 bb3 db4 bb3 g3 ~ a3 d4 f4 d4 a3", AN: "~ g3 bb3 db4 bb3 g3 b3 g3 b3 c4 bb3 g3", AO: "~ a4@3 a4@3 a4@3 a4@2",
  AP: "bb4@3 a4 g4 f4 g4@3 f4 e4 d4 e4@3 d4 c4 bb3 c4@3 bb3 a3 g3", AQ: "d4@3 c4 b3 c4 ~@6 [c4,e4]@12",
  AR: "[f4 ~@5 g4@12 g4@2 ~@4]/2", AS: "e4@10 ~ f4", AT: "[f4@7 ~@5]/2",
})).s("gm_violin").gain(0.2)

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

// other · pizzicato strings
const pizzicato_strings = note("<~@40 A B C D E D F G ~@10 H I>".pickRestart({
  A: "f3 ~@5 c3 ~@5", B: "f3 ~@5 f3 ~@5", C: "f3 ~@5 d3 ~@5", D: "g3 ~@5 g3 ~@5", E: "g3 ~@5 d3 ~@5",
  F: "c3 ~@5 c3 ~@5", G: "f3 ~@11", H: "~@6 [f3,f4] ~@5", I: "[f3,f4] ~@5",
})).s("gm_pizzicato_strings").gain(0.15)

// other · cello
const cello = note("<~@37 A B C D E F G H I J K ~@6 A L M ~@3>".pickRestart({
  A: "~ b2", B: "bb2 c3", C: "f2 ~@11", D: "a3@15 bb3 [g3,a3] a3 c4@3 bb3 a3 g3", E: "g3@9 f3 a3 g3 f3@2 ~@4 f3@5 g3",
  F: "a3@6 f3@5 g3 [a3,bb3] g3 a3@4 d4@4 c4@2", G: "d4@5 c4 c4@2 bb3@2 a3@2 bb3@6 ~@6, ~@6 d4 ~@17",
  H: "bb3@15 c4 [a3,bb3] bb3 d4@3 c4 bb3 a3", I: "a3@9 c4 bb3 gb3 g3@2 ~@4 g3@5 a3",
  J: "bb3@2 g3 d4@2 c4 d4 c4 bb3!2 a3 ab3", K: "ab3@3 a3 ~@8", L: "bb2@3 c3 ~@2", M: "c3@10 ~ f3",
})).s("gm_cello").gain(0.2)

// other · pizzicato strings
const pizzicato_strings_2 = note(`<
  A B C D E F G H G B F I J ~ C D E F G H G B F I J K L M N E@2 B@2 E@2 B@2 C ~@9 O I J K L M N C ~@2 P Q R
>`.pickRestart({
  A: "bb2 ~@5 db3 ~@5", B: "c3 ~@5 c3 ~@5", C: "f3 ~@11", D: "f3 ~@5 c3 ~@5", E: "f3 ~@5 f3 ~@5", F: "f3 ~@5 d3 ~@5",
  G: "g3 ~@5 g3 ~@5", H: "g3 ~@5 d3 ~@5", I: "e3 ~@5 f3 ~@5", J: "e3 ~@11", K: "f3 ~@5 g3 ~@5",
  L: "gb3 ~@2 g3 ~@2 gb3 ~@2 g3 ~@2", M: "d3 ~@5 bb2 ~@2 g2 ~@2", N: "c3 ~@11", O: "~@6 d3 ~@5",
  P: "f3 ~@2 c3 ~@2 a2 ~@2 c3 ~@2", Q: "f2 ~@5 f2 ~@5", R: "f2 ~@5",
})).s("gm_pizzicato_strings").gain(0.2)

stack(violin, viola, pizzicato_strings, cello, pizzicato_strings_2)