Strudelify
KeyE minorTempo135 bpm
0:00/0:00
// Kid — The Pretenders
// 135 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 107 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 30, guitar program 25.
setcpm(135/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 · acoustic guitar steel · F#m
const acoustic_guitar_steel = note("<~@76 [~@5 [f#3,a3]@2 ~@9] [~@3 [f#3,a3]@2 ~@11] ~@29>")
  .s("gm_acoustic_guitar_steel").gain(0.8)

// chords · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  ~@2 A B C D A B C D A B C D A B C D E@2 F@2 G@2 H I A B C D A B C D A B C D E@2 F@2 G@2 H I J@6 C D K L M N K L M N
  ~@8 O@2 P@2 Q@4 K L M N K L M N O@2 P@2 Q@4 O@2 P@2 Q@4 O@2 P@2 Q
>`.pickRestart({
  A: "[c3,e3,g3,c4,e4]!8", B: "[a2,e3,a3,c4,e4]!8", C: "[f2,c3,f3,a3,c4,f4]!8", D: "[g2,d3,g3,b3,d4,g4]!8",
  E: "[~ [g3,b3,e4]@31, [e2,b2,e3]]/2", F: "[~ [c4,e4]@31, [a2,e3,a3]]/2", G: "[~ [d4,f4]@31, [a2,d3,a3]]/2",
  H: "~ [a3,c4,f4]@15, [f2,c3,f3]", I: "~ [g2,b3,g4]@15, [d3,g3,d4]",
  J: "[[a2,e3,a3,c4,e4,a4] ~ [a2,e3,a3,c4,e4,a4]@3 [g2,d3,g3,b3,d4,g4]@2 [f2,c3,f3,a3,c4,f4]@2 [f2,c3,f3,a3,c4,f4]!5 [g2,d3,g3,b3,d4,g4]!2]/2", // Am G F G
  K: "[e2,b2,e3,g#3,b3,e4]!8", L: "[g#2,c#3,g#3,c#4,e4,g#4]!8", M: "[f#2,c#3,f#3,a3,c#4,f#4]!8",
  N: "[f#2,b2,f#3,a3,d#4,f#4]!8", // B7
  O: "[e2,b2,e3,g3,b3,e4]@2 [e2,b2,e3,g#3,b3,e4]@2 [e2,b2,e3,g#3,b3,e4]@2 [e2,b2,e3,g#3,b3,e4]@2 [e2,b2,e3,g#3,b3,e4]@2 [e2,b2,e3,g#3,b3,e4]!2 [e2,b2,e3,g#3,b3,e4]@2 [e2,b2,e3,g#3,b3,e4]@2", // Em E
  P: "[g#2,c#3,g#3,c#4,d#4,g#4]@2 [g#2,c#3,g#3,c#4,e4,g#4]@2 [g#2,c#3,g#3,c#4,e4,g#4]@2 [g#2,c#3,g#3,c#4,e4,g#4]@2 [g#2,c#3,g#3,c#4,e4,g#4]@2 [g#2,c#3,g#3,c#4,e4,g#4]!2 [g#2,c#3,g#3,c#4,e4,g#4]@2 [g#2,c#3,g#3,c#4,e4,g#4]@2", // G#sus4 C#m
  Q: "[f#2,c#3,f#3,a3,c#4,f#4]@2 [f#2,c#3,f#3,a3,c#4,f#4]@2 [f#2,c#3,f#3,a3,c#4,f#4]@2 [f#2,c#3,f#3,a3,c#4,f#4]@2 [f#2,c#3,f#3,a3,c#4,f#4]@2 [f#2,c#3,f#3,a3,c#4,f#4]!2 [f#2,c#3,f#3,a3,c#4,f#4]@2 [f#2,c#3,f#3,a3,c#4,f#4]@2", // F#m
})).s("gm_acoustic_guitar_steel").gain(0.48)

// bass · electric bass finger
const bass = note(`<
  ~@2 A B C D A B C D A B C D A B C D E@2 F@2 G@2 H I A B C D A B C D A B C D E@2 F@2 G@2 H I J@4 K@2 H I L M N O L M N
  O L@2 M@2 N@2 O@2 L@2 M@2 N@4 P Q R S P Q R T L@2 M@2 N@2 O@2 L@2 M U V W O@2 L@2 M U X
>`.pickRestart({
  A: "c2 b1 a1 g1", B: "a1 b1 c2 e2", C: "f1 a1 c2 a1", D: "g1 f1 e1 g1", E: "e1!8", F: "a1!8", G: "d2!8", H: "f1!8",
  I: "g1!8", J: "[a1 ~ a1@3 g1@2 f1@2 f1!5 g1!2]/2", K: "[a1 ~ a1@3 g1@2 f1@2 f1!5 g1@2]/2", L: "e2!8", M: "c#2!8",
  N: "f#1!8", O: "b1!8", P: "e2 d#2 c#2 b1", Q: "c#2 d#2 e2 g#2", R: "f#1 g#1 a1 c#2", S: "b1 a1 g#1 b1",
  T: "b1 a1 g#1 f#1", U: "g#2!7 g2", V: "f#2!8", W: "f#2@2 f#2@2 f#2@2 f#2@2 f#2 g#2 f#2@2 d#2@2 c#2@2", X: "f#2!6 ~@2",
})).s("gm_electric_bass_finger").gain(0.64)

// other · flute
const flute = note(`<
  ~@10 A B@2 C D@3 E@2 F G@5 H@2 ~@3 A B@2 C D@3 E@2 F G@5 I J K@3 J L M N ~@8 O P Q R@3 S T ~@8 U V@2 W X@3 W Y@2 Z@4
  AA@2 ~@13
>`.pickRestart({
  A: "c4@5 d4@2 b3", B: "[c4@7 e4@2 c4@7]/2", C: "b3 b3@2 c4@2 d4@2 b3", D: "[c4@5 d4@2 b3@2 c4@6 d4@2 e4 c4@6]/3",
  E: "[b3!3 c4@2 d4 b3@8 ~@2]/2", F: "g4 b3@2 b3@2 c4@2 d4",
  G: "[b3@6 ~ g4@2 f4 e4 c4 d4 e4@9 ~ g4@2 f4 e4 f4@11 ~@2]/5", H: "[g4 f4@3 e4@2 f4@2 e4@2 f4@14 ~@8]/2",
  I: "g4 f4@3 e4@2 f4@2 e4@2 f4@6", J: "~@4 e4 e4@2 g4", K: "[f4@2 e4 f4@2 e4 d4 c4@2 ~@3 e4 d4@2 c4@4 b3@2 c4@2 d4]/3",
  L: "f4@2 e4 f4@5", M: "c4", N: "d4", O: "~@5 b4@2 d#4", P: "d#4@3 e4@2 f#4 e4 f#4", Q: "d#4@5 d#4 c#4@2",
  R: "[d#4@3 e4@3 f#4@4 ~@3 g#4@2 e4@2 e4 c#4@6]/3", S: "g#4 e4 c#4 e4@5", T: "d#4", U: "e4@5 f#4@2 d#4",
  V: "[e4@7 g#4@2 e4@7]/2", W: "d#4 d#4@2 e4@2 f#4@2 d#4", X: "[e4@10 f#4@4 g#4@4 e4@2 c#4@8 g#4@7 e4@13]/3",
  Y: "[e4@9 ~@2 d#4@2 e4@2 f#4]/2", Z: "[d#4@10 ~ d#4@2 e4@2 f#4]/2", AA: "[d#4,g#4]/2",
})).s("gm_flute").gain(0.8)

// drums · kick
const kick = s("bd").struct("<~@2 A@16 B@8 A@12 B@8 C D C E C D F@2 A@23 B A@29>".pickRestart({
  A: "x!2", B: "x", C: "x ~@3 x!2 ~@2", D: "x!2 ~ x ~ x ~@2", E: "x!2 ~ x ~@4", F: "x!2 ~@2 x!2 ~@2",
})).gain(0.72)

// drums · clap
const clap = s("cp").struct("<[x!2] [x!3 ~] ~@105>").gain(0.64)

// drums · snare
const snare = s("sd").struct("<~@2 A@15 B C@7 D A@11 B C@7 D A@3 E A@3 F A@3 G A@4 H@7 I@8 J A@7 B I@21>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@3 x!2", C: "~@3 x", D: "~@4 x!2 ~ x", E: "~@4 x ~@6 x!5", F: "~@4 x ~@7 x!3 ~",
  G: "~@2 x ~@2 x ~ x", H: "~@2 x!2 ~@2 x ~", I: "~@2 x!2 ~ x!2 ~", J: "~@4 x!3 ~ x!3 ~ x!4",
})).gain(0.72)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@25 A ~@19 A ~@3 B ~@19 C@8 ~@9 C@21>".pickRestart({
  A: "~@11 x!2 ~@3", B: "~@5 x ~@2", C: "~@11 x ~@4",
})).gain(0.48)

// drums · low tom
const low_tom = s("lt").struct("<~@18 A@8 ~@12 A@8 ~@16 B@7 C D@7 E ~@8 C@7 F C@8 D C@4>".pickRestart({
  A: "~@2 x!2 ~@4", B: "x!8", C: "x!5 ~@3", D: "~ x!4 ~@3", E: "~ x ~@6", F: "x!2 ~ x ~@4",
})).gain(0.56)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@2 A@16 ~@8 A@12 ~@8 B A B C B A D@2 A@3 C A@4 ~@16 E A@7 ~@21>".pickRestart({
  A: "x!8", B: "x ~@3 x!4", C: "x!5 ~@3", D: "x!2 ~@2 x!2 ~@2", E: "~@2 x!6",
})).gain(0.64)

// drums · crash
const crash = s("cr").struct("<~@18 A ~@19 A ~@7 B ~ B ~ B ~ C B ~@3 D ~@12 A@9 ~@14 E ~@8 A ~@4>".pickRestart({
  A: "x", B: "~ x ~@2", C: "~ x ~ x", D: "~@5 x ~ x", E: "~ x!3",
})).gain(0.72)

// drums · claves
const claves = s("clave:2").struct("<~@70 [~@10 x!3 ~@3]!7 ~@30>").gain(3.53)

stack(
  acoustic_guitar_steel, acoustic_guitar_steel_2, bass, flute, kick, clap, snare, snare_soft, low_tom, pedal_hat, crash,
  claves
)

More by The Pretenders