Strudelify

In Private

Dusty Springfield

KeyF majorTempo127 bpm
0:00/0:00
// In Private — Dusty Springfield
// 127 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 140 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(127/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 · synth bass 2 · "SYNTH BASS"
const bass = note(`<
  A B C D E F G H I J K L M N G O I P Q R S@2 T@2 U V W X Y@4 Z@2 AA AB AC AD AE AF AG AH AI O AJ AK AE D AL AM AN AO AP
  AQ Y@4 AR@2 AA AS W AT AU AV AL AW AX H I AY AE AZ AG AH BA H BB AQ BC BD BE BF BG BH BI BJ BK AV F AH AI H I AQ BL@2
  BM@2 AR@2 AA BN BO BP BQ AZ BR F AI H AJ AT BK BS AL BT BA BU I AT BV AV AL F BW BX AJ BP AU BY AG BZ AI CA AJ CB CC ~
>`.pickRestart({
  A: "g1@2 g2@2 g1 g2 ~ g2 g1@2 a2@2 bb2@2 c3@2", B: "g1@2 g2@2 g1 g2 ~@2 g1@2 a2@2 bb2@2 c3@2, ~@7 g2@2 ~@7",
  C: "bb1@2 ~@2 bb1@3 ~@3 bb1@2 ~@2 g1@2", D: "bb1@2 ~@2 bb1@3 ~@3 bb1@3 ~ f1@2", E: "g1 ~ g1 ~@2 g1 ~ f1",
  F: "g1 ~ g1 ~@2 g1@2 f1", G: "d1 ~ d1 ~@2 d1 ~ c1", H: "d1 ~ d1 ~@2 c1 d1 c1", I: "f1@2 ~@2 f1@2 ~@4 f1@3 ~ d1@2",
  J: "f1 ~ f1 ~@2 f1 g1 f1", K: "bb1 ~ bb1 ~@2 bb1 ~ g1", L: "bb1 ~ bb1 ~@2 bb1 ~ f1",
  M: "g1@2 ~@2 g1 ~@5 g1@2 ~@2 f1@2", N: "g1 ~ g1 ~@2 g1 f1 c1", O: "d1@2 ~@2 d1@2 ~@4 c1 ~ c1@2 d1@2",
  P: "f1@2 ~@2 f1@2 ~@4 f1@2 ~@2 f1 ~", Q: "eb1@2 ~@2 eb1@2 ~ eb2 eb1@2 f1@2 ~@2 bb1@2",
  R: "bb1@2 ~@2 bb1@2 ~ bb2 bb1@2 bb2@2 bb1@2 f1 ~",
  S: "[eb1@2 ~@2 eb1@3 eb2 eb1@2 f1@2 ~@2 bb1@4 ~@2 bb1@2 ~ bb2 bb1@2 bb2@2 bb1@2 f1 ~]/2",
  T: "[eb1@2 ~@2 eb1@2 ~ eb2 eb1@2 f1@4 g1@4 ~@2 g1@2 ~ g2 g1 ~ g1@2 bb1@2 g1@2]/2", U: "c2@3 ~ c2@4 ~@2 c2@2 ~@2 c2@2",
  V: "bb1@2 ~@2 bb1@3 ~@3 bb1@2 ~@2 bb1 ~", W: "a1 ~ a1@2 ~ a1 ~ a1", X: "f1@2 ~@2 f1@3 ~@3 f1@2 ~@2 f1@2",
  Y: "[eb1@2 ~@2 eb1@2 ~ eb2 eb1@2 f1@2 ~@2 bb1@4 ~@2 bb1@3 bb2 bb1@2 bb2@2 bb1@2 f1 ~]/2",
  Z: "[eb1@2 ~@2 eb1@2 ~ eb2 eb1@2 f1@2 ~@2 g1@4 ~@2 g1@2 ~ g2 g1@2 g2@2 g1 ~ bb1@2]/2",
  AA: "c2@2 ~@2 c2@3 ~@3 c2@2 ~@2 c2@2", AB: "bb1@2 ~@2 bb1@3 ~@3 bb1@3 ~ bb1@2", AC: "a1@2 ~@2 a1@3 ~@3 a1@2 ~@2 a1@2",
  AD: "f1 ~ f1@2 ~ f1 g1 f1", AE: "bb1@2 ~@2 bb1@2 ~@4 bb1@3 ~ g1@2", AF: "bb1 ~ bb1 ~@2 bb1@2 f1",
  AG: "g1@2 ~@2 g1@2 ~@4 g1@3 ~ f1@2", AH: "g1 ~ g1 ~@2 f1 g1 f1", AI: "d1@2 ~@2 d1@3 ~@3 d1@3 ~ c1@2",
  AJ: "f1@2 ~@2 f1@3 ~@3 f1@3 ~ d1@2", AK: "f1@2 ~@2 f1@3 ~@3 f1 ~ g1@2 f1@2", AL: "g1@2 ~@2 g1@3 ~@3 g1@3 ~ f1@2",
  AM: "g1@3 ~ g1@2 ~@4 f1@4 g1@2", AN: "d1@2 ~@2 d1@2 ~@4 d1 ~ d1@2 c1@2", AO: "d1@2 ~@2 d1@3 ~@3 c1@3 ~ d1@2",
  AP: "f1@2 ~@2 f1@3 ~@3 f1@2 ~@2 f1 ~", AQ: "f1 ~ f1 ~@2 d1 f1 d1",
  AR: "[eb1@2 ~@2 eb1@2 ~ eb2 eb1@2 f1@3 ~ g1@4 ~@2 g1@3 g2 g1 ~ g1@2 bb1@2 g1@2]/2",
  AS: "bb1@3 ~ bb1@3 ~@3 bb1@2 ~@2 bb1@2", AT: "f1@2 ~@2 f1@3 ~@3 f1@2 g1@2 f1@2", AU: "bb1 ~ bb1 ~@2 bb1@2 g1",
  AV: "bb1@2 ~@2 bb1@3 ~@3 bb1@4 f1@2", AW: "g1@2 ~@2 g1@3 ~@5 f1@2 g1@2", AX: "d1@2 ~@2 d1@3 ~@3 d1@2 ~@2 c1@2",
  AY: "f1@2 ~@2 f1@2 ~@4 f1@2 d1@2 f1 ~", AZ: "bb1@2 ~@2 bb1@2 ~@4 bb1@3 ~ f1@2", BA: "d1@2 ~@2 d1@2 ~@4 d1@3 ~ c1@2",
  BB: "f1 ~ f1 ~@2 f1 ~ d1", BC: "eb1@2 ~@2 eb1@2 ~ eb1!2 ~ eb1@2 ~@2 eb1@2",
  BD: "f1@2 ~@2 f1@2 ~ f1!2 ~ f1@2 ~@2 f1@2", BE: "d1@2 ~@2 d1@2 ~ d1!2 ~ d1@2 c1@2 d1@2",
  BF: "g1@2 ~@2 g1@2 ~ g1 f1 ~ f1@2 g1@2 ~@2", BG: "c2@2 ~@2 c2@2 ~ c2!2 ~ c2@3 ~ c2@2",
  BH: "bb1@2 ~@2 bb1@2 ~ bb1@2 ~ bb1@3 ~ bb1@2", BI: "a1@2 ~@2 a1@2 ~ a1!2 ~ a1@3 ~ a1@2",
  BJ: "f1@3 ~ f1@4 ~@2 f1@2 g1@2 f1@2", BK: "bb1@2 ~@2 bb1@3 ~@3 bb1@3 ~ g1@2",
  BL: "[eb1@2 ~@2 eb1@2 ~ eb2 eb1@2 f1@2 ~@2 bb1@4 ~@2 bb1@3 bb2 bb1@2 bb2 ~ bb1@2 f1 ~]/2",
  BM: "[eb1@2 ~@2 eb1@2 ~ eb2 eb1@2 f1@3 ~ bb1@4 ~@2 bb1@3 bb2 bb1@2 bb2 ~ bb1 ~ f1 ~]/2",
  BN: "bb1@2 ~@2 bb1@3 ~@3 bb1@3 ~ bb1 ~", BO: "a1@2 ~@2 a1@3 ~@3 a1@3 ~ a1@2",
  BP: "f1@2 ~@2 f1@2 ~ f1!2 ~ f1@2 g1@2 f1@2", BQ: "bb1@3 ~ bb1@3 ~@3 bb1@3 ~ g1@2",
  BR: "g1@2 ~@2 g1@3 ~@3 g1@2 ~@2 f1@2", BS: "bb1@2 ~@2 bb1@4 ~@2 bb1@3 ~ f1@2", BT: "g1@2 ~@2 g1@3 ~@3 f1@2 g1@2 f1@2",
  BU: "d1@2 ~@2 d1@3 ~@3 c1@2 d1@2 c1@2", BV: "bb1@3 ~ bb1@2 ~@4 bb1@3 ~ g1@2", BW: "d1 ~ d1 ~@2 d1@2 c1",
  BX: "d1@2 ~@2 d1@3 ~@3 d1@2 c1@2 d1@2", BY: "bb1@3 ~ bb1@3 ~@3 bb1@4 f1@2", BZ: "g1@2 ~@2 g1@3 ~@3 g1@4 f1@2",
  CA: "d1@3 ~ d1@2 ~@4 c1@2 d1@2 c1@2", CB: "f1@2 ~@2 f1@2 ~ f1 g1@2 f1@3 ~ f1@2", CC: "bb1",
})).s("gm_synth_bass_2").gain(0.6)

