Strudelify

Big Man on Mulberry Street

Billy Joel

KeyD minorTempo195 bpm
0:00/0:00
// Big Man on Mulberry Street — Billy Joel
// 195 bpm, 12/8, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 162 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(195/6)

// 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 · "Acoustic Piano"
const piano = note(`<
  A@2 B@2 C@2 D@2 E F E G E H I J K L K M K L K N O@2 B@2 C@2 P@2 E F E G E H I J K L Q M K L K R S T@2 U V@2 W X Y Z AA
  AB AC AD AE@2 AF@2 AG@2 AH@2 E F E G E H I J K L K M K L K AI AJ AK AL@2 AM AN@3 AO AP AQ@2 AR AS AT@2 AF@2 AU@2 AV@2
  E F E G E H I J K L K M K L K N AW@2 AX@2 A@2 AY@2 AZ@2 BA@2 BB@2 BC@2 A@2 B@2 C@2 D@2 A@2 B@2 AX@2 P@2 AT@2 AF@2 BD@2
>`.pickRestart({
  A: "[[g1,g2,f3,b3,d4]@3 ~@3 [g1,g2,f3,b3,d4]@5 ~@3 g4 bb4 c5 g4 bb4@2 c5@4, ~@12 bb3 ~@9 [f1,f2,eb3,d4]@26, ~@11 a3@4 f5@3 f5@6]/2", // G7 Dm
  B: "[[g1,g2,f3,b3,d4]@3 ~@3 [g1,g2,f3,b3,d4]@5 ~@3 g5 bb5 c6 db6 c6 bb5 g5 c6 bb5 g5, ~@12 bb3 ~@9 [f1,f2,eb3,d4]@26, ~@11 a3@4 f6@3 f6@3 f6@3, ~@36 db6 ~@5 db6 ~@5]/2", // G7 Dm
  C: "[[g1,g2,f3,b3,d4]@3 ~@3 [g1,g2,f3,b3,d4]@5 a3@3 [g5,f6] [bb5,f6] [c6,f6] [g5,f6] [bb5,f6]@2 [c6,f6]@4, ~@12 bb3 ~@9 [f1,f2,eb3,d4]@26]/2", // G7 Bb5 F5 G7 Bb5 F5 Dm
  D: "[[g1,g2,f3,b3,d4]@3 ~@3 [g1,g2,f3,b3,d4]@5 ~@3 g4 bb4 c5 [db5,f5] c5 bb4 c5 bb4 g4@2, ~@12 bb3 ~@9 [f1,f2,eb3,d4]@26, ~@11 a3@4 f5@2 ~ f5@2 f5@4, ~@36 db5 ~@11]/2", // G7 Db Dm
  E: "[g1,g2,f3,b3,d4]@3 ~@3 b3@2 c4@2 d4@2, ~@5 [g1,g2,f3]@7, ~@5 d4@5 ~@2", // G7
  F: "[bb1,bb2,a3,bb3,d4,f4]@5 [f2,g3,c4,e4]@7", G: "[f3,f4] [g3,g4] [a3,a4] [f2,g3,c4,e4,g4]@3, [bb1,bb2,bb3,d4] ~",
  H: "[bb1,bb2,a3,bb3,d4,f4]@5 [f2,c3,g3]@7", // Bbmaj7 Fsus2
  I: "[g1,g2,f3,b3,d4]@3 ~@3 b3@2 c4@2 d4@2, ~@5 [g1,g2,f3]@7, ~@5 d4@5 ~@2, ~@6 g3 ~@5", // G7
  J: "[a3,f4] [g3,g4] [a3,a4] g4 f4 e4, [bb1,bb2,bb3,d4] [f2,g3,c4]", // Dm G A Bb Fsus2
  K: "[e1,e2,g3,b3,d4]@3 ~@2 g3 [gb3,gb4]@2 [g3,g4]@2 [a3,a4]@2, ~@5 [e1,e2,b3,d4]@7", // Em7 Gb G A E7
  L: "[a1,a2,a3,db4,e4,a4]@5 [b1,b2,gb3,a3,d4]@7", // A Bm7
  M: "[a3,a4] [b3,b4] [db4,db5] [b1,b2,d4,gb4,b4]@3, [a1,a2,e4] ~, db4 ~@2", // A B Db Bm A5
  N: "a4 b4 c5 b4 a4 g4, [a1,a2,c4,e4] [d2,d3,c4,e4], ~@3 g4@2 ~", // Am C
  O: "[[g1,g2,f3,b3,d4,f4]@3 ~@3 [g1,g2,f3,b3,d4]@5 ~@3 g4 bb4 c5 g4 bb4@2 c5@4, ~@12 bb3 ~@9 [f1,f2,eb3,d4]@26, ~@11 a3@4 f5@3 f5@6]/2", // G7 Dm
  P: "[[g1,g2,f3,b3,d4]@3 ~@3 [g1,g2,f3,b3,d4]@5 ~@3 g3 bb3 c4 [db4,f4] c4 bb3 c4 bb3 g3@2, ~@12 bb3 ~@9 [f1,f2,eb3,d4]@26, ~@11 a3@4 f4@2 ~ f4@2 f4@4, ~@36 db4 ~@11]/2", // G7 Db Dm
  Q: "[g3,b3,d4]!2 ~ [g3,b3,d4]@2 g3 [gb3,gb4]@2 [g3,g4]@2 [a3,a4]@2, [e1,e2]@3 ~@2 [e1,e2,b3,d4]@7", // G Gb G A E E7
  R: "[a3,e4,a4] [b3,b4] [c4,c5] [b3,b4] [a3,a4] [g3,g4], [a1,a2] ~@3", // A5 B C B A G A
  S: "[a3,f4]@4 a3@2 a3@4 a3@2 d4@3 ~ a3@2 d4@4 e4@2, d3 a2 f2 [d2,a3], ~@12 db4 ~@11", // Dm D5
  T: "[[a3,db4,f4]@4 [a3,db4,f4]@2 a2@6 ~@4 e4@2 f4@4 ~@6 g3 f3 g3@4 ~@2 f2@6 c2@6, db2 ~ f2 db2 c2 a2 ~@2, ~@11 a3@3 ~@3 a3@7]/2", // Aaug
  U: "~@2 [f3,a3,b3,d4] b2@3 ~@2 [f3,a3,b3,d4] c2@2 db2, b1 ~ b1 ~", // Bm7b5
  V: "[d2@5 a3 a3@2 a3 a3@2 a3 d4@2 d4 d4@2 d4 d2@6 ~@4 [a3,db4,f4]@2 ~@4 a3@2 a1@6 db2@6, ~@3 a2@3 f2@3 [a3,d4,f4]@5 ~@4 g3@6, ~@4 db2 a2 ~@2]/2", // Aaug Dm
  W: "~@2 a3 ~ g3 f3 g3@2 ~ c2@3, c2 a2 f2 ~, ~ d4@2 d4@3, ~@4 ab3 ~@11 a3@8",
  X: "[f3,a3,bb3,d4]@2 [f3,a3,bb3,d4] d2@3 f2@2 [e2,ab3,d4,g4]@4, b1 ~@3", // Bbmaj7 E7
  Y: "[a3,c4,e4]@2 a3 a3@2 a3 [g3,a3,c4]@2 [g3,a3,c4] [g3,a3,e4] c4 [g3,a3,e4], a1 c2 e2 a2", // Am Am7 A7
  Z: "a4@2 [e4,a4] d4@2 e4 [e4,a4]@2 ~@2 d4 c4, ab2 e2 b2 ab2, ~@4 eb4 ~@7 eb4 ~@3 [e4,a4]@4 a4@4", // A5
  AA: "d4@2 ~ e2@3 ~@3 g2@3, a4 ~, g2 ~ c2 ~, ~ e4@2 ~ [g3,a3,c4,e4]@2", // Am7
  AB: "[gb2,gb3,a3,c4,e4]@3 a2@2 [gb3,a3,c4,e4] ~@2 [gb2,gb3,a3,c4,e4] ~ [g2,g3] [ab2,ab3], ~@5 gb2@3 ~@4", // Gbm7b5 G Ab
  AC: "[g3,a3,c4,e4]@2 a3 a3@2 a3 c4!3 e4!3, a2 ~@3", AD: "[c4,e4,a4] a4!2 e4@2 e4!4 e4@2 e4, [d2,d3] ~@3",
  AE: "[[g1,g2,f3,b3,d4]@3 ~@3 [g1,g2,f3,b3,d4]@5 a3@3 [g4,g5] [db5,db6] [d5,d6] g5 [db5,db6]@2 [d5,d6]@4, ~@12 bb3 ~@9 [f1,f2,eb3,d4]@26]/2", // G7 G Db D Db D Dm
  AF: "[[g1,g2,f3,b3,d4]@3 ~@3 [g1,g2,f3,b3,d4]@5 a3@2 [g4,g5] ~ [bb4,bb5] ~ [db5,db6] ~ [c5,c6] [db5,db6] [c5,c6] [bb4,bb5] [g4,g5], ~@12 bb3 ~@9 [f1,f2,eb3,d4]@26]/2", // G7 G Bb Db C Db C Bb …
  AG: "[[g1,g2,f3,b3,d4]@3 ~@3 [g1,g2,f3,b3,d4]@5 a3@2 [g4,g5] ~@2 [c5,c6] ~ [bb4,bb5]@2 [c5,c6]@4, ~@12 bb3 ~@9 [f1,f2,eb3,d4]@26]/2", // G7 G C Bb C Dm
  AH: "[[g1,g2,f3,b3,d4]@3 ~@3 [g1,g2,f3,b3,d4]@5 a3@3 [d5,d6] [db5,db6] [c5,c6] [bb4,bb5] [g4,g5] [bb4,bb5] [f4,f5] [g4,g5] [f4,f5] [d4,d5], ~@12 bb3 ~@9 [f1,f2,eb3]@26, ~@11 d4@12 ~]/2", // G7 D Db C Bb G Bb F …
  AI: "[a3,c4,e4,a4] [b3,b4] [c4,c5] [b3,b4] [a3,a4] [g3,g4], [a1,a2] ~@3", // Am B C B A G A
  AJ: "[d3,a3,c4,d4,f4]@3 [d2,f3]@3 d4@2 e4 f4@2 g4, ~@2 f2 a2", // Dm7 Dm
  AK: "a4@4 bb4 a4 g4@4 c5@2 a4@4 bb4 a4 g4@4 c5@2, e4!2, db2 g2 e2 db2",
  AL: "[f4@4 d5@2 f4@2 e4@2 ~@2 eb2@6 f4@4 ~@2 b1@6 b2@6 ~@4 c4@2 d4 e4@2 f4 g4@2, c2 g2 ~ c2 ~@2 f2 b1, ~@10 eb4@8 ~@4 [a3,b3,d4]@14 ~@3 b3@2 ~@7]/2", // Bm7
  AM: "[d2,c4,d4,f4,a4]@6 [a2,f4,a4,c5,d5]@6 f5@4 g5 f5 e5@4 d5@2, ~@2 [f2,a4,c5,d5] d2", // Dm7
  AN: "[[db2,g4,a4,db5,e5]@6 [db4,e4,g4,a4]@4 ~@2 e2@6 f4@4 ~@10 [bb3,d4,eb4,g4]@4 [eb2,bb3,c4,eb4,g4]@6 c5@4 ~@2 b1@6 b2@6 ~@4 e4@2 f4 ab4@2 b4@3, ~ g2 ~ db2 c2 g2 ~ c2 ~@2 e2 ab2, ~@10 [db4,e4,g4,a4]@8 ~@4 [bb3,c4,eb4,g4]@6 [bb3,c4,eb4,g4]@4 ~@14 [b3,d4,f4]@14 ~@3 d4@2 ~@7]/3", // A7 Ebmaj7 Cm7 A7 Cm7 Bdim
  AO: "[a2,e4,g4,a4,c5]@3 [a1,g4,a4,c5,e5]@3 [e2,g4,a4,c5,e5]@3 c5@2 a4, ~@3 a2", // Am7
  AP: "[ab2,ab4]@3 c5@2 b4 ab4@2 e4 d4@2 db4, d4 ~, ~ e2 b2 ab2", // Ab
  AQ: "[c4@2 e4 a4@2 b4 [c2,e4,g4,a4,c5]@3 e4@2 ~ gb2@3 e2@3 [d2,d4] [e2,e4] [f2,f4] [gb2,gb4] [ab2,ab4] [e2,e4], g2 e2 ~ g2 ~@4, ~@18 eb4 ~@3 [a3,d4]@14 ~@12]/2", // Am7 D E F Gb Ab E D5
  AR: "[a3,d4,e4,a4]@2 [a4,d5,e5,a5] [c5,f5,g5,c6]@2 [d5,g5,a5,d6] [eb5,ab5,bb5,eb6]@2 [e5,a5,b5,e6] [g5,c6,d6,g6]@2 [a5,d6,e6,a6], a2 ~@3", // Asus4 Csus4 Dsus4 Ebsus4 Esus4 Gsus4 Asus4
  AS: "[c6,e6,g6,c7] [b5,db6,gb6,b6] [a5,bb5,db6,a6] [eb5,a5,bb5,eb6] [d5,g5,a5,d6] [c5,f5,g5,c6], [d2,d3] ~@3", // C Bsus2 A Eb Dsus4 Csus4 D
  AT: "[[g1,g2,f3,b3,d4]@3 ~@3 [g1,g2,f3,b3,d4]@5 a3@3 [g4,g5] [bb4,bb5] [c5,c6] [db5,db6] [bb4,bb5]@2 [c5,c6]@4, ~@12 bb3 ~@9 [f1,f2,eb3,d4]@26]/2", // G7 G Bb C Db Bb C Dm
  AU: "[[g1,g2,f3,b3,d4]@3 ~@3 [g1,g2,f3,b3,d4]@5 a3@2 [g4,g5] ~ [bb4,bb5] ~ [g4,g5] [db5,db6] ~ [c5,c6]@4, ~@12 bb3 ~@9 [f1,f2,eb3,d4]@26]/2", // G7 G Bb G Db C Dm
  AV: "[[g1,g2,f3,b3,d4]@3 ~@3 [g1,g2,f3,b3,d4]@5 a3@3 [d5,d6] [db5,db6] [c5,c6] [bb4,bb5] [c5,c6] [g4,g5] [bb4,bb5]@4, ~@12 bb3 ~@9 [f1,f2,eb3,d4]@26]/2", // G7 D Db C Bb C G Bb …
  AW: "[[g1,g2,f3,b3,d4,f4]@3 ~@3 [g1,g2,f3,b3,d4]@5 ~@3 g5 bb5 c6 g5 bb5@2 c6@4, ~@12 bb3 ~@9 [f1,f2,eb3,d4]@26, ~@11 a3@4 f6@3 f6@6]/2", // G7 Dm
  AX: "[[g1,g2,f3,b3,d4]@6 ~@6 [g1,g2,f3,b3,d4]@10 ~@6 g5@2 [db6,f6] [d6,f6]@2 [d6,f6] [d6,f6]@2 f6 [d6,f6] ~ [d6,f6] [d6,f6]@2 [db6,f6] [d6,f6]@2 [d6,f6] ~@2, ~@12 bb3 ~@9 [f1,f2,eb3,d4]@26, ~@11 a3@4 ~@3 db6 ~@5]/2", // G7 Db Dm Db Dm
  AY: "[[g1,g2,f3,b3,d4]@3 ~@3 [g1,g2,f3,b3,d4]@5 a3@3 [g4,f5] bb4 c5 [db5,f5] c5 bb4 g4 f4 ~ c4, ~@12 bb3 ~@9 [f1,f2,eb3]@26, ~@11 d4@11 d4@2, ~@15 f5@2 ~ f5@6, ~@36 db5 ~@11]/2", // G7 Db F7
  AZ: "[[g1,g2,f3,b3,e4]@3 ~@3 [g1,g2,f3,b3,e4]@3 [gb1,gb2,gb3,bb3,eb4]@2 ~@3 g5 db6 d6 g5 db6@2 d6@4, ~@12 bb3 ~@9 [f1,f2,eb3,d4]@26, ~@11 a3@4 f6@3 f6@6]/2", // Em Ebm Dm
  BA: "[[g1,g2,f3,b3,e4]@3 ~@3 [gb1,gb2,gb3,bb3,eb4]@3 [g1,g2,f3,b3,e4]@2 ~@3 g5 [db6,f6] [d6,f6]!2 [db6,f6] [d6,f6]!2 [c6,f6] bb5 g5, ~@11 [ab1,ab2,gb3,f4]@13, ~@22 c4@8 ~@12 db6 ~@5]/2", // Em Ebm Em Db Dm Db Dm F5 …
  BB: "[[g1,g2,f3,b3,e4]@6 ~@6 [g1,g2,f3,b3,e4]@6 [gb1,gb2,gb3,bb3,eb4]@4 ~@6 g5@2 [db6,f6] [d6,f6]@2 [d6,f6] [d6,f6]@2 f6 [d6,f6] ~ [d6,f6] [d6,f6]@2 d6@2 [b4,c5] [g4,a4] [e4,gb4] [c4,d4], ~@12 bb3 ~@9 [f1,f2,eb3,d4]@26, ~@11 a3@4 ~@3 db6 ~@2 f6@3]/2", // Em Ebm Db Dm Cmaj7 Gsus2 Esus2 Csus2 …
  BC: "[[g1,g2,f3,b3,e4]@6 ~@6 [gb1,gb2,gb3,bb3,eb4]@6 [g1,g2,f3,b3,e4]@4 ~@6 g6 [d6,f6] db6@2 c6@2 bb5@2 g5@2 f5@2 d5@2 c5@2 bb4@4, ~@11 [ab1,ab2,gb3,c4,f4]@13]/2", // Em Ebm Em Dm Fm
  BD: "[[g1,g2,f3,b3,d4]@3 ~@3 [g1,g2,f3,b3,d4]@5 ~@3 g3 bb3 c4 ~@7, ~@12 bb3 ~@9 [f1,f2,eb3,d4]@26, ~@11 a3@4 f4@2 ~@7]/2", // G7 Dm
})).s("gm_piano").gain(0.72).pan(0.4)

