Strudelify

Our Love Is Here to Stay

Oscar Peterson

KeyC minorTempo122 bpm
0:00/0:00
// Our Love Is Here to Stay — Oscar Peterson
// 122 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 107 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(122/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@3 D E F G H I J K L@3 M N O@3 P Q@3 R S T U V W@4 X@3 Y@4 Z AA AB AC AD AE AF@3 AG AH AI AJ AK AL AM AN AO AP@2
  AQ AR AS AT@4 AU AV AW@3 AX AY AZ BA@3 BB BC BD BE@3 BF BG@2 BH BI BJ BK BL BM BN@2 BO BP BQ BR@3 BS@4 ~
>`.pickRestart({
  A: "~@10 [bb3,bb4] ~ [c4,c5]@2 ~@4 [g4,g5]@2 ~@4", B: "~ bb3@11 [bb3,eb4,ab4]@12, eb5, [bb4,c5] ~",
  C: "[~@8 eb5@4 db5 d5@5 c5@4 ~@6 [f4,bb4] ~@7 [gb3,c4,f4,bb4]@12 ~@10 [bb3,eb4,bb4] ~ [bb3,eb4,c5]@2 ~@4 [bb3,eb4,bb5]@3 ~@3, c5@11 ~@61, eb5@8 ~@14 eb5@37 ~@13, ~ [eb3,ab3]@11 ~@60, ~@4 f5@7 ~ f5@5 ~@55]/3", // Bb5 Gbmaj7 Eb5 Cm7 Eb5 Ab5
  D: "db5 ~ d5@14 ~ [eb3,d4,g4]@7, [g4,g5]@2 ~", E: "eb5@3 ~@5 eb5@4 ~@6 eb5@5 gb5, ~ f5@2 [gb3,c5,f5]@3",
  F: "~@5 [f3,b3,eb4] ~@6 [bb3,eb4]@12, g5", G: "~@10 eb6 eb5 ~ [d5,d6]@2 ~@3 [gb3,f4,c5,c6]@3 ~@3",
  H: "~ [bb4,bb5]@4 ~@2 bb5@4 gb5@2 g5@4 [e3,bb3,eb4]@6 f5, ~@11 c6@6 ~@7", // Bb Eb
  I: "[eb3,ab3,c4,ab5] ~ bb5 ab5 ~ f5 ab5@4 ~ [gb5,bb5]@2 g5 ~@3 [d3,b3]@2 ~@4 bb3, ~@17 ab3 ~@6", // Ab Gb G
  J: "g5@4 d4 gb5 [d4,g5]@4 ~ [c4,f4,f5,bb5] ~@5 gb3@7, ~@2 [c4,f4,eb5,ab5]", // G5 Fsus4 Fm7
  K: "~@4 [gb3,ab4]@6 ~ ab5 ~@2 g5@2 ~ ab5 ~@3 f5 g5@2, f5@11 b3@9 ~@4", // Gbsus2
  L: "[~ eb3@2 ~@3 [eb3,bb3]@3 ~@2 f5@2 ~@2 d5@2 ~@8 [eb3,bb3]@4 f5 ~@3 g5@3 ~ [d3,e5]@6 [eb3,a3]@6 [gb3,c4,f4,c5,ab5,c6]@12 ~ g5@10, ~ eb5@7 ~@11 eb5@9 ~@15 f5@18 [g3,db4,gb4,c5,c6]@11, ~@61 gb5@2 ~@9]/3", // Eb5 Dsus2 Ebdim Fm
  M: "~@2 g5@2 ~@7 [bb3,bb4] ~ [c4,c5]@2 ~@4 [eb4,g5]@3 ~@2, [ab3,d4,g4,gb5] ~@7, ~ [c5,c6]@3 ~@20", // Bb C Eb Abm7b5 C
  N: "~ bb3@11 ~ bb3@10 ~, eb5@23 ~, eb3@11 ~ eb4@11 ~",
  O: "[~ [eb3,eb5]@2 ~@2 f5@2 eb5@4 db5@2 d5@4 ab3 c5@3 ~ eb5@6 ~@4 bb4@2 ab4 ~ gb3@2 eb4@3 ~ eb4@4 ~ eb4@11 bb4 bb3 ~ [bb3,eb4] ~@4 [e3,bb3,eb4,gb5,c6]@2 g5@2 ~@2, ab3@2 ~@9 f5@7 ~@11 db4@5 ~@2 gb4 ~@23 c5@2 ~@10]/3", // Eb Eb5 Cm7b5
  P: "~ eb3@2 ~@9 eb3@10 ~@2, ~ g5@22 ~",
  Q: "[[d3,ab3,c4,eb5]@4 ~ [d3,ab3,c4] ~ [d3,ab3,c4,eb5]@4 [f3,b3,eb4]@6 ~ [b3,eb4,eb5]@4 ~ gb4 g4@12 [ab3,bb3,eb4]@12 [eb3,a3]@10 ~ [db4,f4,eb5,eb6]@3 ~ [d5,d6]@2 c4 [c5,c6]@5 ~, ~@5 f5@2 ~@4 [b4,f5]@7 ~@4 gb5@2 g5@28 ~@20, ~@23 e4@13 ~@29 gb3@2 ~@5]/3", // Ab Dm7b5 Ab Fm7b5 B Absus2 Ebdim Db …
  R: "[f3,b3,eb4]@2 ~@5 bb5@4 gb5@2 ~@4 eb4 ~@6, [bb4,bb5]@4 ~@7 c6@11 ~@2, ~@13 g5@10 ~, ~@8 bb3 ~@3", // Fm7b5 Bb
  S: "[eb3,ab3,c4,ab5] ~ bb5 ab5 f5 ~ ab5@4 ~ [gb5,bb5]@2 g5 ~@3 [d3,b3]@2 ~@4 [bb3,eb5], ~@17 ab3 ~@6", // Ab Gb G Eb5
  T: "~ g5@4 ~@2 g5@4 [f3,b3,bb5] ~@5 [f3,b3,eb4,eb5,ab5]@7", // Bb Fm7b5
  U: "[c5,f5]@10 [db4,f4,eb5,eb6] g3 db4 [d5,d6] ~@2 [db4,d5,d6] f4 [c5,c6] ~@3 [gb3,c4,f4,c5,c6] ~", // F5 Db D Dmaj7 C F
  V: "~@4 gb5 g5@6 ~ [bb3,eb4,c5,c6]@2 ~@4 gb5 g5@2 ~@3, ~@4 [f3,b3,eb4,bb5]@7 ~@7 [bb3,eb4]@2 ~@4, ~@2 bb4 ~@9", // Cm7 Ebsus2 Eb5
  W: "[[eb3,ab3,bb4,bb5]@11 ~ [d3,ab3,g4,g5]@10 ~ [g3,c4,bb4,eb5]@2 ~@3 bb4 ~@3 g5 ~ c6@2 ~ bb5@3 ~@2 ab5@2 ~@2 bb5 ~ g5 ~@3 eb5 ~ bb4@4 bb3 eb4 eb5@3 ~@2 eb4 [ab4,eb5]@4 ~@2 gb4 ~@4 eb4 ~ eb4@3 ~@3 e3@2 ~@3 eb4@4 ~@2, ~@12 db5 ~@34 ab5@2 ~@5 eb5@2 ~@4 ab4 ~@10 eb4@2 ~@11 [bb3,eb4]@3 ~@9]/4", // Ebsus4 G Cm7 Ab5 Eb5
  X: "[~ [eb3,ab3,eb4]@2 ~@3 eb4@4 ~ [d3,ab3,b3] ~ eb4@3 ~@3 g4@4 eb4@6 ~@7 [gb3,c4]@2 ~@8 b3 f3@2 f6@2 ~ eb6@2 ~ d6@3 bb3 ~ eb6@4 bb5@6 bb3 ~]/3", // Ab5 Abdim Gbdim
  Y: "[~ ab5@2 ~ gb5@2 ~@2 eb5 ~ bb4 ~ ab4@4 ~ bb3 gb4@2 g4@3 eb4@6 ~@8 bb4@3 ~ [gb3,ab4] bb4@2 ~@2 [b3,ab4] f3@2 gb4 ~@3 ab4 ~ bb4 ~@2 [bb3,eb4,c5] e3 ~ db5@2 b4 c5@6 ~@2 f4@3 ~ g4 ~@3 ab4 ~ bb4 ~ b4 ~ ab4 ~ bb4@5 ~ ab4 ~, ~@71 eb3@2 ~@23]/4", // Gbsus2 E Cm7
  Z: "g4@2 ~@2 b3 f3 db5 ~@2 db5@2 b4 ~ c5@3 ~ [e3,bb3]@6 ~, ~@4 eb5 ~@7", // Edim
  AA: "[eb3,ab3]@2 ~@3 [e5,f5] ~ ab5 ~ f5 ~ ab5 ~ c6 ~ ab5 c6 ~ eb6 ~ c6 ~ eb6 ~, ~@11 ab3@2 ~@11, ~@6 d3 ~@5", // Ab5 Fmaj7
  AB: "gb6 ~ g6 ~ ab6 ~ g6 ~ eb6 ~ bb5 c4 eb6@2 ~@2 [a5,eb6] ~ ab5@2 eb5 ~ eb6@2, ~@11 gb3@2 ~@11, ~@12 ab5 ~@5 eb6 ~@3 ab5 ~", // Adim
  AC: "gb5@2 g5 ~ gb3@2 b5 ~ a5 bb5 ~ ab5 g5 ~ gb5 f5 ~ e5 eb5 ~ b4 bb4 ~ ab4, ~@4 c4 ~@19",
  AD: "g4 ~@2 g4 ~ gb4 g4 ~@2 c5 d5 ~ eb5 ~@2 eb5@2 ~ eb5 ~@2 d5 ~ eb5, ~@10 f5 ~",
  AE: "c5@4 ~@7 d6@2 c6@3 g5 ~ eb5@4 ~ c4",
  AF: "[gb3@2 ~@3 f5@2 ~ db5 d5 ~ f5 ~ bb4@3 ~ [db4,gb4] ~ bb4@4 bb4@6 [ab3,eb4,g4]@7 ~ [ab3,d4,g4] ~@3 [ab3,d4,g4,c6] ~@5 [bb3,gb6]@2 g6 ~@3 [e3,eb4,eb6]@3 ~ eb6 ~ c6 ~ [bb3,eb4,eb6]@2 ~@4 c6@3 ~@2, ~@37 bb5@2 ~@4 [ab3,g4,eb6]@6 ~@4 bb3 ~@18, ~@23 eb4 ~@12]/3", // Gb5 Abmaj7 G Abmaj7 Ebm Emaj7 Eb5 Abmaj7
  AG: "~ eb3@10 [d3,ab3,b3,gb6]@2 g6 ~@3 [d3,ab3] bb5 ~@2 c6 ~ eb6, eb6 ~, ab3@10 ~@7 b3@2 ~@5", // Abm7b5 Ddim
  AH: "[g3,db4,f4] gb6 ~@3 g6 ~ [ab6,bb6]@2 ~@2 gb6 g6@2 ~ eb6@2 bb5 ~ eb6@4 eb5, ~@11 [gb3,c4,bb6]@4 ~@4 ab5@2 ~@3", // Gm7b5 Absus2 Cm7b5
  AI: "~ [ab5,eb6]@2 ~@4 eb5@2 ~ gb5 g5@2 ~ eb5@2 ~ bb4 ~ ab4 ~@3 eb4, ~@5 [bb5,eb6]@2 ~@3 bb5@2 ~@2 bb5 ~@9, ~@6 ab5@2 ~@10 eb5@3 ~@3", // Ab5 Eb5
  AJ: "gb4@2 ~@2 eb3 f5@2 eb5@3 ~@2 d5@4 ~@2 c5@4 ~ ab3", AK: "[d4,bb4]@5 ~ [db4,a4]@5 ~ ab4@5 ~ bb4@4 gb4@2",
  AL: "g4@2 ~@3 [f3,b3]@2 ~@4 eb4@2 ~@4 bb3 ~@6, ~@2 db4 ~@9", // Fdim
  AM: "[eb3,a3]@2 ~@4 f6 eb6@2 d6 c6 ~ b5 ~ a5 bb5 ~ gb5 f5 ~ eb5 d5 ~ c5, ~@11 [gb3,c4]@2 ~@11", // Ebdim Gbdim
  AN: "bb4 ~@3 bb3 ~@8 [e3,bb3]@2 ~@2 g4 ~@3 e5 ~ [eb4,g5]", // Edim Eb
  AO: "ab3 bb5@2 g5 ~ ab5 ~ c5 ~ eb5 ~ g5@2 ~ c5 ~ eb5 ~ d5@2 b4 ~ bb4 ~, ~@13 f5@2 ~@9",
  AP: "[~@5 ab4@2 g4@2 ~@2 f4 ~ eb4@2 ~@2 f4 ~ g4@4 eb4@3 ~@4 c4@3 ~@2 bb3 eb4@4 ~ f4 [gb3,c4,g4]@4 [f3,b3,eb4]@2, ~@5 bb4 ~@23 eb4@2 ~@5 db4@2 ~@10]/2", // C Fm7b5
  AQ: "~@3 eb4 ~@2 eb4@4 f4 ~ [gb4,bb4]@2 ~@2 bb3 e3@2 ~@2 eb4 ~@2, ~@8 eb4 ~@3", // Gb
  AR: "[eb3,a3]@2 ~@5 bb4@2 ~ ab3 eb4@2 f4@2 eb4 ~@2 eb4@4 f4 ~, eb4@2 ~ ab4 ~ d3 ~@6", // Ebdim
  AS: "gb4 ~@3 bb4 ~ c5 ~ bb4 ~ eb5@2 ~ eb4@3 ~ eb4 ~@6",
  AT: "[bb3 ~@10 [f3,b3,e4] ~ a5@2 ~@2 c6 [f3,b3,e4,eb6]@4 ~ db6@2 d6@5 [e3,bb3,eb4,f6]@4 [e3,bb3,eb4,eb6]@4 db6 d6@3 [e3,bb3,eb4]@3 ~@2 [eb3,c4]@12 [d3,ab3,b3,bb5]@12 [f5,bb5] b5 ~@4 [g3,db4,f4,eb5,eb6] ~@5 [c4,f4,d5,bb5,d6] ~ [gb3,c5,c6]@3 ~@3 [bb4,bb5] b5@2 ~@2, ~@11 c6@2 ~@10 [e3,bb3,eb4,g5,g6]@7 ~@8 [e3,bb3,eb4]@3 ~ c6@4 [ab3,bb5]@12 ~@13 [g3,db4,f4,f6]@2 ~@18 gb3@3 ~@2]/4", // E Fm7b5 Ebsus2 Eb Cm Abdim Bb5 Gm7b5 …
  AU: "~ [eb4,bb4,bb5]@3 ~ ab3 ~ [f3,b3,eb4,ab5]@3 ~ [e3,bb3,eb4,g4,g5] ~@4 [bb3,eb4,eb5,eb6] [e3,db6] [e3,bb3,eb4,c6]@3 ~@3, ~@2 ab4 ~@5", // Eb5 Fm7b5 Eb Eb5 Dbm C7
  AV: "eb3@2 ~@4 [g4,g5]@2 ~@4 [eb3,db4,g4,g5]@2 ~@4 [g4,g5]@3 ~@3", // G Eb7 G
  AW: "[[d3,ab3,c4,g4,g5]@3 ~@3 g5@5 [d3,ab3,c4] ~ g5@3 ~@2 bb5@3 ~ gb5@2 g5@5 ~ bb4@4 ~@2 [bb3,eb4]@13 d4@2 ~@2 g6 ~ d6 ~ c6 b5 a5 ~ [gb3,bb5] gb5 ~ f5 eb5 ~ d5 c5 b4 ~ a4, ~@6 g4@3 ~@13 [f3,b3,eb4]@12 ~@2 c5@5 ~@8 ab3 ~@3 f6@2 ~@17, ~@27 eb6 ~@8]/3", // Csus2 Dm7b5 Eb5 Gb Fm7b5
  AX: "bb4 ~@2 gb4 ~@2 g4 ~@2 f4 ~ [e3,bb3] e4 ~ g4 ~ bb4 c5 eb5 ~ db5 c5 ~ bb4, ~@5 a4@2 ~ d4@2 ~@14", // Edim
  AY: "ab4 ~@2 eb4 ~ g4 f4 g4 f4 c4 ~ eb4 d4 ~ db4 c4 ~ b3 bb3 ~ gb3 d3 ~ b2",
  AZ: "f3 ~@2 eb3 ~ f3 g3 ~ eb3 ~@2 g3 ~ ab3 ~ g3 ~ ab3 bb3 ~ eb3 ~@2 [c2,d2]", // Csus2
  BA: "[~@2 g3 [ab3,bb3] b3 db4 eb4 f4 g4 ab4 bb4 b4 [f3,b3,eb4,db5] eb5 f5 g5 ab5 bb5 c6 db6 eb6 gb6 ~@2 [eb3,bb3,d4]@10 ~ f6@2 eb6 ~@2 eb6 c6 g5 d6@2 g5 ~ c6@2 g5 ~ f5 eb5 ~@3 f5@2 d5 ~ eb5@2 g4@2 bb4 ~ d5@2 ~ bb4 c5@2, ~@23 g6@2 ~@10 g6 ~@3 f6@2 ~@2 g6 ~@3 g6 ~@24]/3", // Absus2 Fm7b5 Ebmaj7
  BB: "~ g4 f4 ~@2 d4 [c4,eb4] gb3 ~@3 eb4@2 ~@2 eb4@2 ~ [db4,eb4] ~ e4 ~ f4@2, ~@9 g3 ~@2", // Cm Dbsus2
  BC: "~ [ab3,d4] f4@2 ~ e4 f4@2 e4 ~ f4@2 ~ a4 bb4@2 a4 ~ bb4 ~ d5 ~ eb5 ~, e4 ~@11", // Abdim
  BD: "[bb3,d5] e3 eb5 ~ g5 ~@2 gb5 ~@2 gb5 ~ g5 ~ c6 ~ b5 ~ c6 ~ b5 ~ c6 ~, ~@9 g5@2 ~@13", // Bb
  BE: "[d6 ~ eb6 ~ c6 ~ ab5 ~@4 d5 db5@2 d5@2 d4 ab3 bb5@3 ~@3 g5 ~@4 [db4,gb4] ~@3 eb5 ~ c5 [c4,eb5]@6 [gb3,c5]@4 ~ [b3,e4]@11 [bb3,eb4] [e3,bb4] [e3,bb3,eb4,c5]@3 ~@3 gb5 g5@2 ~@3, ~@22 bb5@2 ~@22 eb5@13 ~@13, ~@23 gb5@2 ~@3 eb5@2 ~@6 [gb3,f4]@4 ~@2 f4@3 ~ f3@7 ~@13 [e3,bb3,eb4,c6]@3 ~@3]/3", // Gb5 Cm Gbdim E5 Eb5 Edim C7 Gbmaj7 …
  BF: "~ [eb3,g3,a3,d4,c5]@11 ~ [eb3,a3,db4,db5]@11, ~ g5@23", // Am7b5 Ebm7b5
  BG: "[~ d3@3 [d3,ab3,c4]@4 [d3,ab3,c4,c5,eb5]@4 [b3,eb4,b4,f5]@6 [b3,eb4,eb5]@5 db5 d5@12 [e3,bb3,eb4,ab4,db5]@12, [c5,eb5]@8 ~@4 f3@5 ~ f3@4 ~ [f3,b3,e4]@14 ~@11, [ab3,c4]@4 [d5,f5]@9 ~@10 g5@25]/2", // Dm7b5 Ab Fm7b5 B Bbm7b5 Cm E Ab …
  BH: "~ [eb3,c5]@9 [db4,f4,eb5,eb6] g3 ~ [g3,d5,d6]@2 ~@3 [gb3,c4,f4,c5,c6]@3 ~@2 bb3, ~@4 [db4,f4] ~@3", // Cm Db G5 F Db
  BI: "[f3,b3,bb5]@2 c6@2 ~ g5 ~ bb5@4 gb5 ~@5 [e3,bb3,eb4] ~@5 f5, eb4 ~@3 bb5@2 ~@5 c6@4 ~@9, ~@3 g5@2 ~", // Bb Eb
  BJ: "[eb3,a3] ab5 bb5@2 ab5 f5 ab5@4 ~ gb5@2 ~@3 [ab3,b3] ~@5 bb3 ~, ~@11 bb5@7 ~@6, ~@13 g5@5 ~@6, ~@8 d3@3 ~", // Ebdim Abm
  BK: "[c4,f4,g5]@4 c4 gb5 [c4,f4,g5]@3 ~ [eb5,bb5] eb4 ~@5 [b3,eb4,db5]@7, ~@16 [f3,ab5]@7 ~", // Csus4 Eb5 B Fm
  BL: "[c5,f5]@6 ~@4 [g3,db4,f4,eb5,eb6]@3 ~ [g3,db4,f4,d5,d6]@4 [gb3,c4,f4,c5,c6]@5 ~", // F5 Gm7b5 G7 F
  BM: "~@4 [f3,b3,eb4,bb4,bb5]@8 ~ bb3@2 ~@3 gb5 g5@2 ~@3, ~@12 [eb4,c5,c6]@2 ~@4 [bb3,eb4]@3 ~@3", // Ebsus2 Cm Eb5
  BN: "[~ [eb3,eb5]@9 ~ b4@16 ~ [f3,b3,eb4,bb4,bb5]@7 ~ [e3,bb3,eb4,eb5,eb6]@2 ~@4 [bb3,eb4,bb5,bb6]@2 ~@4, [ab3,bb4,bb5]@5 [d3,ab3,b3,g4,d5,g5]@9 ~@10, ~@5 bb4 ~@18]/2", // Eb Ebsus2 Eb Eb5 Absus2 G
  BO: "gb6 [g5,g6]@10 ab3@13, ab3@5 ~@7, ~ gb5 ~@9 bb5@7 ~@6", // G
  BP: "~@4 [f3,b3,eb4,bb4,bb5]@7 ~ gb5 [bb3,g5] ~@4 [bb3,eb4,g5]@2 ~@4, ~@12 [eb4,c5,c6]@2 ~@4 g4 ~@5", // Ebsus2 Eb Cm
  BQ: "[eb3,ab3,c4,bb4,eb5,bb5]@12 [ab3,g4,b4,d5,g5]@10 ~ gb3, ~@11 f3", // Ab G
  BR: "[eb4@4 ~@3 eb4@4 eb4@5 ~@2 eb4@4 eb4@6 f4@2 eb4@4 eb4@6 f4@2 eb4@4 ~@7 eb4@5 eb4@5 f4@2 ~ eb4@4 [g3,c4,d4,bb4] ~, [g3,db4]@11 [gb3,b3]@12 ~@23 eb4@7 ~@19, ~@5 f4@7 ~@4 f4@6 [f3,bb3]@12 [e3,a3]@11 ~ [eb3,ab3,c4]@12 [e2,b2,ab3,b3]@12 ~@2, ~@51 f4@7 ~@14]/3", // Gm Gdim B5 Bb5 A5 Ab E
  BS: "[~@10 d4@10 ~@19 a7@48 ~@9, ~@10 [eb2,bb2,g3,a3]@16 g5@7 c7@48 ~@15, ~@11 g4@3 c6@5 g7@24 ~@5, ~@23 c5@8 a6@8 d4@2 ~@55, ~@3 d5 d7@6 ~@2]/4", // Eb
})).s("gm_piano").gain(0.4).pan(0.8)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
  ~ A B C D E F G H I ~ J K L M ~ N O P Q R S T@2 U V ~ W X Y Z AA AB AC AD ~ AE AF AG AH ~ AI AJ AK ~ AL AM AN AO@2 AP
  AQ AR AS AT AU ~ AV ~ AW@2 AX AY AZ BA ~@2 BB BC BD BE BF@2 ~@2 BG BH BI BJ BK AG ~ BL BM ~@4 BN ~ BO BP BQ Y BR BS BT
  BU BV ~@3 BW@5
>`.pickRestart({
  A: "~ eb4@11 ~ e3@11, [c4,f4,g4]@11 ~@13", B: "c4@11 ~ [d3,ab3,c4]@11 ~", C: "~@4 [g3,c4] ~@19",
  D: "~ [f3,b3,g4]@10 e3 e3@2 ~@4 e3@2 ~@4, [eb4,bb4]@5 ~@7", E: "~ [eb3,a3,d4]@15 ~ a3@7",
  F: "~ [d3,ab3,c4]@11 [c4,f4]@11 ~", G: "~@13 [e3,c5]@11", H: "~ [eb3,a3,d4]@11 ~@6 c4@2 ~@4",
  I: "~ [f3,b3,eb4]@2 ~@2 g5 ~@18", J: "~ g3@4 f4 f4@3 ~@2 gb3 ~@12, [d4,f4]@4 ~ g3@5 ~@14",
  K: "~@4 [c4,f4,c5]@7 [f3,eb4]@10 ~@3", L: "~ [bb3,d4] ~@5 d4@3 ~@3 [eb3,bb3,d4]@3 ~@3 [bb3,d4]@3 ~@2, ~@9 eb3 ~@2",
  M: "~ d4@4 ~ [eb3,bb3,d4]@3 ~@4 [ab3,db4]@6 d4@5", N: "~@19 [f3,b3]@2 ~@3", O: "~ d4@11 ~ e3@10 c5",
  P: "c4@3 ~@14 b3@2 ~@5, ~@17 d3 ~@6", Q: "~@5 g3@5 ~@3 g4 ~@10, ~@6 c4 ~@5",
  R: "~@5 f3@6 eb4 ~ e3@2 ~@9, ~@4 b3@7 ~@13", S: "~ [a3,d4]@2 ~@10 [a3,db4]@10 ~",
  T: "[~@18 f3@4 ~ [f3,b3]@13 ~ e3@11]/2", U: "d4@10 ~ g3@2 ~@4 f4 ~@3 bb3 ~@2", V: "~@5 g5 ~@11 e3@5 f5 ~",
  W: "~ [g3,d4,f4]@3 ~ [g3,d4] ~ [g3,d4,f4]@4 e4 ~@12", X: "[g3,c4,f4]@11 ~@2 f4 ~@3 g3 ~ f4 ~@4",
  Y: "~@11 ab3 ~ e3@2 ~@3 e3@2 ~@4", Z: "c4@11 ~@3 d5@9 ~, ~@6 b3@5 ~", AA: "~@7 eb5 ~@8 g5 ~@7", AB: "~@15 a4 bb3 ~@7",
  AC: "bb3 [g4,eb5]@2 ~@21", AD: "~@17 f4 ~@6", AE: "~@10 e3 c6 ~@11 eb3", AF: "~@5 g5@3 ~@8 f4@2 ~@6",
  AG: "~@11 [ab3,d4] ~@12", AH: "~@2 g4 ~@20 a3", AI: "f3 ~@23", AJ: "~@23 c4", AK: "g3 ~@12 a5@2 ~@9",
  AL: "[eb3,bb3] ~@23", AM: "~@11 [a3,d4] ~@11 c5", AN: "f4 db5 ~ d5 ~@13 g3 ~@6",
  AO: "[~@17 b5 ~@5 e3@2 ~@7 f6 ~@4 e3@2 ~@9, ~@19 d4@6 ~@23]/2", AP: "c4 ~", AQ: "~@11 f4@3 ~@7 a5@2 [f3,b3,eb4]",
  AR: "~@21 a4@2 ab3", AS: "~@3 g4 a3 ~@6 [eb3,a3,d4] ~@4 eb3 [a3,d4] ~@6", AT: "~@12 c4@6 b3@5 ~",
  AU: "~@18 e3 ~@5, ~@7 c4@5", AV: "~@5 f3 ~@18", AW: "[~@23 g3@2 ~@2 f4@2 ~@7 g3@2 ~@10, ~@23 c4 ~@24]/2",
  AX: "~@2 f4@2 ~ c4 ~@6 eb4 ~@6 f4@2 ~@2 c4", AY: "~@5 f4 f4@2 ~@9 c4 ~@6", AZ: "g3 ~ g4 ~@21", BA: "f3 ~@11",
  BB: "~@13 [c4,f4]@3 ~@4 [f4,b4] ~@3, ~@19 b3@2 ~@3", BC: "~ [f3,b3]@3 ~@15 d5 ~@4, ~@9 c5 ~@2",
  BD: "[a3,d4] ~@5 a3 ~@5", BE: "~@17 ab5 ~@6", BF: "[~@13 e3@13 ~@10 c4 ~@11]/2", BG: "~@2 d3 ~@7 f3 ~@3 f3 ~@9",
  BH: "~ f3 ~@22", BI: "~@10 g3 ~@3 g6@2 ~@8", BJ: "~@7 d5 ~@16", BK: "~@13 d4 ~@3 d4 ~@6", BL: "~@9 f5 ~@7 g4 ~@6",
  BM: "~@5 g3 ~ f5@2 ~@9 c4@3 ~@3", BN: "~ [a3,d4,g4]@10 ~@13", BO: "~ c4 ~@22",
  BP: "g3@4 ~ [g3,f4] g3@3 ~@2 [f3,b3] ~@12", BQ: "[c4,f4]@5 ~@7, g3@5 ~@19", BR: "~ c4@10 ~@13", BS: "~@19 e3 ~@4",
  BT: "~ c4@10 d3@13, eb3@11 bb4@7 ~@6", BU: "~@13 e3 ~@4 e3@2 ~@4", BV: "~@12 [d3,b3]@11 ~",
  BW: "[~@26 d4 d4@2 ~ d4 d4@2 d4@2 d4@2 d4@2 ~@2 d4@2 d4@2 d4@2 d4@2 d4@3 d4@48 ~@20, ~@21 d4@5 ~ a5@48 ~@45, ~@23 a4@48 ~@49, ~@41 c8@48 ~@31]/5",
})).s("gm_piano").gain(0.24).pan(0.8)

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

