Strudelify

Sprakeloos

Gordon

KeyD minorTempo134 bpm
0:00/0:00
// Sprakeloos — Gordon
// 134 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 126 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(134/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.

// chords · piano · "Honky-Ton"
const piano = note(`<
  ~@4 A@2 B C D E F G H E F G I J ~@8 K@2 L@2 M@2 N O P E F G H E Q R S J ~@8 K@2 L@2 M@2 N O P E F G H E F G H E F G H
  E Q R S J T U T U T U V W X E F G H E F G S Y E F G H E F G H E F G H E F G H E F G H E Q R S J ~@5
>`.pickRestart({
  A: "[d4@2 d4 f4 [f2,f3,c4,f4,a4,c5]@3 d4@2 ~ g4 [b3,d4,g4]@2 c5 b4@2, [d2,d3]@4 ~@3 [g2,g3,b3,b4]@4 [g2,g3]@5, [f4,a4,d5]@3 ~@4 g4@3 ~ b4@3 ~@2, ~@9 d4@2 ~@2 [d4,g4]@3]/2", // F G D G Dm G5
  B: "[bb3,d4,f4,bb4]@3 ~@3 [bb3,d4,f4,bb4]@2, bb2 bb1, ~@3 [c4,d4,f4,c5]@3 ~@2", // Bb Dm7
  C: "[a2,a3,d4,e4,a4]@3 ~@2 e2 a2 e2, ~@3 [a2,a3,d4,e4,a4]@3 [a3,d4,e4,a4]@2", // Asus4
  D: "[a3,db4,e4,a4]@5 ~ [a3,db4,e4,a4]@5 ~ [a3,db4,e4,a4]@4, a2@15 ~", // A
  E: "[f4,a4] ~@3 [f4,a4,d5]@2 ~@2 [e4,a4,c5] ~ [e4,a4,c5]@2 ~@2 [d4,g4,b4]@2, d5 ~@7", // F Dm Am G
  F: "~@2 [d4,g4,b4]@2 ~@2 [d4,g4,b4]@2 ~@2 [d4,g4,c5] ~ [d4,b4] ~@3, ~@6 g4 ~", // G Csus2 G
  G: "[d4,f4,bb4]@2 ~@2 [d4,f4,bb4]@2 ~@2 [d4,f4] ~ [d4,bb4] ~@3 [d4,e4,a4]@2, ~@4 c5 f4 ~@2", // Bb Dm Gm Dsus2
  H: "~@2 [d4,e4,a4]@2 ~@2 [db4,a4]@2 ~@2 [d4,e4,a4] ~ [db4,e4] ~@3, ~@6 e4 ~@5 a4@2 ~@2", // Dsus2 Gbm Dsus2 Dbm
  I: "~@2 [d4,e4,a4]@2 ~@2 [d4,a4]@2 ~@2 [d4,e4,a4] ~@3 [db4,e4,a4]@2, ~@6 e4 ~@9", // Dsus2 D5 Dsus2 A
  J: "~ [db4,e4,a4] ~ [db4,e4,a4] ~ e4 [db4,e4] ~, ~@5 a4@2 ~, ~@10 d4 ~@5", // A Dbm
  K: "[[bb2,bb3,d4,f4,bb4]@9 ~ [bb2,bb3,d4,f4,bb4]@3 ~ [a2,a3,db4,e4,a4]@7 ~ [a2,a3,db4,e4,a4]@9 ~]/2", // Bb A
  L: "[[d3,d4,f4,a4,d5]@6 ~@2 [d3,d4,f4,a4,c5] ~ [d3,d4,f4,a4,c5]@3 ~ [g2,g3,d4,g4,b4]@7 ~ [g2,g3,d4,g4,c5]@3 ~ [g2,g3,d4,g4,b4]@4 ~@2]/2", // Dm Dm7 G Gsus4 G
  M: "[[bb2,bb3,d4,f4,bb4,d5]@7 ~ [bb2,bb3,d4,f4,bb4,d5] ~ [bb2,bb3,d4,f4,bb4,d5]@4 [a2,a3,db4,e4,a4]@7 ~ [a2,a3,db4,e4,a4]@8 ~@2]/2", // Bb A
  N: "[g2,g3,d4,g4,bb4,d5]@7 ~ [g2,g3,d4,g4,bb4,d5] ~ [g2,g3,d4,g4,bb4,d5]@4 ~@2", // Gm
  O: "[d4,a4,d5,f5]@7 ~ [d4,a4,d5,f5] ~ [d4,a4,d5,f5]@4 [a3,e4,a4,db5]@2", // Dm A
  P: "~@2 [a2,a3,a4] ~ [a2,a3,a4] ~ [a2,a3,a4] ~@3 [a2,a3,a4] ~ [a2,a3,a4] ~@3", // A
  Q: "~@2 [d4,g4,b4]@2 ~@2 [d4,g4,b4]@2 ~@2 [d4,g4,c5] ~ [d4,g4,b4] ~@3", // G Csus2 G
  R: "[d4,f4,bb4]@2 ~@2 [d4,f4,bb4]@2 ~@2 [d4,f4] ~ [d4,f4,bb4] ~@3 [d4,e4,a4]@2, ~@4 c5 ~@3", // Bb Dm Bb Dsus2
  S: "~@2 [d4,e4,a4]@2 ~@2 [d4,e4,a4]@2 ~@2 [d4,e4,a4] ~@3 [db4,e4,a4]@2", T: "[f3,bb3,d4]", U: "[f3,a3,c4]",
  V: "[g3,b3,d4]", W: "[a3,d4,e4]@6 [a3,d4,e4]@4 [a3,d4,e4]@3 [a3,d4,e4]@3",
  X: "[a3,db4,e4]@6 [a3,db4,e4]@4 [a3,db4,e4]@3 [a3,db4,e4]@3", Y: "[db4,e4,a4] ~@3",
})).s("gm_piano").gain(0.57)

