Strudelify
Serenade D-Dur KV 250 (248b) "Haffner-Serenade" - 2. Andante cover art

Serenade D-Dur KV 250 (248b) "Haffner-Serenade" - 2. Andante

Wolfgang Amadeus Mozart

KeyC majorTempo69 bpm
0:00/0:00
// Serenade D-Dur KV 250 (248b) "Haffner-Serenade" - 2. Andante — Wolfgang Amadeus Mozart
// 69 bpm, 2/2, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 116 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(69/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/2 spreads a riff over 2 bars.
// A part's distinct bars are riffs (A, B, C...) played in order, A@4 for four bars: edit a riff to change every repeat.

// other · violin
const violin = note(`<
  A B C D A B E F A B C D A B E F G H I J A B K F G H I J A B K F L M N O L M N O P Q R S T U V W X Y A B C D A B E F P
  Q R S T U V W X Y A B C D A B E F Z@2 AA AB Z@2 AA AB AC AD AE AF AG AH AI AJ A B C D A B E F G H I J A B K F AK AL AM
  A AN A AO AP
>`.pickRestart({
  A: "e5 ~ e5 ~ e5@3 g5", B: "f5@2 d5@2 f5@2 a5@2 g5@3 e5 g5@2 ~@2", C: "c6 ~ c6@4 b5@2 a5 ~ a5@4 g5@2",
  D: "g5@2 f5 ~ f5@2 e5 ~ g5@3 e5 d5@2 ~@2", E: "c6@2 g5 ~ g5@2 e5 ~ d5@2 a5@2 g5 f5 e5 d5",
  F: "c5@4 e5 d5 c5 d5 c5@4 ~@4", G: "c#5 d5 f5 e5 d#5 e5 g5 f5 f5@4 a5@3 g5", H: "g5@4 f5 e5 d5 c5 e5@4 d5@2 ~@2",
  I: "c#5 d5 f5 e5 d#5 e5 g5 f5 f5@3 ~ b5@3 c6", J: "c6@4 b5 a5 g5 f#5 g5 a5 g5 f#5 g5 g#5 a5 f5",
  K: "g5@2 c6 ~ b5@2 f5 ~ e5@2 g5 ~ f5@2 a5 ~", L: "e5 ~ e5 ~ e5 ~ e5 ~ e5@2 g5 f5 e5 d5 c5 b4",
  M: "c5 ~ c5 ~ c5 ~ c5 ~ c#5@4 d5@2 ~@2", N: "e5 ~ e5 ~ f#5 ~ f#5 ~ g5 b5 a5 g5 f#5 e5 d5 c#5",
  O: "d5 e5 d5 c5 b4 a4 g4 f#4 a4@4 g4@2 ~@2", P: "g5 ~ g5 ~ g5 ~ g5 ~ g5 a#5 a5 g5 f5 e5 d5 c#5",
  Q: "f5 ~ f5 ~ f5 ~ f5 ~ f5 a5 g5 f5 e5 d5 c5 b4", R: "e5 ~ e5 ~ e5 ~ e5 ~ e5 f5 e5 d#5 e5 d5 c5 b4",
  S: "a4 b4 a4 g#4 a4 c5 b4 a4 g#4@2 b4@2 e5@4", T: "~@2 e5 ~ e5 ~ e5 ~ e5 f5 e5 d#5 e5 f#5 g#5 e5",
  U: "a5 b5 a5 g#5 a5 c6 b5 a5 g#5@2 b5@2 e5 ~@3", V: "~@6 a5 ~ g#5@2 b5@2 e5 ~@3", W: "~@14 a5 ~",
  X: "g#5@2 b5@2 e5 ~ f#5 ~ g5@7 ~", Y: "f#5@2 a5@2 d5 ~ e5 ~ f5@8", Z: "~@4 g5 ~ [b4,c5] [a4,b4] c5@2 ~@6",
  AA: "~@4 g5 ~ [c5,d5] [b4,c5] g#5@5 ~ [g5,g#5] [f5,g5]", AB: "f5@2 f5@2 d5 ~ d5 ~ d#5@2 ~@6",
  AC: "~@4 a#5 ~ [d5,d#5] [c5,d5] e5@2 ~@6", AD: "~@4 c6 ~ [e5,f5] [d5,e5] f5@2 ~@6",
  AE: "~@4 d6 ~ [f#5,g5] [e5,f#5] g5@2 [g#5,a#5] [g5,g#5] g5@2 [f5,g5] [d#5,f5]", // Gmaj7 Esus2 G#sus2 G#maj7 Fsus2 D#sus2
  AF: "d#5@2 [b4,c5] [a4,b4] c5@2 [d#5,f5] [d5,d#5] d5@2 ~@6", AG: "~@12 c6 ~ [f#5,g5] [e5,f#5]",
  AH: "g5@2 ~@2 c6 ~ [f#5,g5] [e5,f#5] g5@2 ~@2 c6 ~ [f#5,g5] [e5,f#5]", AI: "g5@2 ~@2 c6 ~ [f#5,g5] [e5,f#5] g5@2 ~@6",
  AJ: "f#5 ~@3 f5 ~@3", AK: "[g4,c5,a#5] ~ [f4,c5,a5] ~", AL: "[d4,d5,c6]@4 ~@4 c5@6 [c5,d5] [b4,c5]",
  AM: "e5@4 d5@3 c5 c5@4 ~@4", AN: "f5 d5 f5 b5 b5@2 c6 ~", AO: "f5 d5 g5 b4 d5@4", AP: "c5 ~@7",
})).s("gm_violin").gain(0.31)

