Strudelify
Affairs of the Heart cover art

1990 · Behind the Mask

Affairs of the Heart

Fleetwood Mac

KeyF majorTempo129 bpm
0:00/0:00
// Affairs of the Heart — Fleetwood Mac
// 129 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 145 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): JAZZ GTR.
setcpm(129/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 · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~ A B C D@3 E F@3 G H@3 I J@3 K L@2 ~ M N@2 ~ O P Q R S@2 T U V W X Y Z AA AB AC AD AE AF AG AH AI@3 AJ AK@3 K L@2 ~ M
  N@2 ~ O P AL AM AN@2 AO AP AQ W AR Y AS AA AT AU AV AW AF AG C AX@5 AY@4 AZ BA BB@2 BC BD BE@2 BF BG BH BI BJ BK@2 BL
  BM@2 BN BO BP@2 BQ BR@3 BS@2 BT BU BV BW@3 BX BY BZ CA CB@2 CC CD@2 CE CF CG CH CI CJ@3 ~
>`.pickRestart({
  A: "~@12 f3@2 [bb3,bb4] ~, [a3,a4]@15 ~, ~@2 c3@8 c3@5 ~, ~@4 [f3,f4]@7 ~@5, ~@3 [bb3,bb4]@4 ~", // Bb A F Bb
  B: "[a3,a4]@2 ~@10 [g3,g4]@2 f3 ~, ~@2 c3@13 ~, ~@2 f3@5 ~, ~@3 [g3,g4]@3 ~@2, ~@10 [a3,a4]@5 ~", // A G A
  C: "[a3,a4]@2 ~@10 [f3,f4]@2 [bb3,bb4] ~, ~ f3@2 ~, ~@6 [bb3,bb4]@7 ~@3, ~@10 c3@5 ~", // A F Bb
  D: "[[a3,a4] ~ [f3,f4] [g3,g4]@2 [a3,a4] [g3,g4] f4@16 ~, ~@2 c3@5 ~@7 f3@29 ~@5]/3", // A F G A G
  E: "[a3,a4]@2 ~@2 f3@2 ~@6 f3@2 [bb3,bb4] ~, ~ c3@2 [bb3,bb4]@4 ~, ~@10 c3@5 ~", // A Bb
  F: "[[a3,a4]@2 ~@2 [f3,f4]@2 [g3,g4]@4 [a3,a4]@2 [g3,g4]@2 [f3,f4]@31 ~@3, ~@2 c3@5 ~@41]/3", // A F G A G F
  G: "[a3,a4]@2 ~@10 f3@2 [bb3,bb4] ~, ~@2 c3@8 c3@5 ~, ~ f3@2 ~, ~@3 [bb3,bb4]@4 ~", // A Bb
  H: "[[a3,a4]@2 ~@2 [f3,f4]@2 [g3,g4]@4 [a3,a4]@2 [g3,g4]@2 [f3,f4]@25 ~@9, ~ c3@2 ~@21]/3", // A F G A G F
  I: "~@2 [f3,f4] ~@4 [bb3,bb4], [a3,a4]@3 [bb3,bb4]@4 ~, ~ c3@2 ~@3 [f3,f4]@2", // F Bb A Bb F
  J: "[[a3,a4]@2 ~@2 [f3,f4]@2 [g3,g4]@4 [a3,a4]@2 [g3,g4]@2 [f3,f4]@21 ~@13, ~@2 c3@5 ~@41]/3", // A F G A G F
  K: "~@4 [f3,f4]@2 [bb3,bb4]@4 ~@2 [f3,f4]@2 [bb3,bb4] ~, [a3,a4]@3 ~@5, ~@2 c3@4 ~@4 c3@5 ~", // F Bb F Bb A
  L: "[[a3,a4]@2 ~@2 [f3,f4]@2 [g3,g4]@4 [a3,a4]@2 [g3,g4]@2 [f3,f4]@17 ~, ~@2 c3@5 ~@25]/2", // A F G A G F
  M: "~@2 [f3,f4] [bb3,bb4]@2 ~@2 [bb3,bb4], [a3,a4]@3 ~@3 f3@2, ~ c3@2 ~@2 c3@3", // F Bb A
  N: "[[a3,a4]@2 ~@2 f3@2 [g3,g4]@4 [a3,a4]@2 [g3,g4]@2 [f3,f4]@17 ~, ~ c3@2 ~@13]/2", // A G A G F
  O: "[a3,a4]@2 ~@2 f3@2 [bb3,bb4]@4 c3@2 [f3,f4]@2 [bb3,bb4] ~, ~ c3@2 ~@5", // A Bb F Bb
  P: "[a3,a4] ~ [f3,f4] [g3,g4]@2 [a3,a4] [g3,g4] f3, ~ c3@2 ~@5", Q: "g3@5 ~ g3@6 c4@4, e4@15 ~, c4@3 ~",
  R: "[g3,c4,e4]@6 [g3,c4,e4]@9 ~", S: "[[g3,c4,e4]@6 ~@18 f3@7 ~, ~@8 [bb3,d4]@13 ~@11, ~@16 [a3,c4]@13 ~@3]/2",
  T: "[bb3,f4]@5 ~@7 d4@4, d4@3 ~, ~@6 [bb3,f4]@9 ~", U: "[bb3,d4,f4]@6 bb3@5 ~ bb3@3 ~, ~@6 [d4,f4]@9 ~",
  V: "~@3 bb3, d4@7 ~, bb3@11 ~@5, ~@3 f3@5", W: "f3@6 ~@6 bb3@3 ~, d4@15 ~, bb3@11 ~@5, ~@6 f3@9 ~",
  X: "[g3,c4,e4]@2 ~ [g3,c4,e4]@5", Y: "[g3,c4,e4]@6 [g3,c4,e4]@7 ~@3", Z: "[g3,c4,e4]@6 ~@2 [bb3,d4]@7 ~",
  AA: "~@4 f3@3 ~, [a3,c4]@13 ~@3", AB: "[bb3,f4]@5 ~@7 d4@4, d4@3 ~, ~@6 bb3@9 ~",
  AC: "bb3@5 ~@7 [d4,f4]@3 ~, f4@3 ~, d4@5 ~@3, ~@6 bb3@9 ~", // Dm
  AD: "f3@4 ~@6 a3@2 [a3,c4]@3 ~, c4@3 ~, a3@5 ~@3, ~@3 f3@4 ~", AE: "[g3,c4]@13 ~@3, f3@11 ~@5",
  AF: "~@6 [bb3,bb4]@4 c3@2 f3@2 [bb3,bb4] ~, [a3,a4]@9 ~@7, ~@2 c3@7 ~@7, ~@4 [f3,f4]@5 ~@7", // Bb A F
  AG: "[a3,a4]@2 ~@10 [g3,g4]@3 ~, ~@2 c3@13 ~, ~@2 f3@5 ~, ~@3 [g3,g4]@3 ~@2, ~@10 [a3,a4]@5 ~", // A G A
  AH: "[a3,a4]@2 ~@10 [f3,f4]@2 [bb3,bb4] ~, ~ f3@2 ~, ~@3 [bb3,bb4]@4 ~, ~@10 c3@5 ~", // A F Bb
  AI: "[[a3,a4]@2 ~@2 [f3,f4]@2 [g3,g4]@4 [a3,a4]@2 [g3,g4]@2 [f3,f4]@25 ~@9, ~@2 c3@5 ~@41]/3", // A F G A G F
  AJ: "~@2 [f3,f4] [bb3,bb4]@3 ~ [bb3,bb4], [a3,a4]@3 ~@3 [f3,f4]@2, ~ c3@2 ~@5", // F Bb A F
  AK: "[[a3,a4] ~ [f3,f4] [g3,g4]@2 [a3,a4] [g3,g4] [f3,f4]@11 ~@6, ~@2 c3@5 ~@41]/3", // A F G A G F
  AL: "g3@3 g3@3 c4@2, e4@15 ~, c4@11 ~@5", AM: "[g3,c4,e4]@3 [g3,c4,e4]@5",
  AN: "[[g3,c4,e4]@6 ~@18 f3@7 ~, ~@4 d4@7 ~@5, ~@2 bb3@3 ~@3, ~@16 [a3,c4]@13 ~@3]/2", // C Am
  AO: "f4@3 ~@3 d4@2, d4@11 ~@5, bb3@2 ~ [bb3,f4]@5", AP: "[bb3,d4,f4]@6 bb3@6 bb3@3 ~, ~@6 [d4,f4]@9 ~",
  AQ: "~@3 bb3, d4@15 ~, bb3@3 ~, ~@6 f3@9 ~", AR: "[g3,c4,e4]@4 ~@2 [g3,c4,e4]@9 ~",
  AS: "[g3,c4,e4]@5 ~@3 [bb3,d4]@7 ~", AT: "f4@3 ~@3 d4@2, d4@11 ~@5, bb3@4 ~@2 bb3@9 ~",
  AU: "bb3@6 ~@6 [d4,f4]@3 ~, f4@3 ~, d4@5 ~@3, ~@6 bb3@9 ~", // Dm
  AV: "f3@4 ~@6 a3@2 [a3,c4]@3 ~, [a3,c4]@11 ~@5, ~@3 f3@4 ~", AW: "[f3,g3,c4]@13 ~@3",
  AX: "[[a3,a4]@2 ~@2 [f3,f4]@2 [g3,g4]@4 [a3,a4]@2 [g3,g4]@2 ~@28 bb3@2 ~@32 [bb3,f4]@2 d4 ~, ~@2 c3@5 ~@7 [f3,f4]@4 bb3@8 bb3@10 d4@2 bb3@4 ~@2 bb2@2 bb3@2 bb2@27 ~@5, ~@8 bb2@12 d4@5 bb3 d4 bb3@2 f4@2 d4 f4 d4@2 d4@2 d4@2 ~, ~@10 d4@2 d4@2 d4@3 f4@11 d4@2 bb3@4 bb3@2 f4@2 ~@2, ~@22 f4@8 f4@2 bb4@43 ~@5]/5", // A F G A G Bb5 F
  AY: "[~@10 f3@2 a3@2 ~@4 f3@2 ~@2 c4@2 ~@36 a3@3 ~, f2@29 ~@3, ~@2 f3@8 ~@10 f3@4 f3@4 f3@6 f3@6 f3@6 f3@6 f3@6 f3@5 ~, ~@4 a3@4 a3@4 ~@4 a3@4 a3@6 a3@4 a3@6 a3@5 ~ a3@6 a3@6 a3@6 ~@4, ~@6 c4@8 c4@8 ~@2 c4@7 ~ c4@6 c4@5 ~ c4@5 ~ c4@6 c4@6 ~@2]/4",
  AZ: "~@2 bb3@2 ~@8 d4@3 ~, bb2@15 ~, ~ d4!2 ~, ~@6 f4@9 ~, ~@10 bb3@5 ~",
  BA: "~@2 f3 ~@7 f3@2 a3@2 c4@2, a2@15 ~, ~ a3!2 ~, ~@6 c4@7 ~@3",
  BB: "[~@10 g3 bb3 ~ f3 ~@2, g2@25 ~@7, ~@2 f3@8 f3@8 f3@7 ~@7, ~ g3!3 g3 ~ g3 ~, ~@3 bb3@4 bb3@4 ~@5]/2",
  BC: "~@2 [c4,g4]@2 c3 c4 c3 c4, c3@7 ~@3 g4@6", BD: "~@2 [g3,c4,e4]@2 c3 g3 c3 g3, c3@7 ~@3 [c4,e4]@4 ~@2",
  BE: "[~@24 c3@2 [c4,e4]@2 c3@3 ~, c3@7 ~ c3@4 c3@4 c3@7 ~@9, ~@2 e4@8 [c4,e4]@3 ~@3, ~@2 c4@3 g4@8 ~@3, ~@10 c4@4 c4@6 g3@9 ~@3]/2", // C
  BF: "~@4 bb2 bb3 bb2 bb3, bb2@7 ~@9, ~@4 [bb3,d4,f4]@6 f4@5 ~", // Bb
  BG: "~@6 bb2 bb3, bb2@7 ~ bb2@4 ~@4, ~@4 bb3@9 ~@3, ~@2 f4@3 [c4,f4]@2 ~", // F5
  BH: "~@6 bb2 bb3, bb2@2 bb2 ~, ~@4 [bb3,d4,f4]@6 [bb3,d4,f4]@5 ~", // Bb
  BI: "~@4 [bb3,d4,f4]@4 bb2@2 ~@2 bb2@2 [g3,a3] ~, bb2@7 ~@3 [bb3,d4,f4]@4 ~@2", // Bb Gsus2 Bb
  BJ: "~@2 [g3,c4,e4]@2 c3 [g3,c4,e4] c3 g3, c3@3 ~@5", // C
  BK: "[~@2 [g3,c4,e4]@2 c3 [g3,e4] c3 ~ c3@2 [g3,c4,e4]@2 c3 [g3,c4,e4] c3 g3, c3@3 ~@2 c4@2 g3@2 ~@7]/2", // C
  BL: "~@4 [g3,c4,e4]@4 ~@4 c3@3 ~, c3@3 ~ c3@2 ~@2, ~@10 [c4,e4]@5 ~", // C
  BM: "[~@4 [bb3,d4,f4]@4 ~@4 bb2@2 ~@14 bb2@3 ~, bb2@3 ~ bb2@2 ~@2 bb2@4 bb2@2 ~@2, ~@5 [d4,f4]@5 ~@6, ~@5 bb3@2 bb3@3 [bb3,d4,f4]@3 [bb3,d4,f4]@2 ~]/2", // Bb Dm Bb
  BN: "~@4 [f3,a3,c4]@4 ~@4 a2@3 ~, a2@2 a2 ~, ~@5 [f3,a3,c4]@2 ~", // F
  BO: "g2@3 ~@3 f3@4 ~@2 g2@2 f3@2, [f3,g3,bb3]@6 [g3,bb3]@9 ~, ~@2 g2@2 ~ f3@2 ~", // Gm7 Gm
  BP: "[~@4 [f3,a3,c4]@4 f2@2 ~@10 [f3,a3,c4]@4 ~@6 f3 ~, f2@6 ~@4 [a3,c4]@9 ~@7 [a3,c4]@6, ~@10 f3@4 f3@5 ~@7 f3@4 ~@2, ~@12 f2@4 f2@7 ~ f2@4 f2@4]/2", // F Am
  BQ: "~@6 c3 c4, c3@2 c3 ~, ~@2 [c4,e4,g4]@3 [e4,g4]@3, ~@5 c4@2 ~", // C Em
  BR: "[~@5 c4 c3 ~@7 c3 ~@7 c3 c4, c3@7 ~ c3@4 ~@2 c4@5 ~ [c4,e4,g4]@6 c4@4 c4@4 ~@2 [c4,e4,g4]@6 [c4,e4,g4]@4 ~@2, ~@4 [c4,e4,g4]@6 [e4,g4]@9 ~@7 [e4,g4]@8 ~@14, ~@16 c3@7 ~ c3@4 ~@4 c3@7 ~ c3@4 ~@4]/3", // C Em
  BS: "[~@5 [bb3,f4] bb2 ~@6 bb3 bb2 bb3, bb2@7 ~ bb2@4 ~@2 bb3@5 ~ [bb3,d4,f4]@6 [d4,f4]@6, ~@2 [bb3,d4,f4]@3 d4@3 bb2@4 bb2@2 ~@2]/2", // Bb5 Bb Dm Bb
  BT: "~@2 [bb3,d4,f4]@2 bb2 bb3 bb2 bb3, bb2@3 ~@2 d4@3, ~@5 f4@2 ~", // Bb
  BU: "~@4 [bb3,d4,f4]@4 ~@4 bb2@3 ~, bb2@2 bb2 ~, ~@5 [d4,f4]@3, ~@5 bb3@2 ~", // Bb Dm
  BV: "~@2 [c4,e4,g4]@2 ~@2 c3 c4, c3@2 c3 ~, ~@5 [c4,e4,g4]@2 ~", // C
  BW: "[c3@4 [c4,e4,g4]@4 c3@2 c4@2 c3@2 c4@2 ~@4 [c4,e4,g4]@4 ~@2 c4@2 c3@2 c4@2 c3@4 [c4,e4,g4]@4 c3@2 [c4,e4,g4]@2 c3@3 ~, ~@5 [e4,g4]@4 ~@4 [e4,g4]@4 ~@7, ~@4 c3@2 c3 ~@5]/3", // C Em
  BX: "~@6 bb2 bb3, bb2@7 ~ bb2@4 ~@4, ~@2 [bb3,d4,f4]@3 [d4,f4]@3, ~@5 bb3@2 ~", // Bb Dm
  BY: "~@6 bb2 f3, bb2@2 bb2 ~, ~@2 [bb3,d4,f4]@3 [bb3,d4,f4]@2 ~", // Bb
  BZ: "~@10 [f3,a3,c4]@2 a2@3 ~, a2@2 a2 ~, ~@2 [f3,a3,c4]@3 ~@3", // F
  CA: "[f3,g3,bb3]@2 ~@4 g3 f3, g2 ~ g2@2 g2@3 ~, ~@6 bb3@9 ~, ~@3 g3@3 ~@2, ~@3 f3@2 f3@2 ~", // Gm7
  CB: "[~@12 f2@2 f3@2 ~@4 [f3,a3,c4]@4 ~@4 f2@2 f3 ~, f2@2 f2 ~ f2@2 f2 ~, ~@2 [f3,a3,c4]@3 [a3,c4]@4 ~@7, ~@10 f3@4 ~@12 [f3,a3,c4]@5 ~]/2", // F Am F
  CC: "~@4 c3 g3 c3 g3, c3@7 ~@9, ~@2 [c4,e4,g4]@3 [c4,e4]@3", // C
  CD: "[~@5 g3 c3 g3 ~@2 [c4,e4,g4]@2 c3 g3 c3 g3, c3@7 ~ c3@4 ~@4 c3@6 ~@10, ~@2 [g3,c4,e4]@3 [c4,e4]@4 ~@4 [c4,e4]@3]/2", // C
  CE: "c3@4 g3@4 ~@4 c3@2 g3 ~, ~@2 [c4,e4]@3 [c4,e4]@3, ~@2 c3 ~, ~@5 g3@2 ~", // C
  CF: "~@5 bb3 bb2 bb3, bb2@7 ~ bb2@4 ~@4, ~@2 [bb3,d4,f4]@3 [d4,f4]@3", // Bb Dm
  CG: "~@2 [bb3,d4,f4]@2 bb2 bb3 bb2 bb3, bb2@7 ~@3 [d4,f4]@6", // Bb Dm
  CH: "~@2 [bb3,d4,f4]@2 bb2 bb3 bb2 bb3, bb2@7 ~@3 d4@6, ~@5 f4@2 ~", // Bb
  CI: "~@4 bb3@4 bb2@2 bb3@2 bb2@3 ~, bb2@7 ~@9, ~@4 [d4,f4]@6 [d4,f4]@5 ~", // Dm
  CJ: "[~@2 [g3,c4,e4]@2 c3 g3 c3 g3 ~@2 [g3,c4,e4]@2 c3 [c4,e4]@4 ~@7, c3@3 ~@2 [c4,e4]@4 ~@4 g3 ~@10, ~@8 c3@3 ~@13]/3", // C
})).s("gm_acoustic_guitar_steel").gain(0.35)

// chords · acoustic guitar steel · "STEEL GTR" · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~ A B C D ~@2 E D ~@2 F G ~@2 H D ~@2 I D ~@2 J K ~@2 L M N ~@11 O P ~@2 Q R S D ~@2 H D ~@2 I D ~@2 J K ~@2 L M N
  ~@11 O P ~@2 Q R S D ~@3 T U@2 ~ V W X ~@6 Y ~@3 Z ~@5 AA AB ~@10 AC ~@5 AA ~@9 AD ~@5
>`.pickRestart({
  A: "~@2 c4@8 ~@2 f4@3 ~, ~@10 c4@5 ~", B: "~@4 f4@10 f4 ~, ~@2 c4@13 ~", C: "~@10 c4@5 ~, ~ [c3,c4]@4 ~@3, ~ f4@2 ~",
  D: "~@2 c4@5 ~@9", E: "~@4 f4@2 ~@6 f4@3 ~, ~@2 c4@4 ~@4 c4@5 ~", F: "~@12 f4@3 ~, ~@2 c4@8 c4@5 ~, ~ f4@2 ~",
  G: "~ c4@2 ~@5", H: "~ c4@2 ~@2 [c3,c4]@3", I: "~@2 c4@4 ~@4 c4@5 ~", J: "~ c4@2 ~@3 f4@2, ~@5 c4@3",
  K: "~@2 f4 ~@5, ~ c4@2 ~@5", L: "~@4 f4@2 ~@4 c4@3 ~@3, ~ c4@2 ~@5", M: "~ c4@2 ~@4 f4", N: "~@3 g3", O: "~@6 f4@9 ~",
  P: "~@5 d4 ~@2", Q: "~@2 c4@7 ~ c4@2 f4@2 ~@2", R: "~@4 f4@10 [f3,f4] ~, ~@2 c4@13 ~",
  S: "~@10 c4@5 ~, ~@2 [c3,c4]@7 ~@7, ~ f4@2 ~", T: "~ f4 bb3 ~", U: "[~@6 f3@3 ~@7]/2", V: "~@14 c4 ~",
  W: "~@2 bb3 bb3@2 ~@3", X: "~@2 f3@3 ~ f3 [f3,a3]", Y: "~@10 d4@3 ~@3", Z: "~@14 [c4,e4] ~", AA: "~@14 f3 ~",
  AB: "~@2 g2 ~", AC: "~@7 e4, ~@14 g4 ~", AD: "~@7 f4",
})).s("gm_acoustic_guitar_steel").gain(0.2)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~ A B A C A D A E A F A G A H A E A I A F A F A G A@3 J K L K@2 M N M O K P Q R S T U V A D A W X H A E A Y A F A F A
  G A@3 J K L K@2 M N M O K P Z AA S T U V A D A AB M@3 AC A@3 AD M U AE AF K L K AG M N M O K L K@2 M@2 AH AE A AI K@2
  AJ AK M N M AL K@4 M@2 U AM A AI K@3 L M@4 K AN ~@2
