Strudelify

Unchained Melody

Power Tools

KeyA minorTempo119 bpm
0:00/0:00
// Unchained Melody — Power Tools
// 119 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 136 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(119/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.

// bass · slap bass 1
const bass = note(`<
  ~@14 A B C D E F G H I J K L M N O P Q B C D E F G R S J K T U V W X Q Y Z AA AB AC AD AE AF AG C AH E F G AI S J K L
  M N AJ AK Q B C D E F G H I AL AM AN AO AP AQ AA AB AC AD AE AR AG C D E F G H I J K L M N AJ AS Q AT Q AT Q AT Q AT Q
  AT Q AT Q AT Q AT Q AT Q AT Q AU AV@2 ~@6
>`.pickRestart({
  A: "g1@2 a1 ~@3 a1 ~@3 a1 ~@3 g2 a2", B: "a1@2 a1 ~@3 a1 ~ e1@4 g1@3 ~", C: "g1@2 a1@2 ~@2 a1 ~@3 a1@2 ~@2 a1@2",
  D: "~@2 a1 ~@3 a1@2 ~@2 a1 ~ e1@2 g1 ~", E: "g1@2 a1 ~@3 a1 ~@3 a1@2 ~@2 a1@2", F: "~@2 a1 ~@3 a1@3 ~ a1@2 c2@2 a1 ~",
  G: "c2@2 d2 ~@3 d2@2 ~@2 d2@2 ~@2 d2@2", H: "~@2 d2@2 ~@2 d2@3 ~ d2@2 c2@2 d2 ~",
  I: "g1@2 a1 ~@3 a1@2 ~@2 a1@2 ~@2 a1@2", J: "~@2 a1@2 ~@2 a1@2 ~@2 a1@2 c2@2 a1 ~",
  K: "c2@2 d2 ~@3 d2@2 ~@2 d2@2 c2@2 d2@2", L: "g1@2 a1 ~@3 a1@2 ~@2 a1@2 c2@2 a1 ~",
  M: "c2@2 d2 ~@3 d2@2 ~@2 d2@2 c2@2 d2 ~", N: "g1@2 a1 ~@3 a1@2 ~@2 a1@2 g1@2 a1 ~",
  O: "f1@2 f1 ~@3 f1 ~ a1@2 f1@2 a1@2 c2@2", P: "e2@2 e2 ~@3 e2 ~@3 e2@2 e1@2 g1@2",
  Q: "a1@2 a1 ~@3 a1 ~@3 a1 ~@3 a1 ~", R: "~@2 d2@2 d2 ~ c2 ~ a1@3 ~ g1@3 ~", S: "a1@2 a1 ~@3 a1@2 ~@2 a1@2 ~@2 a1@2",
  T: "g1@2 a1 ~@3 a1@2 ~@2 g1@2 a1@2 c2 ~", U: "d2@2 d2 ~@3 d2@2 ~@2 c2@2 d2@2 c2 ~",
  V: "a1@2 a1 ~@3 a1@2 ~@2 a1@2 c2@2 a1 ~", W: "f1@2 f1 ~@3 f1 ~@3 f1@2 a1@2 f1@2",
  X: "e1@2 e1 ~@3 e1 ~@3 e1@2 b1@2 e1@2", Y: "a1@2 a1 ~ c2@2 a1@2 c2@2 a1 ~ c2@2 e2@2",
  Z: "d2@2 d2@2 ~@2 d2 ~@3 d2 ~@3 d2 ~", AA: "~@2 d2 ~@3 d2 ~@3 d2@2 c2@2 d2 ~", AB: "g1@2 a1@2 ~@2 a1 ~@3 a1 ~@3 a1@2",
  AC: "~@2 a1 ~@3 a1@2 ~@2 a1 ~ c2@2 a1 ~", AD: "c2@2 d2 ~@3 d2 ~@3 d2 ~@3 d2 a2",
  AE: "d2 ~ d2 ~@3 d2 ~@3 d2 ~ c2@2 d2 ~", AF: "e1@2 e1 ~ e1 ~@5 e1 ~@3 e1@2", AG: "~@4 e2@3 ~",
  AH: "~@2 a1 ~@3 a1@2 ~@2 a1 ~ g1@2 e1 ~", AI: "~@2 d2@2 c2@2 a1@2 f1@3 ~ e1@2 g1 ~",
  AJ: "f1@2 f1 ~@3 f1 ~ a1@2 c2@2 f2@2 c2@2", AK: "e2 b1 g#1 e1@2 g#1 b1 g#1", AL: "~ a1 ~ a1 ~ d2 c2 a1",
  AM: "f1 ~ f1@2 ~@2 f1 ~@3 a1@2 c2@2 f1@2", AN: "e1 ~ e1@2 ~@2 e1 ~@3 g#1@2 b1@2 g#1@2",
  AO: "a1@2 a1 ~@3 a1 ~@3 a1 ~@3 [a1,a2] ~", AP: "a1@2 a1 ~@3 a1 ~ a1@4 c2@3 ~", AQ: "c2@2 d2@2 ~@2 d2 ~@3 d2 ~@3 d2 ~",
  AR: "~@2 e1@2 e1 ~@3 e1@2 e1 ~@3 e1@2", AS: "e2 b1 g#1 e1 ~ g#1 b1 g#1",
  AT: "a1@2 a1 ~ c2@2 a1 ~ c2@2 e2 ~ d2@2 c2 ~", AU: "~@2 a1 ~ a1@2 ~@2 a1@2 ~@2 a1@2 ~@2", AV: "[a1@21 ~@11]/2",
})).s("gm_slap_bass_1").gain(0.4)

