Strudelify

La Cucaracha

Last

KeyD minorTempo156 bpm
0:00/0:00
// La Cucaracha — Last
// 156 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 108 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(156/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.

// chords · piano · "A.PIANO"
const piano = note(`<
  A B C D E F G H I J@2 K L@2 K J@3 A L@4 M J N K L@2 K I J@3 L K L O J@4 K L@3 J@4 L@4 P Q R S T U@2 V S Q W X U@4 Y X
  Z AA AB U AB AC Y@3 U@4 AD AE J@3 L@4 AF AG@2 AH AI AJ@3 AK AL ~ AM@2 ~
>`.pickRestart({
  A: "~@4 [b3,d4,g4] ~@7 [b3,d4] ~@3, ~@6 g4 ~", B: "~@4 [b3,e4] ~@7 [b3,e4,g4]@2 ~@2, ~@2 g4 ~@5",
  C: "~@4 [a3,c4]@2 ~@6 [a3,c4,e4] ~@3, ~@4 e4 ~@11", D: "~@4 [d4,gb4] ~@7 [a3,gb4]@2 ~@2, ~@4 a3@2 ~@6 d4 ~@3",
  E: "~@4 [b3,g4]@2 ~@6 [b3,d4,g4] ~@3, ~@4 d4 ~@11", F: "~@4 [b3,g4] ~@7 [b3,e4,g4] ~@3, ~@2 e4 ~@5",
  G: "~@4 [a3,c4,e4] ~@7 [a3,c4,e4] ~@3", H: "[a3,d4,gb4]@3 ~@13, b3 ~@15",
  I: "~@4 [b3,d4] ~@7 [b3,d4,g4] ~@3, ~@2 g4 ~@5", J: "~@4 [b3,d4,g4] ~@7 [b3,d4,g4] ~@3",
  K: "~@4 [d4,gb4] ~@7 [a3,d4,gb4] ~@3, ~@2 a3 ~@5", L: "~@4 [a3,d4,gb4] ~@7 [a3,d4,gb4] ~@3", M: "[b3,d4,g4] ~@7",
  N: "~@4 [b3,d4,g4] ~@7 [b3,d4,g4]@2 ~@2", O: "~@4 [a3,d4,gb4]@2 ~@6 [a3,d4,gb4] ~@3",
  P: "[b3,d4,g4]@6 ~@2 [a3,c4,f4]@7 ~", Q: "~@2 [bb3,d4,f4] ~@3 [d4,f4] ~, ~@12 bb3 ~@3",
  R: "~@2 [d4,f4] ~@3 [d4,f4] ~, ~@4 bb3 ~@7 bb3 ~@3", S: "~@4 [bb3,d4] ~@7 [bb3,d4] ~@3, ~@2 f4 ~@3 f4 ~",
  T: "~@4 [a3,c4,f4]@2 ~@6 [a3,c4,f4] ~@3", U: "~@4 [a3,c4,f4] ~@7 [a3,c4,f4] ~@3",
  V: "~@4 [a3,c4] ~@7 [a3,c4,f4] ~@3, ~@2 f4 ~@5", W: "~@4 [bb3,d4] ~@7 [bb3,f4] ~@3, ~@2 f4 ~@3 d4 ~",
  X: "~@4 [bb3,d4,f4]@2 ~@6 [bb3,d4,f4] ~@3", Y: "~@4 [bb3,d4,f4] ~@7 [bb3,d4,f4] ~@3",
  Z: "~@4 [bb3,f4] ~@7 [d4,f4]@2 ~@2, ~@4 d4@2 ~@6 bb3 ~@3", AA: "~@4 [c4,f4]@2 ~@6 [a3,c4,f4] ~@3, ~@4 a3 ~@11",
  AB: "~@4 [a3,c4,f4] ~@7 [a3,c4] ~@3, ~@6 f4 ~", AC: "~@4 [bb3,d4] ~@7 [bb3,d4,f4] ~@3, ~@2 f4 ~@5",
  AD: "~@4 [bb3,f4]@2 ~@6 [bb3,d4,f4] ~@3, ~@4 d4 ~@11", AE: "[bb3,d4,f4] ~@3 [a3,c4,d4,gb4]@3 ~",
  AF: "~@4 [b3,d4,g4] ~@7 [bb3,eb4,g4]@2 ~@2", AG: "~@4 [c4,eb4,ab4] ~@7 [c4,eb4,ab4] ~@3",
  AH: "~@4 [c4,ab4]@2 ~@6 [c4,eb4,ab4] ~@3, ~@4 eb4 ~@11", AI: "~@4 [bb3,eb4] ~@7 [bb3,eb4] ~@3, ~@2 g4 ~@3 g4 ~",
  AJ: "~@4 [bb3,eb4,g4] ~@7 [bb3,eb4,g4] ~@3", AK: "~@2 [ab3,c4,f4] ~@3 [ab3,c4,f4] ~", AL: "[bb3,db4,f4] ~",
  AM: "[~@8 eb5@5 f5 ~ ab5@4 ~@5 [ab3,c4,eb4,ab4]@2 ~@4 [ab3,c4,eb4,ab4]@2, ~@7 g5 ~@8]/2", // Ab
})).s("gm_piano").gain(0.4)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  A B C D E F G H I J K L M N O P Q R I M L S T U I V W S O S X I J I L@2 O@2 Y Z J K T@2 AA AB X AC AD K AE O AF AG AH
  AI@2 AJ AK AL AM AN AO AP AQ AR AN AS@3 AT AU AV AW AX AY AX AZ BA AU AV AY AX BB AX BC BD BE BF BG AB L O AB BH BI BJ
  BK BL BM BN BO BP BQ ~@2 BR ~
