Strudelify

Make Me Lose Control

Eric Carmen

KeyF majorTempo112 bpm
0:00/0:00
// Make Me Lose Control — Carmen Eric
// 112 bpm, 4/4, key F 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 131 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(112/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 · "A.PIANO 2"
const piano = note(`<
  A@2 B@2 C@4 D@2 E@3 F G H I J K L M N O P M N O Q M N O P R ~ A@2 B@2 C@4 D@2 E@3 F G H I J K L M N O P M N O Q M N O
  P R ~ S@2 T@2 S@2 T@2 S@2 T@2 C@6 U@3 M N O P M N O Q M N O P M N O Q ~@8 M N O P M N O Q M N O P M N O Q V ~
>`.pickRestart({
  A: "[~@4 a3@2 [a2,f3,a3,c4]@2 [bb2,f3,bb3,d4]@4 [a3,d4,f4] ~ g3@4 g3@2 e4 ~ [f3,a3,c4] ~ [bb2,f3,bb3,d4]@4 [c3,g3,c4,e4]@4, [f2,c4,f4]@3 ~@13, a3 ~@7, ~@2 f3@4 ~@6 d3@2 [c3,c4,e4]@7 ~ a2@2 ~@8]/2", // F Bb Dm F Bb C F5 C
  B: "[~@2 f3@2 a3 ~ [f3,a3,c4] ~ [bb2,f3,bb3,d4]@4 [a3,d4,f4] ~ g3@4 ~@8 c5@5 ~, [f2,a3,c4,f4]@5 ~ a2@2 ~@4 d3@2 c3@16 ~@2, ~@7 [c4,e4]@7 ~@2, ~@9 g3@5 ~@2, ~@20 c5@2 c6@9 ~]/2", // F Bb Dm F C
  C: "[~@4 a3@2 [a2,f3,a3,c4]@2 [bb2,f3,bb3,d4]@4 [d3,a3,f4]@2 g3@4 g3@2 e4 ~ [a2,f3,a3,c4]@2 [bb2,f3,bb3,d4]@4 [c3,g3,c4,e4]@4, [f2,c4,f4]@3 ~@13, a3@4 ~@8 d4 ~@19, ~@2 f3@4 ~@8 [c3,c4,e4]@7 ~@11]/2", // F Bb Dm F Bb C F5 C
  D: "[~@4 a3@2 [a2,f3,a3,c4]@2 [bb2,f3,bb3,d4]@4 [d3,a3,f4]@2 g3@4 g3@2 e4 ~ [a2,f3,a3,c4]@2 [bb2,f3,bb3,d4]@3 ~ [c3,g3,c4,e4]@4, [f2,c4,f4]@3 ~@13, a3@4 ~@8 d4 ~@19, ~@2 f3@4 ~@8 [c3,c4,e4]@7 ~@11]/2", // F Bb Dm F Bb C F5 C
  E: "[~@4 a3@2 [a2,f3,a3,c4]@2 [bb2,f3,bb3,d4]@4 [d3,a3,f4]@2 [g3,c4,e4]@8 [a3,c4] ~ [f3,bb3,d4] ~ [f3,bb3] ~ [f3,a3,c4] ~ [f3,bb3,d4]@8 f3@4 ~@2 d4@4, [f2,c4,f4] ~@6 f3, a3@4 ~@8 d4 ~@9 f3@2 ~@2 d4@2 ~@10 bb3@10, ~ f3@2 ~@4 c3@5 ~@7 d4@3 ~@2]/3", // F Bb Dm C Am Bb Bb5 F …
  F: "bb3@4 ~@2 f3@4 f3@2 f3@3 ~, d4@5 ~@3, f3@3 ~@5, ~@2 bb3@3 [bb3,d4]@3", // Bb
  G: "[c4,e4]@6 ~@4 g3@5 ~, g3@5 ~@3, ~@6 [c4,e4]@9 ~", H: "[f3,a3,d4]@5 ~ [g3,c4,e4]@2 [a3,d4,f4]@7 ~",
  I: "[c4,d4]@3 ~@4 f3, f3@5 f3@2 ~, ~@3 [c4,d4]@3 [c4,d4]@2", // Csus2
  J: "b3@2 ~ f3@2 [f3,b3,d4]@3, d4@5 ~@3, f3@3 ~@5, ~@2 b3@3 ~@3", // Bdim
  K: "[bb3,d4,f4]@3 f3@2 ~@2 f3, ~@3 [bb3,d4,f4]@3 [bb3,d4,f4]@2, ~@5 f3@2 ~", // Bb
  L: "[bb3,d4,f4,g4]@3 [g3,c4] [f3,bb3,d4]@2 [g3,c4,e4]@2, ~@6 e4 ~@9", // Gm7 C5 Bb C
  M: "[f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [d4,f4,bb4,c5]@2", // F Bb
  N: "~@2 [d4,f4,bb4,c5] ~ [d4,f4,bb4,c5] ~ [d4,f4,bb4,c5] ~ [d4,f4,bb4,c5] ~ [d4,f4,bb4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~", // Bb C
  O: "[f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~", // F
  P: "[f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [g4,c5,db5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~", // Bb C
  Q: "[f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~", // Bb C
  R: "[f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,bb4,c5,d5]@2", // F Bb
  S: "[f2@5 ~ a2@2 bb2@4 d3@2 c3@7 ~ a2@2 bb2@4 c3@4, ~@12 c3 ~@19]/2",
  T: "[f2@5 ~ a2@2 bb2@3 ~ d3@2 c3@7 ~ a2@2 bb2@4 c3@3 ~, ~@12 c3 ~@19]/2",
  U: "[~@4 a3@2 [a2,f3,a3,c4]@2 [bb2,f3,bb3,d4]@4 [d3,a3,f4]@2 [g3,c4,e4]@3 ~ [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 e4@4 [e4,g4,c5]@2 [d4,f4,bb4]@4 [e4,g4,c5]@4, [f2,c4,f4] ~@7, a3@4 ~@8 d4 ~@21 [g3,c4]@6 ~@8, ~ f3@2 ~@4 c3@13 ~@4]/3", // F Bb Dm C Bb C F5 C5
  V: "[a4,c5,f5]@15 ~", // F
})).s("gm_piano").gain(0.33).pan(0.4)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  A@2 B@2 C@6 D@3 E F G H I J K L M L N L O P Q R M P S T@2 A@2 B@2 C@6 D@3 E F U H I J K L M L N V W X Y Z AA P AB AC@2
  A@4 C@14 AD AE AF P AG AH AI AJ AK AL AM L AN AO AP AQ AR AS AT ~@8 AU AV AW AX AY O AZ BA AU AV AW AX BB BC BD BE BF
  ~
