Strudelify
So Far Away cover art

1971 · Tapestry

So Far Away

Carole King

KeyD majorTempo71 bpm
0:00/0:00
// So Far Away — Carole King
// 71 bpm, 4/4, key D 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: Full arrangement: all 67 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(71/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 · piano · "A.PIANO 2"
const piano = note(`<
  A@2 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@2 AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU
  AV I AW AX AY AZ BA BB BC BD BE I J K L M BF@2
>`.pickRestart({
  A: "[d2,e3]@2 a2 ~ e3 ~ [g2,a3,b3,d4,f#4]@6 a3 b3 d4 a2, [f#3,c#4] ~@3", // Dsus2 Gmaj7 F#5
  B: "[d2,e3]@2 a2 ~ e3 ~@10 a2, [f#3,c#4]@2 ~ [g2,a3,b3,d4,f#4]@5, ~@7 d3", // Dsus2 F#5 Gmaj7
  C: "[d2,e3]@2 a2 ~ e3@2 [g2,a3,b3,d4,f#4]@9 ~, [f#3,c#4] ~@3", // Dsus2 Gmaj7 F#5
  D: "~@4 f#3@2 f#3@2 [f#3,a3,b3,d4]@4 f#3@2 ~ d3, d2!2, [f#3,a3,c#4,e4] [a3,c#4,e4] ~ [a3,b3,d4], ~ d3@3 ~@3 f#3", // Bm7 F#m7 A Bm7
  E: "f#3@2 f#3@2 f#3@2 ~ d3 f#3@2 f#3@2 ~@2 d3@2, d2!2, [a3,c#4,e4]!2 [a3,b3,d4] ~, ~@3 f#3 ~@2 [f#3,a3,b3,d4]@2", // A Bm7
  F: "g3@2 g3@2 g3@2 g3@2 g3 ~ g3@2 g3@2 ~ f#2, g2!2, [b3,d4,f#4]!2 [b3,d4,e4]!2, ~@7 g3", // Bm E7
  G: "g3 ~ g3@2 g3@2 ~ e2 g3 ~ g3@2 g3@2 ~ a2, e2@3 g3 a2@3 g3, [b3,d4,e4]!2 [b3,d4]!2", // E7 Bm
  H: "[a3,c#4,f#4] ~ [a3,c#4,f#4]@2 [d3,b3,d4,g4]@2 d3@8 d3@2, d2@3 [d2,a3,c#4,f#4]@5", // F#m G Dmaj7
  I: "[g2,g3,b3,d4,f#4] [f#2,a3,c#4,e4] [e2,g3,b3,d4] [a2,g3,b3,d4]", // Gmaj7 F#m7 Em7 G
  J: "~@7 d3 ~@4 [f#3,a3]@3 d3, [d2,f#3,a3,c#4,e4]@7 c#4@3 b3@6, ~@3 d3@3 d4@2 d2@8, ~ a4 ~@2, ~@5 f#4@3 ~ d3@6 ~", // F#m Dmaj7
  K: "~@4 f#3@2 ~ d3 a3@3 ~@4 [d3,e4], d2 [d2,f#3], [f#3,a3,e4]@4 [a3,c#4,e4]@4 [b3,d4]@5 b3@3, ~@2 d3@4 f#3@2 ~@3 d3@3 d4@2, ~@3 a3", // Dsus2 D F#m7 A Bm
  L: "~@7 g2 [g3,b3,d4,e4]@4 g3@2 ~ f#2, g2@7 ~ g2@8, f#4 [b3,d4,f#4] ~ [b3,d4,e4], ~ a3@2 a3 ~@3 g3", // Em7 Bm E7
  M: "g3 ~ g3@2 g3@2 ~ e2 [g3,b3,d4]@4 g3@2 ~ a2, [e2,d4]@8 a2@7 ~, b3 [b3,e4] ~ [b3,d4], ~@3 g3 ~@3 g3", // G E7 E5 Bm
  N: "[a3,c#4,f#4] ~ [a3,c#4,f#4]@2 [d3,b3,d4,g4]@2 a3@6 ~@2 d3@2, d2@3 [d2,c#4,f#4]@5, ~@3 d3@4 ~, ~@3 a3", // F#m G Dmaj7
  O: "[g2,a3,b3,d4,f#4] [f#2,a3,c#4,e4] [e2,g3,b3,d4] [a2,g3,b3,d4]", // Gmaj7 F#m7 Em7 G
  P: "~@8 f#3@2 ~@2 f#3@2 ~ d3, d2@7 d2@9, [f#3,a3,c#4,e4]@4 [f#3,a3,c#4,e4]@4 [a3,d4]@3 d3@3 f#3@2, ~ d3@2 d3 ~ f#3 [a3,b3,d4]@2", // F#m7 D5 Bm7
  Q: "f#3@2 ~@2 f#3@2 ~@2 f#3@2 ~ d3 a3 ~@2 c#3, d2@3 f#3 [d3,a3,d4]@2 [c#3,c#4,e4]@2, [a3,c#4,e4]@3 d3@4 d2@5 ~@4, ~ f#3 [a3,c#4,e4]@2 ~ f#3 ~ a3", // D5 C#m A
  R: "a3 ~ a3@2 a3@2 ~ b2 a3 ~ a3@2 a3@2 ~ a2, b2@3 a3 a2@3 a3, [b3,d4,f#4]!2 [d4,f#4]!2", // Bm D
  S: "[g3,b3,d4]@4 g3@2 ~ g2 g3@2 ~ g2 a3 a3@3, [g2,f#4]@2 [g2,b3,d4,f#4] [f#2,d4,f#4], ~ [b3,d4] ~@2, ~@3 g3 ~ g3 ~@2", // G Gmaj7 D Bm
  T: "g3 ~ g3@2 g3@2 ~ b2 g3 ~@3 g3@2 g3@2, [e2,b2]@2 [a2,b3,d4] ~, [b3,d4,e4]@4 [b3,d4,e4]@4 ~@3 a2@5, ~@3 g3 ~ g3 [b3,d4]@2", // E5 Bm7 E7 Bm
  U: "~@2 f#3 ~@4 [d3,c#4], d2@3 f#3@5, [f#3,a3,c#4,e4] e4@3, ~@2 d3@2 c#4@3 d3 [c#4,f#4]@2 a3 d3 [a3,f#4]@4, ~ a3 [d2,a4]@2", // Dmaj7 F#m7 F#5 D D5
  V: "a3 ~ a3 ~@2 c#4 ~ [f#2,a3], f#2@3 a3 a3@3 ~, [c#4,f#4]@3 f#3@4 f#2@7 ~@2, ~ a3 [c#4,f#4,a4]@2 f#4@4, ~@2 f#3 [f#3,c#4]", // F#m F#5 F#m F#5
  W: "g3 ~ g3@2 g3@2 ~@2 g3@2 g3@2 g3@2 ~ e3, e2, [b3,d4,e4]@4 [b3,d4,e4]@3 e3@7 g3@2, ~@3 g3 [b3,d4,e4,g4]@2 [b3,d4,e4,g4]@2", // E7 Em7
  X: "g3 ~ g3@2 g3@2 ~ a2 ~@2 a3@2 a3@2 ~ b2, a2@3 g3 b2@3 a3, [b3,d4]!2 [b3,d4,f#4]!2", // Bm
  Y: "g3 ~ g3@2 g3@2 [e3,g3]@2 g3 ~ g3@2 g3@2 [a2,g3]@2, e2@4 a2@3 ~, [b3,d4,e4]!2 [b3,d4]!2", // Em A7 E7 Bm
  Z: "f#3 ~ f#3@2 [f#3,a3]@2 ~ d3 f#3 ~ f#3@2 f#3@2 ~ d3, d2!2, [a3,c#4,e4]@2 [c#4,e4]@2 ~@3 f#3, ~@3 [f#3,a3] [a3,b3,d4]@2 [a3,b3,d4]@2", // F#m A C#m F#m Bm7
  AA: "[a3,c#4,e4]@4 f#3 ~@2 d3 f#3 ~ f#3@2 ~@2 d3@2, d2!2, f#3 ~@3 [a3,c#4,e4]@4 [a3,b3,d4]@4 ~@4, ~@3 f#3 ~@2 [f#3,a3,b3,d4]@2", // A Bm7
  AB: "g3 ~ g3@2 g3@2 ~ d3 g3 ~ g3@2 g3@2 [d3,g3]@2, [g2,d3] g2, [b3,d4,f#4]!2 [b3,d4,e4]!2, ~@3 g3 ~@4", // G5 Bm E7
  AC: "g3 ~ g3@2 g3@2 ~ e3 g3 ~@3 g3@2 ~ a2, e2@4 [a2,b3,d4]@2 ~ g3, [b3,d4,e4]@4 [b3,d4,e4]@4 ~@3 a2@4 ~, ~@3 g3 ~ g3 [b3,d4]@2", // Bm7 E7 Bm
  AD: "[[a3,c#4,f#4] ~ [a3,c#4,f#4]@2 [d3,b3,d4,g4]@2 [a3,f#4]@6 ~@2 d3@2 g3 ~ g3@2 [f#2,f#3,a3,c#4,e4]@4 [e2,e3,g3,b3,d4,e4]@4 [a2,g3,b3,d4]@4, d2@3 [d2,c#4]@5 [g2,d3,b3,d4]@2 ~@6, ~@3 d3@4 ~@9, ~@3 f#4@2 ~@3, ~@3 a3 ~@4]/2", // F#m G D F#m7 Em7 G Dmaj7 G
  AE: "a3 ~@3 f#4@3 ~@4 d3@2 ~@2 f#3, d2, a4@10 a3@3 [f#3,a3,b3,d4]@3, c#4@3 d3@4 d3@2 c#4@4 ~ d3@2, [d3,f#4]@2 a3@6 f#4@5 ~@3", // Bm7 D
  AF: "f#3@2 f#3@2 f#3@2 ~ d3 a3@3 ~@4 e4, d2@4 [d2,f#3]@3 d4, [a3,c#4,e4]@4 [a3,c#4,e4]@4 [b3,d4]@5 b3@3, ~@6 f#3@2 ~@3 d3@5, ~@3 a3", // D A Bm
  AG: "~@2 d3 ~@4 d3 g3 ~@3 g3@2 g3@2, [g2,f#4] g2, ~@3 d3@3 a3@2 ~@2 g3@2 ~@4, ~@4 d4@4 ~@3 d3@5, ~@5 b3@3 [b3,d4,e4]@4 [b3,d4,e4]@4", // Gmaj7 E7
  AH: "[e2,e3,g3,b3,d4] ~ [e2,e3,g3,b3,d4]@2 [a2,g3,b3,d4,g4]@12", // Em7 G
  AI: "[g3,b3,d4]@4 g3@2 ~ d3 g3 ~ g3@2 [g3,b3,d4]@4, g2 a2, ~ [b3,d4]!2 ~, ~@3 g3 ~@4", // G Bm
  AJ: "g3 ~ g3@2 g3@2 ~ b2 g3 ~ g3@2 g3@2 ~ a2, e2@8 a2@7 ~, [b3,d4,e4]!2 [b3,d4]!2, ~@3 g3 ~@3 g3", // E7 Bm
  AK: "g3 ~ g3@2 g3@2 ~ e3 g3 ~ g3@2 g3@2 ~ a2, e2@8 a2@7 ~, [b3,d4,e4]!2 [b3,d4]!2, ~@3 g3 ~@3 g3", // E7 Bm
  AL: "f#3 ~ f#3@2 f#3@2 ~ d3 a3 ~@3 a3@2 [d3,a3]@2, d2 [d2,e4,f#4], [a3,c#4,e4]@4 [a3,c#4,e4]@4 c#4@3 d3@3 ~@2, ~@3 f#3 ~ a3 [c#4,a4]@2", // D5 D A F#m
  AM: "a3 ~ a3@2 a3@2 ~ f#2 a3@2 a3@2 a3@2 ~ f#3, [f#2,f#3]!2, [c#4,f#4,a4] a4@3, ~ [c#4,f#4] [c#4,e4,f#4]!2, ~@3 a3 ~@3 a3", // F# F#m F#5 F#7
  AN: "[g3,b3,d4,e4]@2 g3 ~ g3 ~@2 [e2,e4], e2@7 ~, a3 ~@3 d4@6 g3@2 [g3,b3,d4]@4, ~@4 [b3,e4]@3 e3 b3@3 e3@5, ~@3 g3 e4@3 ~", // Em7 E G E5
  AO: "g3 ~ g3@2 [g3,b3,d4]@3 a2 a3@2 a3@2 a3@2 ~ b2, a2@7 ~ b2@6 a3@2, [b3,d4] ~ [b3,d4,f#4]!2", // G Bm
  AP: "[e2,g3,b3,d4,e4] [e2,e3,g3,b3,d4,e4]@3", AQ: "[a2,g3,b3,d4]",
  AR: "~@4 f#3@2 ~ d3 f#3 ~ f#3@2 ~@3 d3, d2!2, [f#3,a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,b3,d4]@2 f#3!2, ~ d3@2 f#3 ~@2 [a3,d4]@2, ~@13 b3@3", // F#m7 A Bm7 D5
  AS: "f#3@2 f#3@2 f#3@2 [d2,f#3]@2 f#3 ~@5 d3@2, d2@3 ~ [d2,a3,b3]@4, [a3,c#4,e4]@4 [a3,c#4,e4]@4 [d3,d4]@3 d3@3 ~@2, ~@5 f#3 [f#3,d4]@2", // D Bm7 A D
  AT: "[g3,b3,d4,f#4]@3 ~ g3@2 ~ d3 g3@2 g3@2 g3@2 g3@2, g2!2, ~@3 d3@3 g3@2 ~@8, ~ [b3,d4,f#4] [b3,d4,e4]!2", // Gmaj7 Bm E7
  AU: "g3 ~@6 e3 g3 ~@3 [g3,b3,d4]@2 ~ a2, e2@2 [a2,b3,d4] ~, [b3,d4]@3 [b3,d4] ~@4, e4@3 e3@4 ~@4 a2@4 ~, ~ g3 [g3,e4]@2 ~ g3 ~ g3", // G Bm7 Bm C
  AV: "[d2,a3,c#4,f#4] ~ [d2,a3,c#4] ~ [d2,d3,b3,d4,g4]@2 d3@8 d3@2, ~ f#4 ~ [d2,a3,c#4,f#4]@5", // Dmaj7 G Dmaj7
  AW: "~@4 f#3@2 ~ d3 f#3 ~ f#3@2 f#3@2 ~ d3, d2!2, [f#3,a3,c#4,e4] [a3,c#4,e4] [a3,b3,d4]!2, ~ d3@2 f#3 ~@3 f#3", // F#m7 A Bm7
  AX: "[a3,c#4,e4]@4 f#3@2 ~ d3 a3@3 ~@4 e4, d2@4 d2@3 d4, f#3 ~@3 [a3,c#4,e4]@4 [b3,d4]@5 b3@3, ~@6 f#3@2 f#3 ~@2 f#3@5, ~@3 [d3,a3]", // A Bm D5
  AY: "a3 ~ a3@2 a3@2 ~ d3 g3@2 g3@2 g3@2 [d3,g3]@2, g2!2, [d4,f#4] [b3,d4,f#4] [b3,d4,e4]!2, ~@3 a3 ~@4", // G5 D Bm E7
  AZ: "g3 ~ g3@2 g3@2 g3@2 g3 ~ g3@2 g3@2 ~ a2, e2@4 a2@3 g3, [b3,d4,e4]!2 [b3,d4]!2", // E7 Bm
  BA: "f#3 ~ f#3@2 f#3@2 ~ d3 f#3 ~ f#3@2 f#3@2 ~ d3, d2!2, [a3,c#4,e4]!2 [a3,b3,d4]!2, ~@3 f#3 ~@3 f#3", // A Bm7
  BB: "[a3,c#4,e4]@3 ~ f#3@2 ~ d3 f#3 ~@6 d3, d2!2, f#3 ~@2 d3@3 f#3@2 d4@3 d3@4 ~, ~@2 [a3,c#4,e4]@2 [a3,b3]@3 [a3,b3], ~@5 f#3 [f#3,d4]@2", // A Asus2 D
  BC: "[g3,b3,d4,f#4]@4 g3@2 ~ d3 g3 ~@3 g3@2 g3@2, g2!2, ~@4 [b3,d4,f#4]@4 [b3,d4,e4]@3 d3@5, ~@3 g3 ~ g3 [b3,d4,e4]@2", // Gmaj7 Bm E7
  BD: "g3 ~ g3@2 g3@2 ~ e3 g3 ~ g3@2 g3@2 ~ a2, [e2,d4]@8 a2@7 ~, [b3,e4]!2 [b3,d4]!2, ~ e3@2 g3 ~@3 g3", // E7 E5 Bm
  BE: "[d2,a3,c#4,f#4] ~ d2@2 [d2,d3,b3,d4,g4]@2 ~@6 a4@4, ~ [a3,c#4,f#4]@2 [d2,d3,a3,c#4,f#4]@5, ~@5 c#5@3", // Dmaj7 G F#m Dmaj7
  BF: "[[d2,d3,a3,d4,f#4] ~ [d2,d3,a3,d4,f#4]@2 [d2,d3,b3,d4,g4]@2 [d2,d3,a3,d4,f#4,a4]@23 ~@3]/2", // D G D
})).s("gm_piano").gain(0.38).pan(0.6)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@4 A B C D E F G@2 H I J K L M N O P Q R S T U V@2 H I E F W X H Y Z I AA AB AC S AD AE AF J AG AH D W K J AG AH D W
  AG AH D AI F G@2 H I AJ@2
