Strudelify

Auf der Reeperbahn nachts um halb eins

Hans Albers

KeyD majorTempo190 bpm
0:00/0:00
// Auf der Reeperbahn nachts um halb eins — Hans Albers
// 190 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 169 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(190/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 · tremolo strings · "TREMOLOSTR"
const bass = note(`<
  ~ A B C D E F G H I G J K L M I N J K O P Q D R Q D S T U@2 ~@6 I V W X V Y Z V AA AB AC AD AE V Y AF V Y AF D ~ AG ~
  AH@2 ~@2 G E AI G AJ I D E AK AL AM X G E AI G AJ I D E AK G AA F G E AN AL E AO AP E AQ AL E AR AS R AT AL R AU AV ~
  AW ~@6 G E AX AY E Z V Y AZ G BA BB BC AA Z BD BE Z BD BE BF ~ BG ~ BH ~@3 I G AA BI G E C V AM BJ AY E I G AA BI G E
  C V BK BF BL BM BN BO BP
>`.pickRestart({
  A: "~@4 g1 ~@3", B: "~@2 g#1 ~@5", C: "a2 ~@5 a2 ~", D: "~@4 a2 ~@3", E: "~@2 a2 ~@5", F: "d2 ~@5 a1 ~",
  G: "~@4 d2 ~@3", H: "~@2 a1 ~@5", I: "d2 ~@5 a2 ~", J: "~@2 f#2 ~@5", K: "e2 ~@5 a2 ~", L: "~@4 a1 ~ b1 ~",
  M: "c#2@2 ~@2 d2@2 ~@2 f#2 ~@3 a2@2 ~@2", N: "~@4 d3 ~@3", O: "~@4 a2 ~ b2 ~",
  P: "c#3@2 ~@2 d2@2 ~@2 f#2 ~@3 a2@2 ~@2", Q: "e2 ~@5 e2 ~", R: "~@2 e2 ~@5", S: "~@4 a2 ~@3 a2 ~@3 f#2 ~@3",
  T: "e2 ~@15", U: "[~@9 d2@16 ~@7]/2", V: "~@8 d2 ~@7", W: "~@4 d3 ~@11", X: "a2 ~@11 a2@2 ~@2", Y: "~@4 d2 ~@11",
  Z: "d2 ~@11 d2 ~@3", AA: "~@4 a2 ~@11", AB: "d2@2 ~@10 f#2 ~@3", AC: "~@8 a2 ~@3 b2 ~@3",
  AD: "a2 ~@3 g2 ~@3 f#2 ~@3 e2 ~@3", AE: "a2 ~@11 a2 ~@3", AF: "g2 ~@11 g2 ~@3", AG: "~@8 a1@3 ~@5",
  AH: "[~@15 d2@3 ~@14]/2", AI: "d2@2 ~@10 a2 ~@3", AJ: "~@2 g2 ~@5", AK: "d2 ~@11 b2 ~@3", AL: "~@4 e2 ~@3",
  AM: "~@4 b2 ~@11", AN: "d2 ~@5 f#2 ~", AO: "a1 ~ b1 ~ c#2 ~ d2 ~", AP: "f#2 ~@3 a2@2 ~@2 d2@2 ~@6",
  AQ: "d3 ~@5 f#2 ~", AR: "a2 ~ b2 ~ c#3 ~ d2 ~", AS: "f#2 ~@3 a2@2 ~@2 e2@2 ~@6", AT: "a2 ~@5 e2 ~",
  AU: "a2@2 ~@10 a2 ~@3", AV: "a2 ~@3 f#2 ~@3 e2 ~@7", AW: "~ d2@15", AX: "d2 ~@11 d3 ~@3", AY: "~@8 a2 ~@7",
  AZ: "d2 ~@11 a2 ~@3", BA: "~@4 f#2 ~@11", BB: "a2 ~@3 b2 ~@3 a2 ~@3 g2 ~@3", BC: "f#2 ~@3 e2 ~@3 a2 ~@7",
  BD: "~@8 g2 ~@7", BE: "~@4 g2 ~@11", BF: "a2 ~@7", BG: "a1@3 ~@13", BH: "~@7 d2@3 ~@6", BI: "d2 ~@5 g2 ~",
  BJ: "e2@2 ~@10 b2 ~@3", BK: "~@4 b2 ~@3 b2 ~@3 a#2 ~@3", BL: "~@2 c#3@3 ~@11", BM: "~@7 d2@9",
  BN: "~@4 a1@3 b2 ~@2 a#2 ~ a2@3 ~", BO: "~@2 a2 ~ a2@3 ~@2 a2 ~@2 d2 ~@3", BP: "~@3 d2 ~@12",
})).s("gm_tremolo_strings").gain(0.56)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A@2 B@2 C D@2 ~@2 E@2 F G@2 H E@2 F G@2 H I@6 J@2 ~@3 K@4 L@3 M@3 N@3 O@3 ~@3 P Q@2 R S@2 T@4 U V W X@2 Y Z AA@2 AB AC
  AD@6 Y Z AA@2 AB AC AE AF@2 ~ AG AH@2 AI AJ@2 AG AH@2 AI AJ@2 ~@15 AK AL@2 AM AN AO@2 AP@4 ~@3 AQ AR AS@2 AT AU ~ AV@4
  AW AX AY AZ@2 BA BB@2 BC BD BE BF@3 BG@3 BA BB@2 BC BD BH BI BJ BK BL BM BN
