Strudelify

El Danubio Azul

J. Strauss

KeyC majorTempo120 bpm
0:00/0:00
// El Danubio Azul — J. Strauss
// 120 bpm, 3/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5865147; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 98 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/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 ~ D G H ~ I B C ~ J K L ~ M N O ~ P Q R S T U V@2 W X Y Z T Z U AA W AB AC AD U AE AF AG AH@2 AI AJ
  AK@2 AL AM AH@2 AI AJ AN AO AF AP ~ A B C ~ D E F ~ D G H ~ I B C ~ J K L ~ M N O ~ P Q R S T U AQ@2
>`.pickRestart({
  A: "~@11 e5@5, ~@11 c5 ~@4", B: "e5@5 ~@6 c5@5", C: "c5@5 ~@11", D: "~@11 f5@5", E: "f5@5 ~@6 b4@5",
  F: "[g4,b4]@5 ~@11", G: "f5@5 ~@6 d5@5", H: "[a4,d5]@5 ~@11", I: "a4@5 ~@6 e5@5", J: "c5@5 ~@6 g5@5",
  K: "g5@5 ~@6 e5@5", L: "e5@5 ~@11", M: "c5@5 ~@6 a5@5", N: "a5@5 ~@6 f5@5", O: "f5@5 ~@11", P: "a4",
  Q: "a4@5 f#4@5 ~ g4@5", R: "e5", S: "e5@5 c5@5 ~ e4@5", T: "e4@11 d4@5", U: "a4@11 g4@5",
  V: "[c4@19 ~@2 e5@5 ~ d5@5]/2", W: "d5@5 c5@5 ~ c5@5", X: "~@5 c5@5 ~ b4@5", Y: "b4@5 c5@5 ~ c5@5",
  Z: "~@5 d4@5 ~ d4@5", AA: "~@5 e5@5 ~ d5@5", AB: "~@5 c5@5 ~ d5@5", AC: "f#5@5 e5@5 ~ e5@5", AD: "f#4",
  AE: "a4@11 c5@5", AF: "c5@3 c5@2 c5@5 ~ b4@5", AG: "d4@5 ~@11", AH: "f4@5 d4@5 ~ g4@5", AI: "g4@5 b3@5 ~ g4@5",
  AJ: "g4@5 d4@5 ~ g4@5", AK: "e4@5 c4@5 ~ g4@5", AL: "c4@5 e4@5 ~ c4@5", AM: "g4@5 c4@5 ~ g4@5",
  AN: "e4@5 f4@5 ~ g4@5", AO: "a#4", AP: "g4@5 ~@11", AQ: "[c4@21 ~@11]/2",
})).s("gm_violin").gain(0.2)

// chords · viola
const viola = note(`<
  ~ A@2 B ~ C@2 D ~ C@2 D ~ A@2 B ~ A@2 B ~ E@2 F ~ C@2 A@2 E C A G H@4 C@4 H@3 I J K H L C@4 A@4 C@4 A M N O ~ A@2 B ~
  C@2 D ~ C@2 D ~ A@2 B ~ A@2 B ~ E@2 F ~ C@2 A@2 E C A P
>`.pickRestart({
  A: "~@5 [c4,e4]@5 ~ [c4,e4]@5", B: "~@5 [c4,e4]@5 ~@6", C: "~@5 [g3,b3]@5 ~ [g3,b3]@5", D: "~@5 [g3,b3]@5 ~@6",
  E: "~@5 [a3,f4]@5 ~ [a3,f4]@5", F: "~@5 [a3,f4]@5 ~@6", G: "e4@3 ~@13", H: "~@5 [c4,d4]@5 ~ [c4,d4]@5", I: "[d#3,a3]",
  J: "~@5 [g3,e4]@5 ~ [g3,e4]@5", K: "~@5 [c3,a3]@5 ~ [c3,a3]@5", L: "b3@5 ~@11", M: "e4", N: "[e3,g3]@5 ~@6 [f3,g3]@5",
  O: "[c4,e4]@5 ~@11", P: "[g3,e4]@5 ~@11",
})).s("gm_viola").gain(0.2)

// other · cello · "Violoncelo"
const cello = note(`<
  ~ A B C ~ D E F ~ D E F ~ A B C ~ A B C ~ G H I ~ D E A B J D A K L M L M D E D E L M L N O P L Q D E D E A B A B D E
  D E A R S T ~ A B C ~ D E F ~ D E F ~ A B C ~ A B C ~ G H I ~ D E A B G D A T
>`.pickRestart({
  A: "c3@5 g3@5 ~ g3@5", B: "e3@5 g3@5 ~ g3@5", C: "c3@5 g3@5 ~@6", D: "g2@5 d3@5 ~ d3@5", E: "b2@5 d3@5 ~ d3@5",
  F: "g2@5 d3@5 ~@6", G: "f2@5 c3@5 ~ c3@5", H: "a2@5 c3@5 ~ c3@5", I: "f2@5 c3@5 ~@6", J: "f3@5 c3@5 ~ c3@5",
  K: "c3@3 ~@13", L: "d3@5 a3@5 ~ a3@5", M: "f#3@5 a3@5 ~ a3@5", N: "c3", O: "e3@5 b3@5 ~ b3@5", P: "a2@5 e3@5 ~ e3@5",
  Q: "g2@5 ~@11", R: "c#3", S: "c3@5 ~@6 b2@5", T: "c3@5 ~@11",
})).s("gm_cello").gain(0.25)

stack(violin, viola, cello)