Strudelify
December 1963 (Oh What a Night) cover art

Stay Just a Little Bit Longer

December 1963 (Oh What a Night)

Frankie Valli

KeyD majorTempo107 bpm
0:00/0:00
// December 1963 (Oh What a Night) — Frankie Valli
// 107 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 96 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(107/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.

// bass · synth bass 1 · "bass"
const bass = note(`<
  ~@10 A B C B C B C B C B C B D@2 E@5 F G H I H I H I H J K L M N O P Q R H I H I H I H S@2 T@7 U V U V U V U V W X Y X
  Z AA AB AC U V U V U V U V U V U V U V AD AE ~
>`.pickRestart({
  A: "~@8 a2 ~ a1@3 ~ b1@2 ~@2 c#2@2 ~@2 d2@3 ~ d2 ~ e2@2 ~@2",
  B: "e2 ~ f#2@4 ~@2 g2@2 g2@2 ~@2 g2@4 ~@2 g2 ~ g2@3 ~ g2 ~ g2@3 ~",
  C: "g2 ~ a2@4 ~@2 a2 ~ a1@3 ~ b1@2 ~@2 c#2@2 ~@2 d2@3 ~ d2 ~ e2@2 ~@2",
  D: "[g2 ~ a2@4 ~@2 a2 ~ a1@3 ~ b1@2 ~@2 c#2@2 ~@2 e2@33 ~@9]/2",
  E: "[~@19 g2@2 a2@2 b2@22 ~@3 d3@8 a2@14 ~@2 b2@2 a2@2 f#2@2 ~@2 a2@2 ~@2 b2@2 ~@3 e2@26 ~@2 e2@2 f#2@2 g2@26 ~@3 a2@2 ~@2 a2@6]/5",
  F: "e2@2 ~ a1 ~ a2@3 e2 ~@2 a1 ~ a2@2 ~", G: "e2@2 ~@5 a1@6 ~@2 a1@4 b1@2 ~@2 c#2@2 ~@2 d2@3 ~ d2",
  H: "~ e2@2 ~@2 e2 ~ f#2@4 ~@2 g2@2 g2@2 ~@2 g2@4 ~@2 g2 ~ g2@3 ~ g2",
  I: "~ g2@3 ~ g2 ~ a2@4 ~@2 a2 ~ a1@3 ~ b1@2 ~@2 c#2@2 ~@2 d2@3 ~ d2",
  J: "~ g2@3 ~ g2 ~ a2@4 ~@2 a2 ~ a1@3 ~ b1@2 ~@2 c#2@2 ~@2 b1@2 ~@2 b1",
  K: "~ b1@2 ~@2 f#1 ~ a1@2 ~@2 b1@2 ~@2 b1 ~ b1@2 ~@2 f#1 ~ a1@2 ~@2 b1@2 ~@2 b1",
  L: "~ d2@2 ~@2 d2 ~ e2@6 ~@2 e3 ~ d3 ~ e3 ~ d3 ~ b2 ~@3 b1@2 ~@2 b1",
  M: "~ b1@2 ~@2 f#1@2 a1@2 ~@2 b1@2 ~@2 b1 ~ b1@2 ~@2 f#1@2 a1@2 ~@2 b1@2 ~@2 b1",
  N: "~ d2@2 ~@2 d2 ~ e2@6 ~@2 e3 ~ d3 ~ e3 ~ d3 ~ b2 ~@3 e2@4 ~", O: "~ e2@2 ~@8 e2@4 ~@2 e2@2 ~@8 f#2@4 ~",
  P: "~ f#2@2 ~@8 f#2@4 ~@2 f#2@2 ~@8 g2@4 ~", Q: "~ g2@2 ~@8 g2@4 ~@2 g2@2 ~@8 a2@2 b2 ~ c#3",
  R: "~ e3@2 f#3@2 c#3@2 e3@2 f#3@2 a3@2 ~@2 b3@2 c4@2 c#4@4 ~@4 d2@3 ~ d2",
  S: "[~ g2@3 ~ g2 ~ a2@4 ~@2 a2 ~ a1@3 ~ b1@2 ~@2 c#2@2 ~@2 e2@33 ~@4]/2",
  T: "[~@24 g2@2 a2@2 b2@22 ~@3 d3@8 a2@14 ~@2 b2@2 a2@2 f#2@2 ~@2 a2@2 ~@2 b2@2 ~@2 e2@26 ~@3 e2@2 f#2@2 g2@26 ~@3 a2@2 ~@2 a2@6 e2@4 ~@2 a1@2 ~@2 a2@6 e2@2 ~@4 a1@2 ~@2 a2@4 ~@2 e2@2 ~@4 a1@6 ~@3 a1@4 b1@2 ~@2 c#2@2 ~@2]/7",
  U: "d2@3 ~ d2 ~ e2@2 ~@2 e2 ~ f#2@4 ~@2 g2@2 g2@2 ~@2 g2@4 ~@2 g2 ~",
  V: "g2@3 ~ g2 ~ g2@3 ~ g2 ~ a2@4 ~@2 a2 ~ a1@3 ~ b1@2 ~@2 c#2@2 ~@2",
  W: "b1@2 ~@2 b1 ~ b1@2 ~@2 f#1 ~ a1@2 ~@2 b1@2 ~@2 b1 ~ b1@2 ~@2 f#1 ~ a1@2 ~@2",
  X: "b1@2 ~@2 b1 ~ d2@2 ~@2 d2 ~ e2@6 ~@2 e3 ~ d3 ~ e3 ~ d3 ~ b2 ~@3",
  Y: "b1@2 ~@2 b1 ~ b1@2 ~@2 f#1@2 a1@2 ~@2 b1@2 ~@2 b1 ~ b1@2 ~@2 f#1@2 a1@2 ~@2", Z: "e2@2 ~ e2 ~@4 e2@2 ~ e2 ~@4",
  AA: "f#2@2 ~ f#2 ~@4 f#2@2 ~ f#2 ~@4", AB: "g2@2 ~ g2 ~@4 g2@2 ~ g2 ~@4",
  AC: "a2@2 b2 ~ c#3 ~ e3@2 f#3@2 c#3@2 e3@2 f#3@2 a3@2 ~@2 b3@2 c4@2 c#4@4 ~@4",
  AD: "d2@3 ~ d2 ~ e2@2 ~@2 e2 ~ f#2@4 ~@2 g2@2 g2@2 ~@2 g2@4 ~@4", AE: "~@20 a1@3 ~ d2@3 ~ b1@2 d2@2",
})).s("gm_synth_bass_1").gain(0.42).pan(0.4)

