Strudelify

Loco in Acapulco

Four Tops

KeyE majorTempo122 bpm
0:00/0:00
// Loco in Acapulco — Four Tops
// 122 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 120 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(122/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 · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~ A B C D A B C E F G H I H G H I H J H K H G H K H L H M H G H N A B C D C O A E H G H K H G H I P Q R S T U V W X@2
  Y Z AA@2 AB AC AD@2 AE AF AG AH AG AI AJ AK AJ AI AJ AI AL AM AN AO AP AQ AN AR AS AT G H M H L AU AV H G H M AU L H K
  H G AW M H L AU I H G H M H G H AX
>`.pickRestart({
  A: "e1 ~@2 a1 ~ a1 ~ f#1", B: "~@6 f#1@2 b1@5 ~@3", C: "e1@3 ~@3 a1@2 ~@2 a1@2 ~@2 f#1@2", D: "~ a1 ~ f#1 ~ b1@3",
  E: "~@2 a1@2 ~@2 f#1@2 ~@2 b1@5 ~", F: "e1@2 f#1@2 g#1 ~ a1@3 ~ a1@2 g#1@2 f#1@2", G: "~ f#1 c#2 f#1 b1 c#2 b1 c#2",
  H: "e1@2 f#1@2 g#1@2 a1@3 ~ a1@2 g#1@2 f#1@2", I: "~@2 f#1@2 c#2@2 f#1@2 b1@3 ~ b1@2 ~@2",
  J: "~@2 f#1@2 c#2@2 f#1@2 b1@2 c#2@2 b1@2 e2 ~", K: "~@2 f#1@2 c#2@2 f#1@2 b1@3 ~ b1@3 ~",
  L: "~ f#1 c#2 f#1 b1 c#2 b1 g#1", M: "~ f#1 c#2 f#1 b1 ~ b1 ~", N: "~@2 f#1@2 c#2@2 f#1 ~ b1@3 ~ b1@2 ~@2",
  O: "~@6 f#1@2 b1@2 ~@2 b1@3 ~", P: "e1@3 ~@4 e1 d2@2 e1@2 g1@2 d2@2", Q: "e1 ~ e1@2 ~@3 e1 d2@2 e1@2 ~@2 e1@2",
  R: "e1@4 ~@3 e1 d2@2 e1@2 g1@2 d2@2", S: "e1@3 ~@4 e1!2 ~ e1@2 g1@2 d2@2", T: "e1@4 ~@3 e1 d2@2 e1@2 g1@2 e1 ~",
  U: "e1 ~ e1@2 ~@3 e1 d2@2 e1@2 g1@2 e1@2", V: "a1@5 ~@2 a1@3 g1@2 a1@2 g1@2", W: "b1@5 ~@2 b1 d2@2 b1@2 a1 d2 b1 a1",
  X: "[b1@6 c2@2 ~@2 b1@2 ~@2 a1@7 ~@2 g1 a1 ~ a1@2 g1 a1 c2 ~]/2", Y: "a1@5 ~@2 g1 a1 ~ a1@3 ~ a1@2",
  Z: "b1 ~ b1@3 ~ a1@3 ~ b1@3 ~ a1 ~", AA: "[b1@5 ~ c2@3 ~ b1@4 a1@7 ~ g1 a1 b1 ~ a1 ~ g1 ~ a1 ~]/2",
  AB: "b1@3 ~ b1 ~ a1@2 b1 ~ b1@2 d2 a1 b1 a1", AC: "b1 ~ b1@4 a1@2 b1 ~ d2@4 b1@2",
  AD: "[a1@2 a1@2 ~@2 a1 ~ a1 ~ a1@3 ~ b1@7 ~ b1 ~ b1 ~ b1@3 ~ b1@2]/2", AE: "e1 ~@2 a1 ~@3 f#1",
  AF: "~@8 b1@2 ~@2 b1@3 ~", AG: "e1@2 ~@4 a1@3 ~@5 f#1@2", AH: "~ b1", AI: "~@8 b1@3 ~ b1@2 ~@2",
  AJ: "e1@3 ~@3 a1@3 ~@5 f#1@2", AK: "~@8 b1@5 ~@3", AL: "g#1@4 ~@2 g#1@3 ~ g#1@2 b1@4",
  AM: "c#2@4 ~@2 g#1@2 c#2 ~ c#2@2 b1@2 c#2@2", AN: "f#1@6 c#2@2 f#2 ~ f#2@2 c#2@2 f#1@2",
  AO: "b1 ~ b1@3 ~ b1 ~ b1 ~ b1@3 ~ b1@2", AP: "g#1@5 ~ g#1@3 ~ g#1@2 b1@2 g#1@2",
  AQ: "c#2@5 ~ c#2@3 ~ c#2@2 g#1@2 c#2@2", AR: "b1 ~ b1@3 ~ b1@3 ~ b1@2 b2@2 b1 ~", AS: "b1 ~ b1@3 ~ b1@3 ~ b1@6",
  AT: "e1 ~ f#1@2 g#1@2 a1@3 ~ a1@2 g#1@2 f#1@2", AU: "e1 f#1 g#1 a1 ~ a1 g#1 f#1",
  AV: "~@2 f#1@2 c#2@2 f#1 ~ b1@2 ~@2 b1@2 ~@2", AW: "e2 ~ f#1@2 g#1@2 a1@3 ~ a1@2 g#1@2 f#1@2",
  AX: "~@2 f#1@2 c#2@2 f#1@2 b1@2 ~@2 b1@3 ~",
})).s("gm_electric_bass_finger").gain(0.51)

// other · brass section · "BRASS"
const brass_section = note(`<
  ~ A@2 B@2 C D E@2 ~@7 F ~@17 G ~@3 G ~@32 H@2 I@2 C J K@2 ~@10 L ~@3 G ~@3 G ~@3 M ~@2 N O P@2 C D E@2 N Q R@2 C O S@2
