Strudelify

I'll Be Over You

Toto

KeyB♭ majorTempo82 bpm
0:00/0:00
// I'll Be Over You — Toto
// 82 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// 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(82/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 · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  A B@2 C@2 D@4 B@2 C@2 E@4 F G H I J K L M N O@3 B@2 P@2 E@4 F G H I J Q L R S T@3 U V W X Y Z J K L M N AA J K L R N
  AA J Q L R N AA J K L R N AB ~
>`.pickRestart({
  A: "~@8 [f3,g3,bb3]@3 [f3,a3,c4]@3 [f3,bb3,d4]@2", // Gm7 F Bb
  B: "[[f3,bb3,d4]@3 [g3,bb3,eb4]@3 [g3,bb3,eb4]@17 ~ [f3,g3,bb3]@3 [f3,a3,c4]@3 [f3,bb3,d4]@2, eb2@3 ~]/2", // Bb Eb Gm7 F Bb
  C: "[[f3,bb3,d4]@3 [f3,a3,c4]@3 [f3,a3,c4]@17 ~ [f3,g3,bb3]@3 [f3,a3,c4]@3 [f3,bb3,d4]@2, f2@3 ~]/2", // Bb F Gm7 F Bb
  D: "[[f3,bb3,d4]@3 [g3,bb3,eb4]@3 ~@10 c2@8 bb3@3 a3@3 f3@2 [bb2,f3,d4]@24 [f3,g3,bb3]@3 [f3,a3,c4]@3 [f3,bb3,d4]@2, eb2@2 ~ [eb2,eb3] ~@4, ~@6 [g3,bb3,eb4]@17 ~ f3@6 bb3@25 ~@9]/4", // Bb Eb Bb Gm7 F Bb Eb
  E: "[[f3,bb3,d4]@3 [g3,bb3,eb4]@3 ~@10 c2@8 bb3@3 a3@3 f3@2 [bb2,d4]@24 d4@3 eb4@3 f4@2, eb2@16 ~@8 [eb2,eb3]@8 f3@31 ~, ~@6 [g3,bb3,eb4]@17 ~ f3@6 bb3@33 ~]/4", // Bb Eb Bb Eb
  F: "[a3,c4,f4]@6 [a3,c4,g4] [a3,c4,f4]@9, a2", G: "[bb3,eb4,f4]@3 [bb3,eb4,f4]@3 [bb3,eb4,f4]@2 [bb3,eb4,f4]@8, g2",
  H: "[bb3,eb4,gb4]@3 [bb3,d4,gb4]@3 [bb3,c4,gb4]@2 [bb3,c4,gb4]@3 [bb3,d4,gb4]@3 [bb3,eb4]@2, gb2", // Ebm Bbaug Cm7b5 Bbaug Eb5
  I: "d4@3 c4@3 bb3@2 [e2,e3,g3,c4]@3 [gb2,gb3,a3,d4]@3 [a2,a3,c4,f4]@2, [f2,f4] ~, [f3,bb3]@3 ~@5", // C D F Bb5
  J: "[bb2,bb3,d4,f4]@7 ~ [bb2,a3,c4,f4]@7 ~", // Bb F
  K: "[bb2,g3,bb3,f4]@6 [g3,bb3,f4]@2 [a3,c4,f4]@3 [a3,c4] [bb3,d4]@2 [a3,c4,f4]@2, ~@8 bb2@7 ~, ~@11 f4@3 ~@2", // Gm7 F Am Bb F
  L: "[g2,bb3,d4,f4]@7 ~ [g2,a3,c4,f4]@7 d4", M: "[eb2,g3,bb3,f4]@7 d4 [a3,c4,f4]@3 d4@3 f4@2, ~@8 eb2@7 ~",
  N: "[c2,g3,bb3,eb4] [eb2,f3,bb3,d4]", // Cm7 Bb
  O: "[[f2,f3,a3,bb3,c4]@8 bb3@2 a3 g3@2 a3@2 ~ [bb2,f3,f4]@23 ~ [f3,g3,bb3]@3 [f3,a3,c4]@3 [f3,bb3,d4]@2, ~@8 [eb2,f3]@7 bb3@25 ~@8]/3", // F Bb5 Gm7 F Bb Ebsus2
  P: "[[f3,bb3,d4]@3 [f3,a3,c4]@3 [f3,a3,c4]@17 ~ [f3,bb3,d4]@3 [f3,a3,c4]@3 [f3,bb3,d4]@2, f2@3 d2]/2", // Bb F Bb F Bb
  Q: "[bb2,g3,bb3,f4]@6 [g3,bb3,f4]@2 [a3,c4,f4]@3 [bb3,d4,f4]@3 [a3,c4,f4]@2, ~@8 bb2@7 ~", // Gm7 F Bb F
  R: "[eb2,g3,bb3,f4]@7 d4 [a3,c4,f4]@3 [bb3,d4,f4]@3 [a3,c4,f4]@2, ~@8 eb2@7 ~", // Eb F Bb F
  S: "bb3@2 ~ bb3@5 d4@6 d4@2, [c2,g3,eb4] [eb2,f3,bb3]", // Cm Ebsus2
  T: "[[f2,f3,a3,bb3,c4]@8 bb3@2 a3 g3@2 a3@2 ~ bb2@23 ~@9, ~@8 [eb2,f3]@7 [f3,bb3,f4]@25 ~@8]/3", // F Ebsus2 Bb5
  U: "[ab3,c4,f4]@3 [ab3,c4,f4]@3 [ab3,c4,f4]@2 [ab3,c4,f4]@3 [ab3,c4,f4]@3 [ab3,c4,f4]@2, ab2", // Fm
  V: "c4@8 b3@5 ~ c4 d4, g2, [g3,d4,f4]@7 ~", // G7
  W: "[gb3,bb3,eb4]@3 [gb3,bb3,eb4]@3 [gb3,bb3,eb4]@2 [gb3,bb3,eb4]@3 [gb3,bb3,d4]@3 [gb3,bb3,c4]@2, gb2", // Ebm Gbaug Cm7b5
  X: "bb3@8 bb3@2 a3 g3@2 a3@3, [f2,f3,c4]", Y: "[c2,eb3,bb3,c4] [d2,f3,bb3,c4]",
  Z: "[f2,g3,bb3,d4]@8 [e2,e3,g3,c4]@3 [gb2,gb3,a3,d4]@3 [a2,a3,c4,f4]@2", // Gm7 C D F
  AA: "[f2,f3,a3,bb3,c4]@8 [e2,e3,g3,c4]@3 [gb2,gb3,a3,d4]@3 [a2,a3,c4,f4]@2", AB: "[f2,f3,a3,bb3,c4] ~",
})).s("gm_epiano2").gain(0.56)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~ A@2 B C A D E@2 A@2 F G A H I@2 J K L M N@2 O P Q R I@2 S A T U V W I@2 X K L M N@2 O P Q R I@2 Y Z AA AB AC AD N AE
  O AF Q AG N AH AI AJ Q AK N AL AI P AM AK N AN AO AP AM AK ~
>`.pickRestart({
  A: "eb1@15 ~", B: "f1@6 ~ f1 f2@8", C: "f1@8 f2@7 ~", D: "c1@7 ~ eb1@7 ~", E: "[bb1@31 ~]/2",
  F: "f1@6 ~ f1 f2@6 f1!2", G: "f1@8 f1@3 f2@5", H: "c1@7 ~ eb1@5 ~ eb1@2", I: "[bb1@3 ~]/2", J: "a1@15 ~",
  K: "g1@6 g1@2 g1@7 ~", L: "gb1@6 gb1@2 gb1@7 ~", M: "f1@6 f1@2 e1@2 ~ gb1@2 ~ a1@2", N: "bb1@3 bb1@2 ~ bb1@2 bb1@8",
  O: "g1@3 g1@2 ~ g1@2 g1@8", P: "eb1@3 eb1@2 ~ eb1@2 eb1@8", Q: "c1@3 c1@2 ~ c1@2 eb1@8", R: "f1 eb1",
  S: "eb1@13 ~ eb1 bb1", T: "f1@14 ~ f1", U: "f2 d1", V: "eb1@13 ~ eb1@2", W: "c1@7 ~ eb1@8", X: "a1@6 a1@2 a1@7 ~",
  Y: "ab1@3 ab1@2 ~ ab1@4 ~ ab1 ab1@4", Z: "g1@3 g1@2 ~ g1@4 ~ g1 g1@4", AA: "gb1@3 gb1@2 ~ gb1@4 ~ gb1 gb1@4",
  AB: "f1@3 f1@2 ~ f1@4 ~ f1 f1@4", AC: "c1@3 c1@2 ~ c1@2 d1@3 d1 d1@4", AD: "f1@7 ~ e1@2 ~ gb1@2 ~ a1@2",
  AE: "bb1@3 bb1@2 ~ bb1@2 bb1@2 ~ bb2@2 c3 a2@2, ~@11 a2 ~@4", AF: "eb1@3 eb1@2 ~ eb1@2 eb1@6 eb1@2",
  AG: "f1@3 f1@5 e1@2 ~ gb1@2 ~ a1 ~", AH: "bb1@3 bb1@2 ~ bb1@2 bb1@5 ~ bb1 [d2,f2]", AI: "g2 d2 bb1 a1 g1@2 g1@2 g1@8",
  AJ: "eb1@3 eb1@2 ~ eb1@2 eb1@7 ~", AK: "f1@3 f1@2 ~ f1@2 e1@2 ~ gb1@2 ~ a1 ~",
  AL: "bb1@3 bb1@2 ~ bb1@2 bb1@3 [bb1,d2] [g2,bb2] c3 a2 bb2", AM: "c1@3 c1@2 ~ c1@2 eb1@3 eb1@2 ~ eb1@2",
  AN: "bb1@3 bb1@2 ~ bb1@2 bb1@3 [d1,f1] [g1,bb1] c2 d2 f2", AO: "g2@3 g1@2 ~ g1@2 g1@6 bb1 d2",
  AP: "eb2@3 eb1@2 ~ eb1@2 eb1@8",
})).s("gm_electric_bass_finger").gain(0.48)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note("<~@17 A@8 B@4 ~@8 A@8 B@4 C@2 D@8 E@18 F@2 ~>".pickRestart({
  A: "[[a3,c4]@16 [g3,bb3]@16 ~@3 d4@3 c4@5 d4@3 eb4@2 d4@3 c4@5 [e3,g3,c4]@3 [gb3,a3,d4]@3 [a3,c4]@2 [bb3,d4]@8 [a3,c4]@8 [g3,bb3]@8 [a3,c4]@8 [bb3,d4]@8 [a3,c4]@8 [g3,bb3]@8 [a3,c4]@3 [bb3,d4]@3 [a3,c4]@2, f4@4 bb3@3 ~@9, ~@16 eb4@19 ~@27 f4@66, ~@4 [gb3,gb4]@2 [f3,f4] ~@9]/8", // Am Gm C D Am Bb Am Gm …
  B: "[[g3,eb4]@8 d4@8 [a3,bb3,c4,f4]@8 bb3@2 a3 g3@2 a3@2 bb3@25 ~@8, bb3 ~@3, ~ f3@2 f3@4 ~]/4", // Cm F
  C: "[ab3@2 ~ b3, [f4,f5], c4@3 ~, ~ g3]/2", // F
  D: "[[eb4,eb5]@11 [d4,d5]@3 ~@10 bb3@2 a3 g3@2 a3@3 [c3,bb3,eb4,bb4]@8 [d3,c4,c5]@8 [f3,d4,bb4,d5]@8 [e3,g3,c4]@3 [gb3,a3,d4]@3 [a3,c4]@2 [bb3,d4]@8 [a3,c4]@8 [g3,bb3]@8 [a3,c4]@8 [bb3,d4]@8 [a3,c4]@8 [g3,bb3]@8 [a3,c4]@3 [bb3,d4]@3 [a3,c4]@2, bb3@3 ~@13, gb4@8 f4@12 f4@8 ~@3 f4@33, ~@7 c5@9 ~@48, ~@7 c4@5 c4@4 ~@48]/8", // Eb D Cm7 D7 Bb C D Am …
  E: "[[g3,eb4]@8 d4@8 [a3,bb3,c4,f4]@8 [e3,g3,c4]@3 [gb3,a3,d4]@3 [a3,c4]@2 [bb3,d4]@8 [a3,c4]@8 [g3,bb3]@8 [a3,c4]@8 [bb3,d4]@8 [a3,c4]@8 [g3,bb3]@8 [a3,c4]@3 [bb3,d4]@3 [a3,c4]@2, bb3@8 ~@7 f4@33, ~ f3@2 ~@9]/6", // Cm F C D Am Bb Am Gm …
  F: "[[g3,eb4] d4 [a3,bb3,c4,f4] ~, bb3 ~, ~ f3@2 ~]/2", // Cm F
})).s("gm_string_ensemble_2").gain(0.48)

