Strudelify

Calendar Girl

Neil Sedaka

KeyE majorTempo120 bpm
0:00/0:00
// Calendar Girl — Neil Sedaka
// 120 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 81 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 clean · "E. R. Trimble"
const electric_guitar_clean = note(`<
  ~ A B C D E D F G H I J K L M N O P Q E R S T U V W X D Y Z AA AB AC AD AE AF R AG AH AI AJ AK Z AL AM AN AO D AP AQ
  AR AS AT AU AV AW V E AX AY AZ L BA BB D BC BD BE AT BF BG BH BI BJ BK BL AC BM BN BO ~
>`.pickRestart({
  A: "~@6 [b3,e4,g#4]@4 [b3,e4,g#4] ~@7 [b3,e4,g#4] ~@5", // E
  B: "~@6 [e4,g#4]@4 [e4,g#4] ~@7 [c#4,e4,g#4] ~@5, ~@6 c#4 ~@17", // E C#m
  C: "~@6 [b3,e4,g#4]@3 ~ [b3,e4,g#4] ~@5 [e4,g#4]@2 [g#3,b3,e4,g#4] ~@5", // E
  D: "~@6 [c#4,e4,g#4]@4 [c#4,e4,g#4] ~@7 [c#4,e4,g#4] ~@5", E: "~@6 [b3,e4,g#4]@4 g#4 ~@7 [b3,e4,g#4] ~@5",
  F: "~@6 [c#4,e4,a4]@4 [e4,a4] ~@5 [d#4,f#4]@2 [d#4,f#4,b4] ~@5", G: "[b3,e4,g#4] ~@11",
  H: "~@6 [b3,e4,g#4]@4 [b3,e4,g#4] ~@5 b3@2 [b3,e4,g#4] ~@5, ~@2 g#3@3 ~@7", // E
  I: "~@6 [b3,e4,g#4]@4 [b3,g#4] ~@5 b3@2 [e4,g#4] ~@5", // E
  J: "~@4 c#4@2 [c#4,e4,g#4]@4 [c#4,g#4] ~@5 e4@2 [c#4,e4,g#4] ~@5", // C#m C#5 C#m
  K: "~@4 g#4@2 [g#3,c#4,e4,g#4]@4 [c#4,g#4] ~@7 [c#4,e4,g#4] ~@5", // C#m C#5 C#m
  L: "~@6 [g#3,b3,e4,g#4]@4 [e4,g#4] ~@7 [b3,e4,g#4] ~@5", M: "~@6 [e4,g#4]@4 [b3,g#4] ~@5 b3@2 [g#3,e4,g#4] ~@5",
  N: "~@6 [c#4,e4,g#4]@4 [c#4,g#4] ~@5 c#4@2 [c#4,e4,g#4] ~@5", // C#m C#5 C#m
  O: "~@6 [g#3,c#4,e4,g#4]@4 [c#4,e4,g#4] ~@5 c#4@2 [c#4,e4,g#4] ~@5", // C#m
  P: "~@4 e4@2 [c#4,e4,a4]@4 [c#4,a4] ~@7 [c#4,e4,a4] ~@5", // A F#m A
  Q: "~@6 [c#4,e4,a#4]@4 [e4,a#4] ~@5 c#4@2 [g3,c#4,e4,a#4] ~@5", // A#dim Edim Gdim
  R: "~@6 [b3,f4,g#4]@4 [b3,f4,g#4] ~@7 [b3,f4,g#4] ~@5", // Fdim
  S: "~@6 [c#4,f#4,a#4]@4 [f#4,a#4] ~@5 c#4@2 [c#4,f#4,a#4] ~@5", T: "~@6 [d#4,f#4,b4]@4 b4 ~@7 [d#4,f#4,b4]@2 ~@4",
  U: "[g#3,b3]@2 ~@4 [g#3,b3,e4,g#4]@4 [e4,g#4] ~ [c#4,e4,a4]@4 ~@2 [a3,c#4,e4,a4]@3 ~@3", V: "[g#3,b3,e4,g#4] ~@11",
  W: "~@6 [b3,e4,g#4]@4 g#4 ~@5 e4@2 [b3,e4,g#4] ~@5", X: "~@4 b3@2 [b3,e4,g#4]@4 [e4,g#4] ~@7 [e4,g#4] ~@5",
  Y: "~@6 [g#3,c#4,e4,g#4]@4 [c#4,g#4] ~@7 [c#4,e4,g#4] ~@5", Z: "~@6 [b3,e4,g#4]@4 [e4,g#4] ~@7 [b3,e4,g#4] ~@5",
  AA: "~@6 [b3,e4,g#4]@4 [e4,g#4] ~@7 [e4,g#4] ~@5", AB: "~@6 [c#4,e4,g#4]@4 [e4,g#4] ~@7 [c#4,e4,g#4] ~@5",
  AC: "~@6 [c#4,e4,g#4]@4 g#4 ~@7 [c#4,e4,g#4] ~@5", AD: "~@6 [a3,c#4,e4,a4]@4 a4 ~@5 c#4@2 [c#4,e4,a4] ~@5",
  AE: "~@6 [g3,c#4,e4,a#4]@4 [c#4,e4,a#4] ~@7 [c#4,e4,a#4] ~@5", // Gdim A#dim
  AF: "~@4 b3@2 [g#3,b3,e4,g#4]@4 [e4,g#4] ~@5 b3@2 [g#3,b3,e4,g#4] ~@5", // E
  AG: "~@6 [c#4,f#4,a#4]@4 [f#4,a#4] ~@7 [c#4,f#4,a#4] ~@5", AH: "~@6 [d#4,f#4,b4]@4 [d#4,b4] ~@7 [d#4,f#4,b4] ~@5",
  AI: "~@4 b3@2 [b3,e4,g#4]@3 ~@3 [a3,c#4,e4,a4]@4 ~@2 [a3,c#4,e4,a4]@3 ~@3", AJ: "[b3,e4,g#4] ~@7",
  AK: "~@6 [b3,e4,g#4]@4 [e4,g#4] ~@7 [g#3,b3,e4,g#4] ~@5, ~@2 g#3@3 ~@7", // E
  AL: "~@6 [c#4,e4,g#4]@4 [c#4,g#4] ~@7 [c#4,e4,g#4] ~@5", AM: "~@6 [c#4,e4,g#4]@4 [c#4,g#4] ~@7 [c#4,e4] ~@5",
  AN: "~@6 [b3,e4,g#4]@4 [b3,e4,g#4] ~@5 b3@2 [b3,e4,g#4] ~@5", // E
  AO: "~@4 b3@2 [b3,e4,g#4]@4 [a#3,e4,g#4] ~@7 [b3,e4,g#4] ~@5", // E A#m7b5 E
  AP: "~@4 c#4@2 [c#4,e4,g#4]@4 [e4,g#4] ~@7 [g#3,c#4,e4,g#4] ~@5", // C#m E C#m
  AQ: "~@6 [c#4,e4,a4]@4 [c#4,a4] ~@5 c#4@2 [c#4,e4,a4] ~@5", // A F#m A
  AR: "~@6 [g3,c#4,e4,a#4]@4 [e4,a#4] ~@5 c#4@2 [c#4,e4,a#4] ~@5", AS: "~@6 [b3,e4,g#4]@4 ~@6 b3@2 [b3,e4,g#4] ~@5",
  AT: "~@6 [b3,f4,g#4]@4 [b3,g#4] ~@7 [b3,f4,g#4] ~@5", AU: "~@6 [c#4,f#4,a#4]@4 [c#4,a#4] ~@7 [c#4,f#4,a#4]@2 ~@4",
  AV: "~@6 [b3,d#4,f#4,b4]@4 b4 ~@7 [d#4,f#4,b4] ~@5", AW: "~@2 [b3,e4,g#4] ~ [a3,c#4,e4,a4] ~ [a3,c#4,e4,a4] ~",
  AX: "~@6 [b3,e4,g#4]@4 [e4,g#4] ~@7 [g#3,b3,e4,g#4] ~@5", AY: "~@6 [g#3,c#4,e4,g#4]@4 [e4,g#4] ~@7 [c#4,e4,g#4] ~@5",
  AZ: "~@6 [g#3,c#4,e4,g#4]@4 [c#4,e4,g#4] ~@7 [c#4,e4,g#4] ~@5", // C#m
  BA: "~@4 b3@2 [b3,e4]@4 g#4 ~@7 [b3,e4,g#4] ~@5, ~@2 g#4 ~@5", // E5 E
  BB: "~@6 [g#3,c#4,e4,g#4]@4 [e4,g#4] ~@7 [g#3,c#4,e4,g#4] ~@5", // C#m E C#m
  BC: "~@6 [a3,c#4,e4,a4]@4 [e4,a4] ~@7 [a3,c#4,e4,a4] ~@5", // A A5 A
  BD: "~@4 c#4@2 [c#4,e4,a#4]@4 [e4,a#4] ~@7 [c#4,e4,a#4] ~@5", // A#dim Edim A#dim
  BE: "~@6 [b3,e4,g#4]@4 [g#3,b3,e4,g#4] ~@7 [b3,e4,g#4] ~@5", BF: "~@6 [c#4,f#4,a#4]@4 a#4 ~@7 [c#4,f#4,a#4]@2 ~@4",
  BG: "~@6 [d#4,f#4,b4]@4 [d#4,f#4,b4] ~@7 [d#4,f#4,b4]@2 ~@4", // B
  BH: "~@4 b3@2 [b3,e4,g#4]@3 ~@3 [a3,c#4,e4,a4]@3 ~@3 [c#4,e4,a4]@3 ~@3", BI: "[g#3,b3,e4,g#4] ~@7",
  BJ: "~@6 [b3,g#4]@4 [b3,g#4] ~@7 [g#3,b3,e4,g#4] ~@5", BK: "~@6 [c#4,e4,g#4]@4 [e4,g#4] ~@5 c#4@2 [c#4,e4,g#4] ~@5",
  BL: "~@6 [b3,e4,g#4]@4 [e4,g#4] ~@5 b3@2 [e4,c#5] ~@5", // E C#m
  BM: "~@4 b3@2 [b3,e4,g#4]@3 ~ [b3,e4,g#4] ~@7 [b3,e4,g#4] ~@5", // E
  BN: "~@6 [e4,g#4]@4 c#4 ~@5 c#4@2 [c#4,e4,g#4]@2 ~@4, ~@2 c#4 ~@5", // E C#m
  BO: "~@6 [a3,c#4,e4,a4]@3 ~@7 d#4@2 [b3,d#4,f#4,b4] ~@3 [b3,e4,g#4]@2", // A B E
})).s("gm_electric_guitar_clean").gain(0.17).pan(0.4)

