Strudelify

Blind Man

Aerosmith

KeyA majorTempo75 bpm
0:00/0:00
// Blind Man — Aerosmith
// 75 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(75/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.

// bass · electric bass finger · "Bass"
const bass = note(`<
  A B C D E F G F G F G F G H I H J K L M L M L M N O P Q R S T U V W X Y Z AA L M L M L M N AB AC AD AE AF X Y Z AA AG
  AH AG AI AJ AK@3 AL AM AN AO AP AQ AR AO AP AQ AS AO AT AU AV ~@3
>`.pickRestart({
  A: "~@12 e2 f#2@2 ~", B: "a2@9 ~@3 e2 f#2@3", C: "d2@11 ~ e2 f#2@3", D: "a2@12 e2 f#2@3", E: "d2@12 e2 f#2@2 ~",
  F: "a2@11 ~ a2@3 ~", G: "d2@7 ~", H: "f#2@5 ~ f#2@2 b2@7 ~", I: "d2@3 d2@3 d2@2 e2@6 e2@2", J: "d2@3 d2 d2@4",
  K: "e2!4 e2@4", L: "d2@3 d2 a2@2 a2@2", M: "e2@3 e2 b1@3 b1", N: "b1@4 d2@3 d2", O: "d2@4 e2 f#2@3 a2@6 a2@2",
  P: "a2@4 e2 f#2@2 ~ d2@7 ~", Q: "d2@2 d2@2 e2 f#2@2 ~ a2@6 a2@2", R: "a2@4 e2 f#2@3 d2@8",
  S: "d2@3 ~ e2 f#2@3 a2@6 a2@2", T: "a2@4 e2 f#2@3 d2@6 d2@2", U: "f#2@4 f#2@3 ~ b2@6 b2@2", V: "b2@5 ~ b2@2 e2@8",
  W: "f#2@5 ~ f#2@2 a2@5 ~ a2@2", X: "a2@5 ~ a2@2 d2@6 d2@2", Y: "f#2@3 f#2 b1@3 b1", Z: "b1@5 ~ b1@2 a2@6 a2@2",
  AA: "g2@3 g2 g1@3 g2", AB: "d2@4 e2 f#2@3 e2@4 e2@2 e2@2", AC: "f#2@2 f#2@2 e2!4", AD: "d2@2 d2@2 e2@2 e2!2",
  AE: "f#2@2 f#2@2 g2!4", AF: "g2@2 g2@2 g2@4 a2@5 ~ a2@2", AG: "e2@5 ~ e2@2 b1@5 ~ b1@2",
  AH: "f#2@5 ~ f#2@2 c#2@4 ~ c#2@2 ~", AI: "f#2@4 ~@2 f#2@2 c#2@4 ~ c#2@2 ~", AJ: "e2@6 ~ e2 b1@4 ~ b1 ~ b1",
  AK: "[f#2@5 ~ f#2 ~ c#2@28 ~@4 e2@7 ~]/3", AL: "e2@7 ~ e2@2 e2@2 e2 ~ e2@2",
  AM: "e2 ~ e2 ~ f#2 g#2@3 b1@4 ~@2 b1 ~, ~@5 f1 ~@10", AN: "b1@4 f#2 g#2@3 e2@4 ~ e2 ~@2",
  AO: "e2@4 f#2 g#2@3 c#2@4 ~@2 c#2 ~", AP: "c#2@4 f#2 g#2@3 e2@4 ~ e2 ~@2", AQ: "e2@4 f#2 g#2@3 b1@4 ~ b1 ~@2",
  AR: "b1@4 b2 f#2 g#2@2 e2@4 ~ e2 ~@2", AS: "b1@3 b1 b2 f#2 g#2@2 e2@4 ~ e2 ~@2", AT: "c#2@4 f#2 g#2@3 e2@4 ~@2 e2 ~",
  AU: "e2@4 f#2 g#2@3 b1@4 ~@2 b1 ~", AV: "b1@4 f#2 g#2@3 e2@4 ~@4",
})).s("gm_electric_bass_finger").gain(0.37)

