Strudelify

Why'd You Lie To Me

Anastacia

KeyA minorTempo98 bpm
0:00/0:00
// Why'd You Lie To Me — Anastacia
// 98 bpm, 2/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 5) are rendered on a constant 2/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 184 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/2)

// 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 · electric bass finger
const bass = note(`<
  ~@10 A B C D A E C F A B C D A E C F ~@2 G H A I C J A B G H A I C K L M N O C P N Q A B C D A E C F A B C D A E C F
  R@3 S ~@2 G H A I C J A B G H A I C K L M N O C P N Q A B C D A E C F A B C D A E C F L M N O C P T ~@17 A B C D A E C
  F A B C D A E C F A B C D A E C F A B C D A E C F A B C D A E C F A B C D A E U V ~@2
>`.pickRestart({
  A: "a1@2 ~ a1 ~@2 a1 ~", B: "~@2 a1 ~ a1@2 ~@2", C: "f1@2 ~ f1 ~@2 f1 ~", D: "~@2 e1 ~ e1@2 ~@2", E: "~@6 a1 ~",
  F: "~@2 e1 ~ e1 ~ e2 ~", G: "f1@3 f1 ~@2 f1 ~", H: "~@2 e1 ~ e1@3 ~", I: "~@2 a1 ~ a1 ~@3", J: "~@2 e2 ~ e2@3 ~",
  K: "e1 ~ e1 ~ e2@3 ~", L: "f1@2 ~ f1 ~@2 f1@2", M: "~@2 f1 ~ f1 ~ f1 ~", N: "e1@2 ~ e1 ~@2 e1 ~",
  O: "~@2 e1@2 d2 e2@3", P: "~ f1 f1@2 e2 f2@3", Q: "e2 ~ e2 ~ e2@2 ~@2", R: "a1 ~ a1!3 ~ a1!2",
  S: "a1 ~ a1 ~ a1 ~ a1 ~", T: "e1@2 ~ e1 ~@4", U: "f1@2 ~ f1 ~@4", V: "~@2 e1 ~ e1 ~@3",
})).s("gm_electric_bass_finger").gain(0.24)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@10 A@16 ~ B@3 C@3 D@4 E F@4 G@4 H@4 A@16 ~@6 I@2 C@3 D@4 E F@4 G@4 H@4 A@16 G@4 J@2 ~@2 K L@2 M N@6 O@6 A@40 P@7 ~@3
>`.pickRestart({
  A: "[e4@31 f4@15 ~ [g#3,b3,e4,g#4]@15 ~ e4@32 ~ f4@14 ~ [g#3,b3,e4,g#4]@14 ~@3, [a3,c4,a4]@47 ~@16 [a3,c4,a4]@47 ~@18]/8", // E Am
  B: "[~@15 [a3,c4]@14 ~@2 [b3,e4]@14 ~@3]/3", C: "[[c4,e4]@27 ~@4 [a3,c4]@15 ~@2]/3",
  D: "[~@2 [g#3,e4]@2 ~@3 [g#3,e4]@5 ~@3 e4@32 a3@15 ~@2, ~@15 c4@48 ~]/4", E: "[b3,e4]",
  F: "[[a3,c4]@29 ~@2 [a3,c4,f4]@14 ~@3 e4@11 ~@5, ~@47 b3@11 ~@6]/4", G: "[[f3,a3,c4]@30 ~ [e3,g#3,b3]@30 ~@3]/4",
  H: "[[f3,a3,c4]@30 ~ [g#3,b3,e4]@27 ~@6]/4", I: "[~@15 [b3,e4]@14 ~@3]/2", J: "[[f3,a3,c4]@15 ~]/2", K: "[a3,c4,e4]",
  L: "[g#3,b3,d4]/2", M: "[e3,a3,c4]@15 [a3,e4], [d3,g3] ~@15",
  N: "[~@15 [g#3,b3,d4]@32 [e3,a3]@14 d4@2 [a3,e4]@16 [g#3,b3,d4]@17, ~@47 c4@32 ~@17, ~@47 b3 ~@48]/6", // G#dim A5 G#dim
  O: "[~@15 e3@16 e4@16 [g#3,b3,d4]@32 ~ [a3,c4]@12 ~@4, ~@15 [a3,c4]@32 ~@32 e3@12 ~@5]/6", // G#dim Am
  P: "[e4@31 f4@15 ~ [g#3,b3,e4,g#4]@15 ~ e4@32 ~ f4@14 ~@2, [a3,c4,a4]@47 ~@16 [a3,c4,a4]@47 ~@2]/7", // E Am
})).s("gm_synth_strings_1").gain(0.05).pan(0.3)

// bass · synth bass 1
const bass_2 = note(`<
  ~@10 A B C D E F G H A B C D E F G H ~@24 A B C D E F G H A B C D E F G H ~@28 A B C D E F G H A B C D E F G H ~@24 A
  B C D E F G H A B C D E F G H A B C D E F G H A B C D E F G H A B C D E F G H A B C D E F ~@4
