Strudelify

Pizzicato Polka

Johann Strauss ll

KeyC majorTempo90 bpm
0:00/0:00
// Pizzicato Polka — Johann Strauss ll
// 90 bpm, 2/4, key C 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/3756771; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 103 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(90/2)

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

// chords · glockenspiel · "Violon"
const glockenspiel = note(`<
  A B C D E F G H E F I J K L M N K L O P Q@2 R S E F G H E F I T U V W X Y Z AA AB U V W X Y AC AD AE AF AG AH AI AJ AK
  AL AM AF AG AH AI AJ AK AN AO A B C D E F G H E F I J K L M N K L O P Q@2 R S E F G H E F I AP AQ AR AS AT AU AV AW
>`.pickRestart({
  A: "g5 ~@2 g4", B: "a4!2 ~@2", C: "g5 ~@2 a4", D: "b4!2 ~ [e5,c6]",
  E: "[f5,b5]@2 [b4,f5]@2 [f5,b5] [b4,f5] [f5,b5] [b4,f5]", F: "[c5,e5]@2 [e4,c5]@2 [c5,e5] [e4,c5] [c5,e5] [e4,c5]",
  G: "[b4,f5] [f4,b4] [b4,f5] [f4,b4]", H: "[c5,e5] [e5,g5]!2 [e5,c6]", I: "[f5,a5] [f4,b4] [f5,a5] [f4,b4]",
  J: "[e4,c5] [c5,e5] [e4,c5] d5", K: "b5 a5 g5 f#5", L: "e5 d5!3", M: "d#5 e5 f#5 ~", N: "e5 d#5 d5 ~",
  O: "d#5 e5 f5 f#5", P: "g5 ~@2 g5", Q: "g4 ~@2 g5", R: "g4 ~ a4 ~", S: "b4 ~@2 [e5,c6]", T: "c5 ~@2 b5",
  U: "c6 c7!2 c#6", V: "d6 c7!2 d#6", W: "e6 c7!2 e6", X: "d6 c7!2 c6", Y: "c6 d#6 d6 c6", Z: "c6 a#5!2 a5",
  AA: "a5 g5!2 g#5", AB: "a5 ~@2 b5", AC: "a#5 d6 g5 a#5", AD: "e5 a5 e5 g5", AE: "f5 ~@3",
  AF: "[f4,c5,a5] ~ [f4,c5,a5] ~", AG: "[f4,c5,a5] c6!2 ~", AH: "f6 ~ f6 ~", AI: "e6 d6!2 ~", AJ: "d6 c6 a#5 a5",
  AK: "g#5 g5 f#5 f5", AL: "f5 e5 a5 g5", AM: "d5 c5!2 ~", AN: "f5 e5 d6 c6", AO: "f5!3 ~", AP: "~@3 c6 b5 a5 g5 f5",
  AQ: "e5 d5 c5 a4 g4 a4 g4 a4", AR: "g4 c5 e5 c6 b5 a5 g5 f5", AS: "e5 d5 c5 a4 g4 g#4 a4 b4",
  AT: "c5 [c5,g5] ~ [d5,g5] ~ [c5,g5] ~ [b4,g5]", AU: "c5 e6 c6 g5 e5 c5 g4 e4", AV: "c4 ~@3 c4 ~@3",
  AW: "[c4,g4,e5,c6] ~@7", // C
})).s("gm_glockenspiel").gain(0.2)

// other · pizzicato strings · "Violon"
const pizzicato_strings = note(`<
  A B A B C D E F C D G H I J K L I J M N O P Q R C D E F C D G S T U V W X Y Z AA T U V W X Y AB W AC AD AE AF AG AH AI
  AJ AC AD AE AF AG AH AK AJ A B A B C D E F C D G H I J K L I J M N O P Q R C D E F C D G AL AM AN AO AP AQ AR AS
>`.pickRestart({
  A: "[g3,g4] ~@2 g4", B: "g4!2 ~@2", C: "d5 g4 d5 g4", D: "c5 g4 c5 g4", E: "[g3,g4]!4",
  F: "[g3,e4] [g3,g4] [g3,e4] [g3,g4]", G: "b4 g4 b4 g4", H: "e4 g4 e4 ~", I: "~ [f#4,a4] ~ [f#4,a4]", J: "~ g4!3",
  K: "[d4,a4]!3 ~", L: "[b3,g4]!3 ~", M: "~ [e4,c5] ~ [d4,a4]", N: "[d4,b4]@2 g4!2 g4@2 [e4,c5]@2",
  O: "[d4,b4]@2 g4!2 g4@2 [d#4,c5]@2", P: "[d4,b4]@2 g4!2 g4@2 g4@2", Q: "g4 ~ g4 ~", R: "g4 ~@3", S: "g4!2 e4 ~",
  T: "~ [a3,f4] [a3,a4] ~", U: "~ [g3,e4] [g3,g4] ~", V: "~ [g3,e4]!2 ~", W: "~ [a3,f4]!2 ~", X: "~ [a3,g4] ~ [a3,f#4]",
  Y: "~ [a#3,g4]!3", Z: "~ [a#3,g4] ~ [a#3,g#4]", AA: "~ [a3,a4]!2 ~", AB: "~ [g3,f4] ~ [g3,e4]",
  AC: "[a4,f5] ~ [a4,f5] ~", AD: "[a4,f5] [c5,a5]!2 ~", AE: "[c5,a5] ~ [c#5,a5] ~", AF: "[f4,e5] [f4,d5]!2 ~",
  AG: "g5 f#5 g5 d#5", AH: "d5 c#5 c5 b4", AI: "a#4!4", AJ: "[f4,a4]!3 ~", AK: "g4 c5 g4 a#4", AL: "~@3 g5 f5 e5 d5!2",
  AM: "c5 b4 a4 d#4 [g3,d4] [g3,f4] [g3,d4] [g3,f4]", AN: "[c4,e4] g4 c5 g5 f5 e5 d5!2", AO: "c5 b4 a4 d#4 e4 ~ f4 ~",
  AP: "g4 ~ [d4,b4] ~ [e4,c5] ~ [d4,b4] ~", AQ: "[e4,c5] c6 g5 e5 c5 g4 e4 c4", AR: "g3 ~@3 g3 ~@3",
  AS: "[g3,e4,c5,g5] ~@7", // C
})).s("gm_pizzicato_strings").gain(0.2)