>`.pickRestart({
  A: "[~@5 d4@7 [d5,b5] ~@3]/2", B: "[[d5,b5] ~@3 [d5,b5]@3 [c#5,a5]@4 [b4,g5]@4 [a4,f#5]@11 ~@6]/2", C: "~ [a4,e5]",
  D: "[~@4 [e5,g5]@8 ~@3 [d5,f#5]@2 ~@15]/2", E: "[~@8 a4@4 d5@8 f#5@4 a5 ~@7]/2", F: "a5@3 f#5",
  G: "[g5 ~@7 g5@10 ~@2 g5 ~@3 f#5@5 ~@3]/2", H: "e5 ~@3 d5@11 ~",
  I: "[~@12 d6@11 ~ c#6@7 ~ c#6 ~@2 c#6@5 [f#4,b5]@3 ~ a5@3 g#4@24 ~@9 b5@3 c#6@5 b5@4 a5@3 ~, e4@43 e4@5 ~@24 a4@13 ~@11, g#4@24 a4@16 ~@7 g#5@22 ~@27]/6", // B5
  J: "[g#4@21 ~@11]/2", K: "[~@9 a4@46 ~@9]/4", L: "[~@8 [f#4,d5]@10 [g4,e5]@5 [a4,f#5] ~@7 [a4,f#5]@11 [b4,g5]@5 ~]/3",
  M: "[[a4,f#5] ~@7 [a4,f#5]@11 [g4,e5]@5 d5@10 ~ [e4,f#5] [f#4,a5]@4 [a4,d6]@4 [d5,f#6]@4, ~@3 f#4 ~@2]/3", // D C Esus2 F#m D5 D
  N: "[[f#5,a6]@12 [g5,b6]@11 ~ [f#5,a6]@12 [e5,g6]@12]/3", // F#m G F#m Em
  O: "[d5@4 b5@4 a5@3 e6 [d5,f#6]@4 [c#5,e6]@4 [b4,d6]@3 [c#5,e6]@17 ~@8, f#6@10 ~ g#5@11 ~@26]/3", // D C#m Bm C#m
  P: "[g4,g5] ~@7 [a4,b5]@4 [b4,d6]@4", Q: "[[a4,c#6]@3 [g4,b5]@5 [f#4,a5]@19 ~@5]/2",
  R: "[b4,b5] ~@7 [b4,b5] ~@3 [b4,b5]@4", S: "[[a4,a5]@2 [g4,g5]@2 [f#4,a5]@7 ~@5]/2", T: "[~@8 a3@22 e4@16 d4@17 ~]/4",
  U: "~@12 [a5,c#6]@3 ~", V: "~@5 [b5,d6]@2 ~", W: "~@6 [a4,f#5]@3 ~@6 [a4,f#5]",
  X: "[~@4 [a4,f#5]@4 [g4,e5]@4 [f#4,a4]@3 [a4,f#5]@12 ~@5]/2", Y: "[a4,f#5]@3 ~ [g4,a4]@4 [f#4,d5]@4 ~@3 [b4,e5]",
  Z: "[c#5,f#5] ~@3 [d5,g5]@3 ~@5 [g5,b5] ~@3, ~@11 [f#5,a5]@2 ~@3", // F#5 G5 G F#m
  AA: "[[f#5,a5]@11 ~@4 f#5@5 [d5,a5]@4 g5@4 b5@4, ~@15 d5 ~@8 c#5 ~@7]/2", // F#m D5
  AB: "[c#5,e5]@7 ~ e5@4 [c#5,g5]@4, ~@8 c#5 ~@7", AC: "f#5@4 a5 ~@3 d5 ~@7, d5 ~@7",
  AD: "[e5@4 [d5,f#5]@4 e5@4 g5@3 b5@4 ~ d6@3 c#6@4 b5@4 ~@13 c#6@6 ~@2 a5 b5@2 ~ d6@2 ~@5 a5 a5 ~@3 [f#5,a5] ~@2 [g4,e5]@2 ~@3 [f#4,a4]@3 [a4,f#5]@12 ~@5, d5 ~@7 b4@23 [c#5,a5]@19 ~@6 a5 ~@6 b5@2 ~@31]/6", // D F#m C F#m D F#m
  AE: "d5@2 e5 ~ [f#5,a5]@2 a5 ~", AF: "[f#5@4 [e5,g5]@4 a4@2 ~ e5 ~@4 d5@2 ~@14, ~@15 f#5@2 ~@15]/2",
  AG: "a4 d5@2 f#5", AH: "[a5 ~@7 a5@12 f#5@4 g5 ~@7]/2", AI: "g5@10 ~@2 g5 ~@3", AJ: "[f#5@5 ~@3 e5 ~@3 d5@11 ~@9]/2",
  AK: "[f#4,d5]@10 [g4,e5]@5 [a4,f#5]", AL: "[~@7 [a4,f#5]@11 [b4,g5]@5 ~ [a4,f#5] ~@7]/2", AM: "[a4,f#5]@11 [g4,e5]@5",
  AN: "d5@10 ~ [e4,f#5] [f#4,a5]@4, f#4 ~", AO: "[[a4,d6]@4 [d5,f#6]@4 [f#5,a6]@12 [g5,b6]@11 ~]/2",
  AP: "[[f#5,a6]@12 [e5,g6]@12 d5@4 b5@4 a5@3 e6 [d5,f#6]@4 [c#5,e6]@4 [b4,d6]@3 [c#5,e6]@17, ~@24 f#6@10 ~ g#5@11 ~@18]/4", // F#m Em D C#m Bm C#m
  AQ: "~@8 [g4,g5] ~@7", AR: "[a4,b5]@4 [b4,d6]@4 [a4,c#6]@3 [g4,b5]@5", AS: "[[f#4,a5]@19 ~@5 [b4,b5] ~@7]/2",
  AT: "[b4,b5] ~@3 [b4,b5]@4 [a4,a5]@4 [g4,g5]@4", AU: "[f#4,a5]@7 ~", AV: "[a3@22 e4@16 d4@17 ~@9]/4",
  AW: "~@4 [a5,c#6]@3 ~@9", AX: "~ [b5,d6]@2 ~@4 [a4,f#5]", AY: "~@7 [a4,f#5] ~@4 [a4,f#5]@4",
  AZ: "[[g4,e5]@4 [f#4,a4]@3 [a4,f#5]@12 ~@5 [a4,f#5]@3 ~ [g4,a4]@4]/2", // C F#m D Gsus2
  BA: "[f#4,d5]@4 ~@3 [b4,e5] [c#5,f#5] ~@3 [d5,g5]@3 ~", // D E5 F#5 G5
  BB: "[~@4 [g5,b5] ~@3 [f#5,a5]@11 ~@4 f#5@5 [d5,a5]@4, ~@3 [f#5,a5]@2 ~@18 d5 ~@8]/2", // G F#m D5 F#m
  BC: "g5@4 b5@4 [c#5,e5]@7 ~, c#5 ~@15", BD: "e5@4 [c#5,g5]@4 f#5@4 a5 ~@3, c#5 ~@7 d5@2 ~@6",
  BE: "d5 ~@7 e5@4 [d5,f#5]@4, ~@8 d5 ~@7", // D
  BF: "[e5@4 g5@3 b5@4 ~ d6@3 c#6@4 b5@4 ~@13 c#6@6 ~ a5 ~ b5@2 ~, b4@23 [c#5,a5]@19 ~@6]/3", // F#m
  BG: "[d6@2 ~@5 a5!2 ~@3 [f#5,a5] ~@2 [g4,e5]@2 ~@3 [f#4,a4]@3 [a4,f#5]@12 ~@5 [a4,f#5]@3 ~ [g4,a4]@4, a5 ~@6 b5@2 ~@39]/3", // F#m C F#m D Gsus2
  BH: "d5 ~@7 d5@4 e5@2 ~@2", BI: "[f#5,a5]@4 ~@2 [f#5,a5]@3 ~@3 [d5,f#5]@3 ~", BJ: "~@2 [e5,g5]@5 ~ a4@3 ~@3 e5@2",
  BK: "~@7 [d5,f#5]@9", BL: "~@7 [a4,d5] ~ [a4,e5] ~@2 [a4,f#5]@2 a4 ~",
  BM: "~ [a4,d5] ~@2 [a4,e5]@2 a4 ~ a4!2 ~ [f#4,d5] ~@4", BN: "~ a4 ~ [f#4,d5] ~@12",
})).s("gm_string_ensemble_1").gain(0.3).pan(0.6)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1_2 = note(`<
  A@2 B@2 C D@2 ~@3 E F G@2 H ~ E F G@2 H I@2 J K L@5 ~@6 M@3 N@2 O P@3 Q@3 R@3 S@3 T@3 ~@4 U V W X@2 Y Z AA@2 AB AC
  AD@3 AE@3 Y Z AA@2 AB AC AF AG AH ~@2 AI@2 AJ AK@2 ~ AI@2 AJ AK@2 ~@15 AL ~ AM AN AO AP@2 AQ@2 AR AS AT@2 AU@3 ~ AV AW
  AX ~@5 AY AZ BA BB@2 BC BD@2 BE BF BG BH@3 BI BJ@2 BC BD@2 BE BF BK BL BM@2 BN BO BP
