Strudelify
Fool to Cry cover art

Black And Blue

Fool to Cry

The Rolling Stones

KeyF majorTempo69 bpm
0:00/0:00
// Fool to Cry — The Rolling Stones
// 69 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 86 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(69/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 · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@4 A B C B D E A B F B G H I J K L M N O P Q N R S T B U V I J K W M N X N Y Z X AA AB AC K L ~@4 AD AE AF X N AG AH
  AI H I AJ K AK AL AM AN AO AP AQ AR AO AS AT AR AU AV AW AX AY AX AZ BA@2 ~
>`.pickRestart({
  A: "f2@11 ~@5", B: "bb2@11 ~@5", C: "f2@13 ~ f3 c3", D: "f2@14 ~ c3", E: "bb2@13 ~ f3 c3", F: "f2@13 c3 f3 ~",
  G: "f2@13 f2 c3 b2", H: "bb2@13 a2 bb2 b2", I: "c3@5 c3 g3 ~ c4@5 ~ db4 d4", J: "~@4 d4@7 ~@2 d3 c3 ~, d3@13 ~@3",
  K: "bb2@13 bb2 a2 ab2", L: "g2@4 ~@2 d3 ~ g3@5 ~@3", M: "f3@13 ~ c3 b2", N: "bb2@13 c4 f4 ~", O: "f2@13 f2 c3 f3",
  P: "bb2@14 ~ bb2", Q: "f2@13 ~ c3 a2", R: "f2@13 f3 a2 ~", S: "bb2@14 ~ c3", T: "f2@13 ~ c3 b2",
  U: "f2@9 ~ c3@3 ~ f3 c3", V: "bb2@13 ~ bb2 b2", W: "g2@5 ~@3 g3@5 ~@3", X: "f2@13 c3 f3 a2", Y: "f2@13 f3 c3 b2",
  Z: "bb2@10 ~ f2 bb2 ~ bb2 a2", AA: "bb2@8 ~@4 bb2 a2 bb2 b2", AB: "c3@5 ~ c3 g3 c4@5 ~ db4 d4", AC: "d3@13 d3 c3 ~",
  AD: "~@13 c4 f4 ~", AE: "f2@12 ~ f2 c3 b2", AF: "bb2@13 f3 ~ f3", AG: "f2@7 ~@5 f3 c3 f2 a2", AH: "bb2@13 c4 f4!2",
  AI: "f2@13 f3 ~ c3", AJ: "d3@13 d3 a2 ~", AK: "g2@6 ~ g2 a2 ~ e3 ~ a3 ~ a3 ~", AL: "d3@5 ~@3 a3 d4@4 ~ a3 gb3",
  AM: "g3@5 ~ c4 bb3 a3@5 e3 a2 ~", AN: "d3@9 d3 a3 ~ d3 ~ a2 ab2", AO: "g2@5 ~ b2 bb2 a2@5 e3 a3 ~",
  AP: "d3@10 ~ a3 d4 ~ a3!2", AQ: "g3@5 ~ b3 bb3 a3@5 e3 a2 ab2", AR: "d3@13 d3 a2 ab2",
  AS: "d3@9 d3 a3 d3 a3 d3 ab3 d3", AT: "g3@5 ~ b3 bb3 a3@5 a3 e3 ~", AU: "g2@5 ~ b2 bb2 a2@2 ~ a2 e3 d3 a3 ~",
  AV: "d3@5 d3 a3 ~ d4@3 ~ g3 ab3 a3 ~", AW: "g3@5 ~ b3 bb3 a3@3 ~ e3 ~ a2 ~", AX: "d3@13 d3 a3 ab3",
  AY: "g3@5 ~ b2 bb2 a2@5 ~ g3 gb3", AZ: "g3@5 ~ b2 bb2 a2@5 ~ e3 eb3", BA: "[d3@27 ~@5]/2",
})).s("gm_electric_bass_finger").gain(0.24).pan(0.1)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@16 A B C D ~@2 E F E F ~@6 G H I J E K E K E L ~@2 G M N O P Q R S T U V W X Y ~@3 G H N Z@2 ~@20
>`.pickRestart({
  A: "f5 g5@10 ~ g5!3 f5", B: "a5@2 ~ c6 a5 ~@9 d5!2", C: "a5@5 c6 a5@3 ~@5 d5!2", D: "a5 ~ a5 ~ d6 ~ d6 ~ d5@6 c5@2",
  E: "~@12 a5!3 g5", F: "a5@4 d5@7 ~@5", G: "f5 g5@8 ~@3 g5!3 f5", H: "g5 a5 ~ [f5,c6] d5 f5 ~@8 d5!2, ~@2 a5 ~@5",
  I: "a5@4 a5 [f5,c6] [d5,a5]@3 ~@5 d5!2", J: "a5 ~ a5 ~ d6 ~ d6@2 d5@6 c5@2", K: "a5@2 ~ [d5,c6] [d5,a5]@3 ~@9",
  L: "a5@2 ~ [d5,c6] [d5,a5]@2 g5 ~@9", M: "f5 a5 ~ [f5,c6] d5 f5 ~@8 d5!2, ~@2 a5 ~@5",
  N: "a5@2 ~ [f5,c6] [d5,a5]@3 ~@7 d5!2", O: "a5 ~ a5 ~ d6 ~ d6@2 d5 ~@7", P: "~@14 d6 ~", Q: "a5@9 ~@3 a5!3 g5",
  R: "g5 a5 ~ [d5,c6] f5 d5 ~@10, ~@2 a5 ~@5", S: "d6 ~ a5 ~@2 g5 f5@3 ~@3 a5!3 g5", T: "a5@2 ~ f5 g5 f5 d5@3 ~@7",
  U: "d6 ~ a5 ~@3 f5@3 ~@3 a5!3 g5, ~@5 g5@2 ~@9", V: "a5 ~@2 [f5,c6] g5@2 d5@3 ~@7, ~@4 a5@5 ~@7",
  W: "d6 ~ a5 ~@3 f5@3 ~@3 a5!3 g5, ~@4 a5@5 ~@7, ~@5 g5@2 ~@9", X: "a5@2 ~ [f5,a5] g5@2 d5@4 f5@2 g5@2 f5@2",
  Y: "g5@2 a5@2 a5 ~@11", Z: "[a5 ~ a5 ~ d6 ~ d6 ~@5 [a5,e6] [g5,d6] [f5,db6] [a5,d6]@3 ~ g5 f5 ~@11]/2",
})).s("gm_string_ensemble_1").gain(0.31)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  ~@20 A B C D E F G H I J I K ~@4 L M I K N O P K ~@5 Q R ~@6 P K N K ~@3 S T U@3 V W X@2 Y Z AA AB@2 AC AD@3 AE AF AG
  ~
