Strudelify

Sunny

Neil Sedaka

KeyF♯ minorTempo120 bpm
0:00/0:00
// Sunny — Sedaka Neil
// 120 bpm, 4/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 79 bars on a 16-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 · piano · "MIDI"
const piano = note(`<
  ~@17 A B C D E F G H I J K@2 L M N O P Q R S T U V W X Y Z@2 AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO@2 AP AQ AR@2
  AS AT AU@2 AV@2 AW@2 AX AY AZ BA BB@2
>`.pickRestart({
  A: "[b3,e4]@4 g3@2 [g3,b3,e4]@2 ~@2 [g3,b3,e4]@5 ~, e2@7 ~ e2@8, g3@3 ~@13", // E5 Em
  B: "[f3,b3]@5 ~@3 g2@4 f3@2 g2 ~, g2@3 b3@4 ~, ~@3 f3@3 ~@2", // Fdim
  C: "[c3,b3]@4 ~@2 c3 ~@3 [g3,b3,e4]@4 g3 ~, e4@3 ~ [g3,b3,e4]@4 c3@7 ~", // Cmaj7 Em
  D: "[a3,e4]@2 a3 ~ [a3,e4] ~ a3@2 ~@2 a3@2 [a3,d#4]@2 b2@2, f#2@6 d#4@5 ~@5, ~@8 b2@5 ~@3", // A5 Adim
  E: "[g3,b3,e4]@4 g3 ~ g3@2 ~@2 g3@2 [g3,b3,e4]@2 e2 ~, e2@6 [b3,e4]@5 ~@5, ~@8 e2@5 ~@3", // Em E5
  F: "[g3,b3,f4]@4 g3 ~ g3@2 ~@2 g3@2 [g3,b3,f4]@3 ~, d2@6 [b3,f4]@5 ~@5, ~@8 g2@7 ~", // G7 Bdim
  G: "[b3,e4,g4]@3 ~@3 c3 ~@3 [b3,e4,g4]@2 ~@2 a3 ~, c3@2 [b3,e4,g4]@2 c3@3 ~", // Em
  H: "[a3,e4]@2 [a3,e4]@2 ~@2 a3@2 ~@2 a3 ~ [a3,d#4] ~ b2 ~, f#2@5 ~ d#4@5 ~@5, ~@2 b2 ~", // A5 Adim
  I: "[b3,e4,g4]@3 ~ [b3,e4,g4]@2 e3@2 [b3,e4,g4]@2 e3@2 [b3,e4,g4]@2 e3 ~, e3 ~@3", // Em
  J: "[f4,g4]@2 b3 ~ [b3,f4,g4] ~ [b3,f4,g4]@2 ~@2 [b3,f4,g4] ~ [b3,f4,g4]@2 d3 ~, d3@7 ~ d3@5 ~@3, b3 ~@15", // Fsus2 G7
  K: "[[b3,e4,g4]@3 ~ b3@2 ~@2 b3 ~ b3 ~ b3@2 ~@2 d#4@2 ~@4 c3 ~@3 [d#4,g4]@4 c3 ~, c3@4 [e4,g4]@5 ~ [e4,g4]@4 ~@6 [d#4,g4]@4 ~@8, ~@6 c3@7 ~ c3@7 ~@3 c3@5 ~@3]/2", // Em D# Em D#
  L: "[a3,e4]@3 ~ [a3,e4]@2 ~@2 [a3,e4] ~ a3 ~ a3 ~ f#2 ~, f#2@4 ~@2 f#2@7 ~@3, ~@10 e4@5 ~", M: "[b2,a3,d#4] ~@15",
  N: "[g3,b3,e4]@3 ~ [g3,b3] ~ e3@2 [b3,e4,g4]@2 e3@2 [b3,e4,g4]@2 d3 ~, ~@2 e4 ~@5", // Em G Em
  O: "~@2 g3 ~ [g3,a#3,e4]@2 ~@2 [g3,a#3,e4] ~ [g3,a#3,e4]@4 g3 ~, c3@5 ~ c3@8 ~@2", // Edim
  P: "[c4,f4]@4 g#3@2 [g#3,c4,f4]@2 ~@2 [g#3,c4,f4]@5 ~, f2@7 ~ f2@8, g#3@3 ~@13", // F5 Fm
  Q: "[f#3,c4]@5 ~@3 g#2@4 f#3@2 g#2 ~, g#2@3 c4@4 ~, ~@3 f#3@3 ~@2", // F#dim
  R: "[c#3,c4]@4 ~@2 c#3 ~@3 [g#3,c4,f4]@4 g#3 ~, f4@3 ~ [g#3,c4,f4]@4 c#3@7 ~", // C#maj7 Fm
  S: "[a#3,f4]@2 a#3 ~ [a#3,f4] ~ a#3@2 ~@2 a#3@2 [a#3,e4]@2 c3@2, g2@6 e4@5 ~@5, ~@8 c3@5 ~@3", // A#5 A#dim
  T: "[g#3,c4,f4]@4 g#3 ~ g#3@2 ~@2 g#3@2 [g#3,c4,f4]@2 f2 ~, f2@6 [c4,f4]@5 ~@5, ~@8 f2@5 ~@3", // Fm F5
  U: "[g#3,c4,f#4]@4 g#3 ~ g#3@2 ~@2 g#3@2 [g#3,c4,f#4]@3 ~, d#2@6 [c4,f#4]@5 ~@5, ~@8 g#2@7 ~", // G#7 Cdim
  V: "[c4,f4,g#4]@3 ~@3 c#3 ~@3 [c4,f4,g#4]@2 ~@2 a#3 ~, c#3@2 [c4,f4,g#4]@2 c#3@3 ~", // Fm
  W: "[a#3,f4]@2 [a#3,f4]@2 ~@2 a#3@2 ~@2 a#3 ~ [a#3,e4] ~ c3 ~, g2@5 ~ e4@5 ~@5, ~@2 c3 ~", // A#5 A#dim
  X: "[c4,f4,g#4]@3 ~ [c4,f4,g#4]@2 f3@2 [c4,f4,g#4]@2 f3@2 [c4,f4,g#4]@2 f3 ~, f3 ~@3", // Fm
  Y: "[f#4,g#4]@2 c4 ~ [c4,f#4,g#4] ~ [c4,f#4,g#4]@2 ~@2 [c4,f#4,g#4] ~ [c4,f#4,g#4]@2 d#3 ~, d#3@7 ~ d#3@5 ~@3, c4 ~@15", // F#sus2 G#7
  Z: "[[c4,f4,g#4]@3 ~ c4@2 ~@2 c4 ~ c4 ~ c4@2 ~@2 e4@2 ~@4 c#3 ~@3 [e4,g#4]@4 c#3 ~, c#3@4 [f4,g#4]@5 ~ [f4,g#4]@4 ~@6 [e4,g#4]@4 ~@8, ~@6 c#3@7 ~ c#3@7 ~@3 c#3@5 ~@3]/2", // Fm E Fm E
  AA: "[a#3,f4]@3 ~ [a#3,f4]@2 ~@2 [a#3,f4] ~ a#3 ~ a#3 ~ g2 ~, g2@4 ~@2 g2@7 ~@3, ~@10 f4@5 ~", // A#5
  AB: "[c3,a#3,e4]@4 ~@2 c3 ~@3 a#3 ~ a#3@2 c3 ~, ~@4 [a#3,e4]@4 c3@5 ~@3, ~@5 e4@2 ~", // C7 A#dim
  AC: "[g#3,c4,f4]@3 ~ [g#3,c4] ~ f3@2 [c4,f4,g#4]@2 f3@2 [c4,f4,g#4]@2 d#3 ~, ~@2 f4 ~@5", // Fm G# Fm
  AD: "~@2 g#3 ~ [g#3,b3,f4]@2 ~@2 [g#3,b3,f4] ~ [g#3,b3,f4]@4 g#3 ~, c#3@5 ~ c#3@8 ~@2", // Fdim
  AE: "[c#4,f#4]@4 a3@2 [a3,c#4,f#4]@2 ~@2 [a3,c#4,f#4]@5 ~, f#2@7 ~ f#2@8, a3@3 ~@13", // F#5 F#m
  AF: "[g3,c#4]@5 ~@3 a2@4 g3@2 a2 ~, a2@3 c#4@4 ~, ~@3 g3@3 ~@2", // Gdim
  AG: "[d3,c#4]@4 ~@2 d3 ~@3 [a3,c#4,f#4]@4 a3 ~, f#4@3 ~ [a3,c#4,f#4]@4 d3@7 ~", // Dmaj7 F#m
  AH: "[b3,f#4]@2 b3 ~ [b3,f#4] ~ b3@2 ~@2 b3@2 [b3,f4]@2 c#3@2, g#2@6 f4@5 ~@5, ~@8 c#3@5 ~@3", // B5 Bdim
  AI: "[a3,c#4,f#4]@4 a3 ~ a3@2 ~@2 a3@2 [a3,c#4,f#4]@2 f#2 ~, f#2@6 [c#4,f#4]@5 ~@5, ~@8 f#2@5 ~@3", // F#m F#5
  AJ: "[a3,c#4,g4]@4 a3 ~ a3@2 ~@2 a3@2 [a3,c#4,g4]@3 ~, e2@6 [c#4,g4]@5 ~@5, ~@8 a2@7 ~", // A7 C#dim
  AK: "[c#4,f#4,a4]@3 ~@3 d3 ~@3 [c#4,f#4,a4]@2 ~@2 b3 ~, d3@2 [c#4,f#4,a4]@2 d3@3 ~", // F#m
  AL: "[b3,f#4]@2 [b3,f#4]@2 ~@2 b3@2 ~@2 b3 ~ [b3,f4] ~ c#3 ~, g#2@5 ~ f4@5 ~@5, ~@2 c#3 ~", // B5 Bdim
  AM: "[c#4,f#4,a4]@3 ~ [c#4,f#4,a4]@2 f#3@2 [c#4,f#4,a4]@2 f#3@2 [c#4,f#4,a4]@2 f#3 ~, f#3 ~@3", // F#m
  AN: "[g4,a4]@2 c#4 ~ [c#4,g4,a4] ~ [c#4,g4,a4]@2 ~@2 [c#4,g4,a4] ~ [c#4,g4,a4]@2 e3 ~, e3@7 ~ e3@5 ~@3, c#4 ~@15", // Gsus2 A7
  AO: "[[c#4,f#4,a4]@3 ~ c#4@2 ~@2 c#4 ~ c#4 ~ c#4@2 ~@2 f4@2 ~@4 d3 ~@3 [f4,a4]@4 d3 ~, d3@4 [f#4,a4]@5 ~ [f#4,a4]@4 ~@6 [f4,a4]@4 ~@8, ~@6 d3@7 ~ d3@7 ~@3 d3@5 ~@3]/2", // F#m F F#m F
  AP: "[b3,f#4]@3 ~ [b3,f#4]@2 ~@2 [b3,f#4] ~ b3 ~ b3 ~ g#2 ~, g#2@4 ~@2 g#2@7 ~@3, ~@10 f#4@5 ~", // B5
  AQ: "[c#3,b3,f4] ~@7", // C#7
  AR: "[f#1@4 [a3,c#4,f#4] ~@3 a3 ~ [a3,c#4,f#4]@2 ~@2 b3@2 ~@2 b3 ~ [b3,d4,f#4] ~ b1 ~ [g#3,c#4,f4] ~ g#3@2 g#3 ~ c#2 ~, ~@6 f#1@8 [d4,f#4]@5 ~@7 [c#4,f4]@4 ~@2, ~@16 b1@4 ~@4 c#2@5 ~@3]/2", // F#m Bm C# D C#
  AS: "[a3,c#4,f#4]@2 ~@2 [a3,c#4,f#4]@2 ~@2 [a3,c#4,f#4] ~ [a3,c#4,f#4]@2 a3 ~ [a3,c#4,f#4] ~, f#1@2 ~ f#1@4 ~", // F#m
  AT: "[b3,d4,f#4]@2 b3 ~ [b3,d4,f#4]@2 b1 ~ [g#3,c#4] ~ g#3 ~ [g#3,c#4,f4]@2 c#2@2, b1@5 ~@3 c#2@4 ~@4, ~@4 f4 ~@3", // Bm C#5 C#
  AU: "[[a3,c#4,f#4]@3 ~ [a3,c#4,f#4]@2 ~@2 [a3,c#4,f#4] ~ [a3,c#4,f#4]@3 ~ [b3,d4,f#4]@4 b1@2 [b3,d4,f#4]@2 b1 ~ c#2@2 [g#3,c#4,f4] ~ [g#3,c#4,f4]@2 c#2@2, f#1@2 ~ f#1@4 ~@9]/2", // F#m Bm C#
  AV: "[[a3,c#4,f#4]@2 ~@2 [a3,c#4,f#4]@2 ~@2 [a3,c#4,f#4] ~ [a3,c#4,f#4]@2 ~@6 b3 ~ [b3,f#4]@2 b1@2 [g#3,c#4,f4]@2 ~@2 [g#3,c#4,f4]@2 c#2 ~, f#1@4 ~@2 f#1@8 [b3,d4,f#4]@4 ~@2 d4 ~@11, ~@4 b1 ~ c#2 ~]/2", // F#m B5 C# Bm
  AW: "[~@2 [a3,c#4,f#4] ~ [a3,c#4,f#4]@2 ~@2 [a3,c#4,f#4] ~ [a3,c#4,f#4]@2 f#1 ~@5 b3 ~ [b3,d4,f#4]@2 b1 ~ [c#4,f4] ~ [c#4,f4]@4 c#2 ~, f#1@5 ~ f#1@5 ~@3 [b3,d4,f#4]@4 ~@14, ~@16 b1@4 ~@4 c#2@5 ~@3]/2", // F#m Bm C# Bm
  AX: "[a3,c#4,f#4]@3 ~ [a3,c#4,f#4]@2 ~@2 [a3,c#4,f#4] ~ [a3,c#4,f#4]@3 ~ [f#1,a3,c#4,f#4] ~, f#1@4 ~@2 f#1@7 ~@3", // F#m
  AY: "[d4,f#4]@2 a3 ~ [a3,d4,f#4]@2 b1 ~ [g#3,c#4,f4] ~ [g#3,c#4,f4] ~ [g#3,c#4,f4]@2 c#2 ~, b1 ~ c#2 ~", // D C#
  AZ: "[a3,c#4,f#4]@2 ~@4 f#1 ~@3 [c#4,f#4]@2 a3 ~ [f#1,a3,c#4,f#4] ~, f#1 [a3,c#4,f#4] f#1 ~, ~@10 a3 ~@5", // F#m F#5 F#m
  BA: "[b1,b3,d4,f#4]@4 [b3,d4,f#4]@2 b1@2 [g#3,c#4,f4] ~ [c#4,f4]@2 g#3 ~ c#2@2, ~@8 c#2@5 ~@3, ~@10 g#3 ~@5", // Bm C#
  BB: "[~@6 f#2@23 ~@3, [f#1,f#3,f#4]@29 ~@3]/2", // F#
})).s("gm_piano").gain(0.28)