>`.pickRestart({
  A: "g1@4 ~@2 g1 ~ g1@6 ~@2", B: "e1@4 ~@2 e1 ~ e1@7 ~", C: "a1@4 ~@2 a1 ~ a1@6 ~@2", D: "d2 ~@3 d2@4 e2@4 gb2@3 ~",
  E: "g2@5 ~ g2 ~ g2@8", F: "e2@4 ~@2 e2 ~ e2@8", G: "a1@4 ~@2 a1 ~ a1@7 ~", H: "d2@5 ~@11", I: "g2@4 ~@2 g2 ~ d2@7 ~",
  J: "g2@5 ~ g2 ~ d2@6 ~@2", K: "g2@4 ~@2 g2 ~ d2@3 ~ g2@3 ~", L: "a2@5 ~ a2@2 d2@6 ~@2", M: "a2@5 ~ a2 ~ d2@6 ~@2",
  N: "a2@2 ~ a2 d2@3 ~", O: "a2@5 ~ a2@2 d2@7 ~", P: "g2@4 gb2@3 ~ e2@3 ~ d2@4", Q: "g2@4 ~@2 g2@2 d2@7 ~",
  R: "g2@5 ~ g2@2 d2@6 ~@2", S: "a2@4 ~@2 a2 ~ d2@8", T: "a2@4 ~@2 a2 ~ d2@7 ~", U: "g2@3 ~@13",
  V: "g2@5 ~ g2@2 d2@4 g2@4", W: "a2@5 ~ a2@2 d2@8", X: "g2@4 gb2@4 e2@3 ~ d2@3 ~", Y: "g2@4 ~@2 g2@2 d2@2 ~@2 d2@3 ~",
  Z: "g2@7 ~ d2@5 ~ d2 ~", AA: "a2@5 ~ a2 ~ d2@7 ~", AB: "a2@4 ~@2 a2@2 d2@7 ~", AC: "g2@5 ~@3 d2@7 ~",
  AD: "g2@5 ~ g2 ~ d2@7 ~", AE: "a2@4 d2@2 ~ d2", AF: "a2@2 ~ a2 d2@4", AG: "a2@4 d2@4 e2@3 ~ gb2@3 ~",
  AH: "g2@3 ~ f2@4", AI: "bb1@4 ~@2 bb1 ~ f1@4 g1@3 ~", AJ: "bb1@4 ~@2 bb1 ~ f1@4 bb1@3 ~",
  AK: "c2@4 ~@2 c2@2 f1@3 ~@3 f1@2", AL: "c2 f1", AM: "c2@4 ~@2 c2 ~ f1@8", AN: "c2@5 ~ c2@2 f1@8",
  AO: "bb1 a1 g1 f1, ~@4 bb1 ~@11", AP: "bb1@4 ~@2 bb1 ~ f1@8", AQ: "bb1@3 ~@3 bb1 ~ f1@8",
  AR: "bb1 ~@5 bb1@2 f1@3 ~ g1@2 ~@2", AS: "c2@2 ~ c2 f1@4", AT: "bb1@4 a1@4 g1@4 f1@3 ~, ~@4 bb1 ~@11",
  AU: "bb1@5 ~@3 f1@5 ~@3", AV: "bb1@4 ~@2 bb1 ~ f1@6 ~@2", AW: "c2@3 ~ f1@3 ~", AX: "c2@2 ~ c2 f1@3 ~",
  AY: "c2@5 ~@3 f1@5 ~@3", AZ: "bb1@6 ~@2 f1@5 ~@3", BA: "bb1@4 ~@2 bb1 ~ f1@3 ~ g1@3 ~", BB: "c2@6 ~@2 f1@5 ~@3",
  BC: "bb1@5 ~@3 f1@6 ~@2", BD: "bb1@3 ~ d2@3 ~", BE: "g2@4 ~@2 g2 ~ d2@6 ~@2", BF: "g2@4 ~@2 g2 ~ d2@4 e2@4",
  BG: "g2@4 ~@2 g2 ~ d2@4 g2@4", BH: "g2@8 eb2@7 ~", BI: "ab2@4 ~@2 ab2 ~ eb2@7 ~", BJ: "ab2@5 ~ ab2 ~ eb2@4 f2@3 ~",
  BK: "ab2@4 ~@2 ab2 ~ eb2@4 ab2@3 ~", BL: "bb2@4 ~@2 bb2 ~ eb2@7 ~", BM: "bb2@4 ~@2 bb2@2 eb2@7 ~",
  BN: "bb2@4 ~@2 bb2 ~ eb2@8", BO: "bb2@4 ~@2 bb2 ~ eb2@5 ~@3", BP: "f2@6 ~@2 f2@7 ~", BQ: "bb1@5 ~@11",
  BR: "~@4 ab1 ~@2 ab1",
})).s("gm_electric_bass_finger").gain(0.5)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A@8 B@7 C@4 D@5 E@2 F@4 G@4 F@4 H I@7 J@8 K@4 L@4 M@4 N@4 O P@6 Q@8 R@2 S@7 T U@3 V@4 W@2 ~@4
>`.pickRestart({
  A: "[d4@16 ~@16 c4@14 ~@2 gb4@15 ~@41 g4@6 ~@2 [d4,gb4]@4 ~@12, [b3,g4]@31 ~ a3@29 ~@3 g4@32 c4@13 ~@19, ~@8 e4@16 d4@16 e4@15 ~@9, ~@32 b3@15 ~ a3@10 ~@6]/8", // D Em
  B: "[[b3,g4]@45 ~@3 [a3,gb4]@63 ~, d4]/7", C: "[[b3,g4]@61 ~@3]/4", D: "[gb4@64 [b3,g4]@7 ~@9, d4@9 ~, a3@61 ~@19]/5",
  E: "[[b3,d4,g4]@29 ~@3]/2", F: "[[a3,d4,gb4]@31 ~]/4", G: "[[b3,d4,g4]@31 ~]/4", H: "[b3,d4,g4] ~@3",
  I: "[b3@47 ~ gb3@62 ~@2, d4@55 ~, g3@45 ~@2 a3@62 ~@3]/7", J: "[b3@32 [gb3,a3]@31 ~, d4@63 ~, g3@61 ~@67]/8",
  K: "[[g3,b3,d4]@4 ~@4 c4@8 [bb3,d4]@45 ~@3, ~@8 f4@53 ~@3, ~@4 a3@3 ~@25]/4", L: "[[a3,c4,f4]@61 ~@3]/4",
  M: "[[bb3,d4,f4]@61 ~@3]/4", N: "[[a3,c4,f4]@31 ~]/4", O: "[bb3,d4,f4]@3 ~", P: "[[bb3,d4]@15 ~ [a3,c4]@32, f3]/6",
  Q: "[[bb3,d4] ~@3 [bb3,d4]@59 ~ c4@61 ~@3, f3 f3@23 ~@8, ~@63 a3@62 ~@3]/8", // Bb
  R: "[[f3,bb3,d4]@21 ~@3 [gb3,a3,d4]@6 ~@2]/2", S: "[b3@46 ~ [gb3,a3]@61 ~@4, d4@27 ~, g3@11 ~@17]/7",
  T: "[g3,b3,d4]@2 ~@2 [g3,bb3,eb4]@3 ~", U: "[[ab3,c4,eb4]@23 ~]/3", V: "[[g3,bb3,eb4]@61 ~@3]/4",
  W: "[c4@16 [bb3,db4]@3 ~@13, f4@5 ~@3, ab3@7 ~@9]/2", // Bbm
})).s("gm_string_ensemble_1").gain(0.15)

