Strudelify

Fade to Gray

Visage

KeyA minorTempo115 bpm
0:00/0:00
// Fade to Gray — Visage
// 115 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 5 "FM Synth Celesta" named as a mallet, played on celesta (its contrabass patch is not one); ch 7 "FM Harpsichord 1" named as a piano, played on harpsichord (its orchestral harp patch is not one); ch 8 "FM Harpsichord 2" named as a piano, played on harpsichord (its orchestral harp patch is not one)
// note: Full arrangement: all 125 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(115/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.

// other · lead 2 sawtooth · "FM Mono Synth"
const lead_2_sawtooth = note(`<
  ~@3 A@4 ~@23 B C D E@5 F G@8 H I J@3 ~@6 K L ~@2 M@3 ~@10 N O P@6 Q@3 ~@39
>`.pickRestart({
  A: "[~@13 d3@2 ~@21 a6@69 ~@23, ~@5 a2@5 c3@5 e3@2 g3@2 b3@2 d4@2 f4@2 b4@2 d5@2 g5@2 b5@2 [d6,e6]@2 g6@3 ~@90, ~@8 b2@5 ~@3 f3@2 a3@2 c4@2 e4@2 [g4,a4]@2 c5@2 [e5,f5]@2 a5@2 c6@2 f6@2 ~@92]/4", // Dsus2 Gsus2 Fmaj7
  B: "~@27 d3@2 ~@2 g3, ~@25 b2@3 ~@2 f3@2, ~@26 c3@3 e3@3",
  C: "~@9 [g5,a5] [b5,c6] d6 ~ a6@19, [a3,b3]@2 d4@2 g4@2 [b4,c5]@2 [e5,f5]@2 ~ e6@2 ~@19, ~ c4@2 [e4,f4]@2 a4@2 d5@2 ~@3 [f6,g6]@3 ~@17", // Gsus2 Cmaj7 Asus2 Cmaj7 Fmaj7 Fsus2
  D: "~@9 g6@17 a6@6", E: "[~@10 e6@33 d6@17 e6@17 a6@33 g6@17 a6@16 e6@17]/5", F: "~@10 d6@2 c6@3 a5@17",
  G: "[~@17 c6@33 e6@33 a6@68 c6@33 e6@34 a6@38]/8", H: "~@27 a2@5", I: "a5@2 a2@2 a5 a2@3 ~@6 a2@2",
  J: "[~ a5@3 ~ a2@4 a5@2 a2@6 ~@13 a2@4 a5@4 a2@4 ~ a5@2 a2@4 ~@13 a2@4 ~ a5@4 a2@4 a5@2 a2@5 ~@14]/3",
  K: "~@9 a2@4 a5@4 a2@4 a5@3 a2@5 ~@3", L: "~@13 a5@5 a2@4 a5@3 a2@5 ~@2, ~@10 a2@5 ~@17",
  M: "[~@15 a2@4 a5@3 a2@4 ~ a5@2 a2@6 ~@13 a2@3 a5@4 ~ a2@4 a5@2 a2@7 ~@27]/3", N: "c3", O: "e4",
  P: "[~ a5@64 c3@34 e4@33 a5@60]/6", Q: "[~@8 c3@31 e4@36 ~@21]/3",
})).s("gm_lead_2_sawtooth").gain(0.4)

// other · lead 2 sawtooth · "FM Mono Synth" · soft notes
const lead_2_sawtooth_soft = note("<~@30 A ~@54 B@2 C D E@2 F@2 G@2 H I@8 J K L@2 M N O@3 P Q@2 R@2 S@7>".pickRestart({
  A: "~@23 a2@4 ~@5", B: "[~@5 a5@27]/2", C: "~@3 c3@5", D: "~@13 e4@19", E: "[~@15 a5@49]/2",
  F: "[~@19 c3@32 e4@13]/2", G: "[~@5 a5@11]/2", H: "~@11 c3@5", I: "[~@23 e4@34 a5@68 c3@32 e4@33 a5@66]/8", J: "c3",
  K: "~ e4@31", L: "[~@3 a5@61]/2", M: "~@7 c3@25", N: "~@7 e4@25", O: "[~@4 a5@33 c3@11]/3", P: "~@11 e4@21",
  Q: "[~@13 a5@51]/2", R: "[~@17 c3@32 e4@15]/2", S: "[~@18 a5@66 c3@33 e4@34 a5@67 ~@6]/7",
})).s("gm_lead_2_sawtooth").gain(0.08)

