Strudelify

Winter The Maker s Solo

Paul Halley

KeyG majorTempo164 bpm
0:00/0:00
// Winter The Maker s Solo — Paul Halley
// 164 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5227415; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 57 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(164/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 · string ensemble 1 · "Violins"
const string_ensemble_1 = note(`<
  A B C D E B C F G H G I J K L M N O P Q R S T U V W X Y Z AA T AB AC AD AE AF AG AH AI AJ AK AL AM AN AK AO AP AQ AK
  AR AS AT AU AV AW AX AY
>`.pickRestart({
  A: "g5@2 e5 ~ e5 ~ e5 ~ g5@2 e5 ~ e5 ~ e5 ~", B: "f#5@2 d#5 ~ d#5 ~ d#5 ~ f#5@2 d#5 ~ d#5 ~ d#5 ~",
  C: "a5@2 e5 ~ e5 ~ e5 ~ a5@2 e5 ~ e5 ~ e5 ~", D: "g5@2 e5 ~ e5 ~ e5 ~ e5@2 b4 ~ b4 ~ e4 ~",
  E: "[e4,g4] [b4,e5,g5] e5 ~ e5 ~ e5 ~ g5@2 e5 ~ e5 ~ e5 ~", F: "g5@2 e5 ~ e5@2 b4 ~ b4@2 e5 ~ e5@2 g5 ~",
  G: "b5@2 g5 ~ g5 ~ g5 ~ b5@2 g5 ~ g5 ~ g5 ~", H: "c6@2 g5 ~ g5 ~ g5 ~ c6@2 g5 ~ g5 ~ e5 ~",
  I: "c6@2 f#5 ~ f#5@2 c6 ~ b5@2 f#5 ~ a5 b5 c6 d6", J: "e6@2 c6 ~ c6 ~ e6 ~ d#6@2 b5 ~ b5 ~ d#6 ~", K: "b4!16",
  L: "[d#5,b5]!16", M: "e6@2 e5 d5 e5@2 b4@2", N: "e4@2 e5 d5 e5 f#5 g5 f#5", O: "e5@2 e5 d5 e5@2 b4@2",
  P: "e4@2 e5 d#5 e5 f#5 g5 f#5", Q: "e5@2 e5 d5 e5@2 c5@2", R: "a4@2 d#5 e5 f#5 g5 a5 g5",
  S: "d#5@2 f#5 e5 f#5@2 d#5@2", T: "b4@2 b5 a5 b5@2 f#5@2", U: "e5@2 g5 f#5 g5@2 e5@2", V: "b4@2 g5 f#5 g5 a5 b5 a5",
  W: "g5@2 g5 f#5 g5@2 e5@2", X: "c5@2 e5 f#5 g5 f#5 g5 g#5", Y: "a5@2 e5 d#5 e5@2 c5@2", Z: "a4 e5 f#5 g5 a5 b5 d6 c6",
  AA: "b5@2 f#5 e5 f#5@2 d#5@2", AB: "e5@2 e6 d6 e6@2 b5@2", AC: "e5@2 e6 d6 e6 f#6 g6 f#6", AD: "e6@2 e6 d6 e6@2 c6@2",
  AE: "g5@2 f#6 g6 f#6 e6 d6 c6", AF: "b5@2 e6 d6 e6@2 b5@2", AG: "g5@2 e6 d6 e6 f#6 g6 f#6",
  AH: "e6 d6 c6 b5 a5 g5 f#5 e5", AI: "b5 f#4 g4 a4 b4 a4 b4 c5", AJ: "d5 c5 d5 e5 g5 f#5 e5 d5",
  AK: "~@2 a4!2 b4!2 c5!2 d5!2 e5!2 f#5!2 g5!2", AL: "a5!2 g5!2 f#5!2 e5!2 d5!2 c5!2 b4!2 a4!2",
  AM: "~ [g4,e5]@5 d5@2 e5@6 b4@2, b3@3 ~@5", AN: "e4@3 ~", AO: "a5!2 b5!2 a5!2 g5!2 f#5!2 e5!2 d5!2 c5!2",
  AP: "~ [b4,g5]@5 f#5@2 e5@6 b4@2, e4@3 ~@5", AQ: "e5@3 ~", AR: "a5!2 g5!2 f#5!2 g5!2 a5!2 b5!2 c6!2 d6!2",
  AS: "e6!2 d6!2 c6!2 d6!2 e6!2 d6!2 c6!2 d6!2", AT: "e6!2 d6!2 c6!2 d6!2 e6!2 f#6!2 g6!2 a6!2", AU: "b6",
  AV: "e6@2 b5!3 ~ b5 ~ e6@2 b5!3 ~ b5 ~", AW: "b5@2 e5!3 ~ e5 ~ e5@2 e4!3 ~ e4 ~", AX: "e4", AY: "e4 ~@7",
})).s("gm_string_ensemble_1").gain(0.4)