// other · pizzicato strings · "Violoncelle"
const pizzicato_strings_2 = note(`<
  A B C D E F E G E H E I J K L M J K N O P Q R S E F E G E H E T U V W U X Y Z AA U V W U X AB AC AD AE AF AG AH AI AJ
  AK AL AE AF AG AH AI AJ AM AL A B C D E F E G E H E I J K L M J K N O P Q R S E F E G E H E AN AO AP AQ AR AS AT AU
>`.pickRestart({
  A: "g3 ~@2 b3", B: "c4!2 ~@2", C: "g3 ~@2 c4", D: "d4!2 ~@2", E: "d3 g3 g2 g3", F: "c3 g3 g2 g3", G: "c3 g3 c4 g3",
  H: "c3 g3 e3 g3", I: "c3 g2 c3 ~", J: "d3 d#3 e3 f#3", K: "g3 a3 a#3 b3", L: "a3 ~@3", M: "d3 ~@3", N: "c4 ~ a3 d3",
  O: "g3 ~@2 [e3,c4]", P: "[d3,b3] ~@2 [d#3,c4]", Q: "[d3,b3] ~@3", R: "b3 ~ c4 ~", S: "d4 g3 ~@2", T: "c3 e3 c3 ~",
  U: "f2 c3 a3 ~", V: "e2 c3 a#3 ~", W: "c3 g3 a#3 ~", X: "[d3,a3]!2", Y: "g3 ~ g3 ~", Z: "[c4,d4]",
  AA: "[f3,c4] c3 f2 ~", AB: "[g3,g4] f4 e4 d4", AC: "c4 b3 c4 a#3", AD: "a3 c3 f3 ~", AE: "[f2,c3,a3] ~ [f2,c3,a3] ~",
  AF: "[f2,c3,a3] [c3,a3]!2 ~", AG: "[f2,c3] ~ [f2,c#3] ~", AH: "a#2 f3 a#3 ~", AI: "~@3 f#4", AJ: "f4 e4 d#4 d4",
  AK: "c4 c3 c4 c3", AL: "f3!3 ~", AM: "c4 c3 g3 c3", AN: "~@3 [e4,g4] [d4,f4] [c4,e4] [b3,d4] [g#3,d4]",
  AO: "[a3,c4] [g#3,b3] [f3,a3] [c3,d#3] [d3,f3] ~ [d3,f3] ~", // Am G#m F Cm Dm
  AP: "[c3,e3] [e3,g3] [g3,c4] [e4,g4] [d4,f4] [c4,e4] [b3,d4] [g#3,d4]", // C Em C5 Em Dm C Bm G#dim
  AQ: "[a3,c4] [g3,b3] [f3,a3] [c3,d#3] [c3,e3] ~ [d3,f3] ~", AR: "[c3,e3] ~ [g2,d3] ~ [c3,e3] ~ [g2,d3] ~",
  AS: "[c3,e3] [e4,g4] [c4,e4] [g3,c4] [e3,g3] [c3,e3] [g2,c3] [e2,g2]", AT: "[c2,g2] ~@3 [c2,g2] ~@3",
  AU: "[c2,g2,e3,c4] ~@7", // C
})).s("gm_pizzicato_strings").gain(0.2)

// bass · pizzicato strings · "Contrebasse"
const bass = note(`<
  A ~ A ~ B C B C B C B D E A F A E A G H@3 I J B C B C B C B K L M N L O A P Q L M N L O A P L R S R T U V P S R S R T
  U V P S A ~ A ~ B C B C B C B D E A F A E A G H@3 I J B C B C B C B W X Y X Z AA AB AC
>`.pickRestart({
  A: "g2 ~@3", B: "d2 ~ g1 ~", C: "c2 ~ e2 ~", D: "c2 g1 c2 ~", E: "f#2 ~ d2 ~", F: "d2 ~@3", G: "c2 ~ d2 ~",
  H: "g2 ~@2 g2", I: "g2 ~ g2 ~", J: "g2!2 ~@2", K: "c2 e2 c2 ~", L: "f2 ~@3", M: "e2 ~@3", N: "c2 ~@3", O: "d2 ~ d2 ~",
  P: "c2 ~ c2 ~", Q: "f2 c2 f2 ~", R: "f2 ~ f2 ~", S: "f2!3 ~", T: "a#1!3 ~", U: "g1 ~@2 f#2", V: "f2 e2 d#2 d2",
  W: "~@7 b2", X: "c3 g#2 a2 f#2 g2 ~ g2 ~", Y: "c2 ~@6 b2", Z: "c2 ~ g2 ~ c2 ~ g2 ~", AA: "c2 ~@4 c2 e2 g2",
  AB: "c2 ~@3 c2 ~@3", AC: "c2 ~@7",
})).s("gm_pizzicato_strings").gain(0.2)

// drums · tambourine
const tambourine = s("tb").struct("<~@48 A B A B ~@4 A B A B ~@43>".pickRestart({
  A: "x!2", B: "x!3 ~",
})).gain(0.45)

stack(glockenspiel, pizzicato_strings, pizzicato_strings_2, bass, tambourine)