// chords · trumpet · "High Trumpets"
const trumpet = note(`<
  ~ A ~@3 B ~@19 C ~@3 B ~@33 D ~ E ~ F ~ G ~@28 H I ~ J ~ E ~ K ~ L ~@17 M ~@3 A ~@3 N ~@4 O@2 ~ A ~@3 B ~@3 A ~@5 P ~
  J ~ E ~@2
>`.pickRestart({
  A: "~@2 g4 bb4 c5 g4 bb4@2 c5@4, ~ f5 f5@2", B: "~@2 [g5,f6] [bb5,f6] [c6,f6] [g5,f6] [bb5,f6]@2 [c6,f6]@4",
  C: "~@3 [bb4,f5] c5 g4 bb4@2 c5@4, ~ f5", D: "~@2 [g4,g5] [db5,db6] [d5,d6] g5 [db5,db6]@2 [d5,d6]@4",
  E: "~ [g4,g5] ~ [bb4,bb5] ~ [db5,db6] ~ [c5,c6] [db5,db6] [c5,c6] [bb4,bb5] [g4,g5]", // G Bb Db C Db C Bb G
  F: "~ [g4,g5] ~@2 [c5,c6] ~ [bb4,bb5]@2 [c5,c6]@4", // G C Bb C
  G: "~@2 [d5,d6] [db5,db6] [c5,c6] [bb4,bb5] [g4,g5] [bb4,bb5] [f4,f5] [g4,g5] [f4,f5] [d4,d5]", // D Db C Bb G Bb F G …
  H: "~@2 [a4,d5] [c5,f5]@2 [d5,g5] [eb5,ab5]@2 [e5,a5] [g5,c6]@2 [a5,d6]", // D5 F5 G5 Ab5 A5 C5 D5
  I: "[c6,e6] [b5,db6] [a5,bb5] [eb5,a5] [d5,g5] [c5,f5]", // C Bsus2 Bbmaj7 Ebdim G5 F5
  J: "~@2 [g4,g5] [bb4,bb5] [c5,c6] [db5,db6] [bb4,bb5]@2 [c5,c6]@4", // G Bb C Db Bb C
  K: "~ [g4,g5] ~ [bb4,bb5] ~ [g4,g5] [db5,db6] ~ [c5,c6]@4", // G Bb G Db C
  L: "~@2 [d5,d6] [db5,db6] [c5,c6] [bb4,bb5] [c5,c6] [g4,g5] [bb4,bb5]@4", M: "~@2 g5 bb5 c6 g5 bb5@2 c6@4, ~ f6 f6@2",
  N: "~@2 g5 db6 d6 g5 db6@2 d6@4, ~ f6 f6@2", O: "[~@11 c4@13]/2",
  P: "~@8 c4@2 [db4,f4]@2 [c4,db4] ~@3 f4@8, ~@3 f4@2 ~ f4@2 c4 ~@3", // Db Dbmaj7
})).s("gm_trumpet").gain(0.36).pan(0.8)

