Strudelify
Lambada cover art

1990 · Lambada - Les originaux No. 1 de l'été (Original 1989)

Lambada

Kaoma

KeyD minorTempo120 bpm
0:00/0:00
// Lambada — Kaoma
// 120 bpm, 4/4, key D minor. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 120 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B C D E F D E G H I J K H I J L M E N D E O P I J Q H I J L R E F M E G H S T Q H I U V W X W Y P Z J Q P I J L M E
  F M E G P I J Q H I J V W AA AB Y AC I J Q AD I J AE ~@7 AF W AA W Y H Z U Q H I J AE AG AH AI AH AI AH AI AH AJ AK AI
  AL AI AH AI AM AN
>`.pickRestart({
  A: "~@8 d2@3 ~ f2@2 a2@2", B: "d2@3 ~ f2@2 a2@2 d2@4 f2@2 a2@2", C: "d2@3 ~ f2@2 a2@2 d2@3 ~ f2@2 a2@2",
  D: "d2@3 ~ f2@2 a2@2 bb1@4 d2@2 f2@2", E: "c2@3 ~ e2@2 g2@2 f1@3 ~ a1@2 c2@2", F: "f1@3 ~ a1@2 c2@2 d2@3 ~ f2@2 a2@2",
  G: "f1@3 ~ a1@2 c2@2 g1@3 ~ bb1@2 d2@2", H: "g1@3 ~ bb1@2 d2@2 g1@3 ~ bb1@2 d2@2",
  I: "g1@3 ~ bb1@2 d2@2 c2@3 ~ e2@2 g2@2", J: "c2@3 ~ e2@2 g2@2 d2@3 ~ f2@2 a2@2",
  K: "~ f2 ~ d2 e2@2 c2@2 g1@4 bb1@2 d2@2", L: "~ d2 ~ d2 f2@2 a2@2 d2@3 ~ f2@2 a2@2",
  M: "d2@3 ~ f2@2 a2@2 bb1@3 ~ d2@2 f2@2", N: "f1@3 ~ a1@2 c2@2 d2@4 f2@2 a2@2", O: "f1@3 ~ a1@2 c2@2 g1@4 bb1@2 d2@2",
  P: "g1@3 ~ bb1@2 d2@2 g1@4 bb1@2 d2@2", Q: "~ f2 ~ d2 e2@2 c2@2 g1@3 ~ bb1@2 d2@2",
  R: "d2@4 f2@2 a2@2 bb1@3 ~ d2@2 f2@2", S: "g1@3 ~ bb1@2 d2@2 c2@4 e2@2 g2@2", T: "c2@4 e2@2 g2@2 d2@3 ~ f2@2 a2@2",
  U: "c2@3 ~ e2@2 g2@2 d2@4 f2@2 a2@2", V: "~ d2 ~ d2 f2@2 a2@2 d2@2 ~ f2@3 a2@2",
  W: "d2@2 ~ f2@3 a2@2 f2@2 ~ a2@3 c3@2", X: "f2@2 ~ a2@3 c3@2 d2@3 f2@3 a2@2", Y: "f2@2 ~ a2@3 c3@2 g1@3 ~ bb1@2 d2@2",
  Z: "g1@4 bb1@2 d2@2 c2@3 ~ e2@2 g2@2", AA: "f2@3 a2@3 c3@2 d2@2 ~ f2@3 a2@2", AB: "d2@2 ~ f2@3 a2@2 f2@3 a2@3 c3@2",
  AC: "g1@4 bb1@2 d2@2 g1@3 ~ bb1@2 d2@2", AD: "g1@2 bb1 d2 g1@2 bb1 d2", AE: "~ d2 ~ d2 f2@2 a2@2 d1@2 ~@6",
  AF: "~@8 d2@2 ~ f2@3 a2@2", AG: "~@8 f1@2 ~ a1@3 c2@2", AH: "f1@2 ~ a1@3 c2@2 d1@2 ~ f1@3 a1@2",
  AI: "d1@2 ~ f1@3 a1@2 f1@2 ~ a1@3 c2@2", AJ: "d1@2 ~ f1@3 a1@2 f1@3 a1@3 c2@2", AK: "f1@3 a1@3 c2@2 d1@2 ~ f1@3 a1@2",
  AL: "f1@2 ~ a1@3 c2@2 d1@3 f1@3 a1@2", AM: "f1@2 ~ a1@3 c2@2 d1 ~@7", AN: "d2!2 ~ d2 d1 ~@11",
})).s("gm_acoustic_bass").gain(0.72)

// chords · drawbar organ · "ORGAN 1"
const drawbar_organ = note(`<
  A@4 B@3 C@4 D@7 B@3 C@4 D@7 B@3 C@4 E@5 F@7 D@7 B@3 C@4 G@5 F@7 H@6 ~@7 F@7 I@6 J@8 K@8 ~
