Strudelify

Discipline

King Crimson

KeyC♯ minorTempo105 bpm
0:00/0:00
// Discipline — King Crimson
// 105 bpm, 5/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (5/4 at bar 1, 4/4 at bar 18, 5/4 at bar 24, 4/4 at bar 32, ...) are rendered on a constant 5/4 grid of one bar per cycle
// note: Full arrangement: all 108 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(105/5)

// 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.

// other · electric guitar clean · "Belew"
const electric_guitar_clean = note(`<
  A B@15 C D@5 E F@7 G H@6 I J K I J K I J K I J K L@4 M@8 N O P N O P N O P N O P Q R S Q R S Q R S Q R S Q R S Q T U V
  W U V W U V X Y Z AA Y Z AA Y Z AB
>`.pickRestart({
  A: "~@10 c4@4 d3@4 ~ a3@4 ~ c3@4 ~ a2@4 ~ c4@4 d3@4 ~ a3@4 ~",
  B: "c3@4 ~ a2@4 ~ c4@4 d3@4 ~ a3@4 ~ c3@4 ~ a2@4 ~ c4@4 d3@4 ~ a3@4 ~",
  C: "c3@4 ~ a2@4 ~ b3@4 c#3@4 ~ g#3@4 ~ b2@4 ~ g#2@4 ~ b3@4 c#3@4 ~ g#3@4 ~",
  D: "b2@4 ~ g#2@4 ~ b3@4 c#3@4 ~ g#3@4 ~ b2@4 ~ g#2@4 ~ b3@4 c#3@4 ~ g#3@4 ~",
  E: "b2@4 ~ g#2@4 ~ b3@4 c#3@4 ~ g#3@4 ~ b2@4 ~ a3@4 ~ c3@4 a2@4 ~ c4@4 ~",
  F: "d3@4 ~ a3@4 ~ c3@4 a2@4 ~ c4@4 ~ d3@4 ~ a3@4 ~ c3@4 a2@4 ~ c4@4 ~",
  G: "d3@4 ~ a3@4 ~ c3@4 a2@4 ~ c4@4 ~ d3@4 ~ b3@5 c#3@4 g#3@5 b2@5",
  H: "g#2@5 b3@5 c#3@4 g#3@5 b2@5 g#2@5 b3@5 c#3@4 g#3@5 b2@5",
  I: "f#4@2 c#4@2 ~ f#3@2 e4@2 ~ b3@2 f#4@2 c#4@2 ~ f#3@2 e4@2 ~ b3@2 f#4@2 c#4@2 ~ f#3@2 a4@2 ~ b3@2 f#4@2 c#4@2 ~ f#3@2 e4@2 ~ b3@2",
  J: "f#4@2 c#4@2 ~ f#3@2 e4@2 ~ b3@2 f#4@2 c#4@2 ~ f#3@2 a4@2 ~ b3@2 f#4@2 c#4@2 ~ f#3@2 e4@2 ~ b3@2 f#4@2 c#4@2 ~ f#3@2 e4@2 ~ b3@2",
  K: "f#4@2 c#4@2 ~ f#3@2 a4@2 ~ b3@2 f#4@2 c#4@2 ~ f#3@2 e4@2 ~ b3@2 f#4@2 c#4@2 ~ f#3@2 e4@2 ~ b3@2 f#4@2 c#4@2 ~ f#3@2 a4@2 ~ b3@2",
  L: "a4@4 ~ e4@4 ~ c4@4 g4@4 ~ d4@4 ~ e4@4 ~ c4@4 ~ g3@4 d4@4 ~ a3@4 ~",
  M: "c5@4 ~ g4@4 ~ d#4@4 a#4@4 ~ f4@4 ~ g4@4 ~ d#4@4 ~ a#3@4 f4@4 ~ c4@4 ~",
  N: "c5@2 g4@2 ~ c4@2 a#4@2 ~ f4@2 c5@2 g4@2 ~ c4@2 a#4@2 ~ f4@2 c5@2 g4@2 ~ c4@2 d#5@2 ~ f4@2 c5@2 g4@2 ~ c4@2 a#4@2 ~ f4@2",
  O: "c5@2 g4@2 ~ c4@2 a#4@2 ~ f4@2 c5@2 g4@2 ~ c4@2 d#5@2 ~ f4@2 c5@2 g4@2 ~ c4@2 a#4@2 ~ f4@2 c5@2 g4@2 ~ c4@2 a#4@2 ~ f4@2",
  P: "c5@2 g4@2 ~ c4@2 d#5@2 ~ f4@2 c5@2 g4@2 ~ c4@2 a#4@2 ~ f4@2 c5@2 g4@2 ~ c4@2 a#4@2 ~ f4@2 c5@2 g4@2 ~ c4@2 d#5@2 ~ f4@2",
  Q: "c#5@2 g#4@2 ~ c#4@2 b4@2 ~ f#4@2 c#5@2 g#4@2 ~ c#4@2 f#5@2 ~ g#4@2 e5@2 g#4@2 ~ c#5@2 g#4@2 ~ c#4@2 b4@2 f#4@2 ~ c#5@2 g#4@2 ~ c#4@2",
  R: "f#5@2 g#4@2 ~ e5@2 g#4@2 ~ c#5@2 g#4@2 c#4@2 ~ b4@2 f#4@2 ~ c#5@2 g#4@2 c#4@2 ~ f#5@2 g#4@2 ~ e5@2 g#4@2 c#5@2 ~ g#4@2 c#4@2 ~ b4@2",
  S: "f#4@2 c#5@2 ~ g#4@2 c#4@2 ~ f#5@2 g#4@2 e5@2 ~ g#4@2 c#5@2 ~ g#4@2 c#4@2 b4@2 ~ f#4@2 c#5@2 ~ g#4@2 c#4@2 f#5@2 ~ g#4@2 e5@2 ~ g#4@2",
  T: "f#5@2 g#4@2 ~ e5@2 g#4@2 ~ e5@2 b4@2 e4@2 ~ d5@2 a4@2 ~ e5@2 b4@2 e4@2 ~ a5@2 b4@2 ~ g5@2 b4@2 e5@2 ~ b4@2 e4@2 ~ d5@2",
  U: "a4@2 e5@2 ~ b4@2 e4@2 ~ a5@2 b4@2 g5@2 ~ b4@2 e5@2 ~ b4@2 e4@2 d5@2 ~ a4@2 e5@2 ~ b4@2 e4@2 a5@2 ~ b4@2 g5@2 ~ b4@2",
  V: "e5@2 b4@2 ~ e4@2 d5@2 ~ a4@2 e5@2 b4@2 ~ e4@2 a5@2 ~ b4@2 g5@2 b4@2 ~ e5@2 b4@2 ~ e4@2 d5@2 a4@2 ~ e5@2 b4@2 ~ e4@2",
  W: "a5@2 b4@2 ~ g5@2 b4@2 ~ e5@2 b4@2 e4@2 ~ d5@2 a4@2 ~ e5@2 b4@2 e4@2 ~ a5@2 b4@2 ~ g5@2 b4@2 e5@2 ~ b4@2 e4@2 ~ d5@2",
  X: "a5@2 b4@2 ~ g5@2 b4@2 ~ f#5@2 c#5@2 f#4@2 ~ e5@2 b4@2 ~ f#5@2 c#5@2 f#4@2 ~ e5@2 b4@2 ~ f#5@2 c#5@2 f#4@2 ~ a5@2 b4@2 ~ f#5@2",
  Y: "c#5@2 f#4@2 ~ e5@2 b4@2 ~ f#5@2 c#5@2 f#4@2 ~ e5@2 b4@2 ~ f#5@2 c#5@2 f#4@2 ~ a5@2 b4@2 ~ f#5@2 c#5@2 f#4@2 ~ e5@2 b4@2 ~ f#5@2",
  Z: "c#5@2 f#4@2 ~ e5@2 b4@2 ~ f#5@2 c#5@2 f#4@2 ~ a5@2 b4@2 ~ f#5@2 c#5@2 f#4@2 ~ e5@2 b4@2 ~ f#5@2 c#5@2 f#4@2 ~ e5@2 b4@2 ~ f#5@2",
  AA: "c#5@2 f#4@2 ~ a5@2 b4@2 ~ f#5@2 c#5@2 f#4@2 ~ e5@2 b4@2 ~ f#5@2 c#5@2 f#4@2 ~ e5@2 b4@2 ~ f#5@2 c#5@2 f#4@2 ~ a5@2 b4@2 ~ f#5@2",
  AB: "c#5@2 f#4@2 ~ a5@2 b4@2 ~@39",
})).s("gm_electric_guitar_clean").gain(0.31).pan(0.1)

