Strudelify
Maggie May cover art

1971 · Every Picture Tells A Story

Maggie May

Rod Stewart

KeyD majorTempo130 bpm
0:00/0:00
// Maggie May — Rod Stewart
// 130 bpm, 4/4, key D major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 177 bars on a 16-step grid, each part at one level. 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: edit a riff to change every repeat.

// chords · percussive organ · "ORGAN"
const percussive_organ = note(`<
  ~@10 A B C@2 D E F@2 B G B H I J K@2 L M L M L M N@2 D E O@2 D E O@2 B G B H I J P@2 I A I A I Q R@2 S B C@2 D E F@2 B
  G B H I J I T I A I A I Q C@2 U@4 V W X@2 A B C@2 D E F@2 B G B H I J P@2 I A I A I Q Y@2 L M G B I B C@2 L M G B Z AA
  AB@8 ~@12 AB@16 AC@4 AD@2 AE@7
>`.pickRestart({
  A: "[e5,a5,c#6]", B: "[d5,g5,b5]", C: "[d5,f#5,a5]/2", D: "[a5,c#6,e6]", E: "[g5,b5,d6]", F: "[d5,f#5,a5,d6]/2",
  G: "[d5,f#5,a5]", H: "[e5,a5,e6]", I: "[e5,g5,b5]", J: "[c#5,f#5,a5]", K: "[[e5,g5,b5]@7 [g5,b5,d6]]/2",
  L: "[b4,e5,g5]", M: "[c#5,e5,a5]", N: "[f#5,a5,d6,f#6]/2", O: "[f#5,a5,d6]/2", P: "[[g5,b5]@2 d6 c#6, e5, ~ a5]/2",
  Q: "[e5,a5,c#6] [d5,g5,b5]", R: "[a5,d6,f#6]/2", S: "[e5,a5]", T: "d6 c#6, a5",
  U: "[[g4,b4,d5] c#5 f#4 [g4,b4], e4 d5, ~ a4@2 ~]/4", V: "[e4,g4,b4]", W: "[g4,b4,d5]", X: "[f#4,a4,d5]/2",
  Y: "[a5,d6,f#6,a6]/2", Z: "[b5,e6,g6]", AA: "[g5,b5,d6,b6]", AB: "[d5,a5,d6]/8", AC: "[d5,a5,d6]/4",
  AD: "[[d5,a5,d6]@3 [d5,g5,b5]]/2", AE: "[~@3 [d3,a3,d4]@105 ~@4]/7",
})).s("gm_percussive_organ").gain(0.25)