>`.pickRestart({
  A: "a1 ~ a2 ~@2 a2 ~@2", B: "a1 ~ a2 ~ a1 ~ a2 ~", C: "f1@2 ~ f2 ~@2 f2 ~", D: "e1 ~ e2 ~ e2@4",
  E: "a1 ~@2 a2 ~@2 a2 ~", F: "a1 ~ a2 ~ a2 ~@3", G: "f1@3 f2 ~@2 f2 ~", H: "e1 ~ e2 ~ e2 ~@3",
})).s("gm_synth_bass_1").gain(0.15).pan(0.8)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@10 A B C ~ D E F G A B C ~ D E F G ~@16 H@2 I@4 J K A B C ~ D E F G A B C ~ D E F G ~@20 H@2 I@4 J K A B C ~ D E F G
  A B C ~ D E F L@3 I@4 M@2 N ~@7 N ~@7 A B C ~ D E F G A B C ~ D E F G A B C ~ D E F G A B C ~ D E F G A B C ~ D E F G
  A B C ~ D E ~@4
>`.pickRestart({
  A: "~@2 [e4,a4]!2 ~@2 [e4,a4] ~", B: "~@6 [e4,a4] ~", C: "~@2 [f4,a4]!2 ~@2 [f4,a4] ~",
  D: "~@2 [a4,c5] ~@2 [a4,c5] ~@2", E: "[a4,c5]@3 e4 ~ [a4,c5] e4 ~", F: "~@2 [f4,a4]!2 ~ a4 ~@2",
  G: "~@4 [b4,e5]!2 e5@2, ~@6 b4 ~", H: "[[a3,c4,a4]!2 [a3,a4] ~@5, f4@29 ~@3, ~@8 c4@21 ~@3]/2",
  I: "[~@12 d4@17 ~@3 f4@4 [a3,f4]@4 [a3,f4]@4 [a3,f4]@17 ~@3, e4@29 ~@35, ~@4 b3@24 ~@4 c4@29 ~@3, ~@8 g#3@20 ~@3 a3@5 ~@28]/4", // Dm
  J: "e4!2 e4@2", K: "[d4,d5]@5 ~@3",
  L: "[~@4 [b4,e5]!2 b4 ~ [a3,c4,a4]@2 [a3,c4,a4]@2 [a3,a4]@2 ~@10, ~@3 e5@8 ~, ~@16 f4@29 ~@3, ~@8 c4@7 ~]/3", // E5 Am A
  M: "[e4 e4@7]/2", N: "[e4,a4,e5]@13 ~@3",
})).s("gm_electric_guitar_clean").gain(0.09).pan(0.6)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note(`<
  ~@11 A ~@7 A ~@22 B@2 ~@7 A ~@7 A ~@26 B@2 ~@7 A ~@7 A ~@6 B@2 ~@23 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@8
>`.pickRestart({
  A: "~@2 e4!2 ~@4", B: "[~@12 [a3,a4]@17 ~@3]/2",
})).s("gm_electric_guitar_clean").gain(0.06).pan(0.6)

