Strudelify

trololo Ñ оÑенÑ ÑÐÐ веÐÑ Ñ нÐконеÑ воÐвÑÐÑÐÑÑÑ Ðомой

Jacob Brodsky

KeyC majorTempo140 bpm
0:00/0:00
// trololo Ñ оÑенÑ ÑÐÐ веÐÑ Ñ нÐконеÑ воÐвÑÐÑÐÑÑÑ Ðомой — Jacob Brodsky
// 140 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/6279229; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 112 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(140/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.

// chords · piano · "ピアノ"
const piano = note(`<
  ~@7 A B ~@4 C@2 D@5 ~@2 E F G H ~@2 I J ~@2 I J K L K M@2 N O P Q R ~ S T ~@4 U V W V X Y Z AA AB@2 AC@2 ~ AD@2 AE Q ~
  AF AG AH ~@4 AI@4 AJ@2 AK@2 AL@2 AM@2 ~ AN ~ AO AP AQ ~ AR AS@2 ~ AR AT@2 AU AV AW@2 AX@2 AY AZ@2 BA
>`.pickRestart({
  A: "~@12 g3@3 ~", B: "~@2 d4@11 ~@3", C: "[~@6 g3@3 ~@2 c4@11 f4@10]/2",
  D: "[~@2 g4@11 a4@11 b4@11 ~@6 c5 ~@2 e5 ~ d5@5 ~ a4 ~@2 d5 ~@2 c5@21 ~]/5", E: "g4@15 ~", F: "d5@15 ~", G: "g5@15 ~",
  H: "[c5,f5]@2 ~ [c5,g5]@5", I: "c4 d4 e4 f4 g4@2 a4 f4", J: "e4 ~ d4 ~ c4@4", K: "c5@3 c5!2 ~ c5 ~",
  L: "c5 ~ c5 ~ b4@4", M: "[c5@2 ~@2 c5@2 ~@2 [f4,c5]@23 ~]/2", N: "~@2 [f4,c5]!2 [f4,b4]@4",
  O: "[e3,c4]@11 ~ [f3,c4]@2 ~@2", P: "[g3,c4] ~ [f3,c4] ~ [e3,c4] ~ [f4,c5] ~",
  Q: "[f4,c5] ~ [f4,c5] ~ [f4,c5] ~ [f4,c5] ~", R: "[f4,c5] ~@7", S: "g4 ~ f4 ~ e4 ~ e4 ~", T: "d4 ~ c#4 ~@5",
  U: "~ d3", V: "a3@15 ~", W: "g3 e3", X: "~@8 d5 ~ e5 ~ f5 ~ g5 ~", Y: "a5@15 ~", Z: "~@8 a#4 ~ c5 ~ d5 ~ e5 ~",
  AA: "f5@15 ~", AB: "[~@4 b4@2 ~@2 e5@23 ~]/2", AC: "[~@4 d5@2 ~@2 g5@23 ~]/2",
  AD: "[~@12 [e3,c4]@11 ~ [f3,c4]@2 ~@2 [g3,c4]@2 ~@2]/2", AE: "[f3,c4] ~ [e3,c4] ~ [f4,c5] ~ [f4,c5] ~",
  AF: "~@6 g4 ~", AG: "f4 ~ e4 ~ e4 ~ d4 ~", AH: "c#4 ~@7", AI: "[~@4 d3@8 a3@15 ~ g3@8 e3@8 a3@15 ~@5]/4",
  AJ: "[~@4 d5 ~ e5 ~ f5 ~ g5 ~ a5@15 ~@5]/2", AK: "[~@4 a#4 ~ c5 ~ d5 ~ e5 ~ f5@15 ~@5]/2",
  AL: "[b4@2 ~@2 e5@23 ~@5]/2", AM: "[d5@2 ~@2 g5@23 ~@5]/2", AN: "~@2 [f4,c5] ~", AO: "~@6 [c5,f5]!2",
  AP: "[c5,f5]@2 [c5,f5]!2 [c5,f5]@2 [c5,f5]!2", AQ: "[c5,f5] ~@3", AR: "~@8 c5 ~ d5 ~ e5 ~ f5 ~",
  AS: "[g5@4 a5 ~ f5 ~ c5@15 ~@9]/2", AT: "[g5@4 a5 ~ f5 ~ c5@15 ~ [c5,f5]@6 [c5,f5]@2]/2", AU: "~ [c5,f5] [c5,f5]@2",
  AV: "~ [c5,e5]", AW: "[[c5,e5]@2 ~@2 [e5,g5]@2 ~@2 [d5,f5]@15 ~ [c5,e5]@8]/2",
  AX: "[[c5,e5]@2 ~@2 [e5,g5]@2 ~@2 [d5,f5]@15 ~@9]/2", AY: "a#4 c5",
  AZ: "[[c5,f5]@8 ~@4 [c5,e5] ~ [c5,f5]@4 [c5,f5] ~ [c5,d5] ~ [c5,f5] ~ [c5,e5]@2 ~@6]/2", BA: "c5 ~@3",
})).s("gm_piano").gain(0.4)

