Strudelify

Ave Maria Op.41

Wilhelm Fitzanhagen Op. 41

KeyD majorTempo120 bpm
0:00/0:00
// Ave Maria Op.41 — Wilhelm Fitzanhagen Op. 41
// 120 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/4891301; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 74 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 · [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 · cello · "Violoncello II"
const cello = note(`<
  A@2 B C D E F G H I J K L M N ~@7 O P Q R ~@4 S T U V ~ I W X Y Z AA AB@2 AC ~@2 AD AE AF AG ~@4 AH AI AJ AK ~@2 AL@2
  AM AN AO AP W AQ ~@4 AR ~
>`.pickRestart({
  A: "[a4@4 b4@6 a4@2 e4 ~ f#4 ~]/2", B: "g4@6 a4 g4 f#4@4 f4@4", C: "f#4@2 e4 d#4", D: "f#4 e4 d4 c#4",
  E: "e4 d4 b3 g3", F: "f#3@8 e3 e3@5 d3@2, ~@9 f#3 ~@6", G: "d3", H: "f#3!2", I: "g3 [g3,b3]", J: "a3 g#3 g3@2",
  K: "g3 f#3", L: "g3@3 a3 b3@2 a3 g3", M: "e3 a3", N: "b3 c#4", O: "e5@6 f#5 e5 d5@4 c#5@4", P: "e5@2 d5@2 c#5 ~ b4 ~",
  Q: "a4@3 g#4", R: "g#4 a4", S: "~ g#3@3", T: "g3@2 f#3 b3", U: "a3 g#3", V: "g3", W: "a#3", X: "a3", Y: "g3 e4",
  Z: "e4@3 d4", AA: "d4@3 c#4", AB: "[d4@3 d#4]/2", AC: "e4", AD: "c#3 c#4 d4 e4", AE: "d4 e4", AF: "d4 c#4",
  AG: "d4@3 ~", AH: "f#4@2 e4@2 d#4 ~ e4 ~", AI: "f4 f#4", AJ: "g4@2 b4 a4", AK: "a4@2 b4@2 c#5 ~@3",
  AL: "[a5@5 ~ a4@2]/2", AM: "a4 b4", AN: "b4 d5", AO: "f#5@3 e5", AP: "e5 d5", AQ: "b3 ~", AR: "d4 ~@3",
})).s("gm_cello").gain(0.19)

// other · cello · "Violoncello II" · soft notes
const cello_soft = note(`<
  ~@15 A B C D E ~ F ~@4 G H I J K ~@3 L ~@9 M N ~@3 O P Q R S ~@3 T U V ~@7 W I X@2 S Y S
>`.pickRestart({
  A: "d4@3 a3", B: "a3 e3", C: "f#3 g#3 a3@2", D: "a3 g3 a3@2", E: "b3 c#4 d4 ~", F: "~@3 e4", G: "e4@3 b3 c#4@4",
  H: "c#4 d4@3", I: "a3", J: "a3 a#3 f3@2", K: "f3 ~@3", L: "f#3!2", M: "d3", N: "c3", O: "~@3 d4", P: "b4@4 a4@3 b4",
  Q: "a4 g4@2 b3", R: "f#4@3 e4", S: "d4", T: "~@6 d5 ~", U: "f#5 e5 d#5 e5", V: "f5 f#5", W: "~@4 a#3@2 d4 a#3",
  X: "c#4", Y: "~@7 f#4",
})).s("gm_cello").gain(0.11)