// other · synth strings 1 · "SAMPLED Strings"
const synth_strings_1 = note(`<
  ~@6 A@8 B@2 C@2 D@7 ~@2 E@3 ~ F@2 G@5 H@5 I@8 J ~@4 K@3 L M@3 N O@2 P@2 Q@2 R@7 ~@2 S@3 ~ T@3 ~@39
>`.pickRestart({
  A: "[~@9 [e6,a6]@67 [a5,c6]@33 b5@33 a6@66 d6@48, ~@109 e6@99 ~@48]/8", B: "[~@9 c6@23]/2", C: "[~@11 d6@21]/2",
  D: "[~@24 c6@130 ~@3 [a4,a5]@34 [c5,c6]@29 ~@4]/7", E: "[~ [a4,a5]@34 [c5,c6]@35 ~@26]/3",
  F: "[~@9 a5@32 g5@16 a5@7]/2", G: "[~@9 e5@35 d5@16 e5@17 a5@33 g5@16 a5@17 e5@17]/5",
  H: "[~@10 d5@3 c5@3 a4@34 c5@33 e5@33 a5@44]/5",
  I: "[~@23 c5@33 e5@34 a5@61 ~@5 [e5,a5]@16 ~@17 [e5,a5]@16 ~@17 [e5,a5]@16 ~@18]/8", J: "[e5,a5] ~",
  K: "[~@7 c6@17 a5@15 ~ b5@16 g5@17 [e5,a5]@18 ~@5]/3", L: "~@5 [e5,a5]@9 ~@2",
  M: "[~@12 c6@17 a5@16 b5@17 g5@17 [e5,a5]@17]/3", N: "~@15 [e5,a5]@17", O: "[~@17 d6@47]/2", P: "[~@19 c6@45]/2",
  Q: "[~@23 d6@41]/2", R: "[~@25 c6@130 ~@3 [a4,a5]@33 [c5,c6]@29 ~@4]/7", S: "[~@2 [a4,a5]@33 [c5,c6]@35 ~@26]/3",
  T: "[~@8 [a4,a5]@33 ~ c6@29 ~@25, ~@41 c5@29 ~@26]/3", // A
})).s("gm_synth_strings_1").gain(0.4)

// other · synth strings 1 · "SAMPLED Strings" · soft notes
const synth_strings_1_soft = note(`<
  ~@52 A B@4 ~@30 C@3 ~ D@3 ~ E@3 ~ F@3 ~@2 G H@2 ~ I@3 ~ J@3 ~ K@3 ~ L@3 ~@2
>`.pickRestart({
  A: "a5@17 f5@15", B: "[~ g5@17 ~ e5@17 a5@17 f5@17 g5@17 e5@16 ~@25]/4", C: "[~@12 [a4,a5]@34 [c5,c6]@35 ~@15]/3",
  D: "[~@18 [a4,a5]@34 [c5,c6]@29 ~@15]/3", E: "[~@22 [a4,a5]@34 [c5,c6]@35 ~@5]/3",
  F: "[~@28 [a4,a5]@34 [c5,c6]@29 ~@5]/3", G: "[a4,a5]", H: "[~@2 [c5,c6]@35 ~@27]/2",
  I: "[~@6 [a4,a5]@34 [c5,c6]@29 ~@27]/3", J: "[~@10 [a4,a5]@34 [c5,c6]@35 ~@17]/3",
  K: "[~@17 [a4,a5]@33 [c5,c6]@29 ~@17]/3", L: "[~@21 a5@33 [c5,c6]@35 ~@7, ~@10 a4@17 ~@21]/3",
})).s("gm_synth_strings_1").gain(0.08)