// chords · electric guitar clean · "E. R. Trimble" · soft notes
const electric_guitar_clean_2 = note(`<
  ~ A B C D E@2 F G H E I J K L M N O P Q R S T U ~ V W D X E Y E Z AA AB AC AD AE AF AG ~ AH E AI E AJ AK E AL AM AN AO
  V AN AP AQ ~ E Z AR X AS AT AU AV AW AX E AY AZ BA BB ~ BC E BD I BE BF BG ~
>`.pickRestart({
  A: "~@4 g#3@6 g#3 ~@5 [g#3,b3]@3 ~@5", B: "~@2 g#3@3 ~@3 [c#4,e4,g#4] ~@3", C: "~@4 g#3@5 ~ g#3 ~@5 [g#3,b3]@2 ~@6",
  D: "~@4 g#3@6 ~@6 [g#3,c#4]@3 ~@5", E: "~@4 g#3@6 ~@6 g#3@3 ~@5", F: "~@2 a3@3 ~@3 b3 ~@3, ~@2 c#4 ~@9",
  G: "g#3 ~@11", H: "~@8 g#3 ~@3", I: "~@2 g#3@3 ~@3 c#4 ~@3", J: "~@4 [c#4,e4]@2 ~@10 [g#3,c#4]@3 ~@5",
  K: "~@4 g#3@2 ~@4 b3 ~@5 [g#3,b3]@3 ~@5", L: "~@4 b3@5 ~@7 g#3@3 ~@5", M: "~@4 g#3@6 g#3 ~@13",
  N: "~@4 [g#3,c#4]@2 ~@4 g#3 ~@5 g#3@3 ~@5", O: "~@2 c#4 ~@5 c#4 ~@3", P: "~@4 c#4@2 g3@5 ~@13",
  Q: "~@4 b3@2 ~@10 [g#3,b3]@3 ~@5, e3@5 ~@7", R: "~@4 [b3,f4]@2 ~@4 g#3 ~@5 b3@2 ~@6, g#3@5 ~@7",
  S: "~@4 c#4@2 a#3@5 ~@13", T: "~@2 d#4 ~@5 d#4 ~@3", U: "e4 ~@5 a3@2 ~@4", V: "~@2 g#3@3 ~@3 b3 ~@3",
  W: "~@4 g#3@7 ~@5 [g#3,b3]@2 ~@6", X: "~@4 c#4@2 ~@10 g#3@3 ~@5", Y: "~@4 g#3@6 ~@6 g#3@2 b3 ~@5",
  Z: "~@2 g#3 g#3@2 ~@3 g#3 ~@3", AA: "~@2 e4 ~@9, [a3,c#4] ~@3", AB: "~@4 c#4@2 ~@10 g3@3 ~@5", AC: "e3@5 ~@3 g#3 ~@3",
  AD: "~@2 b3 ~@5 b3 ~@3, g#3@5 ~@7", AE: "~@4 c#4@2 a#3@4 ~@6 c#4@2 a#3 ~@5", AF: "~@2 b3@3 ~@3 d#4 ~@3",
  AG: "g#3@2 ~@4 g#3@3 ~ [b3,e4] ~@13", AH: "~@16 g#3@2 ~@4 g#4 ~", AI: "~@4 g#3@6 ~@6 g#3@3 ~@3 g#4 ~",
  AJ: "~@4 g#3@7 ~@13", AK: "~@6 g#3@4 ~@6 g#3@3 ~@5", AL: "~@4 g#3@6 ~@6 g#3@2 ~@4 e4 ~", AM: "~@2 c#4 a3@2 ~@7",
  AN: "~@2 c#4 ~@9", AO: "~@2 g#3@3 ~@7", AP: "~@8 d#4 ~@3", AQ: "~@4 b3@2 g#3@3 ~ [b3,e4] ~@13",
  AR: "~@2 g#3 ~@5 g#3 ~@3", AS: "~@4 g#3@2 ~@10 g#3@3 ~@5", AT: "~@6 g#3@5 ~@5 g#3@2 g#3 ~@5",
  AU: "~@4 g#3@2 ~@10 g#3@2 ~@4 g#4 ~", AV: "~@4 g#3@6 ~@6 g#3@3 ~@3 e4 ~", AW: "~@2 a4 ~@5 c#4 ~@3",
  AX: "~@6 g3@5 ~@5 c#4@2 ~@6", AY: "~@4 g#3@7 ~@5 b3@2 ~@6", AZ: "~@4 c#4@2 ~@4 c#4 ~@13",
  BA: "~@2 f#4 b3@2 ~@3 d#4 ~@3", BB: "~@4 g#3@5 ~ [g#3,b3] ~@13", BC: "~@4 [e3,g#3]@6 g#3 ~@5 g#3@2 ~@6",
  BD: "~@4 [e3,g#3]@6 ~@6 g#3@3 ~@5", BE: "~@4 g#3@7 ~@5 g#3@3 ~@5", BF: "~@4 [c#3,g#3]@6 ~@6 g#3@3 ~@5",
  BG: "~@10 [c#4,e4] ~@5 b3@2 ~@4 g#3@2", // C#m
})).s("gm_electric_guitar_clean").gain(0.06).pan(0.4)