// chords · piano
const piano = note(`<
  A@2 B@3 C@2 D@8 ~ E F@3 G@2 H I J K L M N O P@2 Q R S T U V W X Y Z AA AB AC AD AE AF AG@2 AH@2 AI@2 AJ ~ Q R S T U V
  W X Y AK AA AL AC AD AE ~ Q R S T U V AM X AN AO AP ~ AQ@2 AR@2 AS@2 AT AU AV AW S T AX AY W X AZ BA AA BB BC BD W BE
  BF X W BG BH X W X BI BJ BK BL BM@8 BN@8
>`.pickRestart({
  A: "[~@8 [a1,e2,a2,c3,e3,a3]@23 ~]/2", // Am
  B: "[~@5 a3 c4!3 a3 [a3,c4] c4!2 [a3,c4] a3 c4 c4 c4@4 ~@3 [f3,a3]@2 ~@2 f3 a3!3 f3!2 a3 f3 ~ a3!2 ~ a3@4 ~@3 a1, ~@3 [a1,e2,e3,e4]@18 ~@3 [d1,d3,d4]@20 ~@4, ~@3 [a3,c4]@3 a3@3 ~@2 a3@2 ~@2 a3@6 ~@5 f3@2 ~@2 f3@2 ~@4 f3@8 ~@4, ~@4 a2@17 ~@5 [b1,d2]@18 ~@4, ~@27 a3@2 ~@3 a3@2 ~ a3@2 ~@11]/3", // Am F A5 D Am Bm
  C: "[e2 [a2,a4,b4,c5,e5] ~ [f4,a4,d5] ~ [g4,a4] [e4,c5] ~ [c4,e4,g4,a4] ~ [g3,a3,c4,e4] ~ [f3,c4] [a3,d4] ~ a2 a2@16, ~@15 [c3,e3,g3,a3]@17]/2", // Am Dm Gsus2 C Am7 F5 D5 Am7
  D: "[~@9 g4 d#4 [d#4,g4] g4 [d#4,g4] d#4 [d#4,g4] g4 [d#4,g4] d#4 [d#4,g4] g4 [d#4,g4]!2 d#4 [d#4,g4]!2 g4 [d#4,g4] d#4 [d#4,g4] [d#4,g4]@7 ~@5 g#3 [g#3,b3] b3 [g#3,b3] g#3 [g#3,b3] [g#3,b3] b3 g#3 [g#3,b3] b3 [g#3,b3] g#3 [g#3,b3] b3 g#3 [g#3,b3] b3!2 b3@7 ~@5 d#5 [e5,a5]@2 d5 ~ c5 d5 d#5 d5 c5 a4@2 g4@2 [g#4,c5] ~ [g4,a4,c5] g4 e4 [d4,g4,a4] [d#4,a4] d4 c4 [a3,e4]@2 ~ [g3,e4]@2 [a3,e4]@23 ~@4, ~@7 [f1,c2,a3,a4]@30 ~@2 [e1,b1,e3,e4]@29 ~@3 a1@56 ~, ~@7 g4@2 ~@68 a5@2 a5@2 ~@2 d5 ~@3 a4@2 ~@39, ~@8 f2@29 ~@3 e2@28 ~@4 [e2,a2]@56, ~@8 d#4@2 ~@29 g#3@3 ~@18 g#3@8 ~@60]/8", // D# G#m A5 G# Am7 Dsus4 D#dim A5 …
  E: "[a4,c5,e5]@4 ~@2 [a4,c5,e5] ~@3 [a4,c5,e5] ~@3 [a2,a4]@2, a2@3 ~", // Am A
  F: "[[a4,c5,e5]@4 ~@2 [a4,c5,e5] ~@3 [a4,c5,e5] ~@3 a4@6 [a4,c5,e5]@2 ~@4 [a2,a4,c5,e5] ~@5 a4@4 a4@3 a2 [e2,e4]@2 [a4,c5,e5] a2 ~@2 [a4,c5,e5]@2, a2@12 ~@2 a2@10 ~@6 [e2,e4]@9 ~ a4 ~@7, ~@36 [c5,e5]@5 ~@7]/3", // Am E Am E C
  G: "[~@4 [a4,d5,f5]@4 [d2,d4]@2 [a4,d5,f5] ~@5 a4@2 a4 ~ d5 a2 ~@2 [d2,d4,a4]@2 [a4,d5,f5] ~@3 [a1,a2,d4,a4,d5,f5] ~, [d2,d4]@7 ~@7 [d2,d4]@6 [a4,f5]@2 ~@10]/2", // Dm D Dm D5 Dm D Dm
  H: "[a2,a4]@3 [e2,a2,e4] [e2,e4,a4,c5,e5]@5 a2 [e2,e4,a4,c5,e5] ~@3 [e2,a2,e4,g4,a4,e5] a2", // A A5 Am A7
  I: "[e2,e4]@2 e5 ~ [e2,e4,g4,a4,e5]@5 ~ [e2,a2,e4,g4,a4,e5] ~@3 [a2,g4,a4,e5] ~", // E A7
  J: "c2 ~@3 [a4,d5,f5]@4 ~@2 [a4,d5,f5]@3 ~ [a4,d5,f5] ~, d4@7 ~@9, ~@2 d2@5 ~ [d2,d4]@7 ~", // Dm D
  K: "~@4 [g4,c5,e5]@4 [a2,a4]@2 [g4,c5,e5] ~ [a2,a4] ~ [a2,g4,a4,c5,e5] ~, [a2,a4]@7 ~@9", // C A C A Am7 A
  L: "~@4 [a4,d5,f5]@4 ~@2 [a4,d5,f5]@3 ~ [d2,d4,a4,d5,f5] ~, [d2,d4]@7 ~ [d2,d4]@4 ~@4", // Dm D
  M: "~@2 g4 ~ [g4,c5,e5]@4 ~@2 [g4,c5,e5]@3 ~ [g4,c5,e5] ~, [a2,a4]@7 ~ a4@7 ~, ~@9 a2@6 ~", // C A
  N: "f4@4 [a4,c5]@4 f4 ~ [f4,a4,c5]@3 ~ [f4,a4,c5] ~, f2@7 ~ f2@7 ~, ~@4 f4@3 ~@9", // Am F
  O: "e4@4 b4@4 e2@2 e4 ~ e2@2 [e4,g#4,b4] ~, e2@3 ~@5, ~@4 e4@2 ~@2 e4 ~@3 e4 ~@3, ~@4 g#4 ~@5 [g#4,b4]@4 ~@2", // E G#m
  P: "[[a2,a3,a5,c6,e6] ~@3 [a5,c6,e6] ~ [a5,c6,e6] ~ [g5,c6,d6] ~ [a2,a3,a5,c6,e6] ~ a5 ~ c6@2 ~ g#5 a5@2 c6@2 d6@2 d#6@2 e6@2 g6@2 a6 ~, ~@4 [a2,a3]@2 ~@2 [g2,g3]@2 ~@4 [c3,c4]@5 ~@13, ~@14 a5 ~@17]/2", // Am Gsus4 Am A G C
  Q: "[a4,e5]@4 [a4,c5,e5] ~@5 [g4,c5,e5] ~@3 e5 ~", // A5 Am C
  R: "[g4,a4,c5,e5]@3 [g4,a4,c5,e5]!2 ~@5 [a2,g4,a4,c5,e5] ~@5, a2@7 ~@9", // Am7
  S: "c5@4 [g4,c5,e5]@5 ~ [g4,c5,e5] ~@5, [a2,a4]@11 ~@5", // C A
  T: "~@4 [g4,c5,e5]@3 ~@3 [g4,c5,e5] ~@3 [g4,c5,e5] ~, [a2,a4]@11 ~@5", // C A
  U: "~@2 a4 ~ [a4,d5,f5]@5 ~ [a4,d5,f5] ~@3 [d5,f5] ~, [d2,d4]@3 ~", // Dm D
  V: "~@2 a4 ~ [a4,d5,f5]@5 ~ [a4,d5,f5] ~@3 [a4,d5,f5] ~, [d2,d4]@7 ~", // Dm D
  W: "~@2 g4 ~ [a4,c5,e5]@5 ~ [a4,c5,e5] ~@3 g4 ~, a2@11 ~@5, a4 ~@3", // Am
  X: "[g4,c5,e5]@5 ~ [g4,c5,e5] ~@3 [a2,g4,a4,c5,e5] ~@3 [g4,c5,e5] ~, [a2,a4] ~", // C Am7 C A
  Y: "[d2,d4,a4,d5,f5]@9 ~ [d2,d4,a4,d5,f5] ~@3 [d2,d4,a4,d5,f5] ~", // Dm
  Z: "~@2 [a5,a6]@2 d6@2 [c5,c6] ~ [e5,e6] ~ [g4,c5,e5,e6] ~ [d5,d6] [c5,c6] [a4,a5]@2, a2@11 ~@5, a4@4 [a4,d5]@5 ~@5 [c5,e5] ~", // A C E C D C A D5 …
  AA: "~@4 [a4,d5,f5]@5 ~ [a4,d5,f5] ~@3 [a4,d5,f5] ~, [d2,d4]@7 ~", // Dm D
  AB: "~@2 [e4,e5]@2 [g4,g5]@2 [a4,a5] ~ c6@2 [g4,c5,d5,e5,d6] ~ [d#5,d#6]@2 [g4,c5,e5] ~, a2@15 ~, a4@6 ~@2 c5 ~@5 e6@2, ~@2 g4 ~ [c5,e5]@5 ~@7", // E G A C D# C
  AC: "d5@4 [f4,a4,d5]@5 ~ [f4,a4]@3 ~ [f4,a4,d5] ~, d6@11 ~@5, f2@9 ~ f2@4 ~@2, f4 ~@9 d5 ~@5", // Dm F Dm
  AD: "e2@2 e4 ~ [e4,g#4,c5]@5 ~ [e4,g#4,c5]@4 [e4,g#4,c5] ~, e4 ~@3 e2@11 ~", // Eaug
  AE: "[a2,a4] ~@3 [a2,a4,a5]@2 ~@2 [g2,g4,g5]@2 [a2,a4,a5]@2 ~@2 [c4,c5,c6] ~", // A G A C
  AF: "~@2 [a5,a6]@4 [g5,g6]@2 [e5,e6]@2 [d#5,d#6]@2 [d5,d6] ~ [c5,c6] ~", // A G E D# D C
  AG: "[~@4 [f5,a5,d6] ~@3 [f5,a5,d6] ~ [a5,c6] ~@3 [a5,f6]@8 ~@4 [a3,d4,f4] ~@3 a3 ~, d5@29 ~@3, d4 ~, ~@5 e6 ~ d6 ~@8]/2", // Dm Am Dm
  AH: "[a5!2 ~@2 [e5,a5,c6]@4 ~@2 [e5,g#5,b5] ~@3 [a3,c4,e4]@13 ~ [a3,c4,e4,a5] ~@3, [a3,c4,e4]@9 ~@23, [c6,e6]@2 ~@12 [e5,a5]@9 ~@5 [e5,c6]@2 ~@2]/2", // Am E Am C A5 C
  AI: "[[f5,a5,d6]@2 ~@2 [a3,d4,f4]@4 [f5,a5,d6] ~ [a3,d4,g4,a5,e6] ~@3 [a3,d4,f4]@10 [a5,d6,f6] ~@3 [a5,d6,f6] ~@3, ~@4 [f5,a5,d6] ~@5 c6@2 ~@2 [a5,d6,f6]@7 ~@11]/2", // Dm Asus4 Dm
  AJ: "[e4,e5,b5,d6,e6,g#6] ~ [e4,e5,b5,d6,e6,g#6] ~ [e4,e5,b5,d6,e6,g#6] ~@5 [e4,e5,b5,d6,e6,g#6] ~@3 [e4,e5,b5,d6,e6,g#6] ~", // E7
  AK: "a5@2 a5@2 [c5,d6]@2 [c5,c6] ~ [e5,e6] ~ [g4,c5,e5,e6] ~ [d5,d6] [c5,c6] [a4,a5]@2, a2@11 ~@5, a4@4 [a4,e5]@5 ~@5 [c5,e5] ~", // Csus2 C E C D C A A5 …
  AL: "~@2 [e4,e5]@2 [g4,g5]@2 [a4,a5] ~ c6@2 [g4,c5,d5,e5,d6] ~ [d#5,d#6]@2 [g4,c5,e5] ~, a2@15 ~, a4@6 ~@2 c5 ~@5 e6@2, ~@4 [c5,e5]@5 ~@7", // E G A C D# C
  AM: "~@2 g4 ~ [a4,c5,e5]@5 ~ [g4,a4,c5,e5] ~@3 g4 ~, a2@11 ~@5, a4 ~@3", // Am Am7
  AN: "f4@4 [f4,a4,c5]@5 ~ [f4,a4,c5]@3 ~ [f4,a4,c5] ~, f2@9 ~ f2@4 ~@2", // F
  AO: "e2@2 e4 ~ [e4,g#4,b4]@5 ~ [e4,g#4,b4]@3 ~ [e4,g#4,b4] ~, e4 ~@3 e2@11 ~", // E
  AP: "[a2,a4] ~@3 [a2,a4]@2 ~@2 [g2,g4]@2 [a2,a4]@2 ~@2 [c4,c5] ~", // A G A C
  AQ: "[[a4,d5,f5]@9 ~ [a4,d5,f5] ~@3 [a4,d5,f5]@11 ~ [a4,d5,f5] ~@3 a4 ~]/2", // Dm
  AR: "[[a4,c5,e5]@9 ~ [a4,c5,f5] ~@3 [a4,c5,e5]@13 ~ [a4,c5,e5] ~@3]/2", // Am F Am
  AS: "[~@4 [a4,d5,f5]@5 ~ [a4,d5,g5] ~@3 [a4,d5,f5]@10 [d2,d3,a5,d6,f6]@2 ~@2 [d2,d3,a5,d6,f6] ~@3]/2", // Dm Dsus4 Dm
  AT: "~@2 [e2,e3,g#5,b5,d6,e6] ~ [e2,e3,g#5,b5,d6,e6] ~@3 [e2,e3,g#5,b5,d6,e6] ~ [e2,e3,g#5,b5,d6,e6] ~@3 [e2,e3,g#5,b5,d6]@2, ~@14 e6 ~", // E7
  AU: "~@12 [f7,g7,a7,b7,c8] [g6,a6,b6,c7,d7,e7] [b5,c6,d6,e6,f6] [f5,g5,a5]", // F Cmaj7 Bdim F
  AV: "a3 ~ a3@2 [a4,c5,e5] ~@5 [g4,c5,e5] ~@3 e5 ~, [a4,e5]@4 ~@3 a3@7 ~@2", // Am C A5
  AW: "[g4,a4,c5,e5]@3 ~ [g4,a4,c5,e5] ~@5 [a2,g4,a4,c5,e5] ~@5, a2@7 ~@9", // Am7
  AX: "~@2 a4 ~ [a4,d5,f5]@6 [a4,d5,f5] ~@3 [d5,f5] ~, [d2,d4]@3 ~", // Dm D
  AY: "~@2 a4 ~ [a4,d5,f5]@6 [a4,d5,f5] ~@3 [a4,d5,f5] ~, [d2,d4]@7 ~", // Dm D
  AZ: "[d2,d4,a4,d5,f5]@10 [d2,d4,a4,d5,f5] ~@3 [d2,d4,a4,d5,f5] ~", // Dm
  BA: "~@2 [a5,a6]@2 [c5,d6]@2 [c5,c6] ~ e6@2 [g4,c5,e5,e6] ~ [d5,d6] [c5,c6] [a4,a5]@2, a2@11 ~@5, a4@4 [a4,e5]@4 e5 ~@5 [c5,e5] ~", // A Csus2 C D C A A5 C
  BB: "~@2 [e4,g4,e5]@2 [g4,g5]@2 [a4,a5] ~ c6@2 [g4,c5,d5,e5,d6] ~ [d#5,d#6]@2 [g4,c5,e5] ~, a2@15 ~, a4@6 ~@2 c5 ~@5 e6@2, ~@4 [c5,e5]@5 ~@7", // Em G A C D# C
  BC: "[f4,d5]@4 [f4,a4,d5]@5 ~ [f4,a4]@3 ~ [f4,a4,d5] ~, [f2,d6]@5 f2@2 ~, ~@10 d5 ~@5", // Dm F Dm
  BD: "[e4,g#4,c5] ~ e4 ~ [e4,g#4,c5]@6 [e4,g#4,c5]@4 [e4,g#4,c5] ~, e2@2 ~@2 e2@11 ~", // Eaug
  BE: "~@2 a5@2 c6@2 [g4,c5,e5,d6] ~ d#6@2 [a2,g4,a4,c5,e5,e6] ~ d6 ~ [g4,c5,e5,c6] ~, [a2,a4] ~, [g4,c5,e5]@5 ~@11", // C Am7 C A C
  BF: "a5@2 g4 ~ [a4,c5,e5]@5 ~ [a4,c5,e5] ~@3 g4 ~, a2@11 ~@5, a4 ~@3", // Am
  BG: "~@2 a5 ~ c6@2 [g4,c5,e5,d6] ~ d#6@2 [a2,g4,a4,c5,e5,e6] ~ g6@2 [g4,c5,e5,a6] ~, [a2,a4] ~, [g4,c5,e5]@5 ~@11", // C Am7 A C
  BH: "a4@4 [a4,c5,e5]@5 ~ [a4,c5,e5] ~@3 g4 ~, a2@11 ~@5, a6 ~@7", // Am
  BI: "a4@2 a4@2 c6@2 a5 ~ [c5,c6] ~ [a4,c5,e5] ~@3 g4 ~, a2@11 ~@5, ~@2 a5 ~ [a4,c5,e5]@5 ~ c6@6", // C Am
  BJ: "~@2 a5 ~ [c5,c6] ~ [g4,c5,e5] ~@3 [a2,g4,a4,c5,e5,a5] ~ c6 b5 [g4,c5,e5,a5] g5, [a2,a4] ~, [g4,c5,e5]@5 ~ c6@4 ~@6", // C Am7 A C
  BK: "a5@2 [g4,g5] [c5,d5,e5,f5] [g4,a4,b4] ~@5 [a4,c5,e5] ~@3 [a4,a5] ~, a2@11 ~@5, a4@4 [c5,e5]@5 ~@7", // G Dm7 G Am A C
  BL: "c6@2 d6 ~ d#6@2 [g4,c5,e5,e6] ~ g6@2 [a2,g4,a4,c5,e5,a6] ~ c7@2 [g4,c5,e5,a6] ~, [a2,a4] ~, [g4,c5,e5]@5 ~@9 c7@2", // C Am7 A C
  BM: "[[g4,g6,a6,b6] [b5,c6,d6,e6,f6] [a4,c5,e5]@5 ~ [a4,c5,e5] ~@3 g4 ~ [g4,c5,e5]@5 ~ [g4,c5,e5] ~@3 [a2,g4,a4,c5,e5] ~@3 [g4,c5,e5] ~ a4@2 a4@2 d6 ~ d#6@2 d6 ~ [a4,c5,e5,c6] ~ a5@2 [g4,g5] ~ [c5,e5,a5]@2 [e5,f5,g5] [b4,c5,d5] ~@2 [g4,c5,e5] ~@3 [a2,g4,a4,c5,e5] ~@3 [g4,c5,e5] ~ a4@2 a4@2 c6@2 a5 ~ [c5,c6] ~ [a4,c5,e5,a5] ~@3 c5@2 g4@5 ~ [g4,c5,e5] ~@3 [a2,g4,a4,c5,e5] ~@3 [g4,c5,e5] ~@3 g4 ~ [a4,c5,e5]@5 ~ [a4,c5,e5] ~@3 g4 ~ [g4,c5,e5]@5 ~ [g4,c5,e5] ~@3 [a2,g4,a4,c5,e5] ~@7, a2@9 ~@5 [a2,a4]@8 ~@8 a2@11 ~@5 [a2,a4]@8 ~@8 a2@11 ~@5 a2@8 ~@8 a2@11 ~@5 [a2,a4]@8 ~@10, a4@2 a5 ~@27 a5 ~ c6 ~ [a4,c5,e5]@5 ~@7 g4@5 ~@15 [a4,c5,e5]@5 ~@7 a4@2 ~@14 a4@4 ~@30, ~@46 f5 ~@17 a5 ~ a5 ~@5 c6@3 ~ c6 ~ c5 ~@49]/8", // G Bdim Am C Am7 C Am G …
  BN: "[~@2 a5 ~ c6 [a5,c6]!3 c6 [a5,c6] a5 [a5,c6] c6!2 ~ d#5 [a5,c6] c6!2 ~ a5 [a5,c6]@3 b5 [e5,g#5] [g#5,b5]!2 ~@4 [e5,b5] [g#5,b5] ~ b5!3 ~ b5 [g#5,b5]!2 [e5,g#5] [e5,b5] b5 e5 [e5,b5] b5 [e5,b5] [g#5,b5] ~ b5!3 ~ b5 [g#5,b5]!2 [e5,g#5] ~ g#5@2 ~@14 c6@2 a5 ~@7 c5@2 [a4,c5,e5] [c5,e5]!2 e5 [c5,e5] c5 [c5,e5] e5 [c5,e5] c5 [a4,c5] [a4,e5] [c5,e5] [a4,c5] e5 [c5,e5]!2 c5 e5 ~ c5 e5 ~ a4@17, [d#5,a5]@2 d#5@2 d#5@3 ~ d#5@2 d#5@3 d#5@2 c5@9 ~ e4@32 ~@5 a3@19 e5@2 d#5@32 ~@13, ~ c6@2 a5@2 ~@7 a5@2 [a5,c6]@2 ~ [d#5,a5]@2 d#5@4 ~@3 e5@2 [e5,b5]@2 [e5,b5]@2 ~ e5@2 e5@2 e5@2 e5@3 ~@7 e5@2 e5@2 e5@2 e5@3 ~ [e5,b5]@2 ~@7 g#6@5 d#6@6 a5@10 a4@2 a4@2 a4@2 a4@2 e5@2 ~@3 a4@3 a4 c5 e5 a4 c5@19, ~@19 c6@2 ~@8 b4@32 ~@8 g6@5 d6@6 g5@30 e5@18, ~@29 g#5@2 g#5@2 ~ g#5@4 g#5@2 ~@4 g#5@3 g#5@2 ~ g#5@4 g#5@2 ~@9 a6@6 e6@7 c6@6 d5@32 ~@12]/8", // Am E G#m E5 G#m E E5 G#m …
})).s("gm_piano").gain(0.35)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@16 A B C A D E A F G@3 H I@2 J K A B C A D E A L@4 M N@2 A O D E A F D E P ~ A B C A D E A F Q@3 H R@2 A O A B C A D
  E A F S T A F D E A F D E U ~ A B C A D E A F V@3 H N@2 A O A B A B A B A B A B A B A B A B A B A W ~@8
