Strudelify

Fight Fire With Fire

Kansas

KeyA minorTempo64 bpm
0:00/0:00
// Fight Fire With Fire — Kansas
// 64 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 56 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(64/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 · "new"
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@2 AM AN AO AP AQ AR AS AT AU@2
  AV AW AX AY AZ@2 ~
>`.pickRestart({
  A: "~@18 b2!2 ~@2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~",
  B: "b2 a2 b2 ~ b2 ~ b2 ~@2 b2 ~ b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2",
  C: "~ b2 a2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~",
  D: "~@2 b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~",
  E: "b2 ~ b2 ~ b2 ~ a2 ~ a2 ~@2 g2@6 ~@4 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2",
  F: "~ b2 ~@2 [a2,b2] b2 ~@2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~", // Asus2
  G: "b2 ~ b2 ~ b2 ~ a2 ~ a2 ~ a2 ~ g2@6 ~@5 b2 ~ b2 ~ b2 ~ b2 ~ b2",
  H: "~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~@2 b2 a2 b2 ~ b2 ~ b2 ~ b2 ~",
  I: "b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~@2 c3 ~ c3 ~ c3 ~ c3",
  J: "~ c3 ~ c3 ~ c3 ~ c3 b2 c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 b2 c3 ~ c3 ~ c3 ~ c3",
  K: "~ c3 ~ c3 ~ c3 ~ c3 b2 c3 ~@3 c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~@2 d3!2 ~@2 d3 ~",
  L: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3!2 d3 ~ d3 ~ d3 ~",
  M: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ b2 ~ b2 ~ c3 ~",
  N: "c3 ~ c3 ~ c3 ~ c3 ~ c3 b2 c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 b2 c3 ~ c3 ~ c3 ~",
  O: "c3 ~ c3 ~ c3 ~ c3 ~@2 [b2,c3] c3 ~ c3 ~ c3 ~@2 c3 ~ c3 ~ c3!2 ~@2 c3 ~ d3 ~ d3 ~ d3", // Cmaj7
  P: "~ d3 ~ d3 ~ d3 ~ d3 ~ d3 [c#3,d3] ~@2 d3 ~ [c#3,d3] ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ d3 ~ d3 ~ d3", // Dmaj7
  Q: "~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~@3 b2 ~ b2 ~ b2",
  R: "~ b2 ~ b2 ~ b2 ~ b2 ~@2 [a2,b2] b2 ~ b2 ~@2 b2!2 ~@2 b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~", // Asus2
  S: "b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ a2 ~ a2 ~ a2 ~ g2@6 ~@4 b2 ~ b2 ~",
  T: "b2 ~ b2 ~@2 b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2",
  U: "~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ a2 ~ a2 ~ a2 ~ g2@7 ~@4 b2 ~",
  V: "b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ c3 ~",
  W: "c3 ~ c3 ~@2 c3!2 ~@2 c3 ~ c3 ~ c3 [b2,c3] ~@2 c3!2 ~@2 c3 ~ c3 ~ c3 ~ c3 ~ c3 b2 c3", // Cmaj7
  X: "~@3 c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 b2 c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ d3",
  Y: "~ d3 ~ d3 ~@2 d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~",
  Z: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~",
  AA: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~@2 c3 ~ c3 ~ c3 [b2,c3] ~@4 c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3", // Cmaj7
  AB: "b2 c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 b2 c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3",
  AC: "~ d3 ~ d3 ~ d3 ~@2 d3!2 ~@2 d3 ~ d3 ~ d3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~",
  AD: "c#3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3!2 ~@2 c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~",
  AE: "~@2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~",
  AF: "~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ a2 ~ a2 ~ a2 ~ g2@6 ~",
  AG: "~@4 b2!2 ~@2 b2 ~ b2!2 ~@2 b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~",
  AH: "b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ a2 ~ a2 ~ a2 ~ g2@6",
  AI: "~@5 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2",
  AJ: "~ b2 ~@2 [a2,b2] b2 ~ b2 ~ b2 ~ b2 ~ b2 ~@2 b2 ~ b2 ~ b2 ~ a2 ~ a2 ~ a2 ~ g2@4", // Asus2
  AK: "~@6 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~@2 b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2",
  AL: "[~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ a2 ~ a2 ~ a2 ~ g2@6 ~@5 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~]/2",
  AM: "b2 ~ b2 ~ b2 ~ b2 ~ [a2,b2] ~ b2 ~ b2 ~ b2 ~@2 b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2", // Asus2
  AN: "~ b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~@2 b2 ~",
  AO: "b2!2 ~ b2 ~ b2 ~@2 b2 ~ a2@2 a2 a2@3 ~@2 a2!2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2",
  AP: "~ a2 ~ a2 ~ a2 ~ a2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2",
  AQ: "~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2!2 ~@2 b2!2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~",
  AR: "b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~",
  AS: "b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2!2 ~ b2 ~ b2",
  AT: "~ b2 ~ b2 ~@4 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~",
  AU: "[b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~@2 b2 ~ a2 ~ a2!2 ~@2 g2@7 ~@3 b2 ~ b2 ~ b2 ~ b2 ~@2 b2 ~ b2 ~ b2 ~ b2 [a2,b2] ~ b2 ~@2 b2 ~]/2", // Asus2
  AV: "b2!2 ~@2 b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ a2 ~ a2 ~ a2 ~",
  AW: "g2@6 ~@5 b2 ~@2 b2!2 ~@2 b2 ~ b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~",
  AX: "b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~@2 b2!2 ~@2 a2 ~ a2",
  AY: "~ a2 ~ g2@6 ~@4 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~@2 b2!2 ~@2 b2 [a2,b2] ~@2", // Asus2
  AZ: "[~@2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2@9 ~@2 a2@5 ~ g2@8 ~@19]/2",
})).s("gm_electric_bass_finger").gain(0.48)

// chords · synth drum · "new"
const synth_drum = note(`<
  A B C D E F G H I@2 J@8 K L M N O P Q@6 R@2 S T U V W X Y@8 Z@2 AA@3 AB AC AD AE AF
