Strudelify
Red Roses for a Blue Lady cover art

Red Roses for a Blue Lady

James

KeyB minorTempo116 bpm
0:00/0:00
// Red Roses for a Blue Lady — James
// 116 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 115 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(116/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
const piano = note(`<
  A B C D E F G H I J@2 K L M N O P@2 Q R S@3 T U@2 V@3 W X Y Z@2 AA AB AC AD AE AF@3 AG@2 AH@5 AI@2 AJ AK AL AM@2 AN
  AO@2 AP@2 AQ AR AS@2 AT AU@2 AV AW AX AY AZ@3 BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO@2 BP BQ BR BS BT BU BV BW
  BX@2 BY BZ CA CB@2 CC ~@8
>`.pickRestart({
  A: "[c3,g3,c4,e4]@13 ~@3 [b2,g3,b3,d4]@12 ~@4", B: "[a2,a3,c4,e4]@3 ~ [a3,c4,d4,f#4]@4, ~@4 d3@3 ~",
  C: "g2@6 d4@2 e4@2 ~@4 g4@2 e3@6 a4@2 g4@3 ~@3 e4@2, ~@16 b4@3 ~@13", D: "[d3,c4,e4,a4] ~@7",
  E: "[b3,d4,g4]@7 ~ [b3,d4] ~@12 [b3,d4,g4] ~@10, ~@4 g4 ~@11", // G Bm G
  F: "[b3,d4,e4,g4]@7 ~ [b3,d4,e4,g4] ~@12 b3 g4@2 ~@8, ~@21 d4@2 ~@9, ~@22 e4 ~@9", // Em7
  G: "~ [a#3,c#4,e4,f#4]@6 ~ [a#3,c#4,e4,f#4]@3 ~@10 [a#3,c#4,e4,f#4] ~@10", // F#7
  H: "[a#3,c#4,e4,f#4]@7 ~ [a#3,c#4,e4,f#4]@2 ~@3 [a#3,c#4,f#4] ~@7 [a#3,c#4,e4,f#4]@2 ~@9, ~@13 e4@2 ~@17", // F#7 F# F#7
  I: "[a3,b3,d#4,f#4]@7 ~@2 [a3,d#4,f#4]@2 ~@11 [d#4,f#4]@2 ~@8, ~@8 b3@2 ~@12 [a3,b3] ~@9", // B7 D#dim D#m Asus2
  J: "[[a3,b3,d#4,f#4]@7 ~ [a3,d#4,f#4]@2 ~@12 [a3,b3,f#4] ~@7 [g#3,b3,d4,e4]@9 ~ [g#3,b3,d4,e4]@2 ~@12 [d4,g#4]@2 ~@8, ~@8 b3 ~@13 d#4@2 ~@30 [b3,e4] ~@9]/2", // B7 D#dim B7 E7 Ddim E5
  K: "~@9 [b3,d4,e4,a4]@4 ~@4 [b3,d4,e4,a4]@4 ~ [b3,d4,e4,g#4]@6 ~@2 b3 ~", // Bm7 E7
  L: "~ [c4,a4]@6 ~@2 [a3,e4,a4]@3 ~@10 [a3,c4] ~@2 [a3,c4,e4]@3 ~@2 a3 ~, [a3,e4]@6 ~@2 c4@3 ~@11 g4@2 ~@8", // F A5 Am A5
  M: "~ [a3,c4,d4,f#4]@5 ~@3 [a3,c4,d4,f#4]@4 ~ a3 ~@7 [c4,d4,a4]@8 a3@2, ~@22 a3@5 ~@5", // D7
  N: "~ [b3,d4,g4]@5 ~@3 [d4,g4]@5 b3 ~@7 [b3,d4,f#4]@2 ~@6 [b3,d4,e4,g4]@2, ~@9 b3@2 ~@21", // G G5 Bm Em7
  O: "~@6 [d4,e4,g4,b4]@2 ~@6 [d4,e4,g4,b4]@6 ~@2 [d4,e4,g4]@8 b3 ~, ~@22 b3@5 ~@5", // Em7
  P: "[~ [a3,c#4,e4,a4]@4 ~ [a3,e4] ~@2 [a3,c#4,e4,g4]@2 ~@6 [a3,c#4,e4]@4 ~@4 a3 ~@4 [a3,c#4,e4,a4]@5 ~@3 [a3,c#4,e4,a4] ~@2 [a3,c#4,e4,g4]@5 ~@3 [c#4,e4]@5 a3 ~@2 [a3,c#4]@4 ~ [a3,c#4] ~, ~@6 a4@2 ~@41 a3@3 ~@10 e4@2]/2", // A A5 A7 A A7 C#m A
  Q: "~@6 [a3,c4,e4]@2 ~@4 [a3,c4,e4]@2 ~@3 [a3,c4,e4]@2 ~@3 [a3,c4,e4,g4]@3 ~@3 [a3,c4,e4]@3 ~", // Am Am7 Am
  R: "~ [a3,c4,d4,f#4]@3 ~@28", // D7
  S: "[~@9 [g4,b4,d5]@2 ~@3 [a#4,c#5] ~@2 [g4,b4,d5]@2 ~@3 [b4,g5]@2 ~ [g4,b4,d5]@2 ~@3 [d4,b4]@8 ~@3 [b3,d4,a4]@4 ~ [b3,d4] ~@7 [g3,d4] ~@7 [f#3,a#3,c#4]@7 ~ f#3 ~@2 [a#3,f#4]@3 ~@2 [a#3,g#4]@2 ~ a#4@3 ~@3 [a#3,g#4]@2 ~@3 f#4@2 ~@2, ~@22 d5 ~@23 g4@2 ~@6 b3@2 ~@17 d#4 ~@17 a#3@2 ~@3, ~@92 c#4 ~@3]/3", // G A#m G Em G Bm7 Bm G5 …
  T: "~@6 c#4 ~@3 a#4 c#4 ~ f#4 c#4 f#4 f#4@2 ~@4 [c#4,e4,f#4,a#4]@6 ~ e4 c#4 ~, ~@15 a#4@3 ~@14", // F#7
  U: "[~ [b3,d#4,f#4,a4,b4]@5 [b3,d#4,f#4,b4]@2 ~@6 [d#4,f#4,b4]@8 ~@3 [d#4,f#4,a4]@5 ~ f#4@7 ~@4 [f#4,a4]@4 ~ [f#4,b4]@4 ~@3 [b3,d#4,f#4,b4]@8 ~@2, ~@6 a4 ~@7 b3@6 ~@2 b3@14 ~@2 b3@11 ~@15, ~@15 d#4@4 ~@13]/2", // B7 B D#dim F#m B5 B
  V: "[~ b3@7 ~ b3@11 ~@3 b3@2 ~@5 [e4,g#4,b4,e5]@8 d5@2 ~ b4@2 ~ e4@2 ~ g#4@2 a4@2 ~ a#4@2 ~ b4@2 g#4@4 ~@4 [g4,a4,c5]@6 ~@3 g4@4 ~@3 e4@3 ~@2 [g4,a4,c5,e5]@4 ~@6, ~ [d4,e4,b4]@12 ~@49 e4@16 ~@18, ~@73 [a4,c5]@4 ~@19]/3", // E Am7 E7 Am
  W: "~@2 [f#4,a4,c5,e5]@7 ~ [f#4,a4,c5,d5]@4 ~@3 d4@2 ~@4 [d4,c5]@5 b4 ~ f#4@2, ~@23 [f#4,a4]@4 ~@5", // F#m7b5 D7 F#m
  X: "~ [d4,g4,b4]@7 ~ [d4,g4,b4,d5]@5 ~@9 [d4,f#4,b4,d5]@2 ~@7", // G Bm
  Y: "~@2 [e4,g4]@5 d5@2 ~ [g4,b4]@5 e4 ~@2 [g4,a#4]@4 b4@3 g4@5 e4@2, ~ b4@5 ~@4 e4@3 ~@5 e4@9 ~@5, ~ e5@3 ~@28", // Em G Gm
  Z: "[~@6 [e4,g4,a4,c#5]@2 ~@6 e4 ~@2 [e4,g4,a4,c#5]@4 ~@2 [b4,d5]@2 ~@6 e4@6 ~ e4@2 ~@2 [e4,g4,d5]@5 ~@2 [e4,c#5]@5 ~ [e4,g4,a4]@3 ~@3 e4@2 ~, ~@23 [e4,g4] ~@6 [g4,a4,c#5,e5]@9 ~@2 a4@5 ~@3 [g4,a4]@2 ~@13]/2", // A7 Bm Em7 C#m A7 Em A7 Gsus2
  AA: "~@7 [e4,g4,a4,c5]@3 ~@4 e4 ~@2 [f#4,a4,c5,e5]@3 ~@6 a4@2 ~@3 e4, ~@25 [e4,g4,c5]@4 ~@3", // Am7 F#m7b5 C
  AB: "~@15 g5@2 ~ a5@4 ~ g5@2 ~@5 g5 a5", AC: "a#5 ~ b5@21 ~@6 d6@2 ~",
  AD: "e6@3 ~@3 g6@2 ~@2 a6@2 ~@3 b6@3 ~ a6@3 ~ g6@3 ~@2 d6@3 ~, ~@15 a6 ~@16",
  AE: "~@2 c#6@12 ~@4 a#5@4 ~@2 g#5@2 ~@3 a#5 g#5@2, ~@2 b5 ~@29",
  AF: "[f#5@13 ~@8 e5@2 c#5 ~@2 b4@3 ~@2 a#4@2 ~ b4@4 ~@7 d#5@2 e5@2 ~ f5@2 ~ f#5@2 e5@2 ~ d#5@3 ~@2 b4@3 ~@3 d#5@2 ~ e5 ~ f5@2 ~ f#5 ~ e5@2 ~ d#5@3 ~@3 b4@3 ~@2 d#5@3]/3",
  AG: "[~@2 e5@6 ~@2 e5@4 ~ d5@2 ~ b4@4 ~ a4@2 ~ g#4@5 e4@6 ~@18 e5@2 ~@7, ~@2 d#5 ~@23 f#4 ~@28 d#5 ~@8]/2",
  AH: "[~@7 b5@2 ~@2 a5@2 g5 ~@2 a5 ~ g5@2 ~ e5 ~ c5 ~@2 d5@2 ~ d#5@2 e5@2 ~ d5@2 ~ c5@2 a4@2 ~ g4@3 ~@3 f#4@7 d4@4 ~ f#4@2 ~ a4@2 ~ g4@3 ~@3 b4@4 ~ d5@3 ~@2 d5@5 ~ b4@3 ~@2 e5@5 ~@2 d5 ~ d5@2 ~ e4@2 ~@13 b4@5 d5@5 c#5@5 ~ a4@2 a5@3 ~@3 g5@3 e5@4 ~@3 d5@3 ~@3, ~@72 a#4 ~@9 c#5 ~@10 d#5 ~@26 a#4 ~@39]/5",
  AI: "[c#5@3 a4@3 ~ c#5@2 ~ d5@4 ~ a4 ~@3 d#5@4 a4 ~@2 e5@4 ~ a4@2 ~ g5@3 ~@2 a5@3 ~@3 g5@3 ~@2 a5@3 ~@3 c6@3 ~@2 e6@3]/2",
  AJ: "~@3 d6@4 b5 ~@24", AK: "d#2 d2 ~@14",
  AL: "~@10 [b3,d4,e4,g4]@2 ~@3 [a#3,c#4,d#4,f#4]@2 ~ [b3,d4,e4,g4]@3 ~@3 [d4,e4,g4,b4]@2 g4 b3@3 ~@2, ~@26 [d4,e4]@3 ~@3", // Em7 D#m7 Em7 Dsus2
  AM: "[~@3 [g3,d4]@2 d4 ~ d4 ~@3 d4 ~ d4 d4@4 ~@6 [b3,d4,e4] ~@6 d#4@2 ~@2 f#4 ~@8 d#4 ~@3 [c#4,f#4]@3 ~@4 [c#4,f#4,g#4] ~@5 b4@2 ~, ~@3 b3@4 ~@16 g4@2 ~@6 c#4@13 ~@20, ~@31 f#4 ~@23 a#4@2 ~@7]/2", // G5 E7 F#5 C#sus4
  AN: "~@3 [a#4,c#5]@6 ~@6 [f#4,a#4,c#5,f#5]@7 ~@4 [c#5,f#5]@3 ~@3, ~@2 f#4@2 ~@21 f#4@3 ~@4", // A#m F# F#5
  AO: "[[f#4,a#4,c#5,d#5,f#5]@2 ~@9 [f#4,b4,d#5]@4 ~ d#5@2 ~@5 f#4@2 ~ [f#4,a4,b4,d#5]@4 ~ [b4,d#5]@2 ~@10 [a4,b4,d#5,f#5]@3 ~@2 [a4,b4,d#5] ~@7 [f#4,a4,b4,d#5]@2 ~@6, ~@15 b4@2 ~@31 f#5@2 ~@14, ~@16 f#4 ~@14 [f#4,a4] ~@32]/2", // D#m7 B B7 B B7 F#m
  AP: "[~@8 [e4,g#4,b4,e5]@27 ~@5 [e4,g#4,b4,d5]@3 ~@8 [e4,g#4,b4]@2 ~@6 [d4,e4,g#4]@5, ~@40 c5 ~@23]/2", // E E7 E E7
  AQ: "~@3 [c4,e4,a4]@7 ~ [c4,e4,a4,c5]@3 ~@4 [c4,e4,a4]@6 ~@3 [c4,e4,g4]@4 ~", // Am C
  AR: "[b3,d4,f#4]@3 ~@13 [c4,d4,f#4]@7 a3 [c4,d4,f#4,a4]@6 ~@2, ~@16 a3@5 ~@11", // Bm D7
  AS: "[~@2 [b3,d4,g4]@4 ~@10 [b3,d4,f#4]@3 ~@8 [b3,e4,g4]@8 ~@29]/2", // G Bm Em
  AT: "~@8 [a4,c#5,e5,a5]@14 ~@2 g5@2 ~ [c#5,e5]@3 ~@2", // A C#m
  AU: "[a4 ~@2 [a4,c#5,e5]@4 ~@4 [a4,c#5,e5]@6 ~@2 a4 ~@4 [a4,c#5,e5]@5 ~@2 a4@2 ~@7 [a4,c5,e5,g5]@2 ~@4 [a4,c5]@2 ~@3 [a4,c5,e5,g5]@2 ~@3 [a4,c5,e5,g5]@2 ~@4 a4@2, ~@45 [e5,g5]@2 ~@14 [c5,d#5,g5]@2 ~]/2", // A Am7 Am Am7 Em Cm
  AV: "~@3 [a4,c5,d5,f#5]@3 ~@26", // D7
  AW: "~@11 [g4,b4,d5]@2 ~@3 [a#4,c#5] ~@2 [g4,b4,d5]@2 ~@3 [b4,g5]@2 ~ [g4,b4,d5]@2 ~@3, ~@24 d5 ~@7", // G A#m G Em G
  AX: "[d4,b4]@8 ~@3 [b3,d4,a4]@4 ~ [b3,d4] ~@7 [g3,d4] ~@7, ~@8 g4 ~@3 b3 ~@3", // G Bm7 Bm G5
  AY: "[f#3,a#3,c#4]@7 ~ f#3 ~@2 [a#3,f#4]@3 ~@2 [a#3,g#4]@2 ~ a#4@3 ~@3 [a#3,g#4]@2 ~@3 f#4@2, ~@11 d#4 ~@17 a#3@2 ~, ~@30 c#4 ~", // F# D#m A#7
  AZ: "[~@8 c#4 ~@3 a#4 c#4 ~ f#4 c#4 f#4 f#4@2 ~@4 [c#4,e4,f#4,a#4]@6 ~@2 c#4 ~@2 [b3,d#4,f#4,a4,b4]@4 ~ [b3,d#4,f#4,b4]@2 ~@6 [d#4,f#4,b4]@8 ~@4 [d#4,f#4]@4 ~ [d#4,f#4]@8 ~@3 [f#4,a4]@4 ~ [f#4,b4]@4 ~@3 [b3,d#4,f#4,b4]@8, ~@17 a#4@3 ~@11 e4@2 ~@7 a4 ~@7 b3@6 ~@2 b3@14 ~@3 b3@11 ~@12, ~@59 a4@6 ~@31]/3", // F#7 B7 B D#m F#m B5 B
  BA: "~@3 b3@7 ~@2 b3@11 ~@2 b3@2 ~@5, ~@3 [d4,e4,b4]@12 ~@17", // E7
  BB: "~ [e4,g#4,b4]@8 d5@2 b4@2 ~ e4@2 ~ g#4@2 ~ a4@2 a#4@2 ~ b4@2 ~ g#4@4, e5@7 ~@25", // E
  BC: "~@3 [g4,a4,c5]@6 ~@3 [g4,c5]@4 ~@3 e4@3 ~@3 g4@3 ~@4, e4 ~, ~@11 a4@4 ~@9 [a4,c5,e5]@4 ~@4", // Am7 C5 Am
  BD: "~@4 [f#4,a4,c5,e5]@7 ~ [f#4,a4,c5,d5]@4 ~@3 d4@2 ~@4 [d4,c5]@5 b4 ~, ~@25 [f#4,a4]@4 ~@3", // F#m7b5 D7 F#m
  BE: "f#4@2 ~ [d4,g4,b4]@7 ~ [d4,g4,b4,d5]@5 ~@9 [d4,f#4,b4,d5]@2 ~@5", // G Bm
  BF: "~@4 [e4,g4,b4]@5 d5@2 ~ [g4,b4]@5 e4 ~@2 [g4,a#4]@4 b4@3 g4@5, ~@4 e5@3 ~@5 e4@3 ~@5 e4@9 ~@3", // Em G Gm
  BG: "e4@2 ~@7 [e4,c#5]@2 ~@5 e4 ~@2 [e4,g4,a4,c#5]@4 ~@2 [b4,d5]@2 ~@5, ~@8 [g4,a4]@2 ~@15 [e4,g4] ~@6", // C#m A7 Bm Gsus2 Em
  BH: "~ [g4,e5]@7 e4@2 ~@2 [e4,g4,d5]@5 ~@3 c#5@5 [e4,g4,a4]@3 ~@3 e4, [a4,c#5]@9 ~@2 a4@5 ~@3 [g4,a4]@2 ~@11, ~ e4@6 ~@12 e4@4 ~@9", // C Em7 A7 A Gsus2
  BI: "~@9 [e4,g4,a4,c5]@3 ~@4 e4 ~@2 [a4,c5,e5]@4 ~@5 [e4,g4,c5]@4, ~@19 f#4@2 ~@7 a4@2 ~@2", BJ: "~ e4 ~@30",
  BK: "~@12 [g4,b4,d5]@2 ~@3 [a#4,c#5] ~ [g4,b4,d5]@2 ~@4 [b4,d5,g5]@2 ~ [g4,b4,d5]@2 ~@2", // G A#m G
  BL: "~ [d4,b4]@8 ~@3 [b3,d4,a4]@4 ~ [b3,d4] ~@7 [g3,d4] ~@6, ~@17 g4@2 ~@6 b3@2 ~@5", // G Bm7 Bm G5
  BM: "~ [f#3,a#3,c#4]@7 ~ f#3 ~@2 [a#3,f#4]@3 ~@2 g#4@2 ~ a#4@3 ~@3 [a#3,g#4]@2 ~@2 [a#3,f#4]@2, ~@12 d#4 ~@3 a#3@2 ~@12 c#4 ~", // F# D#m A#7 D#m
  BN: "~@9 c#4 ~@3 a#4 c#4 f#4 ~ c#4 f#4 f#4@2 ~@4 [c#4,e4,a#4]@6 ~, ~@18 a#4@3 ~@3 f#4@4 ~@4", // A#dim
  BO: "[[c#4,e4] ~@3 [b3,d#4,f#4,a4,b4]@5 [b3,d#4,f#4,b4]@2 ~@6 [d#4,f#4,b4]@8 ~@3 [d#4,f#4,a4]@5 [d#4,f#4]@8 ~@3 [f#4,a4]@4 ~@2 [f#4,b4]@4 ~@3 [b3,d#4,f#4,b4]@7, ~@9 a4 ~@7 b3@6 ~@2 b3@14 ~@2 b3@11 ~@12]/2", // C#m B7 B D#dim D#m F#m B5 B
  BP: "~@12 b3@11 ~@3 b3@2 ~@4, ~@3 b3@7 ~@22, ~ [d4,e4,b4]@3 ~@4", // E7
  BQ: "~ [e4,g#4,b4,e5]@8 d5@2 ~ b4@2 ~ e4@2 g#4@2 ~ a4@2 ~ a#4@2 b4@2 ~ g#4@4", // E
  BR: "~@4 [g4,a4,c5]@6 ~@2 [g4,a4,c5]@4 ~@4 e4@3 ~@2 [g4,a4,c5,e5]@4 ~@3, ~ e4@16 ~@15", // Am7
  BS: "~@4 [f#4,a4,c5,e5]@7 ~@2 d5@3 ~@4 d4@2 ~@4 d4@5 b4, ~@12 [f#4,a4,c5]@4 ~@9 c5@7, ~@25 [f#4,a4]@4 ~@3", // F#m7b5 F#dim F#m
  BT: "f#4@2 ~@2 [d4,g4,b4]@5 ~@3 [d4,g4,b4]@5 ~@3 [d4,f#4,b4]@4 ~@4 [d4,f#4,b4]@4", // G Bm
  BU: "~@10 [e4,g#4,b4]@2 ~@3 [e4,g#4,b4,d5]@2 ~@3 [e4,g#4,b4,d5]@11 ~", // E E7
  BV: "~@4 [e4,g4,c5]@7 ~ [e4,g4,c5]@2 ~@6 [d4,g4,b4]@5 ~@3 [g4,b4]@2 ~@2, ~@28 d4 ~@3", // C G
  BW: "~@4 [e4,a4,c5]@5 ~@3 [e4,a4,c5]@2 ~@6 [d4,f#4,a4,c5]@4 ~@4 [d4,f#4,a4,c5]@4", // Am D7
  BX: "[~@4 [d4,g4,b4]@4 ~@4 [g4,b4]@4 ~@2 d4 ~ [g4,b4,d5]@3 ~@3 [f#4,a#4,c#5]@3 ~@2 [f4,a4,c5]@3 ~@11 [g#4,b4,d5,e5]@3 ~@2 [g#4,b4,d5,e5]@13 ~, ~@6 d4 ~@25]/2", // G F# F E7
  BY: "~@13 [g4,c5,e5]@4 ~@12 [g4,b4,d5]@3", BZ: "~@13 [a4,c5,e5]@4 ~@12 [a4,c5,d5,f#5]@3",
  CA: "~@12 f#4@2 ~ g4 ~@2 a#4@2 ~ b4@2 c5 ~@2 c#5@2 ~ d5@2 f5",
  CB: "[~@2 f#5 ~@2 g5@2 ~@10 g5 [d6,g6]@2 g5 [d6,g6] ~ g5 [d6,g6] g5 [d6,g6]!2 ~ [d6,g6] ~ [d6,g6] ~ [d6,g6] ~ [d6,g6] ~ [d6,g6] ~ [d6,g6] ~ [d6,g6] ~@4 d6 ~@11 [a4,b4] [f4,g4] [c4,d4,e4] [a3,b3] [f3,g3] [d3,e3], ~@17 b5@2 ~ b5@34 ~@10]/2", // G5 Asus2 Fsus2 C Asus2 Fsus2 Dsus2
  CC: "[b2,c3] a2 ~@30", // Cmaj7
})).s("gm_piano").gain(0.4).pan(0.3)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@11 A ~@4 B ~@3 C D E F ~ G H ~@2 I ~@17 J K ~@2 L@2 ~ M N O ~@6 P ~@5 Q R S T ~ U V ~@2 W@2 ~@5 X Y Z AA@2 AB AC ~@3
  AD ~@8 AE AF AG ~@8