>`.pickRestart({
  A: "[b4@18 a4!2 a4@2 g#4!3 ~ f#4!2 f#4@2 e4 f#4]/2", B: "[g#4 ~ e4@2 ~@2 b3@21 ~@5]/2",
  C: "e4 f#4 g#4 ~@5 e4 f#4 g#4 ~@5", D: "~@2 a4!3 ~ g#4!3 ~ f#4!3 ~ e4 f#4", E: "[g#4 ~ b4 ~@3 b4@25 ~]/2",
  F: "~@12 [b4,b5]!2 ~@2", G: "~@6 [b4,b5] ~", H: "[b4@18 a4!3 ~ g#4!2 g#4@2 f#4!2 f#4@2 e4 f#4]/2",
  I: "[g#4 ~ [e4,f#4] ~@3 b3@24 ~@2]/2", J: "~@2 a4 [a4,b4] a4@2 g#4!3 ~ f#4!2 f#4@2 e4 f#4",
  K: "[g#4 ~ b4 ~@3 b4@26]/2", L: "~@12 [b4,b5] ~@3", M: "~@6 b5 ~, ~@12 b4 ~@3", N: "b4",
  O: "~@2 a4!3 ~ g#4!3 ~ f#4!2 f#4@2 e4 f#4", P: "[g#4 ~ e4@2 ~@2 b3@26]/2",
  Q: "~@2 a4!3 ~ g#4!2 g#4@2 f#4!2 f#4@2 e4 f#4", R: "[g#4 ~ e4 ~@3 b3@26]/2",
  S: "[g#4 ~ b4@2 ~@2 b4@20 ~@2 [b4,b5] ~@3]/2", // B
})).s("gm_brass_section").gain(0.46).pan(0.7)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@9 A@2 B@2 C D E F ~@32 G H I@3 J@7 K@2 L@4 ~@11 M N O P@2 Q@2 R@3 S@2 T@2 U@2 V@2 W@2 X Y Z AA AB AC AD@2 AE AF AG
  AH AI AJ AK AL AM Y AN AO AP AQ
>`.pickRestart({
  A: "[[e4,e5,e6]@6 [b3,b4,b5] [c#4,c#5,c#6] [e4,e5,e6]@2 [c#4,c#5,c#6] [b3,b4,b5] [c#4,c#5,c#6]@2 [e4,e5,e6]@4 ~@10 [b3,b4,b5]@2 [c#4,c#5,c#6] ~]/2", // E B C# E C# B C# E …
  B: "[[g#3,e4,e5,g#5]@3 ~@3 [a3,c#4,e4,a4,c#5,e5]@4 ~@4 [c#3,f#3,a3,c#4,f#4,a4,c#5]@4 ~@4 [b3,b4,b5] [c#4,c#5,c#6] [e4,e5] ~ [g#4,g#5] ~ [f#4,f#5,f#6] [e5,e6] [c#5,c#6] [b4,b5], g#4 ~@23 e6@2 g#6@2 ~@4]/2", // C#m A F#m B C# E G# F# …
  C: "[e4,e6]@5 ~ [b3,b4,b5] [c#4,c#5,c#6] [e4,e5,e6]@2 [c#4,c#5,c#6] [b3,b4,b5] [c#4,c#5,c#6]@2 [e4,e6]@2, e5 ~@13 e5 ~", // E B C# E C# B C# E
  D: "~@8 [b3,b4,b5]@2 [c#4,c#5,c#6]@2 [g#3,g#4,g#5]@2 [c#4,c#5,c#6] ~", // B C# G# C#
  E: "[e4,g#4,e5,g#5]@2 ~@4 [a3,c#4,a4,c#5,a5]@3 ~@5 [f#3,c#4,f#4,a4,f#5,a5,c#6]@2, ~@14 c#5 ~", // E A F#m
  F: "~@8 [e5,e6] [c#5,c#6] [b4,b5] [g#4,g#5] [c#5,c#6] [b4,b5] [g#4,g#5] ~", G: "[g3,b3,g4,b4,e5], e3@3 ~@13, e4 ~@15",
  H: "[f#3,a3,d4,f#4,a4,d5]", I: "[~@2 e6@5 [e5,e6]@5 ~@12, e4, [g3,g4]@23 ~, e5!2 ~@10, ~ [b3,b4]@45 ~@2]/3",
  J: "[[f#3,f#4,d6]@14 [c5,c6] [b4,b5] [e3,c4,e4,c6]@15 ~ b5@4 [d5,d6]@3 ~ [b4,b5]@2 a5@2 [b4,b5]@3 ~ [b4,b5]@6 [e3,g3,c4,e4,g4,c6]@3 ~ [d3,f#3,b3,d4,f#4,a4,b5]@4 c5@3 c5@3 ~@2 [e5,e6]@4 [c5,c6]@2 a5@2 ~@8 [e5,g5,e6,g6]@4 [c5,e5,c6,e6]@3 ~ b4@2 f#4@10 ~ [b4,b5]@3 [d5,d6]@2, a3@54 c5 ~@3 [b4,a5] ~@3 c6@3 c4@30 ~ b4@2 ~@8 f#4@6, a4@32 b4 ~@9 a4@16 ~@4 a4@14 a4@2 [c5,c6]@2 [e5,e6]@4 [g3,g4]@10 [d5,b5,d6]@12 f#5@2 ~@4, d4@16 ~@15 [f#3,f#4]@22 ~@9 a3@50, d5 ~@15 c5 ~@15 [d3,b3,d4]@22 ~@8 [e3,e4]@33 ~ [d3,f#3,b3,d4]@16]/7", // D C B C D B C Bm7 …
  K: "[[b4,d5,b5,d6]@6 [e3,g3,c4,e4,g4,e5,c6,e6]@3 ~ [d3,f#3,b3,d4,f#4,d5,b5,d6]@3 c5 [e5,c6,e6]@8 [e5,g5,e6,g6]@4 [e5,c6,e6]@6, ~@6 c5 ~@3 [a3,a4]@19 ~@3, ~@10 b4 ~@2 [e3,c4,e4]@16 ~@3, ~@14 [g3,g4]@15 ~@3, ~@14 c5 ~@11 c5@3 ~@3]/2", // Bm C Bm C Em C A C …
  L: "[[b4,f#6]@14 [d5,b5,d6]@3 ~ [f#5,f#6,a6] ~ [d5,f#5,d6,f#6] ~ [d5,b5,d6] ~ [f#5,f#6] ~ [d5,f#5,d6,f#6] ~ [b4,d5,f#5,b5,d6,f#6] ~ [a4,d5,e5,a5,d6,e6]@2 [e5,a5]@2 [a4,d5,e5,a5,d6,e6] ~@3 [a4,d5,e5,a5,d6,e6] ~@3 [a4,d5,e5,a5,d6,e6] ~@3 [c4,b4,c5] ~ b6 f#6 e6 [f#5,f#6] e6 [b4,b5] [e5,e6] [f#5,f#6] [b5,b6] [f#5,f#6] [e5,e6] [b4,b5] ~@4, d4@45 ~@4 f#5@2 ~@13, [b3,f#4]@31 ~ [a3,e4]@13 ~ [b3,e4,f#4]@18, a4@24 a5@6 ~@2 a4 ~@13 [e5,f#5]@4 e5@2 e5@2 ~@10, [d5,f#5,a5,d6]@7 b4@2 a5@2 b4 a6 ~@10 b5 b5 ~@7]/4", // B5 G F#m D G F# D Bm …
  M: "~@14 [e4,e5] [f#4,g#4,f#5,g#5]", N: "b4@3 b3@5, b5, ~@3 b4@3 ~@2", O: "[g#3,g#5]@3 [e3,e4,e5], g#4 ~@15",
  P: "[f#4 ~@15 [b3,d#4,b4,d#5]@15 [g#3,g#4], [f#3,f#5]@31 ~]/2", // B G# F#
  Q: "[[b3,b4,b5]@11 [g#3,g#5]@3 [e3,e4,e5]@2, ~@22 g#4 ~@9]/2", R: "[[f#3,f#4,f#5]@7 [b3,b4,b5]@17]/3",
  S: "[[e4,e5,e6]@6 [b3,b4,c#5,b5,c#6] [c#4,c#5,e5] e4@2 [c#4,c#5,c#6] [b3,b4,b5] [c#4,c#5,c#6]@2 [e4,e5,e6]@10 [b3,b4,b5]@4 [c#4,c#5,c#6]@2 ~@2, ~@7 e6@2 ~@23, ~@8 e5 ~@23]/2", // E Bsus2 C#m C# B C# E B …
  T: "[[g#3,e4,g#4,e5,g#5]@3 ~@3 [a3,c#4,e4,a4,c#5,e5]@4 ~@4 [f#3,a3,c#4,f#4,a4,c#5]@4 ~@6 [b3,f#4,b4,f#5] ~@3 [b3,b4,b5] [c#4,c#5,c#6] [e4,e5,e6] ~]/2", // C#m A F#m B5 B C# E
  U: "[[e4,e5,e6]@6 [b3,b4,b5] [c#4,c#5,c#6] [e4,e6]@2 [c#4,c#5,c#6] [b3,b4,b5] [c#4,c#5,c#6]@2 [e4,e5,e6]@8 ~@2 [b3,b4,b5]@2 [c#4,c#5,c#6] ~ [g#4,g#5]@2 [b4,b5] ~, ~@8 e5 ~@23]/2", // E B C# E C# B C# E …
  V: "[[e3,e4,e5]@4 ~@2 [c#4,a4,c#5] ~@7 [f#3,a3,c#4,f#4,a4,c#5]@4 ~@4 [b3,f#4,b4,f#5]@2 ~@4 [e5,e6] [c#5,c#6] [b4,b5] [g#4,g#5], ~@3 [a3,a5]@2 ~@11]/2", // E F#m B5 E C# B G# A
  W: "[[e5,e6]@6 [b3,b4,b5] [c#4,c#5,c#6] [e4,e6]@2 [c#4,c#5,c#6] [b3,b4,b5] [c#4,c#5,c#6]@2 [e4,e5,e6]@10 ~@4 [b3,b4,b5]@2 [c#4,c#5,c#6] ~, ~@8 e5 ~@23]/2", // E B C# E C# B C# E …
  X: "[e4,g#4,e5,g#5]@3 ~@3 [c#4,e4,c#5,e5]@3 ~@5 [f#3,a3,c#4,f#4,a4,c#5]@2", // E C#m F#m
  Y: "~@8 [b3,b4,b5] [c#4,c#5,c#6] [e4,e5,e6] ~ [g#4,g#5,g#6] [f#4,f#5,f#6] [e5,e6] [c#4,c#5,c#6]", // B C# E G# F# E C#
  Z: "[e4,e5,e6]@5 ~ [b3,b4,b5] [c#4,c#5,c#6] [e4,e6]@2 [c#4,c#5,c#6] [b3,b4,b5] [c#4,c#5,c#6]@2 [e4,e5,e6]@2, ~@8 e5 ~@7", // E B C# E C# B C# E
  AA: "~@8 [b3,b4,b5]@2 [c#4,c#5,c#6]@2 [g#3,g#4,g#5]@2 [b3,b4,b5] ~", // B C# G# B
  AB: "[e3,e4,g#4,e5,g#5]@2 ~@4 [a3,c#4,a4,c#5,a5]@3 ~@5 [c#4,f#4,a4,f#5,a5,c#6]@2, ~@14 c#5 ~", // E A F#m
  AC: "~@8 [e5,e6] [c#5,c#6] [b4,b5] [g#4,g#5] [c#5,c#6] [b4,b5] [c#5,c#6] ~, ~@7 c#4", // E C# B G# C# B C#
  AD: "[[e4,e5,e6]@6 [b3,b4,b5] [c#4,c#5,c#6] [e4,e6]@2 [c#4,c#5,c#6] [b3,b4,b5] [c#4,c#5,c#6]@2 [e4,e5,e6]@4 ~@10 [b3,b4,b5]@2 [c#4,c#5,c#6] ~, ~@8 e5 ~@23]/2", // E B C# E C# B C# E …
  AE: "[c#4,e4,g#4,c#5,e5,g#5] ~@5 [a3,c#4,e4,a4,c#5,e5]@2 ~@6 [f#3,a3,c#4,f#4,a4,c#5]@2", // C#m A F#m
  AF: "~@8 [b4,b5] [c#5,c#6] [e5,e6] ~ [g#5,g#6] [f#5,f#6] [e5,e6] [c#4,c#5,c#6]", // B C# E G# F# E C#
  AG: "[e4,e5,e6]@6 [b3,b4,b5] [c#4,c#5,c#6] [e4,e5,e6]@2 [c#4,c#5,c#6] [b3,b4,b5] [c#4,c#5,c#6]@2 [e4,e6]@2, ~@14 e5 ~", // E B C# E C# B C# E
  AH: "~@8 [b3,b4,b5]@2 [c#4,c#5,c#6] ~ [g#3,g#4,g#5]@2 [b3,b4,b5] ~", // B C# G# B
  AI: "[e3,e4,g#4,e5,g#5]@3 ~@3 [a3,c#4,a4,c#5,a5]@3 ~@5 [c#4,f#4,a4,c#5,f#5,a5,c#6]@2", // E A F#m
  AJ: "~@6 [b3,f#4,f#5,b5]@3 ~@3 [b3,f#4,b4,f#5,b5] ~@3, ~@6 b4 ~@9", // B5
  AK: "[e4,e5,e6]@5 ~ [b3,b4,b5] [c#4,c#5,c#6] [e4,e5,e6]@2 [c#4,c#5,c#6] [b3,b4,b5] [c#4,c#5,c#6]@2 [e4,e5,e6]@2", // E B C# E C# B C# E
  AL: "~@12 [b3,b4,b5]@2 [c#5,c#6] ~", // B C#
  AM: "[e4,g#4,e5,g#5]@2 ~@4 [a3,c#4,e4,a4,c#5,e5]@3 ~@5 [f#3,a3,c#4,f#4,a4,c#5]@2", // E A F#m
  AN: "[e4,e5,e6]@5 ~ [b3,b4,b5] [c#4,c#5,c#6] [e4,e5,e6]@2 [c#4,c#5,c#6] [b3,b4,b5] [c#4,c#5,c#6]@2 [e4,e6]@2, ~@14 e5 ~", // E B C# E C# B C# E
  AO: "~@8 [b3,b4] ~ [c#4,c#5,c#6] ~ [g#3,g#5]@2 [a3,a4,b4,b5] ~, ~@8 b5@2 ~@2 g#4 ~@3", // B C# G# Asus2
  AP: "[e3,e4,e5] ~@2 [a3,c#4,a4,c#5,a5] ~@3 [f#3,c#4,f#4,a4,c#5,f#5,a5]", // E A F#m
  AQ: "~@8 [f#3,f#4,f#5] [g#3,g#4,g#5] [b3,b4,b5] ~@5", // F# G# B
})).s("gm_string_ensemble_1").gain(0.24)

