Strudelify

4 Aqvareller Humoresk

Tor Aulin

KeyD majorTempo116 bpm
0:00/0:00
// 4 Aqvareller Humoresk — Tor Aulin
// 116 bpm, 2/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/6286749; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 189 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(116/2)

// 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 · pizzicato strings · F# G A D
const pizzicato_strings = note(`<
  ~@180
  [~@2 [f#3,f#4] ~]
  [[g3,g4] ~ [a3,a4] ~]
  [[d4,d5] ~@3]
  [~ [d4,d5] ~@2]
  ~@3
  [d4 ~ d4 ~]
  [d4 ~@3]
>`).s("gm_pizzicato_strings").gain(0.2)

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

// other · cello · soft notes
const cello_soft = note(`<
  ~@74 A B ~@8 A B ~@12 C D E F ~@12 C D E F G ~@21 H I J@2 ~@6 K L M N O@2 ~@12 P Q R S R S ~@15
>`.pickRestart({
  A: "~@11 f5@2 a5@3", B: "~@3 d5@2 g5@3 ~@3 c#5@2 e5@3", C: "~@3 f4@2 d5@3 ~@8", D: "~ [d4,f4]@3", E: "~ [g3,e4]@3",
  F: "~ d4@2 a4", G: "a4", H: "~@3 c#5", I: "~ b4 ~ b4", J: "~ a4 ~ g4", K: "~@3 b4", L: "~ a4 ~ e4", M: "~ d#4@2 a4",
  N: "~@2 [b3,e4] ~@3 [a3,c#4] ~", O: "~@3 [a3,b3]", P: "~@3 [d4,a4]", Q: "~ [g#3,e4]@2 [g#3,f4]",
  R: "~ [a3,f#4]@2 [g#3,f4]", S: "~ [g3,e4]@2 [g3,e4]",
})).s("gm_cello").gain(0.2)

// other · pizzicato strings
const pizzicato_strings_2 = note(`<
  A B C@2 D E F ~@5 D G H@2 I@3 J K L ~@3 M@3 N K L ~@4 O@2 D G H@2 I@3 J K L ~@3 M@3 N K L ~@4 O@2 D G H@2 ~@55 O@2 ~ P
  F ~@3 O ~ D G ~@42 Q ~@4 R S ~@7
>`.pickRestart({
  A: "~@2 a3 ~@3 a3 ~", B: "~@2 b3 ~@3 a3 ~", C: "~ [a3,b3]@2 [a3,b3]", D: "~ g3 ~ b3", E: "~ b3 ~ a#3", F: "~ b3@2 ~",
  G: "~ e4 ~ f#4", H: "~ d4@2 f#4", I: "~@2 e5 ~@3 [g4,e5] ~", J: "~@2 [g4,e5] ~@3 e5 ~", K: "~ d5 ~ d5",
  L: "~ c#5 ~@2", M: "~ e5 ~ [g4,e5]", N: "~ [g4,e5] ~ e5", O: "~ [a3,b3]@2 ~", P: "~@3 a#3", Q: "~ f#4 ~ f#4",
  R: "~@3 c#5", S: "~ d5 ~ c#5",
})).s("gm_pizzicato_strings").gain(0.3)

// other · pizzicato strings · soft notes
const pizzicato_strings_soft = note(`<
  ~@6 A B C D E@2 ~@9 F G H@2 ~@5 F G I J K L@2 ~@9 F G H@2 ~@5 F G I J K L@2 ~@57 M N L@2 O P A B C D L E ~@43 Q ~@7 R
  ~@4 C S
>`.pickRestart({
  A: "~@3 d4", B: "~ b3@2 d4", C: "~ a3 ~ a3", D: "~ b3 ~ a3", E: "~ [a3,b3]@2 [a3,b3]", F: "~@3 c#5", G: "~ b4 ~ b4",
  H: "~ a4 ~ g4", I: "~ a4 ~ e4", J: "~ d#4@2 a4", K: "~ [b3,e4] ~ [a3,c#4]", L: "~@3 [a3,b3]", M: "~@2 a3 ~@3 a3 ~",
  N: "~@2 b3 ~@3 a3 ~", O: "~ g3 ~ b3", P: "~ b3 ~@2", Q: "~ f#4 ~ f#4", R: "~ d5 ~@2", S: "~ a3 ~@2",
})).s("gm_pizzicato_strings").gain(0.2)

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