// chords · piano
const piano = note(`<
  ~@2 A B C D E B C D E B C D E B C D E B C D F@4 G H I J K@8 L M N M O P Q R S ~@7 T U@8 V W X Y V W X Y Z AA Z AA AB
  AC AD AE V W X Y V W X Y V W X Y V W AF AG@2
>`.pickRestart({
  A: "~@22 [d2,f#3,a3,d4]@4 d2@2 d2@2 e2 ~, ~@7 [g3,b3,d4]", // D G
  B: "e2 [f#2,f#3,a3,d4]@4 [g2,g3,b3,d4] ~ [g2,g3,b3,d4]@2 g2!2 [g2,b3,d4,g4]@2 g2!3, ~@7 [b3,d4,g4]", // D G
  C: "g#2@2 [a2,a3,d4,f#4]@6 a2@2 a2@2 a2@2 [a2,a3,b3,d4]@3 ~ [a2,a3,c#4,e4]@2 a2@2 [d2,f#3,a3,d4]@4 d2@2 d2@2 e2 ~, ~@5 [a3,c#4,e4]@2 ~@7 [g3,b3,d4]@2", // D Bm7 A D A G
  D: "e2 [f#2,f#3,a3,d4]@4 [g2,g3,b3,d4] ~ [g2,g3,b3,d4]@2 g2!2 [g2,g3,b3,d4]@2 g2!3, ~@7 [g3,b3,d4]", // D G
  E: "g#2@2 [a2,g3,b3,d4]@6 a2@2 [a2,e3,a3,c#4]@2 a2@2 [e3,a3,c#4]@4 a2@2 a2@2 [d2,f#3,a3,d4]@4 d2@2 d2@2 e2 ~, ~@7 a2 ~@6 [g3,b3,d4]@2", // G A D G
  F: "[g#2@2 [a2,g3,b3,d4]@6 a2@2 [a2,e3,a3,c#4]@2 a2@2 [e3,a3,c#4]@4 a2@2 a2@2 [e2,g3,b3,d4]@8 [g3,b3,d4]@6 [g3,b3,d4]@2 e3@2 [g3,b3,d4]@4 e3@2 ~ [g3,b3,d4]@8 [g2,g3,b3,d4]@8 [g3,b3,d4]@6 g2@2 g2@2 [g3,b3,d4]@4 g2@2 [g3,b3,d4]@8 [b2,a3,d4,f#4]@8 [a3,d4,f#4]@8 ~ b2@2 [a3,d4,f#4]@4 b2@2 [a3,d4,f#4]@8 [a2,a3,c#4,e4]@8, ~@7 a2 ~@56]/4", // G A Em7 G Bm7 D A
  G: "[a3,c#4,e4]@8 [a3,c#4,e4]@2 [a2,a3,c#4,e4]@6 [a2,a3,c#4,e4]@8 ~ [e2,g3,b3,d4]@7", // A Em7
  H: "~ [g3,b3,d4]@8 e2@2 ~@2 e2@4 [g3,b3,e4]@4 e2@2 f#2@2 [g2,g3,b3,d4]@7, ~@11 [g3,b3,d4]@4 ~@17", // G Em G
  I: "~ [g3,b3,d4]@8 g2@2 [g2,g3,b3,d4]@6 ~ [g3,b3,d4]@8 [a2,a3,c#4,f#4]@6", // G F#m
  J: "[a2,g3,b3,e4]@4 ~@4 a2@2 [a2,a3,c#4,f#4]@6 [a2,g3,b3,e4]@4 ~@4 a2 ~ [a2,a3,c#4,f#4]@5 ~", // Em F#m Em F#m
  K: "[[a2,g3,b3,e4]@5 ~@2 [a2,b3,d4,g4]@7 ~ [b3,d4,g4]@3 ~ [a3,d4,f#4]@3 ~ [a3,c#4,e4]@3 ~ [d2,f#3,a3,d4]@4 d2@2 d2@2 e2 ~ e2@2 [f#2,f#3,a3,d4]@8 [g2,g3,b3,d4]@2 ~@2 [g2,g3,b3,d4]@4 g2@2 g2@2 [g2,b3,d4,g4]@4 g2@2 g2@2 g2@2 g#2@2 [a2,a3,d4,f#4]@6 a2@2 a2@2 a2@2 [a2,a3,b3,d4]@3 ~ [a2,a3,c#4,e4]@2 a2@2 [d2,f#3,a3,d4]@4 d2@2 d2@2 e2 ~ e2@2 [f#2,f#3,a3,d4]@8 [g2,g3,b3,d4]@2 ~@2 [g2,g3,b3,d4]@4 g2@2 g2@2 [g2,g3,b3,d4]@4 g2@2 g2@2 g2@2 g#2@2 [a2,g3,b3,d4]@6 a2@2 [a2,e3,a3,c#4]@2 a2@2 [e3,a3,c#4]@4 a2@2 a2@2 [d2,f#3,a3,d4]@4 d2@2 d2@2 e2 ~ e2@2 [f#2,f#3,a3,d4]@8 [g2,g3,b3,d4]@2 ~@2 [g2,g3,b3,d4]@4 g2@2 g2@2 [g2,b3,d4,g4]@4 g2@2 g2@2 g2@2 g#2@2 [a2,a3,d4,f#4]@6 a2@2 a2@2 a2@2 [a2,a3,b3,d4]@3 ~ [a2,a3,c#4,e4]@2 a2@2 [d2,f#3,a3,d4]@4 d2@2 d2@2 e2 ~ e2@2 [f#2,f#3,a3,d4]@8 [g2,g3,b3,d4]@2 ~@2 [g2,g3,b3,d4]@4 g2@2 g2@2 [g2,g3,b3,d4]@4 g2, ~@33 [g3,b3,d4]@6 ~@26 [b3,d4,g4]@4 ~@10 [a3,c#4,e4]@4 ~@14 [g3,b3,d4]@4 ~@28 [g3,b3,d4]@4 ~@14 a2@2 ~@12 [g3,b3,d4]@6 ~@26 [b3,d4,g4]@4 ~@10 [a3,c#4,e4]@4 ~@14 [g3,b3,d4]@4 ~@27]/8", // Em G D A D G D Bm7 …
  L: "~ g2@2 g2@2 g#2@2 [a2,g3,b3,d4]@6 a2@2 [a2,e3,a3,c#4]@2 a2@2 [e3,a3,c#4]@4 a2@2 a2@2 [b2,d3,f#3,b3] ~@4, ~ [g3,b3,d4]@4 ~@14 a2@2 ~@11", // G A Bm G
  M: "~ [b2,d3,f#3,b3] ~@3 f#2 ~ a2 ~@3 [b2,d3,f#3,b3] ~@5 [b2,d3,f#3,b3] ~@3 f#2 ~ a2 ~@3 [b2,d3,f#3,b3] ~@4", // Bm
  N: "~ [d3,f#3,a3,d4] ~@5 [e3,g#3,b3,e4]@7 ~ [e3,e4] ~ [d3,d4] ~ [e3,e4] ~ [d3,d4] ~ [b2,b3] ~@3 [b2,d3,f#3,b3] ~@4", // D E D E D B Bm
  O: "~ [d3,f#3,a3,d4] ~@5 [e3,g#3,b3,e4]@7 ~ [e3,e4] ~ [d3,d4] ~ [e3,e4] ~ [d3,d4] ~ [b2,b3] ~@3 [e2,b3,d4,g4]@5", // D E D E D B Em7
  P: "~ [e2,b3,d4,g4]@2 ~@8 [e2,b3,d4,g4]@4 ~@2 [e2,b3,d4,g4]@2 ~@8 [f#2,c#4,e4,a4]@5", // Em7 F#m7
  Q: "~ [f#2,c#4,e4,a4]@2 ~@8 [f#2,c#4,e4,a4]@6 [f#2,c#4,e4,a4]@2 ~@8 [g2,b3,d4,f#4]@5", // F#m7 Gmaj7
  R: "~ [g2,b3,d4,f#4]@2 ~@8 [g2,b3,d4,f#4]@6 [g2,b3,d4,f#4]@2 ~@8 [a2,b3,d4,g4]@4 ~", // Gmaj7 G
  S: "~ [a2,b3,d4,g4]@2 ~@4 [a2,b3,d4,g4]@18 ~@7", T: "~@27 [e2,g3,b3,d4]@5",
  U: "[~@3 [g3,b3,d4]@6 [g3,b3,d4]@2 e3@2 [g3,b3,d4]@4 e3@2 [g3,b3,d4]@8 ~ [g2,g3,b3,d4]@8 [g3,b3,d4]@6 g2@2 g2@2 [g3,b3,d4]@4 g2@2 [g3,b3,d4]@8 [b2,a3,d4,f#4]@8 [a3,d4,f#4]@8 b2@2 ~ [a3,d4,f#4]@4 b2@2 [a3,d4,f#4]@8 [a2,a3,c#4,e4]@8 [a3,c#4,e4]@8 [a3,c#4,e4]@2 [a2,a3,c#4,e4]@6 [a2,a3,c#4,e4]@8 [e2,g3,b3,d4]@8 ~ [g3,b3,d4]@8 e2@2 ~@2 e2@4 [g3,b3,e4]@4 e2@2 f#2@2 [g2,g3,b3,d4]@8 [g3,b3,d4]@8 g2@2 [g2,g3,b3,d4]@6 [g3,b3,d4]@8 ~ [a2,a3,c#4,f#4]@6 [a2,g3,b3,e4]@4 ~@4 a2@2 [a2,a3,c#4,f#4]@6 [a2,g3,b3,e4]@4 ~@4 a2 ~ [a2,a3,c#4,f#4]@5 ~ [a2,g3,b3,e4]@5 ~ [a2,b3,d4,g4]@7 ~@2 [b3,d4,g4]@3 ~ [a3,d4,f#4]@3 ~ [a3,c#4,e4]@3 ~, ~@36 [g3,b3,d4] ~@27]/8", // G Bm7 D A Em7 G Em G …
  V: "[d2,f#3,a3,d4]@4 d2@2 d2@2 e2 ~ e2@2 [f#2,f#3,a3,d4]@8 [g2,g3,b3,d4]@2 ~@2 [g2,g3,b3,d4]@4 g2@2 g2@2, ~@3 [g3,b3,d4]@3 ~@10", // D G
  W: "[g2,b3,d4,g4]@4 g2@2 g2@2 g2@2 g#2@2 [a2,a3,d4,f#4]@6 a2@2 a2@2 a2@2 [a2,a3,b3,d4]@3 ~ [a2,a3,c#4,e4]@2 a2@2, ~@3 [b3,d4,g4]@2 ~@5 [a3,c#4,e4]@2 ~@4", // G D Bm7 A G A
  X: "[d2,f#3,a3,d4]@4 d2@2 d2@2 e2 ~ e2@2 [f#2,f#3,a3,d4]@8 [g2,g3,b3,d4]@2 ~@2 [g2,g3,b3,d4]@4 g2@2 g2@2, ~@3 [g3,b3,d4]@2 ~@11", // D G
  Y: "[g2,g3,b3,d4]@2 g2!3 g#2 [a2,g3,b3,d4]@3 a2 [a2,e3,a3,c#4] a2 [e3,a3,c#4]@2 a2!2, ~@3 [g3,b3,d4]@2 ~@7 a2 ~@3", // G A G
  Z: "[b2,d3,f#3,b3] ~@5 [b2,d3,f#3,b3] ~@3 f#2 ~ a2 ~@3 [b2,d3,f#3,b3] ~@5 [b2,d3,f#3,b3] ~@3 f#2 ~ a2 ~@3", // Bm
  AA: "[b2,d3,f#3,b3] ~@5 [d3,f#3,a3,d4] ~@5 [e3,g#3,b3,e4]@7 ~ [e3,e4] ~ [d3,d4] ~ [e3,e4] ~ [d3,d4] ~ [b2,b3] ~@3", // Bm D E D E D B
  AB: "[e2,b3,d4,g4]@3 [e2,b3,d4,g4] ~@4 [e2,b3,d4,g4]@2 ~ [e2,b3,d4,g4] ~@4", // Em7
  AC: "[f#2,c#4,e4,a4]@3 [f#2,c#4,e4,a4] ~@4 [f#2,c#4,e4,a4]@3 [f#2,c#4,e4,a4] ~@4", // F#m7
  AD: "[g2,b3,d4,f#4]@3 [g2,b3,d4,f#4] ~@4 [g2,b3,d4,f#4]@3 [g2,b3,d4,f#4] ~@4", // Gmaj7
  AE: "[a2,b3,d4,g4]@2 ~ [a2,b3,d4,g4] ~@2 [a2,b3,d4,g4]@9 ~", // G
  AF: "[d2,f#3,a3,d4]@4 d2@2 d2@2 e2 ~ e2@2 [f#2,f#3,a3,d4]@8 [g2,g3,b3,d4]@2 ~@2 [g2,g3,b3,d4]@4 ~@4, ~@3 [g3,b3,d4]@2 ~@11", // D G
  AG: "[~@20 [a1,a3,c#4,a4]@4 [d2,d4,f#4,d5]@4 [b1,b3,e4,b4] ~ [d2,d4,f#4]@2 ~@32, ~@15 d5@17]/2", // A D E5 D
})).s("gm_piano").gain(0.27)

