Strudelify

Lounge Act

Nirvana

KeyC majorTempo120 bpm
0:00/0:00
// Lounge Act — Nirvana
// 120 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 7 fretless bass (copy of ch 1 "elect bass pick" electric bass pick)
// note: Full arrangement: all 75 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 pick · "elect bass pick"
const bass = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV
  AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS ~@2 BT BU
>`.pickRestart({
  A: "~@16 c2 ~@3 d#2 ~ g2 ~@3 g1 ~@4 g#1", B: "~@3 g1 ~@3 g#1 ~@4 g1 ~@3 d#2 ~@5 c#2 ~@2 c2 ~@2 c2 ~@3",
  C: "c2 ~@5 d#2 ~@2 g2 ~@4 g1 ~@5 g#1 ~@2 g1 ~@2 g#1 ~@5",
  D: "~ g1 ~@2 c#2 ~@5 c2 ~@2 c#2 ~@2 c2 ~@2 c2 ~@6 d#2 ~@2 g2 ~@2",
  E: "~@2 g1 ~@4 g#1 ~@2 g1 ~@3 g#1 ~@4 g1 ~@3 d#2 ~@5 c#2 ~@2",
  F: "~ c2 ~ c2 ~@2 c2 ~@6 d#2 ~@2 g2 ~@3 g1 ~@5 g#1 ~@2 g1 ~@2",
  G: "~ g#1 ~@4 g1 ~@2 c#2 ~@5 c2 ~@3 c#2 ~ c2 ~@3 c2 ~@5 d#2",
  H: "~@2 g2 ~@3 g1 ~@5 g#1 ~@2 g1 ~@2 g#1 ~@7 g1 ~@2 d#2 ~@2",
  I: "~@3 c#2 ~@2 c2 ~@2 c2 ~@2 c2 ~@5 d#2 ~@2 g2 ~@2 g1 ~@6 g#1",
  J: "~@2 g1 ~@2 g#1 ~@5 g1 ~@3 c#2 ~@5 c2 ~@2 c#2 ~@2 c2 ~@2 c2 ~",
  K: "~@5 d#2 ~@2 g2 ~@2 g1 ~@5 g#1 ~@3 g1 ~ g#1 ~@5 g1 ~@2",
  L: "~ d#2 ~@5 c#2 ~@2 c2 ~@3 c2 ~@2 c2 ~@5 d#2 ~@2 g2 ~@2 g1 ~@2",
  M: "~@3 g#1 ~@2 g1 ~@3 g#1 ~@5 g1 ~@2 c#2 ~@5 c2 ~@2 c#2 ~@3",
  N: "c2 ~@2 c2 ~@5 d#2 ~@2 g2 ~@3 g1 ~@4 g#1 ~@3 g1 ~@2 g#1 ~@3",
  O: "~ g1 ~@3 c#2 ~@5 c2 ~@2 c#2 ~@2 c2 ~@3 e1 ~@4 e1 ~@4 a1",
  P: "~@4 a1 ~@2 a1 ~@2 a1 ~@4 c2 ~@3 c2 ~@3 f2 ~@5 f2 ~@2", Q: "~ f2 ~@2 c2 ~@2 e1 ~@4 e1 ~@3 a1 ~@4 a1 ~@3 a1 ~@5 d2",
  R: "~@4 d2 ~@4 g2 ~@5 g2 ~@2 g2 ~@2 g2 ~@3 e1 ~@3 e1 ~@2", S: "~@4 a1 ~@3 a1 ~@3 a1 ~ a1 ~@3 d2 ~@3 d2 ~@4 g2 ~@4",
  T: "~ g2 ~ g2 ~@2 g2 ~@3 e1 ~@3 e1 ~@5 a1 ~@4 g1 ~@3 a1 ~@2",
  U: "a1 ~@2 d2 ~@3 d2 ~ d2 ~@3 g2 ~@4 g2 ~@2 g2 ~@2 g2 ~@3 a1 ~@3",
  V: "~ a1 ~@6 a1 ~@5 a1 ~@6 g#1 ~@2 g#1 ~@2 g#1 ~@2 g1 ~", W: "~@4 g1 ~@2 g1 ~@2 g1 ~@2 a1 ~@7 a1 ~@4 a1 ~@5",
  X: "~ a1 ~@5 g#1 ~ g#1 ~@2 g#1 ~@2 g1 ~@5 g1 ~@9 c2", Y: "~@6 d#2 ~ g2 ~@3 g1 ~@5 g#1 ~@2 g1 ~@2 g#1 ~@5 g1 ~",
  Z: "~@2 d#2 ~@5 c#2 ~@2 c2 ~@2 c2 ~@2 c2 ~@5 d#2 ~@2 g2 ~@3 g1 ~",
  AA: "~@4 g#1 ~@2 g1 ~@2 g#1 ~@5 g1 ~@2 c#2 ~@5 c2 ~@2 c#2 ~@2 c2",
  AB: "~@3 c2 ~@5 d#2 ~@2 g2 ~@3 g1 ~@4 g#1 ~@3 g1 ~@2 g#1 ~@3",
  AC: "~ g1 ~@3 d#2 ~@5 c#2 ~@2 c2 ~@2 c2 ~@2 c2 ~@5 d#2 ~@2 g2 ~@2",
  AD: "~ g1 ~@5 g#1 ~@3 g1 ~ g#1 ~@5 g1 ~@2 c#2 ~@6 c2 ~@2",
  AE: "c#2 ~@2 c2 ~@2 c2 ~@10 g2 ~@3 g1 ~@3 g#1 ~@2 g1 ~@2 g#1",
  AF: "~@4 g1 ~@3 c#2 ~@5 c2 ~@2 c#2 ~@2 c2 ~@3 e1 ~@4 e1 ~@2", AG: "~ a1 ~@5 a1 ~@3 a1 ~ a1 ~@3 d2 ~@4 d2 ~@3 g2 ~@5",
  AH: "g2 ~@2 g2 ~@2 g2 ~@2 e1 ~@4 e1 ~@4 b1 ~@5 b1 ~@2 b1 ~@2 b1",
  AI: "~@3 c2 ~@3 c2 ~@4 g2 ~@3 g2 ~@3 g2 ~@2 g2 ~@2 e1 ~@4 e1",
  AJ: "~@4 a1 ~@5 a1 ~@2 a1 ~@2 a1 ~@3 c2 ~@4 c2 ~@4 g2 ~",
  AK: "~@3 g2 ~@2 g2 ~@2 g2 ~@2 e1 ~@5 e1 ~@4 a1 ~@4 a1 ~@2 a1",
  AL: "~@2 a1 ~@3 e2 ~@5 d2 ~@5 g2 ~@3 g2 ~@2 g2 ~@4 a1 ~", AM: "~@5 a1 ~@6 a1 ~@5 a1 ~@5 g#1 ~@2 g#1 ~@2 g#1 ~",
  AN: "~@2 g1 ~@5 g1 ~@2 g1 ~@2 g1 ~@2 a1 ~@12 a1 ~", AO: "~@4 a1 ~@6 g#1 ~ g#1 ~@4 g1 ~@6 g1 ~@6",
  AP: "~@2 c2 ~@5 d#2 ~@2 g2 ~@3 g1 ~@5 g#1 ~@2 g1 ~@2 g#1 ~@4",
  AQ: "~ g1 ~@3 d#2 ~@4 c#2 ~@2 c2 ~@2 c2 ~@2 c2 ~@5 d#2 ~@3 g2 ~@2",
  AR: "g1 ~@5 g#1 ~@3 g1 ~ g#1 ~@5 g1 ~@2 c#2 ~@5 c2 ~@2 c#2 ~",
  AS: "~@2 c2 ~@2 c2 ~@4 d#2 ~@3 g2 ~@2 g1 ~@6 g#1 ~@2 g1 ~@2 g#1 ~",
  AT: "~@3 g1 ~@3 d#2 ~@5 c#2 ~@2 c2 ~@3 c2 ~@2 c2 ~@4 d#2 ~@3",
  AU: "g2 ~@3 g1 ~@5 g#1 ~@2 g1 ~@2 g#1 ~@4 g1 ~@3 c#2 ~@5 c2",
  AV: "~@2 c#2 ~@2 c2 ~@2 c2 ~@5 d#2 ~@2 g2 ~@3 g1 ~@5 g#1 ~@3 g1",
  AW: "~@2 g#1 ~@4 g1 ~@4 d#2 ~@4 c#2 ~@2 c2 ~@2 c2 ~@2 c2 ~@5",
  AX: "d#2 ~@2 g2 ~@2 g1 ~@6 g#1 ~@2 g1 ~@2 g#1 ~@5 g1 ~@2 c#2 ~@3",
  AY: "~@2 c2 ~@2 c#2 ~@2 c2 ~@2 c2 ~@6 d#2 ~@2 g2 ~@2 g1 ~@5 g#1 ~",
  AZ: "~ g1 ~@2 g#1 ~@9 c#2 ~@4 c2 ~@3 c#2 ~ c2 ~@4 e1 ~", BA: "~@2 e1 ~@4 a1 ~@4 a1 ~@2 a1 ~@2 a1 ~@3 c2 ~@3 c2 ~@5",
  BB: "g2 ~@3 g2 ~@3 g2 ~@2 g2 ~@3 e1 ~@3 e1 ~@4 a1 ~@4 a1 ~@2",
  BC: "~ a1 ~@5 d2 ~@3 d2 ~@5 g2 ~@4 g2 ~@3 g2 ~@2 g2 ~@2",
  BD: "e1 ~@3 e1 ~@4 a1 ~@5 a1 ~@2 a1 ~@3 a1 ~@2 d2 ~@2 d2 ~@3",
  BE: "~@2 g2 ~@3 g2 ~@3 g2 ~@2 g2 ~@2 e1 ~@3 e1 ~@4 a1 ~@5 g1",
  BF: "~@3 a1 ~@2 a1 ~@2 d2 ~@4 d2!2 ~@3 g2 ~@5 g2 ~@2 g2 ~@2 g2",
  BG: "~ e1 ~@3 e1 ~@5 a1 ~@4 g1 ~@3 a1 ~ a1 ~@3 d2 ~@3 d2 ~",
  BH: "d2 ~@3 g2 ~@4 g2 ~@2 g2 ~@2 g2 ~@2 e1 ~@3 e1 ~@3 a1 ~@5",
  BI: "~@2 a1 g1 ~@3 e1 ~@2 g1 d2 ~@3 d2 ~@4 g2 ~@4 g2 ~@2 g2 ~@2 g2",
  BJ: "~@2 e1 ~@4 e1 ~@4 a1 ~@5 g1 ~@3 a1 ~@2 a1 ~@2 d2 ~@2 d2",
  BK: "~@5 g2 ~@4 g2 ~@2 g2 ~@2 g2 ~@3 e1 ~@3 e1 ~@4 a1 ~@2",
  BL: "~@4 g1 ~@2 a1 ~@2 a1 ~@2 d2 ~@3 d2 ~@4 g2 ~@4 g2 ~@2 g2 ~", BM: "~ g2 ~@3 a1 ~@5 a1 ~@5 a1 ~@5 a1 ~@5 g#1 ~@2",
  BN: "g#1 ~@2 g#1 ~@2 g1 ~@5 g1 ~@2 g1 ~@2 g1 ~@2 a1 ~@6 a1 ~@3",
  BO: "~@3 a1 ~@5 a1 ~@5 g#1 ~@2 g#1 ~ g#1 ~@2 g1 ~@5 g1 ~@2", BP: "~ g1 ~ g1 ~@3 a1 ~@5 a1 ~@5 a1 ~@5 a1 ~@5 g#1",
  BQ: "~@2 g#1 ~@2 g#1 ~@3 g1 ~@5 g1 ~@3 g1 ~ g1 ~@2 a1 ~@5 a1 ~",
  BR: "~@4 a1 ~@5 a1 ~@6 g#1 ~ g#1 ~@2 g#1 ~@2 g1 ~@5 g1", BS: "~@3 g1 ~@6 a1 ~@21", BT: "~@23 g1 ~@8",
  BU: "~@22 f1 ~ e1 ~@7",
})).s("gm_electric_bass_pick").gain(0.36)

// chords · distortion guitar · "dist"
const distortion_guitar = note(`<
  ~@3 A@2 B C D E F@2 G@2 H@4 I J K L M@2 N@2 O@3 P Q R S T U@3 V W X Y Z AA AB@4 AC@2 AD AE AF AG AH AI AJ AK AL AM@3
  AN AO AP@2 AQ AR AS AT@3 AU@5