>`.pickRestart({
  A: "~@18 f2 ~ f2 ~ [c3,f3] ~ f2 ~ f2 ~ f2@2 [c3,f3] ~", // F5
  B: "f2 ~ f2 ~ f2 ~@2 [c3,f3] ~ f2!2 ~ f2 e2 ~ [c3,f3] ~ f2 ~ f2 ~ f2 ~ [c3,f3] ~ f2 ~ f2 ~ f2 ~ [c3,f3]", // F5
  C: "~ f2 ~ f2 ~ f2 ~@2 [c3,f3] ~ f2 ~ f2 ~ f2 ~ [c3,f3] ~ f2 ~ f2 ~ f2 ~ [c3,f3] ~ f2 ~ f2 ~ f2 ~", // F5
  D: "[c3,f3] ~ f2 ~ f2 ~ f2 ~ [c3,f3] ~ f2 ~ f2 ~ f2 ~ [c3,f3] ~ f2 ~ f2 ~ f2 ~ [c3,f3] ~ f2 ~ f2 ~ f2 ~", // F5
  E: "~@2 d2 ~ d2 ~ d2@2 e3@2 d2@2 ~@2 d2 ~ [d2,c3,f3] ~ d2 ~ d2 ~ d2 ~ d2 ~@2 d2 ~ d2 ~ d2, ~@8 [c3,f3]@7 ~@3 [c3,f3]@5 ~ f3@8, ~@25 c3@7", // Dm7 F5
  F: "~@3 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~@2 d2 ~ d2!2 ~ d2 ~@2 d2 ~ d2 ~ d2!2, ~ [c3,f3]@7 ~ [c3,f3]@8 [c3,f3]@7 ~@2 [c3,f3]@6", // F5
  G: "~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2@3 ~ d2 ~ [c3,f3] d2 ~ d2 ~ d2!2 ~@2 [c3,f3]@4 d2, ~@2 [c3,f3]@7 ~ [c3,f3]@7 ~@3 [c3,f3]@5 ~@2 d2@2 ~@3", // F5
  H: "~ d2 ~ d2@2 ~ d2 ~@2 d2 ~ d2@2 ~@3 d2!2 ~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~, ~@3 [c3,f3]@8 [c3,f3]@8 ~ c3@7 [c3,f3]@5, ~@3 g3 ~@15 f3@7 ~@6", // F5
  I: "[d2!2 ~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2@2 d2 ~@2 d2!2 ~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ [c3,f3]@2 d2, ~@3 [c3,f3]@8 ~ [c3,f3]@8 [c3,f3]@8 ~ [c3,f3]@8 [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ d2 ~@2]/2", // F5
  J: "[~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ [c2,d2] ~ d2 ~ d2 ~ d2 ~ d2 ~@2 d2 ~ d2 ~ d2!2 ~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ [d2,e2] ~ d2 ~@2 d2!2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~@2 d2!2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2!2 ~ d2 ~ d2 ~ d2 ~ d2 ~@2 d2!2 ~ d2 ~ d2 ~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ [d2,c3,f3] ~ d2 ~ d2@3 ~@2 d2!2 ~ d2 ~ d2 ~ d2 ~ d2 ~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2!2 ~@2 d2 ~, ~@5 [c3,f3]@8 [c3,f3]@7 ~ [c3,f3]@7 ~@2 [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@8 [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@8 [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~@2 [c3,f3]@7 ~ [c3,f3]@8 [c3,f3]@7 ~ [c3,f3]@8 [c3,f3]@7 ~ [c3,f3]@7 ~@3 [c3,f3]@5 ~ [c3,f3]@7 ~ [c3,f3]@8 ~ [c3,f3]@7 [c3,f3]@8 ~]/8", // Csus2 Dsus2 Dm7 F5
  K: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2@3 ~ [d2,c3,f3] ~ [d2,c3,f3] ~ d2 ~ d2 ~ d2 ~, [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@5 ~@5 [c3,f3]@5 ~", // Dm7 F5
  L: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~@2 d2!2 ~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2, [c3,f3]@7 ~ [c3,f3]@8 ~ [c3,f3]@7 ~ [c3,f3]@7", // F5
  M: "~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ [d2,c3,f3] ~ [d2,c3,f3]@3 ~ d2 ~ [d2,c3,f3] ~ d2 ~ d2 ~ d2, ~ [c3,f3]@7 ~ [c3,f3]@6 ~@12 [c3,f3]@5", // Dm7 F5
  N: "~@2 d2 ~ d2!2 ~ d2 ~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~, ~ [c3,f3]@7 ~ f3@7 ~@16, ~@10 c3@7 ~ [c3,f3]@7 ~ [c3,f3]@6", // F5
  O: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2, ~@2 [c3,f3]@8 [c3,f3]@7 ~ [c3,f3]@8 f3@6, ~@27 c3@5", // F5
  P: "~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2, ~@3 [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@5", // F5
  Q: "[~ d2 ~ d2 ~ d2 ~@2 [c2,d2] d2 ~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ [d2,c3,f3] ~ d2 ~ [d2,e2] ~ d2 ~ [c2,d2] ~ d2 ~@2 d2!2 ~@2 d2!2 ~ d2 ~ d2 ~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2!2 ~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~@2 d2!2 ~ [d2,b2] ~@2 d2 ~ d2 ~ d2 ~ d2@3 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ [d2,c3,f3] ~ [d2,c3,f3] ~, ~@3 [c3,f3]@7 ~@2 [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~@3 [c3,f3]@5 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@8 f3@7 ~@42 e3@3 ~@48, ~@93 c3@6 ~@2 [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@8 [c3,f3]@7 ~ [c3,f3]@7 ~@2 [c3,f3]@7 ~ [c3,f3]@8 [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@5 ~@5]/6", // Csus2 Dm7 Dsus2 Csus2 G Dm7 F5
  R: "[d2 ~ d2@3 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2@3 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~@2 d2 ~ d2!2 ~@2 d2 ~ d2 ~ [d2,c3]@4 d2 ~ d2@3 ~ [d2,f3] ~ [d2,c3,f3], [c3,f3]@6 [c3,f3]@7 ~ [c3,f3]@8 [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ f3@8 ~@10, ~@46 c3@4 ~@5 [c3,f3]@5 ~@4]/2", // D7 Dm Dm7 F5
  S: "~ d2@2 d2@3 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2@3 ~ d2 ~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~, ~ [c3,f3]@6 [c3,f3]@7 ~ [c3,f3]@8 ~ [c3,f3]@7 ~", // F5
  T: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ [c3,f3]@5 ~ [d2,c3,f3] ~, [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ d2@2 ~@6", // F5 Dm7 F5
  U: "[d2,c3,f3] ~ d2 ~ d2 ~ d2 ~@2 d2!2 ~ d2 ~@2 d2 ~ d2 ~ d2 ~ [c#2,d2] ~ d2 ~ d2 ~ d2 ~ d2 ~ d2, ~@2 [c3,f3]@5 ~ [c3,f3]@7 ~ [c3,f3]@8 ~ [c3,f3]@7", // Dm7 Dmaj7 F5
  V: "~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 [c3,f3]@2 d2 ~ d2 ~ d2@3 ~, ~ [c3,f3]@7 ~ [c3,f3]@8 [c3,f3]@4 ~@5 [c3,f3]@6", // F5
  W: "d2 ~ [d2,c3,f3] ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~@2 d2 ~ d2!2 ~ d2 ~ d2 ~ d2 ~, ~@4 [c3,f3]@5 ~ [c3,f3]@7 ~ [c3,f3]@6 ~@2 [c3,f3]@6", // Dm7 F5
  X: "~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ [c2,d2] ~ [c3,f3]@2 d2 ~ [d2,c3,f3]@3 ~ [d2,c3] ~ [d2,c3]@3, ~@3 [c3,f3]@7 ~ [c3,f3]@7 ~ d2 ~@7 f3@5", // Csus2 F5 Dm7 D7 F5
  Y: "[~ d2 ~ d2 ~ d2@2 ~ c2 ~@7 d2 ~ d2 ~ d2@2 d2 ~ d2!2 ~@2 d2@3 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~@2 c3 ~ d2@3 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ [d2,c3,f3]@6 ~@2 d2@3 ~ d2 ~ d2 ~ d2@2 ~@3 d2 ~ d2 ~ d2@3 d2 ~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2@2 ~@2 d2 ~ d2 ~ [d2,c3] [d2,f3] c3 ~ d2!2 ~@2 d2 ~ d2 ~ d2@3 ~ d2 ~ d2 ~ d2 ~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~@3 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~@2 [d3,g3] ~ d2 ~ d2 ~ d2 ~@2 d2 ~ d2!2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ e3@2 d2 ~ [d2,e2] ~ d2 ~ d2 ~@2 d2!2 ~ d2 ~ d2 ~ [d2,d#2] ~ d2 ~ d2 ~ d2 ~@3 [c2,d2] ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~, ~@3 [c3,f3]@7 ~@2 [c3,f3]@7 ~ [c3,f3]@6 ~@2 [c3,f3]@8 [c3,f3]@7 ~@2 [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~@9 [c3,f3]@7 ~ [c3,f3]@8 [c3,f3]@7 ~@2 [c3,f3]@8 [c3,f3]@13 ~@3 [c3,f3]@7 f3@7 ~@32 [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@8 [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@4, ~@7 d2@7 ~@28 d2@2 ~@90 c3@7 [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@6 d2@2 ~@31 d2 ~@51]/8", // Dm7 D7 Dm G5 Dsus2 D#maj7 Csus2 F5
  Z: "[d2!2 ~ f3 [d2,c3] [d2,c3,f3]@5 ~@2 d2 ~ d2 ~ [c2,d2] ~ d2 ~ d2!2 ~@2 d2!2 ~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ [d2,c3] ~ d2 ~ d2 ~ d2 ~ d2 ~ d2@2, ~@11 f3@7 ~@34 f3@7 ~@5, ~@12 c3@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@8 ~@2 c3@6 [c3,f3]@4]/2", // D7 Dm7 Csus2 D7 F5
  AA: "[~@2 f3 [d2,c3] d2 [c3,f3] d2@2 ~ d2 ~ d2 ~ d2 ~ d2 ~ [d2,e2] ~ d2 ~ d2 ~ d2 ~ d2 ~@2 d2 ~ d2 ~ d2 ~ [d2,e2] ~ d2 ~ d2 ~ [c2,d2] ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ [d2,c3] ~ c3@2 [c3,f3]@2 d2 ~ d2 ~ d2@3 ~ [d2,c3,f3] ~ [d2,c3,e3,f3] ~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~, ~@6 [c3,f3]@6 ~ [c3,f3]@7 ~ [c3,f3]@8 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ [c3,f3]@7 ~ f3@2 d2 ~ d2 ~@3 [c3,f3]@5 ~@5 [c3,f3]@6 ~ [c3,f3]@8 ~ [c3,f3]@7 ~]/3", // D7 F5 Dsus2 Csus2 D7 F5 Dm7 F5
  AB: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~@2 d2!2 ~@2 d2!2 ~@2 d2 ~ d2, [c3,f3]@7 ~ [c3,f3]@8 [c3,f3]@7 ~ [c3,f3]@3 ~ [c3,f3]@3 ~", // F5
  AC: "[c3,f3] d2 d2@3 ~ [c3,f3] d2 [c3,f3] d2!2 ~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~@2 d2!2 ~ d2, ~@10 [c3,f3]@5 ~@2 [c3,f3]@7 ~ [c3,f3]@7", // F5
  AD: "~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~@2 d2!2 ~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ [c3,f3]@2, ~ [c3,f3]@7 ~ [c3,f3]@8 ~ [c3,f3]@7 ~ [c3,f3]@4 d2 ~", // F5
  AE: "d2 ~ [d2,c3] ~ d2@4 ~ [c3,f3]@2 ~@2 e3 ~@2 [b2,c3,d3]@2 [a2,b2,c3,d3,e3] ~@2 [g2,a2,b2,c3] ~@2 [f2,g2,a2] ~ [e2,f2] ~ d2@2 ~@2, ~@2 f3@2 ~@5 d2 ~@2 [c3,f3]@2 ~ f3@2 ~@15, ~@16 e3 ~@15", // D7 F5 Bm Am Cmaj7 F Fmaj7 F5
  AF: "c2 ~@31",
})).s("gm_synth_drum").gain(0.22)

// other · distortion guitar · "new"
const distortion_guitar = note("<A B C D E F G H I ~@7 J K L M@2 N ~@8 O@2 P Q R@5 ~@17>".pickRestart({
  A: "~@17 b2 ~ b2 ~@2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~",
  B: "b2 a2 b2 ~ b2 ~ b2 ~@2 b2 ~ b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2",
  C: "~ b2 a2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~",
  D: "~@2 b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~",
  E: "b2 ~ b2 ~ a2 ~ a2 ~ a2 ~ g2@6 ~@5 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2",
  F: "~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~@2 b2 ~ [a2,b2] b2 ~@2 b2 ~ b2 ~ b2 ~ b2 ~", // Asus2
  G: "b2 ~ b2 ~ b2 ~ a2 ~ a2 ~ a2 ~ g2@6 ~@4 b2 ~ b2 ~@2 b2 ~ b2 ~ b2",
  H: "~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~@2 b2 ~ b2 ~ b2 [a2,b2] ~ b2 ~ b2 ~ b2 ~@2", // Asus2
  I: "b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~@9", J: "~@27 a2@5",
  K: "~ b2@6 f#2@4 a2@7 b2@6 f#2@4 a2@4", L: "~ b2@3 f#2@2 a2@3 g2@4 ~ a2@2",
  M: "[~@2 b2@6 f#2@5 a2@6 b2@6 f#2@4 a2@6 b2@6 f#2@4 a2@6 g2@7 ~@5 a2]/2",
  N: "~ b2!2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~@3",
  O: "[~@2 a2@6 b2@6 f#2@4 a2@7 b2@5 f#2@4 a2@7 b2@5 f#2@4 ~ a2@6 g2@7]/2", P: "~@3 a2@7 b2@5 f#2@5 a2@6 b2@6",
  Q: "f#2@2 a2@3 b2@3 f#2@2 a2@3 g2@3",
  R: "[~@4 a2@7 b2@6 f#2@4 a2@7 b2@6 f#2@4 a2@6 b2@6 f#2@3 a2@7 g2@7 ~@3 a2@6 b2@6 f#2@4 a2@7 b2@6 f#2@4 a2@6 b2@6 f#2@4 a2@6 g2@5 ~@30]/5",
})).s("gm_distortion_guitar").gain(0.48)

// other · distortion guitar · "new"
const distortion_guitar_2 = note("<~@38 A B C ~ D E F G H@3 I J K@3 L ~>".pickRestart({
  A: "~@8 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2 ~",
  B: "b2 ~ b2 ~ b2 ~ b2 a2 b2 ~@2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 a2 b2 ~ b2 ~ b2 ~ b2", C: "~ b2 ~ b2 ~ b2 ~ b2 ~@24",
  D: "~@9 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2",
  E: "~ b2!2 ~ b2 ~ b2 ~@2 b2 ~ b2!2 ~@2 b2 ~ b2!2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~",
  F: "b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~",
  G: "b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2!2",
  H: "[~@3 b2 ~@3 a2@6 ~ b2@6 f#2@4 a2@6 b2@6 f#2@4 a2@7 b2@6 f#2@4 a2@6 g2@7 ~@3 a2@7 b2@6 f#2@4 a2@6]/3",
  I: "b2@5 f#2@4 ~ a2@6 b2@6 f#2@4 a2@6", J: "~ g2@8 ~@2 a2@6 ~ b2@6 f#2@4 a2@4",
  K: "[~@2 b2@6 f#2@4 a2@6 b2@6 f#2@4 a2@6 g2@7 ~@5 a2@5 b2@6 f#2@4 a2@6 b2@7 f#2@4 a2@6 b2@6 f#2@2 ~@4]/3",
  L: "~@2 a2@4 g2@15 ~@11",
})).s("gm_distortion_guitar").gain(0.48)

// other · string ensemble 1 · "new"
const string_ensemble_1 = note(`<
  ~@2 A@2 B C@2 ~ D E@8 F G H@2 I@4 J K L M N O@2 P@2 Q R S@3 ~ T U V W@6 X Y Z@4 ~