// other · orchestral harp · "HARP"
const orchestral_harp = note("<~@8 A ~@23 B C ~@6 D E ~@24 F G ~@6 H I ~@11 J K ~@31>".pickRestart({
  A: "~@7 [d4,e4] [f4,g4] [a4,b4] [c5,d5] [e5,f5,g5] [a5,b5] [c6,d6,e6] [f6,g6] [a6,b6]", // Dsus2 Fsus2 Asus2 Csus2 Em Asus2 C Fsus2 …
  B: "~@10 [b4,c5] d5 [e5,f5] [g5,a5] [b5,c6] [d6,e6,f6]", C: "[g6,a6] ~@15",
  D: "~@11 [c5,d5] e5 [f5,g5] [a5,b5] [c6,d6,e6]", E: "[f6,g6] a6 ~@14", F: "~@10 b4 c5 d5 [e5,f5] [g5,a5] [b5,c6,d6]",
  G: "[e6,f6,g6] a6 ~@14", H: "~@13 c5 [d5,e5] [f5,g5,a5,b5]", I: "[c6,d6,e6,f6] [g6,a6] ~@14",
  J: "~@11 [b4,c5] [d5,e5] [f5,g5] [a5,b5,c6] [d6,e6,f6]", K: "[g6,a6,b6] ~@15",
})).s("gm_orchestral_harp").gain(0.31)