>`.pickRestart({
  A: "[~ [f4,a4,d5]@4 a4@2 bb4, ~@5 [f4,d5]@3]/4", B: "[[e4,g4]@8 ~@32 bb4@7 ~, c5 d5, ~ f4@5, ~@8 a4@31 ~@9]/3",
  C: "[[e4,g4] [f4,a4]@2 [bb4,d5]@4 [e4,c5], c5@3 g4@5]/4", // Em F Bb C
  D: "[~ [f4,a4]@2 bb4@4 [e4,c5]@2 [f4,a4,d5]@2 a4@2 bb4, ~ d5@6 ~@7, ~@3 g4@6 ~@2 [f4,d5]@3]/7", // F C Dm
  E: "[~ [f4,a4]@2 bb4@4 [e4,c5]@2 [f4,a4,d5], ~ d5@6 ~@3, ~@3 g4@6 ~]/5", // F C Dm
  F: "[~ d5@2 c5@2 d5@2 c5@2 [bb4,d5]@4 [e4,c5], ~ [f4,a4]@8 g4@5]/7", // Bb C F
  G: "[~ [f4,a4]@2 bb4@4 [e4,c5]@2 [f4,a4,d5], ~@8 d5@49 ~@23, ~@3 g4@6 ~]/5", // F C Dm
  H: "[~@8 [f4,a4]@16 bb4@32 [e4,c5]@16 [f4,a4,d5]@16 [f4,a4,d5]@3 ~@5, ~ d5@6 ~@5, ~ g4@2 ~]/6", // F C Dm
  I: "[~@4 [f4,a4]@8 bb4@16 [e4,c5]@8 [f4,a4,d5]@8 [f4,a4,d5] ~@3, ~@8 d5@49 ~@39, ~ g4@2 ~]/6", // F C Dm
  J: "[~ c5@2 d5@2 c5@2 d5@2 c5@2 d5@2 c5@2 d5, ~ [f4,a4]@15]/8", K: "[~ c5@2 d5@2 c5@2 d5@2 c5@2 d5@2 c5@2 ~]/8",
})).s("gm_drawbar_organ").gain(0.16)

// chords · drawbar organ · "ORGAN 1" · soft notes · Dm F Dm
const drawbar_organ_soft = note("<~@118 [~@4 [f4,a4,d5] ~@3] [[f4,a4]!2 ~ [f4,a4,d5]!2 ~@11, d5 ~@7]>")
  .s("gm_drawbar_organ").gain(0.12)

// chords · accordion · "ACCORDEON"
const accordion = note(`<
  A B C D E F D G@2 H I@3 H J K@2 L M N L O P Q R S T U R S V L M N L O P W R S X Y@2 S Z AA AB AC AD H AE@3 H AF AG@2 L
  M N L O P AH R S AI AH R S Z AJ AB AC AD H AE@3 H AF AK@2 ~@7 AL AA AB AC AM AN R S AO AP@2 S AQ AR AB AC AS AA AB AC
  AS AA AB AC AS AA AB AC AT AU
