Strudelify
Peggy Sue cover art

1999 · Buddy Holly

Peggy Sue

Buddy Holly

KeyA majorTempo143 bpm
0:00/0:00
// Peggy Sue — Holly Buddy
// 143 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 92 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(143/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 nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  A@2 B@2 C@3 D E F G H I@2 J K@7 L@2 M N@2 O P Q R S@4 T U@2 V W X@3 Y Z AA AB AC AD AE@2 AF AG AH AI AJ@2 AK AL@2 AM
  AN@2 AO AP@2 AQ AR AS@4 AT AU AV AW AX AY AZ BA BB@4 BC@2 BD BE BF BG BH@2
>`.pickRestart({
  A: "[[a3,c#4,e4]@2 [a3,c#4,e4]@2 [e3,a3,e4]@2 [g3,b3,e4] ~ [d4,f#4]@2 [d4,f#4]@2 [d4,f#4] ~ [g3,b3,e4] ~ [e3,a3,c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [g#3,b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 ~ c#4, e3@4 ~@4 d3@9 ~ [e3,a3]@4 ~@8 [b3,e4]@2, ~@2 a2@5 ~ [a2,a3]@4 a2@11 ~ [b2,e3,g#3]@7 ~]/2", // A A5 Em D Em A C#m E …
  B: "[e4@2 [e3,e4]@2 [c#4,e4]@2 e4 ~ [a3,d4,f#4]@2 [a3,d4,f#4]@2 [d4,f#4]@2 [d4,f#4] ~ [a3,c#4,e4]@2 [c#4,e4]@2 [a2,c#4,e4]@2 [b3,e4]@2 [e3,g#3,e4]@2 e4@2 [e3,b3,e4]@2 e4 ~, [a2,a3,c#4]@4 [a2,e3,a3]@4 a2@12 ~@4 [b2,b3]@5 ~@3, ~@8 d3@4 [d3,a3]@4 ~@2 [e3,a3]@4 ~@4 g#3@5 ~]/2", // E C#m D A C#m A E5 E …
  C: "[e4@2 e4@2 e4@2 [c#4,e4]@4 [c#4,e4]@2 [e3,a3,c#4,e4]@2 [b3,e4] ~ [d4,f#4]@2 [d4,f#4]@2 [a3,d4,f#4]@2 [d4,f#4]@4 [a3,d4,f#4]@2 [d3,a3]@2 [g3,b3,e4] ~ [e3,e4]@2 e4@2 [e3,a3,c#4,e4]@2 [c#4,e4] ~ [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [b3,e4] ~, a2@3 a2@4 a2@5, [e3,a3,c#4]@3 [e3,a3]@3 ~@2 d3@6 ~@6 d3@4, ~@16 a3@4 ~@2 a3@2 ~@4 [d4,f#4] ~@3 [a3,c#4]@4 ~@12]/3", // C#m A E5 D D5 Em E A …
  D: "[a3,e4]!2 [a3,c#4,e4] e4@2 e4 [e3,a3,c#4,e4] [d3,b3,e4], [e3,c#4] e3@2 ~, ~@3 [a3,c#4]@3 ~@2", // A5 A E7 C#m A
  E: "[d4,f#4]!3 d4@2 [d4,f#4] [a3,d4,f#4]!2, d3@5 ~@3, a3 a3@2 ~, ~@3 f#4 ~@4", // D
  F: "f#4@2 f#4@2 [d4,f#4]@2 [a3,d4,f#4]@4 [d4,f#4]@2 [d4,f#4]@2 b3 ~, a3@3 ~@3 a2@2, [d3,d4]@4 d3@6 [d3,a3]@5 ~", // D D5
  G: "[a3,e4]@2 [a3,e4]@2 [a3,c#4,e4]@2 [b3,e4] ~ [a3,d4,f#4]@2 [a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 [d3,g3,b3,e4]@2, [a2,e3,c#4] a2@2 a2, ~@4 e3 ~@3 d3@4 ~@4", // A5 A E5 D Em7 A
  H: "[c#4,e4]@2 [c#4,e4]@2 [a3,c#4,e4]@2 [a3,e4]@4 e4@2 [a2,e4]@2 [c#4,e4] ~, e3@7 ~, [a2,a3]@2 a2@3 a3@2 ~, ~@3 c#4@4 ~", // C#m A A5 C#m A
  I: "[e4@2 e4@2 [e3,g#3,b3,e4]@2 [g#3,b3,e4]@4 [g#3,b3,e4]@2 [g#3,b3,e4]@2 [b3,e4] ~ [d4,f#4]@2 [d4,f#4]@2 [d4,f#4]@2 [a3,d4,f#4]@4 [a2,a3,d4,f#4]@2 [a3,f#4]@2 [g3,b3,e4] ~, b2@13 ~@3 a3@6 ~@6 a2@4, [e3,g#3,b3]@4 ~@2 e3@7 ~ d3@8 d3@9 ~, ~@28 d4 ~@3]/2", // E E5 D Em E
  J: "[e3,a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [b3,e4] ~ [d4,f#4]@2 [d4,f#4]@2 [d4,f#4]@2 [b3,e4] ~, a2@3 a2, ~ e3@2 ~ a3@3 ~", // A E5 D E5
  K: "[[c#4,e4]@2 [c#4,e4]@2 [a3,c#4,e4] ~ [e3,g#3,b3]@4 [e3,g#3,b3,e4]@2 [g#3,b3,e4]@2 ~@2 [c#4,e4]@2 [c#4,e4]@2 [e3,c#4,e4]@2 e4@2 e4@2 [a3,e4]@2 [e3,a3,c#4,e4]@2 [b3,e4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [d4,f#4]@2 [d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [b3,e4] c#4 e4@2 [e3,e4]@2 [a3,c#4,e4]@2 [a3,b3,c#4,e4] ~ [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 ~@2 [a3,e4]@2 [a3,e4]@2 [a3,c#4,e4]@2 [c#4,e4]@4 [c#4,e4]@2 [e3,a3,c#4,e4]@2 [b3,e4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [d4,f#4]@2 [d4,f#4]@4 [d4,f#4]@2 f#4@2 f#4@2 [d4,f#4]@2 [d4,f#4]@2 [a3,d4,f#4]@2 [d4,f#4]@2 f#4@2 [a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 [d3,g3,b3,e4] ~, [e3,a3]@5 ~ b2@7 ~ [d3,g3,b3,e4]@2 a3@6 a3@4 ~@12 a3@4 ~@6 [a3,c#4]@4 ~@12 c#4@4 ~@2 a3@6 ~@2 g3 ~@5 a3@8 a3@8 ~@2 a3@4 ~@6, ~@6 e4@2 ~@7 a2@7 [a2,e3,c#4]@6 a2@16 a2@8 [a2,e3]@4 a2@20 a2@20 a2@16, ~@16 e3@4 ~@12 d3@4 ~@12 e3 ~@7 d3@4 d3@4 e3@12 ~@2 d3@18 d3@4 d3@8 ~@4, ~@23 d4 ~@4]/7", // C#m A E C#m A5 A E5 D …
  L: "[[c#4,e4]!2 [a3,c#4,e4] [d3,g3,b3,e4] [a3,d4,f#4]!3 [g3,b3,e4] [e3,a3,c#4,e4] ~ [c#4,e4] [c#4,e4]@2 [c#4,e4] [e3,a3,c#4,e4] [d3,g3,b3,e4], e3@3 ~ d3@2 d3@2 ~ a3@2 a3@3 ~@2, [a2,a3] a2 a2@6, ~@9 [c#4,e4] ~@6, ~@19 e3@9 ~@4]/2", // C#m A Em7 D Em A C#m A …
  M: "[b3,e4]@2 [b3,e4]@2 [e3,b3,e4]@2 ~@2 g#3@2 [g#3,b3,e4]@2 [b2,g#3,b3,e4]@2 [b3,e4] ~, b2@3 ~, [e2,e3,g#3] g#3 ~@2, ~@3 e3@4 ~, ~@3 [b3,e4]@2 ~@3", // E5 E E5 E E5
  N: "[[d3,a3,d4,f#4]@2 [d4,f#4]@2 [d4,f#4]@2 [d3,d4,f#4]@4 [d4,f#4]@2 [d3,d4,f#4]@2 [d3,g3,b3,e4] ~ [e3,a3,c#4]@4 [e3,c#4,e4]@2 e4@2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 [a3,f#4]@2 b3 ~, a2@3 a2@2 [a2,a3] a2@2, ~ d3@2 ~@11 d3@2, ~@2 a3 ~ a3@6 a3@4 ~@2 e4@2 ~@10 d4 ~@3]/2", // D Em7 A C#m D A
  O: "[a3,c#4,e4]@2 [a3,c#4,e4]@2 [a2,a3,c#4,e4]@2 [b3,e4]@2 e4@2 ~@2 [e2,b2,e3,b3]@2 [a2,d3,g3,b3,e4] ~, [a2,e3]@2 ~ [b2,e3]@3 ~@2, ~@3 g#3@2 [g#3,e4]@2 ~, ~@2 b3 ~", // A E5 Em7 A5 E5 C#m
  P: "[a3,c#4,e4] [c#4,e4]!2 [e3,a3,c#4,e4]@2 [a3,c#4,e4] e4!2, a2@3 [a2,e3,a3,c#4], e3@3 ~@5, ~ a3@2 ~@5", // A C#m A
  Q: "e4!2 [a3,c#4,e4] [c#4,e4]@2 [c#4,e4] [a2,e3,a3,e4] [d3,g3,b3,e4], [e3,a3,c#4] e3@2 ~, ~@6 a3@6 c#4 ~@3", // A C#m A5 Em7 A
  R: "[c3,f3,c4,f4]@2 [c3,f3,c4,f4]@2 [a3,c4,f4]@2 [c4,f4]@4 [c4,f4]@2 [c3,a3,c4,f4]@2 [a2,d3,g3] ~, a3@2 f3@5 ~, ~@3 [c3,a3]@3 ~@2", // F5 F F5 F Dsus4 F
  S: "[[a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,e4]@2 e4@4 [e3,c#4,e4]@2 [a3,c#4,e4]@2 [g3,b3,e4]@2 [a3,f#4]@2 [a3,f#4]@2 [a3,d4,f#4]@2 f#4@4 f#4@2 [d3,d4,f#4]@2 [a3,d4,f#4]@2 [d4,f#4]@2 [d4,f#4]@2 [d3,a3,d4,f#4]@2 [d4,f#4]@4 [d4,f#4]@2 [a3,f#4]@2 [g3,b3,e4] ~ e4@2 e4@2 [a3,c#4,e4]@2 [b3,e4] ~ [d4,f#4]@2 [d4,f#4]@2 [a3,d4,f#4]@2 [b3,e4] ~, a2@15 ~@5 a2@8 a2@4 a2@12 a2@8 a2@8 a2@4, e3@10 ~@4 d3@8 [d3,d4]@6 ~@2 d3@5 ~@3 d3@8 ~@2 e3@6 d3@9 ~, ~@4 c#4@6 ~@6 d4@4 ~@24 d4 ~@19, ~@3 a3@3 ~@5 a3@4 ~ a3@2 ~ a3@3 ~@2 [a3,c#4]@2 ~@2 a3@2 ~@2]/4", // A A5 C#m A Em D Em A …
  T: "e4!2 [a3,c#4,e4] [e3,a3,c#4,e4]@2 [a3,c#4,e4] [a2,a3,c#4,e4] [c#4,e4], e3@3 ~@2 e3@2 ~, [a2,a3,c#4] a2@2 ~", // A C#m A
  U: "[e4@2 e4@2 [e3,b3,e4]@2 [b3,e4]@4 [g#3,b3,e4]@2 [e3,g#3,b3,e4]@2 [g#3,b3,e4] ~ [d4,f#4]@2 [d4,f#4]@2 [d4,f#4]@2 [d4,f#4]@4 [d4,f#4]@2 [a3,d4,f#4]@2 [b3,e4]@2, b2@13 ~@19, [e3,g#3,b3]@2 g#3@3 ~@3 a3@2 a3@4 ~@2, ~@6 e3@6 ~@2 d3@17 ~]/2", // E5 E D E5 E
  V: "[a2,e3,a3,c#4,e4]@4 [e3,a3,c#4,e4]@2 [c#4,e4] ~ [d3,a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [c#4,f#4] ~, ~ a2 a2@2, ~@10 d3@5 ~", // A C#m D F#5
  W: "[c#4,e4]@2 [c#4,e4]@2 [a2,a3,c#4,e4] ~ b3@2 b3@2 [b3,e4]@2 [e2,b2,b3,e4]@2 [a2,d3,g3,b3,e4] ~, [a2,e3,a3]@2 ~ [e2,b2,e3,g#3,e4]@2 [e3,g#3]@2 ~", // C#m A E5 Em7 A5 E
  X: "[[a3,c#4,e4]@2 [a3,c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@4 [c#4,e4]@2 [c#4,e4]@2 e4@2 [a3,d4,f#4]@2 [d4,f#4]@2 [d4,f#4]@2 [d4,f#4]@4 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [b3,e4] ~ [c#4,e4]@2 [c#4,e4]@2 [e3,a3,c#4,e4]@2 [g3,b3,e4] ~ [a3,d4,f#4]@2 [a3,d4,f#4]@2 [d4,f#4]@2 [b3,e4]@2, e3@14 b3 ~@33, a2@3 a2@2 a2@5 a2@2, ~@4 a3@6 a3@5 ~@5 a3@6 ~@6 [e3,a3]@4 ~@4 d3@4 [d3,a3]@4]/3", // A C#m D E5 C#m A Em D …
  Y: "[a3,c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@4 [c#4,e4]@2 [c#4,e4]@2 [d3,g3,b3,e4] ~, a2, e3@7 ~, ~ a3@4 a3@2 ~", // A C#m Em7
  Z: "[a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 f#4@2 f#4@2 [d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4] ~, d3@4 ~@2 [a3,d4]@5 ~@5", // D D5
  AA: "[a3,d4,f#4]@2 [d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@4 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [g3,b3,e4] ~, d3@11 ~ d3@4", // D Em
  AB: "e4@2 e4@2 [e3,c#4,e4]@2 [b3,e4] ~ [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 b3 ~, a3@3 ~ d3@4, c#4 ~@3", // C#m E5 D
  AC: "[c#4,e4]@2 [c#4,e4]@2 [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]@4 [a3,c#4,e4]@2 [e3,a3,c#4,e4]@2 [a2,c#4,e4] ~, a2@7 ~, [e3,a3] ~@3", // C#m A A5
  AD: "[g#3,e4]@2 e4@2 e4@2 e4@4 [g#3,b3,e4]@2 [b2,e3,g#3,b3,e4]@2 [b3,e4] ~, [b2,e3]@3 [b2,e3]@3 ~@2, [e2,b3]@2 b3@3 ~@3, ~ g#3@4 ~@3", // C#m E E5
  AE: "[f#4@2 f#4@2 [d4,f#4]@2 ~@4 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 [g3,b3,e4] ~ e4@2 e4@2 [e3,a3,c#4,e4]@2 [b3,e4] ~ [a3,d4,f#4]@2 [a3,d4,f#4] ~ [a3,d4,f#4]@2 [g3,b3,c#4,e4] c#4, [d3,a3]@6 [d3,a3,d4,f#4]@4 ~@6 [e3,a3,c#4]@4 ~@2 d3@5 ~@5, [a2,d4]@4 ~@3 a2@5 a2@8 a2@8 [a2,d3]@4]/2", // D Em A E5 D C#m7b5 D5 D …
  AF: "[c#4,e4]@2 [c#4,e4]@2 [e3,a3,c#4,e4] ~ e4@2 e4@2 [g#3,b3,e4]@2 [b2,e3,b3,e4]@2 [a2,d3,g3,b3,e4] ~, a2@3 [g#3,b3]@2 ~@3, [e3,a3]@2 ~ e3@3 ~@2", // C#m A E E5 Em7 G#m A5
  AG: "[a3,c#4,e4] [c#4,e4]!2 e4@2 e4 [e3,a3,c#4,e4] [d3,g3,b3,e4], a2, e3 e3@2 ~, ~ a3@2 [a3,c#4]@3 ~@2", // A C#m A Em7 A
  AH: "[a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 f#4@2 f#4@2 [a3,d4,f#4]@2 [a3,f#4]@2 [g3,b3,e4] ~, a2@12 d4 ~@3, d3@6 [d3,a3,d4]@5 ~ d3@4", // D Em D5
  AI: "[a3,e4]@2 e4@2 [e3,c#4,e4]@2 [b3,e4] ~ f#4@2 f#4@2 [d4,f#4]@2 [g3,b3,e4] ~, a2, [e3,c#4]@4 ~@2 d3@9 ~, ~@2 a3@5 ~ a3@6 ~@2, ~@2 d4 ~", // A5 C#m E5 D Em C#m
  AJ: "[[e3,a3,c#4,e4] [a3,c#4,e4] [a3,d4,f#4] [c#4,e4]@2 [c#4,e4] [e3,d4,f#4] e4 [d4,f#4]!3 [a2,d4,f#4]@2 [d3,a3,d4,f#4] [a3,d4,f#4]!2, a2@6 a2@5 ~@5, ~ e3@2 a3@4 d3@6 ~ d3@2, ~@14 g3 ~ a3@4 a3@6 ~@6]/2", // A D C#m D
  AK: "[d3,f#4]@2 ~ d3 [a3,d4,f#4]@2 [a3,d4,f#4]@4 [d4,f#4]@2 f#4@2 b3 ~, [a3,d4] a2@3, ~ f#4 d3@4 d3@2, ~@5 a3@2 ~, ~@12 d4 ~@3", // D D5
  AL: "[e4@2 e4@2 [e3,c#4,e4]@2 e4 ~ [d4,f#4]@2 [d4,f#4]@2 [d3,a3,d4,f#4]@2 [g3,b3,e4] ~ [c#4,e4]@2 [c#4,e4]@2 [e3,c#4,e4]@2 ~@4 [a3,c#4,e4]@2 [e3,a3,c#4,e4]@2 [d3,g3,b3,e4]@2, a3@3 ~ [d3,a3]@2 ~@2 [e3,a3]@2 a3@3 ~@3, [a2,e3,c#4]@4 a2@8 a2@8 a2@11 ~, ~@11 [c#4,e4]@2 ~@3, ~@23 e3@5 ~@4]/2", // C#m D Em C#m A Em7 D5 A5 …
  AM: "[b3,e4]@2 [b3,e4]@2 [e3,b3,e4]@2 ~ e3@3 ~ e3 [b2,e3,g#3,b3,e4]@2 [b3,e4] ~, e2@7 ~, [b2,g#3] b2@2 ~, ~@2 g#3@3 [g#3,b3,e4] ~@2, ~@3 [b3,e4]@2 ~@3", // E5 E E5 E E5
  AN: "[[a3,d4,f#4]@2 [a3,d4,f#4]@2 [a2,d4,f#4]@2 [a2,d4,f#4]@4 [a3,d4,f#4]@2 [d4,f#4] ~ [g3,b3,e4] ~ e4@2 e4@2 [a3,c#4,e4]@2 e4 ~ [a3,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 ~@2, [a2,d3]@4 [d3,a3]@6 d3@5 ~ e3@6 ~@10, ~@12 a2@11 ~ [a2,d3]@4 [a2,d3]@4, ~@6 a3 ~ [a3,c#4]@2 ~@6]/2", // D Em A D D5 A
  AO: "[c#4,e4]!3 [b2,e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] [b2,e3,g#3,b3,e4] e4, [a2,e3,a3]@5 ~@11", // C#m E A5
  AP: "[e4@2 e4@2 [a3,c#4,e4]@2 [a3,c#4,e4]@4 [a3,c#4,e4]@2 [e3,a3,c#4]@4 [e3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 [e3,c#4]@4 [e3,c#4,e4]@2 [e3,c#4,e4]@2 [d3,b3,e4] ~, a2@12 a2@15 ~ a2@4, [a3,c#4]@4 e3@8 e4@2 ~@2 a3@3 e3@3 e4@2 ~@8, ~@9 [c#4,e4] ~ a3@4 ~]/2", // A C#m A C#m E7 A C#m
  AQ: "[c4,f4]@2 [c4,f4]@2 [a3,c4,f4]@2 ~@2 c3@2 [a3,c4,f4]@2 [c3,f3,a3,c4,f4]@2 [d3,g3,b3] ~, [c3,f3]@3 ~@5, a3@2 ~ [f3,a3,c4,f4]@2 ~@3", // F5 F G F5 F
  AR: "[e3,a3,e4] [c#4,e4] [e3,c#4,e4] [e3,c#4,e4]@2 [c#4,e4] [e3,a3,c#4,e4] [g3,b3,e4], a2@3 a2, ~ a3@2 ~", // A5 C#m A Em
  AS: "[[d4,f#4]@2 [d4,f#4]@2 [d4,f#4]@2 f#4@4 f#4@2 f#4@2 f#4@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@4 [d4,f#4]@2 f#4@2 [g3,b3,e4]@2 e4@2 e4@2 [e3,a3,c#4,e4]@2 [g3,b3,e4] ~ [a3,d4,f#4]@2 [d4,f#4]@2 [a3,d4,f#4]@2 [b3,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [c#4,e4]@4 [c#4,e4]@2 [a3,c#4,e4]@2 e4@2, a2@15 ~ a2@9 ~@3 a2@35 ~, d3@12 d3@8 d3@6 [d3,a3]@5 ~@11 d3@5 ~ e3@4 e3@9 ~@3, a3@4 a3@8 [a3,d4]@4 ~@16 [a3,c#4]@4 ~@6 a3 ~@11 a3@6 ~@4, ~@6 d4@6 ~@16 d4 ~@35]/4", // D Em A Em D E5 A C#m …
  AT: "e4@2 e4@2 [b3,e4]@2 [b3,e4]@4 [b3,e4]@2 [e3,e4]@2 e4 ~, e2, b2@7 ~, e3@3 e3@3 ~@2, [g#3,b3] g#3@2 [g#3,b3]", // E5 E G#m
  AU: "[d4,f#4]@2 [d4,f#4]@2 [d4,f#4]@2 [d3,d4,f#4]@4 [a3,d4] ~ [d3,a3,d4,f#4]@2 [d3,g3,b3,e4] ~, a2@5 ~@3, d3@3 ~@5, a3@2 a3@3 f#4 ~@2", // D D5 D Em7
  AV: "[e3,a3,c#4]@4 [e3,a3,c#4,e4]@2 e4 ~ [d4,f#4]@2 [d4,f#4]@2 [a3,d4,f#4]@3 ~, e4 ~ a2@6, ~@8 d3@7 ~, ~@2 a3 ~", // A D
  AW: "[a3,c#4,e4]@2 [a3,c#4,e4]@2 [a2,a3,c#4,e4] ~ [e3,g#3,b3,e4]@4 [g#3,b3,e4]@2 [b2,e3,g#3,b3,e4]@2 [e3,e4]@2, [a2,e3] ~@3", // A E A5
  AX: "e4@2 e4@2 [a3,c#4,e4]@2 [a3,c#4,e4]@4 [c#4,e4]@2 [c#4,e4]@2 [d3,b3,e4] ~, a2@10 [a2,a3]@5 ~, [e3,a3,c#4]@2 e3@5 ~", // A C#m E7 A
  AY: "[d3,a3,d4,f#4] d4 [d4,f#4] [d3,d4,f#4]@2 [d3,d4,f#4] [a3,d4,f#4] [g3,b3,e4], ~ a3@2 a3@3 d3@2, ~@2 f#4 ~@13", // D Em
  AZ: "[e3,a3,c#4,e4]!2 [a3,c#4,e4] e4!2 [c#4,e4] [a3,c#4,e4] [b3,e4], ~ e3@2 e3, ~@3 a3@3 ~@2, ~@3 c#4@2 ~@3", // A C#m A E5
  BA: "[c#4,e4]!3 [c#4,e4]@2 [c#4,e4] [g3,e4] g3, g3@3 g3@3 c#4@2, e3@4 ~@10 e4 ~", // C#m C
  BB: "[[d4,f#4]@2 [d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@4 [d4,f#4]@2 [d4,f#4]@2 [d4,f#4]@2 [d4,f#4]@2 [a3,d4,f#4]@2 [d4,f#4]@2 [d4,f#4]@4 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [g3,b3,e4] c#4 e4@2 e4@2 [e3,c#4,e4]@2 [b3,e4] ~ [d4,f#4]@2 [d4,f#4]@2 [d3,a3,d4,f#4]@2 [g3,b3,e4] ~ [a3,e4]@2 [a3,e4]@2 [c#4,e4]@2 [c#4,e4]@4 [c#4,e4]@2 [c#4,e4]@2 [a2,c#4,e4] ~, a3@4 ~@6 d3@5 ~ a2@20 [a2,a3]@4 a2@22 ~@2, ~@12 a3@6 ~@2 a3@6 ~@26 a3@7 ~ a3@4, ~@16 d3@4 ~@12 [e3,a3,c#4]@4 ~@4 [d3,a3]@4 ~@4 [e3,c#4]@5 ~ e3@8 ~@2]/4", // D Em C#m E5 D Em A5 C#m …
  BC: "[[e3,b3,e4]@2 [b3,e4]@2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]@4 [b3,e4]@2 [b2,e3,b3,e4]@2 [g#3,b3] ~ [d4,f#4]@2 [d4,f#4]@2 [d4,f#4]@2 ~@4 [d4,f#4]@2 f#4@2 [g3,b3,e4] ~, g#3@2 ~@3 g#3@2 e4 a3@2 a3@5 ~, ~@2 b2@9 ~@11 [d4,f#4]@4 ~@2 d4 ~@3, ~@2 e3 ~@7 e3 ~@3 d3@5 ~ d3@8 ~@4, ~@23 a2@5 [a2,d3]@4]/2", // E5 E E5 G#m D Em D D5
  BD: "[c#4,e4]@2 [c#4,e4]@2 [e3,a3,c#4,e4]@2 [g3,b3,e4] d3 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [g3,b3,e4] ~, a3 a2@3, ~ d3", // C#m A Em D Em
  BE: "[c#4,e4]!5 [e3,c#4,e4] [a2,c#4,e4] [c#4,e4], a2@3 ~, [e3,a3]@3 a3@4 ~, ~@3 e3@2 ~@3", // C#m A C#m A5
  BF: "[b3,e4]@2 e4@2 e4@2 [b3,e4]@4 [b3,e4]@2 [b2,g#3,b3,e4]@2 [b3,e4] ~, e3@7 ~, [b2,g#3]@3 ~, ~ b3@2 ~@5", // E5 E E5 E
  BG: "f#4@2 f#4@2 [a3,d4,f#4]@2 [d4,f#4]@4 [d4,f#4]@2 [a3,d4,f#4]@2 [g3,b3,e4] ~, d3, a2@3 ~, [a3,d4]@2 ~ a3@3 ~@2", // D Em D5
  BH: "[[a3,c#4,e4]@4 [a3,c#4,e4]@2 [g3,b3,e4] ~ [d3,a3,d4]@4 [a3,d4,f#4]@2 [g3,b3,e4] ~ [c#4,e4]@2 [c#4,e4]@2 [e3,c#4,e4]@2 [a2,c#4]@10, a2@8 a2@13 ~ [e3,e4]@6 ~@4, e3@3 ~ f#4 ~ d3@2 [e3,a3]@2 a3@6]/2", // A Em D5 D Em C#m A E …
})).s("gm_acoustic_guitar_nylon").gain(0.35).pan(0.4)

// chords · acoustic guitar nylon · "NYLON GTR" · soft notes
const acoustic_guitar_nylon_2 = note(`<
  A ~ B C D ~ E F G H I J K@2 L M N O ~@3 P ~ Q R ~ S ~@3 T U@2 ~ V ~ W@2 ~ X Y@2 Z ~ AA ~ AB R AC AD AE ~@2 AF AG AH
  AI@2 AE ~ AJ ~ AK ~ AL AM AN AO ~ AP AQ AR ~ AS AT AD AU AV ~ AW@2 AX I ~ AY AZ ~@3 BA BB ~
