Strudelify

Lonesome Tears

Buddy Holly

KeyE majorTempo132 bpm
0:00/0:00
// Lonesome Tears — Holly Buddy
// 132 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 58 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(132/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 · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A B C D E F G H I J K L M N O@3 P Q@2 R S T U V W X Y Z AA AB AC AD AE AF AG AH@5 AI AJ@2 AK AL AM@2 AN AO AP AQ AR AS
  AT AU@3
>`.pickRestart({
  A: "[f#3,b3,d#4,f#4] [b3,d#4,f#4]!2 ~ [b3,d#4,f#4] [d#4,f#4] [b3,d#4,f#4] ~ [f#3,b3,d#4,f#4] [d#4,f#4] [f#3,d#4,f#4] ~@2 [d#4,f#4]!2 ~, ~@6 [b3,d#4,f#4] ~", // B D#m B D#m B
  B: "[e3,g#3,b3,e4]@4 [e3,b3,e4] ~@5 [b3,e4]@2 [g#3,b3,e4] ~@3, ~@3 g#3@3 ~@2, ~@3 [b3,e4]@2 ~@3, ~@7 b2@6 ~@3", // E E5 E E5
  C: "[g#3,c#4,e4,g#4]@4 ~@2 [c#4,e4,g#4]@4 [c#4,e4,g#4]@2 [g#3,e4,g#4] ~@3, ~@3 g#3@3 ~@2", // C#m
  D: "[c4,d#4,g#4]@4 [c4,d#4] g#4 [d#4,g#4]@4 [d#4,g#4]@2 [c4,d#4,g#4] ~@3, ~@3 c4@3 ~@2", // G# Cm G#5 G#
  E: "[a3,c#4,e4,a4]@4 [c#4,e4] ~ [e4,a4]@4 [c#4,e4,a4]@2 [a3,c#4,e4,a4] ~@3, ~@3 a3@3 ~@2", // A C#m A5 A
  F: "[e4,g#4]@2 [e4,g#4]@2 e4 ~ [f4,g#4]@4 [f4,g#4]@2 [f4,g#4] ~@3, g#3@2 ~ [g#3,c#4]@3 ~@2", // E Fm C#5
  G: "[c#4,f#4]@2 [c#4,f#4]@2 c#4 ~ [d#4,f#4]@4 [d#4,f#4]@2 d#4 ~ [g#3,b3,e4]@2, a#3@2 ~ [f#3,b3]@3 ~@2", // F#5 D#m E B5
  H: "[g#3,b3,e4,g#4]@2 e4 ~ [d4,b4]@3 ~ [c#4,a#4] ~ [c4,a4]@2 ~@2 [g#3,b3,e4,g#4]@2", // E G F# F E
  I: "~ d#4@2 [b3,d#4]!3 [f#3,b3,d#4,f#4] ~, ~ f#3@5 ~@2, ~ f#4@3 f#4@2 ~@2, ~ b3 ~@6", // B
  J: "[b3,g#4]@2 g#4@2 ~@2 [b3,e4,g#4]@4 [b3,e4,g#4]@2 [g#3,e4] ~@3, [g#3,e4]@2 ~ g#3@3 ~@2", // E C#m
  K: "[g#3,c#4,e4,g#4]@4 [c#4,e4] ~ [c#4,e4,g#4]@4 [c#4,e4,g#4]@2 c#4 ~@3", // C#m
  L: "[c4,d#4,g#4]@4 ~@2 [d#4,g#4]@4 [c4,d#4,g#4]@2 [g#3,c4,d#4,g#4] ~@3, ~@3 g#3@3 ~@2", // G# G#5 G#
  M: "[a3,c#4,e4,a4]@4 [a3,c#4,e4] ~ [c#4,e4,a4]@4 [c#4,e4,a4]@2 [e4,a4] ~@3, ~@6 a3@7 ~@3", // A A5
  N: "[e4,g#4]@2 [e4,g#4]@2 [b3,e4] ~ [c#4,f4]@4 [c#4,f4,g#4]@2 [g#3,c#4,f4,g#4] ~@3, b3@2 ~ g#3@3 ~@2", // E E5 C#
  O: "[[c#4,f#4]@2 [c#4,f#4]@2 ~@2 [b3,d#4,f#4]@4 [f#3,b3,d#4,f#4]@2 ~@2 b3@2 [b3,e4,g#4]@2 ~@2 [a3,c#4,e4,a4]@2 ~@2 [g#3,b3,e4,g#4] ~ [f#3,a3,c#4,f#4] ~@3 [e3,g#3,b3]@2 ~@2 b3@2 b3@2 g#3@2 [g#3,b3,e4]@4 [b3,e4]@4, a#3@2 ~@5 g#3@2 ~@6 e4@2 d3@5 [d3,g#3] ~, ~@17 e4@3 ~@4, ~@17 g#3@2 ~@5]/3", // F#5 B E A E F#m E E5 …
  P: "[a3,c#4,e4]@4 [a3,c#4,e4] ~@5 [a3,c#4,e4]@2 [a3,c#4,e4] ~@3, ~@6 a2@7 ~@3, ~@3 [a3,c#4,e4]@2 ~@3, ~@7 e3@5 ~@4", // A
  Q: "[e4@2 e4@2 ~@2 [a3,c#4,e4]@4 [a3,c#4,e4]@2 [a3,e4] ~@3 [e3,g#3,b3,e4]@4 [e3,g#3] ~ [e3,a3,c#4]@2 [a3,c#4,e4]@4 [c#4,e4] ~ [b3,d#4]@2, [e3,a3,c#4]@2 ~@5 b2@3 e4@2 ~@4, ~@10 b3 ~@5]/2", // A A5 E A C#m B A
  R: "[d#4,f#4]@2 [d#4,f#4]@2 ~@2 [b3,e4]@4 [b3,e4]@2 [g#3,b3] ~ [a3,c#4]@2, b3@2 ~ g#3@3 ~@2", // D#m E5 G#m A
  S: "[a3,c#4]@3 ~ e4 ~ [a3,c#4,e4]@3 ~ [a3,c#4,e4]@2 ~@4", // A
  T: "[e3,a3,c#4,e4]@4 [c4,e4] ~ [a3,c#4,e4]@4 [a3,c#4,e4]@2 [a3,c#4] ~ a#3@2", // A C A
  U: "[f#3,a#3,c#4,f#4]@4 ~@2 [c#4,f#4]@4 [c#4,f#4]@2 [f#3,a#3,c#4] ~ b3@2, ~@3 a#3@3 ~@2", // F# F#5 F#
  V: "[f#3,b3,d#4,f#4]@4 [f#3,d#4,f#4] ~ d#4@4 [d#4,f#4]@2 d#4 ~ g#3@2, ~@3 [f#3,b3]@3 ~@2", // B D#m B5
  W: "[g#3,b3,e4]@4 ~@2 [g#3,b3,e4]@4 [g#3,b3,e4]@2 [b2,e3,b3] ~@3, ~@3 e3@3 ~@2", // E E5
  X: "[g#3,c#4,e4,g#4]@4 e4 ~ [e4,g#4]@4 [c#4,e4,g#4]@2 [c#4,e4] ~@3", // C#m E C#m
  Y: "[g#3,d#4,g#4]@4 ~@2 [c4,d#4,g#4]@4 [c4,d#4,g#4]@2 [g#3,c4,d#4] ~ [g#3,c4,d#4]@2, ~@3 g#3@3 ~@2", // G#5 G#
  Z: "[a3,c#4,e4]@4 c#4 ~ [c#4,e4,a4]@4 [c#4,e4,a4]@2 [a3,c#4,e4,a4] ~@2 b3, ~@3 a3@3 ~ e4", // A
  AA: "[g#3,b3,e4]@4 e4 ~ [c#4,f4,g#4]@4 [c#4,f4,g#4]@2 [g#3,c#4,f4,g#4] ~@3, ~@3 g#3@3 ~@2", // E C#
  AB: "[c#4,f#4]!2 ~ [f#3,b3,d#4,f#4]@2 [b3,d#4,f#4] ~ [g#3,b3], [f#3,a#3] ~@3", // F#5 B G#m F#
  AC: "[g#3,b3,e4,g#4]@2 ~@2 [d4,b4]@3 ~ [c#4,a#4] ~ [c4,a4]@2 ~@2 [g#3,b3,e4,g#4] ~", // E G F# F E
  AD: "~ [b3,d#4,f#4] [b3,d#4]!2 [d#4,f#4]@2 [b3,d#4,f#4] ~, ~@4 b3 ~@3", // B D#m B
  AE: "[g#3,b3,e4,g#4]@3 ~ [b3,e4] ~ [b3,e4,g#4]@6 [g#3,b3,e4,g#4]@2 e4 ~", // E E5 E
  AF: "[e4,g#4]@2 [e4,g#4]@2 ~@2 [c#4,e4,g#4]@4 [c#4,e4,g#4]@2 [c#4,e4] ~ c4@2, c#4@2 ~ g#3@3 ~@2", // E C#m
  AG: "[c4,d#4,g#4]@4 c4 ~ [d#4,g#4]@4 [d#4,g#4]@2 c4 ~ [c#4,e4]@2, ~@3 c4@3 ~@2", // G# G#5 C#m
  AH: "[[e4,a4]@2 [e4,a4]@2 a4 ~ [e4,a4]@4 [e4,a4]@2 e4 ~ [b3,e4]@2 [b3,e4,g#4]@4 ~@2 [c#4,f4,g#4]@4 [c#4,f4,g#4]@2 [c#4,f4] ~ [a#3,c#4]@2 f#4@2 f#4@2 ~@2 [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 d#4 ~ [b3,e4,g#4]@2 [b3,e4,g#4]@2 ~@2 [d4,b4]@2 ~@2 [c#4,a#4] ~ [c4,a4]@2 ~@2 [b3,e4]@2 ~@2 [b3,g#4]@2 ~@2 [b3,e4]@2 [b3,e4,g#4]@4 [b3,e4,g#4] ~@3, [a3,c#4]@4 ~@2 [a3,c#4]@7 ~ g#3@6 ~@2 g#3@6 ~@2 f#3@6 ~@10 g#3@4 ~@16 g#3@6 g#3@6 ~@2, ~@16 [a#3,c#4]@2 ~@13 g#4@2 e4@2 ~@5]/5", // A5 E5 E C# A#m B E G …
  AI: "[a3,c#4,e4,a4]@4 ~@2 [c#4,e4,a4]@4 [e4,a4]@2 [a3,c#4] ~ [c#4,e4]@2, ~@3 a3@3 ~@2", // A A5 A C#m
  AJ: "[[e4,a4]@2 [e4,a4]@2 ~@2 [c#4,e4,a4]@4 [c#4,e4,a4]@2 c#4 g#3 [b3,e4]@2 [b3,e4,g#4]@4 [g#3,b3,e4] ~@3 [c#4,e4]@4 [c#4,e4,a4]@2 ~@2, c#4@2 ~@5 g#3@3 ~@2 a3@3 ~]/2", // A5 A E5 E C#m A
  AK: "[d#4,f#4]@4 ~@2 [b3,e4]@3 ~ [b3,e4]@2 e4 ~@3, ~@3 g#3@4 ~, ~@5 g#4@2 ~", // D#m E5
  AL: "[a3,c#4,e4]@4 c#4 ~ [c#4,e4,a4]@4 [e4,a4]@2 ~@2 c#4@2, ~@3 a3@3 ~@2", // A A5
  AM: "[a4@2 a4@2 ~@2 [c#4,e4,a4]@4 [c#4,e4,a4]@2 [c#4,e4] ~ [a#3,c#4]@2 [a#3,c#4,f#4]@4 [a#3,f#4] ~ [c#4,f#4]@4 [c#4,f#4]@2 a#3 ~ [a3,d#4]@2, e4@4 ~@2 a3@6 ~@2 f#3@6 ~@2 [f#3,a#3]@7 ~@3]/2", // A C#m A#m F# D#m F#5 Adim F#
  AN: "[a3,d#4,f#4]@4 d#4 ~ [d#4,f#4]@4 [d#4,f#4]@2 [a3,d#4] ~@3, ~@3 a3@3 ~@2", // D#dim D#m Adim
  AO: "[g#3,b3,e4,g#4]@2 ~ [b3,e4,g#4]@2 [b3,e4,g#4] ~ [c#4,e4]", // E C#m
  AP: "[e4,g#4]@2 [e4,g#4] ~@3 e4@4 [e4,g#4]@2 [c#4,e4] ~ [c4,d#4]@2, c#4@2 ~ [g#3,c#4]@3 ~@2", // E C#m Cm C#5
  AQ: "g#4@2 g#4 ~@3 [c4,d#4,g#4]@4 d#4@2 [c4,d#4]@2 c4 ~, [c4,d#4]@4 ~@6 g#4@5 ~, ~@10 c4 ~@5", // G# Cm
  AR: "[a3,c#4,e4,a4]@4 c#4 ~ [c#4,e4,a4]@4 [c#4,e4,a4]@2 [c#4,e4] ~ [b3,e4]@2, ~@6 a3@7 ~@3", // A C#m E5
  AS: "[e4,g#4]@2 [e4,g#4]@2 ~@6 g#4@2 [c#4,f4,g#4] ~@3, b3@2 ~ [c#4,f4]@3 ~@2", // E C#
  AT: "[a#3,c#4,f#4]@2 [a#3,c#4,f#4]@2 c#4 ~ [b3,d#4,f#4]@5 ~@3 [b3,e4] ~", // F# B E5
  AU: "[[g#3,b3,e4,g#4]@2 ~@2 [d4,b4]@2 ~@2 [c#4,a#4] ~ [c4,a4]@2 ~@2 [g#3,b3,e4,g#4]@4 [e4,g#4] ~@5 [g#3,b3,e4]@20 ~@4, ~@23 [b2,e3]@21 ~@4]/3", // E G F# F E E5
})).s("gm_acoustic_guitar_steel").gain(0.28).pan(0.6)

// chords · acoustic guitar steel · "STEEL GTR" · soft notes
const acoustic_guitar_steel_2 = note(`<
  A B ~ C D E F G H I J K ~ L M N O P Q R S T U V W@2 X@2 Y Z AA AB AC AD AE@2 AF ~ AG AH@2 AI@2 AJ AK AL@2 AM@2 AN@3
  AO@2 AP ~@3