// drums · kick
const kick = s("bd").struct("<~@101 [~@23 x] [~@11 x ~@12] ~@4>").gain(0.3)

// drums · rim
const rim = s("rim").struct("<~ [~@3 x]!15 ~ [~@3 x]!14 ~@2 [~@3 x]!68 ~@6>").gain(0.52)

// drums · snare
const snare = s("sd").struct("<~@15 A B@2 ~@11 C D ~@2 B ~@14 E ~@15 E ~@27 F G H G I C ~ J K L M ~@4>".pickRestart({
  A: "x!2", B: "x", C: "~@2 x ~@3 x ~@2 x ~@2", D: "x ~@5 x ~@4 x", E: "~@11 x", F: "~@23 x",
  G: "x ~ x ~@3 x ~@2 x ~@2", H: "x ~@4 x ~@2 x!2 ~ x", I: "x ~@4 x ~@3 x ~ x", J: "x ~@4 x ~@5 x", K: "~@5 x ~@5 x",
  L: "~@10 x ~@7 x ~@4 x", M: "~@5 x ~@6",
})).gain(0.3)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@15 [~@4 x!2 ~@6] [~@10 x!2] ~@75 [~@11 x] ~ [~@5 x] ~@12>").gain(0.15)

// drums · hihat
const hihat = s("hh").struct("<~ [~ x ~ x]!30 ~@2 [~ x ~ x]!69 ~@5>").gain(0.52)

