Strudelify

The Who Triple Tracker, Part 1

The Who

KeyE majorTempo82 bpm
0:00/0:00
// The Who Triple Tracker, Part 1 — The Who
// 82 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 1 synth bass 1 (copy of ch 2 synth bass 1, 0.25 beats late); ch 11 lead 4 chiff (copy of ch 10 piano)
// note: Full arrangement: all 98 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(82/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 · synth bass 1
const bass = note("<A B C B@3 D E D@39 ~ F@2 G H I J K L M@3 N@13 O P N@19 Q R S T ~>".pickRestart({
  A: "~@2 e3 ~@3 d3 ~@3 g2 ~@3 e2 ~@3 a2 ~@3 a2 ~@7 d2 ~", B: "~@2 e3 ~@3 d3 ~@3 g2 ~@3 e2 ~@3 a2 ~@3 a2 ~@9",
  C: "~@2 e3 ~@3 d3 ~@3 g2 ~@3 e2 ~@3 a2 ~@3 a2 ~@3 a2 ~@3 a2 ~",
  D: "~@2 e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 e2 ~", E: "~@26 e2 ~@3 e2 ~",
  F: "[~@25 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 ~@2 [e4,b4] ~@3 [e4,a4]]/2", // E5 A5
  G: "~@3 [e4,b4] ~@3 [e4,a4] ~@24", H: "~@11 b4 ~@3 a4 ~@3 b4 ~@3 a4 ~ [e3,b3,e4,g#4]@7", I: "~@25 b3 ~@3 b3 ~@2",
  J: "~ b3 ~@3 b3 ~@3 b3 ~@3 b3 ~@3 b3 e3 ~ e3 ~ e3 ~@2 e3 ~ b2 ~ e3 ~ b2",
  K: "~ e3 ~ b2 ~ e3 ~ b2 ~ e3 ~@15 [e3,b3,e4,g#4]@7", L: "~@7 [d3,a3,d4,f#4]@6 [d3,a3,d4,e4]@8 ~@11",
  M: "[~@9 e3!16 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@3 e3@3 e3@2 e3@4 e3@4 ~@2 e2 ~ d2 ~ d3@2 ~@2 e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 e2, ~@9 [d3,a3,d4,a4]@8 [b3,e4,g#4]@8 ~@24 [f#3,a3,d4,a4]@8 [d3,g3,c#4,g4]@6 a1 ~ [e3,b3,e4,g#4]@31]/3", // D5 E D G E
  N: "~@3 e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 e2", O: "~@3 e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@8",
  P: "~@27 e2 ~@3 e2", Q: "~@3 e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 [d2,d3] ~@3 [d2,d3]",
  R: "~@3 [d2,d3] ~@3 [d2,d3] ~@3 [d2,d3] ~@3 [d2,d3] ~@3 [d2,d3] ~@3 [d2,d3] ~@3 [a1,a2] ~@3 [a1,a2]", // D A
  S: "~@3 [a1,a2] ~@3 [a1,a2] ~@3 [a1,a2] ~@3 [a1,a2] ~@3 [a1,a2] ~@3 [a1,a2] ~@3 [a1,a2] ~@3 [a1,a2]", // A
  T: "~@3 [a1,a2] ~@3 [a1,a2] ~@3 [a1,a2] ~@3 [a1,a2] ~@3 [a1,a2] ~@3 [a1,a2] ~ [e1,e2,e3]@2 ~@5", // A E
})).s("gm_synth_bass_1").gain(0.56).pan(0)

// chords · electric guitar clean
const electric_guitar_clean = note("<A@2 B C D E ~@92>".pickRestart({
  A: "[~@24 c#5@13 ~@3 d5@4 c5@3 ~@9 d5@2 b4@2 b4@2 a4@2]/2",
  B: "g4@2 ~ d4@8 ~@15 [d4,b4,d5]@2 ~ [d4,b4,d5]@2 ~, ~@3 e4@5 ~@24", // G
  C: "[d4,b4,d5]@2 ~ [d4,b4,d5]@2 [d4,b4,d5]@2 ~ [d4,b4,d5]@16 e5@2 a#4 b4 d5@2 e5@2", // G
  D: "g4 ~ [d4,e4]@8 ~@10 e3@3 ~ g3@3 ~ a3@3 ~", // Dsus2
  E: "a#3@8 [d#2,d#3]@2 ~@10 [d4,e4,a4,d5]@5 ~ [c#4,e4,a4,c#5]@5 ~, ~@10 a3 ~@2 a3 ~@2", // D# Dsus2 A
})).s("gm_electric_guitar_clean").gain(0.64)

