Strudelify

Soul Deep

Stansfield Lisa

KeyC majorTempo98 bpm
0:00/0:00
// Soul Deep — Stansfield Lisa
// 98 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 101 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(98/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 · clavinet
const clavinet = note(`<
  A B A C A C D ~ E F G H I J K H ~@4 L M N O P Q R S E F G H I J K H ~@4 L M N O L M N O ~@6 R ~ L M N O L M N O ~@4 L
  M N O P Q T U V M N O P W X Y V M N O P Q Z AA L M N O P Q T U AB
>`.pickRestart({
  A: "g3@3 ~ g3@3 f3 ~ f3 f3@3 ~ f3 g3", B: "c3@3 ~ c3@2 ~ c3 ~ c3 c3@2 f3 g3 a#3@2",
  C: "c3@3 ~ c3@3 c3 ~ c3 c3@2 f3 g3 a#3@2", D: "[g1,g2,d3,g3]@5 ~@11",
  E: "[f3,a#3] d3 ~ d3 a#3 d3 [f3,a#3] d3 ~ d3 ~ d3 [f3,a#3] d3 [c3,f3,a#3] d3", // A#5 Fsus4
  F: "[e3,a#3] c3 ~ c3 a#3 c3 [e3,a#3] c3 ~ c3 [e3,a#3] c3 a#3 c3 [e3,a#3] c3", // Edim
  G: "[f3,a#3] d3 a#3 d3 [f3,a#3] d3 [f3,a#3] d3 ~ d3 [c3,a#3] d3 [f3,a#3] d3 [c3,f3,a#3] d3", // A#5 C7 A#5 Fsus4
  H: "[e3,a#3] c3 ~ c3 [e3,a#3] c3 [e3,a#3] c3 ~ c3 [e3,a#3] c3 [e3,a#3] c3 [e3,a#3] c3", // Edim
  I: "[f3,a#3] d3 ~ d3 [f3,a#3] d3 [c3,f3,a#3] d3 ~ d3 [c3,f3,a#3] d3 [f3,a#3] d3 ~ d3", // A#5 Fsus4 A#5
  J: "[e3,a#3] c3 ~ c3 [e3,a#3] c3 [e3,a#3] c3 a#3 c3 ~ c3 [e3,a#3] c3 [e3,a#3] c3", // Edim
  K: "[f3,a#3] d3 ~ d3 [f3,a#3] d3 [f3,a#3] d3 ~ d3 f3 d3 [f3,a#3] d3 [f3,a#3] d3", // A#5
  L: "g2 b3 ~ f3 [b3,d4] f3 g2 [f3,b3,d4] d2 [f3,a3,c4] ~ f3 [a3,c4] f3 d2 [f3,a3,c4]", // Bm Bdim F Am F
  M: "c2 [e3,a#3,c4] ~ e3 [a#3,c4] e3 c2 [e3,a#3,c4] ~ [e3,a#3,c4] ~ e3 [e3,a#3,c4] c2 ~ [e3,a#3,c4]", // C7 A#sus2 C7
  N: "g2 [f3,b3,d4] ~ f3 [b3,d4] f3 ~ [b3,d4] ~ [a3,c4] ~ f3 [a3,c4] f3 ~ [f3,a3,c4], ~@6 g2@2 d2@3 ~@3 d2@2", // Bdim Bm Am F
  O: "~ [e3,a#3,c4] ~ e3 [a#3,c4] e3 ~ [e3,a#3,c4] ~ [a#3,c4]@2 e3 [a#3,c4] ~ e3 [a#3,c4], c2@3 ~@3 c2@5 ~@2 c2@2 ~", // C7 A#sus2 C7 A#sus2
  P: "g2 [f3,b3,d4] ~ f3 [b3,d4] f3 g2 [f3,b3,d4] d2 [a3,c4] ~ f3 [a3,c4] f3 d2 [f3,a3,c4]", // Bdim Bm Bdim Am F
  Q: "~ [e3,a#3,c4] ~ e3 [a#3,c4] e3 ~ [e3,a#3,c4] ~@2 e3 ~ [a#3,c4] ~ e3 [a#3,c4], c2@3 ~@3 c2@3 [a#3,c4]@2 ~@2 c2@2 ~", // C7 A#sus2 C7 A#sus2
  R: "[g2,d3,g3] ~@3", S: "~@9 f2@2 g2 ~ a#2 ~ c3",
  T: "[g2,d3,d4,g4] g3 d4 [d4,g4] g3 d4 [d4,g4] ~ d4 [d4,g4] [g2,d3] d4 [g2,d3,d4,g4] g3 [f2,d4] [d4,g4]", // G5 Dm G5
  U: "g2 [d4,g4] ~ g3 [d4,g4] g3 [g2,d3] [d4,g4] ~ g3 [d4,g4] g3 [g2,d3] [d4,g4] f2@2, ~@14 g3 ~", // G5
  V: "g2 [b3,g4] ~ f3 [b3,d4] f3 g2 [f3,b3,d4] d2 [f3,a3,c4] ~ f3 [a3,c4] f3 d2 [f3,a3,c4]", // Em Bm Bdim F Am F
  W: "~ [e3,a#3,c4] ~ e3 [a#3,c4] e3 ~ [e3,a#3,c4] ~@2 e3 ~ [a#3,c4] ~ e3 [g2,d3,a#3,c4], c2@3 ~@3 c2@3 [a#3,c4]@2 ~@2 c2@2 ~", // C7 A#sus2 C7 A#sus2 Gm A#sus2
  X: "[d4,g4] g3 d4 [d4,g4] [g2,d3,g3] d4 [d4,g4] ~ g2 [d4,g4] ~ g3 [d4,g4] [d3,g3] [d4,g4] g3, ~@7 f2", // G5
  Y: "g2 [d4,g4] ~ g3 [d4,g4] g3 ~ [d4,g4] ~ g3 [d4,g4] g3 [g2,d3] [d4,g4] [g2,g3] [d3,d4,g4], ~@6 [g2,d3]@3 ~@7", // G5 G G5
  Z: "[g2,d3,d4,g4] g3 d4 [d4,g4] ~ d4 [d4,g4] g3 ~ [d4,g4] ~ g3 [d4,g4] [d3,g3] [d4,g4] g3, ~@7 f2", // G5
  AA: "g2 [d4,g4] ~ g3 [d4,g4] g3 ~ [d4,g4]@2 [d3,g3] [d4,g4] g3 [g2,d3] [d4,g4]@2 g3, ~@6 [g2,d3]@3 ~@4 g3 ~@2", // G5
  AB: "[g2,d3,g3]@3 ~ [g2,d3,g3]@4 ~@8", // G5
})).s("gm_clavinet").gain(0.31).pan(0.4)