// bass · fretless bass · "Levin"
const bass = note(`<
  ~@4 A B C D E F G H I J K L M N O P Q R S E F G H I J K T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM@4 AN AO
  AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH@3 BI@3 BJ@3 BK@3 BL@3 BM@3 BN@3 BO@2 BP BQ BR ~@9
>`.pickRestart({
  A: "~@10 g2@2 a2@2 ~@3 e2@2 g2@2 ~ a2@2 ~@2 e2@2 ~ g2@2 a2@2 ~@3 e2@2 a2@2 ~ a1@2 ~@3 a1@2",
  B: "~@2 d2@2 ~ d#2@2 e2@2 ~ g2@2 a2@2 ~@3 e2@2 g2@2 ~ a2@2 ~@2 e2@2 ~ g2@2 a2@2 ~ a1@2 ~@2 a1@2 ~@3 g2@2 ~ a2@2",
  C: "~@2 e2@2 ~ g2@2 a2@2 ~@3 e2@2 g2@2 ~ a2@2 ~@3 e2@2 a2@2 a1@2 ~@3 a1@2 ~@3 d2@2 d#2@2 ~ e2@2 g2@2 ~ a2@2",
  D: "~@2 e2@2 ~ g2@2 a2@2 ~@3 e2@2 g2@2 ~ a2@2 a1@2 ~@3 a1@2 ~@3 g2@2 a2@2 ~@3 e2@2 g2@2 ~ a2@2 ~@3 e2@2",
  E: "g2@2 a2@2 ~@3 e2@2 ~ a2@2 a1@2 ~@3 a1@2 ~@3 d2@2 d#2@2 e2@2 ~ g2@2 a2@2 ~@3 e2@2 g2@2 ~ a2@2 ~@3 e2@2",
  F: "g2@2 a2@2 ~ a1@2 ~@3 a1@2 ~@2 g2@2 ~ a2@2 ~@3 e2@2 g2@2 a2@2 ~@3 e2@2 ~ g2@2 a2@2 ~@3 e2@2 a2@2 ~ a1@2",
  G: "~@2 a1@2 ~@3 d2@2 ~ d#2@2 e2@2 g2@2 ~ a2@2 ~@3 e2@2 g2@2 a2@2 ~@3 e2@2 ~ g2@2 a2@2 a1@2 ~@3 a1@2 ~@3",
  H: "g2@2 a2@2 ~@3 e2@2 ~ g2@2 a2@2 ~@3 e2@2 g2@2 ~ a2@2 ~@2 e2@2 ~ a2@2 a1@2 ~@3 a1@2 ~@3 d2@2 d#2@2 ~ e2@2",
  I: "g2@2 a2@2 ~@3 e2@2 ~ g2@2 a2@2 ~@3 e2@2 g2@2 ~ a2@2 a1@2 ~@3 a1@2 ~@3 g2@2 a2@2 ~@3 e2@2 g2@2 ~ a2@2",
  J: "~@2 e2@2 ~ g2@2 a2@2 ~@3 e2@2 a2@2 ~ a1@2 ~@3 a1@2 ~@2 d2@2 ~ d#2@2 e2@2 ~ g2@2 a2@2 ~@3 e2@2 g2@2 ~ a2@2",
  K: "~@2 e2@2 ~ g2@2 a2@2 ~ a1@2 ~@2 a1@2 ~@3 g2@2 ~ a2@2 ~@2 e2@2 ~ g2@2 a2@2 ~@3 e2@2 g2@2 ~ a2@2 ~@3 e2@2",
  L: "a2@2 a1@2 ~@3 a1@2 ~@3 d2@2 d#2@2 ~ e2@2 g2@2 ~ a2@2 ~@2 e2@2 ~ g2@2 a2@2 ~@3 e2@2 g2@2 ~ a2@2 a1@2 ~@3",
  M: "a1@2 ~@3 g2@2 a2@2 ~ e2@9 f#2 g#2@9 e2@9 c#2@10", N: "e2@10 f#2 g#2@8 c#3 ~@2 b2@7 e2@9 g#2@10",
  O: "e2@10 b1@9 e2@10 g#2@9 e2@10", P: "c#3 ~ b2 ~@2 e3@2 f#3@2 ~ e3 ~ c#3 ~ b2@5 e2@10 f#2 g#2@8 e2@10",
  Q: "c#2@10 e2@9 f#2 g#2@9 c#3 ~ b2@7 e2@10", R: "g#2@10 e2@9 b1@10 e2@9 g#2@10",
  S: "e2@10 c#3 ~ b2@5 ~@2 e2@8 ~@2 g2@2 a2@2 ~@3 e2@2 g2@2 ~ a2@2 ~@3 e2@2",
  T: "a2@2 a1@2 ~@3 a1@2 ~@3 d2@2 d#2@2 ~ e2@2 g2@2 ~ a2@2 ~@2 e2@2 ~ e2@9 f#2 g#2@9",
  U: "e2@10 c#2@9 e2@10 f#2 g#2@8 c#3 ~@2 b2@7", V: "e2@10 g#2@9 e2@10 b1@9 e2@10",
  W: "g#2@10 e2@9 c#3 ~@2 b2 ~ e3@2 f#3@2 ~ e3 ~ c#3 ~@2 b2@4 e2@10", X: "f#2 g#2@9 e2@9 c#2@10 e2@9 f#2 g#2@9",
  Y: "c#3 ~ b2@7 ~ e2@9 g#2@10 e2@9 b1@10", Z: "e2@10 g#2@9 e2@10 c#3 ~ b2@5 ~@2 e2@8 ~@2",
  AA: "e2@2 f#2@2 ~@3 c#2@2 ~ e2@2 f#2@2 ~@3 c#2@2 e2@2 ~ f#2@2 ~@2 c#2@2 ~ f#2@2 f#1@2 ~@3 f#1@2 ~@3 b1@2 c2@2 ~ c#2@2",
  AB: "e2@2 f#2@2 ~@3 c#2@2 ~ e2@2 f#2@2 ~@3 c#2@2 e2@2 ~ f#2@2 f#1@2 ~@3 f#1@2 ~@3 e2@2 f#2@2 ~@3 c#2@2 e2@2 ~ f#2@2",
  AC: "~@2 c#2@2 ~ e2@2 f#2@2 ~@3 c#2@2 f#2@2 ~ f#1@2 ~@3 f#1@2 ~@2 b1@2 ~ c2@2 c#2@2 ~ e2@2 f#2@2 ~@3 c#2@2 e2@2 ~ f#2@2",
  AD: "~@2 c#2@2 ~ e2@2 f#2@2 ~ f#1@2 ~@2 f#1@2 ~@3 e2@2 ~ f#2@2 ~@2 c#2@2 ~ e2@2 f#2@2 ~@3 c#2@2 e2@2 ~ f#2@2 ~@3 c#2@2",
  AE: "f#2@2 f#1@2 ~@3 f#1@2 ~@3 b1@2 c2@2 ~ c#2@2 e2@2 ~ f#2@2 ~@2 c#2@2 ~ e2@2 f#2@2 ~@3 c#2@2 e2@2 ~ f#2@2 f#1@2 ~@3",
  AF: "f#1@2 ~@3 e2@2 f#2@2 ~@3 c#2@2 e2@2 ~ f#2@2 ~@3 c#2@2 e2@2 f#2@2 ~@3 c#2@2 ~ f#2@2 f#1@2 ~@3 f#1@2 ~@3 b1@2",
  AG: "c2@2 c#2@2 ~ e2@2 f#2@2 ~@3 c#2@2 e2@2 ~ f#2@2 ~@3 c#2@2 e2@2 f#2@2 ~ f#1@2 ~@3 f#1@2 ~@2 e2@2 ~ f#2@2 ~@3 c#2@2",
  AH: "e2@2 f#2@2 ~@3 c#2@2 ~ e2@2 f#2@2 ~@3 c#2@2 f#2@2 ~ f#1@2 ~@2 f#1@2 ~@3 b1@2 ~ c2@2 c#2@2 e2@2 ~ f#2@2 ~@3 c#2@2",
  AI: "e2@2 f#2@2 ~@3 c#2@2 ~ e2@2 f#2@2 f#1@2 ~@3 f#1@2 ~@3 e2@2 f#2@2 ~@3 c#2@2 ~ e2@2 f#2@2 ~@3 c#2@2 e2@2 ~ f#2@2",
  AJ: "~@2 c#2@2 ~ f#2@2 f#1@2 ~@3 f#1@2 ~@3 b1@2 c2@2 ~ c#2@2 e2@2 f#2@2 ~@3 c#2@2 ~ e2@2 f#2@2 ~@3 c#2@2 e2@2 ~ f#2@2",
  AK: "f#1@2 ~@3 f#1@2 ~@3 e2@2 f#2@2 ~@3 c#2@2 e2@2 ~ f#2@2 ~@2 c#2@2 ~ e2@2 f#2@2 ~@3 c#2@2 f#2@2 ~ f#1@2 ~@3 f#1@2",
  AL: "~@2 b1@2 ~ c2@2 c#2@2 ~ e2@2 f#2@2 ~@3 c#2@2 e2@2 ~ f#2@2 ~@2 c#2@2 ~ e2@2 f#2@2 ~ f#1@2 ~@2 f#1@2 ~@3 e2@2 ~ f#2@2",
  AM: "g2 a2@14 a2 g2 f2 e2 d#2 d2 c#2 c2 b1 a#1 a1 ~ g#1 g1 f#1 f1 e1 d1 c#1 ~@14",
  AN: "a#2@2 c3@2 ~@3 g2@2 ~ a#2@2 c3@2 ~@3 g2@2 a#2@2 ~ c3@2 ~@2 g2@2 ~ c3@2 c2@2 ~@3 c2@2 ~@3 f2@2 f#2@2 ~ g2@2",
  AO: "a#2@2 c3@2 ~@3 g2@2 ~ a#2@2 c3@2 ~@3 g2@2 a#2@2 ~ c3@2 c2@2 ~@3 c2@2 ~@3 a#2@2 c3@2 ~@3 g2@2 a#2@2 ~ c3@2",
  AP: "~@2 g2@2 ~ a#2@2 c3@2 ~@3 g2@2 c3@2 ~ c2@2 ~@3 c2@2 ~@2 f2@2 ~ f#2@2 g2@2 ~ a#2@2 c3@2 ~@3 g2@2 a#2@2 ~ c3@2",
  AQ: "~@2 g2@2 ~ a#2@2 c3@2 ~ c2@2 ~@2 c2@2 ~@3 a#2@2 ~ c3@2 ~@2 g2@2 ~ a#2@2 c3@2 ~@3 g2@2 a#2@2 ~ c3@2 ~@3 g2@2",
  AR: "c3@2 c2@2 ~@3 c2@2 ~@3 f2@2 f#2@2 ~ g2@2 a#2@2 ~ c3@2 ~@2 g2@2 ~ a#2@2 c3@2 ~@3 g2@2 a#2@2 ~ c3@2 c2@2 ~@3",
  AS: "c2@2 ~@3 a#2@2 c3@2 ~@3 g2@2 a#2@2 ~ c3@2 ~@3 g2@2 a#2@2 c3@2 ~@3 g2@2 ~ c3@2 c2@2 ~@3 c2@2 ~@3 f2@2",
  AT: "f#2@2 g2@2 ~ a#2@2 c3@2 ~@3 g2@2 a#2@2 ~ c3@2 ~@3 g2@2 a#2@2 c3@2 ~ c2@2 ~@3 c2@2 ~@2 a#2@2 ~ c3@2 ~@3 g2@2",
  AU: "a#2@2 c3@2 ~@3 g2@2 ~ a#2@2 c3@2 ~@3 g2@2 c3@2 ~ c2@2 ~@2 c2@2 ~@3 f2@2 ~ f#2@2 g2@2 a#2@2 ~ c3@2 ~@3 g2@2",
  AV: "a#2@2 c3@2 ~@3 g2@2 ~ a#2@2 c3@2 c2@2 ~@3 c2@2 ~@3 [a#2,f3]@2 [c3,g3]@2 ~@3 g2@2 ~ [a#2,f3]@2 [c3,g3]@2 ~@3 [g2,c3]@2 [a#2,f3]@2 ~ c3@2, ~@45 g3@2 ~", // A#5 C5 A#5 C5 A#5
  AW: "~@2 g2@2 ~ [c3,g3]@2 c2@2 ~@3 c2@2 ~@3 f2@2 f#2@2 ~ g2@2 [a#2,f3]@2 [c3,g3]@2 ~@3 g2@2 ~ [a#2,f3]@2 [c3,g3]@2 ~@3 g2@2 [a#2,f3]@2 ~ [c3,g3]@2", // C5 A#5 C5 A#5 C5 A#5 C5
  AX: "c2@2 ~@3 c2@2 ~@3 [a#2,f3]@2 [c3,g3]@2 ~@3 g2@2 [a#2,f3]@2 ~ [c3,g3]@2 ~@2 [g2,c3]@2 ~ [a#2,f3]@2 [c3,g3]@2 ~@3 g2@2 [c3,g3]@2 ~ c2@2 ~@3 c2@2", // A#5 C5 A#5 C5 A#5 C5
  AY: "~@2 f2@2 ~ f#2@2 g2@2 ~ [a#2,f3]@2 [c3,g3]@2 ~@3 g2@2 [a#2,f3]@2 ~ [c3,g3]@2 ~@2 g2@2 ~ [a#2,f3]@2 [c3,g3]@2 ~ c2@2 ~@2 c2@2 ~@3 [a#2,f3]@2 ~ [c3,g3]@2", // A#5 C5 A#5 C5 A#5 C5 A#5 C5
  AZ: "~@2 g2@2 ~ [a#2,f3]@2 [c3,g3]@2 ~@3 [g2,c3]@2 [a#2,f3]@2 ~ [c3,g3]@2 ~@3 g2@2 [c3,g3]@2 c2@2 ~@3 c2@2 ~@3 f2@2 f#2@2 ~ g2@2 [a#2,f3]@2 ~ [c3,g3]@2", // A#5 C5 A#5 C5 A#5 C5
  BA: "~@2 g2@2 ~ [a#2,f3]@2 [c3,g3]@2 ~@3 g2@2 [a#2,f3]@2 ~ [c3,g3]@2 c2@2 ~@3 c2@2 ~@3 [a#2,f3]@2 [c3,g3]@2 ~@3 g2@2 [a#2,f3]@2 ~ [c3,g3]@2 ~@3 [g2,c3]@2", // A#5 C5 A#5 C5 A#5 C5 A#5 C5
  BB: "[a#2,f3]@2 [c3,g3]@2 ~@3 g2@2 ~ [c3,g3]@2 c2@2 ~@3 c2@2 ~@3 f2@2 f#2@2 g2@2 ~ [a#2,f3]@2 [c3,g3]@2 ~@3 g2@2 [a#2,f3]@2 ~ [c3,g3]@2 ~@3 g2@2", // A#5 C5 A#5 C5 A#5 C5
  BC: "[a#2,f3]@2 [c3,g3]@2 ~ c2@2 ~@3 c2@2 ~@2 [a#2,f3]@2 ~ [c3,g3]@2 ~@3 g2@2 [a#2,f3]@2 [c3,g3]@2 ~@3 [g2,c3]@2 ~ [a#2,f3]@2 [c3,g3]@2 ~@3 g2@2 [c3,g3]@2 ~ c2@2", // A#5 C5 A#5 C5 A#5 C5 A#5 C5
  BD: "~@2 c2@2 ~@3 f2@2 ~ f#2@2 g2@2 [a#2,f3]@2 ~ [c3,g3]@2 ~@3 g2@2 [a#2,f3]@2 [c3,g3]@2 ~@3 g2@2 ~ [a#2,f3]@2 [c3,g3]@2 c2@2 ~@3 c2@2 ~@3", // A#5 C5 A#5 C5 A#5 C5
  BE: "[a#2,f3]@2 [c3,g3]@2 ~@3 g2@2 ~ [a#2,f3]@2 [c3,g3]@2 ~@3 [g2,c3]@2 [a#2,f3]@2 ~ c3@2 ~@2 g2@2 ~ [c3,g3]@2 c2@2 ~@3 c2@2 ~@3 f2@2 f#2@2 ~ g2@2, ~@21 g3@2 ~@25", // A#5 C5 A#5 C5 A#5 C5
  BF: "[a#2,f3]@2 [c3,g3]@2 ~@3 g2@2 ~ [a#2,f3]@2 [c3,g3]@2 ~@3 g2@2 [a#2,f3]@2 ~ [c3,g3]@2 c2@2 ~@3 c2@2 ~@3 [a#2,f3]@2 [c3,g3]@2 ~@3 g2@2 [a#2,f3]@2 ~ [c3,g3]@2", // A#5 C5 A#5 C5 A#5 C5 A#5 C5 …
  BG: "~@2 [g2,c3]@2 ~ [a#2,f3]@2 [c3,g3]@2 ~@3 g2@2 [c3,g3]@2 ~ c2@2 ~@3 c2@2 ~@2 f2@2 ~ f#2@2 g2@2 ~ [a#2,f3]@2 [c3,g3]@2 ~@3 g2@2 [a#2,f3]@2 ~ [c3,g3]@2", // C5 A#5 C5 A#5 C5 A#5 C5
  BH: "[c#2@17 g#1@12 c#2@17 g#1@12 c#2@16 g#1@12 c#2@17 f#1@7 e1@5 c#1@17 g#1@12]/3",
  BI: "[c#2@17 g#1@12 c#2@17 g#1@12 c#2@16 f#1@7 ~ e1@4 c#1@17 g#1@12 c#2@17 d#2@12]/3",
  BJ: "[c#2@17 g#1@12 c#2@17 f#1@7 e1@5 c#1@16 g#1@12 c#2@17 d#2@12 c#2@17 g#1@12]/3",
  BK: "[c#2@17 f#1@7 e1@5 c#2@17 g#1@12 c#2@16 g#1@12 c#2@17 g#1@12 c#2@17 f#1@7 e1@5]/3",
  BL: "[c#1@17 g#1@12 c#2@17 g#1@12 c#2@16 g#1@12 c#2@17 f#1@7 e1@5 c#2@17 g#1@12]/3",
  BM: "[c#2@17 g#1@12 c#2@17 g1@12 e1@16 c2 d2@11 e1@17 b1 c#2@11 e1@17 c2@12]/3",
  BN: "[e1@5 ~@2 d1@2 ~@3 e1@5 ~@2 a1@3 ~@2 g1@3 ~@2 e1@16 c2 d2@12 e1@16 b1 c#2@11 e1@17 c2@12 e1@5 ~@2 d1@2 ~@3 e1@5 ~@2 a1@3 ~@2 g1@3 ~@2]/3",
  BO: "[e1@17 c2 d2@11 e1@17 c#2@12 e1@17 c2@11 e1@5 ~@3 d1@2, ~@46 b1 ~@49]/2",
  BP: "~@2 e1@5 ~@3 a1@3 ~ g1@3 ~@2 e1@17 c2 d2@11", BQ: "e1@17 c#2@11 ~ e1@5 ~@2 d1@2 ~@3 e1@5 ~@2, ~@17 b1 ~@30",
  BR: "a1@3 ~@2 g1@3 ~@40",
})).s("gm_fretless_bass").gain(0.2)