// other · distortion guitar · "Elect. 1"
const distortion_guitar = note(`<
  A B C D E F@8 G H I J K L M N O N P@2 Q@3 R@3 S@2 T@2 U@2 V L M N O N P@2 W X Y Z@3 U@2 V AA AB AC AD AC AE@6 AF@4
  AG@2 AH@2 AI@5 ~@2
>`.pickRestart({
  A: "~@12 e3 f#3@2 ~", B: "[a3,a4]@10 [a3,a4]!2 e3 f#3@3, [c#4,e4]@3 ~",
  C: "[f#3,d4]@9 ~ [f#3,d4]!2 e3 f#3@3, d3@5 ~@3", D: "[a3,c#4,a4]@9 a4 [a3,c#4,a4] [a3,a4] e3 f#3@3",
  E: "[f#3,d4]@9 ~ [f#3,d4]!2 [e3,e4] [f#3,f#4]@2 ~, d3@3 ~", F: "~@5 a4 f#4 e4 a4@2 f#4 e4@2 a4 f#4 e4",
  G: "[f#2,f#3]@5 ~@2 f#3 b3@6 b2@2, ~@6 [f#2,f#3]@2 b2@5 ~@3", // F#
  H: "[d2,d3]@8 ~@2 b4@2 a4 f#4 ~ f#4, ~ e3, ~@4 e2@3 [e2,b4]", I: "f#2@5 ~ f#2@2 [b1,b2]@8, f#3 ~",
  J: "[d2,d3]@14 d3 [d2,d3]", K: "e2@8 ~@4 e3@2 g#3 b3, e3@3 ~, ~ e2", L: "[d2,d3] [a2,a3]",
  M: "e2@6 e2!2 b2@8, e3@4 b1@3 ~", N: "d2@3 d2 [a2,a3]@4, d3 ~", O: "e2@6 e2!2 b2@6 b2!2, e3 b1",
  P: "[e2@6 e2@2 ~@14 b2!2 [d2,d3]@6 d2 ~, e3@8 [b2,b3]@15 ~@9, ~@2 b1 ~]/2", // D B
  Q: "[[d2,d3]@7 ~ [a3,a4]@10 [a3,a4]!2 e3 f#3@3 [f#3,d4]@9 ~ [f#3,d4]!2 e3 f#3@3 [a3,c#4,a4]@8, ~@4 [c#4,e4]@6 ~@2 d3@5 ~@7]/3", // D A D A C#m
  R: "[~ a4 [a3,c#4,a4] [a3,a4] e3 f#3@3 [f#3,d4]@9 ~ [f#3,d4]!2 [e3,e4] [f#3,f#4]@2 ~ a4@16 d4@6 d4!2, ~@2 d3@3 ~@5 d3@2]/3", // A D E F#
  S: "[[f#2,f#3]@6 [f#2,f#3]!2 b3@14 b3!2 e4@4 e4@4, ~ b2@2 e3]/2", T: "[[f#3,f#4]@8 [a2,a3]@15 ~ d4@6 d4!2, ~@3 d3]/2",
  U: "[f#3@8 [b2,b3]@16 [a2,a3]@7 ~, f#4@3 ~@13]/2", V: "[g2,g3]@14 [g2,g3]!2", W: "[d2,d3]@7 ~ [e3,e4,a4]@8",
  X: "[f#3,f#4] [e3,e4]", Y: "[d3,d4]@4 ~ [d3,d4] ~@2 [e3,e4]@7 [e3,e4]",
  Z: "[[f#3,f#4]@4 ~ [f#3,f#4] ~@2 [g3,g4]@12 [g3,g4]!2 ~@2 [a2,a3,a4]@15 ~ d4@6 d4!2, ~@5 d3]/3", // F# G A
  AA: "e3@6 e3@2 b2@5 ~ b2@2", AB: "f#3@5 ~ f#3@2 c#3@8", AC: "e3 b2", AD: "f#3@6 f#3!2 c#3@4 ~ c#3@3",
  AE: "[f#3@6 f#3!2 c#3@29 ~ c#3!2 ~@16 e2@12 [e2,e3,g#3,f#4] [e2,e3,a#3,g#4] ~@2 [b2,b3]@14 ~ [b2,b3] [e3,e4]@8, ~@10 e3@7 ~@7]/6", // E A#m7b5 B E
  AF: "[~ [e3,e4] ~@3 [e3,e4]@3 [c#3,c#4]@13 ~ [c#3,c#4]@2 [e3,e4]@13 [e3,e4] ~@2 [b2,b3]@14 [b2,b3]@2 [e3,e4]@8]/4", // E C# E B E
  AG: "[~ [e3,e4]@4 [e3,e4]@3 [c#3,c#4]@12 [c#3,c#4]@2 [c#3,c#4]@2 [e3,e4]@8]/2", // E C# E
  AH: "[~ [e3,e4]@4 [e3,e4]@3 ~@12 f#4 g#4@2 ~ [e3,e4]@5 [e3,e4]@3, ~ [b2,b3]@2 ~]/2", // E B
  AI: "[~@4 f#4 g#4 ~@2 [c#3,c#4]@13 [c#3,c#4] ~@6 f#4 g#4 ~@2 f#4 g#4 ~@2 f#4 g#4 ~@2 [b2,b3]@13 [b2,b3] ~@2 [e3,e4]@14 ~@10, ~ [e3,e4]@6 ~@17 [e3,e4]@15 ~@41]/5", // C# B E
})).s("gm_distortion_guitar").gain(0.27).pan(0.8)