// chords · rock organ · "ORGAN RIFFS"
const rock_organ = note(`<
  ~@11 A B@2 C ~@2 D E@2 F G H@4 I@6 J@2 K L@3 K M@3 N@2 O P Q R S@2 T@4 U@2 V W P X@2 Y G Z@3 AA@2 AB AC@2 AD@3 AE@6
  AF@2 ~@7 AG P AH@3 AI AJ AK AL AM@2 AN@3 AO@3 AP@6 AQ AR AS AT AU AV AW@2 AX@2 AS AT AU AY AS AZ ~@40 BA BB@8
>`.pickRestart({
  A: "~@14 g5 g#5", B: "[a5@24 f#5 a5 b5@6]/2", C: "a5", D: "~@15 a#5", E: "[b5@3 a#5 b5@6 a5@2 g5@2 a5@17 a#5]/2",
  F: "b5@7 d#6 e6@4 b5@3 d#6", G: "[e6,a6]", H: "[e6@15 ~]/4", I: "e6/6", J: "[f#6@21 a#6 b6@4 a6@2 f#6@4]/2",
  K: "e6@15 f#6", L: "[g6@2 e6@2 d6@3 f#6 g6@2 e6@2 d6@25 a#6 b6@4 a6@2 f#6@4]/3",
  M: "[g6@2 e6@2 ~@4 g6@8 f#6@31 f#6, ~ d6@11]/3", N: "[g6@2 e6@2 d6@3 f#6 g6@2 e6@2 ~@4 f#6@15 a#5, ~@12 d6@19 ~]/2",
  O: "b5@7 ~ b5@2 ~ a#5 b5@3 d#6, g5, ~@5 a5 ~@2", P: "e6", Q: "[b5,e6,g6]@15 ~", R: "[a5,c#6,f#6]@15 ~",
  S: "[b5@15 ~ d5@8 c#5@8, [e6,g6]]/2", T: "[[g6,b6]@15 ~ [a6,c#7]@16, [e6,e7]]/2",
  U: "[[g6,b6]@15 ~ c#7@7 a#6 b6@8, [e6,e7]@3 ~, ~@16 a6@9 ~@7]/2", V: "[d6,f#6]", W: "f#6 e6 d6@2 d6@4",
  X: "[d6@31 f5]/2", Y: "f#5@2 a5 ~ a5@2 f#5 a#5 b5@4 a5@4",
  Z: "[g6@8 f#6@2 e6@2 ~@19 a#6 b6@8 a6@8, d6@10 ~@2 d6@35 ~, ~@16 f#6@31 ~]/3",
  AA: "[g6@7 ~ g6@2 e6@2 ~@2 f#6@17 ~, d6@11 ~ d6@19 ~]/2", AB: "b5@7 ~ b5@2 a5@2 g5@4, d6",
  AC: "[[a5,e6,a6]@7 ~ e7@6 [e6,g6,b6]@2, ~@14 e6@13 ~@5, ~@15 [g6,b6]@13 ~@4]/2", // A5 Em G
  AD: "[[c#6,f#6,a6]@7 ~ e7@8 [d6,d7]@4 [c#6,c#7]@4, ~@7 e6@17, ~@5 g6@11, ~@15 b6@16 ~@17]/3", // F#m D C#
  AE: "[[g6,b6]@15 ~ [a6,c#7]@16 [g6,b6]@16 [a6,c#7]@16 [g6,b6]@15 ~ [a6,c#7]@8 [g6,b6,d7]@8, e7@11 ~]/6", // G A G A G A G
  AF: "[d6,f#6]/2", AG: "~@5 a#6 b6@4 a6@2 f#6@4",
  AH: "[d6@5 f#6 g6@4 e6@2 ~@4 [a5,f#6]@21 a#5 b5@4 a5@2 f#5@4, ~@6 d6@13 ~@5]/3", AI: "a5@15 d#6",
  AJ: "e6@2 d6@2 b5@3 d#6 e6@2 d6@2 b5@2 d6@2", AK: "d6@15 a#6", AL: "b6@2 a6@2 f#6@2 ~ a5",
  AM: "[b5@2 d6@2 e6@2 d6@2 g6@2 e6@2 ~@10 f#5@2 ~@2 f#5 e5 d5@4, ~@3 d6@5, ~@8 f#6@7 ~, ~@8 a5@4 a5@3 ~]/2",
  AN: "[[g5,b5,d6]@11 a#5 b5@2 ~@6 [c#6,e6,a6]@10 ~@2 e7@12 [e6,g6,b6]@4, ~@14 a5@17 [g6,b6]@13 ~@4, ~@30 e6@13 ~@5]/3", // G A Em G
  AO: "[[c#6,f#6,a6]@7 ~ e7@8 d7@4 c#7@4, ~@7 e6@17, ~@5 g6@11, ~@15 b6@16 ~ a6@16]/3", // F#m
  AP: "[[g6,b6]@15 ~ [a6,c#7]@16 [g6,b6]@15 ~ [a6,c#7]@16 [g6,b6]@15 ~ [a6,c#7]@8 [g6,b6,d7]@8, e7@11 ~]/6", // G A G A G A G
  AQ: "~@13 a#6 b6@2, ~@6 a6 ~", AR: "~@2 a6@2 f#6@2 [f#6,f#7]@3 ~ [e6,e7]@2 [d6,d7]@2 ~@2", AS: "[e6,g6,b6,e7]",
  AT: "[e6,a6,c#7,e7]", AU: "[f#6,a6,d7]", AV: "[d6,g6,b6]", AW: "[[e6,e7] [d6,d7], [g6,b6]]/2",
  AX: "[d6@21 a#6 b6@4 a6@2 f#6@4]/2", AY: "[d6,g6,b6]@6 [f6,g6] [a6,b6,c7] e7@8, ~@8 d7 ~@7", AZ: "[b6,d7,g7,b7]",
  BA: "[a5,d6,f#6]", BB: "[[b5,e6,g6]@8 [d6,g6]@10 [a5,d6,f#6,a6]@105 ~@5]/8",
})).s("gm_rock_organ").gain(0.22).pan(0.4)