// other · trumpet · "Trumpet Section"
const trumpet_2 = note(`<
  A@8 ~@16 B@2 A@6 ~@19 C ~ D ~ E F ~ G H F ~ A@8 ~@27 I J K A@8 ~@16 B@2 A@6 L@2 M@2 L@2 M@2 A@22
>`.pickRestart({
  A: "[d4@3 ~@3 d4@5 d4@13]/2", B: "[f4@3 ~@3 d4@5 d4@13]/2", C: "~@2 d4 ~@5 d4 ~@3", D: "~@2 f4 ~@2 a3 g3@6",
  E: "d4@2 d4 ~@5 g4@4", F: "e4 ~@5", G: "~@2 e4", H: "e4@3 ~@2 e4 ~@2 e4 ~ g3 ab3", I: "~@6 d4 e4 f4 gb4 ab4 e4",
  J: "a4@2 a5 c6@2 d6 eb6@2 e6 g6@2 a6", K: "c7 b6 a6 eb6 d6 c6", L: "[e4@3 ~@3 e4@3 eb4@2 d4@13]/2",
  M: "[e4@3 ~@3 eb4@3 e4@2 f4@13]/2",
})).s("gm_trumpet").gain(0.36).pan(0.6)

// other · trombone
const trombone = note(`<
  A@8 ~@16 A@8 ~@19 B ~ C ~ D E ~ F G E ~ A@8 ~@28 H ~ A@8 ~@16 A@8 I@2 J@2 I@2 J@2 A@14 K@2 A@6
>`.pickRestart({
  A: "[b3@6 ~@6 b3@9 ~ a3@26, ~@12 bb3 ~@35]/2", B: "~@2 b3 ~@5 b3 ~@3", C: "~@2 db4 ~@9", D: "bb3@2 bb3 ~@5 d4@4",
  E: "c4 ~@5", F: "~@2 c4", G: "c4@3 ~@2 c4 ~@2 c4 ~@3", H: "a3 ~@5",
  I: "[b3@6 ~@6 b3@5 ~ bb3@4 a3@26, ~@12 bb3 ~@35]/2", J: "[b3@3 ~@3 bb3@3 b3@13 ~@2]/2",
  K: "[b3@6 ~@6 b3@9 ~@23 g3@4, ~@12 bb3 ~@9 a3@26]/2",
})).s("gm_trombone").gain(0.36).pan(0.6)