// chords · clavinet · soft notes
const clavinet_soft = note(`<
  ~@8 A B C B D E F G ~@4 H ~ I J ~@4 A B C B D E F G ~@4 H ~ I J H ~ I J ~@8 H ~ I J H ~ I J ~@4 H ~ I J ~@2 K ~ H ~ I
  J ~@2 L ~ H ~ I J ~@4 H ~ I J ~@2 K ~@2
>`.pickRestart({
  A: "~@2 [c3,a#3] ~@3 c3 ~ a#3 ~ [c3,a#3] ~@5", B: "~@2 [e3,a#3] ~@5 [e3,a#3] ~@7", C: "~@2 c3 ~@3 c3 ~ a#3 ~ f3 ~@5",
  D: "~@2 [c3,a#3] ~@5 a#3 ~@5 [c3,a#3] ~", E: "~@2 [e3,a#3] ~@5 e3 ~ [e3,a#3] ~@5",
  F: "~@2 [c3,a#3] ~@3 c3 ~ a#3 ~ [c3,a#3] ~@3 c3 ~", G: "~@2 [e3,a#3] ~@5 [e3,a#3] d3 ~@6", H: "~ f3 ~@14",
  I: "~@8 f3 ~@7", J: "~@9 e3 ~@6", K: "~@7 g3 ~@2 g3 ~@5", L: "~@7 g3 ~@8",
})).s("gm_clavinet").gain(0.18).pan(0.4)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@8 A B C D E B F G H I J K L M N O L P Q ~ A B C D E B F G H I J K L M N O L M N O ~@6 R ~ S T L U V W X Y Z I J K N
  M N O L P Q ~ L M N O L P AA AB@2 M N O L P AC@2 N M N O L P AD AE AF