>`.pickRestart({
  A: "[e4,g4,a4,c5]@3 [e4,g4,a4,c5] ~@2 [e4,g4,a4,c5] ~@9", // Am7
  B: "[c4,e4,g4,a4]@3 [c4,e4,g4,a4] ~@2 [c4,e4,g4,a4] ~@5 [d4,f#4,a4,b4]@3 ~", // Am7 Bm7
  C: "[c4,e4,g4,a4]@3 [c4,e4,g4,a4] ~@2 [c4,e4,g4,a4] ~@9", D: "[d4,f4,a4,c5]@3 [d4,f4,a4,c5] ~@2 [d4,f4,a4,c5] ~@9",
  E: "[d4,f4,a4,c5]@3 [d4,f4,a4,c5] ~@2 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@5", // Dm7
  F: "[c4,e4,g4,a4]@3 [c4,e4,g4,a4] ~@2 [c4,e4,g4,a4] ~@3 [c4,e4,g4,a4] ~@5", // Am7
  G: "[[d4,f4,a4,c5]@15 ~ [e4,a4,c5]@14 ~@2 [a4,c5]@16, ~@15 c4@15 ~ [d4,f4]@17]/3", H: "[c4,e4,a4,c5]",
  I: "[[d#4,g4,a4,c5]@15 ~ [b3,d4,g4]@16, ~@15 g#3@17]/2", J: "~@8 [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~@3 [e4,g4,a4,c5] ~",
  K: "~@8 [c4,e4,g4,a4]@3 ~ [c4,e4,g4,a4] ~ [d4,f#4,a4,b4] ~", // Am7 Bm7
  L: "[[c4,e4,g4,a4]@3 [c4,e4,g4,a4] ~@2 [c4,e4,g4,a4] ~@3 [c4,e4,g4,a4] ~@5 [f4,a4,c5]@15 ~ [e4,a4,c5]@14 ~@2 [a4,c5]@15 ~, ~@15 d4@16 c4@15 ~ [d4,f4]@16 ~]/4", // Am7 F Am Dm
  M: "[c4,e4,a4,c5]@15 ~", N: "[[d#4,g4,a4,c5]@15 ~ [b3,d4,g4]@16, ~@15 g#3@16 ~]/2",
  O: "[c4,e4,g4,a4]@3 [c4,e4,g4,a4] ~@2 [c4,e4,g4,a4] ~@3 [d4,f#4,a4,b4] ~@5", // Am7 Bm7
  P: "[e4,g#4,b4,e5]@2 [e4,g#4,b4,e5] ~ [e4,g#4,b4,e5] ~@5 [e4,g#4,b4,e5] ~@3 [b3,e4,g#4,e5] ~", // E
  Q: "[[d4,f4,a4,c5]@15 ~ [e4,a4,c5]@14 ~@2 [a4,c5]@15 ~, ~@15 c4@15 ~ [d4,f4]@16 ~]/3", // Dm7 Am Dm
  R: "[[d#4,g4,a4,c5]@15 ~ [b3,d4,g4]@15 ~, ~@15 g#3@16 ~]/2", // Am7b5 G
  S: "[d#4,f4,a4,c5]@3 [d#4,f4,a4,c5] ~@2 [d#4,f4,a4,c5] ~@9", // F7
  T: "[d4,e4,g#4,b4]@3 [d4,e4,g#4,b4] ~@2 [d4,e4,g#4,b4] ~@3 [d4,e4,g#4,b4] ~@5", // E7
  U: "~@2 [e4,g#4,b4,e5] ~ [e4,g#4,b4,e5] ~@3 [e4,g#4,b4,e5] ~ [e4,g#4,b4,e5] ~@3 [b3,e4,g#4,e5] ~", // E
  V: "[[d4,f4,a4,c5]@14 ~@2 [e4,a4,c5]@14 ~@2 [a4,c5]@15 ~, ~@15 c4@15 ~ [d4,f4]@16 ~]/3", // Dm7 Am Dm
  W: "~@2 [c4,e4,g4,a4] ~ [c4,e4,g4,a4] ~@3 [c4,e4,g4,a4] ~@3 [c4,e4,g4,a4] ~@3", // Am7
})).s("gm_acoustic_guitar_steel").gain(0.35).pan(0.7)

// other · overdriven guitar
const overdriven_guitar = note(`<
  ~@16 A@8 B A B A C D A@10 B A B A E F A@2 ~@8 A@7 G B A B A E F A@10 E F A@2 ~@8 H A@7 B A B A E F A@2 I A@19 ~@8
