Strudelify

Listen to Me

Buddy Holly

KeyA majorTempo118 bpm
0:00/0:00
// Listen to Me — Holly Buddy
// 118 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 68 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(118/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 · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V W X Y@2 Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU
  AV AW AX AY AZ@2 BA BB BC BD BE BF BG BH BI BJ BK BL BM BN
>`.pickRestart({
  A: "[a2,e3]@3 [e3,a3] a2@2 e3@2 e3@2 [e3,a3]@4 [a2,e3,a3] ~, ~@3 a3@2 ~@3", // A5
  B: "e3@2 g#3 [e3,g#3] [e3,g#3]@2 g#3@2 g#3@2 [e3,g#3]@2 e3@2 [e3,g#3]@2, g#3 ~@5 e3@4 ~@6", // E
  C: "~ a3!3 e3@2 e3@2 [a2,e3]@2 e3@2 [a2,e3]@2 [e3,a3] ~, e3@2 ~ a3@2 a3@2 ~, a2@2 ~@2 a2@4 ~@2 a2 ~@5", // A5
  D: "[b2,g#3]@2 g#3!2 [e3,g#3]@2 e3@2 e3@2 [b2,g#3]@2 g#3@2 [b2,e3,g#3] ~, e3@2 ~ g#3@2 e3@2 ~, ~@6 b2 ~@9", // E
  E: "[a2,e3,a3]@3 [e3,a3] [a2,e3,a3]@2 [a2,e3,a3]@3 ~ [e3,a3]@2 e3@2 [e3,a3] ~, ~@5 c#4@2 ~", // A5
  F: "[d3,a3]@3 a3 [d3,a3]@2 [d3,a3]@2 [e3,g#3]@2 [e3,g#3,b3]@4 [e3,g#3] ~", // D5 E
  G: "[a2,e3,a3]@2 ~ [e3,a3] [a2,e3]@2 [a2,e3,a3]@2 e3@2 e3@4 [a2,e3,a3] ~, ~@5 a3 ~@2", // A5
  H: "a3@2 d4 [a3,d4] a3@2 [d3,a3] ~ [e3,g#3]@2 [e3,g#3]@4 [e3,g#3] ~, d3@6 ~@4 d4 ~@5", // D5 E
  I: "[a2,e3]@3 [e3,a3] [a2,e3,a3]@2 [a2,e3]@4 [a2,e3,a3]@2 [a2,e3]@2 [e3,a3] ~, ~@3 a3 ~@4", // A5
  J: "[d3,a3]@3 [a3,d4] [d3,a3]@2 [d3,a3]@2 [e3,g#3]@2 [e3,g#3]@4 [e3,g#3,b3] ~", // D5 E
  K: "a2@2 a3!2 [a2,e3]@2 [a2,a3]@2 ~@2 [a2,a3]@2 ~@2 [a2,e3,a3] ~, e3@2 ~ e3@2 e3@2 ~, a3 ~@15", // A5 A A5
  L: "[d3,a3]@3 [a3,d4] [d3,a3]@2 [d3,a3,d4] ~ g#3@2 [g#3,b3]@2 g#3@2 [g#3,b3] ~, ~@10 e3@5 ~", // D5 G#m
  M: "a2@2 a3!2 [a2,e3]@2 [a2,e3]@4 [a2,e3,a3,c#4]@2 [e3,a3]@2 [e3,a3] ~, e3@2 ~ a3 ~@4", // A5 A A5
  N: "[d3,a3]@3 [d3,a3] [d3,a3]@2 [d3,a3,d4] d4 [e3,b3]@2 g#3@2 g#3@2 [e3,g#3,b3] ~, ~@5 e3@2 ~", // D5 E5 E
  O: "[a2,a3]@2 a3!2 [a2,e3]@2 [e3,a3]@2 [a2,e3]@2 [a2,e3]@4 [a2,e3,a3] ~, e3@2 ~ c#4@2 a3 ~@2", // A A5
  P: "[d3,a3]@3 a3 [d3,a3]@2 [d3,a3,d4] ~ g#3@2 [e3,g#3]@2 e3@2 [e3,g#3,b3] ~, ~@5 b3@2 ~", // D5 E
  Q: "a3 ~ a3!2 e3@2 e3@4 a3@2 a3@2 [a2,e3,a3] ~, [a2,e3]@2 ~ a3 ~ [a2,e3,c#4]@2 ~", // A5 A
  R: "a3@2 a3!2 [d3,a3]@2 d3@2 e3@2 g#3@2 g#3@2 [e3,g#3]@2, d3@4 ~@2 a3 ~@3 [e3,b3]@5 ~", // D5 E E5
  S: "a3@2 a3!2 [e3,a3]@2 [e3,a3,c#4] ~ [d3,a3]@2 d4@2 d4@2 [d3,a3,d4] ~, e3@2 ~@3 [d3,a3]@2 ~", // A5 A D5
  T: "a3@2 a3!2 [e3,a3] ~ [a3,c#4]@2 a3@2 [e3,c#4]@4 [e3,a3,c#4] ~, e3@2 ~ e3@2 a3 ~@2", // A5 A C#m A
  U: "[b2,g#3]@2 g#3!2 [e3,g#3]@2 [e3,g#3]@2 e3@2 [e3,g#3]@2 [b2,e3]@2 ~ g#3, e3@4 b2@7 ~@3 [b2,e3]@2", // E E5
  V: "[b2,e3,g#3]@2 g#3 [e3,g#3] [b2,e3]@2 [e3,g#3]@4 [b2,e3,g#3]@2 e3@2 e3 ~", // E E5 E
  W: "[a2,a3]@2 a3!2 [e3,a3] ~ [e3,a3,c#4]@2 [d3,a3]@2 a3@2 a3@2 [a3,d4]@2, e3@2 ~@3 d3@3", // A A5 A D5
  X: "[a2,e3]@2 a3 [e3,a3]@2 ~ a3@2 a3@2 [e3,a3]@2 e3@2 [e3,a3,c#4] ~, a3 ~@5 [e3,c#4]@4 c#4@4 ~@2", // A5 A C#m
  Y: "[e3@3 [e3,g#3] [e3,g#3]@2 e3@2 e3@2 e3@2 [b2,e3]@2 [b2,e3,g#3] ~@3 g#3 [e3,g#3] [e3,g#3]@2 [e3,g#3,b3]@4 [g#3,b3]@2 g#3@2 [e3,g#3,b3] ~, a3 ~@5 [g#3,b3]@4 b3@8 ~@14, ~@6 b2 ~@3 g#3@4 ~@2 [b2,e3]@4 ~@6 e3@4 ~@2]/2", // E E5 E G#m E G#m E5
  Z: "[d3,a3]@3 a3 [d3,c#4]@2 [a3,d4]@2 a3@2 [d3,a3]@4 [a3,d4] ~, ~@5 d4 ~@2", // D5 Dmaj7 D5
  AA: "[e3,g#3]@3 g#3 [e3,g#3,b3] ~ [e3,b3]@4 g#3@2 g#3@2 [e3,b3] ~, ~@3 g#3 ~ [e3,b3]@2 ~", // E E5
  AB: "[e3,a3]@3 [e3,a3] ~@2 a3@2 a3@2 [e3,a3,c#4]@2 [e3,a3]@2 [e3,a3,c#4] ~, ~@3 [e3,c#4]@2 ~@3", // A5 A A5 A C#m
  AC: "[a3,d4]@3 a3 a3@2 [d3,a3,d4] ~ [e3,g#3]@2 [g#3,b3]@2 g#3@2 [e3,g#3,b3] ~, d3@3 ~@2 e3@2 ~", // D5 E G#m E
  AD: "[e3,a3]@2 a3 [e3,a3]@2 ~ [e3,a3,c#4]@2 [e3,a3]@2 [e3,a3,c#4]@2 [e3,a3]@2 [e3,a3,c#4] ~", // A5 A A5 A A5 A
  AE: "a3@2 d4 [a3,d4] a3@2 [a3,d4] ~ [e3,g#3]@2 [g#3,b3]@2 g#3@2 [e3,g#3,b3] ~, d3@4 ~ e3@2 ~", // D5 E G#m E
  AF: "[e3,a3]@2 a3 [e3,a3]@2 ~ [e3,a3,c#4]@2 [e3,a3]@2 [e3,a3]@2 e3@2 [e3,a3,c#4] ~, ~@5 c#4@2 ~", // A5 A A5 A
  AG: "[d3,a3]@3 [a3,d4] [d3,a3]@2 [d3,a3,d4] ~ [e3,g#3]@2 [e3,g#3,b3]@2 [e3,g#3]@2 [e3,g#3,b3] ~", // D5 E
  AH: "[a2,e3,a3]@2 a3 [e3,a3] a2 ~ [e3,a3]@2 e3@2 [e3,c#4]@4 [e3,a3,c#4] ~, ~@5 a3 ~@2", // A5 C#m A
  AI: "[a3,d4]@2 d4 [a3,d4] a3@2 [d3,a3,d4] ~ [e3,g#3]@2 [g#3,b3]@2 ~@2 [e3,g#3,b3] ~, d3@3 ~@2 e3@2 ~", // D5 E G#m E
  AJ: "[e3,a3]@3 [e3,a3]@2 ~ [e3,a3,c#4]@2 [e3,a3]@2 [e3,a3,c#4]@2 [e3,a3]@2 [e3,a3,c#4] ~", // A5 A A5 A A5 A
  AK: "d4@2 d4 [a3,d4] [d3,a3,d4]@2 [d3,a3,d4] ~ [e3,g#3]@2 g#3@2 g#3@2 [e3,g#3,b3] ~, [d3,a3]@2 ~@3 e3@2 ~", // D5 E D5
  AL: "a3@2 a3 ~ e3 ~ [a3,c#4]@2 a3@2 [a3,c#4]@2 a3@2 [e3,a3,c#4] ~, e3@3 a3@2 ~ e3@4 e3@4 ~@2", // A
  AM: "[d3,a3]@3 a3 [d3,a3]@2 [d3,a3,d4] ~@2 g#3 [g#3,b3]@2 g#3@2 [e3,g#3,b3] ~, d4 ~@3 [e3,g#3] e3@2 ~", // D5 G#m E
  AN: "[e3,a3]@3 a3 [e3,a3]@2 [e3,a3]@2 [e3,a3]@2 [a3,c#4]@2 ~@2 [e3,a3,c#4] ~, ~@3 c#4@2 e3@2 ~", // A5 A
  AO: "[d3,a3]@3 a3 a3@2 [a3,d4] ~ [e3,g#3]@2 g#3@2 g#3@2 [e3,g#3,b3] ~, d4 ~ d3@2 ~ [e3,b3]@2 ~", // D5 E E5
  AP: "a3@2 a3 a3@2 ~ [e3,a3]@2 e3@2 a3@2 a3@2 [e3,a3,c#4] ~, e3@5 ~@5 e3@4 ~@2, c#4 ~@5 c#4@4 ~@6", // A5 A
  AQ: "[a3,d4]@2 [a3,d4]!2 [d3,a3]@2 [d3,a3,d4] ~ [e3,g#3]@2 g#3@2 g#3@2 [e3,g#3,b3] ~, d3@2 ~@3 [e3,b3]@2 ~", // D5 E E5
  AR: "a3@2 a3!2 [e3,a3] ~ [e3,a3]@2 e3@2 a3@2 a3@2 [e3,a3,c#4] ~, e3@2 ~@3 [e3,c#4]@2 ~", // A5 A C#m
  AS: "[a3,d4]@3 a3 [a3,d4]@2 [d3,a3,d4] ~ [e3,g#3]@2 [e3,g#3,b3]@2 e3@2 [e3,g#3,b3] ~, d3@3 ~@5", // D5 E
  AT: "[e3,a3]@2 a3 [e3,a3] a3 ~ [e3,a3]@2 e3@2 a3@2 a3@2 [e3,a3,c#4] ~, ~@3 c#4@2 [e3,c#4]@2 ~", // A5 A C#m
  AU: "[a3,d4]@2 d4 [a3,d4] a3@2 [d3,a3,d4] ~ e3@2 [g#3,b3]@2 g#3@2 [e3,g#3,b3]@2, d3@3 ~@2 e3@2 ~", // D5 G#m E
  AV: "[e3,a3]@2 a3 [e3,a3]@2 ~ [e3,a3,c#4]@2 [e3,a3]@2 [a3,c#4]@2 a3@2 [e3,a3,c#4] ~, ~@5 e3@2 ~", // A5 A A5 A
  AW: "[a3,d4]@2 d4 a3 a3@2 [d3,a3,d4] ~ [e3,g#3]@2 [g#3,b3]@2 g#3@2 [e3,g#3,b3] ~, d3@3 ~@2 e3@2 ~, ~@3 d4@3 ~@10", // D5 E G#m E
  AX: "a3@2 a3!2 [e3,a3]@2 [e3,a3,c#4] ~ [d3,a3]@2 [d3,a3]@2 [d3,a3]@2 [d3,a3,d4] ~, e3@2 ~@3 d4@2 ~", // A5 A D5
  AY: "~@2 c#4 [a3,c#4]@2 ~ [e3,a3]@2 e3@2 [a3,c#4]@2 a3@2 [e3,a3,c#4] ~, [e3,a3]@2 ~ c#4@2 e3@2 ~", // A A5 A A5
  AZ: "[g#3!3 [e3,g#3]@2 ~ [e3,g#3]@2 e3@2 [e3,g#3]@2 e3@2 [e3,g#3] ~ [e3,g#3]@2 g#3 [e3,g#3] ~@2 [e3,g#3]@2 [e3,g#3]@2 [g#3,b3]@2 g#3@2 [e3,g#3,b3] ~, e3@3 ~@3 b3@4 b3@4 b3@4 ~@4 b3@4 e3@4 ~@2]/2", // E G#m E
  BA: "a3@2 a3!2 ~@2 [e3,a3,c#4] ~ [d3,a3]@2 [d3,a3]@4 [d3,a3,d4] ~, e3@2 ~@3 d4 ~@2", // A D5
  BB: "a3@3 a3@2 ~ [e3,a3]@2 e3@2 [e3,a3,c#4]@2 [e3,a3]@2 [e3,a3] ~, e3@5 ~ c#4@4 ~@6", // A5 A A5
  BC: "[e3,g#3]@2 g#3 [e3,g#3]@2 ~ [e3,g#3]@2 e3@2 e3@2 e3@2 [e3,g#3] ~, ~@10 [g#3,b3]@5 ~", // E G#m
  BD: "e3@2 g#3 [e3,g#3] e3 ~ [e3,g#3,b3]@2 [e3,g#3]@2 g#3@2 g#3@2 [e3,g#3] ~, ~@5 [e3,b3]@2 ~", // E E5
  BE: "[d3,a3]@3 a3!2 ~ [a3,d4]@2 a3@2 [a3,d4]@2 a3@2 ~ d4, ~@3 d3@2 d3@2 [d3,a3]", // D5
  BF: "[e3,g#3]@2 g#3 [e3,g#3] b3 ~ [e3,g#3,b3]@2 [e3,g#3]@2 [g#3,b3]@2 g#3@2 [e3,g#3] ~, ~@5 e3@2 ~", // E G#m E
  BG: "a3@2 a3 a3@2 ~ e3@4 a3@2 a3@2 [e3,a3] ~, e3@5 ~ a3@2 ~@2 e3@4 ~@2", // A5
  BH: "a3@2 a3!2 ~@2 [d3,a3,d4] ~ [e3,g#3]@2 g#3@2 g#3!2 [e3,g#3,b3] ~, d3@3 ~@2 [e3,b3]@2 ~", // D5 E E5
  BI: "[e3,a3]@3 [a3,c#4] ~@2 [e3,a3]@2 e3@2 [a3,c#4]@2 a3@2 [a3,c#4] ~, ~@10 e3@5 ~", // A5 A A5 A
  BJ: "d4!3 [a3,d4] a3 ~ [a3,d4] ~ [e3,g#3]@2 [e3,g#3]@4 [e3,g#3,b3] ~, [d3,a3]@2 d3@2 ~ b3 ~@2", // D5 E D5
  BK: "[e3,a3]@3 [e3,a3]@2 ~ [a3,c#4]@2 a3@2 [e3,a3,c#4]@2 [e3,a3]@2 [e3,a3,c#4] ~, ~@3 e3@2 ~@3", // A5 A A5 A
  BL: "[d3,a3]@2 a3@2 a3@2 [d3,a3,d4] ~ [e3,g#3]@2 [e3,g#3]@2 [e3,g#3]@2 [e3,g#3] ~, ~ [d3,d4]@2 ~@2 b3@2 ~", // D5 E D
  BM: "[e3,a3]@3 ~ a3@2 [e3,a3,c#4] ~ [d3,a3,d4]@2 [a3,d4]@2 a3 [a3,d4]!2 ~, ~@3 [e3,a3]@2 ~@5 d3@6", // A5 A D5 A5
  BN: "[e3,a3,c#4]@2 ~@2 [e3,g#3,b3]@2 ~@2 [e3,a3,c#4]@7 ~", // A E A
})).s("gm_electric_guitar_muted").gain(0.32).pan(0.3)

// chords · electric guitar muted · "MUTED GTR" · soft notes
const electric_guitar_muted_2 = note(`<
  A ~ B C D ~ E F G H I J K L M N O P ~@2 Q R S T U V ~ W X Y ~ Z AA AB AC AD ~@4 AE ~ AF ~ AG AH ~ AI ~@2 AJ ~ AK ~ AL
  ~ AM AN AO AP AQ AR AS ~@2 AT AU ~