>`.pickRestart({
  A: "g1@4 g1@2 ~ d1 ~ d1 d1@4 ~ d1", B: "c1@3 ~ c1@3 c1 ~ c1 e1@2 f1@2 f#1@2", C: "g1@4 g1@3 d1 ~ d1 d1@3 d1@2 d1",
  D: "c1@3 ~ c1@3 c1 ~ c1 c1@2 c2 b1 c2 d2", E: "g1@4 g1@3 d1 ~ d1 d1@4 ~ d1", F: "g1@3 ~ g1@3 d1 ~ d1 d1@2 ~ d1@2 d1",
  G: "c1@3 ~ c1@3 c1@2 c1 e1@2 g1@4", H: "~@2 a2 c3 d3@3 c3 a2@4 ~@3 c2", I: "~ c2@5 ~ c2 ~ c2 c2@2 ~ c2@3",
  J: "~@2 a2 c3 d3@3 c3 a2@5 ~@2 c2", K: "~ c2@4 ~ c2 e2 f2 e2 d2 c2@2 b1 f1@2", L: "g1@3 ~ g1@3 d2@2 d2 d2@4 b1@2",
  M: "c2@4 c2@2 ~ c2@3 a#1@2 a1@2 f1@2", N: "g1@3 ~ g1@3 d2@2 d2 d2@4 b1 d2", O: "c2@3 ~ c2@3 c2@3 e1@2 f1@2 f#1@2",
  P: "c2@3 ~ c2@2 ~ c2@3 a#1@2 a1@2 f1@2", Q: "g1@3 ~@5", R: "g1 ~@3", S: "g1@3 ~ g1@3 d1 ~ d1 d1@4 b0 ~",
  T: "c1@4 c1@2 ~ c1@2 c1 e1@2 f1@2 f#1@2", U: "c2@3 ~ c2@3 c2@2 ~ a#1@2 g1 ~ f1@2", V: "g1@3 ~ g1@3 d2 ~ d2 d2@4 b1@2",
  W: "c2@4 c3@3 a#2 ~ a#2 c3 g2 a#2 e2 f2 f#2", X: "g2 d2 g1@5 d2 ~ d2 d2@4 b1@2",
  Y: "c2 ~ c2@2 c3@3 c3@3 b1@2 a#1@2 g#1@2", Z: "d1@2 a2 c3 d3@3 c3 a2@4 ~@3 c2",
  AA: "g1 ~ g0 ~@2 d1 ~ g1 g0 d1 g0 ~@2 d1 ~ g0",
  AB: "[g1 d1 f1 d1 ~ a#1@2 f1 c2 f1 c#2 g1@2 d2 g1 g2@5 g1@3 d2@2 d2 d2@4 b1@2]/2",
  AC: "[g1@3 ~@2 d1 f1 g1 ~@5 d1 f1 a#1@2 g1@2 c2@2 ~@4 g1 c#2 d2 g2 d2 c2 f1]/2", AD: "g1@2 ~@5 g0 ~ f0 g0 ~@5",
  AE: "~ g0 ~ f0 g0 ~@4 g0 f1 g1 a#1 g1 f1 ~", AF: "g1@3 ~ g1@4 ~@8",
})).s("gm_electric_bass_finger").gain(0.44)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  ~@16 A B A C D E F G F G ~@10 A B A C D E F G D E F G ~@4 H E I ~@9 A B A C D E F G F G ~@2 D E F G F G ~@2 D E F G F
  G ~@2 D E F G F G ~@2 J
>`.pickRestart({
  A: "[d4,e4,f#4,a4]", B: "[c4,e4,g4,b4]", C: "[c4,e4,g4,b4]@15 ~", D: "[b3,d4,g4]@8 [c4,f4,a4]@7 ~",
  E: "[c4,e4,g4]@15 ~", F: "[b3,d4,g4] [c4,f4,a4]", G: "[c4,e4,g4]", H: "[b3,g4] [c4,f4,a4]", I: "[g3,d4,g4]@3 ~@13",
  J: "[g3,d4,g4]@3 ~ [g3,d4,g4]@3 ~@9", // G5
})).s("gm_synth_strings_1").gain(0.16).pan(0.2)

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  ~@20 A ~ A ~ A ~@15 A ~ A ~ A ~@3 A ~ A ~ A ~@15 A ~ A ~ A ~@3 A ~ A ~ A ~@3 A ~ A ~ A ~@12
>`.pickRestart({
  A: "[d4,g4,b4,d5]@7 [c4,f4,a4,c5]@8 ~", // G F
})).s("gm_epiano1").gain(0.25)

// other · clavinet
const clavinet_2 = note("<~@7 A B C D E D C D E ~@12 B C D E D C D E ~@65>".pickRestart({
  A: "~@9 e2 ~ f2 ~ f#2@2 ~", B: "g2@2 ~@4 f2 ~@7 a#2 c3", C: "c2 ~@5 a#2 ~@7 f2@2", D: "g2 ~@5 f2 ~@7 a#2 c3",
  E: "c2 ~@5 a#2 ~@5 a#2 a2 g2 f2",
})).s("gm_clavinet").gain(0.17).pan(0.1)

// chords · clavinet
const clavinet_3 = note(`<
  A B A C A B D ~ E F G H E I G J ~@12 E F G H E I G J ~@18 K L@2 M@2 N O P@3 Q ~@36