// chords · synth strings 1 · "SYN STRING"
const synth_strings_1 = note(`<
  ~@2 A@2 B@2 C@2 D@2 A@2 E@2 F@2 G@2 H@2 I@2 J@2 K L M@2 I@2 N@2 O@2 K L P@2 Q@2 R@2 C@2 D@2 S@2 T@2 F@2 U@2 N@4 V@2 W
  L X@2 Q@2 E@2 C@2 U@2 Q@2 E@2 F@2 Y@2 Z AA AB AC AD Z U@2 Q@2 E@2 AE@2 AF@2 H@2 N@2 V@2 K L P@2 Q@2 E@2 AE@2 U@2 Q@2
  AG@2 AE@2 U@2 Q@2 AH@2 AI@4 Q@2 E@2 AE@2 U@2 AJ ~
>`.pickRestart({
  A: "[[d4,f4,bb4]@29 ~@3]/2", B: "[[bb3,d4,f4,a4]@29 ~@3]/2", C: "[g4@3 f4@12 ~, [a3,d4]@15 ~]/2",
  D: "[[a3,c4,f4]@15 ~]/2", E: "[[bb3,d4,f4,a4]@31 ~]/2", F: "[g4@6 f4@25 ~, [a3,d4]@31 ~]/2",
  G: "[[a3,c4,f4]@27 ~@5]/2", H: "[[g4,bb4,eb5]@9 ~ [a4,c5,f5]@2 ~@2 [f4,bb4,d5]@17 ~]/2",
  I: "[[g4,bb4,eb5]@10 [a4,c5,f5]@3 ~ [f4,bb4,d5]@17 ~]/2", J: "[[g4,bb4,eb5]@10 [a4,c5,f5]@3 ~ [g4,bb4,d5]@17 ~]/2",
  K: "[g4,c5,eb5]@15 ~", L: "[g4,bb4,eb5]@15 ~", M: "[[a4,c5,f5]@15 ~]/2",
  N: "[[g4,bb4,eb5]@9 ~ [a4,c5,f5]@3 ~ [f4,bb4,d5]@17 ~]/2", // Eb F Bb
  O: "[[g4,bb4,eb5]@9 ~ [a4,c5,f5]@2 ~@2 [g4,bb4,d5]@17 ~]/2", P: "[[a4,c5,f5]@29 ~@3]/2", Q: "[[d4,f4,bb4]@31 ~]/2",
  R: "[[bb3,d4,f4]@15 ~, a4@7 ~]/2", S: "[[d4,f4,bb4]@15 ~]/2", T: "[[d4,f4,a4]@31 ~, bb3@29 ~@3]/2",
  U: "[[a3,c4,f4]@31 ~]/2", V: "[[g4,bb4,eb5]@9 ~ [a4,c5,f5]@3 ~ [g4,bb4,d5]@17 ~]/2", W: "[g4,c5,eb5]",
  X: "[[a4,c5,f5]@7 ~]/2", Y: "[[a3,c4,f4]@7 ~]/2", Z: "[bb3,eb4,g4]@15 ~", AA: "[a3,c4,f4]@15 ~",
  AB: "[a3,d4,f4]@15 ~", AC: "[bb3,d4,g4]@15 ~", AD: "[c4,eb4,g4]@15 ~", AE: "[g4@6 f4@25 ~, [a3,d4]@15 ~]/2",
  AF: "[[a3,c4,f4]@29 ~@3]/2", AG: "[[d4,f4,a4]@15 ~, bb3@7 ~]/2", AH: "[[bb3,d4,f4]@31 ~, a4@7 ~]/2",
  AI: "[g4@6 f4@25 ~ [c4,f4]@31 ~, a3@63 ~, d4@15 ~@17]/4", AJ: "[d4,f4,bb4]@11 ~@5",
})).s("gm_synth_strings_1").gain(0.25).pan(0.6)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@2 A@2 B C D@2 E@2 F G H C B@2 E I ~@20 G A B@2 H B J E K A D C H C I L ~@10 A@2 C H B@2 L@2 A@2 B@2 C B E I M E D N
  O P Q@2 K@2 D@4 E L ~@10 A@2 B@2 C B J I F K C B C B L I G A B H C@2 J E G K H@2 D@2 E I ~@2