// other · overdriven guitar · "Elect.2"
const overdriven_guitar = note(`<
  A B C D E F G H I J K L M N O P K Q R S T U T V@2 W@3 X@3 Y@2 Z@2 AA@2 AB R S T U T V@2 AC AD AE AF@3 AA@2 AB AG AH AI
  AJ AK AL@6 AM@6 AN@6 ~@3
>`.pickRestart({
  A: "~@12 [e2,e3] [f#2,f#3]@3", B: "[a2,a3]@10 [a2,a3]!2 [e2,e3] [f#2,f#3]@3, [c#3,e3]@3 ~",
  C: "[f#2,d3,d4]@9 ~ [f#2,d3,d4]!2 [e2,e3] [f#2,f#3]@3, d2@5 ~@3", // D E F#
  D: "[a2,c#3,a3]@9 a3 [a2,c#3,a3] [a2,a3] [e2,e3] [f#2,f#3]@3", // A E F#
  E: "[f#2,d3]@9 ~ [f#2,d3]!2 [e2,e3] [f#2,f#3]@2 ~, d2@3 ~", F: "[a2,c#3,a3]@14 [a2,c#3]!2",
  G: "[d2,f#2,d3]@14 ~ [d2,f#2,a2]", H: "[a2,c#3,a3]@14 c#3 [c#3,a3]", I: "[d2,d3]@15 d2",
  J: "[a2,a3]@14 [a2,c#3]!2, c#3@13 ~@3", K: "[d2,d3]@14 d3 [d2,d3]", L: "[a2,a3]@15 a2", M: "[d2,d3]@13 d3!2 [d2,d3]",
  N: "[f#2,f#3]@5 ~ [f#2,f#3]@2 [b1,b2]@5 ~ [b1,b2]@2", O: "[d2,d3]@4 e2@3 e2, ~ e3",
  P: "f#2@5 ~ f#2@2 [b1,b2]@8, f#3 ~", Q: "e2!2, e3@15 ~", R: "[d2,d3] [a2,a3]", S: "e2@6 e2!2 b2@8, e3@4 b1@3 ~",
  T: "d2@3 d2 [a2,a3]@4, d3 ~", U: "e2@6 e2!2 b2@6 b2!2, e3 b1",
  V: "[e2@6 e2@2 ~@14 b2!2 [d2,d3]@6 d2 ~, e3@8 [b2,b3]@15 ~@9, ~@2 b1 ~]/2", // D B
  W: "[[d2,d3]@7 ~ [a2,a3]@10 [a2,a3]!2 [e2,e3] [f#2,f#3]@3 [f#2,d3,d4]@9 ~ [f#2,d3,d4]!2 [e2,e3] [f#2,f#3]@3 [a2,c#3,a3]@8, ~@4 [c#3,e3]@6 ~@2 d2@5 ~@7]/3", // D A E F# D E F# A …
  X: "[~ a3 [a2,c#3,a3] [a2,a3] [e2,e3] [f#2,f#3]@3 [f#2,d3]@9 ~ [f#2,d3]!2 [e2,e3] [f#2,f#3]@2 ~ [a2,a3]@16 d4@6 d4!2, ~@2 d2@3 ~@5 d3@2]/3", // A E F# D E F# A
  Y: "[[f#2,f#3]@6 [f#2,f#3]!2 [b2,b3]@16 [e3,e4]@8]/2", Z: "[f#4@4 f#4@4 [a2,a3]@15 ~ [d3,d4]@8, f#3 ~@3]/2",
  AA: "[f#4@6 f#4!2 [b2,b3]@16 [a2,a3]@7 ~, f#3 ~@3]/2", AB: "[g2,g3]@14 [g2,g3]!2", AC: "[d2,d3]@7 ~ [e2,e3]@8",
  AD: "f#3@6 f#3!2 [e2,e3]@8, f#2 ~", AE: "[d2,d3]@4 ~ [d2,d3]!2 ~ [e2,e3]@7 ~",
  AF: "[[f#2,f#3]@4 ~ [f#2,f#3] ~@2 [g2,g3]@12 [g2,g3]!2 ~@2 [a2,a3]@15 ~ [d3,d4]@8]/3", // F# G A D
  AG: "[e2,e3]@6 ~ [e2,e3] [b1,b2]@6 [b1,b2] ~", AH: "[f#2,f#3]@6 [f#2,f#3]!2 [c#2,c#3]@8",
  AI: "[e2,e3]@6 [e2,e3]@2 [b1,b2]@6 [b1,b2]!2", AJ: "[f#2,f#3]@5 ~ [f#2,f#3]@2 [c#2,c#3]@8",
  AK: "[e2,e3]@6 [e2,e3]@2 [b1,b2]@6 [b1,b2] b2", // E B
  AL: "[[f#2,f#3]@5 ~ [f#2,f#3]@2 [c#2,c#3]@32 ~@28 [f#2,f#3] [g#2,g#3] ~@2 b2@14 b2!2 e3@8, ~@40 [e2,e3]@31 ~@25]/6", // F# C# F# G# E
  AM: "[~@6 e3!2 c#3@14 c#3!2 e3@14 e3!2 b2@13 ~ b2!2 e3@14 e3!2 c#3@14 c#3!2 ~@6 e4@2, ~@11 e3]/6",
  AN: "[~ e4@3 ~@2 e3!2 b2@14 b2!2 ~@9 e4 ~@3 e4 ~@7 c#4@3 ~ c#4@3 ~ c#4@2 ~@7 e4!2 ~@2 e4!2 ~@13 b3 ~@3 b3 ~@10, ~@24 e3@15 ~ c#3@15 ~ e3@15 ~ b2@16 ~@8]/6",
})).s("gm_overdriven_guitar").gain(0.27).pan(0.2)