>`.pickRestart({
  A: "g3@3 ~ g3@3 f3 ~ f3 f3@3 ~ f3 g3", B: "c3@3 ~ c3@3 c3 ~ c3 c3@2 f3 g3 a#3@2",
  C: "c3@3 ~ c3@2 ~ c3 ~ c3 c3@2 f3 g3 a#3@2", D: "g3@3 ~@13",
  E: "~@5 [c4,e4,g4]@3 [a#3,d4,f4] ~ [a#3,d4,f4] ~@3 c4 a#3", // C A#
  F: "~@5 [c4,e4,g4]@3 [a#3,d4,f4] ~ [a#3,d4,f4] ~ [a#3,d4,f4] [c4,e4,g4] [a#3,d4,f4] ~", // C A# C A#
  G: "~@5 [c4,e4,g4]@3 [a#3,d4,f4] ~@5 c4 a#3", // C A#
  H: "~@5 [c4,e4,g4]@2 ~ [a#3,d4,f4] ~ [c4,e4,g4]@2 [a#3,d4,f4] ~ [c4,e4,g4] [a#3,d4,f4]", // C A# C A# C A#
  I: "~@5 [c4,e4,g4]@3 [a#3,d4,f4] ~@3 [a#3,d4,f4] [c4,e4,g4] [a#3,d4,f4] ~", // C A# C A#
  J: "~@5 [c4,e4,g4]@3 [a#3,d4,f4] ~ [c4,e4,g4]@2 [a#3,d4,f4] ~ [c4,e4,g4] [a#3,d4,f4]", K: "~@13 g3 a#3 f3",
  L: "[c4 f3 a#3 g3 ~@2 a#3 d3 f3 c3 ~ g2 c3 ~ a#2 f2@2 f2 a#2 g2 c3 g2 c#3 d3 g2 f3 g3 [g2,a2] a#3 [d3,f3] ~ a#3, ~@5 g3@2 ~@3 d3@2 ~ g2@2 ~@15 g3@2]/2", // Gsus2 Dm
  M: "[c4 ~ d4 [d4,f4] g3 [d4,g4] g3 [c4,f4]@2 g3 [c4,f4] g3 [c4,f4] ~ g3 f5@2 d4 [g4,d5,f5] ~@2 [g4,d5]@2 d4 [f4,g4,c5]@2 d4 [f4,a#4]@2 c4 [c4,f4]@2, ~ c#4@2 ~@10 [c4,f4]@2 c#5 ~@4 d4@3 ~@7 d#4 ~]/2", // Dm G5 F5 G7 G5 Fsus2 A#5 F5
  N: "~ [c#4,d4]@2 f3 c#4 f3 c4 f3@2 ~ [g#3,a#3] g3 ~ a#3@2 [d3,f3], g3@3 ~@6 f3@2 ~ d3@3 ~", // Dmaj7 G#sus2 Dm
  O: "[g3,a#3] a#3 c4 c#4 ~ f4 [g3,d4,g4]@2 [d4,g4]@2 g3 d4@2 ~ g3 [f4,a#4], ~@4 d4@2 ~@5 f4@4 ~, ~@13 [d4,g4]@2 ~", // Gm G5 A#5 G5
  P: "[a#4 ~@2 c#5 d5 c5 [g4,c#5] ~ [c5,g5] [g4,c5,c#5] ~ [c5,g5] [g4,c#5,g5] ~ [c5,g5] [g4,c5,c#5] ~ c5 [c5,c#5] ~ c5 [c5,c#5] ~ [c5,g5] [c5,c#5] ~@2 [c#5,f5] ~ [g4,c#5,f5]@2 ~ c5 [a#4,f5]!2 ~ [d4,a#4,f5]@2 d4 [g4,d5]@2 [f4,c5]@2 [d4,f4,a#4]@2 [d4,f4,a#4] ~ f4, g4@3 g5@2 ~ g5@2 ~ g5@2 ~@4 g5@3 ~@8 c5@2 ~@11 c#5 ~@8, ~ a#4@3 ~@14 [g4,g5]@3 [g4,g5]@3 [g4,g5]@3 g4@2 ~@2 [g4,c#5,f5]@2 ~@8 d4 ~ c4 ~@2 [d4,g4,a#4]@2, ~@2 c5@2 ~@3 d5@2 ~ d5@2 ~ d5@2 ~ d5@2 ~ d5@2 ~ d5@2 ~ d5@3 ~@20]/3", // Gdim C5 C C5 Gdim C5 C C#maj7 …
  Q: "~@4 [a3,b3,c4,d4,e4] [f3,g3] [a2,b2,c3] [d2,e2,f2,g2] [a1,b1,c2] ~@7, [d4,a4,d5]@5 [d3,e3]@2 ~@9, ~@3 [f4,g4]@2 ~@11", // Am Fsus2 Am Em7 Am D5 Dsus2 Fsus2
})).s("gm_clavinet").gain(0.27).pan(0.8)

// chords · pad poly · "POLYSYNTH"
const pad_poly = note(`<
  ~@16 A B A ~ C D C E F E G ~@9 A B A ~ C D C E C D C E ~@8 H I J K J K L M A B A ~ C D C E F E G N O D C E F E G ~ O D
  C E F E G ~ O D C E F E G ~@2