>`.pickRestart({
  A: "[f2@5 ~ a2@2 bb2@3 ~ d3@2 c3@7 ~ a2@2 bb2@3 ~ c3@4, ~@12 c3 ~@19]/2",
  B: "[f2@5 ~ a2@2 bb2@3 ~ [c3,d3] ~ c3@16 ~@2]/2", C: "[f1@5 ~ a1@2 bb1@4 d2@2 c2@7 ~ a1@2 bb1@3 ~ c2@3 ~]/2",
  D: "[f1@5 ~ a1@2 bb1@4 d2@2 c2@7 ~ a1@2 bb1@2 bb1@2 a1 ~ bb1@6 ~@2 bb1 ~ bb1@4 f2@4]/3",
  E: "bb1@5 ~ bb1 ~ bb1@2 f2@2 bb2@2 f2@2", F: "a1@5 ~ a1 ~ a1@4 e2@3 ~", G: "d2@5 ~ d2@2 d2@4 a2@3 ~",
  H: "g2@5 ~ g2 ~ g2@4 d2@4", I: "g1@4 ~@2 g1 ~ g1@4 d2@3 ~", J: "c2@5 ~ c2 ~ c2@5 ~ c2 ~",
  K: "c2@5 ~ c2 ~ bb1@4 c2@3 ~", L: "f1@5 ~ f1 ~ f1@4 c2@4", M: "bb1@5 ~ bb1 ~ bb1@3 ~ c2@4",
  N: "bb1@5 ~ c2@3 ~ c3@2 g2@2 c2 ~", O: "bb1@5 ~ bb1 ~ bb1@4 c2@4", P: "f1@4 ~@2 f1 ~ f1@4 c2@4",
  Q: "bb1@4 ~@2 bb1 ~ bb1@3 ~ c2@4", R: "f1@4 ~@2 f1 ~ f1@3 ~ c2@4", S: "bb1@5 ~ c2@3 ~ c3@2 g2@2 c2@2",
  T: "[f1@4 ~@2 f1@2 a1@5 ~ bb1@4 ~@4 d2@6 c2@3 ~]/2", U: "d2@5 ~ d2@2 d2@2 d3@2 c3@2 a2 ~",
  V: "f1@5 ~ f1 ~ f1@4 c2@2 c2@2", W: "bb1@2 bb1@3 ~ bb1 ~ bb1@2 bb1@3 ~ c2@2", X: "f1@4 ~@2 f1 ~ f1@2 f1@3 ~ c2@2",
  Y: "bb1@4 ~@2 bb1 ~ bb1@2 d2@2 c2@2 g1@2", Z: "f1@4 ~@2 f1 ~ f1@3 ~ c2@2 c2@2",
  AA: "bb1@5 ~ bb1 ~ bb1@2 d2@2 c2@2 g1@2", AB: "bb1@2 bb1@2 bb1@2 c2@3 ~ c3@2 c3@2 c3@2, ~@12 b2 ~@3",
  AC: "[f1@4 ~@2 f1@2 a1@4 a1@2 bb1@4 ~@4 d2@6 c2@3 ~]/2", AD: "f1@5 ~ a1@2 bb1@4 d2@2 c2@2",
  AE: "~@2 c2@2 c3@2 c2@2 c2 ~ c2 ~ c2@2 c2@2", AF: "c2 ~ c2@2 d2@2 c2@2 bb1@3 ~ c2@3 ~",
  AG: "bb1 ~ bb1@3 ~ bb1 ~ bb1 ~ bb1 ~ c2@4", AH: "f1@2 f1@2 ~@2 f1 ~ f1@3 ~ c2@3 ~",
  AI: "bb1 ~ bb1@2 ~@2 c2@4 c3@2 g2@2 c2 ~", AJ: "f1@4 ~@2 f1 ~ f1@4 c2@3 ~", AK: "bb1@2 bb1@3 ~ bb1 ~ bb1@4 c2@4",
  AL: "f1@2 f1@2 ~@2 f1 ~ f1 ~ f1@2 c2@4", AM: "bb1 ~ bb1@3 ~ bb1 ~ bb1@4 c2@4",
  AN: "bb1@2 bb1@2 ~@2 bb1@2 bb1 ~ bb1 ~ c2@4", AO: "f1 ~ f1@2 ~@2 f1 ~ f1@4 c2@4", AP: "bb1@5 ~ c2@3 ~ c2@2 c3@2 c2 ~",
  AQ: "f1@2 f1@3 ~ g1 ~ a1@2 a1@2 ~@2 a1@2", AR: "bb1@5 ~ bb1 ~ bb1@5 ~ c2@2", AS: "f1@2 f1@3 ~ f1 ~ f1 ~ f1 ~ c2@4",
  AT: "bb1@2 bb1@2 ~@2 bb1 ~ c2 ~ c2@2 c3@2 c2@2", AU: "f1@5 ~ f1 ~ f1@4 c2@3 ~",
  AV: "bb1@2 bb1@2 ~@2 bb1 ~ bb1@4 c2@4", AW: "f1@2 f1@3 ~ f1 ~ f1@5 ~ a1@2",
  AX: "bb1 ~ bb1@2 bb1 ~ c2@3 ~ c2 d2 c2@2 e1@2", AY: "f1@5 ~ f1 ~ f1@3 ~ c2@2 c2@2",
  AZ: "f1 ~ f1@2 ~@2 f1 ~ f1@5 ~ c2 ~", BA: "bb1 ~ bb1@3 ~ bb1 ~ d2@2 c2 ~ c2@2 e1@2",
  BB: "f1@2 f1@3 ~ g1@2 a1@2 a1@3 ~ a1@2", BC: "bb1@5 ~ bb1 ~ bb1 ~ bb1 ~ c2@4",
  BD: "f1@2 f1@3 ~ f1 ~ f1 ~ f1@2 c2@3 ~", BE: "bb1@2 bb1@2 ~@2 bb1@2 c2@2 c2 d2 c2@2 e1@2", BF: "f1",
})).s("gm_fretless_bass").gain(0.38)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note("<~@11 A@3 B C D E F G ~@18 H@6 I@4 B C D E F G ~@77>".pickRestart({
  A: "[~@6 [a3,c4,f4]@2 [bb3,c4,d4,f4] ~ [bb3,d4,f4]@2 [a3,c4,f4] ~ [d4,f4]@32 ~@2]/3", B: "[g3,c4,e4]@15 ~",
  C: "[f3,d4]@6 [g3,e4]@2 [a3,f4]@7 ~", D: "[c4,d4,f4]@15 ~", E: "[b3,d4,f4]@15 ~",
  F: "[bb3,d4,f4]@4 [bb3,d4,f4]@3 ~ [bb3,d4,f4]@3 ~ [bb3,d4,f4]@3 ~", // Bb
  G: "[bb3,d4,g4]@5 ~ [c4,e4,g4]@2 [bb3,d4,f4]@3 ~ [c4,e4,g4]@3 ~", // Gm C Bb C
  H: "[f4@6 c4@2 d4@4 f4@2 e4@6 ~@2 c4@2 d4@4 e4@3 ~]/2",
  I: "[f4@6 c4@2 d4@4 f4@2 e4@6 ~@2 [a3,c4,f4]@2 [bb3,c4,d4,f4] ~ [bb3,d4,f4]@2 [a3,c4,f4] ~ [d4,f4]@32 ~@2]/4", // F Bb F Dm
})).s("gm_acoustic_guitar_steel").gain(0.25)

// chords · flute
const flute = note(`<
  ~@20 A@2 B C D E@2 ~ A@2 B C D ~@21 D F B C D G@2 ~ D F B C D ~@12 H I H I H I ~@4 D F B C D E@2 ~ D F B C D ~@3 J K L
  M N@3 ~ D F B C D G@2 ~ D F B C D E@2 ~@3