>`.pickRestart({
  A: "[~@5 d3@7 d4 ~@3]/2", B: "[d4 ~@3 d4@3 c#4@4 b3@4 a3@11 ~@6]/2", C: "~ a3", D: "[~@4 e4@8 ~@3 d4@2 ~@15]/2",
  E: "~@8 d5 ~@7", F: "d5@3 a4", G: "[c#5 ~@7 c#5@10 ~@2 b4 ~@3 a4@5 ~@3]/2", H: "g4 ~@3 f#4@11 ~",
  I: "[b2@6 ~ b2 ~@3 b2@4 c#3@4 d3@4 ~ e3@6 ~@2]/2", J: "e3@2 ~@2 e3@3 d3@4 c#3@4 ~", K: "b2@5 ~@3 b2 ~@3 b2@4",
  L: "[c#3@3 d3@4 c#3@8 b2@4 ~ a2@11 b2@6 ~@3 b2 ~@3 b2@3 c#3@4 ~ d3@4 c#3@12 d3@12]/5",
  M: "[~@8 d4@10 [g3,e4]@5 [a3,f#4] ~@7 f#4@11 [b3,g4]@5 ~]/3", N: "[[a3,f#4] ~@7 [a3,f#4]@11 [g3,e4]@5 [f#3,d4]@8]/2",
  O: "~@4 a2@3 ~ [d3,d5]@4 f#5@4", P: "[a5@12 b5@11 ~ a5@12 g5@12]/3",
  Q: "[~@4 b4@4 a4@4 [f#3,g#4]@11 ~ a4@13 ~@11, f#5@8 f#3@2 ~@13 e3@17 ~@8]/3", R: "[~ a3@23 f#3@24]/3",
  S: "[g3 f#3]/3", T: "[b3 ~@7 b3 ~@3 b3@3 a3@4 ~ g3@4 f#3@14 ~@10]/3", U: "~@12 c#4@3 ~", V: "~@10 d4@3 ~@3",
  W: "~@6 f#4@3 ~@6 f#4", X: "[~@4 f#4@4 e4@3 ~ a3@3 f#4@12 ~@5]/2", Y: "f#4@3 ~ a3@4 d4@4 ~@3 e4",
  Z: "f#4 ~@3 g4@3 ~@5 b4 ~@3, ~@11 a4@2 ~@3", AA: "[a4@11 ~@4 f#4@5 a4@3 ~ g4@4 b4@4]/2", AB: "e4@7 ~ e4@4 g4@4",
  AC: "f#4@4 a4 ~@3 d4@5 ~@3", AD: "[e4@4 f#4@3 ~ e4@11 ~ g4@3 f#4@4 e4@4 c#4@12 ~ c#4@3 ~]/3",
  AE: "[~@4 a4 b4@2 ~ d5@2 ~@6 a4 ~@3 f#4@2 ~@2 e4@2 ~@2 a3@3 f#4@12 ~@5, ~@15 b4@2 ~@31]/3",
  AF: "d4@2 e4 ~ f#4@2 a4 ~", AG: "f#4@4 e4@4 a3@2 ~ e4 ~@4", AH: "d4 ~@7", AI: "[d5 ~@7 d5@12 a4@4 c#5 ~@7]/2",
  AJ: "c#5@10 ~@2 b4 ~@3", AK: "[a4@5 ~@3 g4 ~@3 f#4@11 ~@9]/2", AL: "~@10 e5@5 [a4,f#5]",
  AM: "~@2 g5@5 ~ [a4,f#5] ~@7", AN: "f#5@11 e5@5", AO: "d5@8 ~@4 a3@3 ~", AP: "[d6@4 f#6@4 a6@12 b6@11 ~]/2",
  AQ: "[a6@3 g6@3 ~ b5]/2", AR: "a5@2 g#5@5 ~", AS: "a5@13 ~@3", AT: "[~@9 a4@23]/2", AU: "[f#4 g4]/3",
  AV: "~@8 b4 ~@7", AW: "b4 ~@3 b4@3 a4@4 ~ g4@4", AX: "f#4@7 ~", AY: "~@4 c#5@3 ~@9", AZ: "~@2 d5@3 ~@9 f#5@2",
  BA: "~@7 f#5 ~@4 f#5@4", BB: "[e5@3 ~ a4@3 f#5@12 ~@9 a4@4]/2", BC: "d5@4 ~@3 e5 f#5 ~@3 g5@3 ~",
  BD: "[~@4 b5 ~@3 a5@11 ~@4 f#5@5 a5@3 ~, ~@3 a5@2 ~@27]/2", BE: "g5@4 b5@4 e5@7 ~", BF: "e5@4 g5@4 f#5@4 a5 ~@3",
  BG: "d5@5 ~@3 e5@4 f#5@3 ~", BH: "[e5@11 ~ g5@3 f#5@4 e5@4 c#5@12 ~ c#5@3 ~@4 a5 ~ b5@2 ~]/3",
  BI: "d6@2 ~@6 a5 ~@3 f#5@2 ~@2, ~@7 b5@2 ~@7", BJ: "[e5@2 ~@2 a4@3 f#5@12 ~@9 a4@4]/2", BK: "d5@5 ~@3 d5@4 e4@2 ~@2",
  BL: "f#4@3 ~@3 a4@3 ~@3 f#4@3 ~", BM: "[~@2 e4@5 ~ a3@4 ~@2 e4@5 ~@4 d4@9]/2",
  BN: "~@7 [g3,f#4] ~@2 [g#3,g4] ~ [a3,a4]@3 ~, ~@4 d4@9 ~@3", // Gmaj7 G#maj7 A
  BO: "~ [a3,f#4] ~ [a3,g4]@3 ~@3 [a3,e4]@2 [d4,f#4]@2 ~@3", BP: "~ [a3,e4] ~@2 [d4,f#4]@2 ~@10",
})).s("gm_string_ensemble_1").gain(0.26)

// other · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note(`<
  ~@36 A@3 ~@2 B C@3 D ~@11 E@5 ~@53 F G@2 H I J@2 K L M@2 ~@5 N@2 ~@3 O@4 ~@4 P ~@11 P ~@12
