Strudelify

Kiss and Say Goodbye

The Manhattans

KeyF majorTempo97 bpm
0:00/0:00
// Kiss and Say Goodbye — The Manhattans
// 97 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 9 lead 2 sawtooth (copy of ch 6 string ensemble 1)
// note: Full arrangement: all 119 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(97/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 · electric bass finger
const bass = note(`<
  ~@12 A B C D E F G C H B I J K L G C H B M N E F G C H B I J F O G C H B N P E K Q C H B R J K O M D H B N C H K M C S
  B I J F T Q P H B U V M P H V M C E V G D A B D C H F M P H B I J W O G C H B G D H V M P U F M C U
>`.pickRestart({
  A: "f1@2 ~ f2 ~@2 f1@2 ~ f2 ~@2 f1@2 ~ f2 ~@2 f1@2 ~ f2 ~@2", B: "f2 ~@11",
  C: "c3@2 ~@3 c3 g2@3 c3 ~@2 c3@2 ~@3 c3 a2@3 g2 ~@2", D: "c3@2 ~@3 c3 g2@3 c3 ~@2 c3@2 ~@3 c3 a2@2 ~ g2 ~@2",
  E: "f2@2 ~@3 f2 c2@3 f2 ~@2 f2@2 ~@3 f2 c2@3 f2 ~@2", F: "f2@2 ~@3 f2 c2@3 f2 ~@2 f2@2 ~@3 f2 eb2@3 c2 ~@2",
  G: "c3@2 ~@3 c3 g2@3 c3 ~@2 c3@2 ~@3 c3 bb2@3 g2 ~@2", H: "f2@2 ~@3 f2 c2@2 ~ f2 ~@2 f2@2 ~@3 f2 c2@2 ~ f2 ~@2",
  I: "bb2@2 ~@3 bb2 f2@3 bb2 ~@2 bb2@2 ~@3 bb2 g2@3 f2 ~@2", J: "bb2@2 ~@3 bb2 f2@3 bb2 ~@2 bb2@2 ~@3 bb2 ab2@3 f2 ~@2",
  K: "f2@2 ~@3 f2 c2@2 ~ f2 ~@2 f2@2 ~@3 f2 eb2@2 ~ c2 ~@2", L: "f2@2 ~@3 f2 c2@2 ~ f2 ~@2 f2@2 ~@3 f2 d2@2 ~ c2 ~@2",
  M: "c3@2 ~@3 c3 g2@3 c3 ~@2 c3@2 ~@3 c3 bb2@2 ~ g2 ~@2", N: "c3@2 ~@3 c3 g2@2 ~ c3 ~@2 c3@2 ~@3 c3 a2@2 ~ g2 ~@2",
  O: "f2@2 ~@3 f2 c2@3 f2 ~@2 f2@2 ~@3 f2 d2@3 c2 ~@2", P: "c3@2 ~@3 c3 g2@2 ~ c3 ~@2 c3@2 ~@3 c3 a2@3 g2 ~@2",
  Q: "c3@2 ~@3 c3 g2@2 ~ c3 ~@2 c3@2 ~@3 c3 bb2@2 ~ g2 ~@2",
  R: "bb2@2 ~@3 bb2 f2@2 ~ bb2 ~@2 bb2@2 ~@3 bb2 g2@2 ~ f2 ~@2", S: "f2@2 ~@3 f2 c2@2 ~ f2 ~@2 f2@2 ~@3 f2 c2@3 f2 ~@2",
  T: "f2@2 ~@3 f2 c2@3 f2 ~@2 f2@2 ~@3 f2 d2@2 ~ c2 ~@2", U: "f2@2 ~@3 f2 c2@3 f2 ~@2 f2@2 ~@3 f2 c2@2 ~ f2 ~@2",
  V: "f2@2 ~@3 f2 c2@2 ~ f2 ~@2 f2@2 ~@3 f2 eb2@3 c2 ~@2", W: "f2@2 ~@3 f2 c2@3 f2 ~@2 f2@2 ~@3 f2 eb2@2 ~ c2 ~@2",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · harpsichord
const harpsichord = note(`<
  ~@12 A B C D E F G@2 E B H I J E K L M B N O P J Q R E B S T E U D N M B O@2 F E O V E B S W X E Y Z E B O D E F N AA
  E B AB AC AD AE O AF E B AG E AF AH E@2 AI AF E M G N F B N AJ AK AG L AL E B AM AN AG AO AP AQ E B AR N E F G O M AS
  AT Z F
>`.pickRestart({
  A: "~@3 [f4,a4,c5] ~@5 [f4,a4,c5] ~@5 [f4,a4,c5] ~@5 [a4,c5] ~@2, ~@21 f4@2 ~", B: "[f4,a4,c5] ~@23",
  C: "~@3 [e4,g4,c5] ~@5 [e4,g4,c5]@2 ~@4 [e4,g4,c5] ~@5 [e4,g4,c5] ~@2", // C
  D: "~@3 [e4,g4,c5] ~@5 [e4,g4,c5] ~@5 [g4,c5] ~@5 [e4,g4,c5] ~@2, ~@15 e4@2 ~@7", // C C5 C
  E: "~@3 [f4,a4,c5] ~@5 [f4,a4,c5] ~@5 [f4,a4,c5] ~@5 [f4,a4,c5] ~@2", // F
  F: "~@3 [f4,a4,c5] ~@5 [f4,a4,c5] ~@5 [a4,c5] ~@5 [f4,a4,c5] ~@2, ~@15 f4@2 ~@7", // F Am F
  G: "~@3 [g4,c5] ~@5 [e4,g4,c5] ~@5 [e4,g4,c5] ~@5 [e4,g4,c5] ~@2, ~@3 e4@2 ~@19", // C5 C
  H: "~@3 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~@5 [f4,bb4,d5]@2 ~", // Bb
  I: "~@3 [bb4,d5] ~@5 [f4,bb4] ~@5 [f4,bb4]@2 ~@4 [f4,bb4,d5] ~@2, ~@3 f4@2 ~@4 d5@2 ~@4 d5 ~@8", // Bb Bb5 Bb
  J: "~@3 [a4,c5] ~@5 [f4,a4,c5] ~@5 [f4,a4,c5] ~@5 [f4,a4,c5] ~@2, ~@3 f4@2 ~@19", // Am F
  K: "~@3 [e4,g4,c5] ~@5 [e4,g4,c5] ~@5 [g4,c5] ~@5 [e4,g4] ~@2, ~@15 e4@2 ~@4 c5@2 ~", // C C5 Em
  L: "~@3 [e4,g4,c5]@2 ~@4 [e4,g4,c5] ~@5 [g4,c5] ~@5 [e4,g4,c5] ~@2, ~@15 e4@2 ~@7", // C C5 C
  M: "~@3 [f4,a4]@2 ~@4 [f4,a4,c5] ~@5 [f4,a4,c5] ~@5 [f4,a4,c5] ~@2, ~@3 c5 ~@20", // F
  N: "~@3 [g4,c5] ~@5 [e4,g4,c5] ~@5 [g4,c5] ~@5 [e4,g4,c5] ~@2, ~@3 e4@2 ~@10 e4@2 ~@7", // C5 C C5 C
  O: "~@3 [e4,g4,c5] ~@5 [e4,g4,c5] ~@5 [e4,g4,c5] ~@5 [e4,g4,c5] ~@2", // C
  P: "~@3 [f4,a4,c5] ~@5 [f4,a4,c5] ~@5 [f4,a4,c5]@2 ~@4 [f4,a4,c5] ~@2", // F
  Q: "~@3 [e4,g4,c5] ~@5 [e4,g4,c5] ~@5 [g4,c5] ~@5 [e4,g4,c5]@2 ~, ~@15 e4@2 ~@7", // C C5 C
  R: "~@3 [g4,c5] ~@5 [g4,c5] ~@5 [g4,c5] ~@5 [e4,g4,c5] ~@2, ~@3 e4@2 ~@4 e4@2 ~@4 e4@2 ~@7", // C5 C
  S: "~@3 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~@2", // Bb
  T: "~@3 [bb4,d5] ~@5 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~@2, ~@3 f4@2 ~@19", // Bb
  U: "~@3 [f4,a4,c5]@2 ~@4 [f4,a4,c5] ~@5 [a4,c5] ~@5 [f4,a4,c5]@2 ~, ~@15 f4@2 ~@7", // F Am F
  V: "~@3 [g4,c5] ~@5 [e4,g4,c5]@2 ~@4 [g4,c5] ~@5 [g4,c5] ~@2, ~@3 e4@2 ~@10 e4@2 ~@4 e4@2 ~", // C5 C C5
  W: "~@3 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~@5 [bb4,d5] ~@5 [f4,bb4,d5] ~@2, ~@15 f4@2 ~@7", // Bb
  X: "~@3 [f4,a4,c5]@2 ~@4 [f4,a4,c5] ~@5 [f4,a4,c5]@2 ~@4 [f4,a4,c5] ~@2", // F
  Y: "~@3 [g4,c5] ~@5 [e4,g4,c5] ~@5 [e4,g4,c5] ~@5 [e4,g4]@2 ~, ~@3 e4@2 ~@16 c5 ~@2", // C5 C Em
  Z: "~@3 [g4,c5] ~@5 [e4,g4,c5] ~@5 [e4,g4,c5]@2 ~@4 [e4,g4,c5] ~@2, ~@3 e4@2 ~@19", // C5 C
  AA: "~@3 [e4,g4]@2 ~@4 [e4,g4,c5] ~@5 [g4,c5] ~@5 [e4,g4,c5] ~@2, ~@3 c5 ~@11 e4@2 ~@7", // Em C C5 C
  AB: "~@3 [f4,bb4,d5] ~@5 [f4,bb4]@2 ~@4 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~@2, ~@9 d5 ~@14", // Bb Bb5 Bb
  AC: "~@3 [f4,bb4,d5]@2 ~@4 [f4,bb4,d5] ~@5 [f4,bb4,d5]@2 ~@4 [f4,bb4,d5] ~@2", // Bb
  AD: "~@3 [f4,a4,c5] ~@5 [f4,a4,c5] ~@5 [f4,a4,c5]@2 ~@4 [f4,a4,c5]@2 ~", // F
  AE: "~@3 [f4,a4]@2 ~@4 [f4,a4,c5] ~@5 [a4,c5] ~@5 [f4,a4,c5] ~@2, ~@3 c5 ~@11 f4@2 ~@7", // F Am F
  AF: "~@3 [e4,g4,c5] ~@5 [e4,g4,c5] ~@5 [e4,g4,c5]@2 ~@4 [e4,g4,c5] ~@2", // C
  AG: "~@3 [a4,c5] ~@5 [f4,a4,c5] ~@5 [a4,c5] ~@5 [f4,a4,c5] ~@2, ~@3 f4@2 ~@10 f4@2 ~@7", // Am F Am F
  AH: "~@3 [e4,g4,c5] ~@5 [g4,c5] ~@5 [g4,c5] ~@5 [e4,g4,c5] ~@2, ~@9 e4@2 ~@4 e4@2 ~@7", // C C5 C
  AI: "~@3 [e4,g4,c5]@2 ~@4 [e4,g4] ~@5 [g4,c5] ~@5 [e4,g4,c5] ~@2, ~@9 c5@2 ~@4 e4@2 ~@7", // C Em C5 C
  AJ: "~@3 [g4,c5] ~@5 [e4,g4,c5]@2 ~@4 [g4,c5] ~@5 [e4,g4,c5] ~@2, ~@3 e4@2 ~@10 e4@2 ~@7", // C5 C C5 C
  AK: "~@3 [f4,a4,c5] ~@5 [f4,a4,c5] ~@5 [f4,a4]@2 ~@4 [f4,a4,c5] ~@2, ~@15 c5 ~@8", // F
  AL: "~@3 [e4,c5] ~@5 [e4,g4,c5] ~@5 [e4,g4]@2 ~@4 [e4,g4,c5] ~@2, ~@3 g4@2 ~@10 c5 ~@8", // C Em C
  AM: "~@3 [f4,d5] ~@5 [f4,bb4,d5] ~@5 [bb4,d5] ~@5 [f4,bb4,d5] ~@2, ~@3 bb4@2 ~@10 f4@2 ~@7", // Dm Bb
  AN: "~@3 [bb4,d5] ~@5 [f4,bb4,d5] ~@5 [bb4,d5] ~@5 [f4,bb4,d5] ~@2, ~@3 f4@2 ~@10 f4@2 ~@7", // Bb
  AO: "~@3 [f4,c5] ~@5 [f4,a4,c5] ~@5 [a4,c5] ~@5 [f4,a4,c5] ~@2, ~@3 a4@2 ~@10 f4@2 ~@7", // F5 F Am F
  AP: "~@3 [g4,c5] ~@5 [e4,g4,c5] ~@5 [g4,c5] ~@5 [e4,g4,c5]@2 ~, ~@3 e4@2 ~@10 e4@2 ~@7", // C5 C C5 C
  AQ: "~@3 [e4,g4]@2 ~@4 [e4,g4,c5] ~@5 [g4,c5] ~@5 [e4,g4,c5]@2 ~, ~@3 c5 ~@11 e4@2 ~@7", // Em C C5 C
  AR: "~@3 [g4,c5] ~@5 [e4,g4,c5]@2 ~@4 [e4,g4,c5] ~@5 [e4,g4,c5] ~@2, ~@3 e4@2 ~@19", // C5 C
  AS: "~@3 [a4,c5] ~@5 [f4,a4]@2 ~@4 [f4,a4,c5] ~@5 [f4,a4,c5] ~@2, ~@3 f4@2 ~@4 c5 ~@14", // Am F
  AT: "~@3 [e4,g4,c5]@2 ~@4 [e4,g4]@2 ~@4 [e4,g4,c5]@2 ~@4 [g4,c5] ~@2, ~@9 c5 ~@11 e4@2 ~", // C Em C C5
})).s("gm_harpsichord").gain(0.24).pan(0.6)

// chords · pad choir
const pad_choir = note(`<
  A@2 B@2 C@2 D E F G H E ~@2 B@2 A@2 B@2 ~@2 I@2 A@2 B@2 ~@2 B@2 A@2 B@2 ~@2 I@2 A@2 B@2 ~@2 B@2 A@2 B@2 ~@2 I@2 A@2
  B@2 ~@2 D E F G D E ~@2 I@2 A@2 B@2 ~@2 A@2 B@2 F J D K F J D K ~@2 D K F J D K ~@2 I@2 A@2 B@2 ~@2 D K F J D K F J D
  K F
>`.pickRestart({
  A: "[a3,c4,f4]/2", B: "[g3,c4,e4]/2", C: "[[c4,f4] [c4,f4,a4], a3]/2", D: "[c4,e4,g4]@3 ~", E: "[c4,e4,g4]",
  F: "[c4,f4,a4]@3 ~", G: "[c4,f4,a4]", H: "[g3,c4,e4]@3 ~", I: "[bb3,d4,f4]/2", J: "[f4,a4]", K: "[e4,g4]",
})).s("gm_pad_choir").gain(0.14).pan(0.6)

// other · electric guitar clean
const electric_guitar_clean = note("<A B C D E F G H A I C J ~@67 B C D E F G H A I C J ~@29>".pickRestart({
  A: "~@6 c3 f3", B: "g3 f3@6 ~", C: "~@6 g3 c4", D: "c4", E: "~@6 c4 f4", F: "g4 e4@6 ~", G: "~@6 g4 c5", H: "c5",
  I: "g3 e3@6 ~", J: "bb3",
})).s("gm_electric_guitar_clean").gain(0.4).pan(0.3)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~@14 A B C@2 B@2 ~@2 D@2 E@2 F@2 G H F@2 I J F ~@3 D@2 I@2 F@2 G H F@2 I J F ~@3 D@2 I@2 F@2 G K F@2 I J F ~@3 D@2 I@2
  F@2 G K E@2 F@2 E@2 F@2 E@2 F@2 G H ~@16 F@2 I J F@2 I J F@2 I
>`.pickRestart({
  A: "~@3 g3 ~ g3 ~@3 g3 ~@5 g3 ~ g3 ~@3 g3@2 ~", B: "~@3 g3 ~ g3 ~@3 g3@2 ~@4 g3 ~ g3 ~@3 g3@2 ~",
  C: "~@3 f3 ~ f3 ~@3 f3@2 ~@4 f3 ~ f3 ~@3 f3@2 ~", D: "~@3 bb3 ~ bb3 f3 ~ bb3 bb3@2 ~@4 bb3 ~ bb3 f3 ~ bb3 bb3@2 ~",
  E: "~@3 a3 ~ a3 f3 ~ a3 a3@2 ~@4 a3 ~ a3 f3 ~ a3 a3@2 ~", F: "~@3 g3 ~ g3 e3 ~ g3 g3@2 ~@4 g3 ~ g3 e3 ~ g3 g3@2 ~",
  G: "d3@2 ~ c3 ~@2 d3@2 ~ c3 ~@2 d3@2 ~ c3 ~@2 d3@2 ~ c3 ~@2", H: "c3 ~@23",
  I: "~@3 f3 ~ f3 c3 ~ f3 f3@2 ~@4 f3 ~ f3 c3 ~ f3 f3@2 ~", J: "~@3 f3 ~ f3 c3 ~ f3!2 ~@5 f3 ~ f3 c3 ~ f3 f3@2 ~",
  K: "c3 ~@11",
})).s("gm_electric_guitar_muted").gain(0.24).pan(0.3)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@12 A B ~@6 C B ~@6 D B ~@6 C B ~@6 E B ~@6 C B ~@6 D B ~@6 F G@8 H@8 ~@5 I J@8 K@8 L ~@11
>`.pickRestart({
  A: "f4@3 [c4,f4,a4] ~@2 [d4,f4,bb4]@3 [c4,f4,a4] ~@2 [d4,f4,bb4]@3 [c4,f4,a4] ~@2 [d4,f4,bb4]@3 [c4,f4,a4] ~@2", // F Bb F Bb F Bb F
  B: "[c4,f4,a4] ~@7", // F
  C: "[d4,f4,bb4]@3 [c4,f4,a4] ~@2 [d4,f4,bb4]@3 [c4,f4,a4] ~@2 [d4,f4,bb4]@3 [c4,f4,a4] ~@2 [d4,f4,bb4]@3 [c4,f4,a4] ~@2", // Bb F Bb F Bb F Bb F
  D: "f4@3 [c4,f4,a4] ~@2 [d4,f4,bb4]@3 [c4,f4,a4] ~@2 [d4,f4,bb4]@3 [c4,f4,a4] ~@2 [d4,f4,bb4]@3 [c4,f4,a4] ~@2, bb4 ~@3", // F Bb F Bb F Bb F
  E: "[f4,bb4]@3 [c4,f4,a4] ~@2 [d4,f4,bb4]@3 [c4,f4,a4] ~@2 [d4,f4,bb4]@3 [c4,f4,a4] ~@2 [d4,f4,bb4]@3 [c4,f4,a4] ~@2", // Bb5 F Bb F Bb F Bb F
  F: "f4@3 [c4,f4] ~@2 [d4,f4,bb4]@3 [c4,f4] ~@2 [d4,f4,bb4]@3 [c4,f4] ~@2 [d4,f4]@2 [f5,a5] [a4,g5,bb5]@3, bb4@6 ~@12 bb5 ~@5, ~@3 a4@6 a4@6 a4@6 [c4,f4] ~@2", // F5 Bb F5 Bb F5 Dm F Eb …
  G: "[[c4,f4]@3 ~@165 [f4,bb4]@3 [c4,f4] ~@2 [d4,f4,bb4]@3 [c4,f4] ~@2 [d4,f4,bb4]@3 [c4,f4] ~@2 [d4,f4,bb4]@3 [c4,f4] ~@2, a4@57 a4@2 a4@2 a4@2 a4]/8", // F5 Bb5 F5 Bb F5 Bb F5 Bb …
  H: "[[c4,f4] ~@63, a4]/8", // F5
  I: "f4@3 [c4,f4] ~@2 [d4,f4,bb4]@3 [c4,f4] ~@2 [d4,f4,bb4]@3 [c4,f4] ~@2 [d4,f4,bb4]@3 [c4,f4] ~@2, bb4 ~@3, ~ a4@2 a4@2 a4@2 a4", // F5 Bb F5 Bb F5 Bb F5
  J: "[[c4,f4]@3 ~@165 [d4,f4,bb4]@3 [c4,f4] ~@2 [d4,f4,bb4]@3 [c4,f4] ~@2 [d4,f4,bb4]@3 [c4,f4] ~@2 [d4,f4,bb4]@2 [f5,a5] [a4,g5,bb5]@3, a4@171 a4@6 a4@6 a4@6 [c4,f4] ~@2, ~@186 [g5,bb5] ~@5]/8", // F5 Bb F5 Bb F5 Bb F5 Bb …
  K: "[[c4,f4]@3 ~@165 [f4,bb4]@3 [c4,f4] ~@2 [d4,f4,bb4]@3 [c4,f4] ~@2 [d4,f4,bb4]@3 [c4,f4] ~@2 [d4,f4,bb4]@3 [c4,f4] ~@2, a4@57 a4@2 a4@2 a4@3]/8", // F5 Bb5 F5 Bb F5 Bb F5 Bb …
  L: "[c4,f4] ~@7", // F5
})).s("gm_string_ensemble_1").gain(0.21).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~@12 [x!4]!107>").gain(0.55)

// drums · snare
const snare = s("sd").struct(`<
  ~@13 A B@7 A B@7 A B@7 A B@7 A B@7 A B@7 A B@7 A B@7 A B@13 A B@7 A B@7 A B@6 A B@4
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x",
})).gain(0.55)

// drums · hihat
const hihat = s("hh").struct("<~@12 A B C@32 D C@7 D C@7 D C@7 D C@7 D C@13 D C@7 D C@7 D C@6 D C@3>".pickRestart({
  A: "x!4", B: "x ~@5 x ~@2 x ~ x!2 ~@5 x ~ x ~@3", C: "x ~@2 x ~ x!2 ~ x!2 ~@2 x ~@2 x ~ x!2 ~ x!2 ~@2",
  D: "~@3 x ~ x!2 ~ x!2 ~@2 x ~@2 x ~ x!2 ~ x!2 ~@2",
})).gain(0.38)

// drums · open hat
const open_hat = s("oh").struct("<~@13 [~ x ~@3 x ~ x] ~@105>").gain(0.38)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@13 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@13 A ~@7 A ~@7 A ~@6 A ~@4
>`.pickRestart({
  A: "~@3 x ~@10 x ~@2 x ~@3 x ~@2",
})).gain(0.55)

// drums · crash
const crash = s("cr").struct(`<
  ~@14 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@21 A ~@7 A ~@7 A ~@6 A ~@3
>`.pickRestart({
  A: "x",
})).gain(0.49)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@13 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@13 A ~@7 A ~@7 A ~@6 A ~@4
>`.pickRestart({
  A: "~@11 x ~@12",
})).gain(1.57)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  ~@13 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@13 A ~@7 A ~@7 A ~@6 A ~@4
>`.pickRestart({
  A: "~@3 x ~@4",
})).gain(1.57)

// drums · shaker
const shaker = s("sh").struct("<[~ x!3] [x!4]!11 ~@107>").gain(0.38)

// drums · claves
const claves = s("clave:2").struct(`<
  ~@13 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@13 A ~@7 A ~@7 A ~@6 A ~@4
>`.pickRestart({
  A: "~@23 x",
})).gain(2.14)

stack(
  bass, harpsichord, pad_choir, electric_guitar_clean, electric_guitar_muted, string_ensemble_1, kick, snare, hihat,
  open_hat, high_tom, crash, congas, congas_2, shaker, claves
)