Strudelify

Taste It

INXS

KeyB minorTempo114 bpm
0:00/0:00
// Taste It — INXS
// 114 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 97 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(114/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 · acoustic bass
const bass = note(`<
  ~@6 A B@23 C ~ A D E@2 F@8 G@8 H@5 ~ I@3 J K L M N O@6 P Q R@2 S T U V W X ~@2 Y Z@2 AA@5 AB@5
>`.pickRestart({
  A: "~@5 b2@8 b2@6 b2@6 a2@4 b2@3", B: "~ d3@4 b2@8 b2@6 b2@6 a2@4 b2@3", C: "~ d3@4 ~@27",
  D: "~ d3@3 b2@8 b2@6 b2@6 a2@4 b2@4", E: "d3@2 b2@4 b2@3 b2@3 a2@2 b2@2",
  F: "[d3@4 b2@8 b2@6 b2@5 a2@4 b2@4 d3@4 b2@8 b2@6 b2@6 a2@4 b2@4 d3@4 b2@8 b2@6 b2@6 a2@4 b2@4 d3@4 b2@8 b2@6 b2@6 a2@4 b2@4 d3@4 b2@8 b2@6 b2@6 a2@4 b2@4 d3@4 b2@8 b2@6 b2@6 a2@4 b2@4 d3@4 b2@8 b2@6 b2@6 a2@4 b2@4 d3@4 b2@8 b2@6 b2@6 a2@4 b2@4 d3]/8",
  G: "[~@3 b2@8 b2@6 b2@6 a2@4 b2@4 d3@4 b2@8 b2@6 b2@6 a2@4 b2@4 d3@4 b2@8 b2@6 b2@6 a2@4 b2@4 d3@4 b2@8 b2@6 b2@6 a2@4 b2@4 d3@4 b2@8 b2@6 b2@6 a2@4 b2@4 d3@4 b2@8 b2@6 b2@6 a2@4 b2@4 d3@4 b2@8 b2@6 b2@6 a2@4 b2@4 d3@4 b2@8 b2@6 b2@6 a2@4 b2@4 d3]/8",
  H: "[~@3 b2@8 b2@6 b2@6 a2@4 b2@4 d3@4 b2@8 b2@6 b2@6 a2@4 b2@4 d3@4 b2@8 b2@6 b2@6 a2@4 b2@4 d3@4 b2@8 b2@6 b2@6 a2@4 b2@4 d3@4 ~@29]/5",
  I: "[~@2 b2@8 b2@6 b2@6 a2@4 b2@4 d3@4 b2@8 b2@6 b2@6 a2@4 b2@4 d3@4 b2@8 b2@6 b2@6 a2@3 b2@4 d3@3]/3",
  J: "~ b2@8 b2@6 b2@6 a2@4 b2@4 d3@3", K: "~ b2@8 b2@8 d3@8 d3@4 e3@3", L: "~ e3@31", M: "~ b2@7 b2@8 d3@12 e3@4",
  N: "e3!4 f#3 e3 d3 e3", O: "b2 ~ b2 ~ b2 ~ b2 b2@2 b2!2 a2 b2@2 d3 ~", P: "b2@2 b2@2 c#3@2 d3 g2@3 g2@2 a2@2 g2 a2",
  Q: "b2@2 b2@2 c#3@2 d3 g3@2 g3 f#3@2 e3@2 d3@2", R: "b2@2 b2@2 b2@2 b2 b2@2 b2!2 a2 b2@2 d3 ~",
  S: "d3 ~ d3@2 d3@2 b2 d3 ~ d3!2 b2 d3@2 d3@2", T: "d3@2 d3@2 d3@2 b2 d3 ~ d3!2 b2 d3@2 d3 e3",
  U: "e3@2 e3@2 e3@2 d3 e3 ~ e3!2 d3 e3@2 e3 ~", V: "e3 ~ e3 ~ e3@2 d3 e3 ~ e3!2 d3 e3@2 e3 g3",
  W: "g3@2 g3@2 g3@2 g3 g3@2 g3!4 ~ g3@2", X: "g2 ~ g2 ~ g2 ~ g2!2 ~ g2!4 ~ g2 ~", Y: "~ b2@7 b2@6 b2@6 a2@4 b2@4 d3@4",
  Z: "b2@4 b2@3 b2@3 a2@2 b2@2 d3@2",
  AA: "[b2@8 b2@6 b2@6 a2@4 b2@3 d3@4 b2@8 b2@6 b2@6 a2@4 b2@4 d3@4 b2@8 b2@6 b2@6 a2@4 b2@4 d3@4 b2@8 b2@6 b2@6 a2@4 b2@4 d3@4 b2@8 b2@5 b2@6 a2@4 b2@4 d3@4 b2@2]/5",
  AB: "[~@6 b2@8 d3@4 d3@4 d3@4 e3@129 ~@5]/5",
})).s("gm_acoustic_bass").gain(0.45)

