Strudelify

Such a Night

Dr. John

KeyF majorTempo121 bpm
0:00/0:00
// Such a Night — Dr. John
// 121 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 98 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(121/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 2"
const piano = note(`<
  ~ A B C D E@3 F G H I J K L M N O P Q R S T@2 U V@2 W X Y Z AA AB AC AD AE AF AG AH@2 AI AJ AK@2 AL AM AN AO AP AQ AR
  AS AT AU AV AW AX AY AZ BA BB BC BD BE@2 BF BG BH BI BJ BK BL BM BN BO BP BQ BR@2 BS BT BU BV BW BX BY BZ CA CB@2 CC
  CD CE CF CG CH CI CJ
>`.pickRestart({
  A: "bb2@11 ~ f2@9 ~ f2 ~, [f4,bb4,d5]@19 ~@5", // Bb
  B: "[bb4,d5,f5]@3 ~ [bb4,d5,g5] ~ [bb4,a5]@3 ~@7 [bb4,d5]@5 ~ f2 ~, bb2@10 g5@5 ~ f5@6 ~@2, ~@2 d5@3 ~@3, ~@3 f2@2 ~", // Bb Gm Bbmaj7 Bb
  C: "bb2@12 f2@7 ~@3 f2 ~, [f4,bb4,db5]@19 ~@5", // Bbm
  D: "[bb4,db5,f5]@3 ~ [db5,g5]@2 [bb4,db5,ab5]@3 ~@7 [bb4,db5,f5] ~@5 [bb2,f4,bb4,db5]@2, bb2@5 ~ f2@4 ~@2, ~@4 bb4 ~@5 [bb4,db5,g5]@5 ~@9", // Bbm Dbdim Bbm7 Bbm Gdim
  E: "[f2@7 ~@3 f2 ~ c2@8 ~@4 f2@6 [f4,a4,c5]@4 f2@2 [g4,db5,e5]@10 e2 ~ d2@11 ~ a2@6 [f4,a4,c5,d5] ~@3 a2 ~, [f4,a4,c5]@28 ~@8 a4@29 ~@7, ~@36 e2@8 ~@4 [f4,c5,d5]@17 ~@7]/3", // F Dbdim Dm7 F Dm7
  F: "[eb4,g4,a4,d5]@4 [g4,a4,c5]@6 ~@2 [g4,a4,d5]@3 ~ [eb4,g4,c5]@6 f2 ~, c2@11 ~ f2@7 ~@5, ~@2 eb4@2 ~ eb4@2 ~ a4@4", // Ebmaj7 Am7 Gsus2 Cm
  G: "bb2@11 ~ f2@7 ~@3 f2 ~, [d4,f4]@19 ~@5", // Dm
  H: "[bb4,d5,f5]@3 ~ [d5,g5]@2 [bb4,d5,a5]@2 bb2@2 ~@6 [bb4,d5]@5 ~ f2 ~, bb2@7 ~@5 f2@6 ~@6, ~@4 bb4 ~@5 [bb4,d5,g5]@5 ~ f5@6 ~@2", // Bb G5 Bbmaj7 Bb Gm
  I: "bb2@11 ~ f2@7 ~@3 f2 ~, [f4,bb4,db5]@5 ~, g4 ~@23", // Bbm
  J: "[bb4,db5,f5]@3 ~ [bb4,db5,g5]@2 [bb4,db5,ab5]@3 ~ bb2 ~@5 [bb4,db5,f5]@2 ~@4 [bb2,f4,bb4,db5]@2, bb2@7 ~@3 [bb4,db5,g5]@5 ~@9, ~@12 f2@7 ~@5", // Bbm Gdim Bbm7 Bbm Gdim
  K: "f2@7 ~@3 f2@2 c2@9 ~ c2@2, [f4,a4,c5]@11 ~", // F
  L: "~@4 [f4,a4,c5] ~@5 f2 ~ [g4,a4,e5]@10 e2@2, f2@8 ~@4 [e2,db5]@9 ~@3", // F A7 Dbm
  M: "[d2,f4,a4,c5,d5]@11 ~ [f4,a4,c5,d5]@5 ~@5 a2 ~, ~@6 d3@5 ~, ~@3 [f4,a4,c5,d5]", // Dm7
  N: "~@4 d5@2 c5@4 ~@2 [eb4,g4,a4,d5]@3 ~ [eb4,g4,a4,c5]@5 ~ a4@2, c2@9 ~ c2@5 ~ f2@6 ~@2, ~@4 [eb4,g4,a4]@7 ~@13", // Ebmaj7 Am7b5
  O: "bb2@11 ~@5 [d4,f4] ~@5 f2 ~, [d4,f4]@5 ~@3, ~@3 f2@2 ~", // Dm
  P: "[bb4,d5,f5]@3 ~ [bb4,d5] ~ [bb4,d5,a5]@3 ~@7 [bb4,d5]@4 ~@2 f2@2, bb2@11 ~ f2@6 ~@6, ~@4 g5@2 ~@4 [bb4,d5,g5]@5 ~ f5@6 ~@2", // Bb Bbmaj7 Bb Gm
  Q: "bb2@11 ~ f2@7 ~@3 f2 ~, [f4,bb4,db5]@5 ~", // Bbm
  R: "[bb4,db5,f5]@3 ~ [bb4,db5,g5] ~ [bb4,db5,ab5]@3 ~ bb2 ~@5 [bb4,db5,f5] ~@5 [bb2,bb4,db5]@2, bb2@7 ~@3 [bb4,db5,g5]@5 ~@7 f4 ~, ~@12 f2@7 ~@5", // Bbm Gdim Bbm7 Bbm Gdim
  S: "[f4,a4,c5]@5 ~ [f4,a4,c5]@4 f2@2 [f4,a4,c5]@5 ~ [f4,a4,c5]@5 ~, f2@6 ~@6 c2@11 ~", // F
  T: "[[f4,a4,c5]@5 ~ [a4,c5]@4 f2@2 [g4,a4,db5,e5]@5 ~ [g4,db5,e5]@4 e2@2 [f4,c5,d5]@5 ~@11 [f4,a4,c5,d5] ~@5 [a2,eb4] ~, f2@8 ~@4 e2@6 ~@6 d2@11 ~ a2@6 ~@6, ~@6 f4@3 ~@9 a4@11 ~ [f4,a4,c5,d5]@9 ~@9]/2", // F Am A7 Dbdim Dm7 Adim Dm7
  U: "[eb4,g4,a4,d5]@3 ~ [g4,a4]@6 ~@2 [g4,a4,d5]@3 ~ [eb4,g4,c5]@5 ~ a4@2, c2@8 ~@2 [c2,eb4]@5 ~@9, ~@4 [eb4,c5]@5 ~@15", // Ebmaj7 Gsus2 Cm
  V: "[[bb3,d4,f4]@9 ~ [bb3,d4,f4] ~@5 bb3 ~ [bb3,d4,f4]@3 ~@3 bb2@6 [bb3,d4]@4 bb2 ~@5 d4 ~ [d4,f4,bb4]@4 bb2 ~, bb2@10 ~@2 f2@8 ~@2 f4@13 ~@13, ~@22 [bb3,d4]@6 ~@8 f2@9 ~@3]/2", // Bb
  W: "[e4,g4,c5]@5 ~@11 [f4,ab4,c5] ~ gb4@4 g4@2, c2@11 ~ g2@6 ~@4 g2 ~, ~@3 [e4,g4,c5]@4 ~@2 c5@3", // C Fm C
  X: "c2 ~ [c6,f6]@4 ~@2, ~@6 b5 ~@17", // F5
  Y: "[c4,f4,a4]@3 ~@3 [c4,f4,a4]@4 f2 ~ [d4,f4,bb4]@3 ~@3 [d4,f4,bb4]@4 bb2 ~, f2 ~ bb2 ~", // F Bb
  Z: "[f4,a4,c5]@2 ~@4 [f4,a4,c5]@4 f2 ~ [f4,bb4,d5]@2 ~@4 [f4,bb4,d5]@3 ~ bb2 ~, f2 ~ bb2 ~", // F Bb
  AA: "[f4,a4,c5]@2 ~@4 [f4,a4,c5]@3 ~ f2 ~ [f4,bb4] ~@5 [f4,bb4,d5]@3 ~ bb2 ~, f2 ~ bb2 ~, ~@6 d5 ~@5", // F Bb5 Bb
  AB: "[f4,c5]@2 ~@4 [f4,a4,c5]@2 ~@2 f2 ~ bb2@4 [a4,c5]@2 [ab4,c5]@3 ~ [g4,c5] ~, f2@3 ~@8 bb2, a4 ~@15 ab4 ~@7", // F5 F Am Ab C5
  AC: "[f4,c5]@3 ~@3 [f4,a4,c5]@3 ~ f2 ~ [f4,bb4,d5]@2 ~@4 [f4,bb4,d5]@3 ~ bb2 ~, f2@6 ~@6 bb2 ~@11", // F5 F Bb
  AD: "[f4,a4,c5]@2 ~@4 [f4,a4,c5]@2 ~@2 f2 ~ [f4,bb4,d5]@3 ~@3 [f4,bb4,d5]@3 ~ bb2 ~, f2 ~ bb2 ~", // F Bb
  AE: "[f4,c5]@2 ~@4 [f4,c5]@3 ~ f2 ~ [f4,d5]@2 ~@4 [f4,bb4,d5]@3 ~ bb2 ~, f2 ~ bb2 ~, a4 ~@5 a4 ~@5 bb4 ~@11", // F5 Dm Bb
  AF: "[f2,c5]@3 ~@3 [f2,f4,a4]@5 ~ [g2,g4,bb4]@5 ~ [a2,c5]@5 ~, [f4,a4] ~@5 c4@3 ~@3 d4@3 ~@3 [eb4,a4]@3 ~@3", // F5 F Gm Am F Ebdim
  AG: "[f4,bb4,d5]@12 ~@4 [f4,bb4,d5] ~@5 f2 ~, bb2@11 ~ f2@9 ~@3", // Bb
  AH: "[[bb4,d5,f5]@3 ~ [bb4,d5,g5] ~ [bb4,d5,a5]@3 ~ bb2@2 ~@4 [bb4,d5]@5 ~ f2 ~ [g4,bb4,db5]@3 ~@3 [g4,bb4,db5,f5]@4 bb2 ~ [g4,bb4,db5,f5]@4 ~@2 [bb4,db5]@2 ~@2 f2 ~, bb2@7 ~@3 [bb4,d5,g5]@5 ~ f5@11 ~@15 f5@4 ~@2, ~@12 f2@6 ~@6 bb2@6 ~@6 f2@6 g4 ~@5]/2", // Bb Gm Bbmaj7 Bb Gdim Gm7b5 Bbm Gm
  AI: "[bb4,db5,f5]@3 ~ [bb4,db5,g5] ~ [bb4,db5,ab5]@3 ~ bb2 ~@5 [bb4,db5] ~@5 [bb2,f4,db5]@2, bb2@6 ~@4 [bb4,db5,g5]@4 ~@2 f5@2 ~@4 bb4 ~, ~@3 f2@2 ~", // Bbm Gdim Bbm7 Bbm Gdim
  AJ: "[f4,a4,c5]@4 ~@2 [f4,a4,c5]@4 f2 ~ [f4,a4,c5]@5 ~ [f4,a4,c5]@5 ~, f2@2 ~@2 c2@3 ~", // F
  AK: "[[f2,a4,c5]@6 [f4,a4,c5]@4 f2 ~ [e4,g4,a4,db5]@4 ~@2 [e4,g4,db5]@4 e2@2 [f4,d5]@4 ~@2 [f4,a4,c5,d5]@4 ~@2 [a2,f4,a4,c5,d5]@6 [f4,a4,c5,d5]@2 ~@2 a2 ~, f4@2 ~@4 e2@3 a4@4 ~@11, ~@4 d2 ~@3]/2", // F A7 Dbdim Dm Dm7
  AL: "[eb4,g4,a4,d5]@3 ~ [g4,a4,c5]@6 [c2,eb4] ~ [eb4,g4,a4,d5]@3 ~ [eb4,g4,a4,c5]@5 ~ a4@2, c2@8 ~@4 f2@7 ~@5, ~ eb4 ~@4", // Ebmaj7 Am7 Cm Ebmaj7 Am7b5
  AM: "[bb2,d4,f4]@11 ~ [d4,f4]@5 ~ [d4,f4]@3 ~ f2 ~, ~@2 f2 ~", // Bb Dm
  AN: "[bb4,d5,f5]@3 ~ [bb4,d5,g5] ~ [bb4,d5,a5]@3 ~ bb2 ~@5 [bb4,d5]@5 ~ f2 ~, bb2@6 ~@4 [bb4,d5,g5]@5 ~ f5@6 ~@2, ~@12 f2@7 ~@5", // Bb Gm Bbmaj7 Bb Gm
  AO: "[f4,bb4,db5]@4 ~@2 [f4,bb4,db5]@4 bb2@2 [f4,bb4,db5]@3 ~@3 [bb4,db5]@2 ~@2 f2 ~, bb2@6 ~@6 f2@6 f4 ~@5", // Bbm
  AP: "[bb4,db5,f5]@3 ~ [bb4,db5] ~ [bb4,db5,ab5]@3 ~ bb2 ~@5 [bb4,f5]@2 ~@4 [f4,bb4,db5] ~, bb2@7 ~@5 f2@7 ~@3 bb2@2, ~@4 g5@2 ~@4 [bb4,db5,g5]@5 ~ db5 ~@7", // Bbm Bbm7 Bb5 Bbm Gdim
  AQ: "[f4,a4,c5]@2 ~ [f4,a4,c5]@2 f2 [f4,a4,c5]@2 ~ [f4,a4,c5]@2 c2, f2@3 ~@3 c2@4 ~@2", // F
  AR: "[f4,a4,c5]@5 ~ [f4,a4,c5]@4 f2 ~ [g4,a4,db5,e5]@4 ~@2 [g4,a4,db5,e5]@4 e2@2, f2 ~ e2 ~", // F A7
  AS: "[f4,a4,c5,d5]@5 ~ [f4,a4,c5,d5]@4 d2@2 [f4,a4,c5,d5]@4 ~@2 [f4,a4,c5,d5]@2 ~@2 a2 ~, d2 ~ a2 ~", // Dm7
  AT: "[eb4,g4,a4,d5]@3 ~ [g4,a4,c5]@6 [c2,eb4] ~ [eb4,g4,a4,d5]@3 ~ [eb4,g4,a4,c5]@5 ~ a4@2, c2@8 ~@4 f2@8 ~@2 f2 ~, ~ eb4 ~@4", // Ebmaj7 Am7 Cm Ebmaj7 Am7b5
  AU: "[bb2,f4]@6 ~@4 bb2@2 f2@6 [d4,f4] ~@3 f2 ~, d4@4 ~@2 [d4,f4]@11 ~@7", // Bb5 Dm
  AV: "[bb4,d5,f5]@3 ~ [d5,g5]@2 [bb4,d5,a5]@3 ~ bb2@2 ~@4 [bb4,f5]@6 f2 ~, bb2@6 ~@6 f2@7 ~@5, ~@4 bb4 ~@5 [bb4,d5,g5]@4 ~@2 d5@5 ~@3", // Bb G5 Bbmaj7 Bb5 Gm
  AW: "[f4,bb4,db5]@4 ~@2 [f4,bb4,db5]@4 bb2@2 [f4,bb4,db5]@4 ~@2 [f4,bb4]@2 ~@2 f2 ~, bb2@3 ~@3 f2@3 db5@2 ~", // Bbm Bb5
  AX: "[bb4,db5,f5]@3 ~ [bb4,db5] ~ [bb4,db5,ab5]@3 ~ bb2 ~ f2@4 [bb4,db5,f5] ~ f2 ~@3 [bb2,f4,bb4,db5]@2, bb2@4 g5@2 bb2 ~@3 [bb4,db5,g5]@5 ~@9", // Bbm Bbm7 Bbm Gdim
  AY: "[f4,a4,c5]@4 ~@2 [f4,a4,c5]@4 f2@2 [f4,a4,c5]@5 ~ [f4,a4,c5]@4 c2 ~, f2@3 ~@3 c2@4 ~@2", // F
  AZ: "[f4,a4,c5]@5 ~ [f4,a4,c5]@4 f2@2 [g4,a4,db5,e5]@4 ~@2 [g4,a4,db5,e5]@4 e2@2, f2 ~ e2 ~", // F A7
  BA: "[f4,a4,c5,d5]@4 ~@2 [f4,a4,c5,d5]@4 d2@2 [f4,a4,c5,d5]@4 ~@2 [f4,d5]@2 ~@2 a2 ~, d2@6 ~@6 a2@6 [a4,c5] ~@5", // Dm7 Dm Am
  BB: "[eb4,g4,a4,d5]@4 [g4,a4,c5]@6 [c2,eb4] ~ [eb4,g4,a4,d5]@3 ~ [eb4,g4,a4,c5]@5 ~ a4@2, c2@8 ~@4 f2@7 ~@3 f2 ~, ~ eb4 ~@4", // Ebmaj7 Am7 Cm Ebmaj7 Am7b5
  BC: "[d4,f4]@4 ~@6 bb2@2 ~@4 d4 ~ [d4,f4,bb4]@3 ~ f2 ~, bb2@6 f4@11 ~@7, ~@3 d4@3 f2@4 ~@2", // Dm Bb
  BD: "[d4,f4,bb4]@4 ~@2 [d4,f4,bb4]@4 bb2@2 [d4,f4,bb4]@5 ~ [d4,f4,bb4]@4 bb2 ~, bb2@3 ~@3 f2@4 ~@2", // Bb
  BE: "[[e4,g4,c5]@4 ~@2 [e4,g4,c5]@4 ~@2 [c3,g4]@4 [f4,c5] ~ [gb4,c5]@3 ~ [c3,g4,c5]@4 ~@4 [c6,f6]@10 ~@8, c2@9 ~@3 c5@2 ~@16 b5 ~@17, ~@12 e4 ~@35]/2", // C C5 F5 Gbdim C5 F5
  BF: "[f4,a4,c5]@3 ~@3 [f4,a4,c5]@4 f2 ~ [f4,bb4,d5]@4 ~@2 [f4,bb4,d5]@4 bb2@2, f2 ~ bb2 ~", // F Bb
  BG: "[f4,a4,c5]@4 ~@2 [f4,a4,c5]@4 f2 ~ [f4,bb4,d5]@3 ~@3 [f4,bb4,d5]@4 bb2 ~, f2 ~ bb2 ~", // F Bb
  BH: "[f4,a4,c5]@3 ~@3 [f4,a4,c5]@4 f2 ~ [f4,bb4,d5]@3 ~@3 [f4,bb4,d5]@4 bb2 ~, f2 ~ bb2 ~", // F Bb
  BI: "[f4,a4,c5]@3 ~@3 [f4,a4,c5]@4 f2 ~@5 [ab4,a4,c5] ~ [ab4,c5]@2 ~@2 [bb2,g4,c5] ~, f2 ~ bb2 ~", // F Ab C7
  BJ: "[f4,a4,c5]@3 ~@3 [f4,a4,c5]@3 ~ f2 ~ [f4,bb4,d5]@3 ~@3 [f4,bb4,d5]@3 ~@3, f2@3 ~@3 bb2@5 ~", // F Bb
  BK: "[f4,a4,c5]@3 ~@3 [f4,a4,c5]@3 ~ f2 ~ [f4,bb4,d5]@3 ~@3 [f4,bb4,d5]@3 ~ bb2 ~, f2 ~ bb2 ~", // F Bb
  BL: "[f4,a4,c5]@3 ~@3 [f4,a4,c5]@4 f2 ~ [f4,bb4,d5]@3 ~@3 [f4,bb4,d5]@3 ~ bb2@2, f2 ~ bb2 ~", // F Bb
  BM: "[f2,c5]@4 ~@2 [f2,f4,a4]@5 ~ [g2,g4,bb4]@5 ~ [a2,a4,c5]@5 ~, [f4,a4]@2 ~@4 c4@3 ~@3 d4@2 ~@4 eb4@2 ~@4", // F5 F Gm Am F
  BN: "[f4,bb4,d5]@9 ~ [f4,bb4,d5] ~ f2@7 ~@3 f2 ~, bb2@5 ~@7", // Bb
  BO: "[bb4,d5,f5]@3 ~ [bb4,d5] ~ [bb4,d5,a5]@3 ~ [bb4,d5,g5]@4 ~@2 [bb4,d5]@4 ~@2 f2 ~, bb2@7 ~@3 bb2@2 ~@2 f2@5 ~@5, ~@2 g5 ~@5 f5@3 ~", // Bb Bbmaj7 Gm Bb
  BP: "[f4,bb4,db5]@4 ~@2 [f4,bb4,db5]@4 bb2@2 [f4,bb4,db5]@4 ~@2 [f4,db5] ~@3 f2 ~, bb2 ~ f2 ~", // Bbm Db
  BQ: "[bb4,db5,f5]@3 ~ [bb4,db5,g5] ~ [bb4,db5,ab5]@3 ~ bb2 ~@5 [bb4,db5,f5] ~@5 [bb2,f4,bb4]@2, bb2@6 ~@4 [bb4,db5,g5]@5 ~@7 db5 ~, ~@2 f2 ~", // Bbm Gdim Bbm7 Bbm Bb5 Gdim
  BR: "[[f2,c5]@6 ~@4 f2@2 c2@6 ~@4 c2 ~@5 [f4,a4,c5] ~@5 f2 ~ [g4,a4,db5,e5]@3 ~@3 [g4,a4,db5,e5]@4 e2 ~, [f4,a4]@4 ~@2 [f4,a4,c5]@10 ~@2 [f4,a4,c5]@9 ~@21, ~@24 f2@7 ~@5 e2@6 ~@6]/2", // F5 F A7 F
  BS: "[f4,a4,c5,d5]@4 ~@2 [f4,a4,c5,d5]@4 d2@2 [f4,a4,c5,d5]@4 ~@2 [f4,a4,c5,d5] ~@3 a2 ~, d2 ~ a2 ~", // Dm7
  BT: "[eb4,g4,a4,d5]@4 [eb4,g4,a4,c5]@6 [c2,eb4] ~ [eb4,g4,a4,d5]@3 ~ [eb4,g4,a4,c5]@6 a4@2, c2@8 ~@4 f2@7 ~@3 f2 ~", // Ebmaj7 Am7b5 Cm Ebmaj7 Am7b5
  BU: "[d4,f4]@5 ~@5 bb2@2 ~@4 [d4,f4] ~@5 f2 ~, bb2@2 [d4,f4]@3 ~@3, ~@3 f2@2 ~", // Dm
  BV: "[bb4,d5,f5]@3 ~ [bb4,d5,g5] ~ [bb4,d5,a5]@3 ~ bb2@2 ~@4 [bb4,d5]@5 ~ f2 ~, bb2@7 ~@3 [d5,g5]@4 ~@2 f5@6 ~@2, ~@10 bb4 ~ f2@6 ~@6", // Bb Gm Bbmaj7 Bb G5
  BW: "[f4,bb4,db5]@4 ~@6 bb2@2 ~@4 [f4,bb4,db5] ~@5 f2 ~, bb2@2 [f4,bb4,db5]@3 ~@3, ~@12 f2@7 ~@5", // Bbm
  BX: "[bb4,db5,f5]@3 ~ [bb4,db5,g5] ~ [bb4,db5,ab5]@3 ~ bb2 ~@5 [bb4,db5,f5] ~@5 [bb4,db5] ~, bb2@7 ~@3 [bb4,db5,g5]@5 ~@9, ~@12 f2@7 ~@3 bb2@2", // Bbm Gdim Bbm7 Bbm Gdim
  BY: "[a4,c5]@4 ~@6 f2@2 ~@4 [f4,a4,c5] ~@5 c2 ~, f2@2 [f4,a4,c5]@3 ~@3, ~@12 c2@7 ~@5", // Am F
  BZ: "~@4 [f4,a4,c5]@6 f2 ~ [g4,a4,db5,e5]@4 ~@2 [g4,a4,db5,e5]@4 e2@2, f2@7 ~@5 e2@6 ~@6", // F A7
  CA: "[f4,a4,c5,d5]@4 ~@12 d4 ~ [f4,a4,c5]@4 [a2,d4] ~, d2@4 ~ [f4,a4,c5]@4 ~@3, ~@5 d4@2 ~@2 d4 ~@2, ~@12 a2@7 ~@5", // Dm7 F D5 F
  CB: "[~@2 [eb4,g4,a4,d5] ~@3 [eb4,g4,a4,d5]@3 ~@9 a4@4 bb2@10 ~@2 bb2 ~@5 [bb3,d4,f4] ~@5 f2 ~, c2@7 ~@3 [eb4,g4,a4,c5]@7 ~ eb4 ~@3 [d4,f4]@17 ~@9, ~@4 f2@3 ~@5 f2@2 ~@2]/2", // Ebmaj7 Bb Am7b5 Dm
  CC: "[bb4,d5,f5]@3 ~ [bb4,d5,g5] ~ [bb4,d5,a5]@3 ~ bb2 ~@5 [bb4,d5,f5] ~@5 f2 ~, bb2@3 ~@2 [bb4,d5,g5]@2 ~@5, ~@12 f2@7 ~@5", // Bb Gm Bbmaj7 Bb Gm
  CD: "[f4,bb4,db5]@4 ~@6 bb2@2 ~@4 [f4,bb4,db5] ~@5 f2 ~, bb2@3 [f4,bb4,db5]@4 ~@5, ~@12 f2@7 ~@5", // Bbm
  CE: "[bb4,db5,f5]@3 ~ [bb4,db5,g5] ~ [bb4,db5,ab5]@3 ~ bb2 ~@5 [bb4,db5,f5] ~@5 [bb2,f4,bb4]@2, bb2@6 ~@4 [bb4,db5,g5]@4 ~@8 db5 ~, ~@12 f2@7 ~@5", // Bbm Gdim Bbm7 Bbm Bb5 Gdim
  CF: "[f4,a4,c5]@5 ~@5 f2@2 ~@4 [f4,a4,c5] ~@5 c2 ~, f2@3 [f4,a4,c5]@4 ~@5, ~@12 c2@7 ~@5", // F
  CG: "~@4 [f4,a4,c5] ~@5 f2 ~@5 [e4,g4,a4,db5]@6 e2@2, f2@8 ~@4 e2@7 ~@5", // F A7
  CH: "[f4,a4,c5,d5]@9 ~@7 [f4,a4,c5,d5] ~@5 a2 ~, d2@7 ~@3 [f4,a4,c5,d5]@5 ~@9, ~@12 a2@7 ~@5", // Dm7
  CI: "bb4@10 c2 ~ [e4,g4,bb4,d5]@3 ~ [g4,bb4]@6 c2 ~, [e4,g4,c5]@3 ~ e5@2, c2@8 ~@4 c2@7 ~@5, ~@4 e4 ~", // Em7b5 Gm C
  CJ: "[f2,c4,a4]@3 [f1,f2,f5,f6] ~@8", // F
})).s("gm_piano").gain(0.38).pan(0.7)