>`.pickRestart({
  A: "[~@19 [c3,g3]@7 ~@2 [c3,g3]@2 ~ [c3,g3]@7 ~@3 [c3,g3] ~ [c3,g3]@2 ~@3 [g#2,d#3]@4 ~ [g#2,d#3] ~@2 [c#3,g#3]@4 ~@2 c#3@2, ~@61 g#3@2 ~]/2", // C5 G#5 C#5
  B: "~ c#3 ~ [c#3,g#3]@2 ~@2 c3@6 ~@2 [c3,g3]@2 ~ [c3,g3]@6 ~@3 g3 ~@2 c3@2, ~@6 g3@6 ~@14 c3@2 ~ g3@2 ~", // C#5 C5
  C: "~ [g#2,d#3]@4 ~@2 [g#2,d#3] ~@3 [c#3,g#3]@4 ~ g#3@2 ~ c#3 ~@2 g#3@2 ~ [c3,g3]@6 ~, ~@15 c#3@2 ~@4 c#3@2 ~@9", // G#5 C#5 C5
  D: "~@2 [c3,g3]@2 ~ [c3,g3]@5 ~@2 [c3,g3] ~ [c3,g3]@2 ~@2 [g#2,d#3]@4 ~@2 [g#2,d#3] ~@2 [c#3,g#3]@4 ~", // C5 G#5 C#5
  E: "~ [c#3,g#3] ~@2 c#3 ~@2 [c#3,g#3]@2 ~@2 [c3,g3]@6 ~@4 [c3,g3]@2 ~ [c3,g3]@5 ~ [c3,g3]@2", // C#5 C5
  F: "[~ [c3,g3] ~@4 g#2@4 ~ [g#2,d#3]@2 ~@2 [c#3,g#3]@4 ~@2 [c#3,g#3]@2 ~ [c#3,g#3] ~@2 [c#3,g#3]@2 ~ [c3,g3]@6 ~@4 g3@2 ~ [c3,g3]@5 ~@2 g3 ~ [c3,g3]@2 ~@2 [g#2,d#3]@3 ~@3 d#3@2, ~@5 d#3@4 ~@30 c3@2 ~@8 c3@2 ~@10 g#2@2 ~]/2", // C5 G#5 C#5 C5 G#5
  G: "[~@2 [c#3,g#3]@5 ~ [c#3,g#3]@2 ~ [c#3,g#3]@2 ~ g#3 ~@2 [c3,g3]@6 ~@4 g3@2 [c3,g3]@5 ~@2 [c3,g3]@2 ~ [c3,g3]@2 ~@3 a#2@4 ~ a#2 ~@5 [c#3,d#3] ~ [c#3,g#3]@3 ~ [c#3,g#3]@2 ~, ~@13 c#3@2 ~@11 c3@2 ~@36]/2", // C#5 C5 C#sus2 C#5
  H: "[~@3 [c3,g3]@6 ~@3 [c3,g3]@2 ~ [c3,g3]@4 ~@2 [c3,g3]@2 ~@2 b2 ~@3 d#3@5 [g#2,d#3]@2 ~@2 [c#3,g#3]@5 ~ [c#3,g#3]@2 ~@2 c#3@3 ~@3 [e2,b2]@4 ~ [e2,b2]@2 ~@3 e3@5 ~ [a2,e3]@2 ~ e3@2 [a2,e3]@2 ~@2 [d3,a3]@4 ~@2 [d3,a3]@3 ~@2 g2@5 [g2,d3]@2 ~@2 [g2,d3]@2 ~ [g2,d3]@2 ~ [e2,b2]@4 ~ [e2,b2]@2 ~@2 [a2,e3]@4 ~ [a2,e3]@2 ~ [a2,e3]@2 ~ [a2,e3]@2 ~, ~@28 g#2@5 ~@14 g#3@3 ~@13 a2@5 ~@4 a2@2 ~@15 d3@5 ~@34]/4", // C5 G#5 C#5 E5 A5 D5 G5 E5 …
  I: "~ [d3,a3]@3 [d3,a3]@2 ~@3 g2@3 d3 ~@2 e3@2 ~ [a2,e3]@2 ~ [a2,e3]@2 ~@2 b2@3 ~ [e2,b2]@2 ~, ~@14 a2@2 ~@8 e2@3 ~@5", // D5 A5 E5
  J: "~@2 [a2,e3]@5 ~ [a2,e3]@2 ~@2 [a2,e3]@2 ~ e3@2 ~@2 a3@3 ~ [d3,a3]@2 ~@3 [g2,d3]@4, ~@14 a2@2 ~@2 d3@3 ~@11", // A5 D5 G5
  K: "~ [g2,d3]@2 ~ [g2,d3]@2 ~ [g2,d3]@2 ~ [e2,b2]@3 ~@2 b2@2 ~@3 [a2,e3]@5 ~ [a2,e3]@2 ~ [a2,e3]@2 ~, ~@7 e2 ~@8", // G5 E5 A5
  L: "[a2,e3]@2 ~@2 [d3,a3]@3 ~ [d3,a3]@2 ~@3 [a2,e3]@5 ~ [a2,e3]@2 ~ [a2,e3]@2 ~ [a2,e3]@2 ~ [a2,e3]@4", // A5 D5 A5
  M: "[~@2 [a2,e3]@5 ~@2 a2@4 ~@2 [a2,e3]@3 ~@2 [g#2,d#3]@2 ~@2 [g#2,d#3]@5 ~@2 g2@4 ~ [g2,d3]@2 ~@2 d3@2 [g2,d3]@2 ~@2 e3@5 [a2,e3]@5 ~@2 [a2,e3]@5 ~, ~@8 e3@5 ~@17 d3@4 ~@5 g2@2 ~@4 a2@5 ~@14]/2", // A5 G#5 G5 A5
  N: "[~ [a2,e3]@2 ~@4 [g#2,d#3]@2 ~ [g#2,d#3]@2 ~@3 d3 [g2,d3]@4 ~ [g2,d3]@2 ~ [g2,d3]@2 ~@5 [c3,g3]@6 ~@3 [c3,g3]@2 ~@2 [c3,g3]@5 ~ [c3,g3]@2 ~ [c3,g3]@2 ~@2 [g#2,d#3]@3 ~@2 [g#2,d#3]@2, ~@7 g2 ~@24]/2", // A5 G#5 G5 C5 G#5
  O: "[~@2 [c#3,g#3]@4 ~@2 [c#3,g#3]@2 ~ [c#3,g#3] ~ [c#3,g#3]@2 ~@2 [c3,g3]@6 ~@3 [c3,g3]@2 ~ [c3,g3]@5 ~ [c3,g3]@2 ~ [c3,g3]@2 ~@3 [g#2,d#3]@5 [g#2,d#3]@2 ~@2 [c#3,g#3]@4 ~@2 [c#3,g#3]@2 ~ [c#3,g#3] ~@2 g#3@2 ~ [c3,g3]@6 ~@3 [c3,g3]@2 ~ [c3,g3]@4 ~@3 [c3,g3]@2 ~ [c3,g3]@2 ~@2 [g#2,d#3]@3, ~@63 c#3@2 ~@31]/3", // C#5 C5 G#5 C#5 C5 G#5
  P: "~@2 [g#2,d#3] ~@3 [c#3,g#3]@4 ~@2 [c#3,g#3]@2 ~ [c#3,g#3]@2 [c#3,g#3]@2 ~@2 g3@5 ~@4 [c3,g3]@2, ~@10 c3@3 ~@3", // G#5 C#5 C5
  Q: "~@5 [c3,g3] ~@2 [c3,g3]@2 ~ [c3,g3]@2 ~@2 a#2@3 ~@2 [g#2,d#3] ~@3 [c#3,g#3]@4 ~ [c#3,g#3]@2 ~", // C5 G#5 C#5
  R: "c#3 g#3 c#3 g#3 ~@2 [c3,g3]@6 ~@3 [c3,g3]@2 ~ [c3,g3]@4 ~@2 [c3,g3]@2 ~@2 g3 ~@3, ~@27 c3@2 ~@3", // C5
  S: "[g#2,d#3]@4 ~@2 d#3@2 ~@2 [c#3,g#3]@4 ~ g#3@2 ~ c#3@4 ~@3 [e2,b2]@3 ~ [e2,b2]@2 ~, ~@5 g#2@2 ~@7 c#3@2 ~ g#3@4 ~@11", // G#5 C#5 E5
  T: "~@2 [a2,e3]@5 ~ [a2,e3]@2 ~ [a2,e3]@2 a2 e3 ~@3 [d3,a3]@3 ~ [d3,a3]@2 ~@4 g2@4, ~@27 d3@4 ~", // A5 D5
  U: "[~ [g2,d3] ~@2 [g2,d3]@2 [g2,d3] ~@3 [e2,b2]@3 ~ [e2,b2]@2 ~@4 e3@4 ~ [a2,e3]@2 ~ [a2,e3] ~@2 [a2,e3]@3 ~ [d3,a3]@3 ~@2 [d3,a3]@2 ~@2 [g2,d3]@4 ~@2 d3@2 g2 d3 ~ [g2,d3] ~@3 b2 ~@3 [e2,b2]@3 ~@2 [a2,e3]@4 ~@2 [a2,e3]@2 ~ [a2,e3]@2 ~ [a2,e3] ~@3 a3@3 ~ [d3,a3]@2 ~@3 [g2,d3]@3, ~@19 a2@4 ~@26 g2@2 ~@7 e2@2 ~@23 d3@3 ~@10]/3", // G5 E5 A5 D5 G5 E5 A5 D5 …
  V: "~@3 [g2,d3]@2 ~ [g2,d3]@2 ~ [g2,d3] ~@2 [e2,b2]@3 ~@2 b2@2 ~@3 [a2,e3]@5 ~ [a2,e3]@2 ~@2, ~@8 e2 ~@7", // G5 E5 A5
  W: "[a2,e3]@2 a2 e3 ~@2 [d3,a3]@3 ~@2 [d3,a3]@2 ~@4 f3@2 ~@3 [a2,e3]@2 ~ [a2,e3]@2 ~@5, ~@16 [a2,b2,e3]@3 ~@13", // A5 D5 A5 Asus2
  X: "[e2,b2]@3 ~ [e2,b2]@2 ~@4 [a2,e3]@4 ~ e3@2 ~ [a2,e3]@2 ~ e3@2 ~@2 [d3,a3]@3 ~ [d3,a3]@2 ~, ~@7 a2 ~@2 a2 ~@5", // E5 A5 D5
  Y: "~@17 [a2,e3]@2 ~@4 [a2,e3]@4 ~@3 [a2,e3]@2", // A5
  Z: "~@5 [a2,e3]@3 ~@2 [g#2,d#3]@2 ~@2 g#2@2 g#2@2 ~@2 [g2,d3]@5 ~ [g2,d3] ~@2 [g2,d3]@2 ~, ~@7 d#3@2 ~@7", // A5 G#5 G5
  AA: "~@4 g3@5 ~@3 [c3,g3]@2 ~ [c3,g3]@5 ~ [c3,g3]@2 ~ [c3,g3]@2 ~@3 g#2@3, ~@3 c3@6 ~@19 d#3@3 ~", // C5
  AB: "[~ [g#2,d#3]@2 ~@2 [c#3,g#3]@5 ~ [c#3,g#3]@2 ~ [c#3,g#3] ~@2 g#3 ~@2 [c3,g3]@6 ~@2 [c3,g3]@2 ~@2 g3@5 ~ [c3,g3]@2 ~ [c3,g3] ~@3 [c3,g3]@2 ~@2 [g#2,d#3]@2 ~@5 [c#3,g#3]@3 ~@2 [c#3,g#3]@2 ~ g#3@2 ~@3 [c3,g3]@6 ~@4 [c3,g3]@2 ~ c3@3 ~@2 [c3,g3]@2 ~ [c3,g3]@2 ~@2 [g#2,d#3]@4 ~@2 [g#2,d#3]@2 ~@2 [c#3,g#3]@4 ~ [c#3,g#3]@2 ~ [c#3,g#3]@2 ~ [c#3,g#3]@2 ~ [c3,g3]@6 ~@4, ~@16 c#3@2 ~@13 c3@5 ~@27 c#3@2 ~@16 g3@4 ~@43]/4", // G#5 C#5 C5 G#5 C#5 C5 G#5 C#5 …
  AC: "[[c3,g3]@2 ~ [c3,g3]@5 ~ [c3,g3]@2 ~ [c3,g3]@2 ~@3 [g#2,d#3]@3 ~@2 [g#2,d#3]@2 ~@2 [c#3,g#3]@3 ~@3 g#3@2 ~ g#3 ~ [c#3,g#3]@2 ~@2 c3@5 ~@4 [c3,g3]@2 ~ [c3,g3]@5 ~ [c3,g3]@2 ~ [c3,g3]@2, ~@31 c#3@2 ~ c#3@2 ~@4 g3@5 ~@19]/2", // C5 G#5 C#5 C5
  AD: "~@2 [g#2,d#3]@4 ~ [g#2,d#3]@2 ~@3 g#3@5 [c#3,g#3]@2 ~@4 c#3@2 ~@2 [c3,g3]@5, ~@11 c#3@5 ~@4 c#3@2 ~@10, ~@21 g#3@5 ~@6", // G#5 C#5 C5
  AE: "~@4 [c3,g3]@2 ~ [c3,g3]@4 ~@2 [c3,g3]@2 ~ [c3,g3]@2 ~@2 [g#2,d#3]@4 ~ [g#2,d#3]@2 ~@2 [c#3,a#3]@3", // C5 G#5 F#
  AF: "~@2 [c#3,g#3]@2 ~ [c#3,g#3]@2 ~ [c#3,g#3]@2 ~ [c3,g3]@6 ~@3 [c3,g3]@2 ~ [c3,g3]@5 ~@2 [c3,g3]@2", // C#5 C5
  AG: "~ [c3,g3] ~@3 [g#2,d#3]@4 ~ [g#2,d#3]@2 ~@3 g#3@5 ~ [c#3,g#3]@2 ~ [c#3,g#3]@2 c#3 g#3 ~@2 [e2,b2]@2, ~@14 c#3@5 ~@13", // C5 G#5 C#5 E5
  AH: "~@2 [e2,b2]@3 ~@3 [a2,e3]@4 ~@2 [a2,e3]@2 ~ [a2,e3]@2 [a2,e3]@2 ~@3 a3@3 [d3,a3]@2 ~@3, ~@23 d3@3 ~@6", // E5 A5 D5
  AI: "~ [g2,d3]@3 ~@2 [g2,d3]@2 ~ [g2,d3]@2 ~ [g2,d3]@2 ~@2 [e2,b2]@3 ~ [e2,b2]@2 ~@3 [a2,e3]@4 ~ [a2,e3]@2", // G5 E5 A5
  AJ: "~@2 e3@2 [a2,e3]@2 ~@2 [d3,a3]@3 ~ [d3,a3]@2 ~@3 [g2,d3]@4 ~@2 [g2,d3]@2 ~ [g2,d3]@2 ~ [g2,d3]@2 ~, ~ a2@2 ~@29", // A5 D5 G5
  AK: "~ [e2,b2]@2 ~@2 [e2,b2]@2 ~@4 e3@4 ~ [a2,e3]@2 ~ [a2,e3]@2 ~ [a2,e3] ~@2 [d3,a3]@3 ~@2 a3@2, ~@10 a2@4 ~@15 d3@2 ~", // E5 A5 D5
  AL: "~@3 [g2,d3]@4 ~ [g2,d3]@2 ~ [g2,d3]@2 ~ [g2,d3]@2 ~@2 e2@2 ~@2 [e2,b2]@2 ~@3 [a2,e3]@4 ~, ~@17 b2@3 ~@12", // G5 E5 A5
  AM: "[~ [a2,e3] ~ [a2,e3]@2 ~ [a2,e3] ~@3 [d3,a3]@3 ~ [d3,a3]@2 ~@3 [g2,d3]@5 ~ [g2,d3]@2 ~ [g2,d3]@2 ~ g2@3 [e2,b2]@3 ~@2 b2@2 ~@3 e3@4 ~ [a2,e3]@2 ~ [a2,e3]@2 ~ [a2,e3]@2 ~@2 a3@2 ~@2 [d3,a3]@2 ~@3 [g2,d3]@3 ~@2 [g2,d3]@2 ~@2 [g2,d3]@2 ~ d3 ~@2 [e2,b2]@3 ~@2 b2@2 ~@3 e3@3, ~@31 d3 ~@6 e2@2 ~@3 a2@4 ~@11 d3@2 ~@19 g2@2 ~@6 e2@2 ~@3 a2@3 ~]/3", // A5 D5 G5 E5 A5 D5 G5 E5
  AN: "~@5 [a2,e3]!2 ~ [a2,e3]@2 ~@2 [g2,d3]@4 ~@2 g2 d3 ~@5 d3 ~@6", // A5 G5
  AO: "~@3 [e2,b2]@3 ~@2 b2@2 ~@3 [a2,e3]@3 ~@2 [a2,e3]@2 ~ [a2,e3]@2 ~ [a2,e3]@2 ~@2 [d3,a3]@2 ~@2, ~@7 e2@2 ~@23", // E5 A5 D5
  AP: "[~ [d3,a3] ~@3 [g2,d3]@4 ~@2 [g2,d3]@2 ~ d3@3 g2 ~@2 [e2,b2]@3 ~@2 [e2,b2]@2 ~@4 [a2,e3]@3 ~@2 e3@2 ~ e3@2 [a2,e3]@2 ~@2 [d3,a3]@3 ~@2 a3@2 ~@3 [g2,d3]@4 ~@2 d3@2 ~, ~@14 g2@2 ~@19 a2@2 ~ a2@2 ~@9 d3@2 ~@9 g2@2 ~@2]/2", // D5 G5 E5 A5 D5 G5
  AQ: "[g2,d3]@2 [g2,d3]@2 ~@2 [a2,e3]@5 ~ [a2,e3]@5 ~@2 e3@4 ~@2 e3@2 ~@3 [g#2,d#3]@2, ~@18 a2@4 ~@2 a2@3 ~@5", // G5 A5 G#5
  AR: "~ [g#2,d#3]@4 ~@2 [g2,d3]@5 ~ [g2,d3]@2 ~ g2@2 g2@2 ~@2 [a2,e3]@5 ~ [a2,e3]@4, ~@4 d3 ~@3", // G#5 G5 A5
  AS: "~@2 [a2,e3]@3 ~@3 [a2,e3]@4 ~@2 [g#2,d#3]@2 ~@2 d#3@2 ~ d#3 ~@2 [g2,d3]@4 ~@2 [g2,d3]@2, ~@17 g#2@2 ~ g#2@2 ~@10", // A5 G#5 G5
  AT: "[~ [g2,d3]@2 [g2,d3]@2 ~@2 [a2,e3]@5 ~ [a2,e3]@4 ~@2 [a2,e3]@4 ~@2 [a2,e3]@3 ~@3 [g#2,d#3]@2 ~ g#2@2 g#2@2 ~@2 [g2,d3]@4 ~@2 [g2,d3]@2 ~ [g2,d3] ~@2 [g2,d3]@2 ~@2 [a2,e3]@5 ~@2 a2@3 ~@2 [a2,e3]@4 ~@2 [a2,e3]@3 ~@3 [g#2,d#3]@2 ~ [g#2,d#3]@2 ~ d#3@2 ~@2 g2@5 ~, ~@34 d#3@5 ~@23 e3@4 ~@19 g#2@2 ~@2 d3@5 ~@2]/3", // G5 A5 G#5 G5 A5 G#5
  AU: "[[g2,d3]@2 ~ [g2,d3]@5 ~@2 [a2,e3]@99 ~@2 d3@22 c3@5 ~@3 b2@15 ~ [e2,f2,g2] e2 ~, ~@111 g2@45 ~@4, ~@138 f2@19 ~@3]/5", // G5 A5 Em
})).s("gm_distortion_guitar").gain(0.26)

// other · drawbar organ · "hammond organ"
const drawbar_organ = note("<~@14 A@2 ~@7 B ~@7 C ~@8 D ~@10 E ~@11 F ~@11>".pickRestart({
  A: "[~@11 d3 ~@3 d3@2 ~@15]/2", B: "~@16 g3@3 ~@13", C: "~@14 g3 ~", D: "~@4 d3@3 ~@25", E: "~@6 d3 ~@9",
  F: "~@9 d3@2 ~@5",
})).s("gm_drawbar_organ").gain(0.26)

// other · trumpet · "trump"
const trumpet = note("<~@9 A@3 B C@5 D E F@2 G@3 H I J K L@2 M N O@3 P Q@2 R@2 S ~@33>".pickRestart({
  A: "[~@30 c3@7 ~@18 c3@4 c#3@3 c3@5 ~ a#2@5 ~@2 g#2@2 ~ g#2@2 ~@2 g2@4 ~@10]/3",
  B: "~@9 c3@3 ~ c#3@2 ~ c3@5 ~ a#2@5 ~@2 g#2@2 ~",
  C: "[~ g#2@2 ~@2 g2@4 ~@17 c3@4 ~ c#3@3 c3@4 ~@2 a#2@2 ~@2 g#2@2 ~@4 g2@4 ~@3 f2@4 ~@2 a#2@5 ~ g#2@4 ~@2 g2@7 ~@3 d#2 ~@3 g#2@4 ~@2 g#2@5 ~ f#2@4 ~@2 f2@2 ~ f2@3 ~ a#2@4 ~@2 g#2@4 ~ g2@6 ~@3 d#2@2 ~ g#2@4 ~ g#2@4 ~@2 g2@3 ~@3 f2 ~ f2@2 ~@2]/5",
  D: "~ a#2@3 ~@3 g#2@5 ~ f#2@6 ~@5 d#2@2 ~ g#2@4 ~", E: "~ g#2@5 ~@8 d#2 ~@4 a#2@3 ~@3 g#2@5 ~@2",
  F: "[g2@6 ~@3 d#2 ~@3 g#2@4 ~@2 g#2@5 ~@3 f2@29 ~@8]/2",
  G: "[~@4 d#2@2 ~ d#2@6 ~ f2@4 ~ f2@19 ~@25 c3@6 ~@19 c3@3 ~ c#3@2 ~@2]/3",
  H: "c3@4 ~@2 a#2@4 ~ g#2@2 ~ g#2@2 ~@2 g2@2 ~@12", I: "~@10 c3@3 ~ c#3@2 c3@5 ~@2 a#2@5 ~ g#2@2 ~",
  J: "g#2@2 ~ g2@3 ~@22 c3@3 ~", K: "c#3@2 ~ c3@4 ~ a#2@4 ~@2 g#2@2 ~ g#2@2 ~ g2@3 ~@9",
  L: "[~@14 c3@3 c#3@2 ~ c3@4 ~@3 a#2@3 ~ g#2@2 ~@2 g#2@2 ~ g2@3 ~@21 c3@2]/2",
  M: "~@2 c#3@2 ~ c3@2 ~ c3@2 ~ a#2@2 ~ g#2@4 ~@3 g2@4 ~ f2@5 ~", N: "~ a#2@4 ~@2 g#2@4 ~@3 g2@6 ~@3 d#2@2 ~ g#2@4 ~@2",
  O: "[~ g#2@4 ~ g2@3 ~@4 f2@2 f2@3 ~ a#2@4 ~@2 g#2@5 ~ g2@5 ~@4 d#2@2 ~@2 g#2@3 ~@3 g#2@4 ~ f#2@3 ~@3 f2 ~ f2@2 ~@3 a#2@3 ~@2 g#2@5 ~@2 g2@6 ~@3 d#2 ~@3 g#2@3]/3",
  P: "~@2 g#2@5 ~@2 f2@4 ~@2 f2 ~ f2@2 ~@3 a#2@4 ~@2 g#2@4",
  Q: "[~@2 g2@4 ~@5 d#2@2 ~@2 g#2@5 ~@3 g#2@6 ~@2 f2@20 ~@7 a#2@2 ~@4]/2",
  R: "[~@4 f2@11 ~@2 d#2@2 ~ f2@3 ~@2 f2@31 ~ d#2@3 ~ d#2@3]/2", S: "~ f2@4 ~@3 f2@7 ~@17",
})).s("gm_trumpet").gain(0.51)

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A B C D E F G H I J K L M N O P Q R S ~ T H P J U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR
  AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL ~@4
>`.pickRestart({
  A: "~@13 x ~@2", B: "~@3 x ~@7 x ~@4", C: "~ x ~ x ~ x ~@7 x ~@11 x ~@6", D: "~@7 x ~@11 x ~ x ~ x ~@7 x",
  E: "~@11 x ~@13 x ~@6", F: "~@2 x!3 ~@4 x ~@5 x", G: "~@11 x ~@10 x ~ x ~ x ~@5", H: "~@5 x ~@12 x ~@12 x",
  I: "~@11 x ~ x ~ x ~@8 x ~@7", J: "~@2 x ~@5 x ~@5 x!2", K: "~ x ~@8 x ~@11 x ~@9",
  L: "~@3 x ~@2 x ~@3 x!2 ~ x ~@3 x ~@10 x ~@3", M: "~@9 x!2 ~@9 x ~@11", N: "~@3 x ~@10 x ~@12 x ~ x!2 ~",
  O: "~@6 x ~@4 x ~@8 x!2 ~@8 x ~", P: "~@11 x!2 ~ x ~@8 x ~@8", Q: "~@4 x ~ x ~ x ~@9 x ~@10 x ~ x",
  R: "~@7 x ~ x ~@4 x ~@14 x ~@2", S: "~@2 x ~@6 x ~@5 x ~@9 x ~@4 x ~", T: "~@12 x ~@11 x!2 ~ x ~@4",
  U: "x ~@8 x ~@12 x ~@9", V: "~@3 x ~@10 x ~ x ~ x ~@8 x ~@4", W: "~@9 x ~@12 x ~@9",
  X: "~@2 x ~ x!2 ~@7 x ~@12 x ~@5", Y: "~@5 x!2 ~@2 x ~ x ~@2 x ~@3 x ~ x ~@9 x ~", Z: "~@10 x ~@2 x!2 ~@7 x ~@9",
  AA: "~@3 x ~ x!2 ~@9 x ~@12 x!2 ~", AB: "~ x ~@7 x ~@12 x!2 ~ x ~@6", AC: "~ x ~@11 x!2 ~ x ~@8 x ~@6",
  AD: "~@6 x ~ x ~ x ~@8 x ~@12", AE: "x ~ x ~@2 x ~@9 x ~@9 x ~ x ~ x ~@2", AF: "~@5 x ~@13 x ~@4 x ~@6 x",
  AG: "~@5 x ~@2", AH: "~@12 x ~@6 x ~@8 x ~ x!2", AI: "~@5 x ~@5 x ~@4", AJ: "~@2 x ~@11 x!2 ~ x ~@8 x ~@5",
  AK: "~@6 x ~@12 x ~@10 x ~", AL: "x!2 ~@9 x ~@12 x ~@7", AM: "~@5 x ~@10 x ~ x!2 ~@9 x ~@2", AN: "~@9 x ~@13 x ~@8",
  AO: "~@2 x ~ x!2 ~@9 x ~@11 x ~@4", AP: "~@4 x ~@5 x!3 ~@3", AQ: "~ x ~@5 x ~@5 x ~@2",
  AR: "~@5 x ~ x ~@2 x ~@7 x ~@11 x ~", AS: "~@4 x ~@2 x ~@3 x ~@2 x ~@2 x ~@5 x ~ x ~ x ~@3 x",
  AT: "~@8 x ~@9 x!2 ~ x ~@6 x ~@3", AU: "~@2 x ~@7 x ~ x!2 ~@7 x ~@4 x ~@5",
  AV: "~@3 x ~ x ~ x ~@5 x ~@4 x ~@8 x ~ x ~ x", AW: "~@6 x ~@4 x ~@6 x ~ x!2 ~@5 x ~@3 x",
  AX: "~@11 x ~ x ~ x ~@6 x ~ x ~@7", AY: "~ x ~@3 x ~ x ~@7 x ~ x ~@8 x ~@2 x ~ x",
  AZ: "~@2 x ~@4 x!2 ~ x ~@6 x ~@3 x!2 ~@3 x ~@4 x", BA: "~@2 x ~@7 x ~@2 x ~ x ~@3 x ~@4 x!2 ~@6",
  BB: "~@6 x!2 ~@3 x ~@5 x ~ x ~@8 x ~@2 x", BC: "~ x ~@4 x ~@4 x ~ x ~@8 x ~@2 x!2 ~@5",
  BD: "~ x ~ x ~@11 x ~ x ~@8 x!2 ~@4", BE: "~@5 x ~@7 x ~@6 x ~@5 x ~@2 x ~ x", BF: "~@6 x ~@5 x ~@6 x ~@12",
  BG: "x ~@7 x ~@7 x ~@2 x ~@12", BH: "~@14 x ~@2 x ~@4 x ~@7 x ~", BI: "~ x ~@14",
  BJ: "~ x ~@3 x ~@3 x ~@6 x ~ x ~@13", BK: "~@19 x ~@5 x ~@5 x", BL: "~ x ~@6",
})).gain(0.26)