>`.pickRestart({
  A: "g4 a4 g4 f4 g4 a4@2 ~ [g4,c5] a4 c5@4 f4 [f5,a5], c5@3 ~ c5@3 ~@3 g4@3 ~@3", // C5 F
  B: "[g5,bb5] ~ [g5,bb5] f5 [f5,bb5] ~ c5@7 ~@3", C: "~@4 g4 a4 g4 [f4,g4] [a4,c5] ~ [g4,c5]@5 ~, ~@4 c5@3 ~@9",
  D: "~@3 [c5,f5] ~@2 [c5,f5]@7 ~@3", E: "g4 a4 g4 f4 g4 a4@2 g4 [a4,c5] ~ c5@4 d4 ~, c5@3 ~ c5@3 ~@3 g4@3 ~@3",
  F: "[f5,bb5] [g5,bb5]!2 [f5,bb5]!2 ~ [c5,f5,bb5]@7 ~@3", // Bb5 Gm Bb5 Fsus4
  G: "g4 a4 g4 f4 ~ a4@2 [g4,c5] [a4,c5] ~ [g4,c5]@5 ~, ~@2 [g4,c5] ~@5", // C5 Am C5
  H: "[f5,bb5] g5 [g5,bb5] [c5,f5] f5 ~ [c5,f5]@7 ~@3, ~@4 bb5@9 ~@3", // Bb5 Gm F5
  I: "g4 a4 g4 f4 g4 a4@2 g4 [a4,c5] ~ [g4,c5]@5 ~, ~@4 c5@3 ~@9", J: "[f5,bb5] g5 bb5 c5 d5 ~ c5@7 ~@3, ~@4 bb5@9 ~@3",
  K: "[f5,bb5] g5 bb5 c5 f5 ~ c5@7 ~@3, ~@4 bb5@9 ~@3", L: "g4 a4 g4 f4 g4 a4@8 ~@3, c5@3 ~ c5@9 ~@3",
  M: "[f5,bb5] g5 [g5,bb5]!2 f5 ~ [c5,f5]@7 ~@3, ~@4 bb5@9 ~@3", // Bb5 Gm F5
  N: "g4 a4 g4 f4 g4 a4 g4 [f4,g4] [a4,c5] ~ [g4,c5]@5 ~, c5@3 ~ c5@3 ~@9", O: "~@5 a4 c5 g4@6 ~@3",
  P: "g4 a4 g4 f4 g4 a4 g4 [f4,g4] [f4,c5] ~ [g4,c5]@5 ~, c5@3 ~ c5@3 ~@9", Q: "~@6 f5 ~ c5@5 ~@3",
  R: "~@8 [g5,bb5]@3 ~ [f5,a5] ~ [g5,bb5] ~", S: "~@15 g5", T: "a5 [g5,a5] a5 g5 f5 ~ c5 ~ f5 c5 d5 c5 d5 f5!2 ~",
  U: "[f5 ~ d5!4 [eb5,ab5] [e5,a5]@7 ~ f5@2 ~ d5 c5 [c5,f5] d5 [a4,c5,f5] ~ [a4,c5,f5] ~ c5 ~ d5 c5 [c5,f5] [c5,f5]@2 ~ d5!4 [eb5,ab5] [e5,a5]@2 a5@5 ~ f5]/3", // Ab5 A5 F5 F F5 Ab5 A5
  V: "d5@3 ~ d5!2 [g4,c5,e5]@3 ~ c5 d5 f5 d5 [d5,f5]!2", W: "[d5,f5] d5@4 ~ [eb5,ab5] [e5,a5]@6 ~@3",
  X: "[~@4 [a4,d5,f5] ~ g4 f4 g4 f4 c5 d5@2 ~ d5 f5@4 ~@3 [eb5,ab5] [e5,a5]@4 ~ d5 c5 d5 c5]/2", // Dm Ab5 A5
  Y: "d5@3 ~ f5 ~ [g4,c5,e5]@3 f5 d5 f5@2 ~ f5 ~", Z: "f5!2 d5 ~ d5 c5 [eb5,ab5] [e5,a5]@4 ~@5",
  AA: "f5!2 d5 ~ [a4,d5]!2 [g4,c5]@3 d4 [g4,c5] [a4,d5] f5 d5 [c5,f5]@2", // D5 C5 D5 F5
  AB: "[~@4 [d5,f5] f5 [eb5,ab5] [e5,a5]!2 ~ c6 db6 [d5,g5] [c5,f5] f5 d5@4 ~ [d5,g5] ~ [c5,f5]@3 ~ c5 d5 f5 d5 f5@2]/2", // Dm Ab5 A5 G5 F5 G5 F5
  AC: "~@2 [d5,g5] ~ [d5,g5] [c5,f5] [eb5,ab5] [e5,a5]@2 ~ [d5,g5] [c5,f5] [e5,a5] [d5,g5] [c5,f5] [a4,d5]", // G5 F5 Ab5 A5 G5 F5 A5 G5 …
  AD: "[f5 d5!2 ~ f5 d5 [g4,c5]@3 f5 [a4,d5]!2 f5 [a4,d5] [c5,f5]@4 [d5,g5] d5 [d5,g5] [c5,f5] [eb5,ab5] [e5,a5]@4 ~ [d5,g5] [c5,f5] g5 f5@4 ~ [a4,d5] ~ [g4,c5]@3 ~ [g4,c5] [a4,d5] d5 f5 [c5,f5]!2]/3", // C5 D5 F5 G5 F5 Ab5 A5 G5 …
  AE: "f5 ~ [d5,g5] ~ [d5,g5] [c5,f5] [eb5,ab5] [e5,a5]@2 ~ d5 [d5,g5]!2 [c5,f5] f5 ~", AF: "f5 d5@12 ~@3",
  AG: "~@8 g4 f4@6 ~",
})).s("gm_electric_guitar_jazz").gain(0.27).pan(0.2)

// chords · drawbar organ · "ORGAN 1"
const drawbar_organ = note(`<
  ~@4 A@2 B@3 ~@11 A@2 C@3 ~@11 D@2 E F G@2 H@2 I J@3 ~ D@2 H@2 K@2 L@2 D@2 H@2 M N O P Q ~@3 R S T U V W X Y Z AA AB AA
  AC AD AE@3