// bass · electric bass pick · "PICK BASS"
const bass = note(`<
  ~ A B@3 C D E F G B G H I D J K L G B M N O E P L Q R S T@2 U V U W X Y A Z A AA AB AC E AD AE AF A AG AH AC AI AJ A
  AK A AL AM AN AO AP L AQ AR AS AT U AU@2 U AV AW AX A B AY L AZ BA BB BC A BD B BE BF AC BG BH B@2 L BE BI BJ BB BK BL
>`.pickRestart({
  A: "bb1@5 ~@7 f1@6 ~@6", B: "bb1 ~ f1 ~", C: "f1 ~ c2 ~", D: "f2@3 ~@2 f2 e2@3 ~@2 e2", E: "d2@3 ~@3 a1@3 ~@2 d2",
  F: "c2@6 ~@6 f1@7 ~@5", G: "bb1@7 ~@5 f1@6 ~@6", H: "bb1@8 ~@4 f1@7 ~@5", I: "f1@7 ~@5 c2@7 ~@5",
  J: "d2@7 ~@5 a1@6 ~@4 d2@2", K: "c2@3 ~@3 f1@4 ~@2", L: "bb1@6 ~@6 f1@7 ~@5", M: "bb1@3 ~@3 f1@4 ~@2",
  N: "f1@6 ~@6 c2@7 ~@5", O: "f2@7 ~@3 f2@2 e2@6 ~@4 e2@2", P: "c2@6 ~@4 c2@2 f1@7 ~@5", Q: "bb1@7 ~@5 f1@7 ~@3 f1@2",
  R: "c2@7 ~@5 g1@7 ~@5", S: "c2 ~@7", T: "f1@2 ~@3 f1 bb1@2 ~@3 bb1", U: "f1@5 ~@5 f1@2 bb1@5 ~@5 bb1@2",
  V: "f1@5 ~@5 f1@2 bb1@4 ~@6 bb1@2", W: "f1@4 ~@6 f1 ~ bb1@5 ~@5 bb1 ~", X: "f1@5 ~@5 f1 ~ bb1@5 ~@5 bb1@2",
  Y: "f1@4 ~@2 f1@5 ~ g1@5 ~ a1@5 ~", Z: "bb1@5 ~@7 f1@6 ~@4 f1@2", AA: "bb1@5 ~@7 f1@5 ~@5 f2@2",
  AB: "f1@6 ~@6 c2@5 ~@7", AC: "f2@5 ~@5 f2@2 e2@6 ~@4 e2@2", AD: "c2@5 ~@5 c2@2 f1@5 ~@5 f1@2",
  AE: "bb1@6 ~@6 f1@5 ~@7", AF: "bb1@6 ~@6 f1@7 ~@3 f1 ~", AG: "bb1@5 ~@5 bb1@2 f1@6 ~@6", AH: "f1@6 ~@6 c2@5 ~@5 c2@2",
  AI: "d2@5 ~@7 a1@7 ~@3 d2@2", AJ: "c2@5 ~@5 c2 ~ f1@7 ~@3 f1@2", AK: "bb1@6 ~@6 f1@7 ~@3 f1@2",
  AL: "bb1@6 ~@4 bb1@2 f1@7 ~@5", AM: "f1@6 ~@6 c2@7 ~@3 c2@2", AN: "f1@6 ~@4 f2@2 e2@5 ~@5 e2@2",
  AO: "d2@7 ~@5 a1@5 ~@5 d2@2", AP: "c2@5 ~@5 c2@2 f1@7 ~@5", AQ: "bb1@3 ~@2 bb1 f1@3 ~@2 f1", AR: "c2@7 ~@5 g1@6 ~@6",
  AS: "c2 ~@5", AT: "f1@5 ~@5 f1@2 bb1@6 ~@4 bb1@2", AU: "f1@6 ~@4 f1@2 bb1@5 ~@5 bb1@2",
  AV: "f1@6 ~@4 f1 ~ bb1@6 ~@4 bb1@2", AW: "f1@7 ~@3 f1 ~ bb1@7 ~@3 bb1@2", AX: "f1@4 ~@2 f1@5 ~ g1@5 ~ a1@6",
  AY: "bb1@3 ~@2 bb1 f1@3 ~@3", AZ: "f1@5 ~@7 c2@5 ~@5 c2@2", BA: "f2@5 ~@5 f2@2 e2@5 ~@5 e2@2",
  BB: "d2@6 ~@6 a1@5 ~@5 d2@2", BC: "c2@6 ~@6 f1@5 ~@5 f1@2", BD: "bb1@6 ~@6 f1@6 ~@4 f1 ~", BE: "bb1@7 ~@5 f1@7 ~@5",
  BF: "f1@3 ~@3 c2@3 ~@2 c2", BG: "d2@7 ~@5 a1@7 ~@3 d2@2", BH: "c2@3 ~@3 f1@3 ~@2 f1", BI: "f1@7 ~@5 c2@6 ~@4 c2@2",
  BJ: "f2@7 ~@3 f2 ~ e2@7 ~@3 e2@2", BK: "c2@6 ~@4 c2@2 c2@7 ~@3 c2@2", BL: "f1 ~@5",
})).s("gm_electric_bass_pick").gain(0.44)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~ A@2 B@2 C D E F G@2 B@2 C H E F A@2 B@2 C H I F J A K L M@7 ~ A@2 B@2 N O P F A@2 B@2 C Q R F A@2 B@2 C H I F A@2 K
  L M@7 S A@2 B@2 C T U F G A B V W X I Y A@2 B@2 C@2 R Z ~