>`.pickRestart({
  A: "d2 a2", B: "d2@2 a2 d3", C: "g3", D: "e3 a3", E: "d3@15 ~", F: "g3 f#3 e3 a3",
  G: "[d3@24 ~@2 a3 [g3,a3] f#3 e3 d3 b2]/2", H: "g2@7 f#2", I: "e2 a2", J: "d2@15 ~", K: "g2 f#2 e2 a2", L: "d2",
  M: "d3@7 ~ d3@4 c#3@3 ~", N: "b2@3 b2 a2@3 a2", O: "g2@3 f#2", P: "e2@3 e2 a2@4", Q: "d2@12 e3 d3 c#3 b2",
  R: "f#2@3 c#3", S: "[e2,e3]@15 ~", T: "[a2,a3]@7 ~ [b2,b3]@8", U: "[e2,e3] [a2,a3]",
  V: "[~@16 d2@10 a3 g3 f#3 e3 d3 b2, d3@25 ~@7]/2", W: "d3", X: "d2@10 a3 g3 f#3 e3 d3 b2", Y: "e2 ~ e2@2 a2@12",
  Z: "g2 a2", AA: "e2@8 a2@7 ~", AB: "d2@12 d3 ~ c#3 a2", AC: "f#2@3 f#3", AD: "[a2,a3] [b2,b3]", AE: "e2@3 ~ e2@12",
  AF: "a2@7 a2", AG: "d2@3 d3", AH: "g3@7 f#3", AI: "d3@3 d2@5", AJ: "[d2 ~ d2 ~ d2@2 d1@26]/2",
})).s("gm_acoustic_bass").gain(0.38)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  ~ A B C D E F G H I J K L@2 M N O P Q@2 R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK@2 AL@2 AM AN AO AP AQ AR M
  AS AT AU AV AW AX AY AZ BA M I J K L@2 BB@2
>`.pickRestart({
  A: "d4@2 c#4@2 a3@2 f#3 ~ e3@2 a3@2 f#3@2 d3@2", B: "~@2 a3@6 ~@2 a2 b2 d3@2 b2@2, e3 ~",
  C: "e3@3 e3 f#3 g3 a3@4 d4@4 ~@2", D: "e4@2 ~ f#3 d4@2 d4@2, a3 [a3,b3], ~ e4 ~@2",
  E: "c#4!2 [a3,b3,d4]@2, [a3,e4] ~", F: "f#4!2 ~ [b3,d4], [b3,d4] e4, ~@10 g3@5 ~",
  G: "e4@2 ~ g3 ~@2 d4@2, [b3,d4]@3 ~ b3@4, ~ e4 d4 ~, ~@5 g3@3", H: "[c#4,f#4] ~ [c#4,f#4]@2 [d4,g4]@2 [a3,f#4]@10",
  I: "[g3,b3,d4,f#4] [f#3,a3,c#4,e4] [e3,g3,b3,d4] [g3,b3,d4]", // Gmaj7 F#m7 Em7 G
  J: "e4@4 [f#3,e4]@4 f#3 ~@5 f#3@2, [a3,c#4] d4, ~@5 f#3@2 ~, ~@3 [a3,b3]", // F#7 A Asus2
  K: "~ f#3 ~ f#3 [a3,b3,d4]@4, [a3,c#4] [a3,e4] ~@2", // Bm7 A A5
  L: "[[g3,f#4]@4 [g3,f#4]@4 [g3,e4]@4 [g3,e4]@3 ~@5 e4@4 d4@4 d4@4, [b3,d4]@8 [b3,d4]@7 g3@2 ~ g3@6 ~@8, ~@2 [b3,d4] b3]/2", // Gmaj7 C Bm
  M: "[a3,f#4] ~ [a3,f#4]@2 [b3,g4]@2 [a3,f#4]@10", N: "[g3,b3,d4,f#4] [a3,c#4,e4] [g3,b3,d4]!2",
  O: "[f#3,e4]!2 [a3,d4] [f#3,a3,d4], [a3,c#4] b3", // F#7 D5 D A
  P: "[f#3,a3,c#4,e4]@4 f#3 ~ f#3@2 a3@2 a3@2 a3@4, ~@2 [a3,c#4,e4]@2 d4@2 c#4 ~", // F#m7 A
  Q: "[d4@4 ~@2 f#3@2 ~@4 f#4@3 ~ [g3,d4]@4 d4@4 ~@2 g3@2 a3@2 a3@2, [a3,b3]@2 [a3,d4]@2 b3@3 ~, f#3@3 ~@7 g3@3 ~@3, ~@4 d4@4 ~@7 f#4@12 ~@5, ~@6 d4!2]/2", // G5 Asus2 D5
  R: "[b3,e4]@2 g3!2 [g3,b3,d4]@2 [g3,b3,d4]@2, d4 ~, ~ [b3,e4] ~@2", // E5 G E5
  S: "[f#3,a3,c#4,e4]@2 [a3,c#4]@2 f#4 ~ a4@2, ~ [f#3,e4]@3, ~ [a3,c#4], ~@5 f#4@3", // F#m7 A F#7 A
  T: "c#4 ~ a3 [a3,c#4,e4], e4@3 ~, a3 ~, ~ [f#3,c#4]@2 ~", U: "e4@2 ~@5 e4, [b3,d4], ~@2 e4@5 ~, ~ g3",
  V: "d4@2 ~ g3 [f#3,b3,d4]@2 [b3,d4]@2, b3 ~, g3@3 ~@5, ~ d4 ~@2", W: "d4!2 g3!2, [e3,g3,b3] [b3,d4,g4]",
  X: "c#4@6 [f#3,a3,c#4,e4]@2 f#3 ~ f#3@2 [f#3,b3]@4, f#4 [a3,d4]", Y: "c#4@3 c#4 ~ a3@3, [a3,e4] [f#3,d4]",
  Z: "f#4 [g3,f#4] e4!2, [b3,d4]!2", AA: "[b3,e4]@2 ~ g3 [g3,d4]@2 [g3,d4]@2, d4 ~, g3@3 ~@5, ~ [b3,e4] [b3,g4]@2",
  AB: "[a3,c#4,f#4] ~ [a3,f#4] ~ [b3,g4]@2 [a3,f#4]@10", // F#m D Em D
  AC: "[g3,b3,d4,f#4]@4 [a3,c#4,e4]@4 [e3,g3,b3,d4]@3 ~ [b3,d4]@4, ~@11 g3@4 ~", // Gmaj7 A Em7 Bm
  AD: "[f#3,c#4]@2 f#3!2 [a3,b3,d4]@2 ~ a3, [a3,e4]@2 ~ [f#3,d4], ~ c#4 ~@2", // F#5 Bm7 A5 D
  AE: "[a3,c#4,e4] [f#3,a3,c#4,e4] d4 [f#3,d4], ~ [a3,b3]", AF: "[g3,b3,d4,f#4]!2 [g3,b3,d4,e4]!2",
  AG: "[b3,d4,e4] [b3,d4,e4]@3", AH: "~ g3@2 ~@5, d4@3 ~", AI: "~@2 g3@2 ~ g3@3, ~ e4@3 d4@4",
  AJ: "~@4 e4@3 ~@3 g3@6, ~ g4@6 g3@2 ~@7, ~@3 b3@5 d4@8",
  AK: "[~@6 f#4@2 a3@2 c#4@5 ~ [a3,c#4,e4]@4 [f#3,a3,c#4,e4]@4 [a3,e4]@4 ~@2 f#3@2, [a3,c#4,e4]@8 ~@7 f#3@5 ~@4 c#4@8, ~@7 [a3,e4]]/2", // A F#m7 A5 A A5
  AL: "[g3@2 ~@4 g3@6 [g3,b3,d4,e4]@3 ~ [b3,d4]@4 [g3,b3,d4]@4 [b3,d4]@4 [f#3,b3,d4]@4, [b3,d4,e4] [b3,d4,e4]@2 ~@5, ~@2 g3@4 ~@9 g3@5 ~@12]/2", // Em7 Bm G Bm E7
  AM: "[g3,b3,d4,e4]@3 ~ [d4,e4,g4]@12, ~@3 b3@12 ~", AN: "[b3,d4,g4]@15 ~",
  AO: "[f#3,c#4,e4]@2 [f#3,c#4,e4]@2 ~ f#3 [f#3,a3,b3,d4]@2, ~@2 [a3,b3,d4] ~", // F#7 Bm7
  AP: "[f#3,a3,c#4,e4]@4 [f#3,a3,c#4,e4]@4 f#3 ~ f#3@2 [f#3,a3,b3,d4]@4, ~@2 [a3,b3,d4] ~", // F#m7 Bm7
  AQ: "[g3,b3,d4,f#4]@2 [g3,b3,d4,f#4]@2 g3!2 [g3,b3,d4,e4]@2, ~@2 [b3,d4,e4] ~", // Gmaj7 Em7 E7
  AR: "[b3,e4]@2 ~ g3 ~@3 e4, g3 ~@3 e4@4 d4@4 d4@4, ~@5 g3@3", AS: "[b3,d4,f#4] [a3,c#4,e4] [e3,g3,b3,d4] [g3,b3,d4]",
  AT: "e4@4 ~@2 f#3@2 ~@5 b3@3, [a3,c#4]@2 ~ a3, ~ e4 d4@2", AU: "~ f#3 ~ f#3 ~ f#3@3, e4 c#4 d4@2",
  AV: "f#4!2 ~ b3, [g3,b3,d4] e4, ~@10 g3@5 ~", AW: "~ e4 d4!2, b3 ~, e4 ~@3, ~ g3@3 [g3,b3]@4",
  AX: "e4@2 f#3!3 ~ b3@2, [a3,c#4]@4 ~ f#3@3, ~ e4 d4@2", AY: "[c#4,e4]@2 [f#3,c#4,e4]@2 d4@3 d4, a3 [a3,b3]",
  AZ: "f#4@2 ~ g3 e4@3 e4, [b3,d4]!2, g3@3 ~@5, ~ f#4 ~@2", BA: "[g3,b3,d4]!2 [g3,d4]!2, ~ b3",
  BB: "[[d3,a3,d4,f#4] ~ [d3,a3,d4,f#4]@2 [d3,b3,d4,g4]@2 [d3,a3,d4,f#4,a4]@26]/2", // D G D
})).s("gm_acoustic_guitar_nylon").gain(0.27).pan(0.2)