>`.pickRestart({
  A: "g3@2 a3!2 ~ a3!2 ~ c4 ~ g3 ~ a3@3 ~", B: "g3@2 a3!2 ~ a3!2 ~ d4 ~ g3 ~ a3@3 ~",
  C: "~@4 c4@2 [f3,a3,c4]@4 [f3,a3,c4]@3 ~ [f3,a3,c4] ~, f3@3 ~@5, ~ a3@2 ~@5", // F
  D: "~@4 b3@2 [e3,g#3,b3]@4 [e3,g#3,b3]@4 [e3,g#3,b3] ~, e3@3 ~@5, ~ g#3@2 ~@5", // E
  E: "~@4 c4@2 [f3,a3,c4]@4 [f3,a3,c4] ~@3 [f3,a3,c4] ~, f3@3 ~@5, ~ a3@2 ~@5", // F
  F: "~@4 b3@2 [e3,g#3,b3]@4 [e3,g#3,b3] ~@3 [e3,g#3,b3] ~, e3@3 ~@5, ~ g#3@2 ~@5", // E
  G: "g3@2 a3!2 ~ a3 a3@2 c4 ~ g3 ~ a3@3 ~", H: "g3 ~ a3!2 ~ a3!2 ~ c4 ~ g3 ~ a3@3 ~",
  I: "g3@2 a3!2 ~ a3!2 ~ c4 ~ g3 ~ a3@4",
})).s("gm_overdriven_guitar").gain(0.3).pan(0.7)

// other · brass section
const brass_section = note(`<
  ~@30 A ~ B ~ B ~ C ~ B ~@7 A ~ D ~ E ~ D ~ F ~@5 A ~ B ~@7 A ~@13 G ~ E ~ D ~ H ~ B ~ B ~ C ~ B ~@7 A ~ I ~ J ~ K ~ L
  ~ L M N ~ O ~ O P Q M Q R ~@8
