Strudelify

Johnny's Version

Johnny H. Wyles

KeyC majorTempo120 bpm
0:00/0:00
// Johnny's Version — Johnny H. Wyles
// 120 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5366770; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 88 bars on a 16-step grid, each part at one level. 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.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · piano · "Piano, THInst (MIDI)"
const piano = note(`<
  A@5 B C D A B E F A G H I J K H L M N O P Q R S T U V W X Y Z S AA AB AC AD AE AF AG AH AI AJ AK A@3 B C D A B E F A G
  H I J K H L M N O P Q R S T U V W X Y Z S AA AB AC AD AE AF AG AH AI
>`.pickRestart({
  A: "d5 e5 d5 e5 d5 e5 d5 e5", B: "d5 e5 d5 c5 d5 e5 f5 e5", C: "d5 e5 [d5,e6] [e5,e6] d5 e5 d5 e5, ~@2 e6 c6",
  D: "d5 e5 d5 e5 [d5,c6] [e5,g5] d5 e5, g6 ~", E: "d5@2 e5@2 d6 e6 [e5,e6]@2 d5@2 e5@2 d5@2 e5@2, ~@2 d5 ~ e6@2 c6@2",
  F: "[d5,a6] e5 d5 [e5,c6] d5 e5 d5 e5, ~ g6@2 ~ g5@2 ~@2", G: "d5 e5 [d5,a5] [c5,g5] d5 e5 f5 e5",
  H: "~ c7 [c5,c6] [c5,c6,c7] ~ c7 ~ c7, [c5,c6] ~ [a5,c6]!2", // C Am
  I: "~ c7 [g5,b5] [a5,c6,c7] ~ b6 [b5,d6] [c6,e6,b6], [b5,d6] ~ [b5,d6] ~", J: "~ b6 ~ a6 ~ a6 ~ a6, ~@2 [f5,a5]@13 ~",
  K: "~ a6 ~ a6 ~ a6 ~ b6, ~@2 a5 b5", L: "~ c7 [g5,b5] [a5,c6,c7] ~ b6 [b5,d6] [f5,a5,f6,a6], [b5,d6] ~ [b5,d6] ~",
  M: "~ [e6,g6]@2 a5 ~ a5 ~ a5, ~@2 a5@2 ~@2 [f6,a6]@9 ~", N: "g7@6 ~ g4", O: "f5!4", P: "f5@3 e5 c5@2 g4@2",
  Q: "d5@15 ~", R: "g6@2 g4@2 e5 d5 c5 d5", S: "g5 a5 g5 [c5,a5] g5 a5 g5 a5, e5@3 ~ g4@4",
  T: "g5 a5 g5 a5 g5 a5 g5 a5, ~ e4 c5 b4", U: "g5 f5 e5 [c5,f5] e5 f5 e5 f5, e5 ~ g4@2",
  V: "[c4,e5] [d4,f5] [e4,e5] [g4,f5] e5 f5 e5 [f5,a5], ~@2 c5 b4", // C Dm E G7 F
  W: "d5@2 e5@2 g6 ~ e5@2 d5@2 e5@2 f6 ~ e5@2, ~@2 d5 ~ g5@2 d5 ~, ~@5 a6@3 ~@5 g6@3",
  X: "d5@2 e5@2 e6 ~ e5@2 [d5,e5]@2 e5@2 d6 ~ c5@2, f5@2 d5 ~@3 d5 ~, ~@5 f6@3 ~@5 e6@3", Y: "d5 c5 b4 c5 b4 c5 b4 c5",
  Z: "g4 a4 g4 f4 e4 d4 c4 b3", AA: "g5 a5 g5 a5 g5 a5 g5 f5, ~ e4 c5 b4", AB: "e5 f5 e5 f5 e5 f5 e5 f5, ~ d5",
  AC: "[c4,e5] [d4,f5] [e4,e5] [g4,f5] e5 f5 e5 f5, ~@2 c5 d5", AD: "e5 f5 e5 f5 e5 f5 e5 f5, ~ c5",
  AE: "e5 f5 e5 f5 e5 f5 e5 f5, ~@2 c5 d5", AF: "b4 c5 b4 c5 b4 c5 b4 c5, d5@15 ~",
  AG: "b4 c5 b4 c5 b4 c5 b4 c5, e5 g5", AH: "g5 a5 g5 a5 g5 a5 g5 a5, a4@15 ~",
  AI: "g5@2 a5@2 g5@2 a5@2 ~ [d5,b5]@7, ~ [b4,g5]", AJ: "~@6 [g4,g5]!2", AK: "[f5,f6] [e5,e6]@3 [c5,c6]@2 [d5,d6]@2",
})).s("gm_piano").gain(0.35)

stack(piano)