// other · epiano2
const epiano2 = note("<~@32 A@5 ~@21 B@2 C@2 D@2 E@2 F@2 G@2 H@2 I@2 J@2 G@2 H@2 I@2 ~@2 E@2 K@6 L@5>".pickRestart({
  A: "[~@5 b3@27 ~ [b3,e4]@33 ~@2 b3@27 ~ [b3,e4]@33 ~@31, ~@5 b4@61 ~@2 b4@61 ~@31]/5", // E5
  B: "[~@2 b3@27 ~ [b3,e4]@33 ~, ~@2 b4@61 ~]/2", C: "[~@2 b3@27 [b3,e4]@33 ~@2, ~@2 b4@61 ~]/2",
  D: "[~ b3@27 ~ [b3,e4]@33 ~@2, ~ b4@61 ~@2]/2", E: "[~ b3@27 [b3,e4]@33 ~@3, ~ b4@61 ~@2]/2",
  F: "[[b3,b4,b5]@31 ~]/2", G: "[[d3,d4,d5]@7 ~]/2", H: "[[e3,e4,e5]@15 ~]/2", I: "[[g2,g3,g4]@15 ~]/2",
  J: "[[b3,b4,b5]@29 ~@3]/2", // B
  K: "[b3@27 ~ [b3,e4]@33 ~@2 b3@27 ~ [b3,e4]@33 ~@3 b3@27 ~ [b3,e4]@33 ~@2 [b1,b2,b3,b4]@2, b4@61 ~@2 b4@61 ~@3 b4@61 ~@4]/6", // E5 B
  L: "[~@14 [d2,d3,d4,d5]@11 ~ [e2,e3,e4,e5]@131 ~@3]/5", // D E
})).s("gm_epiano2").gain(0.4)

// other · overdriven guitar
const overdriven_guitar = note("<~@3 A@6 ~@23 B@5 ~@11 C@7 D ~@2 E@8 F@8 G@8 ~@2 H@8 ~@5>".pickRestart({
  A: "[~@5 e5@167 ~@20]/6", B: "[~@5 b3@127 ~@28]/5", C: "~@3 b2@6 ~@2 b2@5 ~ b2@13 ~@2",
  D: "~@3 b2@6 ~@2 b2@5 ~ b2@15", E: "[~@2 b3@253 ~]/8", F: "[b3@127 ~]/8", G: "[b3@31 ~]/8", H: "[~ b3@255]/8",
})).s("gm_overdriven_guitar").gain(0.4)

// other · overdriven guitar
const overdriven_guitar_2 = note("<~@40 A@16 ~@10 B ~ B ~ B ~ B ~@24>".pickRestart({
  A: "[~@3 b3@4 ~@24 a3@4 b3@4 ~@25]/2", B: "b4@2 b5@2 f#5@2 b4@3 ~@7",
})).s("gm_overdriven_guitar").gain(0.4)