>`.pickRestart({
  A: "~@4 f#3!2 ~@6 f#3@2 ~@2", B: "b2@4 ~@2 e3@7 ~@3", C: "g#3@4 ~@2 g#3@7 ~@3", D: "~@3 c#4@2 ~@3",
  E: "b3@4 ~ g#4 ~@7 g#3 ~@2", F: "f#3@4 ~@8 f#3 ~@3", G: "~@4 c#6 ~@11", H: "~@2 c#6 ~@13", I: "~@7 c#4",
  J: "~@4 g#3 ~ g#3@6 ~@2 c#4 ~", K: "g#3@2 ~ c4@2 ~@3", L: "g#3@2 ~@2 g#4 ~@3", M: "f#3@4 ~@3 f#3@3 ~@2 f#3 ~ e4@2",
  N: "~@2 [g#3,e4] ~@13", O: "~@2 a2@6 a2@7 ~", P: "e3@4 a2 ~@7 e3 ~ [e3,a3,c#4]@2", Q: "~@6 e3@6 e3 ~ [e3,g#3,b3]@2",
  R: "~@4 e3@2 ~ f#3", S: "f#3@4 ~@2 e3@5 ~ e3 c#4 ~@2", T: "[e3,e4]@3 ~@4 e3@6 ~ [e3,a3]@2", U: "~@6 e3@6 e4 ~ f#3@2",
  V: "~@4 f#3 ~ f#3@6 f#4 ~ d#4@2", W: "[~@7 f#4@3 ~@2 [f#3,f#4] ~ e3@6 ~@2 b2@5 ~@5, ~@7 b3 ~@8]/2",
  X: "[~@4 g#3 ~ g#3@6 ~ g#4 c4@6 ~@12, ~@3 c#4@2 ~@2 g#3 ~@8]/2", Y: "a4@4 ~ a4 ~@8 g#3@2",
  Z: "g#4@4 ~@10 [a#3,f#4] ~", AA: "~@7 e4", AB: "~@2 g#3 ~@5 g3 ~@2 f#3 ~@4", AC: "~ f#3@6 ~", AD: "~@3 g#3@3 ~@2",
  AE: "[g#3@4 ~ g#3 ~@8 g#3@6 ~@2 g#3@5 ~ g#3 ~ a3@2, ~@7 d#4 ~@8]/2", AF: "~@13 g#3 ~@2", AG: "~@7 f#3@5 ~@4",
  AH: "[~@3 e4 [c6,c#6]@2 ~@2 c6 ~@7 b3 ~@15, ~@7 g#3@2 ~@7]/2", AI: "[~@14 a3@6 ~@2 a3@7 ~@3]/2",
  AJ: "~@4 g#4 ~@3 a4@4 ~@2 a3 ~", AK: "b3@4 d#4 ~@2 g#4@3 ~@6",
  AL: "[a4@4 ~@6 c#4@2 a4 ~ e4 ~ c#4@4 ~@12, ~@7 a3@3 ~@6]/2", AM: "[~@12 f#4 ~ f#3@6 ~@2 f#3@8 ~@2]/2",
  AN: "[~@4 g#4 ~ g#3@6 ~ g#4 g#3@6 ~@2 g#4@3 ~@3 g#3 ~ g#3@6 c4 ~ g#3@4 ~ g#3@5]/3",
  AO: "[~@13 g#3 g#3@6 ~@2 g#3@7 ~@3, ~@22 g#4@3 ~@7]/2", AP: "f#3@4 ~@2 f#3@5 ~@5",
})).s("gm_acoustic_guitar_steel").gain(0.14).pan(0.6)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B C D E F G H@2 B C I E F G J@2 K@2 L M N@2 O P B C Q E F G R@2 B S I E F T U@2 K@2 L V N@2 O W B C D E X G Y@3
>`.pickRestart({
  A: "b1@3 ~ b1@3 ~ b1@3 ~ b1@3 ~", B: "e2@2 ~@2 e2@2 ~ b1", C: "c#2@2 ~@2 c#2@2 ~ c#2", D: "g#2@2 ~@2 g#2@2 ~ e2",
  E: "a2 ~ a2 ~", F: "e2 ~ c#2 ~", G: "f#2 ~ b2 ~", H: "[e2@4 g#2@4 g2@2 f#2@2 ~@2 e2@4 b1@9 ~ b1@4]/2",
  I: "g#2 ~ g#2 ~", J: "[e2@4 a2@4 g#2@2 f#2@3 ~ e2@7 ~ e2 ~ e2@5 ~ e2 ~]/2", K: "a2 ~ f#2 ~ e2 ~ f#2 ~",
  L: "e2 ~ e2 ~ a2 ~ a2 ~", M: "b2@2 ~@2 b2@2 ~@2 e2@3 ~ e2@2 ~@2", N: "a2@3 ~ f#2@2 ~@2 e2@2 ~@2 f#2@2 ~@2",
  O: "f#2 ~@7 f#2@2 ~@4 b1@2", P: "b2@3 ~ a2@3 ~ g#2@3 ~ f#2@3 ~", Q: "g#2@2 ~@2 g#2@2 ~ g#2",
  R: "[e2@4 g#2@4 g2@2 f#2@2 ~@2 e2@4 b1@2 b1@6 ~@2 b1@3 ~]/2", S: "c#2 ~ c#2 ~", T: "f#2@2 ~@2 b2@2 ~ d#2",
  U: "[e2@4 a2@4 g#2@2 f#2@3 ~ e2@7 ~ e2 ~ e2@7 ~]/2", V: "b2@3 ~ b2@3 ~ e2@3 ~ e2@3 ~", W: "b2 a2 g#2 f#2",
  X: "e2@2 ~@2 c#2@2 ~ c#2", Y: "[e2@4 g#2@4 g2@2 f#2@2 ~@2 e2@5 ~ b2@4 e2@12 ~@12]/3",
})).s("gm_acoustic_bass").gain(0.38)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  ~@9 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 Z AA AB AC AD AE ~@7 AF AG AH AI AJ AK AL AM AN@2
>`.pickRestart({
  A: "[b3,e4,g#4] ~ [b3,e4] ~ e4@2 [b3,e4,g#4] ~@3 e4@2 [e4,g#4] ~@3", // E E5 E
  B: "g#4@2 g#4@2 [e4,g#4]@2 [g#4,c#5] ~@3 g#4@2 [g#4,c#5] ~@3", C: "~@4 d#4@3 ~, ~ g#3@2 ~@5, ~@2 c4@3 ~@3",
  D: "~@3 e4@3 ~@2, ~ c#4@4 ~@3", E: "~@4 [b3,e4,g#4] ~@7 [f4,g#4,c#5] ~@3",
  F: "~@4 [f#4,a#4,c#5] ~@7 [d#4,f#4,b4] ~@3", G: "~@4 [d5,g5]@2 [b4,c5,c#5,f5,f#5] ~ [b4,e5]@2 ~@2 [a4,c#5] ~ c5 ~",
  H: "[f#4,b4]@3 ~@3 [d4,g#4,b4] ~@3 [d4,g#4,b4]@2 [d4,g#4,b4]@2 ~@2", // B5 G#dim
  I: "~@2 g4@2 a4 d5 c#5 b4 a4 g#4 f#4 e4 d4 c#4 b3 ~", J: "g#3 ~ g4@2 b4@2 d5@2 ~@2 c#5@2 a4@2 g#4 ~",
  K: "~@6 c4@2 e4 g4 f4 e4 d4 c#4 b3 a#3", L: "a3 f4 a4 c#5 a4@2 ~@2",
  M: "~@2 f4@2 a4 c#5 a4 f#4 e4 d4 c#4 c4 b3 a3 g#3 g3", N: "f#3@3 ~@13",
  O: "~@6 e4 ~ b4@2 b4 ~ e4 f#4 ~@2, ~@7 f#4@4 ~@5", P: "[b3,e4,g#4] ~@5 [e4,g#4] ~@3 [b3,e4,g#4]@2 [b3,e4,g#4] ~@3",
  Q: "[e4,g#4] ~@5 [e4,g#4] ~@3 [e4,g#4]@2 [c#4,e4,g#4] ~@3", // E C#m
  R: "[c4,d#4] ~@5 [c4,d#4,g#4] ~@3 [d#4,g#4]@2 [d#4,g#4] ~@3", S: "[e4,a4] ~@5 [c#4,e4,a4]@2 ~@4 b4 c#5 e5 f#5",
  T: "g5@3 ~@7 [g#4,c#5] ~@5", U: "[a#4,c#5] ~@5 [f#4,b4] ~@9", V: "~@2 d#4@2 e4 ~ e4@2 d#4@2 e4 ~ e4@2 e4 [e4,g4]",
  W: "[e4,g#4]@2 [d#4,g4] [c#4,d4,f4,f#4] ~@12", // E D# Dmaj7
  X: "[b4,e5] ~@3 [b4,e5]@2 [b4,e5]@2 ~@2 [g#4,b4]@2 [b4,e5]@2 [g#4,b4] ~", Y: "[b4,e5] ~ [c#5,e5]!2 ~@4",
  Z: "[g4,b4] [g#4,c5]@2 ~ [g4,b4] [g#4,c5]@2 ~ [g4,b4,c5] g#4@2 ~ [g4,g#4,b4,c5]@2 ~@2", // G G# G G# Cmaj7
  AA: "[g#4,a4,c5,c#5]@2 ~@2 [e4,a4]@2 [a4,c#5]@2 ~@2 b4@2 c5 ~ e5 ~", // C#maj7 A5 A
  AB: "f#5@2 f#5@2 e5 ~ f#5 ~ f5 ~ e5 ~ f#5@2 f#5@2", AC: "e5 f#5!2 ~ f#5 ~ e5 ~ f#5 ~ f#5 ~ e5@2 c#5 ~",
  AD: "e5@2 b4!3 ~ b4 ~ b4@2 g#4 a4 b4 c#5 d#5 ~", AE: "f#5 ~@7", AF: "a4 a#4 b4 ~ a4!3 ~ f#4 g4 g#4 ~ f#4!3 ~",
  AG: "[e4,g#4] ~@5 [g#4,b4] ~@3 b4@2 [g#4,b4] ~@3", AH: "g#4 ~@5 [g#4,c#5] ~@3 [g#4,c#5]@2 ~@4",
  AI: "[g#4,c5] ~@5 [g#4,c5] ~@3 g#4@2 ~@4", AJ: "a4 ~@5 [a4,c#5]@4 [a4,c#5]@2 a4 ~@3",
  AK: "~@4 [e4,g#4] ~@5 [f4,g#4,c#5] ~@5", AL: "[a#4,c#5] ~@5 f#4@4 [f#4,b4]@2 ~@4",
  AM: "~@2 [b4,e5]@2 [a#4,e5] [a4,e5] ~ [g#4,e5]", AN: "[~@4 b3@2 ~@3 [c#5,e5]@19 ~@4, ~@2 [d4,g#4]@5 ~]/2",
})).s("gm_electric_guitar_jazz").gain(0.33).pan(0.3)

// chords · electric guitar jazz · "JAZZ GTR" · soft notes
const electric_guitar_jazz_2 = note("<~@9 A B C D@2 E ~ F ~ G ~@5 H I J K L ~@5 M ~@14 N O P Q R S ~ T ~>".pickRestart({
  A: "g#3 ~@3 [b3,g#4]@2 ~@3 e4 [b3,g#4]@2 ~@4", B: "e4@2 e4@2 c#5@2 ~@5 c#5 e4 ~@3, c#4@7 ~@3 e4@2 ~@4",
  C: "~ c4 ~@3 c4@2 ~, ~@3 g#3@3 ~@2",
  D: "[a3@3 ~@7 c#4@2 ~@2 [b3,e4]@2 e4 ~ b3@2 ~@4 f4@2 f4@2 ~@4, ~@4 a3@8 ~@2 g#3@7 ~@3 c#4@5 ~@3]/2", // E5
  E: "f#4@3 ~@5 d#4@2 [b3,d#4,f#4]@2 ~@4, b4 ~@15", F: "~@6 b3 ~@5 b3@2 ~@2", G: "~@15 a3", H: "~@14 d#4 ~",
  I: "~@5 g#3 ~@2", J: "~@6 c#4 ~@3 c#4@2 g#3 ~@3", K: "[g#3,g#4] ~@5 g#3 ~@3 c4@2 c4 ~@3", L: "c#4 ~@5 a3@2 ~@8",
  M: "~@9 a#4 ~@6", N: "b4 ~@5 d#4 ~@3 [e4,g#4]@2 e4 ~@3", O: "c#5 ~@15", P: "~@6 [c4,d#4] ~@3 [c4,d#4]@2 ~@4",
  Q: "[c#4,c#5] ~@9 e4@2 ~@4, ~@3 c#4@3 ~@2", R: "b4 ~@3 b4 ~@11", S: "f#4 ~@5 d#4@5 ~@5, ~@6 b4 ~@9",
  T: "~@6 c4 [c#4,d4] ~@8", // Dmaj7
})).s("gm_electric_guitar_jazz").gain(0.11).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~ A@22 B C A@22 B C A@6 D E ~>".pickRestart({
  A: "x!2", B: "x ~@2 x!2 ~@2 x", C: "x!4", D: "x ~@3 x ~@2 x", E: "~ x",
})).gain(0.44)

// drums · rim
const rim = s("rim").struct("<~@24 x ~@22 x [x!4] ~@9>").gain(0.44)

// drums · snare
const snare = s("sd").struct(`<
  A B@7 C B@7 D B@3 E B F G H B@6 I J K E L M N B@2 E B@3 O B P Q R B@6 S J ~