// chords · overdriven guitar · "overdrive guitar"
const overdriven_guitar = note("<~@73 A B C D B C D B C D B C D B C D E F G H F G H F G I ~@9>".pickRestart({
  A: "~@29 [g#4,c#5]@5 ~@2 [f#4,b4]@2 ~@3 [g#4,c#5]@5 ~@2", // C#5 B5 C#5
  B: "[c#5,f#5]@2 ~@3 [b4,e5]@2 ~@3 [g#4,c#5]@5 ~@2 [f#4,b4]@2 ~@3 [g#4,c#5]@5 ~@2 [c#5,f#5]@2 ~@3 [b4,e5]@2 ~@2 [g#4,c#5]@5 ~@3 [f#4,b4]@2", // F#5 E5 C#5 B5 C#5 F#5 E5 C#5 …
  C: "~@2 [g#4,c#5]@5 ~@3 [c#5,f#5]@2 ~@2 [b4,e5]@2 ~@3 [g#4,c#5]@5 ~@2 [f#4,b4]@2 ~@3 [g#4,c#5]@5 ~@2 [c#5,f#5]@2 ~@3 [b4,e5]@2 ~@3", // C#5 F#5 E5 C#5 B5 C#5 F#5 E5
  D: "[g#4,c#5]@5 ~@2 [f#4,b4]@2 ~@3 [g#4,c#5]@5 ~@2 [c#5,f#5]@2 ~@3 [b4,e5]@2 ~@3 [g#4,c#5]@5 ~@2 [f#4,b4]@2 ~@3 [g#4,c#5]@5 ~@2", // C#5 B5 C#5 F#5 E5 C#5 B5 C#5
  E: "[c#5,f#5]@2 ~@3 [b4,e5]@2 ~@3 [b4,e5]@5 ~@2 [a4,d5]@2 ~@3 [b4,e5]@5 ~@2 [e5,a5]@2 ~@3 [d5,g5]@2 ~@2 [b4,e5]@5 ~@3 [a4,d5]@2", // F#5 E5 D5 E5 A5 G5 E5 D5
  F: "~@2 [b4,e5]@5 ~@3 [e5,a5]@2 ~@2 [d5,g5]@2 ~@3 [b4,e5]@5 ~@2 [a4,d5]@2 ~@3 [b4,e5]@5 ~@2 [e5,a5]@2 ~@3 [d5,g5]@2 ~@3", // E5 A5 G5 E5 D5 E5 A5 G5
  G: "[b4,e5]@5 ~@2 [a4,d5]@2 ~@3 [b4,e5]@5 ~@2 [e5,a5]@2 ~@3 [d5,g5]@2 ~@3 [b4,e5]@5 ~@2 [a4,d5]@2 ~@3 [b4,e5]@5 ~@2", // E5 D5 E5 A5 G5 E5 D5 E5
  H: "[e5,a5]@2 ~@3 [d5,g5]@2 ~@3 [b4,e5]@5 ~@2 [a4,d5]@2 ~@3 [b4,e5]@5 ~@2 [e5,a5]@2 ~@3 [d5,g5]@2 ~@2 [b4,e5]@5 ~@3 [a4,d5]@2", // A5 G5 E5 D5 E5 A5 G5 E5 …
  I: "[e5,a5]@2 ~@3 [d5,g5]@2 ~@41", // A5 G5
})).s("gm_overdriven_guitar").gain(0.15)