// chords · cello · soft notes
const cello_soft_2 = note(`<
  ~@74 A B ~@8 A B ~@12 C D E F ~@12 C D E F G ~@2 H@2 I J K L M N H O ~@9 P Q R@2 ~@6 S T U V H@2 ~@12 W X@2 E X E Y
  ~@7 Z AA AB ~@4
>`.pickRestart({
  A: "~@11 a4@2 d5@3", B: "~@3 g4@2 b4@3 ~@3 e4@2 a4@3", C: "~@3 d4@2 d5@3 ~@8", D: "~ a3@2 g#3", E: "~ d4@2 c#4",
  F: "~ f3@2 d4", G: "d4", H: "~@3 d4", I: "~ [d3,b3] ~ [e3,d4]", J: "~ [e3,d4] ~@2", K: "~@3 f#3", L: "~ d3@2 f#3",
  M: "~ [d3,d4] ~ [d3,d4]", N: "~ [e3,d4] ~ [e3,c#4]", O: "~ d3@2 d4", P: "~@3 [c#4,f#4]", Q: "~ [b3,d4] ~ [b3,d4]",
  R: "~ [a3,c#4] ~ [b3,e4]", S: "~@3 [b3,d4]", T: "~ [a3,c#4] ~ [a3,c#4]", U: "~ [d#3,a3]@2 [a3,d#4]",
  V: "~@2 e3 ~@3 e3 ~", W: "~@3 [d3,a3]", X: "~ d4@2 d4", Y: "~ [f#3,d4]@2 [g3,c#4]", Z: "~@6 e4 b3",
  AA: "d4@2 ~@4 e4 b3", AB: "d4 ~@3",
})).s("gm_cello").gain(0.2)

// chords · pizzicato strings
const pizzicato_strings_3 = note(`<
  A B C@2 D E F ~@5 D G H@2 I@3 J K L ~@3 M@3 N K L ~@4 F@2 D G H@2 I@3 J K L ~@3 M@3 N K L ~@4 F@2 D G H@2 ~@114 O P
  ~@7
>`.pickRestart({
  A: "~@2 [d3,d4] ~@3 [d3,d4] ~", B: "~@2 [e3,d4] ~@3 [e3,c#4] ~", C: "~ d3@2 d4", D: "~ [d3,b3] ~ [e3,d4]",
  E: "~ [e3,d4] ~ [e3,c#4]", F: "~ d3@2 ~", G: "~ [g3,d4] ~ [g3,c#4]", H: "~ f#3@2 a3", I: "~@2 c#5 ~@3 b4 ~",
  J: "~@2 b4 ~@3 c#5 ~", K: "~ [f#4,a4] ~ g4", L: "~ [c#4,e4] ~@2", M: "~ c#5 ~ b4", N: "~ b4 ~ c#5",
  O: "~@3 [c#4,f#4]", P: "~ [b3,g4] ~ [a3,g4]",
})).s("gm_pizzicato_strings").gain(0.3)

// chords · pizzicato strings · soft notes
const pizzicato_strings_soft_2 = note(`<
  ~@6 A B C D E@2 ~@9 F G H@2 ~@5 F G I J K L@2 ~@9 F G H@2 ~@5 F G I J K L@2 ~@57 M N ~@61 O ~@4 P Q
>`.pickRestart({
  A: "~@3 f#3", B: "~ d3@2 f#3", C: "~ [d3,d4] ~ [d3,d4]", D: "~ [e3,d4] ~ [e3,c#4]", E: "~ d3@2 d4",
  F: "~@3 [c#4,f#4]", G: "~ [b3,d4] ~ [b3,d4]", H: "~ [a3,c#4] ~ [b3,e4]", I: "~ [a3,c#4] ~ [a3,c#4]",
  J: "~ [d#3,a3]@2 [a3,d#4]", K: "~ e3 ~ e3", L: "~@3 d4", M: "~@2 [d3,d4] ~@3 [d3,d4] ~",
  N: "~@2 [e3,d4] ~@3 [e3,c#4] ~", O: "~ [a3,a4] ~@2", P: "~ [f#3,d4] ~ [f#3,d4]", Q: "~ [f#3,d4] ~@2",
})).s("gm_pizzicato_strings").gain(0.2)