>`.pickRestart({
  A: "[~@19 a4@6 b4@6 ~@5 a4@5 b4@6 ~@5 a4@6 b4@6, ~@31 e4@10 ~@6 e4@13 ~@4]/2", B: "f#4@2 a4@3 g4@4 ~ a4@3 b4@3",
  C: "[~ f#4@4 a4@6 b4@6 f#4@4 a4@7 b4@6 f#4@4 a4@6 g4@6 ~@14]/2", D: "~@3 [c4,e4]",
  E: "[~@9 [c4,e4]@14 ~ [c4,e4]@31 ~@2 [d4,f#4]@16 [c#4,e4]@17 [d4,f#4]@16 [c#4,e4]@15 ~ [c4,e4]@15 ~ [c4,e4]@15 ~ c4@11 ~@4 c4@16 ~ [d4,f#4]@16 ~ e4@16 [d4,f#4]@16 [c#4,e4]@14 ~@2 a4@5, ~@154 e4@32 ~@16 c#4@17 ~@37]/8", // C D C#m D C#m C D C#m
  F: "~@7 e4@4 a4@6 ~ b4@6 a4@2 ~@2 a4@4, ~ b4@10 f#4@11 ~@10", G: "~ b4@3 f#4@2 a4@3 f4 g4@4 a4@2",
  H: "[~@2 b4@6 f#4@4 a4@7 b4@6 f#4@4 a4@6 b4@6 f#4@4 a4@6 g4@7 ~@6]/2",
  I: "[~@30 [c4,e4]@16 ~ [c4,e4]@14 ~@2 [c4,e4]@15 ~ [c4,e4]@14 ~@2 [d4,f#4]@16 ~ e4@16, ~@111 c#4@16 ~]/4", // C D
  J: "[d4,f#4]@16 [c#4,e4]@15 ~", K: "~@7 a4@2 ~@8 e4@15, [c4,e4]@14 ~@2 c4@15 ~", L: "~ [c4,e4]@15 ~ [c4,e4]@15",
  M: "~ [d4,f#4]@16 ~ e4@14, ~@17 c#4@15", N: "~@2 [d4,f#4]@15 ~ e4@14, ~@17 c#4@15",
  O: "[~@2 a4@6 b4@6 e4@4 a4@6 b4@6 ~@4 a4@6 b4@6 f#4@5 a4@6 g4@7, ~@15 f#4@4 ~@13]/2",
  P: "[~@3 a4@6 b4@6 f#4@4 a4@7 b4@5 f#4@5 a4@6 b4@6 f#4@4 a4@6 g4@6]/2", Q: "~@4 a4@6 b4@6 f#4@5 a4@6 b4@5",
  R: "~ f#4@4 a4@6 b4@6 f#4@4 a4@6 g4@5",
  S: "[~@19 f#4@3 a4@6 b4@7 f#4@4 a4@6 b4@6 f#4@4 a4@6 g4@5 ~@30, ~@16 b4@5 ~@75]/3",
  T: "~@13 g#4@11 g4@8, ~@13 d#2@3 ~@16", U: "~@4 f#4@3 ~@3 f#4@12 ~@3 g4@7", V: "~@2 a4@7 b4@21 c5@2, ~@2 g#4 ~@29",
  W: "[~@2 b4@5 ~ b4@31 ~@2 a4@15 [g#4,a4] ~@3 g#4@2 ~@3 g4@6 ~ [g4,b4]@27 ~@4 a4@6 ~ b4@5 f#4@5 a4@6 b4@6 ~@4 a4@5 b4@7 f#4@4 a4@6 g4@7 ~@3 a4@6 b4@7 f#4@4 a4@7, ~@7 a4@2 ~@31 f#4@20 ~@2 a4@9 ~@61 e4@7 ~@53]/6", // Amaj7 G
  X: "b4@6 e4@3 a4@7 b4@6 f#4@4 a4@6", Y: "g4@7 ~@3 b4@5 ~@2 b4@6 f#4@5 a4@4, ~@28 b4 ~@3",
  Z: "[~@2 b4@6 f#4@4 a4@6 b4@6 f#4@4 a4@7 g4@6 ~@8 b4@8 a4@3 ~ a4@6 b4@6 f#4@4 a4@7 b4@5 f#4@4 a4@7 g4@7 ~@21]/4",
})).s("gm_string_ensemble_1").gain(0.48)

// chords · electric bass finger · "new"
const electric_bass_finger = note("<~@11 A@2 ~@43>".pickRestart({
  A: "[~@34 f3@2 a3 ~ b3 ~ d4@4 b3@2 a3@2 b3@2 d3@2 f3@3 ~@9, ~@26 d3@23 ~@15]/2",
})).s("gm_electric_bass_finger").gain(0.48)

// other · alto sax · "new"
const alto_sax = note(`<
  ~@10 A@3 ~@2 B@2 C D E ~@3 F@3 G H I J K ~ L ~ M ~ N ~@5 O@2 P@2 Q R S@2 T U V@3 ~
