Strudelify

Messe de Requiem (Campra André)

André Campra

KeyF majorTempo80 bpm
0:00/0:00
// Messe de Requiem (Campra André) — André Campra
// 80 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: ch 4 "Bass" named as a bass, played on electric bass finger (its choir aahs patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5510710; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 78 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · pizzicato strings · "Soprano"
const pizzicato_strings = note(`<
  ~@22 A@3 B C D E F@2 G H I J K L M N O ~ P Q@2 O R S@2 T U V@2 W X ~ Y@6 Z@2 AA@2 AB@3 AC AD@2 AE AF AG@2 AH@3
>`.pickRestart({
  A: "[~ c5@2 d5@2 e5]/3", B: "f5", C: "d5 a4", D: "bb4 g4", E: "c5 f5", F: "[c5@24 f5@48 e5 f5 ~ e5@21]/2",
  G: "f5@2 f5 a4", H: "bb4!2", I: "bb4@6 a4 bb4", J: "a4", K: "f4 a4", L: "c5 f4", M: "f5@3 f5", N: "f5 a4", O: "c5",
  P: "c5@3 c5", Q: "c5/2", R: "bb4@3 bb4", S: "[a4@3 bb4 c5@8 bb4@4]/2", T: "c5!2", U: "d5 bb4", V: "[c5 f5@2 eb5]/2",
  W: "d5 e5", X: "f5@5 ~@3",
  Y: "[~@37 c5@15 c5@14 f5@15 e5 f5 e5@20 e5@7 ~ d5@29 c5@11 bb4@4 a4@4 bb4@3 c5@4 a4@4 d5@4 e5@3 d5@4 e5@4 f5@11 f5@3 f5@15 f5@30 e5 f5 e5@12 f5@15 d5@15]/6",
  Z: "[c5@15 c5@15 c5@22 c5@7 c5@15 f4@11 f4@4 a4@3 bb4@4]/2",
  AA: "[a4@4 bb4@3 c5@15 a4 bb4 a4@13 f4@15 a4@14 c5@15 ~@8 f5@7]/2",
  AB: "[e5 f5 e5@13 d5@15 a4@14 bb4@11 bb4@4 g4@15 c5@29 c5@15 c5@7 ~ c5@7 d5@4 e5@3 d5@4]/3", AC: "e5 f5@11",
  AD: "[f5@15 e5 f5 e5@13 f5@14 c5@11 f5@4 e5 f5 e5@13 ~@22]/2", AE: "~@7 d5@11 d5@4 f5@15 ~@11",
  AF: "~@18 f5@11 ~ c5@3 d5@15", AG: "[g5@11 d5@4 e5 f5 e5@13 f5@32 e5 f5 ~ e5@31]/2", AH: "[~ f5@48 ~@23]/3",
})).s("gm_pizzicato_strings").gain(0.45)

