Strudelify

King William's March

Jeremiah Clarke

KeyF majorTempo130 bpm
0:00/0:00
// King William's March — Jeremiah Clarke
// 130 bpm, 3/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/6105068; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 64 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · violin · "Violino"
const violin = note(`<
  A B C D E F G H I J K L ~@4 A B C D E F G H I J K L ~@7 M N O P Q ~ R S R T U V W X ~@2 Y Z AA AB AC AD AE ~ AF AG
  AH@3
>`.pickRestart({
  A: "c5@5 f5@4 e5 ~ f5 e5 d5 ~ e5", B: "f5@5 c5@5 ~ f5@5", C: "g5@5 f5@5 ~ e5@5", D: "c5@5 e5@5 ~ [c4,g4]@5",
  E: "a4@3 bb4@2 a4@5 ~ a5@5", F: "g4@3 a4@2 g4@5 ~ g5@5", G: "f4@3 g4@2 f4@5 ~ c5@5", H: "c5", I: "f4@5 f4@5 ~ bb4@5",
  J: "g4@5 g4@5 ~ c5@5", K: "a4@3 bb4@2 c5@3 d5@3 e5@2 d5@3", L: "c5@11 ~@5", M: "~@3 d5@2 f5@3 d5@3 a4@5",
  N: "g5@3 f5@2 g5@3 f5@3 e5@2 d5@3", O: "db5", P: "d4", Q: "db4", R: "g5@11 g5@2 e5@3", S: "f5@5 d5@5 ~ f5@5",
  T: "e5@5 gb5 g5 [gb5,g5] gb5 [gb5,g5] g5 [gb5,g5] gb5 [gb5,g5] g5 [gb5,g5]", // Gmaj7
  U: "d5@5 e5 f5 [e5,f5] e5 [e5,f5] f5 [e5,f5] e5 [e5,f5] f5 [e5,f5]", // Fmaj7
  V: "c5@5 db5 e5 [db5,e5] db5 [db5,e5] e5 [db5,e5] db5 [db5,e5] e5 [db5,e5]", W: "db5@3 f5@2 e5@3 d5@3 db5@2 bb4@3",
  X: "a4@3 ab4@2 ab4@5 ~@6", Y: "b4@5 g5@5 ~ f5@5", Z: "e5@5 c6@5 ~ bb5@5", AA: "a5@11 ~@5", AB: "e5@5 f5@5 ~ d5@5",
  AC: "c5@5 bb4@5 ~ a4@5", AD: "f4@5 c4@5 ~ g4@5", AE: "a4@11 ~@5", AF: "~@4 c5 bb4 ~ bb4!3 ~ a4!3 ~ a4",
  AG: "f4@7 c4@9", AH: "[g4@4 a4@13 ~@7]/3",
})).s("gm_violin").gain(0.3)

// other · violin · "Violino" · soft notes
const violin_soft = note("<~@12 A B C D ~@12 A B C E F G H I ~@22 J K ~@4>".pickRestart({
  A: "f4@5 f4@5 ~ bb4@5", B: "g4@5 g4@5 ~ c5@5", C: "a4@3 bb4@2 c5@3 d5@3 e5@2 d5@3", D: "c5", E: "c5@11 ~@5",
  F: "a4@3 g4@2 f4@3 g4@3 a4@2 f4@3", G: "bb4@3 a4@2 g4@3 a4@3 bb4@2 g4@3", H: "db5@3 bb4@2 a4@3 bb4@3 db5@2 f5@3",
  I: "e5@3 ~@13", J: "e5@5 f5@5 ~ d5@5", K: "c5!2 ~ c5 ~@12",
})).s("gm_violin").gain(0.2)

