Strudelify

I Want to Be Happy

Oscar Peterson

KeyC majorTempo190 bpm
0:00/0:00
// I Want to Be Happy — Oscar Peterson
// 190 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 136 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(190/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 · "A.PIANO 1"
const piano = note(`<
  A B C D E F G H I J K L@3 M N@2 O@2 P@2 Q@2 R S@2 T U V W X Y@3 Z AA AB@3 AC AD AE AF AG@2 AH@2 AI AJ AK AL AM AN AO@2
  AP@3 AQ AR AS@2 AT AU AV@2 AW AX@5 AY AZ BA BB@2 BC BD BE BF BG BH BI BJ@2 BK BL@3 BM BN@2 BO BP BQ@2 BR BS BT BU BV
  BW BX@2 BY BZ@3 CA CB CC CD@3 CE CF@2 CG CH CI CJ CK@2 CL@2 CM CN CO@4 CP CQ CR CS
>`.pickRestart({
  A: "[e4,a4,c6]@2 ~@6 [c#4,g4,c5,f5,a5] ~@7, [d5,g5] ~@15", B: "[f3,a3,c4,e4,a4,c5,e5,g5] ~@6 [f3,b3,f4,b4,e5,g5] ~@8",
  C: "[e4,a4,d5,g5,c6] ~@7 [c#4,g4,c5,f5,a5]@2 ~ [c#4,g4,f5,a5] ~@4", // Am7 F C#aug
  D: "[c4,g5] [f3,a3,e4,a4,c5] ~@6 [f3,b3,b4,d#5] ~@7", E: "e3@3 [g3,a3,c4,g4]@9 ~ e3@2 [g3,b3,d4,g4], e4@11 ~ e4@4",
  F: "~@7 [e3,a#3,c#4,e4]@5 g4@2 ~@2, ~@7 g3@4 ~ g3 ~@3", // A#dim
  G: "[f3,a3,c4,d4,f4]@6 ~ [g3,d4,g4] ~@4 [f3,f4]@3 [g3,a3,b3,d4,g4]", // Dm7 G5 F G
  H: "~@7 [g3,g4] f3 [b3,d4] ~@2 [g3,g4] ~@3, ~@4 f4 ~@3", // G Bm G
  I: "[a3,c4,d4]@4 ~@3 [g3,a3,c4,d4,g4] ~@4 [f3,f4]@3 [g3,a3,c4,d4,g4], [f3,f4]@3 ~@5", // D7 Gsus4 F Gsus4 F
  J: "~@3 [e3,e4] ~ f4 a4 [e4,f4,e5] ~ [d4,f4,b4,d5]@3 [b3,b4]@3 [c4,e4,g4,a4,c5], ~@9 g#4@6 ~", // E Fmaj7 Bdim B Am7
  K: "~@12 [a3,a#3,c#4,a4]@2 ~ [g3,c4,e4,g4], ~@12 f4 ~@3", // A C
  L: "[~@8 [f3,g#3,c4,d4,f4]@7 [e3,g3,b3,d4,e4]@11 ~ [g3,g4] [e3,e4]@3 [a#3,d4,e4,g4]@8 ~ [e3,g3,a#3,c#4,e4]@3 [g3,g4] ~@3 [f3,a3,c4,d4,f4], ~@31 g3@6 ~@11]/3", // Dm7b5 Em7 G E Em7b5 Edim G Dm7
  M: "~@3 [g3,a3,c4,d4]@9 f4@2 ~@2, ~@3 g4@8 ~ f3 ~@3", // Gsus4
  N: "[[g3,a3,b3] ~@7 [f3,f4]@3 [g3,a3,b3,d4,g4] ~@8 g3@2 ~@6 [f3,f4]@3 [g3,a3,c4,d4,g4], [d4,g4]@2 ~@13 [f3,a3,c4,d4,f4]@7 ~@10, ~@20 g4 ~@11]/2", // G F G F Gsus4 G5 Dm7
  O: "[~@3 [e3,e4] ~ f4@2 c#4 [e4,f4,g#4,b4,e5]@3 c#4 [d4,f4,g#4,b4,d5]@2 ~ [e4,g4,a4,c5]@2 ~@4 [c4,e4,f4,a4]@2 [g#3,e4,g#4] ~ g3@2 d#3 ~ d4 ~ c3, ~@15 c4 ~@4 a3@3 ~@2 g4 ~@6, ~@21 d4 ~ c4@4 ~ [f3,f4]@3 ~]/2", // E Ddim Am7 Fmaj7 C#m F
  P: "[[e3,g3,a3,c4,e4]@3 [c3,a3,c4] ~@8 g#3 [a3,c4,d#4,f#4]@2 d4 [a#3,f4,g4] ~@2 [c4,d4,f4,g4,c5]@9 [a#3,d4,f4,g4,a#4]@3 [c4,d4,f4,g4,c5], ~@12 a4@2 ~ a#4@2 ~@15]/2", // Am7 F Adim Gm7 Csus4 Gm7 Csus4
  Q: "[~@8 [a#3,e4,g#4,a#4]@3 c4 [a#3,a#4]@2 ~ [a3,c4,e4,a4]@5 ~@4 [e4,a4,c5,e5]@2 ~ [d#4,f4,a4,c5,d#5] ~ [f4,a4] ~ [c#4,f4,a4,c#5], ~@8 c#4@2 ~@14 f4 ~@3 d4@2 ~@2, ~@29 d5@2 ~]/2", // A#m7b5 A# Am F7 F C#aug
  R: "~ [d4,f4] ~ [g#3,d4,f4,g#4] ~ g4 ~@2 [a#3,c4,d4,f4,a#4]@3 [g#3,c4,d4,g#4] ~@3 [g3,a3,c4,e4,g4], c4@3 ~@13, ~ c5@2 ~@13", // Dm Ddim A# Dm7b5 Am7
  S: "[~@8 [e3,e4]@3 [g3,b3,d4,g4] [e3,e4]@3 [g3,a#3,c#4,e4,g4]@9 ~ e4@3 [a#3,g4] ~@3, ~@12 e3@2 g3 ~]/2", // E G E Gdim D#
  T: "[d3,f#3,g#3,c4,d4]@14 ~ [d3,f3,a3,c4,d4]", U: "~@3 e4 [d#4,d#5]@3 [e4,e5] c4@3 [d4,d5] ~@4",
  V: "[e3,d4,e4]@2 ~@6 [g3,g4]@3 [e3,e4] ~@3 [g3,b3,d4,e4,g4], [g3,b3] ~@15", // E7 G E Em7 G
  W: "~@7 [e3,g3]@5 [g3,g4]@2 ~@2, ~@7 [a#3,c#4,e4]@7 ~@2", // Em G A#dim
  X: "[f3,a3,c4,f4]@2 ~@2 [g3,a3,c4,g4]@2 ~@6 [f3,f4]@3 [g3,a3,c4,d4,g4], d4 ~@3 d4 ~@11", // F Am7 F Gsus4
  Y: "[~@8 f4@2 ~@2 [g3,g4]@3 [f3,a3,c4,d4,f4]@8 [g3,g4]@5 f3@3 [g3,a3,c4,d4,g4]@3 ~ e3 ~@3 [c#4,c5] [e4,f4,b4,e5]@3 ~ [b3,b4]@3 [d4,f4,g#4,b4,e5], ~@8 f3 ~@14 [a3,c4,d4]@7 ~@18, ~@14 f4@3 ~@3 g#4@2 ~@2]/3", // G Dm7 G Gsus4 C#maj7 E B E7 …
  Z: "~ [c4,e4,g4,a4,c5] ~@5 a3 [b3,c4,d#4,f#4,b4]@3 a3 [b3,c4,d#4,f#4,b4]@2 ~ [a3,c4,d4,f4,a4]", // Am7 B Dm7
  AA: "~@4 [e4,f4,b4,e5] ~ [d#4,f4,g#4,b4,d#5] ~, ~@8 g#4 ~@7", // E Fm7b5
  AB: "[[d4,e4,g4,b4,d5]@3 ~ b3@3 [d4,g4,a4,d5]@2 ~@2 [c#4,d#4,g4,a4,c#5] ~@3 [c4,e4,g4,a4,c5]@6 g#3@2 [b3,c4,d#4,f#4,b4]@5 [a#3,c4,d#4,f#4,a#4]@3 [a3,c4,d4,f4,a4]@4 ~ f3 d4@2 b3 f3 [a3,c#4,f4,a4]@2 f3 ~ [a3,c#4,f4,a4]@2 [a3,c4,f4,a4], ~@7 d#4 ~@27 f4@2 ~@11]/3", // Em7 Dsus4 D#7 Am7 B Cm7b5 Dm7 Aaug …
  AC: "~@15 [e3,g3,a#3,c#4,e4]", // Edim
  AD: "~ [f3,a3,c4,d4,f4] ~ [f3,a3,c4,d4,f4] ~ [g3,g4] ~ [g3,a3,c4,d4,g4] [a3,c4,a4] f4 [c4,a4] [a3,d4,f4] [c4,d4,e4,f4,a4,c5] ~@2 [c4,d4,f4]", // Dm7 G Gsus4 Am F Dm Dm7
  AE: "~ [f4,a4,b4] ~ [d4,f4,a4,d5] ~ c5 ~ b3 ~ [f4,a#4]@2 [g#3,d#4,f4,g#4] ~ g3@2 e3, [c5,e5]@2 ~@7 [b3,d#4] ~ b3@4 ~, ~ e4@2 ~ c4@3 ~ a#3@3 ~ g4@3 ~", // Bm7b5 Dm A#5 Fm7 C B
  AF: "~ [g3,e4]@3 a4 g4@2 a3 a4 f#4@2 [a3,a4] ~@4, [a3,c4,g4]@4 [c4,e4,c5]@3 ~ [c4,d#4,c5]@2 ~@6", // C A Am7 C Cm
  AG: "[~@11 [e4,f4,g#4,b4,e5] b3@3 [d4,e4,g4,b4] ~@3 [c4,e4,g4,a4] ~@3 g#3 [b3,c4,g4]@3 [a3,a4] ~@4, ~@15 d5@2 ~@2 c5@2 ~@3 [d#4,b4]@2 ~@6]/2", // E Em7 Am7 Cmaj7 A G#m
  AH: "[[a3,b3,d4,f#4,a4]@3 g3 [b3,d4,e4,g4] ~@2 d#3 ~ [a#3,c#4,e4]@2 [a#3,e4] e3 ~@2 [g3,a3,g4]@4 [f#3,a3,c#4,d#4,f#4] ~ [a3,c4,d4,f4] ~ [g3,a3,c4,g4] ~@2 [e3,c4,e4]@2 [a3,d4] [d3,f3,c4] ~@2, ~@8 [a3,a4]@3 ~@4 [c4,e4]@2 ~@4 f3@2 ~@3 [f3,a3] ~@5]/2", // Bm7 Em7 A#dim Gsus2 D#m7b5 Dm7 Am7 C …
  AI: "~@14 e3 [g3,a#3,c#4,e4]", // Gdim
  AJ: "[f3,a3,f4] ~ f3 [a3,c4,d4,f4] [g3,a3,c4,d4,g4] ~ [g3,a3,c4,d4,g4] ~ [a3,c4,d4,f4,a4] ~ [a3,c4,f4,a4] d4 [c4,d4,a4,c5] ~ [c4,f4,c5] [d4,a4]", // F Dm7 Gsus4 Dm7 F D7 F5 D5
  AK: "~ g#4@2 ~ [d4,d5]@2 c4 c5 [b3,f4,b4]@3 [c4,f4,c5] [d4,d5]@2 ~ b3, [e4,f4,b4,e5]@3 ~@13", // D Bdim F5 D E
  AL: "a4 g4 ~@5 [a3,c4,e4,g4,a4] ~ g4 e4 ~@2 [c4,d4,f4]@2 d#3, [c4,e4,c5]@2 ~@7 c4@2 ~ [f3,a3]@3 ~", // Am7 Dm7 C F
  AM: "[e3,g3,a3,c4,e4]@2 ~ [c3,e3,g3,a3,c4] ~@10 [a#3,a#4] [d4,f4,g4]", // Am7 A# G7
  AN: "~@7 [g4,a#4,d5,g5] ~ [f#4,f#5]@2 ~ [a#3,g4,a#4,d5] ~@3, ~@4 a#4 ~@3, ~@9 d5 ~@6", // Gm F# Gm
  AO: "[[f4,g4,d5,f5]@2 ~@2 [e4,g4,a#4,d5,e5]@2 ~@2 [d4,f4,g#4,b4,d5]@3 a#3 [c#4,f4,g#4,a#4,c#5]@2 ~ [c4,d4,c5]@2 ~@2 [a#3,f4,f#4,g4] ~@5 d4@2 ~ f3@4, a#4 ~@14 [f4,a4] ~@3 [d4,a#4]@2 ~@3 [a3,c4,a4]@3 ~ f4 ~@3]/2", // G7 Em7b5 Ddim A#m7 Csus2 F#maj7 F Gm …
  AP: "[[g3,g#3,c4,d4,g4]@3 d#3 [f#3,f#4]@2 ~ [f3,g#3,c4,d4,f4]@5 ~@3 [e3,g3,b3,d4,e4]@2 ~ e3 [g3,b3,d4,e4] ~ [f3,a3,c4,d4,f4] ~ [f3,a3,c4,d4,f4] ~ [g3,c4,g4]@3 a3@2 ~ [a#3,c#4,e4,g4,a#4]@5 g3@3 [a3,c#4,e4,a4] ~@7 a#3, ~@25 a3 ~@2 a4 ~@2 f4@2 ~@15]/3", // Gsus4 F# Dm7b5 Em7 Dm7 C5 A#dim A
  AQ: "~@3 [d3,f3,a3,c4,d4] ~ [e3,a3,c4,e4] ~ [e3,f3,a3,c4,e4] ~ [f3,a3,c4,d4,f4] ~ [f3,g3,a3,c4,d4,f4] [g3,g4] [a3,c4,d4] ~ [g3,a3,g4]", // Dm7 Am Fmaj7 Dm7 G D7 Gsus2
  AR: "~ [g#3,d#4,f4]@3 f3@3 [g3,b3,d#4,f4,g4] ~@4 [d#3,d#4]@2 ~@2, [b3,g#4]@4 ~@8 a#3 ~@3", // Fm7 Gaug D# E
  AS: "[[e3,g3,b3,d4,e4]@8 ~ [g3,a3]@2 e3 e4 ~@2 [b3,d4,e4] ~@3 [e3,d4] ~ [d4,e4,g4] ~ [b3,d4,a4] ~ [c4,e4,g4]@2 [a#3,c#4,e4,g4,a#4] ~ [a3,a4]@2 [g3,g4], ~@8 [c4,g4]@3 ~@4 [g3,g4]@4 ~@5 c5@2 ~@6, ~@25 [c#4,f4] ~@3 e4 ~@2]/2", // Em7 Gsus2 E7 Em7 Bm7 C A#dim A …
  AT: "~ [b3,d4]@2 ~ [g3,g4]@2 ~ [f#3,a3,c#4,d#4,f#4] a3 f3@2 [g3,a3,c4,g4] e3@2 [d#3,f3,a#3,d#4] ~, [a3,a4]@2 ~@2 [a3,c4] ~@4 d4 ~@2 e4 ~@3", // Bm G D#m7b5 Am7 D#sus2 A Am
  AU: "[d3,d4]@2 [f3,d4] [d3,a3] ~@11 [d4,e5]", // D Dm D5 Dsus2
  AV: "[[a4,c5,g5] d5 f#5 c#4 f5@2 ~@2 [e4,a4,c5,g5]@2 [d#4,a4,f#5] ~ f5@2 ~ [g4,b4,d#5]@2 ~ f5 [e4,d#5] [g4,d#5,a#5]@3 [f4,d#5,g#5]@2 ~ [b4,g5]@2 [d4,f5]@2 ~ [c4,g4,a4,e5], e4@2 a4@2 d4 ~@7 d4 ~@2 [c#4,a#5] ~@9 e4@3 ~@4, ~@3 [d#4,c#5]@2 ~@12 f4@2 b4@6 ~@7]/2", // Am7 D#dim Gaug Emaj7 D# Fm7 Em Dm …
  AW: "~@4 [g3,c#4,f4,a5]@8 [g3,c#4,f4,a5]@2 ~ [f3,a3,c4,e4,a4,c5,e5,g5], ~@2 [c5,f5,c6]@5 ~", // C#aug Fmaj7 F5
  AX: "[~@8 [f3,b3,e4,f4,g#4,b4,e5]@7 [e3,a3,d4,g4,a4] ~@11 g5 ~ e5@2 ~@4 [e3,a3,d4] ~@9 g4@2 [f3,a3,c4,e4] ~@3 a4 ~ d5@2 [f3,c4,f5] ~ e5@2 g4 c5@2 ~@2 d5@2 ~ f4 ~@3 d5 ~ c#5@2 a4 ~ f4 ~ [f3,c4], ~@15 c5@2 ~@14 [g4,g5]@9 ~ [g3,c#4,e4,e5]@5 ~@34, ~@44 g5@2 ~ f5@3 ~@13 e5@2 ~@15]/5", // E Em7 Dsus2 Fmaj7 F5 G C#dim
  AY: "~ c5@2 ~@2 f4@2 f3 g4@2 ~ g#4 a4 ~ c5 ~, ~@3 a4@4 ~@9",
  AZ: "a4 ~ a#4 ~ b4@2 a5 ~ g5@2 f5@2 e5@2 d5 ~, ~@6 e4@7 ~@3, ~@6 f3@5 ~@5, ~@7 b3@5 ~@4",
  BA: "e5@2 [g#3,d4,g4]@5 ~ [g3,c#4,f4]@7 ~", // G Gm7b5
  BB: "[[f#3,c4,e4]@7 ~ [f3,b3,e4]@5 ~@2 [e3,a3,d4]@7 ~ [a3,d#4,g4,a4] ~@3 a5@2 g5@2 [b3,d4,f#4,f5], ~@15 [c5,c6]@13 ~@4]/2", // F#m7b5 E Dsus2 Am7b5 Bm C
  BC: "~ e5@2 ~@2 d5@2 [g3,c#4]@4 a#4 ~ a4@2 g4, ~@7 c#5@3 ~@6", // Gdim
  BD: "~ f4 a4 f4 d4 [e4,g4] e4 c4 d4 f4 d4 b3 c4 e4 c4 a3", // Em
  BE: "b3 d4 b3 g3 c4@2 a3 f3 g3!2 e3 ~ f#3!2 ~ d3, ~@4 a3 ~@3 b3@2 ~@2 a3@2 ~@2",
  BF: "f3@3 ~@4 a4 f4 e4@2 f4 ~ a4@2 c5", BG: "~ d#5 c5 [d5,a5] ~ c5 a#4 ~ g4 [a#4,e5] g4 ~ a4 g4 d#4 c4",
  BH: "[d#4,a4] ~ c4 d4 c4 a#3 ~ g3 [a#3,e4] g3 ~ [a3,e4] g3 d#3 ~ c3", // D#dim A#dim A5
  BI: "a3@3 c3 d3@3 c3@3 ~ a3@2 f#3 ~ g3, d#3 ~@7",
  BJ: "[~ a3@2 a#3 ~ c4@2 d4 ~ f#4@2 a4@2 f#4@2 g4@2 a4@2 a#4 ~ c5@2 c#5 ~ d#5@2 c#5 ~@3 a#4]/2",
  BK: "~ a4@4 ~ e5 ~ e5@2 f5 ~ d#5 ~@2 d#5, ~@7 g5@2 ~@2 e5@2 ~@3",
  BL: "[d5@2 d#5 ~ f5@2 ~ g5 ~ g#5 ~ a#5 g5@2 ~ f5 e5@2 ~ g5 d5@2 c#5 ~ c5@2 ~ d#5 ~@4 [g3,c#4,f4] ~@3 a5 f5 ~@2 c5@2 ~@2 a4@2 ~ [f#3,c4,g4], ~@2 g4@9 ~@16 c6@10 ~@2 c#5@2 ~@2 a#4@2 ~@3, ~@3 [g#3,c4,d4]@10 ~@2 [e3,g3,a3,d4]@12 ~ e5@8 ~@3 [g3,c#4]@5 ~@4]/3", // Gm7b5 C Dm7b5 Em7 Gdim
  BM: "f#4@2 ~ e4 ~@2 c5 [f#3,c4] [e4,e5]@2 ~ d5 ~@4, ~@5 a4@2 ~@9", // F#dim E
  BN: "[[f3,a3,c4,e4] ~@7 [f3,b3]@4 d5 ~@4 [e3,a#3] ~@6 c5@2 ~ c5@2 ~@3, ~@12 [d#4,d#5]@11 ~ [a3,d#4]@7 ~]/2", // Fmaj7 Fdim Edim D# Adim
  BO: "~ g#3@7 ~@3 [a4,a5]@2 ~@2 [f3,a3,c4,e4,f5], d4@8 c#4@5 ~@3, ~@9 g3@4 ~@3", // A Fmaj7
  BP: "~ a5@2 f5 e5@2 ~ [f3,a3,d5] c#5@2 ~@2 d5@2 ~ a4, ~ a4 ~@9 e5@2 ~@3", // Dm
  BQ: "[c#5@2 ~ a4 c5@2 ~ b4 ~@3 [g4,g5] ~@3 [f3,a3,c4,e4,f5]@4 e5@2 ~@2 g4 f5@2 ~ e5@2 ~@2 g4]/2", // G Fmaj7
  BR: "f5@2 e5@2 c5@3 g4 a#4@2 ~ g4 b4@2 c5 ~", BS: "~ [g3,a#3,c#4,f4,a4,c#5,f5,a5]",
  BT: "~ g#4@7 [f3,b3,e4,g4,b4,g5]@7 ~, [f#3,c4,f5,g#5]@7 ~@9", // Em Fm
  BU: "[e3,a3,d4,e5,c6,e6] ~@7 [a3,c4,d#4,g4,g5,g6]@3 e6 ~@3 [g3,b3,d4,f#4,g5,g6]", // Am Am7b5 Gmaj7
  BV: "~@8 [g3,a#3,c#4,e4,e5,e6] c6 ~@2 [g3,a#3,c#4,e4,e6,g6] g5 ~@2", // Gdim
  BW: "[f3,a3,c4,e4,f5,c6,f6]@7 ~ [f3,a3,c4,e4]@2 ~ [f3,a3,c4,e4,f5,d6] ~@3 [f3,a3,b3,e4,g5,e6,g6], ~@8 [g5,e6,g6] ~@7", // Fmaj7 Em C
  BX: "[~@7 e4 f5@3 ~ f5@2 ~ g5 f5@2 ~@2 f5@2 ~@2 g5@2 ~ f5 ~@3 [f3,b3,e4,g5], ~@15 [f3,a3,c4,e4]@13 ~@4]/2", // Em Fmaj7
  BY: "~@11 [e5,e6]@2 ~@3, ~ [f3,b3,e4]", // E
  BZ: "[~@8 [g3,a#3,c#4,f4]@7 ~ [f3,a3,c4,e4]@7 ~ [f3,g#3,b3,e4]@5 ~@6 e5@5 [g4,g5]@3 g3 e5@3 ~, c6@23 ~@25, c5@16 ~@15 [e3,a3,d4]@7 ~@10]/3", // Gm7b5 Fmaj7 E G Dsus2
  CA: "~@3 [e3,b3,d4] ~@4 e5@4 ~ g4@2 [f3,a3,c4,e4], [g4,g5]@7 [g3,c#4]@5 g5@3 ~", // E7 Fmaj7 G Gdim
  CB: "~@4 f5@2 ~ [f3,a3,c4,e4] ~@2 g5@2 ~ f5@2 ~, ~@7 f5@2 ~@7", // Fmaj7
  CC: "~ g5@2 ~@4 g5@2 f5@2 ~@2 g5@2 ~, ~ [f3,b3,e4]@13 ~@2", // E
  CD: "[[f3,a3,c4,e4]@4 ~@4 [g4,g5]@3 f5 ~@3 g5@2 ~@2 [f3,a3,c4,e4] ~@4 [f3,b3,e4,e5,b5,e6]@5 ~@2 [e3,a3,d4,c5,g5,c6]@13 ~@2 f#5@2, f5@2 ~@13 g4 ~@32]/3", // Fmaj7 G Fmaj7 E Am7
  CE: "~ a#5 ~ f#5 ~ d#5@2 c5 ~ f5@2 d#5@2 d5@2 c5",
  CF: "[~ a#4@3 ~@4 [c4,d4,f4,g4]@3 [a#3,a#4] ~@3 [c4,d4,f4,g4,c5]@9 ~ [f4,g4]@2 ~ [a#3,a#4]@2 ~ [a3,d4,f4,a4], [g3,a#3]@7 ~ c5@2 ~@14 [a#3,d4,a#4]@3 c4@2 ~@3]/2", // Csus4 A# Csus4 Fsus2 A# Dm Gm A#
  CG: "~@3 [c4,d4,f4,a4,c5]@7 ~ [a3,c4,d4,f4,a4]@4 ~", CH: "[f3,g#3,c4,f4]@11 [g3,g#3,c4,g4]@4 ~, d4@15 ~",
  CI: "[g3,b3,d4]@5 ~@3 [g3,b3,d4,g4]@3 [e3,e4] ~@3 [g3,a#3,c#4,e4,g4], [e3,e4] ~", // G E Gdim E
  CJ: "~@8 [g3,a#3,c#4] e3 ~@2 [g3,g4] ~@3, ~@4 e4 ~@3", // Gdim G
  CK: "[~@8 d2@2 ~@4 g#3@2 ~@3 g2@13, d4@31 ~, [f#3,a#3,c4]@13 ~ [f3,c4]@17 ~, ~@16 a3@15 ~]/2", // Cm7b5 F5
  CL: "[[e3,a3,d4,g4,c5,e5]@8 ~@5 e5@2 [e3,b3,d4,g4,b4,g5]@8 ~@2 [c#4,e4]@2 [a#3,g5] ~@4, ~@9 [f3,c4,e4,a4,c5,g5]@6 ~@9 [g3,g4,a#4,e5]@3 ~@5, ~@25 f4 ~@6]/2", // Am7 Em7 C#m D# Fmaj7 Edim
  CM: "[f3,a3,c4,d4,a4,c5,f5] ~@7 [f3,a3,c4,d4,a4,c5,g5] ~@3 [f3,a3,c4,d4,f5] ~@3", // Dm7
  CN: "[f3,e4,g4]@8 [f3,b3,e4,f5]@3 [f3,b3,e4,g5] ~@4, b4@11 ~@5, [b3,g5]@7 ~@9", // C E Em
  CO: "[~@9 [c5,g5]@2 ~ f5@2 ~ [f3,a3,b3,e4,g4,b4,g5]@8 ~ f5@2 a5 ~ f5 ~@6 g5 ~ f#5@2 f5 ~ d#5@2 c#5 ~@3 a#4 g#4 ~@2 g4 f#4@2 f4 ~ d#4@2 c#4 ~ c4 ~ c#4 [d3,a3], ~@6 c4@7 ~@26 a#3@20 ~@5, ~@6 f5@2 ~@22 g#5@4 ~@13 c4@9 ~@8, ~@7 [f3,a3,d4]@7 ~@9 [f3,a3,b3,e4]@6 ~@2 [f#3,a#3,c#4,f4]@7 ~ [f#3,c#4,f4]@7 ~ f#3@13 ~@4]/4", // C5 Em D5 Dm Fmaj7 F#maj7
  CP: "d4 ~ f4 ~ g4@2 f4 d3 c5@2 ~ [f3,b4] f4@2 ~ d4, ~@11 a4@2 ~@3", // Fdim
  CQ: "d#4@2 ~ c4 d#4@3 ~ c4@2 ~ d4 ~@3 c4, ~@4 a4 ~@11",
  CR: "~@3 c#5 ~ c4@2 ~ g4 g3 ~ [f3,f4] e4 ~@2 [c#3,c#4], ~@3 c#4@2 ~@2 [g#3,g#4]@2 ~@7, ~@2 c5 ~@5", // F C# G#
  CS: "c4@2 ~@5 [e3,g3,a3,a#3,d4,d5,g5,c6]@4 ~@5, c3 ~@15", // Em7b5
})).s("gm_piano").gain(0.4).pan(0.8)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
  ~@2 A B ~@2 C D ~@2 E ~@7 F G ~ A H I ~ J ~ K ~@5 L ~@6 M N ~@2 O P Q ~ R S T ~@3 U V ~ W X Y Z AA AB AC AD AE ~@5 AF
  ~@5 AG ~@3 AH AI ~@2 AJ AK ~@7 AL ~ AM ~@2 AN ~@3 AO ~@4 AP ~@7 AQ AR ~@7 AS ~@2 AT ~ AU X ~@4
