Strudelify

The Wirvaran Waltz (The Symphony Quest Movement 1 FULL VERSION)

Tadasheek

KeyA majorTempo170 bpm
0:00/0:00
// The Wirvaran Waltz (The Symphony Quest Movement 1 FULL VERSION) — Tadasheek
// 170 bpm, 3/4, key A 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/955306; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 135 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(170/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.

// chords · piano
const piano = note(`<
  A B C D E F G H I J C D E K L M N O A@2 P A P A P A P A P A P A P A P A@2 Q R S T Q R U V W X Y Z AA AB AC AD AE AF Y
  Z AA AG AH AI AJ AK W@2 AL W AM W AM W AM W AM W AM W AM W AM W AM W AM AN@5 AO@8 AP@4 AQ@8 ~@26
>`.pickRestart({
  A: "a2@5 e3@3 ~@3 e3@3 ~@2", B: "e2@5 e3@3 c5@3 [e3,b4]@2 c5@3", C: "a2@5 e3@3 ~@3 e3@2 e5@3, e5@13 ~@3",
  D: "e2@5 e3@3 ~@3 e3@2 d#5@3, d#5@13 ~@3", E: "a2@5 e3@3 ~@3 e3@3 ~@2, e5 ~@4 a5 ~@5 e5 ~@4",
  F: "[e2,f5,g#5]@5 e3@3 ~@3 e3@3 ~@2, ~@5 e5@10 ~", G: "[a2,d5]@5 [e3,c5]@3 d5@3 [e3,c5]@2 d5@3",
  H: "[e2,d5]@5 [e3,b4]@3 c5@3 [e3,b4]@2 a4@3", I: "[a2,g#4]@5 [e3,g#5]@3 f5@3 [e3,e5]@2 d5@3",
  J: "e2@5 e3@3 ~@3 e3@3 ~@2, b4@15 ~", K: "d5 e5 ~ f5@2 e3@3 ~@3 e3@3 ~@2, e2@5 e5@10 ~",
  L: "[a2,c5]@5 [e3,b4]@3 c5@3 a4@5, ~@11 e3@3 ~@2", M: "[e2,f4]@5 e4@5 ~ c5@5, ~@5 e3@3 ~@3 e3@3 ~@2",
  N: "b4@3 a4@2 g#4@5 ~ b4@5, a2@5 e3@3 ~@3 e3@3 ~@2", O: "a2@5 e3@3 ~@3 e3@3 ~@2, a4@15 ~",
  P: "e2@5 e3@3 ~@3 e3@3 ~@2", Q: "e5@3 a4@2 [e3,e5]@3 a4@3 [e3,e5]@2 a4@3, a2@5 ~@11",
  R: "b4@3 g#4@2 [e3,b4]@3 g#4@3 [e3,e5]@2 d5 ~ e5, e2@5 ~@11", S: "f5@3 e5@2 [f3,d5]@3 c5@3 [e3,b4]@2 c5@3, d3@5 ~@11",
  T: "d5@3 c5@2 [c3,b4]@3 a4@3 g#4@5, e2@5 ~@6 b2@3 ~@2", U: "f5@3 e5@2 [f3,d5]@3 c5@3 [e3,b4]@2 c5@3, g#2@5 ~@11",
  V: "d5@3 e5@2 [b2,e3,f5]@3 g#5@3 [a1,a2]@5, e2@5 ~@6 a5 ~@4", W: "a#2@5 f3@3 ~@3 f3@3 ~@2",
  X: "f2@5 f3@3 c#5@3 [f3,c5]@2 c#5@3", Y: "a#2@5 f3@3 ~@3 f3@2 f5@3, f5@8 c5@5 ~@3",
  Z: "f2@5 f3@3 ~@3 f3@2 e5@3, e5@8 c5@5 ~@3", AA: "f5@3 g#5@2 [f3,a#5]@3 ~@3 f3@3 ~@2, a#2@5 ~@6 f5 ~@4",
  AB: "[f2,a5]@5 f3@3 ~@3 f3@3 ~@2, ~@5 [f4,d#5]@10 ~", AC: "a#2@5 f3@3 c#5@3 [f3,d#5]@2 c5@3, c5 ~",
  AD: "[f2,d#5]@5 [f3,f5]@3 c#5@3 a#4@5, ~@11 f3@3 ~@2", AE: "a4@3 a#4@2 [f3,c5]@3 f#5@3 [f3,f5]@2 c5@3, a#2@5 ~@11",
  AF: "f2@5 f3@3 ~@3 f3@3 ~@2, [a4,f5]@15 ~", AG: "f2@5 f3@3 ~@3 [f4,d#5]@5, a5@10 ~ f3@3 ~@2",
  AH: "[a#2,c#5]@5 [f3,c5]@3 c#5@3 a#4@5, ~@11 f3@3 ~@2", AI: "[f2,f#4]@5 f4@5 ~ c#5@5, ~@5 f3@3 ~@3 f3@3 ~@2",
  AJ: "c5@3 c#5@2 [f3,d#5]@3 ~@3 f3@2 f4@3, a#2@5 ~@3 f5@5 ~@3", AK: "a#2@5 f3@3 ~@3 f3@3 ~@2, a#4@15 ~",
  AL: "f2@5 f3@3 ~@3 c3@3 ~@2", AM: "f2@5 f3@3 ~@3 f3@3 ~@2",
  AN: "[~@21 f2@20 ~@22 a#1@17, [a#2,f3]@20 ~ [c#2,c#3,f3]@19]/5", // A#5 C#
  AO: "[~@4 [a1,a2,f3]@20 ~ [a#1,a#2,f3]@20 ~ [d#2,a2,d#3]@20 [a2,f3,a3]@20 ~@22 f2@20, ~@87 [a#2,f3]@40 ~]/8", // Dm A#5 D#dim Dm A#5
  AP: "[~@22 a#1@20 ~ [a1,a2,f3]@20 ~, ~ [c#2,c#3,f3]@40 ~@23]/4", // Dm C#
  AQ: "[[a1,f2,f3]@20 ~ [f2,f3,c4]@20 ~ [a#2,f3,a#3]@60 ~@3 b2@21 ~@2]/8", // Dm F5 A#5
})).s("gm_piano").gain(0.3)