>`.pickRestart({
  A: "~@6 [a3,c4,e4,g#4] ~@25", B: "~@6 c#4 ~@25", C: "~@14 g4 ~@15 g4 ~", D: "g4@6 ~ d4 ~@24",
  E: "~@14 c#4 ~@2 [a#3,c#4]@4 ~@2 c#4@2 ~@7", // A#m
  F: "~@2 c#4@2 [f#4,a#4]@2 ~@2 [f#4,a#4] c#4 f#4 ~@2 a#4 ~@2 c#4 ~@11 f#4@2 ~@2, ~ a#4@2 ~@4 e4@2 ~ e4@9 ~@9 g#4 ~@3", // F#
  G: "~@10 d#4@4 ~ d#4@2 ~@15, ~@15 a4 ~@16", H: "~ g#4@11 ~@3 d4@9 ~@8, ~@14 [e4,g#4,b4]@11 ~@7", I: "~@29 a4@2 d4",
  J: "~@5 e5 ~ b4@2 ~@23", K: "~@23 a4@2 ~@7",
  L: "[~@12 c5 b4 a4 g4 [e4,f4] ~@2 b3@2 a3 ~@5 b2 ~@3 e2@2 ~@31, ~@8 a5@2 f5@2 d5@2 ~@3 d4@2 ~@4 f3@2 d3@2 ~@2 g2@2 ~@33, ~@9 g5@2 e5@2 ~@5 c4@2 ~@2 g3@2 e3@2 c3@2 a2@2 f#2@2 ~@32]/2", // Fmaj7
  M: "~@7 g3 ~ [g3,d4] g3 ~ g3@6 ~@14, ~@7 b3@11 ~@14", // G5
  N: "a#3 ~ [a#3,d#4] ~ a#3 [d#4,f#4] a#3 [d#4,f#4] a#3 [d#4,f#4] a#3 [d#4,f#4] [a#3,f#4] a#3 [d#4,f#4] ~ d#4@2 ~@14, ~@12 c#4@3 a#3@2 ~@15", // D#5 D#m
  O: "~@6 f#4 c#5 ~ f#4 ~ f#4@2 ~@9 [c#5,d#5]@2 a#4 ~@2 a#4@2 ~@3, ~@9 a#4@2 ~@21, ~@5 c#5 ~@7 d#5 ~@2", // C#sus2
  P: "~@23 b3 ~@8", Q: "~@16 g4 ~@15", R: "g4 ~ g4@6 ~ d4 ~@22", S: "~@16 c#4 ~@2 [a#3,c#4]@4 ~@2 c#4@2 ~@5",
  T: "~@4 c#4@2 [f#4,a#4]@2 ~@2 [f#4,a#4] c#4 ~ f#4 ~ a#4 ~@2 c#4 ~@11 [f#4,g#4]@2, ~@3 a#4@2 ~@4 e4@2 ~ e4@9 ~@11", // F# F#sus2
  U: "~@12 d#4@4 ~ d#4@2 ~@13, ~@17 a4 ~@14", V: "~@3 g#4@11 ~@3 [d4,e4,g#4,b4]@11 ~@4", W: "[~@31 a4@2 d4 ~@30]/2",
  X: "~@17 g4 ~@14", Y: "~ g4 ~ g4@6 d4 ~@22", Z: "~@17 c#4 ~@2 [a#3,c#4]@4 ~@2 c#4@2 ~@4",
  AA: "[~@4 c#4@3 [f#4,a#4]@2 ~ a#4 [c#4,f#4] ~ f#4 ~@2 a#4 ~@2 c#4 ~@10 g#4 f#4@2 ~@31, ~@3 a#4@2 ~@5 e4@2 e4@9 ~@43]/2", // F# F#5
  AB: "~@6 d#4@2 ~ d#4 ~@6, ~@18 a4 ~@13", AC: "~@4 g#4@11 ~@2 [d4,e4,g#4,b4]@11 ~@4", AD: "~ d4 ~@30, a4 ~@15",
  AE: "~@27 g5 ~ g5 ~ g5", AF: "g5 ~@3 g5 ~ g5 ~@4 d6!2 ~@2 g6 ~ [g5,g6]@5 a5 [f5,g5] e5 [c5,d5] ~@6, ~@16 d6@5 ~@11",
  AG: "~ g2 ~@30",
})).s("gm_piano").gain(0.24).pan(0.3)

// bass · acoustic bass · "AC-Bass"
const bass = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA@2 AB AC O AD AE AF AG@2 AH AI AJ AK AL AM AN AO AP AQ AR AS AT
  AU AV ~ AW AX AY AZ BA@2 BB BC BD BE BF BG ~ BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV BW@3 BX BY BZ CA CB CC CD
  CE@2 CF CG@3 CH CI CJ CK@2 CL CM CN@3 CO ~@8
>`.pickRestart({
  A: "c2 ~ c2 ~ b1 ~ b1 ~", B: "a1 ~ a1 ~ d2 ~ d2 ~", C: "g1@5 ~@9 d2@2 e2@4 ~@4 a1@5 ~@3", D: "d2@2 ~@5 d2@7 ~@2",
  E: "g1@9 ~@7 d2@9 ~@7", F: "g1@11 ~@5 d2@6 ~@2 g1@5 ~@3", G: "f#1@3 ~ c#2@3 ~", H: "f#1@10 ~@4 a#1@10 c#2@5 ~@3",
  I: "b1@9 ~@5 b1@2 f#1@9 ~@5 f#1@2", J: "~ b1@10 ~@3 b1@3 d#2@6 ~@2 f#2@7", K: "~ e2@10 ~@3 e2@2 ~ b1@9 ~@4 b1@2",
  L: "~ e2@8 ~@5 e2@2 ~ d2@7 ~ b1@6 ~", M: "~ a1@7 ~ b1@6 ~@2 c2@6 ~@2 c#2@7", N: "~ d2@7 ~ d#2@6 ~@2 e2@6 ~@2 f#2@7",
  O: "~ g2@7 ~ f#2@6 ~@2 e2@6 ~@2 d2@6 ~", P: "~ e2@7 ~ d2@6 ~@2 c2@6 ~@2 b1@6 ~",
  Q: "~ a1@7 ~ b1@6 ~@2 c#2@6 ~@2 d2@7", R: "~ e2@7 ~ a2@7 ~ g2@7 ~ e2@6 ~", S: "~ d2@6 ~@2 d2@6 ~@2 a1@5 ~@3 a1@7",
  T: "~ d2@4 ~@20 f#1@7", U: "~ g1@9 ~@4 g1@2 ~ d2@9 ~@4 d2@2", V: "~ g1@9 ~@4 g1@2 ~ d2@7 ~ g2@6 ~",
  W: "~ f#2@10 ~@3 f#2@3 c#2@9 ~@4 c#2@2", X: "~ f#2@9 ~@4 f#2@2 ~ e2@7 ~ c#2@6 ~",
  Y: "~ b1@10 ~@3 b1@3 d#2@9 ~@4 d#2@2", Z: "~ f#2@10 ~@4 f#2@2 b2@7 ~ a2@7",
  AA: "[~ g#2@8 ~@6 g#2@2 e2@9 ~@5 e2@2 b1@9 ~@5 b1@2 e2@5 ~ d2@2 b1@5 ~@2]/2", AB: "~ a1@7 ~ b1@7 ~ c2@7 ~ e2@7",
  AC: "~ d2@7 ~ b2@7 ~ a2@7 ~ f#2@6 ~", AD: "~ e2@4 ~@2 e2@2 f#2@6 ~@2 g2@7 ~ b2@7",
  AE: "~ a2@6 ~@2 c#3@6 ~@3 d3@7 ~ d#3@6", AF: "~@2 e3@5 a2@2 ~ c#3@7 ~ b2@7 ~ a2@5 ~",
  AG: "[~@2 d3@2 b2@2 ~ a2@2 ~ f#2@4 ~ d2@2 ~ f#2@4 ~ e2@3 c#2@4 ~ d2@2 ~@31]/2", AH: "~@2 g1@7 ~ b1@7 ~ d2@7 ~ e2@6",
  AI: "~@2 g2@8 a2@7 ~ b2@7 ~ g2@6", AJ: "~@2 f#2@7 ~ e2@8 c#2@7 ~ b1@6", AK: "~ a#1@4 f#1@4 a#1@4 c#2@3",
  AL: "~@2 b1@8 d#2@7 ~ e2@7 ~ f2@6", AM: "~@2 f#2@6 b1@2 e2@7 ~ d#2@8 b1@6", AN: "~@2 e2@8 d2@7 ~ b1@7 ~ a1@6",
  AO: "~@2 g#1@4 ~ e1@2 ~ f#1@7 ~ g#1@7 ~ b1@6", AP: "~@2 a1@8 b1@7 ~ c2@8 e2@6", AQ: "~@2 d2@7 ~ b2@8 a2@8 f#2@6",
  AR: "~@2 g2@8 f#2@8 e2@7 ~ d2@6", AS: "~@2 e2@8 ~ d2@7 b1@7 ~ g1@6", AT: "~@2 a1@8 b1@8 ~ c#2@7 d2@6",
  AU: "~@2 d#2@8 e2@7 ~ f#2@8 g2@6", AV: "~@2 a2@8 b2@7 ~ c3@7 ~ e3@6", AW: "~@8 d2@10 e2@5 ~@3 f#2@4 ~@2",
  AX: "~ g2@4 ~@3 g2 d2@4 ~@3", AY: "d2 g2@5 ~@2 g2 d2@3 ~ g2@3", AZ: "~@2 f#2@9 ~@5 f#2@2 c#2@8 ~@6",
  BA: "[c#2@3 f#2@8 e2@7 ~ c#2@7 ~ a#1@8 b1@9 ~@4 b1@3 f#2@10 ~@3]/2", BB: "f#2@3 b1@9 ~@4 b1@3 d#2@7 ~ f#2@5",
  BC: "~@3 e2@10 ~@3 e2@2 ~ b2@9 ~@4", BD: "b2@3 e3@3 ~@2 e3@2 ~ d3@7 ~ c3@7 ~ b2@5",
  BE: "~@3 a2@7 ~ g2@7 ~ e2@7 ~ c2@5", BF: "~@3 d2@8 c2@7 ~ b1@7 ~ a1@5", BG: "~@3 g1@7 ~ b1@7 ~ d2@7 ~ f#2@5",
  BH: "~@8 a1@10 ~ c#2@6 ~@2 d2@5", BI: "~@3 d#2@7 ~ e2@7 ~ c#2@7 ~ a1@5",
  BJ: "~@3 d2@4 ~ d2@3 ~@3 d2@3 ~@2 d2@3 ~@2 d2@3 ~@3 d2@2", BK: "~@3 d2@3 ~@26", BL: "~@3 g1@9 ~@4 g1 ~@2 d2@9 ~@4",
  BM: "d2@2 ~ g1@9 ~@4 g1@2 ~ d2@7 ~ g2@5", BN: "~@3 f#2@10 ~@3 f#2@2 ~ c#2@9 ~@4",
  BO: "~ c#2@2 f#2@9 ~@5 f#2@2 e2@7 ~ c#2@5", BP: "~@3 b1@10 ~@4 b1@2 d#2@9 ~@4",
  BQ: "~ d#2@2 f#2@10 ~@4 f#2@2 b2@7 ~ a2@5", BR: "~@3 g#2@8 ~@6 g#2@2 e2@9 ~@4",
  BS: "~ e2@2 b1@9 ~@5 b1@2 e2@5 ~ d2@2 b1@5", BT: "~@3 a1@7 ~ b1@7 ~ c2@7 ~ e2@5",
  BU: "~@3 d2@7 ~ b2@7 ~ a2@7 ~ f#2@5", BV: "~@3 g2@7 ~ f#2@6 ~@2 e2@6 ~@2 d2@5",
  BW: "[~@4 e2@4 ~ e2@2 ~ f#2@6 ~@2 g2@7 ~ b2@7 ~ a2@6 ~@2 c#3@6 ~@2 d3@7 ~ d#3@7 ~ e3@5 a2@2 ~ c#3@7 ~ b2@7 ~ a2@4]/3",
  BX: "~@4 d3@2 b2@2 ~ a2@2 ~ f#2@4 ~ d2@2 ~ f#2@4 ~ e2@3 c#2@4", BY: "~ d2@2 ~@29", BZ: "~@4 g1@9 ~@4 g1 ~@2 d2@9 ~@3",
  CA: "~ d2@2 ~ g1@9 ~@4 g1@2 ~ d2@7 ~ g2@4", CB: "~@4 f#2@10 ~@3 f#2@2 ~ c#2@9 ~@3",
  CC: "~ c#2@2 ~ f#2@9 ~@4 f#2@2 ~ e2@7 ~ c#2@4", CD: "~@4 b1@10 ~@3 b1@3 d#2@9 ~@3",
  CE: "[~ d#2@2 ~ f#2@10 ~@3 f#2@2 ~ b2@7 ~ a2@7 ~ g#2@8 ~@5 g#2@3 e2@9 ~@3]/2",
  CF: "~ e2@3 b1@9 ~@4 b1@2 ~ e2@5 d2@2 ~ b1@4",
  CG: "[~@4 a1@7 ~ b1@7 ~ c2@7 ~ e2@7 ~ d2@7 ~ b2@7 ~ a2@7 ~ f#2@7 ~ g2@4 ~@4 g2@6 ~@2 f#2@6 ~@2 f#2@4]/3",
  CH: "~@4 e2@5 ~@3 e2@5 ~@3 e2@5 ~@3 e2@4", CI: "~@2 d2@2 c2@5 ~@3 c2@5 ~@3 b1@5 ~@3 b1@4",
  CJ: "~@4 a1@4 ~@4 a1@5 ~@3 d2@5 ~@3 d2@4",
  CK: "[~@4 g1@5 ~@3 g1@4 ~@2 d2@2 g2@3 ~@3 f#2@3 ~@2 f2@3 ~@2 e2 ~@7 e2@5 ~@3 e2@5 ~@3 e2@4]/2",
  CL: "~@2 d2 ~ c2@5 ~@3 c2@5 ~@3 b1@5 ~@3 b1@4", CM: "~@4 a1@5 ~@3 a1@5 ~@3 d2@5 ~@3 d2@4",
  CN: "[~@4 g1@3 ~@5 f#1@2 ~ g1@2 ~ a#1@2 b1@2 ~ c2@2 ~ c#2@2 ~ d2@2 f2@2 ~ f#2@2 ~ g2@2 ~@11 g1@43 ~@3]/3",
  CO: "~@5 g1@3 ~@24",
})).s("gm_acoustic_bass").gain(0.48)