// other · pad new age · "FM Synth Clavi 3"
const pad_new_age = note(`<
  ~@12 A B@2 C D@2 E F G ~@4 H@2 ~@2 I@2 ~@10 J K@2 ~@2 L@2 ~@8 M@3 N O@5 P@2 Q R@2 S T U ~@4 V@2 ~@2 I@2 ~@42
>`.pickRestart({
  A: "~@25 d5@6 ~", B: "[~ d5@6 ~@2 d5@4 c5@4 e5@8 ~ d5@4 a4@8 d5@17 ~@4 c5@5]/2",
  C: "~@4 c5@6 ~@2 c5@4 d5@4 c5@8 ~ a4@3", D: "[~ a4@22 ~@7 d5@6 ~@3 d5@7 ~ d5@4 c5@4 e5@8 ~]/2", E: "d5 a4@2 d5@5",
  F: "~ c5@6 ~@2 c5@7 ~ c5@4 d5@4 c5@7", G: "~@2 a4@3 ~ a4@21 ~@5", H: "[~@8 a3@4 ~ a3@46 ~@5, ~@6 g3 ~@25]/2",
  I: "[~@14 a3@4 g3@2 a3@43 ~]/2", J: "~@7 a3", K: "[~ g3@2 a3@49 ~@12]/2", L: "[~ a3@2 g3 a3@22 ~@6]/2",
  M: "[~@7 c5@17 a4@16 b4@17 g4@19 ~@2 a4@3 ~ a4@4 ~ a4@7 ~@2, ~@43 g4 ~@4]/3", N: "~@15 a4@2 ~@2 a4@3 g4@2 a4@7 ~",
  O: "[~@12 c5@17 a4@17 b4@17 g4@16 a4@3 ~ a4@2 ~@2 a4@3 ~ g4@2 a4@6 ~@16 a4@2 ~@3 a4@3 ~ g4@2 a4@6 ~@22 d5@6]/5",
  P: "[~@2 d5@6 ~@2 d5@4 c5@4 e5@8 d5@4 a4@9 d5@17 ~@4 c5@4]/2", Q: "~@5 c5@6 ~@2 c5@4 d5@4 c5@8 a4@3",
  R: "[~@2 a4@22 ~@7 d5@6 ~@2 d5@7 ~ d5@5 c5@4 e5@8]/2", S: "d5@4 ~ a4@8 d5@19",
  T: "~ c5@6 ~@2 c5@7 ~ c5@4 ~ d5@4 c5@6", U: "~@3 a4@3 ~ a4@21 ~@4", V: "[~@4 a3@2 g3 a3@23 ~@2]/2",
})).s("gm_pad_new_age").gain(0.4)

// other · pad new age · "FM Synth Clavi 3" · soft notes
const pad_new_age_soft = note(`<
  ~@52 A@5 ~@28 B@3 ~ C@3 ~ D E@2 ~@2 F@2 ~@2 G@2 ~@2 H@2 ~@2 I@3 ~ J@3 ~ K@3 ~@2 L@2
>`.pickRestart({
  A: "[a4@17 f4@17 g4@17 e4@17 a4@17 f4@16 g4@17 ~ e4@16 ~@25]/5", B: "[~@19 a3@3 g3@2 a3@46 ~@26]/3",
  C: "[~@24 a3@4 g3@2 a3@43 ~@23]/3", D: "~@29 a3@3", E: "[~ a3@23 ~@8, ~ g3@2 ~@61]/2",
  F: "[~@2 a3@4 g3@2 a3@43 ~@13]/2", G: "[~@7 a3@4 ~ a3@46 ~@6, ~@11 g3@2 ~@51]/2", H: "[~@13 a3@4 g3@2 a3@43 ~@2]/2",
  I: "[~@17 a3@4 g3@2 a3@46 ~@27]/3", J: "[~@23 a3@4 g3@2 a3@43 ~@24]/3", K: "[~@27 a3@4 g3@2 a3@46 ~@17]/3",
  L: "[~ a3@4 g3@2 a3@43 ~@14]/2",
})).s("gm_pad_new_age").gain(0.08)