// chords · brass section · "brass1"
const brass_section = note("<~@39 A@2 B@2 C@3 ~@25 D E F G H I J ~ K L M N K O M N P O M N Q R M ~@2>".pickRestart({
  A: "[~@11 [b2,b3] ~ [b2,b3]@2 [d3,d4]@2 [e3,e4]@2 [f#3,f#4]@2 [c#4,c#5]@2 [b3,b4]@2 [a3,a4]@2 [b3,b4]@18 [b3,b4]@2 [e4,e5]@10 ~@7]/2", // B D E F# C# B A B …
  B: "[~@11 [b2,b3]@2 [b2,b3] ~ [d3,d4]@2 [e3,e4]@2 [f#3,f#4]@2 [c#4,c#5] ~ [b3,b4]@2 [a3,a4]@2 [b3,b4]@14 ~@4 [b3,b4]@2 [e4,e5]@8 ~@9]/2", // B D E F# C# B A B …
  C: "[~@15 b2@4 d3@4 f#3@4 e3@8 c#3@8 a2@8 a3@8 f#3@20 d3@6 b2@6 ~@5]/3",
  D: "~@16 [b2,b3] ~ [b2,b3]@2 [d3,d4]@2 [e3,e4]@2 [f#3,f#4]@2 [c#4,c#5]@2 [b3,b4]@2 [a3,a4]@2", // B D E F# C# B A
  E: "[b3,b4]@9 [b3,b4] [e4,e5]@5 ~", // B E
  F: "~@16 [b2,b3] ~ [b2,b3]@2 [d3,d4]@2 [e3,e4]@2 [f#3,f#4]@2 [c#4,c#5]@2 [b3,b4]@2 [a3,a4] ~", // B D E F# C# B A
  G: "[b3,b4]@7 ~@2 [b3,b4] [e4,e5]@4 ~@2", H: "~@5 b2 d3 f#3", I: "e3 c#3 a2 a3", J: "f#3@10 d3@3 b2@3",
  K: "[d3,a3,d4,f#4]@5 ~ [e3,a3,e4,g4]@2 ~@4 [f#3,f#4,a4]@7 ~ [g3,a3,g4,b4]@2 ~@2 [g3,a3,g4,b4] ~@7", // D A7 F#m G
  L: "[g3,b3,d4]@6 [g3,b3,d4] ~@5 [f#3,a3,d4]@7 ~ [e3,a3,c#4] ~@11", // G D A
  M: "[d3,a3,d4,f#4]@5 ~ [e3,a3,e4,g4]@2 ~@4 [f#3,f#4,a4]@7 ~ [g3,a3,g4,b4]@2 ~@2 [g3,a3,g4,b4]@2 ~@6", // D A7 F#m G
  N: "[g3,b3,d4]@5 ~ [g3,b3,d4]@2 ~@4 [f#3,a3,d4]@7 ~ [e3,a3,c#4]@2 ~@10", // G D A
  O: "[g3,b3,d4]@5 ~ [g3,b3,d4] ~@5 [f#3,a3,d4]@7 ~ [e3,a3,c#4] ~@11", // G D A
  P: "[d3,a3,d4,f#4]@6 [e3,a3,e4,g4]@2 ~@4 [f#3,f#4,a4]@7 ~ [g3,a3,g4,b4]@2 ~@2 [g3,a3,g4,b4]@2 ~@6", // D A7 F#m G
  Q: "[d3,a3,d4,f#4]@6 [e3,a3,e4,g4] ~@5 [f#3,f#4,a4]@7 ~ [g3,a3,g4,b4]@2 ~@2 [g3,a3,g4,b4]@2 ~@6", // D A7 F#m G
  R: "[g3,b3,d4]@5 ~ [g3,b3,d4]@2 ~@4 [f#3,a3,d4]@7 ~ [e3,a3,c#4] ~@11", // G D A
})).s("gm_brass_section").gain(0.24).pan(0.4)

