Strudelify
Sentimental Lady cover art

French Kiss

Sentimental Lady

Bob Welch

KeyB♭ majorTempo83 bpm
0:00/0:00
// Sentimental Lady — Bob Welch
// 83 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 89 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): GuitarB.
// note: The whole transcription plays 10 ms behind the beat; the grid follows it, so its parts stay together.
setcpm(83/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 · fretless bass · "Bass"
const bass = note(`<
  A@2 B C D E F G H I J H K L M N O P Q R S T Q R U V W I X H I J H Y L M N O P Q T Z T Q R U AA AB AC AD@2 AE AF AD V W
  F G H I AG H Y L M N O P Q T Z T AH T AI P AH T Z R Q T AI P Q R Z AJ ~
>`.pickRestart({
  A: "d2 e2", B: "d2", C: "d2@4 d3@3 a2 d3 ~ d3@4 c3@2", D: "d2@4 d3@2 d2@2 c3 ~ c3@4 e2@2",
  E: "d2@4 d3@2 d2@2 g2 ~ g2@4 f2@2", F: "d2@4 d3@3 a2 d3 ~ d3@4 a1@2", G: "bb1@4 bb2@3 f2 c3 ~ c3@4 a2@2",
  H: "bb1@4 bb2@3 f2 g2 ~ g2@4 e2@2", I: "d2@4 d3@3 a2 d3 ~ d3@4 f2@2", J: "d2@4 d3@3 bb2 g2 ~ g2@4 f2@2",
  K: "a1@4 a2@3 f2 a2 ~ a2@4 c2@2", L: "c2@4 a2@3 e2 c3 ~ c3@2 c2@2 a1@2", M: "a1@4 c3@3 g2 a2 ~ a2@2 a1@2 a1@2",
  N: "c2@4 a2@3 e2 a2 ~ a2@2 c2@2 d2@2", O: "c2@4 c3@3 g2 c3 ~ c3@2 a2@4", P: "a1@4 a2@3 f2 d3 ~ d3@4 f2@2",
  Q: "c2@4 c3@3 g2!2 ~ g2@4 f2@2", R: "c2@4 c3@3 g2 bb2 ~ bb2@4 c2@2", S: "a1@4 a2@3 e2 g2 ~ g2@4 d2@2",
  T: "c2@4 c3@3 g2 bb2 ~ bb2@4 d2@2", U: "c2@4 c3@3 g2 d3 ~ d3@4 c3@2", V: "d2@4 d3@2 d2@2 c3 ~ c3@4 d2@2",
  W: "d2@4 d3@2 d2@2 g2 ~ g2@4 e2@2", X: "bb1@4 bb2@3 f2 c3 ~ c3@4 g2@2", Y: "a1@4 a2@3 f2 a2 ~ a2@4 f2@2",
  Z: "a1@4 a2@3 e2 g2 ~ g2@2 bb1@4", AA: "c2@4 c3@3 g2 c3 ~ c3@4 eb2@2", AB: "bb1@4 bb2@3 f2 bb2 ~ bb2@4 f2@2",
  AC: "c2@4 c3@3 g2 c3 ~ c3@4 d2@2", AD: "f1@4 f2@3 c2 f2 ~ f2@4 c2@2", AE: "bb1@4 bb2@3 f2 bb2 ~ bb2@4 c2@2",
  AF: "c2@4 c3@3 g2 c3 ~ c3@4 a2@2", AG: "d2@4 d3@3 bb2 g2 ~ g2@4 e2@2", AH: "c2@4 c3@3 g2!2 ~ g2@4 d2@2",
  AI: "c2@4 c3@3 g2 d3 ~ d3@4 bb2@2", AJ: "f2@3 ~",
})).s("gm_fretless_bass").gain(0.32)

// other · acoustic guitar steel · "GuitarB"
const acoustic_guitar_steel = note(`<
  ~@10 A ~@6 B A ~ A ~ A ~ B ~@4 A ~@19 C@2 ~@2 C ~@14 A ~@6 B A ~@7 A ~@4
>`.pickRestart({
  A: "~ g2", B: "~ d3", C: "f2",
})).s("gm_acoustic_guitar_steel").gain(0.39)

// chords · acoustic guitar steel · "GuitarA"
const acoustic_guitar_steel_2 = note(`<
  ~@2 A B C D E F G H I J A K L M N O L P Q R Q S T D C B I U V ~ W ~ L M N X Y Z Q AA T AB Q AC AD ~ AE AF AG AH AE AI
  C AJ E J I B G AK A AL N AL L P L Z L P L Z T R Q S Q AC Q S Q AC Q R Q ~@2
>`.pickRestart({
  A: "~ f4@15, [a3,d4]", B: "~ d4@7 ~@6 d4@2, a3@8 a3@2 a3@3 a3@3, ~ f4@10 f4@5, ~@9 d4@5 ~@2",
  C: "~ f4@5 ~@10, [bb3,d4]@3 ~@5", D: "~ [d4,f4]@5 ~@8 c4@2, bb3@6 ~@2 g3@2 g3@3 g3@3, ~@9 c4@5 ~@2, ~@11 e4@5",
  E: "~ f4@7 ~@8, [a3,d4] ~", F: "~@3 bb3 ~@3 c4, bb3@6 ~@4 c4@3 e4@3, ~ [d4,f4]@7 ~@4 g3@4",
  G: "~@5 f4@3 ~@8, ~ [bb3,d4] ~@2", H: "~ d4@5 ~@5 f4@2 ~ f4@2, a3@3 a3@2 a3@3, ~ f4@10 ~@5, ~@7 d4@6 d4@3",
  I: "~ f4@7 ~@8, [bb3,d4] ~", J: "~@7 d4 ~@2 e4@2 ~@2 c4@2, bb3@6 bb3@2 ~ g3@7, ~ [d4,f4]@7 ~@4 c4@2 ~@2, ~@13 e4@3",
  K: "~ [c4,e4]@3 ~@2 a3@2 ~@2 c4@2 ~ e4 d4@2, a3@2 ~@4 a3 ~", L: "~@5 e4@3 ~@8, ~ [a3,c4] ~@2",
  M: "~ [c4,e4]@3 ~@3 c4 ~@3 e4 ~ c4 f4@2, a3@2 ~ a3 ~ a3 ~@2", N: "~ e4@3 ~@12, [a3,c4] ~@3",
  O: "~@3 a3 ~@3 bb3, a3@6 ~@4 bb3@3 d4@3, ~ [c4,f4]@7 ~@4 g3@4", // F5
  P: "~@7 c4 ~@3 d4@2 ~ d4@2, a3@3 a3 ~ g3@3, ~ [c4,f4]@7 ~@5 bb3@3", Q: "~ e4@7 ~@8, [a3,c4] ~",
  R: "~@7 c4 ~@2 d4@2 ~@2 bb3@2, a3@6 a3@2 ~ g3@7, ~ [c4,f4]@7 ~@4 bb3@2 ~@2, ~@13 d4@3", // F5
  S: "~@3 a3 ~@3 bb3, a3@6 ~@4 bb3@3 d4@3, ~ [c4,e4]@7 ~@4 g3@4", T: "~ f4@7 ~@8, [a3,c4] ~",
  U: "~ [d4,f4]@7 ~@6 c4@2, bb3@8 g3@2 g3@3 g3@3, ~@9 c4@5 ~@2, ~@11 e4@5", V: "~@3 a3@5, a3@3 ~@5, ~ f4@7, ~ d4@3",
  W: "~@3 d4 ~@4, bb3 ~, ~ d4@2 ~@5, ~ f4 ~@2",
  X: "~ [c4,e4]@3 ~@3 c4 ~@2 e4@2 ~@2 c4@2, a3@4 ~@2 a3@2 ~ a3@3 c4@2 ~@2, ~@13 e4@3", Y: "~@5 f4@3 ~@8, ~ [a3,c4] ~@2",
  Z: "~@7 c4 ~@3 d4@2 ~ d4@2, a3@3 a3 ~ g3@3, ~ [c4,e4]@7 ~@5 bb3@3", // C
  AA: "~ [c4,e4]@7 ~@3 d4 ~@2 d4@2, a3@4 g3!2 ~@2, ~@9 bb3@3 ~ bb3@3", // C
  AB: "~@7 c4 ~@2 d4@2 ~@2 bb3@2, a3@6 a3@2 ~ g3@7, ~ [c4,e4]@7 ~@4 bb3@2 ~@2, ~@13 d4@3", // C
  AC: "~ [c4,f4]@7 ~@6 bb3@2, a3@8 g3@2 g3@3 g3@3, ~@9 bb3@5 ~@2, ~@11 d4@5", AD: "~@3 c4@5, a3, ~ f4@3",
  AE: "~ e4@15, [g3,c4]", AF: "~@7 c4, a3@3 a3@3 a3@2, ~ f4@12 f4@3, ~ c4@9 c4@4 ~@2", AG: "~ f4@15, [a3,c4]",
  AH: "~@7 d4, bb3@3 bb3@3 bb3@2, ~ f4@12 f4@3, ~ d4@9 d4@4 ~@2",
  AI: "~ c4@5 ~@4 f4@2 ~@2 c4@2, a3@6 a3@3 a3@7, ~ f4@9 ~@3 f4@3, ~@7 c4@5 c4@2 ~@2",
  AJ: "~ [d4,f4]@5 ~ d4 ~@2 e4@2 ~@2 c4@2, bb3@6 bb3@2 ~ g3@7, ~@6 c4 ~, ~@13 e4@3", // Dm
  AK: "~@7 d4 ~@3 e4@2 ~ e4@2, bb3@3 bb3 ~ g3@3, ~ [d4,f4]@7 ~@5 c4@3", // Dm
  AL: "~ [c4,e4]@3 ~@3 c4 ~@2 e4@2 ~ e4 d4@2, a3@4 ~@2 a3@2 ~ a3@3 c4@2 ~@2", // C
})).s("gm_acoustic_guitar_steel").gain(0.18)

// chords · acoustic guitar steel · "G-Pick"
const acoustic_guitar_steel_3 = note(`<
  ~@4 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 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 BL BM BN BO BP BQ BR BS P BT BU BV BW BX BY BZ CA CB CC CD CE@2
>`.pickRestart({
  A: "~@2 f3!2 ~@3 e3, d4@3 ~@2 e4@3, ~ bb3@2 ~ e3@3 ~, ~@3 c4", B: "~@2 bb3!2 ~@3 c4, d4@3 ~@3 e4@2, ~ f3@2 ~ g3@4",
  C: "~@3 d4 d4@4, d4@3 ~@5, ~ a3@3 ~@4, ~ f3 ~@2", D: "bb3@4 ~@3 e4, ~ g3, ~@3 e3",
  E: "~@3 bb3 c4@4, bb3@3 ~@5, ~ d4@3 ~@4, ~ f3 ~@2", F: "~@7 f3, d4, ~@3 a3",
  G: "~@6 bb3@2 e4@7 c4, bb3@3 ~@5, ~ f3@3 ~@4, ~ d4 ~@2", H: "~ f3@3 c4@4, f3 ~@7, ~ [bb3,d4]@7 ~@8",
  I: "~@7 f3, a3@3 a3@3 a3@2, ~ f3@3 f3@3 ~, ~@2 d4@3 d4@3", J: "~ a3 ~ a3 e4@2 a3 d4, e3!2 ~@2",
  K: "~ e4 ~ e3 e3@2 e4 d4, c4 a3 ~@2", L: "c4@2 c4@2 a3@2 e4 f3", M: "~ e4 ~ e3 c4@2 e4@2, e3 a3 ~@2",
  N: "c4@4 ~@3 d4, ~ g3, ~@3 bb3", O: "~@6 e3@2 g3@7 d4, e3@3 ~@5, ~ e4@3 ~@4, ~ a3 ~@2",
  P: "~ f3@3 bb3@4, f3 ~@7, ~ [a3,c4]@7 ~@8", Q: "~@6 c4@2 d4@7 g3, a3 ~, ~ e3@3 ~@4, ~ e4 ~@2",
  R: "~ f3@3 g3@4, f3 ~@7, ~ [a3,c4]@7 ~@8", S: "~@3 c4 d4@4, e3 ~, ~ e4@3 ~@4, ~ a3 ~@2",
  T: "c4@4 ~@3 bb3, ~ g3, ~@3 d4", U: "~@6 c4@2 g3@7 d4, c4@3 ~@5, ~ f3@3 ~@4, ~ a3 ~@2",
  V: "~ f3@2 d4 g3@4, f3 ~@7, ~ [bb3,d4]@5 ~@10", W: "~@2 f3 d4 e4@4, d4@3 ~@5, ~ bb3@2 ~@5",
  X: "~@7 a3, a3@7 ~, ~@5 d4@3, ~@3 f3", Y: "~@3 bb3 ~@3 c4, bb3@3 ~@3 e3@2, ~ f3@3 g3@4, ~@2 d4@2 ~ e4@3",
  Z: "~@3 bb3 ~@3 c4, bb3@3 ~@3 g3@2, ~ d4@3 ~@4, ~ f3 e3@2",
  AA: "~@7 d4, f3@3 f3@3 f3@2, ~ d4@3 d4@3 ~, ~@2 a3@3 a3@3", AB: "~@3 d4 ~@3 e3, d4@3 ~ e4@4, ~ f3@3 ~@4, ~ bb3 ~ c4",
  AC: "~@6 bb3@2 e4@7 g3, bb3@3 ~@5, ~ d4@3 ~@4, ~ f3 ~@2", AD: "~@7 f3, f3 f3@6 ~, ~ d4@15, ~ a3@11 a3@4",
  AE: "~ c4 ~ c4 e4@2 e4 f3, e3 e4 ~@2", AF: "~ a3 ~ c4 ~ c4!2 d4, e4 a3 e4 ~", AG: "~ e3 ~ e4 c4@2 e4 d4, a3 c4 ~@2",
  AH: "~ a3 ~ a3 e4@2 ~ e3, e4 c4 ~ c4", AI: "~@3 c4 g3@4, c4@3 ~@5, ~ f3@3 ~@4, ~ a3 ~@2",
  AJ: "e4@4 ~@3 d4, ~ bb3, ~@3 g3", AK: "~@3 e3 ~@3 g3, e4@4 ~ d4@3, ~ c4@3 ~@2 bb3@2, ~@2 a3@2 g3@3 ~",
  AL: "~@3 e3 d4@2 ~ bb3, e3@3 ~@5, ~ c4@3 ~@2 d4@2, ~ a3 ~@2", AM: "~@3 f3 bb3@4, f3@3 ~@5, ~ c4@3 ~@4, ~ a3 ~@2",
  AN: "c4@4 ~@3 g3, ~ d4, ~@3 bb3", AO: "~@3 c4 d4@4, c4@3 ~@5, ~ a3@3 ~@4, ~ e4 ~@2", AP: "f3@4 ~@3 bb3, ~ d4",
  AQ: "~@6 f3@9 c4, f3@3 ~@5, ~@2 c4@13 ~, ~ a3@3", AR: "~@7 d4, f3 f3@7, ~ d4@13 ~@2, ~ bb3@11 bb3@4",
  AS: "~@3 g3@5, e4, ~ e3@7, ~ c4@3", AT: "~@7 a3, c4", AU: "~@7 a3, a3@3 a3@4 ~, ~ f3@4 f3@3, ~ c4@2 c4",
  AV: "~@7 f3, f3@3 f3@4 ~, ~ d4@4 d4@3, ~ bb3@2 bb3", AW: "~@7 e3, c4@3 c4@3 c4@2, ~ g3@3 g3@4, ~@2 e3@5 ~, ~@5 e4@3",
  AX: "~@7 f3, f3@3 f3@4 ~, ~ a3@4 a3@3, ~ c4@2 c4", AY: "~@4 f3@2 bb3@2 g3@7 e4, d4@3 ~@5, ~ bb3@2 ~@5",
  AZ: "~ f3@2 bb3 c4@4, f3 ~@7, ~ [bb3,d4]@5 ~@10", BA: "~@3 f3 ~@3 a3, f3@3 ~@3 d4@2, ~ a3@3 a3@3 ~, ~@2 d4@2 ~ a4@3",
  BB: "~@3 bb3 ~@3 c4, bb3@3 ~@5, ~ d4@3 ~@2 e4@2, ~ f3 g3@2", BC: "~@6 bb3@2 c4@7 e3, bb3@3 ~@5, ~ f3@3 ~@4, ~ d4 ~@2",
  BD: "~@7 a3, f3 f3@7, ~ d4@11 d4@4, ~ a3@9 a3@4 ~@2", BE: "~@6 d4@2 c4@7 e3, d4@3 ~@5, ~ bb3@3 ~@4, ~ f3 ~@2",
  BF: "~ f3@3 g3@4, f3 ~@7, ~ [bb3,d4]@7 ~@8", BG: "~@6 f3@9 d4, f3@3 ~@5, ~ a3@7, ~@4 d4@11 ~",
  BH: "~ a3 e4@2 e3@2 c4 f3, a3 ~@7, ~ [c4,e4]@3 ~@12", BI: "~ e4 ~ e4 e3@2 e3 f3, e3!2 ~@2",
  BJ: "~ e3 e3@2 e4@2 e3 d4, e3 ~@7, ~ [a3,c4]@3 ~@12", BK: "~ a3 ~ e3 c4@2 a3@2, e4!2 ~@2",
  BL: "a3@4 ~@3 d4, ~ bb3, ~@3 g3", BM: "~@3 c4 g3@4, c4@3 ~@5, ~ e3@3 ~@4, ~ a3 ~@2", BN: "e3@4 ~@3 d4, ~ bb3",
  BO: "~@3 e3 bb3@2 d4@2, a3 ~, ~ c4@3 ~@4, ~ e4 ~@2", BP: "f3@4 ~@3 g3, ~ bb3",
  BQ: "~@3 a3 g3@4, e3 ~, ~ c4@3 ~@4, ~ e4 ~@2", BR: "a3@4 ~@3 bb3, ~ g3, ~@3 d4",
  BS: "~@6 f3@2 bb3@7 d4, f3@3 ~@5, ~ a3@3 ~@4, ~ c4 ~@2", BT: "~@3 a3 d4@4, e4 ~, ~ e3@3 ~@4, ~ c4 ~@2",
  BU: "e3@4 ~@3 g3, ~ d4", BV: "~@3 c4 bb3@2 ~ d4, a3 ~, ~ e4@3 ~@4, ~ e3 ~ f3",
  BW: "~@3 c4 ~@3 g3, c4@3 ~@3 d4@2, ~ f3@3 g3@3 ~, ~@2 a3@2 ~ bb3@3", BX: "~@3 e4 d4@4, a3 ~, ~ e3@3 ~@4, ~ c4 ~@2",
  BY: "e3@4 ~@3 d4, ~ g3, ~@3 bb3", BZ: "~@3 e4 bb3@4, a3 ~, ~ c4@3 ~@4, ~ e3 ~@2", CA: "c4@4 ~@3 g3, ~ bb3, ~@3 d4",
  CB: "~@3 c4 ~@3 bb3, c4@3 ~@2 d4@3, ~ e3@3 ~@2 g3@2, ~@2 a3@2 bb3@3 ~",
  CC: "~@3 c4 ~@3 bb3, c4@3 ~ d4@4, ~ f3@3 ~@2 g3@2, ~ a3 ~@2", CD: "~@3 a3 d4@2 bb3@2, e3 ~, ~ e4@3 ~@4, ~ c4 ~@2",
  CE: "[f3@21 ~@11]/2",
})).s("gm_acoustic_guitar_steel").gain(0.32)

// chords · acoustic guitar steel · "G-Strum"
const acoustic_guitar_steel_4 = note(`<
  A B C@2 D E F G@2 H I J C K@2 L M N O P O Q R S T U V H W I C W X C Y Z AA AB P AC@2 AD AE AF AC Q AG AH AI AG@2 AH AJ
  AG AK AL AM I W C AN AO C AP L AQ AR AS O AT AU AV S AF AE T R AW AX AS AY O AF AE O AS AX AZ ~
>`.pickRestart({
  A: "[bb3,d4,f4]@6 ~@3 e4@7, ~ [g3,c4]", B: "~ f4@5 ~@3 e4@7, [bb3,d4]@3 ~ [g3,c4]@4", C: "~ f4@15, [a3,d4]",
  D: "~ f4@5 [bb3,d4,f4]@2 [g3,c4,e4]@8, [bb3,d4]@3 ~@5", E: "[bb3,d4,f4]@3 [bb3,d4,f4] [g3,c4,e4]@4",
  F: "~ f4@7 ~ a4@7, [a3,d4]!2", G: "[bb3,d4,f4] [g3,c4,e4]", H: "[a3,d4,f4]", I: "~ f4@7 ~ g4@7, [bb3,d4] [c4,e4]",
  J: "~ f4@7 [c4,e4,g4]@8, [bb3,d4] ~", K: "~ e4@3 [a3,c4,e4]@4 ~ e4@3 [a3,c4,e4]@2 [a3,d4,f4]@2, [a3,c4] ~ [a3,c4] ~",
  L: "[a3,c4,e4]@4 [a3,c4,e4]@4 ~ e4@3 [a3,c4,e4]@2 [a3,d4,f4]@2, ~@2 [a3,c4] ~", M: "[a3,c4,e4]!4",
  N: "~ f4@7 ~ d4@7, [a3,c4] [g3,bb3]", O: "[a3,c4,e4]@8 ~ g4@7, ~ [bb3,d4]", P: "[a3,c4,f4] [g3,bb3,d4]",
  Q: "~ f4@7 [bb3,d4,g4]@8, [a3,c4] ~", R: "~ e4@7 ~ g4@7, [a3,c4] [bb3,d4]", S: "~ e4@7 [g3,bb3,d4]@8, [a3,c4] ~",
  T: "[a3,c4,f4]@8 ~ d4@7, ~ [g3,bb3]", U: "~ f4@5 [bb3,d4,f4]@2 ~ e4@7, [bb3,d4]@3 ~ [g3,c4]@4",
  V: "[bb3,d4,f4]@6 ~ f4 [c4,e4,g4]@8, ~@3 [bb3,d4] ~@4", W: "[bb3,d4,f4] [c4,e4,g4]",
  X: "~ f4@7 ~ e4@7, [bb3,d4] [g3,c4]", // Bb C5
  Y: "[a3,c4,e4]@4 ~ e4@3 [a3,c4,e4]@4 ~ e4 [a3,d4,f4]@2, ~@2 [a3,c4]@2 ~@2 [a3,c4] ~", // Am Dm Am
  Z: "~ e4@3 ~ e4@3 [a3,c4,e4]@4 [a3,c4,e4]@2 ~ f4, [a3,c4]@2 [a3,c4]@2 ~@3 [a3,d4]", // Am D5
  AA: "[a3,c4,e4]@4 ~ e4@3 ~ e4@3 ~ e4 ~ f4, ~@2 [a3,c4]@2 [a3,c4]@2 [a3,c4] [a3,d4]", // Am D5
  AB: "[a3,c4,e4]@4 [a3,c4,e4]@4 ~ e4@3 ~ e4@3, ~@2 [a3,c4]!2", AC: "[a3,c4,e4]@8 ~ d4@7, ~ [g3,bb3]",
  AD: "[a3,c4,e4]@8 [bb3,d4,g4]@4 ~ f4@3, ~@3 [bb3,d4]", AE: "[a3,c4,f4]@8 ~ g4@7, ~ [bb3,d4]",
  AF: "[a3,c4,e4] [g3,bb3,d4]", AG: "~ f4@15, [a3,c4]", AH: "[bb3,d4,f4]", AI: "[g3,c4,e4]", AJ: "~ g4@15, [c4,e4]",
  AK: "~ f4@5 ~ f4 [g3,c4,e4]@8, [bb3,d4]@3 [bb3,d4] ~@4", AL: "[bb3,d4,f4]@6 ~ f4 [g3,c4,e4]@8, ~@3 [bb3,d4] ~@4",
  AM: "[a3,d4,f4] [a3,d4,a4]", AN: "~ f4@7 [g3,c4,e4]@8, [bb3,d4] ~", AO: "[bb3,d4,f4]@8 ~ e4@7, ~ [g3,c4]",
  AP: "~ e4@3 [a3,c4,e4]@4 ~ e4@3 [a3,c4,e4]@2 ~ f4, [a3,c4]@2 ~@2 [a3,c4]@2 ~ [a3,d4]", // Am D5
  AQ: "[a3,c4,e4]@4 [a3,c4,e4]@4 [a3,c4,e4]@4 ~ e4 [a3,d4,f4]@2, ~@6 [a3,c4] ~", // Am Dm Am
  AR: "~ e4@3 [a3,c4,e4]@4 [a3,c4,e4]@4 ~ e4@3, [a3,c4] ~@2 [a3,c4]", AS: "~ f4@7 [g3,bb3,d4]@8, [a3,c4] ~",
  AT: "~ e4@7 [bb3,d4,g4]@8, [a3,c4] ~", AU: "~ e4@7 [g3,bb3,d4]@4 ~ f4@3, [a3,c4]@2 ~ [bb3,d4]",
  AV: "~ f4@7 ~ g4@7, [a3,c4] [bb3,d4]", AW: "~ e4@7 ~ d4@7, [a3,c4] [g3,bb3]",
  AX: "~ e4@7 [bb3,d4,g4]@4 [bb3,d4,f4]@4, [a3,c4] ~", AY: "[a3,c4,e4] [bb3,d4,g4]", AZ: "~ [c4,d4,f4]@7 ~@8, f3@7 ~@9",
})).s("gm_acoustic_guitar_steel").gain(0.4)

// chords · acoustic guitar steel · "Guitar Fill"
const acoustic_guitar_steel_5 = note("<A B C@2 ~@42 D E F G H I J K ~@35>".pickRestart({
  A: "[d4,f4]@2 [e4,g4] [f4,a4] [d4,f4]@4 [e4,g4]@2 [f4,a4] [g4,bb4] [e4,g4]@4", // Dm Em F Dm Em F Gm Em
  B: "[d4,f4]@2 [e4,g4] [f4,a4] [d4,f4]@4 [e4,g4]@2 [f4,a4] [g4,bb4] [e4,g4]@2 [a3,c4]@2", // Dm Em F Dm Em F Gm Em …
  C: "[[a4,d5]@2 [g4,c5]@2 [f4,bb4] [e4,a4]@2 [d4,g4] [c4,f4]@4 [a3,c4]@2 [c4,f4] c4@7 ~@10, ~@15 a3@5 ~@12]/2", // D5 C5 Bb5 A5 G5 F5 Am F5
  D: "[f4,c5]@12 [a4,c5] [g4,a4] [f4,a4]@2", E: "[g4,c5]@2 [f4,g4] [d4,f4]@9 [a4,c5] [g4,bb4] [f4,a4]@2",
  F: "[g4,c5]@2 [f4,a4] [c4,g4]@8 ~ [a4,c5] [g4,a4] [f4,a4]@2", G: "[g4,d5]@2 [c4,c5] [f4,a4]@11 ~@2",
  H: "[f4,a4]@12 [a4,d5] [g4,c5] [f4,a4]@2", I: "[g4,c5]@2 [f4,bb4] [d4,bb4]@9 [a4,d5] [g4,c5] [f4,a4]@2",
  J: "[g4,c5]@2 [f4,bb4] [c4,g4]@7 ~ [c4,f4] [a4,c5] [g4,bb4] [f4,a4]@2", K: "[g4,c5]@2 [c4,f4] [f4,a4]@11 ~@2",
})).s("gm_acoustic_guitar_steel").gain(0.79)

// chords · epiano2 · "Piano"
const epiano2 = note(`<
  ~@4 A B C D E F D G H I J K L M N O P M Q R S B T U V W X D Y X Z I AA AB AC AD M AE S AF AG AH AI AJ AK AL AM AN AO
  AP B A AQ D AR AS D AR AT AU J AV AW O AD AX AY AZ O AD Q M N AZ AY S M BA S AC BB M BC BD@2
>`.pickRestart({
  A: "[d4,f4,bb4]@3 [bb3,d4,f4] [g3,c4,e4]@4", B: "[bb3,d4,f4]@3 [d4,f4,bb4] [c4,e4,g4]@4", C: "[d4,f4,a4] [a3,d4,a4]",
  D: "[bb3,d4,f4] [c4,e4,g4]", E: "[d4,f4,bb4] [c4,e4,g4]", F: "d4@3 d4, [f4,a4]", G: "[bb3,d4,f4] [g3,c4,e4]",
  H: "[d4,f4,a4]!2", I: "[a3,c4,e4]@2 [a3,c4,e4]@2 [c4,e4,a4]@2 [a3,c4,e4] [a3,d4,f4]",
  J: "[c4,e4,a4]@2 [a3,c4,e4]@2 [c4,e4,a4]@2 [a3,c4,e4] [a3,d4,f4]", // Am Dm
  K: "[a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4] [a3,d4,f4]", L: "[a3,c4,e4]!2 [c4,e4,a4] [a3,c4,e4]",
  M: "[c4,f4,a4] [g3,bb3,d4]", N: "[a3,c4,e4] [d4,g4,bb4]", O: "[c4,f4,a4] [bb3,d4,g4]",
  P: "[a3,c4,e4]@3 [a3,c4,e4] [bb3,d4,g4]@4", Q: "[c4,f4,a4] [d4,g4,bb4]", R: "[c4,e4,a4] [g3,bb3,d4]",
  S: "[a3,c4,f4] [g3,bb3,d4]", T: "[d4,f4,bb4]@3 [bb3,d4,f4] [c4,e4,g4]@4", U: "[a3,d4,f4]@3 [a3,d4,f4]@5",
  V: "[bb3,d4,f4]@3 [bb3,d4,f4] [g3,c4,e4]@4", W: "[d4,f4,bb4]@3 [d4,f4,bb4] [c4,e4,g4]@4", X: "[a3,d4,f4]",
  Y: "[d4,f4,bb4]@3 [d4,f4,bb4] [g3,c4,e4]@4", Z: "[c4,e4,a4]@2 [c4,e4,a4]@2 [a3,c4,e4]@2 [c4,e4,a4] [d4,f4,a4]",
  AA: "[a3,c4,e4]@2 [a3,c4,e4]@2 [c4,e4,a4]@2 [c4,e4,a4] [d4,f4,a4]", AB: "[c4,e4,a4] [a3,c4,e4]!3",
  AC: "[a3,c4,f4] [bb3,d4,g4]", AD: "[c4,e4,a4] [bb3,d4,g4]", AE: "[c4,e4,a4]@2 [d4,g4,bb4] [d4,f4,bb4]",
  AF: "[a3,c4,f4]@3 [a3,c4,f4] [d4,g4,bb4]@4", AG: "[a3,c4,e4] [g3,bb3,d4]", AH: "[a3,c4,f4] [d4,g4,bb4]",
  AI: "[a3,c4,f4] [c4,f4,a4]", AJ: "d4@3 d4, [f4,bb4]", AK: "c4@5 ~@2 g3, [e4,g4], ~@5 c4@3", AL: "[c4,f4,a4]",
  AM: "[c4,f4,a4]!2", AN: "[bb3,d4,f4]", AO: "[g3,c4,e4]", AP: "[a3,c4,f4]", AQ: "[a3,d4,f4] [a3,d4,a4]",
  AR: "[d4,f4,bb4] [g3,c4,e4]", AS: "d4@5 ~@2 a3, f4, a3@7 ~, ~@5 d4@3", AT: "f4@2 ~ d4, a3, d4@3 ~, ~ f4",
  AU: "[a3,c4,e4]@2 [c4,e4,a4]@2 [a3,c4,e4]@2 [a3,c4,e4] [d4,f4,a4]", // Am Dm
  AV: "[c4,e4,a4]@2 [a3,c4,e4]@2 [a3,c4,e4]@2 [c4,e4,a4] [d4,f4,a4]", AW: "[c4,e4,a4] [a3,c4,e4]!2 [c4,e4,a4]",
  AX: "[c4,f4,a4]@3 [c4,f4,a4] [bb3,d4,g4]@4", AY: "[c4,e4,a4]@2 [g3,bb3,d4] [bb3,d4,f4]",
  AZ: "[c4,f4,a4]@3 [a3,c4,f4] [g3,bb3,d4]@4", BA: "[a3,c4,e4] [bb3,d4,g4]", BB: "[c4,e4,a4] [d4,g4,bb4]",
  BC: "[a3,c4,e4]@2 [d4,g4,bb4] [d4,f4,bb4]", BD: "[[c4,f4] ~, f3@23 ~@9]/2",
})).s("gm_epiano2").gain(0.56)

// drums · kick
const kick = s("bd").struct("<A@12 B A@3 B A@3 B A@32 C A@28 B A@4 ~@2>".pickRestart({
  A: "x ~@2 x!3 ~@2", B: "x ~@2 x!2 ~@3", C: "x ~@2 x ~ x ~ x",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct("<A@12 B C@3 D A@3 B A@12 E C@4 A@15 F A@8 G A@11 H A@7 B A@4 ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@4 x!2 ~@5", C: "x!4", D: "x ~@3 x ~@3 x ~ x ~ x!3 ~", E: "~@4 x ~@4 x ~@5 x",
  F: "~@4 x ~@3 x!2 ~@3 x ~@2", G: "~@4 x ~@5 x!2 ~ x ~@2", H: "~@4 x ~@5 x!2 ~@4",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct(`<
  A@12 B C A C B A@3 B A@3 B A C A@6 B A@19 B A@8 B A@11 B A B A@5 B A@4 D ~
>`.pickRestart({
// … 37 more lines

More by Bob Welch