// bass · acoustic bass · "AcouBass"
const bass = note(`<
  ~ A B A B A C D E F G H I J K L M N O P Q R S T U F V H W J X L M N O Y Z AA S T AB F AC H AD J X L AE N O AF AG AH AI
  T AJ F V H AK J X L M N O AL AM AH AN AO AJ A B A B A C AP ~
>`.pickRestart({
  A: "e2@11 ~ b1@11 ~", B: "c#2@9 ~ g#2@4 ~@2 c#3@2 b2@3 ~ g#2@2", C: "c#2@9 ~ c#2@7 ~ e2@5 ~", D: "a1@11 ~ b1@11 ~",
  E: "e2@15 ~ c#3@2 b2@3 ~ g#2@2", F: "e2@5 ~ b1@5 ~", G: "e2@9 ~ b2@5 ~ b2 ~ b1@5 ~", H: "c#2@11 ~ g#2@10 ~@2",
  I: "c#2@9 ~ g#1@2 c#2@3 ~ c#3@2 b2@3 ~ g#2@2", J: "e2@11 ~ b1@10 ~@2", K: "e2@8 ~@2 b2@5 ~ c#3 ~ b2@4 ~@2",
  L: "c#2@9 ~@3 g#2@11 ~", M: "c#2@7 ~@3 c#2@6 ~@2 e2@3 ~ g#2@2", N: "a2@10 ~@2 e2@7 ~@3 a2 ~",
  O: "a#2@11 ~ e2@8 ~@2 a#2 ~", P: "b2@11 ~ g#2@5 ~@5 b2 ~", Q: "c#3@4 ~@2 b2@4 ~@2 g#2@4 ~@2 g2@5 ~",
  R: "f#2@5 ~ e2@5 ~ d#2@5 ~ c#2@5 ~", S: "b1@5 ~ b1@5 ~ c#2@5 ~ d#2@5 ~", T: "e2@5 ~ e2@5 ~ a2@5 ~ a2@3 ~ a2@2",
  U: "e2@6 ~@12 b1@3 ~ d#2@2", V: "e2@9 ~ b2@5 ~ c#3 ~ b2@3 ~ g#2@2", W: "c#2@9 ~ g#2 ~ c#2@3 ~ c#3@2 b2@3 ~ g#2@2",
  X: "e2@8 ~@2 b2@5 ~ c#3 ~ b2@3 ~ g#2@2", Y: "b2@11 ~ g#2@7 ~ d#3 ~ d3 ~",
  Z: "c#3@3 ~ g#2 ~ b2@4 ~@2 g#2@4 ~@2 g2@5 ~", AA: "f#2@5 ~ e2@5 ~ d#2@5 ~ c#2@3 ~ f#2 ~",
  AB: "e2@3 ~@13 c#3 ~ b2@3 ~ g#2@2", AC: "e2@9 ~ b2@5 ~ c#3 ~ g#2@5 ~", AD: "c#2@9 ~ c#2 ~ c#2@3 ~ c#3@2 b2@3 ~ g#2@2",
  AE: "c#2@8 ~@2 c#2 ~ c#2@5 ~ e2@3 ~ g#2 ~", AF: "b2@11 ~ g#2@9 ~ b2 ~",
  AG: "c#3@3 ~ c#3 ~ b2@4 ~@2 g#2@4 ~@2 g#2@4 g2 ~", AH: "f#2@3 ~ f#2 ~ e2@5 ~ d#2@5 ~ c#2@3 ~ c#2 ~",
  AI: "b1@5 ~ b1@5 ~ b1@5 ~ d#2@5 ~", AJ: "e2@13 ~@3 c#3 ~ b2@3 ~ g#2@2", AK: "c#2@9 ~ c#2 ~ c#2@5 ~ b1@5 ~",
  AL: "b2@11 ~ g#2@9 ~ d#3 ~", AM: "c#3@5 ~ c#3@4 ~@2 g#2@4 ~@2 g#2@4 g2 ~", AN: "b1@4 b1 ~ c2@5 ~ c#2@5 ~ d#2@5 ~",
  AO: "e2@11 ~ a2@5 ~ a1@5 ~", AP: "a1@11 ~ b1@9 ~ e2@2",
})).s("gm_acoustic_bass").gain(0.44).pan(0.4)

