Strudelify

Radetzky-Marsch Op.228

Johann Strauss

KeyC majorTempo120 bpm
0:00/0:00
// Radetzky-Marsch Op.228 — Johann Strauss
// 120 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 4 "Bb Clarinet" clarinet (copy of ch 5 "Alto Saxophone" alto sax)
// note: Transcription provider: pdmx. https://musescore.com/score/153800; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 53 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.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · flute
const flute = note(`<
  A B C D E F E G H G I J E F E G K L M N O@2 P Q R S T U R V W X Y Z AA@2 ~ E F E G H G I J E F E G K L M AB
>`.pickRestart({
  A: "e5!3 ~ e5!3 ~", B: "c6@2 ~@2 b5@2 ~@2 a5@2 ~@4 e5 ~", C: "d5 c#5 d5 e5!2 ~ f#5 ~", D: "b4 ~@5 e5 d#5",
  E: "e5 ~ e5 d#5 e5 ~ e5 d#5", F: "e5 ~ d5 ~ c5 ~ e5 d#5", G: "e5 ~ a5 ~ g5 ~ g5 e5", H: "f5 ~ a5 ~ g5 ~ g5 d5",
  I: "d5 ~ b5@2 c5 ~ a5@2", J: "b4 ~ g5 f#5 g5 a5 g5 f5", K: "f#5 e5 d5@2", L: "~ d5 c5@2", M: "b5@3 a5 g5 f5 e5 d5",
  N: "c5@2 c5@2 c5@2 c5 d5", O: "f5", P: "e5", Q: "e5@3 e5", R: "e5@2 d5 f5", S: "f5@2 e5!2", T: "g5@2 g5 f5 e5@2 d5@2",
  U: "f5@2 f5 e5 d5@2 c5@2", V: "f5@4 e5@2 e5 ~", W: "g#5 ~ g#5 ~@3 a5 ~", X: "g#5@2 g#5 ~@3 a5 ~",
  Y: "b5 ~ c6!2 b5@2 c6!2", Z: "b5@2 c6!2 b5@2 c6!2", AA: "b5 ~@7", AB: "c5 c6!2 ~",
})).s("gm_flute").gain(0.4)

// other · clarinet · "Bb Clarinet"
const clarinet = note("<A B C D ~@8 E F E G H I J K L M N O ~@8 P@2 Q D ~@9 E F E G H I J K>".pickRestart({
  A: "g4!3 ~ g4!3 ~", B: "g4@2 ~@2 g4@2 ~@2 e4@2 ~@4 g4 ~", C: "f#4@2 ~@4 a4 ~", D: "g4 ~@7", E: "g4 ~ g4!3 ~ g4!2",
  F: "g4 ~ g4 ~ g4 ~ g4!2", G: "g4 ~ g4 ~ g4 ~ g4@2", H: "a4@2 ~ f4", I: "e4@2 ~ e4", J: "f4!2", K: "c4!3 ~",
  L: "f4 ~ f4!3 ~ f4!2", M: "f4 ~ f4 ~ f4 ~@3", N: "e4 ~ e4!3 ~ e4!2", O: "e4 ~ e4 ~ e4 ~@3", P: "e4 a4 e4 a4",
  Q: "e4 ~@7",
})).s("gm_clarinet").gain(0.3)

// other · clarinet · "Bb Clarinet" · soft notes
const clarinet_soft = note("<~@4 A B A C D E F G ~@12 H I J K H I L@2 ~@5 A B A C D E F G ~@8>".pickRestart({
  A: "c4!4", B: "c4 g3 c4 ~", C: "c4!2 e4 ~", D: "f4", E: "e4", F: "g4 ~ g4 ~", G: "g4 ~ f4@2", H: "~@4 g4 ~ g4 ~ d5@8",
  I: "~@4 g4 ~ g4 ~ c5@8", J: "~ f4 ~ f4", K: "~@2 f4!2 c4 ~ c4 ~", L: "g#4 a4",
})).s("gm_clarinet").gain(0.2)