>`.pickRestart({
  A: "[[c4,a4]@11 ~@5 [d4,f4]@10 bb5 ~ a5 ~ bb5 ~, c6@25 ~@7]/2", // F Dm
  B: "[a5 ~ f5 ~@21 g4@5 ~@3 [c4,a4]@5 ~@11, a4@7 ~@9, c4@11 ~@5 d4@10 ~@22, ~@4 c5@33 ~@11]/3", // F
  C: "[a5 ~ f5 ~@21 g4@5 ~@3 [c4,a4]@5 ~@11, a4@7 ~@9, c4@16 d4@11 ~@21, ~@4 c5@33 ~@11]/3", // F
  D: "[[c4,f4,a4]@10 ~@6 [bb3,d4,f4]@10 bb5 ~ a5 ~ bb5 ~, c6@25 ~@7]/2", E: "a5 ~ f5 ~ c5@9 ~@3, [c4,f4,a4]@9 ~@7",
  F: "[bb3,d4,f4,d5]@9 ~@3 f5 ~ g5 ~", G: "[[c4,f4,a4]@11 ~@5 [bb3,d4,f4]@10 bb5 ~ a5 ~ bb5 ~, c6@25 ~@7]/2",
  H: "[a5 ~ f5 ~@13 [bb3,d4,f4]@10 ~@2 d5 ~ f5 ~, [c4,f4,a4]@5 ~@11, ~ c5@5 ~@2]/2", I: "[c4,e4,g4,g5]@11 ~@5",
  J: "[[a3,d4,f4]@11 ~@5 [bb3,d4,f4]@11 ~@13 [g3,d6]@3 ~@5, a5@37 ~@11, ~@16 [b3,d4,f4]@5 ~@3]/3", // Dm Bb G5 Bdim
  K: "[[c4,f4,a4]@16 [bb3,d4,f4]@10 bb5 ~ a5 ~ bb5 ~, c6@25 ~@7]/2", // F Bb
  L: "[a5 ~ f5 ~@13 [bb3,d4,f4]@11 ~ d5 ~ f5 ~, [c4,f4,a4]@11 ~@21, ~ c5@5 ~@2]/2", // Bb F
  M: "[c4,e4,g4]@10 ~@2 a5 ~ c6 ~, g5 ~", N: "[a3,d4,f4]@11 ~ e6 ~ f6 ~, d6 ~", O: "[bb3,d4,f4]@11 ~ e6 ~ f6 ~, d6 ~",
  P: "[b3,d4,f4,f6]@5 ~@3 [a3,db4,e4,g4]@4 e6 ~ f6 ~, ~@8 e6@3 ~@5", Q: "[a3,d4,f4]@5 ~@11, d6@11 ~@5",
  R: "[a3,d4,f4]@11 ~ g5 f5 d5 f5, a5 ~", S: "[b3,d4,f4,g5]@6 ~ f5 ab5 ~ g5 ~ f5 ~ g5 ~, ~@8 [a3,db4,e4]@5 ~@3",
  T: "f5@5 ~ d5 c5 d5@4 c4@2 f5 g5, [a3,d4,f4]@11 ~@5", // Dm
  U: "ab5 g5!2 ~ f5 ~ g5 ~ g5 ab5 g5 ~ f5 ~ g5@2, [b3,d4,f4]@5 ~@3 [a3,db4,e4]@5 ~@3", // Bdim A
  V: "~@2 f5 ~ d5 ~ c5 ~ d5 ~ f5@5 ~, [a3,d4,f4]@11 ~@5", // Dm
  W: "ab5 ~ g5 ~ f5 ~ d5 ~ ab5 ~ g5 ~ f5 ~ d5 c5, [b3,d4,f4]@5 ~@3 [a3,db4,e4]@5 ~@3", // Bdim A
  X: "d5@4 ~@2 c5 ~ d5@4 ~@2 f5 ~, [a3,d4,f4]@11 ~@5", // Dm
  Y: "[b3,d4,f4,g5]@5 ~@3 a5@3 ab5 a5 ab5 a5 ab5, ~@8 [a3,db4,e4]@5 ~@3", // G7 A
  Z: "a5 ab5 a5 ab5 a5 ab5 a5 ~ g5 ~ f5 ~ d5 ~ f5 ~, [a3,d4,f4]@11 ~@5", // Dm
  AA: "[b3,d4,f4,g5]@5 ~ f5 g5 ab5 a5 ab5 g5 f5 d5 c5 a4, ~@8 [a3,db4,e4]@5 ~@3", // G7 A
  AB: "[a3,d4,f4]@11 ~@3 f5 ~, d5@13 ~@3", AC: "[c5,d5] d5@4 ~ c5 d5 f5@5 ~ d5 f5, [a3,d4,f4]@11 ~@5",
  AD: "[b3,d4,f4,g5]@5 ~@3 ab5 a5 ab5 g5 f5 d5 c5 a4, ~@8 [a3,db4,e4]@5 ~@3", // G7 A
  AE: "[[c5,d5] ~ d5@2 d5@29 ~@15, [a3,d4,f4]@11 ~@5]/3", // Csus2 Dm
})).s("gm_drawbar_organ").gain(0.21)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  A B C D E@2 F@2 G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD O AE AF AG AH AI AJ AK AL AM AL AM O AN AF AO ~ AP
  AQ AR AS AT@2 AU@2 AV@2 AW@2 O AX AY AZ BA BB BC BD BE BD BE BD BE BD BE BD BE BD BE BD BE BD BE BF@2
>`.pickRestart({
  A: "~@4 g4 ~ f4@3 ~ [d4,f4,a4,c5]@4 f3 ~, f2@3 ~, ~@4 [a4,c5]@5 ~@7", // Dm7 Am
  B: "[bb3,d4,f4]@3 ~ [a3,d4,f4] [a3,d4,f4]@2 ~ [d4,f4]@2 f3 ~ [a3,d4,f4] ~ [a3,d4,f4] ~, bb2@11 ~@5, ~@8 g3 ~@7", // Bb Dm
  C: "~@4 f4 g4 f4 ~ [d4,f4,a4,c5]@3 ~ [c4,f4,a4,c5]@2 f3 ~, f2@3 ~, ~@4 [a4,c5]@3 ~@9", // Dm7 F Am
  D: "[bb3,d4,f4]@3 ~ [a3,d4,f4]@2 ~ [g3,d4,f4]@2 f3 [a3,d4,f4]@3 ~ [a3,d4,f4] ~, bb2@11 ~@5", // Bb Dm G7 Dm
  E: "[~@4 f4 g4 f4 ~ [d4,f4]@5 ~ d4 ~ f4@3 ~ [a3,d4,f4]@3 ~ [g3,d4,f4]@4 f3 ~ [a3,f4,a4] ~, f2@11 ~@5 bb2@10 ~@6, ~@4 [a4,c5]@3 ~ [a4,c5]@11 ~@13]/2", // Dm G7 Dm Am
  F: "[~@4 f4 g4 f4 ~ [d4,f4]@5 ~ [f2,c4] ~ f4@3 ~ a3@3 ~ g3 ~ f3 ~ [d4,f4]@2 f3 ~, f2@12 ~@4 bb2@11 ~@5, ~@4 [a4,c5]@3 ~ [a4,c5]@11 ~ [d4,f4]@7 ~ g3 ~@3]/2", // Dm F5 Dm Am Dm
  G: "~@4 [f4,a4,c5]@3 ~ [f4,a4,c5]@3 ~ [a4,c5]@2 f4 ~, f2@10 ~@2 g4 ~@3", // F Am
  H: "[d4,f4]@3 ~ [a3,d4,f4]@3 ~ [d4,f4]@2 f3 ~ [a3,d4,f4] ~ [a3,d4,f4] ~, bb2@5 ~@3, ~@8 g3 ~@7", // Dm
  I: "[f3,c4]@3 ~ f4 g4 f4 ~ [d4,f4,a4,c5]@5 ~ [f3,f4] ~, f2@3 ~, ~@4 [a4,c5]@3 ~@9", // F5 Dm7 F Am
  J: "[f4,a4]@3 ~ [a3,d4,f4]@5 ~ [d4,f4]@4 f3 ~, bb2@10 g3@3 ~@3", // F Dm
  K: "[f3,c4]@3 ~ f4 g4 f4 ~ d4@5 ~ f3 ~, f2@3 ~, ~@4 [a4,c5]@9 ~@3", // F5 Am
  L: "~@4 [d4,f4]@6 f3 ~ [d4,f4]@2 f3 ~, bb2@11 ~@5, ~@4 a3@5 ~@3 g3 ~@3", // Dm
  M: "[f3,c4]@3 ~ f4 g4 f4 ~ [f2,d4,f4,a4,c5]@5 ~ f3 ~, f2@4 [a4,c5]@3 ~@9", // F5 Dm7 Am
  N: "[f3,bb3,d4,f4]@3 ~ [a3,d4,f4]@3 ~ [d4,f4]@2 f3 ~ [d4,f4]@2 f3 ~, bb2@11 ~@5, ~@8 g3 ~@3 a3 ~@3", // Bb Dm
  O: "[c4,e4,g4]@3 ~ [c4,e4,g4]@3 ~ [c4,e4,g4]@3 ~ [c4,e4,g4]@3 ~", // C
  P: "[d4,e4,f4,a4]@3 ~ [d4,e4,f4,a4]@3 ~ [d4,e4,f4,a4]@3 ~ [d4,e4,f4,a4]@3 ~", // Dm
  Q: "[d4,f4,a4]@3 ~ [d4,f4,a4]@3 ~ [d4,f4,a4]@3 ~ [d4,e4,f4,a4]@3 ~", // Dm
  R: "[d4,f4,a4]@3 ~ [d4,f4,a4]@8 ~@2 [a3,d4,f4] ~", S: "g4 a4@10 ~ [c4,f4,g4,a4] ~ f4 ~, [c4,f4] ~",
  T: "[g3,d4,f4]@3 ~ [a3,d4,f4]@3 ~ g3 a3 g3 f3 g3 a3@2 ~, ~@8 [d4,f4]@3 ~ [d4,f4]@3 ~", // G7 Dm
  U: "[c4,f4,a4]@3 ~ [c4,f4,a4]@3 ~ [d4,f4,a4]@3 ~ [c4,f4,a4]@3 ~", // F Dm F
  V: "[g3,d4,f4]@3 ~ [a3,d4,f4]@3 ~ g3 a3 g3 f3 [a3,d4,f4] ~ [a3,d4,f4] ~, ~@8 [d4,f4]@3 ~@5", // G7 Dm
  W: "[a3,c4,f4]@3 ~ [c4,f4,a4]@3 ~ g4 ~ f4@5 ~, ~@8 [c4,a4]@5 ~@3", // F
  X: "[g3,d4,f4]@3 ~ [a3,d4,f4]@3 ~ g3 a3 g3 f3 [a3,d4,f4] ~ [f3,d4,f4] ~, ~@8 [d4,f4]@3 ~@5", // G7 Dm
  Y: "[a3,c4,f4]@3 ~ [c4,f4,a4]@7 ~ [d4,f4,a4]@3 ~", // F Dm
  Z: "[g3,d4,f4]@3 ~ [a3,d4,f4]@3 ~ g3 a3 g3 f3 [d4,f4]@2 a3 ~, ~@8 [d4,f4]@3 ~ a3 ~@3", // G7 Dm
  AA: "~@4 [f4,a4,c5]@3 ~ [f4,a4]@4 c4@3 ~, ~@8 d4@3 ~@5", // F
  AB: "[g3,d4,f4]@3 ~ [a3,d4,f4]@3 ~ g3 a3 g3 f3 [d4,f4]@2 f3 ~, ~@8 [d4,f4]@3 ~ a3 ~@3", // G7 Dm
  AC: "[a3,c4,f4]@3 ~ f4 g4 f4 ~ [c4,f4,a4]@3 ~ [c4,f4]@2 f3 ~, ~@4 [a4,c5]@3 ~@5 a3 ~@3", // F F5 Am
  AD: "[g3,d4,f4]@3 ~ [d4,f4]@2 f3 ~ [d4,f4]@2 f3 ~ [d4,f4]@2 f3 ~, ~@4 a3 ~@3 g3 ~@3 a3 ~@3", // G7 Dm
  AE: "[d4,f4,a4]@3 ~ [d4,f4,a4]@3 ~ e4 ~ d4@5 ~, ~@8 [f4,a4]@5 ~@3", // Dm F
  AF: "[d4,f4,a4]@3 ~ [d4,f4,a4]@3 ~ [d4,f4,a4]@3 ~ [d4,f4,a4]@3 ~", AG: "[d4,f4,a4]@3 ~ [d4,f4,a4]@7 ~@5",
  AH: "[a3,c4,f4]@3 ~ [a3,c4,f4]@3 ~ [a3,c4,f4]@3 ~ [a3,c4,f4]@3 ~", // F
  AI: "[a3,d4,f4]@3 ~ [a3,d4,f4]@3 ~ [g3,d4,f4]@3 ~ [a3,d4,f4]@3 ~", // Dm G7 Dm
  AJ: "[c4,f4,a4]@2 ~@2 f4 g4 f4 ~ d4 ~ c4@4 ~@2, ~@4 [a4,c5]@2 ~@2 [f4,a4,c5]@5 ~@3", // F Am F
  AK: "[a3,d4,f4]@5 ~@3 [g3,d4,f4]@2 ~@2 [a3,d4,f4]@2 ~@2", // Dm G7 Dm
  AL: "[a3,c4,f4]@3 ~ f4 g4 f4 ~ d4 ~ c4@5 ~, ~@4 [a4,c5]@3 ~ [f4,a4,c5]@5 ~@3", // F Am F
  AM: "[bb3,d4,f4]@3 ~ [a3,d4,f4]@3 ~ [g3,d4,f4]@3 ~ [a3,d4,f4]@3 ~", // Bb Dm G7 Dm
  AN: "[d4,f4,a4]@3 ~ [d4,f4,a4]@3 ~ e4 d4@2 ~ a4 g4@2 ~, ~@8 [f4,a4]@3 ~ [d4,f4]@3 ~", // Dm F Dm
  AO: "[d4,f4,a4]@3 ~ [d4,f4,a4]@3 ~ [d4,f4,a4]@8", // Dm
  AP: "[a3,c4,f4]@3 ~ [a3,c4,f4] ~ g4 ~ [a3,c4,f4]@3 ~ [a3,c4,f4]@3 ~", // F
  AQ: "[bb3,d4,f4]@3 ~ [a3,d4,f4,a4]@3 ~ [g3,d4,f4,g4]@3 ~ [a3,d4,f4]@3 ~", // Bb Dm G7 Dm
  AR: "[a3,c4,f4]@3 ~ f4 g4 f4 ~ [f4,a4]@5 ~ a4 ~, ~@4 [a4,c5]@3 ~ c4@3 ~@5", // F Am
  AS: "[d4,f4,a4]@3 ~ [a3,d4,f4]@3 ~ [g3,d4,f4]@3 ~ [d4,f4]@2 a3 ~, ~@12 a3 ~@3", // Dm G7 Dm
  AT: "[[a3,c4,f4]@3 ~ f4 g4 f4 ~ d4@4 ~@2 c4 ~ d4@3 ~ [a3,d4,f4]@3 ~ [g3,d4,f4]@3 ~ [c4,f4,a4]@3 ~, ~@4 [a4,c5]@3 ~ [f4,a4]@11 ~@13]/2", // F Dm G7 F Am F
  AU: "[[a3,c4,f4]@3 ~ f4 g4 f4 ~ d4@4 ~@2 c4 ~ d4@3 ~@5 a3@3 ~ g3@3 ~, ~@4 [a4,c5]@3 ~ [f4,a4]@11 ~ [d4,f4]@9 ~@3]/2", // F Am F Dm
  AV: "[[a3,c4,f4]@2 ~@2 f4 g4 f4 ~ d4@2 ~@2 c4@2 ~@6 [a3,d4,f4]@2 ~@2 [g3,d4,f4]@2 ~@2 [a3,d4,f4]@2 ~@2, ~@2 [a4,c5] ~ [f4,a4]@5 ~@7]/2", // F Dm G7 Dm Am F
  AW: "[[a3,c4,f4]@3 ~ f4 g4 f4 ~ d4@3 ~ c4@3 ~ d4@3 ~ [a3,d4,f4]@3 ~ [g3,d4,f4]@3 ~ [a3,d4,f4]@3 ~, ~@4 [a4,c5]@3 ~ [f4,a4]@11 ~@13]/2", // F Dm G7 Dm Am F
  AX: "[d4,f4,a4]@3 ~ [d4,e4,a4]@3 ~ [d4,f4,a4]@3 ~ [d4,e4,a4]@3 ~", // Dm Dsus2 Dm Dsus2
  AY: "[d4,f4,a4]@3 ~ [d4,f4,a4] ~ [d4,f4,a4]!2 [d4,f4,a4]@3 ~ [d4,f4,a4]@3 ~", // Dm
  AZ: "[d4,f4,a4]@3 ~ [d4,f4,a4]@3 ~ [db4,e4,g4]@3 ~ [db4,e4,g4]@3 ~", BA: "[d4,f4,a4]@5 ~@3 [d4,f4,a4]@5 ~@3",
  BB: "[bb3,d4,f4]@5 ~@3 [a3,db4,e4]@5 ~@3", BC: "[a3,d4,f4]@5 ~@3 [a3,d4,e4]@5 ~@3",
  BD: "[b3,d4,f4]@5 ~@3 [a3,db4,e4]@5 ~@3", BE: "[a3,d4,f4]@5 ~@3 [a3,d4,f4]@5 ~@3",
  BF: "[[a3,d4,f4]@5 ~@3 [a3,d4,f4]@11 ~@13]/2", // Dm
})).s("gm_epiano2").gain(0.31).pan(0.9)