// drums · low tom
const low_tom = s("lt").struct("<~@66 [~@11 x ~@2 x ~] [~@3 x ~@28] [x ~@2 x ~@28] [~@17 x ~@5 x ~@8] ~@5>").gain(0.26)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@3 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU
  AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP ~@4
>`.pickRestart({
  A: "~@20 x ~@2 x ~@5 x ~@2", B: "~ x ~ x ~@5 x ~@3 x ~@2 x ~@8 x ~@4 x ~", C: "~@8 x ~@3 x ~@3 x ~@2 x ~@3 x ~@6 x ~",
  D: "~@2 x ~@8 x ~@2 x ~@2 x ~@7 x ~@2 x ~@3", E: "~@2 x ~@3 x ~@2 x ~@4 x ~@2 x ~@3 x ~@5 x ~@3 x",
  F: "~@2 x ~@8 x ~@3 x ~@5 x ~@2 x ~@2 x ~@4", G: "~ x ~@2 x ~@3 x ~@5 x ~@5 x ~@3 x ~@7",
  H: "x ~@6 x ~@3 x ~@2 x ~@5 x ~@3 x ~@2 x ~@4", I: "~ x ~@5 x ~@10 x ~@2 x ~@5 x ~@3 x",
  J: "~@2 x ~@4 x ~@2 x ~@2 x ~@5 x ~@5 x ~@6", K: "~@4 x ~@2 x ~@5 x ~@2 x ~@3 x ~@4 x ~@3 x ~@2",
  L: "x ~@3 x ~@4 x ~@2 x ~@3 x ~@9 x ~@5", M: "~@6 x ~@2 x ~ x ~@8 x ~@9 x ~", N: "~ x ~@2 x ~@8 x ~@11 x ~@2 x ~@3",
  O: "~@7 x ~@9 x ~@2 x ~@3 x ~@7", P: "~ x ~@6 x ~@7 x ~@8 x ~@6", Q: "~@2 x ~@2 x ~@10 x ~@8 x ~@3 x ~@2",
  R: "~@8 x ~@4 x ~@5 x ~@2 x ~@6 x ~@2", S: "~@2 x ~@6 x ~@5 x ~@8 x ~ x ~@5", T: "~ x ~@6", U: "~@11 x ~@9 x ~@8 x ~",
// … 42 more lines

More by Nirvana