// other · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  A B C D E F E G H G I J K L K M N O P Q R S R T ~@8 U@2 V W ~ E F E G H G I J K L K M N O P X
>`.pickRestart({
  A: "c5!3 ~ c5!3 ~", B: "e5@2 ~@2 d5@2 ~@2 c5@2 ~@4 b4 ~", C: "a4 g#4 a4 b4 c5 ~ d5 ~", D: "g4 ~@5 e4 d#4",
  E: "e4 ~ e4 d#4 e4 ~ e4 d#4", F: "e4 ~ d4 ~ c4 ~ e4 d#4", G: "e4 ~ a4 ~ g4 ~ g4 e4", H: "f4 ~ a4 ~ g4 ~ g4 d4",
  I: "d4 ~ b4@2 c4 ~ a4@2", J: "b3 ~ g4 f#4 g4 a4 g4 f4", K: "e5 ~ e5 d#5 e5 ~ e5 d#5", L: "e5 ~ d5 ~ c5 ~ e5 d#5",
  M: "e5 ~ a4 ~ g4 ~ g4 e4", N: "f#4 e5 d5@2", O: "~ d5 c5@2", P: "b4@3 a4 g4 f4 e4 d4", Q: "c4@2 c5@2 c5@2 c5 b4",
  R: "c5 ~ c5 b4 c5 ~ c5 b4", S: "c5 ~ f4 ~ a4 ~ c5 b4", T: "c5 ~ e4 ~ g4 ~@3", U: "b4 c5 b4 c5", V: "g#4 ~@7",
  W: "b4 ~@7", X: "c5!3 ~",
})).s("gm_alto_sax").gain(0.35)

// other · alto sax · "Alto Saxophone" · soft notes
const alto_sax_soft = note("<~@24 A B C D A B E@2 ~@21>".pickRestart({
  A: "~@4 e4 ~ e4 ~ f4@8", B: "~@4 e4 ~ e4 ~ g4@8", C: "~ b4 ~ b4", D: "~@2 a4!2 e4 ~ e4 ~", E: "e4 a4",
})).s("gm_alto_sax").gain(0.2)

// other · alto sax · "Alto Saxophone"
const alto_sax_2 = note("<A B C D ~@8 E F E G H I J K L M L N ~@8 O@2 P Q ~@9 E F E G H I J K>".pickRestart({
  A: "g4!3 ~ g4!3 ~", B: "g4@2 ~@2 g4@2 ~@2 e4@2 ~@4 g4 ~", C: "f#4@2 ~@4 a4 ~", D: "g4 ~@7", E: "c5 ~ c5!3 ~ c5!2",
  F: "c5 ~ g4 ~ e4 ~ c5!2", G: "c5 ~ e4 ~ e4 ~ c4@2", H: "c4@2 ~ d4", I: "e4@2 ~ e4", J: "d4!2", K: "e4!3 ~",
  L: "c5 ~ c5 b4 c5 ~ c5 b4", M: "c5 ~ f4 ~ a4 ~ c5 b4", N: "c5 ~ e4 ~ g4 ~@3", O: "e4 a4 e4 a4", P: "e4 ~@7",
  Q: "d4 ~@7",
})).s("gm_alto_sax").gain(0.3)

// other · alto sax · "Alto Saxophone" · soft notes
const alto_sax_soft_2 = note("<~@4 A B A C D E F G ~@12 H I J K H I L@2 ~@5 A B A C D E F G ~@8>".pickRestart({
  A: "c4!4", B: "c4 g3 c4 ~", C: "c4!2 e4 ~", D: "f4", E: "c4@6 e4 c4", F: "d4 ~ c4 ~", G: "g4 ~ b4@2",
  H: "~@4 e4 ~ e4 ~ f4@8", I: "~@4 e4 ~ e4 ~ g4@8", J: "~ d4 ~ d4", K: "~@2 f4!2 c4 ~ c4 ~", L: "g#4 a4",
})).s("gm_alto_sax").gain(0.2)

// bass · tuba · "Euphonium"
const bass = note(`<
  A B C D E F E F G E H I J K J K L M N O P Q R S ~@8 T@2 U D ~ E F E F G E H I J K J K L M N V
