Strudelify

Salve regina in F major

Nicola Porpora

KeyG majorTempo40 bpm
0:00/0:00
// Salve regina in F major — Nicola Porpora
// 40 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 2 "Sassofono soprano" soprano sax (copy of ch 1 "Sassofono soprano" soprano sax)
// note: Transcription provider: pdmx. https://musescore.com/score/6083466; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 38 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(40/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 · soprano sax · "Sassofono soprano"
const soprano_sax = note("<A B C D E F G H ~@16 I J K ~@8 L M N>".pickRestart({
  A: "f4@2 a4@2 f4@2 a4@2 f4@2 a4@2 f4@2 a4@2 f4 a4 f4 a4 f4 a4 f4 a4 f4 a4 f4 a4 f4 a4 f4 a4",
  B: "a#4 c5 d5@2 d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ f4@2 e4@6 f4 g4 f4@2 a4@2 c5@2 f5@2",
  C: "a#4 ~ a#4 ~ a#4 ~ a#4 ~ [g5,a5] g5@4 ~ f5 g5 a4 ~ a4 ~ a4 ~ a4 ~ [f5,g5] f5@4 ~ e5 f5, ~@9 a5 ~@15 g5 ~@6", // Gsus2 Fsus2
  D: "a#4 ~ a#4 ~ a#4 ~ a#4 ~ [g5,a5]!6 f5 g5 a4 ~ a4 ~ a4 ~ a4 ~ [f5,g5]!6 e5 f5", // Gsus2 Fsus2
  E: "g4@2 b4@2 c5@5 e5 d5 c5 [c5,d5]!5 a5 f5 c5 [c5,d5]!5 d5 e5 f5 g5@2 a#4@2", // Csus2
  F: "a4 a5 g5 f5 [f5,g5]!5 a5 g5 f5 [f5,g5]!5 a5 g5 f5!2 a5 g5 f5 d5 f5 d5 f5 c5 f5 c5 f5", // Fsus2
  G: "a#4@2 a#5@2 a5@2 f5@2 g5@2 d5@2 [e5,f5]!4 f5@2 a#4@2 [a#4,c5]!4 g5@2 a#4@2 [a#4,c5]!4", // Fmaj7 A#sus2
  H: "a4 c5 f5@2 [f4,g4]!3 g4 a4@4 g4@2 f4 g4 a4 c5 f5@2 f4@3 g4 a4@4 g4@2 f4@2", // Fsus2
  I: "f5 a5 g5 f5!2 a5 g5 f5 d5 f5 d5 f5 c5 f5 c5 f5 a#4@2 a#5@2 a5@2 f5@2 g5@2 d5@2 [e5,f5]!4", // Fmaj7
  J: "f5@2 a#4@2 [a#4,c5]!4 g5@2 a#4@2 [a#4,c5]!4 a4 c5 f5@2 f4@3 g4 a4@4 g4@2 f4 g4", K: "f4@3 ~@5",
  L: "a5 c6 b5 a5!2 c6 b5 a5 f5 a5 f5 a5 e5 a5 e5 a5 d5@2 d6@2 c6@2 a5@2 b5@2 f#5@2 [g#5,a5]!4", // Amaj7
  M: "a5@2 d5@2 [d5,e5]!4 b5@2 d5@2 [d5,e5]!4 c5 e5 a5@2 a4@3 b4 c5@4 b4@2 a4 b4", // Dsus2
  N: "c5 e5 a5@2 a4@3 b4 [b4,c5]!5 c5 a4@2 a4@8 ~@8", // Cmaj7
})).s("gm_soprano_sax").gain(0.3)

// other · soprano sax · "Sassofono soprano" · soft notes
const soprano_sax_soft = note(`<
  ~@8
  [f4@2 a4@2 f4@2 a4@2 f4@2 a4@2 f4@2 a4@2 f4 a4 f4 a4 f4 a4 f4 a4 f4 a4 f4 a4 f4 a4 f4 a4]
  [a#4 c5 d5@2 d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ f4@2 e4@6 f4 g4 f4@2 a4@2 c5@2 f5@2]
  ~@28
>`).s("gm_soprano_sax").gain(0.2)

// other · tenor sax · "Sassofono tenore"
const tenor_sax = note(`<
  A B C@2 D E F G A H I J K L M N@2 O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI
>`.pickRestart({
  A: "c3!4 d3!4", B: "d3!2 g3 f3 e3!2 f3!2", C: "g3!4 f3!4", D: "e3!2 e3@2 f3!2 g3@2", E: "f3 a3 c4@2 d4@2 d4 c4",
  F: "e4 f4 d4 c4 a#3!4", G: "a3@2 a3@2 g3@4 f3@3 e3 d3@2 c3@2", H: "d3!4 e3!2 f3!2", I: "g3!4 a3 a#3 c4 d4",
  J: "c4@3 c4 c4@2 c4@2", K: "c4@2 c4@2 c4 a#3 a3 f3", L: "g3 a3 e3 f3 g3 a3 a#3 a3", M: "a#3 g3 f3!2 e3!2 f3@2",
  N: "[e3 g3 c4!2 c4@6 c4!2 b3!2 b3@2]/2", O: "c4 g3!3 f3!2 f3@2", P: "~ c4!2 e3 ~ a#3!2 d3", Q: "~ a3!2 e3 ~ g3!2 d3",
  R: "c4!2 a#3!2 c4!2 a#3!2", S: "a3!2 a#3!2 a3 g3 f3@2", T: "f3@2 f3 e3 f3!4", U: "f3@2 e3@2 f3!4",
  V: "f3@2 f3@2 g3 a3 g3@2", W: "a#3!2 g3!2 f3@3 e3", X: "f3@3 e3 ~ f3!2 a2", Y: "~ c4!2 e3 f3!2 f3@2",
  Z: "f#3!4 g3!2 g3@2", AA: "g#3!4 a3!2 a3@2", AB: "a3!2 c4 b3 a3!2 b3!2", AC: "a3!3 g#3 a3!2 a3@2",
  AD: "~ b3 a3 c3 ~ g#3 g#3@2", AE: "a3!2 b3!2 c4 b3 a3@2", AF: "a3@2 g#3@2 a3!4", AG: "a3@2 a3@2 g#3 a3 b3 g#3",
  AH: "a3!2 b3 g#3 a3!2 f3 e3", AI: "e3 a3!2 g#3 a3@2 ~@2",
})).s("gm_tenor_sax").gain(0.3)

