Strudelify
I Swear cover art

1994 · All-4-One

I Swear

All-4-One

KeyD majorTempo84 bpm
0:00/0:00
// I Swear — All-4-One
// 84 bpm, 4/4, key D 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 80 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(84/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, A@4 for four bars: edit a riff to change every repeat.

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~@15 A B A C ~@2 D E F B G H A I J C K L M N ~@3 O P Q R S T U V P Q R W T X Y V Z AA AB AC AD AE AF AC AG AH AI AJ AK
  AL AM AN AO AP AQ AR AS AT AU ~@3
>`.pickRestart({
  A: "d1@15 ~", B: "b1 ~", C: "g1@7 ~ a1@8", D: "g#1@15 ~", E: "a1@7 ~@9", F: "d1@3 ~", G: "f#1@7 ~@9", H: "g1 ~",
  I: "b1@5 ~@3 b1@2 ~@6", J: "f#1@5 ~@11", K: "e1@13 ~ e1@2", L: "a1@13 ~ [f#1,g1] ~", M: "e1@5 ~ e1@10",
  N: "a1@5 ~ a1@10", O: "~@3 g1 a1@2 ~@2", P: "d1@5 ~ d1 ~ d1@8", Q: "b1@5 ~ b1@2 c#2@5 ~ c#2@2", R: "d2@3 d1 d1@4",
  S: "g1@5 ~ g1@2 a1@8", T: "b1@3 b1 b1@4", U: "g1@5 ~ g1@2 g1@8", V: "a1@5 ~ a1 ~ a1@4 a1@4",
  W: "g1@5 ~ g1@2 a1@6 a1@2", X: "a1@5 ~ a1 ~ a1@8", Y: "g#1@5 ~ g#1 ~ g#1@8", Z: "d1@4 ~@2 d1 ~ d1@3 ~@5",
  AA: "b1@2 ~ b1 b1@4", AB: "f#1@4 ~@2 f#1 ~ f#1@5 ~ f#1@2", AC: "g1@4 ~@2 g1@2 a1@3 ~ a1@4",
  AD: "d1@4 ~@2 d1 ~ d1@4 d2@2 c#2@2", AE: "b1@2 ~ b1 b1@2 ~ b1", AF: "f#1@4 ~@2 f#1 ~ f#1@4 ~@2 f#1@2",
  AG: "e1@5 e2@2 e1", AH: "a1@6 a1@8 g1 f#1", AI: "e1@2 ~ e1@3 e2 e1", AJ: "a1@5 ~ a1@6 a1@4",
  AK: "d2@4 ~@2 d2 ~ d2@2 d1 a1 d2@2 c#2@2", AL: "b1@4 ~@2 b1 ~ a1@4 ~@2 a1 ~", AM: "f#1@4 ~@2 f#1 ~ f#1@5 ~ e1 f#1",
  AN: "g1@5 ~ g1 ~ a1@3 ~ a1@3 ~", AO: "f#1@4 ~ f#1 a1 f#1 b1@3 ~ b1@3 ~", AP: "e1@4 ~@2 e1 ~ e1@3 ~@5",
  AQ: "c#2@2 ~ c#2 c#2@4", AR: "g#1@4 ~@2 g#1 ~ g#1@5 ~ g#1@2", AS: "a1@4 ~@2 a1@2 b1@3 ~ b1@4",
  AT: "e1@4 ~@2 e1 ~ e1@4 e2@2 d#2@2", AU: "c#2@2 ~ c#2 ~@4",
})).s("gm_fretless_bass").gain(0.4)

// bass · fretless bass · "FRETLESS" · soft notes
const bass_soft = note("<~@16 A ~@2 B C ~ D E F G D ~@2 H ~@5 I J K L ~@37 M N O ~>".pickRestart({
  A: "~ c#2", B: "b1@15 ~", C: "a1@15 ~", D: "~ a1", E: "~@3 d2", F: "~@8 b1@7 ~", G: "~@8 f#1@7 ~", H: "~@4 f#1 ~@3",
  I: "d2", J: "b1@11 ~ b1@4", K: "f#1@6 ~ f#1", L: "g1@6 ~@6 a1@3 ~", M: "~@4 c#2@2 ~ c#2",
  N: "g#1@4 ~@2 g#1 ~ g#1@4 ~@2 g#1@2", O: "a1@2 ~ a1 b1@2 b1@2",
})).s("gm_fretless_bass").gain(0.25)

// chords · pad warm · "WARM PAD"
const pad_warm = note(`<
  ~ A B C D@2 E C ~@27 F@2 G@2 ~@7 H I J K L@4 M@3 N@3 O P Q R Q S T U O V W X@3 Y@3 Z AA ~
