Strudelify
Unchained Melody cover art

Blue Tango Blue Mirage

Unchained Melody

Baxter

KeyC majorTempo64 bpm
0:00/0:00
// Unchained Melody — Baxter
// 64 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 59 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(64/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 1"
const piano = note(`<
  A B C D A B D E A B C D F B D@2 A D B G C H I J K L M N O L M P Q R S T U V W X Y Z AA AB AC AD AE@2 AF D AG AH AI AJ
  AK@2 AL AM AN
>`.pickRestart({
  A: "[e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3", // C
  B: "[e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3", // Am
  C: "[f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3", // F
  D: "[d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3", // G
  E: "~@4 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3, [g1,g2]@47 ~", // G
  F: "[e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3", // C Em C
  G: "[e4,g4,b4] ~@3 [e4,g4,b4] ~@3 [e4,g4,b4] ~@3 [e4,g4,b4] ~@3 [e4,g4,b4] ~@3 [e4,g4,b4] ~@3 [e4,g4,b4] ~@3 [e4,g4,b4] ~@3 [e4,g4,b4] ~@3 [e4,g4,b4] ~@3 [e4,g4,b4] ~@3 [e4,g4,b4] ~@3", // Em
  H: "[g4,b4,d5] ~@3 [g4,b4,d5] ~@3 [g4,b4,d5] ~@3 [g4,b4,d5] ~@3 [g4,b4,d5] ~@3 [g4,b4,d5] ~@3 [g4,b4,d5] ~@3 [g4,b4,d5] ~@3 [g4,b4,d5] ~@3 [g4,b4,d5] ~@3 [g4,b4,d5] ~@3 [g4,b4,d5] ~@3", // G
  I: "[g4,c5,e5] ~@3 [g4,c5,e5] ~@3 [g4,c5,e5] ~@3 [g4,c5,e5] ~@3 [g4,c5,e5] ~@3 [g4,c5,e5] ~@3 [g4,c5,e5] ~@3 [g4,c5,e5] ~@3 [g4,c5,e5] ~@3 [g4,c5,e5] ~@3 [g4,c5,e5] ~@3 [g4,c5,e5] ~@3", // C
  J: "~@4 [e4,g4,a#4] ~@3 [e4,g4] ~@2 [e4,g4,a#4]@13 ~@4 [e4,g4] ~@3 [e4,g4,a#4] ~@3 [e4,g4,a#4]@12, ~@4 a#4 ~@9 a#4 ~@9", // Edim Em Edim Em Edim
  K: "~@4 f4@3 ~ a4@4 c5@4 a4@3 ~ f4@4 ~@4 g4@4 b4@3 d5@3 ~ b4@4 g4@4 ~",
  L: "~@4 f4@3 ~ a4@3 c5@4 ~ a4@4 f4@3 ~@5 d#4@4 g4@4 a#4@4 g4@4 d#4@4",
  M: "~@4 f4@3 ~ a4@4 c5@4 a4@3 ~ f4@4 ~@4 g4@4 b4@4 d5@4 b4@4 g4@4",
  N: "~@4 c5@4 e5@3 g5@4 ~ e5@4 c5@3 ~@5 c5@3 ~ e5@4 g5@4 e5@4 c5@2 ~@2",
  O: "~@4 f4@3 ~ a4@4 c5@4 a4@4 f4@2 ~@6 g4@4 b4@4 d5@4 b4@4 g4@3 ~",
  P: "~@4 e4@4 g4@4 c5@4 g4@4 e4@3 ~ c4@4 e4@4 g4@4 c5@4 g4@4 e4@4",
  Q: "~@4 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5]@12 ~@4 [e4,g4,c5] ~@2 g4 [e4,c5] ~@3 [e4,c5]@12, ~@35 g4@12 ~", // C
  R: "~@4 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5]@12 ~@3 [e4,a4] c5 ~@2 a4 [e4,c5] ~@3 e4@12, ~@35 [a4,c5]@13", // Am A5 C Am
  S: "~@4 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5]@12 ~@4 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5]@12", // F
  T: "~@4 [g4,b4,d5] ~@3 [g4,b4,d5] ~@3 [g4,b4,d5]@12 ~@4 [g4,b4,d5] ~@3 [g4,b4,d5] ~@3 [g4,b4,d5]@10 ~@2", // G
  U: "~@4 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5]@12 ~@4 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5]@12", // C
  V: "~@4 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5]@12 ~@4 a4 ~@3 [e4,a4,c5] ~@3 [e4,a4,c5]@9 ~@3", // Am
  W: "~@4 [g4,b4,d5] ~@3 [g4,b4,d5] ~@3 [g4,b4,d5]@12 ~@4 [g4,b4,d5] ~@3 [g4,b4,d5] ~@3 [g4,b4,d5]@7 ~@5", // G
  X: "~@4 [b4,d5,g5] ~@3 [b4,d5,g5] ~@2 b4 [d5,g5] ~@3 [d5,g5,b5] ~@3 [f5,g5,b5,d6] ~@2 [d5,g5,b5] ~@3 [g5,b5] d6 ~@2 [b5,d6,g6] ~@4 [b5,d6,f6,g6] ~@11", // G G5 G G7 G G7
  Y: "~@8 g4 ~@3 [c5,e5]@8 g4@2 ~ g4 ~@4 [g4,c5,e5] ~@2 c5 g4 ~@3 [g4,c5,e5]@11 ~, ~@3 g4 ~@8", // C
  Z: "~@12 a4@6 ~@2 a4@2 ~@2 a4 ~@3 [a4,c5,e5] ~@3 a4 ~@3 [a4,c5,e5]@10 ~@2, ~ [c5,e5] ~@2", // Am C
  AA: "[a4,c5,f5]@11 ~ [a4,c5,f5] ~@3 a4 ~@11 [a4,c5,f5] ~@3 a4 ~@3 [a4,c5,f5]@8 ~@4", // F
  AB: "g5@11 ~@2 g5@7 d5@4 b4 ~@3 [b4,d5,g5] ~@3 b4 ~@2 [b4,d5] g5 ~@3 [d5,g5,b5] ~@3 [b4,d5,g5] ~@3, [b4,d5]@3 ~@5", // G Bm G Bm
  AC: "~@12 [e5,g5]@4 ~@4 e5 ~@7 [e5,g5,c6] ~@3 [e5,g5] ~@3 [e5,g5,c6]@7 ~@5, ~@12 c6 ~@35", // Em C Em C
  AD: "[c5,e5] ~@7 c5 ~@3 [e5,a5]@8 ~@7 [c5,e5] b5 ~@2 a5 [c5,e5] ~@3 [c5,e5,b5] ~@3 [c5,e5,a5]@5 ~@3, ~@12 c5@5 ~@31", // C A5 C Cmaj7 Am
  AE: "[[g4,b4,d5]@8 ~@4 [b4,d5,g5]@5 ~@3 [d5,g5] ~@3 [d5,g5,b5]@5 ~@3 [g5,b5,d6] ~@3 [g5,b5,d6]@5 ~@2 b5 [d6,f6,g6] ~@2 [b5,d6,g6]@5 ~@4 [b5,d6,g6] ~@2 d6 [b5,g6] ~@2 [b5,d6,g6] ~@3 [b5,d6,g6] ~@2 g6 a6 ~ c7 d7 c7 b6 a6 g6 ~ a6 b6 c7 d7 c7 [a6,b6] [f6,g6] [c6,d6,e6] b5 ~@3 b4 a4 g4 ~, ~@36 b6 ~@7 a5 [e5,f5] c5 ~, ~@89 g5@2 d5@2 ~@3]/2", // G G5 G G7 G Em G Asus2 …
  AF: "~@3 [e4,g4] c5 ~@2 e4 [g4,c5] ~@2 e4 [g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3", // Em C5 C
  AG: "[e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 a4 c5 ~ a5 ~@2 e5 a5 c6 ~@2 a5 c6 e6 ~ a5 ~ c6@2 e6 a6 a5 ~ e6 a6 ~ a5 ~ e6 a6 ~@2, ~@18 e5@2 ~ c5@3 ~@2 e5@3 ~@9 c6@2 ~@3 c6@2 ~@3", // Am
  AH: "~@12 [g4,b4,e5] ~@3 [g4,b4,e5] ~@2 [g4,b4] e5 ~@3 [e5,g5]@5 ~@2 [g4,b4,e5] ~@4 [g4,b4,e5]@10 ~@2, ~@23 b4@5 ~@20", // Em G Em
  AI: "[a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [a4,c5,f5] ~@3", // F
  AJ: "[b4,d5,g5] ~@3 [b4,d5,g5] ~@3 [b4,d5,g5] ~@3 [b4,d5,g5] ~@3 [b4,d5,g5] ~@3 [b4,d5,g5] ~@3 [b4,d5,g5] ~@3 [b4,d5,g5] ~@3 [b4,d5,g5] ~@3 [b4,d5,g5] ~@3 [b4,d5,g5] ~@3 [b4,d5,g5] ~@3", // G
  AK: "[[g4,c5,e5] ~@3 [g4,c5,e5] ~@3 [g4,c5,e5] ~@3 [g4,c5,e5] ~@3 [g4,c5,e5] ~@3 [g4,c5,e5] ~@3 c5@11 [c5,c6] ~@4 [d5,d6] ~@3 [c5,c6] ~@2 [a4,b4,c5] e5 ~ b4 b5 [a4,c5,e5] [b4,b5] b5 ~ [a4,c5,e5] a5@2 a4 [a4,c5,e5,a5] a4 ~ a4 [a4,c5,e5] ~@3 [a4,c5,e5] ~@3 a4@12 [a4,a5] ~@3 [b4,b5] ~@3 [a4,a5] ~@2 a4, ~@24 [g4,e5]@20 ~@3 b5@2 ~@23 [c5,e5]@20 ~@4]/2", // C D C Am B Am A B …
  AL: "[f4,a4,c5] ~ a4 a5 [f4,a4,c5] a5 ~ a5 [f4,a4,c5] ~ a5 ~ [f4,a4,c5] ~@3 [f4,a4,c5] ~@2 f4 [a4,c5] ~@2 f4 [g#4,c5] ~@3 [f4,g#4,c5] ~@3 [f4,g#4,c5] ~@3 [f4,g#4,c5] ~@3 [f4,g#4,c5] ~@3 [f4,g#4,c5] ~@3, a5 ~@23", // F Am G# Fm
  AM: "~@27 c6 ~ g6 c7@2 g6 e6 c6 [e6,g6] c7 ~ [e6,g6] c6 e6 g6 c7 g6 e6 c6 ~ g6, [e4,g4,c5], ~@14 e6 ~@8 e6", // Em C
  AN: "c7 ~@47",
})).s("gm_piano").gain(0.11).pan(0.2)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  A B C D A B D E F G H I F G I@2 F I G J C K A@2 L M L N L M O P F Q H R F S I@2 F G H I F G I@2 F I G J C I F G T U ~
>`.pickRestart({
  A: "c3@19 ~ c3@4 c3@11 ~ c3@11 ~", B: "a2@19 ~ a2@4 a2@11 ~ a2@11 ~", C: "f2@19 ~ f2@4 f2@11 ~ f2@11 ~",
  D: "g2@19 ~ g2@4 g2@11 ~ g2@11 ~", E: "g2@19 ~ g2@4 g2@11 ~ g1@11 ~", F: "c2@19 ~ c2@4 c2@11 ~ c2@11 ~",
  G: "a1@19 ~ a1@4 a1@11 ~ a1@11 ~", H: "f1@19 ~ f1@4 f1@11 ~ f1@11 ~", I: "g1@19 ~ g1@4 g1@11 ~ g1@11 ~",
  J: "e2@19 ~ e2@4 e2@11 ~ e2@11 ~", K: "g2@19 ~ g2@4 g2@11 ~ g2@4 a2@4 b2@3 ~", L: "f2@19 ~ f2@3 ~ g2@19 ~ g2@4",
  M: "f2@19 ~ f2@3 ~ d#2@19 ~ d#2@4", N: "c3@19 ~ c3@3 ~ c3@12 c2@3 ~ d2@4 e2@3 ~", O: "f2@19 ~ f2@4 g2@11 ~ g1@11 ~",
  P: "c2@12 c2@12 g1@11 ~ g1@3 ~ a1@3 ~ b1@3 ~", Q: "a1@19 ~ a1@3 ~ a1@11 ~ a1@7 ~ a1@3 ~",
  R: "g1@19 ~ g1@3 ~ g1@10 ~@2 g1@3 ~ a1@3 ~ b1@3 ~", S: "a1@17 ~@3 a1@3 ~ a1@11 ~ a1@12",
  T: "~ f1@22 ~ f1 ~@3 f1 ~@3 f1 ~@3 f1 ~@3 f1 ~@3 f1 ~@3", U: "c2@23 ~",
})).s("gm_electric_bass_finger").gain(0.19).pan(0.1)

// chords · electric guitar jazz · "+HAWAI GTR"
const electric_guitar_jazz = note(`<
  A B C D A B D@2 A B C D A B D@2 A D E F C D A G H I H A H I H A@2 B C D A B D@2 A B C D A B D@2 A D E F C D A J K L ~