>`.pickRestart({
  A: "c4 ~ c4 ~", B: "c4@2 ~@2 b3@2 ~@2 a3@2 ~@4 g3 ~", C: "f#3@2 ~@4 d3 ~", D: "g3 ~@7", E: "c3 ~ c3 ~", F: "c3 ~@3",
  G: "b2 ~ b2 ~", H: "d3 ~ d3 ~", I: "g3 ~ g3@2", J: "c3 g2 c3 g2", K: "c3 g2 c3 ~", L: "d3@2 ~ g2", M: "c3@2 ~ c3",
  N: "f2 g2", O: "c3!3 ~", P: "c3 ~ f3 ~", Q: "a3 ~ f3 ~", R: "c3 ~ e3 ~", S: "g3 ~ e3 ~", T: "e3 a3 e3 a3",
  U: "e3 ~@7", V: "g2!3 ~",
})).s("gm_tuba").gain(0.4)

// bass · tuba · "Euphonium" · soft notes
const bass_soft = note("<~@24 A B C D A B E@2 ~@21>".pickRestart({
  A: "~@4 g3 ~ g3 ~ d3@4 ~@4", B: "~@4 g3 ~ g3 ~ c3@4 ~@4", C: "g2 ~ g2 ~", D: "~@2 c3!2 g3@2 g3@2", E: "e3 a3",
})).s("gm_tuba").gain(0.2)

// chords · piano
const piano = note(`<
  A B C D E F E F G E H I J K J K L M N O P Q R S ~@13 E F E F G E H I J K J K L M N T
>`.pickRestart({
  A: "[c4,e4,g4]!3 ~ [c4,e4,g4]!3 ~, c3 ~ c3 ~", B: "[c3,e4,g4]@2 ~@2 [b2,d4,g4]@2 ~@2 [a2,c4,e4]@2 ~@4 g2 ~",
  C: "f#2@2 ~@4 [d2,c4,d4,f#4,a4] ~", D: "[g2,b3,d4,g4] ~@7", E: "c2 [g3,c4,e4] c2 [g3,c4,e4]", F: "c2 [g3,c4,e4]!2 ~",
  G: "b1 [g3,d4,f4] b1 [g3,d4,f4]", H: "[d2,g3,b3,d4] ~ [d2,a3,c4,f#4] ~", I: "[g2,b3,d4,g4] ~ [g2,b3,d4,f4]@2",
  J: "c2 [g2,g3,c4,e4] c2 [g2,g3,c4,e4]", K: "c2 [g2,g3,c4,e4] [c2,g3,c4,e4] ~", L: "[d2,a3,c4,f#4]@2 ~ [g2,b3,f4,g4]",
  M: "[c2,c4,e4,g4]@2 ~ [c2,c4,e4,g4]", N: "~ [c4,d4,g4] ~ [d4,f4,b4], f2 g2", O: "[c2,e4,g4,c5]!3 ~",
  P: "c2@2 [f4,a4,c5]!2 f2@2 [f4,a4,c5]!2", Q: "a2 [f4,a4,c5] c3 [f4,a4,c5]", R: "c2@2 [e4,g4,c5]!2 f2@2 [e4,g4,c5]!2",
  S: "a2 [e4,g4,c5] c3 ~", T: "~ [c2,e4,g4,c5]!2 ~",
})).s("gm_piano").gain(0.3)

// chords · piano · soft notes
const piano_soft = note("<~@23 A B C D E B C F@2 G@2 H I ~@16 J>".pickRestart({
  A: "~@3 [e4,g4,c5]", B: "g2@2 [b3,g4]!2 [g2,b3,d4,f4]@2 ~@2", C: "g2@2 [c4,e4]!2 [g2,c4,e4,g4]@2 ~@2",
  D: "g2 [b3,d4,f4] g2 [b3,d4,f4]", E: "g2@2 c4!2 [c4,e4,g4]@2 [c4,e4,g4]@2", F: "e2 [b3,e4,g#4] a2 [c4,e4,a4]",
  G: "[e3,e4,g#4,b4] [a2,e4,a4,c5] [e3,e4,g#4,b4] [a2,e4,a4,c5]", H: "[c2,e4,g#4,b4] ~@3", I: "[b1,g4,b4,d5] ~@3",
  J: "c2 ~@3",
})).s("gm_piano").gain(0.2)

stack(
  flute, clarinet, clarinet_soft, alto_sax, alto_sax_soft, alto_sax_2, alto_sax_soft_2, bass, bass_soft, piano,
  piano_soft
)