>`.pickRestart({
  A: "a2@2 ~@13 c#4", B: "e3@2 ~@4 c#4 ~@9", C: "e3@2 ~@5 g#3 e2@4 e2@2 [a2,d3] g#3", D: "~@14 [d3,g3] ~",
  E: "~@2 e3@2 ~@2 d3 ~@7 g3 ~", F: "~@7 g3", G: "~@4 f#4 d3@3", H: "~@14 [g3,e4] ~", I: "~@6 [d3,g3] ~@9",
  J: "~@14 a3 ~", K: "[~@7 a2@6 ~@3]/2", L: "~@6 g3 ~@7 g3 ~, ~@7 d3@9", M: "~@4 e4 ~@3", N: "~@7 [d3,g3]",
  O: "~@14 g3 ~, ~ d3@3", P: "~@8 d4@2 ~@5 c#4", Q: "~@6 e2 ~", R: "~@14 d3 ~", S: "~@2 e4@2 ~@2 b3@2 ~@6 [g3,e4] ~",
  T: "~@14 [b3,e4] ~", U: "[~@15 a2@5 ~@12]/2", V: "~@6 g3 ~@7 g3 ~", W: "[~@15 a2@16 ~]/2",
  X: "~@4 e3 ~@9 e2 ~, e2@3 ~@5", Y: "[~@14 g3 ~@3 a3@2 ~@10 g3 ~, ~@14 d3@17 ~]/2", Z: "~@15 g3", AA: "~ d3@3",
  AB: "e3@2 e3@2 ~@2 [d3,g3] ~@7 [g3,e4] ~", AC: "~@4 e2@2 ~ e2@3 ~@2 e2@4", AD: "~@15 c#4", AE: "~@7 g3 ~@8",
  AF: "~@12 a2@3 ~", AG: "e2@4 e2@3 g3 e2@3 ~@5", AH: "~@8 e3@3 ~@4 d4, ~@7 b3", AI: "[~@11 a2@9 ~@10 [g3,e4] ~]/2",
  AJ: "~ e3@3 ~@10 [a2,d3] ~", AK: "~@7 [g3,b3] d4@2 ~@4 [b3,e4] c#4", AL: "~ e3 ~@5 e4", AM: "~@8 e4@2 ~@4 g3 ~",
  AN: "~@8 f2@6 e4 ~", AO: "c#4 ~ a3@2 ~@12", AP: "~@10 a2 ~@5", AQ: "e3@4 ~@2 d3 ~ d3@2 ~@6", AR: "~@7 g#3",
  AS: "~@10 a2@5 ~", AT: "~@2 e4@2 ~@3 d3 ~@8", AU: "~@14 g3 ~", AV: "~@2 d3@3 ~@11", AW: "[~@2 e3@5 d3@6 ~ a2@2]/2",
  AX: "~@4 d3@11 ~", AY: "b2 ~@7", AZ: "~@2 a2 ~@5", BA: "~@12 a2@3 c#4", BB: "~@5 f#4 ~@2",
})).s("gm_acoustic_guitar_nylon").gain(0.2).pan(0.4)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B A C D E F G H I J K L M J N O P Q D P@2 Q R S P J N D@2 T D P@2 Q U S P J N V P Q D P@2 J N S P J N W H X Y P Z Q
  O S P J N O@2 AA O P@2 J N AB P J N O P AC O P@2 J N S P J N S P J AD
>`.pickRestart({
  A: "a1@3 ~ a1@3 ~ d2@3 ~ d2@3 ~", B: "e2@3 ~ a2@3 ~ e2@3 ~ e1@2 ~@2", C: "e2@3 ~ a2@2 ~@2 e1@3 ~ e1@3 ~",
  D: "a1 ~ e2 ~ a2 ~ e2 ~", E: "d1 ~ d1 ~ d1 ~ d2 ~", F: "a2 ~ e2 ~ d2 ~ f#2 ~", G: "a2 ~ e2 ~ a1 ~ e2 ~",
  H: "d2 ~ a1 ~ d2 ~ a1 ~", I: "d2 ~ a1 ~ d2 ~ d1 ~", J: "a1 ~ a1 ~ d2 ~ d2 ~", K: "c#2 ~ a1 ~ e2 ~ e2 ~",
  L: "e2 ~ e2 ~ e2 ~ e2 ~", M: "d2 ~ d2 ~ d2 ~ d2 ~", N: "a1 ~ a1 ~ e2 ~ e2 ~", O: "a1 ~ e2 ~ a1 ~ e2 ~",
  P: "d2@3 ~ d2@2 ~@2 d2@3 ~ d2@2 ~@2", Q: "a1 ~ e2 ~ d2 ~ d2 ~", R: "a1 ~ e2 ~ a1 ~ a1 ~",
  S: "e2@3 ~ e2@2 ~@2 e2@3 ~ e2@2 ~@2", T: "f2 ~ c2 ~ f2 ~ c2 ~", U: "a2 ~ a2 ~ e2 ~ e2 ~", V: "a2 ~ e2 ~ a2 ~ e2 ~",
  W: "a1 ~ e1 ~ a1 ~ e1 ~", X: "a1 ~ a1 ~ d2 ~ a1 ~", Y: "a1 ~ d2 ~ a1 ~ d2 ~", Z: "d2@2 ~@2 d2@2 ~@2 d2@3 ~ d2@2 ~@2",
  AA: "f1 ~ c2 ~ f1 ~ c2 ~", AB: "e2@4 e2@2 ~@2 e2@3 ~ e2@2 ~@2", AC: "a1 ~ a1 ~ a1 ~ a1 ~", AD: "a1@3 ~ e1@2 a1@4 ~@6",
})).s("gm_acoustic_bass").gain(0.4).pan(0.6)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note("<~@52 A B C D E@2 C F G H I J ~@28>".pickRestart({
  A: "[a2,e3,a3,c#4]@2 [a2,e3,a3,c#4]!2 [a2,e3,a3,c#4]@2 [a2,e3,a3,c#4]@4 [a2,e3,a3,d4]@2 [a2,e3,a3,d4]@3 ~", // A Asus4
  B: "[d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]!2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@4 [d3,a3,d4,e4]@2 [d3,a3,d4,e4]@4", // D Dsus2
  C: "[a2,e3,a3,c#4]@2 [a2,e3,a3,c#4]!2 [a2,e3,a3,c#4]@2 [a2,e3,a3,c#4]!2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]!2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]!2", // A D
  D: "[a2,e3,a3,c#4]@2 [a2,e3,a3,c#4]!2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]!2 [a2,e3,a3,c#4]@2 [a2,e3,a3,c#4]!2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]!2", // A D A D
  E: "[[d3,a3,d4,f#4] ~@3 [d3,a3,d4,f#4] ~@3 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]!2 [d3,a3,d4,e4]@2 [d3,a3,d4,f#4]@4 [d3,a3,d4,f#4]@4 [d3,a3,d4,e4]@2 [d3,a3,d4,f#4]@4 [d3,a3,d4,e4]@4]/2", // D Dsus2 D Dsus2 D Dsus2
  F: "[a2,e3,a3,c#4] [a2,e3,a3,b3] [a2,e3,a3,c#4] [a2,e3,a3,b3] [a2,e3,a3,c#4] [a2,e3,a3,b3] [a2,e3,a3,c#4] [a2,e3,a3,b3]", // A Asus2 A Asus2 A Asus2 A Asus2
  G: "~ [d4,e4]@12 ~@3, e3@15 ~, [g#3,b3]@3 ~", H: "~ [a3,d4,f#4]@13 ~@2, f#3@13 ~@3, d3 ~",
  I: "[a2,e3,a3,c#4]!4 [d3,f#3,a3,d4]!4", J: "[a2,e3,a3,c#4]!4 [e2,b2,d3,g#3,b3]!4",
})).s("gm_electric_guitar_muted").gain(0.4).pan(0.6)