>`.pickRestart({
  A: "[~@8 f#3@10 ~@13 a3@12 ~@5]/3", B: "~@3 f#3", C: "[a3@12 b3@11 ~ a3@16 g3@8]/3", D: "f#3@7 ~@9",
  E: "[~@8 e3@38 f#3@23 ~@11]/5", F: "[f#4,d5]@5 g4@3", G: "[~@7 [a4,f#5]@11 b4@5 ~@9]/2", H: "a4@11 g4@5", I: "f#4 ~",
  J: "[d4@4 f#4@4 a4@12 b4@11 ~]/2", K: "a4", L: "g4 [f#4,f#6]", M: "[f#4@2 ~@2 f#4@11 e4@17]/2", N: "[f#4@3 ~]/2",
  O: "[e4@38 f#4@23 ~@3]/4", P: "~@8 f#5@3 ~@5",
})).s("gm_string_ensemble_1").gain(0.13)

// chords · accordion
const accordion = note(`<
  ~@2 A B C D B E F B G ~@22 H@3 ~@27 I F J E K B C L B M N O P F J E K B C L B Q R S G ~@23 T@4 ~@27 S U V W X F O P Y
  Z AA L B U V W X F O P Y AB AC@2 AD AE AF
>`.pickRestart({
  A: "[g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g#3,b3,d4] ~@3 [g#3,b3,d4] ~@3", B: "~@4 [d4,f#4,a4] ~@3 [d4,f#4,a4] ~@7",
  C: "[d4,f#4,a4] ~@3 [d4,f#4,a4] ~@7 [a3,c#4,e4] ~@3", D: "[a3,c#4,e4] ~@7 [c#4,e4,g4] ~@3 [c#4,e4,g4] ~@3",
  E: "[d4,f#4,a4] ~@3 [d4,f#4,a4] ~@7 [d4,f#4,a4] ~@3", F: "[d4,f#4,a4] ~@7 [d4,f#4,a4] ~@3 [d4,f#4,a4] ~@3",
  G: "[d4,f#4,a4] ~@3 [d4,f#4,a4] ~@11", // D
  H: "[~ [c#4,e5]@7 [d4,f#5]@7 [e4,g5]@7 [d4,f#5]@8 [c#4,e5]@11 ~@7, ~ a3@44 ~@3]/3", // C#m D Em D C#m
  I: "~@8 [d4,f#4,a4] ~@3 [d4,f#4,a4] ~@3", J: "~@4 [f#4,a4] ~ [f#4,a4] ~ [f#4,a4] ~ [f#4,a4] ~ [f#4,a4] ~@3",
  K: "[d4,g4,b4] ~@7 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3", L: "[a3,c#4,e4] ~@7 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3",
  M: "[b3,f#4,a4] ~@3 [b3,f#4,a4] ~@7 [e4,b4,d5] ~@3", N: "[e4,b4,d5] ~@7 [e4,b4,d5] ~@3 [e4,b4,d5] ~@3",
  O: "~@4 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@7", P: "[a3,c#4,e4] ~@3 [a3,c#4,e4] ~@7 [d4,f#4,a4] ~@3",
  Q: "[b3,f#4,a4] ~@3 [b3,f#4,a4] ~@7 [d4,f#4,a4] ~@3", R: "[d4,f#4,a4] ~@7 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3",
  S: "[d4,f#4,a4] ~@3 [d4,f#4,a4] ~@3 [d4,f#4,a4] ~@7", // D
  T: "[~@9 [c#4,e5]@7 [d4,f#5]@7 [e4,g5]@7 [d4,f#5]@8 [c#4,e5]@11 ~@15, ~@9 a3@44 ~@11]/4", // C#m D Em D C#m
  U: "[d4,f#4,a4] ~@3 [d4,f#4,a4] ~@7 [f#4,a4] ~ [f#4,a4] ~", // D F#m
  V: "[f#4,a4] ~ [f#4,a4] ~ [f#4,a4] ~@3 [d4,f#4,a4] ~@3 [d4,f#4,a4] ~@3", W: "~@4 [d4,f#4,a4] ~@3 [d4,g4,b4] ~@7",
  X: "[d4,g4,b4] ~@3 [d4,g4,b4] ~@7 [d4,f#4,a4] ~@3", Y: "[d4,f#4,a4] ~@7 [b3,f#4,a4] ~@3 [b3,f#4,a4] ~@3",
  Z: "~@4 [e4,b4,d5] ~@3 [e4,b4,d5] ~@7", AA: "[e4,b4,d5] ~@3 [e4,b4,d5] ~@7 [a3,c#4,e4] ~@3",
  AB: "~@6 [d4,f#4,a4]@4 ~@2 [d4,f#4,a4]@3 ~", // D
  AC: "[~@2 [a3,c#4,e4]@3 ~@3 [a3,c#4,e4]@3 ~@4 [a3,c#4,e4]@4 ~@4 [d4,f#4,a4]@2 ~@7]/2", // A D
  AD: "~@7 [f#4,a4] ~ [f#4,a4] ~@2 [f#4,a4] ~ [f#4,a4] ~", // F#m
  AE: "~ [f#4,a4] ~@2 [f#4,a4] ~ [f#4,a4] ~@2 [f#4,a4] ~@2 [d4,f#4] ~@3", AF: "~ [a3,a4] ~ [d4,d5] ~@12",
})).s("gm_accordion").gain(0.2).pan(0.6)

// chords · orchestral harp · "HARP"
const orchestral_harp = note(`<
  ~ A ~@2 B C D E F G E F H I J G E F H I J H I K H I L H I M ~@6 G E F N O P Q E F H R P S T F U V P U V W X Y Z AA@2 ~
  AB F G E AC AD AE K G AF AG AH AI F G E AC AD AJ K G AK AL Q E F G AM AG AN E F G AM AG AN AM AG AO AP AG AH AP AG AN
  ~@6 AQ F G AR AS AD P F G AM AG AD AT K G AU AV AD AU AV AD ~ AW@2 AX AY ~ AZ BA E F G V P BB T BC H I L Q E F G V P
  AO T BD BE BF BG BH ~@2