>`.pickRestart({
  A: "[~@2 [c4,f4]!3 [c4,e4] [c4,f4] [d4,f4]@2 ~ [f3,bb3] [bb3,d4] [c4,f4]@2 [c4,e4] [a3,c4]]/2", // F5 C F5 Dm Bb5 Bb F5 C …
  B: "~@2 [c4,f4]!2 [c4,f4]@2 [a3,c4]!2", C: "[bb3,d4] [bb3,d4]@2 [c4,e4]@3 ~@2",
  D: "~@2 [c4,f4]!3 [c4,e4] [c4,f4] [d4,f4]", E: "[~@2 [f3,bb3] [bb3,d4] [c4,f4]@2 [c4,e4] [c4,e4]@2 [a3,c4]@5 ~@2]/2",
  F: "~@2 [f3,bb3] [bb3,d4] [c4,f4]@2 [c4,e4] [a3,c4]", // Bb5 Bb F5 C Am
  G: "[~@2 [f3,bb3] [bb3,d4] [c4,f4]@2 [c4,e4] c4@2 [a3,c4]@5 ~@2, ~@7 e4 ~@8]/2", H: "~@5 [c4,f4,a4]!3",
  I: "[c4,f4,a4] ~@7", J: "~@2 [f3,c4,f4,a4,c5]!3 [f3,c4,e4,g4,c5] [f3,c4,f4,a4,c5] [bb2,d4,f4,bb4,c5]",
  K: "~@2 [d3,f3,bb3,d4] [f3,bb3,d4,f4] [bb2,bb3,c4,f4,a4]@2 [e4,g4] f4, ~@3 [c3,g3,c4,c5]", // Bb F Em C5
  L: "~@2 [f3,c4,f4,a4,c5]!2 [f3,c4,f4,a4,c5]@2 [a3,c4,g4] [a2,a3,c4,f4], ~@3 f3", // F Am7 F
  M: "[bb2,f3,bb3,d4,f4,bb4] [bb2,f3,bb3,d4,f4,bb4]@2 [c3,g3,c4,e4,g4,c5]@5", // Bb C
  N: "[~@2 [f3,c4,f4,a4,c5]!3 [f3,c4,e4,g4,c5] [f3,c4,f4,a4,c5] [bb2,f3,d4,f4,bb4,d5]@2 ~ [f3,bb3,d4] [a3,d4,f4] [c3,c4,f4,a4,c5]@2 [c3,c4,f4,g4,c5] [c4,f4,g4]@2 [a3,c4,f4]@7, ~@5 [f3,c5]@3]/3", // F C F Bb Dm F Csus4 F …
})).s("gm_flute").gain(0.25).pan(0.4)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@11 A@3 B@2 C@2 D E F@2 G H F@2 G I F@2 G H J@2 K ~@2 L ~@7 A@3 B@2 C@2 D E F@2 G H F@2 G I F@2 G H J@2 K ~@20 F@2 G
  H F@2 G I F@2 G H F@2 G I ~@8 F@2 G H F@2 G I F@2 G H F@2 G I G ~
>`.pickRestart({
  A: "[~@3 c4 d4!2 c4 [bb3,d4]@17]/3", B: "a3/2", C: "[c4 b3, f4]/2", D: "[bb3,f4]",
  E: "[bb3,g4]@5 ~ [c4,e4,g4] ~ [bb3,d4,f4]@4 [c4,e4,g4]@4", F: "[[a3,c4]@7 [bb3,d4]@7 [g3,c4,e4]@2, f4@7 ~]/2",
  G: "[a3,c4,f4]", H: "[bb3,d4,f4]@3 [g3,c4,e4]@5", I: "[bb3,d4,f4]@3 [g3,c4,e4]",
  J: "[[a3,c4]@7 [bb3,d4]@4 [a3,bb3,d4,f4]@3 [g3,c4,e4]@2, f4@11 ~@5]/2", K: "[c4,f4]@13 ~@3", L: "g4@13 ~@3",
})).s("gm_string_ensemble_1").gain(0.24).pan(0.4)