>`.pickRestart({
  A: "[d4,f#4,a4,e5,a5]@3 [d4,f#4,a4,e5,a5] ~@12", B: "~@10 d5 e5 ~ g5@2 ~",
  C: "[d4,g4]@7 [c4,f4] ~ [c4,f4] [c4,f4]@5 ~", D: "[c4,e4]@7 ~", E: "[c4,e4]@15 ~",
  F: "[d4,g4]@7 [c4,f4] ~ [c4,f4] [c4,f4]@6", G: "[d4,g4] ~@3", H: "[d4,g4,b4]@7 [c4,e4,f4,a4]@9", I: "[c4,e4,g4]@15 ~",
  J: "[b3,d4,g4]@7 [c4,e4,f4,a4]@9", K: "[c4,e4,g4]", L: "[b3,d4,g4]@7 [c4,e4,f4,a4]@8 ~", M: "[c4,e4,g4,b4]@15 ~",
  N: "~@7 g5 ~ f5 d5 c#5 ~ c5 a#4 g4", O: "~@7 [c4,f4] ~ [c4,f4] [c4,f4]@5 ~",
})).s("gm_pad_poly").gain(0.33).pan(0.7)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  ~@16 A B A ~ C D E D E D F ~@9 A B A ~ C D E D C D E D ~@6 G ~@9 A B A ~ C D E D E H F I C D E D E D F ~ C D E D E D F
  ~ C D E D E D F ~ J
>`.pickRestart({
  A: "[a4,d5,e5,a5]@3 [a4,d5,e5,a5] ~@12", B: "~@10 d5 e5 ~ g5@2 ~",
  C: "[b4,d5,g5]@6 ~ [a4,c5,f5] ~ [a4,c5,f5] [a4,c5,f5]@6", D: "[g4,c5,e5]@15 ~",
  E: "[b4,d5,g5]@7 [a4,c5,f5] ~ c5 [a4,c5,f5]@5 ~", F: "[g4,d5,g5]@2 c5 [e4,f4,g4,a4,b4] [g3,a3,b3,c4,d4] [e3,f3] ~@10",
  G: "[g4,d5,g5]@2 [c5,d5,e5] [d4,e4,f4,g4,a4,b4] [g3,a3,b3,c4] ~@11", H: "[g4,c5,e5]@3 ~",
  I: "~@7 g4@2 [f4,f5] [d4,d5] [c#4,c#5] ~ [c4,c5] [a#3,a#4] [g3,g4], ~@7 g5 ~@8", J: "[g4,d5,g5]@3 ~ [g4,d5,g5]@4 ~@8",
})).s("gm_brass_section").gain(0.38).pan(0.6)