>`.pickRestart({
  A: "~@10 [a3,d4,f4] ~@3 [a3,d4,f4] ~", B: "~@2 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~",
  C: "~@2 [a3,d4,f4] ~@3 [a3,d4,f4] ~ [g5,ab5] ~ [a3,d4,f4] ~@3 [a3,d4,f4] ~, ~@2 a4@2 a5@3 g5", // Dm Abmaj7 Dm
  D: "f5@2 [a3,d4,f4] ~@3 [a3,d4,f4] ~ d5@2 [bb3,d4,f4] ~ e5@2 [bb3,d4,f4] ~, ~ e5 d5@2 ~ f5 ~ d5", // Dm Bb
  E: "c5@2 [g3,c4,e4] ~ a4@2 [g3,c4,e4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~, ~ d5 ~ g4 a4@4", // C F
  F: "~@2 [a3,c4,f4] ~@3 [a3,c4,f4] ~ [g5,ab5] ~ [a3,d4,f4] ~@3 [a3,d4,f4] ~, ~@2 a4@2 a5@3 g5", // F Abmaj7 Dm
  G: "[c5@2 [g3,c4,e4] ~ a4@2 [g3,c4,e4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~ g5@2 [bb3,d4,g4] ~ g5@2 [bb3,d4,g4] ~, ~@2 d5@2 ~@2 g4@2 a4@12 ~@4 a5 ~@5 f5@2]/2", // C F Gm
  H: "~@2 [bb3,d4,g4] ~ bb4@2 [bb3,d4,g4] ~@3 [bb3,d4,g4] ~ g5@2 [bb3,d4,g4] ~, bb4@2 ~ d5 a5@2 ~ f5", // Gm
  I: "[~@2 [bb3,d4,g4] ~ d5@2 [bb3,d4,g4] ~ e5@2 [g3,c4,e4] d5 c5@2 [g3,c4,e4] ~@3 [g3,c4,e4] ~ d5@2 [g3,c4,e4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~ g5 ~ [bb3,d4,g4,g5] ~ g5@2 [bb3,d4,g4] ~, bb4@4 ~@2 f5@2 ~@6 c5@4 c5@2 db5 ~ c5@2 d5@13 ~@9 f5@2]/3", // Gm C Dm Gm
  J: "~@2 [bb3,d4,g4] ~ d5@2 [bb3,d4,g4] ~ e5@2 [g3,c4,e4] d5 ~@2 [g3,c4,e4] ~, bb4@2 ~ f5 ~@2 c5@2", // Gm C
  K: "[c5@2 [g3,c4,e4] ~ d5@2 [g3,c4,e4] ~ f5 e5 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~, ~@2 c5@2 db5 ~ c5@2 ~@2 d5@12 ~@10]/2", // C Dm
  L: "~@2 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~", // Dm Bb
  M: "~@2 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4,a4] [g4,bb4]", // C F Gm
  N: "[a4,c5]!2 [a3,c4,f4] [g4,bb4] ~ [f4,a4] [a3,c4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~, ~@3 [a4,c5]@3 ~@2", // Am F Gm F Dm Am
  O: "~@2 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [a3,c4,f4,a4] [g4,a4,bb4] [a4,c5]@2 [a3,c4,f4] [f4,a4]", // C F Gm Am F
  P: "~ [g4,bb4] [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [bb3,d4,g4] ~@3 [bb3,d4,g4] ~, ~ [a4,c5]@3 ~@4", // Gm F Gm Am
  Q: "g5@2 [bb3,d4,g4] ~ g5@2 [bb3,d4,g4] ~@3 [bb3,d4,g4] ~@3 [bb3,d4,g4] ~, a5 ~@5 f5@2 bb4@6 ~@2", // Gm
  R: "~@2 [bb3,d4,g4] ~@3 [bb3,d4,g4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~", // Gm C
  S: "~@2 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~", // C Dm
  T: "~ [db6,d6] [a3,d4,f4,d5] d5 [db6,d6] d5 [a3,d4,f4,d5] ~@3 [bb3,d4,g4] ~@3 [bb3,d4,g4] ~", // Dmaj7 Dm Dmaj7 Dm Gm
  U: "~@2 [bb3,d4,g4] ~@3 [bb3,d4,g4] ~@3 [bb3,d4,g4] ~@3 [bb3,d4,g4] ~", // Gm
  V: "~ [a4,d5] [a3,d4,f4] c5 ~@2 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~, ~ [a4,d5] ~@2", // D5 Dm D5
  W: "a5 ~ [bb3,d4,g4] ~ g5@2 [bb3,d4,g4] ~ [g5,ab5] ~ [bb3,d4,g4] ~@3 [bb3,d4,g4] ~, g5@4 ~@2 f5@2 a5@5 ~@3", // Gm Abmaj7 Gm
  X: "f6 e6 [a3,d4,f4,d6] c6 ab5 a5 [a3,d4,f4,e6] c6 d6 ~ [bb3,d4,g4] ~@3 [bb3,d4,g4] ~", // Dm Gm
  Y: "[~@2 [bb3,d4,g4] ~@2 d5 [bb3,d4,g4,g5] ab5 a5 f5 [bb3,d4,g4,d5] a4 [g4,c5] ~ [g4,c5]@4 [bb3,d4,g4] ~@3 [bb3,d4,g4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~, ~@6 g3@6 ~@2 [bb3,d4] ~@3 [f4,bb4]@4 ~@10]/2", // Gm C5 Gm C Bb Bb5
  Z: "~@2 [a3,d4,f4] ~@3 [a3,d4,f4] ~ [a3,a4] [d4,f4,d5,f5] [a3,d4,f4] [d4,f4,d5,f5] [d4,f4,d5,f5]@2 [a3,d4,f4] ~", // Dm A Dm
  AA: "[a3,a4] [d4,f4,d5,f5] [a3,d4,f4] [d4,f4,d5,f5] [d4,f4]@2 [a3,d4,f4] ~ [c4,c5] [f4,a4,e5,f5,a5] [a3,c4,f4] [f4,a4,f5,a5] f4@2 [a3,c4,f4] ~, ~ [d5,f5] ~ [a4,f5,a5]", // A Dm C Fmaj7 F Dm
  AB: "[c4,c5] [f4,a4,f5,a5] [a3,c4,f4] [a4,f5,a5] [f4,a4,f5,a5]@2 [a3,c4,f4] ~ [a3,a4] [d4,f4,d5,f5] [a3,d4,f4,d5,f5] [d4,f4,d5,f5] [d4,f4,d5,f5]@2 [a3,d4,f4] [a3,a4]", // C F Dm F A Dm A
  AC: "[d4,f4,d5,f5]!2 [a3,d4,f4] [d4,f4,d5,f5] [d4,f4]@2 [a3,d4,f4] ~ [c4,c5] [f4,a4,e5,f5,a5] [a3,c4,f4,a4,f5,a5] [f4,a4,f5,a5] [f4,a4,f5,a5]@2 [a3,c4,f4] [c4,c5], ~ [d5,f5] ~@2", // Dm C Fmaj7 F C Dm
  AD: "[f4,a4,f5,a5]!2 [a3,c4,f4] [f4,a4,f5,a5] f4@2 [a3,c4] ~ g5@2 [bb3,d4,g4] ~ g5@2 [bb3,d4,g4] ~, ~@4 [a4,f5,a5]@4 a5 ~@5 f5@2, ~@3 f4 ~@4", // F Am Gm Dm
  AE: "[~@2 [bb3,d4,g4] ~ d5@2 [bb3,d4,g4] ~ e5@2 [g3,c4,e4] d5 c5@2 [g3,c4,e4] ~@3 [g3,c4,e4] ~ d5@2 [g3,c4,e4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~ g5 ~ [bb3,d4,g4] ~ g5@2 [bb3,d4,g4] ~, bb4@4 ~@2 f5@2 ~@6 c5@4 c5@2 db5 ~ c5@2 d5@13 ~@5 g5@2 ~@2 f5@2]/3", // Gm C Dm Gm
  AF: "~@2 [bb3,d4,g4] ~ d5@2 [bb3,d4,g4] ~ e5@2 [g3,c4,e4] d5 ~@2 [g3,c4,e4] ~, bb4@5 ~ f5@2 ~@4 c5@4", // Gm C
  AG: "[c5@2 [g3,c4,e4] ~ d5@2 [g3,c4,e4] ~ f5 e5 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~, ~@2 c5@2 db5 ~ c5@2 ~@2 d5@8 ~@14]/2", // C Dm
  AH: "a5 ~ [bb3,d4,g4] ~ g5@2 [bb3,d4,g4] ~@3 [bb3,d4,g4] ~@3 [bb3,d4,g4] ~, g5@2 ~ f5 bb4@2 ~@2", // Gm
  AI: "~ d6 [a3,d4,f4,d5] d5 [db6,d6] d5 [a3,d4,f4,d5] ~@3 [bb3,d4,g4] ~@3 [bb3,d4,g4] ~", // Dm Dmaj7 Dm Gm
  AJ: "[a3,a4] [d4,f4,d5,f5] [a3,d4,f4] [d4,f4,d5,f5] [d4,f4]@2 [a3,d4,f4] ~ [c4,c5] [f4,a4,f5,a5] [a3,c4,f4] [f4,a4,f5,a5] f4@2 [a3,c4,f4] ~, ~ [d5,f5] ~ [a4,f5,a5]", // A Dm C F Dm
  AK: "[c5@2 [g3,c4,e4] ~ d5@2 [g3,c4,e4] ~ f5 e5 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~ [a3,d4,f4] ~@7, ~@2 c5@2 db5 ~ c5@2 ~@2 d5@14 ~@8]/2", // C Dm
  AL: "~@8 [a3,a4] [d4,f4,d5,f5] [a3,d4,f4] [d4,f4,d5,f5] [d4,f4,d5,f5]@2 [a3,d4,f4] ~", // A Dm
  AM: "[f4,a4,f5,a5]!2 [a3,c4,f4] [f4,a4,f5,a5] f4@2 [a3,c4] ~@3 [bb3,d4,g4] ~@3 [bb3,d4,g4] ~, ~ [a4,f5,a5] ~@2, ~@3 f4 ~@4", // F Am Gm Dm
  AN: "a5 ~ [bb3,d4,g4] ~ g5@2 [bb3,d4,g4] ~ [g5,ab5] ~ [bb3,d4,g4] ~@3 [bb3,d4,g4] ~, g5@2 ~ f5 a5@2 ~@2", // Gm Abmaj7 Gm
  AO: "f6 e6 [a3,d4,f4,d6] c6 ab5 a5 [a3,d4,f4,e6] d6@2 ~ [bb3,d4,g4] ~@3 [bb3,d4,g4] ~, ~@7 c6 ~@8", // Dm Gm
  AP: "[~@2 [bb3,d4,g4] ~@2 d5 [bb3,d4,g4,g5] ab5 a5 f5 [bb3,d4,g4,d5] a4 [g4,c5] ~ [g4,c5]@4 [bb3,d4,g4] ~@3 [bb3,d4,g4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~, ~@14 [bb3,d4] ~@3 [f4,bb4]@4 ~@10]/2", // Gm C5 Gm C Bb Bb5
  AQ: "~@2 [a3,d4,f4] ~@3 [a3,d4,f4] ~ [d4,f4,a4] [d4,f4]@2 [d4,f4,d5,f5] [d4,f4,d5]@4, ~ a3, ~@9 [d5,f5] ~@2 f5@2 ~@2", // Dm
  AR: "a4 [d4,f4]@2 [d4,f4,d5,f5] [f4,d5]@4 [c4,c5] [f4,a4,e5,f5,a5] [c4,f4] [f4,a4,f5,a5] f4@2 [a3,c4,f4] ~, a3@10 a3@3 ~@3, ~ [d5,f5] ~@2 d4@9 ~@3, ~@4 f5@3 ~@5 [a4,f5,a5]@4", // Dm C Fmaj7 F5 F Dm
  AS: "[f4,a4,f5,a5]!2 [a3,c4,f4] [f4,a4,f5,a5] f4@2 [a3,c4] ~ [a3,a4] [d4,f4,d5,f5] [a3,d4,f4] [d4,f4,d5,f5] [d4,f4,d5,f5]@2 [a3,d4,f4] ~, ~ [a4,f5,a5] ~@2, ~@3 f4 ~@4", // F Am A Dm
  AT: "[f4,a4,f5,a5]!2 [a3,c4,f4] [f4,a4,f5,a5] f4@2 [a3,c4] ~ [a3,d4,f4,a4] [d4,f4,d5,f5] ~ [d4,f4,d5,f5] [d4,f4,d5,f5]@3 ~, ~ [a4,f5,a5] ~@2, ~@3 f4 ~@4", // F Am Dm
  AU: "[g3,c4,e4,g4,e5,g5,c6] [a3,d4,f4,a4,f5,a5,d6] ~ [a3,d4,f4,a4,f5,a5,d6]!2 ~@11", // C Dm
})).s("gm_accordion").gain(0.72)

// drums · kick
const kick = s("bd").struct(`<
  [~@8 x ~@2 x!2 ~@3]
  [x ~@2 x!2 ~@3 x ~@2 x!2 ~@3]!101
  [x ~@2 x!2 ~@3 x ~@7]
  [~@8 x ~@2 x!2 ~@3]
  [x ~@2 x!2 ~@3 x ~@2 x!2 ~@3]!14
  [x ~@2 x!2 ~@3 x ~@7]
  [x!2 ~ x!2 ~@11]