>`.pickRestart({
  A: "~@4 [a4,a5]@2 [e4,e5] ~ [g4,g5]@2 [a4,a5] ~@3 [c5,c6]@2", B: "~@4 [c5,e5,a5] ~@5 [d5,f5,a5] ~@3 [c5,e5,a5] ~",
  C: "~@4 [d5,f5,a5] ~@5 [d5,g5,a5] ~@3 [d5,f5,a5] ~", D: "~@4 [d4,d5] ~@3 [d4,d5]@2 [e4,e5] ~@3 [f4,f5] ~",
  E: "~@4 [c4,c5] ~@3 [c4,c5]@2 [b3,b4] ~@3 [a3,a4] ~", // C B A
  F: "[g#4,e5,g5] ~ [g#4,e5,g5] ~ [g#4,e5,g5] ~@5 [g#4,e5,g5] ~@3 [g#4,e5,g5] ~", // C
  G: "~@4 [d4,d5] ~@3 [d4,d5]@2 [e4,e5] ~@3 [f4,f5]@2", // D E F
  H: "~@2 [g#4,e5,g5] ~ [g#4,e5,g5] ~@3 [g#4,e5,g5] ~ [g#4,e5,g5] ~@3 [g#4,e5,g5] ~", I: "~@10 [a4,a5] ~@5",
  J: "~@4 [a4,a5]@2 ~@2 [g4,g5]@2 [a4,a5] ~@3 [c5,c6]@2", K: "~@2 [a4,a5] ~ [a4,a5]@2 [e4,e5] ~ [g4,g5]@2 [a4,a5] ~@5",
  L: "~@2 [a4,a5] ~ [a4,a5] ~@11", M: "~@10 [g4,g5] [a4,a5] [c5,c6] [b4,b5] [a4,a5] [g4,g5]", N: "[a4,a5] ~@15",
  O: "~@4 [a4,a5] ~@5 [a4,a5] ~@5", P: "~@6 [a4,a5] ~ [c5,c6]@2 [d5,d6] ~ [d#5,d#6]@2 [e5,e6] ~",
  Q: "[a4,a5] ~@3 [a4,a5] ~@5 [a4,a5] ~@5", R: "~@2 [e4,c5,a5] ~ [e4,c5,a5] ~@3 [e4,c5,a5] ~@3 [e4,c5,a5] ~@3",
})).s("gm_brass_section").gain(0.45).pan(0.3)

// other · trumpet
const trumpet = note(`<
  ~@30 A ~ B ~ B ~ B ~ B ~@7 A ~ C ~ D ~ C ~ E ~@5 A ~ B ~@7 A ~@13 F ~ D ~ C ~ G ~ B ~ B ~ B ~ B ~@7 A ~ H ~ I ~ J ~ K
  ~ K L M ~ N ~ N O P L P Q ~@8