// other · lead 1 square · "SQUAREWAVE"
const lead_1_square = note("<~@111 A@2 ~@18>".pickRestart({
  A: "[~@3 f4@5]/2",
})).s("gm_lead_1_square").gain(0.12)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note("<~@40 A B ~@2 C@2 ~@85>".pickRestart({
  A: "~@6 c4@2 c4@2 ~ bb3@2 ~ a3@2", B: "g3 ~", C: "[~@6 c4@2 c4@2 e3@2 f3 ~ g3@8 ~@10]/2",
})).s("gm_electric_guitar_jazz").gain(0.36).pan(0.4)

// other · timpani
const timpani = note("<~@23 A B ~@6 A B ~@24 A B ~@6 A B ~@12 C D C D C D C D ~ E ~@42>".pickRestart({
  A: "~@14 c3 ~", B: "f2 ~@15", C: "~@14 f2!2", D: "f2 ~@7", E: "~@6 c3 ~ c3@2 ~@2 c3 ~@3",
})).s("gm_timpani").gain(0.44).pan(0.4)

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

// drums · rim
const rim = s("rim").struct("<A@19 ~@15 A@19 ~@15 B C B C B C B C B C B C A C A C ~@47>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2",
})).gain(0.49)

// drums · snare
const snare = s("sd").struct(`<
  ~@19 A B C B@10 D ~@20 E B@12 D ~@13 F ~ F ~ B@4 G B@7 H B@7 I ~@7 J B@3 D B@3 K B@3 L B@3 F ~@2
>`.pickRestart({
  A: "~@4 x!2 ~@2", B: "~ x ~ x", C: "~@3 x", D: "~@2 x ~@3 x!2", E: "~@3 x!2 ~@3", F: "~ x ~@2", G: "~ x ~@3 x ~@2",
  H: "~@2 x ~@5 x ~@3 x!3 ~", I: "~ x!7", J: "x ~@7 x ~@2 x ~@4", K: "~ x!2 ~@5", L: "~@4 x ~@7 x ~ x!2",
})).gain(0.44)