// other · pad new age · "FANTASIA"
const pad_new_age = note(`<
  ~@6 A B@2 ~@5 A B@2 ~@4 C D C D ~@2 B@2 ~@5 A B@2 ~@4 C D C D ~@2 B@2 ~@6 C D C D ~@2 C D C D ~@2 C D C D ~@2 C D C D
  ~@3
>`.pickRestart({
  A: "[eb6,g6]@2 [d6,f6] [bb5,d6]@12 ~", B: "[~@6 bb6@2 [f6,a6]@3 [eb6,g6]@3 [d6,f6]@10 ~@8]/2",
  C: "~@2 [d6,d7]@2 ~@2 [c6,c7]@2 ~@2 [f6,f7]@3 ~ [bb5,bb6]@2", D: "~@2 [bb5,bb6]@3 ~ [a5,a6]@3 ~ [f5,f6]@4 ~@2",
})).s("gm_pad_new_age").gain(0.35).pan(0.6)

// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@49 A B C D@2 E ~@16 F G@2 H I J@3 ~>".pickRestart({
  A: "eb5@3 eb5@3 eb5@2 eb5@3 eb5@3 d5@2", B: "d5@9 db5 [ab4,a4,bb4,b4,c5] ~@3 c5 d5",
  C: "d5@3 d5@3 d5@2 d5@3 d5@3 c5@2",
  D: "[c5@8 bb4@2 a4 g4@2 a4@2 bb4@3 ~ eb5@2 eb5 ~ d5 c5 bb4 ~ bb4 ~ c5 ~ c5, ~@14 bb4 ~]/2", E: "d5",
  F: "d5@3 d5@3 d5@2 bb4@3 c5@3 c5 bb4",
  G: "[c5@6 [g4,a4,b4] [eb4,e4,f4,gb4] c4 g4 f4 bb4 g4 c5 f5 d5@10 [b4,c5] [d4,e4,f4,g4,a4] c4 ~@4]/2", // G Cmaj7 Dm
  H: "~@5 [c4,d4,e4,f4,g4] ~ bb4 c5 d5 ~ f5 g5 bb5 ~ a5", I: "g5@13 [b4,c5,d5,e5] [d4,e4,f4,g4,a4] ~",
  J: "[~@8 a5@2 a5 bb5!2 g5@5 c6 f5@3 c6 c5 g5 c5 f5 bb4 f5 c5 bb4 a4@9 ~@8]/3",
})).s("gm_overdriven_guitar").gain(0.29)