// chords · acoustic guitar steel · "ACOUSTIC GUITAR"
const acoustic_guitar_steel = note(`<
  ~@2 A B C D E B C F G H I@2 J K I L M N M O P Q R S P J P J P O T@2 U V I@2 J K I N M N M O P Q R W P J P J P X I@2 Y
  V I@2 Z AA I@2 M N M O P Q R W P J P J P X I@2 AB O I M AC M I@2 Z K AD@2 Y M AE I M N M O P Q R AF P J P J P X I@2 AB
  O I M AB M I@2 AB O I M AG AH AI C AJ AK AI C AL AM AI C AJ AN AI C AL AO AP C AL AQ AP C AL AR AP C AL AR AP C AL AR
  AP C AL AR AP C AL AR AP AS@8
>`.pickRestart({
  A: "[d3,a3,d4,a4]!2", B: "[d3,d4]@2 [e3,e4]!2 [e3,e4]@2 [e3,e4]@2",
  C: "[d3,g3,d4,g4]@2 [d3,g3,d4,g4]!2 [d3,g3,d4,g4]@2 [d3,g3,d4,g4]@2", D: "[d3,a3,d4,f#4,a4] [d3,g3,d4,g4]",
  E: "[d3,d4] [d3,a3,d4,a4]", F: "[d3,a3,d4,f#4,a4]@4 [g3,b3,d4,g4] ~ [g3,b3,d4,g4] ~",
  G: "[a3,c#4,e4,a4] [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]", H: "[g3,b3,d4,g4] [g3,b3,d4,g4]@2 [g3,b3,d4,g4]",
  I: "[d3,a3,d4,f#4,a4]@2 [d3,a3,d4,f#4,a4]@2 [d3,a3,d4,f#4,a4]!4", // D
  J: "[a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]!2 [a3,c#4,e4,a4]@2", // A
  K: "[g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]!2 [g3,b3,d4,g4]@2", // G
  L: "[d3,a3,d4,f#4,a4]@4 [d3,a3,d4,f#4,a4]@3 [d3,a3,d4,f#4,a4] [d3,a3,d4,f#4,a4]@2 [d3,a3,d4,f#4,a4]@2 [d3,a3,d4,f#4,a4] ~@3", // D
  M: "[g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]!4", // G
  N: "[d3,a3,d4,f#4,a4]@2 [d3,a3,d4,f#4,a4]@2 [d3,a3,d4,f#4,a4]!2 [d3,a3,d4,f#4,a4]@2", // D
  O: "[a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]!4", // A
  P: "[e2,b2,e3]@2 [b2,e3,g3,b3,e4]@2 [e3,g3,b3,e4]!2 [e3,g3,b3,e4]@2", // E5 Em
  Q: "[f#2,c#3,f#3]@2 [c#3,f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]!2 [f#3,a3,c#4,f#4]@2", // F#5 F#m
  R: "[e2,b2,e3]@2 [b2,e3,g3,b3,e4]@2 [e3,g3,b3,e4]!4", // E5 Em
  S: "[e2,b2,e3]@2 [b2,e3,g3,b3,e4]@2 [e3,g3,b3,e4]!2 [e2,e3,a3,d4,e4]@2", // E5 Em Dsus2
  T: "[d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]!4", U: "[a3,c#4,e4,a4]!2 [a3,c#4,e4,a4]@2", V: "[g3,b3,d4,g4]!4",
  W: "[e3,g3,b3,d4]@2 [e3,g3,b3,d4]@2 [e3,a3,c#4]!4", X: "[a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@2 [g3,b3,d4,g4]!4",
  Y: "[a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]!2", Z: "[a3,c#4,e4,a4]!4",
  AA: "[g3,b3,d4,g4]!2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]!4", AB: "[e3,g3,b3,e4,g4]@2 [e3,g3,b3,e4,g4]@2 [e3,g3,b3,e4,g4]!4",
  AC: "[b2,e3,g3,b3]@2 [b2,e3,g3,b3]@2 [b2,e3,g3,b3]!2 [e3,g3,b3,e4,g4]@2", // Em
  AD: "[d3,a3,d4,f#4,a4]@2 [d3,a3,d4,f#4,a4]!6", // D
  AE: "[d3,a3,d4,f#4,a4]@2 [d3,a3,d4,f#4,a4]@2 [d3,a3,d4,f#4,a4]@2 [d3,a3,d4,f#4,a4]!2", // D
  AF: "[e2,b2,e3] [b2,e3,g3,b3,e4] [e3,a3,d4,e4]!2", AG: "[e3,g3,b3,e4,g4]!4", AH: "[g3,b3,d4,g4]!2 [g3,b3,d4,g4]@2",
  AI: "[d3,a3,d4,f#4]!2", AJ: "[d3,g3,d4,g4]@2 [d3,g3,d4,g4]!4 [g3,d4,g4,b4]@2",
  AK: "[d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 [d3,a3,d4,e4] [d3,a3,d4,f#4] [d3,a3,d4,e4] [d3,a3,d4]", // D Dsus2 D Dsus2 D5
  AL: "[g3,d4,g4,b4]@2 [g3,d4,g4,b4]!4 [g3,d4,g4,b4]@2", // G
  AM: "[d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]!2 [d3,a3,d4,f#4]@2 [d3,a3,d4,e4]@2", AN: "[d3,a3,d4,a4]!4",
  AO: "[d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]!2 [d3,g3,d4,g4]@2 [g3,d4,g4,b4]@2", // D G5 G
  AP: "[d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]!2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@2", AQ: "[d3,a3,d4]@2 [d3,a3,d4]!6",
  AR: "[d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]!6", // D
  AS: "[[d3,g3,d4,g4]@4 [d3,g3,d4,g4]@2 [d3,g3,d4,g4]@2 [d3,g3,d4,g4,b4]@9 ~@3 a4@102 ~@6, ~@17 d3@102 ~@9, ~@9 [f#3,a3]@51 ~@4, ~@19 [d4,f#4]@102 ~@7]/8", // G5 G F#m D
})).s("gm_acoustic_guitar_steel").gain(0.4).pan(0.6)