// other · tremolo strings · "Alto"
const tremolo_strings = note(`<
  ~@29 A B C B D A E F@2 G@2 B H@2 B C I J B K B L M N O ~@3 P@3 Q@5 R@4 S@2 T U V@2 W@3
>`.pickRestart({
  A: "f4", B: "g4", C: "a4", D: "d4 e4", E: "f4@3 f4", F: "f4/2", G: "[f4@3 f4]/2", H: "[c4 a4@3]/2", I: "g4 e4",
  J: "f4 a4", K: "f4@3 c4", L: "c4@3 c4", M: "g4!2", N: "g4@3 g4", O: "a4@5 ~@3",
  P: "[c4@15 f4@15 f4@14 f4@22 f4@7 ~ f4@15 bb4@11 bb4@3 a4@4 bb4@4 a4@3 g4@4 f4@15 g4@11]/3",
  Q: "[g4@4 g4@14 a4@15 f4@30 f4@11 f4@4 g4@29 f4@15 c4@29 c4@15 f4@15 f4@15 f4@22 f4@7 g4@15]/5",
  R: "[c4@11 c4@4 f4@11 g4@4 a4@14 g4 a4 g4@28 f4@29 g4@11 g4@4 a4@15 bb4@15 f4@14 f4@11 ~ f4@3 f4@15]/4",
  S: "[bb4@30 [a4,bb4] a4@13 f4@11 f4@4 g4@15 ~@22]/2", T: "~@7 g4@11 g4@4 a4@15 ~@11", U: "~@18 a4@11 ~ a4@3 f4@15",
  V: "[bb4@11 bb4@4 g4@15 f4@14 g4@17 ~ c4@34]/2", W: "[~ c4@48 ~@23]/3",
})).s("gm_tremolo_strings").gain(0.45)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@23 A B C@2 B A D E F G H I ~@2 J K I L I F M A B I N D N O P Q R ~@7 S@8 T@2 U V W@5
>`.pickRestart({
  A: "f3", B: "g3", C: "a3/2", D: "a3 c4", E: "d4 g3", F: "c4@3 c4", G: "bb3!2", H: "g3@3 g3", I: "a3", J: "f3 a3",
  K: "c4 f3", L: "bb3@3 bb3", M: "c4", N: "bb3", O: "a3@3 a3", P: "g3 c4", Q: "bb3 c4 ~ bb3@33 bb3@12", R: "a3@5 ~@3",
  S: "[a3@30 g3@29 a3@22 a3@7 ~ a3@29 c4@30 a3@29 g3@30 f3@29 g3@30 a3@29 g3@30 f3@29 g3@30]/8",
  T: "[g3 a3 g3@28 f3@14 a3@11 a3@4 g3@15 ~@22]/2", U: "~@7 bb3@11 bb3@4 a3@15 ~@11", V: "~@18 c4@11 ~ c4@3 bb3@15",
  W: "[bb3@15 bb3@7 a3@22 g3 a3 g3@51 ~ f3@96 ~@46]/5",
})).s("gm_electric_bass_finger").gain(0.4)

// bass · choir aahs · "Bass"
const bass_2 = note(`<
  ~@20 A B A ~@3 A C D@2 C A E@2 A ~@3 D@2 C D@2 F D C A C D C A B C G ~@8 H@6 I J@2 K L@6
>`.pickRestart({
  A: "f3", B: "g3@3 g3", C: "g3", D: "a3", E: "g3/2", F: "c4", G: "f3@5 ~@3",
  H: "[~@26 f3@15 f3@22 f3@7 f3@22 f3@7 ~ f3@29 c3@22 c3@7 ~ d3@15 f3@14 g3@15 e3@15 f3@15 f3@15 ~@7 f3@7 eb3@15 d3@11]/6",
  I: "d3@4 a2@14 bb2@7 ~ c3@7 d3@7 ~ bb2@7", J: "[c3@30 f3@14 f3@11 f3@4 c3@15 ~@22]/2", K: "~@7 g3@11 g3@4 d3@15 ~@11",
  L: "[~@18 a3@11 ~ a3@3 bb3@30 c4@11 c4@4 f3@14 c3@53 ~ f2@96 ~@46]/6",
})).s("gm_synth_bass_1").gain(0.45)

// other · violin
const violin = note(`<
  ~@2 A B C D E@2 F G H I@2 J K J L M@2 N O N O B P Q@3 O R S T U V W X Y Z@2 A AA O AB AC AD@2 B AC AE N AF AG C AH@2
  AI@4 AJ@2 AK@8 AL@4 AM@2 AN@3
