Strudelify

Hand in My Pocket

Alanis Morissette

KeyG majorTempo92 bpm
0:00/0:00
// Hand in My Pocket — Alanis Morissette
// 92 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 3 "DIST. OF TRACK 1" distortion guitar (copy of ch 1 "GUITAR 1" electric guitar clean); ch 4 "DIST. BENDS" distortion guitar (copy of ch 2 "BENDS" electric guitar clean); ch 9 "BASS" fretless bass (copy of ch 8 "BASS" synth bass 1)
// note: Full arrangement: all 87 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(92/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 · electric guitar clean · "GUITAR 1"
const electric_guitar_clean = note(`<
  ~@2 A@7 B@6 C D@3 E F G H@2 I@2 H@2 J@2 K@2 L M N E O@10 P Q L@2 R E S@2 T@7 U P Q L@2 R E L@2 P Q L@2 R E V@5 W@6
>`.pickRestart({
  A: "[g2@2 ~@2 d4@2 ~ g2 ~ g2 d4@2 [d4,g4]@2 ~@2 g2@2 ~@6 g2!2 ~@6 g2@2 ~@2 d4@2 ~ g2 ~ g2 d4@2 [d4,g4]@2 ~@2 g2@2 ~@6 g2!2 ~@6 g2@2 ~@2 d4@2 ~ g2 ~ g2 d4@2 [d4,g4]@2 ~@2 g2@2 ~@6 g2!2 ~@6 g2@2 ~@2 d4@2 ~ g2 ~ g2 d4@2 [d4,g4]@2 ~ d4, ~@2 g2@4 g3@2 [g2,d4]@2 g2@5 d4@5 [d4,g4]@6 g2@6 ~@2 g2@5 ~ [g2,d4]@2 g2@6 ~@2 g2@5 [g2,d3]@2 d3@6 d3@3 ~@5 d3@3 ~@5 d4@5 [d4,g4]@7 ~ [d4,g4]@8 g4@8 ~@2 g4@2, ~@4 g4@8 ~@2 g4@2 ~@2 g2@5 [g2,d3]@2 d3@6 d3@3 ~@5 d3@3 ~@5 d4@5 [d4,g4]@7 ~ [d4,g4]@8 g4@8 ~@2 g4@2 ~@10 g2@6 ~@2 g2@5 ~ [g2,d4]@2 g2@6, ~@7 d3@2 g3@7 g3@4 ~@2 g3@2 g3@6 g3@3 ~@5 g3@3 g3@7 g3@4 ~@2 g3@2 g3@6 g3@3 ~@5 g3@3 g3@7 g3@4 ~@2 g3@2 g3@6 g3@3 ~@5 g3@3 g3@7, ~@28 [d4,g4]@8 g4@8 ~@2 g4@2 ~@10 g2@6 ~@2 g2@5 ~ [g2,d4]@2 g2@6 ~@2 g2@5 [g2,d3]@2 d3@6 d3@3 ~@5 d3@3 ~@6]/7", // G5
  B: "[g2@2 ~@6 [g2,g3] [g2,d3,g3] ~@6 g2@2 ~@2 d4@2 ~ g2 ~ g2 d4@2 [d4,g4]@2 ~@2 g2@2 ~@6 g2!2 ~@6 g2@2 ~@2 d4@2 ~ g2 ~ g2 d4@2 [d4,g4]@2 ~@2 g2@2 ~@6 g2!2 ~@8 d4@2 g4@2 ~@6 g4@2 ~ [b2,g3], g3@4 [d4,g4]@7 ~ [d4,g4]@7 ~ g4@8 ~@2 g4@2 ~@2 g2@5 [g2,d3]@2 d3@6 d3@3 ~@5 d3@3 ~@5 d4@5 [d4,g4]@7 ~ [d4,g4]@6 ~@4 d4@2 ~@2 g3@4 ~@2, ~@2 g2@4 g3@2 ~@2 d3@4 g3@3 ~@5 g3@2 [g2,d4]@2 g2@5 d4@5 [d4,g4]@6 g2@6 ~@2 g2@5 ~ [g2,d4]@2 g2@6 ~@2 g2@5 [g2,d3]@2 d3@6 d3@2 ~@7 g2@2 ~@4 [a2,d4]@2, ~@7 [g2,d3]@2 ~ g2@5 d3@3 g2@5 d3@2 g3@7 g3@4 ~@2 g3@2 g3@6 g3@3 ~@5 g3@3 g3@7 g3@4 ~@2 g3@2 g3@6 g3@2 ~@7 g3@2 d3@7, ~@44 [d4,g4]@7 ~ g4@8 ~@2 g4@2 ~@10 g2@6 f2@14 ~@2]/6", // G G5 Em G5 D5 G5
  C: "[g3,d4]@4 ~@3 g3, [c3,c4], ~@4 g3@3 ~, ~@9 d4@2 ~ d4@4, ~@5 g4@3", // G5 C
  D: "[g2@2 ~@2 d4@2 ~ g2 ~ g2 d4@2 [d4,g4]@2 ~@2 g2@2 ~@5 g2 [g2,g4] g2 d4@2 ~@6 d4@2 g4@2 ~@6 g4@2 ~ [b2,g3], ~@2 g2@4 g3@2 [g2,d4]@2 g2@5 d4@5 [d4,g4]@4 ~ d3@6 d3@3 ~@6 g2@2 ~@4 [a2,d4]@2, ~@4 g4@8 ~@2 g4@2 ~@2 g2@5 [d3,d4]@2 g4@3 g4@4 ~@6 d4@2 ~@2 g3@4 ~@2, ~@7 d3@2 g3@7 g3@4 ~@2 g3@2 g3@6 [g3,d4]@3 ~@6 g3@2 d3@7, ~@13 g2@3 f2@7 ~]/3", // G5 G Em G5 D5 D G5
  E: "~ d4 ~ d4 ~ d4 ~ d4, c3 d3, ~@2 g4@3 ~ g4@2",
  F: "~@2 d4@2 ~@2 d4 ~ d4 ~ d4@4 [d4,g4]@2, g2@7 g3@5 ~@4, ~@4 g4@4 ~ g4@5 ~@2", // G5
  G: "~@2 d4@2 g4@2 ~ g4@2 ~ d4@2 ~@2 d4@2, g3, g2 ~, ~@6 d4@3 g4@2 ~ g4@4",
  H: "[~@4 g4@2 ~ [g3,g4]@2 ~ d4@2 g4@2 ~@6 g4@2 ~ [g3,g4]@2 ~ d4@2 g4@2 ~ g3, g2@15 ~ g2@16, ~@2 [g3,d4]@4 [d3,d4]@3 g3@6 g3@2 ~ [g3,d4]@4 ~@3 g3@6 ~, ~@9 g4@2 ~@3 d4@2 ~@9 g4@2 ~@3 d4@2, ~@10 d3@12 [d3,d4]@4 d3@5 ~]/2", // G G5 D G5 D
  I: "[~@4 g4@2 ~ [g3,g4]@2 ~ d4@2 g4@2 ~ g3 g3@2 ~@2 g4@2 ~ g3 g4 ~ d4@2 g3@2 ~ g3, g2@15 ~ g2@16, ~@2 [g3,d4]@4 [d3,d4]@3 g3@6 ~@3 [g3,d4]@4 ~@3 g4@7, ~@9 g4@2 ~@3 d4@2 ~@7 d4@3 d3@5 ~, ~@10 d3@12 d3@3 g3@3 ~@2 d4@2]/2", // G G5 D G5
  J: "[~@4 g4@2 ~ [g3,g4]@2 ~ d4@2 g4@2 ~ g3 g3@2 ~@2 g4@2 ~@2 g4 ~ d4@2 ~@3 g3, g2@15 ~ g2@16, ~@2 [g3,d4]@4 [d3,d4]@3 g3@6 ~@3 [g3,d4]@5 [g3,d4]@3 d3@4 d4@2, ~@9 g4@2 ~@3 d4@2 ~@9 g4@2 ~ g4@4, ~@10 d3@12 d3@3 g3@6 ~]/2", // G G5 D G5
  K: "[~@8 d3 ~ d4@2 ~@19 d3, f2@4 ~@3 [a2,d4] [g2,c3]@4 d3@3 ~, ~@2 g3@5 d4@2 g3@6 [b2,g3]@2 ~ g3@5 d4@3 g3@4 g3@2, ~@2 g4@3 ~ g4@2 ~@2 g4@6, ~@7 d4]/2", // D5 C5 Em
  L: "g3@2 ~@2 g4@2 ~@2 g4 ~ d4@2 ~@3 g3, g2, ~@2 [g3,d4]@4 d3@3 g3@5 d4@2, ~@7 [g3,d4]@2 g4@2 ~ g4@4, ~@10 d3@5 ~", // G5
  M: "g3@2 ~@2 g4@2 ~@2 g4 ~ d4@2 ~@3 g3, g2, ~@2 [g3,d4]@4 d3@3 g3@5 d4@2, ~@7 [g3,d4]@2 g4@3 g4@4, ~@10 d3@5 ~", // G5
  N: "~@4 g4@3 ~ g4 ~ d4@2 ~@3 g3, f2@7 d4@2 g4@3 g4@4, ~ g3@6 d4",
  O: "~@4 g4@3 ~@8 d4, [g2,g3]@4 d4 d4@2 ~, ~@2 d4@5 g3@4 ~ g3@4, ~@9 g4@4 ~ g4@2", // G
  P: "~@4 g4@3 ~ g4 ~ d4@2 ~@3 b2, f2@7 [a2,d4], ~@2 d4@4 ~ d4@2 g4@2 ~ g4@4", // D5
  Q: "~@4 g4@3 ~ g4 ~ d4@2 ~@3 g3, c3, ~@2 d4@4 ~ d4@2 g4@2 ~ g4@4, ~@7 d4",
  R: "~@4 g4@3 ~ g4 ~ d4@2 ~@3 g3, f2@7 d4@2 g4@2 ~ g4@4, ~ g3@6 d4",
  S: "[g3@2 ~@18 g3@3 ~@5 g2@4, g2@8 g2@5 ~ d4@2 g2@8 ~ g3@7, ~@2 g3@7 ~ g3@5 g3@2 ~ d3@4 ~ d3@3 d3@6, ~@4 g4@7 ~ g4@5 ~@7 d4@8]/2",
  T: "[g2@2 ~@2 d4@2 ~ g2 ~ g2 d4@2 [d4,g4]@2 ~@2 g2@2 ~@6 g2!2 ~@6 g2@2 ~@2 d4@2 ~ g2 ~ g2 d4@2 [d4,g4]@2 ~@2 g2@2 ~@6 [g2,g3] [g2,d3,g3] ~@6 g2@2 ~@2 d4@2 ~ g2 ~ g2 d4@2 [d4,g4]@2 ~@2 g2@2 ~@6 g2!2 ~@6 g2@2 ~@2 d4@2 ~ g2 ~ g2 d4@2 [d4,g4]@2 ~ d4, ~@2 g2@4 g3@2 [g2,d4]@2 g2@5 d4@5 [d4,g4]@6 g2@6 ~@2 g2@5 ~ [g2,d4]@2 g2@6 ~@2 g2@5 [g2,d3]@2 ~ g2@6 ~@2 g2@5 ~ [g2,d4]@2 g2@6 ~@2 g2@5 [g2,d3]@2 d3@6 d3@3 ~@5 d3@3 ~@6, ~@4 g4@8 ~@2 g4@2 ~@2 g2@5 [g2,d3]@2 d3@6 d3@3 ~@5 d3@3 ~@5 d4@5 [d4,g4]@7 ~ [d4,g4]@7 ~ g4@8 ~@2 g4@2 ~@10 g2@6 ~@2 g2@5 ~ [g2,d4]@2 g2@6, ~@7 d3@2 g3@7 g3@4 ~@2 g3@2 g3@6 g3@3 ~@5 g3@3 g3@7 g3@4 ~@2 g3@2 ~@2 d3@4 g3@3 ~@5 g3@3 g3@7 g3@4 ~@2 g3@2 g3@6 g3@3 ~@5 g3@3 g3@7, ~@28 [d4,g4]@8 g4@8 ~@2 g4@2 ~@15 d3@3 ~@5 d3@3 ~@5 d4@5 [d4,g4]@7 ~ [d4,g4]@7 ~ g4@8 ~@2 g4@2]/7", // G5 G G5
  U: "[g2,d3,g3,d4]!8", // G5
  V: "[g2@2 ~@2 d4@2 ~ g2 ~ g2 d4@2 [d4,g4]@2 ~@2 g2@2 ~@6 g2!2 ~@6 g2@2 ~@2 d4@2 ~ g2 ~ g2 d4@2 [d4,g4]@2 ~@2 g2@2 ~@6 [g2,g3] [g2,d3,g3] ~@6 g2@2 ~@2 d4@2 ~ g2 ~ g2 d4@2 [d4,g4]@2 ~ d4, ~@2 g2@4 g3@2 [g2,d4]@2 g2@5 d4@5 [d4,g4]@6 g2@6 ~@2 g2@5 ~ [g2,d4]@2 g2@6 ~@2 g2@5 [g2,d3]@2 ~ g2@6 ~@2 g2@5 ~ [g2,d4]@2 g2@6, ~@4 g4@8 ~@2 g4@2 ~@2 g2@5 [g2,d3]@2 d3@6 d3@3 ~@5 d3@3 ~@5 d4@5 [d4,g4]@7 ~ [d4,g4]@7 ~ g4@8 ~@2 g4@2, ~@7 d3@2 g3@7 g3@4 ~@2 g3@2 g3@6 g3@3 ~@5 g3@3 g3@7 g3@4 ~@2 g3@2 ~@2 d3@4 g3@3 ~@5 g3@3 g3@7, ~@28 [d4,g4]@7 ~ g4@8 ~@2 g4@2 ~@15 d3@3 ~@5 d3@3 ~@6]/5", // G5 G G5
  W: "[g2@2 ~@6 g2!2 ~@6 g2@2 ~@2 d4@2 ~ g2 ~ g2 d4@2 [d4,g4]@2 ~@2 [g2,d3,g3]@57 ~@7, g3@4 [d4,g4]@6 g2@6 ~@2 g2@5 ~ [g2,d4]@2 g2@6 ~@64, ~@2 g2@4 g3@2 g3@6 g3@3 ~@5 g3@3 g3@7 ~@64, ~@7 [g2,d3]@2 d3@6 d3@3 ~@5 d3@3 ~@5 d4@58 ~@7, ~@12 [d4,g4]@7 ~ g4@8 ~@2 g4@2 ~@64]/6", // G5
})).s("gm_electric_guitar_clean").gain(0.51)

