Strudelify

Aria Pastorella

Valentin Rathgeber

KeyG majorTempo120 bpm
0:00/0:00
// Aria Pastorella — Valentin Rathgeber
// 120 bpm, 2/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/8 at bar 1, 2/4 at bar 2, 3/8 at bar 26, 1/8 at bar 26, ...) are rendered on a constant 2/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5862243; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 105 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/2)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · piano · "A"
const piano = note(`<
  ~@5 A B C D E@2 F G H I J K@4 L M N O N P ~@4 A B C D E@2 F G H I J K@4 L M N O N Q R S T U V W V X Y Z AA AB AC AD AA
  ~ AE AF AG AF AH AI AJ AK AL AK AM R S T U V W V X Y Z AA AB AC AD AA ~ AE AF AG AF AH AI AJ AK AL AK F
>`.pickRestart({
  A: "~@3 g4", B: "c5 g4 e5 c5", C: "g5 f5 e5 d5 c5@2 g4@2", D: "c5@2 g4@2 e5 d5 c5 b4", E: "c5 e5 g5!2",
  F: "e5@11 ~@5", G: "c5!2", H: "a4 c5", I: "c5 b4", J: "c5@11 ~@5", K: "[g4@15 ~]/2", L: "g5 f#5",
  M: "g5@11 ~ g5@2 a5@2", N: "b5 g5 c6 a5", O: "b5@11 ~ g5@2 a5@2", P: "b5@11 ~@5", Q: "b5@11 ~ d5@4", R: "g5 d5 b5 g5",
  S: "d6 c6 b5 a5 g5@2 d6@2", T: "b5 g5 d6 d5", U: "g5@11 ~@5", V: "g4@15 ~", W: "g4@11 ~ g4@4", X: "b4 d5",
  Y: "g5@11 ~ d5@4", Z: "d5@15 ~", AA: "b4@11 ~@5", AB: "g4!2", AC: "a4 g4", AD: "d5 c5", AE: "~@3 e5",
  AF: "f5 e5 f5 d5", AG: "e5 d5 e5 c5", AH: "e5 d5 e5 f5", AI: "g5 f5 g5 g4", AJ: "c5@11 ~ c5@2 d5@2",
  AK: "e5 c5 f5 d5", AL: "e5@11 ~ c5@2 d5@2", AM: "e5@11 ~ d5@4",
})).s("gm_piano").gain(0.3)

// other · piano · "T"
const piano_2 = note(`<
  A B C D E F G F H I@2 J K L I M N O N P Q G R@2 S@2 B C D E F G F H I@2 J K L I M N O N P Q G R@2 T@2 ~@4 U V W X Y@2
  Z AA AB AC AD ~ A AE@4 F@2 R@2 T@2 ~@4 U V W X Y@2 Z AA AB AC AD ~ A AE@4 F@2 R@2 T@2
>`.pickRestart({
  A: "~@3 g4", B: "c5 g4 e5 c5", C: "g5 f5 e5 d5 c5@2 g5@2", D: "e5 c5 g5 g4", E: "c5@11 ~ c5@4", F: "g4@15 ~",
  G: "g4@11 ~ g4@4", H: "g4 e4 g4 e4", I: "g4!2", J: "e4 f4 g4 e4", K: "f4 a4 g4!2", L: "a4 f4 g4 a4", M: "e4@11 ~@5",
  N: "c5 b4 c5 a4", O: "b4 a4 b4 g4", P: "b4 a4 b4 c5", Q: "d5 c5 d5 d4", R: "[g4@19 ~ g4@4 g4@4 g4@4]/2",
  S: "[g4@27 ~ g4@4]/2", T: "[g4@27 ~@5]/2", U: "~@3 d4", V: "g4 d4 b4 g4", W: "d5 c5 b4 a4 g4@2 d4@2",
  X: "g4@2 d4@2 b4 a4 g4 f#4", Y: "g4 b4 d5!2", Z: "b4 c5 d5 b4", AA: "c5 e5 d5!2", AB: "e5 c5 d5 e5", AC: "g4 f#4",
  AD: "g4@11 ~@5", AE: "[g4@15 ~]/2",
})).s("gm_piano").gain(0.3)

// other · piano · "B"
const piano_3 = note(`<
  A B C D E F E F G H@2 I J K L M N@4 O P Q@2 R@2 B C D E F E F G H@2 I J K L M N@4 O P Q@2 S@2 T U V W X P X Y Z@2 AA
  AB AC AD AE AF E AG@4 AH F AI@2 AJ@2 T U V W X P X Y Z@2 AA AB AC AD AE AF E AG@4 AH F AI@2 AK@2
>`.pickRestart({
  A: "~@3 g3", B: "c4 g3 e4 c4", C: "g4 f4 e4 d4 c4@2 g4@2", D: "e4 c4 g4 g3", E: "c4@11 ~ c4@4", F: "c4@15 ~",
  G: "c4 c5 c4 c5", H: "c4 g3", I: "c4 d4 e4 c4", J: "f4 e4", K: "d4 c4", L: "g4 f4 g4 g3", M: "c4@11 ~@5",
  N: "[g3@15 ~]/2", O: "d4@15 ~", P: "g3@11 ~ g3@4", Q: "[g3@19 ~ g3@4 g3@4 g3@4]/2", R: "[g3@27 ~ g3@4]/2",
  S: "[g3@27 ~ d4@4]/2", T: "g4 d4 b4 g4", U: "d5 c5 b4 a4 g4@2 d5@2", V: "b4 g4 d5 d4", W: "g4@11 ~ g3@4",
  X: "g3@15 ~", Y: "g4 g3 g4 g3", Z: "g3 d4", AA: "g4 a4 b4 g4", AB: "c5 b4", AC: "a4 g4", AD: "d5 c5 d5 d4",
  AE: "g4@11 ~ g4@4", AF: "e4 c4 d4 g3", AG: "[c4@15 ~]/2", AH: "g4@15 ~", AI: "[c4@19 ~ c4@4 c4@4 c4@4]/2",
  AJ: "[c4@27 ~ d4@4]/2", AK: "[c4@27 ~@5]/2",
})).s("gm_piano").gain(0.3)

stack(piano, piano_2, piano_3)