Strudelify
Do It Again cover art

1972 · Can't Buy A Thrill

Do It Again

Steely Dan

KeyG majorTempo130 bpm
0:00/0:00
// Do It Again — Steely Dan
// 130 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 7 "Organ" rock organ (copy of ch 5 "Organ" rock organ, 0.3 beats late)
// note: Full arrangement: all 184 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/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, A@4 for four bars: edit a riff to change every repeat.

// bass · acoustic bass
const bass = note(`<
  ~@8 A B C B C B C B C B C B C B C B C D E B F G H B C B I J K B F J L B M J K B M J K B C D N O P D Q R S R T R@3 U V
  W X C Y Z X C AA AB AC AD AE Q AC AF G AG J AC B AH AI AC B AJ J AC B AK J AC B AL J AC B AM AN AO AP AQ G AR B C B AS
  J AT J K B AU J K AV AW AX AY AZ BA BB BC G BD BE BF G BG BH BI@2 BJ J K B M J K B BK J AC B BL J K BM K BN BO BP BQ G
  BR J BS J BS BT BU BV BW BX BY BZ CA CB CC CD CE CD CF CG CH CI CJ@2
>`.pickRestart({
  A: "~@8 c2@2 d2@2 f2@2 g2 ~", B: "g2@4 ~@2 g2 ~ g2@4 ~@2 g2 ~", C: "g2@5 ~ g2 ~ c2@2 d2@2 f2@2 g2 ~",
  D: "c2@4 ~@2 c2 ~ d2@4 ~@2 d2 ~", E: "d#2@2 f2@2 g2@2 d2@2 ~@2 d2@2 f2@2 g2 ~", F: "g2@5 ~ g2 ~ c2@2 d2@2 f2@2 g2@2",
  G: "c2@2 ~ c2 d2@2 ~ d2", H: "d#2@2 d2@2 c2@2 d2@2 ~@2 d2@2 f2@2 g2 ~", I: "g2 ~@3 d2@7 ~ d2@4",
  J: "g1@4 ~@2 g1 ~ g1@4 ~@2 g1 ~", K: "g1@4 ~@2 g1 ~ c2@2 d2@2 f2@2 g2 ~", L: "g1@4 ~@2 g1 ~ c2@2 d2@2 f2@2 d2@2",
  M: "g2@4 ~@2 g2 ~ c2@2 d2@2 f2@2 d2@2", N: "d#2@2 a#1 ~ d#2 ~ d2@3 ~ d2@2 f2@2 g2 ~",
  O: "g1@5 ~ g2 ~ g2@4 d2@2 f2 d2", P: "g1@5 ~ g2@2 ~@2 g2 ~ d2@2 c#2 ~", Q: "d#2@2 a#1 ~ d#2@2 d2@3 ~ d2@2 f2@2 g2@2",
  R: "g1@4 ~@2 g2 ~ g2@4 ~@2 g1 ~", S: "g1@4 ~@2 g2 ~ g2 ~ g2@2 ~@2 g1 ~", T: "g1@4 ~@2 g2@2 ~@2 g2@2 ~@2 g1 ~",
  U: "g1@5 ~ g2 ~ g2 ~ g2@3 ~ d2 ~", V: "g1@5 ~ d2@2 ~@2 d2@2 f2@2 g2@2", W: "g1@2 ~ g2 ~ g2 c2 d2",
  X: "g1@4 ~@2 g1@2 d2 ~ d2@2 f2@2 g2 ~", Y: "g1@4 ~ f2 g1@2 d2 ~ d2@2 f2@2 g2 ~", Z: "g2@2 ~ g2 ~ d2 f2 g2",
  AA: "g2@2 g1@3 ~ g1@2 d2 ~ d2@2 f2@2 g2 ~", AB: "g2@4 ~@2 g2@2 c2 ~ c2@2 c#2@2 d2@2",
  AC: "g1@4 ~@2 g1@2 c2@2 d2@2 f2@2 g2 ~", AD: "g2@5 ~ g2@2 c2@2 c#2@2 d2@2 f2@2",
  AE: "g1@2 ~ g1 d2@2 ~ d2, ~@8 c2 ~@7", AF: "g2@5 ~ g2!2 c2@2 d2@2 g1@2 a#1@2",
  AG: "d#2 ~ a#1@3 ~ d2@3 ~ d2@2 a#1@2 a1@2", AH: "g2@3 ~ c2 d2 f2 g2", AI: "g1 ~ g1@3 ~ g1 ~ g1@4 ~@2 g1 ~",
  AJ: "g2@5 ~ g2!2 c2@2 d2@2 f2@2 g2@2", AK: "g2@2 ~ g2 c2 d2 a1 d2", AL: "g2@4 ~@2 c2@2 ~ c#2@2 ~ d2@3 ~",
  AM: "g2@5 ~ g2@3 ~ d3@2 g3@2 d3@2", AN: "c3@2 ~ c3 d3@2 ~ d3", AO: "d#3 a#2 d#2 d2 ~ d2 a1 d2",
  AP: "g1@5 ~ g1 ~ g1@5 ~ g1@2", AQ: "c2@2 c#2 d2 ~ d2 f2@2 f#2@2 g2@2 c#2@2 g2@2",
  AR: "d#2 ~ g2@2 a#2@2 d3@2 ~@2 d3@2 a2@2 d3@2", AS: "g2@2 ~ g2 c2 d2 g#1 d2", AT: "g1@5 ~ g1@2 c2@2 d2@2 f2@2 g2@2",
  AU: "g2@4 ~@2 c2@3 c2 c#2@2 d2@2 g#1@2", AV: "g2@4 ~@2 g2 ~ g2@4 ~ g2!2 ~", AW: "g2@5 ~ g2!2 c2@2 c#2@2 d2@2 g#1@2",
  AX: "g1@4 ~@2 g1 ~ g1@4 ~@2 g#1@2", AY: "a1@2 c2 d2 ~ d2 f2@2 f#2@2 g2@2 c2@2 d2@2",
  AZ: "g1@4 ~@2 g1 ~ g1@4 ~ g2!2 ~", BA: "g2@4 ~@2 g2@2 c2@2 c#2@2 d2@2 a1 g#1",
  BB: "g1@4 ~@2 g1 ~ g1@2 ~ g1 d2@2 f2@2", BC: "g2@5 ~ g2!2 f2@2 f#2@2 g2@2 c#2@2", BD: "d#2 a#1 d#2 d2 ~ d2 a1 g#1",
  BE: "g1@4 ~@2 g1 ~ g1@2 ~ g1 d2@2 g2@2", BF: "~ g2!2 ~ g2@2 ~ g2 d2@2 g1@2 d2@2 g2@2",
  BG: "d#2@2 a#1@2 c2@2 d2@2 ~@2 d2@2 a1@2 g#1 ~", BH: "g1@6 g2 ~ g2@2 ~ g2 d2@2 g#1@2",
  BI: "g1@5 ~ g2 ~ g2@2 ~ g2 d2@2 g#1@2", BJ: "g1 ~ d2@6", BK: "g2@4 ~ g1 g1@2 c2@2 d2@2 f2@2 g2@2",
  BL: "g2@4 ~ g2!2 ~ c2@2 c#2@2 d2@2 g#1@2", BM: "g2@4 ~@2 g2 ~ g2@5 ~ d2 ~", BN: "c2@4 c3@2 c2@2 d2@3 d3 d3@2 d2@2",
  BO: "d#2 d#3 d#2 d2 ~ d2 a#2 d2", BP: "g1@2 ~ g1 a#1 c2 d2 f2", BQ: "g2!4 c2@2 c#2@2 d2@2 g1@2 a1@2 a#1@2",
  BR: "d#2!2 a#1@2 c2@2 d2@2 ~@2 d2@2 f2@2 g2@2", BS: "g1@4 ~@2 g1 ~ c2@2 d2@2 f2@2 g2@2",
  BT: "g1@5 ~ g1 ~ g1 ~ g1!2 d2@2 f2@2", BU: "g2@5 ~ g2!2 c2@2 c#2@2 d2@2 g#1!2",
  BV: "g1 ~ g1@4 ~ g1 c2@2 c#2@2 d2@2 f2@2", BW: "g2 ~ g1@3 ~ a#2@4 g2!2 f2!2 d2 ~",
  BX: "g1 ~ g1@5 g1 c2@2 c#2@2 d2@2 g#1 ~", BY: "g1 ~ g1@3 c2 c2@2 c#2@2 d2@2 f2!2 d2 f2",
  BZ: "f2 f#2 g2@2 a2@2 a#2 c3 ~ c3 a#2@2 a2@2 f2@2", CA: "g2@4 c2@2 c#2@2 d2@2 g#1 ~ d2!2 ~ d2",
  CB: "g1@3 ~ g1@3 c2 ~ c2 c#2@2 d2@2 f2@2", CC: "g2@3 ~ g2@3 c2 ~ c2 c#2@2 d2@2 g#1@2",
  CD: "g1@3 ~ g1@2 ~ g1 c2@2 c#2 ~ d2@2 f2 f#2", CE: "g2 ~ g2@2 f2@2 g2@2 c2@2 c#2@2 d2@2 g#1@2",
  CF: "g2 ~ g2@3 ~ g2@2 c2!2 c#2@2 d2@2 g#1@2", CG: "g1@3 ~ g1@2 ~ g1 c2@2 c#2@2 d2@2 f2@2",
  CH: "g2@2 ~ g2 ~ g2 f2@2 g2 ~ f2@2 d2@2 c#2@2", CI: "c2@2 c3 c2 d2@2 d3 d2", CJ: "[d#2 ~@2 g1@11 ~@2]/2",
})).s("gm_acoustic_bass").gain(0.5)