// other · distortion guitar · "1st. Guitarr"
const distortion_guitar_2 = note("<~ A B C D ~@18 E F G@5 ~@5 H@2 ~@6 E F ~@15 I J K@2 L M@3 ~@12>".pickRestart({
  A: "~@2 c#4 b3 e4@9 ~@3", B: "~ f#4 e4 d4 e4 ~ f#4@8 ~@2", C: "~@2 [a4,c#5]!3 ~@3 c#5 e5 c#5 a4@5, ~@7 b4@2 ~@7",
  D: "~@2 [d4,f#4]!2 f#4 e4 d4@8 ~@2", E: "~@4 e5 d#5 b4 f#4", F: "e4 d#4 f#4@2 ~@4",
  G: "[~@10 c#4 b3 e4@9 ~@4 f#4 e4 d4 e4 ~ f#4@8 ~@4 [a4,c#5]!3 ~@3 c#5 e5 c#5 a4@5 ~@2 [d4,f#4]!2 f#4 e4 d4@8 ~@10, ~@47 b4@2 ~@31]/5", // A D
  H: "[~@2 a4 ~@2 a4@13 ~@14]/2", I: "~@4 f#5 f5 c#5 g#4", J: "f#4@2 f4@2 g#4@4 ~@5 d#5@3",
  K: "[~@5 d#5@3 ~@5 d#5@11 ~@4 g#4@3 ~]/2", L: "g#4@3 f#4@3 ~ c#4 b3@8", M: "[~@4 e3 f#3 g#3 b3 c#4@30 ~@10]/3",
})).s("gm_distortion_guitar").gain(0.48)