>`.pickRestart({
  A: "~@4 a5@2 e5 ~ g5@2 a5 ~@3 c6@2", B: "~@4 a5 ~@5 a5 ~@3 a5 ~", C: "~@4 d5 ~@3 d5@2 e5 ~@3 f5 ~",
  D: "~@4 c5 ~@3 c5@2 b4 ~@3 a4 ~", E: "g5 ~ g5 ~ g5 ~@5 g5 ~@3 g5 ~", F: "~@4 d5 ~@3 d5@2 e5 ~@3 f5@2",
  G: "~@2 g5 ~ g5 ~@3 g5 ~ g5 ~@3 g5@2", H: "~@10 a5 ~@5", I: "~@4 a5@2 ~@2 g5@2 a5 ~@3 c6@2",
  J: "~@2 a5 ~ a5@2 e5 ~ g5@2 a5 ~@5", K: "~@2 a5 ~ a5 ~@11", L: "~@10 g5 a5 c6 b5 a5 g5", M: "a5 ~@15",
  N: "~@4 a5 ~@5 a5 ~@5", O: "~@6 a5 ~ c6@2 d6 ~ d#6@2 e6 ~", P: "a5 ~@3 a5 ~@5 a5 ~@5",
  Q: "~@2 a5 ~ a5 ~@3 a5 ~@3 a5 ~@3",
})).s("gm_trumpet").gain(0.4).pan(0.6)

// other · trombone
const trombone = note(`<
  ~@30 A ~ B ~ B ~ C ~ B ~@7 A ~ D ~ E ~ D ~ F ~@5 A ~ B ~@7 A ~@13 G ~ E ~ D ~ H ~ B ~ B ~ C ~ B ~@7 A ~ I ~ J ~ K ~ L
  ~ L M N ~ O ~ O P Q M Q R ~@8