>`.pickRestart({
  A: "[d3,d4,d5]", B: "[b2,b3,b4]", C: "[a2,a3,a4]", D: "[[d3,d4,d5]@15 ~ [b3,b4]@16, ~@15 b2@14 ~@3]/2",
  E: "~ f#2@15, [f#3,f#4]", F: "[d3@8 ~@4 d5 e5 f#5 b5, [a3,d4,f#4]@31 ~, ~ b2]/2",
  G: "[[f#2,a3,e4,a5]@15 ~ g3@7 d4@4 c#4@5, c#4@14 ~ [g2,b3,d4]@8 [a2,a3,e4]@9]/2", H: "[d3,f#3]",
  I: "[b2,g3] [c#3,b3]", J: "[d3,a3]", K: "[d3,g3,b3] [e3,a3,c#4]",
  L: "[f#3@32 g#3@16 b3@8 [a3,e4]@7 ~, d4@7 ~, b3@24 g3@7 ~]/4", M: "[d3 b2 [f#2,c#4,e4], a3@47 ~, f#4@31 ~@17]/3",
  N: "[[g2,g3,b3,d4]@8 d4@4 c#4@3 ~ d3@16 [b2,a3]@16, ~ a3@3 ~@2, ~ [a2,e4] [d4,f#4]@4]/3", O: "[f#2,a3,c#4,e4]",
  P: "[g2,g3,b3,d4] [a2,a3,c#4,e4]", Q: "[e2,g3,b3,d4]", R: "[a2,a3,c#4,e4]", S: "d4@3 c#4@4 ~, [a2,a3,e4]@15 ~",
  T: "[d3,a3,d4,f#4]", U: "[b2,b3,d4,f#4] [a2,a3,c#4,e4]", V: "[g2,g3,b3,d4]@7 [a2,a3,c#4,e4]@8 ~",
  W: "[f#2,a3,c#4,e4] [b2,b3,d#4,f#4], ~@8 c#4 ~@7", X: "[e3 c#3 [g#2,d#4,f#4], b3@47 ~, g#4@31 ~@17]/3",
  Y: "[[a2,a3,c#4,e4]@8 e4@4 d#4@3 ~ e3@16 [c#3,b3]@16, ~ b3@3 ~@2, ~ [b2,f#4] [e4,g#4]@4]/3", Z: "[g#2,b3,d#4,f#4]",
  AA: "[a2,a3,c#4,e4] [b2,b3,d#4,f#4]", // A B
})).s("gm_pad_warm").gain(0.07).pan(0.4)

// chords · string ensemble 2 · "SLOWSTRIN"
const string_ensemble_2 = note(`<
  ~@15 A B C D E@4 F@3 G@3 H I J K J L M@2 N@2 ~@7 O P Q R S@3 T ~@17 U@2 V@2 W X@3 ~