// other · trombone
const trombone_2 = note(`<
  A@8 ~@16 A@8 ~@19 B ~ C ~ D E ~ F G E H A@8 ~@30 A@8 ~@16 A@8 I@2 J@2 I@2 J@2 A@22
>`.pickRestart({
  A: "[f3@3 ~@3 f3@5 eb3@13]/2", B: "~@2 a3 ~@5 a3 ~@3", C: "~@2 a3 ~@9", D: "a3@2 a3 ~@5 ab3@4", E: "a3 ~@5",
  F: "~@2 a3", G: "a3@3 ~@2 a3 ~@2 a3 ~@3", H: "c4 ~@11", I: "[f3@3 ~@3 f3@3 gb3@2 eb3@13]/2",
  J: "[f3@3 ~@3 gb3@3 f3@2 gb3@13]/2",
})).s("gm_trombone").gain(0.36).pan(0.7)

// chords · alto sax
const alto_sax = note(`<
  A@8 ~@16 B@2 A@6 ~@19 C ~ D ~ E F ~ G H F I A@8 ~@16 J K L@2 M N@3 O P Q@2 R S A@8 ~@16 B@2 A@6 T@2 U@2 T@2 U@2 A@22
>`.pickRestart({
  A: "[[f3,d4]@3 ~@3 [f3,d4]@5 [eb3,d4]@13]/2", B: "[[f3,f4]@3 ~@3 [f3,d4]@5 [eb3,d4]@13]/2",
  C: "~@2 [a3,d4] ~@5 [a3,d4] ~@3", D: "~@2 [a3,f4] ~@2 a3 g3@6", E: "[a3,d4]@2 [a3,d4] ~@5 [ab3,g4]@4",
  F: "[a3,e4] ~@5", G: "~@2 [a3,e4]", H: "e4@3 ~@2 [a3,e4] ~@2 [a3,e4] ~ g3 ab3, a3 ~@5", I: "c4 ~@5",
  J: "~@3 f3@3 d4@2 e4 f4@2 g4", K: "a4@4 bb4 a4 g4@4 c5@2 a4@4 bb4 a4 g4@4 c5@2",
  L: "[f4@4 d5@2 f4@2 e4@2 eb4@8 f4@4 [b3,d4]@14 ~@3 b3 c4 ~ d4 e4 ~ f4 g4 ~]/2", // Bm
  M: "[f4,a4]@6 [c5,d5]@6 f5@4 g5 f5 e5@4 d5@2, ~@2 d5 ~", // F Csus2
  N: "[[db5,e5]@6 [g4,a4]@4 [g4,a4]@8 f4@4 [eb4,g4]@6 [eb4,g4]@4 [eb4,g4]@4 [eb4,g4]@6 c5@4 [d4,f4]@14 ~@3 d4 e4 ~ f4 ab4 ~ b4@3]/3", // Dbm Gsus2 Eb Dm
  O: "[a4,c5]@3 [c5,e5]@3 [c5,e5]@3 c5@2 a4", P: "ab4@3 c5@2 b4 ab4@2 e4 d4@2 db4, d4 ~",
  Q: "[c4@4 e4@2 a4@4 b4@2 [a4,c5]@6 e4@3 ~ [a3,d4]@14 d4@2 e4@2 f4@2 gb4@2 ab4@2 e4@2, ~@18 eb4 ~@29]/2", // Am D5
  R: "[a3,a4]@2 a4 c5@2 d5 eb5@2 e5 g5@2 a5", S: "c6 b5 a5 eb5 d5 c5",
  T: "[[f3,e4]@3 ~@3 [f3,e4]@3 [gb3,eb4]@2 [eb3,d4]@13]/2", U: "[[f3,e4]@3 ~@3 [gb3,eb4]@3 [f3,e4]@2 [gb3,f4]@13]/2",
})).s("gm_alto_sax").gain(0.32).pan(0.3)