// chords · electric guitar muted
const electric_guitar_muted = note("<~@40 A B A B A B A B C@8 ~@18 D E F G H I J K ~@15>".pickRestart({
  A: "~@11 [d4,a4,b4]@2 ~@4 [d4,a4,b4] ~ [d4,a4,b4] ~ [d4,a4,b4] ~@10", // Bm7
  B: "~@11 [d4,a4,b4]@2 ~@4 [d4,a4,b4] ~ [d4,a4,b4] ~ [d4,a4,b4] ~@5 [c#4,e4,g#4,b4] ~@4", // Bm7 C#m7
  C: "[~@7 [d4,a4,b4]@2 ~@4 [d4,a4,b4]@2 ~@2 [d4,a4,b4] ~ [d4,a4,b4]@2 ~@4 [d4,a4,b4]@2 ~@4 [d4,g#4,b4]@2 ~@6 [d4,a4,b4] ~ [d4,a4,b4]@2 ~@2 [d4,a4,b4]@2 ~@4 [d4,a4,b4]@2 ~@4 [d4,a4,b4]@2 ~@4 [d4,g#4,b4]@2 ~@6 [d4,a4,b4]@2 ~@4 [d4,a4,b4]@2 ~@2 [d4,a4,b4] ~ [d4,a4,b4]@2 ~@4 [d4,a4,b4]@2 ~@4 [d4,g#4,b4]@2 ~@6 [d4,a4,b4] ~ [d4,a4,b4]@2 ~@2 [d4,a4,b4]@2 ~@2 [d4,a4,b4] ~ [d4,a4,b4]@2 ~@4 [d4,a4,b4]@2 ~@4 [d4,g#4,b4]@2 ~@6 [d4,a4,b4] ~ [d4,a4,b4]@2 ~@2 [d4,a4,b4]@2 ~@2 [d4,a4,b4] ~ [d4,a4,b4]@2 ~@4 [d4,a4,b4]@2 ~@4 [d4,g#4,b4]@2 ~@6 [d4,a4,b4] ~ [d4,a4,b4]@2 ~@2 [d4,a4,b4]@2 ~@2 [d4,a4,b4] ~ [d4,a4,b4]@2 ~@4 [d4,a4,b4]@2 ~@4 [d4,g#4,b4]@2 ~@6 [d4,a4,b4] ~@5 [d4,a4,b4]@2 ~@2 [d4,a4,b4] ~ [d4,a4,b4]@2 ~@4 [d4,a4,b4]@2 ~@4 [d4,g#4,b4]@2 ~@6 [d4,a4,b4] ~ [d4,a4,b4]@2 ~@2 [d4,a4,b4]@2 ~@2 [d4,a4,b4] ~ [d4,a4,b4]@2 ~@4 [d4,a4,b4]@2 ~@4 [d4,g#4,b4]]/8", // Bm7 G#dim Bm7 G#dim Bm7 G#dim Bm7 G#dim …
  D: "[b3,d#4]@3 ~ [b3,d#4]@3 ~ [b3,d#4]@3 ~ [b3,d#4] ~ [b3,d#4]@3 ~ [b3,d#4]@2 [b3,d#4]@2 [b3,d#4]@2 [b3,d#4]@4 [b3,d#4]@3 ~", // B
  E: "[b3,d#4]@2 ~@2 [b3,d#4]@3 ~ [b3,d#4]@3 ~ [b3,d#4] ~ [b3,d#4]@3 ~ [b3,d4] ~ [b3,d4]@2 [b3,d4]@2 [b3,d4]@4 [b3,d4]@4", // B Bm
  F: "[b3,d4]@3 ~ [b3,d4]@3 ~ [b3,d4]@3 ~ [b3,d4] ~ [b3,d4]@3 ~ [b3,d4]@2 [b3,d4]@2 [b3,d4]@2 [b3,d4]@4 [b3,d4]@4", // Bm
  G: "[b3,d4]@3 ~ [b3,d4]@2 ~@2 [b3,d4]@3 ~ [b3,d4] ~ [b3,d4]@2 ~@2 [b3,d4]@2 [b3,d4]@2 [b3,d4]@2 [b3,d4]@4 [b3,d4] ~ [b3,e4] ~", // Bm E5
  H: "[b3,e4]@3 ~ [b3,e4]@3 ~ [b3,e4]@2 ~@2 [b3,e4] ~ e4@4 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@4 [b3,e4]@4, ~@7 b3 ~@8", // E5
  I: "[b3,e4]@3 ~ [b3,e4]@3 ~ [b3,e4]@3 ~ [b3,e4] ~ [b3,e4]@3 ~ [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@4 [b3,e4]@2 f#4 ~", // E5
  J: "[b3,f#4]@3 ~ [b3,f#4]@3 ~ [b3,f#4]@3 ~ [b3,f#4] ~ [b3,f#4]@4 [b3,f#4]@2 [b3,f#4]@2 [b3,f#4]@2 [b3,f#4]@4 [b3,f#4]@3 ~", // B5
  K: "[b3,f#4]@3 ~ [b3,f#4]@3 ~ [b3,f#4]@3 ~ [b3,f#4] ~ [b3,f#4]@4 [b3,f#4]@2 [b3,f#4]@2 [b3,f#4]@2 [b3,f#4]@3 ~ [b3,f#4]@3 ~", // B5
})).s("gm_electric_guitar_muted").gain(0.4)