>`.pickRestart({
  A: "~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~", B: "~@2 [f3,a3,d4] ~@3 [f3,a3,d4] ~",
  C: "~@4 [f3,a3,d4] ~@7 [f3,a3,d4]@2 ~@2", D: "~@4 [f3,a3,d4] ~@7 [f3,a3,d4] ~@3",
  E: "~@4 [f3,a3,c4] ~@7 [f3,a3,c4] ~@3", F: "~@4 [f3,bb3,d4] ~@7 [f3,bb3,d4]@2 ~@2",
  G: "~@4 [f3,bb3,d4]@2 ~@6 [f3,bb3,d4] ~@3", H: "~@4 [f3,a3,d4]@2 ~@6 [f3,a3,d4] ~@3",
  I: "~@4 [f3,a3,c4] ~@7 [f3,a3,c4]@2 ~@2", J: "~@4 [f3,a3,c4]@2 ~@6 [f3,a3,c4] ~@3",
  K: "~@4 [f3,bb3,d4] ~@7 [f3,bb3,d4] ~@3", L: "~@2 [f3,a3,c4] ~@3 [f3,a3,c4] ~",
  M: "~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~", N: "~@4 [g3,bb3,d4] ~@7 [g3,bb3,d4] ~@3",
  O: "~@4 [g3,c4,eb4] ~@7 [g3,c4,eb4]@2 ~@2", P: "~@4 [g3,bb3,eb4] ~@7 [g3,bb3,eb4] ~@3",
  Q: "~@4 [a3,c4,f4] ~@7 [a3,c4,f4] ~@3", // F
})).s("gm_electric_guitar_clean").gain(0.4).pan(0.6)

// chords · pizzicato strings · "PIZZICATO"
const pizzicato_strings = note(`<
  ~@18 A ~ B ~ C ~@5 C ~ D ~ C ~@21 E ~ F ~ E ~@21 A G H I J C K ~@9 E ~ D ~ F ~@39