>`).gain(0.71)

// drums · low tom
const low_tom = s("lt").struct("<~@54 [x!5 ~@11] ~@25 [x!5 ~@11] ~@39>").gain(0.71)

// drums · crash
const crash = s("cr").struct(`<
  A ~ B ~@13 C ~@13 B ~@13 A ~@3 B ~@3 A ~@3 A ~@5 A ~@7 B ~@3 A ~@7 A ~@7 B ~@3 A ~@7 A ~@7 A ~@3 A ~@4 D
>`.pickRestart({
  A: "~ x", B: "~@7 x ~@8", C: "~@3 x ~@4", D: "~ x ~@2",
})).gain(0.71)

// drums · cowbell
const cowbell = s("cb").struct("<A B@43 C D@3 E B@21 C D@3 E B@7 C D@5 F D@5 E B@7 G H D@14 I J>".pickRestart({
  A: "~@2 x!2", B: "x!4", C: "x ~@3 x ~@3 x ~@2 x!2 ~@3", D: "x ~@2 x!2 ~@3 x ~@2 x!2 ~@3",
  E: "x ~@2 x!2 ~@3 x ~@3 x ~@3", F: "x ~@2 x!2 ~@3 x!2 ~ x!2 ~@3", G: "x!3 ~", H: "~@8 x ~@2 x!2 ~@3",
  I: "x ~@2 x!2 ~@3 x ~@7", J: "x!2 ~ x!2 ~@11",
})).gain(0.71)

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

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

// drums · congas
const congas = s("conga:18").struct("<A B@43 C D@3 E B@21 C D@3 E B@7 C D@11 E B@7 F G D@14 H I>".pickRestart({
  A: "~@4 x!3 ~", B: "x!3 ~ x!3 ~", C: "x ~ x ~ x ~@3 x ~@2 x!2 ~@3", D: "x ~@2 x!2 ~@3 x ~@2 x!2 ~@3",
  E: "x ~@2 x!2 ~@3 x ~ x ~ x ~@3", F: "x!3 ~ x ~@3", G: "~@8 x ~@2 x!2 ~@3", H: "x ~@2 x!2 ~@3 x ~@7",
  I: "x!2 ~ x!2 ~@11",
})).gain(2.29)

// drums · congas
const congas_2 = s("conga:33").struct("<A B@43 C@4 D B@21 C@4 D B@7 E C@11 D B@7 F E C@14 G H>".pickRestart({
  A: "~@7 x", B: "~@3 x ~@3 x", C: "~@6 x!2 ~@6 x!2", D: "~@6 x!2 ~@6 x ~", E: "~@6 x ~@7 x!2", F: "~@3 x!2 ~@3",
  G: "~@6 x!3 ~@7", H: "x!2 ~ x!2 ~@11",
})).gain(2.29)

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

// drums · mt
const mt = s("mt").struct(`<
  A ~ B ~@5 C ~@21 A ~@25 D ~@5 E ~@7 F ~@2 G H ~@8 I J K L G M N O ~@3 P ~@7 Q R ~@6 S ~@3 A ~@3 T U