// bass · fretless bass
const bass = note(`<
  ~ A B C D E F G H I J K L M N E O A B C D P Q G H I J K L M N R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM
  AN I J AO AP E J AQ AR AS AN AT AN AT AN AT AN AT AN AT AN AT AN AT AU@2
>`.pickRestart({
  A: "e2@4 ~@2 e2 ~ e2@5 ~ e2 ~", B: "g2@5 ~ g2 ~ g2@5 ~ g2 ~", C: "c3@5 ~ c3 ~ c3@6 g2 ~",
  D: "f#2@5 ~ f#2 ~ b2@5 ~ b2 ~", E: "e2@5 ~ e2 ~ e2@5 ~ e2 ~", F: "g2@5 ~ g2 ~ g2@6 g2 ~",
  G: "c3@5 ~ c3 ~ c3@5 ~ c3 ~", H: "f#2@5 ~ f#2 ~ b2@5 ~ b1 ~", I: "e2@5 ~ e2 ~ e2@6 e2 ~",
  J: "d2@5 ~ d2 ~ d2@5 ~ d2 ~", K: "c2@5 ~ c2 ~ c2@5 ~ c2 ~", L: "c2@5 ~ c2 ~ c2@4 g2@2 c2@2",
  M: "f#2@5 ~ f#2 ~ f#2@5 ~ f#2@2", N: "b1@3 ~@13", O: "a1@5 ~ a1 ~ b1@5 ~ b1 ~", P: "e2@5 ~ e2 ~ e2@5 ~ d#2 ~",
  Q: "d2@5 ~ d2 ~ g2@6 g2 ~", R: "e2@5 ~ e2 ~ e2@6 d2 ~", S: "c2@6 c2 ~ c2 ~ c2 ~ c2 ~ c2 ~",
  T: "f2@4 ~@2 f2 ~ f2@5 ~ f2 ~", U: "g#2@5 ~ g#2 ~ g#2@5 ~ g#2 ~", V: "c#3@5 ~ c#3 ~ c#3@6 g#2 ~",
  W: "g2@5 ~ g2 ~ c3@5 ~ c3 ~", X: "f2@5 ~ f2 ~ f2@5 ~ f2 ~", Y: "g#2@5 ~ g#2 ~ g#2@6 g#2 ~",
  Z: "c#3@5 ~ c#3 ~ c#3@5 ~ c#3 ~", AA: "g2@5 ~ g2 ~ c3@5 ~ c2 ~", AB: "f2@5 ~ f2 ~ f2@6 f2 ~",
  AC: "d#2@5 ~ d#2 ~ d#2@5 ~ d#2 ~", AD: "c#2@5 ~ c#2 ~ c#2@5 ~ c#2 ~", AE: "c#2@5 ~ c#2 ~ c#2@4 g#2@2 c#2@2",
  AF: "g2@5 ~ g2 ~ g2@5 ~ g2@2", AG: "c2@4 ~@2 c2 ~ c2@5 ~ c2 ~", AH: "f2@5 ~ f2 ~ f2@6 d#2 ~",
  AI: "c#2@6 c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~", AJ: "f#2@4 ~@2 f#2 ~ f#2@5 ~ f#2 ~", AK: "a2@5 ~ a2 ~ a2@5 ~ a2 ~",
  AL: "d3@5 ~ d3 ~ d3@6 a2 ~", AM: "g#2@5 ~ g#2 ~ c#3@5 ~ c#3 ~", AN: "f#2@5 ~ f#2 ~ f#2@5 ~ f#2 ~",
  AO: "g#2@5 ~ g#2 ~ c#3@5 ~ c#2 ~", AP: "f#2@5 ~ f#2 ~ f#2@6 f#2 ~", AQ: "d2@5 ~ d2 ~ d2@4 a2@2 d2@2",
  AR: "g#2@5 ~ g#2 ~ g#2@5 ~ g#2@2", AS: "c#2@3 ~@13", AT: "b1@5 ~ b1 ~ c#2@5 ~ c#2 ~", AU: "[f#1@31 ~]/2",
})).s("gm_fretless_bass").gain(0.4)