>`.pickRestart({
  A: "~@4 g3 [a3,b3] [c4,d4] [e4,f4] g4@3 ~@5", B: "~@5 g#4 a4 b4", C: "c#5 d#5 e5 f#5 g5 a5 b5 c#6",
  D: "d6@2 ~@2 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@7", E: "[d3,f#3,a3] ~@3 [d3,f#3,a3] ~@7 [d3,f#3,a3] ~@3",
  F: "[d3,f#3,a3] ~@7 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3", G: "~@4 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@7",
  H: "~@4 [e3,g#3,b3] ~@3 [e3,g#3,b3] ~@7", I: "[e3,g#3,b3] ~@3 [e3,g#3,b3] ~@7 [a2,c#3,e3] ~@3",
  J: "[a2,c#3,e3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3", // A D
  K: "[a2,c#3,e3] ~@7 [a2,c#3,e3] ~@3 [a2,c#3,e3] ~@3", // A
  L: "[a2,c#3,e3] ~@3 [a2,c#3,e3] ~@3 [a2,c#3,e3] ~@3 [a2,c#3,e3] ~@3", M: "[a2,c#3,e3] ~@3 [d3,f#3,a3] ~@11",
  N: "~@4 [a2,c#3,g3] ~@3 [a2,c#3,g3] ~@7", O: "[a2,c#3,g3] ~@3 [a2,c#3,g3] ~@7 [d3,f#3,a3] ~@3",
  P: "[d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3", // D
  Q: "[d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@7", R: "[e3,g#3,b3] ~@3 [e3,g#3,b3] ~@7 [d3,f#3,a3] ~@3",
  S: "[a2,c#3,e3] ~@3 [a2,c#3,e3] ~@3 [a2,c#3,e3] ~@7", T: "[a2,c#3,e3] ~@3 [a2,c#3,e3] ~@7 [d3,f#3,a3] ~@3",
  U: "~@4 [g2,b2,d3] ~@3 [g2,b2,d3] ~@7", V: "[g2,b2,d3] ~@3 [g2,b2,d3] ~@7 [d3,f#3,a3] ~@3",
  W: "[d3,f#3,a3] ~@3 [d3,f#3,a3] ~@11", X: "~@14 [a3,c#4,e4] ~", Y: "~@3 [a3,c#4,e4] ~@10 [a3,c#4,e4] ~",
  Z: "~@3 [a3,c#4,e4] ~@11 [f#3,a3,d4]", AA: "[~@5 [f#3,a3,d4] ~@8 d4@10 ~@8, ~@12 f#3@13 ~@7, ~@12 a3@11 ~@9]/2",
  AB: "~@2 c3 [d3,e3] [f3,g3] [a3,b3] [c4,d4] [e4,f4] g4@3 ~ [d3,f#3,a3] ~@3", // Dsus2 Fsus2 Asus2 Csus2 Fmaj7 D
  AC: "[d3,f#3,a3] ~@7 [g2,b2,d3] ~@3 [g2,b2,d3] ~@3", AD: "~@4 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3",
  AE: "[d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [a2,c#3,e3] ~@3", // D A
  AF: "[b2,d#3,f#3] ~@3 [b2,d#3,f#3] ~@7 [e3,g#3,b3] ~@3", AG: "[e3,g#3,b3] ~@7 [e3,g#3,b3] ~@3 [e3,g#3,b3] ~@3",
  AH: "~@4 [a2,c#3,e3] ~@3 [a2,c#3,e3] ~@3 [a2,c#3,e3] ~@3", // A
  AI: "[a2,c#3,e3] ~@3 [a2,c#3,e3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3", // A D
  AJ: "[d3,f#3,a3] ~@3 [d3,f#3,a3] ~@7 [a2,c#3,e3] ~@3", // D A
  AK: "[b2,d3,a3] ~@3 [b2,d3,a3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3", // Bm7 D
  AL: "[d3,f#3,a3] ~@3 [a2,c#3,e3] ~@3 [a2,c#3,e3] ~@3 [a2,c#3,e3] ~@3", // D A
  AM: "[d3,f#3,a3] ~@3 [d3,f#3,a3] ~@7 [e3,g#3,b3] ~@3", AN: "~@4 [a2,c#3,e3] ~@3 [a2,c#3,e3] ~@3 [d3,f#3,a3] ~@3",
  AO: "~@4 [a2,c#3,e3] ~@3 [a2,c#3,e3] ~@7", AP: "[a2,c#3,e3] ~@3 [a2,c#3,e3] ~@7 [e3,g#3,b3] ~@3",
  AQ: "~@12 [d3,f#3,a3] ~@3", AR: "[d3,f#3,a3] ~@3 [d3,f#3,a3] ~@7 [a2,c#3,g3] ~@3",
  AS: "[a2,c#3,g3] ~@7 [a2,c#3,g3] ~@3 [a2,c#3,g3] ~@3", // A7
  AT: "[d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [a2,c#3,e3] ~@3 [a2,c#3,e3] ~@3", // D A
  AU: "[d3,f#3,a3] ~@3 [d3,f#3,a3] ~@7 [g2,b2,d3] ~@3", AV: "[g2,b2,d3] ~@7 [g2,b2,d3] ~@3 [g2,b2,d3] ~@3",
  AW: "~@6 [a3,c#4,e4] ~@4 [a3,c#4,e4] ~@4", AX: "~@7 [f#3,a3,d4] ~@5 [f#3,a3,d4] ~@2", AY: "~@3 d4@5, ~ [f#3,a3]@3",
  AZ: "~@10 c3 [d3,e3] [f3,g3] [a3,b3] [c4,d4] [e4,f4]", BA: "g4@3 ~ [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@7",
  BB: "[d3,f#3,a3] ~@3 [a2,c#3,e3] ~@3 [a2,c#3,e3] ~@7", BC: "[d3,f#3,a3] ~@7 [b2,d#3,f#3] ~@3 [b2,d#3,f#3] ~@3",
  BD: "[d3,f#3,a3] ~@7 [b2,d3,a3] ~@3 [b2,d3,a3] ~@3", BE: "[d3,f#3,a3] ~@5 [d3,f#3,a3] ~@5 [d3,f#3,a3] ~@3",
  BF: "~@2 [a2,c#3,e3] ~@5 [a2,c#3,e3] ~@6 [a2,c#3,e3]", // A
  BG: "~@7 [d3,f#3,a3] ~@3 [d2,e2] [f2,g2] [a2,b2] [c3,d3,e3] [f3,g3,a3]", // D Dsus2 Fsus2 Asus2 C F
  BH: "[b3,c4] [d4,e4,f4] [g4,a4] [b4,c5] d5 ~@11", // Cmaj7 Dm Gsus2 Cmaj7
})).s("gm_orchestral_harp").gain(0.17)

// other · whistle
const whistle = note("<~@74 A@2 ~@77 B ~@15>".pickRestart({
  A: "[~@4 g7@15 ~@13]/2", B: "g7@15 ~",
})).s("gm_whistle").gain(0.23).pan(0.6)

// other · clarinet
const clarinet = note(`<
  ~@9 A@2 B C@2 D E@2 F G@2 H ~@6 I@3 J@6 ~@12 K L M N O@2 P Q R ~@31 S T@2 U V@2 W X@2 U Y@2 ~@5 Z@2 AA@2 AB@6 ~@11 AC
  AD AE@2 AF AG AH AI AJ@2 ~@33
>`.pickRestart({
// … 82 more lines