// chords · piano · "Honkytnk"
const piano = note("<~@41 A B C D E F G H ~@32>".pickRestart({
  A: "[b4,b5,e6]@4 ~@2 [c#5,c#6,e6]@4 [g#4,g#5] ~ [b4,b5,e6]@4 [g#4,g#5] ~ [c#5,c#6,e6]@3 ~ [g#4,g#5] ~", // E5 C#m G# E5 G# C#m G#
  B: "[b4,b5] ~ [g#4,g#5] ~ [b4,b5,e6] ~ [c#5,c#6,e6]@3 ~ [b4,b5,e6]@6 ~@8, e6 ~@11", // B G# E5 C#m E5
  C: "[c#5,c#6,e6]@3 ~ g#4 ~ [d#5,d#6,e6]@4 g#5 ~ [c#5,c#6,e6]@3 ~ g#4 ~ [d#5,d#6,e6]@4 [g#4,g#5] ~", // C#m Emaj7 C#m Emaj7 G#
  D: "[c#5,c#6,e6] ~ g#4@2 c#6 ~ [d#5,d#6,e6]@3 ~ [c#5,c#6,e6]@5 ~@9, ~@2 g#5 ~@21", // C#m Emaj7 C#m
  E: "[b4,b5,e6]@4 g#4 ~ [c#5,c#6,e6]@4 ~@2 [b4,b5,e6]@4 [g#4,g#5] ~ [c#5,c#6,e6]@4 g#5 ~", // E5 C#m E5 G# C#m
  F: "[b5,e6] ~ [g#4,g#5] ~ [b4,b5,e6] ~ [c#5,c#6,e6]@3 ~ [b4,b5,e6]@9 ~@5, b4 ~@11", // E5 G# E5 C#m E5
  G: "[c#5,c#6,e6]@4 g#5 ~ [d#5,d#6,e6]@4 [g#4,g#5] ~ [c#5,c#6,e6]@3 ~ [g#4,g#5] ~ [d#5,d#6,e6]@4 [g#4,g#5] ~", // C#m Emaj7 G# C#m G# Emaj7 G#
  H: "~@4 [c#5,c#6,e6] ~ [d#5,d#6,e6]@3 ~ [c#5,c#6,e6]@7 ~@7", // C#m Emaj7 C#m
})).s("gm_piano").gain(0.38).pan(0.4)