// chords · cello
const cello_3 = note(`<
  A B C D E D F ~ G ~ C D E H I@2 ~@19 C D E H I@2 ~@19 C D E H I@2 J K J L M N O P Q ~ J K J L M N O P Q ~ R S T U V W
  V X Y Z AA AB ~@4 R S T U V W V X Y Z AA AB ~@7 C D ~@2 F ~ G ~ C D E H I@2 ~@19 C D E H I@7 AC C@2 D ~@6 AD AE ~@7 AF
  ~@4
>`.pickRestart({
  A: "[d2,a2] ~@3 f#2 ~@3", B: "g2 ~@3 a2 ~@3", C: "g2", D: "f#2", E: "e2 ~ g2 ~", F: "[b2,f#3]", G: "d2 ~@3",
  H: "b2 ~ a2 ~", I: "[d2,a2]", J: "[d3,a3] [a3,f4]", K: "[d3,a3] [a3,e4]", L: "[a2,f3] [f3,c4]", M: "[c3,g3] [g3,e4]",
  N: "[g2,d#3] [d#3,a#3]", O: "[a#2,f3] [f3,d4]", P: "[f3,d4] [g3,d4]", Q: "[a3,c#4] ~", R: "a2", S: "d3", T: "c3",
  U: "b2", V: "c4", W: "d4", X: "b3", Y: "[g3,a3]", Z: "[f3,a#3] [d3,g#3]", AA: "c#3 c3, a3", AB: "[b2,a3]",
  AC: "[d2,a2]@3 ~", AD: "[d2,a2] ~ a2 ~", AE: "[d2,a2] ~@3", AF: "~@2 [f#3,d4] ~",
})).s("gm_cello").gain(0.3)

// chords · cello · soft notes
const cello_soft_3 = note(`<
  ~@7 A B C ~@23 D E ~@23 D E ~@14 F G ~@8 F G ~@12 H I@2 J ~@12 H I@2 J@2 K E ~@2 L D ~ A B C ~@23 D E ~@15 M N I@3 O
  ~@7 P Q R ~@4
>`.pickRestart({
  A: "[b2,f#3]", B: "~@2 f#2 ~", C: "g2 ~ a2 ~", D: "f#2", E: "g2 ~@3 a2 ~@3", F: "~ [f3,d4]", G: "[g3,d4] [a3,c#4]",
  H: "[a#2,g#3]", I: "a2", J: "[d2,a2]", K: "[d2,a2]@2 ~@2 f#2 ~@3", L: "e2 ~ g2 ~", M: "b2@3 a#2", N: "~ a2@3",
  O: "[d2,a2] ~ a2 ~", P: "~@6 e3 b2", Q: "d3@2 ~@4 e3 b2", R: "d3 ~@3",
})).s("gm_cello").gain(0.2)

// chords · pizzicato strings
const pizzicato_strings_4 = note(`<
  ~@16 A@3 B C D ~@3 E@3 F C D ~@10 A@3 B C D ~@3 E@3 F C D ~@79 E@3 F C D ~@3 A E@2 F C G H ~@29 I J ~@7
>`.pickRestart({
  A: "~@2 a3 ~@3 e3 ~", B: "~@2 [c#3,b3] ~@3 [f#3,a3] ~", C: "~ [b2,f#3] ~ e3", D: "~ [a2,g3] ~@2", E: "~ a3 ~ e3",
  F: "~ [c#3,b3] ~ [f#3,a3]", G: "~ [a2,g3] ~ [d3,f#3]", H: "~ [g2,f#3] ~@2", I: "~@3 [f#3,a#3]",
  J: "~ [e3,d4] ~ [d#3,c#4]", // E7 D#7
})).s("gm_pizzicato_strings").gain(0.4)

// chords · pizzicato strings · soft notes
const pizzicato_strings_soft_3 = note(`<
  ~@21 A B C@2 ~@5 A B D ~@13 A B C@2 ~@5 A B D ~@82 A B C@2 ~@6 E D ~@30 F ~@4 G H
>`.pickRestart({
  A: "~@3 [d3,f#3]", B: "~ [g2,f#3] ~ [g#2,f#3]", C: "~ [a2,e3] ~ e3", D: "~ [a2,e3] ~ [g2,e3]", E: "~@3 [g#2,f#3]",
  F: "~ [d3,d4] ~@2", G: "~ [d2,a2] ~ [d2,a2]", H: "~ [d2,a2] ~@2",
})).s("gm_pizzicato_strings").gain(0.2)

stack(
  pizzicato_strings, cello, cello_soft, pizzicato_strings_2, pizzicato_strings_soft, cello_2, cello_soft_2,
  pizzicato_strings_3, pizzicato_strings_soft_2, cello_3, cello_soft_3, pizzicato_strings_4, pizzicato_strings_soft_3
)