>`.pickRestart({
  A: "~@2 a3 ~@3 a2@2 a2@6 ~@2", B: "~@4 a3@2 ~@8 a2 ~", C: "~@2 b2 ~@5", D: "~@6 a2 ~", E: "~@2 [a3,c#4] ~@2 a2 a3 ~",
  F: "~@6 d4 ~@3 b3@4 ~@2", G: "a3 ~ a3 ~@11 c#4 ~", H: "d4@2 d4 ~@7 b3@4 ~@2", I: "~@4 a3@2 c#4@2 ~@2 c#4@5 ~",
  J: "~ d4!2 ~@5 e3@2 ~@6", K: "~ a3 ~@2 a3@2 ~@3 a3 ~@6", L: "d4@3 ~@4 g3 g#3@2 b3@2 ~@4", M: "~@2 a3 ~@5",
  N: "~ d4 ~@6 e3@2 ~@6", O: "~@4 a3@2 ~@2 a3@2 ~@4 c#4 ~, ~@3 c#4@2 ~@3", P: "~ d4 ~@4 d4@2 g#3@2 ~@6", Q: "~@3 b3@5",
  R: "~@2 g#3 b3 b2 b3 g#3 ~", S: "~@7 d3 ~@3 d4 d4@2 ~@2", T: "~@4 [a2,a3]@2 ~@8 a2 ~", U: "b2 ~ b2 ~ b2 ~@3",
  V: "~ g#3 ~@2 b3@2 b2 ~@9", W: "b3 ~@3 g#3 ~@3", X: "c#4@3 ~@13", Y: "~@4 b3 ~@3", Z: "d4 ~@3 d4@2 ~@10",
  AA: "~@13 a3 ~@2", AB: "~@2 d4 ~ d4@2 ~@10", AC: "~@4 a3 ~ [a2,a3] ~, ~@3 c#4@2 ~@3",
  AD: "~@4 d4@2 ~@7 b3 ~@2, ~@6 g#3 ~", AE: "~@6 a3 ~", AF: "~@4 a3 ~@3", AG: "~@4 c#4 ~@3 a3@2 ~@6", AH: "~@6 g#3 ~",
  AI: "~@4 g#3 ~@3", AJ: "c#4 ~@4 f#4@2 ~", AK: "~@4 g#3 ~@3 g#3@2 ~@6", AL: "~@6 d4 ~", AM: "~@3 b3@2 ~@3",
  AN: "g#3@3 ~@11 b3 ~", AO: "c#4 ~@15", AP: "b3 ~@5 b3 ~", AQ: "~@8 a3@2 ~@4 c#4 ~, ~@3 c#4@3 ~@2", AR: "d4 ~@7",
  AS: "~@4 [a3,c#4] ~@3", AT: "~@14 b3 ~", AU: "~@2 c#4 ~@2 f#4 ~@2",
})).s("gm_electric_guitar_muted").gain(0.16).pan(0.3)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B C D E F E G H I J K H L M I N O P H Q R S T B U V W A I T F H I H X Y F H X H Z H I AA Z C O H AB AC H AD R AC T Q
  R AE AF H F H Z H AG AH AI
>`.pickRestart({
  A: "a2@3 ~ e2@2 ~@2 a2@3 ~ e2@3 ~", B: "e2@2 ~@2 b1@3 ~ e2@2 ~@2 b1@2 ~@2", C: "a2@3 ~ e2@2 ~@2 a2@3 ~ e2@2 ~@2",
  D: "e2@2 ~@2 b1@2 ~@2 e2@3 ~ b1@2 ~@2", E: "a2@2 ~@2 e2@2 ~@2 a2@3 ~ e2@3 ~", F: "d2@2 ~@2 d2@3 ~ e2@2 ~@2 e2@2 ~@2",
  G: "d2@3 ~ d2@2 ~@2 e2@2 ~@2 e2@2 ~@2", H: "a2@3 ~ e2@3 ~ a2@3 ~ e2@3 ~", I: "d2@2 ~@2 d2@3 ~ e2@2 ~@2 e2@3 ~",
  J: "a2@3 ~ e2@2 ~@2 a2@2 ~@2 e2@3 ~", K: "d2@2 ~@2 d2@2 ~@2 e2@3 ~ e2@2 ~@2", L: "d2 ~ d2 ~ e2 ~ e2 ~",
  M: "a2@3 ~ e2@3 ~ a2@2 ~@2 e2@3 ~", N: "a2@3 ~ e2@2 ~@2 a2@2 ~@2 e2@2 ~@2", O: "d2@2 ~@2 d2@2 ~@2 e2@2 ~@2 e2@3 ~",
  P: "a2@2 ~@2 a2@3 ~ d2@2 ~@2 d2@3 ~", Q: "e2@3 ~ b1@3 ~ e2@3 ~ b1@3 ~", R: "e2@3 ~ b1@2 ~@2 e2@3 ~ b1@2 ~@2",
  S: "a2@3 ~ a2@3 ~ d2@2 ~@2 d2@2 ~@2", T: "a2@2 ~@2 e2@3 ~ a2@3 ~ e2@3 ~", U: "e2 ~ b1 ~ e2 ~ b1 ~",
  V: "d2 ~ d2 ~ d2 ~ d2 ~", W: "e2@2 ~@2 e2@2 ~@2 e2@4 f#2@2 g#2 ~", X: "d2@2 ~@2 d2@3 ~ e2@3 ~ e2@3 ~",
  Y: "a2@2 ~@2 e2@3 ~ a2@3 ~ e2@2 ~@2", Z: "d2@3 ~ d2@3 ~ e2@2 ~@2 e2@3 ~", AA: "a2@3 ~ e2@3 ~ a2@3 ~ e2@2 ~@2",
  AB: "d2@3 ~ d2@3 ~ e2@3 ~ e2@2 ~@2", AC: "a2@3 ~ a2@3 ~ d2@2 ~@2 d2@3 ~", AD: "e2@3 ~ b1@2 ~@2 e2@3 ~ b1@3 ~",
  AE: "d2@3 ~ d2@3 ~ d2@2 ~@2 d2@2 ~@2", AF: "e2@2 ~@2 e2@4 e2@4 f#2@2 g#2 ~", AG: "d2@3 ~ d2@3 ~ e2@3 ~ e2@3 ~",
  AH: "a2@2 ~@2 a2@3 ~ d2@3 ~ d2@4", AI: "a2 ~ e2 ~ a2@3 ~",
})).s("gm_acoustic_bass").gain(0.35)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  A@2 B@2 ~@6 C@2 D ~@5 E F ~@14 G@2 H I J K L M N O P Q R S R T U V ~@16
>`.pickRestart({
  A: "[e3@2 c#3 ~ a3@2 ~@5 e4 e4@4 e4@4 b3@3 b3 b3@2 d4@2 c#4@2 b3@2, ~@3 e3@13 ~@16, ~@6 a3@13 ~@13, ~@7 e4@4 ~@21, ~@8 c#4@11 ~@13]/2",
  B: "[e3@2 e3 ~ a3@2 ~@5 e4 e4@3 e4@4 b3 b3@2 b3@2 b3@2 d4@2 c#4@2 b3@2, ~@3 e3@8 ~@21, ~@6 a3@9 ~@17, ~@7 e4@4 ~@21, ~ c#4 ~@2]/2",
  C: "[e3@2 c#3 ~@8 e4 e4@3 ~@5 d4@2 f#4@2 e4@2 d4@2 c#4@2 b3@2, ~@3 e3@11 ~@2 d3@15 ~, ~@4 a3@10 ~@4 a3@5 ~@9, ~@7 e4@4 ~@4 e4@3 ~@14, ~@4 c#4@3 ~@9]/2",
  D: "a3 ~", E: "~@2 c#4@2 ~@2 d4 ~, e3@7 ~@9", F: "~@2 c#4@5 ~, e3 ~",
  G: "[~@20 a4@2 d4 ~@7 b3@2, e3@12 e4@4 ~@2 f#4@5 ~@3 e4@6, ~@3 e4@3 ~ e4@4 a4@3 a4@6 ~@8 g#4@4, ~@2 a3@5 ~@5 b3@3 ~, ~@8 c#4@7 ~ d4@6 ~@10]/2",
  H: "~@3 a3 ~@7 e4 ~@2 c#4 ~, e3@15 ~, ~@4 a3@11 ~, ~@7 e4@3 ~@2 e4@4, ~@4 c#4@3 ~", I: "~@2 d4 f#4 e4 d4 c#4 b3, d3",
  J: "~@3 a3 ~@7 e4 ~@2 c#4 ~, e3@15 ~, ~@4 a3@11 ~, ~@7 e4@3 ~@2 e4@4, ~@8 c#4@5 ~@3",
  K: "~@3 f#4 e4 d4 c#4 b3, d3, ~@2 a3@5 ~@9, ~ d4 ~@2",
  L: "~@3 a3 ~@7 e4 ~@2 c#4 ~, e3@15 ~, ~@4 a3@11 ~, ~@7 e4@4 ~ e4@4, ~@4 c#4@3 ~",
  M: "~@2 d4 f#4 e4 d4 c#4 b3, d3, ~@2 a3@5 ~@9", N: "~@3 a3 ~@8 e4@3 ~, e3@7 ~, ~@2 a3@5 ~, ~@7 e4@4 ~@5, ~@4 c#4@3 ~",
  O: "~@4 d4@2 a4 ~@5 e4@2 b4 ~, d4@3 f#4@4 ~ e4@3 g#4@4 ~, ~ a4@2 ~@2 b4@2 ~",
  P: "~@6 c#5 ~, a4@4 c#5@3 e4@4 e4@3 ~@2, ~ e4@2 a4@2 a4@2 ~, ~@3 c#4@11 ~@2, ~@2 e5 ~",
  Q: "~@5 d5@2 ~ e5@3 ~ d5@2 b4 ~, ~@2 a4@11 ~@3, ~@4 f#4@3 f#4@8 ~",
  R: "~@4 e5 ~ c#5 ~, a4@3 a4@2 a4@2 ~, ~@2 e4@5 e4@4 e4@3 ~@2, ~@3 c#4@12 ~, ~ c#5 ~@2",
  S: "~@5 d5@2 ~ e5@3 ~ d5@2 b4 ~, d4@15 ~, ~@2 a4@11 ~@3, ~@4 f#4@3 f#4@8 ~",
  T: "~@5 d5@2 f#4 e5 ~ d#5 ~ d5 ~ b4@2, d4 ~, ~ a4@3 ~@4",
  U: "~@4 c#4@2 c#5 ~@5 d4@2 d5 ~, a4@6 ~@2 a4@7 ~, ~@3 e4@4 ~@4 f#4@4 ~",
  V: "~@3 c#5 ~@2 a4@2 ~@3 c#5 ~@2 a4@2, a4@3 ~ a4@3 ~, ~@4 c#5@7 ~ c#5@4",
})).s("gm_electric_guitar_clean").gain(0.38).pan(0.7)

// chords · electric guitar clean · "CLEAN GTR" · soft notes
const electric_guitar_clean_2 = note("<~@18 A B ~@15 C ~ D ~@4 E ~@2 F ~@3 G ~@18>".pickRestart({
  A: "~@2 a3@4 a3 ~@3 a3@4 a3 ~, ~ d3", B: "~ a3@2 a3@4 ~", C: "f#4 ~@7", D: "~@3 a3@4 ~@9", E: "~@11 e4 ~@4",
  F: "d4@15 ~", G: "~@4 f#4@3 ~@9",
})).s("gm_electric_guitar_clean").gain(0.22).pan(0.7)

// other · pan flute
const pan_flute = note("<~@9 A B C ~@5 D E F G H I@2 J K L M ~@5 D B N@2 ~@15 G H I@2 J O L P ~@5 A E B>".pickRestart({
  A: "~@2 f#3@3 f#3@3 e3@3 e3@3 d3@2", B: "c#3", C: "d3 e3", D: "~@2 f#3@3 f#3@3 e3@3 e3@2 ~ d3@2", E: "c#3 d3",
  F: "c#3@5 ~@3", G: "d4@2 d4!2 b3@4", H: "d4!4 e4@2 d4@2",
  I: "[c#4@4 c#4@2 c#4@2 d4@2 d4@2 f#4@2 d4@4 c#4@7 ~@5 c#4@2]/2", J: "d4@4 d4@4 b3@5 ~ e3@2", K: "d4@2 d4!2 e4@2 d4@2",
  L: "d4@4 d4@4 d4@4 d4@3 ~", M: "~ e4 f#4 e4 f#4 e4 f#4 e4", N: "[d3@4 e3@5 ~@7]/2", O: "d4@4 d4@2 d4@2 e4@3 ~ d4@4",
  P: "~ e4 f#4 e4 f#4 e4 f#4 g#4",
})).s("gm_pan_flute").gain(0.31).pan(0.4)

// drums · kick
const kick = s("bd").struct("<[x!2]!67 x>").gain(0.44)

// drums · snare
const snare = s("sd").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A C
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!3", C: "~@2 x!3 ~@3",
})).gain(0.38)

// drums · hihat
const hihat = s("hh").struct(`<
  A B A@3 B A B A@3 B A@3 B A B A@3 B A@3 B A B A@3 B A@3 B A B A@3 B A@3 B A B A@3 B A@3 B A B A@3 B A@3 B A C
>`.pickRestart({
  A: "x!8", B: "x!6 ~ x", C: "x!3 ~@5",
})).gain(0.27)

// drums · open hat
const open_hat = s("oh").struct("<~@67 [~@3 x ~@4]>").gain(0.22)

// drums · splash
const splash = s("cr").struct("<~@67 [~ x]>").gain(0.27)

// drums · congas
const congas = s("conga:13").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A C
>`.pickRestart({
  A: "x ~@2 x!2 ~ x ~ x ~ x ~ x ~ x ~", B: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~", C: "~@2 x!3 ~@3",
})).gain(0.87)

// drums · congas · soft notes
const congas_soft = s("conga:13").struct(`<
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "~ x ~@6",
})).gain(0.52)

// drums · claves
// … 11 more lines

More by Buddy Holly