Strudelify

Moondreams

Buddy Holly

KeyB♭ majorTempo115 bpm
0:00/0:00
// Moondreams — Holly Buddy
// 115 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 76 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(115/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 jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  ~ A B@3 C D E F G H I J@8 K L@2 M N O P Q R S T U V W@2 X ~@12 Y Z Y AA AB@2 AC AD AE AF AG@2 AH AI AJ AK AL AM AN AO
  AP AQ AR AS AT AU AV AW
>`.pickRestart({
  A: "~@7 [g3,d4]@5 [g3,d4]@2 ~@4 [f3,bb3,d4]@2 ~@4, ~@3 bb3@4 ~@5", // G5 Bb
  B: "[[f3,bb3,d4]@2 ~@4 [g3,bb3,d4]@6 [g3,bb3,d4] ~@5 [f3,bb3,d4]@2 ~@3 [f3,bb3,d4]@2 ~@4 [g3,bb3,d4]@6 [g3,bb3,d4] ~@5 [f3,bb3,d4]@2 ~@4 [f3,bb3,d4]@2 ~@4 [g3,bb3,d4]@6 [g3,bb3,d4] ~@4 [f3,bb3,d4]@2 ~@4 [f3,bb3,d4]@2]/3", // Bb Gm Bb Gm Bb Gm Bb
  C: "~@2 [f3,bb3,d4]@3 [f3,bb3,d4] ~@2 [g3,bb3,d4] ~@2 [g3,bb3,d4]", // Bb Gm
  D: "~@4 d4@5 [f3,bb3,d4]@2 ~@4 [g3,bb3,d4]@2 ~@4 [g3,bb3,d4]@2 ~, ~ [f3,bb3]@2 ~@5", // Bb Gm Bb5
  E: "~@3 [gb3,a3,d4]@6 [gb3,a3,d4] ~@5 [gb3,a3,d4] ~@4 [gb3,a3,d4] ~@3", // D
  F: "~@2 [gb3,a3,d4]@6 [gb3,a3,d4] ~@5 [gb3,a3,d4]@2 ~@4 [gb3,a3,d4]@2 ~@2", // D
  G: "~@2 [f3,bb3,d4]@5 ~ [bb3,d4] ~@4 [g3,bb3,d4]@2 ~@4 [g3,bb3,d4]@2 ~@3, ~@7 f3@2 ~@15", // Bb Gm
  H: "~ [bb3,d4]@6 [bb3,d4]@2 ~@4 [g3,bb3,d4]@2 ~@4 [g3,bb3,d4]@2 ~@3, ~ f3@8 ~@15", // Bb Gm
  I: "~ [g3,b3,d4]@5 [g3,b3,d4] ~@5 [g3,b3,d4]@2 ~@4 [g3,b3,d4]@2 ~@4", // G
  J: "[[g3,b3,d4]@6 [g3,b3,d4] ~@5 [b3,d4]@2 ~@3 [g3,b3,d4]@2 ~@4 [e3,c4]@6 [bb3,c4] ~@5 [e3,bb3,c4]@2 ~@4 [e3,bb3,c4]@2 ~@4 [bb3,c4]@5 [bb3,c4] ~@5 [e3,bb3,c4]@2 ~@4 [e3,bb3]@3 ~@3 [eb3,c4]@6 [a3,c4] ~@5 [eb3,a3,c4]@2 ~@3 [eb3,a3,c4]@2 ~@4 [eb3,a3,c4]@6 [eb3,a3,c4]@2 ~@4 [eb3,a3,c4]@2 ~@4 [eb3,a3,c4]@2 ~@4 [gb3,bb3,eb4]@6 [gb3,bb3,eb4] ~@5 bb3@2 ~@3 [c3,gb3,bb3,eb4] ~@5 [gb3,a3,c4]@6 [gb3,a3,c4] ~@5 [gb3,a3,c4]@2 ~@4 [gb3,a3,c4]@2 ~@3 bb3@6 [bb3,d4]@2 ~@4 [g3,bb3,d4]@2 ~@4 [g3,bb3,d4]@2 ~@4 [f3,bb3,d4]@5, ~@11 g3@2 ~@10 bb3@5 ~@19 e3@8 ~@9 c4 ~@5 a3@5 ~@42 c3@8 ~@3 [gb3,eb4]@2 ~@33 f3@8 ~@21]/8", // G Bm G C Bbsus2 C7 Bbsus2 C7 …
  K: "~ [f3,bb3]@2 ~@4 [f3,bb3,d4]@2 ~@3 [f3,bb3,d4]@2 ~@4 [f3,bb3,d4]@6", // Bb5 Bb
  L: "[[f3,bb3,d4]@2 ~@4 [g3,bb3,d4]@2 ~@4 [g3,bb3,d4]@2 ~@4 [f3,bb3,d4]@5 [f3,bb3,d4]@2 ~@4 [g3,bb3,d4]@2 ~@4 [g3,bb3,d4]@2 ~@4 [gb3,a3,d4]@5 [gb3,a3,d4] ~]/2", // Bb Gm Bb Gm D
  M: "~@4 [gb3,a3,d4] ~@5 [gb3,a3,d4] ~@5 d4@5 [gb3,a3,d4] ~@2, ~@5 [gb3,a3]@2 ~", // D Gbm
  N: "~@3 [gb3,a3,d4]@2 ~@4 [gb3,a3,d4] ~@5 [f3,bb3,d4]@5 [f3,bb3,d4] ~@3", // D Bb
  O: "~@2 [g3,bb3,d4]@2 ~@4 [g3,bb3,d4]@2 ~@4 [bb3,d4]@5 [bb3,d4]@2 ~@3, ~@7 f3@4 ~", // Gm Bb
  P: "~ [g3,bb3,d4]@2 ~@4 [g3,bb3,d4] ~@5 [g3,b3,d4]@5 [g3,b3,d4] ~@5", // Gm G
  Q: "[g3,b3,d4]@2 ~@4 [g3,b3,d4]@2 ~@4 b3@5 [g3,b3,d4] ~@5 [g3,b3,d4], ~@11 [g3,d4]@6 ~@7", // G G5
  R: "~@5 [g3,b3,d4] ~@5 [bb3,c4]@5 [bb3,c4] ~@5 [e3,bb3,c4]@2, ~@11 e3@7 ~@6", // G Bbsus2 C7
  S: "~@4 [e3,bb3,c4] ~@5 c4@5 [bb3,c4] ~@5 [e3,bb3,c4]@2 ~, ~@9 e3@8 ~@7, ~@3 bb3@2 ~@3", // C7 Bbsus2 C7
  T: "~@3 [e3,c4] ~@5 a3@5 [a3,c4] ~@5 [eb3,a3,c4]@2 ~@2, ~@3 bb3@3 ~@2 [eb3,c4]@7 ~@9", // C Am Adim Cm
  U: "~@2 [eb3,a3,c4]@2 ~@4 a3@5 [eb3,a3,c4]@2 ~@4 [eb3,a3,c4]@2 ~@3, ~@7 [eb3,c4]@6 ~@11", // Adim Cm
  V: "~ [eb3,a3,c4] ~@5 eb4@5 [gb3,bb3,eb4] ~@5 [gb3,bb3,eb4]@2 ~@4, ~@3 c3@4 ~@5, ~ [gb3,bb3] ~@2", // Adim Ebm Gb
  W: "[[c3,gb3,bb3,eb4] ~@5 [a3,c4]@5 [gb3,a3,c4] ~@5 [gb3,a3,c4]@2 ~@4 [gb3,a3,c4]@2 ~@3 bb3@6 [bb3,d4]@2 ~@4 [g3,bb3,d4]@2 ~@4 [g3,bb3,d4]@2, ~@5 gb3@6 ~@17 f3@8 ~@12]/2", // Cm7b5 Am Gbdim Bb Gm
  X: "~@4 [f3,bb3,d4]@5 [f3,bb3]@2 ~@4 [f3,bb3,d4]@2 ~@4 [f3,bb3,d4]@2 ~", // Bb Bb5 Bb
  Y: "~@3 [g3,d4]@6 [g3,bb3,d4] ~@5 [f3,bb3,d4]@2 ~@4 [f3,bb3,d4]@2 ~, ~@3 bb3@4 ~@17", // G5 Gm Bb
  Z: "~@3 [f3,bb3,c4]@6 [f3,bb3]@2 ~@4 [f3,a3,c4]@2 ~@4 [f3,a3,c4] ~@2", // Fsus4 Bb5 F
  AA: "~@3 [bb3,d4]@6 [bb3,d4]@2 ~@4 [f3,bb3,d4]@2 ~@4 [f3,bb3,d4]@2 ~, ~@3 g3@8 ~@13", // Bb
  AB: "~@3 [f3,bb3,d4]@6 [f3,bb3,d4]@2 ~@4 [g3,bb3,d4]@2 ~@4 [g3,bb3,d4]@2 ~", // Bb Gm
  AC: "~@3 [gb3,a3,d4]@6 [gb3,a3,d4] ~@5 [gb3,a3,d4] ~@5 [gb3,a3,d4] ~@2", // D
  AD: "~@3 [gb3,a3,d4]@6 [gb3,a3,d4] ~@5 [gb3,a3,d4]@2 ~@4 [gb3,a3,d4]@2 ~", // D
  AE: "~@3 [f3,bb3,d4]@5 ~ [f3,bb3,d4] ~@5 [g3,bb3,d4]@2 ~@4 [g3,bb3,d4]@2 ~", // Bb Gm
  AF: "~@3 [bb3,d4]@6 [bb3,d4]@2 ~@4 [g3,bb3,d4]@2 ~@4 [g3,bb3,d4]@2 ~, ~@3 f3@8 ~@13", // Bb Gm
  AG: "~@3 [g3,b3,d4]@6 [g3,b3,d4] ~@5 [g3,b3,d4]@2 ~@4 [g3,b3,d4]@2 ~", // G
  AH: "~@3 [e3,bb3,c4]@6 [bb3,c4] ~@5 [e3,bb3,c4]@2 ~@4 [e3,bb3,c4]@2 ~", // C7 Bbsus2 C7
  AI: "~@3 [bb3,c4]@6 [bb3,c4] ~@5 [e3,bb3,c4]@2 ~@4 [e3,bb3]@3, ~@3 e3@8 ~@10 c4 ~@2", // Bbsus2 C7 Edim
  AJ: "~@3 [eb3,a3,c4]@6 [a3,c4] ~@5 [eb3,a3,c4]@2 ~@4 [eb3,a3,c4]@2 ~", // Adim Am Adim
  AK: "~@3 [eb3,a3,c4]@6 [eb3,a3,c4]@2 ~@4 [eb3,a3,c4]@2 ~@4 [eb3,a3,c4]@2 ~", // Adim
  AL: "~@3 [c3,gb3,bb3]@6 [gb3,bb3,eb4] ~@5 [c3,gb3,bb3,eb4] ~@5 [c3,gb3,bb3,eb4] ~@2", // Cm7b5 Ebm Cm7b5
  AM: "~@3 [c3,gb3,bb3,eb4]@6 [gb3,bb3,eb4] ~@5 [c3,gb3,bb3,eb4] ~@5 [c3,gb3,bb3,eb4] ~@2", // Cm7b5 Ebm Cm7b5
  AN: "~@3 [gb3,a3,c4]@5 ~ [gb3,a3,c4] ~@5 [gb3,a3,c4] ~@5 [gb3,a3,c4] ~@2", // Gbdim
  AO: "~@3 [gb3,a3,c4]@6 [a3,c4] ~@5 [gb3,a3,c4] ~@5 [gb3,a3,c4] ~@2", // Gbdim Am Gbdim
  AP: "~@3 [c3,gb3]@6 [gb3,bb3,eb4] ~@5 [c3,gb3,bb3,eb4]@2 ~@4 [c3,gb3,bb3,eb4] ~@2, ~@3 [bb3,eb4]@5 ~@16", // Cdim Ebm Cm7b5 Eb5
  AQ: "~@3 [gb3,a3,c4]@6 [gb3,a3,c4] ~@5 [gb3,a3,c4] ~@5 [gb3,a3,c4] ~@2", // Gbdim
  AR: "~@3 [g3,bb3,d4]@6 [g3,bb3,d4] ~@5 [f3,bb3,d4] ~@5 [f3,bb3,d4] ~@2", // Gm Bb
  AS: "~@3 [g3,bb3]@6 d4 ~@5 [f3,bb3]@2 ~@4 [f3,bb3,d4]@2 ~, ~@3 d4@5 ~@16", // Gm Bb5 Bb
  AT: "~@3 [g3,bb3,d4]@6 [g3,bb3,d4] ~@5 [f3,bb3,d4]@2 ~@4 [f3,bb3,d4]@2 ~", // Gm Bb
  AU: "~@3 [g3,bb3,d4]@6 [g3,bb3,d4] ~@5 [f3,bb3,d4]@2 ~@4 [f3,bb3,d4]@3", AV: "[f3,bb3,d4] ~@23",
  AW: "[f3,bb3,d4] ~@7", // Bb
})).s("gm_electric_guitar_jazz").gain(0.19).pan(0.6)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~ A B C D E F G@3 H@8 I@4 J K L@2 M N@2 O P@2 Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AL AO AP
  AQ AR AS AT AU AV AW AU@2 AX AY AZ BA@2 BB BC BD
>`.pickRestart({
  A: "~@4 bb2@11 f2@2 ~@4 f2@3", B: "~ bb2@4 f2 ~ f2", C: "~@2 bb2@11 ~ f2@2 ~@4 f2@3 ~",
  D: "~@2 bb2@11 f2@3 ~@3 f2@3 ~@2", E: "~ bb1@10 ~@2 d2@6 f2@3 ~@2", F: "~ bb1@8 ~@3 d2@6 f2@3 ~@3",
  G: "[d2@11 ~ gb2@3 ~@2 a2@6 d2@11 ~ gb2@3 ~@3 a2@3 ~@3 bb1@9 ~@2 d2@6 f2@3 ~@3 bb1@2]/3",
  H: "[~@10 a2@2 ~ g2@2 ~ f2@3 ~@2 d2@11 ~ g2@3 f2 ~@2 g1@3 ~@3 d2@11 ~ g2@3 ~@2 g2@2 ~@4 c3@10 ~@2 g2@3 ~@3 g2@3 ~@3 c3@11 c2@2 ~@4 c2@3 ~@3 f2@11 ~ c2@3 ~@3 c2@3 ~@2 f2@12 f2@3 ~@3 f2@3 ~@3 c2@11 c2@3 ~@3 c2@3 ~@3 f2@7]/8",
  I: "[~@5 f2@3 ~@3 f2@3 ~@3 bb1@11 f2@2 ~@4 f2@3 ~@3 bb2@11 ~ f2@2 ~@4 f2@3 ~@3 bb2@10 ~ d2@6 f2@3 ~@3 bb1@9]/4",
  J: "~@2 d2@5 ~ f2@3 ~@3 d2@10", K: "~ a2@3 ~@3 a1@3 ~@3 d2@11",
  L: "[a2@3 ~@3 a2@6 bb2@9 ~@2 f2@2 ~@4 f2@3 ~@3 bb1@11 f2@2]/2", M: "~@4 f2@3 ~@3 d2@10 ~ g2@2 ~",
  N: "[~@3 g2@3 ~@3 d2@11 g2@3 g2@3 g2@2 ~ g2@2 ~ c3@10 ~ g2@2 ~@3]/2", O: "~ g2@3 ~@3 c3@11 c2@2 ~@4",
  P: "[c2@2 ~@4 f2@11 c2@3 ~@3 c2@4 ~@2 f2@11 f2@3 ~@3 f2@2]/2", Q: "~@4 c2@11 c2@3 ~@3 c2@3",
  R: "~@3 f2@10 ~ f1@3 ~@3 f1@3 ~", S: "~@2 bb1@10 ~ f2@3 ~@3 f2@3 ~@2", T: "~ bb2@11 f2@2 ~@4 f2@3 ~@3",
  U: "bb1@3 ~@3 bb1 ~ bb1@2 bb1 ~ ab1@2 ~@4 bb1 ~ bb1 ~ bb1@2",
  V: "bb1@2 ~@4 bb1 ~ bb1@2 bb1@2 ab1@2 ab1 ~ ab1@2 bb1@2 bb1@2 bb1@2",
  W: "ab1@2 ~@4 ab1@2 ab1 ~ ab1@2 ab1@2 ~@4 ab1@2 ab1@2 ab1@2",
  X: "ab1@2 ~@4 ab1@2 ab1 ~ ab1 ~ ab1@2 ab1 ~ ab1@2 ab1 ~ ab1 ~ ab1@2",
  Y: "bb1@2 ~@4 bb1@2 bb1 ~ bb1@2 ab1@2 ~@4 bb1 ~ bb1 ~ bb1@2",
  Z: "bb1@2 ~@4 bb1@2 bb1 ~ bb1 ~ ab1 ~ ab1@2 ab1@2 bb1 ~ bb1 ~ bb1@2",
  AA: "f1@3 ~@3 f1@2 f1@2 f1@2 f1@2 ~@4 f1@2 f1@2 f1@2", AB: "f1@2 ~@4 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1 ~ f1@2",
  AC: "bb1@2 ~@4 bb1 ~ bb1 ~ bb1 ~ ab1@3 ~@3 bb1 ~ bb1 ~ bb1@2",
  AD: "bb1@3 ~@3 bb1 ~ bb1 ~ bb1 ~ ab1@2 ab1@2 ab1@2 bb1 ~ bb1@2 bb1@2", AE: "ab1 ~@2 ab1!4 ~@2 ab1!3",
  AF: "ab1@2 ~@4 ab1 ~ ab1@2 ab1@2 ab1@2 ab1@2 ab1@2 ab1 ~ ab1 ~ ab1@2", AG: "bb1@5 ~ bb1 ~",
  AH: "c2@11 ~ f2@2 ~@4 f2@3 ~@3", AI: "bb2@6 f2 ~@2 f2 ~@2", AJ: "bb2@11 ~ f2@2 ~@4 f2@3 ~@3",
  AK: "bb1@10 ~@2 d2@6 f2@3 ~@3", AL: "bb1@3 ~ d2@2 f2 ~", AM: "d2@11 ~ gb2@3 ~@3 a2@6", AN: "d2@4 gb2 ~ a2 ~",
  AO: "bb1@7 ~@5 a2@2 ~ g2@2 ~ f2@3 ~@3", AP: "d2@12 g2@3 f2 ~@2 g1@3 ~@3", AQ: "d2@11 ~ g2@3 ~@3 g2@3 ~@3",
  AR: "c3@10 ~@2 g2@3 ~@3 g2@3 ~@3", AS: "c3@11 ~ c2@2 ~@4 c2@3 ~@3", AT: "f2@11 ~ c2@3 ~@3 c2@3 ~@3",
  AU: "f2@4 f2 ~ f2 ~", AV: "c2@11 ~ c2@4 ~@2 c2@3 ~@3", AW: "c2@12 c2@3 ~@3 c2@4 ~@2", AX: "c2@4 c2 ~ c2 ~",
  AY: "f2@11 ~ f2@3 ~@3 f2@3 ~@3", AZ: "bb2@7 ~@5 f2@3 ~@3 f2@3 ~@3", BA: "bb2@3 ~ f2 ~ f2 ~", BB: "bb2@4 f2 ~ f2 ~",
  BC: "bb2 ~@7", BD: "bb1 ~@23",
})).s("gm_acoustic_bass").gain(0.38)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A B@3 C ~@2 D@2 ~@2 E F ~@4 G@2 H@2 I@2 J K@2 L M@2 ~@3 N O P Q R S T U V S W X Y Z AA AB ~@2 AC AD ~@2 AE AF ~@2 AG
  AH ~@4 AI AJ AK AL ~@2 AM AN AO AN AP AQ