// chords · lead 5 charang
const lead_5_charang = note(`<
  ~@32 A B@2 C@2 ~@7 D@2 E@8 F@2 ~@2 G@4 H@2 I@2 ~ J@3 K@2 L@2 M@2 N@2 O@2 P Q ~@2 I@2 R@6 S@5
>`.pickRestart({
  A: "~@5 [b2,f#3,d#4]@12 ~@4 [d3,a3,f#4]@2 ~@2 [d3,a3,f#4]@5 ~@2", // B D
  B: "[~ [e3,b3,g#4]@35 [b2,f#3,d#4]@12 ~@4 [d3,a3,f#4]@2 ~@2 [d3,a3,f#4]@5 ~@3]/2", C: "[[e3,b3,g#4]@35 ~@29]/2",
  D: "[~@3 [f#3,b3]@4 ~@24 [e3,a3]@4 [f#3,b3]@4 ~@25]/2", // B5 A5 B5
  E: "[~@3 [f#3,b3]@4 ~@24 [e3,a3]@4 [f#3,b3]@4 ~@24 [e3,a3]@3 ~ [f#3,b3]@4 ~@24 [e3,a3]@3 ~ [f#3,b3]@3 ~@25 [e3,a3]@4 [f#3,b3]@4 ~@24 [e3,a3]@3 ~ [f#3,b3]@4 ~@24 [e3,a3]@4 [f#3,b3]@4 ~@24 [e3,a3]@4 [f#3,b3]@4 ~@24 [e3,b3]]/8", // B5 A5 B5 A5 B5 A5 B5 A5 …
  F: "[~@3 [f#3,b3]@3 ~@25 [e3,a3]@4 [f#3,b3]@4 ~@25]/2", // B5 A5 B5
  G: "[~@2 [b2,f#3,d#4]@12 ~@4 [d3,a3,f#4]@2 ~@2 [d3,a3,f#4]@5 ~@3 [e3,b3,g#4]@35 ~ [b2,f#3,d#4]@12 ~@4 [d3,a3,f#4]@2 ~@2 [d3,a3,f#4]@5 ~@2 [e3,b3,g#4]@35]/4", // B D E B D E
  H: "[~ [b2,f#3,d#4]@12 ~@4 [d3,a3,f#4]@2 ~@2 [d3,a3,f#4]@5 ~@3 [e3,b3,g#4]@35]/2", // B D E
  I: "[~ [b2,f#3,d#4]@12 ~@3 [d3,a3,f#4]@2 ~@2 [d3,a3,f#4]@5 ~@3 [e3,b3,g#4]@35 ~]/2", J: "[~ d4@5]/3",
  K: "[e3@13 d4@3]/2", L: "[g3@31 ~]/2", M: "[f#3,b3]!8", N: "[d3,b3]!8", O: "[e3,b3]!8", P: "[g3,b3]!8",
  Q: "[g3,b3]@4 [g3,b3]@4 [g3,b3]@4 [g3,b3]@4 [g3,b3]@4 [g3,b3]@4 [g3,b3]@4 [g3,b3]@3 ~", // G
  R: "[[b2,f#3,d#4]@12 ~@4 [d3,a3,f#4]@2 ~@2 [d3,a3,f#4]@5 ~@3 [e3,b3,g#4]@35 [b2,f#3,d#4]@12 ~@4 [d3,a3,f#4]@2 ~@2 [d3,a3,f#4]@5 ~@3 [e3,b3,g#4]@35 ~ [b2,f#3,d#4]@12 ~@4 [d3,a3,f#4]@2 ~@2 [d3,a3,f#4]@5 ~@3 [e3,b3,g#4]@35 [b2,f#3,d#4]@2]/6", // B D E B D E B D …
  S: "[~@14 [d3,a3,f#4]@2 ~@2 [d3,a3,f#4]@5 ~@3 [e3,b3,g#4]@131 ~@3]/5", // D E
})).s("gm_lead_5_charang").gain(0.4)

