Strudelify
Besame Mucho cover art

Maria Elena

Besame Mucho

Dorsey

KeyD minorTempo110 bpm
0:00/0:00
// Besame Mucho — Dorsey
// 110 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 88 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(110/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 · fretless bass · "bass"
const bass = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF Q W AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT
  W@2 AU AV AW AX AY AZ Q BA BB T AE BC BD BE L AE BF BG BH BI U BJ BK W BL L BM BN BO BP BQ AN BR BS BT BU BV BW
>`.pickRestart({
  A: "~@6 f2@2 a2@4 f2@3 ~", B: "eb2@5 ~ g2 ~ bb2@4 g2 ~ eb2 ~", C: "d2@6 f2@2 d2@3 ~ f2@4",
  D: "a2@5 ~ a2 ~ a2@3 ~ e2@3 ~", E: "d2@5 ~ f2 ~ a2@3 ~ f2 ~ a2 ~", F: "d2@6 f2@2 a2@3 ~ f2@3 ~", G: "d2@11 ~ g2@4",
  H: "d2@5 ~ f2@2 a2@4 f2@4", I: "g2@5 ~ g2@2 gb2@5 ~ gb2@2", J: "f2@5 ~ f2@2 e2@3 ~ e2@3 ~",
  K: "g2@5 ~ g2 ~ c2@3 ~ c2@3 ~", L: "g2@5 ~ g2@2 a2@3 ~ a2@3 ~", M: "d2@5 ~ d2@2 a2@3 ~ a2@3 ~",
  N: "d2@8 a2@4 f2 ~ a2@2", O: "d2@5 ~ d2@2 a2@3 ~ gb2 ~ a2@2", P: "d2@5 ~ gb2@2 a2@4 gb2@2 a2 ~",
  Q: "g2@5 ~ g2@2 d2@3 ~ d2@3 ~", R: "g2@5 ~ g2 ~ d2@3 ~ g2@3 ~", S: "d2@5 ~ f2@2 a2@3 f2@2 ~ a2@2",
  T: "e2@5 ~ e2@2 a2@3 ~ a2@3 ~", U: "d2@5 ~ d2@2 g2@3 ~ g2@3 ~", V: "d2@11 ~ a2 ~ f2@2",
  W: "g2@5 ~ g2 ~ d2@3 ~ d2@3 ~", X: "d2@5 ~ d2 f2 a2@3 ~ f2@4", Y: "a2@5 ~ a2@2 g2@3 ~ g2@3 ~",
  Z: "d2@5 ~ f2 ~ a2@3 ~ f2@3 ~", AA: "g2@5 ~ g2 ~ g2@3 ~ g2@3 ~", AB: "d2@5 ~ d2 ~ d2@2 a2@2 f2 ~ d2 ~",
  AC: "e2@5 ~ e2@2 bb2@3 ~ bb2@4", AD: "g2@6 g2@2 a2@7 ~", AE: "d2@5 ~ d2 ~ g2@3 ~ g2@3 ~",
  AF: "d2@5 ~ d2 ~ d2@2 f2 ~ a2@2 f2@2", AG: "g2@5 ~ g2 ~ c2@3 ~ c2@4", AH: "g2@5 ~ g2 ~ a2@3 ~ a2@3 ~",
  AI: "d2@5 ~ d2 ~ a2@3 ~ a2@3 ~", AJ: "d2@5 ~ d2 ~ d2@2 a2@2 f2@2 a2 ~", AK: "d2@5 ~ gb2@2 a2@3 ~ gb2@2 a2@2",
  AL: "d2@6 gb2@2 a2@3 ~ gb2@2 a2 ~", AM: "g2@5 ~ g2 ~ gb2@5 ~ gb2@2", AN: "f2@5 ~ f2 ~ e2@5 ~ e2 ~",
  AO: "d2@5 ~ d2@2 f2@2 a2@2 f2 ~ d2@2", AP: "bb2@5 ~ bb2@2 a2@5 ~ a2 ~", AQ: "d2@5 ~ d2 f2 a2@2 f2@2 a2 f2 d2 ~",
  AR: "eb2@4 ~ eb2 bb2 a2@4 ~ a2@3 ~", AS: "d2@5 ~ d2 ~ d2@2 ~@2 g2@3 ~", AT: "d2@5 ~ d2 ~ d2@3 ~ a2 ~ f2@2",
  AU: "g2@7 ~ c2@8", AV: "g2@8 a2@7 ~", AW: "d2@6 f2@2 a2@3 ~ a2@3 ~", AX: "d2@6 d2 ~ d2@2 a2@2 f2 ~ a2@2",
  AY: "d2@6 gb2@2 a2@3 ~ gb2@2 a2@2", AZ: "d2@6 gb2@2 a2@4 gb2@2 a2 ~", BA: "g2@5 ~ g2@2 d2@3 ~ g2@3 ~",
  BB: "d2@5 ~ f2@2 a2@3 ~ f2 ~ f2@2", BC: "d2@5 ~ d2 f2 a2@2 f2 ~ a2 ~ f2@2", BD: "g2@5 ~ g2@2 g2@3 ~ g2@3 ~",
  BE: "d2@5 ~ d2 ~ d2@3 ~ d2 ~ f2 ~", BF: "d2@5 ~ g2@2 d2@3 ~ g2@3 ~", BG: "d2@5 ~ d2@2 f2@4 a2 ~ f2 ~",
  BH: "e2@5 ~ e2@2 bb2@3 ~ bb2@3 ~", BI: "g2@5 ~ g2@2 a2@7 ~", BJ: "d2@5 ~ d2 ~ f2 ~ a2@2 f2@2 d2@2",
  BK: "g2@5 ~ g2 ~ d2@3 ~ d2@4", BL: "g2@5 ~ g2@2 c2@3 ~ c2@3 ~", BM: "d2@5 ~ d2@2 a2@3 ~ a2@4",
  BN: "d2@5 ~ d2 ~ d2@3 ~ f2 a2 f2 ~", BO: "d2@5 ~ d2 gb2 a2@2 gb2 ~ a2@2 gb2 ~", BP: "d2@6 gb2@2 a2@3 ~ gb2@3 ~",
  BQ: "g2@5 ~ g2 ~ gb2@6 gb2@2", BR: "d2@6 f2@2 a2@4 f2 ~ a2 ~", BS: "bb2@5 ~ bb2@2 a2@3 ~ a2@3 ~",
  BT: "d2@5 ~ d2@2 f2@3 ~ a2 ~ f2 ~", BU: "eb2@5 ~ eb2 ~ g2@3 ~ bb2@2 g2@2", BV: "d2@5 ~ f2@2 a2@4 d3@2 a2@2",
  BW: "d2@3 ~@13",
})).s("gm_fretless_bass").gain(0.64)

// chords · acoustic guitar nylon · "guitar"
const acoustic_guitar_nylon = note(`<
  A B C@2 D@2 E@4 F G H@2 I J K L M N O P Q R S T U V W X Y@3 U Z AA AB AC AD AE AF AG T AH AI@3 AJ@6 AK AL AM AN AO AP
  AQ AR@2 AS AT AU@2 AV AW AX AY AZ BA BB BC BD BE@3 BF@2 BG BH BI@2 BJ@3 BK