>`.pickRestart({
  A: "[g4,bb4,eb5]@3 ~@13", B: "[g4,bb4,eb5]@5 ~@11", C: "[g4,bb4,eb5]@3 ~@5", D: "[g4,bb4,eb5]@7 ~@9",
  E: "[g4,bb4,eb5] ~", F: "[g4,bb4,eb5]@9 ~@7", G: "[a4,c5,f5] ~@3", H: "[f4,a4,d5]@7 ~@9", I: "[g4,bb4,d5]@3 ~@5",
  J: "[g4,c5,eb5]@7 ~@9", K: "[a4,c5,f5]@13 ~@3",
})).s("gm_pizzicato_strings").gain(0.25).pan(0.7)

// other · brass section · "BRASS"
const brass_section = note(`<
  ~@65 A ~@3 B ~@3 A ~@3 B ~@29 C ~ A ~ B ~ B ~ C ~ C ~ B ~ B ~ A ~ A ~ B ~ D ~ A ~ A ~ D ~ D ~@2
>`.pickRestart({
  A: "bb4 ~@5 bb4 ~@9", B: "a4 ~@5 a4@2 ~@8", C: "bb4 ~@5 bb4@2 ~@8", D: "a4 ~@5 a4 ~@9",
})).s("gm_brass_section").gain(0.5).pan(0.7)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@10 A@2 B@2 C@2 D@2 ~@15 E F E G H I@2 J@2 K@2 L@2 I@2 J@2 K@2 M@2 ~@4 N@2 F E G H O P Q R S T@2 U P@4 U@4 ~@4 V W
  X@2 A@2 B@2 C@2 D@2 ~ Y ~ Z ~@6 P AA P AB U AC U AD P AA P AE U AC U AD P AA P AB U AC U AD P AA P AB U AC U AD AF ~
>`.pickRestart({
  A: "[bb5@3 c6]/2", B: "[a5@3 d5]/2", C: "[g5@3 f5@9 d5@4]/2", D: "[c5@29 ~@3]/2", E: "bb3", F: "c4", G: "a3", H: "f3",
  I: "[bb3@3 c4]/2", J: "[a3@3 d3]/2", K: "[g3@3 f3@9 d3@4]/2", L: "c3/2", M: "[c3@29 ~@3]/2", N: "[~@7 bb3@25]/2",
  O: "~@2 bb5 ~@3 bb5 ~", P: "~@4 bb5 ~@7 bb5 ~@3", Q: "~@4 bb5@2 ~@6 bb5 ~@3", R: "~@4 bb5 ~@7 bb5@2 ~@2",
  S: "~@4 a5@2 ~@6 a5 ~@3", T: "~@4 a5 ~@7 a5@2 ~@2", U: "~@4 a5 ~@7 a5 ~@3", V: "[c4,c5] [d4,d5] [eb4,eb5] [f4,f5]",
  W: "[g4,g5]", X: "[[a4,a5]@31 ~]/2", Y: "~@6 g5 bb5 c6 bb5 ~ bb5 ~@4", Z: "~@6 bb5 c6 d6 ~@7",
  AA: "~@4 bb5 ~@5 bb5 c6 d6 c6 bb5 ~", AB: "~@4 bb5 ~@5 a5 bb5 c6 bb5 a5 ~", AC: "~@4 a5 ~@5 f5 g5 a5 g5 f5 ~",
  AD: "~@4 a5 ~@5 f5 g5 ~ g5 f5 ~, ~@6 c6 ~", AE: "~@4 bb5 ~@5 g5 a5 bb5 a5 g5 ~", AF: "[d5,bb5] ~@15",
})).s("gm_string_ensemble_1").gain(0.3).pan(0.7)