// other · tenor sax · "Sassofono tenore"
const tenor_sax_2 = note(`<
  A B C@2 D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK
>`.pickRestart({
  A: "a3!4 f3!4", B: "a#3!2 d4@2 c4!4", C: "d4!2 e4!2 c4!2 d4!2", D: "c4!2 c4@2 c4!3 ~", E: "c4 f4 a4@2 a4@2 a#4 f4",
  F: "a#4 c5 g4@2 f4!2 g4!2", G: "f4!3 e4 c4 d4 g3!2", H: "a3!8", I: "a#3!4 c4!4", J: "d4!2 e4!2 f4 e4 f4!2",
  K: "g4@3 a4!2 g4 a4@2", L: "a4 g4 a4@2 g4@2 e4 c4", M: "e4 f4 c4!2 e4 f4 e4!2", N: "f4 c4!2 d4 c4!3 b3",
  O: "c4 e4 g4!2 g4@4", P: "g4 f4!3 g4!2 g4@2", Q: "g4 c4 e4!2 a3 c4 d4@2", R: "~ e4 g4 e4 ~ f4!2 d4",
  S: "~ a4 e4!2 ~ g4 d4!2", T: "f4!8", U: "f4!2 e4!2 f4 e4 c4 d4", V: "c4 d4 c4!4 d4!2", W: "c4@2 c4@2 c4!4",
  X: "d4@2 d4 c4 e4 f4!2 e4", Y: "f4!2 c4!4 d4 c4", Z: "c4 d4!2 c4 ~ a3 c4 a3", AA: "~ e4 g4 c4!3 c4@2",
  AB: "d4!6 d4@2", AC: "e4!6 e4@2", AD: "d4!2 a4 f4 e4!4", AE: "e4 f4 e4!4 f#4@2", AF: "~ g#4 e4 a3 ~ e4 e4@2",
  AG: "e4!4 a4 g#4 a4 f#4", AH: "e4@2 e4@2 e4!4", AI: "f4@2 f4 e4 d4 e4 f#4 e4", AJ: "d4!2 e4!2 e4@2 b3!2",
  AK: "c4 d4 f4 e4 e4@2 ~@2",
})).s("gm_tenor_sax").gain(0.3)

// other · baritone sax · "Sassofono baritono"
const baritone_sax = note(`<
  A B C D E F G H A I J K L@2 M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ
>`.pickRestart({
  A: "f3!2 e3!2 d3!2 c3!2", B: "a#2!2 b2!2 c3!2 a2!2", C: "g2!2 c3!2 f3!2 d3!2", D: "g3!2 c3!2 f3!2 b2!2",
  E: "c3!2 a#2!2 a2!2 e3!2", F: "f3!2 e3!2 d3 c3 a#2 a2", G: "g2 f2 a#2 c3 d3!2 e3!2", H: "f3 d3 a#2 c3 f3 d3 a#2 c3",
  I: "a#2!6 a2!2", J: "g2!2 c3!2 f3 g3 a3 b2", K: "c3!3 f2 c3!4", L: "c3!8", M: "d3 e3 f3 a#2 c3!2 d3 g2",
  N: "c3!4 a#2!4", O: "a2!2 g#2!2 g2!2 f3!2", P: "e3!2 c3!2 f3!2 b2!2", Q: "~ c3!3 ~ d3!2 d2",
  R: "~ c4!2 c3 ~ a#3!2 a#2", S: "a2!2 a#2!2 a2!2 a#2!2", T: "f3!2 c3!2 f2 g2 a2 a#2", U: "g2 a#2 c3!2 f2!2 b2!2",
  V: "c3@4 f2 f3 e3!2", W: "d3 c3 a#2 a2 g2 f2 a#2 c3", X: "d3!2 e3!2 f3 a2 a#2 c3", Y: "f3 d3 a#2 c3 ~ f3!2 f2",
  Z: "~ c3!3 f3!2 d#3!2", AA: "d3!4 g3!2 f3!2", AB: "e3!4 a2 a3 g3!2", AC: "f3!2 e3 d3 c3!2 g#2!2",
  AD: "a2 d3 e3 e2 a2!2 d#3!2", AE: "~ e3!3 ~ e3!2 d3", AF: "c3!2 g#2!2 a2 b2 c3 d#2", AG: "e3@4 a2 a3 g3!2",
  AH: "f3 e3 d3 c3 b2 a2 d3 e3", AI: "f3 f#3 g#3 e3 a3 c3 d3 e3", AJ: "a2 f3 d3 e3 a2@2 ~@2",
})).s("gm_baritone_sax").gain(0.3)

stack(soprano_sax, soprano_sax_soft, tenor_sax, tenor_sax_2, baritone_sax)