// chords · piano · "A.PIANO 2"
const piano = note(`<
  ~@3 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@2 BT BU BV BW BX BY BZ CA CB CC@2
>`.pickRestart({
  A: "~@11 db4 d4 ~ [f4,g4] ab4", B: "a4 ~ c5@7 ~ g4 ab4 a4 ~ c5 ~", C: "c5 d5 f4@9 ~ d4 f4 g4 ab4",
  D: "a4 ~ c5@8 g4 ab4 a4 ~ c5 ~", E: "c5 ~ f4 ~ f4@7 ~ c4 d4 f4 g4", F: "g4 [ab4,a4] c5@9 ~ a4 c5@2 ~",
  G: "c5 d5 f4@7 ~@3 d4 f4 [f4,g4] [d4,ab4,a4]", H: "a4 ~@3 c5 ~@3 c5 ~@3 [f4,a4] ~ c5 ~",
  I: "[f4,c5]@2 ~ d5 [d4,f4]@7 ~ c4 d4 f4 g4", J: "[c4,g4] a4 f4 c4@8 ~ a4 ~ f5 ~",
  K: "[c5,d5] ~ c5 ~ bb4 ~ f4 ~ d4 ~ bb4 a4 g4 f4 d4 c4, ~@10 d5@3 ~@3", // Csus2
  L: "[f4,a4] ~ [c4,f4] [g4,a4]@2 ~ [f4,a4] ~ a3 ~ c4 ~ e4 f4 e4 c4, ~@12 a4@3 ~", // F F5 Gsus2 F
  M: "[d4,bb4]@3 ~ f4@2 ~ d4 f4 ~ d4 ~ [d4,bb4] ~ f4 [d4,a4]", // Gm D5
  N: "[e4,g4] ~ c4 ~ [e4,g4]@2 ~@2 [e4,g4] ~ [e4,g4] ~ [e4,g4]@3 c4, ~@7 c4@2 ~ c4@4 ~@2", // Em
  O: "[d4,f4,a4]@3 ~ [d4,f4,a4]@2 ~ a3 c4 d4 [a3,d4,f4,a4] e4!2 [a3,d4,f4,a4] e4 a3", // Dm
  P: "[a3,d4,f4,a4] ~ a3 ~ d4 ~ [d4,f4,a4]@2 a3 ~ bb3 a3@2 [a3,d4,f4,a4]@2 ~, ~@6 a3 ~@3 [d4,f4,a4]@3 ~@3", // Dm
  Q: "[b3,d4,f4,a4]@3 ~ [b3,d4,f4,a4]@3 ~ d5 ~ a4 ~ f5 ~ d5 ~", // Bm7b5
  R: "f5 ~ a4 ~ c5 ~ f5 ~ c5 ~ [a4,c5] g4 [g4,c5] f4 [f4,c5] ~", // Am C5 F5
  S: "[g4,bb4] a4 [g4,bb4] f4 [f4,bb4]@5 ~ [f4,bb4] g4 [f4,bb4] g4 [f4,bb4] g4", // Gm Bb5
  T: "[f4,a4]@3 ~ [g5,a5] g5 f5 c5 d5 a4 [g4,c5] a4 [g4,c5] [c4,f4]@2 ~, ~@4 c6@2 ~ f5@2 ~@7", // F Gsus2 C5 F5
  U: "c4 d4 ~ bb3 c4 d4 f4 d4 f4 bb4 ~ g4 bb4 g4 bb4 c5, f4@3 ~@13",
  V: "d5@3 ~ [f4,a4,c5]@3 ~ [d5,f5]!3 c5 [c5,f5] a4 [a4,f5] c5", W: "c5 d5@10 ~ [bb4,d5] g4 [c4,f4] ~, f5 ~",
  X: "[g4,ab4] a4@5 c4 ~ bb4 a4 f4 ~ c4 ~ a4 ~, f4@5 ~@11", Y: "[d4,bb4]@5 ~@3 [bb4,d5]@3 ~ d5@2 g4 ~, ~@12 bb4 ~@3",
  Z: "[f4,a4,c5]@5 ~ [c4,f4,a4] [d4,f4,bb4] [c4,f4,a4]@3 ~ g4 a4 f4 [d4,f4,c5], ~@6 c5 ~", // F Bb F Dm7
  AA: "[d4,f4] ~ f4 ~ d4@3 ~ f5 d5 bb4 f4 d5 bb4 g4 f4, bb4@5 ~@11", // Dm
  AB: "[f4,a4,c5]@3 ~ [c4,f4,a4]@3 ~ [d4,f4,bb4] [c4,f4,a4] ~ c4 f4 ~ g4 ~", // F Bb F
  AC: "[d4,f4,bb4]@3 ~ [d4,f4,bb4]@2 ~ [c4,d4] c4 ~ bb3 ~ d4 e4 f4 g4", // Bb Csus2
  AD: "[e4,g4] ~ c4 ~ [c4,e4,g4] ~ c4 e4 [c4,e4,g4] ~ g3 ~ c5 ~ bb4 ~", // Em C
  AE: "[d4,f4,a4]@3 ~ [d4,f4,a4]@5 ~ [a4,d5,f5] ~ e5 [a4,d5,f5]@2 ~", // Dm
  AF: "[a4,d5,f5] ~ f4 ~ c4 ~ [a4,d5,f5]@3 ~ [a4,d5,f5] ~ e5 [a4,d5,f5]@2 ~", AG: "[a4,d5,f5]@11 ~@5",
  AH: "[a4,c5,f5]@5 ~@3 [a4,c5,f5] ~ [c5,db5] d5 f5 ~ d5 db5", AI: "d5 f5 d5 ~ f5 ~ d5 f5@2 g5 c5 d5 f5 g5 c5 d5",
  AJ: "f5 g5 [c5,d5] g5 [c5,d5] g5 [c5,d5] g5 [c5,d5] g5 [c5,d5] g5 [c5,d5] g5!2 f5", // Csus2
  AK: "g5 f5@2 ~ [c5,d5] [c5,g5] [d5,g5] [c5,d5,g5] [c5,d5] [c5,g5] [d5,g5] [c5,d5,g5] [c5,d5] [c5,g5] [d5,g5] [c5,d5,g5]", // Csus2 C5 G5 Csus2 C5 G5 Csus2 C5 …
  AL: "[c5,d5] [c5,g5] [d5,g5] [c5,d5,g5] [c5,d5] [c5,g5] [d5,g5] [c5,d5,g5] [c5,d5] [c5,g5] [d5,g5] [c5,d5,g5] [c5,d5] [c5,g5] [d5,g5] [c5,d5,g5]", // Csus2 C5 G5 Csus2 C5 G5 Csus2 C5 …
  AM: "c5@5 [c5,d6]!4 [c5,c6]!4 [c5,bb5]!3", AN: "[c5,bb5] [c5,a5]!4 [c5,g5]!4 [c5,f5]!4 [c5,e5]!3",
  AO: "[d5,bb5]!5 [c5,bb5]!7 [bb4,bb5]!4", // Gm C7 Bb
  AP: "[g4,c5,e5]@3 ~ [g4,c5,e5]@3 ~ [g4,c5,e5]@3 ~ [c5,e5]@2 g4 ~, ~@12 g4 ~@3", // C
// … 108 more lines

More by The Rolling Stones