>`.pickRestart({
  A: "~ x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~", B: "~ x ~ x", C: "~ x!2 ~@3 x ~", D: "~ x!4 ~ x!2", E: "~@2 x ~@2 x ~ x",
  F: "~@4 x ~@4 x ~ x!5", G: "x ~@2 x!4 ~ x ~@2 x!4 ~", H: "~@3 x ~ x ~@2 x ~@2 x ~ x ~@2", I: "~@2 x ~@3 x!2",
  J: "~ x ~@2", K: "~@2 x!2 ~@2 x ~", L: "~@2 x ~@2 x ~@2", M: "x!8", N: "x ~ x ~@2 x ~@2", O: "~@4 x ~@5 x!2 ~@4",
  P: "~@4 x ~@6 x!2 ~ x ~", Q: "x ~@2 x!2 ~@3", R: "x!3 ~ x!3 ~ x!3 ~ x!3 ~", S: "~@2 x ~ x!2 ~@2",
})).gain(0.38)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<[x!4] ~@21 [~@5 x ~@2] [~ x!2 ~@6 x!2 ~@5] ~@34>").gain(0.22)

// drums · low tom
const low_tom = s("lt").struct("<~@32 [~@10 x!6] ~@11 [~@12 x!4] x ~@12>").gain(0.44)

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

// drums · ride
const ride = s("rd").struct("<~ A@15 B A@5 C ~@2 A@21 C ~@2 A@7 D ~>".pickRestart({
  A: "x!8", B: "x ~@3 x!4", C: "x!6 ~@2", D: "x!3 ~@5",
})).gain(0.22)

stack(
  acoustic_guitar_steel, acoustic_guitar_steel_2, bass, electric_guitar_jazz, electric_guitar_jazz_2, kick, rim, snare,
  snare_soft, low_tom, crash, ride
)

More by Buddy Holly