Strudelify

Exultate justi in Domino

Ludovico Grossi da Viadana

KeyF majorTempo120 bpm
0:00/0:00
// Exultate justi in Domino — Ludovico Grossi da Viadana
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (3/4 at bar 1, 4/4 at bar 7, 3/4 at bar 62, 4/4 at bar 68) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/1717386; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 72 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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.

// bass · choir aahs · "Bass"
const bass = note(`<
  A@2 B C@2 D E F G H I ~@2 J F K L M N ~@4 O P Q R M@2 S T U V W X Q Y Z M ~@5 AA AB AC J AD AE AF ~@10 A@2 B C@2 D AG
  AH@4
>`.pickRestart({
  A: "[f3@2 f3 d3@2 c3 f3!2]/2", B: "a3 g3@2 g3", C: "[f3!2 g3 a3@2 bb3 g3@2]/2", D: "f3 c3@2 c3", E: "f2@2 f3!2",
  F: "bb2@2 bb2!2 f3@2 d3@2", G: "c3@2 f3!2", H: "bb2@2 bb2!2 f3@2 g3@2", I: "c3 ~", J: "~@2 f3!2", K: "c3 f2",
  L: "bb2", M: "c3", N: "f2 ~", O: "~ f3", P: "f3@2 e3 d3 c3@4", Q: "c3 f3", R: "f3@2 e3 d3", S: "f2", T: "~ bb2 f3!2",
  U: "bb2 f3", V: "~@3 bb2", W: "f3!2 bb3@2", X: "c3!2", Y: "g3 f3", Z: "g3", AA: "~@2 c4!2", AB: "bb3@2 bb3!2 a3@4",
  AC: "g3 ~", AD: "c4@2 c4!2 bb3@4", AE: "f3@2 f3!2", AF: "c3@2 c3!2 d3@4", AG: "f2@3 ~",
  AH: "[~ bb2@2 d3@2 a2@2 bb2@3 bb2 f2@4 ~]/4",
})).s("gm_synth_bass_1").gain(0.3)

// bass · choir aahs · "Bass" · soft notes
const bass_soft = note("<~@18 A B C B D ~@28 E F G F G H I J K L ~@11>".pickRestart({
  A: "~@2 f3!2", B: "g3@2 ~@2 g3 ~ g3 ~ a3@2 ~@2 a3 ~ a3 ~", C: "bb3 ~ bb3 ~ f3 ~ f3 ~", D: "bb3 ~ f3 ~", E: "a2 c3",
  F: "f3@2 f3!2 f3@2 g3@2", G: "a3@2 f3 c3", H: "a2@2 a2 g2 f2@4", I: "f2 g2", J: "a2@3 bb2", K: "c3", L: "f2",
})).s("gm_synth_bass_1").gain(0.2)

stack(bass, bass_soft)