>`.pickRestart({
  A: "[a3,d4,f4,a4]@8 ~@2 d4 e4 f4 g4 f4 e4, d2@3 ~@5", B: "~@3 [g3,bb3,db4]@6 eb3 g3 bb3 f4 bb3@2 gb3, f4@5 ~@3",
  C: "[~@2 [a3,d4,f4]@6 ~ d3 e3 f3 e3 d3 eb3 ~@3 [g3,db4]@7 e3 bb3 a3 g3 f3 e3 d3, f3@8 ~@7 e3@9 ~@8]/2", // Dm Gdim
  D: "[~@3 [f3,a3]@7 [d3,f3,a3] ~ f2 ~ [d3,f3,a3] ~@4 [d3,f3,a3]@11 ~@2, d3@9 ~@7 d2@14 ~@2, ~@3 d4@27 ~@2]/2", // F Dm
  E: "[d2@2 ~ [d4,f4]@3 d4@2 [a3,d4]@2 ~ [bb3,d4,e4]@4 ~@3 [d4,f4]@10 f3 a3 g3 ~@9 g4@2 ~ f4@4 ~@3 [d4,g4]@4 [bb3,d4,g4] ~@3 [g3,bb3,d4,g4] ~@3 [g3,bb3,d4] ~, ~@2 f3@7 ~ g3@4 ~ f3@11 ~@5 g3@15 ~ g3@8 ~@9, ~@2 a3@5 ~@10 a3@11 ~@6 [bb3,d4]@13 ~@2 bb3@4 ~@11, ~@37 e4@7 ~@20]/4", // Dm D5 Em7b5 Dm G5 Gm Bb
  F: "~@2 [g3,bb3,d4,g4]@3 ~ [g3,bb3,d4,g4] ~@3 [c4,eb4,gb4,a4] ~@3 [c4,eb4,gb4,a4] ~", // Gm Cdim
  G: "~@2 [d4,g4,bb4]@3 ~ [d4,g4,bb4] ~@3 [e4,g4,db5] ~@3 [e4,g4,db5] ~", // Gm Dbdim
  H: "[~@2 [d4,f4,a4]@4 f4 ~ [db4,e4,g4]@2 ~ [db4,e4,g4]@2 [db4,e4,g4] ~@4 [d4,f4]@13 ~, ~@15 a3@14 ~@3, ~@18 a4@11 ~@3]/2", // Dm Dbdim Dm
  I: "~@2 [gb4,a4,c5]@8 ~ [d4,gb4,a4,c5] ~@2 [d4,gb4,a4,c5] ~, d4@5 ~@3", // Gbdim D7
  J: "~@3 [a4,c5]@3 [d4,gb4,a4,c5] ~ c4@2 [gb4,a4] ~ d4@2 [gb4,a4] ~, ~ [d4,gb4]@2 ~@5", // Am D7 Gbm D
  K: "~@2 [bb4,d5]@3 ~ [bb4,d5]@2 ~@2 [bb4,d5]@3 ~ [bb4,d5] ~, g4@7 ~ gb4@7 ~", // Bb
  L: "~@2 bb4@2 d5@2 f4@2 ~@2 bb4@2 d5@2 bb4 ~, f4@6 ~@2 e4@7 ~",
  M: "~@2 a4@5 ~ f4 ~ d4 f4 a3 ~ f3 ~, d4@7 ~@2 a3@2 ~@5, ~@2 f4@3 ~@11",
  N: "~@3 [ab3,b3]@3 [ab3,b3] ~@3 [g3,db4]@3 ~ [g3,db4] ~, e3@7 ~ e3@7 ~", // Abm Gdim
  O: "~ [a3,d4]@5 [a3,d4] ~ [g3,bb3,d4] ~@2 [g3,bb3,e4] ~ [g3,bb3,d4]@2 ~, f3@3 ~@5", P: "[f3,a3,d4]@7 ~",
  Q: "~@2 [g3,bb3,d4,g4]@3 ~ [g3,bb3,d4] ~@3 [g3,bb3,d4,g4] ~@3 [g3,bb3,d4,g4] ~", // Gm
  R: "~@2 [f3,a3,d4]@4 [a3,d4] ~@3 [f3,a3,d4] ~@3 [f3,a3,d4] ~", // Dm D5 Dm
  S: "~@2 [g3,a3,db4]@4 [g3,a3,db4] ~@3 [g3,bb3,d4] ~@3 [g3,bb3,d4] ~", // A7 Gm
  T: "~@2 [f3,a3,d4]@4 [f3,a3,d4] ~@3 [f3,a3,d4] ~@3 [f3,a3,d4] ~", // Dm
  U: "~@2 [g3,bb3,d4]@4 [g3,bb3,d4] ~@3 [g3,bb3,d4] ~@3 [g3,bb3,d4] ~", // Gm
  V: "~@2 [f3,a3,d4]@3 ~ [f3,a3,d4] ~@3 [f3,a3,d4] ~@3 [f3,a3,d4] ~", // Dm
  W: "~@2 [ab3,b3,e4]@3 [ab3,b3,e4] ~@2 [bb3,d4,f4] ~@2 [bb3,d4,f4] ~ [bb3,d4,f4] ~@2", // E Bb
  X: "~ bb3@2 ~ bb3 b3 g3 ab3 ~@2 [db4,e4,g4]@5 ~, g3@3 d4@2 ~@3 a3@7 ~", // Dbdim
  Y: "[~@2 [f4,a4]@4 ~@5 e4@2 bb3@2 ~@3 [a3,d4]@9 ~ d3 f3 a3 ~@3 [bb3,d4]@4 bb3 ~@3 [g3,bb3,d4] ~@3 [g3,bb3,d4] ~, d4@7 ~@2 g3@5 ~ f3@12 ~@4 g3@7 ~@10, ~@10 bb3@3 ~@35]/3", // F D5 Bb Gm
  Z: "~@2 [g3,bb3,d4]@3 [g3,bb3,d4]@2 ~ [eb3,gb3]@2 ~ [eb3,gb3]@2 ~ g3@2", // Gm Ebm
  AA: "g3@2 ~ [g3,bb3,d4]@2 ~ [g3,bb3,d4]@2 ~ [e3,a3,db4]@2 [e3,a3,db4]@2 ~ [e3,a3,db4]@2", // Gm A
  AB: "~@2 [a3,d4]@4 [a3,d4]@3 ~@2 db4 e4 db4 a3 g3, f3@9 g3@5 ~@2, ~@10 a3@3 ~@3", AC: "~ [f3,a3]@6 ~, d4@15 ~",
  AD: "~@2 [a3,c4,d4,gb4]@4 [c4,d4,gb4] ~@3 [a3,c4,d4,gb4] ~@3 [a3,c4,d4,gb4] ~", // D7
  AE: "~@2 [a3,c4,d4,gb4]@4 [a3,c4,d4,gb4] ~@3 [a3,c4,gb4] ~@3 [a3,c4,gb4] ~", // D7 Gbdim
  AF: "~@2 [bb3,d4]@3 ~ [bb3,d4]@2 ~@2 [bb3,d4]@3 gb3@2 ~, ~ g3@2 ~ gb3@2 ~@2", // Bb
  AG: "~@2 [bb3,d4]@4 f3@2 ~@2 [bb3,d4]@3 ~ [bb3,d4] ~, f3@6 ~@2 e3@7 ~", AH: "~@2 [f3,ab3,bb3]@5 ~@3 [e3,g3,db4]@5 ~",
  AI: "[~@2 [f3,a3,d4]@10 ~ a3 f3 ~@5 bb2@2 db3 ~@3 db3@2 e3@2 db3 ~@4 [a3,d4]@7 ~@2 bb3@4, ~@15 f3@8 ~@8 d3@10 ~@2 [d3,g3]@5, ~@18 g2@4 ~@2 a2@6 ~@4 f3@7 ~@7]/3", // Dm D5 G5
  AJ: "[~@3 [a3,d4]@9 d3 f3 a3 ~@3 [bb3,d4]@8 ~ [bb3,e4]@4 ~@3 [bb3,d4]@12 ~@2 g4@3 [bb3,d4,g4]@2 ~ [bb3,d4,g4]@2 ~ [eb4,gb4,a4]@2 [eb4,gb4,a4]@2 [eb4,gb4,a4] ~@2 [g4,bb4]@3 [d4,g4,bb4]@2 [d4,g4,bb4] ~@2 [g4,db5]@2 [e4,g4,d5]@2 [e4,g4,e5]@2 ~ [f4,a4]@10 ~@2 e4 g4 e4 db4 a3, d3@11 ~@36 [bb3,d4]@4 ~@5 c4@6 ~ d4@3 ~@5 e4@3 ~@4 d4@9 ~@3 db4@2 ~@4, ~@2 f3@10 ~@3 g3@11 g3@3 ~@2 g3@14 ~ g3@8 ~@35 a3@4 ~@3]/6", // D5 Bb Bbdim Bb Gm Ebdim Gm Gdim …
  AK: "~@3 [f3,a3]@12 ~, ~ d4@15", AL: "~@2 [a3,c4,gb4]@4 [a3,c4,gb4] ~@3 [a3,c4,gb4] ~@3 [a3,c4,gb4] ~",
  AM: "~@2 [a3,c4,gb4]@3 ~ [a3,c4,gb4] ~@3 [a3,c4,gb4] ~@3 [a3,c4,gb4] ~", // Gbdim
  AN: "~@2 [g3,bb3,d4]@3 ~ [g3,bb3,d4] ~@3 [g3,bb3,d4] ~@3 [g3,bb3,d4] ~", // Gm
  AO: "~@3 [g3,bb3,d4]@3 [g3,bb3,d4] ~@3 [g3,bb3,d4] ~@3 [g3,bb3,d4] ~", // Gm
  AP: "~@2 [f3,a3,d4]@3 ~ [f3,a3,d4] ~@3 [f3,a3] ~@3 [f3,a3,d4] ~", // Dm F Dm
  AQ: "~@2 [e3,ab3,b3]@4 [e3,ab3,b3] ~@3 [g3,db4]@4 e3 ~, ~@10 e3@3 ~@3", // E Gdim
  AR: "[~@2 [f3,a3,d4]@3 [f3,a3,d4] ~@2 e4@2 [bb3,e4]@2 bb3 [g3,e4] ~ [a3,d4]@15 ~@2, ~@7 g3@5 ~@2 f3@16 ~@2, ~@7 bb3@2 ~@23]/2", // Dm Bbdim C D5
  AS: "~@3 g4@2 [g3,bb3,d4]@2 ~ [g3,bb3,d4,g4]@2 ~ [g3,bb3,d4] ~@2 [g3,bb3,d4,g4] ~, ~ g3@3 ~@12, ~ [bb3,d4] ~@6", // Gm Bb
  AT: "~@3 f4@2 ~ [f3,a3,d4]@2 [f3,a3,f4]@2 ~ [f3,a3,d4]@2 ~ [f3,a3,f4]@2, ~@2 [f3,a3]@3 ~@11", // Dm F Dm F
  AU: "[~@2 db4 e4@3 [g3,db4]@2 ~@2 [bb3,d4]@2 ~ [g3,bb3,e4]@2 ~ [a3,d4]@12 ~@4, ~ a3@3 ~@12, ~@2 g3@4 ~@2 g3@4 ~@3 f3@12 ~@5, ~@3 d4 ~@12 f4@10 ~@6]/2", // Gdim Bb Edim D5
  AV: "~@2 d4 g4@2 ~ [g3,bb3,d4]@2 ~ [g3,bb3,g4]@2 [g3,bb3,d4]@2 ~ [g3,bb3,g4] ~, ~ [g3,bb3]@2 ~@5", // Gm
  AW: "~@3 f4@2 ~ [f3,a3,d4]@2 [f3,a3,f4]@2 ~ [f3,a3]@2 [f3,a3,f4]@2 ~, ~ [f3,a3]@2 ~@2 d4 ~@2", // Dm F
  AX: "~ ab3@3 b3@2 ab3@2 ~ ab3@2 bb3@2 ab3 bb3 ~, e3@7 ~ f3@7 ~",
  AY: "~@2 [bb3,d4]@4 g3 ab3 ~@2 [db4,e4]@5 ~, g3@5 ~@2 a3@8 ~", // Bb Dbm
  AZ: "~@2 [a3,d4]@6 ~ [g3,bb3,d4]@3 ~ [g3,bb3,d4]@2 ~, f3@7 ~@9", BA: "[f3,a3,d4]@11 f3 a3 f3 a3 g3",
  BB: "~@2 [bb3,d4]@3 [bb3,d4]@2 ~@4 d4@3 [bb3,d4]@2, g3@7 ~ gb3@7 ~, ~@5 bb3 ~@2", // Bb
  BC: "~@2 [bb3,d4]@3 ~ [bb3,d4]@2 ~@2 [bb3,d4]@3 ~ [bb3,d4] ~, f3@7 ~ e3@6 ~@2", // Bb
  BD: "~@2 [g3,bb3,d4]@3 [g3,bb3,d4]@2 ~ [c4,eb4,gb4]@2 ~ [c4,eb4,gb4]@2 ~ [c4,eb4,gb4]@2", // Gm Cdim
  BE: "[[d4,g4,bb4]@2 ~ [d4,g4,bb4]@2 ~ [d4,g4,bb4]@2 [e4,g4,db5]@2 ~ [e4,g4,db5]@2 [e4,g4,db5] ~@2 a4@5 a4@3 ~@4 g4 f4@2 ~@3 [f4,a4]@7 d4 db4 c4 bb3 g3 gb3 eb3, ~@15 d4@8 ~ db4@7 d4@9 ~@8, ~@16 f4@8 ~@2 e4@5 ~@17]/3", // Gm Dbdim F
  BF: "[~@2 gb3@3 ~ gb3@4 d3 gb3 a3 d3!2 ~@3 [gb3,a3,c4]@4 [gb3,a3,c4] ~@3 [d3,gb3,a3,c4] ~@3 [d3,gb3,a3,c4] ~, d3@9 ~@6 d3@7 ~@10, ~@2 [a3,c4]@7 ~@23]/2", // Gbdim D7 Am
  BG: "~@2 [g3,bb3,d4]@4 [g3,bb3] ~@3 [gb3,bb3,d4]@4 [bb3,d4] ~", // Gm Gbaug Bb
  BH: "~@2 [f3,bb3,d4]@4 [f3,bb3,d4] ~@3 [e3,d4]@4 [bb3,d4] ~, ~@10 bb3@3 ~@3", // Bb E7 Bb
  BI: "[~@2 [f3,a3]@6 [d3,a3,d4] ~@2 f3 a3 f3 ~@3 [d3,f3,ab3]@6 ~@3 db4 ~ db4@4, ~@2 d4@4 ~@8 bb3@9 ~ e3@7 ~, ~@13 g3@3]/2", // F D5 Ddim
  BJ: "[[f3,a3]@6 ~@3 a3 d4 ~ e4 d4 e4 ~@3 [g3,bb3,db4]@7 g3 bb3 db4 [db4,f4] bb3 g3 ~@3 [f3,a3]@3 ~ [f3,a3] ~@3 [f3,a3,d4] ~@3 [f3,a3,d4] ~, d4@9 ~@6 f4@10 ~@6 d4@7 ~@10]/3", // F Gdim Db F Dm
  BK: "[d3,f3,a3,d4]@7 ~@9", // Dm
})).s("gm_acoustic_guitar_nylon").gain(0.57).pan(0.2)

// other · string ensemble 2 · "strings"
const string_ensemble_2 = note(`<
  A@2 B C D ~@3 E F G H I J K@2 L M N O P@2 Q R S T U@2 V W X@7 Y Z AA AB AC AD@2 AE@2 AF@2 AG@2 AH@2 AI@2 AJ AK AL@2 AM
  AN AO AP@2 AQ@4 AR@2 AS AT AU AV AW@5 AX@7 AY AZ@2