// other · overdriven guitar · "OVERDRIVE" · soft notes · Cmaj7 Dmaj7
const overdriven_guitar_soft = note(`<
  ~@50
  [~@10 g4 [db4,d4,eb4,e4,f4,gb4] [b3,c4] ~@3]
  ~@21
  [~@8 [db4,d4] ~@7]
  [~@11 b3 ~@4]
  ~
  [~@12 f5 ~ c4 b3]
  ~@4
>`).s("gm_overdriven_guitar").gain(0.16)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~ A@18 ~ B ~@6 A ~ A@10 ~ B ~@19 C ~@17 D ~>".pickRestart({
  A: "~@7 x ~@8", B: "~@6 x!2 ~@5 x ~@2", C: "~@6 x ~@6 x ~@2", D: "~@5 x ~@2",
})).gain(0.32)

// drums · rim
const rim = s("rim").struct("<~ [~@3 x]!16 ~@12 [~@3 x]!7 ~@44>").gain(0.48)

// drums · snare
const snare = s("sd").struct(`<
  ~@17 A@3 B A@5 ~@2 C ~@8 A@3 B A@6 ~ D A@2 ~ E F G A@5 H A@5 I A@5 D A@5 E ~
>`.pickRestart({
  A: "~@3 x", B: "~@2 x ~@2 x ~@2", C: "~@7 x", D: "~@8 x ~@2 x ~@4", E: "~ x", F: "~ x ~ x",
  G: "~@4 x ~ x!2 ~@2 x ~@5", H: "~@4 x!2 ~ x ~@2 x ~@5", I: "~@8 x ~@2 x ~@2 x ~",
})).gain(0.56)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B C B C B C D C D C D C B C E F B G H I J K J@2 L M N C B C B C B C J F B G H I K O@2 J P Q R S K T U S V I K W@2
  X Y Z P AA W AB AC S K AA W AD AE I AF AG@2 AF AH ~
