Strudelify

besame mucho

Consuelo Velázquez

KeyF majorTempo108 bpm
0:00/0:00
// besame mucho — Consuelo Velázquez
// 108 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 3 "Alt-saxofoon" named as a reed, played on alto sax (its tremolo strings patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5918313; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 45 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(108/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.

// other · alto sax · "Alt-saxofoon"
const alto_sax = note("<~@6 A@2 B C D@2 E@2 A@2 F G H I ~@8 J@2 A@2 K L M N O P Q I R S H T ~>".pickRestart({
  A: "[a4@2 g4@5 ~]/2", B: "g4!3 a4!3", C: "bb4!3 db5 d5 e5", D: "[a4@7 ~]/2", E: "[d5@12 c5 ~ bb4 ~]/2",
  F: "f4!2 d4 f4 d4 a3", G: "d4 ab3 b3 db4 g3 a3", H: "a3", I: "d4@3 ~", J: "[d4@6 d4@3 ~@3 d4@24 d4@4 e4@4 f4@4]/2",
  K: "e4!3 gb4!3", L: "g4!3 a4 g4 db5", M: "f4", N: "f4@3 ~", O: "a4", P: "a4@4 a4 ~ gb4 ~", Q: "a4 d4",
  R: "a4 f4 d4 f4 d4 a3", S: "d4 b3!2 db4 a3!2", T: "a3@3 ~",
})).s("gm_alto_sax").gain(0.35)

// other · clarinet · "Klarinet in C"
const clarinet = note("<~@2 A B ~@16 C D E F C D G H ~@8 I@2 J@2 K L M@2 ~>".pickRestart({
  A: "d4@2 a3@3 e4 f4 a4", B: "ab4 d4 a4 e4", C: "g4@6 g4@3 g4@3 g4@4 f4@4 e4@4", D: "f4@6 f4@3 f4@3 f4@4 e4@4 d4@4",
  E: "e4@3 e4@9 e4@4 ~ e4 f4@5 g4", F: "a4", G: "e4!3 f4!3", H: "e4", I: "[d5@12 c5 ~ bb4 ~]/2", J: "[a4@2 g4@5 ~]/2",
  K: "d5 a4 f4 a4 f4 d4", L: "f4 e4 d4 e4 d4 db4", M: "[d4@7 ~]/2",
})).s("gm_clarinet").gain(0.35)