// chords · tuba · "Alto-Sax" · C G Am7 D7
const tuba = note(`<
  [~@2 [c4,g4,c5,e5,g5] ~@3 [b3,g4,b4,d5,g5] ~]
  [~@2 [a3,a4,c5,e5,g5] ~@3 [d3,d4,a4,c5,d5,f#5] ~]
  ~@113
>`).s("gm_tuba").gain(0.48)

// chords · alto sax · "Alto-Sax"
const alto_sax = note(`<
  ~@53 A B C D E F G H I J K ~ L@3 M ~@15 N O P Q R S T U V W X Y Z AA AB@3 AA AC AD@4 ~@8
>`.pickRestart({
  A: "~@10 [b3,d4,e4,g4]@2 ~@4 [a#3,c#4]@2 [b3,d4,e4,g4]@3 ~@3 [e4,g4,b4]@2 [b3,d4,e4,g4]@3 ~@3, ~@16 [d#4,f#4] ~@7 d4 ~@7", // Em7 A#m Em7 Em Em7 D#m
  B: "[g3,b3,d4]@31 ~", C: "~@8 [f#3,a#3,c#4,f4] ~@10 [a#3,c#4]@4 ~@9, ~@9 f#3@2 ~@5",
  D: "[f#3,a#3,c#4,f#4]@24 ~@3 [f#3,a#3,c#4,e4]@4 ~", // F# F#7
  E: "[f#3,a3,b3,d#4]@4 ~@20 [a3,b3,d#4]@2 ~ [a3,c#4,e4]@2 ~@3, ~@27 b3 ~@4", // B7 A
  F: "~@3 [a3,b3,d#4,f#4]@3 ~@10 [b3,d#4,f#4,b4]@15 ~", G: "~@11 [b3,d4,e4,g#4,b4]@3 ~@10 [b3,d4,e4,g#4,b4] ~@7",
  H: "~@8 [b3,d4,b4]@2 ~ [b3,d4,e4,a4]@3 ~@5 [b3,d4,e4,g#4]@4 ~ [b3,d4,e4]@2 ~@6, ~@8 [e4,g#4] ~@23", // Bm Bm7 E7 E
  I: "[a3,c4,e4,g4]", J: "~@3 [a3,c4,d4,f#4]@19 ~@2 [c4,d4,f#4,a4]@8",
  K: "~@3 [b3,d4,g4]@12 ~ [b3,d4,f#4]@5 ~@6 [b3,d4,e4,g4]@3 ~@2", // G Bm Em7
  L: "[~@8 [g3,a3,c#4,e4]@59 ~@5 [a3,c4,e4]@3 ~@3 [a3,c4,e4]@2 ~@3 [a3,c4,e4]@2 ~@3 [a3,c4,e4,g4]@3 ~@3 [a3,c4,d#4,g4]@2]/3", // A7 Am Am7 Am7b5
  M: "~@3 [a3,c4,d4,f#4]@4 ~@25", N: "~@17 [b4,d5]@7 ~ [a#4,c#5]@2 ~ [a4,c5]@4",
  O: "~ [g4,b4]@4 ~@19 [a#4,c#5]@4 [b4,d5]@4", // G A#m Bm
  P: "~@4 [b4,d5,a5]@7 ~ [b4,d5,g5]@3 ~@5 [g4,b4,d5]@3 ~@2 [d4,e4,g4,b4]@3 ~@4", Q: "[c#4,d#4,f#4,a#4]@7 ~",
  R: "~@3 [a#4,c#5,g5]@4 ~@2 [a#4,c#5,f#5]@4 ~@3 [a#4,c#5,f#5]@12 ~@4", // Gdim F#
  S: "~@8 [a4,b4,d#5,g5]@7 ~@2 [a4,b4,d#5,f#5]@2 ~ [a4,b4,d#5,g5]@3 ~@5 [a4,b4,d#5,f#5]@3 ~", // D#aug B7 D#aug B7
  T: "~@4 [a4,b4,d#5,g5]@4 ~@4 [a4,b4,f#5]@5 ~@2 [a4,b4,d#5]@5 ~@3 [a4,b4]@5, ~@11 d#5@4 ~@17", // D#aug B7 Asus2
  U: "~@3 [g#4,b4,f#5]@4 ~@9 [g#4,f#5] ~@2 [g#4,b4,f#5]@3 ~@3 [g#4,b4,f5]@3 ~@4, ~@8 b4 ~@7", // G#m7 G#7 G#m7 Fdim
  V: "[g#4,b4,e5]@21 ~@4 g5@4 ~ e5@2", W: "~@4 d5@5 ~ d5@2 c5@5 ~@3 d5@5 c5@4 ~@3, ~@9 e5@2 ~@21",
  X: "b4@6 ~@2 a4@14 ~@3 b4@7", Y: "~@4 g4@4 ~@4 b4@5 ~@3 d5@4 ~@4 f#5@4", Z: "~ e5@11 ~@4",
  AA: "~@3 [c5,e5,g5] ~@3 [b4,d5,g5]", // C G
  AB: "[~@12 [a4,c5,e5,g5]@4 ~@10 [a4,c5,d5,f#5]@9 ~@17 [b4,d5,g5]@3 ~@3 [a#4,c#5,f#5]@3 ~@2 [a4,c5,f5]@2 ~@3 [g#4,b4,d5,e5]@26 ~@2]/3", // Am7 D7 G F# F E7
  AC: "~@13 a4@4 ~@12 [a4,c5,d5]@3, ~@3 [c5,e5,g5] ~@3 f#5", // D7 C
  AD: "[~@12 f#3@2 ~ g3@2 ~ a#3@2 b3@2 ~ c4 ~@2 c#4@2 ~ d4@2 f4@2 ~ f#4@2 ~ g4@2 ~@11 [a4,b4,d5,e5]@51 ~@27]/4", // Asus4
// … 250 more lines

More by James