// chords · pad halo · "SYNTH PAD"
const pad_halo = note("<~@49 A B C@2 D E@2 F G@8 H@2 ~@12 I@6 J@3 ~@32>".pickRestart({
  A: "[b3,e4,g4]", B: "[a3,d4,f#4]", C: "[g3,b3,e4]/2", D: "[b3,e4,g4]@15 ~", E: "[[d4,f#4] [c4,e4], a3@31 ~]/2",
  F: "[f#3,b3,d4]", // Bm
  G: "[~@6 [g3,c4,e4]@3 ~ [f#3,b3,d4]@3 ~@5 g3@30 [b3,d4,f#4]@22 [c4,e4,g4]@3 ~ [b3,d4,f#4]@3 [a3,c4,e4,g4]@18 ~ [a3,b3,d4]@31 ~, ~@13 e4@34 ~@48 f#4@31 ~@2, ~@14 a3@55 ~@59, ~@7 c4@16 ~@41]/8", // C Bm C Bm Am7 Bm7
  H: "[[a3,d4,e4,a4]@13 ~ [b3,e4,f#4,b4]@18]/2", // Asus4 Bsus4
  I: "[b3@16 ~@16 a3@15 ~ e4@7 d#4@8 ~@17 c#4@16, [e4,g#4] f#4 [e4,g#4], ~ c#4@2 b3@2 ~]/6", // E
  J: "[a3@15 ~ e4@21 d#4@10 ~, f#4, ~@16 b3@31 ~]/3",
})).s("gm_pad_halo").gain(0.36)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  ~@36 A ~ B ~ C ~@11 D@8 ~@10 E F G H I J K L M ~@2 N O P Q R ~ S T U V W X Y Z AA AB ~@3 AC AD AE AF AG AH AI AJ AK AL
  AM AN ~ AO AP AQ AR AS AT AU