// bass · electric bass finger · "Fing.Bass"
const bass = note(`<
  A@2 B C A@2 B C D ~@4 E F G H@2 I J K L M N O P Q R S T U H V W H E F X Y E F X H@2 I Z K L I AA O P Q R S T AB H V W
  H E F X AC E F X AC E F X AC E F X H@2 AD H AE AF AD H AG AH AI ~@9 E F X AC E F X AC E F X AC E F X AC E F X AC E F X
  H@2 AJ@5
>`.pickRestart({
  A: "[d1@4 f1@3 g1@9]/2", B: "bb1", C: "a1", D: "a1@3 a1@5", E: "~@2 d2 ~ d2 ~ d2 ~ c2 ~ c2 ~ c2 ~ c2 ~",
  F: "b1 ~ b1 ~ b1 ~ bb1 ~ b1 ~ c2 ~ b1 ~ d2 ~", G: "bb1 ~ bb1 ~ c2 ~ d2 ~ bb1 ~ d2@2 g1@2 ab1@2",
  H: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", I: "d1 ~ d1 ~ d1 ~ d1 ~ f1 ~ f1 ~ d1@2 f1@2",
  J: "g1 ~ g1 ~ f1@2 g1 ~ g1 ~ g1 ~ g1 ~ g1 ~", K: "g1 ~ g1 ~ g1 ~ a1@2 bb1 ~ bb1@2 a1@2 g1@2",
  L: "a1 ~@2 g1 a1 ~ a1 ~ g1 ~ g1 ~ a1 ~ a1 ~", M: "d1 ~ d1 ~ d1 ~ d1 ~ f1 ~ f1 ~ d1@2 f1 ~",
  N: "f1 ~ g1 ~ f1@2 g1 ~ g1 ~ g1 ~ g1 ~ g1 ~", O: "g1 ~ g1 ~ g1 ~ a1@2 bb1 ~ bb1@2 f1@2 g1@2",
  P: "a1 ~ g1 ~ a1 ~ a1 ~ a1 ~ a1 ~ g1 ~ a1 ~", Q: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ f1@2 g1@2",
  R: "a1 ~ a1!2 g1@2 a1 ~ a1 ~ a1@2 g1@2 a1@2", S: "d2 ~ d2 ~ d2 ~ d2 ~ f1 ~ f1 ~ f1 ~ f1 ~",
  T: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2", U: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ f1 ~ f1 ~ f1 ~",
  V: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ a1@2 f1 ~", W: "f1@2 a1@2 f1@2 f2@2 e2 ~ e2 ~ d2 ~ d2 ~",
  X: "bb1 ~ bb1 ~ c2 ~ d2 ~ bb1 ~ d2 ~ g1 ~ ab1 ~", Y: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ f2@2 d2@2",
  Z: "g1 ~ g1 ~ f1@2 g1@2 g1 ~ g1 ~ g1 ~ g1 ~", AA: "f1 ~ g1 ~ f1@2 g1@2 g1 ~ g1 ~ g1 ~ g1 ~",
  AB: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ f1@2 f1 ~ f1 ~", AC: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ f2@2 d2 ~",
  AD: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~", AE: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~",
  AF: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ c2@2 d2@2 f2@2", AG: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~",
  AH: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ e1 ~", AI: "a1 ~ g1 ~ a1 ~@11", AJ: "d1/5",
})).s("gm_electric_bass_finger").gain(0.7)