>`.pickRestart({
  A: "~@6 [f4,bb4,d5] ~@11 [f4,bb4,d5] ~@5", B: "~@6 [f4,bb4,db5] ~@11 [f4,bb4,db5] ~@5",
  C: "~@6 [f4,a4,c5] ~@11 [f4,a4,c5] ~@5", D: "~@6 [c4,f4,a4] ~@11 [db4,e4,g4,a4] ~@5",
  E: "~@6 [d4,f4,a4] ~@11 [d4,f4,a4] ~@5", F: "~@6 [eb4,a4,c5] ~@11 [eb4,a4,c5] ~@5",
  G: "~@6 [d4,f4,bb4,d5] ~@11 [d4,f4,bb4,d5] ~@5", H: "~@6 [f4,a4,c5] ~@11 [e4,a4,db5] ~@5",
  I: "~@6 [f4,a4,c5,d5] ~@11 [f4,a4,c5,d5] ~@5", J: "~@6 [f4,bb4,d5] ~@11 [d4,f4,d5] ~@5",
  K: "~@6 [g4,c5,e5] ~@11 [g4,c5,e5] ~@5", L: "[e4,g4,c5] ~@23", M: "~@6 [f4,a4,c5] ~@11 [f4,bb4,d5] ~@5",
  N: "~@6 [c4,f4,a4] ~@11 [c4,f4,a4] ~@5", O: "~@6 [c4,f4,a4] ~@11 [db4,e4,a4] ~@5",
  P: "~@6 [d4,f4,a4,c5,d5] ~@11 [d4,f4,a4,d5] ~@5", Q: "~@6 [f4,a4,c5] ~@11 [db4,g4,a4] ~@5",
  R: "~@6 [f4,a4,d5] ~@11 [f4,a4,d5] ~@5", S: "f4 ~@23", T: "~@6 [f4,a4,c5,d5] ~@11 [e4,a4,db5] ~@5",
  U: "~@6 [f4,a4,d5] ~@11 [f4,a4,c5,d5] ~@5", V: "~@6 [f4,a4,db5] ~@11 [f4,bb4,db5] ~@5",
  W: "~@6 [f4,a4,c5] ~@11 [f4,g4,a4,c5] ~@5", X: "~@6 [f4,a4,c5] ~@11 [g4,a4,db5,e5] ~@5",
  Y: "~@6 [eb4,g4,a4,c5] ~@11 [eb4,g4,a4,c5] ~@5", Z: "~@6 [e4,g4,bb4,c5] ~@11 [e4,g4,bb4,c5] ~@5",
})).s("gm_electric_guitar_clean").gain(0.33).pan(0.1)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@9 A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 I@2 ~@2 J K L M J N J O ~@8 P@2 Q@2 R@2 S@2 T@2 U@2 R@2 V@2 W@2 ~@2 J X Y O Z AA J
  N ~@8 AB@2 AC@2 C@2 AD@2 AE@2 U@2 AF@2 AG AH ~
>`.pickRestart({
  A: "[f4,bb4,d5]/2", B: "[[g4,bb4,db5]@47 ~]/2", C: "[[f4,a4,c5]@3 ~]/2", D: "[d5@24 eb5@19 ~@5, [f4,a4]@11 ~]/2",
  E: "[[f4,bb4]@15 ~, d5]/2", F: "[[g4,bb4,db5]@23 ~]/2", G: "[[f4,a4,c5]@35 ~@13]/2",
  H: "[d5@23 ~ eb5@20 ~@4, [f4,a4]@7 ~]/2", I: "[[f4,bb4,d5]@37 ~@11]/2", J: "f4 ~@3 f4 ~@5 f4 ~@5 d4 ~ f4 ~@3 d4 ~",
  K: "f4@2 ~@2 d4 ~ f4 ~@3 g4@5 ~ d4 ~@7, ~@15 f4@2 ~@7", L: "f4 ~@4 f4 ~@4 f4 ~@5 d4 ~ f4@2 ~@2 d4 ~",
  M: "f4 ~@3 d4 ~ f4 ~@3 g4@5 ~ f4 ~ d4 ~@5", N: "f4 ~@3 d4 ~ f4 ~@3 g4@5 f4 ~ d4 ~@6",
  O: "f4 ~@3 d4 ~ f4 ~@3 g4@5 ~ f4 d4 ~@6", P: "[[f4,bb4]@23 ~, d5]/2", Q: "[~ [g4,bb4,db5]@46 ~]/2",
  R: "[[f4,a4,c5]@11 ~@5]/2", S: "[d5@23 ~ eb5@19 ~@5, [f4,a4]@7 ~]/2", T: "[[f4,d5], bb4@23 ~]/2",
  U: "[[g4,bb4,db5]@7 ~]/2", V: "[d5@22 ~@2 eb5@21 ~@3, [f4,a4]@43 ~@5]/2", W: "[[f4,bb4,d5]@11 ~]/2",
  X: "f4 ~@3 d4 ~ f4 ~@3 g4@4 ~ f4 d4 ~@7", Y: "f4 ~@4 f4 ~@4 f4 ~@5 d4 ~ f4 ~@3 d4 ~",
  Z: "f4 ~@3 f4 ~@5 f4 ~@4 d4 ~@2 f4 ~@3 d4 ~", AA: "f4 ~@3 d4 ~ f4 ~@3 g4@4 ~ f4 ~ d4 ~@6",
  AB: "[[bb4,d5]@15 ~, f4@47 ~]/2", AC: "[[g4,bb4,db5]@15 ~]/2", AD: "[d5@6 eb5@5 ~, f4@23 ~, a4@43 ~@5]/2",
  AE: "[[bb4,d5]@47 ~, f4@15 ~]/2", AF: "[[f4,a4,c5]@17 ~@7]/2", AG: "[f4,a4,d5]", AH: "[g4,e5]",
})).s("gm_string_ensemble_1").gain(0.3).pan(0.4)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note("<A B ~@27 C D E F G H G I J ~@27 K L D M N L O P J ~@24>".pickRestart({
  A: "~ [f2,f3] [g2,g3,bb3] [a2,a3], ~@3 a3@2 ~@4 c4@2 ~", B: "[bb2,bb3,d4] ~",
  C: "c4 ~@3 f3 ~ [a3,c4]@4 f3@2 [bb3,d4]@3 ~ f3 ~ [bb3,d4]@3 ~ f3 ~", // Am Bb
  D: "[a3,c4]@3 ~ f3 ~ [a3,c4]@4 f3 ~ [bb3,d4]@3 ~ f3 ~ [bb3,d4]@4 f3 ~", // Am Bb
  E: "[a3,c4]@4 f3 ~ [a3,c4]@4 f3@2 [bb3,d4]@3 ~ f3 ~ [bb3,d4]@3 ~ f3 ~", // Am Bb
  F: "[a3,c4]@4 f3 ~ [a3,c4]@4 f3 ~ [bb3,d4]@4 f3 ~ [bb3,d4]@4 f3 ~", // Am Bb
  G: "[a3,c4]@4 f3 ~ [a3,c4]@4 f3 ~ [bb3,d4]@4 f3 ~ [bb3,d4]@3 ~ f3 ~", // Am Bb
  H: "[a3,c4]@4 ~@2 [a3,c4]@4 f3 ~ [bb3,d4]@4 f3 ~ [bb3,d4]@3 ~ f3 ~", // Am Bb
  I: "[a3,c4] ~@2 [f2,f3]@3 [g2,g3]@3 [a2,a3,c4]@3, ~@3 a3@2 ~ bb3@2 ~@4", J: "[bb2,bb3,d4]@3 ~@5",
  K: "~@2 c4@2 f3@2 [a3,c4]@4 f3 ~ [bb3,d4]@3 ~ f3 ~ [bb3,d4]@4 f3 ~, a3 ~@5", // Am Bb
  L: "[a3,c4]@3 ~ f3 ~ [a3,c4]@3 ~ f3 ~ [bb3,d4]@4 f3 ~ [bb3,d4]@3 ~ f3 ~", // Am Bb
  M: "[a3,c4]@4 f3 ~ [a3,c4]@3 ~ f3 ~ [bb3,d4]@3 ~ f3 ~ [bb3,d4]@3 ~ f3 ~", // Am Bb
  N: "[a3,c4]@4 f3 ~ [a3,c4]@3 ~ f3 ~ [bb3,d4]@4 f3 ~ [bb3,d4]@4 f3 ~", // Am Bb
  O: "[a3,c4]@3 ~ f3 ~ [a3,c4]@4 f3 ~ [bb3,d4]@3 ~ f3 ~ [bb3,d4]@3 ~ f3@2", // Am Bb
  P: "[a3,c4] ~@5 [f2,f3]@6 [g2,g3]@6 [a2,a3,c4]@6, ~@3 a3@2 ~ bb3@2 ~@4", // Am F G Am
})).s("gm_acoustic_guitar_nylon").gain(0.27).pan(0.4)

// other · trombone
const trombone = note(`<
  ~@16 A B C D E F G B H I ~@18 A B C D E F G B H B C D E F G B H I ~@10 A B C D E F G B H B C D E F G B H B C D E F G B
  J K
>`.pickRestart({
  A: "~@18 f4@4 ~ eb4, ~@11 e4", B: "d4", C: "~@18 f4@4 [eb4,e4] d4", D: "db4@23 ~", E: "~@18 f4@2 e4 ~ eb4 d4",
  F: "c4@11 ~, db4 ~@23", G: "~ c4 db4@2", H: "eb4@13 ~@5 f4@4 ~ eb4, ~@11 e4", I: "d4@5 ~", J: "e4", K: "f4 ~@5",
})).s("gm_trombone").gain(0.33).pan(0.9)

// bass · tuba
const bass_2 = note(`<
  ~@16 A B C D E F G B H I ~@18 A B C D E F G B H B C D E F G B H I ~@10 A B C D E F G B H B C D E F G B H B C D E F G B
  J K
// … 78 more lines

More by Dr. John