>`.pickRestart({
  A: "~@6 [e4,g4,c5] ~@11 [e4,g4,c5] ~@5", B: "~@6 [e4,a4,c5] ~@11 [e4,a4,c5] ~@5",
  C: "~@6 [c4,f4,a4] ~@11 [c4,f4,a4] ~@5", D: "~@6 [d4,g4,b4] ~@11 [d4,g4,b4] ~@5",
  E: "~@6 [c4,e4,a4] ~@11 [c4,e4,a4] ~@5", F: "~@6 [b3,e4,g4] ~@11 [b3,e4,g4] ~@5",
  G: "~@6 [e4,g4,a#4] ~@11 [e4,g4,a#4] ~@5", H: "~@6 [c4,f4,a4] ~@11 [d4,g4,b4] ~@5",
  I: "~@6 [c4,f4,a4] ~@11 [a#3,d#4,g4] ~@5", // F D#
  J: "~@13 a4@10 ~@2 a4@10 ~@2 a4@10 ~, ~@6 [c4,e4]@5 ~ [c4,e4]@5 ~ [c4,e4]@5 ~", // C
  K: "~@12 [c4,f4,a4]@9 ~@3 [c4,f4,g#4] ~@3 [c4,f4,g#4] ~@3 [c4,f4,g#4] ~@3 [c4,f4,g#4] ~@3 [c4,f4,g#4] ~@3 [c4,f4,g#4] ~@3", // F Fm
  L: "~ [g4,c5]@47, e4@47 ~", // C5
})).s("gm_electric_guitar_jazz").gain(0.2).pan(0.1)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@7 A B@4 C@2 D@2 E F G@2 H I@3 J K J L J K M N O@2 P Q@2 R S@2 T@3 U V@2 W@4 X@2 H Y Z AA AB AC ~
>`.pickRestart({
  A: "~@12 g3@11 ~ b3@11 d4@12 ~",
  B: "[[c4,g4]@11 e4@11 ~ g4@12 c5@24 e4@11 ~ a4@13 c5@24 f4@11 d5@11 ~ c5@12 b4@12 ~ g4@12 e5@11 d5@12 ~]/4", // C5
  C: "[~@11 e5@12 g5@12 ~ c6@23 e5@12 a5@13 c6@12]/2", D: "[b5,d6]/2", E: "c6", F: "b5@11 g5@13 b5@11 d6@13",
  G: "[~ c6@48 b5@47, ~ e6@95]/2", H: "[c6,f6]", I: "[d6@12 e6@23 ~, g6@139 ~@5]/3",
  J: "[f5,a5] [g5,b5] [f5,a5] ~ [g5,b5] [f5,a5] [g5,b5] [f5,a5] [g5,b5] [f5,a5] [g5,b5] [f5,a5] ~ [g5,b5] [f5,a5] [g5,b5] [f5,a5] [g5,b5] [f5,a5] [g5,b5] [f5,a5] ~ [g5,b5] [f5,a5] [g5,b5] [a5,c6] [g5,b5] ~ [a5,c6] [g5,b5] [a5,c6] [g5,b5] [a5,c6] [g5,b5] [a5,c6] [g5,b5] ~ [a5,c6] [g5,b5] [a5,c6] [g5,b5] [a5,c6] [g5,b5] [a5,c6] [g5,b5] ~ [a5,c6] [g5,b5]", // F G F G F G F G …
  K: "[f5,a5] [g5,b5] [f5,a5] ~ [g5,b5] [f5,a5] [g5,b5] [f5,a5] [g5,b5] [f5,a5] [g5,b5] [f5,a5] ~ [g5,b5] [f5,a5] [g5,b5] [f5,a5] [g5,b5] [f5,a5] [g5,b5] [f5,a5] ~ [g5,b5] [f5,a5] [d#5,g5] [f5,a5] [d#5,g5] ~ [f5,a5] [d#5,g5] [f5,a5] [d#5,g5] [f5,a5] [d#5,g5] [f5,a5] ~ [d#5,g5] [f5,a5] [d#5,g5] [f5,a5] [d#5,g5] [f5,a5] [d#5,g5] [f5,a5] ~ [d#5,g5] [f5,a5] [d#5,g5]", // F G F G F G F G …
  L: "c6 d6 c6 ~ d6 c6 d6 c6 d6 c6 d6 c6 ~ d6 c6 d6 c6 d6 c6 d6 c6 ~ d6 c6 d6 c6 d6 c6 d6 c6 ~ d6 c6 d6 c6 d6 c6 d6 c6 ~ d6 c6 d6 c6 d6 c6 d6 ~, g5@43 ~@5",
  M: "[a4,a5] [b4,b5]", N: "[g5,c6]@47 ~", O: "[[e5,c6]@95 ~]/2", P: "[f5,c6]",
  Q: "[g5@35 d6@12 g5@25 g6@24, b5@47 e6@48 ~]/2", R: "[c6,e6]", S: "[[b5,d6]@47 ~]/2",
  T: "[~@12 e5@12 g5@11 c6@24 e5@12 ~ a5@11 c6@25 f5@12 d6@12 c6@12]/3", U: "b5@11 ~ g5@12 e6@11 d6@13",
  V: "[~@12 e5@12 g5@11 c6@24 e5@12 ~ a5@12 b5 c6@11]/2",
  W: "[[b5,d6]@70 ~ [b5,d6]@2 ~ [b5,d6]@3 ~ [b5,d6]@3 ~ [b5,d6]@3 ~ [b5,d6]@3 ~ [b5,d6]@3 ~@2 [c6,e6]@48 ~ d6@47 ~, ~@143 b5@49]/4", // Bm C
  X: "[c6@47 b5@48 ~, e6@95 ~]/2", Y: "[d6,g6]@15 ~", Z: "d6 c6@2 b5", AA: "~ b5@11 a5@36", AB: "e6@11 d6@23 ~ d6@13",
  AC: "~ e5@47, c6@47 ~",
})).s("gm_string_ensemble_2").gain(0.36).pan(0.9)