// chords · piano · "Cornet in C"
const piano = note(`<
  A B C D E F G H I J K L K M N O P Q R S T U V W X Y Z AA AB K N O AC AD W AE AF AG AH AI P AJ R AK AL
>`.pickRestart({
  A: "[f4,a4,d5]@2 [d4,f4,a4]@2 [d4,f4,a4] [f4,a4,f5] [a4,d5,a5] [d5,f5,d6], d3@23 ~", // Dm F D5 Dm
  B: "[eb5,g5,db6]@2 [bb4,db5,g5]@2 [bb4,db5,g5] [db5,eb5,bb5] [bb4,db5,g5] [g4,bb4,eb5], eb3@23 ~", // Eb7 Gdim Eb7 Gdim Eb
  C: "[f4,a4,d5]@2 [d4,f4,a4]@2 [d4,f4,a4] [g4,a4,e5] [f4,a4,f5] [a4,d5,a5], d3@23 ~", // Dm A7 F D5
  D: "[bb4,d5,ab5] [e4,ab4,d5] [a2,db5,f5,a5] [g2,g4,a4,e5], e3@11 ~@13", // Bb7 E7 Aaug A7
  E: "[f4,a4,d5]@2 [f4,a4,d5] ~ [g3,d4,g4,d5]@4, d3@11 ~@13", // Dm G5
  F: "[f4,a4,d5]@3 [f4,a4,d5] [g4,a4,e5] [f4,a4,f5], d3@23 ~", G: "[g2,g4,a4,a5] [d3,bb4,d5,g5]",
  H: "[bb4,d5,g5]@3 ~, g3@23 ~", I: "bb3@11 ~ eb3@11 ~", J: "g2@11 ~ a2@11 ~", K: "d3@23 ~", L: "f2@23 ~",
  M: "gb2@11 ~ a2@6 bb2@6", N: "g2@11 ~ d3@11 ~", O: "g3@23 ~",
  P: "[d5,f5,d6] [a4,d5,a5] [f4,a4,f5] [a4,d5,a5] [f4,a4,f5] [f4,a4,d5], d3@23 ~", // Dm D5 F D5 F Dm
  Q: "[ab4,b4,f5] [ab4,b4,e5] [e4,ab4,d5] [g4,a4,e5] [e4,g4,d5] [g4,a4,db5], e2@11 ~ a2@11 ~", R: "[d3,f4,a4,d5]",
  S: "[f4,a4,d5]@3 ~, d3@23 ~", // Dm
  T: "[d4,e4,g4]@6 [d4,e4,g4]@3 [d4,e4,g4]@3 [d4,e4,g4]@4 [bb3,d4,f4]@4 [bb3,d4,e4]@4, g3@23 ~", // Em7 Bb Em7b5
  U: "[a3,d4,f4]@6 [a3,d4,f4]@3 [a3,d4,f4]@3 [a3,d4,f4]@4 [a3,db4,e4]@4 [f3,a3,d4]@4, d3@23 ~", // Dm A Dm
  V: "[a3,db4,e4]@3 [a3,db4,e4]@9 [bb3,d4,e4]@4 ~ [bb3,d4,e4] [bb3,f4]@5 [d4,e4,g4], a2@11 ~ d3@11 ~, ~@9 d4@2 ~", // A Em7b5 Bb5 Em7
  W: "[d3,d4,f4,a4]", X: "[bb4,d5,g5]@6 [bb4,d5,g5]@3 [bb4,d5,g5]@3 [bb4,d5,g5]@4 [g4,bb4,f5]@4 [g4,bb4,e5]@4, g2@23 ~",
  Y: "[f4,a4,f5]@6 [f4,a4,f5]@3 [f4,a4,f5]@3 [f4,a4,f5]@4 [g4,a4,e5]@4 [f4,a4,d5]@4, d3@23 ~", // F A7 Dm
  Z: "[ab4,b4,e5]!3 [ab4,bb4,f5]!3, e3@11 ~ f3@11 ~", AA: "[a3,g4,a4,e5]", AB: "d3@11 ~ g3@11 ~",
  AC: "[d4,e4,g4]!3 [gb4,g4,a4]!3, bb3@11 ~ eb3@11 ~", // Em7 Gbm
  AD: "[e4,g4,bb4]!3 [g4,a4,db5] [e4,g4,d5] [g4,a4,e5], g2@11 ~ a2@11 ~", AE: "[d4,f4,a4]@3 ~, f2@23 ~",
  AF: "[d3,gb4,a4,d5]", AG: "[gb2,gb4,a4,d5]@4 [gb4,a4,c5] ~ [d4,gb4,bb4] ~, ~@2 a2 bb2",
  AH: "[g2,a3,d4,a4] [d3,d4,e4,g4]", AI: "[d4,e4,g4]@3 ~, g3@23 ~",
  AJ: "[ab4,b4,f5] [ab4,b4,e5] [e4,ab4,d5] [b2,g4,a4,e5] [g4,a4,d5] [g4,a4,db5], e2@11 ~@5 b2@8", // Fdim E E7 Em Gsus2 A7
  AK: "[d3,f4,a4,d5]@6 [f4,a4,d5]!2", AL: "[f4,a4,d5] ~@7",
})).s("gm_piano").gain(0.2)