// other · viola
const viola = note(`<
  ~@4 A B C D ~@4 A B C D E F G H ~@2 I D E F G H ~@2 I D J@2 K L J@2 K L M N O P Q R S T ~ U V ~@3 A B C D M N O P Q R
  S T ~ U V ~@3 A B C D W@2 X Y W@2 X Y Z AA AB AC AD AE AF AG AH ~@3 A B C D E F G H ~@2 I D AI AJ AK AL@4 AM
>`.pickRestart({
  A: "~@8 g4@7 ~", B: "[b4,c5]!6 a4 b4 c5@4 ~@4", C: "e4@2 e4@2 f4@3 a4", D: "g4 b3 c4 ~", E: "~@4 b3!4",
  F: "c4@2 c4@2 e4@2 e4@2 g4@3 ~@5", G: "~@4 b3!2 d4!2", H: "c4!2 a3!2 d3@2 ~@2", I: "[g3,g4]@5 ~ a4@2",
  J: "g4 ~ g4 ~ g4 ~ g4 ~ g4@4 ~@4", K: "g4 ~ g4 ~ d4 ~ d4 ~ d4@3 ~@3 g3@2", L: "g3@2 ~ a3 f#3@2 g3 ~",
  M: "b4 ~ b4 ~ a#4 ~ a#4 ~ a4@3 ~@5", N: "a4 ~ a4 ~ g#4 ~ g#4 ~ g4@4 ~@4", O: "c4 ~ c4 ~ e4 ~ e4 ~ e4@3 ~@3 d4@2",
  P: "c4@2 ~ a3 b3@2 ~ b4", Q: "a4@2 a4 ~ a4 ~ a4 ~ e4@3 ~@3 b4@2", R: "a4@4 ~@2 a4@2 b4@3 ~@3 d#4@2",
  S: "e4@4 ~@10 a3 ~", T: "g#3@2 b3@2 e3 ~ a3 ~ g#3@2 b3@2 e3 ~@3", U: "~@10 g3@2 g4@2 g4 ~", V: "g4 ~@3",
  W: "c4!2 b3!2 c4!2 d4!2 d#4!2 f4!2 d#4!2 d4!2", X: "c4!2 b3!2 c4!2 d#4!2 d4!6 d#4!2",
  Y: "c4!4 f4!4 d#4!2 f4!2 d#4!2 d4!2", Z: "d#4!2 d4!2 d#4!2 f4!2 g4!2 a#4!2 g#4!2 g4!2",
  AA: "f4!2 e4!2 f4!2 g4!2 g#4!2 c5!2 a#4!2 a4!2", AB: "g4!2 f#4!2 g4!2 a4!2 b4!2 c5!2 b4!2 b3!2",
  AC: "c4!2 d4!2 d#4!2 a4!2 d4!2 c4!2 b3!4", AD: "c4!2 g#3!2 g3!2 f#3!2 g3!2 f3!2 e3!2 d#3!2",
  AE: "d3!2 d4!2 c4!4 b3!2 d4!2 c4!4", AF: "b3!2 f3!2 d#3!2 g#3!2 g3!2 f#3!2 g3!2 b3!2",
  AG: "a3!2 g#3!2 a3!2 c4!2 b3!2 a#3!2 b3!2 d4!2", AH: "c4 ~@7", AI: "e4 ~ f4 ~", AJ: "f#4@4 ~@4 g4@7 ~",
  AK: "b3@7 ~ c4@4 ~@4", AL: "[~@8 g4@16 g4@16 g4@11 ~ b3@2 d4@2 f4@8]/4", AM: "e4 ~@7",
})).s("gm_viola").gain(0.31)