// chords · clavinet
const clavinet = note(`<
  ~@10 A@2 B C D@2 E F A@2 B C D@2 E F ~@14 G H ~@8 A@2 B C D@2 E F A@2 B C D@2 E F ~@18 G H ~@8 A@2 B C D@2 E F A@2 B C
  D@2 E F ~@24 A@2 B C D@2 E F A@2 B C D@2 E F A@2 B C D@2 E F A@2 B C D@2 E F A@2 B C D@2 E F A@2 B C D@2 ~@4
>`.pickRestart({
  A: "[~@2 e3!3 ~ e3 ~ d3@2 c3!2 ~@2 c3@2, a2@7 ~]/2", B: "~@2 d3!2 ~ c3@2 ~, f2@7 ~", C: "d3 ~ c3 c3@3 d3@2",
  D: "[~@2 e3 ~@2 e3 ~@2 d3 ~ c3 ~ c3@2 d3@2, a2@11 ~@5]/2", E: "~@2 c3 ~ c3@4, f2@3 ~", F: "e2 b2 e2@2 b2@2 ~@2",
  G: "~@4 a4@3 ~, c4@7 ~, ~@2 f4@5 ~", H: "[b3,e4,g#4]@5 ~@3",
})).s("gm_clavinet").gain(0.14).pan(0.6)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@5 A ~ B C D E@2 C D F@2 C D E@2 C D F@2 C D ~@16 G@2 H@2 I@4 E@2 C D F@2 C D E@2 C D F@2 C D ~@20 G@2 H@2 I@4 E@2 C
  D F@2 C D E@2 C D F@2 C D G@2 H@2 J@2 ~@2 K@5 L@3 K@5 L@3 E@2 C D F@2 C D E@2 C D F@2 C D E@2 C D F@2 C D E@2 C D F@2
  C D E@2 C D F@2 C D E@2 C D F@2 ~@4