// other · trombone
const trombone = note("<A B C D E F G H ~@8 I J K L M N O P Q R S T ~@4 U V P W X Y Z AA I AB K L ~>".pickRestart({
  A: "d4@2 a3@3 d4 f4 a4", B: "bb4@2 eb4@3 g4 eb4 db4", C: "d4@2 a3@3 db4 d4 f4", D: "e4 bb3 g4 db4",
  E: "d4@2 d4 ~ bb3@4", F: "d4@3 d4 db4 d4", G: "d4 e4", H: "e4@3 ~", I: "a4 f4 d4 f4 d4!2", J: "d4!2 b3 db4 b3 e4",
  K: "d4", L: "d4@3 ~", M: "bb3@6 bb3@3 bb3@3 bb3@4 g3@4 g3@4", N: "f3@6 f3@3 f3@3 f3@4 g3@4 d3@4",
  O: "g3@3 g3@9 g3@4 ~ g3 g3@5 bb3", P: "a3", Q: "e4@6 e4@3 e4@3 e4@4 d4@4 d4@4", R: "d4@6 d4@3 d4@3 d4@4 db4@4 d4@4",
  S: "d4!6", T: "db4", U: "bb3!3 eb4!3", V: "d4!3 e4 b3 db4", W: "a3@3 ~", X: "c4", Y: "c4@4 d4 ~ bb3 ~", Z: "g3 bb3",
  AA: "bb3@3 ~", AB: "d4!2 b3 db4 f4 e4",
})).s("gm_trombone").gain(0.2)

// other · alto sax · "Alt-saxofoon"
const alto_sax_2 = note("<A B C D ~@12 E F G H I J K L M N O P ~@4 Q R L S P T U H E V G H ~>".pickRestart({
  A: "a4@2 f4@2 f4 d4 f4 a4", B: "bb4@2 db5@2 db5 eb5 db5 bb4", C: "a4@2 f4@2 f4 g4 f4 a4", D: "bb4 ab4 g4 a4",
  E: "f5 d5 a4 f4 a4 f4", F: "d4 ab4 e4 db4 e4 g4", G: "f4", H: "d4@3 ~", I: "e4@6 d4@3 e4@3 d4@4 d4@4 d4@4",
  J: "d4@6 d4@3 d4@3 d4@4 db4@4 a3@4", K: "db4@3 db4@9 d4@4 ~ d4 d4@5 e4", L: "d4",
  M: "d5@6 bb4@3 d5@3 bb4@4 g4@4 bb4@4", N: "a4@6 f4@3 d4@3 f4@4 g4@4 a4@4", O: "ab4 b4 ab4 bb4 ab4 bb4", P: "a4",
  Q: "e4 d4 e4 eb4 gb4 g4", R: "e4 d4 e4 g4 e4 db4", S: "f4@3 ~", T: "gb4@4 a4 ~ gb4 ~", U: "d4 e4",
  V: "d4 ab4 e4 db4 f4 g4",
})).s("gm_alto_sax").gain(0.22)

