Strudelify
KeyB♭ majorTempo72 bpm
0:00/0:00
// Anthems — Orig.: John Stafford Smith
// 72 bpm, 3/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 3/4 at bar 2) are rendered on a constant 3/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/3387746; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 33 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(72/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · tremolo strings · "Violine"
const tremolo_strings = note("<A B C D E F G H I B C D E F G H J K L M N F G D E O P Q R S T U V>".pickRestart({
  A: "~@8 f4@3 d4", B: "bb3 d4 f4", C: "bb4@8 d5@3 c5", D: "bb4 d4 e4", E: "f4@4 f4!2", F: "d5@3 c5 bb4@2",
  G: "a4@4 g4 a4", H: "bb4!2 f4", I: "d4@4 bb3@4 f4@3 d4", J: "d4@2 bb3@2 d5!2", K: "d5!2 eb5", L: "f5@3 eb5 d5@2",
  M: "c5!2 d5", N: "eb5@4 eb5!2", O: "bb4@2 bb4@2 bb4 a4", P: "g4!3", Q: "c5@2 eb5 d5 c5 bb4", R: "bb4@2 a4@2 f4!2",
  S: "bb4@3 c5 d5 eb5", T: "f5@4 bb4 c5", U: "d5@3 eb5 c5@2", V: "bb4",
})).s("gm_tremolo_strings").gain(0.3)

// other · viola · "Bratsche"
const viola = note("<A B C D E F G H I B C J K L K M N O P Q R S T U V W X Y Z AA AB AC AD>".pickRestart({
  A: "~@8 f4@3 d4", B: "bb3!2 c4", C: "d4@2 c4", D: "d4@7 d4 bb3@4", E: "a3@2 c4", F: "d4 f4 d4", G: "c4@2 c4",
  H: "d4 bb4 f4", I: "d4@4 bb3@4 d4@3 d4", J: "d4 bb3 c4", K: "c4", L: "f4 d4 f4 eb4 d4 bb3", M: "f4!2 d4",
  N: "bb3@2 bb3@2 d4 c4", O: "bb3 c4 d4 f4 eb4 d4", P: "d4 eb4 f4 g4 f4 g4", Q: "f4 eb4 f4 eb4 d4 f4", R: "eb4@2 eb4",
  S: "d4@3 c4 d4@2", T: "c4 d4 eb4", U: "f4@2 e4", V: "c4 a3 c4", W: "d4@3 d4 bb3@2", X: "bb3@3 c4 b3@2",
  Y: "c4 d4 eb4 d4 bb3 d4", Z: "d4 c4 a3", AA: "bb3 c4 d4 eb4 f4 g4", AB: "f4 eb4 d4@2 eb4@2", AC: "d4@3 eb4 c4@2",
  AD: "d4",
})).s("gm_viola").gain(0.3)

// other · cello · "Violoncello"
const cello = note("<A B C 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>".pickRestart({
  A: "~@8 f3@3 f3", B: "f3!2 a3", C: "g3@2 a3@2 g3@2 f3@2 a3@3 a3", D: "g3 f3 g3 a3 g3@2", E: "f3@2 f3@2 f3!2",
  F: "f3@3 f3 bb3@2", G: "a3 f3!2", H: "bb3!2 f3", I: "d3@4 bb2@4 d3@3 f3", J: "bb3 f3 d3",
  K: "g3@2 f3@2 d3@2 f3@2 a3@3 f3", L: "bb3 a3 g3 a3 bb3 g3", M: "a3@2 a3", N: "bb3@3 a3 f3@2", O: "a3 g3 f3 a3 g3 a3",
  P: "bb3 c4 bb3 g3 f3 d3", Q: "f3 eb3 d3 g3 bb3 c4", R: "bb3 a3 bb3 d4 c4 bb3", S: "f3 eb3 d3 eb3 f3 eb3",
  T: "a3 c4!2 a3 bb3 d4", U: "c4 c4@2", V: "bb3 ~@2", W: "c4 a3 bb3@2 g3 a3", X: "bb3 g3 bb3", Y: "a3 f3 a3",
  Z: "bb3 a3 bb3@2 f3@2", AA: "g3 f3 eb3@2 f3@2", AB: "g3@2 eb3 g3 eb3 f3", AC: "bb3@2 f3@2 f3 eb3", AD: "f3 bb3 d4",
  AE: "bb3@4 bb3 g3", AF: "f3@2 eb3", AG: "f3",
})).s("gm_cello").gain(0.3)

// bass · contrabass · "Kontrabass"
const bass = note("<A B C D E F G H I J K D L F M N O P Q R S T U V W O X Y Z AA AB AC AD>".pickRestart({
  A: "~@8 f2@3 d2", B: "bb2@2 a2", C: "g2@3 f2 g2@4 gb2@4", D: "g2 bb2 c3", E: "c3@2 a2", F: "bb2 c3 d3", G: "c3 a2 c3",
  H: "bb2 bb2@2", I: "d3@4 bb2@4 bb2@3 bb2", J: "bb2!2 a2", K: "g2 bb2 a2", L: "a2 f2@2", M: "c3 a2 f2", N: "bb2!3",
  O: "bb2 f2 bb2", P: "bb2!2 eb3", Q: "bb2@3 eb3 d3@2", R: "f3!3", S: "f3@2 c3", T: "bb2!2 g2", U: "f2@2 eb2",
  V: "d2 g2 c3", W: "a2 f2 a2", X: "eb3@2 d3", Y: "c3@2 c3 d3 eb3@2", Z: "f3!2 c3", AA: "d3 bb2!2", AB: "d3 bb2 g2",
  AC: "f2@3 f2 f2@2", AD: "bb2",
})).s("gm_contrabass").gain(0.3)

stack(tremolo_strings, viola, cello, bass)