>`.pickRestart({
  A: "~@8 g#5!2 f#5 ~ f#5 ~ f#5 ~", B: "~@12 f#4 g#4 ~ g#4", C: "~@9 f#4 g#4 ~ g#4 ~ f#4 g#4",
  D: "[e3 b2 d3 b2 e3 b2 ~ e3 ~ b2 d3 b2 g3 [b2,g3] [d3,e3] b2 ~@112, ~@5 d#3@59]/8", E: "~@9 b2 b3 ~ b3 ~ b3 ~",
  F: "~@2 g#3 f#3 e3 ~@11", G: "~ c#3 ~ e3 ~ e3 ~@6 g#3 f#3 ~ e3", H: "~@6 a2 ~@8 a3",
  I: "f#3 ~ f#3 ~@6 b3 ~ b3 b2!2 g#3 ~", J: "e3 ~@5 a3 ~@9", K: "~@2 f#3 ~ f#2 f#3 ~ b2 ~ b2 b3 ~ g#3 f#3 e3 g#3",
  L: "~ [d3,e3] ~@12 f#2 ~", M: "~@2 f#3 ~@6 b2 g#3 [f3,f#3] e3 c#3 ~ e3", N: "[c#5,e5]!2 ~ [c#5,e5] ~@10 c#5 ~",
  O: "[c#5,e5] [a4,c#5] ~ [a4,c#5] ~@12", P: "e5 ~@15", Q: "[c#5,e5]!2 ~ [c#5,e5] ~@12",
  R: "[c#5,e5]!2 ~ [c#5,e5] ~@6 c#5 ~ c#5 [c#5,e5] ~ [c#5,e5]", S: "~@4 b3 ~ b3!2 b2 b3 ~ b3 ~ g#3 f#3 e3",
  T: "e3 ~@9 c#5!2 ~ c#5 b4 ~", U: "~@9 b4 c#5 e5 ~@4", V: "~@10 c#5!2 ~ c#5 b4 ~",
  W: "~@8 [g#4,c#5] [f#4,b4] ~@3 f#4 g#4 c#5", X: "~@12 b4 c#5 e5 ~", Y: "~@7 [c#5,e5] ~ [c#5,e5] c#5 ~@3 c#5 b4",
  Z: "~ c#5 ~ c#5 ~@12", AA: "~@9 c#4 e4 g#4 b4 e5 c#5 b4", AB: "c#5 b4 ~ b4 ~@12", AC: "~@10 c#5 ~@2 b4 ~@2",
  AD: "~@9 b5 [g5,g#5] e5 g#5 e5 c#5 e5", AE: "~ e5 ~ c#5 e5 ~@11",
  AF: "~ [b4,e5] ~@2 [g#4,c#5]@2 [f#4,b4] ~@2 [e4,g#4] ~@2 f#4 ~ e4 ~", AG: "~ g#4 [e4,g#4] g#4 ~@12",
  AH: "~ e5 c#5 b4 c#5 b4 ~@6 g#4 f#4 e4 g#4", AI: "~@15 [e4,e5]",
  AJ: "~ [e4,e5] [c#4,c#5] ~@5 e5!2 c#5 ~ b4 ~ g#4 f#4", AK: "e4 ~@15", AL: "~@2 a4!3 ~ g#4!3 ~ f#4!3 ~ e4 f#4",
  AM: "g#4 ~ b4 ~@6 e5 c#5 b4 e5 c#5 ~ f#5", AN: "~@2 e5 ~ c#5 b4 ~ g#4 ~ f#4 e4 c#4 e4 f#4 g#4 ~",
  AO: "~@9 b3 ~ b3 b2 g#3 f#3 e3", AP: "~@14 [f#2,f#3] ~", AQ: "~@9 b3 ~@2 g#3 ~ f#3 ~", AR: "e3 ~@15",
  AS: "~@14 b4 [b4,e5]", AT: "[b4,e5] ~ [c#5,e5] ~@3 [b4,e5]@4 [c#5,e5] ~@5, ~@6 c#5 ~@9",
  AU: "~@9 b4 c#5 e5 c#5 b4 ~@2",
})).s("gm_electric_guitar_jazz").gain(0.31).pan(0.8)

// chords · piano · "A.PIANO"
const piano = note(`<
  ~ A B C D E F G H I@2 J@2 K@2 L@2 M@2 N@2 O@2 P@2 Q@2 R@2 S@2 T@2 U V W X U Y Z AA M@2 AB@2 AC@2 AD@2 AE AF AG@2 AE AF
  AH AI AJ@2 AK AI AL@2 AM@2 AN@2 AO AP AO AQ AR AS AO AT AO AU AO AV AW AX AY AZ BA BB BC BD BE BF@2 P@2 BG@2 P@2 AC@2
  BH@2 BI@2 BJ@2 AC@2 R@2 BK@2 BL@2 AC@2 BM@2 AC@2 BN@2
