Strudelify
Emily cover art

1969 · Exclusively for my Friends – Vol. VI: Travelin' On

Emily

Oscar Peterson

KeyF majorTempo176 bpm
0:00/0:00
// Emily — Oscar Peterson
// 176 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 133 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(176/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@2 B@3 C@4 D E@2 F G H@3 I J K@3 L@2 M@2 N O P Q R@3 S T U V W X Y Z AA AB AC AD AE@3 AF AG AH AI AJ AK AL AM@2 AN
  AO@2 AP AQ AR AS AT@5 AU AV@4 AW AX@2 AY AZ BA@4 BB@3 BC BD BE BF@2 BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV BW
  BX BY BZ CA CB CC@2 CD@3 CE CF CG CH CI CJ CK CL CM CN CO CP CQ ~@2
>`.pickRestart({
  A: "[[g3,c4,d5,a5,d6,e6,a6]@9 ~ [g3,a3,c4,e4,a5,d6,e6,a6]@17 ~ [e3,b3,d4,g4,d5,e5,a5]@8 ~@6 a5@6, ~@3 [a3,g4,db5,e5,g5]]/2", // Am7 Em7 A7
  B: "[f5@10 f5@18 [bb3,d4,eb4,g4,bb4,eb5,f5]@7 ~ [a3,eb4,g4]@5 ~ a5@5 ~ [bb4,f5]@9 ~ [d4,f4,d5]@11 ~ [ab3,b3,d4,f4,d5,ab5,b5,d6] ~, d5@2 ~@33 eb5@11 ~@26, ~@36 [db5,g5]@11 ~@25, ~@41 [a3,eb4,g4]@5 ~ [a3,bb3,d4,f4,bb5]@10 [a3,bb3,bb5,d6]@11 ~@4]/3", // Ebmaj7 Am7b5 Bb5 Dm Abdim Dbdim Am7b5 Bbmaj7
  C: "[~@4 [ab3,d5,b5,d6]@8 ~@5 bb5@4 ~ [e5,g5]@30 c5 f5@3 ~@2 f5 ~ g5@3 g5@2 a5@2 ~@4 a5@2 bb5@8 db6 d6@14, ~@4 [b3,d4,f4]@17 [g3,a3,c4,e4,a5]@32 ~@43, ~@4 ab5 ~@7 c6@9 c5@30 ~@45]/4", // Abdim Em Bdim Am7
  D: "~@10 d6@2 c6 ~ c6 ~@3 bb5@2 ~@4",
  E: "[ab5 ~ a5@3 ~ f5@3 ~@3 bb4@4 ab4 ~ a4@2 ~@3 f4@12 ~@5 d5 ~ f5@2 ~@4, c6@5 ~@43]/2",
  F: "a5@11 d5@3 ~@2 f5 a5@2 ~@5", G: "a5@3 ~ f5 ~ d5@2 ~@4 d5@4 ~@2 a5@3 ~ g5@2",
  H: "[a5@2 e5 ~ c5 ~@5 g4 ~ bb4@15 ~ [f4,bb4,c5]@8 ~@6 g5@5 ~ [g4,c5,g5,a5]@9 ~ [e4,g4,g5,a5]@14, ~@27 b3@8 ~ [bb3,e4,a4,f5]@11 e4@9 ~@16, ~@48 e5 ~@9 e5 ~@13]/3", // Fsus4 Am7 A7 Bbmaj7
  I: "[e3,b3,d4,g4,d5]@10 ~@2 g4@3 ~ a5@7 ~, ~@10 a5@2 g5@11 ~, ~@11 [a3,db4]@12 ~, ~@12 db5 ~@11", // Em7 A
  J: "[d3,f4,a4,d5,f5]@7 e5 ~ eb6 ~@2 ab5 ~ e5 eb5 ~ db5 c5 ~@2 bb4 g4 ~, ~@9 e4@10 ~@5, ~@11 db6@2 ~@11", // Dm
  K: "[~@6 g4@4 bb4 ~@5 d5 ~ [c5,eb5]@3 ~ [f4,d5]@6 f4@2 ~@6 bb4@3 ~@3 c5@2 ~@2 db5 ~ d5@3 ~ f5@8 e5 f5@2 e5 c5@2 d5 ~@2 d5 bb4 ~, [eb5,g5]@10 ~@2 a4@9 ~ f3@30 [ab3,d4]@20, ~@15 f5@5 ~@2 bb4 ~@19 b4 ~@9 g5@2 ~@18]/3", // Cm Dm Eb Abdim
  L: "[c5@3 ~ c3@2 bb4@2 ~@2 c5@2 a4 ~ f4 ~ c4 bb3 ~ g3 ~ ab3 ~ a3@4 e3 ~@6 f4@2 g4@3 ~ g4@2 a4@2 ~@4, ~@4 a4 ~@5 ab4 ~@17 f3@12 ~@8]/2",
  M: "[bb4@10 ~@6 [a3,f4] ~@17 d5 ~@2 d5@6 ~@5, ~@10 d5@17 ~@9 c5@9 ~@3, ~@16 d4@7 d4@14 ~@11]/2", // Dm
  N: "a4@3 a3 c5 ~ f5@2 ~@4 a4@3 ~ e5 g5@6 ~, ~@11 a5@3 ~@3 g4@2 ~@5",
  O: "f5@4 d4@2 ~@6 [c5,db5] ~ d5 ~ [f4,f5] ~ [f4,f5]@3 ~ d5 ~, d5@2 ~@2 db4 ~@7 d3@6 ~@6, e5 ~@23", // Dbmaj7 F
  P: "f5@2 ~@2 [d3,f4] ~ d5@2 ab4 ~@3 d4@3 ~ f4 ~ g4@2 ~@2 [g4,d5]@2, ~@5 g2@18 ~, ~@6 g4 ~@17", // Dm G5
  Q: "~@2 g4 b2 [c3,f4] ~ [g4,d5]@3 ~@3 [f4,b4,c5] ~ g4 f4 [c3,c4] ~ bb3@3 ~ ab3 ~, ~ ab4@2 ~@21", // F5 G5 F C
  R: "[~@4 bb2 ~ [g3,db4]@6 [gb3,c4]@11 ~@7 d6@2 ~@2 c6@2 ~ a5@3 f5 ~ d5@3 ~@2 a3 f5@3 ~ f4 ~ c5@3 a4@3 ~ f4@3 c4 ~ d4 ~ f4 ~ g4 ~, a3@6 ~@17 f3@16 ~ [e3,bb3]@7 eb3@2 ~@23, ~@24 b3@14 ~@16 ab4 ~@17]/3", // Gdim Gbdim Edim
  S: "ab4 ~ d5 ab4 f4 ~ g4@3 ~ e4 ~ f4@3 ~ d4 ~ a3@4 f3 ~", T: "g3 ab3@2 ~ f3 ~ g3@4 ~@2 f3@6 ~@6",
  U: "~@6 c4 ~@2 eb4 ~ f4 g4 bb4@2 db5 ~ d5 eb5 ~ d5 ~@3",
  V: "f5@3 ~@3 eb5@3 ~ db5 ~ [d5,f5]@2 ~@2 f4 ~ g4@2 ~@2 ab4@2", // Dm
  W: "~ d5 ab4 ~ f4 ~ [g4,d5]@4 f4 ~@2 d5@3 f4 ~ [bb4,d5]@3 ~ b4@2, ~@6 e5 ~@5 ab4@4 ~@6 a3 ~", // G5 Bb
  X: "d5@2 ~ ab4 f4 ~ [bb4,d5]@3 ~ ab4 ~ a4 ~ f4 ~@3 bb3@2 f3 ~ ab3 ~", // Bb
  Y: "a3@4 gb2 [e3,bb3]@6 ~@7 g5 ab5 g5 f5 ~ eb5, ~@11 [eb3,a3]@10 ~@3", // Edim Ebdim
  Z: "d5 ~ c5 bb4 ~ ab4 f4 ~ eb4 ~ ab3 c4 g4 ~ e4 f4 ~ g4 ab4 ~ bb4 ~@3",
  AA: "db5 d5 ~ eb5 e5 ~ g5 f5 ~ d5 ~ [ab3,b4] ~@2 f4 b4 ~ ab4 d5@2 b4 ab4 ~ f4", // Abm
  AB: "c5@2 ~@2 [c3,a3,c4] ~ f4 ~ a4 ~ c5@2 a4@2 ~@2 [a2,e3,a3] ~ [e4,a4]@3 ~ a3 ~", // F A5
  AC: "[d4,gb4]@3 ~ gb3 ~@7 c5 db5 d5 ~ f5 ~ f5@3 ~ d5 f3", AD: "f5@3 ~ a4 ~@3 f5 ~ a5@2 e5@3 ~ d5 ~ g5@4 e5 ~",
  AE: "[f5@3 ~ [f3,e4,a4] ~ c5 d5 c5 ~ a4 ~ b4@3 ~ [f3,e4]@2 f5@3 ~ eb5 ~ e5@3 ~ d6@2 bb5 ~ bb5 ~ d5@2 [a5,c6]@3 ~@2 b5@3 ~@2 [g5,bb5]@2 ~@4 c5@2 ~ d5 ~ f5 g5@2 ab5 ~ d6@2 f5 ~ [g5,d6]@2 ~ e4 [f5,c6]@2, ~@16 b3@6 [bb3,d4]@41 ~@6 a3@2 ~, ~@16 [g4,g5] ~@14 d6@2 ~@7 ab5@2 ~@20 ab5 ~@7 e5 ~]/3", // Fmaj7 Am Gm G5 F5 Bb G
  AF: "~ g5 f5 ~ c5 ~ [bb4,f5] ~ a4 ~ [bb4,f5] ~ a4 bb4 f5 [b2,a4] c3 f5 bb4 a4 ~@2 f5@2, ~@22 bb4 ~", // Bb5 B7
  AG: "a4 ~ [bb4,f5] ~ a4 ~ [bb4,f5] ~ a4 ~ [bb4,f5] ~ a4 ~ [bb4,f5] ~ a4 ~ [bb4,f5]@3 ~ [c5,f5] ~", // Bb5 F5
  AH: "~ c5 a4 ~ f4 ~ g4@3 ~ e4 ~ f4@4 [db3,b3,e4]@7 ~", // Dbm7
  AI: "~ f6 eb6 d6 ~ c6 bb5 ~ ab5 a5 ~ gb6 eb6 ~@2 f6 ~ f5 ~@2 eb6 ~ c6 [bb2,db6], c3@5 ~@3, [bb3,eb4]@13 ~@3 eb4@3 ~@5", // Bbm Eb5
  AJ: "~ d6 db6 c6 ~ bb5 g5 ~ f5 eb5 ~ db5 c5 bb4 ~ g4 f4 ~ eb4 db4 f3 ~ bb3 ~",
  AK: "g3 f3 ~ d4 b3@2 ab3 ~ f3 f4 ~ d4 c4 ~@2 ab4 ~ f4 d4 ~@2 [f3,d5] ~ b4", // Dm
  AL: "~@2 e4 ~ [c3,a3,f4] ~ bb4@2 c5@2 ab4 ~@2 a4 f4 g4 c4 ~ [bb3,f4]@2 [f3,g3] ~@3, ~ c5@2 ~@21", // F Bb5 Fsus2
  AM: "[a3@4 gb2@2 [e3,bb3]@6 ~@4 bb5 ~ [db5,db6]@3 ~ d6@2 ~ bb5 ~ bb5 f5 ~ [eb5,g5]@3 ~ f5@2 ~ d5@2 ~ f4 ~ g4@2 ~@2 ab3@2, ~@12 [eb3,a3]@10 d3@19 ~@7, ~@22 ab3@15 ~@11, ~@22 d5 ~@3 d6@2 ~@6 db5 ~@11 f4 ~]/2", // Edim Db Eb Ebdim
  AN: "g4 ~ ab4 f4!2 ~ [g4,d5]@4 d4 ~ f4@2 ~@2 d5@2 db5@4 b4 ~, ~ d5@2 ~@13 ab3@7 ~", // G5
  AO: "[c5@3 ~ [a3,c4] ~ f4 ~ a4@2 c5@2 a4@4 db3@2 g4@2 ~@3 f4@4 d3 db3 ~@5 d2 c5 ~ db5 d5 db3 [f4,f5] ~ [f4,f5]@3 ~ d5 ~, ~@16 e4 ~@13 d3@9 ~@9]/2", // Am F
  AP: "f5@3 ~ [g2,b3,f4] ~ [f4,g4] ~ ab4@3 ~ d4@3 ~ [gb2,g2,f4] ~ g4 ~@5, ~@3 d5@2 ~@7", // G7 Fsus2
  AQ: "[b4,d5]@4 c2@2 [bb4,d5]@3 ~ a4@2 ~ a4 ~ f4 c4 ~ [bb3,f4]@3 ~ ab3 ~, ~@4 f4 ~@7 c5@2 ~@10", // Bm Bb Bb5
  AR: "a3@4 bb2 [g3,db4]@6 ~ [gb3,c4]@12", // Gdim Gbdim
  AS: "~@4 [a3,c4,d4,f4,a4,c5] ~@5 [d4,f4,g4,bb4,d5,f5]@8 [e4,db5,e5] bb4 ~@4, ~@9 [g4,g5] ~@2", // Dm7 Gm7 Dbm G
  AT: "[[f4,a4,c5,d5,f5,a5]@9 ~ [a3,c4,d4,f4,a4,c5]@17 ~ [e3,d4,g4,a4,d5,e5,a5]@7 ~@7 a5@3 ~ [d3,c4,f4,c5,f5]@12 ~@8 b4@3 ~@9 bb4@4 [e3,ab4]@6 [eb3,a3,db4,gb4]@5 ~ [f2,d3,g3,c4,f4,a4]@13 [g3,c4,f4,bb4]@4 ~ [bb3,f4,a4,d5]@4 [d4,ab4,b4,f5]@4, e4 ~@35 [g3,db4,g4,a4,db5,e5,g5]@9 ~ d5@2 ~@10 [db3,b3,e4,ab4]@11 ~ [c3,bb3,eb4,g4,d5]@12 gb2@11 ~@27, ~@65 bb4@4 ~@13 [b3,db4]@5 ~@33]/5", // Dm7 Em7 Dm7 E Ebm7b5 Dm7 Gm7 Bbmaj7 …
  AU: "~ [f4,b4,e5,ab5]@3 ~ [d4,g4,db5,e5]@4 [b3,f4,bb4,d5]@4 [ab3,d4,g4,b4]@3 ~ [f3,b3,e4,ab4]@4 [d3,ab3,db4]@3, ~@17 e3 ~@6", // E Dbdim Bb G E Db
  AV: "[~ [c3,a3,c4,e4]@11 [bb2,e3,g3,d4]@9 ~ [f3,c4,db4]@7 ~ c6 a5 ~@2 e5 eb5 ~ c5 bb4 ~ gb4 f4 ~ eb4 d4 ~ c4 bb3 ~@5 db3 ~ d3 ~ d4 b3 ~@2 e3 ~ f3@2 g3 bb3 ~@8 f3 ~ g3 ab3 ~ bb3 b3 ~ c4 db4 ~ d4 eb4 ~ e4 ~ f4 ~ d4 [f3,c4] ~, ~@21 a2@8 ~@11 f2@11 ~ eb3@2 ~@6 c4@2 ~@7 [b1,d3]@22 ~@3 c2@2, ~@22 d3 ~@7 g5@3 ~@57 g4@2 ~@4]/4", // Am Em7b5 Dbmaj7 F5 Bm
  AW: "c5 a4 ~ g4 f4 ~ f5 d5 ~ c5 ~ a4 a5 ~ e5 db5 db2@2 c6 ~@3 c5 ~, ~@16 e3 ~@7",
  AX: "[~ c6@2 [d2,a5] ~@2 g6 e6 f6 c6 g5 ~@2 e6 eb6 c6 ~ bb5 a5 gb5 ~ f5 eb5 ~ db5 d5 ~ a5 f5 ~ [d5,e5] ~@2 db5 e5@2 d5 ~ c5 ~ a4 ~ bb4 b4 ~ g5 [f4,b4] ~, e6@2 ~@10 f6@2 ~@9 b3@3 ~@22]/2", // D5 Dsus2 Fdim
  AY: "bb4 a4 ~ f5 a4@2 ab4 g4@2 e5 g4 ~ gb4 ~ f4 e5 db5 ~ a4 f4 d3 eb4 ~@2",
  AZ: "e4 ~ gb4 ab4 ~ bb4 c5 ~ db5 eb5 ~ f5 gb5 ab5 ~@2 ab5 ~@2 e5 bb5@2 gb5 ~, ~@15 c6@2 ~@7",
  BA: "[ab5 ~ e5 c5 ~ gb5 d5 ~ bb4 e5 ~@2 ab4 d5@2 bb4 gb4 f4 [c5,d5] a4 ~ bb4 ab4 ~ a4 ~ f4 ~ c4 ~ bb3@2 g3@2 ab3 ~ a3 ~ c4 ~ f4 ~ a4@2 ~@2 c4 ~ a4 ~ f4 ~ c4 ~@2 [bb3,f4] ~ g3 ~ ab3 ~ [a3,b3] a4@2 ~@3 e4@2 ~@7 f3 ~ d2@5 ~ e3@6 db2@6, ~@11 c5@2 ~@10 a3@2 ~@17 a3 ~@4 [b4,c5]@2 ~@16 e2@5 ~@26, ~@65 g3@2 ~@29, ~@66 g4@4 ~ [d4,f4]@7 ~@18]/4", // Csus2 Bb5 Asus2 Cmaj7 Dm
  BB: "[[ab5,ab6]@2 ~@2 f6 ~ [ab5,ab6]@3 ~ ab6@2 ~@2 eb6 ~ c6 ~ [b5,f6] ~ f5 bb1 ab5 ~ [bb5,d6]@2 ab5 ~@2 d6 ab5 ~ f5 ~ eb5 ~ db5 ~ d5 ~ f5 ~ g5@2 ~@2 ab3 g5@2 ab5 g5 f5 d5 ~ b4@3 ~@2 ab4 e5@3 ~ ab3@2 d5@3 ~ [a3,c5]@2, [c2,eb3]@10 f2@12 d3@9 ~@41, ~@10 ab5 ~@17 bb5@2 ~@34 b4 ~@5 e4 ~]/3", // Ab Bdim Bb Am Cm
  BC: "~ c5 a4 ~ c4 ~ d4@3 ~ f4 ~ [b3,ab4] ~ [f4,g4] d4 ~ b3 ~ a3@2 ~@2 f3, ~ d5@2 ~@15 f4@3 ~@3", // E Fsus2
  BD: "~@4 gb2@2 [e3,bb3]@5 ~@7 [d6,g6] eb6 d6 [ab3,c6] b5@2, a3@6 ~@5 [eb3,a3]@9 ~@2 bb2 ~", // Edim G5 Ab Ebdim
  BE: "bb5 f5 ~ [db6,g6] eb6 db6 c6 b5 bb5 ~ [d4,ab5] f5 [db6,g6] eb6 db6 c6 b5 bb5 ~ ab5 f5 g6 [ab3,eb6] ~, ~@21 d6@2 ~", // Dbdim Ddim Dbdim Ab5
  BF: "[[b5,d6] ~ ab5 ~ [e5,f5] d5 ab5 ~ f5 b5 ~ ab5 ~ d6 b5 ab5 f4 f5 d5 ~ c5 g5 ~ [c3,e5] f5 db5 d5 ~ [f5,a5] ~ c6 a5 ~ f5 [db3,c5] a3 eb6 d6 db6 c6 ~ bb5 g5 ~ [db3,f5] [bb3,eb5] ~ db5, ~@23 a3@2 ~@23]/2", // Bm Fmaj7 C F Dbmaj7 Db Eb5
  BG: "d5 ~ f5 ~ c6@2 [e5,e6] ~ [f5,f6] ~ db6@2 e6@2 ~ d6 ~ a5 ~ f5 ~ e5 ~ [b4,c5], ~@3 a5@2 ~@19", // E F Cmaj7
  BH: "~@4 [f3,b3] ~@3 f5 e5 d5 ~ db5@3 ~ [b3,f4,e5]@2 d5@4 b4 ~, a5 ~@2, ~@4 g2@2 ~ g5@2 ~@15", // Fdim E
  BI: "c5@4 e4 a4@2 bb4 ~ d5 f5 ~ [b4,b5]@4 [f3,b3,eb4] ab5 bb5@3 e3 [bb3,d4] ~, ~@2 bb3 ~@8 ab5", // B Fm7b5 Bb
  BJ: "~ ab5@2 f5 c5 ~ [bb4,f5]@4 ~ f4 c5@2 a4@2 [b2,c3,d4] ~ f4@4 [b2,c3] b2, bb5@2 ~@10 ab4 ~@11", // Bb5 Bm Cmaj7
  BK: "~@4 c2@5 ~ e2 ~ [c6,db6] ~ d6 ~ [f5,f6] ~ [f5,f6]@3 ~ d6 f1, ~ c3@6 ~@4 f2@11 ~@2, ~@8 f1 ~@3", // Dbmaj7 F
  BL: "[f5,f6]@2 ~@4 g5 ~ ab5@3 ~ [f5,c6]@3 ~ [a3,c4,d4,f4] ~@5 g2 bb3, ~@3 d6@2 ~@7", // F F5 Dm7
  BM: "[f5,f6]@3 ~@3 d6@2 ~@4 ab5@4 f5 ~ g5@2 ~ d2 [g5,d6]@2, ~@22 f3 ~", // F G5
  BN: "~ ab5 g5 ~ f5 ~ g5@2 ~@8 [db3,b3,e4]@8, ~ f5", // Dbm7
  BO: "~@6 d7 eb7 d7 c7 ~ bb6 g6 ~ f6 eb6 ~ d6 c6 ~ bb5 [bb2,g5] ~@2, c3@7 ~@5, [bb3,eb4]@5 ~@2 a3 ~@4", // Eb Eb5
  BP: "eb5 ~@3 bb4 ~ g4 f4 ~ eb4 d4 ~ c4 bb3 ~ g3 ~ f3 d4 ~ b3 ab3 ~ f3, ~@11 [b1,d3]", // Bm
  BQ: "~ e4 eb4 ~ c4 b3@2 ~@2 g4 d3@2 f4 ~ g4 ab4 bb4 ~ b4 c5 ~ db5 d5 ~, f4@2 ~@8 e4 ~@10 [c2,f3]@2 ~", // F5
  BR: "eb5 e5 ~ g5 e5@2 a4 bb4 [a3,f4] c4 c5 e4 ~ f4 bb4 ~ [a4,b4] ~ g4 f4 ~ e4 c4 ~, ~@4 f5 ~@4 d5@2 ~@10 d4@2 ~", // Dm Asus2
  BS: "a3 ~ g4 e4 ~ f4 ~ c4 eb4 g4 ~ bb4 d5 ~ eb5 b4 eb4 ~ c5 ~ f4 [a3,eb4,bb4] ab4 [bb2,c4,d4,a4], ~@15 bb3@2 d5@2 ~@5", // Eb Bbmaj7
  BT: "~ f5 ~@4 f5@3 a3 [bb3,d4,f4,d5] ~ bb4 ~ bb4 ~ f4 ~ g4@4 [ab3,f4] ~", // Bb Db
  BU: "d5@2 ab4@2 f4 ~ g4@4 f4@6 [b2,ab3]@6 [g3,a3,c4,e4,a5,eb6] [e6,a6], g4 ~@5 d5@10 d4 ~@7", // E Am7 A5
  BV: "~@4 [g3,c4,e4] [d4,a5,eb6,e6,a6,b6] ~@4 [g3,c4,e4,e6,f6,a6] [a5,b5,eb6] bb3 g5@4 ~@2 [a5,db6,e6,a6]@4 ~, ~@4 a3@2 ~@6 [g3,db4,e4,e6,g6]@5 ~ [g3,bb3,db4,e4]@5 ~", // C Dsus2 Fmaj7 B7 A Dbdim Gdim
  BW: "~ [gb3,gb5,c6,gb6]@9 ~ e6 ~@11 f3, [c4,d4,f4,d6]@5 [gb3,c4,e4,gb6]@5 [a5,b5,c6] d3, ~@5 [a6,d7]@4 [b6,c7,e7]@3, ~@11 d6@8 [d6,e6,f6,g6]@5, ~@17 f7@7", // Gbdim Dm7 Gbm7b5 Am D5 Cmaj7 Em7
  BX: "[gb3,b3,d4,e4,g4] ~ [b3,g4] ~@2 a3 [bb3,d4,f4,g4,b4] b3 b4 ~@2 c4 [db4,f4,g4,b4] d4 d5 ~ eb4 e4 [a4,b4,d5] ~ [a4,b4,d5,f5] ~ g4 ab4, ~ g3@5 ~@3 a3@2 ~@4 d4@2 ~ f4@2 ~ e4@2 ~, ~@2 f3 ~@2 b3 ~ c4 ~@4", // Em7 Em G7 Db7 Bm7 Bm7b5
  BY: "[b4,d5,f5] a4 [b4,d5,f5,a5] [f4,g4] ab4 ~ [d5,f5,a5] [d5,f5] c6 c5 ~ d5 [eb5,f5,a5,c6] [e5,f5,a5,c6] e6 d5 f5 gb5 [g5,a5,c6,e6] ~ [g5,a5,b5,c6,g6] ~@3, ~@5 c5@2 ~@3 c5@2 ~@3 e5@2 ~@7", // Bdim Bm7b5 Fsus2 Dm F7 Fmaj7 Am7 Cmaj7
  BZ: "~@4 [g5,bb5,d6,g6] f6 ~ [g5,d6]@3 ~@3 [g5,bb5,c6,e6]@4 bb4 ~ [d5,f5,g5,bb5,d6]@5, ~@6 [f5,bb5]@5 ~ e5@4 ~@8", // Gm G5 C7 Gm7 Bb5
  CA: "~ [e5,g5,a5,c6]@5 ~ c5@3 ~ c5 ~ f4@4 ~@2 g5@5, c5@5 ~ c4@5 ~@2 f5@3 ~ f5@7, ~@3 g4", // Am7
  CB: "e5 a4@9 [g3,a3,c4,e4,a4,d5,e5,a5]@12 [g3,d4,a5,d6,e6,a6] e3, [g3,a3,c4,e4,d5,a5]@9 ~@13 b3@2", // Am7 Gsus2 Am7
  CC: "[~@4 [e3,g3,b3,d4,a5,d6,e6,a6]@7 ~@7 a6@5 ~@11 f6@8 d6@2 eb6 d6 c6 ~, ~@12 [g3,a3,db4,e4,g5,db6,e6,g6]@11 f4@21 ~@4, ~@23 f6@11 ~@14, ~@8 [d3,c4,f5,a5]@7 ~, ~@4 d6@3 ~]/2", // Em7 A7 Dm7
  CD: "[[bb5,d6] ~ g5@2 c6@2 a5 ~ f5@2 c5 ~ bb4@2 f4 ~ [a3,eb4]@2 bb4@2 ~@2 bb4 ~ b4@5 ~ [bb4,d5]@4 ~@2 ab4@4 ~ d4 f4@4 [ab3,d4]@7 ~@5 f6@2 e6 ~ f6 ~ a5 ~ d6@2 ~@4, ~@4 ab5 ~@7 f5 ~@3 ab4 ~@5 [bb2,ab3]@24 b2@14 ~@12, ~@22 d5@6 ~@8 d5@10 ~@12 f5 ~@4 e6@2 ~@7]/3", // Bb Adim Bb Abdim Bb7
  CE: "c6@2 d6 c6 a5 ~ e5@4 c5 ~ d5@3 ~ c5@2 bb4@4 ab4 ~", CF: "a4@2 ~ e3 f3 ~@5 f5 ~ g5@2 ~@2 [e3,g5] f3 a5@2 ~@4",
  CG: "bb5@2 ~@4 d6@2 ~@4 f6@4 d4 ~@6 d4", CH: "b5@2 ~@2 d6 ~ f6@2 ~@4 ab6@3 ~ f6 ~ a6@3 ~ f6@2",
  CI: "~ a6 f6 ~ c6 ~ bb5@3 ~ ab5 ~ a5@3 ~ e5 ~ g5@3 ~@3", CJ: "gb5@3 ~ eb6 ~ c6@3 ~ db6 ~@5 d5 ~ f5 ~@5",
  CK: "ab5@3 ~@3 ab5@4 ~@2 f5@2 ~@10", CL: "ab5@3 ~@3 ab5@4 ~@2 f5 ~ f5 ~ c5 ~ e5@2 ~@2 g5@2",
  CM: "f5 ~ f5 ~ c5@2 bb4@4 ~@2 a4@2 ~@10", CN: "~@6 c5@2 ~@4 f5@3 ~@3 g5 ~@5", CO: "a5@2 ~@16 a5@3 ~ f5 ~",
  CP: "a5@2 ~@2 bb5@2 ~ b5@2 ~@2 c6@2 ab5 ~ a5 ~@2 ab5 a5@2 ~ f5@2", CQ: "a5 ~ f5 ~@3 bb4@2 ~@16",
})).s("gm_piano").gain(0.36).pan(0.9)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
  A B C@2 D E ~@3 F G ~@2 H I J@2 K L@3 M N O P@2 Q R ~ S ~ T ~ U V W X Y Z AA AB AC ~ AD AE AF@3 ~ AG AH AI@2 AJ AK ~
  AL AM AN AO AP@2 ~ AQ AR ~ AS ~ AT AU AV AW AX ~ AY AZ@2 BA BB BC@2 BD ~ BE BF BG BH ~ BI BJ BK BL BM BN ~@4 BO BP BQ
  BR BS@2 BT BU BV BW BX BY BZ ~ CA ~ CB@3 CC@2 CD CE CF CG CH CI CJ CK CL ~@2 CM ~@2
>`.pickRestart({
  A: "a3@3 ~@5", B: "~ [db4,e4]", C: "[~@2 d5@25 ~@9 a4@10 ~@2, [d3,c4,f4,a4]@7 ~@5]/2", D: "d5@5 ~@7",
  E: "~@4 bb5 ~@2 ab5@4 ~ d5@9 ~@3, ~@11 ab3@10 ~@3", F: "~@13 d6 ~@2 f5 ~@7", G: "~@10 c5 ~@10 d4 ~@2",
  H: "~@16 f5 ~@7", I: "~ g5 ~@3 b4@4 ~@15", J: "[~@26 e5@7 ~@3 e5@12, ~@23 c4@9 ~@16, ~@24 a3@9 ~ [a3,c4,c5]@14]/2",
  K: "~@16 db5@7 ~",
  L: "[~@6 eb5@2 ~@2 db3@10 b4 ~@3 eb4@10 ~ [a3,eb4]@10 ~@9 f4@5 ~@13, c4@8 ~@2 b3@9 ~@4 [c3,bb3]@11 ~@11 [bb2,d4]@23 ~@4]/3", // Adim C7 Bb
  M: "~@4 c3 ~@14 e5 ~@4, ~@4 b2@19 ~", N: "~@2 a3 ~@9, ~@4 e4 ~@19", O: "g3 ~@16 f3 ~@6",
  P: "[~@16 bb3@7 [ab3,b3,g4]@15 ~@10]/2", Q: "~@3 [c4,d4,f4] ~@7 [db3,e4] a3 ~@11", R: "~@2 d4@3 ~@3",
  S: "~@2 a2 ~@19 [f2,g2] ~", T: "~@22 c5 ~", U: "~@22 d2 ~", V: "~@5 d3 ~@6", W: "~@8 d4 ~@15, [c3,bb3]@19 ~@5",
  X: "bb2@6 ~@10 [bb2,a3]@2 ~@4 [b2,ab3] ~, a3 ~@5", Y: "~@17 ab3@3 ~@2 c3 ~, ~@17 b2 ~@6",
  Z: "~ b4 ~@9 c5 ~@4 [c3,c4] ~ f4 ~@2 g3 ~@2", AA: "~@18 d6 c6 ~@2 d3@2, ~@7 ab3",
  AB: "~@9 d4 d3 ~@5 d3@2 ~@3 b4 ~ [b4,c5]", AC: "~@12 ab4@2 ~@6 [b2,ab3,d4] ~@3, ~@11 [b2,d4]@2 ~@11",
  AD: "~@5 gb3@8 ~@3 gb3@4 ~@3 b3", AE: "~@6 d5 ~@9 [gb3,c4,f4] ~@7", AF: "[~@4 b3 ~@17 e3@41 ~@6 c3@2 ~]/3",
  AG: "~@21 d2 f3 ~", AH: "a4 f5 ~@22", AI: "[~@10 b5 ~@3 [b5,c6] ~ a3@4 ~@3 d4@2 ~@19 e3 c4 ~@2]/2",
  AJ: "~@3 f2 ~@8 b3 ~@4 f3 ~@3 e3 ~@2", AK: "~@13 g4 ~@3 f3 ~@6", AL: "~@22 [c4,d4] ~, ~@11 b2",
  AM: "~@3 g4 ~@12 d4@5 ~@3, ~@16 b2@3 ~@5, ~@16 c4 ~@7", AN: "~@4 c3 ~@11 a3@2 ~@6", AO: "~@2 d3",
  AP: "[~@24 c5 ~@3 e3 ~@19, ~@19 g2@9 ~@20]/2", AQ: "ab3 ~@23", AR: "~ e5@8 ~@15", AS: "d5@3 ~@2 a4@2 ~", AT: "~@7 d5",
  AU: "~ c5@3 ~ f5@4 ~@12 [e4,f4]@3, ~ gb5 ~@22", AV: "~ f3@10 ~@13", AW: "~@5 [eb3,a3]@10 ~@9",
  AX: "~ g3 bb1@16 ~@6, ~ f3@2 ~@21", AY: "~@17 a4 ~@3 e5 ~@2, ~@10 a5 ~",
  AZ: "[~@4 [f3,e5] ~@11 [gb3,c4,f4] ~@6 [g2,f3]@3 ~@5 d5 ~@5 a4 ~@6 c5 ~ [d3,b3] ~]/2", // Fmaj7 F G7 G
  BA: "~@9 [c4,f4] ~@6 b3@2 ~@5 db4, ~@9 d3@2 ~@13", BB: "~@5 b4 ~@17 d5",
  BC: "[~@14 db3 [bb3,e4] ~@3 e4 bb3@2 ~ c3@18 ~@7, ~@19 db3@2 ~@27]/2", BD: "~@3 [g2,e3,bb3] ~@5 f3 ~@14",
  BE: "~@13 f6@2 ~@9", BF: "~@15 d4 ab3 ~@5 d4 b2", BG: "~@2 a5 ~@14 c3 ~@5 b4, ~@8 [b2,d4] ~@2 c3",
  BH: "~@3 g4 ~@2 c4 ~@12 bb3@2 ~@3", BI: "~@10 [ab3,bb3,c4,g4] ~@11 [b2,d4] ~",
  BJ: "db6 ~ g5 ~@12 b3 [ab3,d4] ~@3 b4 ~@2 e4", BK: "~@10 e4 ~@10 e4 ~@2",
  BL: "~@5 [c4,f4] ~@11 [c4,f4] ~@2 d5 ~@3, ~@5 d3@2 ~@17", BM: "~@4 d3 ~", BN: "~@2 c3 ~@9, ~@4 d3 ~@19",
  BO: "~@16 d4 ~@7", BP: "~@6 g7 ~@8 eb4 ~@5 d4@2 f5, ~@15 f3@8 ~", BQ: "~@2 d5 c5 ~@5 e3 f3 ~@12 g3",
  BR: "~@3 d4 ~@3 [f3,ab3,a3] ~ b1@2 ~@13", BS: "[~@21 b2 c3 c3@5 c2 ~@6 b4 ~@3 c3@2 ~@3 g4 ~@3]/2",
  BT: "b2 ~@12 d5 ~@8 b2@2, ~@22 d4 ~", BU: "~@16 c3 ~@3 db4@2 ~ gb6", BV: "~@14 bb3@3 ~@7",
  BW: "~@7 f5, ~@17 g7@7, ~@3 d7, ~@19 a6@5, ~@20 g5@3 ~",
  BX: "~@2 [d4,e4,f4] ~@3 a4 ~ [d4,f4,g4] ~@5 [f4,g4,b4] ~@4 db5 ~ f4@2 ~", // Dm G7
  BY: "a5 ~@3 f4 ~ ab5 a5 ~@4 e6 ~@5 [eb6,g6] ~ [eb6,e6] ~@3", BZ: "~@5 e6 ~ f6@2 ~@10 a5 ~@4", CA: "~@2 e5@7 ~@14 c4",
  CB: "[~@19 f6@2 ~ [bb3,eb4]@16 ~ g4 ~@7 a4 ~@11 f4 ~@11 c3, ~@18 g6@2 ~@2 c3@22 ~@2 d4@13 ~@13]/3", // Eb5
  CC: "[~@16 b2 ~@2 e6 ~@3 c3@24 ~, ~@5 [ab3,d4]@13 ~@4 a3@16 ~@10, ~@23 f4@13 ~@12]/2", // Abdim
  CD: "~@6 f3@8 ~ d3 ~@6 [bb2,d4] ~", CE: "~@16 [a3,bb3,f4] ~@6 [b2,ab3]", CF: "~@16 [ab3,d4] ~@5 [c3,e4] ~, ~@11 a3",
  CG: "~@16 [db3,e4] a3 ~@5 [d3,e5]", CH: "~@12 d6 ~@11", CI: "~@5 f5 ~@18", CJ: "~@5 f5 ~@7 ab5 ~@10",
  CK: "~ g5 ~@8 ab4 ~@13", CL: "~@16 c5 ~@7", CM: "~@4 c5 ~@19",
})).s("gm_piano").gain(0.14).pan(0.9)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B C D E F G H I J K L M N O P Q R S T E F G U I J K L V W X ~ Y Z AA@2 AB AC 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@2 BG BH BI BJ BK BL BM BN BO AK BP BQ BR AO BS BT BU BV BW BX BY BZ CA
  CB CC BA CD CE CF CG CH@2 BG BH CI CJ BK CK CL BN CM CN CO CP CQ CR CS CT CU CV CW H CX CY CZ CB DA DB AZ DC DD DE DF
  DG@2