>`.pickRestart({
  A: "~@3 x ~@4", B: "~@3 x ~@12", C: "~ x ~ x ~ x ~@10", D: "~ x ~ x ~@4", E: "~@4 x!2 ~ x ~@8", F: "~@2 x!3 ~@11",
  G: "~@14 x!2", H: "~@2 x!2 ~@2 x!2 ~@8", I: "~@9 x ~ x ~ x ~ x", J: "~ x ~@11 x ~@2", K: "~@9 x ~ x!2 ~@2 x",
  L: "~ x!2 ~@2 x ~ x ~ x ~ x!3 ~@2", M: "x ~@10 x ~ x ~ x", N: "~@9 x ~ x!3 ~ x", O: "x!2 ~ x!3 ~@10",
  P: "~@7 x!2 ~@7", Q: "~ x ~ x!2 ~ x ~@9", R: "~@5 x!2 ~@9", S: "~@5 x!3 ~@8", T: "~@5 x!4 ~@7", U: "x!2 ~ x ~@12",
})).gain(0.71)

// drums · shaker
const shaker = s("sh").struct("<A B@43 C D@3 E B@21 C D@3 E B@7 C D@11 E B@7 F G D@14 H I>".pickRestart({
  A: "~@8 x ~ x!3 ~ x!2", B: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", C: "x ~ x!3 ~ x!10", D: "x!16", E: "x!9 ~ x!3 ~ x!2",
// … 10 more lines

More by Kaoma