>`.pickRestart({
  A: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~", B: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ c2@2 d2@2 f2@2",
  C: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ c2@2 d2@3 ~", D: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ c2 ~ d2@2 f2@2",
  E: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ c2 ~ d2@3 ~", F: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ c2 ~ d2@2 f2 ~",
  G: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ c2 ~ d2@4", H: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ c2 ~ d2 ~ f2 ~",
  I: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ c2 ~ d2 ~", J: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ g1 ~ a1@2 bb1@2",
  K: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", L: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ g1 ~ a1 ~",
  M: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~", N: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ f1 ~ g1 ~",
  O: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ a1 ~ g1 ~ a1 ~", P: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ g2 ~ a2 ~",
  Q: "c3@5 ~ c3@2 bb2@5 ~ bb2 ~", R: "a2@5 ~ a2 ~ f2@3 ~ f2@3 ~", S: "bb1@3 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~",
  T: "bb1@3 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ c2 ~", U: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
  V: "g1@5 ~ g1 ~ g1@4 c2@4", W: "f1 ~ g1 ~ a1 ~ c2@3 ~ c2 ~ d2@4", X: "~@2 f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~",
  Y: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ c2 ~ d2@2", Z: "c3@5 ~ c3 ~ bb2@5 ~ bb2 ~", AA: "a2@5 ~ a2@2 f2@3 ~ f2@3 ~",
  AB: "f1@2 g1 ~ a1 ~ d2@5 ~ c2@4", AC: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1@2 c2@2",
  AD: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1@2 c2@2", AE: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~",
  AF: "g1@7 ~ g1 ~ g1 ~ a1 ~ bb1 ~", AG: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ g1 ~ c2 ~ g1 ~",
  AH: "a1@2 a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", AI: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ g1 ~ a1 ~ bb1 ~", AJ: "c2@7 ~ bb1@7 ~",
  AK: "a1@8 f1@7 ~", AL: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ a1 ~", AM: "g1 ~ g1 ~ g1 ~ g1 ~ g1@3 ~ g1@4",
  AN: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~@5",
})).s("gm_electric_bass_finger").gain(0.41)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~ A B C D@3 E F@3 G@4 H I@3 J K@2 ~ L@4 M N O P Q R S@4 T U V R S W X Y Z AA AB AC@3 AD AE@3 J K@2 ~ AF@3 ~ M AG O P Q
  AH S@4 T U V AH S AI AJ Y E AK AB AL ~@28 AM AN ~@16 AO@2 ~@12
>`.pickRestart({
  A: "~@7 bb4, a4, ~ c4@4 c4@3, ~@4 f4@7 ~ f4@4, ~@3 bb4@4 ~",
  B: "~@7 f4, a4@9 ~ a4@6, ~@2 c4@13 ~, ~@4 f4@9 ~@3, ~@3 g4@3 g4@2",
  C: "a4 ~@6 bb4, ~@2 c4@7 ~ c4@6, ~ f4@2 f4, ~@6 bb4@7 ~@3",
  D: "[~@6 g4@4 ~@2 g4@2 f4@31 ~@3, a4@9 ~ a4@5 ~@33, ~ c4@6 ~@17, ~@2 f4@5 ~@17]/3",
  E: "~@7 bb4, a4, ~@2 c4@7 ~ c4@6, ~ f4@2 f4, ~@3 bb4@4 ~",
  F: "[a4@2 ~@10 g4@2 f4@27 ~@7, ~@2 c4@11 ~@35, ~@2 f4@5 ~@17, ~ g4 ~@6, ~@5 a4@2 ~@17]/3",
  G: "[~@4 f4@2 ~@16 g4@4 a4@2 g4@2 f4@21 ~@13, a4@5 ~ bb4@8 bb4@15 ~@35, ~@2 c4@4 ~@4 c4@6 a4@4 a4@5 ~@39, ~@12 f4@17 ~@35, ~@18 c4@11 ~@35]/4",
  H: "~@12 f4@2 bb4 ~, a4@15 ~, ~@2 c4@8 c4@5 ~, ~ f4@2 ~, ~@6 bb4@7 ~@3",
  I: "[a4 ~@2 g4@2 ~ g4 f4@10 ~@7, ~ c4@6 ~@17, ~@2 f4@5 ~@17, ~@5 a4@2 ~@17]/3",
  J: "~@7 bb4, a4, ~ c4@4 c4@3, ~@4 f4@7 ~ f4@4, ~@6 bb4@7 ~@3",
  K: "[~@6 g4@4 ~@2 g4@2 f4@11 ~@7, a4@9 ~ a4@4 ~@18, ~@2 c4@11 ~@19, ~@2 f4@5 ~@9]/2",
  L: "[~@20 f4@2 g4@4 a4@2 g4@2 f4@19 ~@15, a4@14 ~@2 a4@7 ~@41, ~@2 c4@8 c4@8 c4@5 ~@41, ~@4 f4@7 ~ f4@8 ~@44, ~@6 bb4@8 bb4@9 ~@41]/4",
  M: "~@7 bb4, a4, ~ c4@4 c4@3, ~ f4@2 f4, ~@3 bb4@4 ~", N: "a4 ~ f4 g4@2 a4 g4 f4, ~@2 c4@5 ~@9",
  O: "~@4 [g4,c5,e5] ~@7 [g4,c5,e5]@2 ~@2", P: "~@4 [g4,c5,e5] ~@7 [g4,c5,e5] ~@3", Q: "~ c5 [bb4,d5]@2, [g4,e5] ~",
  R: "~@8 f4@7 ~, [a4,c5]@7 ~", S: "~@2 [bb4,d5,f5] ~@3 [bb4,d5,f5] ~", T: "~@2 [c5,e5,g5] ~@3 [c5,e5,g5] ~",
  U: "~@2 [g4,c5,e5] ~@3 [g4,c5,e5] ~", V: "~@4 c5@3 ~ [bb4,d5]@7 ~, [g4,e5]@7 ~@9",
  W: "~@4 bb4@7 ~ bb4@3 ~, ~@4 [d5,f5]@11 ~", X: "~@6 a4@4 c5@2 [f4,c5]@3 ~, c5@9 ~ a4@4 ~@2, ~ f4@2 ~",
  Y: "[g4,c5]@15 ~, f4@11 ~@5", Z: "~@7 bb4, a4, ~@2 c4@7 ~ c4@6, ~ f4@2 f4, ~@6 bb4@7 ~@3",
  AA: "~@7 f4, a4@9 ~ a4@6, ~ c4@6 ~, ~@2 f4@5 ~, ~@3 g4@3 g4@2",
  AB: "a4 ~@6 bb4, ~ c4@4 c4@3, ~@4 f4@7 ~ f4@4, ~@3 bb4@4 ~",
  AC: "[~@12 g4@2 f4@23 ~@11, a4@10 a4@5 ~@33, ~@2 c4@11 ~@35, ~@4 f4@9 ~@35, ~ g4 ~@6]/3",
  AD: "~@12 f4@2 bb4 ~, a4@15 ~, ~@2 c4@8 c4@5 ~, ~ f4@2 ~, ~@3 bb4@4 ~",
  AE: "[a4@2 ~@4 g4@4 ~@2 g4@2 f4@21 ~@13, ~ c4@6 ~@17, ~@2 f4@5 ~@17, ~@5 a4@2 ~@17]/3",
  AF: "[~@10 f4 g4@2 a4 g4 f4@9, a4@14 ~@2 a4@7 ~@25, ~@2 c4@8 c4@8 c4@5 ~@25, ~@4 f4@7 ~ f4@8 ~@28, ~@6 bb4@8 bb4@9 ~@25]/3",
  AG: "a4 ~ f4 g4@2 a4 g4 f4, ~ c4@6 ~", AH: "~@8 f4@7 ~, [a4,c5]@13 ~@3", AI: "~@4 bb4@8 bb4@3 ~, ~@4 [d5,f5]@11 ~",
  AJ: "~@6 a4@3 ~ c5@2 [f4,c5]@3 ~, c5@5 a4@2 ~, ~@4 f4@7 ~@5", // F5
  AK: "~@3 g4@2 ~@2 f4, a4@9 ~ a4@6, ~@2 c4@13 ~, ~@2 f4@5 ~, ~@3 g4",
  AL: "~@6 g4 f4, a4@10 a4@5 ~, ~@2 c4@11 ~@3, ~@4 f4@9 ~@3, ~@3 g4@3 ~@2",
  AM: "a5 ~@6 bb5, ~@2 c5@8 c5@5 ~, ~@4 f5@7 ~ f5@4, ~@6 bb5@7 ~@3", AN: "~@2 f5 ~@3 f5@2, a5@3 g5@5, ~@2 c5@7 ~ c5@6",
  AO: "[~@20 f5@2 ~@6 f5@3 ~, a5@16 a5@7 ~@9, ~@2 c5@7 ~ c5@7 ~ c5@7 ~ c5@5 ~, ~@4 f5@8 f5@7 ~@3 g5@9 ~, ~@6 bb5@7 ~ bb5@9 ~@9]/2",
})).s("gm_electric_guitar_clean").gain(0.35).pan(0.6)