// chords · vibraphone
const vibraphone = note(`<
  ~ A B C D B@2 C D B E A F G H A I A B C D B@2 C D B E A F G H A J K L M N L@2 M N L O K P Q R K S T U V W U@2 V W U X
  T Y Z AA T AB T AB T AB T AB T AB T AB T AB AC@2
>`.pickRestart({
  A: "[e4,g4]@15 ~", B: "[g4,b4]@15 ~", C: "[b4,d5]@15 ~", D: "[c#5,e5]@7 ~ [b4,d#5]@7 ~", E: "[f4,b4]@15 ~",
  F: "[d#4,g4]@15 ~", G: "[e4,a4]@15 ~", H: "[d#4,a4] ~@3", I: "[a4,c5]@8 b4@7 ~", J: "[e4,c5]@7 ~", K: "[f4,g#4]@15 ~",
  L: "[g#4,c5]@15 ~", M: "[c5,d#5]@15 ~", N: "[d5,f5]@7 ~ [c5,e5]@7 ~", O: "[f#4,c5]@15 ~", P: "[e4,g#4]@15 ~",
  Q: "[f4,a#4]@15 ~", R: "[e4,a#4]", S: "[f4,c#5]@7 ~", T: "[f#4,a4]@15 ~", U: "[a4,c#5]@15 ~", V: "[c#5,e5]@15 ~",
  W: "[d#5,f#5]@7 ~ [c#5,f5]@7 ~", X: "[g4,c#5]@15 ~", Y: "[f4,a4]@15 ~", Z: "[f#4,b4]@15 ~", AA: "[f4,b4] ~@3",
  AB: "[b4,d5]@8 c#5@7 ~", AC: "[f#4,a4]/2",
})).s("gm_vibraphone").gain(0.22)