>`.pickRestart({
  A: "~@4 bb5 ~ a5 g5 ~ f5 a5 g5@2 f5 ~ eb5 g5 f5 ~ eb5 d5@2 f5 [d5,eb5]", // Ebmaj7
  B: "[c5 [a4,bb4] [f4,g4] eb4 d4@2 ~@9 ab5@12 g5@11 gb5@6 f5@7 d5@7 ~@4 ab5@10]/3", C: "~ g5@12 gb5@6 f5@5",
  D: "[~@12 d6 c6 ~ bb5 a5 c6 ~ bb5 a5 ~ g5 bb5@2 a5 g5@2 gb5 a5 ~ g5 gb5 ~ e5 d5@3 ~@10]/2",
  E: "~@3 [e5,g5]@3 [f5,a5]@3 [g5,b5] ~@2 [f5,a5] [g5,b5] [f5,a5] [e5,g5]@3 [f5,a5]@3 [g5,b5] ~@2", // Em F G F G F Em F …
  F: "[f5,a5] [g5,b5] [f5,a5] [e5,g5]@3 [f5,a5]@3 [g5,b5]@4 ~@11", G: "[~@5 bb5@3 gb5@3 bb5@3 gb5@3 a5@12 ~@19]/2",
  H: "[~@4 ab5@11 ~ g5@12 gb5@5 f5@5 ~ f5@3 d5@3 f5@3]/2",
  I: "[d5@3 f5@3 d5@3 f5@2 d5@3 f5@3 d5@3 f5@3 d5@3 f5@3 d5@3 f5@3 d5@2 gb5@3 d5@3 gb5@3 d5@2]/2",
  J: "~ gb5@3 d5@3 gb5@3 d5@2 gb5@3 d5@3 gb5@3 d5@3",
  K: "[gb5@3 d5@3 gb5@2 d5@3 ~ f5@2 d5@3 f5@3 d5@3 f5@3 d5@3 f5@3 d5@2 f5@3 d5@3 f5@3 d5@3 f5@2]/2",
  L: "~ d5@3 f5@3 d5@3 [f5,a5]@2 [e5,g5]@3 [f5,a5]@3 [e5,g5]@3 [f5,a5]@3", // F Em F Em F
  M: "[[e5,g5]@3 [f5,a5]@3 [e5,g5]@2 [f5,a5]@3 [e5,g5]@3 [f5,a5]@3 [e5,g5]@3 [f5,a5]@6 ~@22]/2", N: "~@5 bb5 gb5 bb5",
  O: "gb5@3 a5@11 ~@10", P: "~@13 ab5@11", Q: "~ g5@11 gb5@6 f5@5 ~",
  R: "[f3,d4]@2 ~@4 [f3,d4] ~ [f3,d4] ~ [f3,d4] ~ [eb3,c4] ~@5 [f3,d4] ~ [f3,d4] ~ [f3,d4] ~", // Dm Cm Dm
  S: "[f3,d4] ~@5 [f3,d4] ~ [f3,d4] ~ [f3,d4] ~ [eb3,c4] ~ [eb3,c4] ~ [eb3,c4] ~ [f3,d4] ~ [f3,d4] ~ [f3,d4] ~", // Dm Cm Dm
  T: "c4@2 ~@4 [eb3,c4] ~ [eb3,c4] ~ [eb3,c4] ~ [eb3,c4] ~@5 [eb3,c4] ~ [eb3,c4] ~ [eb3,c4] ~, eb3 ~@23", // Cm
  U: "[eb3,c4] ~@5 [eb3,c4] ~ [eb3,c4] ~ [eb3,c4] ~ [eb3,c4] ~ [eb3,c4] ~ [eb3,c4] ~ [eb3,c4] ~ [eb3,c4] ~ [eb3,c4] ~", // Cm
  V: "[f3,d4] ~@5 [f3,d4] ~ [f3,d4] ~ [f3,d4] ~ [eb3,c4] ~@5 [f3,d4] ~ [f3,d4] ~ [f3,d4] ~", // Dm Cm Dm
  W: "[f3,f4] ~@5 [f3,f4] ~ [f3,f4] ~ [f3,f4] ~ [eb3,g4] ~@5 [eb3,g4] ~ [eb3,g4] ~ [eb3,g4] ~", // F Eb
  X: "a4@2 ~@4 [f3,a4] ~ [f3,a4] ~ [f3,a4] ~ [g3,bb4] ~ [g3,bb4] ~ [g3,bb4] ~ [eb3,c5] ~ [eb3,c5] ~ [eb3,c5] ~, f3 ~@23", // F Gm Cm
  Y: "[f3,d5] ~@5 [f3,d5] ~ [f3,d5] ~ [f3,d5] ~ [g3,eb5] ~@5 [f3,d5] ~ [f3,d5] ~ [f3,d5] ~", // Dm Cm Dm
  Z: "[f3,d5] ~@5 [f3,d5] ~ [f3,d5] ~ [f3,d5] ~ [g3,eb5] ~ [g3,eb5] ~ [g3,eb5] ~ [f3,d5] ~ [f3,d5] ~ [f3,d5] ~", // Dm Cm Dm
  AA: "[gb3,eb5] ~@5 [gb3,eb5] ~ [gb3,eb5] ~ [gb3,eb5] ~ [gb3,eb5] ~@5 [gb3,eb5] ~ [gb3,eb5] ~ [gb3,eb5] ~", // Ebm
  AB: "[gb3,eb5] ~@5 [gb3,eb5] ~ [gb3,eb5] ~ [gb3,eb5] ~ [gb3,eb5] ~ [gb3,eb5] ~ [gb3,eb5] ~ [gb3,eb5] ~ [gb3,eb5] ~ [gb3,eb5] ~", // Ebm
  AC: "~ ab5", AD: "g5@12 gb5@6 f5@5 ~", AE: "~@12 d6 ~ c6 bb5 a5 ~ c6 bb5 ~ a5 g5 ~",
  AF: "bb5@2 a5 g5@2 gb5 a5 ~ g5 gb5 ~ e5 d5@3 ~@9", AG: "~@6 g5@3 a5@3 b5 ~@2 a5 b5 a5 g5@3 a5@3",
  AH: "b5 ~@2 a5 b5 a5 g5@3 a5@3 b5@4 ~@8", AI: "~@4 d6 c6 d6 c6", AJ: "d6@2 ~ c6 d6 c6 d6 c6", AK: "~@4 db6 c6 db6 c6",
  AL: "db6@5 ~@4 c6@3 db6@3 c6@3 db6@3 c6@3", AM: "~@12 ab5@11 ~", AN: "g5@2 gb5 f5", AO: "d5@3 ~ ab5@4",
  AP: "d5@5 ~@7 bb5!3 g5!3 f5!3 d5!3", AQ: "bb4 ~@7",
})).s("gm_string_ensemble_1").gain(0.3).pan(0.6)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1_2 = note(`<
  A B@3 C D E F@6 ~@4 G@2 H@4 I J@5 ~@3 K L M N O P Q R O P S T U V W X Y Z AA AB AC E AD@2 E@2 AE@2 ~@4 AF@4 ~@2 AG AH
  AI AH AJ AK