>`.pickRestart({
  A: "~@4 a4@2 e4 ~ g4@2 a4 ~@3 c5@2", B: "~@4 c5 ~@5 d5 ~@3 c5 ~", C: "~@4 d5 ~@5 d5 ~@3 d5 ~",
  D: "~@4 d4 ~@3 d4@2 e4 ~@3 f4 ~", E: "~@4 c4 ~@3 c4@2 b3 ~@3 a3 ~", F: "g#4 ~ g#4 ~ g#4 ~@5 g#4 ~@3 g#4 ~",
  G: "~@4 d4 ~@3 d4@2 e4 ~@3 f4@2", H: "~@2 g#4 ~ g#4 ~@3 g#4 ~ g#4 ~@3 g#4@2", I: "~@10 a4 ~@5",
  J: "~@4 a4@2 ~@2 g4@2 a4 ~@3 c5@2", K: "~@2 a4 ~ a4@2 e4 ~ g4@2 a4 ~@5", L: "~@2 a4 ~ a4 ~@11",
  M: "~@10 g4 a4 c5 b4 a4 g4", N: "a4 ~@15", O: "~@4 a4 ~@5 a4 ~@5", P: "~@6 a4 ~ c5@2 d5 ~ d#5@2 e5 ~",
  Q: "a4 ~@3 a4 ~@5 a4 ~@5", R: "~@2 c4 ~ c4 ~@3 c4 ~@3 c4 ~@3",
})).s("gm_trombone").gain(0.4).pan(0.6)

// other · alto sax
const alto_sax = note(`<
  ~@30 A ~ B ~ B ~ C ~ B ~@7 A ~ D ~ E ~ D ~ F ~@5 A ~ B ~@7 A ~@13 G ~ E ~ D ~ H ~ B ~ B ~ C ~ B ~@7 A ~ I ~ J ~ K ~ L
  ~ L M N ~ O ~ O P Q M Q R ~@8
>`.pickRestart({
// … 74 more lines