// chords · lead 5 charang
const lead_5_charang_2 = note(`<
  ~@32 A B@2 C@2 ~@6 D@5 E@8 ~@2 F@4 G@2 H@2 ~@8 I@2 J@2 K@2 L M ~@2 H@2 N@8 ~@3
>`.pickRestart({
  A: "~@5 b2@27", B: "[~ e3@35 b2@28]/2", C: "[e3@35 ~@29]/2",
  D: "[~@31 [a3,d4]@4 ~@28 [e3,a3]@4 ~@28 [f#3,b3]@4 ~@28 [e3,a3]@3 ~ [f#3,b3]@4 ~@24 [e3,a3]]/5", // D5 A5 B5 A5 B5 A5
  E: "[~@3 [f#3,b3]@4 ~@24 [e3,b3]@4 [f#3,b3]@4 ~@24 [e3,a3]@4 [f#3,b3]@4 ~@24 [e3,a3]@4 [f#3,b3]@2 ~@26 [a3,d4]@4 [f#3,b3]@4 ~@24 [e3,a3]@4 [f#3,b3]@4 ~@24 [f#3,b3]@4 ~@28 [e3,a3]@3 ~ [f#3,b3]@4 ~@25]/8", // B5 E5 B5 A5 B5 A5 B5 D5 …
  F: "[~@2 b2@28 e3@35 ~ b2@27 e3@35]/4", G: "[~ b2@28 e3@35]/2", H: "[~ b2@27 e3@35 ~]/2", I: "[f#3,b3]!8",
  J: "[d3,b3]!8", K: "[e3,b3]!8", L: "[g3,b3]!8",
  M: "[g3,b3]@4 [g3,b3]@4 [g3,b3]@4 [g3,b3]@4 [g3,b3]@4 [g3,b3]@4 [g3,b3]@4 [g3,b3]@3 ~", // G
  N: "[b2@28 e3@35 b2@28 e3@35 ~ b2@28 e3@35 b2@28 e3@35 ~@3]/8",
})).s("gm_lead_5_charang").gain(0.4)