>`.pickRestart({
  A: "~@4 bb4 ~ a4 g4 ~ f4 a4 g4@2 f4 ~ eb4 g4 f4 ~ eb4 d4@2 f4 [d4,eb4]", // Ebmaj7
  B: "[c4 [a3,bb3] [f3,g3] eb3 d3@3 ~@8 ab3@11 ~ g3@11 ~ gb3@6 f3@6 d3@7 ~@4 ab3@10]/3", C: "~@2 g3@11 gb3@6 f3@5",
  D: "~ f3@12 g3@11", E: "f3@12 g3@11 ~", F: "[gb3@46 ~ f3@11 g3@11 ~ f3@12 g3@11 ~ b3@46 ~@4, ~@93 f3@46 ~@5]/6",
  G: "[~@6 gb4@3 eb4@3 gb4@2 eb4@3 [gb4,c5]@11 ~@20]/2", // Gbdim
  H: "[~@4 ab3@11 ~ g3@11 ~ gb3@6 f3@5 f3@11 ~ g3@11 ~ f3@11 g3@11 ~ gb3@5 d4@5]/4", I: "~ db4@11 ~ b3@11",
  J: "[a3@11 ~ f3@11 g3@11 ~ f3@11 g3@11 ~ f3@45 ~@17]/5", K: "~@5 gb4 eb4 gb4", L: "eb4@2 ~ gb4@11 ~@10",
  M: "~@13 ab3@11", N: "~ g3@11 gb3@6 f3@6", O: "bb2 ~@5 bb2 ~ bb2 ~ bb2 ~ ab2 ~@5 bb2 ~ bb2 ~ bb2 ~",
  P: "bb2 ~@5 bb2 ~ bb2 ~ bb2 ~ ab2 ~ ab2 ~ ab2 ~ bb2 ~ bb2 ~ bb2 ~",
  Q: "ab2 ~@5 ab2 ~ ab2 ~ ab2 ~ ab2 ~@5 ab2 ~ ab2 ~ ab2 ~",
  R: "ab2 ~@5 ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~",
  S: "a3@2 ~@4 [f2,a3] ~ [f2,a3] ~ [f2,a3] ~ [f2,bb3] ~@5 [f2,bb3] ~ [f2,bb3] ~ [f2,bb3] ~, f2 ~@23", // F Bb5
  T: "[f2,a3] ~@5 [f2,a3] ~ [f2,a3] ~ [f2,a3] ~ [f2,bb3] ~ [f2,bb3] ~ [f2,bb3] ~ [f2,a3] ~ [f2,a3] ~ [f2,a3] ~", // F Bb5 F
  U: "[bb2,bb3] ~@5 [bb2,bb3] ~ [bb2,bb3] ~ [bb2,bb3] ~ [ab2,ab3] ~@5 [bb2,bb3] ~ [bb2,bb3] ~ [bb2,bb3] ~", // Bb Ab Bb
  V: "[bb2,bb3] ~@5 [bb2,bb3] ~ [bb2,bb3] ~ [bb2,bb3] ~ [ab2,ab3] ~ [ab2,ab3] ~ [ab2,ab3] ~ [bb2,bb3] ~ [bb2,bb3] ~ [bb2,bb3] ~", // Bb Ab Bb
  W: "[ab2,ab3,c4] ~@5 [ab2,ab3,c4] ~ [ab2,ab3,c4] ~ [ab2,ab3,c4] ~ [ab2,ab3,c4] ~@5 [ab2,ab3,c4] ~ [ab2,ab3,c4] ~ [ab2,ab3,c4] ~", // Ab
  X: "[ab2,ab3,c4] ~@5 [ab2,ab3,c4] ~ [ab2,ab3,c4] ~ [ab2,ab3,c4] ~ [ab2,ab3,c4] ~ [ab2,ab3,c4] ~ [ab2,ab3,c4] ~ [ab2,ab3,c4] ~ [ab2,ab3,c4] ~ [ab2,ab3,c4] ~", // Ab
  Y: "d4@17 ~ d4@6", Z: "c4@11 ~ d4@6 eb4@6", AA: "d4@8 ~@4 ab3@11 ~", AB: "g3@12 gb3@6 f3@5 ~", AC: "f3 g3",
  AD: "[gb3@47 ~]/2", AE: "[[f3,b3]@47 ~]/2",
  AF: "[[bb3,c4,eb4,gb4]@47 ~ [gb3,c4]@46 ~@2, ~@47 a3@47 ~@2, ~@48 eb4@43 ~@5]/4", AG: "~ ab3", AH: "g3@2 gb3 f3",
  AI: "d3@7 ~@5 ab3@12", AJ: "d3@4 ~@8 [bb4,d5]!3 [g4,bb4]!3 [f4,g4]!3 [d4,f4]!3", AK: "[bb3,d4] ~@7",
})).s("gm_string_ensemble_1").gain(0.36).pan(0.4)

// other · pizzicato strings · "PIZZICATO"
const pizzicato_strings = note("<~@12 A B C D E ~@11 F G H I ~@28 J@2 K@2 ~@12>".pickRestart({
  A: "~@20 e5 ~@2 c5", B: "~@2 g4 ~@2 f4 ~@2 e4 ~@11 e5 ~@2 c5", C: "~ g4 ~@2 f4 ~@2 e4 ~@11 eb5 ~@2 c5 ~",
  D: "~ a4 ~@2 g4 ~@2 eb4 ~@10 eb5 ~@2 c5 ~@2", E: "a4 ~@2 g4 ~@2 eb4 ~@17", F: "~@8 e5 ~ c5 ~@2 g4 ~@2 f4 ~@2 e4 ~@4",
  G: "~@7 e5 ~ c5 ~@2 g4 ~@2 f4 ~@2 e4 ~@5", H: "~@6 eb5 ~ c5 ~@2 a4 ~@2 g4 ~@2 eb4 ~@6",
  I: "~@5 eb5 ~ c5 ~@2 a4 ~@2 g4 ~@2 eb4 ~@7", J: "e5 ~@2 c5 ~@2 g4 ~@2 f4 ~@2 e4 ~@11",
  K: "eb5 ~@2 c5 ~@2 a4 ~@2 g4 ~@2 eb4 ~@11",
})).s("gm_pizzicato_strings").gain(0.3).pan(0.4)

// other · pizzicato strings · "PIZZICATO"
const pizzicato_strings_2 = note("<~@12 A B C D E ~@11 F G H I ~@28 J@2 K@2 ~@12>".pickRestart({
  A: "~@20 e4 ~@2 c4", B: "~@2 g3 ~@2 f3 ~@2 e3 ~@11 e4 ~ c4 ~", C: "~ g3 ~@2 f3 ~@2 e3 ~@11 eb4 ~@2 c4 ~",
  D: "~ a3 ~@2 g3 ~@2 eb3 ~@10 eb4 ~@2 c4 ~@2", E: "a3 ~@2 g3 ~@2 eb3 ~@17", F: "~@8 e4 ~ c4 ~@2 g3 ~@2 f3 ~@2 e3 ~@4",
  G: "~@7 e4 ~ c4 ~@2 g3 ~@2 f3 ~@2 e3 ~@5", H: "~@6 eb4 ~ c4 ~@2 a3 ~@2 g3 ~@2 eb3 ~@6",
  I: "~@5 eb4 ~ c4 ~@2 a3 ~@2 g3 ~@2 eb3 ~@7", J: "e4 ~@2 c4 ~@2 g3 ~@2 f3 ~@2 e3 ~@11",
  K: "eb4 ~@2 c4 ~@2 a3 ~@2 g3 ~@2 eb3 ~@11",
})).s("gm_pizzicato_strings").gain(0.35).pan(0.6)

// other · orchestral harp · "HARP"
const orchestral_harp = note("<~ A ~@15 B ~@2 C ~ D ~ E ~@7 F G ~@33 H I J ~@4 K L>".pickRestart({
  A: "eb4 f4 [g4,a4] [bb4,c5] d5 ~@19", B: "~@14 eb4 [f4,a4] [c5,eb5] [gb5,a5] ~@6",
  C: "~@12 eb4 [f4,g4] [a4,bb4] [c5,d5] ~@8", D: "~@10 gb4 a4 [db5,d5] [e5,gb5] a5 ~@9",
  E: "~@8 d4 f4 [g4,bb4] [d5,f5] g5 ~@11", F: "~@23 eb4", G: "f4 [a4,c5] [eb5,gb5] a5 ~@20",
  H: "~@20 eb4 gb4 bb4 [c5,eb5]", I: "[gb5,bb5] ~@19 eb4 f4 a4 [c5,eb5]", J: "[gb5,a5] ~@23",
  K: "~@12 d5!3 bb4!3 g4!3 f4!3", L: "d4 ~@23",
})).s("gm_orchestral_harp").gain(0.28)

// other · orchestral harp · "HARP" · soft notes
const orchestral_harp_soft = note("<A ~@16 B ~@2 C ~ D ~ E ~@7 F ~@34 G@2 ~@7>".pickRestart({
  A: "~@11 d4", B: "~@6 c4 ~@5", C: "~@5 d4 ~@6", D: "~@4 d4 ~@7", E: "~@3 bb3 ~@8", F: "~@21 c4@2 ~", G: "~@9 c4 ~@2",
})).s("gm_orchestral_harp").gain(0.11)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ 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 U AA AB AC Y AD AE AF AG AH AI AH AI AH AI AH AI AH AI AH AI AJ
  F AK AL AM F AN AO AJ F AN AO AJ F AN AO AJ F AP AQ AJ F AN AO AJ F AR@2
>`.pickRestart({
  A: "~@4 x ~@4 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2", B: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@4 x ~@2 x",
// … 35 more lines

More by Buddy Holly