// chords · piano · "Honkytnk" · soft notes
const piano_soft = note("<~@41 A ~ B C D ~ E ~@33>".pickRestart({
  A: "~@4 [g#4,g#5] ~@19", B: "~@4 g#5 ~@5 g#4 ~@5 g#5 ~@7", C: "~@4 c#5 ~@19", D: "~@4 g#5 ~@5 [g#4,g#5] ~@11 g#4 ~",
  E: "~@4 g#4 ~@19",
})).s("gm_piano").gain(0.22).pan(0.4)

// chords · vibraphone · "Vibes"
const vibraphone = note(`<
  ~ A@2 B@2 C@2 D@2 E ~ F ~ G ~ H I J@2 K@2 L M N O P ~ Q R P ~ S I J@2 K@2 L M N O T@2 U@2 V@4 J@2 K@2 L M N W X Y Z AA
  X Y Z I J@2 K@2 L M N AB A@2 B@2 C@2 D@2
>`.pickRestart({
  A: "[~@2 [e4,g#4] [e4,g#4]@2 [e4,g#4] [e4,g#4]@2 [e4,g#4] [e4,g#4]@2 [e4,g#4] [d#4,f#4]@2 [e4,g#4] [d#4,f#4]@2 [c#4,e4]@7, g#3, b3@12 c#4@5 ~@7]/2", // E D#m E D#m C#m
  B: "[~@3 [e4,g#4]@6 [e4,g#4]@3 [d#4,f#4]@2 [e4,g#4] [d#4,f#4]@2 [c#4,e4]@7, g#3, b3@12 c#4@5 ~@7]/2", // E D#m E D#m C#m
  C: "[~@2 [e4,g#4] [e4,g#4]@2 [e4,g#4] [e4,g#4]@2 [e4,g#4] [e4,g#4]@2 [e4,g#4] [d#4,f#4]@2 [e4,g#4] [d#4,f#4]@2 [c#4,e4]@5 ~@2, g#3@11 ~, b3@12 c#4@5 ~@7]/2", // E D#m E D#m C#m
  D: "[[e3,a3,c#4]@6 [f#3,b3,d#4]@5 [g#3,b3,e4]@2 ~@11]/2", // A B E
  E: "[b3,e4,g#4,e5]@2 [b3,e4,g#4,e5] [b3,e4,g#4,e5]@2 [b3,e4,g#4,e5]@2 ~@5", // E
  F: "[c#4,e4,g#4,e5]@2 [c#4,e4,g#4,e5] [c#4,e4,g#4,e5]@2 [c#4,e4,g#4,e5] ~@6", G: "[b3,e4,g#4,e5] ~@7",
  H: "[c#4,e4,g#4,e5]@2 [c#4,e4,g#4,e5] ~@9", I: "~@2 [c#4,e4,g#4] [g#3,c#4,e4]", J: "[[a3,e4] [a#3,g4], [e3,c#4]]/2",
  K: "[[b3,e4,g#4] [b3,f4,g#4], g#3]/2", L: "~@3 [a#3,c#4,e4,a#4]@2 [a#3,c#4,f#4,a#4] [a#3,c#4,e4,a#4]@2 ~@4",
  M: "~@3 [a3,b3,d#4,a4]@2 [a3,b3,e4,a4] [a3,b3,d#4,a4]@2 ~@4", // B7 Asus2 B7
  N: "~@3 [b3,e4,g#4,b4]@2 [b3,e4,g#4,b4] [c#4,e4,a4,c#5]@2 [c#4,e4,a4,c#5] [c#4,e4,a4,c#5]@3", O: "[b3,e4,g#4,b4] ~@3",
  P: "[b3,e4,g#4,e5] ~@5", Q: "[c#4,e4,g#4,e5] ~@5", R: "~@3 [c#4,e4,g#4,e5]",
  S: "[g#3,c#4,e4,g#4]@2 [g#3,c#4,e4,g#4] ~@9", T: "[e3,g#3,b3,e4]/2", U: "[e3,g#3,c#4,e4]/2",
  V: "[[g#3,b3,e4]@8 [g#3,c#4,e4]@6 [c#4,e4,g#4] [g#3,c#4,e4], e3@7 ~]/4", W: "[b3,e4,g#4,b4]@3 ~@8 [e4,g#4,b4,e5]",
  X: "[e4,g#4,b4,e5]@2 [e4,g#4,b4,e5] ~@9", Y: "~@11 [e4,g#4,c#5,e5]", Z: "[e4,g#4,c#5,e5]@2 [e4,g#4,c#5,e5] ~@9",
  AA: "~@11 [e4,g#4,b4,e5]", AB: "[b3,e4,g#4,b4] ~@5",
})).s("gm_vibraphone").gain(0.3).pan(0.4)