// other · alto sax
const alto_sax = note(`<
  ~@10 A@4 ~@10 B@3 C D ~@7 E@2 F G@2 ~@2 H@4 ~@11 I@2 J@2 K@2 L ~@2 M ~@8 N@4 O@2 ~@15
>`.pickRestart({
  A: "[~@21 b4@99 ~@8]/4", B: "[~@13 f#4@65 ~@18]/3", C: "~@30 b4 d5", D: "b4 ~ a4 b4@2 d5@4 b4@2 ~@21",
  E: "[~@4 f#4@55 e4@5]/2", F: "~ d4@2 b3@20 d4@2 ~@7",
  G: "[~@3 b3 ~ f#4@2 d4 ~ b3 ~ f#4@2 d4 ~ b3 ~ d4 ~ a4@6 b4@14 ~@25]/2", H: "[~@21 b4@76 ~@31]/4",
  I: "[~@2 b3@13 ~@3 d4@10 ~@2 e4@34]/2", J: "[~@2 b3@13 ~@3 d4@10 ~ e4@34 ~]/2",
  K: "[~ b3@13 ~@3 d4@10 ~@2 e4@34 ~]/2", L: "~ b3@13 ~@2 d4@10 ~@6", M: "~@14 a3 g3",
  N: "[~@20 e4@2 ~@2 a4@2 f#4@41 ~ a4@3 ~@25 d5@2 ~@22 d5@4 e5@4, ~@19 b4@11 ~@2]/4", O: "[~ f#5@7]/2",
})).s("gm_alto_sax").gain(0.38)

// chords · harmonica
const harmonica = note("<~@3 A@4 B C@2 ~@6 D@2 E ~@78>".pickRestart({
  A: "[~@29 f#5@64 ~@2 e5@2 b4 e5@4 ~@26, ~@93 f#5@2 ~@33, ~@47 f5 ~ b4 ~@14]/4",
  B: "~@11 f5@2 e5@2 a5@2 g#5@2 ~@6 b4@4 ~@3, ~@21 f5@6 ~@5, ~@12 e5 ~@3", C: "[~ b4@52 ~@11]/2",
  D: "[~@34 a5@11 a5@10 ~ [e5,g#5]@4 ~ [b4,f#5]@3, ~@31 f#5@18 ~@15]/2", E: "~ b4@4 ~@2 b4@4 ~@21",
})).s("gm_harmonica").gain(0.4)

// other · lead 8 bass lead
const lead_8_bass_lead = note("<~@10 A@3 ~@84>".pickRestart({
  A: "[~@5 b4@63 ~@28]/3",
})).s("gm_lead_8_bass_lead").gain(0.45)

// other · pad choir
const pad_choir = note("<A@3 ~@94>".pickRestart({
  A: "[~@21 b3@64 ~@11]/3",
})).s("gm_pad_choir").gain(0.01)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 A B@12 C A C A C A C D E F E G H I E A C A J K L M N O N O N P N P N O N Q R S R T R U T V W X Y Z AA AB AA AC AD
  AE AF AE AF AE AD AE AF AE AD AE AF AG AH AG AI ~@2 AC AD AE AJ AK AL AK AM AN ~@4