>`.pickRestart({
  A: "[d3,f#3]", B: "[b2,g3] [c#3,b3]", C: "[d3,a3]", D: "[d3,g3,b3] [e3,a3,c#4]",
  E: "[f#3@32 g#3@16 b3@7 ~ a3@7 ~, d4@55 e4@7 ~@2, b3@24 g3@7 ~]/4", F: "[d3 b2 [f#2,c#4,e4], a3@47 ~, f#4@31 ~@17]/3",
  G: "[[g2,g3,b3,d4]@8 d4@4 c#4@3 ~ d3@16 [b2,a3]@16, ~ a3@3 ~@2, ~ [a2,e4] [d4,f#4]@4]/3", H: "[f#2,a3,c#4,e4]",
  I: "[g2,g3,b3,d4] [a2,a3,c#4,e4]", J: "[e2,g3,b3,d4]", K: "[a2,a3,c#4,e4]", L: "d4@3 c#4@4 ~, [a2,a3,e4]@15 ~",
  M: "[d4@12 d4 e4 f#4 b4]/2", N: "[a4@7 ~]/2", O: "d5@5 e5 f#5 a5", P: "d6@2 c#6 b5", Q: "a5@6 d6 e6", R: "f#6@7 e6@9",
  S: "d6/3", T: "e6@9 d6 c#6 b5 a5 g5 f#5 e5", U: "[e6@6 d#6 c#6]/2", V: "b5/2", W: "e6@3 d#6",
  X: "[c#6@15 b5@10 ~ g#5@2 a5@2 b5@12 c#6@2 e6@2 f#6@2]/3",
})).s("gm_string_ensemble_2").gain(0.15).pan(0.6)

// chords · pad halo · "HALO PAD"
const pad_halo = note("<~ A B C D@4 ~@29 E F ~@41>".pickRestart({
  A: "d3", B: "b2", C: "~ e5 a5 d6@2 a5 e5 a4@2 e4 d4 a3@5, a2",
  D: "[f#4@16 b3@16 f#3@16 [a3,e4]@15 ~, d4@31 ~ d4@31 ~, ~@16 a4@47 ~]/4", E: "~@5 d6 a5 ~", F: "d6 a5 ~ d6 a5 ~ e6 ~",
})).s("gm_pad_halo").gain(0.09)

// chords · pad halo · "HALO PAD" · soft notes
const pad_halo_soft = note("<~@37 [~@7 e5] [~@4 e5@2 ~@4 e5@2 ~@2 e5 ~] ~@41>").s("gm_pad_halo").gain(0.05)

// other · alto sax
const alto_sax = note("<~@66 A B@2 C D ~@2 E@2 ~@5>".pickRestart({
  A: "~@2 a3 b3 d4!2 b3 d4@3 d4 ~@4 a4",
  B: "[b4@2 d5 ~ d5@2 a5@4 g5@2 f#5@2 e5@4 c#5@4 b4 a4 b4 a4@2 a4@4 ~, ~@18 b4 ~@13]/2",
  C: "b4@2 d5@2 d5 e5 b4@3 a4@3 a4 b4 f#4 e4, a4 ~@15", D: "f#4@5 f#4 a4 f#4 c#5@2 b4@5 ~",
  E: "[~@10 g#4 b4 c#5 d#5 b4@8 g#4 ~ g#4 a4 b4@2 ~@4, ~@23 b4@2 ~@7]/2",
})).s("gm_alto_sax").gain(0.42)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~@8 A B@2 C D@3 E F G H I J@2 K L M N O P Q R S T U V W X Y Z AA A B@2 C D@3 E F G H I J@2 K L M N O P Q R S T U V W
  AB AC AD AE AF AG AH AI AJ AK AL AM ~@2
>`.pickRestart({
  A: "~@3 f#5, d3@5 e5@3, ~ a3@7, ~ e4@3, ~@3 f#4@5",
  B: "[~@3 d5 [c#3,e5]@3 ~@2 a4@2 ~@3 [d4,f#5]@2, b2@9 ~@7 d3@8 [d3,d5]@8, d5@3 ~@4 f#5@5 ~ e5@3, ~@2 f#4@7 ~@5 a4@4 ~@14]/2", // C#m D
  C: "a4 ~@5 d5@2 [a3,a4,c#5]@4 [a3,a4,c#5,e5]@4, b4 ~, d5@3 ~@5, g3!2 ~@2, ~ g4@3 e4 ~@3", // A
  D: "[d5@8 ~@4 f#5@2 ~@8 g4@4 ~@12 d5@2 [a2,c#5]@7 ~, f#5@12 ~@2 f#5@14 f#5@4 ~@4 a4@11 ~, b4@6 ~@2 d5@6 [b4,d5]@8 [b4,d5]@11 ~ e4@7 ~@7, ~@7 g4@2 g4@2 ~@4 e5@5 ~@4, ~@4 g3!2 ~@6]/3", // A Bm
  E: "f#4 ~@6 d5, a4@3 [d4,a4], d3 d3@3, ~ f#4@4 f#4@3, ~@3 d5@4 ~", // D5
  F: "f#4 ~@5 d5@2 e4@2 ~@4 e4@2, b3 [c#4,c#5], d5@3 ~@5, b4!2 ~ a4, ~ f#4@3 ~ e4@2 ~", // C#
  G: "f#4 ~@5 f#4@4 f#4@2 f#4@2 f#4@2, [a4,d5]@3 [a4,d5]@3 [a4,d5]@2, d4 d4@3, ~ f#4@2 ~@5", // D5
  H: "[g4,a4] ~@5 [b4,d5]@2 e4 ~@5 e4@2, g3 [a3,c#5], [b4,d5]@3 ~ a4@2 a4@2, ~ g4@3 ~@4, ~@2 d4@2 ~ e4@2 ~", // Gsus2 Bm A Bm
  I: "f#4 ~@9 b4@2 [b4,d5,f#5]@4, b3, d5@3 d5@3 ~@2, b4@2 b4@3 ~@3, ~ f#4@7", // Bm
  J: "[f#4 ~@5 [f#4,a4,d5]@4 f#4@4 f#4@2 ~@12 [g#4,b4,d5]@4, [a4,d5]@3 ~@2 d5@7 g#3@4, a3@2 a3@6 g#3@3 f#5@5, ~ f#4@2 ~@2 a4@3 b4@2 b4@4 ~@2, ~@9 g#4@5 ~@2]/2", // D G#dim D5
  K: "e4 ~@5 [e4,a4,d5]@2 [e4,a4,c#5]@4 [e4,a4,c#5]@2 ~@2, [a4,d5]@3 ~@5, a3@2 a3@2 a3@3 ~, ~ e4@2 ~@5", // Dsus2 A D5
  L: "f#4@3 ~@3 [a4,d5]@2, [a4,d5]@3 ~, d3!2, ~@3 f#4@2 ~@3", M: "[b2,f#4,b4,d5]",
  N: "c#5@6 ~ f#4, [f#3,a4], f#4@5 ~@3", O: "[g3,g4,b4,d5] [a3,e4,a4,c#5]",
  P: "[f#4,a4,d5]@3 ~@3 d3@2, d3@3 ~, ~@3 [a4,d5]@5, ~@3 f#4@4 ~", Q: "[f#4,b4,d5]@3 [f#4,b4,d5]@5, b2",
  R: "[a4,c#5]@3 [a4,c#5]@3 [f#4,a4,c#5]@2, f#3, f#4@3 ~, ~@3 f#5@5", S: "[g3,g4,b4,d5] [a3,a4,c#5,e5]",
  T: "[e3,g4,b4,d5]", U: "[a3,e4,g4,a4,c#5]", V: "[e4,g4,b4,d5]@3 [e4,g4,b4,d5]@5, e3",
  W: "[e4,g4,b4,d5]@6 ~@6 e5@3 ~, a3@15 ~, ~@6 [e4,g4,a4,c#5]@9 ~", // Em7 A7
  X: "[d5,f#5]@2 [e5,g5] ~@4 a4, d3, d4@3 ~, a4 ~ a4@3 ~@3, ~@3 [d5,f#5]@5", // D Em D
  Y: "[d5,f#5]@2 g5 ~@2 b4 [b3,b4,f#5]@2, b2, b3@3 d5@5, b4 ~ e5@6, ~@2 b4 f#5 b3@2 ~@2", // D B5
  Z: "f#3@2 ~ f#4@2 f#4@2 f#4, e5, c#5@5 c#5@3, a4 ~@2 a4@5",
  AA: "~@6 g4@2 [a3,e4,a4,d5]@4 [e4,a4,c#5]@3 ~, [a4,d5] ~, g4@3 ~@5, g3!2 ~@2, ~ b4@3 ~@4", // Asus4 A D5
  AB: "f#4 ~@2 [a4,d5]@3 [a4,d5,f#5]@2, d4, [a4,d5]@6 f#4 ~@9, ~ d3@3", // D5 D D5
  AC: "b3@2 ~ f#5 a4 ~ a3@2, [b4,d5] c#5, f#5@3 ~ e5@3 ~, a4 ~@3 b3@4 a3@4 ~@4, ~@5 a4@3", // Bm
  AD: "[a4,c#5,e5]@3 [f#4,a4,c#5]@2 [f#4,a4,e5]@3, f#3", // A F#m F#m7
  AE: "b4@2 ~ d5 [a4,e5]@2 [a4,c#5,e5]@2, g3 a3, d5@3 ~@5, g4 ~@3 b4@4 ~@8", // A5 A
  AF: "f#4 ~@3 f#3@4 [b3,f#4,a4,d#5]@7 ~, [a4,c#5] ~, e5@3 ~@5, f#3 ~@3, ~ f#4@3 ~@4", // B7 A
  AG: "g#4@3 ~@3 [b4,e5]@2, [b4,e5]@3 ~, e3!2, ~@3 g#4@2 ~@3", AH: "[c#3,g#4,c#5,e5]",
  AI: "d#5@6 ~ g#4, [g#3,b4], g#4@5 ~ d#5@2", AJ: "[a3,a4,c#5,e5] [b3,f#4,b4,d#5]",
  AK: "[g#4,b4,e5]@3 ~@4 g#4, e3@3 e3, ~@3 [b4,e5]@5, ~@3 g#4@4 ~", AL: "[g#4,c#5,e5]@3 [g#4,c#5,e5]@5, c#3",
  AM: "[b4,d#5]@3 [b4,d#5]@3 ~@2, g#3, g#4@3 ~, ~@3 g#5@5", // B
})).s("gm_epiano2").gain(0.36).pan(0.3)