// other · distortion guitar
const distortion_guitar = note(`<
  ~@13 A B C D C D C D C ~@8 D C D C D C D C ~@5 E F ~@13 G@3 H ~@12 G@3 I@2 ~@5 J K@2 L ~@4 M@5 ~
>`.pickRestart({
  A: "~@24 d3@5 [b2,c3,c#3] [a2,a#2] [f#2,g2,g#2]", B: "e2@4 e2 ~@2 e2 d2@4 d2 d3@3, f2 ~@9 e3@7 ~@15",
  C: "c#2@4 c#2 ~@2 c2!4 d2!4 e2, ~@10 c#3@7 ~@15", D: "e2@4 e2 ~@2 e2 d2@4 d2 d3@3, ~@10 e3@7 ~@15",
  E: "~@8 b2 a2 b2 a2 b2 d3 a2 g2", F: "e2 ~", G: "~@9 e3@6 [e2,b2]@2 [d2,a2]@14 ~",
  H: "~@9 e3@6 [e2,b2]@2 [d2,a2]@8 ~@7", I: "[~@9 e3@6 [e2,b2]@2 [d2,a2]@6 e2!2 e2@24 ~@15]/2",
  J: "~@17 e5@2 e5@2 e5@2 e5@2 e5@7", K: "[~@17 d5@2 b4@2 a4@2 g4@2 d4@4 d#4@28 ~@7]/2", L: "~@9 d#2@8 d#2 ~@14",
  M: "[~ e5@3 e5@2 e5@2 ~ e5@41 ~@7 d3@32 a2@64 e3@7]/5",
})).s("gm_distortion_guitar").gain(0.72)

// other · distortion guitar · soft notes
const distortion_guitar_soft = note("<~@39 A ~ B ~@3 C D@3 ~@28 E ~@20>".pickRestart({
  A: "~@18 [g5,b5]@2 [f#5,a5]@2 [e5,g#5] ~ [g5,b5]@2 [f#5,a5]@2 [e5,g#5] ~@3", // G F#m E G F#m E
  B: "[e5,a5]@2 ~@2 [e5,g#5]@4 ~@2 [e5,a5]@3 ~ [e5,g#5]@4 ~@14", C: "~@24 [g5,b5]@2 [f#5,a5]@2 [e5,g#5] ~ [b4,e5]@2",
  D: "[[b3,e4]@15 ~ b3@20 [b4,f#5]@52 ~@8, ~@2 a3@9 ~, ~@8 d4@9 ~@31]/3", E: "~@22 e2 ~@9",
})).s("gm_distortion_guitar").gain(0.4)

// other · synth bass 1 · Amaj7 Emaj7 Bmaj7 Amaj7
const synth_bass_1 = note(`<
  ~@4
  [~@24 b4 ~@7]
  [~@24 a4 [g#4,a4] [f4,f#4,g4] [d#4,e4] [c4,c#4,d4] [a#3,b3] [g#3,a3] ~]
  [e3@9 ~@23]
  ~@6
  [~@24 e2@4 e2 [b3,c4,c#4] [g#3,a3,a#3] [f3,f#3,g3]]
  ~@84
>`).s("gm_synth_bass_1").gain(0.16)

// bass · slap bass 2
const bass_2 = note("<~@14 A B A C D E F G H ~@7 A B A C D E F G ~@49 I ~@10>".pickRestart({
  A: "e2@4 ~@2 e3 e2 d2 ~@5 d3 d2",
  B: "c#2 ~@3 c#3!3 ~ [a2,c3] [g2,b2] [f#2,a2] [e2,g2] [d2,e2] [c#2,a2] [b1,e2] [a1,d2]", // Am G F#m Em Dsus2 F#m E5 D5
  C: "c#2 ~@3 [c#2,c#3] c#3 [c#2,c#3] ~ [a2,c3] [g2,b2] [f#2,a2] [e2,g2] [d2,e2] [c#2,a2] [b1,e2] [a1,d2]", // C# Am G F#m Em Dsus2 F#m E5 …
  D: "e2@8 ~@4 e2@2 e1@2 d2@2 ~@9 d3@2 d2@2 ~",
  E: "c#2 ~@2 c#1 [c#1,c#2,c#3] [c#1,c#3] [d1,c#2,c#3] ~ [a2,c3] [g2,b2] [f#2,a2] [e2,g2] [d2,e2] [c#2,a2] [b1,e2] [a1,d2]", // C# Dmaj7 Am G F#m Em Dsus2 F#m …
  F: "e2@4 ~@2 e1 b0 d2 ~@5 d3 d2", G: "c#2 ~@3 c#2 ~@3 c2 d2 ~ d1 c#1 ~@2 d2", H: "e2 ~@15",
  I: "~@19 b2 ~ d3 ~ e3@8 ~",
})).s("gm_slap_bass_2").gain(0.8)

// other · guitar harmonics
const guitar_harmonics = note("<~@13 A B C D C D C D C ~@8 B C D C D C D C ~@57 E F ~>".pickRestart({
  A: "~@3 e4", B: "g4 ~ f#4 ~", C: "e4 ~ e4 d4", D: "g#4 ~ f#4 ~", E: "~@25 c#3@7", F: "~ c#3@8 c#3@8 ~@15",
})).s("gm_guitar_harmonics").gain(0.4)