// other · acoustic guitar steel · "MANDOLIN 1"
const acoustic_guitar_steel_2 = note(`<
  ~@2 A B C D E B F G ~@118 H I J K H L J M N O P Q R S T U R V W U X Y Z AA AB AC AD AE H Y AF AG AH L J U X Y Z AA AB
  AI AJ AK@3 AL ~@2
>`.pickRestart({
  A: "~@2 [d4,a4,d5,a5]!2 [d4,a4,d5,a5]@4", B: "~@2 [d4,g4]!2 [d4,g4]@2 [d4,g4]@2",
  C: "[d4,g4,b4]@2 [d4,g4,b4]!2 [d4,g4,b4]@2 [d4,g4,b4]@2", D: "[d4,f#4,a4] [d4,g4]",
  E: "~@2 [a3,d4,e4]!3 f#4 [a3,d4,f#4]@2", F: "[d4,g4]@2 [d4,g4]!2 [d4,g4]@2 [f4,a4]@2",
  G: "[d4,f#4,a4]@4 [d4,g4,a4] ~ [d4,g4,b4] ~", H: "[d4,d5]!8 [d4,d5]@2 [e4,e5]@2 [f#4,f#5]@2 [g4,g5]@2",
  I: "[a4,a5]!8 [a4,a5]@2 [g4,g5]@2 [f#4,f#5]@2 [f#4,f#5]@2", // A G F#
  J: "[g4,g5]!8 [g4,g5]@2 [g4,g5] [f#4,f#5] [e4,e5]@2 [e4,e5]@2", // G F# E
  K: "[d4,d5]!8 [d4,d5]@2 [d4,d5]@2 [a3,a4]@2 [b3,b4]@2", // D A B
  L: "[a4,a5]!8 [a4,a5]@2 [g4,g5]@2 [f#4,g4,f#5,g5] [f#4,f#5] [e4,e5]@2", // A G Gmaj7 F# E
  M: "[d4,d5]!3 [d4,d5]@2 [d4,d5] [a3,a4] [b3,b4]", N: "[d4,d5]!3 [d4,d5]@2 [e4,e5] [f#4,f#5] [g4,g5]",
  O: "[a4,a5] [a4,a5]@2 [a4,a5]@2 [g4,g5] [f#4,f#5] [e4,e5]", // A G F# E
  P: "[g4,g5]@2 [g4,g5]@4 [g4,g5]@4 [g4,a4,g5,a5] [f#4,f#5] [e4,e5]@2 [e4,e5]@2", // G Gsus2 F# E
  Q: "[d4,d5]@3 [d4,d5]@2 [d4,d5] [a3,a4] [b3,b4]", R: "[d4,d5] [d4,d5]@2 [d4,d5]@2 [e4,e5] [f#4,f#5] [g4,g5]",
  S: "[a4,a5]@2 [a4,a5]@4 [a4,a5]@4 [g4,g5]@2 [f#4,f#5] [f#4,g4,f#5,g5] [e4,e5]@2", // A G F# Gmaj7 E
  T: "[g4,g5]@2 [g4,g5]@4 [g4,g5]@4 [f#4,g4,f#5,g5] [f#4,f#5] [e4,e5]@2 [e4,e5]@2", // G Gmaj7 F# E
  U: "[d4,d5] [d4,d5]@2 [d4,d5]@2 [d4,d5] [a3,a4] [b3,b4]", V: "[a4,a5] [a4,a5]@2 [a4,a5]@2 [a4,a5]!2 [b4,b5]",
  W: "[a4,a5]@2 [a4,a5]@4 [a4,a5]@4 [a4,a5]@2 [f#4,f#5]!2 [e4,e5]@2", // A F# E
  X: "[d4,d5]@2 [d4,d5]@4 [d4,d5]!2 [d4,d5]@2 [e4,e5]@2 [f#4,f#5]@2 [g4,g5]@2", // D E F# G
  Y: "[a4,a5]!8 [a4,a5]@2 [g4,g5]@2 [f#4,f#5]@2 [e4,e5]@2", // A G F# E
  Z: "[g4,g5] [f#4,f#5] [e4,e5]@2 [g4,g5] [f#4,f#5] [e4,e5]@2 [g4,g5] [f#4,f#5] [e4,e5]@2 [e4,e5]@2 [g4,g5]@2", // G F# E G F# E G F# …
  AA: "[f#4,f#5]@2 [f#4,f#5]@4 [f#4,f#5]@4 [f#4,f#5]@2 [g4,g5]!2 [e4,e5]@2", AB: "[f#4,f#5]!12 [g4,g5]!4",
  AC: "[a4,a5]!12 [g4,g5]!2 [e4,e5]!2", AD: "[g4,g5]!12 [f#4,f#5]!2 [e4,e5]!2",
  AE: "[d4,d5]!8 [d4,d5]@2 [d4,d5]@2 [d4,d5]@2 [d4,d5]@2", AF: "[g4,g5]!16", AG: "[d4,d5]!5 [b3,b4] [a3,a4] [b3,b4]",
  AH: "[d4,d5]@2 [d4,d5]@2 [b3,b4]@2 [d4,d5]@2 [e4,e5] [d4,d5] [b3,b4]@2 [d4,d5]@2 [e4,e5] ~", AI: "[a4,a5] ~@15",
  AJ: "~@2 [a4,a5]!14", AK: "[a4,a5]!16", AL: "[a4,a5]!12 ~@4",
})).s("gm_acoustic_guitar_steel").gain(0.22).pan(0.2)