>`.pickRestart({
  A: "f2@5 ~@7 f2@6 ~@6", B: "e2 ~ e2 ~", C: "d2 ~ d2 ~", D: "c2 ~ f2 ~", E: "bb2 ~ f2 ~", F: "b2 ~ f2 ~",
  G: "c3@6 ~@6 f2@6 ~@4 f2 ~", H: "f2@5 ~ f2@5 ~ g2@5 ~ a2@6", I: "bb2 ~ bb2 ~", J: "b2 ~ b2 ~", K: "c3 ~ db3 ~",
  L: "d3@5 ~@7 a2@6 ~@6", M: "g2@5 ~@7 g2@6 ~@6", N: "g2@5 ~@7 b2@5 ~@7", O: "c3@5 ~@7 c3@5 ~@5 c3 ~",
  P: "c3@3 c2@14 ~ e2@6", Q: "f2 ~ c3 ~", R: "e2 ~ a2 db3", S: "d3 ~ a2 ~", T: "f2 ~ a2 ~",
  U: "f2@5 ~ f2@5 ~ g2@5 a2@6 ~", V: "a2@5 ~@7 d3@6 ~@6", W: "g2@6 ~@6 c3@5 ~@7", X: "f2@5 ~@19",
  Y: "f2@5 ~ ab2@6 a2@6 f2@5 ~", Z: "e2@5 ~ a2@5 ~ db3@6 e3@6",
  AA: "[d3@5 ~ d3@5 ~ a2@6 a2@4 ~@2 f2@5 ~ f2@6 g2@6 a2@5 ~, ~@11 gb2@3 ~@10]/2", AB: "bb2@6 f2@5 ~ f3@5 ~ ab2@6",
  AC: "b2@5 ~ b2@6 f2@6 b2@5 ~", AD: "c3@5 ~ f2@6 a2@5 ~ c3@6", AE: "a2@6 f2@5 ~ c3@5 ~ b2@6",
  AF: "bb2@5 ~ f2@6 ab2@6 bb2@5 ~", AG: "b2@5 ~ b2@5 ~ f2@5 ~ b2@5 ~", AH: "c3@6 f2@6 db3@5 ~ a2@6",
  AI: "d3@6 d3 ~ a2 ~ f2 ~ d2@6 gb2@5 ~", AJ: "g2@5 ~ ab2@5 ~ a2@5 ~ bb2@6", AK: "b2@6 c3@6 db3@6 g2@5 ~",
  AL: "c3@6 bb2@6 a2@5 ~ g2@5 ~", AM: "f2@6 f3@5 c3@6 ~ e2@5 ~", AN: "f2@5 ~ a2@5 ~ bb2@6 c3@6",
  AO: "e2@5 ~ g2@6 a2@6 db3@6", AP: "d3@6 a2@6 g2@5 ~ gb2@5 ~", AQ: "f2@5 ~ g2@5 ab2@6 ~ a2@6",
  AR: "bb2@6 ab2@5 ~ g2@6 f2@6", AS: "b2@6 f2@5 ~ ab2@5 ~ b2@5 ~", AT: "c3@6 c3@5 ~ f2@6 f2@6",
  AU: "f2@6 f2@5 ~ g2@6 a2@6", AV: "bb2@6 c3@6 d3@6 eb3@5 ~", AW: "f3@5 ~ b2@6 d3@6 b2@6",
  AX: "c3@5 ~ c3@6 db3@6 db3@6", AY: "d3@5 ~ d3@5 ~ a2@5 ~ a2@5 ~", AZ: "a2@6 eb2@5 ~ d2@5 ~ gb2@6",
  BA: "g2@6 db2@5 ~ c2@6 e2@5 ~", BB: "f2@5 ~ e2@5 d2@6 ~ ab2@5 ~", BC: "g2@5 ~ db2@5 ~ c2@5 ~ e2@6",
  BD: "f2@6 ab2@5 ~ a2@5 ~ f2@5 ~", BE: "e2@5 ~ a2@5 db3@6 ~ e3@6",
  BF: "[d3@6 d3@5 ~ a2@6 a2@4 ~@2 f2@6 f2@5 ~ g2@6 a2@5 ~, ~@11 gb2@3 ~@10]/2", BG: "bb2@5 ~ f2@6 f3@6 ab2@5 ~",
  BH: "b2@5 ~ b2@5 ~ f2@6 b2@5 ~", BI: "c3@5 ~ f2@5 ~ a2@5 ~ c3@6", BJ: "a2@6 f2@6 c3@5 ~ b2@5 ~",
  BK: "bb2@5 ~ f2@5 ~ ab2@5 ~ bb2@5 ~", BL: "b2@6 b2@5 ~ f2@6 b2@5 ~", BM: "c3@6 f2@5 ~ db3@6 a2@6",
  BN: "d3@5 ~ d3 ~ a2 ~ f2 ~ d2@5 ~ gb2@5 ~", BO: "g2@5 ~ ab2@5 ~ a2@6 bb2@5 ~", BP: "c3@5 ~ bb2@5 ~ a2@5 ~ g2@6",
  BQ: "f2@5 ~ f3@5 ~ c3@5 ~ e2@5 ~", BR: "f2@5 ~ a2@6 bb2@6 c3@5 ~", BS: "d3@6 a2@5 ~ g2@5 ~ gb2@6",
  BT: "f2@5 ~ g2@6 ab2@6 a2@5 ~", BU: "bb2@5 ~ ab2@5 ~ g2@5 ~ f2@5 ~", BV: "b2@6 f2@5 ~ ab2@6 b2@5 ~",
  BW: "c3@5 ~ c3@5 ~ f2@6 f2@6", BX: "f2@5 ~ f2@5 ~ g2@6 a2@5 ~", BY: "bb2@5 ~ c3@5 ~ d3@5 ~ eb3@6",
  BZ: "f3@5 ~ b2@5 ~ d3@5 ~ b2@5 ~", CA: "c3@5 ~ c3@5 ~ db3@5 ~ db3@5 ~", CB: "d3@6 d3@6 a2@6 a2@5 ~",
  CC: "a2@5 ~ eb2@6 d2@6 gb2@5 ~", CD: "f2@5 ~ e2@5 ~ d2@5 ~ ab2@5 ~", CE: "g2@5 ~ db2@5 ~ c2@6 e2@6",
  CF: "f2@5 ~ ab2@5 ~ a2@5 ~ f2@6", CG: "e2@6 a2@5 ~ db3@5 ~ e3@5 ~",
  CH: "[d3@5 ~ d3@5 ~ a2@5 ~ a2@4 ~@2 f2@6 f2@6 g2@5 ~ a2@5 ~, ~@11 gb2@3 ~@10]/2", CI: "c3@5 ~ f2@5 ~ a2@5 ~ c3@5 ~",
  CJ: "a2@5 ~ f2@5 ~ c3@6 b2@6", CK: "b2@6 b2@6 f2@5 ~ b2@5 ~", CL: "c3@5 ~ f2@6 db3@5 ~ a2@6",
  CM: "g2@5 ~ ab2@5 ~ a2@6 bb2@6", CN: "b2@6 c3@5 ~ db3@6 g2@6", CO: "c3@6 bb2@5 ~ a2@5 ~ g2@5 ~",
  CP: "f2@5 ~ f3@5 ~ c3@6 e2@6", CQ: "f2@6 a2@5 ~ bb2@6 c3@6", CR: "e2 g2 a2 db3", CS: "d3@5 ~ a2@5 ~ g2@5 ~ gb2@6",
  CT: "f2@6 g2@5 ~ ab2@6 a2@5 ~", CU: "bb2@5 ~ ab2@6 g2@6 f2@5 ~", CV: "b2@5 ~ f2@5 ~ ab2@6 b2@6",
  CW: "c3@5 ~ c3@5 ~ f2@6 f2@5 ~", CX: "bb2@6 c3@5 ~ d3@5 ~ eb3@6", CY: "f3@5 ~ b2@6 d3@6 b2@5 ~",
  CZ: "c3@6 c3@6 db3@5 ~ db3@6", DA: "a2 eb2 d2 gb2", DB: "g2@6 db2@6 c2@6 e2@5 ~", DC: "g2@5 ~ db2@6 c2@6 e2@6",
  DD: "a2@6 eb2@5 ~ d2@5 ~ gb2@5 ~", DE: "g2 db2 c2 e2", DF: "f2 ~@23", DG: "[eb3@4 c3 ~ e3@4 f3 ~@5 f2@32]/2",
})).s("gm_acoustic_bass").gain(0.31).pan(0.2)

// drums · kick
const kick = s("bd").struct(`<
  ~@30 A ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A
  ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~ A B ~
>`.pickRestart({
  A: "x", B: "~@5 x ~@2 x ~@3",
})).gain(0.14)

// drums · snare
// … 27 more lines

More by Oscar Peterson