>`.pickRestart({
  A: "~@4 [e4,e5] [b4,b5] [e5,e6] ~", B: "~@4 [e5,e6] [c5,c6] [a4,a5] [e4,e5]", C: "[f4,f5]",
  D: "[e4,e5]@4 ~ [b4,b5] [e5,e6] ~, ~@2 [e4,e5] ~", E: "[[e5,e6]@11 ~ [e5,e6] [c5,c6] [a4,a5] [e4,e5]]/2",
  F: "[[e5,e6]@19 ~@5 [e5,e6]@2 [c5,c6]@2 [a4,a5]@2 [e4,e5]@2]/2", G: "[f3,c4]/2", H: "[e3,b3]/2",
  I: "[[f3,c4]@30 ~ d#4 e4@12 [g#3,g#4]@8 [a3,a4]@3 [b3,b4]@5 ~@4, ~@15 d4 ~@16, ~@31 e3@29 ~@4]/4", // F5 G# A B
  J: "[[f3,c4]@31 ~]/2", // F5
  K: "[[c4,c5] ~@2 a4 a3 ~@2 c5 [c4,e5,e6]@2 ~ [a3,a4] ~@3 b3@2 ~@2 [g#3,g#4] ~@3 [b3,b4] [d5,d6]@2 ~ [g#3,g#4] ~@3 b3@2 ~@2 g#3 g#4 ~@2 b4 [d5,d6]@2 ~ [g#3,g#4] ~@3 [a3,a4]@2 ~@2 e4@2 ~@2 a4 [c5,c6]@2 ~ [e3,e4]@2 ~@3 c4@2 ~ [a3,a4] ~@4 [e5,e6]@2 ~ [a3,a4] ~@3 [b3,b4], ~@15 b4 ~@15 b4 ~@7 b3@2 ~@10 e3 ~@3 a3@2 ~@6 c5@2 ~@6 [c4,c5]@2 ~@7]/5", // C A G# B D G# D G# …
  L: "[~@3 [g#3,g#4] ~@4 [d5,d6]@2 ~ [g#3,g#4] ~@3 b3@2 ~@2 [g#3,g#4] ~@4 [d5,d6]@2 ~ [g#3,g#4] ~@3 [a3,a4]@2 ~@2 e3@2 ~@2 a3 [c5,c6]@2 ~ e3 e4 ~@3, ~@7 [b3,b4]@2 ~@6 b4 ~@7 [b3,b4]@2 ~@10 e4 ~@3 a4@2 ~@7]/3", // G# D G# D G# A C B
})).s("gm_string_ensemble_1").gain(0.12)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@2 A B C D E B C D F B C D F B C D G B C D G B C D H I J K L M N O H I J K P M N O Q R S T U V W X F B C D E B C D F
  B C D F B C D Y Z AA AB ~@2 J K L M N O H I J K L M N O Q R AC T U V W X F B C D F B C D A B C D G B C D Q R S T U V
  AD ~@17 G B C D A B C D F B C D F B C D F B C D F B C D F B C D F B C D F B C D F B C D AE B C D F B AF AG AH AI
>`.pickRestart({
  A: "[e3,a3,c4,a4]@2 [c3,c4] [e3,a3,c4,e4,a4] ~ [c3,c4] [e3,a3,c4,e4,a4] ~, e4 ~@7", // Am C Am C Am
  B: "~@2 [c4,e4,a4] ~ [e3,a3,c4,e4,a4] ~ [e3,a3,c4] ~", // Am
  C: "[f3,a3,c4]@2 [c3,a3] [f3,a3,c4,f4] ~ [c3,a3] [f3,a3,c4,f4] ~, f4 ~@7", // F
  D: "~@4 [e3,g#3,b3,e4]@2 ~@2 [e3,g#3,b3,e4]@3 ~@5", // E
  E: "[e3,a3,e4,a4]@2 [c3,c4] [e3,a3,c4,e4,a4] ~ [c3,c4] [e3,a3,c4,e4,a4] ~, c4 ~@7", // A5 C Am C Am
  F: "[e3,a3,c4,e4,a4]@3 ~ [c3,c4]@2 [e3,a3,c4,e4,a4]@2 ~@2 [c3,c4]@2 [e3,a3,c4,e4,a4]@2 ~@2", // Am C Am C Am
  G: "[e3,a3,c4,e4]@2 [c3,c4] [e3,a3,c4,e4,a4] ~ [c3,c4] [e3,a3,c4,e4,a4] ~, a4 ~@7", // Am C Am C Am
  H: "[a2,e3,a3,c4,e4]@2 e3 [a2,e3,a3,c4,e4]@2 e3 [a2,e3,a3,c4,e4] ~", I: "~@2 [a2,e3,a3,e4] ~ [a2,e3,a3,e4] ~@3",
  J: "[f2,c3,f3,a3,c4]@2 f3 [f2,c3,f3,a3,c4]@2 f3 [f2,c3,f3,a3,c4] ~", K: "~@4 [e2,g#3,e4]@2 ~@2 [e2,g#3,e4]@3 ~@5",
  L: "[a2,c3,e3,a3,c4,e4]@4 e3@2 [a2,c3,e3,a3,c4,e4]@3 ~ e3@2 [a2,c3,a3,c4,e4]@2 ~@2", // Am
  M: "~@2 [a2,c3,a3,c4,e4] ~ [a2,c3,a3,c4,e4] ~@3", N: "[f2,c3,f3,a3,c4]@2 f3 [f2,c3,f3,a3,c4] ~ f3 [f2,c3,f3,a3,c4] ~",
  O: "~@2 [e2,g#3,b3,e4] ~ [e2,g#3,b3,e4] ~@3", // E
  P: "[a2,c3,e3,a3,c4,e4]@2 e3 [a2,c3,e3,a3,c4,e4]@2 e3 [a2,c3,a3,c4,e4] ~", // Am
  Q: "[c3,f3,a3,c4]@5 ~ [c3,f3,a3,c4]@2 ~@4 [c3,f3,a3,c4]@2 ~@2", R: "~@2 [c3,f3,a3,c4]@2 [c3,f3,a3,c4]@2 [c3,f3,c4] ~",
  S: "[e3,g#3,e4]@5 ~ [e3,g#3,e4]@2 ~@4 [e3,g#3,e4]@2 ~@2", T: "~@2 [e3,g#3,b3,d4]@2 [e3,g#3,b3,d4]@3 ~",
  U: "[c3,f3,a3,c4]@2 ~ [c3,f3,a3,c4] ~@2 [c3,f3,a3,c4]@2", V: "~@4 [c3,f3,a3,c4]@3 ~ [c3,f3,a3,c4]@2 ~@6",
  W: "[e3,g#3,b3,e4]@5 ~ [e3,g#3,b3,e4]@2 ~@4 [e3,g#3,b3,e4]@2 ~@2", // E
  X: "~@2 [e3,g#3,b3,e4]@6 [e3,g#3,b3,e4]@4 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] ~", // E
  Y: "[a2,e3,a3,c4,e4] ~ [e3,a3,c4,e4] [e3,a3,c4] [a2,a3,c4,e4] ~ [e3,a3,c4] [e3,a3,c4,e4], ~@2 e3 ~", // Am
  Z: "[a2,e3,a3,c4] ~ [e3,a3,c4,e4]!2 [a3,c4,e4]@2 [e3,a3,c4,e4]!2, e4@2 ~@2 [a2,e3] ~@3", // Am A5
  AA: "[a2,e3,c4] ~ [e3,a3,c4,e4]!2 [a2,e3,a3,c4,e4] ~ [e3,a3,c4,e4]!2, [a3,e4] ~@3", // Am A5
  AB: "[a2,e3,a3,c4,e4] ~ [a2,e3,a3,c4,e4] ~ [a2,e3,a3,c4,e4] ~ [a2,e3,a3,c4,e4] ~", // Am
  AC: "[e3,g#3,e4]@3 [e3,g#3,e4] ~@2 [e3,g#3,e4] ~", AD: "[e3,g#3,b3,e4]@5 ~ [e3,g#3,b3,e4]@2 ~@8",
  AE: "[e3,a3,c4]@2 [c3,c4] [e3,a3,c4,e4,a4] ~ [c3,c4] [e3,a3,c4,e4,a4] ~, [e4,a4] ~@7", // Am C Am C Am A5
  AF: "[c3,f3,a3,c4,f4]@5 ~ [c3,f3,a3,c4,f4] ~@9", AG: "~@2 [b2,e3,g#3,b3,e4]@2 [b2,e3,g#3,b3,e4] ~@3",
  AH: "[a2,e4,a4]@2 ~@2 [c3,c4]@2 [a2,e3,a3,c4,e4,a4]@2 ~@2 [c3,c4]@2 [g2,e3,c4,e4]@2 [d4,d#4,g4,g#4] [c#4,f#4], [e3,a3] ~@2 [a2,a3,a4], c4 ~@15", // A5 C Am C D#maj7 F#5 A5 A
  AI: "[b3,c4,f4] e4 ~@14", // F
})).s("gm_acoustic_guitar_steel").gain(0.12).pan(0.4)