>`.pickRestart({
  A: "[~@19 [e4,f4]@2 ~@2 e4@4 f#4@14 e4@4 ~@9 e4@2 e4@4 d4@19 ~@17]/3", // Fmaj7
  B: "[~@25 e4@4 d4@12 ~@6 a4@2 ~@2 a4@2 f#4@2 a4@3 ~ a4@5, ~@23 f#4@7 ~@17 b4 ~@16]/2",
  C: "~ b4@3 ~@3 f#4@3 ~ e4@6 f#4@4 ~@4 b4 ~ b4@2 a4 ~@2", D: "a4 ~ a4@4 ~@22 a4@4",
  E: "~@2 b4@3 ~@3 f#4@3 ~ e4@6 f#4@5 ~@9", F: "[~@25 e4@3 ~ e4@4 f#4@19 ~@8 f#4@2 e4@4 d4@9 ~@21]/3",
  G: "~@11 f#4 e4 d4@2 ~", H: "~@9 f#4@3 ~@9 f#4@2 ~@6 f#4@2 ~", I: "~@15 f#4@3 e4@7 ~@7",
  J: "~@6 e4@10 d4@3 ~@3 a4@2 ~@2 a4@2 ~@4, ~@22 b4 ~@9", K: "~ a4@7 b4@3 ~@3 f#4@3 ~ e4@6 f#4@5 ~@3",
  L: "~@3 a4@6 b4@4 ~@2 f#4@3 ~ e4@7 f#4@3 ~@3", M: "~@17 a4@2 ~@2 e4@6 f#4@4 ~",
  N: "~@6 a4@6 b4@3 ~@3 f#4@3 ~ e4@6 f#4@3 ~", O: "[~@15 d5@20 ~@29]/2",
  P: "[~@8 d5@16 c#5@11 ~ c#5@4 b4@24, ~@35 d5@2 ~@27]/2", Q: "~@7 a4@7 b4@2 ~@3 f#4@3 ~@2 e4@5 f#4@3",
  R: "~@6 b4 ~ b4@2 a4 ~ a4 ~@19", S: "[~@8 a4@6 b4@3 ~@4 f#4@3 ~ e4@6 f#4@4 ~@29]/2",
  T: "~@10 c#5@7 b4@3 ~@3 a4@3 ~@2 f#4@4", U: "~ a4@3 ~@12",
  V: "[~@13 a4@6 b4@3 ~@3 f#4@3 ~ e4@6 f#4@5 ~@22 d5@6 c#5@10 ~@18]/3",
})).s("gm_alto_sax").gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@20 [~@29 x ~@2] ~@35>").gain(0.64)

stack(
  bass, synth_drum, distortion_guitar, distortion_guitar_2, string_ensemble_1, electric_bass_finger, alto_sax, mid_tom
)

More by Kansas