// other · electric guitar clean · "BENDS"
const electric_guitar_clean_2 = note("<~@20 A B ~@3 A B ~@37 A B ~@6 A B ~@13>".pickRestart({
  A: "~@6 b3!2", B: "b3@7 ~@9",
})).s("gm_electric_guitar_clean").gain(0.66)

// chords · overdriven guitar · "GUITAR 2"
const overdriven_guitar = note(`<
  ~@14 A B C@2 A D E@2 F@8 A B C@2 A D E@2 G H I H J K L M A N@2 O A D P@2 ~@8 A B C@2 A D E@2 A B C@2 A D P@2 ~@9
>`.pickRestart({
  A: "[f2,f3]@14 ~ b2, ~@7 a2", B: "~@3 d4, [c3,g3,c4], d4@11 ~@5, ~ g4",
  C: "[~@12 b3 c4@3 b3@15 ~, [g2,d3,g3]@31 ~]/2", D: "[c3,g3,c4] [d3,a3,d4]", E: "[[g2,d3,g3]@31 ~]/2",
  F: "~@4 g3@6 ~@2 g3@2 ~ d3, g2, ~ d3@4 d3@2 g3", G: "g3@11 ~ g3 a3 a3@2", H: "a3@12 g3 a3 a3@2", I: "a3@12 g3 a3!3",
  J: "a3@12 [g3,c4] [a3,e4]!3", K: "[a3,e4]@12 g3 a3 a3@2", L: "a3@11 g3 a3!2 a3@2", M: "a3 g3@5 ~@2",
  N: "[[c3,g3,c4,d4]@8 a4@12 g3@6 ~ g3 d4@3 d4]/2", O: "d4@15 ~", P: "[g2,d3,g3]/2",
})).s("gm_overdriven_guitar").gain(0.25)