// chords · clavinet
const clavinet = note("<~@50 A@3 B C D@3 E ~@6 F@7 G@2 ~@24>".pickRestart({
  A: "[~@10 e3!15 e3@2 d3@2 b2@2 a2@2 g#2 ~@9 e5 ~@7 e5 ~@9 a4 b4 a4 g4 e4@2 a4 b4 a4 g4 e4 d4 b3@2 a3@2 g3@2 d#4@2 ~@4 g3@2 d3@2 e3!6 [d3,e3], ~@9 d3@16 ~@10 e3@35 ~@13 a3@4 ~@9, ~@57 b3@8 ~@16 b3@4 ~@11, ~@59 d4@8 ~@29, ~@60 e4@5 ~@31]/3", // Dsus2
  B: "e3!8 ~@2 e3!6 [d3,e3] e3!5 ~ e3!2 ~@4 a3@2 ~, ~ g#3@2 ~@6 f#3@2 ~@21", // Dsus2
  C: "~ g#3 ~@3 a3 ~@3 g#3 ~@3 e3 d3 b2 g3 e3 a3 d3 e3 d3 g3 f#3 b2!2 e3 d3 e3 d3 f#3 a3",
  D: "[g3 a3 b3 e3 d3 e3 b2 a2 b2 d3 e3 g2@2 ~@4 b4 ~ a4 ~ g4 e4 ~@18 d5 ~ c#5 b4 ~ a4 g4 d4 ~@4 g#4@4 ~@10 [c#4,e4,a4]@2 ~@4 a2 [e3,a3,c#4,e4,a4] [e2,b2,e3,g#3,b3] [a2,e4] [e3,a3,c#4,e4] a4 ~@2 e5 d5 b4 ~ [e2,d5] a4 [e2,g4] ~ a4 g4 d4 ~ c4 d4 b3, ~@13 e2@12 d4@6 d3@4 c#4@4 a2@8 ~@3 b2@4 ~@3 a2@2 ~@3 [b2,e3]@2 ~ a2@2 ~@3 [b2,e3]@2 ~@24, ~@27 b3@5 b2@4 a3@4 e2@8 ~ e2@4 ~@8 e2@2 ~@6 e2@2 ~@25, ~@29 g3@4 a4@4 e3@8 ~@6 e3@4 ~@3 [e3,a3]@2 a4@2 ~@2 e4@2 ~@6 e4@2 ~@22, ~@30 e3@4 e4@4 c#3@8 ~@6 b3@4 ~@3 [c#4,e4]@2 ~@2 [g#3,b3]@2 ~ [e3,a3]@2 ~@3 [g#3,b3]@2 ~@23]/3", // A E A5 A E7 Em E5 A5 …
  E: "a3 e3@31",
  F: "[~@31 f#4@2 f#4@6 g#4@2 g#4@6 c#4@2 c#4@6 b3@2 ~@2 c#4@24 ~@12 f#4@2 f#4@6 g#4@2 g#4@6 c#4@2 c#4@6 d#4@2 ~@8 e4@24 ~@6 f#4@2 f#4@6 g#4@2 g#4@6 b4@2 b4@6 b4@2 ~@8 c#5@24 ~@7, ~@57 b3@8 ~@56 d#4@5 d#4@8 ~@53 c#5@6 ~@31, ~@123 e4@6 ~@56 b4@5 b4@8 ~@26]/7",
  G: "[~@27 f#3@4 ~, ~@25 c#5@5 c#5@8 ~@3 c#4@6 c#4@8 ~@9, ~@7 b4@2 e4@2 b3@2 e3@2 ~, ~@33 f#4@5 f#4@8 ~@3 f#3@5 ~@10]/2",
})).s("gm_clavinet").gain(0.64)

// chords · piano
const piano = note("<~@74 A@4 ~@20>".pickRestart({
  A: "[~@49 [e2,g#2]@4 ~@28 [g#3,b3]@4 ~@28 [g#3,b3]@4 ~@11, ~@25 b4@3 [b2,e3]@3 [g#3,b3]@3 [e4,g#4]@3 [e2,g#2,b4]@3 [b2,e3]@3 [g#3,b3]@3 [e4,g#4]@4 ~@7 e6@3 [e4,g#4]@3 [b4,e5]@3 [g#5,b5]@3 [g#3,b3,e6]@3 [e4,g#4]@3 [b4,e5]@3 [g#5,b5]@4 ~@7 e6@3 [e4,g#4]@3 [b4,e5]@3 [g#5,b5]@3 [g#3,b3,e6]@3 [e4,g#4]@3 [b4,e5]@3 [g#5,b5]@4 ~@14, ~@26 [e4,g#4]@3 [e2,g#2,b4]@3 [b2,e3]@3 [g#3,b3]@3 [e4,g#4]@3 [e2,g#2,b4]@3 [b2,e3]@3 [g#3,b3]@4 ~@7 [g#5,b5]@3 [g#3,b3,e6]@3 [e4,g#4]@3 [b4,e5]@3 [g#5,b5]@3 [g#3,b3,e6]@3 [e4,g#4]@3 [b4,e5]@4 ~@7 [g#5,b5]@3 [g#3,b3,e6]@3 [e4,g#4]@3 [b4,e5]@3 [g#5,b5]@3 [g#3,b3,e6]@3 [e4,g#4]@3 [b4,e5]@4 ~@13, ~@27 [g#3,b3]@3 [e4,g#4]@3 [e2,g#2,b4]@3 [b2,e3]@3 [g#3,b3]@3 [e4,g#4]@3 [e2,g#2,b4]@3 [b2,e3]@4 ~@7 [b4,e5]@3 [g#5,b5]@3 [g#3,b3,e6]@3 [e4,g#4]@3 [b4,e5]@3 [g#5,b5]@3 [g#3,b3,e6]@3 [e4,g#4]@4 ~@7 [b4,e5]@3 [g#5,b5]@3 [g#3,b3,e6]@3 [e4,g#4]@3 [b4,e5]@3 [g#5,b5]@3 [g#3,b3,e6]@3 [e4,g#4]@4 ~@12]/4", // E G#m E5 G#m E E5 G#m E …
})).s("gm_piano").gain(0.64).pan(0.9)