// bass · piano · "A.PIANO"
const bass_2 = note("<~@34 A B C D ~@22 A E C D ~@20 A E C D ~@14 A F C D ~@34>".pickRestart({
  A: "[c2,c3]", B: "[bb1,bb2]", C: "[a1,a2]", D: "[f1,f2]", E: "bb2, bb1@7 ~", F: "bb2, bb1@13 ~@3",
})).s("gm_piano").gain(0.5).pan(0.4)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~@6 A ~ B ~@5 A ~ C ~@25 A ~ D ~@5 A ~ E ~@15 A ~ E ~@5 A ~ F ~ G H I J K L M N ~@4 O ~ C ~@15 A ~ P ~@5 O ~ D ~@7 Q
  ~@5 A ~ C ~ R ~
>`.pickRestart({
  A: "[a4,d5]@2 ~@2 [a4,d5]@3 ~@9", B: "[f4,c5,f5] ~ [f4,c5,f5] ~@5", C: "[f4,c5,f5]@2 ~@2 [f4,c5,f5]@3 ~@9",
  D: "[f4,c5,f5] ~ [f4,c5,f5]@2 ~@4", E: "[f4,c5,f5]@2 ~@2 [c5,f5]@3 ~@9, ~@4 f4 ~@11",
  F: "[c5,f5]@2 ~@2 [c5,f5]@3 ~@9", G: "[eb4,bb4,eb5]@11 ~@5", H: "[f4,c5,f5]@7 ~", I: "[d4,a4,d5]@3 ~",
  J: "[g4,d5,g5]@7 ~", K: "[c4,g4]@13 ~@3, c5@15 ~", L: "[bb3,bb4]", M: "[a3,a4]", N: "[f3,f4]@7 ~",
  O: "[a4,d5] ~ [a4,d5]@2 ~@4", P: "[f4,c5,f5] ~ [c5,f5]@2 ~@4, ~@2 f4 ~@5", Q: "[f4,c5,f5]@2 ~@2 [f4,c5,f5]@5 ~@7",
  R: "[bb3,f4,bb4]", // Bb5
})).s("gm_overdriven_guitar").gain(0.3).pan(0.2)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1_2 = note(`<
  ~@2 A@2 B@2 C@4 D@8 ~@20 A@2 B@2 E@2 F@2 A@2 B@2 E@2 G@2 ~@10 A@2 B@2 H@2 I@2 J@2 B@2 K@2 L@2 ~@8 A@2 B@2 E@2 I@2 ~@10
  A@2 B@2 E@2 I@2 M@4 E@2 L@2 M@4 E@2 F@2 A@2 B@2 N@4 O ~