// chords · piano
const piano = note(`<
  ~@8 A B@3 C@4 D@5 E@4 F G@3 F H@4 I J@3 K@8 L@4 M F G@3 F N@4 O@4 P@4 Q@4 R@4 S T U@3 F V@8 W@4 X@4 Y@4 Z AA AB@3 F
  AC@5 AD@7 AE@4 W@4 Z AA G@3 F AF@4 AG J@3 AH@4 AI@4 AJ@4 AK AA AL@3 F V@8 AM@4 AN@4 AO@4 AK F AP@2
>`.pickRestart({
  A: "~@4 c4 d4 f4 g4",
  B: "[~@6 g3@4 ~@10 f4 ~@3 [f4,a#4]@2 f4 ~@13 [f4,a#4]@2 ~@2 g3@2 d3@2, g2@14 ~@2 g2@14 ~@2 g2@13 ~@3, ~@4 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@6, ~@12 g3@9 ~ g3@5 ~ g3@8 ~@2 g3@4 ~@6]/3", // A#5 G5 F5 G5 F5 G5
  C: "[~@6 g3@4 ~@12 g3@4 f4 ~@13 [f4,a#4]@2 ~@14 [f4,a#4]@2 ~@2 g3@2 d3@2, g2@14 ~@2 g2@14 c4@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 c4@5 ~ [d4,g4]@4 ~@2 [d4,g4]@6, ~@4 [c4,f4,g4]@5 ~ [c4,f4,g4]@6 ~@4 [f4,a#4]@6 [d4,g4]@4 f4@7 ~@9 f4@7 ~@11, ~@12 g3@8 ~@8 g3@8 ~@2 g3@4 ~@2 g3@8 ~@2 g3@5 ~@5, ~@32 g2@14 ~@2 g2@13 ~@3]/4", // A#5 G5 Csus4 A#5 G5
  D: "[~@6 g3@4 ~@12 g3@4 f4 ~@13 [f4,a#4]@2 ~@14 [f4,a#4]@2 ~@2 g3@2 d3@2 a#2 ~@5 g3@4 ~@2 g3@4, g2@14 ~@2 g2@15 ~ g2@14 ~@2 g2@13 ~@3 g2@13 ~@3, ~@4 [c4,f4,g4]@5 ~ [c4,f4,g4]@6 ~@4 [f4,a#4]@5 ~ [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@9 ~ [c4,f4,g4]@5 ~ [c4,f4,g4]@6, ~@12 g3@8 ~@8 g3@8 ~@2 g3@4 ~@2 g3@9 ~ g3@5 ~@21]/5", // A#5 Csus4 A#5 G5 F5 G5 F5 G5 …
  E: "[~@6 g3@4 f4 ~@9 f4 ~@3 [f4,a#4]@2 ~@10 f4 ~@3 [f4,a#4]@2 ~@2 g3@2 d3@2 ~@6 g3@4 [c4,f4,g4]@2 g3@3 ~, g2@14 ~@2 g2@14 ~@2 g2@12 ~@4 g2@13 ~@3, ~@4 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@6 [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@9 ~ [c4,f4,g4]@5 ~@7, ~@6 g3@4 ~ g3@2 ~ g3@4 ~ g3@2 ~@11]/4", // A#5 Csus4 A#5 G5 F5 G5 F5 G5 …
  F: "[c3,a#3,d#4,g4]@7 ~ [d3,f4,a4]@7 ~, ~@8 c4@5 ~@3", // Cm7 Dm
  G: "[[d#3,d4,g4,a#4]@5 ~ [c4,f4]@3 ~ [c4,f4]@3 ~ [c4,f4]@2 ~@6 g3@4 ~@14 [f4,a#4]@2 ~@2 g3@3 ~, ~@3 a4@5 g2@7 ~ g2@7 ~, ~@6 d3@8 g3@6 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@5 ~, ~@28 g3@9 ~ g3@4 ~@6]/3", // D#maj7 F5 A#5 G5 F5 G5
  H: "[[d#3,d4,g4,a#4]@5 ~ [c4,f4]@3 ~ [c4,f4]@3 ~ [c4,f4]@2 ~@6 g3@4 ~@14 [f4,a#4]@2 ~@10 f4 ~@3 [f4,a#4]@2 f4 ~ g3@2 d3@2, ~@6 a4@10 g2@15 ~ g2@14 ~@2 g2@13 ~@3, ~@3 d3@4 g3@3 a#4@8 ~@14, ~@20 f4@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@6, ~@28 g3@8 ~@2 g3@4 ~@2 g3@9 ~ g3@4 ~@6]/4", // D#maj7 F5 A#5 G5 F5 G5 F5 G5
  I: "g2@2 ~@2 [g3,c4,f4,g4]@11 ~", // Csus4
  J: "[~@3 g3@2 ~@7 [f4,a#4] ~@7 [f4,a#4] ~ g3 d3, g2@14 ~@2 g2@14 ~@2 g2@13 ~@3, ~@4 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@6, ~@12 g3@9 ~ g3@4 ~@2 g3@9 ~ g3@4 ~@6]/3", // A#5 G5 F5 G5 F5 G5
  K: "[~@6 g3@4 ~@12 g3@4 ~@14 [f4,a#4]@2 ~@14 [f4,a#4]@2 ~@2 g3@2 d3@2 a#2 ~@5 g3@4 ~@12 g3@4 f4 ~@13 [f4,a#4]@2 ~@14 [f4,a#4]@2 ~@2 g3@2 d3@2, g2@14 ~@2 g2@14 ~@2 g2@14 ~@2 g2@13 ~@3 g2@13 ~@3 g2@14 ~@2 g2@14 ~@2 g2@13 ~@3, ~@4 [c4,f4,g4]@5 ~ [c4,f4,g4]@6 ~@4 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@8 ~@2 [c4,f4,g4]@5 ~ [c4,f4,g4]@6 ~@4 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@6, ~@12 g3@8 ~@8 g3@9 ~ g3@4 ~@2 g3@9 ~ g3@5 ~@17 g3@9 ~@7 g3@9 ~ g3@4 ~@2 g3@9 ~ g3@4 ~@6]/8", // A#5 Csus4 A#5 G5 F5 G5 F5 G5 …
  L: "[~@6 g3@4 ~@12 g3@4 f4 ~@13 [f4,a#4]@2 ~@14 [f4,a#4]@2 f4 ~ g3@2 d3@2, g2@7 ~ g2@7 ~ g2@7 ~ g2@6 ~@2, ~@4 [c4,f4,g4]@5 ~ [c4,f4,g4]@6 ~@4 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@6, ~@12 g3@8 ~@8 g3@8 ~@2 g3@4 ~@2 g3@9 ~ g3@5 ~@5]/4", // A#5 Csus4 A#5 G5 F5 G5 F5 G5
  M: "~@6 g3@4 ~@2 g3@3 ~, g2@3 ~, ~@4 [c4,f4,g4]@5 ~ [c4,f4,g4]@4 ~@2", // Csus4
  N: "[[d#3,d4,g4,a#4]@5 ~ [c4,f4]@3 ~ [c4,f4]@3 ~ [c4,f4]@2 ~@6 g3@4 ~@14 [f4,a#4]@2 ~@10 f4 ~@3 [f4,a#4]@2 ~@2 g3@2 d3@2, ~@6 a4@10 g2@14 ~@2 g2@14 ~@2 g2@13 ~@3, ~@6 d3@8 g3@6 ~@8 g3@9 ~ g3@4 ~@2 g3@9 ~ g3@5 ~@5, ~@6 a#4 ~@13 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@6]/4", // D#maj7 F5 A#5 G5 F5 G5 F5 G5
  O: "[~@3 g3@2 ~@6 g3@2 ~@7 [f4,a#4] ~@7 [f4,a#4] ~ g3 d3, g2@14 ~@2 g2@14 ~@2 g2@14 ~@2 g2@13 ~@3, ~@4 [c4,f4,g4]@5 ~ [c4,f4,g4]@6 ~@4 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@6, ~@12 g3@8 ~@8 g3@9 ~ g3@4 ~@2 g3@9 ~ g3@4 ~@6]/4", // A#5 Csus4 A#5 G5 F5 G5 F5 G5
  P: "[a#2 ~@5 g3@4 ~@2 f3 ~@9 g3@4 ~@14 [f4,a#4]@2 a#4 ~@13 [f4,a#4]@2 ~@2 g3@2 d3@2, g2@14 ~@2 g2@14 ~@2 g2@14 ~@2 g2@13 ~@3, ~@4 [c4,f4,g4]@5 ~ [c4,f4,g4]@6 ~@4 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@6, ~@12 g3@9 ~@7 g3@9 ~ g3@5 ~ g3@8 ~@2 g3@4 ~@6]/4", // A#5 Csus4 A#5 G5 F5 G5 F5 G5
  Q: "[d3 ~@5 g3@4 ~@12 g3@4 ~@10 f4 ~@3 [f4,a#4]@2 ~@10 f4 ~@3 [f4,a#4]@2 ~@2 g3@2 d3@2, g2@12 g3@8 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@6, ~@4 [c4,f4,g4]@5 ~ [c4,f4,g4]@6 g2@14 ~@2 g2@13 ~@3 g2@13 ~@3, ~@28 g3@9 ~ g3@4 ~@2 g3@9 ~ g3@5 ~@5]/4", // A#5 G5 F5 G5 F5 G5 Csus4
  R: "[~@6 g3@4 ~@12 g3@4 f4 ~@9 f4 ~@3 [f4,a#4]@2 ~@14 [f4,a#4]@2 a#4 ~ g3@2 d3@2, g2@14 ~@2 g2@15 ~ g2@14 ~@2 g2@12 ~@4, ~@4 [c4,f4,g4]@5 ~ [c4,f4,g4]@6 ~@4 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@6, ~@12 g3@8 ~@8 g3@9 ~ g3@4 ~@2 g3@9 ~ g3@4 ~@6]/4", // A#5 Csus4 A#5 G5 F5 G5 F5 G5
  S: "~@6 g3@4 [c4,f4,g4]@2 ~ g4 ~@2, g2@13 ~@3, ~@4 [c4,f4,g4]@5 ~@3 g3@3 ~", // Csus4
  T: "[c3,a#3,d#4,g4]@7 ~ [d3,c4,f4,a4]@8, ~@8 e3 ~@7", // Cm7 Dm7
  U: "[[d#3,d4,g4,a#4]@5 ~ [c4,f4]@3 ~ [c4,f4]@3 ~ [c4,f4]@2 ~@6 g3@4 f4 ~@9 f4 ~@3 [f4,a#4]@2 ~@2 g3@3 ~, ~@3 a4@5 g2@7 ~ g2@6 ~@2, ~@6 d3@8 g3@6 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@5 ~, ~@28 g3@8 ~@2 g3@5 ~@5]/3", // D#maj7 F5 A#5 G5 F5 G5
  V: "[[d#3,d4,g4,a#4]@5 ~ [c4,f4]@3 ~ [c4,f4]@3 ~ [c4,f4]@2 ~@6 g3@4 ~@14 [f4,a#4]@2 ~@10 [d4,g4]@2 ~@2 [f4,a#4]@2 ~@12 g3@4 ~@12 g3@4 ~@14 [f4,a#4]@2 ~@10 [d4,g4]@2 ~@2 [f4,a#4]@2 ~@2 g3@4, ~@3 a4@5 g2@7 ~ g2@7 ~ g2@6 ~@2 g2@7 ~ g2@7 ~ g2@7 ~ g2@6 ~@2, ~@6 d3@8 g3@6 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~@7 [d4,g4]@6 ~@4 [c4,f4,g4]@5 ~ [c4,f4,g4]@6 ~@4 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~@7 [d4,g4]@6, ~@28 g3@9 ~ g3@4 ~@2 g3@9 ~ g3@4 ~@2 g3@8 ~@8 g3@8 ~@8 g3@9 ~ g3@4 ~@2 g3@9 ~ g3@4 ~@6]/8", // D#maj7 F5 A#5 G5 A#5 G5 A#5 G5 …
  W: "[~@6 g3@4 ~@12 g3@4 ~@14 [f4,a#4]@2 ~@10 f4 ~@3 [f4,a#4]@2 ~@2 g3@2 d3@2, g2@14 ~@2 g2@14 ~@2 g2@14 ~@2 g2@13 ~@3, ~@4 [c4,f4,g4]@5 ~ [c4,f4,g4]@6 ~@4 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@6, ~@12 g3@8 ~@8 g3@9 ~ g3@4 ~@2 g3@9 ~ g3@5 ~@5]/4", // A#5 Csus4 A#5 G5 F5 G5 F5 G5
  X: "[~@6 g3@4 d4 ~@11 g3@4 ~@10 f4 ~@3 [f4,a#4]@2 ~@14 [f4,a#4]@2 ~@2 g3@2 d3@2, g2@14 ~@2 g2@14 ~@2 g2@13 ~@3 g2@13 ~@3, ~@4 [c4,f4,g4]@5 ~ [c4,f4,g4]@7 ~@3 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@6, ~@12 g3@8 ~@8 g3@9 ~ g3@4 ~@2 g3@9 ~ g3@4 ~@6]/4", // A#5 Csus4 A#5 G5 F5 G5 F5 G5
  Y: "[a#2 ~@5 g3@4 ~@12 g3@4 ~@10 f4 ~@3 [f4,a#4]@2 ~@14 [f4,a#4]@2 ~@2 g3@2 d3@2, g2@12 g3@8 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@6, ~@4 [c4,f4,g4]@5 ~ [c4,f4,g4]@6 g2@14 ~@2 g2@13 ~@3 g2@13 ~@3, ~@28 g3@9 ~ g3@4 ~@2 g3@9 ~ g3@4 ~@6]/4", // A#5 G5 F5 G5 F5 G5 Csus4
  Z: "~@6 g3@4 [c4,f4,g4]@2 g3@3 ~, g2@7 ~, ~@4 [c4,f4,g4]@5 ~@7", AA: "[c3,a#3,d#4,g4]@7 ~ [d3,c4,f4,a4]@7 ~",
  AB: "[[d#3,d4,g4,a#4]@5 ~ [c4,f4]@3 ~ [c4,f4]@3 ~ [c4,f4] ~@7 g3@4 ~@4 d4 ~@9 [f4,a#4]@2 ~@2 g3@3 ~, ~@6 [d3,a4]@8 g3@6 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@5 ~, ~@8 g2@7 ~ g2@7 ~, ~@14 g3@4 ~ g3@2 ~@3]/3", // D#maj7 F5 A#5 D5 A#5 G5 F5 G5
  AC: "[[d#3,d4,g4,a#4]@5 ~ [c4,f4]@3 ~ [c4,f4]@3 ~ [c4,f4]@2 ~@4 f#4 ~ g3@4 f4 ~@9 f4 ~@3 [f4,a#4]@2 ~@10 f4 ~@3 [f4,a#4]@2 ~@12 g3@4 ~@2 g3@4, ~@6 a4@10 g2@12 g3@8 ~@2 g3@4 ~@2 g3@9 ~ g3@5 ~ g3@9 ~@11, ~@6 d3@8 g3@6 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4,g4]@5 ~ [c4,f4,g4]@5 ~ [c4,f4,g4]@6, ~@32 g2@14 ~@2 g2@15 ~ g2@14 ~@2]/5", // D#maj7 F5 A#5 G5 F5 G5 F5 G5 …
  AD: "[~@6 g3@4 ~@14 [f4,a#4]@2 ~@14 [f4,a#4]@2 [d4,g4]@2 g3@2 ~@2 g3@4 d4 ~ g3@4 ~@6 b2 ~@5 g3@4 f4 ~@13 [f4,a#4]@2 ~@14 [f4,a#4]@2 ~@2 g3@2 d3@2, g2@14 ~@2 g2@14 ~@2 g2@29 ~@3 g2@15 ~ g2@14 ~@2 g2@13 ~@3, ~@4 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@6 [c4,f4,g4]@5 ~ [c4,f4,g4]@5 ~ [c4,f4,g4]@7 ~@3 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@6, ~@12 g3@9 ~ g3@4 ~@2 g3@9 ~ g3@5 ~@17 g3@9 ~@7 g3@9 ~ g3@4 ~@2 g3@9 ~ g3@4 ~@6]/7", // A#5 G5 A#5 G5 F5 G5 F5 G5 …
  AE: "[~@6 g3@4 ~@12 g3@4 ~@10 f4 ~@3 [f4,a#4]@2 ~@14 [f4,a#4]@2 ~@2 g3@2 d3@2, g2@14 ~@2 g2@14 ~@2 g2@14 ~@2 g2@13 ~@3, ~@4 [c4,f4,g4]@5 ~ [c4,f4,g4]@6 ~@4 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@6, ~@12 g3@8 ~@8 g3@9 ~ g3@5 ~ g3@8 ~@2 g3@4 ~@6]/4", // A#5 Csus4 A#5 G5 F5 G5 F5 G5
  AF: "[[d#3,d4,g4,a#4]@5 ~ [c4,f4]@3 ~ [c4,f4]@3 ~ [c4,f4]@2 ~@6 g3@4 ~@10 f#4 ~@3 [f4,a#4]@2 f4 ~@3 c4@2 ~@8 [f4,a#4]@2 ~@2 g3@2 d3@2, ~@3 a4@5 g2@7 ~ g2@7 ~ g2@7 ~, ~@6 d3@8 g3@6 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 f4@5 ~ [d4,g4]@4 ~@2 [d4,g4]@6, ~@28 g3@9 ~ g3@4 ~@2 g3@9 ~ g3@4 ~@6]/4", // D#maj7 F5 A#5 G5 F5 G5
  AG: "g2 ~@3 [g3,c4,f4,g4]@12", // Csus4
  AH: "[~@6 g3@4 ~@12 g3@4 ~@14 [f4,a#4]@2 f4 ~@13 [f4,a#4]@2 ~@2 g3@2 d3@2, g2@14 ~@2 g2@14 ~@2 g2@14 ~@2 g2@13 ~@3, ~@4 [c4,f4,g4]@5 ~ [c4,f4,g4]@6 ~@4 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@6, ~@12 g3@8 ~@8 g3@9 ~ g3@5 ~ g3@8 ~@2 g3@4 ~@6]/4", // A#5 Csus4 A#5 G5 F5 G5 F5 G5
  AI: "[~@3 g3@2 ~@6 g3@2 ~@7 [f4,a#4] ~@7 [f4,a#4] ~ g3 d3, g2@12 g3@8 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@6, ~@4 [c4,f4,g4]@5 ~ [c4,f4,g4]@6 g2@14 ~@2 g2@14 ~@2 g2@13 ~@3, ~@28 g3@9 ~ g3@4 ~@2 g3@9 ~ g3@4 ~@6]/4", // A#5 G5 F5 G5 F5 G5 Csus4
  AJ: "[~@3 g3@2 ~@6 g3@2 ~@7 [f4,a#4] ~@5 [d4,g4] ~ [f4,a#4] ~ g3 d3, g2@7 ~ g2@7 ~ g2@7 ~ g2@7 ~, ~@4 [c4,f4,g4]@5 ~ [c4,f4,g4]@6 ~@4 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~@7 [d4,g4]@5 ~, ~@12 g3@8 ~@8 g3@9 ~ g3@4 ~@2 g3@9 ~ g3@4 ~@6]/4", // A#5 G5 A#5 Csus4 A#5 G5 F5 G5 …
  AK: "~@6 g3@4 ~@2 g3@3 ~, g2@15 ~, ~@4 [c4,f4,g4]@5 ~ [c4,f4,g4]@4 ~@2", // Csus4
  AL: "[[d#3,d4,g4,a#4]@5 ~ [c4,f4,a4]@4 [c4,f4]@3 ~ [c4,f4]@2 ~@6 g3@4 f4 ~@9 f4 ~@3 [f4,a#4]@2 f4 ~ g3@3 ~, ~@6 d3@8 g3@6 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@5 ~, ~@10 a4@6 g2@14 ~@2 g2@13 ~@3, ~@28 g3@9 ~ g3@4 ~@6]/3", // D#maj7 F F5 A#5 G5 F5 G5
  AM: "[~@6 g3@4 ~@12 g3@4 f4 ~@13 [f4,a#4]@2 ~@14 [f4,a#4]@2 f4 ~ g3@2 d3@2, g2@14 ~@2 g2@15 ~ g2@14 ~@2 g2@13 ~@3, ~@4 [c4,f4,g4]@5 ~ [c4,f4,g4]@6 ~@4 [f4,a#4]@5 ~ [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@6, ~@12 g3@8 ~@8 g3@8 ~@2 g3@4 ~@2 g3@9 ~ g3@5 ~@5]/4", // A#5 Csus4 A#5 G5 F5 G5 F5 G5
  AN: "[a#2 ~@5 g3@4 ~@12 g3@4 ~@14 [f4,a#4]@2 ~@10 [d4,g4]@2 ~@2 [f4,a#4]@2 f4 ~ g3@2 d3@2, g2@15 ~ g2@14 ~@2 g2@14 ~@2 g2@12 ~@4, ~@4 [c4,f4,g4]@5 ~ [c4,f4,g4]@7 ~@3 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~@7 [d4,g4]@6, ~@12 g3@8 ~@8 g3@9 ~ g3@4 ~@2 g3@9 ~ g3@4 ~@6]/4", // A#5 G5 A#5 Csus4 A#5 G5 F5 G5 …
  AO: "[~@6 g3@4 ~@12 g3@4 f4 ~@13 [f4,a#4]@2 ~@10 [d4,g4]@2 ~@2 [f4,a#4]@2 ~@2 g3@2 d3@2, g2@7 ~ g2@7 ~ g2@7 ~ g2@6 ~@2, ~@4 [c4,f4,g4]@5 ~ [c4,f4,g4]@6 ~@4 [f4,a#4]@6 [d4,g4]@4 [c4,f4]@5 ~ [d4,g4]@4 ~@2 [d4,g4]@4 [c4,f4]@5 ~@7 [d4,g4]@6, ~@12 g3@8 ~@8 g3@9 ~ g3@4 ~@2 g3@9 ~ g3@5 ~@3 g3 ~]/4", // A#5 G5 A#5 Csus4 A#5 G5 F5 G5 …
  AP: "[[d#3,d4,g4,a#4]@4 ~@3 a4@22 ~@3, ~@3 g2@13, ~@3 [c4,f4]@11 ~@2]/2", // D#maj7 F5
})).s("gm_piano").gain(0.5).pan(0.7)