// chords · synth strings 1 · "#OB.Strin"
const synth_strings_1 = note("<A@2 B C A@2 B D E ~@86 F ~@25 G@5>".pickRestart({
  A: "[[d2,d4,f4,a4,d5]@4 [f2,c4,e4,a4,c5]@3 [g2,b3,d4,g4,b4]@9]/2", // Dm Fmaj7 G
  B: "[bb3,d4,f4,bb4]@3 [c4,d4,f4,c5]@3 [bb3,d4,f4,bb4]@2, bb2", C: "d4 [a1,db4], [a2,a3,e4,a4]", D: "[a2,a3,d4,e4,a4]",
  E: "[a2,a3,db4,e4,a4]", F: "[a4,db5,e5]", G: "[d1,d2]/5",
})).s("gm_synth_strings_1").gain(0.19).pan(0.9)

// chords · pad warm · "Warm Pad"
const pad_warm = note(`<
  A@2 B C ~@14 D E@2 F D E@2 F G@2 H@2 G@2 I J K ~@9 D E@2 F D E@2 F G@2 H@2 G@2 I J K ~@17 L M N O L M P Q@2 ~@8 R ~@26
  S@3 ~
>`.pickRestart({
  A: "[[d4,a4,d5]@8 [d4,a4,c5]@6 [d4,g4,b4]@17 ~]/2", B: "[d4,f4,bb4]@3 [d4,f4,c5]@3 [d4,f4,bb4]@2",
  C: "d4 db4, [e4,a4]", D: "[d3,a3,d4,f4,a4]", E: "[[d4,g4,b4,d5]@8 [g4,bb4,d5,g5]@3 [d4,g4,bb4,d5]@5, g3]/2",
  F: "d5 db5, [a3,e4,a4,e5]", G: "[[d4,f4,bb4]@7 [db4,e4,a4]@9]/2",
  H: "[[f4,a4,d5]@4 [f4,a4,c5]@3 [d4,g4,b4]@4 [d4,g4,c5]@2 [d4,g4,b4]@3]/2", // Dm F G Csus2 G
  I: "[f4,bb4,d5]@4 [f4,bb4,d5] [f4,bb4,d5]@3", J: "f5@3 g5@3 a5@2, [a4,d5]", K: "d5 db5, [a4,a5]",
  L: "[bb3,d4,f4,bb4]", M: "[c4,f4,a4,c5]", N: "[g3,bb3,d4,g4]", O: "[a3,c4,f4,a4]", P: "[g3,d4,g4,b4]",
  Q: "[d4 db4, [a3,e4,a4]]/2", R: "[a3,db4,e4,a4]", S: "[~ d5@11]/3",
})).s("gm_pad_warm").gain(0.22)

// chords · piano · "#A.Piano"
const piano_2 = note("<A@2 B C ~@122>".pickRestart({
  A: "[[a5,d6,f6]@4 [a5,c6,e6]@3 [g5,b5,d6]@9]/2", B: "[d5,f5,bb5]@6 [d5,f5,c6]@5 ~ [d5,f5,bb5]@4",
  C: "[d5,e5,a5] [db5,e5,a5]", // Dsus2 A
})).s("gm_piano").gain(0.33)