// other · string ensemble 1 · "Violins"
const string_ensemble_1_2 = note(`<
  A B C D A B C E F G F H I J K L M N M O P Q R S T U V O W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AI AM AN AO AI AP
  AQ AR AS AT AU AV AW
>`.pickRestart({
  A: "b4@2 g4 ~ g4 ~ g4 ~ b4@2 g4 ~ g4 ~ g4 ~", B: "a4@2 f#4 ~ f#4 ~ f#4 ~ a4@2 f#4 ~ f#4 ~ f#4 ~",
  C: "c5@2 a4 ~ a4 ~ a4 ~ c5@2 a4 ~ a4 ~ a4 ~", D: "b4@2 g4 ~ g4 ~ g4 ~ g4@2 e4 ~ e4 ~ b3 ~",
  E: "b4@2 b4 ~ b4@2 g4 ~ g4@2 b4 ~ b4@2 e5 ~", F: "g5@2 e5 ~ e5 ~ e5 ~ g5@2 e5 ~ e5 ~ e5 ~",
  G: "g5@2 e5 ~ e5 ~ e5 ~ g5@2 e5 ~ e5 ~ c5 ~", H: "e5@2 e5@2 e5@2 e5@2 d#5@2 d#5@2 d#5 ~ d#5 ~",
  I: "g5@2 g5!3 ~ g5 ~ f#5@2 f#5!3 ~ f#5 ~", J: "d#4!16", K: "[d#4,b4]!16", L: "[e4,b4,g5]@2 g4 f#4 g4@2 f#4@2",
  M: "b3@2 g4 f#4 g4 a4 b4 a4", N: "g4@2 g4 f#4 g4@2 f#4@2", O: "c5@2 c5 b4 c5@2 a4@2", P: "e4@2 b4 c5 d5 e5 f#5 e5",
  Q: "b4@2 d#5 c#5 d#5@2 b4@2", R: "f#4@2 f#5!2 f#5@2 d#5@2", S: "[e4,b4]@2 b4 a4 b4@2 g4@2",
  T: "e4@2 e5 d#5 e5 f#5 g5 f#5", U: "e5@2 e5 d5 e5@2 c5@2", V: "g4@2 c5 d5 e5 d#5 e5 d5",
  W: "e4 g#4 a4 b4 c5 d5 f#5 e5", X: "d#5@2 d#5 c#5 d#5@2 b4@2", Y: "f#4@2 f#5!2 f#5@2 b4@2",
  Z: "e4@2 g5 f#5 g5@2 f#5@2", AA: "b4@2 g5 f#5 g5 a5 b5 a5", AB: "g5@2 g5 f#5 g5@2 f#5@2",
  AC: "e5@2 a5 b5 a5 d5 e5 f#5", AD: "g5@2 g5 a5 b5@2 g5@2", AE: "e5@2 g5 f#5 g5 a5 b5 a5",
  AF: "g5 f#5 e5 d5 c5 b4 a4 g4", AG: "g5 d#4 e4 f#4 g4 f#4 g4 a4", AH: "b4 a4 b4 c5 e5 d5 c5 b4",
  AI: "~@2 c4!2 d4!2 e4!2 f#4!2 g4!2 a4!2 b4!2", AJ: "c5!2 b4!2 a4!2 g4!2 f#4!2 e4!2 d4!2 c4!2",
  AK: "g4@3 f#4 g4@3 f#4", AL: "b3@3 g3 a3@3 g3", AM: "c5!2 d5!2 c5!2 b4!2 a4!2 g4!2 f#4!2 e4!2",
  AN: "b4@3 a4 g4@3 f#4", AO: "g4@6 b3@2 ~ [e4,c5]@5 b4@2, ~@4 g3@3 ~", AP: "c5!2 b4!2 a4!2 b4!2 c5!2 d5!2 e5!2 f#5!2",
  AQ: "g5!2 f#5!2 e5!2 f#5!2 g5!2 f#5!2 e5!2 d5!2", AR: "c5!2 b4!2 a4!2 b4!2 c5!2 a5!2 g5!2 f#5!2",
  AS: "e6!2 b5!2 g5!2 e5!2 e6!2 b5!2 g5!2 e5!2", AT: "b5@2 g5!3 ~ f#5 ~ e5@2 b4!2 g4 ~ f#4 ~",
  AU: "[e4,e5]@2 e4!3 ~ e4 ~ e4@2 e4!3 ~ e4 ~", AV: "b3", AW: "e4 ~@7",
})).s("gm_string_ensemble_1").gain(0.4)