// other · cello
const cello = note(`<
  A B C D A B E F A B C D A B E F G H I J K L M F G H I J K L M F N O P Q N O P Q R S T U V W X Y ~ Z AA B C D A B E F R
  S T U V W X Y ~ Z AA B C D A B E F AB AC AD AE AB AC AD AE AF AG AH AI AJ AK AL AM AN B C D A B E F G H I J K L M F AO
  AP@2 AQ@2 AR@2 AS
>`.pickRestart({
  A: "~@8 c3@3 ~ c3@4", B: "c3!4", C: "~ c3 ~ c3", D: "b2@4 c3@4 g3@3 ~ g2@4", E: "e3!2 f3!2", F: "g3 g2 c3 ~",
  G: "~@2 g2!2", H: "g2@4 g2@4 g2@3 ~@5", I: "~@8 g2@3 ~ g3@4", J: "g3!2 g2 ~", K: "~ a2", L: "d3 b2 c3 ~",
  M: "e3 d3 c3 f3", N: "c4 ~ c4 ~ c4 ~ c4 ~ g3@3 ~@5", O: "c3 ~ c3 ~ c3 ~ c3 ~ g2@4 ~@4",
  P: "c4 ~ c4 ~ a3 ~ a3 ~ g3@3 ~@3 e3@2", Q: "d3@4 ~@2 d3@2 g2@5 ~@3", R: "e3 ~ e3 ~ g3 ~ g3 ~ a3@3 ~@5",
  S: "d3 ~ d3 ~ f3 ~ f3 ~ g3@4 ~@4", T: "c4 ~ c4 ~ a3 ~ a3 ~ g#3@2 ~@4 e3@2", U: "f3@2 ~ f3 e3@2 ~ g#3",
  V: "a3@2 a3 ~ a3 ~ a3 ~ g#3@3 ~@3 e3@2", W: "f3@4 ~@2 f3@2 e3@3 ~@3 f3@2", X: "e3 ~@3",
  Y: "~@6 a2 ~ g#2@2 b2@2 e2 ~@3", Z: "~@6 c3 ~ b2@2 d3@2 g2 ~ b2 ~", AA: "c3@4 ~@4 c3@3 ~ c3@4",
  AB: "~@12 g3 ~ [b2,c3] [a2,b2]", AC: "c3@2 ~@10 g3 ~ [b2,c3] [a2,b2]", AD: "c3 ~@3 a#2@3 c3",
  AE: "g#2@2 g#2 ~ a#2 ~ a#2 ~ d#2@2 ~@6", AF: "~@12 c4 ~ [e3,f3] [d3,e3]", AG: "f3@2 ~@10 d4 ~ [f#3,g3] [e3,f#3]",
  AH: "g3 ~@7", AI: "~@4 c4 ~ [f#3,g3] [e3,f#3] g3@2 [g#3,a#3] [g3,g#3] g3@2 [f3,g3] [d#3,f3]",
  AJ: "d#3@2 [a#2,c3] [a2,a#2] c3@2 [g#2,a#2] [f#2,g#2] g2@2 ~@6", // A#sus2 A#maj7 G#sus2 F#sus2
  AK: "g3 ~ [b2,c3] [a2,b2] c3@2 ~@2 g3 ~ [b2,c3] [a2,b2] c3@2 ~@2", AL: "g3 ~ [b2,c3] [a2,b2] c3@2 ~@10",
  AM: "~@8 g2@6 a2 b2", AN: "c3 ~@3 c3@2 c3@2", AO: "e2 ~ f2 ~", AP: "[f#2 ~ g2@4 c3 ~]/2", AQ: "[~@2 g2@4 c3 ~]/2",
  AR: "[~@4 g2@8 c3 ~ g2 ~]/2", AS: "c2 ~@7",
})).s("gm_cello").gain(0.31)