>`.pickRestart({
  A: "~@3 x!2 ~ x!3 ~ x!3 ~ x!2", B: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", C: "x ~@2 x!2 ~ x!3 ~ x!3 ~ x!2",
  D: "x ~ x!3 ~ x!3 ~ x!3 ~@3", E: "x ~ x!3 ~ x!3 ~ x ~@3 x ~", F: "~@3 x!2 ~ x!3 ~ x!3 ~@3",
  G: "x ~@2 x!2 ~ x!3 ~ x!3 ~@3", H: "x ~ x!3 ~ x!2 ~@2 x ~ x ~ x ~", I: "~@2 x!3 ~ x!3 ~ x ~ x ~@3",
  J: "x ~ x!3 ~ x!3 ~ x ~ x ~ x ~", K: "x ~ x!3 ~ x!3 ~ x ~ x ~@3", L: "~@2 x!4 ~ x!2 ~ x!4 ~@2",
  M: "~@2 x!3 ~@2 x!2 ~@2 x!3 ~@2", N: "x ~@5 x!2 ~@4 x ~@3", O: "x ~ x!3 ~ x!3 ~ x ~ x!2 ~@2",
  P: "x ~ x!3 ~ x!3 ~@3 x ~ x ~", Q: "~@2 x!3 ~@2 x!2 ~@2 x!4 ~", R: "~@2 x!2 ~@2 x ~",
  S: "~@2 x!3 ~ x!3 ~ x ~ x ~ x ~", T: "x ~ x!3 ~ x!5 ~@2 x ~@2", U: "x ~ x!3 ~ x!5 ~@3 x ~",
  V: "x ~ x!2 ~@2 x ~@3 x ~@3 x ~", W: "x ~ x!3 ~ x!3 ~@3 x!2 ~@2", X: "x ~ x!3 ~ x!3 ~@3 x ~ x!2", Y: "x!2 ~@2 x!4",
  Z: "~@2 x!3 ~ x!3 ~@3 x ~ x ~", AA: "x ~ x!3 ~ x!3 ~@3 x!4", AB: "~@2 x!3 ~ x!3 ~ x!3 ~ x!2",
  AC: "x ~ x!3 ~ x!2 ~ x!2 ~ x ~ x!2", AD: "x ~ x!3 ~ x!3 ~@3 x!3 ~", AE: "x ~ x!3 ~@4 x ~@4 x ~",
  AF: "x ~ x!3 ~ x!3 ~@3 x ~@3", AG: "x ~ x!3 ~ x!7 ~@3", AH: "x ~ x ~ x!2 ~@2 x ~ x ~ x ~ x ~",
})).gain(0.32)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~ A B C B C B C B C B C B C B C D A B C E F G H G H I J ~ C B C B C B C E A B C E F H K@2 G D J L M H N E M O F H D@2
  P O Q R D@2 P S M H D@2 T E F B U@2 B V ~
>`.pickRestart({
  A: "~@2 x ~@2 x ~@3 x ~@3 x ~@2", B: "~ x ~@3 x ~@3 x ~@3 x ~@2", C: "~ x!2 ~@2 x ~@3 x ~@3 x ~@2",
  D: "~ x ~@3 x ~@3 x ~@6", E: "~ x ~@3 x ~@10", F: "~@5 x ~@3 x ~ x ~ x ~@2", G: "~ x ~@3 x ~@3 x ~ x ~ x ~ x",
  H: "~ x ~@3 x ~@3 x ~ x ~ x ~@2", I: "~ x ~@4 x ~@2 x ~@6", J: "x!2 ~@3 x!2 ~@2 x!2 ~@5",
  K: "~ x ~@3 x ~@3 x ~ x ~@4", L: "~@7 x ~@8", M: "~@5 x ~@3 x ~ x ~ x ~ x", N: "~@5 x ~@10", O: "~ x ~@14",
  P: "~@5 x ~@3 x ~@3 x ~@2", Q: "~@5 x ~@3 x ~@3 x ~ x", R: "~ x ~@3 x ~@3 x ~@3 x ~ x", S: "~ x ~@3 x ~@5 x ~ x ~@2",
  T: "~ x ~@3 x ~@3 x ~@5 x", U: "~ x ~@3 x ~@7 x ~@2", V: "~ x ~ x ~@12",
})).gain(0.16)