// chords · piano
const piano_2 = note("<~@72 A B C@4 ~ D@8 E@3 ~ F@5 ~@2>".pickRestart({
  A: "~@25 [e3,g#3,c#4]@4 ~ [e3,g#3,c#4]@2", // C#m
  B: "~ [c#3,f#3]@4 ~@4 [g#2,c#3,g#3,c#4]@4 ~@2 [g#2,c#3,g#3,c#4]@2 [d2,b2]@4 ~@2 [d2,b2]@2 [e2,b2]@7", // F#5 C#5 G E5
  C: "~@15 [b2,e4,g#4,b4] ~ [d3,d4,f#4,a4,d5]@8 ~@7", // E D
  D: "[~@15 a4@2 ~ a4@3 ~@4 e5@20 [e4,e5]@4 e5@24 ~@12 b3@4 e4@48 e4@2 e4@2 e4@2 e4@2 [d4,e4]@2 e4@2 [a3,e4]@2 e4@2 ~@32 e5@64 ~@7, ~ d4@2 e4@4 e4@2 e4@2 e4 g4 a4 g4@3 g4@4 g4@52 e5@12 d4@60 ~@2 d4@32 g5@64 ~@13, ~@2 b3@20 a4 b4@54 d5@12 [e3,b3,g#4]@64 ~ e5@2 e5@2 e5@2 e5@2 e5@2 e5@2 e5@2 e5@9 a5@64 ~@15, ~@4 d4@2 d4@2 d4@2 d4@39 e2@36 a2@64 ~@2 [g3,a3]@30 e5@2 d5@64 ~@9, ~@5 g#4@19 a4@25 [e3,e4]@32 a4@64 ~@8 e4@2 e4@2 e4@2 e4@2 e4@2 e4@2 e4@2 e4@64 ~@25]/8", // E Dsus2 A5 E Gsus2 E
  E: "[~@23 e3@64 ~@9]/3",
  F: "[~@71 [e3,g#3,b3,e4]@64 ~@25, ~@17 e5@6 g4@64 ~@73, ~@9 d5@3 d4@32 ~@36, ~@19 b4@2 b4@4 e2@64 ~@71, ~@20 a4@2 a4@3 [e3,e4]@40 e5@64 ~@31]/5", // E
})).s("gm_piano").gain(0.8)