// other · electric guitar jazz · "LEAD GUITAR"
const electric_guitar_jazz = note("<~@82 A B C D E F G@2 ~@24 H I J K L@2 M N O P Q@2 R S@2 T U ~@46>".pickRestart({
  A: "~@2 e3@4 g3@2 f#3@3 e3 c#3@4", B: "~@2 e3@4 g3@2 f#3@2 e3@2 d3 b2@2 ~", C: "e3@2 g3 ~ g3 b3 ~ f#3@5 ~@4",
  D: "~@4 f3 e3 d3@2 b2@2 d3 ~ d3@2 b2 ~", E: "~@2 e3@4 g3@2 f#3@3 e3 d3@2 b2 ~",
  F: "~@2 d4@2 a3@3 g#3 [f#3,a3]@2 e3@2 d3@2 b2@2", G: "[f3 d#3@3 e3 g3 e4 c4@4 ~@5]/2",
  H: "~@2 e3@3 g3 ~@2 e3@2 e3@2 d3 b2@3", I: "~@2 e3@3 g3 ~@2 [d#3,e3] ~ d3@2 b2@2 d3@2",
  J: "e3@2 g3 ~@2 b3 ~ f#3@5 a3@2 b3@2, ~@2 [g3,d4] ~@5", K: "e4@2 e4@2 d4 b3 ~ d4 d4@4 b3@2 ~@2",
  L: "~@2 e4@4 g4 ~ f#4@3 e4 d4 b3@2 ~", M: "f#4@2 e4@3 ~@3 e4 ~ b3 ~ d4 ~ e4 ~, ~@9 d4@2 ~@5",
  N: "d4@5 a#3 b3@4 a3 ~ f#3@2 e3@2", O: "~@2 e3@4 g3 ~ e3@2 d3@2 b2@2 a2@2",
  P: "~@2 e3@2 g3 ~ f#3@2 e3@2 d3 b2 d3@2 b2@2",
  Q: "[e3@2 g3 ~ g3@2 a3@2 d4@2 b3@2 e4@2 e4@4 d4@2 b3@2 d4@4 b3@2 d4@2 b3@2]/2",
  R: "~@2 e4@4 g4 ~ f#4@2 e4 ~ d4 b3@2 ~", S: "[d5 a4 e4!2 d4 b3 d4 d4@2 e4 g4!4 e4 d4]/2",
  T: "e4@2 d4@7 ~ a3@2 g3@2 f#3@2", U: "e3 ~",
})).s("gm_electric_guitar_jazz").gain(0.8)