// chords · tenor sax · "Tenor-saxofoon"
const tenor_sax = note("<A B C D ~@12 E F G H I J K L M N O P ~@4 Q R L S T U V W E X G H ~>".pickRestart({
  A: "[d4,f4]@2 [a3,d4]@2 [a3,d4] [f3,a3] [a3,d4] [d4,f4]", B: "[eb4,g4]@2 [g4,bb4]@2 [g4,bb4]!3 [eb4,g4]",
  C: "[d4,f4]@2 [a3,d4]@2 [a3,d4] [db4,e4] [a3,d4] [d4,f4]", D: "[d4,e4]!2 [a3,db4] [db4,e4]",
  E: "[a4,d5] [f4,a4] [d4,f4] [a3,d4] [d4,f4] [a3,d4]", F: "[ab3,b3] [d4,e4] [ab3,b3] [g3,a3] [g3,b3] [db4,e4]",
  G: "[a3,d4]", H: "[f3,a3]@3 ~", I: "[g3,bb3]@6 [g3,bb3]@3 [g3,bb3]@3 [g3,bb3]@4 [g3,bb3]@4 [g3,bb3]@4",
  J: "[f3,a3]@6 [f3,a3]@3 [f3,a3]@3 [f3,a3]@4 [g3,a3]@4 [d3,f3]@4", // F Gsus2 Dm
  K: "[g3,a3]@3 [g3,a3]@9 [g3,bb3]@4 ~ [g3,bb3] [g3,bb3]@4 ~ [g3,bb3]", L: "[f3,a3]",
  M: "[g4,bb4]@6 [e4,g4]@3 [g4,bb4]@3 [e4,g4]@4 [bb3,d4]@4 [e4,g4]@4", // Gm Em Gm Em Bb Em
  N: "[d4,f4]@6 [a3,d4]@3 [f3,a3]@3 [a3,d4]@4 [db4,e4]@4 [d4,f4]@4", O: "[d4,e4] [e4,ab4] [d4,e4] [d4,f4]!3",
  P: "[db4,e4]", Q: "[g3,bb3]!3 [g3,a3] [a3,eb4]!2", R: "[g3,bb3]!3 [db4,e4] [g3,b3] [g3,a3]", S: "[a3,d4]@3 ~",
  T: "[d4,gb4]", U: "[c4,d4]@4 [d4,gb4] ~ [bb3,d4] ~", V: "[g3,a3] [g3,bb3]", W: "[g3,bb3]@3 ~",
  X: "[ab3,b3] [d4,e4] [ab3,b3] [g3,a3] [a3,d4] [db4,e4]", // Abm Dsus2 Abm Gsus2 D5 Dbm
})).s("gm_tenor_sax").gain(0.2)

// other · baritone sax · "Bariton-saxofoon"
const baritone_sax = note("<~@16 A B C D E F G H I J K L ~@4 M N H O P Q R S A T C D ~>".pickRestart({
  A: "f4 d4 a3 f3 a3 f3", B: "f3 b3 e3!3 a3", C: "f3", D: "d3@3 ~", E: "e3@6 e3@3 e3@3 e3@4 f3@4 e3@4",
  F: "d3@6 d3@3 d3@3 d3@4 e3@4 a2@4", G: "e3@3 e3@9 e3@4 ~ e3 f3@5 e3", H: "d3", I: "e4@6 d4@3 e4@3 d4@4 g3@4 d4@4",
  J: "a3@6 f3@3 d3@3 f3@4 a3@4 a3@4", K: "b3 d4 b3 bb3!3", L: "a3", M: "e3!3 gb3 g3!2", N: "e3!3 a3 e3!2", O: "f3@3 ~",
  P: "c4", Q: "a3@4 c4 ~ gb3 ~", R: "d3 e3", S: "e3@3 ~", T: "f3 b3 e3!2 g3 a3",
})).s("gm_baritone_sax").gain(0.18)