// other · string ensemble 1
const string_ensemble_1 = note("<~@49 A ~@3 A ~@2 B C D E D F ~ G ~ G ~ H ~ H ~ G ~ G ~ H ~@3>".pickRestart({
  A: "~@8 [c#4,c#5] ~ [c#4,c#5] ~@5", B: "[c#4,c#5] [b3,b4]", C: "[a3,a4]", D: "[c#4,c#5]", E: "[e4,e5]",
  F: "[b3,b4]@15 ~", G: "c#5@2 c#5 ~@13", H: "c#5 ~ c#5 ~@13",
})).s("gm_string_ensemble_1").gain(0.25)

// other · brass section
const brass_section = note(`<
  ~@17 A B C@2 D E@2 F G H I@2 A J A K ~@14 L M N O@2 P Q R@2 S T U T V W X ~@16
>`.pickRestart({
  A: "e4", B: "g4", C: "[e4@3 d#4, g4 ~]/2", D: "e4@15 ~", E: "[e4,g4]@15 ~", F: "e4@8 d#4@7 ~, a4@15 ~", G: "[e4,g4]",
  H: "[b3,f4]@15 ~", I: "[e4@15 ~ d4@15 ~, b3@31 ~]/2", J: "d#4 ~@15", K: "c4@15 ~", L: "f4", M: "c#4@15 ~",
  N: "~@8 f#4@6 g4 g#4", O: "[a4@3 ~]/2", P: "f#4 f4", Q: "c#4@3 ~@5 f#4@6 g4 g#4", R: "[a4@31 ~]/2", S: "f#4@8 f4@7 ~",
  T: "[f#3,f#4]", U: "[a3,a4]@3 ~", V: "[a3,a4] [d4,d5]", W: "[c#4,c#5]", X: "[b3,b4] ~@7",
})).s("gm_brass_section").gain(0.25)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@17 A@3 B A@3 C D A@2 E F G H I J@3 K J@3 L M J@2 N O P Q R S@3 T S@3 U V S@2 W X Y Z AA Z AB Z AA Z AB Z AA Z AB Z
  AA AC@2