// other · baritone sax · "Bari Sax"
const baritone_sax = note(`<
  A@8 ~@16 A@8 ~@23 B C ~ D E F ~ A@8 ~@16 G H I J K H I L M N O P F Q A@8 ~@16 A@8 R@2 S@2 R@2 S@2 A@22
>`.pickRestart({
  A: "[g2@3 ~@3 g2@5 f2@13]/2", B: "~@3 f2 e2@2", C: "a1 ~@3", D: "~ e2 c2 ~", E: "~@3 a2@2 gb2@3 gb2 ~ g2 ab2",
  F: "a2 ~@3", G: "~ d2 f2 a2", H: "db2 g2 e2 db2", I: "c2 g2 eb2 c2", J: "b1 b2 f2 b1", K: "d2 a2 f2 d2",
  L: "b1 b2 e2 ab2", M: "a2 a1 e2 a2", N: "ab2 e2 b2 ab2", O: "g2 e2 c2 g2", P: "gb2@3 e2@3 d2 e2 f2 gb2 ab2 e2",
  Q: "d3 ~@3", R: "[g2@3 ~@3 g2@3 gb2@2 f2@13]/2", S: "[g2@3 ~@3 gb2@3 g2@2 ab2@13]/2",
})).s("gm_baritone_sax").gain(0.36)