// chords · electric guitar jazz · "Akoestische gitaar"
const electric_guitar_jazz = note(`<
  ~@4 A B C D E F G B H I C D G J G B K B L B K B M N A B C D E F G B O P Q D R S G T U
>`.pickRestart({
  A: "[a3,d4,f4]@9 [d3,g3,d4,e4]@3 ~@3 [d3,g3,d4,e4]@3 ~@3 [d3,g3,d4,e4] ~@2", // Dm Em7
  B: "[a3,d4,f4]@3 [a3,d4,f4] ~ [a3,d4,f4] ~ [a3,d4,f4]", // Dm
  C: "[a3,d4,g4]@9 [a3,d4,g4] ~@2 [bb3,d4,g4] ~@2 [bb3,d4,g4]@3 ~@3 [bb3,d4,g4] ~@2", // Dsus4 Gm
  D: "[bb3,d4,g4]@3 [bb3,d4,g4] ~ [bb3,d4,g4] ~ [bb3,d4,g4]", // Gm
  E: "[bb3,d4,g4]@9 [bb3,d4,g4] ~@2 [eb3,g3,c4,gb4] ~@2 [eb3,g3,c4,gb4]@3 ~@3 [eb3,g3,c4,gb4] ~@2", // Gm Cm
  F: "[bb3,d4,g4]@9 [bb3,d4,g4] ~@2 [e3,g3,db4,e4] ~@2 [e3,g3,db4,e4]@3 ~@3 [e3,g3,db4,e4]@3", // Gm Dbdim
  G: "[a3,d4,f4]@9 [a3,d4,f4]@3 ~@3 [a3,d4,f4]@3 ~@3 [a3,d4,f4] ~@2", // Dm
  H: "[d3,a3,c4,gb4]@9 [d3,a3,c4,gb4]@3 ~@3 [d3,a3,c4,gb4]@3 ~@3 [d3,a3,c4,gb4] ~@2", // D7
  I: "[d3,a3,c4,gb4]@9 [d3,a3,c4,gb4] ~@2 [d3,a3,c4,gb4] ~@2 [d3,a3,c4,gb4] ~@2 [bb3,d4,gb4]@3 [bb3,d4,gb4]@3", // D7 Bbaug
  J: "[d3,ab3,b3,e4]@9 [d3,ab3,b3,e4] ~@2 [e3,g3,db4,e4] ~@2 [e3,g3,db4,e4]@3 ~@3 [e3,g3,db4,e4]@3", // E7 Dbdim
  K: "[bb3,d4,g4]@9 [bb3,d4,g4]@3 ~@3 [bb3,d4,g4]@3 ~@3 [bb3,d4,g4] ~@2", // Gm
  L: "[e3,g3,db4,e4]@9 [e3,g3,db4,e4] ~@2 [d3,g3,d4,e4] ~@2 [d3,g3,d4,e4]@3 ~@3 [d3,g3,d4,e4] ~@2", // Dbdim Em7
  M: "[d3,ab3,b3,e4]@9 [d3,ab3,b3,e4] ~@2 [d3,ab3,d4,f4] ~@2 [d3,ab3,d4,f4]@3 ~@3 [d3,ab3,d4,f4] ~@2", // E7 Ddim
  N: "[e3,g3,db4,e4]@3 [e3,g3,db4,e4] ~ [e3,g3,db4,e4] ~ [e3,g3,db4,e4]", // Dbdim
  O: "[d3,a3,c4,gb4]@9 [d3,a3,c4,gb4]@3 ~@3 [d3,a3,c4,gb4]@3 ~@4 [d3,a3,c4,gb4] ~", // D7
  P: "[d3,a3,c4,gb4]@9 ~ [d3,a3,c4,gb4] ~ [d3,a3,c4,gb4] ~@3 [d3,a3,c4,gb4] ~ [bb3,d4,gb4]@3 [bb3,d4,gb4]@3", // D7 Bbaug
  Q: "[a3,d4,g4]@9 ~ [a3,d4,g4] ~ [bb3,d4,g4] ~@2 [bb3,d4,g4]@3 ~@4 [bb3,d4,g4] ~", // Dsus4 Gm
  R: "[a3,d4,f4]@9 [a3,d4,f4]@3 ~@3 [a3,d4,f4]@3 ~@4 [a3,d4,f4] ~", // Dm
  S: "[d3,ab3,b3,e4]@9 [d3,ab3,b3,e4] ~@3 [e3,g3,db4,e4] ~@2 [e3,g3,db4,e4] [f3,g3,db4,f4]@5 [f3,g3,db4,f4]@2", // E7 Dbdim Gm7b5
  T: "[a3,d4,f4]@6 [a3,d4,f4]!2", U: "[a3,d4,f4] ~@7",
})).s("gm_electric_guitar_jazz").gain(0.22)