// chords · piano
const piano_3 = note(`<
  A B@3 C B D E F E F E F G H I J K L M N O P@2 Q R S P@2 T U V J H@3 J H W X W Y Z AA W AB AC ~@11 AD@3 AE ~@10 AF@2
  AG@3 AH AI AJ AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX@2 ~
>`.pickRestart({
  A: "[b1,e3,g3,b3] ~@7 e2 ~@15 e2 ~@7", B: "~ e2 ~ e2", C: "~@8 e2 ~@15 e2 ~@7",
  D: "a#2 ~ a#2!7 ~ a#2!11 ~ a#2!10, ~ e2 ~ e2", E: "a#2!5 ~ a#2!11 ~ a#2!7 ~ a#2!6, ~ e2 ~ e2",
  F: "a#2 ~ a#2!6 [e2,a#2] ~ a#2!11 ~ a#2!2 [e2,a#2] a#2!7", G: "a#2!5 ~ a#2!11 ~ a#2!7 ~ a#2!6, ~ e2 ~ e2, ~@14 e3 ~",
  H: "~ b1@2 ~@5 [b1,d2,e3,b3]@2 ~@7 b1@2 ~@5 [b1,d2,e3,b3]@2 ~@6, [c2,e3,b3] ~@3 e2@4 [c2,e3,b3] ~@3 e2@4", // E7 Cmaj7
  I: "~ b1@2 ~@5 [b1,d2,e3,b3]@2 ~@8 a2@2 a2@2 a2@2 [b1,d2,a2,e3,b3]@2 a2@2 a2@2 a2@2, [c2,e3,b3] ~@3 e2@4 [c2,a2,e3,b3] ~@3 e2@4, ~@17 b1@2 ~@13", // E7 Bm7 Cmaj7 Am
  J: "~ b1@2 ~@5 [b1,d2,e2,e3,b3]@2 ~@7 b1@2 ~@5 [b1,d2,e2,e3,b3]@2 ~@6, [c2,e3,b3] ~@7 [c2,e3,b3] ~@7", // E7 Cmaj7
  K: "~ b1@2 ~@5 [b1,d2,e3,b3]@2 ~@7 b1@2 d2!2 ~ d2 ~ [b1,d2,e3,b3]@2 d2 ~ d2 ~ d2 b3, [c2,e3,b3] ~@3 e2@4 [c2,d2,e3,b3] ~@3 e2@4", // E7 Cmaj7
  L: "~ b1@2 ~@5 [b1,d2,e3,b3]@2 ~@7 b1@2 ~@5 [b1,e2,e3]@2 [b1,d2,e2,b3]@2 ~ [b1,d2,e2,b3]@2 ~, [c2,e3,b3] ~@3 e2@4 [c2,e3,b3] ~@7", // E7 E5 E7 Cmaj7
  M: "~ b1@2 ~ [b1,d2,e3,b3]@2 ~@2 e2@8 b1!2 ~ b1!3 ~ b1!3 ~ b1!3 ~ b1, c2 ~@3 b1 ~@3 [c2,e3,b3] ~@3 e2@4, ~@12 [c2,d2,e3,b3] ~@3", // E7 Cmaj7
  N: "b1 b1@2 ~@5 b1 b1@2 ~@5 b1 b1@2 ~@5 [b1,d2,e2,e3,b3]@2 ~@6, [c2,d2,e2,e3,b3] ~@3 [c2,d2,e2,e3,b3] ~@3 [c2,d2,e2,e3,b3] ~@7", // E7 Cmaj7
  O: "b1 b1@2 ~@5 b1 b1@2 ~@5 b1 b1@2 ~@5 [b1,d2,e3,b3]@2 ~@6, [c2,d2,e2,e3,b3] ~@3 e2@4 ~@4 e2@4, ~@4 [c2,d2,e3,b3] ~@3 [c2,d2,e2,e3,b3] ~@7", // E7 Cmaj7
  P: "[b1,e3,a3] ~ d2 ~ b1!2 d2 ~ b1 ~ d2 ~ [b1,c2,e3,a3] b1 d2 ~", // Esus4 Am
  Q: "[b1,e3,a3]@2 ~@2 d2@2 ~ [e3,a3]!2 ~ b1@2 d2@2 ~@2 b1@2 ~@2 d2@2 ~@2 [b1,c2,e3,a3]@2 b1@2 d2@2 ~@2, ~@4 b1 ~@11", // Esus4 A5 Am
  R: "b1 ~ d2 ~ [b1,e3,g3] b1 [d2,e3,g3] ~ b1 ~ d2 ~ [b1,c2] b1 d2 e3", // Em Em7 Cmaj7
  S: "[b1,e3,a3] ~ d2 ~ b1!2 d2 ~ b1 ~ d2 ~ [b1,c2,e3] b1 d2 ~, ~@26 e3 ~@5", // Esus4 Cmaj7
  T: "[b1,e3,a3]@2 ~@2 [e3,a3] ~@3 b1@2 b1@2 d2@2 ~@2 b1@2 ~@2 d2@2 ~@2 [b1,c2,e3,a3]@2 d2!2 [d2,e2] d2 [d2,a#2,e3,f#3,g3] d2, ~@4 d2@2 ~@14 e2 ~@5 b1@2 ~@2 e2@2", // Esus4 A5 Am Dsus2 Em7b5
  U: "[b1,d2,e2,d#3,e3,f3,g3,a3,b3] ~@3 [b1,d2] ~@3 [b1,d2,e2,a2,b2,c3,d#3,e3,f3,g3,a3,b3] [a2,b2,c3] ~ [g2,a2,b2] [b1,d2,g2,a2,b2] ~ [f2,g2,a2,b2,c3]!2, ~ e2 ~ e2", // Bm7b5 Bm Am G F
  V: "[b1,d2,e2,d#3,e3,f3,g3,a3,b3]@2 ~@6 [b1,d2]@2 ~@6 d2!2 ~ d2!2 ~ d2!2 ~ d2!2 ~ [b1,d2] ~ [d2,b3] ~, ~@4 e2@4 [b1,e2,d#3,e3,f3,g3,a3,b3] ~@3 e2@4, ~@12 b1 ~@3", // Bm7b5 Bm G
  W: "[b1,a#2,e3,a3]@2 a#2!6 [b1,a#2]@2 a#2!10 d2@2 a#2!10, ~@4 d2@2 ~@4 b1@2 d2@2 ~@2 b1@2 ~@2 a#2 ~@3 [b1,c2,e3,a3]@2 b1@2 d2@2 ~@2", // Esus4 Bmaj7 Am
  X: "a#2!4 [d2,a#2]@2 a#2!10 [b1,a#2]@2 a#2!6 [b1,c2,a#2,e3,a3]@2 a#2!6, [b1,e3,a3]@2 ~@2 a3 ~@3 b1@2 b1@2 d2@2 ~@6 d2@2 ~@4 b1@2 d2@2 ~@2", // Gm Bmaj7 Am Esus4
  Y: "a#2!4 [d2,a#2]@2 a#2!10 [b1,a#2]@2 a#2!6 [b1,c2,a#2]@2 a#2!6, b1@2 ~@6 [b1,e3]@2 b1@2 [d2,e3]@2 ~@6 d2@2 ~@2 a3 ~ b1@2 d2@2 ~@2", // Gm Bmaj7 E5 Dsus2
  Z: "[b1,a#2,e3,a3]@2 a#2!6 [b1,a#2]@2 a#2!10 d2@2 a#2!7 [a#2,a3]!2 a#2, ~@4 d2@2 ~@4 b1@2 d2@2 ~@2 b1@2 ~@2 a#2 ~@3 [b1,c2,e3]@2 b1@2 d2@2 ~@2", // Esus4 Bmaj7 A#maj7 Cmaj7
  AA: "a#2!4 [d2,a#2]@2 a#2!10 [b1,a#2]@2 a#2!6 [b1,c2,a#2,e3,a3]@2 a#2!6, [b1,e3,a3] ~@3 b1!2 d2 ~@3 d2 ~@2 b1 d2 ~", // Gm Bmaj7 Am Esus4
  AB: "a#2!4 [d2,a#2]@2 a#2!4 [a#2,e3,a3] a#2!3 [a#2,e3,a3] a#2 [b1,a#2]@2 a#2!2 [e2,a#2] a#2!3 [b1,c2,a#2,e3,a3]@2 a#2 [d2,a#2] [e2,a#2] [d2,a#2] [a#2,e3,f#3,g3] [d2,a#2], [b1,e3,a3]@2 ~@2 [e3,a3] ~@3 b1@2 b1@2 d2@2 ~@6 d2@2 ~@4 b1@2 ~@4", // Gm A Bmaj7 Edim Am Gm Edim Gm …
  AC: "[b1,d2,e2,e3,g3,b3] ~@15", // Em7
  AD: "~@2 b1@2 ~@5 [b1,d2,e2,e3,b3]@2 ~@7 b1@2 ~@5 [b1,d2,e2,e3,b3]@2 ~@5, ~ [c2,e3,b3]@2 ~@14 [c2,e3,b3]@2 ~@13", // E7 Cmaj7
  AE: "~@2 b1@2 ~@5 [b1,d2,e2,e3,b3]@2 ~@6 [c2,b3]@2 ~@6 [b1,d2,e2,e3,b3]@2 ~@5, ~ [c2,e3,b3]@2 ~@22 [f3,g3]@4 ~@3", // E7 Cmaj7 E7 Cmaj7 Fsus2
  AF: "[~@25 a2@2 ~ a2@2 ~ a2@2 a2@2 ~ a2@2 ~ a2@2 a2@2 ~ a2@2 ~ a2@2 a2@2 ~ a2@2 ~ a2@2 b1 b1@3 ~@3, ~@57 c2@4 ~@3, ~@57 [e3,b3]@2 ~@5]/2", // E5
  AG: "~ [b1,d2,e2,e3,b3]@2 ~@7 b1@2 ~@5 [b1,d2,e2,e3,b3]@2 ~@7 b1@2 ~@4, ~@9 [c2,e3,b3]@2 ~@14 [c2,e3,b3]@2 ~@5", // E7 Cmaj7
  AH: "~ [b1,d2,e2,e3,b3]@2 ~@6 [c2,b3]@2 ~@6 [b1,d2,e2,e3,b3]@2 ~@6 [b1,a#2,e3,a3]@2 a#2!5, ~@25 [e2,f3,g3]@4 ~@3", // E7 Cmaj7 E7 Esus4 Em
  AI: "a#2!2 ~ a#2!11 ~ a#2!15 ~ a#2", AJ: "a#2!10 ~ a#2!7 ~ a#2!7 ~ a#2!5",
  AK: "a#2 [e2,a#2] ~ a#2!11 ~ a#2!2 [e2,a#2] a#2!12 ~ a#2, ~ e2@4 ~@4 e2@4 ~@3", // Edim
  AL: "a#2 [e2,a#2] a#2!8 ~ a#2!6 [e2,a#2] ~ a#2!7 ~ a#2!5, ~ e2@4 ~@4 e2@4 ~@3", // Edim
  AM: "a#2 [e2,a#2] e2 a#2!11 ~ a#2!2 [e2,a#2]!2 a#2!11 ~ a#2", // Edim
  AN: "a#2 [e2,a#2] a#2!8 ~ a#2!6 [e2,a#2] ~ a#2!4 [a#2,f#3,g3] a#2 ~@7, ~ e2@4 ~@4 e2@4 ~@3", // Edim D#
  AO: "~ e2 ~ [b1,d2]@2 [e2,e3,a3]@2 ~@2 b1@2 ~@2 d2@2 ~@2 e2 ~ b1@2 d2@2 ~@2 [b1,e3,a3]@2 ~@2 d2@2 ~, ~ b1@2 ~@14 [b1,c2,e3,a3]@2 ~@13, ~@2 e2@3 ~@13 e2@5 ~@6 a3 ~@2", // Bm A5 Esus4 Am
  AP: "~ e2 ~ b1@2 [e3,a3]@4 b1@2 ~@2 a3@4 e2 ~ b1@2 d2@2 ~@2 [b1,e3,a3]@2 ~@2 d2@2 ~, ~ a3@4 ~@22 a3@4 ~, ~ b1@2 ~@2 d2@2 ~@6 d2@2 ~@2 [b1,c2,e3,a3]@2 ~@13, ~@2 e2@8 ~@8 e2@5 ~@9", // A5 Esus4 Am
  AQ: "~ e2!2 b1@2 [e3,a3]@4 a3@4 a3@4 e2!2 b1@2 d2@2 ~@2 b1@2 ~@2 [d2,a3]@3, ~ b1@2 ~@2 d2@2 ~@2 b1@2 ~@2 d2@2 ~@2 [b1,c2,e3,a3]@2 ~@2 a3@4 ~@7, ~@23 e3@4 ~@5", // A5 D5 Am
  AR: "~ e2 ~ b1@2 [d2,e3]@2 ~@2 a3@4 a3@4 [e2,a3] ~ b1@2 d2@2 ~@2 [b1,e3,a3]@2 d2!2 [b1,d2,e3,a3]@2 ~, ~ a3@4 ~@27, ~ [b1,e3]@2 ~@6 b1@2 ~@6 [b1,c2]@2 ~@8 b1@2 ~@3, ~@2 e2@8 ~@3 d2@2 ~@3 e2@5 ~@9", // Dsus2 A5 Esus4 Bm7 E5 Cmaj7
  AS: "~ e2 ~ b1@2 d2@2 ~@2 b1@2 ~@2 d2@2 ~@2 e2 ~ b1@2 ~ a3!2 ~ [b1,e3,a3]@2 ~@2 d2@2 ~, ~ b1@2 ~@14 [b1,c2,e3]@2 ~@2 d2@2 ~@9, ~@2 e2@8 ~@8 e2@5 ~@9", // Esus4 Cmaj7
  AT: "~ e2 ~ b1@2 d2@2 ~@2 b1@2 ~@2 d2@2 ~@2 e2 ~ b1@2 d2@2 ~@2 [b1,e3,a3]@2 ~@2 d2@2 ~, ~ b1@2 ~@14 [b1,c2,e3,a3]@2 ~@13, ~@2 e2@8 ~@8 e2@5 ~@9", // Esus4 Am
  AU: "~ e2 ~ b1@2 d2@2 ~@2 b1@2 ~@2 d2@2 ~@2 e2 ~ b1@2 d2@2 ~@2 [b1,e3,a3]@2 ~@2 [e3,a3] ~@2, ~ b1@2 ~@14 [b1,c2,e3,a3]@2 ~@13, ~@2 e2@8 ~@8 e2@5 ~@6 d2@2 ~", // Esus4 A5 Am
  AV: "~ e2 ~ [e3,a3] ~ d2@2 [e3,a3] ~ b1@2 ~@2 d2@2 ~@2 e2 ~@2 d2 e2 d2 [a#2,e3,f#3,g3] d2 [b1,e3,a3]@2 d2!2 [b1,d2,e3,a3]@2 ~, ~ b1@2 b1@2 ~@12 [b1,c2,e3,a3]@2 b1@2 ~@6 b1@2 ~@3, ~@2 e2@8 ~@3 e2 ~@4 e2@3 ~@11", // A5 Edim Esus4 Bm7 Am
  AW: "~ b1@2 b1@2 d2@2 ~@2 b1@2 ~@2 d2@2 ~@2 [b1,c2,e3]@2 b1@2 ~ a3!2 ~ [b1,e3,a3]@2 ~@2 d2@2 ~, ~@21 d2@2 ~@9", // Cmaj7 Esus4
  AX: "[~ b1@2 b1@2 d2@2 ~@2 b1@2 ~@2 d2@2 ~@2 [b1,c2,e3,a3]@2 b1@2 d2@2 ~@2 [b1,d2,e3,a3]@2 b1@2 e2@2 b1@2 [b1,d2,e3,a3]@2 b1@2 e2@2 b1@2 [b1,d2,e3,a3]@2 b1@2 e2@2 b1@2 [b1,d2,e3,a3]@2 b1@2 [b1,d2]@2 ~@2 [b1,d2,e2,e3,a3]@2 ~@5]/2", // Am Bm7 Bm Bm7
})).s("gm_piano").gain(0.72)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@13 A B@3 C B@2 ~@2 D@7 E ~@2 B@6 F G F@2 H F@2 I ~@12 J K L M ~@11 N@2 O@2 ~@8 P Q R@2 S T R@2 U T V W ~
>`.pickRestart({
  A: "~@14 b1 ~", B: "d2 ~@7 d2 ~@7", C: "d2 ~@15",
  D: "a#2@2 ~@2 a#2@2 ~@2 a#2@2 a#2@2 a#2@2 ~@2 a#2@2 ~ a#2@2 ~@3 a#2@2 a#2@2 a#2@2 e2@2",
  E: "a#2@2 ~@2 a#2@2 ~@2 a#2@2 a#2@2 a#2@2 ~@2 a#2@2 ~@2 b1 ~@3 a#2@2 a#2@2 a#2@2 b1 ~, ~@19 a#2@2 ~@7 b1 ~@3",
  F: "~@15 e2", G: "~@3 a3 ~@26 e2@2", H: "~@28 a3 ~ e2@2", I: "~@20 b1 ~@7 b1 ~ b1 ~",
  J: "~ d2@2 ~@14 d2@2 ~@4 d2@2 ~@7, ~ a1@4 ~@3", K: "~ d2@2 ~@14 d2@2 ~@4 d2@2 ~@7",
  L: "~ d2@2 ~@14 d2@2 ~@4 d2!2 ~@7", M: "~ d2@2 ~@18 d2!3 ~@8",
  N: "[~@25 d2@2 ~@14 d2@2 ~@14 d2@2 ~@5, ~@7 a1@4 ~@5]/2", O: "~@9 d2@2 ~@14 d2@2 ~@5", P: "~@23 e3 ~@8",
  Q: "~ a#2@2 a#2@2 a#2@2 b1@2 a#2@2 ~ a#2@2 ~@3 a#2@2 a#2@2 a#2@2 e2@2 a#2@2 ~ a3 a#2@2 ~",
  R: "~ a#2@2 a#2@2 a#2@2 ~@2 a#2@2 ~ a#2@2 ~@3 a#2@2 a#2@2 a#2@2 e2@2 a#2@2 ~@2 a#2@2 ~",
  S: "~ [d2,a#2]@2 [d2,a#2]@2 a#2@2 ~@2 [d2,a#2]@2 ~ a#2@2 ~@3 a#2@2 a#2@2 a#2@2 e2@2 a#2@2 ~@2 a#2@2 ~, ~@11 d2@2 ~@19", // Gm
  T: "~ a#2@2 a#2@2 a#2@2 ~@2 a#2@2 ~ a#2@2 ~@3 a#2@2 a#2@2 a#2@2 e2@2 a#2@2 ~@2 a#2@2 ~, ~@21 a3 ~@10",
  U: "~ a#2@2 a#2@2 a#2@2 ~@2 a#2@2 ~@2 b1 ~@3 a#2@2 a#2@2 a#2@2 b1 ~ a#2@2 ~@2 a#2@2 ~, ~@12 a#2@2 ~@7 b1 ~@10",
  V: "~ a#2@2 a#2@2 a#2@2 ~@2 a#2@2 ~ a#2@2 ~@3 a#2@2 a#2@2 a#2@2 e2@2 ~@7", W: "~@23 e2@2 ~@7",
})).s("gm_piano").gain(0.4)

// drums · china
const china = s("cr").struct("<~@33 [~ x] ~@61 [~@25 x ~@6] [~ x ~@7 x ~@7 x ~@14] ~>").gain(0.8).pan(1)

// drums · bongos
const bongos = s("bongo:18").struct("<~@15 A ~ B ~ A ~@11 B ~ B ~ A ~@62>".pickRestart({
  A: "x", B: "x ~@2 x ~@12",
})).gain(2.1).pan(1)

// drums · congas
const congas = s("conga:13").struct("<~@21 [~ x ~@6] ~@15 [~ x ~@6] ~@41 [~@19 x ~@12] ~@18>").gain(2.56).pan(1)

// drums · congas
const congas_2 = s("conga:33").struct(`<
  ~@14 A B C D E F G H ~ I J K ~ L J ~ M N O P Q R S T ~ U J K ~ V J ~@16 W ~@17 X ~ Y ~ Z ~ AA ~ Z ~ AA ~ Z ~@2 AB Z AC
  ~
>`.pickRestart({
  A: "~@7 x ~@4 x ~ x!2", B: "~@2 x ~@3 x ~@3 x ~@2 x ~@10 x ~ x ~@5", C: "~@7 x ~ x!3 ~ x!3", D: "~ x ~@2 x ~ x!2 ~@8",
  E: "~@14 x ~ x ~ x ~@7 x ~@2 x ~@2", F: "~ x ~ x!5 ~@8", G: "x ~@6 x ~ x ~@4 x ~", H: "~@4 x ~ x ~ x ~@4 x ~ x",
  I: "~@9 x ~@3 x ~ x", J: "x", K: "~@13 x ~ x", L: "~@13 x!3", M: "~@6 x ~@2 x!2 ~@5", N: "~ x ~@2 x!3 ~@9",
// … 55 more lines

More by The Who