>`.pickRestart({
  A: "[d4@8 ~@2 db4@2 d4 ~ e4 f4@14 ~ db4@2]/2", B: "d4@13 bb3@2 ~", C: "a3@12 e4 db4 ~@2", D: "d4@7 ~", E: "~@11 d5@5",
  F: "c5@2 ~ b4@2 bb4@10 ~", G: "~ g4@3 c4@4", H: "g4@7 ~ a4@8", I: "a4@7 ~ g4@8",
  J: "f4@3 ~@2 db4@2 d4@2 e4 gb4 ~ g4 ab4 a4 ~", K: "[gb4 ~@17 a4@12 ~@2, ~ gb4@29 ~@2, ~@3 d4@27 ~@2]/2",
  L: "[g4,bb4,d5]", M: "~@2 [bb4,d5]@5 ~ [a4,c5]@4 [g4,bb4]@4", N: "[a4,d5]@14 f4 ~", O: "~ a4, e4",
  P: "[d4@7 ~ d4@2 ~@2 bb3@3 a3 g3 ~@7 ab4 a4 bb4 b4 c5 db5 d5 e5, ~@8 g4@7 f4@5 ~@12]/2", Q: "g5", R: "f5@15 e5",
  S: "f5 e5@15", T: "~@5 ab4 ~ a4 db5 ~ d5 e5 ~ f5 e5 ~", U: "[g5@15 f5@14 ~ f5 g5]/2", V: "e5 f5", W: "d5 db5",
  X: "[d5@25 a4@2 f4@3 gb4 g4@27 c5 b4 bb4 a4 ab4 g4@9 c4@2 eb4@2 ~ a4 ~ g4@7 ab4 a4@7 ab4 a4@9 g4@8, ~@38 gb4 ~@17]/7",
  Y: "f4@5 ~ db4 d4 e4@2 gb4 g4 a4@2 ~@2", Z: "[d4,gb4]@13 ~ [e4,g4]@2, a4 ~@15", AA: "[gb4,a4]@11 [gb4,d5]@5",
  AB: "g4@8 ~ gb4@7", AC: "f4@8 [bb4,d5]@2 ~ [a4,c5]@2 [g4,bb4]@2 ~",
  AD: "[[f4,a4,d5]@11 ~ d4@3 ab4@9 [e4,g4]@7 ~, ~@3 f4@3 ~@2, ~@15 d4@7 ~@10]/2", // Dm Em
  AE: "[[d4,f4]@9 ~ e4 f4 ~ a4@2 c5@7 ~ a4@8 ~, ~@11 bb4 ~@4]/2", AF: "[d5@20 ~ ab4 a4@2 d5 ~ e5 f5 ~ e5 d5 ~]/2",
  AG: "[ab5 a5@9 g5@2 f5@2 e5@18]/2", AH: "[~@2 g4@8 ~@5 g4@8 a4@3 db5@3 e5@3]/2",
  AI: "[d5@9 a4@2 g4 ~ gb4 ~ a4@6 ~ db4 d4 e4 gb4 g4 ~ ab4 a4 bb4 ~]/2", AJ: "gb4@7 [e4,g4], d4@3 ~",
  AK: "~ [gb4,a4]@15", AL: "[[g4,bb4] ~ bb4@16 ~@2 [bb4,d5]@4 [a4,c5]@4 [g4,bb4]@4, d5@19 ~@13]/2",
  AM: "~ a4@15, f4@15 ~, ~ d5@9 ~@6", AN: "[e4,ab4,b4] [e4,a4], d4@3 ~@5", AO: "d4 ~",
  AP: "[~@6 ab4 a4 bb4 b4 c5 db5 d5 e5 f5 g5@16 ab5]/2",
  AQ: "[a5@11 g5@2 f5@2 g5@8 ~ g4@3 a4@2 bb4@2 a4@6 ~ ab4@2 ~ db5@2 d5@2 e5@2 g5@12 ~ d5 bb4 g4@2, ~@20 a4 ~@11]/4",
  AR: "[f4@11 ~ e4 d4@2 e4@6 d4 db4 b3 bb3@8]/2", AS: "~@3 d4@2 e4 ~ db4@9", AT: "d4@12 f3 ab3 a3 [db4,d4]",
  AU: "e4@2 f4@3 g4@2 ~ a4@2 g4@2 f4 e4@2 ~", AV: "g4@2 a4@3 g4@6 d4@4 ~",
  AW: "[c4@2 b3@2 ~ bb3@10 g4@8 c4@2 eb4@2 gb4 ~ a4@2 g4@8 ~ e4@6 eb4 d4@8 ~ g4@10 f4@2 ~ db4@2 ~ d4@2 e4@4 ~@2]/5",
  AX: "[d4@21 [gb4,a4]@3 [gb4,c5]@7 [bb4,d5]@19 ~@2 bb4@4 [a4,c5]@3 ~ [g4,bb4]@2 [d5,f5]@9 a4 d5@3 a4@3 ~ bb4 ab4@7 ~ [e4,db5]@7 [a4,d5]@16 ~, gb4@18 ~@13 db5 ~@19 d5@4 ~@20 f4@12 ~ g4@6 ~@18]/7", // Gbm Gbdim Bb Am Gm Dm Dbm D5
  AY: "eb4@3 f4@4 g4@4 bb4@4 ~", AZ: "[eb5 f5 d5@16 ~@14]/2",
})).s("gm_string_ensemble_2").gain(0.51).pan(0.9)

// drums · kick
const kick = s("bd").struct("<[x ~ x!2]!5 [x ~@7 x ~@2 x ~@2 x ~] [x ~ x!2]!81 x>").gain(0.4)

// drums · rim
const rim = s("rim").struct("<[~@3 x ~@2 x ~]!5 ~ [~@3 x ~@2 x ~]!81 ~>").gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<[~ x ~ x ~ x ~ x]!5 [~@8 x ~@2 x ~@2 x ~] [~ x ~ x ~ x ~ x]!81 x>").gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@87 x>").gain(0.45)

// drums · high tom
const high_tom = s("ht").struct("<~@5 [~@8 x ~@2 x ~@2 x ~] ~@81 x>").gain(0.4)

// drums · vibraslap
const vibraslap = s("vibraslap:0").struct("<[~ x ~@6]!87 ~>").gain(4.08)

// drums · bongos
const bongos = s("bongo:18").struct("<~@6 [~@7 x]!81 ~>").gain(1.17)

// drums · congas
const congas = s("conga:13").struct("<[x ~@5 x ~ x ~ x!3 ~ x ~]!5 ~ [~@5 x ~@2]!81 x>").gain(1.27)

// drums · congas
const congas_2 = s("conga:18").struct("<[~ x ~@6]!5 ~@82 x>").gain(1.27)

// drums · congas
const congas_3 = s("conga:33").struct("<x!5 ~@83>").gain(1.27)

// drums · agogo bells
const agogo_bells = s("agogo:2").struct("<~@5 [~@8 x ~@2 x ~@2 x ~] ~@82>").gain(1.58)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<[~@5 x!2 ~]!5 ~ [x!8]!81 ~>").gain(2.26)

stack(
  bass, acoustic_guitar_nylon, string_ensemble_2, kick, rim, hihat, open_hat, high_tom, vibraslap, bongos, congas,
  congas_2, congas_3, agogo_bells, cabasa
)

More by Dorsey