// chords · piano · "Piano RH"
const piano_2 = note(`<
  A B A C D E F G H I J K L M F N O P Q@2 R S T U R S V W D X F Y H I K Z AA AB AC AD AE AF AE AG AH
>`.pickRestart({
  A: "[f4,a4,d5]@9 [f4,a4,d5]@3 [f4,a4,d5]@11 ~", B: "~@2 [eb4,g4,bb4,db5]@2 [eb4,g4,bb4,db5] [eb4,g4,bb4,db5]@3",
  C: "~@2 [d4,e4,ab4,bb4]@2 [d4,e4,ab4,bb4] [db4,e4,g4,a4]@3", // E7 A7
  D: "[f4,a4,d5]@3 ~@5 [f4,a4,d5] ~@3 [e4,g4,bb4,d5]@3 ~@3 [e4,g4,bb4,d5]@6", // Dm Em7b5
  E: "[a4,d5] ~@3 [a4,d5] ~@3 [f4,a4,d5]@4, f4@3 ~ f4@3 ~@5", // D5 Dm
  F: "[d4,g4,a4]@2 ~@2 [d4,g4,a4] ~ [d4,g4,bb4]@2 [d4,g4,bb4]@4", // Dsus4 Gm
  G: "[d4,g4] ~@3 [g4,bb4] ~@3 [d4,g4,bb4]@4, bb4@3 ~ d4@3 ~@5", // G5 Gm
  H: "[d4,g4,bb4]@2 ~@2 [d4,g4,bb4] ~ [eb4,gb4,g4,c5]@2 [eb4,gb4,g4,c5]@4", // Gm Cm
  I: "[d4,g4,bb4]@2 ~@2 [d4,g4,bb4] ~ [e4,g4,a4,db5]@2 [e4,g4,a4,db5]@4", // Gm A7
  J: "[d4,f4] ~@3 [f4,a4] ~@3 [d4,f4,a4]@4, a4@3 ~ d4@3 ~@5", // Dm F Dm
  K: "[f4,a4] ~@3 [f4,a4] ~@3 [d4,f4,a4]@4, d4@3 ~ d4@3 ~@5", // F Dm
  L: "[gb4,a4,c5,d5]@2 ~@2 [gb4,c5,d5] ~@3 [gb4,a4,c5,d5]@4, ~@4 a4@3 ~@5", // D7
  M: "[a4,c5,d5] ~@3 [gb4,c5,d5] ~@3 [gb4,a4,c5,eb5]@4, gb4@3 ~ a4@3 ~@5", // D7 Gbdim
  N: "[g4,bb4] ~@3 [d4,g4,bb4]@2 ~@2 [d4,g4,bb4]@4, d4 ~@3", O: "[f4,a4] ~@3 [f4,d5] ~@3 [f4,a4,d5]@4, d5@3 ~ a4@3 ~@5",
  P: "[ab4,b4,d5,e5]@2 ~@2 [ab4,b4,d5,e5] ~ [g4,a4,db5,e5]@2 [g4,a4,db5,e5]@4", // E7 A7
  Q: "[a4,d5] ~@3 [f4,d5] ~@3 [f4,a4,d5]@4, f4@3 ~ a4@3 ~@5", R: "[g4,bb4,d5]@11 ~ [g4,bb4,d5]@11 ~",
  S: "~@5 [f4,a4,d5]@3", T: "[e4,g4,a4,db5]@11 ~ [e4,g4,bb4,d5]@11 ~", U: "~@5 [d4,f4,a4]@3",
  V: "[e4,ab4,b4,d5]@11 ~ [f4,ab4,bb4,d5]@11 ~", W: "~@5 [g4,a4,db5,e5]@3",
  X: "[a4,d5] ~@3 [f4,a4] ~@3 [f4,a4,d5]@4, f4@3 ~ d5@3 ~@5", // D5 F Dm
  Y: "[d4,bb4] ~@3 [d4,bb4] ~@3 [d4,g4,bb4]@4, g4@3 ~ g4@3 ~@5", // Gm
  Z: "[d4,a4] ~@3 [f4,a4] ~@3 [d4,f4,a4]@4, f4@3 ~ d4@3 ~@5", AA: "[gb4,a4,c5,d5]@11 ~ [gb4,a4,c5,d5]@11 ~",
  AB: "~@2 [gb4,a4,c5,d5]@3 [gb4,bb4,d5]@3", AC: "[d4,g4,a4]@11 ~ [d4,g4,bb4]@11 ~",
  AD: "~@2 [d4,g4,bb4]@3 [d4,g4,bb4]@3", AE: "[f4,a4,d5]@11 ~ [f4,a4,d5]@11 ~", AF: "~@5 [f4,g4,a4,db5]@3",
  AG: "[f4,a4,d5]@17 ~ [f4,a4,d5]@3 [f4,a4,d5]@3", AH: "[f4,a4,d5] ~@7",
})).s("gm_piano").gain(0.2)

