Strudelify

Requiem: Pie Jesu

Andrew Lloyd Webber

KeyA♭ majorTempo38 bpm
0:00/0:00
// Requiem: Pie Jesu — Andrew Lloyd Webber
// 38 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 33 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(38/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 · piccolo · "Flute"
const piccolo = note("<A B C ~@8 D E D E ~@3 A B F ~@12>".pickRestart({
  A: "ab4!4 g4!4", B: "f4!4 eb4!4", C: "f4", D: "ab3@2 f4 bb4 db5@2 bb4@2 f4@2 bb4@2 db5@4",
  E: "ab3@2 eb4 bb4 db5@2 bb4@2 eb4@2 bb4@2 c5@2 eb4@2", F: "f4 ~",
})).s("gm_piccolo").gain(0.4).pan(0.6)

// other · drawbar organ · "Organ"
const drawbar_organ = note("<~@3 A B A B C D C E A B A B C D F G H I J K L K M N O J@2 P@3>".pickRestart({
  A: "db2", B: "eb2", C: "db2 eb2", D: "c2 f2", E: "ab1", F: "[db2,bb2] ~", G: "~@6 c5 eb5",
  H: "c5 bb4 ab4@8 ~@2 c5@2 eb5@2, ab2", I: "c5 bb4 ab4@6 [db4,f4,ab4]@4 [db4,f4,ab4]@4, ab2", J: "ab2", K: "[eb1,eb2]",
  L: "[ab1,ab2]", M: "db3", N: "c3!2", O: "[bb1,bb2] [eb2,eb3]",
  P: "[db2@8 [bb1,bb2]@5 [eb1,eb2]@5 ~ [ab1,ab2]@5 [ab1,ab2]@6 ~ [ab1,ab2]@7 ab1@4 ~@6]/3", // Bb Eb Ab
})).s("gm_drawbar_organ").gain(0.4).pan(0.4)

// other · drawbar organ · "Organ" · soft notes · Eb
const drawbar_organ_soft = note(`<
  [~@6 c5 eb5, ab2]
  [c5 bb4 ab4@10 c5@2 eb5@2, ab2]
  [c5 bb4 ab4@10 ~@4, db2]
  ~@14
  [~ [eb2,eb3]]
  ab2
  ~@14
>`).s("gm_drawbar_organ").gain(0.16).pan(0.4)

// other · orchestral harp · "Harp"
const orchestral_harp = note("<A B C ~@7 D E F G H I J K L M N ~@3 O ~@8>".pickRestart({
  A: "ab2@3 eb3 c4@2 ab3@2 eb4@2 c4@2 ab3@4", B: "ab2@3 eb3 c4@2 ab3@2 eb4@2 c4@2 eb3@4",
  C: "db2@2 ab2 f3 ab3@2 c4@2 db4@4 ~@4", D: "ab2 eb3 c4 eb3 c4 eb3 c4 eb3",
  E: "[ab2,ab3]@2 [f3,f4] [bb3,bb4] [db4,db5]@2 [bb3,bb4]@2 [f3,f4]@2 [bb3,bb4]@2 [db4,db5]@4", // Ab F Bb Db Bb F Bb Db
  F: "[ab2,bb3]@2 [eb3,eb4] [bb3,bb4] [db4,db5]@2 [bb3,bb4]@2 [eb3,eb4]@2 [bb3,bb4]@2 [c4,c5]@2 [eb3,eb4]@2", // Absus2 Eb Bb Db Bb Eb Bb C …
  G: "[db2,ab3]@2 [ab2,f4] [f3,bb4] [bb3,db5]@2 [f3,bb4]@2 [db3,f4]@2 [f3,bb4]@2 [bb3,db5]@4", // Db5 Db Bb5 Bbm Bb5 Db Bb5 Bbm
  H: "[eb2,ab3]@2 [db3,eb4] [f3,bb4] [g3,db5]@2 [eb3,bb4]@2 [db3,eb4]@2 [eb3,bb4]@2 c5@2 eb4@2, ~@3 g3", // Ab5 Dbsus2 Bb5 Gdim Eb5 Dbsus2 Eb5
  I: "db2@2 ab2 db3 f3@4 eb2@2 bb2 eb3 bb3@4", J: "ab2@2 eb3 ab3 c4@2 ab3@2 f2@2 c3@2 ab3@2 f3@2",
  K: "[bb1,bb2] [eb2,eb3]", L: "ab2 eb3 ab3 eb3 [ab2,g3] eb3 g3 eb3", M: "[ab2,f3] eb3 f3 eb3 ab2 eb3 c4 eb3",
  N: "db2 ab2 f3 ab2 [eb2,eb3]!2 [eb2,eb3]@2", O: "eb2 bb2 eb3 bb2 g3 bb2 eb3 bb2",
})).s("gm_orchestral_harp").gain(0.4).pan(0.3)