// other · alto sax · "sax"
const alto_sax = note("<~@39 A@2 B@2 C@4 ~@24 D E F G H I J K ~@8 L@2 ~@5 M@2>".pickRestart({
  A: "[~@11 [b2,b3] ~ [b2,b3] ~ [d3,d4]@2 [e3,e4]@2 [f#3,f#4]@2 [c#4,c#5]@2 [b3,b4]@2 [a3,a4]@2 [b3,b4]@18 [b3,b4] ~ [e4,e5]@10 [d4,d5] ~ [f#4,f#5] [e4,e5] [d4,d5] ~ [b3,b4]]/2", // B D E F# C# B A B …
  B: "[~@11 [b2,b3] ~ [b2,b3] ~ [d3,d4] ~ [e3,e4] ~ [f#3,f#4] ~ [c#4,c#5] ~ [b3,b4] ~ [a3,a4] ~ [b3,b4]@14 ~@4 [b3,b4]@2 [e4,e5]@8 ~@2 [e4,e5] ~ [e4,e5] [d4,d5] [e4,e5] ~@2]/2", // B D E F# C# B A B …
  C: "[~@15 b2@4 d3@4 f#3@4 e3@8 c#3@8 a2@8 a3@8 f#3@20 d3@6 b2@6 a2@26 ~@11]/4",
  D: "~@16 [b2,b3] ~ [b2,b3] ~ [d3,d4]@2 [e3,e4]@2 [f#3,f#4]@2 [c#4,c#5]@2 [b3,b4]@2 [a3,a4]@2", // B D E F# C# B A
  E: "[b3,b4]@18 [b3,b4] ~ [e4,e5]@10 [d4,d5] ~", // B E D
  F: "[f#4,f#5] [e4,e5] [d4,d5] ~ [b3,b4] ~@11 [b2,b3] ~ [b2,b3] ~ [d3,d4] ~ [e3,e4] ~ [f#3,f#4] ~ [c#4,c#5] ~ [b3,b4] ~ [a3,a4] ~", // F# E D B D E F# C# …
  G: "[b3,b4]@14 ~@4 [b3,b4]@2 [e4,e5]@8 ~@2 [e4,e5] ~", H: "[e4,e5] [d4,d5] [e4,e5] ~@17 b2@4 d3@4 f#3@4",
  I: "e3 c#3 a2 a3", J: "f#3@10 d3@3 b2@3", K: "a2@13 ~@3", L: "[a3@31 ~]/2",
  M: "[~@21 [a3,a4]@3 ~ [d4,d5]@2 ~@2 [b3,b4] ~ [d4,d5]@2 ~@31]/2", // A D B D
})).s("gm_alto_sax").gain(0.19).pan(0.3)