// other · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2_2 = note(`<
  ~@7 A B@4 C@2 D@2 E F G H I@2 E J@7 K@2 L M@2 N@2 O P@2 Q@3 R S@2 T@2 E L U V W X Y Z AA AB ~
>`.pickRestart({
  A: "~@12 g2@11 b2@12 d3@12 ~",
  B: "[e3@11 e3@11 ~ g3@12 c4@24 e3@12 a3@12 c4@24 f3@12 d4@11 c4@13 b3@12 g3@13 e4@12 d4@12]/4",
  C: "[~@11 e3@12 g3@13 c4@23 e3@12 a3@13 c4@12]/2", D: "[g3@31 ~]/2", E: "c3", F: "b2@11 g2@13 b2@11 d3@12 ~",
  G: "~@11 e3@12 d3@12 c3@12 ~", H: "g2", I: "[f2@47 g2@48 ~]/2",
  J: "[~@12 c3@32 ~@3 c4@24 d4@24 c4@24 a#3@24 c4@24 d4@24 e4@45 ~@3 c4@24 d4@24 c4@24 a#3@24 c4]/7",
  K: "[~@24 d4@23 e4@47 ~@2]/2", L: "g3", M: "[a3@31 ~]/2", N: "[b2@36 d3@11 c3@49]/2", O: "a2", P: "[g2@31 ~]/2",
  Q: "[~@12 e4@12 g4@12 c5@23 e4@12 a4@12 ~ c5@24 f4@11 ~ d5@12 c5@12]/3", R: "b4@12 g4@12 e5@11 d5@12 ~",
  S: "[~@12 e4@12 g4@12 c5@23 e4@12 a4@13 c5@12]/2",
  T: "[g4@70 ~ g4@2 ~@2 g4@2 ~@2 g4@2 ~@2 g4@2 ~@2 g4@2 ~@2 g4@2 ~@3]/2", U: "a3", V: "e3", W: "f3@47 ~", X: "g3@11 ~",
  Y: "d4@11 c4@24 b3@12 ~", Z: "b3@11 ~ a3@36", AA: "e4@11 d4@23 ~ d4@12 ~", AB: "c4@47 ~",
})).s("gm_string_ensemble_2").gain(0.27).pan(0.9)

// other · orchestral harp · "HARP"
const orchestral_harp = note(`<
  A B C D E F D@2 E F C D E F D@2 E D G H C D E I J K J E J K J E@2 F C D E F D@2 E F C D E F D@2 E D F H C D E F L ~@2