// other · overdriven guitar · "Lead Guitar"
const overdriven_guitar = note(`<
  ~@83 A B C D E F G H@2 I J@2 K L M N O P Q@2 R S@2 T U V W X Y Z AA ~@70
>`.pickRestart({
  A: "~@4 g4 ~@5 g4 ~@3 g4 ~", B: "~@4 g4 d4 ~@4 f4 c4 ~@4", C: "~@2 g4 d4 f4 c4 ~@2 g4 d4 ~ f4 ~@2 g4@2",
  D: "~ d4@2 ~ f4 c4 ~ g4 ~ d4 f4 d4 ~ c4 d4 f4", E: "f4 g4 ~ d4 g4@5 ~ g4@3 f4 d4@2",
  F: "c4 c#4 d4 f4@2 d4 a4@4 f4 ~ f4 a4 ~ c5", G: "e5@4 g5@3 ~ e5@2 g5 a#5 ~ g5 a5@2",
  H: "[~ f5@3 g5 d5@2 f5@2 e5 c5 ~ d5 a#4@2 c5@2 g4 a#4@2 a4 f4@2 d4@2 f4 a4@3 c5@3]/2",
  I: "a#4 c5 [a4,a#4] f4 g4 a4 c5@2 a#4 [a#4,c5] a4 f4 [f4,g4] a4 c5@2", // A#maj7 A#sus2 Fsus2
  J: "[a#4 a4 a#4 g4 f4 f#4 g4 a#4 c#5 a#4 c5 b4 a#4 d5 f5 a5@5 g5 a5 ~ f5 ~ g5 d5@2 f5 e5@2 c5]/2",
  K: "d5@2 c5@2 a#4 [a#4,c5] g4 ~ g4@2 a#4@2 g4 ~ d4@2, ~@13 f4@2 ~", // A#sus2
  L: "~@2 f4@2 c#4 c4 a#3@2 g3@2 f3 g3@2 a#3 c4@2, ~ d4@2 ~@13", M: "~ d4@2 ~ f4@3 g4@3 a#4@2 ~ c5@2 ~",
  N: "c#5@2 g5 c5@2 g5 c#5@2 g5 c5@2 g5 c#5@3 c#5", O: "c5 a#4 g4 f4 g4 a#4 g4 f#4 f4 d4 c4 c#4 d4 f4 g4@2",
  P: "f4 f#4 g4 a#4 ~@2 c5@2 ~ d5 ~@2 d5 f5 ~ g5",
  Q: "[~ g5@3 a#5@2 [g5,a#5]@2 a#5 [g5,a#5]@2 a#5 [a5,c6]@2 c6 [a5,c6]@2 c6 [g5,a#5]@2 a#5 ~ g5@2 ~@2 c6 [a5,c6]@2 c6 [g5,a#5]@2, ~@21 a#5@2 ~ [a#5,c6]@2 ~@6, ~@25 a5@2 ~@5]/2", // Gm Am Gm Am Gm A#sus2
  R: "a#5 [g5,a#5]@2 a#5 [g5,a#5]@2 a#5 [a5,c6]@2 c6 [a5,c6]@2 c6 ~ a5@2, ~@13 c6@3", // Gm Am
  S: "[[g5,a#5]@2 a#5 [g5,a#5]@3 [f5,a5]@2 a5 g5 ~ g5 f5@2 g5 c#5@2 c#5 c5@2 a#4 g4 f4 f#4 g4 a#4 g4@2 f4 d4 c4 c#4]/2", // Gm F
  T: "d4 f4 g4@2 a#4 g4 a#4 c5 a#4 g4 a#4 c5 a#4 g4 a#4 c5",
  U: "c#5@2 c5 a#4 c#5 c5 a#4 f#4 g4 a#4 c#5 c5 a#4 f#4 g4 a#4", V: "c#5 g4 c5 g4 b4 a#4 g4 f4@2 f#4 g4@2 f4 d4 c4 c#4",
  W: "d4 f4@2 d4 g4@2 f4 a#4@2 g4 c5@2 a#4 d5@2 c5", X: "f5@2 d5 g5@2 [d5,f5] a#5@2 g5 a5@2 f5@2 g5 d5@2",
  Y: "f5 ~ e5 c5 d5 ~ a#4 c5 a#4 ~ a4 f4 d4 ~ f4 a4", Z: "c5@4 a#4 [a#4,c5] a4@3 f4@3 d4@2 a#3@2", AA: "~ g3@14 ~",
})).s("gm_overdriven_guitar").gain(0.45).pan(0.3)