// chords · synth brass 1 · "Syn.Brass"
const synth_brass_1 = note(`<
  ~@9 A B C D E F G H I ~@17 A B C D E F G H I ~@17 A B C D A B C D A B C D E F G H I ~@9 A B C D E F G J K A B C D A B
  C D A B C D A B C D A B C D E F G L I ~@5
>`.pickRestart({
  A: "[f4,a4,d5] ~@3 [f4,a4,d5] ~@3 [e4,a4,c5] ~ [e4,a4,c5] ~@3 [d4,g4,b4] ~", // Dm Am G
  B: "~@2 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,c5] ~ [d4,g4,b4] ~@3", // G Csus2 G
  C: "[d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,c5] ~ [d4,f4,bb4] ~@3 [d4,e4,a4] ~", // Bb Dm7 Bb Dsus2
  D: "~@2 [d4,e4,a4] ~@3 [db4,e4,a4] ~@3 [d4,e4,a4] ~ [db4,e4,a4] ~@3", // Dsus2 A Dsus2 A
  E: "[f4,a4,d5] ~ [f4,a4,d5] ~ [e4,a4,c5]!2 ~ [d4,g4,b4]", F: "~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,c5] [d4,g4,b4] ~",
  G: "[d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,c5] [d4,f4,bb4] ~ [d4,e4,a4]", // Bb Dm7 Bb Dsus2
  H: "~ [d4,e4,a4] ~ [d4,e4,a4] ~ [d4,e4,a4] ~ [db4,e4,a4]", // Dsus2 A
  I: "~ [db4,e4,a4] ~ [db4,e4,a4] ~ [d4,e4,a4] [db4,e4,a4] ~", J: "~ [d4,e4,a4] ~ [d4,e4,a4] ~ [d4,e4,a4] ~ [d4,e4,a4]",
  K: "[db4,e4,a4] ~@3", // A
  L: "~@2 [d4,e4,a4]@2 ~@2 [d4,e4,a4]@2 ~@2 [d4,e4,a4]@2 [db4,e4,a4] ~ [db4,e4,a4]@2, ~@6 db4 ~@9", // Dsus2 A
})).s("gm_synth_brass_1").gain(0.36)

// other · lead 8 bass lead · "#Fat&Perk"
const lead_8_bass_lead = note(`<
  ~@9 A B C D A B C D@2 E F@2 G E F@2 H I J K L M N O P Q A B C D A B C D@2 E F@2 G E F@2 H I J K L M N O P Q A B C D A
  B C D A B C D A B C D@2 ~@9 A B C D A B C D ~ A B C D A B C D A B C D A B C D A B C D A B C D@2 ~@5
>`.pickRestart({
  A: "d3 a3 d4 a4 ~ d3 a3 g4 ~ d3 g3 d4 g4 d4 g3 d3", B: "g3 d3 g3 g4 ~ g3 d3 g3 d4 g3 d3 g3 g4 d4 g3 d3",
  C: "bb3 f3 bb3 f4 ~ f3 bb3 f4 bb4 bb3 f3 bb3 f4 d4 bb3 f3", D: "a3 e3 a3 e4 a4 e4 db4 a3 a4 e4 a3 e3 a3 e3 a3 e3",
  E: "d3 a3 d4 f4 d3 a3 d4 f4 d3 a3 d4 f4 d3 a3 d4 f4", F: "d3 g3 d4 g4 d3 g3 d4 g4 d3 g3 d4 g4 d3 g3 d4 g4",
  G: "e3 a3 db4 e4 g4 e4 db4 a3 e4 db4 a3 db4 e4 db4 a3 e3", H: "e3 a3 db4 a3 a4 e4 db4 a3 e4 db4 a3 e3 db4 a3 e3 db3",
  I: "f3 bb3 d4 f4 f3 bb3 d4 f4 f3 bb3 d4 f4 f3 bb3 d4 f4", J: "e3 a3 db4 e4 e3 a3 db4 e4 e3 a3 db4 e4 a4 e4 db4 a3",
  K: "d3 a3 d4 f4 d3 a3 d4 f4 c3 a3 d4 f4 c3 a3 d4 f4", L: "g3 d4 g4 d5 g3 d4 g4 d5 g3 d4 g4 g3 b4 g4 d4 g3",
  M: "bb3 d4 f4 bb4 bb3 d4 f4 bb4 bb3 d4 f4 bb4 bb3 d4 f4 bb4",
  N: "a3 db4 e4 a4 a3 db4 e4 a4 a3 db4 e4 a4 a3 db4 e4 a4", O: "g3 bb3 d4 g4 bb4 g4 d4 bb3 g4 d4 bb3 g3 d4 bb3 g3 d3",
  P: "d3 a3 d4 f4 a4 f4 d4 f4 d4 f4 d4 a3 d4 a3 f3 d3", Q: "e3 a3 db4 e4 a4 e4 db4 a3 db5 a4 e4 db4 e4 db4 a3 e3",
})).s("gm_lead_8_bass_lead").gain(0.14)

