Strudelify

Choral de Saint Antoine

attribué à HAYDN Franz Josef

KeyB♭ majorTempo70 bpm
0:00/0:00
// Choral de Saint Antoine — attribué à HAYDN Franz Josef
// 70 bpm, 2/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/940981; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 58 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(70/2)

// 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.

// other · clarinet · "A"
const clarinet = note(`<
  A B C D E A B C F G A B C D E A B C F G H I J K L ~ M N A B C F O@4 P@2 Q H I J K L ~ M N A B C F O@4 P@2 Q
>`.pickRestart({
  A: "d5@3 eb5 d5 ~ d5 ~", B: "eb5 d5", C: "c5 bb4", D: "c5@3 d5 eb5 c5 d5 bb4", E: "d5@4 c5 a4 bb4 c5",
  F: "c5@3 d5 bb4 ~ a4 ~", G: "c5@2 bb4 ~", H: "~@3 g4 f4 ~ f4 ~", I: "g4@3 a4 g4 ~ g4 ~", J: "a4@3 bb4 a4 ~ a4 ~",
  K: "bb4 ~ c5 ~ d5@4", L: "eb5@3 f5 ~@4", M: "~@3 d5 c5 ~ bb4 ~", N: "bb4 a4", O: "bb4/4", P: "bb4!2", Q: "bb4",
})).s("gm_clarinet").gain(0.3)

// other · clarinet · "A" · soft notes
const clarinet_soft = note("<~@20 A ~@3 B C D ~@12 A ~@3 B C D ~@12>".pickRestart({
  A: "f4@3 ~@5", B: "~@4 eb5 ~ eb5 ~", C: "d5@3 eb5 d5 ~ d5 ~", D: "c5@3 ~@5",
})).s("gm_clarinet").gain(0.2)

// other · clarinet · "C"
const clarinet_2 = note(`<
  A@2 B C D A@2 B E F A@2 B C D A@2 B E F G H C I J K L K A@2 B M N O N O P@2 Q G H C I J K L K A@2 B M N O N O P@2 Q
>`.pickRestart({
  A: "bb3/2", B: "a3 d4", C: "c4", D: "f4 ~", E: "c4 f3", F: "f3@3 ~", G: "a3", H: "db4", I: "bb3 ~ a3 ~ bb3@4",
  J: "g4", K: "f4", L: "eb4@3 e4", M: "c4@4 ~@2 f3 ~", N: "f3@3 g3 ab3@2 ab3@2", O: "g3@3 f3 g3 f3 g3 eb3", P: "f3!2",
  Q: "f3",
})).s("gm_clarinet").gain(0.35)

// other · clarinet · "D"
const clarinet_3 = note(`<
  A B C D E A B C F G A B C D E A B C F G H@3 I ~@3 J A B C K L@4 M@2 L H@3 I ~@3 J A B C K L@4 M@2 L
>`.pickRestart({
  A: "bb3 bb2", B: "eb3 bb2", C: "f3 gb3 g3 f3", D: "eb3@3 e3", E: "f3 ~ f3 ~@5", F: "eb3 f3", G: "bb2 ~ f3 ~ bb2@4",
  H: "f3", I: "d3 ~ c3 ~ bb2@4", J: "~@2 f3 ~ f3@4", K: "eb3@4 f3 ~ f3 ~", L: "bb2", M: "bb2!2",
})).s("gm_clarinet").gain(0.35)

stack(clarinet, clarinet_soft, clarinet_2, clarinet_3)