// drums · low tom
const low_tom = s("lt").struct("<~@36 A ~@11 A ~@2 B C ~ A ~@23 D ~>".pickRestart({
  A: "~@14 x!2", B: "~@3 x", C: "~@11 x ~@2 x!2", D: "~@7 x",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@16 A ~@9 B@2 C ~@7 D ~@10 B C E@3 F ~@11 G ~@7 G ~@5 H ~>".pickRestart({
  A: "~@11 x ~@2 x ~", B: "~@3 x", C: "~@11 x ~@4", D: "~@2 x!2", E: "~ x ~@2", F: "~ x ~ x", G: "~@15 x",
  H: "~@9 x ~ x!2 ~@3",
})).gain(0.56)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@36 A ~@14 B ~@12 C ~@7 C ~@7>".pickRestart({
  A: "~@11 x ~@4", B: "~@11 x!2 ~@3", C: "~@7 x",
})).gain(0.32)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@8 A ~ A ~ A ~@4 A ~ A ~ A ~ A ~@2 A@2 B ~@8 A ~ A ~ A@4 ~ C ~@3 A@2 ~@2 D A@2 E@2 C ~ C@4 ~@3 A C E C F A E A@2 E G
  ~
>`.pickRestart({
  A: "~@7 x", B: "~@15 x", C: "~@5 x ~@2", D: "~ x ~@2", E: "~@5 x ~ x", F: "~@3 x ~ x!2 ~", G: "~@3 x ~@4",
})).gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<~@28 [~ x] ~@51>").gain(0.48)

// drums · crash
const crash = s("cr").struct(`<
  ~@17 A ~@2 B A ~@15 A ~@2 B A ~@6 A@2 ~ A ~ A C A ~@3 A B A ~@3 A D A ~@4 D A ~@4 D ~
>`.pickRestart({
  A: "x", B: "~@8 x ~@2 x ~@2 x ~", C: "~@8 x ~@2 x ~@4", D: "~ x",
})).gain(0.4)

// drums · ride
const ride = s("rd").struct("<[~@8 x ~@2 x ~@2 x ~] x ~@24 x!3 ~@18 x ~@32>").gain(0.56)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@17 A@3 ~ A@5 ~@11 A@3 ~ A@6 ~@2 B@3 C D C E@5 F E@5 F E@5 F E@5 F ~
// … 39 more lines

More by Toto