// other · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@9 A@2 B C D@2 B E@2 ~@17 A@2 B C A@2 B E@2 ~@17 A@2 B C A@2 B C A@2 B C A@2 B E@2 F G H I F G J K L A@2 B C D@2 B M
  N A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C ~@6
>`.pickRestart({
  A: "[d6@4 a6@3 g6@9]/2", B: "f6", C: "e6", D: "[f6@4 d6@2 a6 g6@6 f6 g6@2]/2", E: "e6/2", F: "[bb4,d5]", G: "[a4,c5]",
  H: "[g4,bb4]", I: "c5 f5, a4", J: "[b4,d5]", K: "[d5,e5]", L: "[db5,e5]@15 ~", M: "a5", N: "~@3 a4, a6, ~@3 a3@5",
})).s("gm_string_ensemble_1").gain(0.24)

// other · orchestra hit · "Orch.Hit"
const orchestra_hit = note("<~@12 A@2 B C D E ~@69 F B C G F B C H I ~@30>".pickRestart({
  A: "[~@15 d4@4 ~ d4@2 ~@2 a3 ~ a3 ~@3 g3@2]/2", B: "~@2 g3@2 ~@2 g3@2 ~@2 f3 ~ g3 ~@3",
  C: "bb3@2 ~@2 bb3@2 ~@2 c4 ~ bb3@2 ~@2 a3@2", D: "~ a3 ~ a3 ~ a3 ~ g3", E: "~@2 a3@2 ~@2 a3@2 ~@2 bb3@2 a3 ~@3",
  F: "d4@2 ~@2 d4@2 ~@2 a3 ~ a3 ~@3 g3@2", G: "~ a3 ~ a3 ~ a3 ~@2", H: "~@2 a3@2 ~@2 a3@2 ~@2 a3@2 ~@2 g3 ~",
  I: "a3 ~@7",
})).s("gm_orchestra_hit").gain(0.36).pan(0.6)

// other · tenor sax · "#Tenor Sa"
const tenor_sax = note("<~@104 A@3 B@2 C D E@2 F G H I J@3 K ~@5>".pickRestart({
  A: "[~@2 d5!2 f5@22 d5 ~ f5 d5 ~ f5@5 d5 c5 d5@10]/3", B: "[a5@2 a5@2 a5 f5 d5@6 ~@4, g5 ~@3 g5 ~@3 g5 ~@23]/2",
  C: "~@9 d4 c5 d5 g4@2 f4 d4", D: "f4@2 [gb4,g4] ~@10 d5 f5@2", E: "[g5 ~@5 g5@24 ~@2]/2",
  F: "a4 a3 d4 f4 a4 ~ d5 e5 f5 ~ e5 ~ d5@4", G: "~ d4 c5 d5 g4@2 f4 d4 f4@2 g4 ~@5", H: "~@9 c5 d5 e5 f5 c5 d5 e5",
  I: "f5 ~ f5 ~ e5 ~ e5 ~ d5@8", J: "[d6@17 a5 ~ g5 ~ f5 ~ d5]/3", K: "~@2 g4@3 ~ [d4,f4] g4@8 ~",
})).s("gm_tenor_sax").gain(0.48).pan(0.6)

// other · pad new age · "Fantasia"
const pad_new_age = note("<~@26 A ~ B ~@23 A ~ B ~@71>".pickRestart({
  A: "bb5 ~@9 bb5 ~@3 a5 ~", B: "a5 ~@3 g5 ~@3 f5 ~ a5 ~@3 g5 ~",
})).s("gm_pad_new_age").gain(0.32)

// chords · lead 8 bass lead · "#Fat&Perk"
const lead_8_bass_lead_2 = note("<~@44 A B C D A B C D E F A G E F H I D ~@65>".pickRestart({
  A: "[d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~@9", B: "[b3,d4,g4] ~@2 [b3,d4,g4] ~@2 [b3,d4,g4] ~@9",
  C: "[bb3,d4,f4] ~@2 [bb3,d4,f4] ~@2 [bb3,d4,f4] ~@9", // Bb
  D: "[a3,db4,e4] ~@2 [a3,db4,e4] ~@2 [a3,db4,e4] ~@3 [a3,db4,e4] ~@2 [a3,db4,e4] ~@2", // A
  E: "[d4,f4,bb4] ~@2 [d4,f4,bb4] ~@2 [d4,f4,bb4] ~@9", F: "[db4,e4,a4] ~@2 [db4,e4,a4] ~@2 [db4,e4,a4] ~@9",
  G: "[b3,d4,g4] ~@2 [b3,d4,g4] ~@2 [b3,d4,g4] ~@3 [b3,d4,g4] ~@2 [b3,d4,g4] ~@2", // G
  H: "[bb3,d4,g4] ~@2 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~@9", // Gm
  I: "[a3,d4,f4] ~@2 [a3,d4,f4] ~@2 [a3,d4,f4] ~@3 [a3,d4,f4] ~@2 [a3,d4,f4] ~@2", // Dm
})).s("gm_lead_8_bass_lead").gain(0.29)

// drums · kick
const kick = s("bd").struct(`<
  ~@9 A@4 B A@3 C A@3 D A@3 C A@3 D A C A@2 E B A@3 B A@3 C A@3 D A@3 C A@3 D A C A@2 E B A@3 B A@3 B A@3 B A@3 C A@2 C
  A@4 C E A@8 F B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 C F G ~@3