// other · rock organ · "Teclados"
const rock_organ = note(`<
  ~@5 A@3 B C@2 D E F G H I J K L M N K O@3 ~@3 P@2 Q@2 R@2 S@2 T K L M N K U@3 V W X@3 Y@2 Z AA AB AC AD AE AF@3 ~ AG@5
  AH@8 AI@2 ~@2
>`.pickRestart({
  A: "[a3@46 [a4,a#4,b4,c5,c#5] [d5,d#5,e5,f5,f#5]]/3", B: "[a4,c#5,a5], a3@7 ~, [g5,g#5] ~@15",
  C: "[a5 [d5,a5], a4@9 ~@7]/2", D: "[a4,a5]", E: "[d5,a5]", F: "[f#3,f#4]@4 ~ [f#3,f#4]@2 ~ b4@7 ~",
  G: "d4@3 d4@5 e4@8", H: "[f#3,f#4] b4", I: "d4", J: "e4@14 ~ [f3,g3,a3]", K: "[d3,d4] [a2,a3]",
  L: "[e3,e4]@8 [b2,b3]@3 ~ b3 [c#3,c#4]@3, ~@6 b2 ~", M: "[d3,d4]@8 [a2,a3]@5 [a2,a3]@3",
  N: "[e3,e4]@8 [b2,b3]@4 b3 [c#3,c#4]@3", // E B C#
  O: "[[e3,e4]@8 [b2,b3]@16 ~@4 d4@2 a3 ~@17, ~@3 a2@2 ~, ~@4 a3 ~@3, ~@28 d3@11 ~@9]/3", // E B
  P: "[~@20 e4 f#4@3 d4@8, ~ [a2,a3]@2 ~]/2", Q: "[~@6 [e4,g4] [g3,a3,b3,c4,d4] [b2,b3]@16 [e3,e4]@8, [f#3,f#4] ~@3]/2",
  R: "[[f#3,f#4]@7 ~ [a2,a3]@16 [d3,d4]@8]/2", S: "[[f#2,f#3] [b2,b3]@2 [a2,a3]]/2", T: "~@7 d4, [g2,g3], ~ b2@3",
  U: "[[e3,e4]@8 [b2,b3]@16 ~@4 d4@2 a3 ~@3 d4@2 ~ d4@3 e3@8, ~@3 a2@2 ~, ~@24 a3@6 ~@3 a3@2 ~ a3@4 ~@8, ~@28 d3@11 ~@9]/3", // E B
  V: "f#3 e3", W: "d3 e3", X: "[f#3 g3@2 [a3,a4]@2 d4]/3", Y: "[f#4 b3@2 a3]/2",
  Z: "~@3 g4@2 ~@4 g4@2 ~ g4@3 ~, g3@15 ~", AA: "[e3,e4] [b2,b3]",
  AB: "[f#3,f#4]@5 f#4 g#4@2 ~@2 c#4@3 [c#3,c#4]@2 ~, ~@5 f#3@3 c#3@4 ~@4", // F# C#
  AC: "e4@3 ~ e4@4 [b2,b3]@8, e3 ~, d#4 ~@3 d#4 ~@11", AD: "[f#3,f#4]@4 ~ [f#3,f#4]@3 [c#3,c#4]@3 ~ [c#3,c#4]@4",
  AE: "e4@4 e4@3 ~@3 b3@3 ~ [b2,b3]@2, e3@8 b2@5 ~@3", AF: "[[f#3,f#4]@3 ~ f#4@2 g#4@2 [c#3,c#4]@31 ~@9, ~ f#3 ~@10]/3",
  AG: "[~@4 f#4 g#4@3 b3@12 f#4 g#4@3 e4@12 f#4 g#4@3 c#4@12 f#4 g#4@3 e4@12 f#4 g#4@3 b3@8, ~ b2@2 ~@2 c#3@2 ~@3]/5",
  AH: "[~@4 f#3 g#3@3 ~@4 e4@8 f#4 g#4@3 ~@10 g#4 ~ g#4 ~ g#4@2 ~@6 f#4 g#4 ~@2 f#4 g#4 ~@3 g#4 ~@12 f#4 g#4@3 ~@6 f#4 g#4 ~@2 f#4 g#4 ~@2 f#4 g#4 ~@7 g#4 ~@2 f#4 g#4 ~@2 f#4 g#4 ~@2 e4@14 [b2,b3]@8, ~ e3@2 c#3@2 [e3,e4]@2 b2@2 e3@2 c#3@2 e3@2 ~, ~@24 c#4@14 ~@20 b3@14 ~@4 e4@11 ~@3 c#4@13 ~@25]/8", // B E
  AI: "[~@5 [b2,b3]@3 [e3,e4]@16 ~@8]/2", // B E
})).s("gm_rock_organ").gain(0.28)