// other · celesta · "FM Synth Celesta"
const celesta = note("<~@22 A@5 B@2 C@2 ~@8 D E@8 ~@4 F G H I J K@2 L M N@2 O ~@10 P@3 Q@2 R@4 S@2 ~@40>".pickRestart({
  A: "[~@29 a4@32 ~ c5@31 ~@2 a5@48 ~@17]/5", B: "[~@2 a4@33 c5@29]/2", C: "[~@5 a5@39 ~@20]/2", D: "~@9 a5@7",
  E: "[~@2 f5@17 g5@17 e5@16 a5@28 ~@6 a5@29 ~@4 a5@17 f5@15 ~ g5@17 e5@16 a5@30 ~@4 a5@21 ~@16]/8",
  F: "a5@2 ~@4 a5@2 ~@4 a5@2 ~@3 f5@2 ~@4 f5@2 ~@4 f5 ~@2", G: "~@2 g5 ~@5 g5 ~@5 g5 ~@3 e5 ~@6 e5 ~@5 e5",
  H: "~@4 a5 ~@5 a5 ~@5 a5@2 ~@3 f5@2 ~@4 f5 ~@4", I: "~ f5@2 ~@2 g5 ~@6 g5 ~@5 g5 ~@3 e5@2 ~@5 e5@2 ~",
  J: "~@2 e5 ~@4 c6 ~@5 c6 ~@5 c6 ~@4 a5@2 ~@4 a5@2",
  K: "[~@4 a5@2 ~@3 b5 ~@4 b5@2 ~@4 b5@2 ~@3 g5@2 ~@4 g5@2 ~@4 g5@2 ~@3 a5 ~@21]/2", L: "~@11 a5 ~@20",
  M: "~@12 c6 ~@5 c6 ~@5 c6 ~@4 a5@2 ~",
  N: "[~@3 a5 ~@6 a5@2 ~@2 b5 ~@5 b5 ~@5 b5@2 ~@3 g5@2 ~@4 g5@2 ~@3 g5@2 ~@3 a5 ~@16]/2", O: "~@15 a5 ~@16",
  P: "[~@30 a4@32 ~ c5@31 ~@2]/3", Q: "[a5@3 ~]/2", R: "[~@2 a4@33 ~ c5@31 ~@2 a5@39 ~@20]/4", S: "[~ a4@4 ~@3]/2",
})).s("gm_celesta").gain(0.4)

// other · celesta · "FM Synth Celesta" · soft notes
const celesta_soft = note("<~@84 A@3 B@4 C@8 D@5 E F G@2 H@4 I@4 J@8 ~>".pickRestart({
  A: "[~@9 c5@31 ~@2 a5@48 ~@6]/3", B: "[~@12 a4@33 ~ c5@31 ~@2 a5@39 ~@10]/4",
  C: "[~@18 a4@32 ~ c5@31 ~@2 a5@48 ~@18 a4@33 ~ c5@31 ~@3 a5@38]/8", D: "[~@28 a4@32 ~ c5@31 ~@2 a5@48 ~@18]/5",
  E: "~ a4@31", F: "~ c5@15", G: "[~@4 a5@39 ~@21]/2", H: "[~@6 a4@32 ~ c5@31 ~@2 a5@48 ~@8]/4",
  I: "[~@11 a4@33 c5@31 ~@3 a5@39 ~@11]/4", J: "[~@16 a4@32 ~ c5@31 ~@3 a5@48 ~@18 a4@33 c5@31 ~@3 a5@39 ~]/8",
})).s("gm_celesta").gain(0.05)