// chords · epiano1 · "Lead Keyboard"
const epiano1 = note(`<
  ~@25 A B ~@2 C D ~@20 E B ~@2 C B ~@20 C B ~@2 C F ~@20 C B ~@2 C F ~@20 C B ~@2 G B ~@20 A F ~@2 C B ~@20 C H@2
>`.pickRestart({
  A: "[a#4,d#5,g5] [c5,f5,a5], ~@8 g5 ~@7", B: "[d5,g5,a#5]@5 ~ [c5,f5,a5]@10", C: "[a#4,d#5,g5] [c5,f5,a5]",
  D: "[d5,g5,a#5]@3 [c5,f5,a5]@5", E: "[a#4,d#5,g5]@8 [c5,f5,a5]@7 ~, ~@8 e5 ~@7",
  F: "[d5,g5,a#5]@3 [c5,f5,a5]@5, f5 ~@15", G: "[a#4,d#5,g5] [c5,f5,a5], ~@8 d#5 ~@7",
  H: "[[d5,g5,a#5]@6 ~ a5@19 ~@6, ~@6 [c5,f5,g5]@19 ~@7]/2", // Gm Csus4
})).s("gm_epiano1").gain(0.4).pan(0.2)

// other · rock organ · "Organ"
const rock_organ = note("<~@110 A@6 B C D E@2 F G H I J@2 K L M N O P Q R@2 S T@2 ~@45>".pickRestart({
  A: "[~@2 d6@29 c6@8 a#5@4 a5@4 f5]/6", B: "d5@4 ~ d5 ~ d5 a5@2 f5@4 ~@2", C: "~@3 a5 a5@8 ~@4, ~@4 c#6 ~@11",
  D: "~@3 a5 a5@7 ~@4 [a5,a#5], ~@4 c#6 ~@11", // A#maj7
  E: "[c6@9 ~@2 f5 d5@2 ~@2 a#5 ~ a#5 a#5@2 ~@3 a#4@2 d5 d#5 f5@2 ~@2, b5 ~@9 a5@2 ~@2 a#5@2 ~@16, ~@15 d5@2 ~@11 e5 ~@3]/2",
  F: "~@2 g5@2 a#5@2 g5 c6@2 g5 d6@2 g5 c6@2 g5", G: "a#5@2 g5 ~ a#5@2 g5 c6@2 g5 d6@2 g5 c6@2 g5",
  H: "a#5@2 a5@2 c6@2 a5 d6@2 a5 e6@2 a5 d6@2 a5", I: "c6@2 b5@2 d6@2 b5 e6@2 b5 f#6@2 b5 e6@2 b5",
  J: "[d6@2 c6@2 f6@2 g5 g6@2 g5 f6@2 g5 a6@2 ~ g6@2 f6 g6 c7@2 ~ f6@2 g5 c6@2 d6 c6 g5@2, ~@15 g5@6 ~ g5@2 ~@8]/2",
  K: "~@2 f6 g6 c7 g5@2 f6 g5 d6 c6@2 f6@2 f6 ~", L: "f6 d6@2 ~ d6@2 c6 d6@2 c6 d6 f6 a#6@2 g6 [a6,a#6]",
  M: "c7@6 ~ [b6,c7] c7@5 a#6@3, ~@3 a#6 ~@4", N: "c7@3 d6@2 [d#6,e6] f6@2 d#6@3 g5@2 [a5,a#5,b5] c6@2, b6 ~@15",
  O: "a#5@3 d5@2 [d#5,e5] f5@2 d#5@3 d5@2 c5@3", P: "d5 d5@10 c5 d5 c5 d5 d#5, ~ d#5 ~@14",
  Q: "c5 g5 a#5 d5 g5 a#5 d5 g5 a#5@2 ~ a#5@3 ~ [a5,a#5], ~@7 g5", // A#maj7
  R: "[c6@10 a#5@2 c6@2 a#5 c6@2 a#5 c6@2 a#5@2 ~ a#5 c6@2 a#5 c6 a#5 ~ c6 a#5, b5 ~@21 c6@2 ~@8]/2",
  S: "c6 ~ a#5 c6 a#5 c6@2 a#5 c6@2 a#5 c6 a#5 c6 ~ a#5", T: "[a5 a#5@2 a5 g5 a5 g5 ~ a5 f5 g5 f5 g5 f5 ~ g5@2 ~@15]/2",
})).s("gm_rock_organ").gain(0.5).pan(1)