>`.pickRestart({
  A: "~ c4", B: "f4 a4", C: "bb4", D: "a4 f4", E: "[c4 f4@2 e4]/2", F: "f4 c4", G: "bb3 c4", H: "bb3 g4",
  I: "[c4 d4@2 c4]/2", J: "d4@3 d4", K: "e4@3 c4", L: "c4", M: "[f4 f4@2 f4]/2", N: "f4 e4", O: "f4", P: "g4 bb4",
  Q: "[a4 c4@2 d4@2 e4]/3", R: "a4 c5", S: "bb4!2", T: "a4@3 f4", U: "d4", V: "g4@3 g4", W: "c4 f4", X: "f4 ~",
  Y: "a4 ~", Z: "c5 ~", AA: "d4 e4", AB: "a4@3 a4", AC: "g4", AD: "[a4 f4@2 e4]/2", AE: "f4!2 a4 f4", AF: "f4@3 a4",
  AG: "bb4 c5", AH: "[a4@7 f4@7 ~ f4@7 f4@7 ~ g4@22 c5@7 c5@15 b4 c5 b4@13 c5@7]/2",
  AI: "[g4@7 c5@7 ~ bb4@7 a4@7 ~ g4@7 f4@7 a4@7 ~ c5@22 c5@7 c5@30 f4@22 f4@7 eb4 f4 eb4@28 d4@22]/4",
  AJ: "[d4@7 c4@15 c4@15 c4@22 c4@7 c4@15 f4@7 ~ g4@7]/2",
  AK: "[a4@7 g4@7 ~ f4@29 e4@15 f4@15 c4@15 f4@11 f4@3 a4@4 bb4@4 a4@3 bb4@4 c5@7 ~ f4@7 f4@7 f4@7 ~ f4@14 c5@15 c5@22 c5@7 ~ f4@29 g4@30 a4@29 g4@30 f4@29 g4@30]/8",
  AL: "[g4 a4 g4@28 f4@30 ~@6 g4@7 ~ g4@7 c5@7 ~ d5@22 ~@15 a4@7 a4@7 d5@7 ~ c5@7 c5@7 a4@7 ~ c5@7 bb4@7 ~ bb4@7]/4",
  AM: "[bb4@7 d5@7 ~ c5@15 c5@7 c5@7 c5@29 ~ c5@22]/2", AN: "[~@2 a4 bb4 ~ a4@93 ~@46]/3",
})).s("gm_violin").gain(0.4)

// other · viola
const viola = note(`<
  ~@2 A B C D E F G H C I D J K L M N O@2 D N D E P Q R S@2 T F U V@2 W X Y Z AA D AB AC AA D@2 AD AE AF AG AB AH AI P
  AJ@2 AK@6 AL@8 AM@3 AN AO@2 AP@3
>`.pickRestart({
  A: "~ a3", B: "a3 c4", C: "bb3 g3", D: "c4", E: "f4@3 f4", F: "g4", G: "c4 a3", H: "g3 a3", I: "a3 f3", J: "f3@3 bb3",
  K: "g3 c4", L: "f3 g3", M: "g3", N: "bb3 c4", O: "[d4@4 bb3@8 bb3@3 c4]/2", P: "d4 g4", Q: "f4!2", R: "a3",
  S: "[g3 bb3@2 c4]/2", T: "f4", U: "a4", V: "[g4 d4@2 e4]/2", W: "f4@3 c4", X: "a3 ~", Y: "c4 ~", Z: "f4 ~",
  AA: "c4@3 c4", AB: "bb3", AC: "a3!2", AD: "d4 bb3", AE: "c4 f4", AF: "d4", AG: "c4@3 a3", AH: "c4@3 f4", AI: "d4 c4",
  AJ: "[c4@7 a3@7 ~ a3@3 bb3@4 c4@4 d4@4 e4@22 c4@7 d4@22 d4@7 ~ g4@7]/2",
  AK: "[g4@7 a4@7 ~ e4@7 f4@30 c4@22 c4@7 e4@22 g3@7 ~ bb3@29 a3@22 a3@7 ~ f3@15 bb3@14 c4@7 ~ bb3@7 a3@7 ~ c4@7 c4@15 g3@14 a3@7 ~ g3@7 f3@7 ~ e3@7]/6",
  AL: "[f3@15 c4@15 c4@22 c4@7 c4@7 a3@7 ~ a3@4 bb3@3 a3@4 bb3@4 c4@15 ~@14 c4@30 bb3@29 a3@30 d4@22 d4@7 d4@15 c4@15 c4@29 c4@15 a3@15 bb3@15 c4@14 d4@7 ~ c4@7 bb3@7 ~ d4@7]/8",
  AM: "[c4@22 c4@7 ~ c4@30 ~@6 e4@4 d4@4 c4@4 d4@3 e4@4 gb4@4 g4@22 ~@15 f4@3 e4@4 d4@4 e4@3 f4@4]/3",
  AN: "g4@4 a4@7 f4@7 c4@7 ~ f4@7 f4@7 ~ d4@7", AO: "[d4@7 g4@7 ~ g4@7 e4@7 ~ a4@14 g4 a4 g4@27 ~ f4@22]/2",
  AP: "[~ f4@48 ~@23]/3",
})).s("gm_viola").gain(0.4)

// other · cello · "Violoncello"
const cello = note(`<
  A B A@2 B C@2 B A B@2 A D E F G H I J H K L M N O P M Q R@2 Q M Q@2 M S@3 T U V C@2 W C B A B C B A B@2 X@2 Y@2 Z@2
  AA@2 AB@4 AC@4 AD@2 AE@2 AF@2 AG@3