// chords · electric guitar clean · "guitar"
const electric_guitar_clean = note(`<
  ~@15 A ~ A ~ A ~ A B@2 C@3 ~ D@3 E@6 F@2 G H G I J K L M N O N O N O N P@2 Q@3 ~ R@3 S@8 T U T V W X Y Z AA AB AA AB
  AA AB AA AB AA AB AA AB AA AB AA ~@2
>`.pickRestart({
  A: "~@7 b4@2 a4@7, ~@5 d5@4 ~@7", B: "[~@13 d3@2 ~@17, ~@22 d3@3 b3@23 ~@16, ~@23 g3@25 ~@16]/2",
  C: "[~@27 b3@21 ~@12 a3@22 ~@14, ~@23 b4@24 ~@9 a4@28 ~@12, ~@24 f#4@23 ~@10 e4@26 ~@13, ~@26 d4@22 ~@11 c#4@24 ~@13]/3",
  D: "[~@13 [b3,e4]@8 [b3,e4]@8 [b3,e4]@6 [b3,e4]@8 ~@5]/3", E: "[~@19 b4@4 a4@14 ~@27, ~@15 d5@8 ~@41]/2",
  F: "[~@19 b4@4 a4@14 ~@22 [b3,d4,f#4] ~@4, ~@15 d5@8 ~@41]/2", // Bm
  G: "~ [b3,d4,f#4] ~@3 [b3,d4,f#4] ~ [b3,d4,f#4] ~@3 [b3,d4,f#4] ~@5 [b3,d4,f#4] ~@9 [b3,d4,f#4] ~@4", // Bm
  H: "~ [b3,d4,f#4] ~@5 [b3,e4,g#4]@5 ~@3 [b3,e4,g#4] ~@5 [b3,e4,g#4] ~@5 [b3,d4,f#4] ~@4", // Bm E Bm
  I: "~ [b3,d4,f#4] ~@5 [b3,e4,g#4]@5 ~@3 [b3,e4,g#4] ~@3 [b3,e4,g#4] ~ [b3,e4,g#4] ~@5 [b3,d4,g4] ~@4", // Bm E G
  J: "~ [b3,d4,g4] ~@5 [b3,d4,g4] ~@3 [b3,d4,g4] ~@3 [b3,d4,g4] ~@3 d4 ~ [b3,d4,g4] ~@5 [c#4,e4,a4]@3 ~@2", // G A
  K: "~ [c#4,e4,a4] ~@5 [c#4,e4,a4] ~@3 [c#4,e4,a4]@3 ~@3 e4 ~ [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3 [f#3,b3,d4]@3 ~@2", // A Bm
  L: "~ [f#3,b3,d4] ~@5 [f#3,b3,d4] ~@3 [f#3,b3,d4]@3 ~@3 b3 ~ [f#3,b3,d4] ~@3 [f#3,b3,d4] ~@3 [b3,e4,g4] ~@4", // Bm Em
  M: "~ [b3,e4,g4] ~@5 [b3,e4,g4] ~@5 [b3,e4,g4] ~@5 [b3,e4,g4] ~@3 [b3,e4] ~@3 [a3,d4] ~@4", // Em E5 D5
  N: "~ [a3,d4,f#4] ~@11 [d4,g4]@2 [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~@12", // D G5 G
  O: "~@13 [g3,b3,d4] ~ [g3,b3,e4]@10 ~@2 [a3,d4] ~@4", // G Em D5
  P: "[~@13 [g3,b3,d4] ~ [g3,b3,e4]@10 ~@6 d3@4 ~@29, ~@27 d3@4 ~@33, ~@28 g3@25 ~@11, ~@29 b3@23 ~@12]/2", // G Em
  Q: "[~@32 b3@21 ~@12 a3@22 ~@9, ~@28 b4@24 ~@9 a4@28 ~@7, ~@29 f#4@23 ~@10 e4@26 ~@8, ~@31 d4@22 ~@11 c#4@24 ~@8]/3",
  R: "[~@30 [b3,e4]@16 ~ [b3,e4]@16 [b3,e4]@12 [b3,e4]@16 ~@5]/3", S: "[~@12 b4@2 a4@7 ~@11, ~@5 d5@2 ~@9]/2",
  T: "[b3,d4,f#4] ~@5 [b3,d4,f#4] ~@3 [b3,d4,f#4] ~ [b3,d4,f#4] ~@3 [b3,d4,f#4] ~@5 [b3,d4,f#4] ~@9", // Bm
  U: "[b3,d4,f#4] ~@5 [b3,d4,f#4] ~@5 [b3,e4,g#4]@5 ~@3 [b3,e4,g#4] ~@5 [b3,e4,g#4] ~@5", // Bm E
  V: "[b3,d4,f#4] ~@5 [b3,d4,f#4] ~@5 [b3,e4,g#4]@5 ~@3 [b3,e4,g#4] ~@3 [b3,e4,g#4] ~ [b3,e4,g#4] ~@5", // Bm E
  W: "[b3,d4,g4] ~@5 [b3,d4,g4] ~@5 [b3,d4,g4] ~@3 [b3,d4,g4] ~@3 [b3,d4,g4] ~@3 d4 ~ [b3,d4,g4] ~@5", // G
  X: "[c#4,e4,a4]@3 ~@3 [c#4,e4,a4] ~@5 [c#4,e4,a4] ~@3 [c#4,e4,a4]@3 ~@3 e4 ~ [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3", // A
  Y: "[f#3,b3,d4]@3 ~@3 [f#3,b3,d4] ~@5 [f#3,b3,d4] ~@3 [f#3,b3,d4]@3 ~@3 b3 ~ [f#3,b3,d4] ~@3 [f#3,b3,d4] ~@3", // Bm
  Z: "[b3,e4,g4] ~@5 [b3,e4,g4] ~@5 [b3,e4,g4] ~@5 [b3,e4,g4] ~@5 [b3,e4,g4] ~@3 [b3,e4] ~@3", // Em E5
  AA: "[a3,d4,f#4] ~@5 [a3,d4,f#4] ~@5 [a3,d4,f#4] ~@5 [b3,d4,g4] ~ [b3,d4,g4] ~@3 [b3,d4,g4] ~@7", // D G
  AB: "[b3,d4,g4] ~@5 [b3,d4,g4] ~@5 [c#4,e4,a4] ~@5 [c#4,e4,a4] ~ [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@7", // G A
})).s("gm_electric_guitar_clean").gain(0.37).pan(0.7)

