Strudelify

Requiem Op.48

Gabriel Fauré

KeyE♭ majorTempo60 bpm
0:00/0:00
// Requiem Op.48 — Gabriel Fauré
// 60 bpm, 3/4, key Eb 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 3 "Bass" named as a bass, played on electric bass finger (its orchestral harp patch is not one); ch 4 "C Trumpet" named as a brass, played on trumpet (its church organ patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/134306; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 63 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/3)

// 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 · pizzicato strings · "Soprano"
const pizzicato_strings = note(`<
  ~@6 A ~@11 B C D E ~@4 F G H I ~@4 J K L M N O P Q ~@4 R S T S T U Q ~@10
>`.pickRestart({
  A: "bb4@2 ~", B: "~ c5 d5", C: "f5@3 e5 d5@2", D: "d5@2 c5", E: "d5@5 ~", F: "bb4!2 eb5", G: "eb5 d5 c5",
  H: "bb4@3 bb4 bb4@2", I: "bb4 bb4@2", J: "bb4 c5 db5", K: "f5@3 eb5 db5@2", L: "db5@2 c5", M: "bb4", N: "bb4 c5 d5",
  O: "eb5 f5 g5", P: "eb5@2 d5", Q: "eb5@2 ~", R: "~@5 eb5", S: "eb5@2 eb5", T: "ab4 bb4 c5", U: "eb5",
})).s("gm_pizzicato_strings").gain(0.22)

// other · pizzicato strings · "Soprano" · soft notes
const pizzicato_strings_soft = note("<~@2 A@2 B ~ C@2 B ~ D@2 B ~ D@2 B ~ E ~@34 F G@2 ~@7>".pickRestart({
  A: "[bb4@2 c5@2 bb4 ab4]/2", B: "bb4 ~", C: "[~@2 c5@2 bb4 ab4]/2", D: "[bb4 c5 db5@2 bb4 ab4]/2", E: "bb4 ~@2",
  F: "[eb4,g4]", G: "[eb4,g4]/2",
})).s("gm_pizzicato_strings").gain(0.11)

// other · tremolo strings · "Tenor"
const tremolo_strings = note(`<
  ~@4 A@2 B ~ A@2 B ~ C@2 B ~ C@2 B ~@3 D@2 E F ~@4 G H I F ~@8 J K L K L M N ~@3 O P@3 ~@7
>`.pickRestart({
  A: "[bb3@2 c4@2 bb3 ab3]/2", B: "bb3 ~", C: "[bb3 c4 d4@2 bb3 ab3]/2", D: "[a3@2 b3@2 a3 g3]/2", E: "a3@5 a3",
  F: "bb3", G: "bb3@3 bb3 eb4@2", H: "eb4 d4 c4", I: "bb3@2 bb3", J: "~@5 eb4", K: "eb4@2 eb4", L: "ab3 bb3 c4",
  M: "eb4", N: "eb4 ~", O: "[g3,bb3]", P: "[g3@2 g3, bb3]/3",
})).s("gm_tremolo_strings").gain(0.11)

