Strudelify

Turning Japanese

The Vapors

KeyG majorTempo87 bpm
0:00/0:00
// Turning Japanese — The Vapors
// 87 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 3/4 at bar 21, 4/4 at bar 22, 3/4 at bar 37, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 6 "Lead Guitar Delay" overdriven guitar (copy of ch 5 "Lead Guitar" overdriven guitar)
// note: Full arrangement: all 83 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Guitar Solo, Clean Guitar.
setcpm(87/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.

// chords · distortion guitar · "Guitar 1"
const distortion_guitar = note(`<
  A B C D E D F G D E D F G D E D F H I J@2 K@6 L M N O L M N P@2 Q R S T S T ~ U V W X U V W Y Z AA AB AC AD AE AF AG
  AH AI AF V W X U V W X U V W X U V W X U V W AJ AK AL
>`.pickRestart({
  A: "~@8 [d4,g4]!4 [c4,f4]@2 [c4,f4]@2", B: "[a3,d4]@2 [a3,d4]@2 [c4,f4]@4 [d4,g4]!4 [c4,f4]@2 [c4,f4]@2",
  C: "[a3,d4]@2 [a3,d4]@2 [c4,f4]@4 ~ [g3,d4,g4,a#4,b4] ~@2 [g3,d4,g4,b4] ~@3", // D5 F5 G
  D: "~ c5 ~ g4@4 ~@2 [e3,b3,e4,g4] ~@2 [e2,e3,b3,e4,g4] ~@3, d4@7 ~@9, ~@2 b4@5 ~@9", // Em
  E: "b3 d4 d#4 e4@4 ~@2 [g3,d4,g4,a#4,b4] ~@2 [g3,d4,g4,b4] ~@3", F: "b3 d4 d#4 e4@4 ~ [a2,e3,a3]@7 [a2,b2,c3,e3,f3]",
  G: "[c3,g3,c4]@3 [c#3,g#3,c#4] [d3,a3]@3 [c3,c#3] a#2 [g3,d4,g4,a#4,b4] ~@2 [g3,d4,g4,b4] ~@3, ~@3 d4@4 ~@9, ~@4 [c#3,g#3] ~@11", // C5 C#5 D5 C#maj7 G C#5
  H: "[c3,g3,c4]@3 [c#3,g#3,c#4] [d3,a3]@3 [c3,c#3] [a#2,d4,g4,b4] ~ [a3,d4] ~ [b3,e4,g4] a#3 [a3,d4] [g3,c4,e4], ~@3 d4@4 ~@9, ~@4 [c#3,g#3] ~@11", // C5 C#5 D5 C#maj7 G D5 Em D5 …
  I: "~ [g3,c4,e4] ~@2 g4 [a3,d4,f#4]!2 ~ [d4,g4,b4] ~ [a3,d4,f#4] ~ [b3,e4,g4] ~ [a3,d4] [g3,c4,e4], ~@3 [b3,e4,g4]@2 ~@11", // C D G D Em D5 C Em
  J: "[~ [g3,c4,e4] ~ [b3,e4,g4] [a3,d4,f#4]@16 d5!4 [c5,d5] ~ c5 ~ a4 ~ a4 ~, ~@4 e4 ~@27]/2", // C Em D Csus2
  K: "[c5@4 ~ [g3,d4,g4,a#4,b4] ~@2 [g3,d4,g4,b4] ~@4 c5 ~ g4@4 ~@2 [e3,b3,e4,g4] ~@2 [e2,e3,b3,e4,g4] ~@3 b3 d4 d#4 e4@4 ~@2 [g3,d4,g4,a#4,b4] ~@2 [g3,d4,g4,b4] ~@4 c5 ~ g4@4 ~@2 [e3,b3,e4,g4] ~@2 [e2,e3,b3,e4,g4] ~@3 b3 d4 d#4 e4@4 ~ [a2,e3,a3]@7 [a2,b2,c3,e3,f3] [c3,g3,c4]@3 [c#3,g#3,c#4] [d3,a3]@3 [c3,c#3] [g2,a#2,d3] [g2,d3]!11, ~@12 d4@7 ~@25 d4@7 ~@28 d4@3 ~@14, ~@14 b4@5 ~@27 b4@5 ~@29 [c#3,g#3] ~@15]/6", // G Em G Em A5 Fmaj7 C5 C#5 …
  L: "[g2,d3,g3] [g2,d3]!3 [g#2,d3,d#3] [d3,a3]!11", M: "[d3,a3]!4 [f2,c3]!12", N: "[f2,c3]!4 [g2,g#2,c3] [c3,g3]!11",
  O: "[c3,g3]!3 [c3,g3,c4] [g2,d3]!12", // C5 G5
  P: "[[c3,g3]!3 [g2,c3,g3,c4] [g2,d3]@3 [f#2,c#3] [f#2,c#3,f#3]@3 [f2,c3] [f2,c3,f3]@3 [e2,c#3] c#3@3 ~ [d4,g4,b4] ~ [a3,d4] ~ [a#3,b3,e4,g4] ~ [a3,d4,f#4] [g3,c4,e4] ~ [g3,c4,e4] ~ [b3,e4,g4], ~@15 f#2@3 ~@14]/2", // C5 G5 F#5 F5 C#m G D5 Em …
  Q: "[a3,d4], f#4@7 ~, d#4 ~@15", R: "d5!4 [c5,d5] ~ c5 ~ a4 ~ a4 ~ c5@4",
  S: "~ [g3,d4,g4,a#4,b4] ~@2 [g3,d4,g4,b4] ~@4 c5 ~ g4@4 ~, ~@8 d4@7 ~, ~@10 b4@5 ~", // G
  T: "~ [e3,b3,e4,g4] ~@2 [e2,e3,b3,e4,g4] ~@3 b3 d4 d#4 e4@4 ~", U: "[g2,d3]!12 [g2,d3,g3] [g2,d3]!3",
  V: "[g#2,d3,d#3] [d3,a3]!15", W: "[f2,c3]!16", X: "[g2,g#2,c3] [c3,g3]!14 [c3,g3,c4]",
  Y: "[g2,g#2,c3] c3 [c3,g3]!5 ~ [c3,c4] ~@7, ~@7 [c3,g3]@2 ~@7", // G#maj7 C5 C C5
  Z: "~@2 [g2,d3,g3,b3] ~@3 [g2,d3,g3,b3] ~ c#3 ~ [g2,d3,g3,b3] ~ c#3 ~ [g2,d3,g3,b3] ~", // G
  AA: "c#3 ~ [g2,d3,g3,g#3,b3,d4] ~@3 [g2,d3,g3,b3,d4] ~ c#3 ~ [g2,d3,g3,b3,d4] ~ c#3 ~ [g2,d3,g3,b3,d4] ~", // G
  AB: "~@3 [f#4,a4,d5] ~@3 [a4,d5] ~@3 [a4,d5] g#3 ~@2 d5, ~ [d3,a3,d4,f#4] ~ [d3,a3,d4,f#4] ~ [d3,a3,d4,f#4,a4] ~ [d3,a3,d4,f#4,a4]", // D D5 D
  AC: "~@2 [f2,c3,f3,a3,c4] ~ e2 ~ [f2,c3,f3,a3,c4] ~@3 [f2,c3,f3,a3,c4] ~@3 [f2,c3,f3,a3,c4] ~", // F
  AD: "~@2 [f2,c3,f3,a3,c4] ~@3 [f2,c3,f3,a3,c4] ~@3 [f2,c3,f3,a3] ~ b2 ~ [f2,c3,f3,a3,c4] ~", // F
  AE: "e2 ~ [c3,g3,c4,e4,g4] ~@3 [c3,g3,c4,e4,f#4] f#3 ~@2 [c3,g3,c4,e4,g4] f#3 ~@2 [c3,g3,c4,e4,f#4]@2", // C
  AF: "[g2,d3,f#3] [g2,d3]!11 [g2,d3,g3] [g2,d3]!3", // Gmaj7 G5
  AG: "[g#2,d#3] ~ [d3,a3,d4] ~@3 [d3,a3,d4] ~@3 [d3,a3,d4] ~ g3 ~ [d3,a3,d4] ~", AH: "[f2,c3,g#3] [f2,c3]!15",
  AI: "[g2,g#2,c3] ~ [c3,g3,c4,e4,g4] ~@3 [c3,g3,c4,e4,f#4] ~ f#3 ~ [c3,g3,c4,e4,g4] ~ f#3 ~ [c3,g3,c4,e4,f#4]@2", // G#maj7 C
  AJ: "[g2,g#2,c3] [c3,g3]!14 [g2,c3,g3,c4]", // G#maj7 C5
  AK: "[g2,d3]@3 [f#2,c#3] [f#2,c#3,f#3]@3 [f2,c3] [f2,c3,f3]@3 [e2,c#3] c#3@3 [g2,c3,g3,c4], ~@11 f#2@3 ~@2", // G5 F#5 F5 C#m C5
  AL: "[g2,d3]@3 [f#2,c#3] [f#2,c#3,f#3]@3 ~ [f2,c3,f3]!4 ~@4", // G5 F#5 F5
})).s("gm_distortion_guitar").gain(0.4).pan(0.9)

// chords · distortion guitar · "Guitar 1" · soft notes
const distortion_guitar_soft = note(`<
  ~@3 A B A C D A B A C D A B A C E F ~@2 G H I H J K ~@7 L M ~@2 N O P O Q ~@7 R S T U V W X ~ Y ~ Z AA ~@11 AA ~@6 AB
  AC AD
>`.pickRestart({
  A: "g4@3 ~@4 [c4,c#4,f4,f#4] [f3,f#3,g3,g#3,a3,a#3,c4,c#4,d4,d#4,e4] [e2,a#4] ~@2 b4 a#3 ~@2", // C#maj7 Edim
  B: "~@7 [d4,d#4] [c4,c#4] ~@7", C: "~@7 [d4,d#4] [c4,c#4] ~@6 [a#3,b3]",
  D: "~@7 [f#3,g3,g#3,b3,c4,c#4] [f#2,g2,g#2,a2,c#3,d3,d#3,e3,f3,g#3,a3,a#3] ~@7",
  E: "~@7 [f#3,g3,g#3,b3,c4,c#4] [f#2,g2,g#2,a2,c#3,d3,d#3,e3,f3,g#3,a3,a#3] ~ f#4 ~@3 f#4 ~", F: "~@5 e4 ~@8 f#4 ~",
  G: "~@12 g4@3 ~", H: "~@3 [c4,c#4,f4,f#4] [f3,f#3,g3,g#3,a3,a#3,c4,c#4,d4,d#4,e4] [e2,a#4] ~@2 b4 a#3 ~@6",
  I: "~@3 [d4,d#4] [c4,c#4] ~@7 g4@3 ~", J: "~@3 [d4,d#4] [c4,c#4] ~@6 [a#3,b3] ~@4",
  K: "~@3 [f#3,g3,g#3,b3,c4,c#4] [f#2,g#2,a2,c#3,d#3,e3,f3,g#3,a3,a#3] ~@11", L: "~@3 d3 g3@3 ~@9",
  M: "f#3@3 ~@3 f#4 ~@8 b4", N: "~@8 g4@3 ~@4 [c4,c#4,f4,f#4]",
  O: "[f3,f#3,g3,g#3,a3,a#3,c4,c#4,d4,d#4,e4] [e2,a#4] ~@2 b4 a#3 ~@9 [d4,d#4]", // Edim D#maj7
  P: "[c4,c#4] ~@7 g4@3 ~@4 [c4,c#4,f4,f#4]", Q: "[c4,c#4] ~@15", R: "[g3,g#3] ~@15", S: "~@10 d4 ~@5",
  T: "~@10 g4 ~@5", U: "~@6 a4@2 ~@4 g#4 ~@3", V: "d3 ~ f4 ~@7 f4 ~@5", W: "~@2 f4 ~@5 b3 ~ c4 ~@3 f4 ~",
  X: "~@6 g4 ~@8 g4, ~@7 b4", Y: "~@14 g4 ~", Z: "~@6 g4 ~@7 [g4,b4]@2", AA: "[f#2,g#2,c#3,d#3] ~@15", AB: "~@15 d3",
  AC: "g3@3 ~@9 f#3@3 d3", AD: "g3@3 ~@13",
})).s("gm_distortion_guitar").gain(0.2).pan(0.9)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~ A B C D C E F C D C E F C D C E G H I J K L M L N O P Q R S T Q R U V W X Y Z Y AA AB AC AD AE AF AG AH AE 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 BH BL BM BN
>`.pickRestart({
  A: "~@8 g2!4 f2 ~ f2@2", B: "d2 ~ d2@2 f2@2 ~ e1 g1 b1 ~ e1 g1 b1 ~ e1",
  C: "g1 b1 ~ e1 g1 b1 ~ d1 e1 g1 ~ d1 e1 g1 ~ d1", D: "e1 g1 ~ d1 e1 g1 ~ e1 g1 b1 ~ e1 g1 b1 ~ e1",
  E: "e1 g1 ~ d1 e1 g1 ~ g1 c2@8", F: "e2@4 d2@3 e1 g1 b1 ~ e1 g1 b1 ~ e1", G: "e2@4 d2@3 ~ g1 ~ d2 ~ e2 ~ d2 c2",
  H: "~ c2 ~ e2!2 d2!2 ~ g2 ~ d2 ~ e2 ~ d2 c2", I: "~ c2 ~ e2 d2@3 c2 d2@2 ~ c2 d2@2 ~ c2",
  J: "d2@2 ~ c2 d2@2 ~ c2 d2@2 ~ c2 d2@3 c2", K: "d2@2 ~ e1 g1 b1 ~ e1 g1 b1 ~ e1 g1 b1 ~ e1",
  L: "g1 b1 ~ d1 e1 g1 ~ d1 e1 g1 ~ d1 e1 g1 ~ d1", M: "e1 g1 ~ e1 g1 b1 ~ e1 g1 b1 ~ e1 g1 b1 ~ e1",
  N: "e1 g1 ~ g1 c2@8 e2@4", O: "d2@3 ~ g1!2 ~ g1!3 ~ g1!3 ~ g1", P: "g1!2 ~ g1 d2!2 ~ d2!3 ~ d2!3 ~ d2",
  Q: "d2!2 ~ d2 f1!2 ~ f1!3 ~ f1!3 ~ f1", R: "f1!2 ~ f1 c2!2 ~ c2!3 ~ c2!3 ~ c2",
  S: "c2!2 ~@2 [g1,c2] g1@2 g1!3 ~ g1!3 ~ g1", T: "g1!2 ~ g1 d2!6 ~ d2!3 ~ d2",
  U: "c2 ~ c2!2 g2@3 g2 f#2@3 f#2 f2@3 f2", V: "f#2@2 ~ f#2 g2@2 d2 ~ e2 ~@2 c2 ~ c2 ~ e2",
  W: "d2@3 c2 d2@3 c2 d2@2 ~ c2 d2@3 c2", X: "d2@3 c2 d2@3 c2 d2@3 c2 d2@3 e1",
  Y: "g1 b1 ~ e1 g1 b1 ~ e1 g1 b1 ~ e1 g1 b1 ~ d1", Z: "e1 g1 ~ d1 e1 g1 ~ d1 e1 g1 ~ d1 e1 g1 ~ e1",
  AA: "e1 g1 ~ d1 e1 g1 ~ d1 e1 g1 ~ d1 e1 g1 ~ g1", AB: "c2@8 e2@4 d2@3 ~", AC: "g1!2 ~ g1!3 ~ g1!3 ~ g1!3 ~ g1",
  AD: "d2!2 ~ d2!3 ~ d2!3 ~ d2!3 ~ d2", AE: "f1!2 ~ f1!3 ~ f1!3 ~ f1!3 ~ f1", AF: "c2!2 ~ c2!3 ~ c2!3 ~ c2!3 ~@2",
  AG: "[g1,c2] g1@2 g1!3 ~ g1!3 ~ g1!3 ~ g1", AH: "d2!6 ~ d2!3 ~ d2!3 ~ d2", AI: "c2!2 ~ c2!3 ~ c2!2 ~@7",
  AJ: "g1 ~ g1 ~ g1 ~ g1 ~", AK: "g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1 a1 b1@2", AL: "d2 ~ a1 ~ d2 a1 d2 e2",
  AM: "f2@2 ~@2 c2@2 ~@2 f2@3 ~ c2@2 ~@2", AN: "f2@3 ~ c2@2 ~@2 f2@4 c2@2 ~@2", AO: "c2@4 g1@3 ~ c2@4 g1@3 ~",
  AP: "g1@2 g1 ~ g1!4 g1@2 g1 ~ g1!3 b1", AQ: "d2@2 ~@2 a1@3 ~ d2@2 ~@2 a1@3 ~", AR: "f1@3 ~ f1!5 ~ f1!2 ~ f1 ~ a1",
  AS: "c2@3 ~ g1@2 ~@2 c2@3 ~ g1@3 ~", AT: "g1@3 ~ g1!4 g1@3 ~ g1!3 b1", AU: "d2@3 ~ d2!3 d2@2 d2!3 ~ d2!3",
  AV: "f1@3 ~ f1!4 ~ f1!2 ~ f1!4", AW: "c2@3 ~ c2!2 ~ c2 ~ c2 e2@2 f2@2 f#2@2", AX: "g1 ~ g1!8 a1!2 b1!2 c2!2",
  AY: "d2@2 ~ d2 ~ d2!3 ~ d2 c2!2 b1!2 a1!2", AZ: "f1@2 ~ f1!5 ~ f1 g1!2 a1!2 b1!2",
  BA: "c2@2 ~ c2!5 ~ c2 e2!2 f2 ~ f#2@2", BB: "g2!3 g1!5 ~ g1 a1!2 b1!2 c2!2", BC: "d2 ~@2 d2!5 ~ d2 c2!2 b1!2 a1!2",
  BD: "f1@2 ~ f1!3 ~ f1 ~ f1 g1!2 a1!2 b1!2", BE: "c2@2 ~ c2!5 ~ c2 e2!2 f2@2 f#2 ~",
  BF: "g2@3 g1!3 ~ g1 ~ g1!3 ~ g1!2 b1", BG: "d2@2 ~ d2!3 ~ d2@2 d2 ~ d2!4 a1", BH: "f1@2 ~ f1!5 ~ f1!3 ~ f1!2 a1",
  BI: "c2@2 ~ c2!5 ~ c2!3 ~ c2!3", BJ: "g1@2 ~ g1!5 ~ g1!3 ~ g1!2 b1", BK: "d2@3 d2!5 ~ d2!3 ~ d2!3",
  BL: "c2@2 c2!2 ~ c2!3 ~ c2!3 ~ c2!3", BM: "g2@2 ~ g2 f#2@2 ~ f#2 f2@2 ~ f2 f#2@2 ~ f#2",
  BN: "g2@2 ~ g2 f#2@2 ~ f#2 f2!4 ~@4",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · overdriven guitar · "Guitar 2"
const overdriven_guitar = note(`<
  A B C D E F G@3 H@2 I@3 H@2 J@2 K L@2 M N O N P@3 Q R S@2 Q R T U V W X@2 Y@3 Z AA AB AC Z AA AB AD AE AF AG AH AI AJ
  Z AG AK AL Z AA AB AC Z AA AB AM Z AA AB AM Z AA AB AC Z AA AB AM AN AO
>`.pickRestart({
  A: "~@8 [d4,g4]!4 [c4,f4] ~ [c4,f4] ~", B: "[a3,d4] ~ [a3,d4] ~ [c4,f4]@4 [d4,g4]!4 [c4,f4] ~ [c4,f4] ~",
  C: "[a3,d4] ~ [a3,d4] ~ [c4,f4]@4 g2 g3 ~ g2!2 g3 ~ g2", // D5 F5
  D: "g2 g3 ~@2 g2 g3 g2 f#2 ~ e3 ~ e2 ~ e3 ~ e2, ~@4 e2 ~ e2 ~",
  E: "~ e3 ~ e2 ~ e3 ~ e2 [g2,g3] [g3,c4] ~ g2!2 g3 ~ g2, ~@2 e2 ~@5", // G C5
  F: "g2 g3 ~ g2!2 g3 ~ g2 [e2,f2,f#2] e3 ~ e2 ~ e3 ~ e2, ~@6 e2 ~",
  G: "[e2 e3 ~ e2!2 e3 ~ e2 a3@6 ~ f#3 [c4,c#4]@2 ~ [c#3,g#3] d3@3 ~ [g2,d3] [g2,d3,g3] ~ g2 [g2,d3,g3] [g2,c#3,d3,g3] ~@2 d3 [g2,d3,g3] ~ g2 [g2,d3] [g2,d3,g3] ~ [e2,e3]!3 ~ [e2,b2] [e2,b2,e3]!2 ~ e2, ~@7 [a2,e3]@8 [g2,c3,g3]@3 ~ [a2,a3,d4]@4 ~@8 g2@2 ~@6 b2@3 ~@6]/3", // C#maj7 C#5 G5 G G5 E E5 A5 …
  H: "[[e2,b2,e3]!2 ~ [e2,b2]!2 [e2,b2,e3] ~@2 [g2,d3] [g2,d3,g3] ~ g2 [g2,d3,g3] [g2,c#3,d3,g3] ~@2 d3 [g2,d3,g3] ~ g2 [g2,d3] [g2,d3,g3] ~ [e2,e3]!3 ~ [e2,b2] [e2,b2,e3]!2 ~ e2, ~@15 g2@2 ~@6 b2@3 ~@6]/2", // E5 G5 G G5 E E5
  I: "[[e2,b2,e3]!2 ~ [e2,b2]!2 [e2,b2,e3] ~ e2 a3@6 ~ f#3 [c4,c#4]@2 ~ [c#3,g#3] d3@3 ~ [g2,d3] [g2,d3,g3] ~ g2 [g2,d3,g3] [g2,c#3,d3,g3] ~@2 d3 [g2,d3,g3] ~ g2 [g2,d3] [g2,d3,g3] ~ [e2,e3]!3 ~ [e2,b2] [e2,b2,e3]!2 ~ e2, ~@7 [a2,e3]@8 [g2,c3,g3]@3 ~ [a2,a3,d4]@4 ~@8 g2@2 ~@6 b2@3 ~@6]/3", // E5 C#maj7 C#5 G5 G G5 E E5 …
  J: "[[e2,b2,e3]!2 ~ [e2,b2]!2 [e2,b2,e3] ~ e2 a3@6 ~ f#3 [c4,c#4]@2 ~ [c#3,g#3] d3@3 ~ [g2,d3] ~ [d3,a3,c#4] ~ [e3,b3,e4] ~ [d3,a3,c#4,d4] [c3,g3,b3,c4], ~@7 [a2,e3]@8 [g2,c3,g3]@3 ~ [a2,a3,d4]@4 ~@9]/2", // E5 C#maj7 C#5 G5 Dmaj7 E5 Dmaj7 Cmaj7 …
  K: "~ [c3,g3,b3,c4] ~ [e3,b3,e4] [e3,b3] [d3,g#3,a3] [d3,a3] ~ [g2,d3] ~ [d3,a3] ~ [e3,b3,e4] ~ [c#3,d3,a3,d4] [c3,g3,b3,c4]", // Cmaj7 E5 D D5 G5 D5 E5 Dmaj7 …
  L: "[~ [c3,g3,b3,c4] ~ [e3,b3,e4] [d3,a3]@16 [a3,d4]!4 [g3,c4] ~ [g3,c4] ~ [e3,a3] ~ [e3,a3] ~, ~@4 a#3 ~@27]/2", // Cmaj7 E5 D5 C5 A5
  M: "[g3,c4]@3 [d2,d3] [g2,d3] [g2,d3,g3] ~ g2 [g2,d3,g3] [g2,c#3,d3,g3] ~@2 d3 [g2,d3,g3] ~ g2, ~@11 g2@2 ~@3", // C5 D G5 G G5
  N: "[g2,d3] [g2,d3,g3] ~ [e2,e3]!3 ~ [e2,b2] [e2,b2,e3]!2 ~ e2 [e2,b2,e3]!2 ~ [e2,b2], ~@3 b2@3 ~@10", // G5 E E5
  O: "[e2,b2] [e2,b2,e3] ~@2 [g2,d3] [g2,d3,g3] ~ g2 [g2,d3,g3] [g2,c#3,d3,g3] ~@2 d3 [g2,d3,g3] ~ g2, ~@11 g2@2 ~@3", // E5 G5 G G5
  P: "[[e2,b2] [e2,b2,e3] ~ e2 a3@6 ~ f#3 [c4,c#4]@2 ~ [c#3,g#3] d3@3 ~ [g2,d3] ~ g2 [g2,d3]!8 ~ g2 [g2,d3]!3 [d3,a3]!4 ~ d3 [d3,a3] [d3,a3,d4] ~ [d3,a3] ~ [d3,a3,d4], ~@3 [a2,e3]@8 [g2,c3,g3]@3 ~ [a2,a3,d4]@4 ~@2 [g2,d3]@2 ~@8 [g2,d3]@2 ~@7 [d3,a3]@2 ~@6]/3", // E5 C#maj7 C#5 G5 D5 A5 C5 D5 …
  Q: "~ [d3,a3,d4]@2 ~ c3!2 [f2,c3]!8 ~ f2, ~ f3 ~@2, ~@2 f2 ~@4 [f2,b2,c3,f3]", // D5 F5 F
  R: "[f2,c3]!2 [f2,c3,f3] [f2,c3] [c3,g3]!5 ~ c3 [c3,g3,c4] ~ [c3,f#3,g3,c4] ~ [c3,g3,c4], ~@9 [c3,g3]@2 ~@5", // F5 C5 C C5
  S: "[~ [c3,d#3,g3,c4]@2 g3 [g2,d3] ~ g2 [g2,d3]!8 ~ g2 [g2,d3]!3 [d3,a3]!4 ~ d3 [d3,a3] [d3,a3,d4] ~ [d3,a3] ~ [d3,a3,d4], ~@5 [g2,d3]@2 ~@8 [g2,d3]@2 ~@7 [d3,a3]@2 ~@6]/2", // Cm G5 D5 G5 D5
  T: "~ [c3,d#3,g3,c4]@2 [g2,d3] [g2,d3,g3]@2 ~ [f#2,c#3] [f#2,c#3,f#3]@2 ~ [f2,c3] [f2,c3,f3]@2 e2 c#3", // Cm G5 F#5 F5
  U: "[f#2,c#3,f#3]@3 ~ [f2,g2,d3,g3] ~ [d3,a3,d4] ~ [a#3,b3,e4,g4] ~ [d3,g#3,a3,d4] [c3,f#3,g3,c4] ~ [c3,g3,c4] ~ [e3,b3,e4,g4]", // F#5 G7 D5 Em D C C5 Em
  V: "[d3,a3,d4,f#4]", W: "[a3,d4]!4 [g3,c4] ~ [g3,c4] ~ [e3,a3] ~ [e3,a3] ~ [g3,c4]@3 d3",
  X: "[[g2,d3] [g2,d3,g3] ~ g2 [g2,d3,g3] [g2,c#3,d3,g3] ~@2 d3 [g2,d3,g3] ~ g2 [g2,d3] [g2,d3,g3] ~ [e2,e3] [e2,e3]!2 ~ [e2,b2] [e2,b2,e3]!2 ~ e2 [e2,b2,e3]!2 ~ [e2,b2]!2 [e2,b2,e3] ~@2, ~@7 g2@2 ~@6 b2@3 ~@14]/2", // G5 G G5 E E5
  Y: "[[g2,d3] [g2,d3,g3] ~ g2 [g2,d3,g3] [g2,c#3,d3,g3] ~@2 d3 [g2,d3,g3] ~ g2 [g2,d3] [g2,d3,g3] ~ [e2,e3] [e2,e3]!2 ~ [e2,b2] [e2,b2,e3]!2 ~ e2 [e2,b2,e3]!2 ~ [e2,b2]!2 [e2,b2,e3] ~ e2 a3@6 ~ f#3 [c4,c#4]@2 ~ [c#3,g#3] d3@3 ~, ~@7 g2@2 ~@6 b2@3 ~@13 [a2,e3]@8 [g2,c3,g3]@3 ~ [a2,a3,d4]@4 ~]/3", // G5 G G5 E E5 C#maj7 C#5 A5 …
  Z: "[g2,d3] ~ g2 [g2,d3]!8 ~ g2 [g2,d3]!3, ~ [g2,d3]@2 ~@8 [g2,d3]@2 ~@3", // G5
  AA: "[d3,a3]!4 ~ d3 [d3,a3] [d3,a3,d4] ~ [d3,a3] ~ [d3,a3,d4] ~ [d3,a3,d4]@2 ~, ~@2 [d3,a3] ~@5", // D5
  AB: "c3!2 [f2,c3]!8 ~ f2 [f2,c3]!2 [f2,c3,f3] [f2,c3], f3 ~@3, f2 ~@4 [f2,b2,c3,f3] ~@2", // F5 F
  AC: "[c3,g3]!5 ~ c3 [c3,g3,c4] ~ [c3,f#3,g3,c4] ~ [c3,g3,c4] ~ [c3,d#3,g3,c4]@2 g3, ~@5 [c3,g3]@2 ~@9", // C5 C C5 Cm C5
  AD: "[c3,g3]!5 ~ c3 [c3,g3,c4]!2 ~@7, ~@5 [c3,g3]@2 ~@9", AE: "~@6 [g2,d3,g3]@2 ~@2 [g2,d3,g3] ~@3 [g2,d3,g3] ~",
  AF: "~@2 [g2,d3,g3] ~@3 [g2,d3,g3] ~@3 [g2,d3,g3] ~@3 [g2,d3,g3] ~", // G5
  AG: "~@2 [d3,a3,d4] ~@3 [d3,a3,d4] ~@3 [d3,a3,d4] ~ g3 ~ [d3,a3,d4] ~", // D5
  AH: "g#3 ~ [f2,c3,f3] ~@3 [f2,c3,f3] ~@3 [f2,c3,f3] ~@3 [f2,c3] ~", // F5
  AI: "~@2 [f2,c3,f3] ~@3 [f2,c3,f3] ~@3 [f2,c3,f3] ~@3 [f2,c3,f3] ~", // F5
  AJ: "e2 ~ [c3,g3,c4] ~@3 [c3,g3,c4] ~@3 [c3,g3,c4] ~@3 [c3,g3] ~", // C5
  AK: "[c3,g#3] c3 [f2,c3]!8 ~ f2 [f2,c3]!2 [f2,c3,f3] [f2,c3], f3 ~@3, f2 ~@4 [f2,b2,c3,f3] ~@2", // Fm F5 F
  AL: "~@2 [c3,g3,c4] ~@3 [c3,g3,c4] ~@3 [c3,g3,c4] ~@3 [c3,g3] ~", // C5
  AM: "[c3,g3]!5 ~ c3 [c3,g3,c4] ~ [c3,f#3,g3,c4] ~ [c3,g3,c4] ~ [c3,d#3,g3,c4]@2 [g2,g3], ~@5 [c3,g3]@2 ~@9", // C5 C C5 Cm G C5
  AN: "[g2,d3,g3]@2 ~ [f#2,c#3] [f#2,c#3,f#3]@2 ~ [f2,c3] [f2,c3,f3]@2 e2 c#3 [c#3,f#3]@3 [g2,d3], ~@11 f#2@4 ~", // G5 F#5 F5 F#5 G5
  AO: "[g2,d3,g3]@2 ~ [f#2,c#3] [f#2,c#3]@2 ~@2 [f2,c3,f3]!4 ~@4, ~@3 f#3@3 ~@10", // G5 F#5 F5
})).s("gm_overdriven_guitar").gain(0.36).pan(0.1)

// chords · overdriven guitar · "Guitar 2" · soft notes
const overdriven_guitar_soft = note(`<
  ~@2 A B C D E F@2 G@2 H F@2 G@2 H ~ I J ~ K L M L N O P Q R O P Q R ~ S ~ T U V U V W X Y Z AA X Y Z AB ~@2 AC AD ~ AE
  X AC Z AE X Y Z AA X Y Z AA X Y Z AA X Y Z AA X Y Z AA ~@2
>`.pickRestart({
  A: "~@15 g3", B: "~ [c#3,g#3] ~ [g2,c#3] g3 ~@5 e2 ~ b3@2 ~@2", C: "e2 ~@2 [a#2,b2] ~@11 a#2", D: "~@13 b2 ~@2",
  E: "~@7 b2 ~@7 [f2,b2]", F: "[~@11 d3 ~@4 g3 ~@2 [c#3,d3] ~@2 g2 ~@5 f3 ~@2 b2, ~@15 d3@2 ~@15]/2",
  G: "[f3 ~@3 e3 ~@6 d3 ~@4 g3 ~@2 [c#3,d3] ~@2 g2 ~@5 f3 ~@2 b2, ~@15 d3@2 ~@15]/2", H: "f3 ~@3 e3 ~@10 [f2,b2]",
  I: "~@6 d4 ~@8 d3", J: "~@2 g3 ~@13", K: "~@3 [g1,g#1] ~@3 d3 ~@4 g3 ~@2 [c#3,d3], ~@11 d3@2 ~@3",
  L: "~@2 g2 ~@5 f3 ~@2 b2 f3 ~@3", M: "e3 ~@6 d3 ~@4 g3 ~@2 [c#3,d3], ~@11 d3@2 ~@3", N: "e3 ~@10 [f2,b2] ~@4",
  O: "~@12 g3@2 c#3 ~", P: "g3@3 ~@10 d4 ~@2", Q: "~ d#3@2 ~@5 f3@4 f3 ~@3", R: "f3 ~@2 f3 c4 ~@3 c4 ~@6 c#4",
  S: "~@8 e3 ~@4 e4 ~@2", T: "~@15 [g1,g#1,g2,g#2]", U: "~@3 d3 ~@4 g3 ~@2 [c#3,d3] ~@2 g2 ~, ~@7 d3@2 ~@7",
  V: "~@4 f3 ~@2 b2 f3 ~@3 e3 ~@3", W: "~@7 [f2,b2] ~@8", X: "~@8 g3@2 c#3 ~ g3@3 ~", Y: "~@9 d4 ~@3 d#3@2 ~",
  Z: "~@4 f3@4 f3 ~@3 f3 ~@2 f3", AA: "c4 ~@3 c4 ~@6 c#4 ~@4", AB: "c4 ~@3 c4 ~@3 c#4 ~@7", AC: "~@14 g4 ~",
  AD: "~@14 f3 ~", AE: "~@14 c4 ~",
})).s("gm_overdriven_guitar").gain(0.13).pan(0.1)

// other · overdriven guitar · "Lead Guitar"
const overdriven_guitar_2 = note("<~@27 A B@2 C@2 B@2 D ~@9 E F G H I F ~@12 E F J ~@9 E F G H I F G ~@2>".pickRestart({
  A: "~@8 d3 e3 [f3,f#3] d4 ~ c4 ~ b3", B: "[~ a3@3 [a#3,b3] ~@19 c3 d3 [d#3,e3] c4 ~ b3 ~ a3, ~@4 c4@15 ~@13]/2",
  C: "[~ g3@3 [g#3,a3,a#3] ~@19 d3 [d3,e3] [f3,f#3] d4 ~ c4 ~ b3, ~@4 b3@15 ~@13]/2", D: "~ g3@3 ~@12",
  E: "~@4 d3 e3 [f3,f#3] d4 ~ c4 ~ b3 ~ a3@3", F: "[a#3,b3] ~@15, c4@15 ~", G: "~@4 c3 d3 [d#3,e3] c4 ~ b3 ~ a3 ~ g3@3",
  H: "[g#3,a3,a#3] ~@15, b3@15 ~", I: "~@4 d3 [d3,e3] [f3,f#3] d4 ~ c4 ~ b3 ~ a3@3",
  J: "~@4 c3 d3 e3 c4 ~ b3 ~ a3 ~ g3@3",
})).s("gm_overdriven_guitar").gain(0.5).pan(0.4)

// other · overdriven guitar · "Lead Guitar" · soft notes
const overdriven_guitar_soft_2 = note("<~@29 A ~ B ~ C ~@12 D ~ E F G ~@13 D ~@11 D ~ E F G ~@2>".pickRestart({
  A: "~@4 [g3,g#3,a3,a#3,b3] ~@11", B: "~@4 [a2,f3,f#3,g3,g#3,a3,a#3] ~@3 f#3 ~@7",
  C: "~@3 [a#3,b3] [e3,f3,g3,g#3,a3] ~@11", D: "[g3,g#3,a3,a#3,b3] ~@15", E: "[a2,f3,f#3,g3,g#3,a3,a#3] ~@3 f#3 ~@11",
  F: "~@15 [a#3,b3]", G: "[e3,f3,g3,g#3,a3] ~@15",
})).s("gm_overdriven_guitar").gain(0.3).pan(0.4)

// chords · rock organ
const rock_organ = note(`<
  ~@26 A@5 B@4 ~@7 C D E F G H E F I ~@10 J K L M N K L M J K L M N K L M J K L M ~@2
>`.pickRestart({
  A: "[~@4 [g5,b5,d6]@16 [f#5,a5,d6]@15 ~ [f5,a5,c6]@16 [e5,g5,c6]@16 [g5,d6]@12]/5", // G D F C G5
  B: "[~@3 b5 [f#5,a5,d6]@15 ~ [f5,a5,c6]@16 [e5,g5,c6]@16 ~@12]/4", C: "[c#5,e5,a5]@2 [c5,e5,g5] [d5,f#5,a5]",
  D: "[g5,b5,d6]", E: "[f#5,a5,d6]@15 ~", F: "[f5,a5,c6]", G: "[e5,g5,c6]", H: "[g5,d6]@15 b5", I: "[e5,g5,c6] ~",
  J: "[g4,b4,d5]", K: "[f#4,a4,d5]@15 ~", L: "[f4,a4,c5]", M: "[e4,g4,c5]", N: "[g4,d5]@15 b4",
})).s("gm_rock_organ").gain(0.12).pan(0.8)

// chords · synth brass 1 · "Synth Brass"
const synth_brass_1 = note("<~ A B ~@17 C D ~@15 E ~@45>".pickRestart({
  A: "~@8 [d6,g6]!4 [c6,f6] ~ [c6,f6] ~", B: "[a5,d6] ~ [a5,d6] ~ [c6,f6]@4 ~@8",
  C: "~@4 [a5,d6]!4 [g5,c6] ~ [g5,c6] ~ [e5,a5] ~ [e5,a5] ~", D: "[g5,c6] ~@3",
  E: "[a5,d6]!4 [g5,c6] ~ [g5,c6] ~ [e5,a5] ~ [e5,a5] ~ [g5,c6]@4", // D5 C5 A5 C5
})).s("gm_synth_brass_1").gain(0.32).pan(0.2)

// other · pad poly · "Synth"
const pad_poly = note("<~@81 A@2>".pickRestart({
// … 109 more lines