Strudelify
La Cucaracha cover art

Dancing à gogo

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, A@4 for four bars: edit a riff to change every repeat.

// chords · piano · "A.PIANO"
const piano = note(`<
  A B C D A E C F A@3 G@4 A@4 G@4 H A@2 G@4 A@4 G@3 D A@4 G@4 A@4 G@4 I J@2 K L@4 M J K@2 L@4 K J K L@4 K@4 L@4 M N A@3
  G@4 O P@3 Q@4 R S ~ T@2 ~
>`.pickRestart({
  A: "~@4 [b3,d4,g4] ~@7 [b3,d4,g4] ~@3", 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,d4,gb4] ~@3, ~@2 a3 ~@5",
  E: "~@4 [b3,g4] ~@7 [b3,e4,g4] ~@3, ~@2 e4 ~@5", F: "[a3,d4,gb4]@3 ~@13, b3 ~@15",
  G: "~@4 [a3,d4,gb4] ~@7 [a3,d4,gb4] ~@3", H: "[b3,d4,g4] ~@7", I: "[b3,d4,g4]@6 ~@2 [a3,c4,f4]@7 ~",
  J: "~@2 [bb3,d4,f4] ~@3 [d4,f4] ~, ~@12 bb3 ~@3", K: "~@4 [bb3,d4,f4] ~@7 [bb3,d4,f4] ~@3",
  L: "~@4 [a3,c4,f4] ~@7 [a3,c4,f4] ~@3", M: "~@4 [bb3,d4] ~@7 [bb3,d4] ~@3, ~@2 f4 ~@3 f4 ~",
  N: "[bb3,d4,f4] ~@3 [a3,c4,d4,gb4]@3 ~", O: "~@4 [b3,d4,g4] ~@7 [bb3,eb4,g4]@2 ~@2",
  P: "~@4 [c4,eb4,ab4] ~@7 [c4,eb4,ab4] ~@3", Q: "~@4 [bb3,eb4,g4] ~@7 [bb3,eb4,g4] ~@3",
  R: "~@2 [ab3,c4,f4] ~@3 [ab3,c4,f4] ~", S: "[bb3,db4,f4] ~",
  T: "[~@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 C G H@2 I J@4 K L@2 H J@4 M H I J@4 K H@3 J@4 N O H I J@4 K P H I Q J R S T U@2 V W X Y@2 Z AA AB AC Y@4
  AD AE AF AG AH AG AH AE U AE AF AG AH AG AH AE AI H AJ AK J@4 AL AM AN AO AP@3 AQ AR AS ~@2 AT ~
>`.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: "d2@5 ~@11", H: "g2@4 ~@2 g2 ~ d2@7 ~",
  I: "g2@4 ~@2 g2 ~ d2@3 ~ g2@3 ~", J: "a2@5 ~ a2@2 d2@7 ~", K: "g2@4 gb2@4 e2@3 ~ d2@3 ~", L: "g2@4 ~@2 g2@2 d2@7 ~",
  M: "g2@3 ~@13", N: "g2@4 ~@2 g2@2 d2@2 ~@2 d2@3 ~", O: "g2@7 ~ d2@5 ~ d2 ~", P: "g2@5 ~@3 d2@7 ~",
  Q: "a2@4 d2@2 ~ d2", R: "a2@4 ~@2 a2 ~ d2@8", S: "a2@4 d2@4 e2@3 ~ gb2@3 ~", T: "g2@3 ~ f2@4",
  U: "bb1@4 ~@2 bb1 ~ f1@4 g1@3 ~", V: "bb1@4 ~@2 bb1 ~ f1@4 bb1@3 ~", W: "c2@4 ~@2 c2@2 f1@3 ~@3 f1@2", X: "c2 f1",
  Y: "c2@2 ~ c2 f1@4", Z: "bb1 a1 g1 f1, ~@4 bb1 ~@11", AA: "bb1@4 ~@2 bb1 ~ f1@8", AB: "bb1@3 ~@3 bb1 ~ f1@8",
  AC: "bb1 ~@5 bb1@2 f1@3 ~ g1@2 ~@2", AD: "bb1@4 a1@4 g1@4 f1@3 ~, ~@4 bb1 ~@11", AE: "bb1@5 ~@3 f1@5 ~@3",
  AF: "bb1@4 ~@2 bb1 ~ f1@6 ~@2", AG: "c2@5 ~@3 f1@5 ~@3", AH: "c2@2 ~ c2 f1@3 ~", AI: "bb1@3 ~ d2@3 ~",
  AJ: "g2@4 ~@2 g2 ~ d2@4 e2@4", AK: "g2@5 ~ g2@2 d2@4 g2@4", AL: "g2@8 eb2@7 ~", AM: "ab2@4 ~@2 ab2 ~ eb2@7 ~",
  AN: "ab2@5 ~ ab2 ~ eb2@4 f2@3 ~", AO: "ab2@4 ~@2 ab2 ~ eb2@4 ab2@3 ~", AP: "bb2@4 ~@2 bb2 ~ eb2@7 ~",
  AQ: "bb2@4 ~@2 bb2 ~ eb2@5 ~@3", AR: "f2@6 ~@2 f2@7 ~", AS: "bb1@5 ~@11", AT: "~@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@8 ~@8 c4@7 ~@29 g4@3 ~ d4@2 ~@6, [b3,g4]@31 ~ a3@29 ~@3 b3@30 ~@2 a3@20 ~@12, ~@16 e4@31 gb4@15 ~@2 g4@32 c4@13 ~@19, ~@48 d4@32 e4@30 ~ gb4@4 ~@13]/8", // 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 C G H@2 I J K L M H@3 N O@2 L M P Q R S T U V W X Y Z AA AB@2 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@2 ~@2 CQ ~
>`.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", G: "[a3,d4,gb4] ~@15",
  H: "[g3,b3,d4] ~@5 [g3,b3,e4] ~@5 [g3,b3,e4] ~@3", I: "[g3,b3]@2 ~@4 [g3,b3,e4] ~@5 [g3,b3,d4] ~@3, d4 ~@15",
  J: "[gb3,c4,d4] ~@5 [gb3,c4] ~@5 [gb3,c4] ~@3, ~@6 e4@3 ~@3 e4@2 ~@2", // D7 Gbdim
  K: "[gb3,c4] ~@5 [gb3,c4,e4] ~@5 [gb3,c4,e4] ~@3, d4 ~@7", L: "[gb3,c4,d4] ~@5 [gb3,c4,e4] ~@5 [gb3,c4,e4] ~@3",
  M: "[gb3,c4,d4] ~@5 [gb3,c4,d4] ~@5 [gb3,c4,d4] ~@3", N: "[g3,b3,d4] ~@5 [g3,b3,e4] ~@5 [g3,b3,d4] ~@3",
  O: "[gb3,c4,d4] ~@5 [gb3,c4] ~@5 [gb3,c4,d4] ~@3, ~@6 e4@3 ~@7", P: "[g3,b3,d4] ~@15",
  Q: "[b3,d4,g4] ~@5 [b3,d4] ~@5 [g3,b3] ~@3", R: "[b3,d4] ~@5 [g3,b3,d4] ~@5 [g3,b3,d4] ~@3",
  S: "[gb3,a3] ~@5 [a3,d4] ~@5 [a3,d4] ~@3", T: "[d4,gb4] ~@5 [a3,d4] ~@5 [a3,d4] ~@3",
  U: "[gb3,a3] ~@5 [a3,d4] ~@5 [g3,a3,d4,gb4] ~@3", V: "[d4,gb4] ~@5 [d4,gb4] ~@5 [gb3,a3,d4] ~@3, a4 ~@7",
  W: "[g3,b3] ~@5 [b3,d4] ~@5 [g3,b3] ~@3", X: "[d4,g4] ~@5 [b3,d4] ~@5 [g3,b3] ~@3",
  Y: "[d3,g3]@2 ~@4 [g3,b3] ~@5 [b3,d4] ~@3", Z: "[d4,g4] ~@5 [g3,b3,d4] ~@5 [d3,g3,b3] ~@3",
  AA: "[gb3,a3] ~@5 [gb3,a3,c4] ~@5 [c4,d4] ~@3", AB: "[d4,gb4] ~@5 [a3,d4] ~@5 [gb3,a3] ~@3",
  AC: "[d4,gb4] ~@5 [gb3,a3,d4] ~@5 [gb3,a3] ~@3", AD: "g3@2 ~@8 [b3,d4] ~ [b3,d4] ~ [b3,d4] ~",
  AE: "[b3,g4] ~ d4 ~ [b3,g4] ~ [d4,b4]@2 ~@2 e4 [b3,d4] d4 b3 d4 b3", // Em G Bm
  AF: "[b3,g4] ~ [b3,d4] ~ [b3,g4] ~ [d4,b4] d4 b4 d4 b4 [d4,b4] d4 b4 d4 [d4,b4]", // Em Bm Em G
  AG: "~@2 [b3,g4] ~@3 [bb3,gb4] ~ [b3,g4] ~ [bb3,gb4] ~ [b3,g4] ~ [b3,ab4] ~", // Em Ebm Em Ebm Em E
  AH: "a4 [c4,a4] c4 a4 c4 [c4,a4] a4 c4 a4 ~ [c4,d4] ~ [c4,d4] ~ [c4,d4] ~", // F Csus2
  AI: "[c4,gb4] ~ [c4,d4] ~ [c4,gb4] ~ [d4,a4] ~@3 [c4,d4] ~ [c4,d4] ~ [c4,d4] ~", // Cdim Csus2 Cdim D5 Csus2
  AJ: "[c4,gb4] ~ [c4,d4] ~ [c4,gb4] ~ a4!2 ~ a4 c4 [c4,a4] a4 c4 a4 [c4,a4], ~@6 c4@3 ~@7", // Cdim Csus2 Cdim F
  AK: "~@2 gb4@2 ~@2 [g4,e5] ~ [gb4,d5] ~ [e4,c5] ~ [d4,b4] ~ [c4,a4] ~, ~@2 d5 ~@13", // C D C G F
  AL: "[d4,b4]@2 b4 ~ b4 ~ g4 b3@2 ~ [b3,d4] ~ [b3,d4] ~ [b3,d4] ~, ~@3 d4@2 ~@2 c4 ~@8", // G Bm
  AM: "[b3,g4] ~ [b3,d4] ~ [b3,g4] ~ d4@2 ~@2 [b3,d4] ~ [b3,d4] ~ [b3,d4,e4] ~, ~@6 b4 ~@9", // Em Bm Em Bm E7
  AN: "[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
  AO: "~@2 [b3,g4]@2 ~@2 [bb3,gb4] ~ [b3,g4] ~ [bb3,gb4] ~ [b3,g4] ~ [b3,ab4] ~", // Em Ebm Em Ebm Em E
  AP: "[c4,a4] a4 c4 a4 [c4,a4] c4 a4 c4@2 ~ [c4,d4] ~ [c4,d4] ~ [c4,d4] ~, ~@7 a4 ~@8", // F Csus2
  AQ: "[c4,gb4] ~ [c4,d4] ~ [c4,gb4] ~ a4 [c4,a4] c4 ~ [c4,d4] ~ [c4,d4] ~ [c4,d4] ~", // Cdim Csus2 Cdim F Csus2
  AR: "[c4,gb4] g4 [c4,d4] ~ [c4,gb4] ~ a4 c4 [c4,a4] a4 c4 [c4,a4] a4 c4 [c4,a4] a4", // Cdim Csus2 Cdim F
  AS: "~@2 [gb4,d5] ~@3 [g4,e5] ~ [gb4,d5] ~ [e4,c5] ~ [d4,b4] ~ [c4,a4] ~", AT: "[b3,g4]@2 ~@8 f3@2 ~@2 f3 ~",
  AU: "bb3@2 ~@4 [bb3,d4] ~@3 f3 ~ f3 ~ f3 ~, f3 ~@15", AV: "bb3 ~@5 [bb3,d4] ~@5 [e3,a3,db4] ~@3",
  AW: "[f3,bb3,d4] ~@5 [d4,f4] ~@5 [bb3,d4] ~@3", AX: "eb4 ~ c4 ~@3 f3 ~ a3 ~ c4 ~ f4 ~ f3 ~",
  AY: "f3 ~@3 a3 ~ c4 ~@3 f3 ~ f3 ~ f3 ~", AZ: "a3 ~@5 c4 a3 c4 a3 [a3,c4] c4 a3 c4 a3 c4",
  BA: "a3 ~ [a3,f4] ~@3 [a3,f4] ~ [a3,f4] ~@3 [a3,c4] ~@3", BB: "[bb3,d4] ~@5 [bb3,d4] ~@3 f3 ~ f3 ~ f3 ~",
  BC: "[f3,bb3] ~@5 [f3,bb3,d4] ~@3 f3 ~ f3 ~ f3 ~", BD: "[f3,bb3] ~@5 [f3,bb3,d4] ~@5 [e3,a3,db4] ~@3",
  BE: "[f3,bb3,d4] ~@5 [bb3,d4,f4] ~@5 [f4,bb4] d4 ~@2", BF: "[f4,a4] ~ [eb4,g4] ~@3 [c4,eb4] ~@3 f3 ~ a3 ~ c4 ~",
  BG: "a3 ~ f3 ~ a3 ~ c4 ~@3 f3 ~@3 f3 ~", BH: "a3 ~ f3 ~ a3 ~ [f3,c4] ~@3 [f3,f4] ~@3 [f3,f4] ~",
  BI: "~@2 f4 ~@3 g4 ~ f4 ~ eb4 ~ d4 ~ c4 ~", BJ: "bb3 ~ g3 ~@3 f3 ~@3 f3 ~ f3 ~ f3 ~",
  BK: "~@2 d4 ~@5 bb3 ~@3 bb3 ~@3", BL: "g3 ~ f3 ~ g3 ~ bb3 ~@3 d4 ~@5", BM: "~@2 g4 ~@3 f4 ~ g4 ~@2 f4 ~@2 g4 ~",
  BN: "~@2 f4 ~@3 c4 [a3,c4] a3 c4 [a3,c4] a3 [a3,c4] c4 [a3,c4] ~", // Am
  BO: "~@2 [f4,a4] ~@3 [f4,a4] ~ [g4,bb4] ~ [f4,a4] ~@3 [eb4,g4] ~", // F Gm F Eb
  BP: "[f4,a4] ~ [f4,a4] ~@3 [eb4,g4] ~@3 [f4,a4] ~@5", BQ: "~@4 d5 ~@3 d5 ~ db5 ~ c5 ~ bb4 ~",
  BR: "~@2 f4 ~ g4 ~ f4 ~ bb4 f4 g4 f4 bb4 f4 g4 f4", BS: "d5 ~@3 d5 ~ bb4 ~ f5 ~ d5 ~@3 bb5 ~",
  BT: "a5 ~ ab5 ~ g5 ~ gb5 ~ f5 ~ d5 ~@3 bb4 ~", BU: "g5 ~@2 f5 ~@2 eb5 ~ c5 ~@2 a4 ~@2 ab4 ~",
  BV: "g4 gb4 f4 eb4 ~ c4 ~ a3 f3 a3 f3 a3 f3 [f3,a3] a3 f3", // F
  BW: "c4 [g3,a3] c4 a3 [a3,c4] c4 a3 f4 c4 [c4,f4] ~ a4 [f4,a4] f4 c5 a4", // Gsus2 Am F5 F
  BX: "c5 a4 [a4,b4,f5] f5 a4 [a4,f5] f5 a4 [a4,f5] f5 a4 [a4,f5] f5 ~ [a4,f5] ~", // Bm7b5 Dm
  BY: "~@3 eb5 d5 ~ c5 ~ bb4 ~ g4 ~ f4 ~ g4 ~", BZ: "bb4 ~@7 gb4 [d4,gb4] d4 [d4,gb4] ~ [d4,gb4] gb4 d4",
  CA: "g4 b3 ~@10 [b3,c4,d4] ~@3", CB: "[b3,d4] ~@3 [b3,d4] ~ [b3,e4] ~@5 [b3,e4] ~@3",
  CC: "[b3,d4] ~@5 [g3,b3,e4] ~@5 [g3,b3,d4] ~@3", CD: "[gb3,c4,d4] ~@5 [d4,gb4] ~@3 [d4,gb4] ~ [c4,e4] ~@3",
  CE: "[gb3,c4,d4] ~@5 [gb3,d4,gb4] ~@3 [d4,gb4] ~ [c4,e4] ~@3", // D7 D C
  CF: "[gb3,d4] ~@3 [gb3,d4] ~ [a3,d4,gb4] ~@3 [a3,d4,gb4] ~ [gb3,d4] ~@3", // D
  CG: "~@2 [gb3,d4] ~@3 [gb3,d4] ~ [a3,d4,gb4] ~ gb4 ~ [gb3,d4] ~@3", // D
  CH: "[g3,b3,d4] ~@7 [g3,bb3,eb4] ~ [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~", // G Eb
  CI: "[ab3,c4,eb4] gb4 ~@4 [eb4,ab4] ~@3 [eb4,ab4] ~ [c4,eb4] ~ [c4,eb4] ~", // Ab Ab5 Cm
  CJ: "[ab3,c4,eb4] ~ c4 ~ [c4,eb4] ~ [eb4,ab4] ~@3 [eb4,ab4] ~ [f4,ab4] ~@3", // Ab Cm Ab5 Fm
  CK: "[eb4,ab4] ~@3 [eb4,ab4] ~ [f4,ab4] ~@3 [f4,ab4] ~ [eb4,ab4] ~@3", // Ab5 Fm Ab5
  CL: "~@2 [bb3,eb4] ~@3 [bb3,eb4] ~@3 [bb3,eb4] ~@3 [bb3,eb4] ~", // Eb5
  CM: "[bb3,eb4] ~@3 [bb3,eb4] ~ [bb3,eb4,g4] ~@3 [eb4,g4] ~@3 eb4 ~", // Eb5 Eb
  CN: "[bb3,eb4] ~@3 [bb3,eb4] ~ [bb3,eb4,g4] ~@3 [eb4,g4] ~ [bb3,eb4] ~@3", // Eb5 Eb Eb5
  CO: "[bb3,eb4] ~@3 eb4 ~ [bb3,eb4,g4] ~@3 eb4 ~ [bb3,eb4] ~ eb4 ~", // Eb5 Eb Eb5
  CP: "[~@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
  CQ: "~@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 D E ~ F I J K L M N O P Q R S L M T U V ~@15 W X@3 Y Z@2 AA AB AC AD@2 Y AE AF@2 AG ~@15 A
  B ~ C D AH ~ F AI AJ ~ AK AL AM ~ AN AO AP AQ ~ AR ~
>`.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@7 ~@3 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: "g4 ~ d4@4 ~@2 g4@2 ~@2 b4 ~@3", J: "d5@6 b4@9 ~", K: "~@2 d5@5 ~ e5@2 d5@2 c5@2 b4@2", L: "c5@3 a4@3 ~@2",
  M: "~@2 d4@5 ~ gb4 ~@3 a4 ~@3", N: "c5@3 a4@4 ~", O: "~ d5 ~ e5 d5 c5 b4 a4", P: "b4@6 g4@7 ~@3",
  Q: "~@2 d4@2 ~@2 d4 ~ g4 ~ g4 ~ b4@2 ~@2", R: "d5@5 ~ b4@10", S: "~@2 d5@5 ~ e5@2 d5@2 c5@2 b4 ~", T: "c5@5 ~ a4@10",
  U: "~@2 d5@3 ~ e5@2 d5@2 c5@2 b4@2 a4@2", V: "g4 ~@7", W: "~@6 f4 ~", X: "[bb4@5 ~ d5@28 ~@2 f5@6 ~@2 d5@2 ~@2]/3",
  Y: "eb5 ~ d5@2 ~@2 c5 ~@5 f4@3 ~", Z: "[a4@5 ~ c5@23 ~@3]/2", AA: "~@2 eb5@4 c5 ~", AB: "d5@2 c5 ~@3 bb4 ~@5 f4@3 ~",
  AC: "bb4@3 d5@3 f4@2", AD: "[bb4@5 ~ d5@12 ~@2 f5@6 ~@2 d5@2 ~@2]/2", AE: "a4@3 c5 ~@2 f4@2",
  AF: "[a4@5 ~ c5@12 ~@2 eb5@8 c5@2 ~@2]/2", AG: "d5@2 c5@2 ~@2 bb4@5 ~@5", AH: "gb4@5 ~ a4@2 ~@8",
  AI: "b4@6 g4 ~@3 eb4 ~ eb4 ~ eb4 ~", AJ: "ab4@6 c5 ~@9", AK: "~@2 ab4 ~@3 g4 ~ ab4@2 g4@2 ab4@2 a4@2",
  AL: "bb4@8 ~@2 eb4 ~ eb4 ~ eb4 ~", AM: "g4@6 bb4 ~@9", AN: "~@2 eb5@3 ~ f5 ~ eb5@2 db5@2 c5@2 bb4@2", AO: "ab4@7 ~",
  AP: "f4 ~@3 g4 ~@3 ab4 ~@3 bb4 ~@3", AQ: "c5 ~@3 db5 ~@3 eb5 ~ f5 ~@3 g5 ~", AR: "~@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
const hihat_soft = s("hh").struct(`<
  A B C D ~ E F ~ G H F D I E J E I E F E I K J L G ~ C M G E ~ E N D ~@7 O P M O ~@2 M A ~ Q ~ P ~@3 O ~ R E@3 ~@5 E
  ~@3 P ~@15 Q ~ M ~@4 D S ~@12
>`.pickRestart({
  A: "~@5 x ~@2", B: "x ~@6 x", C: "~@3 x ~ x!2 ~", D: "x!2 ~@2", E: "x", F: "~@3 x ~@4", G: "~@5 x!2 ~",
  H: "x ~ x ~@2 x ~ x", I: "~ x ~@3 x!2 ~", J: "~ x ~ x ~ x ~@2", K: "x ~ x ~@4 x", L: "~ x ~ x ~@4", M: "~ x ~@2",
  N: "~ x ~ x ~ x!2 ~", O: "~ x ~@6", P: "~@3 x", Q: "~@3 x ~@2 x ~", R: "~ x ~ x ~@2 x ~", S: "~ x",
})).gain(0.15)

// drums · crash
const crash = s("cr").struct("<A ~@3 A ~@2 A@2 ~@15 A ~@14 A ~@15 A ~@15 A ~@7 A ~@6 B A ~@7 A ~@10 C ~>".pickRestart({
  A: "x", B: "~ x", C: "~@4 x ~@2 x",
})).gain(0.25)

// drums · cowbell
const cowbell = s("cb").struct("<A@7 B A@15 B A@14 B A@62 C A B ~@4>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x", C: "x ~@2 x!2 ~ x ~",
})).gain(0.2)

// drums · ht
const ht = s("ht").struct(`<
  ~@3 A ~@2 B ~@8 C ~@7 D ~@6 E F ~@6 A ~@7 G ~@7 C ~@15 H ~@7 G ~@7 G ~@7 I ~@13
>`.pickRestart({
// … 21 more lines

More by Last