// chords · marimba
const marimba = note(`<
  A B C D E F G H I J K L M N O J@3 P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU
  AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV BW BX BY BZ CA CB CC CD CE CF CG CH
  CI CJ CK CL CM CN CO CP CQ CR CS CT CU CV@2 ~@2 CW ~
>`.pickRestart({
  A: "d4@2 ~@2 [b3,d4] ~ b3 c4 ~@2 [g3,b3] ~ [b3,d4]@2 ~@2, b3 ~@5 d4@2 ~@8", // Bm G Bm
  B: "[g3,b3,e4] ~@3 [g3,b3,e4] ~ [g3,b3] ~@3 [g3,b3,e4] ~ [b3,e4]@2 ~@2, ~@6 e4@2 ~@4 g3 ~@3", // Em G Em E5
  C: "[c4,e4] ~@3 [c4,e4] ~ e4@2 ~@2 [a3,c4] ~ [a3,c4] ~@3, ~@6 c4 ~@5 e4@2 ~@2", // C Am
  D: "[a3,d4,gb4] ~@3 [a3,d4,gb4] ~ [a3,d4,gb4]@7 ~@3", // D
  E: "[b3,d4] ~@3 [b3,d4] ~ d4@2 ~@2 g3 b3 [b3,d4] ~ [g3,b3] ~, ~@6 b3 ~@9", // Bm G
  F: "e4@2 ~@2 [g3,b3,e4] ~ [g3,b3,e4] ~@3 [g3,b3,e4] ~ [g3,b3,e4]@2 ~@2, b3 ~@15", // Em
  G: "[c4,e4] ~@3 [c4,e4] ~ e4@2 ~@2 [a3,c4] ~ [a3,c4,e4] ~@3, ~@6 c4 ~@9", H: "[a3,d4,gb4] ~@15",
  I: "[g3,b3,d4] ~@5 [g3,b3] ~@5 [g3,b3,e4] ~@3, ~@3 e4 ~@4", J: "[g3,b3,d4] ~@5 [g3,b3,e4] ~@5 [g3,b3,e4] ~@3",
  K: "[g3,b3]@2 ~@4 [g3,b3,e4] ~@5 [g3,b3,d4] ~@3, d4 ~@15", // G Em G
  L: "[gb3,c4,d4] ~@5 [gb3,c4] ~@5 [gb3,c4] ~@3, ~@6 e4@3 ~@3 e4@2 ~@2", // D7 Gbdim
  M: "[gb3,c4] ~@5 [gb3,c4,e4] ~@5 [gb3,c4,e4] ~@3, d4 ~@7", N: "[gb3,c4,d4] ~@5 [gb3,c4,e4] ~@5 [gb3,c4,e4] ~@3",
  O: "[gb3,c4,d4] ~@5 [gb3,c4,d4] ~@5 [gb3,c4,d4] ~@3", P: "[g3,b3,d4] ~@5 [g3,b3,e4] ~@5 [g3,b3,d4] ~@3",
  Q: "[gb3,c4,d4] ~@5 [gb3,c4] ~@5 [gb3,c4,d4] ~@3, ~@6 e4@3 ~@7", // D7 Gbdim D7
  R: "[gb3,c4,d4] ~@5 [gb3,c4] ~@5 [gb3,c4,d4] ~@3, ~@3 e4 ~@4", // D7 Gbdim D7
  S: "[gb3,c4,d4] ~@5 [gb3,c4,e4] ~@5 [gb3,c4] ~@3, ~@6 e4 ~", T: "[gb3,c4,d4] ~@5 [gb3,c4] d4 ~@4 [gb3,c4,d4] ~@3",
  U: "[g3,b3,d4] ~@15", V: "[b3,d4,g4] ~@5 [b3,d4] ~@5 [g3,b3] ~@3", W: "[b3,d4] ~@5 [g3,b3,d4] ~@5 [g3,b3,d4] ~@3",
  X: "[gb3,a3] ~@5 [a3,d4] ~@5 [a3,d4] ~@3", Y: "[d4,gb4] ~@5 [a3,d4] ~@5 [a3,d4] ~@3",
  Z: "[gb3,a3] ~@5 [a3,d4] ~@5 [g3,a3,d4,gb4] ~@3", AA: "[d4,gb4] ~@5 [d4,gb4] ~@5 [gb3,a3,d4] ~@3, a4 ~@7",
  AB: "[g3,b3] ~@5 [b3,d4] ~@5 [g3,b3] ~@3", AC: "[d4,g4] ~@5 [b3,d4] ~@5 [g3,b3] ~@3",
  AD: "[d3,g3]@2 ~@4 [g3,b3] ~@5 [b3,d4] ~@3", AE: "[d4,g4] ~@5 [g3,b3,d4] ~@5 [d3,g3,b3] ~@3",
  AF: "[gb3,a3] ~@5 [gb3,a3,c4] ~@5 [c4,d4] ~@3", AG: "[d4,gb4] ~@5 [a3,d4] ~@5 [gb3,a3] ~@3",
  AH: "[d4,gb4] ~@5 [a3,d4] ~@5 a3@2 ~@2, ~@12 gb3 ~@3", AI: "[d4,gb4] ~@5 [gb3,a3,d4] ~@5 [gb3,a3] ~@3",
  AJ: "g3@2 ~@8 [b3,d4] ~ [b3,d4] ~ [b3,d4] ~", AK: "[b3,g4] ~ d4 ~ [b3,g4] ~ [d4,b4]@2 ~@3 [b3,d4,e4] d4 b3 d4 b3",
  AL: "g4 b3 [b3,d4] ~ [b3,g4] ~ [d4,b4] ~ [d4,b4] d4 b4 [d4,b4] d4 b4 d4 b4", // Bm Em G
  AM: "d4 ~ [b3,g4] ~@3 [bb3,gb4] ~ [b3,g4] ~ [bb3,gb4] ~ [b3,g4] ~ [b3,ab4] ~", // Em Ebm Em Ebm Em E
  AN: "a4 [c4,a4] c4 a4 c4 [c4,a4] a4 c4 a4 ~ [c4,d4] ~ [c4,d4] ~ [c4,d4] ~", // F Csus2
  AO: "[c4,gb4] ~ [c4,d4] ~ [c4,gb4] ~ [d4,a4] ~@3 [c4,d4] ~ [c4,d4] ~ [c4,d4] ~", // Cdim Csus2 Cdim D5 Csus2
  AP: "[c4,gb4] ~ [c4,d4] ~ [c4,gb4] ~ a4!2 ~ a4 c4 [c4,a4] ~ [c4,a4] a4 [c4,a4], ~@6 c4@3 ~@7", // Cdim Csus2 Cdim F
  AQ: "~@2 gb4@2 ~@2 [g4,e5] ~ [gb4,d5] ~ [e4,c5] ~ [d4,b4] ~ [c4,a4] ~, ~@2 d5 ~@13", // C D C G F
  AR: "[d4,b4]@2 b4 ~ d4@2 g4 b3@2 ~ [b3,d4] ~ [b3,d4] ~ [b3,d4] ~, ~@4 b4 ~@2 c4 ~@8", // G Bm
  AS: "[b3,g4] ~ [b3,d4] ~ [b3,g4] ~ d4@2 ~@2 [b3,d4] ~ [b3,d4] ~ [b3,d4,e4] ~, ~@6 b4 ~@9", // Em Bm Em Bm E7
  AT: "[b3,g4] ~ [b3,d4] ~ [b3,g4] ~ [b3,d4,b4] ~ [d4,b4] b3 [d4,b4] [b3,d4,b4] b3 [d4,b4] b3@2, ~@14 b4 ~", // Em Bm Em Bm G Bm G
  AU: "~@2 [b3,g4]@2 ~@2 [bb3,gb4] ~ [b3,g4] ~ [bb3,gb4] ~ [b3,g4] ~ [b3,ab4] ~", // Em Ebm Em Ebm Em E
  AV: "[c4,a4] a4 c4 a4 c4 [c4,a4] a4 c4@2 ~ [c4,d4] ~ [c4,d4] ~ [c4,d4] ~, ~@7 a4 ~@8", // F Csus2
  AW: "[c4,gb4] ~ [c4,d4] ~ [c4,gb4] ~ a4 [c4,a4] c4 ~ [c4,d4] ~ [c4,d4] ~ [c4,d4] ~", // Cdim Csus2 Cdim F Csus2
  AX: "[c4,gb4] g4 [c4,d4] ~ [c4,gb4] ~ a4 c4 [c4,a4] a4 c4 [c4,a4] a4 c4 [c4,a4] a4", // Cdim Csus2 Cdim F
  AY: "~@2 d5 gb4 ~@2 [g4,e5] ~ [gb4,d5] ~ [e4,c5] ~ [d4,b4] ~ [c4,a4] ~", AZ: "~ b3@2 ~@7 f3@2 ~@2 f3 ~, g4 ~@7",
  BA: "bb3@2 ~@4 [bb3,d4] ~@3 f3 ~ f3 ~ f3 ~, f3 ~@15", BB: "bb3 ~@5 [bb3,d4] ~@5 [e3,a3,db4] ~@3",
  BC: "[f3,bb3,d4] ~@5 [d4,f4] ~@5 [bb3,d4] ~@3", BD: "eb4 ~ c4 ~@3 f3 ~ a3 ~ c4 ~ f4 ~ f3 ~",
  BE: "f3 ~@3 a3 ~ c4 ~@3 f3 ~ f3 ~ f3 ~", BF: "a3 ~@5 c4 a3 c4 a3 [a3,c4] c4 a3 c4 a3 c4",
  BG: "a3 ~ [a3,f4] ~@3 [a3,f4] ~ [a3,f4] ~@3 [a3,c4] ~@3", BH: "[bb3,d4] ~@5 [bb3,d4] ~@3 f3 ~ f3 ~ f3 ~",
  BI: "[f3,bb3] ~@5 [f3,bb3,d4] ~@3 f3 ~ f3 ~ f3 ~", BJ: "[f3,bb3] ~@5 [f3,bb3,d4] ~@5 [e3,a3,db4] ~@3",
  BK: "[f3,bb3,d4] ~@5 [bb3,d4,f4] ~@5 [f4,bb4] d4 ~@2", BL: "[f4,a4] ~ [eb4,g4] ~@3 [c4,eb4] ~@3 f3 ~ a3 ~ c4 ~",
  BM: "a3 ~ f3 ~ a3 ~ c4 ~@3 f3 ~@3 f3 ~", BN: "a3 ~ f3 ~ a3 ~ [f3,c4] ~@3 [f3,f4] ~@3 [f3,f4] ~",
  BO: "~@2 f4 ~@3 g4 ~ f4 ~ eb4 ~ d4 ~ c4 ~", BP: "bb3 ~ g3 ~@3 f3 ~@3 f3 ~ f3 ~ f3 ~",
  BQ: "~@2 d4 ~@5 bb3 ~@3 bb3 ~@3", BR: "g3 ~ f3 ~ g3 ~ bb3 ~@3 d4 ~@5", BS: "~@2 g4 ~@3 f4 ~ g4 ~@2 f4 ~@2 g4 ~",
  BT: "~@2 f4 ~@3 c4 [a3,c4] a3 c4 [a3,c4] a3 [a3,c4] c4 a3 c4", // Am
  BU: "~@2 [f4,a4] ~@3 [f4,a4] ~ [g4,bb4] ~ [f4,a4] ~@3 [eb4,g4] ~", // F Gm F Eb
  BV: "[f4,a4] ~ [f4,a4] ~@3 [eb4,g4] ~@3 [f4,a4] ~@5", BW: "~@4 d5 ~@3 d5 ~ db5 ~ c5 ~ bb4 ~",
  BX: "~@2 f4 ~ g4 ~ f4 ~ bb4 f4 g4 f4 bb4 f4 g4 f4", BY: "d5 ~@3 d5 ~ bb4 ~ f5 ~ d5 ~@3 bb5 ~",
  BZ: "a5 ~ ab5 ~ g5 ~ gb5 ~ f5 ~ d5 ~@3 bb4 ~", CA: "g5 ~@2 f5 ~@2 eb5 ~ c5 ~@2 a4 ~@2 ab4 ~",
  CB: "g4 gb4 f4 eb4 ~ c4 ~ a3 f3 a3 f3 a3 f3 a3 [f3,a3] f3", // F
  CC: "c4 [g3,a3] c4 a3 [a3,c4] c4 a3 f4 c4 [c4,f4] ~ a4 [f4,a4] f4 c5 a4", // Gsus2 Am F5 F
  CD: "c5 a4 [a4,b4,f5] f5 a4 [a4,f5] f5 a4 [a4,f5] f5 a4 f5 [a4,f5] ~ a4 f5", // Bm7b5 Dm
  CE: "~@3 eb5 d5 ~ c5 ~ bb4 ~ g4 ~ f4 ~ g4 ~", CF: "bb4 ~@7 gb4 [d4,gb4] d4 [d4,gb4] ~ [d4,gb4] gb4 d4",
  CG: "g4 b3 ~@10 [b3,c4,d4] ~@3", CH: "[b3,d4] ~@3 [b3,d4] ~ [b3,e4] ~@5 [b3,e4] ~@3",
  CI: "[b3,d4] ~@5 [g3,b3,e4] ~@5 [g3,b3,d4] ~@3", CJ: "[gb3,c4,d4] ~@5 [d4,gb4] ~@3 [d4,gb4] ~ [c4,e4] ~@3",
  CK: "[gb3,c4,d4] ~@5 [gb3,d4,gb4] ~@3 [d4,gb4] ~ [c4,e4] ~@3", // D7 D C
  CL: "[gb3,d4] ~@3 [gb3,d4] ~ [a3,d4,gb4] ~@3 [a3,d4,gb4] ~ [gb3,d4] ~@3", // D
  CM: "~@2 [gb3,d4] ~@3 [gb3,d4] ~ [a3,d4,gb4] ~ gb4 ~ [gb3,d4] ~@3", // D
  CN: "[g3,b3,d4] ~@7 [g3,bb3,eb4] ~ [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~", // G Eb
  CO: "[ab3,c4,eb4] gb4 ~@4 [eb4,ab4] ~@3 [eb4,ab4] ~ [c4,eb4] ~ [c4,eb4] ~", // Ab Ab5 Cm
  CP: "[ab3,c4,eb4] ~ c4 ~ [c4,eb4] ~ [eb4,ab4] ~@3 [eb4,ab4] ~ [f4,ab4] ~@3", // Ab Cm Ab5 Fm
  CQ: "[eb4,ab4] ~@3 [eb4,ab4] ~ [f4,ab4] ~@3 [f4,ab4] ~ [eb4,ab4] ~@3", // Ab5 Fm Ab5
  CR: "~@2 [bb3,eb4] ~@3 [bb3,eb4] ~@3 [bb3,eb4] ~@3 [bb3,eb4] ~", // Eb5
  CS: "[bb3,eb4] ~@3 [bb3,eb4] ~ [bb3,eb4,g4] ~@3 [eb4,g4] ~@3 eb4 ~", // Eb5 Eb
  CT: "[bb3,eb4] ~@3 [bb3,eb4] ~ [bb3,eb4,g4] ~@3 [eb4,g4] ~ [bb3,eb4] ~@3", // Eb5 Eb Eb5
  CU: "[bb3,eb4] ~@3 eb4 ~ [bb3,eb4,g4] ~@3 eb4 ~ [bb3,eb4] ~ eb4 ~", // Eb5 Eb Eb5
  CV: "[~@2 [c4,f4,ab4] ~@3 [c4,f4] ~ [c4,f4,ab4] ~@3 [c4,f4,ab4] ~@3 [bb3,db4,f4,ab4]@3 ~@13, ~@13 gb4@7 ~@12]/2", // Fm F5 Fm Bbm7
  CW: "~@8 [ab3,c4,eb4,ab4] ~@5 [ab3,c4,ab4] ~", // Ab
})).s("gm_marimba").gain(0.35)