// chords · rock organ
const rock_organ = note(`<
  ~@9 A ~@7 A ~@31 B ~@7 A ~@10 C D ~@23 B ~@7 A ~@30 E D ~@7 A ~@15 A ~@15 A ~@10
>`.pickRestart({
  A: "~@8 [b5,c6] [f5,g5,a5] [b4,c5,d5,e5] [g4,a4] [d4,e4,f4] [b3,c4] [f3,g3,a3] [d3,e3]", // Cmaj7 F Cmaj7 Gsus2 Dm Cmaj7 F Dsus2
  B: "~@8 [a5,b5] [c5,d5,e5,f5,g5] [f4,g4,a4,b4] [c4,d4,e4] [f3,g3,a3,b3] [b2,c3,d3,e3] [e2,f2,g2,a2] ~", // Asus2 C G7 C G7 Cmaj7 Fmaj7
  C: "[b5,c6] [f5,g5,a5] [c5,d5,e5] [a4,b4] [f4,g4] [d4,e4] [b3,c4] [g3,a3] [e3,f3] [c3,d3] [a2,b2] g2 [e2,f2] [c2,d2] [a1,b1] g1", // Cmaj7 F C Asus2 Fsus2 Dsus2 Cmaj7 Gsus2 …
  D: "f1@3 [g1,a1] [b1,c2] [d2,e2,f2] [g2,a2] [b2,c3] [d3,e3,f3] [g3,a3] [b3,c4] [d4,e4,f4] [g4,a4] [b4,c5,d5] [e5,f5,g5] a5", // Gsus2 Cmaj7 Dm Gsus2 Cmaj7 Dm Gsus2 Cmaj7 …
  E: "~@14 a1 g1",
})).s("gm_rock_organ").gain(0.11).pan(0.9)

