Strudelify

Eine kleine Nachtmusik K.525

W. A. Mozart

KeyG majorTempo120 bpm
0:00/0:00
// Eine kleine Nachtmusik K.525 — W. A. Mozart
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/2225101; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 192 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/4)

// 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.

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

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

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

// other · viola · soft notes
const viola_soft = note(`<
  ~@11 A B C ~ D E F@2 G ~@7 H I J K L M N O P O P Q ~@3 R P O P Q ~@6 S T ~@11 A B C ~ D E F@2 G ~@7 H I J K L M N O P
  O P Q ~@3 R P O P Q ~@6 S T ~@4 U V U V U V W X Y Z AA ~@3 AB AC ~@11 A B C ~ D E F@2 G ~@5 AD AE AF AG AH AI AJ AK AL
  AK AL AM ~@3 AN AL AO AP AQ ~@6 AR AS AR AT AU ~@6
>`.pickRestart({
  A: "f#3 g3", B: "c4!2 a3 d3", C: "d3 ~ d4 ~ d4@2 ~@2", D: "f#4 g4", E: "c4@2 c4!2 a3@2 a3!2", F: "~@4 g3!4",
  G: "g3 g4!5 ~@2", H: "~@6 f#4 ~", I: "b3 ~ g4 ~ e4 ~ c#4 ~", J: "~@2 e4@2 d4 ~ e4 ~", K: "d4@2 c#4 ~",
  L: "~@2 c#4@2 d4 ~ f#4 ~", M: "b3 ~ g3 ~ e3 ~ e4 ~", N: "e4 d4 ~@6", O: "d4!2 e4!2 f#4!2 d4!2",
  P: "c#4!2 d4!2 e4!2 c#4!2", Q: "d4 ~@7", R: "~ d4 e4!2 f#4!2 d4!2", S: "e4@6 d4 c#4", T: "d4 ~ d4 ~ d4 ~@3",
  U: "c4!2 d4!2 e4!2 c4!2", V: "b3!2 c4!2 d4!2 b3!2", W: "a3!2 b3!2 c4!2 a3!2", X: "a3!2 a#3!2 c4!2 a3!2",
  Y: "g3!2 f#3!2 g3!2 f#4!2", Z: "g4!2 f#4!2 g4 g3 f#3 g3", AA: "a3 ~@3", AB: "b4 ~ b4 ~ b4@2 c5@2 a4 ~ a4 ~ a4@2 b4@2",
  AC: "g4 ~ g4 ~ g4@2 b4@2 b4@2 a4@2 g4 ~ d4 ~", AD: "~@6 b3 ~", AE: "e3 ~ c4 ~ a3 ~ f#3 ~", AF: "~@2 a4@2 g4 ~ a4 ~",
  AG: "g4@2 f#4 ~", AH: "~@2 f#4@2 g4 ~ b4 ~", AI: "e4 ~ c4 ~ a3@2 ~ a4", AJ: "a4 g4 ~@6", AK: "g3!2 a3!2 b3!2 g3!2",
  AL: "f#3!2 g3!2 a3!2 f#3!2", AM: "g3 ~@7", AN: "~ g3 a3!2 b3!2 g3!2", AO: "g3 g4 a4!2 b4!2 g4!2",
  AP: "f#4!2 g4!2 a4!2 f#4!2", AQ: "g4 ~@7", AR: "a3@6 g3 f#3", AS: "g3 ~@3", AT: "g3 ~ g4 ~", AU: "e4 ~@3",
})).s("gm_viola").gain(0.2)

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

// other · cello · "Violoncello" · soft notes
const cello_soft = note(`<
  ~@11 A B C ~ A B D@2 E ~@7 F G H I J G K L M L M ~@5 M L M ~@7 N O ~@11 A B C ~ A B D@2 E ~@7 F G H I J G K L M L M
  ~@5 M L M ~@7 N O ~@4 P Q P Q P R M L S@2 L ~@4 T ~@11 A B C ~ A B D@2 E ~@5 U V W X Y V Z Q L Q L ~@5 L AA L ~@7 AB Q
  AB Q P ~@6
>`.pickRestart({
  A: "d3 e3", B: "c3!2 d3!2", C: "b2 ~ d3 ~ g3@2 ~@2", D: "~@4 g3!4", E: "g3!6 ~@2", F: "~@6 d#3 ~",
  G: "e3 ~ d3 ~ c#3 ~ a2 ~", H: "~@2 a#2@2 b2 ~ g2 ~", I: "a2@2 a3@3 g#3 g3 e3", J: "d3 ~ e3 ~ f#3 ~ d#3 ~",
  K: "b2 ~ g3 ~ a3 ~ a2 ~", L: "d3 ~@3", M: "a2 ~@3", N: "g3 a3", O: "d3 ~ d3 ~ d3 ~@3", P: "c3 ~@3", Q: "g2 ~@3",
  R: "e3 ~@3", S: "d#3", T: "d3", U: "~@6 g#3 ~", V: "a3 ~ g3 ~ f#3 ~ d3 ~", W: "~@2 d#3@2 e3 ~ c3 ~",
  X: "d3@2 d4@3 c#4 c4 a3", Y: "g3 ~ a3 ~ b3 ~ g#3 ~", Z: "e3 ~ c3 ~ d3 ~ d3 ~", AA: "g3 ~@3", AB: "c3 d3",
})).s("gm_cello").gain(0.2)

stack(violin, violin_soft, viola, viola_soft, cello, cello_soft)

More by W. A. Mozart