// bass · contrabass
const bass = note(`<
  A B C D A B E F A B C D A B E F G H I J K L M F G H I J K L M F N O P Q N O P Q R S T U V W X Y ~ Z AA B C D A B E F R
  S T U V W X Y ~ Z AA B C D A B E F AB AC AD AE AB AC AD AE AF AG AH AI AJ AK AL AM AN B C D A B E F G H I J K L M F AO
  AP@2 AQ@2 AR@2 AS
>`.pickRestart({
  A: "~@8 c2@3 ~ c2@4", B: "c2!4", C: "~ c2 ~ c2", D: "b1@4 c2@4 g2@3 ~ g1@4", E: "e2!2 f2!2", F: "g2 g1 c2 ~",
  G: "~@2 g1!2", H: "g1@4 g1@4 g1@3 ~@5", I: "~@8 g1@3 ~ g2@4", J: "g2!2 g1 ~", K: "~ a1", L: "d2 b1 c2 ~",
  M: "e2 d2 c2 f2", N: "c3 ~ c3 ~ c3 ~ c3 ~ g2@3 ~@5", O: "c2 ~ c2 ~ c2 ~ c2 ~ g1@4 ~@4",
  P: "c3 ~ c3 ~ a2 ~ a2 ~ g2@3 ~@3 e2@2", Q: "d2@4 ~@2 d2@2 g1@5 ~@3", R: "e2 ~ e2 ~ g2 ~ g2 ~ a2@3 ~@5",
  S: "d2 ~ d2 ~ f2 ~ f2 ~ g2@4 ~@4", T: "c3 ~ c3 ~ a2 ~ a2 ~ g#2@2 ~@4 e2@2", U: "f2@2 ~ f2 e2@2 ~ g#2",
  V: "a2@2 a2 ~ a2 ~ a2 ~ g#2@3 ~@3 e2@2", W: "f2@4 ~@2 f2@2 e2@3 ~@3 f2@2", X: "e2 ~@3",
  Y: "~@6 a1 ~ g#1@2 b1@2 e1 ~@3", Z: "~@6 c2 ~ b1@2 d2@2 g1 ~ b1 ~", AA: "c2@4 ~@4 c2@3 ~ c2@4",
  AB: "~@12 g2 ~ [b1,c2] [a1,b1]", AC: "c2@2 ~@10 g2 ~ [b1,c2] [a1,b1]", AD: "c2 ~@3 a#1@3 c2",
  AE: "g#1@2 g#1 ~ a#1 ~ a#1 ~ d#1@2 ~@6", AF: "~@12 c3 ~ [e2,f2] [d2,e2]", AG: "f2@2 ~@10 d3 ~ [f#2,g2] [e2,f#2]",
  AH: "g2 ~@7", AI: "~@4 c3 ~ [f#2,g2] [e2,f#2] g2@2 [g#2,a#2] [g2,g#2] g2@2 [f2,g2] [d#2,f2]",
  AJ: "d#2@2 [a#1,c2] [a1,a#1] c2@2 [g#1,a#1] [f#1,g#1] g1@2 ~@6", // A#sus2 A#maj7 G#sus2 F#sus2
  AK: "g2 ~ [b1,c2] [a1,b1] c2@2 ~@2 g2 ~ [b1,c2] [a1,b1] c2@2 ~@2", AL: "g2 ~ [b1,c2] [a1,b1] c2@2 ~@10",
  AM: "~@8 g1@6 a1 b1", AN: "c2 ~@3 c2@2 c2@2", AO: "e1 ~ f1 ~", AP: "[f#1 ~ g1@4 c2 ~]/2", AQ: "[~@2 g1@4 c2 ~]/2",
  AR: "[~@4 g1@8 c2 ~ g1 ~]/2", AS: "c1 ~@7",
})).s("gm_contrabass").gain(0.31)

stack(violin, viola, cello, bass)

More by Wolfgang Amadeus Mozart