// other · lead 1 square · "FM Funk Synth"
const lead_1_square = note(`<
  ~@4 A B C@2 D@4 E@2 F@2 G@2 H@8 I J@2 K@2 L M N@2 O@8 P@5 ~@4 Q ~@2 R@4 S T@3 U V@2 W@2 X@2 Y@7 Z@2 AA AB@8 ~@37
>`.pickRestart({
  A: "~@7 c3@25", B: "~ e3@3", C: "[~@9 a3@55]/2", D: "[~@12 c3@33 e3@33 a3@50]/4", E: "[~ d3@3]/2",
  F: "[~@19 c3@45]/2", G: "[~@11 d4@21]/2", H: "[~@24 c4@132 ~ c3@33 e3@33 a3@33]/8",
  I: "~@2 a3 ~ a3@2 ~ a3@8 ~, ~@13 g3@2 ~@17", J: "[~@2 c3@33 e3@29]/2", K: "[~@5 a3@38 a3@2 ~@2 a3@3 ~ g3@2 a3@11]/2",
  L: "~ c3@3", M: "~@9 e3@23", N: "[~@5 a3@27]/2", O: "[~@13 c3@33 e3@33 a3@66 ~ c3@33 e3@33 a3@37 ~ a3@2 ~@2 a3@2]/8",
  P: "[~@2 g3@2 a3@18 ~@2 c3@32 e3@33 a3@34 ~@4 a3@2 ~@2 a3@3 ~ g3@2 a3@18 ~@5]/5", Q: "a3@9 ~@7",
  R: "[~@5 g3@18 e3@16 c4@17 a3@17 b3@16 g3@17 a3@6 ~@2 a3@4 g3@2 a3@7 ~]/4", S: "~@15 a3@2 ~@2 a3@4 g3@2 a3@7",
  T: "[~@12 c4@17 a3@17 b3@17 g3@16 a3@7 ~ a3@4 g3@2 a3@3]/3", U: "~@10 a3 ~ a3@2 g3 a3", V: "[~@17 d3@47]/2",
  W: "[~@5 c3@11]/2", X: "[~@23 d4@41]/2", Y: "[~@25 c4@132 ~ c3@33 e3@33]/7",
  Z: "[a3@37 a3@2 ~@2 a3@4 g3@2 a3@16 ~]/2", AA: "~ c3@15",
  AB: "[~@4 e3@33 a3@38 a3@2 ~@2 a3@3 ~ g3@2 ~ a3@17 ~ c3@33 e3@33 a3@37 a3@2 ~@2 a3@4 ~@2 a3@16 ~@23, ~@108 g3 ~@19]/8",
})).s("gm_lead_1_square").gain(0.32)

// other · lead 1 square · "FM Funk Synth" · soft notes
const lead_1_square_soft = note("<~@52 A@4 ~@31 B@4 C@4 D@4 E@5 F@2 G@2 H I@3 J@8 K@4 L>".pickRestart({
  A: "[~@18 f3@16 g3@17 e3@17 a3@16 f3@17 ~@27]/4", B: "[~@13 c3@33 e3@33 a3@38 a3@2 ~@2 a3@3 ~@2 g3@2]/4",
  C: "[a3@17 ~ c3@33 e3@33 a3@37 a3@2 ~@2 a3@3]/4", D: "[~@3 a3@16 ~@4 c3@33 e3@33 a3@39, ~ g3 ~@62]/4",
  E: "[a3@2 ~@2 a3@3 ~ g3@2 a3@17 ~ c3@33 e3@33 a3@37 a3@2 ~@2 a3@4 ~@2 a3@16 ~@3, ~@70 g3 ~@9]/5",
  F: "[~ c3@33 e3@30]/2", G: "[~@4 a3@38 a3@2 ~@2 a3@3 ~ g3@2 a3@12]/2", H: "~@3 c3@13",
  I: "[~@7 e3@33 a3@37 a3@2 ~@2 a3@4 ~ g3@2 a3@8]/3",
  J: "[~@11 c3@33 e3@33 ~ a3@38 a3@2 ~@2 a3@3 ~ g3@2 a3@17 ~ c3@33 e3@33 a3@37 a3@2 ~@3 a3@4]/8",
  K: "[g3@2 a3@16 ~@3 c3@33 e3@33 ~ a3@38 a3@2]/4", L: "~@2 a3@3 ~ g3@2 a3@17 ~@7",
})).s("gm_lead_1_square").gain(0.08)