// chords · string ensemble 1 · "Strings1"
const string_ensemble_1 = note(`<
  ~ A@2 B@2 C@2 D@2 ~@7 E F@2 G@2 ~@11 E F@2 G@2 ~@4 H@2 I@2 J@4 F@2 G@2 ~@11 E F@2 G@2 ~@4 A@2 B@2 C@2 K ~
>`.pickRestart({
  A: "[b3@3 c#4@2 ~, [e3,g#3]@13 ~@3]/2", B: "[b3@4 c#4@3 ~, [e3,g#3]@43 ~@5]/2",
  C: "[b3@24 c#4@17 ~@7, [e3,g#3]@7 ~]/2", D: "[[e3,a3,c#4]@12 [f#3,d#4]@10 [g#3,e4]@3 ~@23, ~@6 b3@7 ~@11]/2",
  E: "~@2 [c#4,e4,g#4] [g#3,c#4,e4]", F: "[[a3,e4] [a#3,g4], [e3,c#4]]/2", G: "[[b3,e4] [c#4,f4], [g#3,g#4]]/2",
  H: "[e3,g#3,b3,e4]/2", I: "[e3,g#3,c#4,e4]/2",
  J: "[[g#3,b3,e4]@8 [g#3,c#4,e4]@6 [c#4,e4,g#4] [g#3,c#4,e4], e3@7 ~]/4", // E C#m
  K: "[e3,a3,c#4]@4 [f#3,b3,d#4]@3 [g#3,b3,e4]", // A B E
})).s("gm_string_ensemble_1").gain(0.22).pan(0.4)