>`.pickRestart({
  A: "[b3,e4,g#4] ~@2 [c#4,e4,a4] ~ [c#4,e4] ~ [a3,c#4,f#4], ~@10 a4 ~@5", B: "~@8 [b3,d#4,f#4]@3 ~ [b3,d#4,f#4]@2 ~@2",
  C: "[b3,e4,g#4]@2 ~@4 [c#4,e4,a4]@2 ~@2 [c#4,e4,a4] ~@3 [a3,c#4,f#4] ~", // E A F#m
  D: "~@2 [c#4,e4,a4] ~@3 [a3,c#4,f#4] ~@3 [d#4,f#4,b4]@5 ~", // A F#m B
  E: "[b3,e4,g#4]@2 ~@4 [c#4,e4,a4]@2 ~@2 [e4,a4] ~@3 [a3,c#4,f#4]@2, ~@5 c#4 ~@2", // E A A5 F#m
  F: "~@8 [b3,d#4,f#4]@2 ~@2 [d#4,f#4] ~@3, ~@6 b3 ~", // B D#m
  G: "[b3,e4,g#4] ~@2 [c#4,e4,a4] ~ [c#4,e4] ~ [c#4,f#4], ~@10 a4 ~@3 a3 ~", // E A C#m F#5
  H: "~@2 [e4,a4] ~@3 [a3,c#4,f#4] ~@3 [b3,d#4,f#4]@4 ~@2, ~ c#4 ~@6", // A5 F#m B
  I: "[[b3,e4,g#4]@5 ~ [c#4,e4,a4]@7 ~ [a3,c#4,f#4]@9 ~ [b3,d#4,f#4]@6 ~@2]/2", // E A F#m B
  J: "[[b3,e4,g#4]@4 ~@2 [c#4,e4,a4]@6 ~@2 [a3,c#4,f#4]@9 ~ [b3,d#4,f#4]@2 ~@2 [d#4,f#4] ~@3, ~@14 b3 ~]/2", // E A F#m B D#m
  K: "[[b3,e4,g#4]@5 ~ [c#4,e4,a4]@7 ~ [a3,c#4,f#4]@9 ~ [b3,d#4,f#4]@7 ~]/2", // E A F#m B
  L: "[[b3,e4,g#4]@5 ~ [c#4,e4,a4]@6 ~@2 [a3,c#4,f#4]@8 ~@2 [b3,d#4,f#4]@2 ~@2 [b3,d#4,f#4] ~@3]/2", // E A F#m B
  M: "[[b3,e4,g#4]@5 ~ [c#4,e4,a4]@7 ~ [c#4,f#4,a4]@8 ~@2 [d#4,f#4,b4]@6 ~@2]/2", // E A F#m B
  N: "[[b3,e4,g#4]@5 ~ [c#4,e4,a4]@7 ~ [c#4,f#4,a4]@7 ~@3 [d#4,f#4,b4]@3 ~ [f#4,b4] ~@3, ~@14 d#4 ~]/2", // E A F#m B B5
  O: "[[b3,e4,g#4]@4 ~@2 [c#4,e4,a4]@7 ~ [c#4,f#4,a4]@8 ~@2 [d#4,f#4,b4]@6 ~@2]/2", // E A F#m B
  P: "[[b3,e4,g#4]@5 ~ [c#4,e4,a4]@7 ~ [c#4,f#4,a4]@8 ~@2 [d#4,f#4,b4]@2 ~@2 [f#4,b4] ~@3, ~@14 d#4 ~]/2", // E A F#m B B5
  Q: "[[b3,e4,g#4]@4 ~@2 [c#4,e4,a4]@7 ~ [c#4,a4]@9 ~ [d#4,f#4,b4]@6 ~@2, ~@14 f#4@7 ~@11]/2", // E A F#m B
  R: "[[b3,e4,g#4]@5 ~ [c#4,e4,a4]@7 ~ [c#4,f#4,a4]@8 ~@2 [d#4,f#4,b4]@2 ~@2 [d#4,f#4,b4] ~@3]/2", // E A F#m B
  S: "[[b3,g#4]@4 ~@2 [c#4,e4,a4]@7 ~ [c#4,f#4,a4]@8 ~@2 [d#4,f#4,b4]@6 ~@2, e4 ~@15]/2", // E A F#m B
  T: "[[b3,e4,g#4]@5 ~ [c#4,e4,a4]@7 ~ [c#4,f#4,a4]@7 ~@3 [d#4,f#4,b4]@2 ~@2 [d#4,f#4,b4] ~@3]/2", // E A F#m B
  U: "[b3,e4,g#4] ~@2 [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,f#4,a4]", // E A F#m
  V: "~@6 [c#4,f#4,a4] ~ [d#4,b4]@2 ~@2 [d#4,f#4,b4] ~@3, ~@8 f#4 ~@7", // F#m G#m B
  W: "[b3,e4,g#4]@2 ~@4 [c#4,a4]@2 ~@2 [e4,a4] ~@3 [a3,c#4,f#4] ~, ~@6 e4 ~@3 c#4@2 ~@4", // E F#m A5 F#m
  X: "~@2 [c#4,e4,a4] ~@3 [a3,c#4] ~@3 [b3,d#4,f#4]@5 ~, ~@3 f#4 ~@4", // A B
  Y: "~@6 [c#4,f#4,a4] ~ [d#4,b4]@2 ~@2 [f#4,b4] ~@3, ~@8 f#4 ~@3 d#4@2 ~@2", // F#m G#m B5
  Z: "[b3,e4,g#4]@2 ~@4 [c#4,a4]@2 ~@2 [c#4,e4,a4]@2 ~@2 [c#4,f#4,a4] ~, ~@6 e4 ~@9", // E F#m A F#m
  AA: "~@2 [c#4,e4,a4] ~@3 [c#4,f#4] ~@3 [d#4,f#4,b4]@4 ~@2, ~@3 a4 ~@4", // A F#5 B
  AB: "[[b3,e4,g#4]@5 ~ [c#4,e4,a4]@7 ~ [c#4,f#4,a4]@7 ~@3 [d#4,f#4,b4]@5 ~@3]/2", // E A F#m B
  AC: "[[b3,e4,g#4]@5 ~ [c#4,e4,a4]@7 ~ [c#4,f#4,a4]@9 ~ [d#4,f#4,b4]@6 ~@2]/2", // E A F#m B
  AD: "[[b3,e4,g#4]@5 ~ [c#4,e4,a4]@7 ~ [c#4,f#4,a4]@8 ~@2 [d#4,f#4,b4]@2 ~@2 [d#4,f#4,b4]@2 ~@2]/2", // E A F#m B
  AE: "[b3,e4,g4]@15 ~", AF: "[a3,d4,f#4]@15 ~", AG: "[[b3,e4,g4]@29 ~@3]/2", AH: "[a3,c4,e4]@15 ~",
  AI: "[a3,b3,d4,f#4]@15 ~", AJ: "[[a3,b3,d4,f#4]@5 ~ [g3,c4,e4]@2 ~@2 [a3,b3,d4,f#4]@2 ~@2 [g3,a3,c4,e4]@17 ~]/2",
  AK: "[g3,a3,c4,e4]@15 ~", // Am7
  AL: "[[a3,b3,d4,f#4]@5 ~ [g3,c4,e4]@2 ~@2 [d4,f#4]@2 ~@2 [g3,a3,c4,e4]@17 ~, ~@10 [a3,b3] ~@21]/2", // Bm7 C D Am7 Asus2
  AM: "[[a3,b3,d4,f#4]@7 ~]/2", AN: "[[a3,d4,e4,a4]@11 ~@3 [b3,e4,f#4,b4]@15 ~@3]/2",
  AO: "[b3,e4,g#4] ~@2 [c#4,e4,a4] ~@3 [c#4,f#4,a4]", AP: "~@8 [d#4,f#4,b4]@5 ~@3",
  AQ: "~@8 [d#4,f#4] ~@3 [d#4,b4]@2 ~@2, ~@8 b4@2 ~@2 f#4 ~@3", AR: "[b3,e4,g#4] ~@5 [c#4,e4,a4]@2 ~@6 [c#4,f#4,a4]@2",
  AS: "~@8 [d#4,f#4,b4]@3 ~@5", AT: "~@4 [d#4,f#4,b4] ~ [d#4,f#4,b4] ~",
  AU: "~@8 [d#4,f#4,b4]@2 ~@2 [f#4,b4] ~@3, ~@6 d#4 ~", AV: "~@8 [d#4,f#4,b4]@2 ~@2 [d#4,f#4,b4] ~@3",
  AW: "[b3,e4,g#4]@7 ~", AX: "[b3,c#4,e4,g#4]@7 ~",
  AY: "[a3,c#4]@10 ~@2 c#4@2 e4 ~, f#3@15 ~, [e4,f#4]@3 ~, ~@10 a3@5 ~", AZ: "[f#3,b3,d#4,f#4]@15 ~",
  BA: "[b3,e4,g#4]@7 ~, g#3", BB: "[b3,c#4,e4,g#4]@7 ~, e3 ~@3", BC: "[f#3,a3,c#4,e4,f#4]@13 ~@3",
  BD: "[b3,c#4]@10 ~@2 b3@2 [c#4,f#4] ~, [e4,f#4]@12 c#4 ~@3, ~@5 f#3@2 ~", // Bsus2 F#5 Esus2
  BE: "[f#3,b3,c#4]@5 ~@3 [f#3,b3,d#4,f#4]@6 ~@2, [e4,f#4]@7 ~@9", // F#sus4 B Esus2
  BF: "[[b3,e4,g#4]@5 ~ [c#4,e4,a4]@7 ~ [c#4,f#4,a4]@9 ~ [b3,d#4,f#4]@7 ~]/2", // E A F#m B
  BG: "[[b3,e4,g#4]@5 ~ [c#4,e4,a4]@7 ~ [c#4,f#4,a4]@7 ~@3 [d#4,f#4,b4]@7 ~]/2", // E A F#m B
  BH: "[[b3,e4,g#4]@5 ~ [c#4,e4,a4]@7 ~ [c#4,f#4,a4]@8 ~@2 [d#4,f#4,b4]@2 ~@2 [d#4,b4]@2 ~@2, ~@28 f#4 ~@3]/2", // E A F#m B G#m
  BI: "[[b3,e4,g#4]@4 ~@2 [c#4,e4,a4]@7 ~ [c#4,f#4,a4]@9 ~ [d#4,f#4,b4]@6 ~@2]/2", // E A F#m B
  BJ: "[[b3,e4,g#4]@5 ~ [c#4,e4,a4]@7 ~ [c#4,f#4,a4]@8 ~@2 [d#4,f#4,b4]@3 ~ [f#4,b4] ~@3, ~@14 d#4 ~]/2", // E A F#m B B5
  BK: "[[b3,e4,g#4]@5 ~ [c#4,e4,a4]@7 ~ [c#4,f#4,a4]@9 ~ [d#4,f#4,b4]@7 ~]/2", // E A F#m B
  BL: "[[b3,e4,g#4]@4 ~@2 [c#4,e4,a4]@7 ~ [c#4,f#4,a4]@8 ~@2 [d#4,f#4,b4]@2 ~@2 [f#4,b4] ~@3, ~@14 d#4 ~]/2", // E A F#m B B5
  BM: "[[b3,e4,g#4]@5 ~ [c#4,e4,a4]@7 ~ [c#4,f#4,a4]@8 ~@2 [d#4,f#4] ~@3 [d#4,b4]@2 ~@2, ~@24 b4@2 ~@2 f#4 ~@3]/2", // E A F#m D#m G#m
  BN: "[[b3,e4,g#4]@4 ~@2 [c#4,e4,a4]@7 ~ [c#4,f#4,a4]@7 ~@3 [d#4,f#4] ~@3 [d#4,f#4,b4]@2 ~@2, ~@12 b4 ~@3]/2", // E A F#m D#m B
})).s("gm_piano").gain(0.36).pan(0.3)
// … 197 more lines

More by Four Tops