// other · viola
const viola = note(`<
  A B C D E F G H I J K L ~@4 A B C D E F G H I J K L ~@7 M N O P Q R S R S T U V W X Y Z AA AB AC AD AE AF AB ~ AG AH
  AI@3
>`.pickRestart({
  A: "a4@5 g4@5 ~ bb4@5", B: "a4@11 c4@5", C: "d4@5 d4@5 ~ e4@2 f4@3", D: "f4@5 e4@5 ~ e4@5",
  E: "f4@3 g4@2 f4@5 ~ f5@5", F: "e4@3 f4@2 e4@5 ~ e5@5", G: "d4@3 e4@2 d4@5 ~ f4@5", H: "g4@5 g3@3 a3@3 bb3@2 c4@3",
  I: "d4@5 a3@3 bb3@3 c4@2 d4@3", J: "e4@5 bb3@3 c4@3 d4@2 e4@3", K: "f4@5 e4@5 ~ bb3@5", L: "a3@11 ~@5",
  M: "~@5 d4@11", N: "d4@5 d4@5 ~ g4@5", O: "[e4,a4]", P: "b3", Q: "e4", R: "f3@5 d4@5 ~ e4@5", S: "bb3@5 g4@5 ~ a4@5",
  T: "db5@3 a4@2 d5@3 a4@3 gb4@2 a4@3", U: "b4@3 g4@2 c5@3 g4@3 e4@2 g4@3", V: "f4@3 a4@2 bb4@11",
  W: "a4@3 db5@2 bb4@3 a4@3 g4@2 f4@3", X: "e4@5 b3@5 ~ e4@5", Y: "db4@5 a3@5 ~ g3@5", Z: "gb3@5 d4@5 ~ c4@5",
  AA: "b3@11 ~@5", AB: "c4@11 ~@5", AC: "f4@11 ~@5", AD: "bb4", AE: "a4@5 g4@5 ~ f4@5", AF: "d4@5 c4@5 ~ c4@5",
  AG: "~@4 a4 g4 ~ g4!3 ~ f4!3 ~ f4", AH: "d4@7 c4@9", AI: "[c4@4 c4@13 ~@7]/3",
})).s("gm_viola").gain(0.3)

// other · viola · soft notes
const viola_soft = note("<~@12 A B C D ~@12 A B C E F G H I ~@22 J K ~@4>".pickRestart({
  A: "d4@5 a3@3 bb3@3 c4@2 d4@3", B: "e4@5 bb3@3 c4@3 d4@2 e4@3", C: "f4@5 e4@5 ~ bb3@5", D: "a3", E: "a3@11 ~@5",
  F: "f4@3 e4@2 d4@3 e4@3 f4@2 d4@3", G: "g4@3 f4@2 e4@3 f4@3 g4@2 e4@3", H: "a4@3 g4@2 f4@3 e4@3 d4@2 db4@3",
  I: "e4@5 ~@11", J: "bb4", K: "a4!2 ~ a4 ~@12",
})).s("gm_viola").gain(0.2)

// other · cello · "Violoncelo"
const cello = note(`<
  A B C D E F G H I J K L ~@4 A B C D E F G H I J K L ~@7 M N O P O Q R Q R S T U V W X Y Z AA AB I AC AD AE ~ AF AG
  AH@3
>`.pickRestart({
  A: "f3@5 c3@11", B: "f3@11 a2@5", C: "bb2@5 bb2@5 ~ d3@5", D: "c3@5 c3@5 ~ bb2@5", E: "a2@5 f3@5 ~ a2@5",
  F: "g2@5 e3@5 ~ g2@5", G: "f2@5 bb2@5 ~ a2@5", H: "g2@5 c3@5 ~ a2@5", I: "bb2@5 bb2@5 ~ bb2@5", J: "c3@5 c3@5 ~ c3@5",
  K: "d3@3 bb2@2 c3@11", L: "f3", M: "~@5 d2@5 ~@6", N: "g2@5 g2@5 ~ bb2@5", O: "a2", P: "ab2", Q: "f2@5 f2@5 ~ f2@5",
  R: "g2@5 g2@5 ~ g2@5", S: "a2@5 d3@5 ~ d2@5", T: "g2@5 c3@5 ~ c2@5", U: "f2@5 bb2@11", V: "a2@5 ~@11",
  W: "~@5 e2@5 ~ e3@5", X: "a3@5 a2@5 ~ db3@5", Y: "d3@5 d2@5 ~ d2@5", Z: "g3@5 g2@5 ~ b2@5", AA: "c3@5 c2@5 ~ c2@5",
  AB: "f3@5 f2@5 ~ a2@5", AC: "a2@5 db3@5 ~ d3@5", AD: "bb2@5 c3@5 ~ c2@5", AE: "f2",
  AF: "~@3 a2 ~ db3 ~@2 db3 ~@2 d3 ~ d3 ~@2", AG: "bb2@7 c3@9", AH: "[c2@4 f2@13 ~@7]/3",
})).s("gm_cello").gain(0.3)

// other · cello · "Violoncelo" · soft notes
const cello_soft = note("<~@12 A B C D ~@12 A B C E F@3 G ~@22 A H ~@4>".pickRestart({
  A: "bb2@5 bb2@5 ~ bb2@5", B: "[c2,c3]@5 [c2,c3]@5 ~ [c2,c3]@5", C: "d3@3 bb2@2 c3@11", D: "f2",
  E: "f3@5 a3@3 g3@3 f3@2 e3@3", F: "d3@5 d2@5 ~@6", G: "d3@5 ~@11", H: "a2 ~@15",
})).s("gm_cello").gain(0.2)

stack(violin, violin_soft, viola, viola_soft, cello, cello_soft)