>`.pickRestart({
  A: "[bb3@3 c4]/2", B: "[a3@3 d3]/2", C: "[g3@6 f3@17 d3@8 c3@32 ~]/4",
  D: "[bb3@24 c4@7 a3@25 d3@7 g3@6 ~ f3@17 d3@8 c3@30 ~@3]/8", E: "[g3@3 f3@9 d3@4]/2", F: "c3/2", G: "[c3@7 ~]/2",
  H: "[g3@6 f3@17 d3@8 ~]/2", I: "[c3@15 ~]/2", J: "[bb3@23 ~ c4@8]/2", K: "[g3@3 f3@9 d3@3 ~]/2", L: "[c3@31 ~]/2",
  M: "[bb3@24 c4@7 a3@25 d3@8]/4", N: "[g3@6 f3@18 d3@7 c3@32 ~]/4", O: "bb2@5 ~@3",
})).s("gm_string_ensemble_1").gain(0.4).pan(0.8)

// drums · kick
const kick = s("bd").struct("<[x!4]!138 x ~>").gain(0.71)

// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!138 ~@2>").gain(0.57)

// drums · clap
const clap = s("cp").struct("<[~ x ~ x]!138 ~@2>").gain(0.64)

// drums · hihat
const hihat = s("hh").struct(`<
  A B A@3 B A@3 B A@7 B A@3 B A@5 B A@3 B A@9 B A@7 B A@9 B A@7 B A@3 C A@3 B A@3 D A@7 C A@7 B A@3 B A@5 C A@9 B A B
  A@3 D A@7 C A@8 E ~
>`.pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", C: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x!2",
  D: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~", E: "x",
})).gain(0.57)

// drums · crash
const crash = s("cr").struct("<A ~@9 A ~@27 A ~@15 A ~@25 A ~@7 A ~@7 A ~@9 A ~@15 A ~@15 A ~>".pickRestart({
  A: "x",
})).gain(0.64)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@18 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B@16 A ~ A ~ A ~ A ~ A ~ B@16 A ~ A ~ A ~@2 A ~@8 A ~ A ~ A ~ A ~ A ~
  B@32 C ~
>`.pickRestart({
  A: "~@4 x!3 ~@9", B: "x!16", C: "x!3 ~@13",
})).gain(0.5)

// drums · cowbell
const cowbell = s("cb").struct("<[x!4]!2 ~@138>").gain(0.64)

// drums · bongos
const bongos = s("bongo:4").struct("<[x!2]!138 x ~>").gain(1.88)

// drums · bongos
const bongos_2 = s("bongo:18").struct(`<
  A@18 ~@3 A ~ A ~@3 A ~@9 A ~ A@15 ~ A ~ A ~@2 A@4 ~ A@31 ~ A ~ A ~ A@15 ~ B A@20 ~@2
>`.pickRestart({
  A: "~@14 x!2", B: "~@10 x!2 ~@4",
})).gain(1.88)

// drums · congas
const congas = s("conga:13").struct(`<
  A@5 B A B A C A D A@2 B D B D A@2 E F A B@2 A G H A B@2 A B A@4 D A@5 D A@3 B A@2 I A@2 J A@3 K A@2 B A L M A@4 N O P
  A@3 Q A@3 R A@3 C S A G T U A@5 V@2 R A B A W A@2 X Y G Z AA A@11 N AB L AC A@2 N AD A AE AF AG A@2 B@2 AH A Q AI ~@2
>`.pickRestart({
  A: "~@11 x ~@4", B: "~@5 x ~@2", C: "~@9 x ~ x ~@4", D: "~@11 x ~ x ~@2", E: "~@3 x ~@12", F: "~@3 x ~@7 x ~ x ~@2",
  G: "~@3 x ~@7 x ~@4", H: "~@3 x ~@4 x!2 ~@6", I: "~@5 x!2 ~", J: "~@15 x", K: "~@14 x!2", L: "~@2 x!2 ~@6 x!2 ~@4",
// … 46 more lines

More by Dusty Springfield