// chords · brass section · "brass2"
const brass_section_2 = note("<~@38 A B C B D ~@28 E F E G ~@4 H I H I H I H I H I H I H I H J ~>".pickRestart({
  A: "~@27 [b2,b3,f#4,b4]@2 ~@3", // B5
  B: "~ [b2,b3,f#4,b4]@2 ~@8 [b2,b3,f#4,b4]@2 ~@4 [b2,b3,f#4,b4]@2 ~@8 [b2,b3,f#4,b4]@2 ~@3", // B5
  C: "~ [d3,d4,f#4,b4]@2 ~@4 [e3,e4,g#4,b4]@8 [e4,e5] ~ [d4,d5] ~ [e4,e5] ~ [d4,d5] b3 b4 ~@3 [b2,b3,f#4,b4]@2 ~@3, ~@15 g#4@12 ~@5, ~@15 b4@6 ~@11", // Bm E D E D B5
  D: "~ [d3,d4,f#4,b4]@2 ~@4 [e3,e4,g#4,b4]@8 [e4,e5] ~ [d4,d5] ~ [e4,e5] ~ [d4,d5] ~ [b3,b4] ~@8, ~@15 g#4@12 ~@5, ~@15 b4@6 ~@11", // Bm E D E D B
  E: "[b2,b3,f#4,b4] ~@2 [b2,b3,f#4,b4] ~@4 [b2,b3,f#4,b4] ~@2 [b2,b3,f#4,b4] ~@4", // B5
  F: "[b2,b3,f#4,b4]@2 ~@4 [d3,d4,f#4,b4]@2 ~@4 [e3,e4,g#4,b4]@8 [e4,e5] ~ [d4,d5] ~ [e4,e5] ~ [d4,d5] b3 b4 ~@3, ~@5 g#4@3, ~@10 b4@3 ~@3", // B5 Bm E D E D
  G: "[b2,b3,f#4,b4]@2 ~@4 [d3,d4,f#4,b4]@2 ~@4 [e3,e4,g#4,b4]@8 [e4,e5] ~ [d4,d5] ~ [e4,e5] ~ [d4,d5] ~ [b3,b4] ~@3, ~@5 g#4@3, ~@10 b4@3 ~@3", // B5 Bm E D E D B
  H: "[d3,a3,d4,f#4]@5 ~ [e3,a3,e4,g4] ~@5 [f#3,f#4,a4]@7 ~ [g3,a3,g4,b4] ~@3 [g3,a3,g4,b4] ~@7", // D A7 F#m G
  I: "[g3,b3,d4]@5 ~ [g3,b3,d4] ~@5 [f#3,a3,d4]@7 ~ [e3,a3,c#4] ~@11", // G D A
  J: "~@20 [a3,c#5,f#5,a5]@3 ~ [d4,f#5,a5,d6]@3 ~ [b3,e5,g5,b5]@2 [d4,f#5,a5,d6]@2", // F#m D Em D
})).s("gm_brass_section").gain(0.28).pan(0.6)