// chords · epiano2 · "RHODES PIANO"
const epiano2 = note("<~@89 A@2 B@7 C D@6 E@7 ~@65>".pickRestart({
  A: "[~ e5, ~@7 e4@9, ~@15 [a4,c#5]@17]/2", // A
  B: "[[d4,g4,b4,d5]@14 ~@2 f#5@16 d5@2 ~@10 a4@2 ~@2 e5@14 ~@2 g5@14 ~@26 f#5@7 ~, ~@14 f#4@31 ~ e4@16 ~@34 b5@15 ~, ~@15 a4@23 a4@5 ~@4 [a4,c#5]@14 ~ g4@14 ~@2 f#4@34, ~@15 d5@16 ~@3 f#5@5 ~ f#5@6 ~@34 f#5@20 a5@11 ~, ~@36 d5@5 ~@2 d5@4 ~@16 [b4,d5]@14 ~@2 [a4,d5]@33]/7", // G A Bm D5
  C: "[d4,g4,b4,d5]@13 ~@3", // G
  D: "[[f#4,a4,d5,f#5]@14 ~@2 d5@13 ~@3 e5@13 ~@3 e5@13 ~@3 f#5@13 ~@3 e5@13 ~@3, ~@14 d4@16 e4@15 ~ e4@16 ~ [a4,c#5]@14 ~@2 [g4,b4]@14 ~@3, ~@15 [g4,b4]@14 ~@2 [a4,c#5]@14 ~@2 [g4,b4]@14 ~ f#4@15 ~ e4@16 ~@2]/6", // D A G A G
  E: "[~@16 d5@13 ~@3 a5@13 ~@3 d5@13 ~@3 a5@13 ~@3 d5@13 ~@3 a5@13 ~@3, ~@14 e4@16 ~ [c#5,e5]@14 ~@2 [g4,b4]@14 ~ a4@15 ~ e4@16 ~ [c#5,e5]@14 ~@3, ~@15 [g4,b4]@14 ~ a4@15 ~ e4@16 ~ [c#5,e5]@14 ~@2 [g4,b4]@14 ~ a4@15 ~@3]/7", // C#m G C#m G C#m G
})).s("gm_epiano2").gain(0.28)

