Strudelify
Such a Night cover art

In The Right Place

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, A@4 for four bars: 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 C Q R S@2 T U@2 V W X Y@2 Z AA AB AC AD AE AF@2 Q AG AH@2 AI AJ AK AL AM AN AO AP
  AQ AR AS AT AU AN AV AW AQ AX AY AZ@2 BA BB BC BD BE Y BF BG BH BI BJ BK BL@2 BM BN BO BP BQ BR BS BT BU BV@2 BW BQ Q
  BX BY BZ CA CB
>`.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: "[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
  R: "[f4,a4,c5]@5 ~ [f4,a4,c5]@4 f2@2 [f4,a4,c5]@5 ~ [f4,a4,c5]@5 ~, f2@6 ~@6 c2@11 ~", // F
  S: "[[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
  T: "[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
  U: "[[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
  V: "[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
  W: "c2 ~ [c6,f6]@4 ~@2, ~@6 b5 ~@17", // F5
  X: "[c4,f4,a4]@3 ~@3 [c4,f4,a4]@4 f2 ~ [d4,f4,bb4]@3 ~@3 [d4,f4,bb4]@4 bb2 ~, f2 ~ bb2 ~", // F Bb
  Y: "[f4,a4,c5]@2 ~@4 [f4,a4,c5]@4 f2 ~ [f4,bb4,d5]@2 ~@4 [f4,bb4,d5]@3 ~ bb2 ~, f2 ~ bb2 ~", // F Bb
  Z: "[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
  AA: "[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
  AB: "[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
  AC: "[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
  AD: "[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
  AE: "[f4,bb4,d5]@12 ~@4 [f4,bb4,d5] ~@5 f2 ~, bb2@11 ~ f2@9 ~@3", // Bb
  AF: "[[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
  AG: "[f4,a4,c5]@4 ~@2 [f4,a4,c5]@4 f2 ~ [f4,a4,c5]@5 ~ [f4,a4,c5]@5 ~, f2@2 ~@2 c2@3 ~", // F
  AH: "[[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
  AI: "[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
  AJ: "[bb2,d4,f4]@11 ~ [d4,f4]@5 ~ [d4,f4]@3 ~ f2 ~, ~@2 f2 ~", // Bb Dm
  AK: "[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
  AL: "[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
  AM: "[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
  AN: "[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
  AO: "[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
  AP: "[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
  AQ: "[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
  AR: "[bb2,f4]@6 ~@4 bb2@2 f2@6 [d4,f4] ~@3 f2 ~, d4@4 ~@2 [d4,f4]@11 ~@7", // Bb5 Dm
  AS: "[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
  AT: "[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
  AU: "[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
  AV: "[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
  AW: "[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
  AX: "[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
  AY: "[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
  AZ: "[[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
  BA: "[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
  BB: "[f4,a4,c5]@4 ~@2 [f4,a4,c5]@4 f2 ~ [f4,bb4,d5]@3 ~@3 [f4,bb4,d5]@4 bb2 ~, f2 ~ bb2 ~", // F Bb
  BC: "[f4,a4,c5]@3 ~@3 [f4,a4,c5]@4 f2 ~ [f4,bb4,d5]@3 ~@3 [f4,bb4,d5]@4 bb2 ~, f2 ~ bb2 ~", // F Bb
  BD: "[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
  BE: "[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
  BF: "[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
  BG: "[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
  BH: "[f4,bb4,d5]@9 ~ [f4,bb4,d5] ~ f2@7 ~@3 f2 ~, bb2@5 ~@7", // Bb
  BI: "[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
  BJ: "[f4,bb4,db5]@4 ~@2 [f4,bb4,db5]@4 bb2@2 [f4,bb4,db5]@4 ~@2 [f4,db5] ~@3 f2 ~, bb2 ~ f2 ~", // Bbm Db
  BK: "[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
  BL: "[[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
  BM: "[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
  BN: "[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
  BO: "[d4,f4]@5 ~@5 bb2@2 ~@4 [d4,f4] ~@5 f2 ~, bb2@2 [d4,f4]@3 ~@3, ~@3 f2@2 ~", // Dm
  BP: "[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
  BQ: "[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
  BR: "[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
  BS: "[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
  BT: "~@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
  BU: "[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
  BV: "[~@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
  BW: "[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
  BX: "[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
  BY: "~@4 [f4,a4,c5] ~@5 f2 ~@5 [e4,g4,a4,db5]@6 e2@2, f2@8 ~@4 e2@7 ~@5", // F A7
  BZ: "[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
  CA: "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
  CB: "[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@4 B C D E A@3 F B C D E A@3 G B H D I A J K L M@5 N M O A P Q R B C D S A J A T U C D V A J A T W X Y I A Z K L
  M@6 AA O A@2 T A U C D AB A J A@2 U C AC AD A@4 U H Y AE AF
>`.pickRestart({
  A: "bb1 ~ f1 ~", B: "f1 ~ c2 ~", C: "f2@5 ~@5 f2@2 e2@6 ~@4 e2@2", D: "d2@3 ~@3 a1@3 ~@2 d2", E: "c2@6 ~@6 f1@7 ~@5",
  F: "bb1@7 ~@5 f1@6 ~@6", G: "bb1@6 ~@6 f1@7 ~@5", H: "f2@3 ~@2 f2 e2@3 ~@2 e2", I: "c2@6 ~@4 c2@2 f1@7 ~@5",
  J: "bb1@7 ~@5 f1@7 ~@3 f1@2", K: "c2@7 ~@5 g1@7 ~@5", L: "c2 ~@7", M: "f1@5 ~@5 f1@2 bb1@5 ~@5 bb1@2",
  N: "f1@2 ~@3 f1 bb1@2 ~@3 bb1", O: "f1@4 ~@2 f1@5 ~ g1@5 ~ a1@5 ~", P: "bb1@5 ~@7 f1@6 ~@4 f1@2",
  Q: "bb1@5 ~@7 f1@6 ~@6", R: "bb1@5 ~@7 f1@5 ~@5 f2@2", S: "c2@5 ~@5 c2@2 f1@5 ~@5 f1@2",
  T: "bb1@5 ~@5 bb1@2 f1@6 ~@6", U: "f1@6 ~@6 c2@5 ~@5 c2@2", V: "c2@5 ~@5 c2 ~ f1@7 ~@3 f1@2",
  W: "f1@6 ~@6 c2@7 ~@3 c2@2", X: "f1@6 ~@4 f2@2 e2@5 ~@5 e2@2", Y: "d2@6 ~@6 a1@5 ~@5 d2@2",
  Z: "bb1@3 ~@2 bb1 f1@3 ~@2 f1", AA: "f1@6 ~@4 f1 ~ bb1@6 ~@4 bb1@2", AB: "c2@6 ~@6 f1@5 ~@5 f1@2",
  AC: "d2@7 ~@5 a1@6 ~@4 d2@2", AD: "c2@3 ~@3 f1@3 ~@2 f1", AE: "c2@6 ~@4 c2@2 c2@7 ~@3 c2@2", AF: "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 B@2 F@2 G@2 H@2 ~@2 I J K L I M I N ~@8 E@2 O@2 P@2 G@2 Q@2 R@2 P@2 S@2 T@2 ~@2 I J I N U M I
  M ~@8 V@2 W@2 C@2 X@2 E@2 R@2 F@2 Y Z ~
>`.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: "[[f4,a4,c5]@35 ~@13]/2", G: "[d5@23 ~ eb5@19 ~@5, [f4,a4]@7 ~]/2",
  H: "[[f4,bb4,d5]@37 ~@11]/2", I: "f4 ~@3 f4 ~@5 f4 ~@5 d4 ~ f4 ~@3 d4 ~",
  J: "f4@2 ~@2 d4 ~ f4 ~@3 g4@5 ~ d4 ~@7, ~@15 f4@2 ~@7", K: "f4 ~@4 f4 ~@4 f4 ~@5 d4 ~ f4@2 ~@2 d4 ~",
  L: "f4 ~@3 d4 ~ f4 ~@3 g4@5 ~ f4 ~ d4 ~@5", M: "f4 ~@3 d4 ~ f4 ~@3 g4@5 f4 ~ d4 ~@6",
  N: "f4 ~@3 d4 ~ f4 ~@3 g4@5 ~ f4 d4 ~@6", O: "[~ [g4,bb4,db5]@46 ~]/2", P: "[[f4,a4,c5]@11 ~@5]/2",
  Q: "[[f4,d5], bb4@23 ~]/2", R: "[[g4,bb4,db5]@7 ~]/2", S: "[d5@11 ~ eb5@10 ~@2, [f4,a4]@43 ~@5]/2",
  T: "[[f4,bb4,d5]@11 ~]/2", U: "f4 ~@3 f4 ~@5 f4 ~@4 d4 ~@2 f4 ~@3 d4 ~", V: "[[bb4,d5]@15 ~, f4@47 ~]/2",
  W: "[[g4,bb4,db5]@23 ~]/2", X: "[d5@24 eb5@19 ~@5, f4@23 ~, a4@43 ~@5]/2", Y: "[f4,a4,d5]", Z: "[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@3 E F D G H ~@27 I D@2 J@2 D J K H ~@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 ~ [bb3,d4]@4 f3 ~ [bb3,d4]@3 ~ f3 ~", // Am Bb
  F: "[a3,c4]@4 ~@2 [a3,c4]@4 f3 ~ [bb3,d4]@4 f3 ~ [bb3,d4]@3 ~ f3 ~", // Am Bb
  G: "[a3,c4] ~@2 [f2,f3]@3 [g2,g3]@3 [a2,a3,c4]@3, ~@3 a3@2 ~ bb3@2 ~@4", H: "[bb2,bb3,d4]@3 ~@5",
  I: "~@2 c4@2 f3@2 [a3,c4]@4 f3 ~ [bb3,d4]@3 ~ f3 ~ [bb3,d4]@4 f3 ~, a3 ~@5", // Am Bb
  J: "[a3,c4]@3 ~ f3 ~ [a3,c4]@3 ~ f3 ~ [bb3,d4]@4 f3 ~ [bb3,d4]@3 ~ f3 ~", // Am Bb
  K: "[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 A C D E F B G H ~@18 A B A C D E F B G B A C D E F B G H ~@10 A B A C D E F B G B A C D E F B G B A C D E F B
  I J
>`.pickRestart({
  A: "~@18 f3@4 e3 eb3", B: "d3", C: "db3@23 ~, d3 ~@23", D: "~@18 f3@3 e3 eb3 d3", E: "c3@11 ~, db3 ~@23",
  F: "~ c3 db3@2", G: "eb3@13 ~@5 f3@4 ~ eb3, ~@11 e3", H: "d3@5 ~", I: "c3", J: "f2 ~@5",
})).s("gm_tuba").gain(0.38).pan(0.1)

// other · baritone sax · "BARITONSAX"
const baritone_sax = note(`<
  ~@36 A B@4 C D E F B@4 G H I J B K B@2 G L M N B K O P Q R@2 S@4 T B U B@2 V W X N B@3 K Y W Z AA U K B AB Y AC AD AE
  AF
>`.pickRestart({
  A: "~@6 f2@5 ~ g2@5 ~ a2@5 ~", B: "bb2@5 ~@7 f2@6 ~@6", C: "f2@5 ~@7 c3@7 ~@5", D: "f3@8 ~@2 f3@2 e3@7 ~@3 e3@2",
  E: "d3@6 ~@6 a2@5 ~@5 d3@2", F: "c3@5 ~@5 c3 ~ f2@3 ~ f2@2 g2@3 ~ a2@2", G: "f2@5 ~@7 c3@6 ~@4 c3@2",
  H: "f3@6 e3@4 ~ e3", I: "d3@6 a2@4 ~ a2", J: "c3@11 ~ f2@2 ~@2 f2@2 g2@3 ~ a2@2", K: "bb2 ~ f2 ~",
  L: "f3@6 c3@4 f3@2 e3@4 ~@2 e3@5 ~", M: "d3@7 ~@3 d3@2 a2@5 ~ d3@6", N: "c3@7 ~@3 c3@2 f2@3 ~ f2@2 g2@4 a2@2",
  O: "c3 ~ g2 ~", P: "c3 ~@7", Q: "f2@6 ~@4 f2@2 bb2@7 ~@5", R: "f2@6 ~@4 f2@2 bb2@5 ~@5 bb2@2",
  S: "f2@6 ~@4 f2 ~ bb2@2 ~@2 bb2@7 ~", T: "f2@3 ~@3 f2@5 ~ g2@5 ~ a2@5 ~", U: "bb2@5 ~@7 f2@6 ~@4 f2@2",
  V: "f2@5 ~@7 c3@12", W: "f3@4 ~ f3 e3@6", X: "d3@7 ~@3 d3@2 a2@6 ~@4 d3@2", Y: "f2@4 ~@2 c3@3 ~@2 c3",
  Z: "d3@7 ~@3 d3@2 a2@9 ~ d3@2", AA: "c3@5 ~ c3@6 f2@2 ~@2 f2@2 g2@3 ~ a2@2", AB: "bb2@7 ~@3 bb2@2 f2@8 ~@4",
  AC: "f3@11 ~ e3@8 ~@2 e3@2", AD: "d3@3 ~ a2@2 d3@2", AE: "c3@8 ~@2 c3@2 c3@2 ~@2 c3@2 c3@3 ~ c3@2", AF: "f2 ~@5",
})).s("gm_baritone_sax").gain(0.38).pan(0.1)

// drums · kick
const kick = s("bd").struct("<~ [x!2]!27 x [x!2]!35 x [x!2]!32 x>").gain(0.44)

// drums · rim
// … 48 more lines

More by Dr. John