// chords · string ensemble 1 · "strings"
const string_ensemble_1 = note("<~@22 A@2 ~@6 B@2 ~@10 C@5 ~@7 D@2 ~@6 E@2 ~@11 F G H I ~@17>".pickRestart({
  A: "[~@22 [e3,b3,d4]@31 ~@11]/2", B: "[~@15 [a4,a5]@4 [d5,d6]@4 [b4,b5]@2 [d5,d6]@4 [b4,b5]@2 [a4,a5]@4 ~@29]/2",
  C: "[~@27 [b3,d4,g4]@32 [c#4,e4,a4]@32 [d4,f#4,b4]@32 [a2,a3,e4,a4]@28 ~@9, ~@27 e2@28 ~@4 f#2@28 ~@4 g2@28 ~@41]/5", // G A Bm A5
  D: "[~@27 [e3,b3,d4]@31 ~@6]/2", E: "[~@19 [a4,a5]@4 ~ [d5,d6]@4 [b4,b5]@2 [d5,d6]@4 [b4,b5]@2 [a4,a5]@4 ~@24]/2",
  F: "[b3,d4,g4], e2@7 ~", G: "[c#4,e4,a4], f#2@7 ~", H: "[d4,f#4,b4], g2@7 ~", I: "[a2,a3,e4,a4]@7 ~",
})).s("gm_string_ensemble_1").gain(0.32).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  A B C B C B C B C B C B C B C B C B C B C B D E F G H I J K L@2 M L M L M L M N@8 L M L M L M L M O P Q R S T U V W X
  W X W X W X G@8 W X W X W X W X W X W X W X W Y ~