// chords · electric bass finger · "Bass"
const electric_bass_finger = note(`<
  A B C D C D C D C D E F G H E I G H J K L M N O P Q C R A S T U V W ~@8 X Y Z Y Z AA AB ~@2 A AC A B A AD AE AD ~@4
>`.pickRestart({
  A: "g4 eb4 bb3 g3!2 bb3 eb4 g4!2 eb4 bb3 g3", B: "g3 bb3 eb4 g4!2 eb4 bb3 g3!2 bb3 eb4 g4",
  C: "g4 eb4 bb3 g3!2 bb3 eb4 g4!2 eb4 c4 g3", D: "g3 c4 eb4 g4!2 eb4 bb3 g3!2 ab3 eb4 g4",
  E: "g4 eb4 bb3 g3!2 c4 eb4 g4!2 eb4 db4 g3", F: "g3 db4 eb4 g4!2 eb4 bb3 g3!2 ab3 eb4 g4",
  G: "g4 e4 bb3 g3!2 c4 e4 g4 f4 d4 bb3 ab3", H: "ab3 bb3 d4 f4!2 d4 bb3 ab3 ~ bb3 d4 f4, ~@2 ab3",
  I: "g3 db4 eb4 g4!2 db4 bb3 g3!2 ab3 eb4 g4", J: "g4 d4 bb3 g3!2 bb3 d4 g4!2 d4 bb3 g3",
  K: "f3 a3 d4 a4!2 d4 a3 f3!2 a3 d4 a4", L: "e4 d4 bb3 g3!2 bb3 d4 e4!2 c4 bb3 g3",
  M: "gb3 a3 d4 gb4!2 d4 a3 gb3!2 a3 d4 gb4", N: "gb4 d4 a3 gb3!2 a3 d4 gb4!2 d4 b3 gb3",
  O: "gb3 b3 d4 gb4!2 d4 a3 gb3!2 g3 d4 gb4", P: "gb4 d4 ab3 gb3!2 ab3 d4 gb4!2 d4 ab3 f3, ~@5 a3",
  Q: "f3 ab3 bb3 d4!2 bb3 ab3 f3!2 ab3 bb3 d4, bb3 ~@5", R: "g3 c4 eb4 g4!2 d4 bb3 g3!2 ab3 c4 g4",
  S: "bb3 c4 e4 bb4!2 e4 c4 bb3!2 c4 e4 bb4", T: "g4 eb4 bb3 g3!2 bb3 eb4 g4 [eb4,g4] eb4 c4 g3, bb3 ~@2 bb3 ~@2",
  U: "g3 c4 eb4 g4 [d4,g4] d4 bb3 g3!2 ab3 c4 g4, eb4 ~@3 c4 ~", // G5
  V: "g4 eb4 bb3 g3!2 bb3 eb4 g4!2 eb4 bb3 g3, bb3 ~@3 bb3 ~", W: "~ c4 e4 bb4!2 e4 c4 bb3!2 c4 e4 bb4, bb3@7 ~@5",
  X: "~@5 eb4", Y: "eb4@2 eb4", Z: "ab3 bb3 c4", AA: "eb4", AB: "eb4 ~",
  AC: "g3 bb3 eb4 g4!2 eb4 bb3 g3!2 bb3 eb4 g4, [bb2,eb3]", AD: "g3 bb3 eb4 g4!2 eb4 bb3 g3 ab3 bb3 eb4 f4",
  AE: "g4 eb4 bb3 g3!2 bb3 eb4 g4 f4 eb4 bb3 ab3",
})).s("gm_electric_bass_finger").gain(0.05)

// chords · electric bass finger · "Bass" · soft notes
const electric_bass_finger_2 = note("<~@4 A B C ~ A B C ~ D E C ~ D E C ~@3 F G H ~@28 I@3 ~@7>".pickRestart({
  A: "bb3 ~@3 c4 ~", B: "~@4 bb3@2 ~@2 ab3 ~@3", C: "bb3 ~@5", D: "bb3@2 ~@2 c4 ~@3 d4 ~@3", E: "~@2 bb3 ~@3",
  F: "a3 ~@3 b3 ~", G: "~@4 a3@2 ~@2 g3 ~@3", H: "a3@5 ~", I: "[bb2@2 bb2, eb3]/3",
})).s("gm_electric_bass_finger").gain(0.02)