// other · rock organ · "Teclados" · soft notes
const rock_organ_soft = note(`<
  ~@13 A B A C D E ~@2 F ~@2 G@2 ~@4 H I ~@5 H ~@3 F ~@2 G@2 ~@7 J ~@10 K@2 L@3 ~@2 M ~@8
>`.pickRestart({
  A: "~ b3", B: "d3@3 d3@5 e3@8", C: "d3", D: "e3@14 [b3,c4,d4] e3", E: "c3 ~@15", F: "~@12 b2 ~@3",
  G: "[~@15 d4@2 ~@15]/2", H: "~ d3", I: "~@6 f4 ~@9", J: "~@3 g4 ~@4", K: "[~ e3@2 ~]/2", L: "[~ e3@2 b2@2 ~]/3",
  M: "~@6 f#4 ~@9",
})).s("gm_rock_organ").gain(0.16)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@4 B C D C B@3 E A B A E B A B A B A B F@3 E A F B@2 A F A G A H A B A E A B F I J@2 K L B M N O A B A B A B P Q R
  F@2 E@6 B E@4 H ~@3
>`.pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x!2", C: "x ~@7 x ~@2 x ~@2 x ~", D: "x ~@7 x ~@6 x", E: "x ~@7 x ~@2 x ~@4",
  F: "x ~@3 x ~@2 x", G: "~@3 x!2 ~@3", H: "x", I: "x ~@3 x!2 ~ x", J: "~ x ~ x ~ x ~ x", K: "~ x ~ x!3 ~ x",
  L: "~ x ~ x!2 ~@3", M: "x ~@2 x ~@2 x ~ x ~@7", N: "x ~@6 x ~@6 x ~", O: "x ~@4 x ~@2 x ~@2 x ~@4",
  P: "x ~@5 x ~ x ~@2 x ~@4", Q: "x ~ x ~ x ~@2 x", R: "x ~@7 x ~@2 x ~@3 x",
})).gain(0.61)

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

// drums · low tom
const low_tom = s("lt").struct("<A ~@11 B ~@11 C D ~@9 E ~ F ~@6 C D ~@7 G ~@7 H ~ I ~@16>".pickRestart({
  A: "~@13 x ~@2", B: "~@15 x", C: "~@7 x ~@8", D: "x ~@3 x!2 ~@10", E: "~ x ~@2 x ~ x!2 ~@8", F: "~@13 x!3",
  G: "~@14 x!2", H: "~@6 x!2 ~@8", I: "~@4 x!2 ~@10",
})).gain(0.49)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~ A B C B ~@20 D C@6 B C@2 E C F ~@7 D ~@17 D C@12 F ~@3>".pickRestart({
  A: "~ x!7", B: "x ~ x!6", C: "x!8", D: "~@5 x!3", E: "x!3 ~ x!4", F: "x!4 ~@4",
})).gain(0.61)

// drums · mid tom
const mid_tom = s("mt").struct("<[~@3 x] ~@36 [~@9 x ~ x ~@4] ~@15 [~@13 x ~@2] ~@7 [x!2 ~ x!3 ~@10] ~@18>").gain(0.61)

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

// drums · high tom
const high_tom = s("ht").struct("<~@12 A ~@11 B ~@10 C ~@8 B ~@16 D ~@18>".pickRestart({
  A: "~@7 x", B: "~@6 x ~@8 x", C: "~@5 x ~@10", D: "x",
})).gain(0.49)

// drums · crash
const crash = s("cr").struct(`<
  ~ A B@3 C ~@6 D C ~ C ~@2 C ~@3 C ~ E F B@3 G ~ H ~@3 E ~@2 C ~@3 C ~ E I J@3 K ~@4 C ~@3 C ~@2 H ~ F B@3 L B@3 L B@3
  L M ~@3