// other · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~@20 A B@2 ~ A C@2 ~@2 D@2 E F G@2 H@2 D@2 E F I@2 J K ~@4 L@2 ~ A M@2 ~ A B@2 ~ N@3 ~@2 O@2 E F P@2 Q@2 R@2 E F S@2 J
  K ~@3 T U V W X Y Z AA AB AC AD AE@2 AF@2 AG@2 AH@2 AI@2 AJ@2 AK@2 AI@2 AL AM AN@2 AF@2 O@2 AO@2 AP@2 AQ@2 AR@2 AS@2 J
  AT AU@2 AF@2 AV@2 AW@2 AX@2 AY@2 ~@2
>`.pickRestart({
  A: "~@14 [f2,c3] f2", B: "[[f2,c3]@27 ~@5]/2", C: "[f2@15 ~, c3@13 ~@3]/2", D: "[[c3,g3]@27 ~@5]/2",
  E: "c3@7 ~ bb2@8", F: "a2 f2", G: "[~@8 f3@7 ~, bb2@29 ~@3]/2", H: "[f3@13 ~@3, bb2@23 ~@9]/2",
  I: "[~@12 f3@19 ~, bb2@29 ~@3]/2", J: "a2", K: "g2@15 ~", L: "[[f2,c3]@7 ~]/2", M: "[f2,c3]/2",
  N: "[~@14 c3 ~ c3@29 ~@3, ~@14 f2@31 ~@3]/3", O: "[[c3,g3]@13 ~@3]/2", P: "[~@16 f3@13 ~@3, bb2@27 ~@5]/2",
  Q: "[[bb2,f3]@3 ~]/2", R: "[c3@7 ~, g3@25 ~@7]/2", S: "[~@12 f3@19 ~, bb2@7 ~]/2", T: "~@12 [bb3,bb4] ~ [bb3,bb4] ~",
  U: "[d4,d5]@3 ~ [f4,f5]@7 ~ [f4,f5]@4", V: "[g4,g5]@2 [f4,f5] ~ [f4,f5]@3 ~ [f4,f5]@3 ~ [bb3,bb4] ~ [bb3,bb4]@2",
  W: "[d4,d5]@3 ~ [f4,f5]@7 ~ [f4,f5]@3 ~", X: "[g4,g5]@2 [f4,f5] ~ [f4,f5]@3 ~ [f4,f5]@3 ~ [f4,f5] ~ [f4,f5] ~",
  Y: "[a3,a4]@4 [c4,c5]@7 ~ [d4,d5]@3 ~", Z: "[a3,a4]@2 [g3,g4]@2 [f3,f4]@3 ~ [f3,f4]@8",
  AA: "[a3,a4]@4 [c4,c5]@7 ~ [d4,d5]@2 ~@2", AB: "[a3,a4]@2 [g3,g4] ~ [f3,f4]@3 ~ [f3,f4]@3 ~ [bb3,bb4] ~ [bb3,bb4] ~",
  AC: "[d4,d5]@3 ~ [f4,f5]@3 ~ [f4,f5]@4 [f4,f5]@3 ~, [bb3,bb4] ~@15", // D F Bb
  AD: "[g4,g5] ~ [f4,f5] ~ [f4,f5]@3 ~ [f4,f5]@4 [d4,d5]@2 [f4,f5] ~", // G F D F
  AE: "[[g4,g5]@2 [f4,f5] ~ [f4,f5]@3 ~ [f4,f5]@3 ~ [f4,f5]@7 ~ [f4,f5]@3 ~ [f4,f5]@2 [g4,g5]@5 ~]/2", // G F G
  AF: "[[c3,g3]@7 ~]/2", AG: "[[c3,g3]@25 ~@7]/2", AH: "[[bb2,f3]@27 ~@5]/2", AI: "[[bb2,f3]@25 ~@7]/2",
  AJ: "[c3@15 ~, g3@7 ~]/2", AK: "[g3@13 ~@3, c3@3 ~]/2", AL: "a2@15 ~", AM: "g2@13 ~@3",
  AN: "[c3@25 ~@7, f2@19 ~@13]/2", AO: "[f3@15 ~, bb2@27 ~@5]/2", AP: "[f3@13 ~@3, bb2@11 ~@5]/2",
  AQ: "[g3@15 ~, c3@25 ~@7]/2", AR: "[c3@7 ~, g3@3 ~]/2", AS: "[[bb2,f3]@7 ~]/2", AT: "g2@7 ~",
  AU: "[c3@29 ~@3, f2@23 ~@9]/2", AV: "[c3@7 ~, g3@11 ~@5]/2", AW: "[f3@15 ~, bb2@13 ~@3]/2",
  AX: "[f3@29 ~@3, bb2@13 ~@3]/2", AY: "[[c3,g3]@29 ~@3]/2",
})).s("gm_distortion_guitar").gain(0.35).pan(0.6)

// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@116 A B C D E F G H@2 I J K@2 L M N@2 O P@3 Q R@2 S@3 ~@2>".pickRestart({
  A: "g4@11 ~@5", B: "[e3,e4]@2 [f3,f4]@2 [g3,g4]@3 ~ [g3,g4]@4 [a3,a4]@2 [g3,g4]@2",
// … 90 more lines

More by Fleetwood Mac