// other · piano · "ピアノ"
const piano_2 = note(`<
  ~@4 A B ~ C D ~ E F ~ G H I@5 ~@5 J ~@3 K ~@3 K L M L N@2 O ~ P Q R ~@5 S T ~@2 S T ~@4 U@2 V@2 ~@3 W Q ~@6 X Y ~@2 X
  Y ~@4 Z@2 AA@2 ~ AB ~ AC AD AE AF AG@2 AH AF AG@2 AI AJ AK AL@2 AM@2 AN AO@2 AP
>`.pickRestart({
  A: "~@15 g3",
  B: "[g#3,a3] [a#3,b3] [c4,c#4,d4] [d#4,e4] [f4,f#4] [f#4,g4] [e4,f4] [d4,d#4] [c4,c#4] [a3,a#3,b3] g3@5 ~, ~@10 g#3 ~@5", // Amaj7 Bmaj7 Emaj7 F#maj7 Gmaj7 Fmaj7 D#maj7 C#maj7
  C: "~@12 [g3,g#3] [a3,a#3] [b3,c4] [c#4,d4]", // G#maj7 A#maj7 Cmaj7 Dmaj7
  D: "[d#4,e4] [f4,f#4] [f#4,g4] [d#4,e4,f4] [c#4,d4] [b3,c4] [a3,a#3] g3@5 ~@4, ~@7 g#3 ~@8", // Emaj7 F#maj7 Gmaj7 Dmaj7 Cmaj7 A#maj7
  E: "~@9 [g3,g#3] [a3,a#3] [b3,c4] [c#4,d4] [d#4,e4,f4] [f#4,g4] [f4,f#4]", // G#maj7 A#maj7 Cmaj7 Dmaj7 Gmaj7 F#maj7
  F: "[d#4,e4] [c#4,d4] [b3,c4] [a3,a#3] g3@5 ~@7, ~@4 g#3 ~@11", // Emaj7 Dmaj7 Cmaj7 A#maj7
  G: "~@6 [g3,g#3] [a3,a#3,b3] [c4,c#4] [d4,d#4] [e4,f4] [f#4,g4] [f4,f#4] [d#4,e4] [c4,c#4,d4] [a#3,b3]", // G#maj7 C#maj7 D#maj7 Fmaj7 Gmaj7 F#maj7 Emaj7 Bmaj7
  H: "[g#3,a3] g3@5 a4@10", I: "[~@2 b4@11 c5@11 d5@11 ~@6 e5 ~@2 g5 ~ f#5@5 ~ d5 ~@2 f#5 ~@13 g3@11, ~@58 e5@21 ~]/5",
  J: "g4@2 ~ [g4,c5]@5", K: "~ c3", L: "g5@3 f5 e5 ~ g5 ~", M: "f5 ~ e5 ~ d5@4", N: "[f5@2 ~@2 e5@2 ~@2 d5@23 ~]/2",
  O: "~@2 g5!2 g5@4", P: "~@6 g5 ~", Q: "g5 ~ g5 ~ g5 ~ g5 ~", R: "g5 ~@7",
  S: "~@8 d3 [d#3,e3] f3 [f#3,g3] g#3 [a3,a#3] b3 [c4,c#4]", T: "d4 [c4,c#4] b3 [a3,a#3] g#3 [f#3,g3] f3 [d#3,e3] d3@8",
  U: "[~@4 e4 ~ f#4 ~ g#4 ~ a4 ~ b4@19 ~]/2", V: "[~@4 g4 ~ a4 ~ b4 ~ c5 ~ d5@19 ~]/2", W: "~@4 g5 ~ g5 ~",
  X: "~@4 d3 [d#3,e3] f3 [f#3,g3] g#3 [a3,a#3] b3 [c4,c#4] d4 [c4,c#4] b3 [a3,a#3]", // Emaj7 Gmaj7 A#maj7 C#maj7 A#maj7
  Y: "g#3 [f#3,g3] f3 [d#3,e3] d3@8 ~@4", Z: "[e4 ~ f#4 ~ g#4 ~ a4 ~ b4@19 ~@5]/2",
  AA: "[g4 ~ a4 ~ b4 ~ c5 ~ d5@19 ~@5]/2", AB: "~@2 g5 ~", AC: "~@6 g4!2", AD: "g4@2 c5!2 c5@2 g5!2",
  AE: "g5@4 ~@4 c5 ~ d5 ~ e5 ~ f5 ~", AF: "g5@4 a5 ~ f5 ~ e5@2 ~@2 d5@2 ~@2", AG: "[c5@23 ~@5 c5 ~ c5 ~]/2",
  AH: "c5@2 ~@2 c5@2 ~@2 c5 ~ d5 ~ e5 ~ f5 ~", AI: "c5 ~ c5 ~ c5@3 c5", AJ: "~ c5 c5@2", AK: "~ g4",
  AL: "[g4 ~ e5 ~@5 g3@4 g4@4, ~@8 d5@15 ~@9]/2", AM: "[g4 ~ e5 ~@5 g3@4 ~@4, ~@8 d5@15 ~@9]/2", AN: "f4 g4",
  AO: "[[g3,a#4]@8 c5@19 ~@5]/2", AP: "c5 ~@3",
})).s("gm_piano").gain(0.3)