>`.pickRestart({
  A: "x!2 ~ x", B: "~ x ~ x", C: "x", D: "~@15 x", E: "~@7 x!2 ~@7", F: "~@7 x!2 ~@3 x ~@3", G: "~ x!2 ~", H: "~ x",
  I: "~@2 x!2", J: "x!4", K: "x!3 ~", L: "~ x!3", M: "~ x ~@2",
})).gain(0.49)

// drums · ride
const ride = s("rd").struct("<~@18 A B C B A C D E ~@12 A B C F A C D E ~@8 A B C B A C G D C E ~@16>".pickRestart({
  A: "~ x!7", B: "x ~ x ~ x ~ x ~ x ~ x ~ x!4", C: "x!8", D: "~@5 x!3", E: "x!2 ~@6",
  F: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", G: "x!7 ~",
})).gain(0.49)

// drums · shaker
const shaker = s("sh").struct("<[~ x] ~@79>").gain(0.49)

// drums · jingle bells
const jingle_bells = s("sleighbells:4").struct(`<
  ~ A@2 B C D@7 E ~@12 F D G D H ~@15 F ~@3 F D@4 ~@9 F D G@11 I ~@3
>`.pickRestart({
  A: "x!8", B: "x ~ x ~ x!5 ~ x ~ x ~ x ~", C: "x!7 ~", D: "x!4", E: "x!3 ~", F: "~@2 x!2", G: "x ~ x!3 ~ x ~",
  H: "x!2 ~@2", I: "x ~ x!2 ~@4",
})).gain(1.85)

// drums · bell tree
// … 11 more lines

More by Aerosmith