// bass · acoustic bass
const bass = note(`<
  A@8 B C B D B C B D E F E G E F E H A@8 B C B D B C B D E F E G E F E I J K L M N O L P Q R S T I U A@8 B C B D B C B
  D E F E G E F E I V W X Y N W X Z AA R S AB I U A@8 B C B D B C B D E F E G E F E H A@8 AC@2 AD@2 AC@2 AD@2 A@22
>`.pickRestart({
  A: "[g2@3 ~@3 g2@5 f2@13]/2", B: "g2@3 ~@2 g2@7", C: "bb2@5 f2@7", D: "bb2 f2", E: "e2@3 ~@2 e2@7", F: "a2@5 b2@7",
  G: "a2 b2", H: "a2 d3", I: "a2 ~@3", J: "d3 a2 f2 d2", K: "db2 a2 f2 db2", L: "c2 a2 f2 c2",
  M: "b1@3 b2@3 b1@3 c2@2 db2", N: "d2 a2 f2 d2", O: "db2 a2 a1 db2", P: "b1@3 d2@3 f2@2 e2@4", Q: "a1 c2 e2 a2",
  R: "ab2 e2 b2 ab2", S: "g2 e2 c2 g2", T: "gb2@3 a2@2 gb2@3 gb2 ~ g2 ab2", U: "d3 ~@3", V: "d3 d2 f2 a2",
  W: "db2 g2 e2 db2", X: "c2 g2 eb2 c2", Y: "b1 b2 f2 b1", Z: "b1 b2 e2 ab2", AA: "a2 a1 e2 a2",
  AB: "gb2@3 e2@3 d2 e2 f2 gb2 ab2 e2", AC: "[g2@3 ~@3 g2@3 gb2@2 f2@13]/2", AD: "[g2@3 ~@3 gb2@3 g2@2 ab2@13]/2",
})).s("gm_acoustic_bass").gain(0.4)