// chords · epiano2 · "E.PIANO 2" · soft notes
const epiano2_soft = note(`<
  ~@9 A B C D E F ~@8 G ~ H ~ I ~@3 J ~@3 K L M N ~ A B C D E F ~@8 G ~ H ~ I ~@3 J ~@3 O P ~ Q R S ~ T ~@3 U V ~
>`.pickRestart({
  A: "~@4 g4@4 ~@4 c#4@3 ~, ~@5 a4@2 ~", B: "~@6 a4@2 a4@7 ~, ~ d4@2 ~", C: "~@5 e4@3",
  D: "b3@2 ~@3 e5@2 ~, ~@2 b3@5 ~, ~@3 b4@4 ~", E: "~@5 g4@3, ~ g3", F: "~@12 a3@3 ~, a3@3 ~, ~@10 e4@5 ~",
  G: "~@5 f#4@3", H: "~@3 c#5, ~@5 f#4@2 ~", I: "~@7 f#4", J: "e4", K: "~ a4 ~@4 d4@2, ~@5 a4@2 ~", L: "~ b4 ~@6",
  M: "~ f#3@2 f#3, ~ a4@2 ~@5", N: "~@12 a3@3 ~", O: "~ f#4@2 ~@5", P: "~ a4@3 ~@3 e5", Q: "~ g4@3 c#5@2 ~@2",
  R: "~@3 e5 ~@4", S: "~@5 g#4@3", T: "~@5 g#4@2 ~", U: "~@3 [g#4,b4,d#5]", V: "[a3,a4,c#5,e5]@4 [b3,b4,d#5,f#5] ~@3",
})).s("gm_epiano2").gain(0.18).pan(0.3)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@39 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 E F G H I F J ~@3
>`.pickRestart({
  A: "~@3 a3@2 ~ a3!2 ~ a3!2 a3@2 ~ a3!2", B: "~@3 a3@2 ~ a3!2 ~@3 a3@2 ~ a3!2",
  C: "~@2 a3 a3@2 ~ a3!2 ~ a3!2 a3@2 ~ a3!2", D: "~@2 a3 a3@2 ~ a3!2 ~ a3 ~ a3@2 ~ a3!2",
  E: "~@2 a3 a3@2 ~ a3!2 ~ b3 ~ b3@2 ~ b3!2", F: "~@2 b3 b3@2 ~ b3!2 ~ b3 ~ b3@2 ~ b3!2",
  G: "~@3 b3@2 ~ b3!2 ~ b3!2 b3@2 ~ b3!2", H: "~@3 b3@2 ~ b3!2 ~@3 b3@2 ~ b3!2",
  I: "~@2 b3 b3@2 ~ b3!2 ~ b3!2 b3@2 ~ b3!2", J: "~@3 b3@2 ~ b3!2 ~ b3!2 ~@5",
})).s("gm_electric_guitar_muted").gain(0.09).pan(0.7)

// other · electric guitar muted · "MUTED GTR" · soft notes
const electric_guitar_muted_2 = note(`<
  ~@76
  [~@11 b3@2 ~ b3!2]
  [~@3 b3@2 ~ b3!2 ~@3 b3@2 ~ b3!2]
  [~@2 b3 b3@2 ~ b3!2 ~ b3!2 b3@2 ~ b3!2]
  ~