// chords · percussive organ · "ORGAN"
const percussive_organ = note(`<
  ~@22 A@8 B C D@2 E F D@2 G@8 H C I@2 E F D@2 ~@8 B C D@2 E F D@2 B C D@2 E F ~@11
>`.pickRestart({
  A: "[d4,d5]/8", B: "[f4,c5,d5]", C: "[g4,c5,e5]", D: "[b4@3 c5 b4@4, [g4,d5]]/2", E: "[a4,c5,f5]",
  F: "[g4,c5,e5] [d4,a4,d5]", G: "[d4,g4,b4,d5]/8", H: "[f4,c5]", I: "[b4@3 [c5,e5] b4@4, [g4,d5]]/2",
})).s("gm_percussive_organ").gain(0.4)

// chords · harmonica
const harmonica = note("<~@38 A B C D E F G@2 ~@31 H@2 I J K L M@4>".pickRestart({
  A: "[g4,b4]@12 [a4,c5] [g4,b4] [a4,c5]@2", B: "[a4,c5] [g4,b4]@13 ~@2", C: "[g5,b5]@12 [c5,e5] [b4,d5] [c5,e5]@2",
  D: "[g4,b4,d5]@12 ~@2 [b4,d5] [c5,e5]", E: "[g5,b5]@6 [e5,a5] [d5,g5] [e5,a5]@3 [d5,g5]@3 [c5,e5] ~",
  F: "[c5,e5] [b4,d5]@10 ~@3 [d4,g4] [e4,g4]", // C Bm G5 Em
  G: "[[g4,b4]@6 [e4,a4] [d4,g4] [e4,a4]@2 [g4,b4]@2 ~@2 [d4,g4]@11 ~@7]/2", // G A5 G5 A5 G G5
  H: "[~@4 [a4,c5]@10 [g4,b4] [d4,g4]@13 [c4,e4] [b3,d4] [c4,e4]@2]/2", I: "[b3,d4]@13 ~ [a3,c4]@2",
  J: "[g3,b3]@7 [a3,d4]", K: "[d3,g3]@11 [d3,g3] [e3,a3] [d3,g3] [e3,a3]@2", L: "[d3,g3]@12 [e3,a3] [d3,g3] [e3,a3]@2",
  M: "[d3,g3]/4", // G5
})).s("gm_harmonica").gain(0.68)