>`.pickRestart({
  A: "x!4", B: "~ x!4 ~ x ~", C: "x ~ x ~ x ~ x!2", D: "x ~ x ~ x!4", E: "x!8", F: "x", G: "~ x ~@2",
})).gain(0.64)

// drums · clap
const clap = s("cp").struct("<~@8 [~@3 x] [~ x ~ x]!77 ~ [~ x ~ x]!34 ~@5>").gain(0.72)

// drums · hihat
const hihat = s("hh").struct("<~@9 [x!4]!69 ~@18 [x!4]!25 ~@5>").gain(0.4)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@78 [x!16]!4 ~@3 [x!16]!2 ~@39>").gain(0.08)

// drums · open hat
const open_hat = s("oh").struct("<~@9 [~ x ~ x ~ x ~ x]!69 ~@18 [~ x ~ x ~ x ~ x]!25 ~@5>").gain(0.56)

// drums · crash
const crash = s("cr").struct("<~@9 A@17 B A@16 C B A@7 B A@24 D ~@2 E F ~@13 A@25 C F ~@4>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "x!2 ~ x ~ x ~ x", C: "~ x ~ x!3 ~ x", D: "~@2 x ~@2 x!2 ~@3 x ~@2 x!2 ~", E: "~@7 x",
  F: "x",
})).gain(0.56)

// drums · tambourine
const tambourine = s("tb").struct("<~@13 [x!16]!65 [x!8]!18 [x!16]!25 ~@5>").gain(0.32)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~@9 A ~ A ~ A ~ A@2 ~ A ~ A@2 ~ A ~ A@2 ~ A ~ A@2 ~ A ~ A ~ A ~ A ~ A ~@2 A ~ A@2 ~ A ~ A@2 ~ A ~ A@2 ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~@11 A ~ A ~ A ~ A ~ A@2 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@7
>`.pickRestart({
  A: "~@10 x!2 ~@4",
})).gain(1.62)

// … 8 more lines

More by Gordon