// drums · kick
const kick = s("bd").struct(`<
  A B A B A B A B@17 A B A B A B A B@16 C D@6 C E D@3 F ~@2 A B A B A B A B@16 C D@6 C E D@3 F ~@2 A B A B A B A B@17 A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A C
>`.pickRestart({
  A: "x ~@5 x ~@4 x", B: "x!2", C: "x", D: "x ~@10 x", E: "~@11 x", F: "~@3 x",
})).gain(0.44)

// drums · rim
const rim = s("rim").struct("<~@8 A@16 ~@8 A@15 ~ A@11 B ~@10 A@15 ~ A@11 B ~@10 A@16 ~@38>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.55)

// drums · snare
const snare = s("sd").struct(`<
  A@8 ~@16 A@8 ~@19 B ~ C D E ~@2 F G H I A@8 ~@19 B ~ C D E ~@2 F G H I A@8 ~@16 A@37 ~
>`.pickRestart({
  A: "~@3 x", B: "~ x ~@2 x ~", C: "~@2 x ~@2 x ~@6", D: "~@22 x!2", E: "x!2 ~@2 x ~", F: "~@2 x",
  G: "x ~@4 x ~@2 x ~@3", H: "x", I: "x ~@15 x!3 ~@3 x!2",
})).gain(0.49)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@8 A B A B A B A B A B A B A B A B ~@8 A B A B A B A B A B A B A B A ~@23 A B A B A B A B A B A B A B A ~@23 A B A B
  A B A B A B A B A B A B ~@38
>`.pickRestart({
  A: "x!12", B: "x!11 ~",
})).gain(0.44)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A ~@25 A ~ A ~ A ~ A ~ A ~ A ~ A ~@25 A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~@38
>`.pickRestart({
  A: "~@11 x",
})).gain(0.44)

// drums · mid tom
const mid_tom = s("mt").struct("<A@8 ~@16 A@8 ~@27 B ~@2 A@8 ~@27 B ~@2 A@8 ~@16 A@37 C>".pickRestart({
  A: "~@3 x ~ x ~@6", B: "~@11 x", C: "~ x ~@2",
})).gain(0.49)
// … 30 more lines

More by Billy Joel