// other · electric guitar jazz · "Jass Guitar"
const electric_guitar_jazz = note(`<
  ~@12 A B@3 C D@3 E F G ~ H I ~ J K ~@2 L M N O ~@29 P ~@2 Q R S ~ T U V W ~@58 X Y ~@3 Z ~@2 AA AB AC AD ~ AE AF AG AH
  ~ AI AJ@2 AK AL AM AN AO AP AQ AR AS AT AU AV ~ AW@2 AX AY AZ BA BB BC BD BE BF BG BH BI@2 ~@2
>`.pickRestart({
  A: "~@7 [c4,c5]", B: "[[d4,d5]@17 ~@7]/3",
  C: "[a4,a5]@2 [a#4,a#5] ~ [a4,a5]@2 [a#4,a#5] ~ [a4,a5]@2 [a#4,a#5] ~ [f4,f5]@2 [g4,g5] ~", // A A# A A# A A# F G
  D: "[~ d5@17 ~@6, ~ d4@14 ~@9]/3", E: "~@4 d5@2 d5!2 g5@2 c5 a#4 c5 a#4 g4 ~", F: "g4 f4 d4 ~ g4 f4 d4!2 f4 ~@5 d4!2",
  G: "f4!5 ~ f4!6 g4 f4 d4 ~", H: "~@8 c#5 [a#4,c5] g4@2 f4@2 g4@2", I: "a#4@9 ~@7", J: "~ [d5,g5]@3, ~@4 c5 ~@11",
  K: "~@5 a#4 g4 ~ c5 ~ a#4@5 ~, ~@2 [c5,g5] ~ g5@4", L: "[d5,d6] [c5,c6] [a#4,a#5] ~ [a#4,a#5] [a4,a5] ~ [f4,f5]",
  M: "~ [d4,d5]@5 ~@2", N: "[f#4,f#5]@2 [g4,g5] ~ [f#4,f#5]@2 [g4,g5] ~ [g4,g5]@2 [f4,f5]@2 ~@2 [a4,a5]@2",
  O: "~ [d4,d5]@7", P: "~@4 [c5,d5]@2 ~ d5 c5@2 ~ [c5,d5] ~ a#4 g4@2", Q: "~@3 d5", R: "c5 a#4 ~@6",
  S: "~@4 g4 f4 d4 ~@9", T: "~@4 [g5,c6]@2 ~ [f5,a#5] ~@2 [d5,g5] ~@2 [d5,g5] ~@2",
  U: "[c5,f5] c5 a#4!2 ~ g4 ~@3 f4 ~@4 a#4@2", V: "c4 ~ c4 ~@13", W: "f4", X: "[c5,c6]@7 ~ [d5,d6]@7 ~",
  Y: "[d#5,d#6] [d5,d6] [f5,f6] ~@5", Z: "~ d5@3", AA: "~@6 g4 f4 ~@2 g4 ~@3 g4 ~",
  AB: "~@4 g4 f4 ~ f4 ~@2 g4 ~ g4 ~ g4!2", AC: "a#4@2 g4 f4 g4 ~@5 c5!2 a#4 a#4@2 a#4", AD: "g4@2 f4 g4 d4@2 ~@10",
  AE: "~@6 c5 a#4", AF: "c5!3 c#5 ~ a#4 c5 ~ c5 ~ c5!2 a#4@2 f4 ~", AG: "f4@2 g4@3 f4 d4 f4 ~ f4@2 ~ f4!2 g4 ~",
  AH: "~@2 d4!7 ~@7", AI: "~@4 [f5,a#5] ~@11",
  AJ: "[~@2 c5 d5 [f5,a#5] ~@3 [f5,a#5]@2 d5@2 c5 a#4 g4 g4@3 ~@2 [f5,a#5]@2 ~@10]/2", // A#5
  AK: "~@8 [a#4,a#5]@2 [c5,c6]@2 ~@2 [g4,a4,g5,a5] ~", AL: "[a#4,a#5]@8 [c5,c6]@7 ~", AM: "[d5,d6]@5 ~ [c5,c6]@9 ~",
  AN: "~@2 [d5,d6]@5 ~ c5 [c5,c#5] a#4@3 ~@3", AO: "c5@5 b4 [g4,a#4]@2 a#4 ~ a#4@2 g4@3 ~",
  AP: "~@2 [g5,a#5] ~@3 [a5,c6] ~", AQ: "~@2 c5@5 ~", AR: "~@4 [f5,a#5] ~@2 g4 [d5,d#5,e5] ~ c5@2 a#4@2 c5 ~",
  AS: "c5 a#4 g4 ~ a#4@2 ~ a4 ~ f4@2 ~ f4 g4 ~ f4", AT: "~ g4 f4!2 f4@2 d4 c4 d4 ~ d4@2 a#3 ~ a#3@2",
  AU: "g3@3 ~ a#3 ~ c4@2 c4!2 d4@2 f4@2 g4@2",
  AV: "~@2 [g4,d5,g5]@2 ~@2 [f5,g5] [g3,d5,g5] [d5,g5] g5 [f4,c5,f5,g5] ~@2 g5@3, ~@4 [g4,d5,g5]@2 ~ g4@5 g4@4, ~@5 [g3,d5]@2 f5@2 ~@3 d5@2 ~@2", // G5 Fsus2 G5 Fsus2 G5
  AW: "[~@7 g5 [d5,g5] [c5,f5] ~ c5 ~ f5!2 ~ c5 [d5,f#5,g5] [d5,g5] ~ d5 [d5,g5]!3 ~@7 [d5,f5,a5], ~@4 [d5,g5]@2 d5@2 ~@4 [c5,f5]@2 ~ [c5,f5]@2 ~@2 [d5,g5]@2 ~@11, ~@5 g5@2 ~@3 f5@2 ~@20]/2", // G5 F5 Gmaj7 G5 Dm G5 F5 G5
  AX: "[d5,f5,a5]!2 ~@10 [g4,d5,g5] ~@2 [g4,d5,g5], g4@3 ~@13", AY: "[g4,d5,g5] ~@9 f6@2 f6!4, ~@5 d6@3",
  AZ: "f6 ~ c6 d6 a#5@3 ~@9", BA: "~@4 [c5,c6] [a#4,a#5] ~ [a#4,a#5]@2 ~ [g4,g5] ~ [f4,f5] ~ [g4,g5] ~",
  BB: "~@11 [a#5,c6] ~ a#5 g5 a#5", BC: "~ b5 g5 ~ f5@2 g5 ~@8 d5",
  BD: "g4@2 a#4 c5 ~ d5 g5@2 c#5 c5 a#4 g4 c5 g4 a#4 b4", BE: "g4 f4 ~ d4 f4 g4 ~@10",
  BF: "g5@4 f5 ~ d5 ~ c5@2 g4 ~ c5 ~ a#4 ~", BG: "~@2 c5!3 a#4 ~ a#4 ~ g4@2 ~ f4 ~ d4 ~",
  BH: "~@2 f4!2 g4 ~ g4 a#4 ~ a#4 c5 ~ d5 ~ f5 ~",
  BI: "[c5 c#5 [d5,g5]@2 d5 [c5,c#5] a#4@2 c5 ~ a#4 g4 ~ f4 a#4 g4@2 ~@15]/2", // G5 C#maj7
})).s("gm_electric_guitar_jazz").gain(0.5).pan(0.9)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@32 B C A@21 D A@19 E A E A@3 D A@14 B A@6 F@8 E F@17 E F@2 G H A@2 D I F@17 E F@24 J K ~
>`.pickRestart({
  A: "x ~@4 x ~ x", B: "x ~@4 x ~@2", C: "~ x ~@2", D: "x", E: "x!2", F: "x ~@3 x!2 ~ x", G: "x ~@2 x!2 ~@2 x",
  H: "x ~@3 x!2 ~@2", I: "x!2 ~@2", J: "x ~@2 x!3 ~ x", K: "~@3 x ~@4",
})).gain(0.5)

// drums · rim
const rim = s("rim").struct("<[x!4] ~@183>").gain(0.45)

// drums · snare
const snare = s("sd").struct(`<
// … 114 more lines

More by Steely Dan