// other · glockenspiel · "Glocknspl"
const glockenspiel = note(`<
  ~@2 A B C D E F G ~@8 H I J K L M N ~@9 H I J K L M N ~@9 H I J K L M N ~@9 H I J K L M N ~@2 A B C D E O ~
>`.pickRestart({
  A: "~@6 b6@3 ~ e6@3 ~@3 b6@2 g#6@2 ~@4", B: "b6 ~@7", C: "~@6 e6@3 ~ g#6@2 ~@4 b6 ~ g#6@2 ~@4", D: "b6 ~@11",
  E: "~@6 e6@2 ~@2 g#6@2 ~@4 b6 ~ e7@3 ~@3", F: "c#7@2 ~@10 d#7 ~@5 b6 ~@5", G: "e7 ~@23",
  H: "~@4 c#6 ~ e6@3 ~ a6@3 ~@3 c#7 ~ e7@2 ~@4", I: "~@4 c#6 ~ g6@2 ~@2 a#6@3 ~@3 c#7 ~ e7@2 ~@4",
  J: "~@4 e6@2 g#6@2 ~@2 b6@3 ~@3 e7 ~ g#7@4 ~@2", K: "~@4 f6 ~ g#6@2 ~@2 c#7@3 ~@3 f7 ~ g#7@3 ~@3",
  L: "~@6 b6 ~@9 [e6,e7]@2 ~@6", M: "[d#6,d#7] ~@15 d#7@2 ~@6, ~@16 d#6 ~@7", N: "e6 ~@11, e7 ~@23",
  O: "c#7@2 ~@10 d#7 ~@5 b6 ~@3 e7 ~",
})).s("gm_glockenspiel").gain(0.35).pan(0.3)

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