// chords · piano · soft notes
const piano_soft = note("<~@108 A@3 B@2 C D@2 E@2 F@4 G@2 H I J@3 K@2 L M N@2>".pickRestart({
  A: "[~@15 e3@3 ~ c5@3 [e3,b4]@3 ~ c5@3 a2@7 e3@3 ~@4 e3@3 [b4,e5]@2, ~@29 e5@16 ~@3, ~@20 b4@3 ~]/3", // E5
  B: "[~@2 e2@6 ~ e3@3 ~@3 e3@3 ~ [a4,d#5]@3 e5@2 ~ g5@3 ~ [e3,e4,a5]@3, ~ d#5@8 ~@7, ~ b4@5 [a4,b4]@3 ~@2 [a2,g4]@3 ~@2]/2", // Adim A5 Asus2 A7
  C: "~@3 [e3,e5]@3 ~@4 [e2,f5,g#5]@6", // E
  D: "[e3@3 ~@4 e3@3 ~@3 [a2,d5]@6 [e3,c5]@3 [c5,d5]@3 ~ [e3,c5,d5]@3 [a4,c5]@3, [e4,d5,e5]@12 ~ b4@9 ~@10]/2", // D5 C Csus2 C Am E7
  E: "[[e2,g#4,d5]@6 [e3,b4,e5]@3 c5@3 [e3,b4]@3 e5@3 ~@3 a4@3 [e3,b4,g#5]@3 [g#4,f5]@3 [e3,e4,e5]@2, ~@6 a4@3 [a2,g#4]@3 ~@4]/2", // E7 E5 E C# E Amaj7
  F: "[~ [f4,b4,d5]@3 ~ e2@5 e3@3 ~@3 e3@3 ~@3 a2@6 e3@3 ~@3 e3@3 [b4,e5]@3 e2@5 e3@3 ~@3 e3@3 [a4,d#5]@3 e5 ~@2 g5@2 [e4,a5] ~, ~@5 [g#4,b4,e5]@17 e5@14 ~@4 d#5@14 ~@10, ~@31 b4@6 ~@3 b4@8 [a4,b4]@5 ~@4 [a2,g4]@5 e3@2]/4", // Bdim E5 Adim A5 E Asus2 A7
  G: "[~@4 e3@3 ~@3 d5 e5 f5@3 e3@3 ~@3 [e4,d5]@5 [a2,e4,c5]@5 ~, ~@4 e5 ~@5 g#5@11 e3@3 ~@8, ~@10 e2@5 e5@11 ~@6]/2", // E7 Am
  H: "[e3,b4]@2 c5@3 [c4,a4]@5 ~ [e2,b3,f4]@5, d4@5 e3@3 ~@8", // E5 F E
  I: "[c4,e4]@5 [d4,c5]@5 [b4,e5]@2 ~ [a4,c5]@2 ~, e3@3 ~@2 e3@3 ~@2 a2@5 ~", // C D7 E5 Am
  J: "[[e3,d5]@2 e5@2 ~ [e3,e5]@3 e4@2 e3@5 e3@3 ~@2 e3@3 ~@3 [e4,e5]@2 [f4,a4]@2 ~ [e3,g#4,e5]@2 a4@2 ~ [e3,g#4,e5]@2 [f4,a4]@2 ~ [c4,b4]@2 [d4,g#4]@2 ~ [e3,e4,b4]@2, g#4@5 [c4,b4]@5 a4@15 ~@23, ~@10 [a1,a2]@10 ~@6 a2@5 ~@10 e2@5 ~@2]/3", // E7 E F E F Cmaj7 Ddim E5 …
  K: "[[f4,g#4]@2 ~ [e3,e4,e5]@2 d5 e5 ~ [c4,f5]@2 [d4,e5]@2 [f3,e4,d5]@2 ~ [f4,c5]@2 [e3,e4,b4]@2 ~ [d4,c5]@2 [b3,d5]@2 ~ [c4,c5]@2 [c3,d4,b4]@2 [e4,a4]@2 ~, ~@8 d3@5 ~@9 e2@5 ~@5]/2", // Fm E F5 Dsus2 Dm F5 E5 D7 …
  L: "[b3,g#4]@5 [e4,e5]@2 [f4,a4]@2 [e3,g#4,e5]@2 ~ a4@2 [e3,g#4,e5]@2, b2@2 ~@3 a2@5 ~@6", // E F E
  M: "~ [f4,a4]@2 [c4,b4]@2 [d4,g#4]@2 ~ [e3,e4,b4]@2 [f4,g#4]@2 [e3,e4,e5]@2 ~ d5, ~@3 e2@4 ~@9", // F Cmaj7 Ddim E5 Fm E
  N: "[e5 [g#3,f5]@2 [a3,e5]@2 ~ [f3,b3,d5]@2 [c4,c5]@2 [e3,b3,b4]@2 ~ [a3,c5]@2 [g#3,d5]@2 [a3,e5]@2 [g#1,b2,e3,f5]@2 ~ g#5@2 [a1,a2,c3,a3]@2 ~@6, ~ g#2@4 ~@10 e2@4 c4@3 ~@2 [c4,a4,c5,a5] ~@7]/2", // C# A5 Bdim C E5 Am G#dim A5 …
})).s("gm_piano").gain(0.15)