// bass · synth bass 1 · "BASS"
const bass = note(`<
  ~@14 A B C D A E F G H I J K L F L M N O P Q R S T U V W V W V X Y Z AA AB AC AD AE AF AC AG ~@5 AH AI AJ AK AL AC AM
  AN AO AP AQ AR AS AT AU AV AW AX@4 AY@3 AZ@4
>`.pickRestart({
  A: "f2", B: "c2", C: "g1@3 d2", D: "g1@11 d2 g2@4", E: "c2 d2", F: "g1@11 g1 d2@2 d2@2",
  G: "~@2 g2@7 g1 g1@2 d2@2 d2@2, g1@9 ~@7", H: "g1@7 g1 g1@3 g1 d1@2 d1@2", I: "g1@9 g1 g1@2 d2@4",
  J: "g1@10 g2 g1 d1@2 d1@2", K: "g1@11 g1 d2 ~ d2@2", L: "g1@11 g1 d1@2 d1@2", M: "g1@7 g1 d2@2 g1@2 g1@4",
  N: "f1@7 c2 f2@2 f2@2 f2@2 a1 b1", O: "c2@2 c2@2 c2@4 c2!2 c2@4 c2@2", P: "g1@7 d2 g2 g1 g1@2 d2@2 d2@2",
  Q: "g1@7 d2 g2 d2 g1@2 g1@2 d2@2", R: "~@2 f1@2 f1@3 f1 c2 f1 f1@6, f2 ~", S: "c2@6 c2!2 d2@2 d2@2 d2@2 d2@2",
  T: "~@4 g2@5 g1 g1@2 d2@2 d2@2, g1 ~", U: "~@4 g2@5 g1 g1@2 d2 d1 d2@2, g1 ~", V: "~@4 g2@5 g1!3 d2@2 d2@2, g1 ~",
  W: "~@4 g2@5 g1!3 d1@2 d1@2, g1 ~", X: "~@4 g2@3 g1!3 g1@2 d1@2 d1@2, g1@7 ~@9",
  Y: "~@4 g2@3 g1!3 g1@2 d2@2 d2@2, g1@7 ~@9", Z: "~@4 g2@3 d2 g2 d2 g1@2 g1@2 d2@2, g1@7 ~@9",
  AA: "f1@7 c2 f2 c2 f1@2 f1@2 a1 b1", AB: "c2@7 c2 c2@2 c2@2 c2@2 d2@2", AC: "g1@7 g1!3 g1@2 d2@2 d2@2",
  AD: "g2@7 d2 g2 d2 g1@2 g1@2 g1 f#1", AE: "~@2 f2@5 b1, f1@7 ~", AF: "c2@7 c#2 d2@2 d1@2 d2@2 d2@2",
  AG: "g2@7 d2 g2 d2 g1@2 g1@4", AH: "~@7 g2!3 g2@2 d2@4", AI: "g2@12 d2 ~ d2@2", AJ: "g1@7 g1!3 g1@2 g1@2 g1@2",
  AK: "f1@7 ~ f1!2 f1@2 f1@2 a1 b1", AL: "c2@7 c2!3 c2@2 c2@2 c2@2", AM: "f2@7 d2 g2 d2 g1@2 g1@2 d2 c2",
  AN: "f1@7 c2 f1@2 f1 ~ f1@2 a1 b1", AO: "c2@2 c2@2 c2@3 c#2 d2@2 d2@2 d2@2 d2@2",
  AP: "~@4 g2@3 d2 g2 d2 g1@2 d2@2 d2@2, g1@7 ~@9", AQ: "g2@4 g2@3 d2 g2 d2 g1@2 g1@2 g2 d2",
  AR: "f1@4 f1@3 f1!3 f1@2 f1@2 a1 b1", AS: "c2@2 c2@2 c2@2 c2!2 c2@2 c2@2 c2@2 c2!2",
  AT: "g1@2 ~@2 g2@3 g1!3 g1@2 d2@2 d2@2, ~@2 g1@5 ~@9", AU: "g2@2 g2@2 g2@3 d2 g2 d2 g1@2 g1@2 d2@2",
  AV: "f1@2 f1@5 f1!3 f1@2 f1@2 b1 ~", AW: "c2@2 c2@2 c2@2 c2!2 d2@2 d2@2 d2@4", AX: "g1@7 g1!3 g1@2 g1@4",
  AY: "[g1,g2]@7 g1!3 g1@2 g1@4", AZ: "[g1,g2]/4",
})).s("gm_synth_bass_1").gain(0.68)

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

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@5 A@3 ~ A@5 ~@22 B ~@17 A@7 ~@15 A ~ A ~ A ~@6>".pickRestart({
  A: "~@15 x", B: "~@14 x!2",
})).gain(0.4)

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@2 A ~@11 B ~ C@6 D@8 E C@2 F C@2 D F E D@5 G D H D I J E J H D ~@5 C ~ K L F M N H O P Q H D E J E J ~@11
>`.pickRestart({
  A: "~@15 x", B: "x ~@2 x", C: "~@3 x", D: "~ x ~ x", E: "x!2 ~@4 x ~", F: "x!4", G: "~ x!3", H: "~ x ~@4 x ~",
  I: "~@4 x ~@3 x!3 ~ x ~@3", J: "x!2 ~ x", K: "~@9 x!2 ~ x ~@3", L: "~@2 x ~ x ~@3 x ~@3 x ~ x!2",
  M: "x ~@3 x ~@3 x!3 ~ x ~@3", N: "x ~@3 x ~@3 x!3 ~ x ~ x ~", O: "x!3 ~@3 x ~", P: "~@2 x ~ x ~@3 x!3 ~@5",
  Q: "x ~ x ~ x ~ x!5 ~ x ~ x!2",
})).gain(0.72)

// drums · crash
const crash = s("cr").struct("<~@14 A ~@15 A ~@3 A ~ A ~@9 A ~@3 A ~ A ~@9 A ~@3 A ~ B ~ A ~ A ~ A ~@12>".pickRestart({
  A: "x", B: "x ~@2 x",
})).gain(0.72)

// drums · ride bell
const ride_bell = s("rd").struct("<~@17 [~ x] ~@4 [~ x] ~@64>").gain(0.72)

// drums · bongos
const bongos = s("bongo:4").struct("<~@2 [~ x ~@6]!81 ~@4>").gain(1.47)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<~@2 [~@15 x]!80 ~@5>").gain(1.47)

// drums · congas
const congas = s("conga:13").struct("<~@2 [~@3 x]!81 ~@4>").gain(1.28)

// drums · congas
const congas_2 = s("conga:18").struct("<~@2 [x ~@6 x!4 ~@5]!81 ~@4>").gain(1.28)

stack(
  electric_guitar_clean, electric_guitar_clean_2, overdriven_guitar, percussive_organ, harmonica, bass, kick, snare,
  snare_soft, hihat, open_hat, crash, ride_bell, bongos, bongos_2, congas, congas_2
)

More by Alanis Morissette