// drums · snare
const snare = s("sd").struct(`<
  A B C B C B C D E B C B C B C B F B@3 G@3 H I B C B C B C B F B@3 G@3 J I B C B C B C B F B@3 G@3 H I B C B C B C B F
  B@3 G@3 H I B C B C B C D ~
>`.pickRestart({
  A: "~@16 x!3 ~@3 x!2", B: "x ~ x!2 ~ x!2 ~ x!2 ~ x", C: "x ~@3 x ~ x ~@3 x ~ x ~@3 x!3 ~@3 x!2", D: "x ~ x!2 ~ x!7",
  E: "x ~@4 x!2 ~@4 x!2 ~@3 x!3 ~@3 x ~", F: "x ~@3 x ~ x ~@3 x ~ x ~@4 x!2 ~@3 x!2",
  G: "x ~@3 x ~ x ~@3 x ~ x ~@4 x!2 ~ x ~ x ~", H: "x ~@4 x!2 ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~",
  I: "x ~@4 x!2 ~@4 x!2 ~@4 x!2 ~@4 x", J: "x ~ x!10",
})).gain(0.27).pan(0.4)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  A ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ C ~@3 D@3 E F ~ A ~ A ~ A ~ C ~@3 D@3 ~ F ~ A ~ A ~ A ~ C ~@3 D@3 E F ~ A ~ A ~ A ~ C
  ~@3 D@3 E F ~ A ~ A ~ A ~@2
// … 28 more lines

More by Neil Sedaka