// other · harpsichord · "FM Harpsichord 1"
const harpsichord = note(`<
  ~@39 A B@8 ~@4 C D E F G H I J K L M N O P Q R@3 S T U V W@4 X Y Z AA@2 AB AC AD AE AF AG@3 AH AI AJ AK AL@2 AM AN AO
  AP AQ@3 AR AS AT AU AV@2 AW AX AY AZ BA@2 BB BC BD BE BF BG@3 BH
>`.pickRestart({
  A: "~@9 a5@7", B: "[~@2 f5@17 g5@17 e5@16 a5@28 ~@6 a5@29 ~@4 a5@17 f5@15 ~ g5@17 e5@16 a5@30 ~@4 a5@21 ~@16]/8",
  C: "a5@2 ~@15 f5@2 ~@13", D: "~ g5@2 ~@16 e5@2 ~@11", E: "~@4 a5@2 ~@15 f5@2 ~@9", F: "~@5 g5@2 ~@15 e5@2 ~@8",
  G: "~@7 c6@2 ~@15 a5@2 ~@6", H: "~@8 b5@2 ~@15 g5@2 ~@5", I: "~@9 a5@2 ~@21", J: "~@11 a5 ~@20",
  K: "~@13 c6@2 ~@14 a5@2 ~", L: "~@7 b5 ~@7 g5", M: "~@15 a5@2 ~@15", N: "~@15 a5 ~@16", O: "~@16 d6@4 ~@5 d6@4 ~@3",
  P: "~ d6@4 ~@4 d6@4 ~@5 e6@4 ~@4 e6@4 ~@2", Q: "~@3 a5@4 ~@5 a5@3 ~@4 c6@5 ~@4 c6@4",
  R: "[~@4 c6@5 ~@4 c6@4 ~@4 c6@4 ~@5 c6@4 ~@4 c6@4 ~@4 c6@7 ~@2 d6@4 ~@4 d6@4 ~@4 d6@4 ~@4 d6@4 ~@5 e6@4 ~@4]/3",
  S: "e6@4 ~@4 a5@4 ~@5 a5@4 ~@4 c6@4 ~@3", T: "~ c6@4 ~@4 c6@4 ~@4 c6@4 ~@5 c6@4 ~@2",
  U: "~@2 c6@4 ~@4 c6@4 ~@5 c6@4 ~@4 c6@4 ~", V: "~ c6 ~ c6 ~ c6 ~ c6",
  W: "[~@5 c6@4 ~@5 c6@4 ~@4 c6@5 ~@3 c6@5 ~@3 c6@4 ~@4 c6@4 ~@5 c6@5 ~@3 e6@4 ~@4 e6@4 ~@4 e6@5 ~@3 e6@5 ~@3 a6@4 ~@5 a6@4 ~@4 a6@4 ~@4 a6@4 ~@4]/4",
  X: "~ a6@4 ~@4 a6@4 ~@4 a6@5 ~@3 a6@5 ~@2", Y: "~@2 c6@4 ~@4 c6@4 ~@4 c6@4 ~@4 c6@5 ~",
  Z: "~@3 e6@4 ~@5 e6@4 ~@4 e6@4 ~@4 e6@4",
  AA: "[~@5 a6@4 ~@4 a6@4 ~@4 a6@4 ~@5 a6@4 ~@5 a6@3 ~@5 a6@3 ~@6 a6@2 ~@6]/2",
  AB: "a6@3 ~@5 c6@5 ~@3 c6@4 ~@5 c6@4 ~@3", AC: "~ c6@5 ~@3 e6@4 ~@4 e6@4 ~@4 e6@5 ~@2",
  AD: "~ e6@5 ~@4 a6@4 ~@4 a6@4 ~@4 a6@4 ~@2", AE: "~@2 a6@4 ~@5 a6@4 ~@4 a6@4 ~@4 a6@5",
  AF: "~@3 a6@5 ~@4 c6@4 ~@4 c6@4 ~@4 c6@4",
  AG: "[~@5 c6@5 ~@3 e6@4 ~@5 e6@4 ~@4 e6@4 ~@4 e6@5 ~@4 a6@4 ~@4 a6@4 ~@4 a6@4 ~@5 a6@4 ~@5 a6@3 ~@5 a6@3 ~@4]/3",
  AH: "~@2 a6@2 ~@6 a6@3 ~@5 c6@5 ~@3 c6@4 ~@2", AI: "~@3 c6@4 ~@4 c6@5 ~@3 e6@4 ~@4 e6@4 ~",
  AJ: "~@3 e6@5 ~@4 e6@5 ~@3 a6@4 ~@4 a6@4", AK: "~@4 a6@4 ~@5 a6@4 ~@4 a6@4 ~@4 a6@3",
  AL: "[~@6 a6@5 ~@3 a6@5 ~@3 c6@4 ~@4 c6@4 ~@4 c6@4 ~@5 c6@5 ~@3 e6@4 ~@5]/2",
  AM: "e6@4 ~@4 e6@4 ~@4 e6@5 ~@4 a6@4 ~@3", AN: "~ a6@4 ~@5 a6@4 ~@4 a6@4 ~@5 a6@3 ~@2",
  AO: "~@3 a6@3 ~@6 a6@2 ~@6 a6@3 ~@5 c6@4", AP: "~@5 c6@4 ~@4 c6@4 ~@4 c6@5 ~@3 e6@3",
  AQ: "[~@5 e6@4 ~@4 e6@5 ~@4 e6@5 ~@3 a6@4 ~@4 a6@4 ~@4 a6@4 ~@5 a6@4 ~@4 a6@4 ~@4 a6@4 ~@5 a6@5 ~@3 a6@5 ~@3]/3",
  AR: "c6@4 ~@4 c6@4 ~@5 c6@4 ~@4 c6@5 ~@2", AS: "~ e6@4 ~@5 e6@4 ~@4 e6@4 ~@4 e6@5 ~",
  AT: "~@3 a6@4 ~@4 a6@4 ~@5 a6@4 ~@4 a6@4", AU: "~@5 a6@3 ~@5 a6@3 ~@6 a6@2 ~@6 a6@2",
  AV: "[~@6 c6@5 ~@4 c6@4 ~@4 c6@4 ~@4 c6@5 ~@3 e6@4 ~@4 e6@4 ~@5 e6@5 ~@3]/2",
  AW: "e6@5 ~@3 a6@4 ~@4 a6@4 ~@5 a6@4 ~@3", AX: "~ a6@4 ~@4 a6@4 ~@4 a6@4 ~@5 a6@5 ~",
  AY: "~@2 a6@5 ~@3 c6@4 ~@4 c6@4 ~@5 c6@4 ~", AZ: "~@3 c6@5 ~@3 e6@4 ~@5 e6@4 ~@4 e6@4",
  BA: "[~@5 e6@5 ~@3 a6@4 ~@4 a6@4 ~@5 a6@4 ~@5 a6@4 ~@4 a6@3 ~@6 a6@3 ~@5]/2",
  BB: "a6@2 ~@6 a6@3 ~@5 c6@5 ~@4 c6@4 ~@3", BC: "~ c6@4 ~@4 c6@5 ~@3 e6@4 ~@4 e6@4 ~@3",
  BD: "~@2 e6@5 ~@3 e6@5 ~@3 a6@4 ~@4 a6@4 ~@2", BE: "~@3 a6@4 ~@4 a6@4 ~@4 a6@4 ~@5 a6@4",
  BF: "~@4 a6@5 ~@3 a6@5 ~@3 c6@4 ~@4 c6@4",
  BG: "[~@5 c6@4 ~@4 c6@5 ~@3 e6@4 ~@5 e6@4 ~@4 e6@4 ~@5 e6@5 ~@3 a6@4 ~@4 a6@4 ~@5 a6@4 ~@5 a6@4 ~@4 a6@3 ~@4]/3",
  BH: "~@2 a6@3 ~@5 a6@2 ~@6 a6@3 ~@11",
})).s("gm_harpsichord").gain(0.08)