// bass · electric bass pick · "BASS"
const bass = note(`<
  ~@2 A B C D E F G H I J K L M N O@2 P Q R S T U V W T X Y Z AA AB@2 AC AD AE@2 AF@2 AG@2 AH AI@2 AJ AK AL AM AN AO AP
  AQ T AR AS@2 AT AU AV AW@2 AX AY AZ BA BB BC@2 BD BE BF BG BH@2 AP BI BJ BK BL@2 BM@2 BN BO BP@2 BQ BR BS BT BU BV@2
  BW@2 BX BY@2 BZ CA CB CC CD CE@2 CF AP CG CH@2 CI@2 CJ CK CL CM CN CO CP CQ CR CS CT CU CV CW CX CY CZ@2 DA@2 DB@2 DC
  DD DE DF DG DH DI DJ DK DL DM@2 G DN DO DP DQ DR DS DT DU DV DW DX DY DZ EA EB EC ED EE CT EF EG EH EI@8
>`.pickRestart({
  A: "d2@12 f#2@3 ~", B: "e2@3 e2", C: "g2@11 ~ g2@3 f2", D: "d#2@3 g2", E: "d3@12 f#3@3 ~", F: "f#3@12 e3@3 f#3",
  G: "g3@12 g3 f#3 ~ e3", H: "d3@4 e2 ~ f#2 ~", I: "a1@7 e2 a2@6 g#2@2", J: "g2 d2 g1@3 a1@2 c2", K: "d2@4 d2@10 ~ d2",
  L: "e2@2 a2 ~ a2@2 f#2 ~ a2@4 a2@3 ~", M: "~@2 a2 e2 a1@3 g#2", N: "g2@2 d2@2 g1@4 a1@2 c2 ~ c2@4",
  O: "[~@4 d2@2 ~@2 e2@2 g2 ~ a2@2 c3@5 a#2 b2@3 a2 b2@2 a2 ~ f#2@4]/2", P: "g2 ~@3 g2@2 d2@2 g1@4 ~@2 a1@2",
  Q: "d2@3 ~ d2@4 e2@2 g2@2 e2@2 d2@2", R: "g2@7 ~ g2@2 d2@2 g1@3 ~", S: "e2 ~ e2@2 e2!2 e2@2",
  T: "e2@7 ~ e2@2 f2@2 f#2@4", U: "e2 f2 f#2!5 f2", V: "e2@3 e2 e2@3 b2", W: "e3 b2 e3@3 b2 e2@2",
  X: "a1@4 a2@6 f#2@3 ~ f2@2", Y: "e2@5 ~ e2@2 e2@5 ~ f#2@2", Z: "a1@2 a2 a2@2 f#2@2 f2", AA: "e2@5 ~ e2@2 e2@6 f#2@2",
  AB: "[a2@6 a2@2 g2@4 e2@2 d2@5 ~ d2@6 a1@2 d2@2 d2@2]/2", AC: "~@4 e2@2 g2 ~@5 b2@2 a2 ~",
  AD: "[a1,a2]@2 a2 e2 a2 ~@3", AE: "[~@2 g2@2 d2@2 g1@3 ~ a1@2 c2@2 c2@6 d2@4 e2@2 g2@2 ~@4]/2",
  AF: "[e2@2 g2@2 e2@2 d2@2 e2@2 d2@2 b1@2 a1@7 ~@5 e2@2 a2@2 g#2@2]/2",
  AG: "[g2 d2 g1@2 a1 c2!2 d2@3 d2 ~@2 d2!2 ~]/2", AH: "e2@2 g2@2 a2 ~ f#2@2 a2@2 g2@2 e2@4",
  AI: "[~@2 g2@2 g2 f#2 e2 d2@3 d2 ~ f#2 a2 e2@2]/2", AJ: "g2@2 ~@2 g2@6 g2 ~ g2@2 a1@2", AK: "a1@4 a1@4 b1@2 d2 ~@5",
  AL: "e2", AM: "f#2@10 a2@3 f2@3", AN: "e2@15 ~", AO: "e2@2 f#2 ~ a2@2 f#2 ~ b2@2 a2@2 f#2@2 f2@2",
  AP: "e2@10 f2@3 f#2@3", AQ: "a1@9 g2 a2@4 f2@2", AR: "a1@3 a2@2 a1@2 f2",
  AS: "[e2@4 e2!2 f#2 a2@3 b2 a2 f#2 e2@2 a1]/2", AT: "c2@2 c2@2 e2 g2 b2 d3", AU: "e3 d3 c3@2 c3!2 c3@2",
  AV: "~@4 a2 ~@3 a2 ~@5 g#2 ~", AW: "[g2 d2 g1@2 a1 c2!2 c2@8 d2]/2", AX: "e2@2 g2 ~@3 e2 ~ g2@3 ~ e2@2 d2 ~",
  AY: "~@4 g2 ~@5 a2 ~@5", AZ: "g2@2 d2@2 g1@4 b1@2 d2 ~@3 d2@2", BA: "d2@4 d2@4 e2@2 g2 ~@5",
  BB: "e2@2 g2 ~ f#2@2 e2@2 e2 d2 b1 ~ d2@2 b1 ~", BC: "[g1@4 ~@6 d2@2 f#2 ~ d2@6 e2@2 g2 ~ g2@2 e2@2 d2@2 ~@2]/2",
  BD: "g2@4 g2 g#2 a2@2", BE: "a1@4 a2@6 a2 ~ a2@2 f#2@2", BF: "e2@2 e2@4 e2 f2",
  BG: "f#2@2 f#2@2 f#2@6 a2 ~ f#2@2 f2@2", BH: "[e2@10 e2 b2 e3@2 e3@6 e2@4 e3@4 e2@4]/2",
  BI: "a1@4 a2@3 a2@3 e2@3 d#2@3", BJ: "~@2 e3@2 e2 f2 f#2@2, e2 ~", BK: "a1@3 a2 a2@2 f#2@2",
  BL: "[e2@6 f#2 ~@2 a2@3 g2@2 e2 d2, ~@7 a1@4 ~@5]/2", BM: "[d2@2 d3@2 d3 d2!2 d2@2 e2 g2 e2 g2 e2 g2@2]/2",
  BN: "e1@2 ~@2 e2@2 e1!2, ~ e1@2 ~", BO: "a2@2 a2@2 a2!4", BP: "[d3@4 d3@6 d3 ~ d3@2 g1@6 d2@2 g2@2 g2@2 g2@2 g2@4]/2",
  BQ: "e1@2 e1@2 e1!4", BR: "g1@3 ~ g1@4 a1@2 a1@2 ~@2 d2@2", BS: "d2@2 d2@2 e2 g2 b2 e3", BT: "c3@2 b2 a2 b2 a2 e2 g2",
  BU: "a2 ~@7 a2 ~@3 a2 ~ g#2 ~", BV: "[g2@4 ~@2 d2 e2 g2 ~ e2 ~ d2 ~ d2@6 ~@2 e2@2 e2@2 g2@2 d2@2 c2@2]/2",
  BW: "[e2@2 g2@2 e2@2 d2@2 e2@2 d2@2 b1@2 a1@6 a2 ~@3 a1@2 a2 ~@3 g#2@2]/2", BX: "g2@5 ~ d2 ~ g1@4 b1@2 d2 ~",
  BY: "[d2@6 ~@9 e2@3 g2 ~ g2 ~ e2 ~ a2@4 g2 ~@3]/2", BZ: "g2@10 g#2@2 a2 ~@3", CA: "d2@5 ~ e2@2 g2@2 f#2@2 e2@2 ~@2",
  CB: "~@2 g2@5 e2", CC: "a1@5 ~ b1@4 d2@2 ~@4", CD: "e2@7 f2", CE: "[f#2@7 e2@2 c#2 e2 ~ e2 ~ e2 ~]/2",
  CF: "e2@3 f2@2 g#2@2 f#2", CG: "a1@3 a2@3 f#2 f2",
  CH: "[e2@7 ~ e2@2 f2@2 f#2@2 a1@6 a1@2 a2@6 [e3,f3,f#3] [g3,g#3,a3] ~@2]/2",
  CI: "[e2@3 ~ e2 f2 f#2 a2@2 a2!3 g2 f#2 e2 d2]/2", CJ: "d3@4 c3!2 e3 c3",
  CK: "e3@2 c3@6 d3@2 d3@2 d3@2 [a#2,b2,c3,c#3] [e2,f2,f#2,g2,g#2,a2]",
  CL: "[e1,d2,d#2] ~ e1@4 e1@2 e1 ~ e1 ~ e1@2 e1@2", CM: "a1@2 a1@4 a1 ~ a1@2 a1 ~ a1@2 a1@2",
  CN: "d2 ~ d2@4 d2@2 d2@3 ~ d2@4", CO: "g1 ~ g1@3 ~ g1 ~ g1@4 g1@4", CP: "e1@7 ~ e1 ~ e1@2 ~@2 e1@2",
  CQ: "g1@8 g1 ~ g1@2 a1@4", CR: "d2@5 ~ d2 ~ e2@2 g2@2 f#2@2 e2@2", CS: "e2@2 g2 ~ c3@2 c3@2 c3@2 c3@2 c3@2 a#2@2",
  CT: "e2!8", CU: "a2!8", CV: "d3!8", CW: "g2 d2 g1@2 g1 d2 g2!2", CX: "e1@4 e1 ~ e1 ~ e1@2 e1 ~ e1 ~ e1@2",
  CY: "g1@4 g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~", CZ: "[d2@13 a2 c3 a2]/2", DA: "[d3@31 a2]/2",
  DB: "[d3@12 f#3@15 ~ e3@2 ~@2]/2", DC: "g3@6 g3 f3", DD: "d#3", DE: "d3@12 f#3 ~@3", DF: "f#3@12 e3 ~@3",
  DG: "f3@8 g3@4 g3 f#3 ~ e3", DH: "d3@3 g2", DI: "d2 a1 d2@5 f#2", DJ: "e2@13 ~ e2@2", DK: "g2@4 g2@4 g2@4 g2@3 f2",
  DL: "d2!2 ~ d2 d2@10 g2@2", DM: "[c3@7 f#3@7 e3@2]/2", DN: "d3@3 a1", DO: "d2@3 f#2", DP: "e2!2 e2@4 e2@2",
  DQ: "g2@10 g2@2 g2 f#2 e2@2", DR: "d2 a2 d3@2 d3 a2 d2 a2", DS: "d2@2 d2@2 d2!3 f#2", DT: "e2@2 e2@2 e2!4",
// … 70 more lines

More by Rod Stewart