>`.pickRestart({
  A: "~@5 x ~@13 x ~@5 x ~@6", B: "~@3 x ~ x ~@13 x ~@5 x ~@6", C: "~ x ~@3 x ~@13 x ~@5 x ~@6", D: "~@5 x ~@3 x ~@22",
  E: "~ x ~@3 x ~@3 x ~@5 x ~@9 x ~@6", F: "~ x ~@3 x ~@3 x ~@7 x ~@7 x ~@6", G: "~@5 x ~@3 x ~@5 x ~@9 x ~@6",
  H: "~ x ~@3 x ~@3 x ~@7 x ~@14", I: "~@5 x ~@11 x ~@7 x ~@6", J: "~ x ~@2 x ~@13 x ~@5 x ~@7",
  K: "~@2 x ~@6 x ~@2 x ~@3", L: "x ~ x ~@6 x ~@2 x ~@3", M: "~@4 x ~@13 x ~@4 x ~@7 x", N: "~@3 x ~@13 x ~@5 x ~@8",
  O: "~@3 x ~@13 x ~@5 x ~@7 x", P: "~ x ~ x ~@13 x ~@5 x ~@7 x", Q: "~ x ~ x ~@3 x ~@9 x ~@5 x ~@7 x",
  R: "~@3 x ~@3 x ~@5 x ~@5 x ~@3 x ~@7 x", S: "~@3 x ~@3 x ~@9 x ~@5 x ~@7 x", T: "~@3 x ~@3 x ~@7 x ~ x ~@5 x ~@7 x",
  U: "~@3 x ~@3 x ~@5 x ~@9 x ~@7 x", V: "~@3 x ~@3 x ~@7 x ~@7 x ~@7 x", W: "~@3 x ~@2 x ~@5 x ~@19",
  X: "~ x ~@6 x ~@2 x ~@3 x", Y: "~ x ~@6 x ~@2 x ~@4", Z: "~@2 x ~@13 x ~@5 x ~@6 x ~@2", AA: "~ x ~@13 x ~@5 x ~@10",
  AB: "~ x ~@13 x ~@5 x ~@7 x ~@2", AC: "~ x ~@12 x ~@5 x ~@7 x ~@3", AD: "x ~@6 x ~@2 x ~@5",
  AE: "x ~@6 x ~@2 x ~@3 x ~", AF: "x ~@6 x ~@2 x ~@4 x", AG: "x ~ x ~@4 x ~@2 x ~@3 x ~",
  AH: "x ~ x ~@2 x ~ x ~@2 x ~@5", AI: "x ~ x ~ x ~@2 x ~@2 x ~@3 x ~", AJ: "x ~@13 x ~@5 x ~@10 x",
  AK: "~@3 x ~@9 x ~@5 x ~@7 x ~@3 x", AL: "~@3 x ~@9 x ~@5 x ~@11 x", AM: "~@3 x ~@8 x ~@5 x ~@11 x ~",
  AN: "~ x ~@4 x ~@2 x ~@3 x ~@2",
})).gain(0.45)

// drums · rim
const rim = s("rim").struct(`<
  ~@14 A B A B A B A B C D E D F G H D I J A K L M N O P O P O P Q P O P Q R S T S U S V U W X Y Z AA AB AC AB AD AE AF
  AG AF AG AF AH AF AG AF AH AF AG AI AJ AI AK ~@2 AL AH AF AM AN AO AN AP AQ ~@4
>`.pickRestart({
  A: "~@5 x ~@13 x ~@5 x ~@6", B: "~ x ~@3 x ~@13 x ~@5 x ~@6", C: "~@5 x ~@3 x ~@22",
  D: "~ x ~@3 x ~@3 x ~@5 x ~@9 x ~@6", E: "~ x ~@3 x ~@3 x ~@7 x ~@7 x ~@6", F: "~@5 x ~@3 x ~@5 x ~@9 x ~@6",
  G: "~ x ~@3 x ~@3 x ~@7 x ~@14", H: "~@5 x ~@11 x ~@7 x ~@6", I: "~@5 x ~@19 x ~@6", J: "~ x ~@3 x ~@19 x ~@6",
  K: "~ x ~@2 x ~@19 x ~@7", L: "~ x ~@4 x ~", M: "x!2 ~@4 x ~", N: "~@4 x ~@18 x ~@7 x", O: "~@3 x ~@19 x ~@8",
  P: "~@3 x ~@19 x ~@7 x", Q: "~@3 x ~@13 x ~@5 x ~@8", R: "~@3 x ~@13 x ~@5 x ~@7 x",
  S: "~@3 x ~@3 x ~@5 x ~@5 x ~@3 x ~@7 x", T: "~@3 x ~@3 x ~@9 x ~@5 x ~@7 x", U: "~@3 x ~@3 x ~@7 x ~ x ~@5 x ~@7 x",
  V: "~@3 x ~@3 x ~@5 x ~@9 x ~@7 x", W: "~@3 x ~@3 x ~@7 x ~@7 x ~@7 x", X: "~@3 x ~@2 x ~@5 x ~@19",
  Y: "~ x ~@6 x ~@2 x ~@3 x", Z: "~ x ~@9 x ~@4", AA: "~@2 x ~@19 x ~@6 x ~@2", AB: "~ x ~@19 x ~@10",
  AC: "~ x ~@19 x ~@7 x ~@2", AD: "~ x ~@18 x ~@7 x ~@3", AE: "x ~@4 x ~@2", AF: "x ~@6 x ~@2 x ~@3 x ~",
  AG: "x ~@6 x ~@2 x ~@4 x", AH: "x ~@6 x ~@2 x ~@5", AI: "x ~ x ~@4 x ~@2 x ~@3 x ~", AJ: "x ~ x ~@2 x ~ x ~@2 x ~@5",
  AK: "x ~ x ~ x ~@2 x ~@2 x ~@3 x ~", AL: "~ x ~@12 x ~@5 x ~@7 x ~@3", AM: "x ~@13 x ~@5 x ~@10 x",
  AN: "~@3 x ~@9 x ~@5 x ~@7 x ~@3 x", AO: "~@3 x ~@9 x ~@5 x ~@11 x", AP: "~@3 x ~@8 x ~@5 x ~@11 x ~",
  AQ: "~ x ~@4 x ~@2 x ~@3 x ~@2",
})).gain(0.45)

// drums · snare
const snare = s("sd").struct(`<
  ~@2 A@20 B@7 C D A E F@3 G H@3 I@8 J@8 I K L@2 M N@3 O@18 ~@2 O@4 P@3 Q R ~@4