>`.pickRestart({
  A: "~@11 c5 ~@4", B: "e5 ~@7 [f4,g5] ~@7", C: "~@7 [a3,c4] ~@8", D: "~@8 a3 ~@7", E: "~@15 a3", F: "~@13 [g3,c4]@2 ~",
  G: "~@3 g3 ~@12", H: "~@7 d#4 ~@8", I: "~@7 g3 ~@8", J: "~@9 c#4@3 c#4 ~@3", K: "~@8 c5@3 ~@5",
  L: "~@3 [d4,e4] ~@2 a4 ~@9", M: "~@5 [a3,c4,d4] ~@3 d4 ~@4 c5 ~", N: "~@13 d#4@2 ~", O: "~@11 d#4 ~@3 f#3",
  P: "~@12 c#4 ~@3", Q: "~@7 d4 ~@8", R: "~@13 [e4,f4] ~@2", S: "~@9 g#4 ~ g#4 ~@4",
  T: "~@10 g3 ~ d#3 ~@3, ~@9 a3@2 ~@5", U: "~@9 f4@2 ~@5", V: "~@2 [g#3,d#4] ~@5, ~@4 c#4 ~@11", W: "~@15 e4",
  X: "~@15 c4", Y: "~@4 f4 ~@7 [g3,c#4] ~@3", Z: "~@9 e4 ~@6", AA: "~@7 a3 ~@5 c#4 ~@2",
  AB: "~ [c4,f4]@2 ~@2 e4 ~@3 [c4,f4] ~@5 c4", AC: "~ a3 ~ c4 ~@12, [f3,c4] ~@7",
  AD: "~ c4 ~@2 c5 ~@6 c5 [a4,c5] ~@2 c5", AE: "~ g#5 ~@5 a#5 ~@4 b4@2 ~@2", AF: "~@5 a4 ~@10", AG: "~@15 [f3,a3]",
  AH: "e5 ~@11 e5 ~@3", AI: "~@3 a4 ~@12", AJ: "~@13 c5@2 ~", AK: "~@2 c5 ~@4 e5", AL: "~@7 c4 ~@8",
  AM: "~@5 c5@2 ~@5 c5@3 ~", AN: "c5@7 ~ e5@7 ~", AO: "~@7 [f3,b3] ~@8", AP: "~@11 c#4 ~@3 b3",
  AQ: "[d4,f4]@4 ~@8 f4 ~@3", AR: "~@11 [d4,c5]@3 ~@2, ~@11 f4 ~@4", AS: "~@11 e4 ~@4", AT: "~@7 e5 ~@8",
  AU: "~@6 c5 ~",
})).s("gm_piano").gain(0.24).pan(0.8)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B C D E F G H I J K B E L I M N O P Q R S T U V W X Y Z AA AB AC N AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR N O
  AS AT R AU AV AW AX W AY AL AZ AA BA O BB BC AA BD BE BF BG BH BI BJ BK BL BM L BN BO N O BP BQ BR V BS BT AX W BU BV
  BE BW BA BX I BY BZ B AO AA X CA BA O CB CC BE AA AB CD CE CF CG CH R CI CJ CK AX CL CM CN AO BW CO CA N CP CQ CR N CS
  CT CU
>`.pickRestart({
  A: "c2 g#2 a2 d#2", B: "d2 f#2 g2 b2", C: "c3 a#2 a2 c#3", D: "d3 g#2 g2 b2", E: "c3 g2 f2 c3",
  F: "e2@4 g#2@4 a2@4 d#2@3 ~", G: "d2@3 c3 e2@4 f2@4 f#2@4", H: "g2 g#2 a2 c3", I: "d3 d2 c#3 c#2",
  J: "c3@4 a#2@3 ~ b2@4 a2@4", K: "g2 g#2 a2 d#2", L: "e2 g#2 a2 c#3", M: "c3@4 c2@4 b2@4 c#2@3 ~", N: "d2 e2 f2 f#2",
  O: "g2 g#2 a2 b2", P: "c3 d3 d#3 e3", Q: "c3@4 e3@4 a2@3 ~ g#2@4", R: "g2 a2 a#2 b2", S: "c3 c2 d2 e2",
  T: "f2 c3 f2 b2", U: "a#2 d2 f2 d#2", V: "e2 c2 g2 g#2", W: "a2 a1 e2 d#2", X: "d2 d3 f2 f#2",
  Y: "g2@4 f2@4 e2@4 d2@3 ~", Z: "c2 c3 f2 a2", AA: "e2 g#2 a2 d#2", AB: "d2@4 d3@4 c#3@4 c#2@3 ~",
  AC: "~@4 c3@3 ~ b2@4 b1@4, c2 ~", AD: "g2@4 g#2@4 a2@4 b2@3 ~", AE: "c3@4 a#2@4 a2@4 d#2@3 ~",
  AF: "d2@4 f#2@3 ~ g2@4 b2@4", AG: "c3 e3 f3 d#3", AH: "e3 a#2 a2 c#3", AI: "d3 d2 a2 g#2", AJ: "g2 g1 g2 f#2",
  AK: "f2 d2 f2 f#2", AL: "g2 g1 d2 c#2", AM: "c2@4 g#2@4 a2@4 d#2@3 ~", AN: "d2@3 c3 f#2@4 g2@4 b2@4",
  AO: "c3 g2 f2 a2", AP: "e2@4 g#2@3 ~ a2@4 c#3@4", AQ: "d3@4 d2@3 ~ c#3@4 c#2@4", AR: "c3 c2 b2 b1", AS: "c3 b2 a2 g2",
  AT: "f2 e2 d2 c2", AU: "c3 c2 g2 f#2", AV: "f2 f1 f2 g2", AW: "g#2@3 ~ f2@4 g#2@4 f2@4", AX: "e2 f2 g2 g#2",
  AY: "d2 a2@2 g#2", AZ: "c2 e2 f2 a2", BA: "d2@3 d3 e2@4 f2@4 f#2@4", BB: "c3 a2 b2 g2", BC: "a2 f#2 g2 f2",
  BD: "d2@4 f#2@3 ~ g2@4 c#2@3 ~", BE: "c2 g2 f2 a2", BF: "e2@4 g#2@4 a2@3 ~ c#3@4", BG: "d3@2 ~@2 d3@4 c#3@3 ~ c#3@4",
  BH: "c3@3 ~ c3@4 b2@3 ~ b2@4", BI: "a2@3 ~ a2@4 g2@3 ~ g2@4", BJ: "f2@3 ~ f2@4 d2@4 d#2@4",
  BK: "e2@4 d2@4 c#2@3 ~ e2@4", BL: "d2 c2 b1 d2", BM: "c2 e2 f2 d#2", BN: "d3 d2 c3 d2", BO: "b2@4 d2@4 a2@4 d2@3 ~",
  BP: "c3 ~ g2@2 e2@4 f2@4 f#2@4, ~@2 a2 ~@13", BQ: "g2@4 c2@4 f2@4 f#2@3 ~", BR: "g2 g1 f#2 f2", BS: "a2 f2 c3 b2",
  BT: "a#2@4 d#2@3 ~ d2@4 g2@4", BU: "d2@3 ~ d3@4 c#3@4 c3@4", BV: "a#2@3 ~ b2@4 g#2@3 ~ g2@4",
  BW: "e2@4 g#2@3 ~ a2@4 d#2@3 ~", BX: "g2@4 g#2@4 a2@4 c3@3 ~", BY: "c3 a#2 b2 d3", BZ: "c3@4 a#2@3 ~ a2@4 d#2@3 ~",
  CA: "g2 g1 e2 d#2", CB: "c3@4 b2@4 a2@4 d#2@3 ~", CC: "d2@4 f#2@4 g2@4 c#2@3 ~", CD: "c2@4 c3@4 b2@4 c3@3 ~",
  CE: "d3 a2 c3 a#2", CF: "b2 g2 f2 a2", CG: "e2 d2 c2 g2", CH: "d2 g2 e2 f#2", CI: "c3 e2 g2 f#2", CJ: "f2 a2 a#2 b2",
  CK: "c3 g#2 g2 f2", CL: "a2@4 a1@4 e2@3 ~ d#2@4", CM: "d2 f2 e2 g2", CN: "f2 a2 g2 b2",
  CO: "d2@3 [c3,d3] e2@4 f2@4 f#2@4", CP: "g2 g1 f2 e2", CQ: "d#2 f2 f#2 g2", CR: "g#2 d#2 f2 d#2",
  CS: "g2@4 g#2@4 a2@4 b2@2 c3 ~", CT: "~@3 c#3 c3@2 ~ g#2 g2@2 f2 ~ e2@2 c#2 ~", CU: "c2@2 ~@5 c3@2 ~@7",
})).s("gm_acoustic_bass").gain(0.36).pan(0.1)

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

// drums · rim
const rim = s("rim").struct("<[~@3 x]!135 ~>").gain(0.54)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<A ~@11 B ~@39 C ~@23 B ~@21 D ~@9 B ~@27>".pickRestart({
  A: "~@3 x ~@12", B: "~@3 x!2 ~@7 x!2 ~@2", C: "~@3 x!2 ~@7 x ~@3", D: "~@3 x!2 ~@11",
})).gain(0.16)

// drums · low tom
const low_tom = s("lt").struct("<~@52 [~@13 x ~@2] ~@45 [~@13 x ~@2] ~@37>").gain(0.08)

// drums · hihat
const hihat = s("hh").struct("<[x!4]!92 [~ x!3] [x!4]!42 [x!2 ~@2]>").gain(0.54)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@11 A ~@15 A ~@3 A ~@11 A ~@7 A ~@7 A ~@3 A ~@3 A ~@7 A ~@7 A ~@7 A ~@3 A ~ A ~ A ~@7 A ~@7 A ~@7 A ~@3 A ~@3 A ~@4
>`.pickRestart({
  A: "~@11 x ~@4",
// … 24 more lines

More by Oscar Peterson