>`).s("gm_electric_guitar_muted").gain(0.03).pan(0.7)

// other · orchestral harp · "HARP"
const orchestral_harp = note("<~@22 A B ~@29 C B ~@15 D E ~@8>".pickRestart({
  A: "~@8 d6 [f5,g5,a5,b5,c6] [g4,a4,b4,c5,d5,e5] [c4,d4,e4,f4] [a3,b3,c4] [d4,e4,f4,g4,a4] [b4,c5,d5,e5] [f5,g5,a5,b5]", // F Cmaj7 Dm7 Am Dm Cmaj7 G7
  B: "d6 ~@7, c6 ~@15",
  C: "~@8 d6 [f5,g5,a5,b5,c6] [g4,a4,b4,c5,d5,e5] [b3,c4,d4,e4,f4] [a3,b3,c4] [d4,e4,f4,g4,a4] [b4,c5,d5,e5] [f5,g5,a5,b5]", // F Cmaj7 Bdim Am Dm Cmaj7 G7
  D: "~@8 e6 [g5,a5,b5,c#6,d6] [a4,b4,c#5,d5,e5,f#5] [c#4,d4,e4,f#4,g4] [b3,c#4,d4] [e4,f#4,g4,a4,b4] [c#5,d5,e5,f#5] [g5,a5,b5,c#6]", // G Dmaj7 C#dim Bm Em Dmaj7 A7
  E: "e6 ~@7, d6 ~@15",
})).s("gm_orchestral_harp").gain(0.12)

// drums · kick
const kick = s("bd").struct("<~@39 [x ~@2 x!2 ~@3]!14 [x ~@2 x ~ x ~@2] [x ~@2 x!2 ~@3]!25 ~>").gain(0.54)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@23 A ~ A ~ A ~ A ~ A ~ A ~@4 B ~@41>".pickRestart({
  A: "x", B: "~@5 x ~ x",
})).gain(0.3)

// drums · rim
const rim = s("rim").struct("<~@15 [~@3 x]!20 ~@3 [~@11 x!2 ~@3] ~@15 [~ x ~@2]!25 ~>").gain(0.48)

// drums · snare
const snare = s("sd").struct("<~@39 A ~ A@2 ~@2 A@2 ~ A@2 ~@2 A B A@11 C A@4 C A@8 ~>".pickRestart({
  A: "~@3 x", B: "~@2 x!2", C: "~@11 x!2 ~@3",
})).gain(0.54)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@15 A@8 B@12 C@4 D E D F D E D@2 E D F D E D G H I J K E D@2 E L M I N L M I N L H I J K E D@2 E ~
>`.pickRestart({
  A: "~ x ~@2", B: "x!8", C: "x!4", D: "x ~ x!3 ~ x ~ x ~ x!2 ~@2 x ~", E: "x ~ x!3 ~ x ~ x ~ x!3 ~ x ~",
  F: "x ~ x!3 ~ x ~ x ~ x!4 ~@2", G: "x ~ x!3 ~@5 x ~@5", H: "~@2 x ~ x ~ x ~ x ~ x!3 ~ x ~",
  I: "x ~ x!3 ~ x ~ x ~ x!2 ~ x!3", J: "x ~ x ~ x ~ x ~ x ~ x!6", K: "x ~ x!3 ~ x ~ x ~ x!2 ~@2 x!2",
  L: "x ~ x!3 ~ x ~ x ~ x!2 ~ x!2 ~", M: "x ~ x!3 ~ x ~ x ~ x!6", N: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~",
})).gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct("<~@53 [~@14 x!2] ~@11 [~@14 x!2] ~@14>").gain(0.3)

// drums · open hat
const open_hat = s("oh").struct("<A ~@37 A B ~@13 C D ~ D ~@14 D ~ D ~@6>".pickRestart({
  A: "~@7 x", B: "x", C: "~@6 x ~@4 x ~@4", D: "~@3 x ~@12",
})).gain(0.18)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@38 [~@13 x!2 ~] ~@41>").gain(0.06)

// drums · high tom
const high_tom = s("ht").struct("<~@65 [~@13 x ~@2] ~@14>").gain(0.3)
// … 17 more lines

More by All-4-One