// drums · crash
const crash = s("cr").struct("<~@17 A ~@12 B ~@2 C ~@14 B ~@15 B ~@16 A ~@19 B D ~@4>".pickRestart({
  A: "x", B: "~@23 x", C: "~ x ~@22", D: "~@11 x ~@12",
})).gain(0.37)

// drums · ride
const ride = s("rd").struct(`<
  ~ A@16 B A@12 C ~ D B A@14 C B A@14 C B A@14 C B A@10 C E F E G H A@3 I ~@5
>`.pickRestart({
  A: "x ~@5 x ~@4 x!2 ~@5 x ~@4 x", B: "~@6 x ~@4 x!2 ~@5 x ~@4 x", C: "x ~@5 x ~@4 x!2 ~@5 x ~@5", D: "~@23 x",
  E: "~@2 x ~@3 x ~@2 x ~@2", F: "x ~@9 x ~@5 x ~ x ~@4 x", G: "x ~@5 x ~@3 x ~@5 x ~ x ~@4 x",
  H: "~@4 x ~@7 x ~@5 x ~@4 x", I: "x ~ x!2 ~ x ~@2 x!2 ~@2",
})).gain(0.44)

stack(piano, piano_soft, bass, kick, rim, snare, snare_soft, hihat, crash, ride)

More by Oscar Peterson