>`.pickRestart({
  A: "~@13 x ~@9 x ~@5 x ~@2", B: "~@13 x ~@5 x ~@3 x ~ x ~@3 x ~@2", C: "~@13 x ~@5 x ~@3 x ~ x ~ x ~ x ~@2",
  D: "~ x ~@11 x ~@9 x ~@5 x ~@2", E: "~@13 x ~@15 x ~@2", F: "~@3 x ~@3 x", G: "~@12 x ~@14 x ~@4",
  H: "~@11 x ~@15 x ~@4", I: "~@11 x ~@9 x ~@5 x ~@4", J: "~@11 x ~@5 x ~@3 x ~ x ~@3 x ~@4",
  K: "~@5 x ~@2 x ~ x!4 ~ x", L: "~@5 x ~@7 x ~@2", M: "~@10 x ~@14 x ~@6", N: "~@9 x ~@15 x ~@6", O: "~ x ~ x",
  P: "~@7 x ~@15 x ~@8", Q: "~@7 x ~@14 x ~@9", R: "~@3 x ~@7 x ~@4",
})).gain(0.45)

// drums · clap
const clap = s("cp").struct("<~@14 A@19 B@3 C D@20 E@3 F G@3 H@18 ~@2 H@4 I@3 J K ~@4>".pickRestart({
  A: "~@13 x ~@15 x ~@2", B: "~@3 x ~@3 x", C: "~@12 x ~@14 x ~@4", D: "~@11 x ~@15 x ~@4", E: "~@5 x ~@7 x ~@2",
  F: "~@10 x ~@14 x ~@6", G: "~@9 x ~@15 x ~@6", H: "~ x ~ x", I: "~@7 x ~@15 x ~@8", J: "~@7 x ~@14 x ~@9",
  K: "~@3 x ~@7 x ~@4",
})).gain(0.35)

// drums · hihat
const hihat = s("hh").struct("<~@2 A@31 B@3 C D@19 ~@2 E@2 F G@3 H@18 ~@2 H@4 I@3 J K ~@4>".pickRestart({
  A: "~@13 x ~@15 x ~@2", B: "~@3 x ~@3 x", C: "~@12 x ~@14 x ~@4", D: "~@11 x ~@15 x ~@4", E: "~@5 x ~@7 x ~@2",
  F: "~@10 x ~@14 x ~@6", G: "~@9 x ~@15 x ~@6", H: "~ x ~ x", I: "~@7 x ~@15 x ~@8", J: "~@7 x ~@14 x ~@9",
  K: "~@3 x ~@7 x ~@3 x",
})).gain(0.45)

// drums · low tom
const low_tom = s("lt").struct("<~@13 A B ~@44 C ~@3 D ~@23 E ~@9>".pickRestart({
  A: "~@29 x ~@2", B: "~ x ~@30", C: "~@11 x ~@4", D: "~@21 x ~@10", E: "~@5 x ~@2",
})).gain(0.45)

// … 34 more lines

More by INXS