// chords · acoustic guitar nylon · "NYLON GTR" · soft notes
const acoustic_guitar_nylon_2 = note(`<
  ~@4 A B C@2 ~@2 D E ~ F ~ G H ~@3 I ~ J K L ~ M N O ~@2 P Q R ~ S T@2 U@2 V ~@2 W@2 H ~@4 X Y ~ Z@2 D AA F ~@3 D E ~ F
  ~@2
>`.pickRestart({
  A: "c#4 f#3, f#3@3 ~@5", B: "f#3!2", C: "[g3@8 ~@7 g3@6 ~@11]/2", D: "f#3 ~@3", E: "f#3 ~@7 f#3@8", F: "~ g3",
  G: "~ f#3 e3 ~", H: "~@8 f#3 ~@7", I: "g3 ~@3", J: "f#3 ~@2 f#3", K: "g3 ~", L: "~@3 f#3", M: "a3@3 ~@5", N: "f#3 ~",
  O: "g3 ~ g3@2", P: "~ f#3 ~@2", Q: "~@2 f#3 ~", R: "f#3 ~ f#3 ~", S: "g3 g3@3",
  T: "[~@8 g3 ~@7, ~@3 g3@5 ~@8, ~@6 d4@3 ~@7]/2", U: "[~@15 f#3@9 ~@4 f#3@3 ~]/2", V: "~@7 f#3@6 ~@3",
  W: "[~@15 g3@15 ~@2]/2", X: "g3 f#3 ~@2", Y: "f#3@3 ~@2 f#3@3", Z: "[~@15 g3@2 ~@15]/2", AA: "f#3 ~ f#3@2",
})).s("gm_acoustic_guitar_nylon").gain(0.11).pan(0.2)

// drums · kick
const kick = s("bd").struct("<~@18 A@8 ~@10 A@7 B ~@5 A@10 C A@5 C ~>".pickRestart({
  A: "x!2", B: "x", C: "x ~@2 x ~@4",
})).gain(0.33)

// drums · low tom
const low_tom = s("lt").struct("<~@32 [x!2]!3 x ~@9 [x!2]!4 ~@18>").gain(0.27)

// drums · hihat
const hihat = s("hh").struct("<~@18 A@8 ~@10 A@7 B ~@5 A@10 C A@5 D ~>".pickRestart({
  A: "x!2", B: "x", C: "x ~@2 x ~@4", D: "x!2 ~ x ~@4",
})).gain(0.33)

// drums · open hat
const open_hat = s("oh").struct("<~@65 [~ x ~@2] ~>").gain(0.27)

// drums · bongos
const bongos = s("bongo:4").struct("<~@32 [~ x ~ x]!3 [~ x ~@2] ~@9 [~ x ~ x]!4 ~@18>").gain(0.72)

stack(piano, bass, acoustic_guitar_nylon, acoustic_guitar_nylon_2, kick, low_tom, hihat, open_hat, bongos)

More by Carole King