// other · piano · "ピアノ"
const piano_3 = note(`<
  ~@4 A@2 B C@2 ~ D@3 E@3 F G@3 ~@2 H I J K L M L M L M L M ~@3 N O P Q R S T U V ~@8 W X Y Z AA AB AC ~ AD ~ AE AF AG
  AH AI AJ ~@9 AK@6 AL N AM ~ AN AO AP ~ AQ@7 AR@2 ~ AS@2 AT@3 ~ AU@2 AV
>`.pickRestart({
  A: "[~@15 d4@6 e4@5 f4@6]/2", B: "g4@8 f4@3 e4@5", C: "[~ g4@5 f4@21 ~@5]/2",
  D: "[~@9 g4@5 a4@6 b4@6 c5@8 b4@3 a4@5 c5@6]/3", E: "[g4@21 ~@4 f5@3 g5@3 a5@3 ~@2 g5@3 a5@3 b5@3 ~@3]/3",
  F: "g#5@2 a#5@3 c6@3 ~@3 a#5@3 c6@2", G: "[d6@3 c6@43 ~@2]/3", H: "c5 b4 a4 c5 b4 a4 c5 b4",
  I: "a4 c5 b4 a4 c5 b4 a4@2", J: "f5 e5 d5 f5 e5 d5 f5 e5", K: "d5@2 ~ [d5,g5]@5", L: "[e3,c4]@11 ~ [f3,c4]@2 ~@2",
  M: "[g3,c4] ~ [f3,c4] ~ [e3,c4]@4", N: "~@6 g5 a5", O: "a#4 c5 d5@2 c5 d5 e5 f5", P: "g5@15 ~",
  Q: "c5 d5 e5 f5 g5@2 a5 f5", R: "e5 ~ d5 ~ c5 ~ c6 ~", S: "b4 ~ a4 ~ e5 ~ d5 ~", T: "c5 ~@7",
  U: "c5@2 b4 a4 g4 f4 e4 d4", V: "c4 ~@3", W: "~@3 a4", X: "f5@3 e5 d5@2 f5@2", Y: "e5 a4", Z: "d5@3 c5@2 a#4@2 d5",
  AA: "c5 f4", AB: "e4@15 ~", AC: "e5 f#5 g#5 a5 b5@4", AD: "g5 a5 b5 c6 d6@4", AE: "~@6 c5 d5",
  AF: "e5 f5 g5@2 a5 f5 e5 ~", AG: "d5 ~ c5 ~ c6 ~ b4 ~", AH: "a4 ~ e5 ~ d5 ~ c5 ~", AI: "~@3 c5",
  AJ: "b4 a4 g4 f4 e4 d4 c4@2",
  AK: "[~@8 a4@4 f5@6 e5@2 d5@4 f5@4 e5@8 a4@8 d5@6 c5@4 a#4@4 d5@2 c5@8 f4@8 e4@15 ~ e5@2 f#5@2]/6",
  AL: "g#5 a5 b5@4 ~@2", AM: "b5 c6 d6@4 ~@2", AN: "~@2 c6 ~", AO: "~@4 c5@2 b4 a4", AP: "g4 f4 e4 d4 c4@2 ~@2",
  AQ: "[~@8 [g3,c4,e4]@11 ~ [g3,c4,e4]@2 ~@2 [g3,c4,e4]@15 ~ [a3,c4,f4]@11 ~ [a3,c4,f4]@2 ~@2 [g#3,c4,f4]@15 ~ [g3,c4,e4]@11 ~ [g3,c4,e4]@2 ~@2 [g3,c4,e4]@15 ~ [a3,c4,f4]@8]/7", // C F Fm C F
  AR: "[~@4 [a3,c4,f4]@2 ~@2 [g#3,c4,f4]@15 ~@9]/2", AS: "[[c4,c5]@2 [d4,d5]@2 [e4,e5]@2 [f4,f5]@2 [g4,g5]@23 ~]/2",
  AT: "[[c4,c5] [d4,d5] [e4,e5] [f4,f5] g4@12 c4 d4 e4 f4 g4@2 ~@2, ~@4 g5@17 ~@3]/3", // C D E F
  AU: "[~@12 [g4,g5] ~ [a4,a5]@4 [a4,a5] ~ [f#4,f#5] ~ [a4,a5] ~ [g4,g5]@2 ~@6]/2", AV: "[c4,c5] ~@3",
})).s("gm_piano").gain(0.4)