>`.pickRestart({
  A: "f3", B: "g3", C: "a3", D: "e3 eb3", E: "d3@3 g2", F: "c3@3 f2", G: "bb2 b2", H: "c3", I: "bb2 a2", J: "bb2 d3",
  K: "f3 e3 d3 c3", L: "bb2 g2 c3 c2", M: "f2", N: "f3 f2", O: "g2 g3", P: "a3 f3", Q: "g2", R: "a2", S: "f3 ~",
  T: "f2 ~", U: "f3 a3", V: "g3!2 bb3 g3", W: "c4", X: "[f3@22 f3@7 ~ e3@22 e3@7 d3@22 d3@7 ~ c3@7]/2",
  Y: "[bb2@7 a2@7 ~ g2@7 f2@7 ~ g2@7 a2@7 f2@7 ~ f3@7 g3@7 a3@7 ~ f3@7 c3@7 ~ d3@7]/2",
  Z: "[e3@7 c3@7 ~ d3@7 e3@7 ~ f3@7 d3@7 a2@7 ~ bb2@7 c3@7 a2@7 ~ bb2@7 c3@7 ~ d3@7]/2",
  AA: "[bb2@7 f2@7 ~ g2@7 a2@7 ~ f2@7 c3@7 d3@7 ~ e3@7 c3@7 a2@7 ~ bb2@7 c3@7 ~ a2@7]/2",
  AB: "[f2@7 g2@7 ~ a2@7 f2@7 ~ c3@7 bb2@7 c3@7 ~ c2@7 f2@7 f2@7 ~ a2@7 f2@7 ~ f3@15 ~@22 f3@7 a3@7 f3@7 ~ f2@7 g2@7 a2@7 ~ f2@7 c3@7 ~ d3@7]/4",
  AC: "[e3@7 c3@7 ~ d3@7 e3@7 ~ f3@7 d3@7 bb2@7 ~ g2@7 c3@7 bb2@7 ~ a2@7 f2@7 ~ f3@29 eb3@15 d3@15 a2@14 bb2@7 ~ c3@7 d3@7 ~ bb2@7]/4",
  AD: "[c3@15 c2@15 f2@30 ~@6 c4@7 ~ c4@7 c3@7 ~ g2@7]/2",
  AE: "[g3@7 bb3@7 ~ g3@7 d3@7 ~ d4@7 d4@7 d3@7 ~ a2@7 f3@7 a3@7 ~ f3@7 bb2@7 ~ bb3@7]/2",
  AF: "[g3@7 g2@7 ~ c3@7 c4@7 ~ a3@7 f3@7 c3@17 ~ c2@34]/2", AG: "[~ f2@48 ~@23]/3",
})).s("gm_cello").gain(0.4)

stack(pizzicato_strings, tremolo_strings, bass, bass_2, violin, viola, cello)