// drums · kick
const kick = s("bd").struct(`<
  ~@4
  [~@10 x ~@8 x ~@9 x ~@8 x ~@9]
  [x ~@9 x ~@8 x ~@9 x ~@8 x ~@9]!44
  x!4
  [x ~@9 x ~@8 x ~@9 x ~@8 x ~@9]!45
  ~@10
>`).gain(0.4)

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

// drums · low tom
const low_tom = s("lt").struct("<~@98 [x ~@4 x ~@42] ~@9>").gain(0.35)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~@53 A B A B A B A B A B A B A C A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A ~@10
>`.pickRestart({
  A: "~@10 x ~@18 x ~@18", B: "x ~@18 x ~@18 x ~@9", C: "x ~@18 x ~@28",
})).gain(0.35)

// drums · crash
const crash = s("cr").struct("<~@49 x!4 ~@5 [~@17 x ~ x ~@4] ~@7 [~@17 x ~@6] ~@41>").gain(0.52)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@53 A B A C D E A B A B A F D G A B A B A C H I J K H I J K H I J K H I J K H I J K H I J K L ~@10
>`.pickRestart({
  A: "x ~@4 x ~ x ~@4 x ~ x ~@4 x ~@2 x ~@3 x ~@4 x ~@2 x ~@3 x ~@4 x ~@4",
  B: "x ~@4 x ~ x ~@4 x ~ x ~@4 x ~@4 x ~@4 x ~ x ~@4 x ~ x ~@4 x ~@4",
  C: "x ~@4 x ~@6 x ~ x ~@4 x ~@4 x ~@2 x ~@3 x ~@2 x ~@3 x ~@4 x ~@4",
  D: "~@2 x ~@2 x ~@4 x ~ x ~@4 x ~@4 x ~ x ~@6 x ~@2 x ~@3 x ~@4 x ~@4",
  E: "x ~@4 x ~ x ~@4 x ~ x ~@4 x ~@4 x ~@4 x ~ x ~@16",
  F: "x ~@4 x ~@6 x ~ x ~@4 x ~@4 x ~ x ~@4 x ~@2 x ~@3 x ~@4 x ~@4",
  G: "x ~@4 x ~ x ~@4 x ~ x ~@4 x ~@4 x ~@6 x ~@4 x ~@6 x ~@4",
  H: "x ~@4 x ~ x ~@4 x ~ x ~@4 x ~@2 x ~@3 x ~@4 x ~@2 x ~@3 x ~@4 x ~@2 x ~",
  I: "~@2 x ~@2 x ~@4 x ~ x ~@4 x ~@4 x ~ x ~@4 x ~@4 x ~ x ~@4 x ~ x ~@4",
  J: "x ~ x ~@4 x ~@4 x ~ x ~@4 x ~@4 x ~ x ~@4 x ~@2 x ~@3 x ~@2 x ~@4 x ~",
  K: "~@2 x ~@2 x ~@4 x ~@3 x ~@2 x ~@4 x ~ x ~@4 x ~ x ~@4 x ~@4 x ~ x ~@4",
  L: "x ~ x ~@4 x ~@4 x ~ x ~@4 x ~@4 x ~ x ~@4 x ~@2 x ~@3 x ~@2 x ~@6",
})).gain(1.11)