// other · string ensemble 1 · "Violoncellos"
const string_ensemble_1_3 = note(`<
  A@3 B C D E F G H I J K L@2 M N O@2 P Q R S M N O T U V R W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AJ AK AM AN AO
  AP AQ AR AS AT AU
>`.pickRestart({
  A: "e3@12 ~ b2 c#3 d#3", B: "e3@3 ~ e3@4 ~@2 b2@2 a2 g2 ~ f#2", C: "e2@2 b2@2 e2@2 b2@2 e2@2 b2@2 e2 a2 g2 f#2",
  D: "e2@2 b2@2 e2@2 b2@2 e2@2 b2@2 e2 b2 c#3 d#3", E: "e3@6 a2@2 e3@4 a2 b2 c3 d3", F: "e3@6 b2@2 e3@4 b2 a2 g2 f#2",
  G: "e2@6 b2@2 e3@4 e3 f#3 e3 d3", H: "c3@6 g2@2 c3@4 b2 a2 g2 f#2", I: "e2@4 e2@2 b2@2 e3@4 e3 d3 c3 b2",
  J: "a2@5 f#2 g2 a2 b2@5 e2 f#2 g#2", K: "a2@5 f#2 g2 a2 b2@5 f#2 g#2 a#2", L: "b2!16", M: "e2@6 b2@2 e3@3 ~ b2@3 ~",
  N: "e3@6 b2@2 e3@3 ~ b2@3 ~", O: "c3@6 g2@2 c3@3 ~ g2@3 ~", P: "a2@6 e2@2 a2@3 ~ e2@3 ~",
  Q: "c3@6 e2@2 c3@3 ~ a2@3 ~", R: "b2@6 f#2@2 b2@3 ~ f#2@3 ~", S: "b2@6 f#2@2 d#3@3 ~ b2@3 ~",
  T: "c3 b2 c3 d3 c3 d3 c3 b2", U: "a2@6 e2@2 c3@3 ~ a2@3 ~", V: "c2@6 a2@2 d3@3 ~ c3@3 ~",
  W: "b2@6 d#3@2 f#3@3 ~ b2@3 ~", X: "e2@2 g2 b2 e3 b2 c3 b2", Y: "e2@2 g2 b2 e3 b2 c3 g2", Z: "c2!3 g2 c3!3 g2",
  AA: "d2!3 a2 d3 d#2!3", AB: "e2 b2 e3!2 d#3!4", AC: "d3!4 c#3!4", AD: "c3!3 b2 d3 c3 b2 a#2",
  AE: "b2@2 ~ a#3 b3@2 ~ a#2", AF: "b2@2 ~ a#3 b3@2 ~ e2", AG: "a2@2 ~ e2 a2@2 ~ e2", AH: "a2@2 ~ b2 c3 a2 c3 a2",
  AI: "e2@2 e3@4 e3 ~ e3@2 e3@4 b2@2", AJ: "e2@2 e2@4 b2 ~ e3@2 e3@4 b2@2", AK: "c2@2 ~ c3 c3@2 ~ g2",
  AL: "c3@6 c3 ~ c3@6 g2 ~", AM: "c3@3 b2 c3@3 g2", AN: "c3 ~ c3@4 b2@2 c3@2 g2@2 e2@2 d2@2", AO: "c2 c2@2 g2 c3!3 b2",
  AP: "a2!3 g#2 a2!2 g#2 f#2", AQ: "e2!8", AR: "e2 e3 b2 g2 e2 e3 b2 g2", AS: "e3@2 e2!2 e2@2 e2@2 e3@2 e2!2 e2@2 e2@2",
  AT: "e2", AU: "e2 ~@7",
})).s("gm_string_ensemble_1").gain(0.4)

stack(string_ensemble_1, string_ensemble_1_2, string_ensemble_1_3)