Strudelify

Tea for One

Led Zeppelin

KeyB♭ majorTempo60 bpm
0:00/0:00
// Tea for One — Led Zeppelin
// 60 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: duplicate parts dropped: ch 6 "Electric Guitar IV" distortion guitar (copy of ch 5 "Electric Guitar III" distortion guitar)
// note: Full arrangement: all 145 bars on a 32-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): Electric Guitar I.
setcpm(60/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.

// other · distortion guitar · "Electric Guitar I"
const distortion_guitar = note(`<
  ~@4 A B ~@22 C ~@2 D ~@3 E ~ F G H I@2 ~@13 J ~@6 K ~ L M N O P Q R ~ S ~ T ~@2 U ~ V W X Y Z ~ AA ~ AB AC AD AE ~ AF
  AG AH AI ~@14 AJ ~@2 AK ~@2 AL AM AN AO ~@3 AP ~@7 AQ ~@6 AR AS AT AU ~ AV@2
>`.pickRestart({
  A: "~@4 bb4 c5 ~@2 a4@4 bb4 c5 ~@2 a4@4 ~@9 bb4 c5 ~", B: "~ a4@4 bb4 ~ c5 ~@2 a4@4 ~@18", C: "~@17 c3 ~@14",
  D: "~@5 eb4 ~@26", E: "~ c5 ~@30", F: "~@13 g5@3 ~@16", G: "~@3 ab5 ~@23 g5 ~@4", H: "~@21 f5 ~@10",
  I: "[~@25 eb5@21 ~@18]/2", J: "~@9 g5 ~@22", K: "~ ab5 ~@15 eb5 ~@14", L: "~@25 c6@2 ~@5",
  M: "~@7 f6 ~@5 bb5 ~@3 eb6 ~ c6 ~@9 ab5 ~ e5", N: "~@13 ab5 ~@7 f6 ~@10", O: "~@29 ab6 ~ f6",
  P: "~ c6 ~@3 c6 ~@15 b5@3 ~@5 g5 ~@2", Q: "~@29 eb6 ~@2", R: "~@25 bb5 ~@6", S: "~@9 bb5@3 ~ bb5@3 ~@16",
  T: "~ ab5 ~@3 g5 ~ g5 ~@15 eb5 ~ bb5 ~@3 f5 ~@2", U: "~@11 c6 ~@20", V: "~@28 f5 ~@3", W: "~@25 c5@2 ~@4 c5",
  X: "~@3 c5 ~@3 c5 ~@3 c5 ~@9 c5 ~@3 eb5 ~@6", Y: "~ bb5 ~@3 c6 ~@7 c6 ~@13 g5 ~ eb5 ~@2",
  Z: "~@5 eb5 ~ bb4 ~ bb4 ~@3 gb4 ~@11 gb4 ~@6", AA: "~@13 g5@5 ~@14", AB: "~ eb5 ~@19 g5 ~@10",
  AC: "~@11 d5 ~ d5@7 ~ g4 ~@3 bb4 ~@6", AD: "~ d5 ~@3 c5@3 ~@24", AE: "~@9 f6 ~@11 f6 ~@3 g5 ~@6",
  AF: "~@5 bb5@9 ~ ab5 ~@16", AG: "~ g5 ~@30", AH: "~ eb6 ~@30", AI: "~ f6 ~@30", AJ: "~@25 g4 ~@3 ab4 ~@2",
  AK: "~@5 f4 ~@26", AL: "~@29 c5 ~@2", AM: "~ f4 ~@30", AN: "~@13 c5 ~@3 f4 ~@14", AO: "~@13 f4 ~@7 c4 ~@10",
  AP: "~@5 gb4@3 ~@13 f4@2 ~@2 f4 ~@6", AQ: "~@6 eb4 ~@25", AR: "~@9 g4 ~@3 bb4 ~ f4 ~ g4 ~@3 f4 ~@10",
  AS: "~@11 g4 ~ f4 ~@3 g4 ~@14", AT: "~ ab4 ~@30", AU: "~@13 eb5 ~@18", AV: "[~@28 c5@7 ~@29]/2",
})).s("gm_distortion_guitar").gain(0.35).pan(0.1)

// other · distortion guitar · "Electric Guitar II"
const distortion_guitar_2 = note(`<
  ~@3 A B C@2 ~@4 D E F@2 G H@2 I J@2 K L@2 ~@3 M N@2 O P ~ Q R S ~ T U@5 ~ V ~@2 V ~@2 V ~@2 V ~ W X@2 Y Z AA AB AC ~
  AD AE AF@2 AG AH AI@2 AJ@2 AK AL AM AN@2 AO AP AQ AR AS@3 AT AU@2 AV@2 AW AX@2 AY AZ@2 ~ BA ~@2 BA ~@2 BA ~@2 BA BB
  BC@2 BD BE BF ~@2 BG BH BI BJ BK BL ~ BM ~@7 BN ~@6 BO@2 BP@2 BQ ~@2
>`.pickRestart({
  A: "~@9 d4 ab4 ~ a4 g4 f4@4 ~ ab4 a4 g4 ~ f4@4 d4 c4 ~ g3 a3",
  B: "~ c4 d4 ~ ab4 a4 g4 ~ f4@4 ab4 a4 ~ g4 f4@4 d4 ~ c4 g3 ~ a3 c4 ~ d4 ab4 a4 ~",
  C: "[g4 f4@4 ab4 ~ a4 g4 ~ f4@4 d4 c4 ~ g3 a3 ~ c4 d4 f4 ~ d4 f4 ~ g4@12 ~@25]/2", D: "~@7 [f2,c3]",
  E: "~@4 [f2,c3]@27 ~", // F5
  F: "[c3@2 ~@2 f3@4 bb3@2 ~@2 [f2,c3,f3,ab3]@4 ~@4 [f2,c3,f3,ab3,c4]@27 ~ g3@2 ~@2 c4@4 f4@2 ~@2 [c3,g3,c4]@4, ~ d3@4 ~@20 a3@4 ~@3]/2", // Fm C5
  G: "~@4 [c3,g3,c4]@27 ~", // C5
  H: "[g3@2 ~@2 c4@4 f4@2 ~@2 [c3,g3,c4]@4 ~@4 [c3,g3,c4]@27 ~ g3@2 ~@2 c4@4 f4@2 ~@2 [f2,c3]@4, ~ a3@4 ~@20 a3@4 ~@3]/2", // C5 F5
  I: "~@4 [g2,d3]@27 ~", // G5
  J: "[d3@2 e3@2 g3@4 e3@4 [c3,f3,ab3]@4 ~@4 [c3,f3,ab3,c4]@15 ~ [bb2,f3,bb3,d4]@4 ~@4 [bb2,f3,bb3,d4]@15 ~ [g3,c4,eb4]@4]/2", // Fm Bb Cm
  K: "~@4 [g3,c4,eb4]@27 ~", L: "[g3@2 ~@2 c4@4 f4@2 ~@2 [g3,c4,eb4]@4 ~@5 [g3,c4]@26 ~@17, ~ a3@4 ~@5 eb4@13 ~@9]/2",
  M: "~@20 g4@2 f4 eb4 eb4@2 c4 c4@5", N: "[~@14 f3@2 eb3 ~ c3 c3@16 ~@29]/2", O: "~@5 [ab3,c4,f4] ~@2",
  P: "~@2 gb4@2 f4 ~ eb4 f4 f4@5 ~ eb4 c4 c4@7 ~@9", Q: "~@19 f5 g5@2 f5@2 eb5@3 f5 g5@2 f5@2",
  R: "g5@18 f5@2 ~@3 f5 eb5@2 f5@4 eb5@2", S: "~@2 c5!2 c5@22 ~@6", T: "~@8 g5@2 bb5@2 ~@2 g5@2 ab5@7 ~@9",
  U: "[~@2 ab5 bb5 g5@11 ~@12 f5 [f5,g5] eb5@10 ~@13 f5 g5 [eb5,f5]@2 c5 c5@18 ~@12 bb4 c5 ~ eb5@21 ~ c5@8 bb4@2 g4@2 g4@11 ~@25, ~@4 ab5 ~@155]/5", // Fsus2 Ebsus2
  V: "~@2 bb4 c5 f4 g4 eb4 ~", W: "g5@3 bb5@7 g5 ab5 g5 ab5@2 ab5 ab5@15 ~",
  X: "[~@2 ab5@2 bb5@35 ~ bb5@2 ab5@2 ab5@3 g5 g5@8 ~@8]/2", Y: "g5 f5!2 eb5 eb5@4 ~@4 eb5 d5!2 c5",
  Z: "c5@8 ~@18 g5@2 [c5,eb5]!4", // Cm
  AA: "[c5,eb5]!12 [c5,d5,eb5,f5] [d5,f5]!3 [c5,d5,eb5,f5] [c5,eb5]!3 [c5,d5,eb5,f5] [d5,f5]!3 [c5,d5,eb5,f5] [c5,eb5] [c5,d5,eb5,f5] [d5,f5] [c5,d5,eb5,f5] [c5,eb5]!3", // Cm Dm7 Dm Dm7 Cm Dm7 Dm Dm7 …
  AB: "[c5,eb5] ~@14 bb5@5 ab5@11 ~", AC: "g5 ~ ab5 bb5 ab5 bb5 ab5 g5 ab5 g5 f5 g5 f5@5 ~ eb5 c5 f5@2 c5@2 f5 ~@7",
  AD: "~@16 eb6@2 g6@5 eb6 ~@2 c6@2 eb6@2 c6@2",
  AE: "~@6 ab6 g6 [f6,g6] f6 eb6 f6 eb6 c6 bb5 c6 bb5 c6 [c6,eb6] bb5 [c6,eb6] c6 bb5 c6 bb5@2 ~ ab5 g5 ~ ab5 g5", // Fsus2 Cm
  AF: "[[e5,f5] ~@11 g5 ~ ab5 bb5 c6@2 c6@2 eb6 ~ f6 g6 ab6 g6@2 g6 ab6 g6 f6@4 ~@6 bb6@13 [g4,ab6]@3 ~ g6 ~ ab6!2 g6 [f6,ab6] eb6]/2", // Fmaj7 Abmaj7 Fm
  AG: "[eb6,f6] ~ c6 bb5 c6 ~ c6 c6@11 ~@4 b5@3 ~@5 g5 f5", // Ebsus2
  AH: "eb5@7 ~@2 bb5 b5@2 ~@3 g5 f5@2 eb5@6 g4@4 b5 ~ eb6 bb5",
  AI: "[b5!2 b5@6 bb5 b5@2 bb5 c6!2 c6@5 c6 eb6@2 c6@3 ~ bb5 eb6 bb5 c6!2 c6@7 eb6@2 ~@24]/2",
  AJ: "[~@7 g5 ~@2 bb5@2 c6 ~ bb5@2 f5@12 g5@12 ab5@4 ab5@18 bb5@2]/2",
  AK: "ab5 bb5 [g5,ab5] ab5 [g5,ab5] ab5 [f5,g5] ~ f5@14 g4 c5 [eb5,g5] ~ bb5 g5!2 ~ f5 eb5, ~@8 g5 ~@23", // Abmaj7 Fsus2 Eb
  AL: "f5 f5@6 b4 ~@22 g4@2", AM: "bb4@2 d5@2 f5@2 g5@2 a5@2 bb5@2 d6@2 f6@2 g6@14 g5 bb5",
  AN: "[f6@2 d6@6 ~@2 c5 g5 [bb5,c6]@2 g5@9 eb5 d5@6 a4@6 bb4@15 ~@13]/2", // Bbsus2
  AO: "g4@2 bb4@2 d5@2 f5@2 ~ g5@3 f5@2 g5 g5@8 ~@3 eb5 f5 eb5 [eb5,f5] d5 [d5,eb5]", // Ebsus2 Ebmaj7
  AP: "d5 bb4 d5 c5!2 c5@6 ~@10 g4 bb4 c5 eb5 ~ c5@2 ~@2 bb4 b4",
  AQ: "[c5,eb5] c5 bb4 b4 [c5,f5]@2 bb4 b4 [c5,eb5]@2 bb4 b4 [c5,f5]@2 bb4@2 eb5@2 c5 ~ eb5 ~ c5 eb5 c5 ~ eb5 c5 g5@2 bb5@2", // Cm F5 Cm F5
  AR: "c6 ~ bb5 c6 bb5 ~ c6 bb5 ~@2 eb6 ~ d6 ~ [bb5,c6] c6 bb5 g5@9 c6 ~ [c5,g5] ~ eb5 f5", // Bbsus2 C5
  AS: "[gb5 f5 eb5 c5 bb4 ~ eb5 c5 [bb4,c5] ~ bb4 gb4 eb4 ~ gb4 eb4 gb4@2 bb4@2 f4@3 a4 bb4 ~ [gb4,bb4] gb4 ab4!3 ab4@4 c5 ~@7 g4 ab4@3 c5 ~@2 eb5 ~ eb5@2 f5@14 f5@3 g5 ~@3 g5 f5 ~ g5@5 f5!2 ~@11]/3", // Bbsus2 Gb
  AT: "~@12 f6@3 f5@16 eb6",
  AU: "[~@2 eb5!2 eb5@4 d6@2 b5 g5 d5@7 ~ c6 ~ g5 c5@12 d4@4 g4 b4 c5 d5 eb5 [c5,d5] ~ d5@6 bb4 ~ g4 bb4 d5 ~ bb4 c5@4 gb4]/2", // Csus2
  AV: "[g4 ~ d5 bb4 c5 ~ c5@3 ~ bb5 g5 eb5 ~ f5 eb5 c5@2 ~ g4 c5 bb4@2 g4 bb4 c5!2 c5@12 ~@3 f6 g6@7 f6@2 d6 ~ f6 d6 bb5 ~ g5 g5@5]/2",
  AW: "~ g5 bb5 d6 c6@2 g5 ab5 f5@2 ab5@2 c6@2 ab5@2 f5@4 f5@11 ~",
  AX: "[~@2 f5 ab5 c6 ~ bb5@9 f5 [ab5,c6] bb5@7 eb5 f5 c6 bb5 f5 bb5 f5 bb5@2 ~ g5 g5@16 ~@12 c6]/2", // Ab
  AY: "d6 ~ eb6 f6 g6 f6 g6 bb6 ~ c7@2 c7@10 g4 bb6 ~ g6 ~ bb6 ~@2 g6 f6 eb6",
  AZ: "[c6 ~ f6 c6 eb6@16 eb6 d6@7 bb5@7 ~ c6@6 ~@22]/2", BA: "~@2 bb3 c4 f3 g3 eb3 ~", BB: "~@20 g3@7 ~ d4@4",
  BC: "[g4@11 ~ [ab4,c5]@4 ~@2 [f4,ab4]@17 ~@13 g4@2 ab4@7 ~ g4 ab4 g4 ~ ab4 g4]/2", // Ab Fm
  BD: "g4@7 ~ g4@2 g4@2 ~@3 eb4 f4@2 g4 eb4@2 c4 c4@6 ~@4", BE: "~@8 [f4,ab4] [eb4,g4] ~@2 f4 g4 [g4,bb4] [f4,ab4]",
  BF: "[f4,ab4]@4 eb4 ~ f4 eb4 c4@7 ~@17", BG: "~@8 g4 c5 eb5 ~ eb5 ~@3 f5@4 eb5@9 ~ c5 bb4",
  BH: "g4 ~ f4 eb4@5 ~@22 ab4 c5", BI: "eb5 ~ eb5 ~@4 f5 f5@2 eb5@3 ~ c5 bb4 g4 ~ f4 eb4 c4 ~@11",
  BJ: "~@11 c4 eb4 ~ f4 gb4@2 g4 gb4 f4 eb4 ~ c4 eb4 c4 eb4 c4@2 f4@4", BK: "~@3 eb4 f4@10 ~@18",
  BL: "~@2 f4@2 ab4@3 f4 eb4@3 c4 ~@4 g4@4 f4@8 ~@4", BM: "~@6 gb4@2 ab4@7 ~ bb4@4 ~@2 f4@2 eb4 ~ f4 eb4@5",
  BN: "~@6 c4 [eb4,g4] ~@24", // Eb
  BO: "[~@10 g4 a4 bb4 ~ [a4,bb4] g4 f4 ~ g4 f4 g4 ~ f4 g4 d5@2 g4 g4@11 g4@2 ab4 g4 f4 ~ [g4,ab4] g4 [f4,g4]@2 f4 ~ [g4,ab4] g4 f4 g4@2 f4 ~@2 c5@6]/2", // Bbmaj7 Abmaj7 Fsus2 Abmaj7
  BP: "[bb4 ~ ab4 f4 f4@11 ~@7 d4@2 f4@2 eb4@2 c4@7 ~@9 c5 ~ eb5 c5 ~@4 g5@3 e5 ~@8]/2", BQ: "~@2 g5@3 f5 ~ c5@3 ~@6",
})).s("gm_distortion_guitar").gain(0.35).pan(0.9)

// other · distortion guitar · "Electric Guitar II" · soft notes · Ebmaj7
const distortion_guitar_soft = note("<~@143 [~@4 [g4,eb5,g5,d6]!28] [[g4,eb5,g5,d6]!4 [g4,eb5,g5,d6]@8 ~@20]>")
  .s("gm_distortion_guitar").gain(0.2).pan(0.9)

// chords · distortion guitar · "Electric Guitar III"
const distortion_guitar_3 = note(`<
  A B C D E F@2 G@4 H I@3 J K L M@2 N O P Q R S@2 T U@2 V W@2 X Y@5 Z AA AB@2 AC AD@2 AC AD@2 AC AE@2 AF AG@6 AH AI AJ
  AK AI AL AM AN AO@2 AP AQ@2 AR AS AT@5 AU@2 AV AW@2 V AX@2 AY AZ@4 BA@2 BB@3 BC AD@2 AC AD@2 AC AD@2 BD BE@2 BF@2 BG@2
  BH@2 BI BJ BK BL BM BN BO@2 BK BP@4 BQ BR@4 BS@2 BT@2 BU@2 BV BW@2 BX BY BZ
>`.pickRestart({
  A: "~@30 a3 bb3", B: "~ g3 f3@4 a3 ~ bb3 g3 ~ f3@4 a3 bb3 ~ a3 g3 f3 ~ g3 a3 ~ bb3 g3 ~ f3@4",
  C: "a3 bb3 ~ g3 f3@4 a3 ~ bb3 a3 g3 ~ f3 g3 ~ a3 bb3 ~ g3 f3@4 a3 ~ bb3 g3 f3@3",
  D: "~@2 a3 bb3 a3 ~ g3 f3 ~ g3 a3 ~ bb3 g3 f3@4 ~ a3 bb3 g3 ~ f3@4 a3 bb3 ~ a3 g3",
  E: "~ f3 g3 ~ a3 bb3 g3 ~ f3@4 a3 bb3 ~ g3 f3@4 a3 ~ bb3 a3 ~ g3 f3 ~ g3 a3 bb3 ~",
  F: "[g3 f3@4 a3 ~ c4 g3 ~ f3@4 a3 bb3 ~ a3 g3 ~ f3 g3 a3 ~ bb3 d4 ~ g4@12 ~ [g3,d4,g4] ~@13 d3@9 ~, ~@52 g4@11 ~, ~@53 [g3,d4]@10 ~]/2", // G5
  G: "[~@4 g3@2 g3@2 g3@2 g3@2 ~@4 c4@2 ab4@2 ab4@2 ~@2 ab3@4 ~@4 f4@4 [bb3,d4,f4]@11 ~ [d4,bb4]@4 [eb4,c5]@4 [f4,d5]@4 [f4,d5]@7 ~ [eb4,c5] [f4,d5] ~ [eb4,c5]@7 [eb4,g4]@2 [g4,bb4]@10 [g4,bb4]@10 [g4,bb4]@4 [g4,bb4]@4 [f4,ab4]@4 [g4,bb4] [f4,ab4] ~ [eb4,g4]@13, g2@6 ab3@5 f4@5 ~@48, ~@7 ab3@2 ~@23]/4", // Bb Gm Cm Dm Cm Dm Cm Eb …
  H: "~@2 [g3,b3]@2 ~@6 eb4@2 g4@9 eb4@4 b3@3 ~@2 f4@2", // G
  I: "[f4 eb4 ~ f4 f4@14 ~@2 g4@2 bb4@2 ~ c5 ~ bb4 c5 bb4@13 ~@2 f4@4 g4@20 f4@2 g4@2 f4@19 ~@4 [eb4,f4]]/3", // Ebsus2
  J: "eb4 c4 ~ eb4 c4!3 c4@8 ~ g3@2 eb4 eb4@2 c4@9 ~@2", K: "~@2 g4@2 bb4!2 ~ bb4 c5!2 c5@22",
  L: "~@4 g5@7 ~@3 g5@2 f5@2 eb5@2 f5@3 eb5 c5 c5@3 ~@4",
  M: "[~ d5 ~ db5 c5 b4 ~ c5 bb4 a4 g4 f4 g4 f4 g4 f4 g4@10 db4@2 f4 g4 ~ bb4@8 ~ g4@2 ab4@2 f4@2 g4@2 ab4@2 f4 f4@7 g4@2 ab4@2 f4 [ab4,c5]]/2", // Ab
  N: "f5 g5 ~ ab5 g5 [g5,ab5] ~ f5@8 ~ bb5@9 ~ ab5@2 g5@3 g5", O: "g5@19 ~@10 b3 ~ ab5",
  P: "b5@8 ab5@2 ab5@2 ab5@3 g5!3 ~ g5@12 ~", Q: "eb5 c5 bb4 c5@4 bb4 g4 f4 ~ g4@16 ~ [g3,eb4]@4",
  R: "~ [e3,c4] [g3,eb4,g4]@10 ~@4", // C Cm
  S: "[~@6 [g3,eb4]@2 [g3,eb4,g4]@10 ~@6 g3 ~@3 a4@2 [g3,eb4]@2, ~@25 a3@5 ~@2, ~@13 c4@2 ~]/2", // Cm
  T: "~@4 [g3,eb4,g4]@15 ~ [g3,eb4,g4]@4 ~@3 a2 ~@4", // Cm
  U: "[g3 ~@3 [f4,a4]@2 g3@2 ~@2 [g3,eb4,g4]@10 ~@4 c3 ~ f3@2 bb3@2 [c3,eb3,ab3]@2, ~ a3@5 ~@19 d3@5 ~@2, ~ c4@2 ~@13]/2", // F Cm Ab
  V: "~@4 [ab3,c4,f4]@15 ~ [ab3,c4,f4]@4 ~@8", // Fm
  W: "[c3@2 ~@2 f3@4 d4@4 [c3,eb3,ab3,c4,f4]@4 ~@4 [ab3,c4,f4]@15 ~ [ab3,c4,f4]@4 ~@8 g3@2 ~@2 f4@4 a4@4 [c4,eb4,g4]@4, ~ d3@5 ~@19 a3@5 ~@2]/2", // Fm7 Fm Cm
  X: "~@4 [c4,eb4,g4]@15 ~ [c4,eb4,g4]@4 ~@8", // Cm
  Y: "[g3@2 ~@2 c4@4 f4@4 [g3,c4,eb4,g4]@4 ~@4 [g3,c4,eb4,g4]@15 ~ [eb4,g4,c5]@4 ~@8 g3@2 ~@2 c4@4 f4@4 [f2,c3]@8 [g2,d3]@15 ~@5 d3@4 g3@4 g3@2 g4@2 d4@2 g3@2 g4@2 d4@2 ~@2 f4@2 c4@4 ab4@4 ~@8 ab4@4 [bb3,d4,f4,bb4]@11 ~ [d4,bb4]@4 [eb4,c5]@4 [f4,d5]@4 [f4,d5]@4, ~@2 a3@10 ~@38 a3@10 ~@24 g2@23 ~ ab3@16 ab3@8 ~@28, ~@15 f4 ~@4]/5", // Cm F5 G5 Bb Gm Cm Dm
  Z: "[eb4,c5] [f4,d5] ~ [eb4,c5] [eb4,c5]@15 ~@9 [g4,bb4]@2 [g4,bb4]@2", // Cm Dm Cm Gm
  AA: "[f4,ab4]@7 ~ [eb4,g4] [f4,ab4] ~ [eb4,g4] eb4@4 [c4,g4]@7 ~@4 [c4,eb4] g4 c5 bb4 g4", // Fm Eb Fm Eb C5 Cm
  AB: "[~@2 g4@18 f4@7 ~ [bb2,f3,bb3]@7 ~ [c3,g3,c4]@4 ~@24]/2", AC: "~@12 [bb2,f3,bb3]@7 ~ [c3,g3,c4]@4 ~@8",
  AD: "[~@8 bb3@4 c4@4 f3@4 g3@4 eb3@4 [bb2,f3,bb3]@7 ~ [c3,g3,c4]@4 ~@24]/2", // Bb5 C5
  AE: "[~@8 bb3@4 c4@4 f3@4 g3@4 eb3@4 [bb2,f3,bb3]@7 ~ [c3,g3,c4]@7 ~@21]/2", // Bb5 C5
  AF: "[c4,d4,g4]@5 eb4 ~ d4 c4 ~@3 [bb2,f3,bb3]@7 ~ [c3,g3,c4]@4 ~@8", // Csus2 Bb5 C5
  AG: "[~@8 bb3@4 c4@4 f3@4 g3@4 eb3@4 [f2,c3]@7 ~@7 g3@2 d4@2 d4@2 g4@2 d4@2 g3@2 d4@2 g4@2 d4@2 g4@2 d4@2 g3@2 g3@2 d4@2 g4@2 d4@2 g3@2 ~@2 c4@2 ab4@2 ~@2 ab3@2 ~@2 ab4@2 [c4,f4]@2 [c4,f4]@2 [c4,f4]@2 [c4,f4]@2 [c4,f4]@2 [bb3,d4,f4,bb4]@11 ~ [d4,bb4]@4 [eb4,c5]@4 [f4,d5]@4 [f4,d5]@7 ~ [eb4,c5] [f4,d5]@2 [eb4,c5]@12 gb4 g4@2 f4@3 [eb4,g4] f4 eb4@9 eb4@2 f4@2 f3@2 g3@2 bb3@2 c4@2 [eb4,g4]@2 c4@2 c4@11 ~, ~@36 g2@38 ~@2 ab3@6 f4@4 ab3@13 ~@93]/6", // F5 Bb Gm Cm Dm Cm Dm Cm …
  AH: "~@3 [c4,eb4] [g4,c5]@2 bb4@2 g4@19 ~ [c5,eb5]!4", // Cm C5 Cm
  AI: "[c5,eb5]!20 [bb4,c5,eb5] [bb4,eb5]!3 [bb4,c5,eb5] [c5,eb5]!7", // Cm Cm7 Eb5 Cm7 Cm
  AJ: "[bb4,c5,eb5] [bb4,eb5]!3 [bb4,c5,eb5,f5] [c5,f5]!3 [bb4,eb5]@4 [f4,ab4]@4 ~@16, ~@8 [c5,f5] ~@23", // Cm7 Eb5 Bbsus4 F5 Eb5 Fm F5
  AK: "~@28 [c5,eb5]!4", // Cm
  AL: "[bb4,c5,eb5] [bb4,eb5]!3 [bb4,c5,eb5,f5] [c5,f5]!3 [bb4,eb5]@4 [g3,c4,eb4,g4] ~@19, ~@8 [c5,f5] ~@23", // Cm7 Eb5 Bbsus4 F5 Eb5 Cm F5
  AM: "~@10 c3 d3 [f3,bb3,d4]@2 [eb3,ab3,c4]@2", AN: "~@4 [eb3,ab3,c4]@15 ~ [c4,f4]@4 ~@8",
  AO: "[c3@2 ~@2 f3@4 bb3@4 [eb3,ab3,c4]@4 ~@4 [eb3,ab3,c4]@15 ~ [eb3,ab3,c4]@4 ~@8 g3@2 a3@2 f4@4 a3@2 g3@2 [g3,eb4,g4]@4, ~ d3@5 ~@26]/2", // Ab Cm
  AP: "~@4 [g3,eb4,g4]@15 ~ [eb4,g4,c5]@4 ~@8", // Cm
  AQ: "[g3@2 ~@2 c4@2 a4@4 ~@2 [c4,eb4,g4]@4 ~@4 [c4,eb4,g4]@15 ~ [c4,eb4,g4]@4 ~@8 g3@2 ~@2 c4@4 [f4,a4]@2 ~@2 [f2,c3]@4, ~ a3@4 ~@20 a3@3 ~@4]/2", // Cm F F5
  AR: "~@4 c4@4 bb3@11 ~ [g3,bb3,d4]@4 ~@8, ~@4 [g2,d3]@15 ~@13", // Gm G5
  AS: "~ g3 g3@2 d4@2 f4@2 c4 f4 ab4 f4 c4 ab4 f4 c4, g2@3 ~@5",
  AT: "[f4@2 [c4,ab4]@2 [d4,bb4]@11 ~ [d4,bb4]@4 [eb4,c5]@4 [f4,d5]@4 [f4,d5]@7 ~ [eb4,c5] [f4,d5] ~ [eb4,c5] [eb4,c5]@11 ~@5 bb3@4 eb4@8 d4@2 f4@6 ~@8 eb4@4 ~@8 c4@15 ~ g3@2 ~@2 c4@4 f4@2 [g3,eb4]@2 [a3,eb4]@7 ~ [g3,c4,eb4,g4]@15 ~ [c4,eb4,g4]@4 ~@8, ~@80 c4@15 ~@19 a3@8 ~@38, ~@22 c5@3 ~@15]/5", // Fm Gm Cm Dm Cm Dm Cm Adim …
  AU: "[g3@2 ~@2 c4@4 [f4,a4]@4 [c4,eb4,g4]@4 ~@4 [c4,eb4,g4,c5]@15 ~ [c4,eb4,g4]@2 ~@10 g3@2 ~@2 f4@4 a4@2 ~@2 [g3,eb4]@4, ~ a3@5 ~@19 a3@4 ~@3]/2", // F Cm
  AV: "~@4 [g3,eb4]@15 ~ [g3,eb4]@4 ~@8", // Cm
  AW: "[g3@2 ~@2 c4@4 a4@2 ~@2 [g3,eb4,g4]@4 ~@4 [g3,eb4,g4]@15 ~ [g3,eb4]@4 ~@8 c3@2 ~@2 f3@4 [bb3,d4]@4 [c3,f3,ab3,c4,f4]@4, ~ a3@4 ~@20 d3@5 ~@2]/2", // Cm Bb Fm
  AX: "[c3@2 ~@2 bb3@4 d4@4 [ab3,c4,f4]@4 ~@4 [ab3,c4,f4]@15 ~ [ab3,c4,f4]@4 ~@8 g3@2 ~@2 c4@4 a4@2 ~@2 [c4,eb4,g4]@4, ~ d3@5 ~@19 a3@4 ~@3]/2", // Fm Cm
  AY: "~@4 [c4,eb4,g4]@11 ~@5 [c4,eb4,g4]@4 ~@8", // Cm
  AZ: "[g3@2 ~@2 f4@4 a4@4 [g3,eb4,g4,c5]@4 ~@4 [g3,eb4,g4,c5]@15 ~ [eb4,g4,c5]@4 ~@8 g3@2 ~@2 c4@4 f4@4 [f2,c3,f3]@7 ~ [g2,d3,g3]@20 ~@2 g3@2 d4@2 g3@2 d4@2 g3@2 d4@2 g4@2 d4@2 g3@2 ~@2 c4@2 f4@2 ab4@2 f4@2 c4@2 f4@2 c4@2 f4@2 ab4@2, ~@2 a3@10 ~@38 a3@10 ~@28 g2@19 ~ ab3@12 ab3@8]/4", // Cm F5 G5
  BA: "[~@2 ab3@2 [bb3,d4,f4,bb4]@11 ~ [d4,bb4]@4 [eb4,c5]@4 [f4,d5]@4 [f4,d5]@7 ~ [eb4,c5] [f4,d5] ~ [eb4,c5] [eb4,c5]@11 ~@11 c4@2, f4 ~@15]/2", // Bb Gm Cm Dm Cm Dm Cm
  BB: "[~@8 eb4@4 c5@4 g4@4 c4@15 ~ c5@4 g4@19 ~ [bb2,f3,bb3]@7 ~ [c3,g3,c4]@4 ~@12 [c3,g3,c4]@4 c4@3 c4 c4@4, c5 ~@11, ~ c4@2 ~@21]/3", // Bb5 C5
  BC: "[c3,g3,c4]@4 ~@2 c4@2 ~@4 [bb2,f3,bb3]@7 ~ [c3,g3,c4]@4 ~@8", // C5 Bb5 C5
  BD: "~@12 [bb2,f3,bb3]@7 ~ [c3,g3,c4]@4 d4@4 eb4@2 d4@2, ~@24 g4@7 ~", // Bb5 C5
  BE: "[c4@2 ~@6 bb3@4 c4@4 f3@4 g3@4 eb3@4 [bb2,f3,bb3]@7 ~ [c3,g3,c4]@4 ~@4 g3@2 d4@2 g4@2 g3@2 g3@4 d4@2 g4@2 d4@2 g3@2, ~@10 g2@3 ~@3]/2", // Bb5 C5
  BF: "[g4!2 d4@2 g4 d4 ~ c4 f4 ab4 f4 c4 ab4 f4 c4 ab4 f4 c4 d4@2 f4 bb4 [d4,f4]!2 [d4,bb4]@2 [eb4,c5]@2 [f4,d5]@2 [f4,d5]@2, ~@3 ab3@6 ~@7]/2", // Dm Gm Cm Dm
  BG: "[[eb4,c5] [f4,d5] ~ [eb4,c5] eb4@4 bb3@2 g3@2 ~@2 c5@2 g4@8 c5@4 ~@4 c3@4 [g3,eb4]@2 [a3,f4]@2 [a3,c4,f4]@4 [a3,c4,f4]@6 [bb3,eb4]@6 eb4@4 f3@2 g3@2, ~@2 c5@4 c4@4 ~@4 g4@4 ~@7 g3@5 ~@2]/2", // Cm Dm Cm Dm F Eb5
  BH: "[bb3 c4 ~@2 [g4,bb4]@2 [f4,ab4] [eb4,g4] [f4,ab4] [eb4,g4] [f4,ab4] [eb4,g4] g3@2 [g3,eb4]@4 [g3,eb4]@10 ~@4]/2", // Gm Fm Eb Fm Eb Fm Eb Cm
  BI: "g3@2 ~@2 c4@4 [f4,a4]@4 [g3,eb4]@4 ~@4 [g3,eb4]@11 ~, ~ a3@5 ~@10", BJ: "~@2 bb3 c4 f3 g3 eb3 [g3,eb4]",
  BK: "~@4 [g3,eb4]@11 ~@17", BL: "g3@2 ~@2 c4@4 a4@2 ~@2 [g3,eb4]@4 ~@4 [g3,eb4,g4]@11 ~, ~ a3@4 ~@11",
  BM: "~@2 bb3 c4 f3 g3 eb3 [c3,eb3,ab3,c4,f4]", BN: "~@4 [c3,eb3,ab3,c4,f4]@27 ~",
  BO: "[c3@2 ~@2 f3@4 [bb3,d4]@4 [c3,eb3,ab3,c4,f4]@4 ~@4 [c3,eb3,ab3,c4,f4]@15 ~ [f3,ab3,c4]@4 bb3@4 c4@4 f3@4 g3@4 eb3@4 [g3,eb4]@4, ~ d3@3 ~@28]/2", // Bb Fm7 Fm Cm
  BP: "[g3@2 ~@2 c4@4 a4@4 [g3,c4,eb4,g4]@4 ~@4 [g3,c4,eb4,g4,c5]@15 ~ [g3,c4,eb4]@4 bb3@4 c4@4 f3@4 g3@4 eb3@4 [f2,c3]@7 ~ [g2,d3]@4 ~@4 g3@2 d4@2 g4@2 d4@2 ~@4 g3@2 d4@2 g4@2 d4@2 g3@2 d4@2 g3@2 d4@2 g4@2 d4@2 ~@2 c4@2 ab4@2 ab4@2 ~@4 ab4@2 ~@4 ab4@2, ~ a3@3 ~@32 g2@6 g2@12 ab3@4 f4@2 ~ f4@2 ~, ~@59 ab3@3 [ab3,c4]@2]/4", // Cm F5 G5 Ab
  BQ: "[ab3,c4]@4 [bb3,d4,f4,bb4]@11 ~ [d4,bb4]@4 [eb4,c5]@4 [f4,d5]@4 [f4,d5]@4", // Ab Bb Gm Cm Dm
  BR: "[[eb4,c5] [f4,d5] ~ [eb4,c5] [eb4,c5]@15 ~@9 eb4@4 g4@4 c5@4 g4@11 ~ g3 c4 eb4 g4 c5 bb4 ~ g4@8 ~@4 c5 bb4 g4 ~ g4 f4 eb4 ~ c4 eb4 f4@3 eb4 c4 ~ bb3@5 [f2,c3]@7 ~@9 g3@2 d4@2 g4@2 g4@2 g3@4 d4@4 g3@2 g4@2, ~@24 c4@19 ~@57 [g2,d3]@16 ~@12]/4", // Cm Dm Cm F5 G5
  BS: "[d4@4 g4@2 d4@2 g3 ~@5 c4@2 f4@2 ab4@2 f4@2 c4@2 ab4@2 f4@2 c4@4 c4@2 f4@2 [bb3,d4,f4,bb4]@7 ~@5 [d4,bb4]@4 [eb4,c5]@4 [f4,d5]@4 [f4,d5]@4, ~@3 ab3@6 ~@7]/2", // Bb Gm Cm Dm
  BT: "[[eb4,c5] [f4,d5] ~ [eb4,c5] [eb4,c5]@4 ~@11 c5 d5@2 [f4,d5]@2 [eb4,c5] [f4,d5] ~ [eb4,c5]@8 ab4 bb4@5 [f4,ab4]@2 [eb4,g4] [f4,ab4] [eb4,g4] ~ [eb4,g4]@7 c4 [eb4,g4] c5@2 bb4 g4@5]/2", // Cm Dm Cm Dm Cm Dm Cm Fm …
  BU: "[~@5 eb4 g4 c5 bb4 g4!2 f4 eb4 c4 f4 c4 eb4 f4@3 d4@4 ~@4 [f2,c3]@7 ~ [g2,d3]@4 ~@2 g3@2 g4@2 d4@2 g3@2 d4@2 a4@2 g4@2 g3@2 bb4@2 g4@2 a4@2, ~@10 d3@3 ~@3]/2", // F5 G5
  BV: "g4 d4 g3 d4 g4 d4 ~ c4 ab4 f4 c4 g3 c5@2 ~ f4, ~@3 ab3@3 ~ c4",
  BW: "[[ab3,c4]@2 [bb3,d4]@2 [d4,f4,bb4]@4 bb4@2 f4@2 d4@2 [f4,bb4]@2 [d4,bb4]@4 [eb4,c5]@4 [f4,d5]@4 [f4,d5]@7 ~ [eb4,c5] ~@3 [c3,g3,c4,eb4]@7 ~ [g3,c4,eb4,g4]@4 [a3,d4,f4,a4]@6 [g3,c4,eb4,g4]@2 [g3,c4,eb4,g4] ~@3, ~@4 bb3@11 ~@49]/2", // Ab Bb Bb5 Gm Cm Dm Cm Dm …
  BX: "[g3,c4,eb4]@4 ~@4 c3@4 [a3,d4,f4,a4]@7 ~ c3@4 [a3,d4,f4,a4]@4 ~@4", BY: "~@2 [eb4,g4,d5]!30",
  BZ: "[eb4,g4,d5]!4 [eb4,g4,d5]@8 ~@20", // Ebmaj7
})).s("gm_distortion_guitar").gain(0.43).pan(0.3)

// bass · fretless bass · "Bass Guitar"
const bass = note(`<
  ~ A B C D E@3 F@2 G H@2 I J@2 K L@2 M N@2 O P@2 Q@3 R@3 S T U V@3 W X@2 Y Z@2 AA AB@2 AC AD@2 AA AD@2 AA AE@2 AF AG@2
  AH@3 AI AJ@2 AK AL@2 AM@2 AN AO@3 AP@3 AQ@3 AR@2 AS AT AU AV AW AX AY AT AZ@2 BA BB@2 BC BD@2 AA AD@2 AA AB@2 AC AB@2
  AC BE@2 BF BG@2 BH BI@2 BJ BK BL BM BN BO BP@2 BL BM BQ@2 BR BS@2 BT BU@2 BV BW@2 BX BY@2 BZ CA@2 CB CC ~
>`.pickRestart({
  A: "~@23 a1 ~ bb1 d2 ~ f2@4", B: "a1 bb1 ~ d2 f2@4 a1 ~ bb1 a1 g1 ~ f1 g1 ~ a1 bb1 ~ d2 f2@4 a1 ~ bb1 d2 f2@3",
  C: "~@2 a1 bb1 a1 ~ g1 f1 ~ g1 a1 ~ bb1 d2 f2@4 ~ a1 bb1 d2 ~ f2@4 a1 bb1 ~ a1 g1",
  D: "~ f1 g1 ~ a1 bb1 d2 ~ f2@4 a1 bb1 ~ d2 f2@4 a1 ~ bb1 a1 ~ g1 f1 ~ g1 a1 bb1 ~",
  E: "[d2 f2@4 a1 ~ bb1 d2 ~ f2@4 a1 bb1 ~ a1 g1 ~ f1 g1 a1 ~ bb1 d2@3 g1@11 ~@13 g1@19 ~ g1@4 f1@11 ~@9]/3",
  F: "[~@4 bb1@11 ~@13 c2@11 ~@9 g1@4 c2@11 ~]/2", G: "~@12 c2@11 ~@9",
  H: "[~@4 c2@11 ~ c2@4 c2@4 g1@4 f1@19 ~ c2@4 f2@11 ~]/2", I: "~@12 f2@19 ~",
  J: "[c2@4 f2@11 ~@13 c2@19 ~ g1@4 c2@11 ~]/2", K: "~@12 c2@19 ~",
  L: "[g1@4 c2@11 ~@13 f1@7 ~ g1@11 ~ d2@4 g1@11 ~]/2", M: "d2@4 g1@4 gb1@4 f1@7 ~@13",
  N: "[~@4 bb1@11 ~@9 b1@4 c2@22 ~@2 c2@11 ~]/2", O: "~@8 g1@4 c2@11 ~ c2@4 ~@4",
  P: "[~@4 g1@11 ~@5 g1@4 bb1@4 c2@11 ~ c2@4 ~@8 c2@11 ~]/2",
  Q: "[a1@4 ~@8 c2@7 ~ c2@15 ~ c2@11 ~@13 c2@7 ~ c2@15 ~ c2@11 ~]/3",
  R: "[~@12 c2@7 ~ c2@15 ~ c2@11 ~@9 g1@4 f1@7 ~ e2 f2@14 ~ f1@7 ~ c2@4]/3", S: "c2@2 d2@9 ~ e2 f2@3 ~@4 e2 f2@7 ~@4",
  T: "~@4 f1@11 ~ c2 d2@10 ~ c2@4", U: "~@4 b1 c2@14 ~@13",
  V: "[c2 d2@10 ~ b1 c2@3 ~@4 b1 c2@14 ~ c2@11 ~@13 f1@7 ~ g1@27 ~]/3", W: "~@2 g1 f1@4 c2",
  X: "[b1@4 bb1@11 ~@9 bb1@4 c2@11 ~@13 c2@11 ~]/2", Y: "~@8 g1@4 c2@11 ~@9",
  Z: "[~@4 c2@11 ~ g1@11 ~ bb1@7 ~ c2@8 ~@20]/2", AA: "~@12 bb1@7 ~ c2@8 ~@4",
  AB: "[~@8 bb2@4 c3@4 f2@4 g2@4 eb2@4 eb2@7 ~ f2@8 ~@20]/2", AC: "~@12 eb2@7 ~ f2@8 ~@4",
  AD: "[~@8 bb2@4 c3@4 f2@4 g2@4 eb2@4 bb1@7 ~ c2@8 ~@20]/2",
  AE: "[~@8 bb2@4 c3@4 f2@4 g2@4 eb2@4 f1@7 ~ g1@15 ~@13]/2", AF: "g2@4 g1@4 gb1@4 f1@11 ~@9",
  AG: "[f1@4 bb1@19 ~ b1@4 c2@11 ~@9 g1@4 c2@11 ~]/2",
  AH: "[~@4 g1@4 bb1@4 c2@11 ~ c2@11 ~ g1@11 ~ g1@4 bb1@4 b1@4 c2@11 ~ c2@11 ~ c2@11 ~]/3", AI: "c2@11 ~ f1 ~@19",
  AJ: "[~@28 c2@11 ~ c2@11 ~ c2@11 ~]/2", AK: "c2@11 ~ c2 ~@19", AL: "[~@28 f1@11 ~@25]/2",
  AM: "[f2 g2@10 ~ f2 g2@3 ~@8 f2 g2@10 ~ f1 ~@11 g1@2 a1@9 ~ c2@4]/2", AN: "~@4 bb1 c2@14 ~@13",
  AO: "[c2@2 d2@9 ~ bb1 c2@3 ~@4 bb1 c2@14 ~@13 bb1 c2@7 c2@4 f1@7 ~ g1@15 ~ g2@11 ~]/3",
// … 102 more lines

More by Led Zeppelin