// other · trumpet
const trumpet = note(`<
  ~@7 A B ~ C D E ~ F G H ~ C I J ~ F K L M N O P Q R S T U V O W X Y ~@15 Z AA@3 AB AC@2 AD AE AF AG@2 AH AI AJ@2 AK
  ~@15 A AL ~ C I AM ~ AN AO AP ~ AQ AR AS ~ AT AU AV AW ~ AX ~
>`.pickRestart({
  A: "~@10 d4 ~ d4 ~ d4 ~", B: "g4@3 b4 ~@4", C: "~@2 g4 ~@3 gb4 ~ g4@2 gb4 ~ g4@2 ab4@2", D: "a4@8 ~@2 d4 ~ d4 ~ d4 ~",
  E: "gb4@5 ~ a4 ~@9", F: "~@2 d5 ~@3 e5@2 d5@2 c5@2 b4@2 a4@2", G: "b4@7 ~@3 d4 ~ d4 ~ d4 ~", H: "g4@6 b4 ~@9",
  I: "a4@7 ~@3 d4 ~ d4 ~ d4 ~", J: "gb4@5 ~ a4@2 ~@8", K: "g4 ~ d4@4 ~@2 g4@2 ~@2 b4 ~@3", L: "d5@6 b4@9 ~",
  M: "~@2 d5@5 ~ e5@2 d5@2 c5@2 b4@2", N: "c5@3 a4@3 ~@2", O: "~@2 d4@5 ~ gb4 ~@3 a4 ~@3", P: "c5@3 a4@4 ~",
  Q: "~ d5 ~ e5 d5 c5 b4 a4", R: "b4@6 g4@7 ~@3", S: "~@2 d4@2 ~@2 d4 ~ g4 ~ g4 ~ b4@2 ~@2", T: "d5@5 ~ b4@10",
  U: "~@2 d5@5 ~ e5@2 d5@2 c5@2 b4 ~", V: "c5@6 a4@7 ~@3", W: "c5@5 ~ a4@10", X: "~@2 d5@3 ~ e5@2 d5@2 c5@2 b4@2 a4@2",
  Y: "g4 ~@7", Z: "~@6 f4 ~", AA: "[bb4@5 ~ d5@28 ~@2 f5@6 ~@2 d5@2 ~@2]/3", AB: "eb5 ~ d5@2 ~@2 c5 ~@5 f4@3 ~",
  AC: "[a4@5 ~ c5@23 ~@3]/2", AD: "~@2 eb5@4 c5 ~", AE: "d5@2 c5 ~@3 bb4 ~@5 f4@3 ~", AF: "bb4@3 d5@3 f4@2",
  AG: "[bb4@5 ~ d5@12 ~@2 f5@7 ~ d5 ~@3]/2", AH: "eb5 ~ d5@2 ~@2 c5 ~@5 f4@4", AI: "a4@3 c5 ~@2 f4@2",
  AJ: "[a4@5 ~ c5@12 ~@2 eb5@8 c5@2 ~@2]/2", AK: "d5@2 c5@2 ~@2 bb4@5 ~@5", AL: "g4@5 ~ b4 ~@9", AM: "gb4@3 a4 ~@4",
  AN: "~@2 d5 ~@3 e5@2 d5@2 c5@2 b4@2 a4 ~", AO: "b4@6 g4 ~@3 eb4 ~ eb4 ~ eb4 ~", AP: "ab4@6 c5 ~@9",
  AQ: "~@2 ab4 ~@3 g4 ~ ab4@2 g4@2 ab4@2 a4@2", AR: "bb4@8 ~@2 eb4 ~ eb4 ~ eb4 ~", AS: "g4@6 bb4 ~@9",
  AT: "~@2 eb5@3 ~ f5 ~ eb5@2 db5@2 c5@2 bb4@2", AU: "ab4@7 ~", AV: "f4 ~@3 g4 ~@3 ab4 ~@3 bb4 ~@3",
  AW: "c5 ~@3 db5 ~@3 eb5 ~ f5 ~@3 g5 ~", AX: "~@8 ab4 ~@5 ab4 ~",
})).s("gm_trumpet").gain(0.54).pan(0.7)

