Strudelify

Goon Squad

Elvis Costello

KeyE minorTempo200 bpm
0:00/0:00
// Goon Squad — Elvis Costello
// 200 bpm, 6/8, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 152 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(200/3)

// 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 · bandoneon
const bandoneon = note(`<
  A B@3 C D E@2 A B@3 C D E@2 F G H I J K L@2 M N O P Q R S T U@2 V W X Y V Z@2 AA AB AC X AD AE AF AG AH AI AJ AK AL AM
  AN AO AG AH AI AJ AK AL AM AP AQ AR AS A B@3 C D AT@2 F G H I J K L@2 M N O P Q R S T U@2 V W X Y V Z@2 AA AB AC X AD
  AE AF AG AH AI AJ AK AL AM AN AO AG AH AI AJ AK AL AM AP AQ AR AS A B@3 C D AT@2 A B@3 C D AT@2 A B@3 C D AT@2
>`.pickRestart({
  A: "e3@5 e3@3 e3@3 d3@2 d#3@3, [e4,g4,b4,e5] [e5,e6]", // Em E
  B: "[e3@5 e3@3 e3@3 d3@2 d#3@3 e3@5 e3@3 e3@3 d3@2 d#3@3 e3@5 e3@3 e3@3 d3@2 d#3@3, [d5,d6] [b4,b5]@5]/3", // D B
  C: "e3@5 e3@3 e3@3 d3@2 d#3@3, [c4,e4,g4,e5] [c5,c6]", D: "e3@5 e3@3 e3@3 d3@2 d#3@3, [b4,b5] [g4,g5]",
  E: "[g4,b4,f#5,f#6]@3 [g4,b4,f#5,f#6]@2 e3@3 [e3,g4,b4,f#5,f#6]@3 [d3,g4,b4,f#5,f#6]@2 d#3@3, e3@5 ~@11", // Gmaj7 Em Gmaj7
  F: "[e3,g5,b5,e6]@5 [e3,g5,b5,e6]@3 e3@3 d3@2 d#3@3", G: "[e3,g5,b5,e6]@5 [e3,g5,b5,e6]@3 e3@3 d3@2 e3@3",
  H: "[d3,f#5,a5,d6]@5 d3@3 a3@3 [d3,d6]@2 [d#3,b5]@3, ~@5 [f#5,a5,d6]@5 ~@6", I: "[e3,b3]@5 e3@3 e3@3 d3@2 f3@3, d6 ~",
  J: "[f#3,f#5,a5,d6]@5 f#3@3 f3@3 f#3@2 f3@3, ~@5 [f#5,a5,d6]@5 ~ e6@5", // D
  K: "d6@3 c#6@2 [e3,b5]@3 d3@3 g3@2 [g#3,b5]@3, [e3,b3]@5 ~@11", // E5 G#m E5
  L: "[[a3,f#5,a5,d6]@5 [d3,d6]@3 a3@3 g3@2 f#3@3 [e3,b3]@5 [e3,d6]@3 e3@3 d3@2 d#3@3, ~@8 b5@5 e6@8 ~@11]/2", // D E5 E7
  M: "[e3,g5,b5,e6]@5 [e3,e6]@3 [e3,e6]@3 d3@2 d#3@3, ~@11 e6@5", N: "[e3,e6]@5 [e3,e6]@3 e3@3 d3@2 e3@3",
  O: "[d3,f#5,a5,d6]@5 [d3,d6]@3 a3@3 [d3,d6]@2 [d#3,b5]@3", P: "[e3,b3,d6]@5 [e3,b5]@3 e3@3 d3@2 [f3,b5]@3",
  Q: "[f#3,f#5,a5,d6]@5 [f#3,b5]@3 f3@3 f#3@2 [f3,b5]@3, ~@8 d6@5 ~@3", // D B5 Fdim
  R: "[e3,b3,d6]@5 [e3,b5]@3 [d3,b5]@3 g3@2 g#3@3, ~@11 a5@5", // E7 E5 G
  S: "a5@3 ~@2 a3@3 [c#3,c#6]@5 [c#3,d6]@3, [c#5,e5], a3@5 ~@11, ~@3 b5@5 ~@8", T: "d3@5 d3@3 d#3@5 d#3@3, [a5,c#6,e6]",
  U: "[e3@5 e3@3 f#3@5 f#3@3 g3@5 g3@3 g#3@5 a3@3, [e5,a5,c#6]@21 ~@11]/2", // A
  V: "[g3,g5,b5,d6]@5 [g3,b5]@3 d3@3 e3@2 [f3,b5]@3, ~@8 [g5,b5,d6]@5 ~@3", // G Fdim G
  W: "[f#3,d5,a5,c6]@5 [f#3,b5]@3 e3@3 d3@2 [b3,a5]@3, ~@8 [d5,f#5,b5]@5 ~@3", // D7 B5 B7 Bm
  X: "[c#5,e5,a5]@5 ~@6 a5@2 f#5@3, a3 c#4, ~@5 a5@5 ~@6", Y: "[d3,c#5,e5,a5]@8 e3@3 f#3@2 a3@3",
  Z: "[[f#3,d5,a5,c6]@5 [f#3,c6]@3 [e3,c6]@3 [d3,b5]@2 b3@3 ~@5 a5@3 [c#5,e5,a5]@5 f#5@3, ~@13 [c#5,e5,a5]@8 ~@11, ~@2 a3 c#4]/2", // D7 F#dim C G A
  AA: "[d3,c#5,e5,a5,b5]@8 e3@3 f#3@2 [a3,b5]@3", AB: "[g3,g5,b5,d6]@5 [g3,d6]@3 [d3,g5,d6]@3 e3@2 f3@3, ~@11 b5@5",
  AC: "[f#3,d5,a5,c6]@5 [f#3,b5]@3 e3@3 d3@2 [b3,b5]@3, ~@8 [d5,f#5,b5]@5 ~@3", // D7 B5 B Bm
  AD: "[d3,c#5,e5,a5]@8 e3@3 [f#3,f#5]@2 [a3,a5]@3", AE: "[c#5,e5,b5]@3 a5@5 [c#5,e5,a5]@5 f#5@3, e3 f#3",
  AF: "[c#5,e5,b5]@5 a5@3 [c#5,e5,a5]@5 a5@3, g3 g#3", AG: "~ [e3,g5,b5,e6]", AH: "e3!2, [g5,b5,e6]",
  AI: "d3!2, [f#5,a5,d6]", AJ: "[e3,g5,b5,e6]@8 ~@5 g5@3, ~ e3",
  AK: "[c3,e5,g5,c6]@5 b5@3 ~@5 a5@3, ~@5 g3@5 ~ c4@5, ~@8 [c5,e5,g5,b5]@5 ~@3", // C Cmaj7
  AL: "[b3,d5,g5,c6]@5 b5@3 ~@5 g5@3, ~@5 g3@5 ~ d3@5, ~@8 [b4,d5,a5]@5 ~@3", // G Bm7
  AM: "[b3,d5,g5,b5]@5 b5@3 ~@5 g5@3, ~@5 g3@5 ~ d3@5, ~@8 [b4,d5,a5]@5 ~@3", AN: "[g4,d5,g5,b5] [d4,d5,g5,b5]",
  AO: "[b3,d5,g5,b5] [g3,d5,g5,b5]", AP: "[g3,d5,g5,b5] [b3,d5,g5,b5]", AQ: "[e3,d5,g5,b5] [g3,d5,g5,b5]",
  AR: "[b3,d5,g5,b5] [d4,d5,g5,b5]", AS: "[g4,d5,g5,b5]!2",
  AT: "[g4,b4,f#5]@3 [g4,b4,f#5]@2 e3@3 [e3,g4,b4,f#5]@3 [d3,g4,b4,f#5]@2 d#3@3, e3@5 ~@11", // Gmaj7 Em Gmaj7
})).s("gm_bandoneon").gain(0.46)

stack(bandoneon)

More by Elvis Costello