>`.pickRestart({
  A: "~@4 [b3,e4,g4] ~@7 [b3,e4,g4] ~@3", B: "~@4 [c#4,f#4] ~@7 [b3,d#4,f#4] ~@3", C: "~@4 [a3,e4] ~@7 [a3,d#4] ~@3",
  D: "~@4 [g3,b3,e4] ~@7 [b3,e4,g4] ~@3", E: "~@4 [a3,e4,g4] ~@7 [a3,e4,g4] ~@3", F: "~@4 [a3,e4] ~@7 [a3,e4] ~@3",
  G: "[a3,d#4] ~@15", H: "~@4 [g3,b3,e4] ~@7 [g3,b3,e4] ~@3", I: "~@4 [g3,c4,e4] ~@7 [g3,c4,e4] ~@3",
  J: "~@4 [c4,f4,g#4] ~@7 [c4,f4,g#4] ~@3", K: "~@4 [d4,g4] ~@7 [c4,e4,g4] ~@3", L: "~@4 [a#3,f4] ~@7 [a#3,e4] ~@3",
  M: "~@4 [g#3,c4,f4] ~@7 [c4,f4,g#4] ~@3", N: "~@4 [a#3,f4,g#4] ~@7 [a#3,f4,g#4] ~@3",
  O: "~@4 [a#3,f4] ~@7 [a#3,f4] ~@3", P: "[a#3,e4] ~@15", Q: "~@4 [g#3,c4,f4] ~@7 [g#3,c4,f4] ~@3",
  R: "~@4 [g#3,c#4,f4] ~@7 [g#3,c#4,f4] ~@3", S: "~@4 [c#4,f#4,a4] ~@7 [c#4,f#4,a4] ~@3",
  T: "~@4 [d#4,g#4] ~@7 [c#4,f4,g#4] ~@3", U: "~@4 [b3,f#4] ~@7 [b3,f4] ~@3",
  V: "~@4 [a3,c#4,f#4] ~@7 [c#4,f#4,a4] ~@3", W: "~@4 [b3,f#4,a4] ~@7 [b3,f#4,a4] ~@3",
  X: "~@4 [b3,f#4] ~@7 [b3,f#4] ~@3", Y: "[b3,f4] ~@15", Z: "~@4 [a3,c#4,f#4] ~@7 [a3,c#4,f#4] ~@3",
  AA: "~@4 [b3,d4,f#4] ~@7 [g#3,c#4,f4] ~@3", AB: "~@4 [b3,d4,f#4] ~@7 [c#4,f4,g#4] ~@3",
  AC: "[~@5 f#4@21 ~@6, f#2@4 c#4@21 ~@7, ~ c#3@24 ~@7, ~@2 f#3@23 ~@7, ~@3 a3@23 ~@6]/2",
})).s("gm_electric_guitar_clean").gain(0.19)

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

// drums · snare
const snare = s("sd").struct("<A B ~@30 C D@7 E D@7 F D@7 E D@5 G D@3 H D@3 E D@5 G ~@2>".pickRestart({
  A: "~@8 x!2 ~@6", B: "x", C: "~@10 x!3 ~@3", D: "~ x ~ x", E: "~@2 x ~@2 x!2 ~", F: "~ x!2 ~@2 x!3",
  G: "~@3 x!2 ~@7 x ~@3", H: "~ x!2 ~@2 x!2 ~",
})).gain(0.54)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<[~@10 x!6] ~@61 [~ x ~@6] ~@13 [~ x ~@6] ~@2>").gain(0.24)

// drums · hihat
const hihat = s("hh").struct("<~ A@31 B C D@4 E F G D@5 H D ~ C D@4 E F G ~@5 I J K@2 ~@10 I ~@2>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@2 x!6", D: "x!8", E: "x ~ x!5 ~", F: "x ~ x!6", G: "x!4 ~ x ~@2", H: "x!7 ~",
  I: "~ x ~@6", J: "~ x!3", K: "x!4",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@32 [~@7 x] ~@46>").gain(0.54)

// drums · open hat
const open_hat = s("oh").struct("<~@32 A ~@5 B ~@7 B ~ C ~@5 B ~@5 B ~ D ~ E ~ F ~@9 D ~@2>".pickRestart({
  A: "~@3 x", B: "~@7 x", C: "x!8", D: "x", E: "~ x ~@6", F: "x!3 ~ x!3 ~",
})).gain(0.42)

// drums · high tom
const high_tom = s("ht").struct("<~@32 A ~@7 A ~@15 A ~@3 B ~@18>".pickRestart({
  A: "~ x", B: "~@5 x ~@2",
})).gain(0.54)

// drums · crash
const crash = s("cr").struct("<~@33 A ~@15 A ~@7 A ~@5 A ~@2 B ~@3 B A ~@3 A ~ A ~>".pickRestart({
  A: "x", B: "~@7 x",
})).gain(0.42)

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

// drums · tambourine
const tambourine = s("tb").struct("<~@17 [~ x ~ x]!13 [~@3 x] [~ x ~ x]!46 ~@2>").gain(0.48)

stack(
  piano, bass, vibraphone, string_ensemble_1, brass_section, electric_guitar_clean, kick, snare, snare_soft, hihat,
  mid_tom, open_hat, high_tom, crash, ride, tambourine
)

More by Neil Sedaka