>`.pickRestart({
  A: "~@11 x ~@4", B: "~@3 x ~@7 x ~@3 x", C: "~@2 x!2 ~@7 x ~@4", D: "~@2 x!2 ~@7 x ~@3 x",
  E: "~@7 x ~@7 x ~@7 x ~@7 x", F: "~@7 x ~@7 x ~@7 x ~@8", G: "x!4", H: "x ~@7 x ~@8 x ~@7 x ~@6",
  I: "~ x ~@7 x ~@7 x ~@7 x ~@6", J: "~ x ~@8 x ~@7 x ~@7 x ~@5", K: "~@10 x ~@16 x ~@4", L: "~@11 x ~@15 x ~@4",
  M: "~@3 x ~@5 x ~ x ~@15 x ~@4", N: "~@3 x ~@7 x ~@7 x ~@7 x ~@4", O: "~@3 x ~@7 x ~@8 x ~@7 x ~@3",
  P: "~ x ~ x ~ x ~ x", Q: "~@4 x ~@8 x ~@7 x ~@7 x ~@2", R: "~@5 x ~@7 x ~@7 x ~@8 x ~", S: "~@3 x ~@3 x ~@3 x ~@3 x",
  T: "~@6 x ~@7 x ~@8 x ~@7 x", U: "~@15 x ~@15 x", V: "~ x", W: "x!2", X: "x ~@3 x ~@2 x!2 ~@7", Y: "~@21 x ~@7 x ~@2",
})).gain(0.39).pan(0.4)

// drums · snare
const snare = s("sd").struct("<A B@21 C ~@7 D E@24 ~@7 F G@31 H ~>".pickRestart({
  A: "~@15 x", B: "~@7 x ~@7 x", C: "~@7 x ~@8", D: "~@15 x ~@3 x ~ x ~ x ~@8", E: "~@3 x ~@15 x ~@12",
  F: "~@10 x ~ x!3 ~", G: "~ x ~ x", H: "~@21 x ~@3 x ~@3 x ~ x",
})).gain(0.39).pan(0.4)

// drums · clap
const clap = s("cp").struct(`<
  ~@46
  [~@27 x ~ x ~@2]
  [~@3 x ~ x ~@13 x ~@7 x ~ x ~@2]!7
  [~@3 x ~ x ~@13 x ~@12]
  ~@36
  [~ x ~ x]!3
  ~@2
>`).gain(0.29).pan(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@29 A B ~@15 C ~@14 D E ~@15 F ~@15 G ~>".pickRestart({
  A: "~ x ~@7 x ~@6", B: "~@3 x ~@28", C: "~@23 x ~ x ~@6", D: "~@7 x ~@15 x ~@8", E: "~ x ~@2", F: "~@14 x!2",
// … 82 more lines

More by Frankie Valli