// other · cello · "Violoncello III"
const cello_2 = note(`<
  A B C D E F G H I@2 J K L M N O ~ P L Q R S T U V W X Y ~@2 Z AA AB AC I N AD@2 AE AF AG AH AI AJ ~@2 AK AL AM AN AI
  AO AP AQ AE AR AS AT AU AV AW@2 AX AY AZ BA AQ BB AQ AP@2 AQ ~@2
>`.pickRestart({
  A: "f#4", B: "e4", C: "d4", D: "c#4 c4", E: "b3 a#3", F: "a3@2 d3 e3", G: "[d3,a3] [g3,c#4]", H: "[f#3,d4]",
  I: "d3!2", J: "c#3", K: "a#3 b3", L: "d3", M: "c#3 d3", N: "d3 e3", O: "d3@3 ~", P: "~ e3@2 c#3", Q: "d3 e3 d3 a3",
  R: "a3!2", S: "a3@2 b3 a3 g#3@4", T: "a3 e3 [f#3,e4]@2", U: "[f#3,d4] [e3,d4]", V: "[e3,c#4]@3 [f3,d4]",
  W: "[f3,d4] [f#3,c#4]", X: "g3@3 f#3 [g3,a3]@4", Y: "a3, g3 ~@3", Z: "~@6 e3 f3", AA: "e3@2 d3!2", AB: "d3 [a2,f3]",
  AC: "[a2,e3]", AD: "f#3/2", AE: "g3!2", AF: "a3", AG: "b3@3 a3, g3", AH: "[f#3,a3]", AI: "g3 f#3", AJ: "e3",
  AK: "g3@3 a3", AL: "a3 b3", AM: "a3 g3", AN: "f#3@3 ~", AO: "e3@3 ~", AP: "g3", AQ: "f#3", AR: "g#3 a3",
  AS: "b3@2 d4 c#4", AT: "d4 f#4", AU: "g4!2", AV: "g#4 a4", AW: "[c#5@5 ~ g4@2]/2", AX: "f#4 a4", AY: "g4 [g4,b4]",
  AZ: "[g#4,a4]", BA: "[f#4,b4]", BB: "g3 e3",
})).s("gm_cello").gain(0.15)

// other · cello · "Violoncello III" · soft notes
const cello_soft_2 = note("<~@27 A B C D ~@13 E F ~@26 G H>".pickRestart({
  A: "~ f#3@3", B: "d#3", C: "d#3 d3@3", D: "d3@3 ~", E: "f3 g3", F: "g3", G: "~@5 f#4 d4 a3", H: "f#3",
})).s("gm_cello").gain(0.04)

// other · cello · "Violoncello IV"
const cello_3 = note(`<
  A B C D E F G H ~ I J K L M N ~@2 O P Q R S T U V@2 ~@4 W X Y Z ~ I AA K AB AC V H AD C ~ AE AF AG G AH ~@4 AI@4 ~@2
  AJ@2 AK AL AM AN AO@2 ~@6
>`.pickRestart({
  A: "d4", B: "c#4", C: "b3", D: "a#3 a3", E: "g#3 g3", F: "f#3 g2", G: "a2!2", H: "[d2,a2]", I: "g2 e2", J: "a2@3 a#2",
  K: "b2", L: "g2", M: "g2 f#2", N: "e2 a2", O: "b2 a2", P: "g2@3 f#2", Q: "e2 ~ d2 d3, ~ a2@2 ~", R: "c#3 f#3",
  S: "[b2,f#3]@2 e3 d3", T: "c#3 f#2", U: "b2 e3", V: "a2", W: "~ e2", X: "a2@2 b2 e2", Y: "a2 d3", Z: "d3 c#3",
  AA: "c#2@2 c2 c3", AB: "[e2,b2] [d2,a#2]", AC: "c#2@3 d2, a2", AD: "~ b3", AE: "~@3 a#3", AF: "a3 a2 b2 c#3",
  AG: "d3 g2", AH: "[d2,a2]@3 ~", AI: "d2", AJ: "[[d2,a2]@5 ~ a3 e4]/2", AK: "d4 f#4", AL: "e4!2", AM: "c#5", AN: "b4",
  AO: "d3",
})).s("gm_cello").gain(0.13)

// other · cello · "Violoncello IV" · soft notes
const cello_soft_3 = note(`<
  ~@8 A ~@6 B C ~@9 D E F G H ~@3 A ~@9 I J ~@4 K L M N ~@4 O@2 ~@8 E M P@2 Q P
>`.pickRestart({
  A: "d3 b2", B: "[d2,a2]@3 d3", C: "c#3", D: "a2!2", E: "d3", F: "f2", G: "a#2", H: "b2", I: "b3", J: "c4@2 b3 ~",
  K: "~ b3", L: "b3@3 ~", M: "a2", N: "[d3,a3]", O: "d2", P: "[d2,a2]", Q: "a4@2 f#4@2 d4 a3 f#3 d3",
})).s("gm_cello").gain(0.1)

stack(cello, cello_soft, cello_2, cello_soft_2, cello_3, cello_soft_3)