>`.pickRestart({
  A: "c4 ~@3 e4 ~@3 g4 ~@3 c5 ~@3 g4 ~@3 e4 ~@3 c4 ~@3 e4 ~@3 g4 ~@3 c5 ~@3 c4 ~@3 b3 ~@3",
  B: "a3 ~@3 c4 ~@3 e4 ~@3 a4 ~@3 e4 ~@3 c4 ~@3 a4 ~@3 e4 ~@3 c4 ~@3 a3 ~@3 c4 ~@3 e4 ~@3",
  C: "f3 ~@3 a3 ~@3 c4 ~@3 f4 ~@3 c4 ~@3 a3 ~@3 f3 ~@3 a3 ~@3 c4 ~@3 f4 ~@3 c4 ~@3 a3 ~@3",
  D: "g3 ~@3 b3 ~@3 d4 ~@3 g4 ~@3 d4 ~@3 b3 ~@3 g3 ~@3 b3 ~@3 d4 ~@3 g4 ~@3 d4 ~@3 b3 ~@3",
  E: "c4 ~@3 e4 ~@3 g4 ~@3 c5 ~@3 g4 ~@3 e4 ~@3 c4 ~@3 e4 ~@3 g4 ~@3 c5 ~@3 g4 ~@3 e4 ~@3",
  F: "a3 ~@3 c4 ~@3 e4 ~@3 a4 ~@3 e4 ~@3 c4 ~@3 a3 ~@3 c4 ~@3 e4 ~@3 a4 ~@3 e4 ~@3 c4 ~@3",
  G: "a3 ~@3 c4 ~@3 e4 ~@2 a4 ~@4 e4 ~@3 c4 ~@3 a3 ~@3 c4 ~@3 e4 ~@3 a4 ~@3 e4 ~@3 c4 ~@3",
  H: "e3 ~@3 g3 ~@3 b3 ~@3 e4 ~@3 b3 ~@3 g3 ~@3 e3 ~@3 g3 ~@3 b3 ~@3 e4 ~@3 b3 ~@3 g3 ~@3",
  I: "c4 ~@3 e4 ~@3 g4 ~@3 a#4 ~@3 g4 ~@3 e4 ~@3 c4 ~@3 e4 ~@3 g4 ~@3 a#4 ~@3 g4 ~@3 e4 ~@3",
  J: "f3 ~@3 a3 ~@3 c4 ~@3 f4 ~@3 c4 ~@3 a3 ~@3 g3 ~@3 b3 ~@3 d4 ~@3 g4 ~@3 d4 ~@3 b3 ~@3",
  K: "f3 ~@3 a3 ~@3 c4 ~@3 f4 ~@3 c4 ~@3 a3 ~@3 d#3 ~@3 g3 ~@3 a#3 ~@3 d#4 ~@3 a#3 ~@3 g3 ~@3",
  L: "f3 ~@3 a3 ~@3 c4 ~@3 f4 ~@3 c4 ~@3 a3 ~@3 g#3 ~@23",
})).s("gm_orchestral_harp").gain(0.2).pan(0.2)

// other · timpani
const timpani = note("<~@32 A B ~@12 C@2 D ~@7 E F ~>".pickRestart({
  A: "c3!48", B: "a2 ~@47", C: "g2!48", D: "[g2,c3] ~@47", E: "g2!3 ~ g2!44", F: "[g2,c3] c3!47",
})).s("gm_timpani").gain(0.22).pan(0.1)

// chords · trombone
const trombone = note("<~@32 A@2 B C A D@3 A@2 B C A@2 E F G C G H I C G J K L ~>".pickRestart({
  A: "~@11 [c4,e4] ~@4 [c4,e4] ~@3 [c4,e4] ~@2 [c4,e4]@10 ~@2 [c4,e4]@12 ~", // C
  B: "~@11 [a3,f4] ~@4 [a3,f4] ~@3 [a3,f4] ~@2 [a3,f4]@9 ~@3 [a3,f4]@12 ~", // Dm
  C: "~@12 [b3,d4] ~@3 [b3,d4] ~@3 [b3,d4] ~@3 [b3,d4]@9 ~@3 [b3,d4]@11 ~", // Bm
  D: "[~@11 [c4,e4] ~@4 [c4,e4] ~@3 [c4,e4] ~@2 [c4,e4]@10 ~@2 [c4,e4]@10 ~@2 [b3,d4]@88 ~@9]/3", E: "[b3,d4]@47 ~",
  F: "[b3,d4] ~@3 [b3,d4] ~@2 [b3,d4] ~@3 [b3,d4] ~@3 [b3,d4] ~@3 [b3,d4] ~@3 [b3,d4] ~@3 [b3,d4] ~@3 [b3,d4] ~@3 [b3,d4] ~@3 [b3,d4] ~@3 [b3,d4] ~@4", // Bm
  G: "~@12 [c4,e4] ~@3 [c4,e4] ~@3 [c4,e4] ~@3 [c4,e4]@9 ~@3 [c4,e4]@11 ~", // C
  H: "~@12 [b3,e4] ~@3 [b3,e4] ~@3 [b3,e4] ~@3 [b3,e4]@9 ~@2 [b3,e4]@11 ~@2", // E5
  I: "~@12 [a3,f4] ~@3 [a3,f4] ~@3 [a3,f4] ~@3 [a3,f4]@9 ~@3 [a3,f4]@12", // Dm
  J: "~@12 [c4,e4] ~@3 [c4,e4] ~@3 [c4,e4] ~@3 [c4,e4]@9 ~@3 [c4,e4]@8 ~@4", // C
  K: "~@12 [a3,f4] ~@3 [a3,f4] ~@2 a3 f4 ~@3 [g#3,f4] ~@2 [g#3,f4] ~@3 [g#3,f4] ~@3 [g#3,f4] ~@3 g#3 f4 ~@3 [g#3,f4] ~@3", // Dm C#
  L: "[g3,e4]@47 ~", // C
})).s("gm_trombone").gain(0.27).pan(0.8)

// other · trumpet
const trumpet = note("<~@48 A ~ B C D E ~@2 F G ~>".pickRestart({
  A: "~@12 g4 ~@3 g4 ~@2 g4 ~@4 c5@8 ~@3 g4 ~ g4@11", B: "~@12 e4 ~@3 e4 ~@3 e4 ~@3 a4@8 ~@2 e4 ~ e4@12",
  C: "~@31 e4@4 g4@8 b4@5", D: "a4@24 ~@8 f4@4 a4@7 c5@5", E: "b4@15 ~",
  F: "~@24 c4 ~@3 c4@2 ~@2 c4 ~@2 d4@2 ~@3 c4 ~@3 d4 ~@3", G: "e4",
})).s("gm_trumpet").gain(0.44).pan(0.8)

// drums · kick
const kick = s("bd").struct("<~@32 A B@2 C D E@2 B@8 F G B@6 E H F ~>".pickRestart({
  A: "x ~@2 x ~ x", B: "x ~@4 x!2 ~@4 x", C: "x ~@19 x ~@3 x ~@22 x", D: "~@5 x!2 ~@4 x", E: "x ~@4 x!2 ~@5",
  F: "x ~@46 x", G: "~@5 x!2 ~@3 x!2", H: "x",
})).gain(0.14).pan(0.1)

// drums · rim
const rim = s("rim").struct("<[~ x ~ x]!32 ~@27>").gain(0.14).pan(0.1)

// drums · snare
const snare = s("sd").struct("<~@32 A@3 B A@11 C A@8 D E ~>".pickRestart({
  A: "~ x ~ x", B: "~@3 x ~@4 x!4", C: "~@11 x ~@3 x ~@4 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4", D: "~@3 x ~@2 x!6",
  E: "~@47 x",
})).gain(0.14).pan(0.1)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@47
  [~@23 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4]
  ~@8
  [~@23 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4]
  [~@2 x!3 ~@4 x!39]
  ~
>`).gain(0.11).pan(0.1)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@57 [~@5 x!4 ~@39] ~>").gain(0.07).pan(0.1)

// drums · hihat
const hihat = s("hh").struct("<[x!12]!32 ~@27>").gain(0.11).pan(0.1)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!24
// … 18 more lines