// other · harpsichord · "FM Harpsichord 2"
const harpsichord_2 = note(`<
  ~@39 A B@8 ~@4 C D@2 E F G@2 H I J K L M N@2 O P Q R S@3 T U V W X Y@2 Z AA AB AC AD@2 AE AF AG AH AI@3 AJ AK AL AM
  AN@2 AO AP AQ AR AS AT@2 AU AV AW AX AY@3 AZ BA BB BC@4 BD BE BF BG
>`.pickRestart({
  A: "~@9 a5@7", B: "[~@2 f5@17 g5@17 e5@16 a5@28 ~@6 a5@29 ~@4 a5@17 f5@15 ~ g5@17 e5@16 a5@30 ~@4 a5@21 ~@16]/8",
  C: "~@6 a5@2 ~@4 a5@2 ~@9 f5@2 ~@4 f5@2 ~",
  D: "[~@8 g5@2 ~@4 g5@2 ~@9 e5@2 ~@4 e5@2 ~@9 a5@2 ~@4 a5@2 ~@9 f5@2 ~@3]/2",
  E: "~ f5@2 ~@9 g5@2 ~@3 g5@2 ~@10 e5@2 ~", F: "~@3 e5@2 ~@9 c6@2 ~@4 c6@2 ~@8 a5@2",
  G: "[~@4 a5@2 ~@9 b5@2 ~@3 b5@2 ~@9 g5@2 ~@3 g5@2 ~@3 a5@2 ~@21]/2", H: "~@11 a5 ~@20", I: "~@19 c6@2 ~@4 c6@2 ~@5",
  J: "~@2 a5 ~@2 a5 ~@4 b5 ~@2 b5 ~@2", K: "~@5 g5@2 ~@3 g5@2 ~@3 a5@2 ~@15", L: "~@15 a5 ~@16",
  M: "~@20 c6@5 ~@4 c6@3", N: "[~@5 c6@4 ~@5 c6@4 ~@4 d6@5 ~@4 d6@4 ~@4 d6@5 ~@4 d6@4 ~@4 a5@4 ~@4]/2",
  O: "a5@4 ~@4 a5@4 ~@5 d6@4 ~@5 a5@4 ~@2", P: "~@2 a5@4 ~@4 a5@4 ~@4 a5@3 ~@6 c6@4 ~",
  Q: "~@3 c6@4 ~@5 c6@4 ~@3 c6@4 ~@5 d6@4", R: "~@4 d6@4 ~@4 d6@4 ~@4 d6@3 ~@6 a5@3",
  S: "[~@5 a5@4 ~@4 a5@4 ~@5 d6@4 ~@4 a5@4 ~@4 a5@4 ~@5 a5@4 ~@4 a5@4 ~@4 a5@4 ~@5 a5@4 ~@4 a5@4 ~@4 a5@4 ~@4]/3",
  T: "~ a5@4 ~@4 a5@4 ~@5 a5@4 ~@4 a5@4 ~@2", U: "~@2 a5@4 ~@4 a5@4 ~@5 a5@4 ~@4 a5@4 ~",
  V: "~@3 c6@4 ~@4 c6@4 ~@4 c6@4 ~@4 c6@4 ~", W: "~@3 e6@4 ~@5 e6@4 ~@4 e6@4 ~@4 e6@4",
  X: "~@5 e6@4 ~@4 e6@5 ~@3 e6@4 ~@4 e6@3", Y: "[~@6 a5@4 ~@4 a5@4 ~@4 a5@4 ~@5 a5@4 ~@5 c6@4 ~@4 c6@4 ~@4 c6@4 ~@4]/2",
  Z: "c6@4 ~@5 e6@4 ~@4 e6@4 ~@5 e6@4 ~@2", AA: "~@3 e6@4 ~@4 e6@4 ~@4 e6@4 ~@4 e6@4 ~",
  AB: "~@4 e6@3 ~@5 a5@4 ~@4 a5@4 ~@5 a5@3", AC: "~@5 a5@4 ~@4 c6@4 ~@4 c6@4 ~@4 c6@3",
  AD: "[~@6 c6@4 ~@3 e6@4 ~@5 e6@4 ~@4 e6@4 ~@4 e6@4 ~@5 e6@4 ~@4 e6@5 ~@4]/2",
  AE: "e6@4 ~@3 e6@3 ~@6 a5@4 ~@4 a5@4 ~@4", AF: "a5@4 ~@5 a5@4 ~@5 c6@4 ~@4 c6@4 ~@2",
  AG: "~@2 c6@4 ~@4 c6@4 ~@5 e6@4 ~@4 e6@4 ~", AH: "~@4 e6@4 ~@5 e6@4 ~@4 e6@4 ~@4 e6@3",
  AI: "[~@6 e6@4 ~@4 e6@3 ~@5 a5@4 ~@4 a5@4 ~@5 a5@4 ~@4 a5@4 ~@4 c6@4 ~@4 c6@4 ~@4 c6@4 ~@5 c6@4 ~@4 e6@4 ~@4]/3",
  AJ: "e6@4 ~@4 e6@4 ~@4 e6@4 ~@5 e6@4 ~@3", AK: "~ e6@5 ~@4 e6@4 ~@3 e6@3 ~@6 a5@4 ~@2",
  AL: "~@2 a5@4 ~@5 a5@4 ~@4 a5@4 ~@5 c6@4", AM: "~@4 c6@4 ~@4 c6@4 ~@4 c6@4 ~@5 e6@3",
  AN: "[~@5 e6@4 ~@5 e6@4 ~@5 e6@4 ~@4 e6@4 ~@5 e6@4 ~@4 e6@4 ~@4 e6@3 ~@5]/2",
// … 161 more lines

More by Visage