// drums · ht
const ht = s("ht").struct(`<
  ~@4 A B C D E F G H I J K L M B C D E F G H I J K L M B C D E F G H I H I J K L N O P Q R S B ~@46 T U V ~@10
>`.pickRestart({
  A: "~@17 x ~@11 x ~@11 x ~@4 x ~", B: "~@5 x ~@5 x ~@5 x ~ x ~@4", C: "~@2 x ~@11 x ~@11 x ~@4 x ~@11 x ~@4",
  D: "~@7 x ~@11 x ~@4 x ~@11 x ~@11", E: "x ~@11 x ~@4 x ~@11 x ~@11 x ~@6", F: "~@5 x ~@4 x ~@11 x ~@11 x ~@11 x ~",
  G: "~@2 x ~@11 x ~@11 x ~@11 x ~@4 x ~@4", H: "~@7 x ~@11 x ~@11 x ~@4 x ~@11", I: "x ~@11 x ~@11 x ~@4 x ~@11 x ~@6",
  J: "~@5 x ~@11 x ~@4 x ~@11 x ~@11 x ~", K: "~@5 x ~ x ~@5 x ~@5 x ~@4", L: "~@2 x ~@4 x ~@11 x ~@11 x ~@11 x ~@4",
  M: "x ~@16 x ~@11 x ~@11 x ~@4 x ~", N: "x ~@11 x ~@11 x ~@11 x ~@4 x ~@6", O: "~@5 x ~@11 x ~@11 x ~@4 x ~@11 x ~",
  P: "~@5 x ~@5 x ~ x ~@5 x ~@4", Q: "~@2 x ~@11 x ~@4 x ~@11 x ~@11 x ~@4", R: "~@7 x ~@4 x ~@11 x ~@11 x ~@11",
  S: "x ~@4 x ~@11 x ~@11 x ~@11 x ~@4 x ~", T: "~@12 x ~@6 x ~@6 x ~@7 x ~@3 x ~@4 x ~@2 x ~",
  U: "~@2 x ~@7 x ~@3 x ~@2 x ~@4 x ~ x ~@4 x ~@4 x ~@6 x ~@6",
  V: "x ~@4 x ~@6 x ~ x ~@4 x ~@6 x ~@4 x ~@6 x ~@4 x ~@4",
})).gain(0.29)

// drums · claves
const claves = s("clave:2").struct(`<
  ~@53 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A C ~@9
// … 15 more lines

More by King Crimson