// drums · kick
const kick = s("bd").struct("<[x!4]!54 [x ~ x!2] [x!4]!36 [x!2 ~@2]>").gain(0.15)

// drums · rim
const rim = s("rim").struct(`<
  A@4 B C D B@3 E A B@2 F B@5 C B C B@3 C F C F B@4 A B@3 F D B F A B@2 C F B F B@6 A B C B@5 C D C D B@3 E A B@2 F B@5
  C B C B@3 C F C F B A
>`.pickRestart({
  A: "x!2 ~@2", B: "x!4", C: "x!2 ~ x", D: "~ x!3", E: "x ~ x!2", F: "x!3 ~",
})).gain(0.25)

// drums · mid tom
const mid_tom = s("mt").struct("<[x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!91 [x ~ x!3 ~ x ~@9]>").gain(0.2)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<[~ x ~@3 x ~@3 x ~@3 x ~@2]!91 [~ x ~@3 x ~@10]>").gain(0.1)

// drums · splash
const splash = s("cr").struct("<~@91 [~@3 x ~@4]>").gain(0.35)

stack(
  acoustic_guitar_nylon, acoustic_guitar_nylon_2, bass, electric_guitar_muted, kick, rim, mid_tom, mid_tom_soft, splash
)

More by Buddy Holly