// chords · rock organ · soft notes · Cmaj7 F C Asus2 Fsus2 Dsus2 Cmaj7 Gsus2 …
const rock_organ_soft = note(`<
  ~@132
  [[b5,c6] [f5,g5,a5] [c5,d5,e5] [a4,b4] [f4,g4] [d4,e4] [b3,c4] [g3,a3] [e3,f3] [c3,d3] [a2,b2] g2 [e2,f2] [c2,d2] b1 ~]
  ~@51
>`).s("gm_rock_organ").gain(0.05).pan(0.9)

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

// drums · rim
const rim = s("rim").struct(`<
  ~@3 A ~ A B A B A ~ C ~ D ~ C ~ D ~ C ~ D ~ C ~ D E A E A E F E G E A E F E F E G H@7 ~@2 C ~ D ~ C ~ D ~ C ~ D ~ C ~
  D ~@6 E A E F E G E A E F E F E G H@7 ~@2 C ~ D ~ C ~ D ~ C ~ D ~ C ~ D H@6 ~ A ~@14 B A ~ C ~ D ~ C ~ D ~ C ~ D ~ C ~
  D ~ C ~ D ~ C ~ D ~ C ~ D ~ C ~ D ~ C ~ D ~ C ~ D ~ C ~ D ~ C B ~@3
>`.pickRestart({
  A: "~ x!2 ~", B: "~@3 x ~@4", C: "~@2 x!2", D: "~ x ~@2 x ~ x ~", E: "~@2 x ~@2 x ~@2", F: "x!2", G: "x!3 ~",
  H: "~ x",
})).gain(0.28).pan(0.4)

// drums · snare
const snare = s("sd").struct(`<
  ~@10 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@24 B A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@28 B A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@25 A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@5
>`.pickRestart({
  A: "~ x", B: "x ~ x!2",
})).gain(0.35).pan(0.4)

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

// drums · low tom
const low_tom = s("lt").struct("<~@9 [~@7 x] ~@174>").gain(0.28).pan(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@9 [~@2 x!2] ~@39 [~@6 x!2] ~@43 [~@6 x!2] ~@90>").gain(0.28).pan(0.4)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@13 A ~@3 A ~@3 A ~@3 A B ~@4 C ~@5 C ~ C ~@5 A ~@3 D ~@3 A ~@3 A ~@3 A ~@3 A ~@9 C ~@5 C ~ C ~@5 A ~@3 D ~@3 A ~@3 A
  ~@3 A ~@3 A ~@3 A ~@19 E ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@6
>`.pickRestart({
  A: "~@7 x", B: "x ~@2 x ~@2 x ~", C: "~ x ~@2", D: "~ x ~@3 x ~@2", E: "~ x!2 ~",
// … 64 more lines

More by Anastacia