// other · piano · "ピアノ"
const piano_4 = note(`<
  A@8 B C D@2 ~@2 E@6 ~@2 F@3 G H@8 I J K L@2 M H N O P ~ Q R S T U V S T U W X Y Z AA AB@2 AC@2 ~ AD@3 O ~ AE AF AG
  AH@3 AI AH@3 AJ@6 AK@3 ~ AL ~ AM AN AO@8 AP AQ AR AS AT AS AU@2 AV ~ AW
>`.pickRestart({
  A: "[~@51 c5@3 d5@3 e5@3 f5@2 g5@6 a5@3 f5@3 g5@21 ~@33, ~@3 [c3,g3]@61]/8", B: "~@13 c5@3",
  C: "d5@2 e5@3 f5@3 g5@6 a5@2", D: "[f5@3 g5@21 ~@8]/2",
  E: "[~@51 c5@3 ~@3 g4@3 ~@14 c5@3 ~@2 g4@3 ~@14, ~@6 [c3,g3]@85 ~@5]/6", // C5
  F: "[g2@4 ~@2 g2@9 ~ g2@4 ~@2 g2@9 ~ g2@4 ~@2 g2@9 ~, f4@23 ~]/3", G: "[g2,f4]@2 ~ [g2,g4]@5", H: "c3@3 c3 c3@4",
  I: "e3@3 d3 c3 ~ e3 ~", J: "d3 ~ c3 ~ b2@4", K: "c3@3 d3 c3 ~ e3 ~", L: "[d3@2 ~@2 c3@2 ~@2 a#2@19 ~ a2@4]/2",
  M: "g2@15 ~", N: "c3@3 c3 c3@2 g2 ~", O: "g2 ~ g2 ~ g2 ~ g2 ~", P: "g2 ~@7", Q: "e3 ~ d3 ~ c3 ~ c3 ~",
  R: "a#2 ~ a2 ~@5", S: "d4 e4 f4 g4 a4@2 d5@2", T: "c#5 a4", U: "a#4 g4", V: "a4 c#4 d4 e4", W: "a4 g4 f4 e4",
  X: "[d3,d4]@11 ~ [d3,d4]@4", Y: "[c3,c4]@11 ~ [c3,c4]@4", Z: "[a#2,a#3]@11 ~ [a#2,a#3]@4",
  AA: "[a2,a3]@11 ~ [a2,a3]@4", AB: "[[g#2,g#3]@27 ~ [g#2,g#3]@4]/2", AC: "[[g2,g3]@15 ~]/2",
  AD: "[~@6 c3@3 c3 c3@4 c3@3 c3 c3@2 g2 ~ g2 ~]/3", AE: "~@6 e3 ~", AF: "d3 ~ c3 ~ c3 ~ a#2 ~", AG: "a2 ~@5 d4 e4",
  AH: "[f4 g4 a4@2 d5@2 c#5@4 a4@4 a#4@4 g4@4 a4@2]/3", AI: "c#4@2 d4@2 e4@2 d4 e4",
  AJ: "[g4@4 f4@4 e4@4 [d3,d4]@11 ~ [d3,d4]@4 [c3,c4]@11 ~ [c3,c4]@4 [a#2,a#3]@11 ~ [a#2,a#3]@4 [a2,a3]@11 ~ [a2,a3]@4 [g#2,g#3]@20]/6", // D C A# A G#
  AK: "[~@4 [g#2,g#3]@2 [g2,g3]@15 ~@3]/3", AL: "~@2 [g2,c5] ~", AM: "~@6 g2!2", AN: "g2@2 g2!2 g2@2 g2!2",
  AO: "[g2@2 ~@2 c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~, ~@8 c3@15 ~ a#2@15 ~ a2@15 ~ g#2@15 ~ c3@15 ~ a#2@15 ~ a2@15 ~ g#2@8]/8",
  AP: "c6 ~ c6 ~ [g2,g5]@3 [g2,g5]", AQ: "~ [g2,g5] [g2,g5]@2", AR: "~@4 c3 ~ c3 ~", AS: "c3 ~ c3 ~ a#2 ~ a#2 ~",
  AT: "a#2 ~ a#2 ~ c3 ~ c3 ~", AU: "[a#2 ~ a#2 ~@5 f4 ~ a#4 ~ g4 ~ c5 ~, ~@8 g2@15 ~@9]/2", AV: "f4 ~ a#4 ~@5",
  AW: "[c3,c5] ~@3", // C
})).s("gm_piano").gain(0.4)

stack(piano, piano_2, piano_3, piano_4)