// chords · trumpet · "C Trumpet"
const trumpet = note("<~@41 A@3 B C@3 B D@2 ~@12>".pickRestart({
  A: "[[eb2,eb3,bb3,eb4,g4,bb4] ~ [eb2,eb3,g3,eb4,g4] ~ [g2,g3,bb3,bb4] ~ [f2,f3,ab4,eb5] [eb3,eb4] [g2,eb3,d4,d5] ~ [ab2,ab3,c4,c5] ~@3 [eb2,eb3,g3,eb4,g4] ~ [g2,eb3,g3,bb3,eb4,bb4] ~, ~@4 [eb3,eb4]@3 ~ [bb3,bb4]@2 eb4@4 ~@4, ~@5 eb3 ~@3]/3", // Eb Gm Fm7 Eb Ebmaj7 Ab Eb Bb
  B: "[f2,eb3,f3,eb4,ab4,eb5] ~ [g2,eb3,g3,d4,bb4,d5] ~ [ab2,eb3,ab3,c4,eb4,c5] ~", // Fm7 Ebmaj7 Ab
  C: "[~@2 [eb2,eb3,g3,eb4,g4] ~ [g2,g3,bb3,d5] ~ [f2,f3,ab4,eb5] [eb3,eb4] [g2,eb3,d4,d5] ~ [ab2,ab3,c4,c5] ~@3 [eb2,eb3,g3,eb4,g4] ~ [g2,eb3,g3,bb3,eb4,bb4] ~, ~@4 [eb3,eb4]@3 ~ [bb3,bb4]@2 eb4@4 ~@4, ~@5 eb3 ~@3]/3", // Eb Gm Fm7 Eb Ebmaj7 Ab Eb Bb
  D: "[~@2 [eb2,eb3,g3,eb4,g4] ~ [g2,g3,bb3,d5] ~ [f2,f3,ab4,eb5] [eb3,eb4] [g2,eb3,d4,d5] ~ [ab2,ab3,c4,c5] ~, ~@4 [eb3,eb4]@3 ~ [bb3,bb4]@2 [eb3,eb4]@2]/2", // Eb Gm Fm7 Eb Ebmaj7 Ab Eb Bb …
})).s("gm_trumpet").gain(0.17)

// other · string ensemble 1 · "Violins 1"
const string_ensemble_1 = note(`<
  ~@4 A B C ~ A B C ~ D E C ~ D E C F ~ G H I J K L ~ A M N ~ A M O P Q R S T U V W X W X W X W X W Y Z Y A AA AB AC AD
  AE AF@3
>`.pickRestart({
  A: "bb5 eb6 d6 eb6 ab6 g6", B: "f6 g6 eb6 d6 c6@2", C: "bb5 ~", D: "bb5 c6 e6 g6 bb6 g6", E: "ab6 f6 d6 eb6 c6 d6",
  F: "[d4,a4]", G: "[d4,gb4]", H: "a5 d6 db6 d6 g6 gb6", I: "e6 gb6 d6 db6 b5@2", J: "a4@3 d5 gb5 a5",
  K: "bb5 g5 ab5 f5 d5 bb4", L: "g4 eb4 bb3 g3!2 bb3 eb4 g4!2 eb4 c4 g3", M: "f6 g6 e6 d6 c6@2", N: "bb5@2 ~",
  O: "f4 db4 bb3 f3!2 bb3 db4 f4!2 db4 bb3 f3", P: "f3 bb3 db4 f4!2 db4 bb3 f3!2 bb3 db4 f4",
  Q: "f4 db4 ab3 f3!2 ab3 db4 f4 gb4 eb4 c4 gb3", R: "f3 bb3 d4 f4 g4 d4 bb3 g3 ab3 bb3 d4 ab4",
  S: "bb4 g4 c4 bb3!2 c4 g4 bb4!2 ab4 d4 bb3", T: "bb3 eb4 g4 bb4!2 g4 eb4 bb3 c4 eb4 g4 c5",
  U: "bb4 ab4 eb4 bb3!2 eb4 ab4 bb4!2 ab4 d4 bb3", V: "[g4,bb4] ~ g4 ~ bb4 ~", W: "eb5 ~ d5 ~ c5 ~",
  X: "~@2 g4 ~ bb4 ~", Y: "g4 eb4 bb3 g3!2 bb3 eb4 g4!2 eb4 bb3 g3", Z: "g3 bb3 eb4 g4!2 eb4 bb3 g3!2 bb3 eb4 g4",
  AA: "f6 g6 bb6 ab6 g6 ab6", AB: "c7@2 bb6 ab6 bb6 c7", AC: "bb6 ab6 bb6 c7 bb6 ab6", AD: "bb6 c7 bb6 ab6 bb6 c7",
  AE: "g7 [bb6,c7] bb6 c7 bb6 c7 bb6 c7 bb6 c7 bb6 c7 bb6 c7 bb6 c7 bb6 c7 bb6 c7 bb6 c7 bb6 c7", // Bbsus2
  AF: "[bb6 c7 bb6 c7 bb6 c7 bb6 c7 bb6 c7 bb6 c7 bb6 c7 bb6 c7 bb6@40 ~@16]/3",
})).s("gm_string_ensemble_1").gain(0.04)