// other · whistle · "Solo Boy"
const whistle = note("<~@10 A B C B D E F G H ~ I J K J L E M N O P Q R@2>".pickRestart({
  A: "~@6 c5!2", B: "db5@2 bb4@3 ~ f4 db5", C: "c5@2 bb4@3 ~ c5!2", D: "c5@2 bb4@4 ~ c5",
  E: "f5@2 eb5 db5 c5 bb4 ab4 bb4", F: "c5@2 c5@2 c5@2 ab4@2 c5@2 ab4 eb5@5", G: "~@2 eb5 db5 c5 bb4 ab4 bb4",
  H: "ab4 eb4 c4@8 ~@6", I: "~@6 eb4!2", J: "f4@2 db4@3 ~ db4 f4", K: "eb4@2 db4@3 ~ eb4!2", L: "eb4@2 db4@4 ~ c5",
  M: "c5@2 c5@2 c5@2 ab4@2 c5@2 ab4 c5@5", N: "~@2 eb5 db5 c5 bb4 ab4 g4", O: "ab4 eb4 c4@6 ~@4 ab4@2 c5@2",
  P: "eb4 db4 c4@6 ~@4 ab4@2 c5@2", Q: "ab4 g4 f4@4 ~@7 c5@3", R: "[eb5@3 c5 bb4 ~ ab4@17 ~@9]/2",
})).s("gm_whistle").gain(0.48).pan(0.3)

// chords · synth strings 1 · "Choir"
const synth_strings_1 = note("<~@15 A B C D ~ E F G H I ~@3 J K ~@3>".pickRestart({
  A: "[ab2,f3,db4] [bb2,g3,eb4]", B: "eb3@4 c3 ~ [c3,ab3,c4]@2, [ab3,c4]@5 ~@3", C: "[bb2,f3,db4] [eb3,g3,eb4]",
  D: "[ab2,eb3,c4]@5 ~@3", E: "~@6 [eb3,ab3,c4,eb4]!2",
  F: "[ab2,bb3,db4,f4]@2 [ab2,f3,bb3,db4]@3 ~ [ab2,f3,bb3,db4] [ab2,bb3,db4,f4]", // Bbm7
  G: "[bb2,g3,c4,eb4]@2 [bb2,g3,bb3,db4]@3 ~ [ab2,eb3,ab3,c4,eb4]!2", // Cm7 Gdim Ab
  H: "[ab2,f3,bb3,db4,f4]@2 [ab2,f3,bb3,db4]@3 ~ [ab2,f3,db4] [ab2,bb3,db4,f4]", // Bbm7 Db Bbm7
  I: "[eb2,g3,c4,eb4] [eb2,g3,bb3,db4]@2 ~", J: "ab3!4 g3!3 ~", K: "f3!4 eb3!3 ~",
})).s("gm_synth_strings_1").gain(0.36)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note("<A@2 B C D C D E F E G C D C D E F E G H I J K L M N O P ~@5>".pickRestart({
  A: "ab2", B: "db2@3 ~", C: "db2", D: "eb2", E: "db2 eb2", F: "c2 f2", G: "ab1", H: "c4@6 eb4 ab4, db2",
  I: "[db2,c4,f4]@2 [bb3,db4,f4]!2, ~ eb2", J: "[bb3,db4,f4] [db4,f4,bb4] [f4,bb4,db5] [bb3,db4,f4], ab2",
  K: "[g3,db4,eb4] [bb3,db4,g4] [db4,eb4,bb4] [ab3,c4,eb4], [eb1,eb2]", // Eb7 Gdim Eb7 Ab Eb
  L: "[bb3,db4,f4] [db4,f4,bb4] [f4,bb4,db5] [bb3,db4,f4], [ab1,ab2]", // Bbm Ab
  M: "[g3,db4,eb4] [bb3,db4,g4] [db4,eb4,bb4] [g3,db4,eb4], [eb1,eb2]", // Eb7 Gdim Eb7 Eb
  N: "[f4,ab4]@4 [bb3,eb4,g4]@2 [g4,c5,eb5] [bb4,db5], db3", O: "[ab4,c5] [c5,eb5]!2 [ab4,c5] [c3,ab3,c4]@4, c3 ~",
  P: "[bb1,bb2,ab3,db4,f4] [eb2,eb3,bb3,db4,g4]", // Bbm7 Eb7
})).s("gm_string_ensemble_1").gain(0.48)

// chords · string ensemble 1 · "Strings" · soft notes
const string_ensemble_1_soft = note("<~@28 A@2 B@3>".pickRestart({
  A: "[ab2,eb4,c5]", // Ab
  B: "[[db2,ab3,db4,f4]@8 [bb1,bb2,ab3,db4,f4]@5 [eb1,eb2,bb3,db4,g4]@5 ~ [ab1,ab2,ab3,db4,f4,ab4]@5 [ab1,ab2,f3,bb3,db4,f4]@6 ~ [ab1,ab2,eb3,ab3,c4,eb4]@7 ab1@4 ~@6]/3", // Db Bbm7 Eb7 Db Bbm7 Ab
})).s("gm_string_ensemble_1").gain(0.24)

stack(
  piccolo, drawbar_organ, drawbar_organ_soft, orchestral_harp, whistle, synth_strings_1, string_ensemble_1,
  string_ensemble_1_soft
)

More by Andrew Lloyd Webber