// chords · brass section · "BRASS 1" · soft notes
const brass_section_soft = note("<~@22 A ~ A ~@17 A ~@3 A ~@23 A ~ A ~@5 A ~ A ~@5 A ~ A ~@5 A ~ A ~@4>".pickRestart({
  A: "~@9 [a4,f5] ~@6", // Dm
})).s("gm_brass_section").gain(0.22).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  ~@6 A ~ B@7 C B@3 C B@7 C B@7 C B@3 C B@14 A ~ B@11 C B@7 C B@7 C B@7 C B@7 C D
>`.pickRestart({
  A: "x", B: "x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2", C: "x ~ x ~@2 x ~@2 x ~ x ~@4 x", D: "x!2 ~@2",
})).gain(0.38)

// drums · clap
const clap = s("cp").struct("<~@8 [~@3 x]!46 ~@2 [~@3 x]!44 ~>").gain(0.44)

// drums · snare
const snare = s("sd").struct(`<
  ~@7 A B C@3 D C@2 E D C@2 E D C@3 D C@2 E D C@3 D C@2 E D C@2 E D C@3 D C@3 D C@3 D C ~ A B C@3 D C@3 D C@2 E D C@3 D
  C@2 E D C@3 D C@2 E D C@3 D C@2 E D C@3 D C@2 E ~
>`.pickRestart({
  A: "~@15 x", B: "x ~@3 x ~@2 x ~ x ~@2 x ~@2 x", C: "~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x",
  D: "~@4 x ~@2 x ~ x ~@2 x ~@2 x", E: "~ x ~@2 x ~@2 x ~ x ~@2 x!3 ~",
})).gain(0.27)

// drums · hihat
const hihat = s("hh").struct(`<
  A@6 ~@2 B C D E F G F H F G F H B C D E F G F H B C D E F G F H F G F H B C D E B C D E B C D E F G ~@10 F G F H B C D
  E F G F H B C D E F G F H B C D E F G F H B C D E F G F H ~
>`.pickRestart({
  A: "x!4", B: "x ~@3 x!2 ~ x ~ x ~ x!2 ~@2 x", C: "x ~@3 x!2 ~ x ~ x ~ x!3 ~ x", D: "~ x ~@2 x!2 ~ x!3 ~ x!3 ~ x",
  E: "x!2 ~@2 x!2 ~ x ~ x ~ x!3 ~ x", F: "~ x ~@2 x!2 ~ x ~ x ~ x!5", G: "x!2 ~@2 x!2 ~ x!3 ~ x!2 ~ x!2",
  H: "~ x ~@2 x!2 ~ x!6 ~ x!2",
})).gain(0.44)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  A@6 ~@2 B C D E ~ F G ~@2 F G ~ B C D E ~ F G ~ B C D E ~ F G ~@2 F G ~ B C D E B C D E B C D E ~ F ~@11 F G ~ B C D E
  ~ F G ~ B C D E ~ F G ~ B C D E ~ F G ~ B C D E ~ F G ~@2
>`.pickRestart({
  A: "~@3 x ~ x ~ x", B: "~ x ~@6 x ~ x ~@3 x ~", C: "~ x ~@12 x ~", D: "~@7 x", E: "~@4 x!2 ~ x", F: "~@5 x ~@2",
  G: "~ x",
})).gain(0.22)

// drums · open hat
const open_hat = s("oh").struct("<~@6 x ~ [~ x ~@6]!46 ~@10 [~ x ~@6]!36 ~>").gain(0.44)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<[~ x ~@6]!6 ~@95>").gain(0.22)

// drums · crash
const crash = s("cr").struct(`<
  ~@7 A B ~@7 B ~@3 B ~@5 B ~ B ~@7 B ~@3 B ~@7 B ~@6 A B ~@7 B ~@3 B ~@5 B ~ B ~@5 B ~ B ~@5 B ~ B ~@5 B ~@2
>`.pickRestart({
  A: "~@15 x", B: "x",
})).gain(0.38)

// drums · ride
const ride = s("rd").struct("<~@8 [~ x ~ x ~ x ~ x]!46 ~@2 [~ x ~ x ~ x ~ x]!44 ~>").gain(0.38)

// … 48 more lines

More by Stansfield Lisa