// bass · acoustic bass · "Contrabas"
const bass = note(`<
  A B A C D E F G H I J K L M F G J N O P Q R S T U V W X D E F G H I J K L M F G Y Z AA AB AC
>`.pickRestart({
  A: "d2@3 d2 a1@2 a2@2", B: "eb2@3 eb2 bb2@2 eb2 db2", C: "e2@3 bb1 a1@2 g1@2", D: "d2@9 g2 ~@2 d2@6 d2@6",
  E: "d2@9 d2 ~@2 a2@6 f2@3 a1@3", F: "g1@9 g1 ~@2 d2@6 d2@6", G: "g2@9 g2 ~@2 d2@6 bb1@6",
  H: "bb2@9 bb2 ~@2 eb2@6 eb2@6", I: "g1@9 g1 ~@2 a1@6 bb1@3 db2@3", J: "d2@9 d2 ~@2 a1@6 f1@6",
  K: "f1@9 f1 ~@2 a1@6 a2@6", L: "d2@9 d2 ~@2 a1@6 gb1@6", M: "gb1@9 gb1 ~@2 a1@6 bb1@3 gb1@3",
  N: "e1@9 e1 ~@2 a1@6 db2@3 e2@3", O: "d2@9 d2 ~@2 a1@6 a2@6", P: "d2@9 d2 ~@2 a2@6 f2@6", Q: "g2 ~ d2!2",
  R: "d2 ~ a1 f1", S: "a1 ~ d2!2", T: "d2 ~ a2 a1", U: "g1 ~ d2!2", V: "d2 ~ a1 a2", W: "e2 ~ f2 bb2", X: "a2 ~ e2 e1",
  Y: "d2@2 ~ a1@3 f1@2", Z: "e1@2 ~ b1@3 a1 db2", AA: "d2@2 ~ a2@3 f2@2", AB: "d2@6 d2!2", AC: "d2 ~@7",
})).s("gm_acoustic_bass").gain(0.33)

// drums · kick
const kick = s("bd").struct("<~@4 [x ~@2 x!2 ~@3]!16 [x!2]!8 [x ~@2 x!2 ~@3]!15 [x ~@2 x!2 ~ x!2] x>").gain(0.25)

// drums · snare
const snare = s("sd").struct("<~@4 A@16 B C B C B C B C A@15 ~@2>".pickRestart({
  A: "x ~ x!2 ~ x!2 ~", B: "~@2 x ~@2 x ~@2", C: "~@2 x!2 ~ x ~@2",
})).gain(0.2)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 A B A B A B A B A B A B A B A B C D C D C D C D A B A B A B A B A B A B A B A ~@2
>`.pickRestart({
  A: "x ~ x!2 ~@2 x ~", B: "x ~@2 x ~@2 x ~@2 x!2 ~", C: "x ~ x!2 ~@2 x!2", D: "x!4",
})).gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct("<~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A ~@3>".pickRestart({
  A: "~@6 x!2",
})).gain(0.2)

// drums · tambourine
const tambourine = s("tb").struct("<~@4 [~@3 x]!39 ~@2>").gain(0.25)

// drums · congas
const congas = s("conga:13").struct("<~@4 x!39 ~@2>").gain(0.79)

// drums · congas
const congas_2 = s("conga:18").struct("<~@4 [~@3 x ~@2 x!2]!39 ~@2>").gain(0.79)

// drums · congas
const congas_3 = s("conga:33").struct("<~@4 [~ x ~@2]!39 ~@2>").gain(0.79)

// drums · shaker
const shaker = s("sh").struct("<~@4 [x ~@2 x ~ x!2 ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2]!39 ~@2>").gain(0.25)
// … 18 more lines