// other · string ensemble 1 · "Violoncello"
const string_ensemble_1 = note(`<
  ~@17 A@2 B@2 C D C E F G H E C D C E F G H C ~@28 I J K L M N O P J@3 Q R S T U V ~@53
>`.pickRestart({
  A: "a3", B: "[a3@3 e3]/2", C: "a2", D: "g#2", E: "b2", F: "c3", G: "d3", H: "e2", I: "~@11 c3@2 c#3@3",
  J: "f3@11 c3@2 c#3@3", K: "f3@11 c3@2 f3@3", L: "f#3@5 f3@5 ~ f#3@5", M: "c3@11 f3@5",
  N: "f#3@3 f3@2 d#3@3 c#3@3 c3@2 a#2@3", O: "g#3@8 c3@3 g#3@5", P: "c#4@5 c4@5 ~ a#3@5", Q: "c#4@5 c4@5 ~ f4@5",
  R: "c4@11 c4@5", S: "g#3@5 c#4@5 ~ c4@5", T: "f3@5 c4@5 ~ a#3@5", U: "g#3@3 g3@2 f3@3 d#3@3 c3@2 d#3@3",
  V: "f3@11 ~@5",
})).s("gm_string_ensemble_1").gain(0.22)

stack(piano, piano_soft, string_ensemble_1)

More by Tadasheek