// drums · clap
const clap = s("cp").struct("<~@105 [~ x ~ x]!6 ~@20>").gain(0.33)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@19 A ~@7 B ~@25 C ~@7 B ~@17 D E D E D E D E F G ~@15 H ~@7 D ~@3 I ~@3 I ~@7 F ~@2
>`.pickRestart({
  A: "~@2 x!2 ~@2 x!2", B: "~@7 x", C: "~ x!2 ~@2 x!3", D: "~@14 x!2", E: "x", F: "~@5 x!3", G: "x ~ x ~@10 x!2 ~",
  H: "~ x!7", I: "~@6 x!2",
})).gain(0.44)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@20 A B@2 ~ A B ~@2 A B@2 ~ B ~@21 A B@2 ~ A B ~@2 A B@2 ~ B ~@22 A B@2 ~ A B ~@2 A B@2 ~ A B ~@10 A B@2 ~ A B ~@2 A
  B@2 ~ A B ~@4
>`.pickRestart({
  A: "~@3 x ~ x ~@2", B: "~ x ~@6",
})).gain(0.27)

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

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

// drums · crash
const crash = s("cr").struct("<~@20 A ~@7 A ~@25 A ~@7 A ~@26 A ~@7 A ~@3 A ~@11 A ~@7 A ~@3 A ~@3 A ~>".pickRestart({
  A: "x",
})).gain(0.49)

// drums · high tom
const high_tom = s("ht").struct("<~@112 [~@3 x ~@12] ~@18>").gain(0.49)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@21 A ~ A ~ A ~ A ~ A ~ A ~@23 A ~ A ~ A ~ A ~ A ~ A ~@24 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A
  ~@4
>`.pickRestart({
  A: "~@5 x ~ x",
})).gain(0.44)
// … 33 more lines

More by Eric Carmen