// drums · kick
const kick = s("bd").struct("<A@7 B A@15 B A@78 B ~@3 C ~>".pickRestart({
  A: "x!2", B: "x", C: "~@4 x ~@2 x",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct("<A@7 B A@15 C A@14 C A@15 C A@15 C A@3 D A@11 C A@7 C A@8 ~ E ~ F ~>".pickRestart({
  A: "~ x ~ x", B: "x", C: "~ x!3", D: "x!2 ~ x", E: "x ~ x ~ x!2 ~ x", F: "~@10 x!3 ~@3",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct(`<
  A B C D E F G H I J G D K F L F K F G F K M L N I E O P I F E F C Q E@7 R S P R E@2 P A E T E S E@3 R E U F@3 E@5 F
  E@3 S R E@14 T E P E@4 D V E@7 H W ~ X ~
>`.pickRestart({
  A: "x!5 ~ x!2", B: "~ x!6 ~", C: "x ~ x ~ x ~@2 x", D: "~ x ~ x!5", E: "x!8", F: "~ x!7", G: "x!3 ~ x!4", H: "x",
  I: "x!5 ~@2 x", J: "~ x ~ x!2 ~ x ~", K: "x ~ x!3 ~@2 x", L: "x ~ x ~ x ~ x!2", M: "~ x ~ x!4 ~", N: "x ~ x ~ x!4",
  O: "x!3 ~ x ~@2 x", P: "x!2 ~ x!5", Q: "~ x ~ x!2 ~ x!2", R: "x ~ x!6", S: "x!6 ~ x", T: "x!3 ~ x!2 ~ x",
  U: "x ~ x ~ x!2 ~ x", V: "x!4 ~ x ~ x", W: "~@4 x!2 ~ x", X: "~@4 x ~@2 x",
})).gain(0.2)

// drums · hihat · soft notes
// … 44 more lines

More by Last