// chords · string ensemble 1 · "Violoncellos"
const string_ensemble_1_2 = note(`<
  A ~ A ~@6 B C D ~@2 E D F ~@2 G H I ~@2 I J H K H L H K H M N O P Q R S T U V W X Y V W X Y V Z AA Z AB@2 ~ AC@2 AD
  AE@3
>`.pickRestart({
  A: "[g3,bb3,eb4]@2 ~", B: "~ c4@2 ~@3 bb3@2 ~ ab3@2 ~", C: "~@5 c4@2 ~@3 db4@2", D: "~@6 bb3@2 ~ ab3@2 ~",
  E: "~@2 bb3@2 ~ c4@2 ~@5", F: "~@5 c4@2 ~@5", G: "[f3,a3]", H: "[g3,bb3]", I: "[gb3,a3]", J: "[ab3,bb3]",
  K: "[c4,eb4] [bb3,d4] [ab3,c4]", L: "[c3,bb3,e4]", M: "[c3,e4]", N: "[db3,f3]", O: "[f3,bb3]", P: "[f3,ab3]@2 eb3",
  Q: "f3 [g3,bb3] ab3", R: "[bb3,c4]@2 [bb3,d4]", S: "bb3@2 [c4,eb4]", T: "[bb3,eb4]@2 [ab3,bb3]",
  U: "[eb3,bb3] ~ [eb3,g3] ~ [eb3,g3] ~", V: "[eb3,f3] ~ eb3 ~ ab3 ~", W: "~@2 g3 ~ [g3,bb3] ~",
  X: "[eb3,f3] ~ [eb3,g3] ~ [eb3,ab3] ~", Y: "~@2 [eb3,g3] ~ [g3,bb3] ~", Z: "[eb3,g3,bb3]", AA: "[eb3,bb3]", AB: "eb3",
  AC: "[eb3,bb3]@2 [eb3,ab3]", AD: "g3 [g3,eb4] [bb3,g4] [g3,eb4]!2 [bb3,g4]",
  AE: "[[bb3,g4]@4 [g3,eb4]@4 [g3,eb4]@4 [bb3,g4]@4 [bb3,g4]@5 [g3,eb4]@5 [eb3,g3,bb3]@30 ~@16]/3", // Eb Cm Eb Cm Eb
})).s("gm_string_ensemble_1").gain(0.03)

// other · string ensemble 1 · "Contrabasses"
const string_ensemble_1_3 = note("<~@38 A B C D E F G H E F G H E ~@12>".pickRestart({
  A: "e1@2 f1", B: "g1@2 ab1", C: "bb1@2 bb1", D: "eb1 [eb1,eb2]@3 ~@4 [eb1,eb2]@4 ~@4 [g1,g2]@4 ~@4",
  E: "[f1,f2] ~ [g1,eb2] ~ [ab1,ab2] ~", F: "~@2 [eb1,eb2] ~ [g1,eb2] ~", G: "[f1,f2] ~ [g1,g2] ~ [ab1,ab2] ~",
  H: "~@2 [eb1,eb2] ~ [g1,g2] ~", // Eb G
})).s("gm_string_ensemble_1").gain(0.31)

// other · string ensemble 1 · "Contrabasses" · soft notes
const string_ensemble_1_soft = note("<~@25 A ~@8 B C D E ~@13 F@2 G@3 H ~@2 I@4>".pickRestart({
  A: "bb1", B: "db2", C: "gb1", D: "ab1@2 ab1", E: "ab1 g1 f1", F: "[eb1,eb2]", G: "[eb2,bb2]",
  H: "[eb2,bb2]@2 [eb2,bb2]", I: "[[eb2,bb2]@25 [eb2,bb2]@15 ~@8]/4",
})).s("gm_string_ensemble_1").gain(0.1)

stack(
  pizzicato_strings, pizzicato_strings_soft, tremolo_strings, electric_bass_finger, electric_bass_finger_2, trumpet,
  string_ensemble_1, string_ensemble_1_2, string_ensemble_1_3, string_ensemble_1_soft
)

More by Gabriel Fauré