Strudelify

The Peanut Vendor

Moises Simons

KeyG majorTempo186 bpm
0:00/0:00
// The Peanut Vendor — Moises Simons
// 186 bpm, 2/2, key G 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/6053143; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 91 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(186/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(`<
  A B C D E F E F G@4 H I J K E F E F L@2 M@4 N@2 O@2 P@2 E F E Q@2 R@2 S T U E F E F G@4 H I J K E F E F L@2 M@4 N@2
  O@2 P@2 E F E Q@2 R@2 S T U V@2 W@2 X@7
>`.pickRestart({
  A: "~@2 [b3,b4] [c4,c5] [d4,d5] [e4,e5] [d4,d5] [c#4,c#5]", B: "[d4,d5] [d4,d5]@2 [c4,c5]@2 [c4,c5] [b3,b4]@2",
  C: "~ [g3,g4]@2 [a3,a4] [b3,b4] [c4,c5] [d4,d5] [b3,b4]", // G A B C D B
  D: "[d4,d5] [a3,a4]@2 [c4,c5]@2 [d3,f#3,c4,b4] [g3,b3,g4]@2", E: "[g2,g3] [b3,g4] [b3,d4] [d2,d3,b3,e4]",
  F: "a2@2 [c4,f#4] [c4,e4]@2 [c4,e4] [d2,d3,c4,d4]@2", // Cdim C D7
  G: "[g2@2 [g4,b4]@2 d4@2 [d2,d3,e4]@2 g2@2 f#4 e4@2 e4 [d2,d3,d4]@2, ~ [d3,g3,b3]@2 ~@2 [d3,f#3,c4]@2 ~, ~@8 d5@23 ~]/2", // G Dsus2 D G D7
  H: "g2@2 b4 c5 d5 e5 d5 c#5, ~ [d3,g3,b3,g4]@2 [g2,g3,g4]", // G
  I: "[d3,a3,f#4,d5]@2 [f#4,d5] ~@2 [e4,c5] [g2,g3,d4,b4]@2, ~@3 [e4,c5]@2 ~@3, ~@2 [d3,f#3] ~", // D C G C D
  J: "g2@2 g4 [c4,a4] [d4,b4] [e4,c5] [f#4,d5] [d4,b4], ~ [d3,g3,b3]@2 [d2,d3]", // F G C D G D
  K: "[a2,f#4,d5]@2 [f#4,a4] ~@2 [d4,b4] [g2,g3,b3,g4]@2, ~@3 [e4,c5]@2 ~@3, ~@2 [d3,f#3] ~", // D F#m G C D
  L: "[[g2,g3]@2 d4@2 e4@2 g4 ~@2 [c4,f#4,a4]@2 [c4,e4,c5]@2 [c4,e4,b4] [g2,g3,b3,d4,g4]@2, ~@6 [c4,e4]@3 ~@7, ~@3 [a2,a3] d3 ~@3, ~@7 a4@2 ~@7]/2", // G F#dim C Cmaj7 G C A
  M: "[[g2,g3]@2 d4@2 e4@2 g4 ~@2 [c4,f#4,a4]@2 [e4,f#4,c5]@2 [d4,g4,b4] [g2,g3,g4,b4]@2 g2@2 g4@2 d4@2 [d2,d3,e4]@2 g2@2 f#4 e4@2 e4 [d2,d3,d4]@2, ~@6 [c4,e4]@3 ~@23, ~@3 [a2,a3] d3 ~@4 [d3,g3,b3]@2 ~@2 [d3,f#3,c4]@2 ~, ~@7 a4@2 ~@5 d5@17 ~]/4", // G F#dim F#m7b5 G Dsus2 D C A …
  N: "[~ [g4,b4,d5] [g4,b4,e5] [g4,b4,f#5] [g4,b4,g5]@2 [f#4,c5,e5] ~ a2@2 [f#4,c5,d5] [f#4,c5,e5]@2 [e4,a4,c5] [d2,d3,d4,f#4,d5]@2, g2 ~@2 [d2,d3] ~@4, ~@7 [f#4,c5,f#5]@3 ~@6]/2", // G Em Gmaj7 G F#m7b5 D7 F#m7b5 Am …
  O: "[~ [d4,g4,b4] [d4,a4,c5] [d4,b4,d5] [g4,b4,e5]@2 [e4,g4,c5] ~ d3@2 [d4,f#4,b4] [c4,e4,c5]@2 [c4,e4,a4] [g3,b3,d4,b4]@2, [g2,g3] ~@2 [a2,a3] ~@4, ~@7 [d4,f#4,d5]@3 ~@6]/2", // G D7 G Em C Bm C Am …
  P: "[~ [b3,g4]@2 [c4,a4] [d4,b4]@2 g4 ~ d3@2 [c4,f#4] [c4,e4]@2 [c4,e4] [d2,d3,c4,d4]@2, g2 ~@2 c4@2 ~@3, ~@3 [a2,a3] ~@4, ~@7 a4@3 ~@6]/2", // Em F G Cdim C D7 A
  Q: "[~ [e4,f#4,c5]@2 [d4,f#4,d5] [f#4,c5,e5] [f#4,b4,d5] [e4,a4,c5] ~ g2@2 g4@2 d4@2 [d2,d3,e4]@2, a2 ~@2 [d2,d3] ~ [d3,g3,b3]@2 ~, ~@14 d5@17 ~, ~@7 [d4,b4]@3 ~@6]/2", // F#m7b5 D F#m7b5 Bm Am Dsus2 D G
  R: "[~ [e4,g4,c5]@2 [f#4,a4,d5] [g4,c5,e5] [a4,c5,f#5] [g4,c5,e5] ~@2 [g4,b4]@2 [a4,c5] d5 e5 d5 c#5, a2 ~@2 [d2,d3] [g2,g3] ~@2 [a2,a3,g4], ~@7 [f#4,c5,d5]@2 ~@3 b4@2 ~@2]/2", // C D C F#dim C G Am D …
  S: "[d3,f#4,d5]@2 [f#4,d5] [e4,c5]@2 [e4,c5] [g2,g3,d4,b4]@2", // D C G
  T: "~@3 [a4,a5] [b4,b5] [c5,c6] [d5,d6] [b4,b5], g2 [e3,g3,c#4] [d3,g3,d4] [f3,g#3,d4], ~ [g4,g5]@2 ~@5", // A B C D B C#dim G5 Ddim …
  U: "[d5,d6] [a4,a5]@2 ~@2 [b4,b5] [g3,b3,g4,g5]@2, [e3,g3,c4]@2 ~ [c5,c6]@2 ~@3, ~@2 [d3,f#3,c4] ~", // D A B G C D7
  V: "[g1 ~ [g2,g3,b3]@2 [d2,d3]@2 [e2,e3]@2 ~@2 [f#2,f#3] [e2,e3]@2 [e2,e3] [d2,d3]@2, ~@8 d4@23 ~, ~@8 b3@8 [a3,c4]@15 ~]/2", // G D E F# E D Am
  W: "[g2 ~ [g3,g4,b4]@2 [d3,d4]@2 [e3,e4]@2 ~@2 [f#3,f#4] [e3,e4]@2 [e3,e4] [d3,d4]@2, ~@8 d5@23 ~, ~@8 b4@8 [a4,c5]@15 ~]/2", // G D E F# E D Am
  X: "[g3 g4 ~@2 [g5,b5]@4 d5@4 e5@4 ~@7 f#5@4 e5@7 ~ e5@3 d5@7 ~@8 f#3@4 e3@7 e3@4 d3@7 ~@8 f#2@4 e2@7 e2@4 d2@7 [g1,g2,g4,b4,d5,g5]@4 ~@3, ~@2 d6@9 ~@17, ~@4 b5@4 [a5,c6]@14 ~ [a4,c5,d5]@14 ~ [a3,c4,d4]@14 ~@4]/7", // G Am D7
})).s("gm_piano").gain(0.3)

stack(piano)