Strudelify

Beep Beep

Playmates

KeyF minorTempo90 bpm
0:00/0:00
// Beep Beep — Playmates
// 90 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 72 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(90/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 · tenor sax · "Sax"
const tenor_sax = note(`<
  A B C D E F G H I J K H L M N O P F@2 H I Q R H S T@2 U V@2 W X@3 Y@2 Z AA AB AC AD@2 AE AF AG@2 AH AI@2 AJ AK@2 AL AM
  AN AO AP AQ AR AS AT AU AV@2 AW AX@2 AY AZ@2 BA@2
>`.pickRestart({
  A: "~@12 c4@3 ~", B: "db4@6 ~@2 bb3@6 ~@2 g3@4 ~ ab3@4 ~@2 bb3@4 ~", C: "c4@6 ~@2 ab3@6 ~@2 f3@13 ~@3",
  D: "c3@3 ~ db3@3 ~ db3@3 ~ e3@3 ~", E: "[f2,ab2,c3,f3]@3 ~ [c3,e3,c4]@3 ~ [f3,ab3,c4,f4]@3 ~ c3@3 ~",
  F: "f3@3 ~ ab3@3 ~ g3@3 ~ c3@3 ~", G: "f3@3 ~ ab3@3 ~ g3@4 ~@4", H: "f3@3 ~ ab3@3 ~ g3@3 ~ e3@3 ~",
  I: "f3@4 ~@8 c3@3 ~", J: "f3@3 ~ f3@3 ~ ab3@6 ~@2 g3@3 ~ g3@3 ~ c3@6 ~@2",
  K: "f3@3 ~ f3@3 ~ ab3@6 ~@2 g3@6 ~@2 c3@6 ~@2", L: "f3@4 ~@8 c4@3 ~",
  M: "db4@6 ~@2 bb3@3 ~ bb3@3 ~ g3@2 g3@2 ab3@3 ~ bb3@6 ~@2", N: "c4@6 ~@2 ab3@6 ~@2 f3@6 ~@2 g3@3 ~ ab3@3 ~",
  O: "bb3@6 ~@2 g3@6 ~@2 e3@3 ~ f3@3 ~ g3@6 ~@2", P: "ab3@3 ~ f4@2 ~@2 f4@2 ~@2 c3@3 ~",
  Q: "f3@3 ~ f4@2 ~@2 f4@2 ~@2 ab3@3 ~", R: "g3@3 ~ f4@2 ~@2 f4@2 ~@2 c3@3 ~", S: "f3@3 ~ f4@2 ~@2 f4@2 ~@2 c3@3 ~",
  T: "[f3@5 ~ ab3@5 ~ g3@5 ~ c3@5 ~ f3@5 ~ ab3@5 ~ g3@6 ~@6 f3@5 ~ ab3@5 ~ g3@4]/2",
  U: "~@2 e3@5 ~ f3@6 ~@12 c3@2 ~ c3@2 ~",
  V: "[f3@2 ~ f3@2 ~ ab3@5 ~ g3@2 ~ g3@2 ~ c3@5 ~ f3@5 ~ ab3@5 ~ g3@5 ~ c3@5 ~ f3@5 ~ ab3@5 ~ g3@4]/2",
  W: "~@2 e3@5 ~ f3@6 ~@12 c4@5 ~",
  X: "[db4@5 ~ bb3@5 ~ g3@2 ~ ab3@2 ~ bb3@5 ~ c4@5 ~ ab3@5 ~ f3@5 ~ g3@5 ~ bb3@5 ~ g3@5 ~ e3@2 ~ f3@2 ~ g3@5 ~ ab3@5 ~ f4@3 ~@3 f4@3 ~@3 c3@5 ~]/3",
  Y: "[f3@5 ~ ab3@5 ~ g3@5 ~ c3@5 ~ f3@5 ~ ab3@5 ~ g3@5 ~ c3@5 ~ f3@5 ~ ab3@5 ~ g3@4]/2",
  Z: "~@2 e3@5 ~ f3@6 ~@12 c3@5 ~", AA: "f3@5 ~ f4@3 ~@3 f4@3 ~@3 ab3@5 ~ g3@5 ~ f4@2",
  AB: "~@4 f4@3 ~@3 c3@5 ~ f3@5 ~ ab3@5 ~ g3@4", AC: "~@2 e3@5 ~ f3@5 ~ f4@3 ~@3 f4@3 ~@3 c3@5 ~",
  AD: "[f3@4 ~ ab3@4 ~ g3@4 c3@4 ~ f3@4 ~ ab3@4 ~ g3@5 ~@4 f3@4 ~ ab3@4 ~ g3@4 ~ e3@4 ~ f3@5 ~]/2",
  AE: "~@8 c3@4 ~ f3@4 ~ ab3@2 ab3@2 g3@4 ~ c3@4 ~", AF: "f3@4 ~ ab3@4 ~ g3@4 c3@2 ~ c3@2 f3@4 ~ ab3@4 ~ g3@3",
  AG: "[~@2 e3@4 f3@5 ~@10 c4@2 c4@2 ~ db4@4 bb3@4 ~ g3@4 ~ bb3@4 ~ c4@4 ~ ab3@4 f3@4 ~ g3@4 ~]/2",
  AH: "bb3@2 bb3@2 ~ g3@4 ~ e3@4 g3@4 ~ ab3@4 ~ f4@2 ~@3 f4@2 ~",
  AI: "[~@2 c3@4 f3@2 ~ f3@2 ab3@4 ~ g3@2 g3@2 ~ c3@4 ~ f3@4 ab3@4 ~ g3@4 ~ c3@4 ~ f3@4 ~ ab3@4 g3@4 ~ e3@4 ~]/2",
  AJ: "f3@5 ~@9 c3@4 ~ f3@4 ~ f4@2 ~@3 f4@2 ~",
  AK: "[~@2 ab3@4 g3@4 ~ f4@2 ~@3 f4@2 ~@3 c3@4 ~ f3@4 ab3@4 ~ g3@4 ~ e3@4 ~ f3@4 ~ f4@2 ~@2 f4@2 ~@8]/2",
  AL: "f3@3 ~ ab3@3 ~ g3@2 g3@2 c3@3 ~ f3@2 f3@2 ab3@3 ~ g3@3 ~ c3@3 ~",
  AM: "f3@2 f3@2 ab3@3 ~ g3@3 ~ e3@3 ~ f3@4 ~@8 c3@2 c3@2",
  AN: "f3@2 f3@2 ab3@3 ~ g3@3 ~ c3@3 ~ f3@3 ~ ab3@3 ~@5 c3@3 ~", AO: "f3@3 ~ ab3@3 ~ g3@3 ~ e3@3 ~ f3@4 ~@8 c4@2 c4@2",
  AP: "db4@3 ~ bb3@2 bb3@2 g3@2 ab3@2 bb3@3 ~ c4@3 ~ ab3@3 ~@5 g3@3 ~",
  AQ: "bb3@3 ~ g3@3 ~ e3@2 f3@2 g3@3 ~ ab3@3 ~ f4@2 ~@2 f4@2 ~@2 c3@3 ~",
  AR: "f3@3 ~ ab3@3 ~ g3@3 ~ c3@3 ~ f3@3 ~ ab3@3 ~ g3@3 ~ c3@3 ~", AS: "f3@3 ~ ab3@3 ~ g3@3 ~ e3@3 ~ f3@4 ~@8 c3@3 ~",
  AT: "f3@3 ~ f4@2 ~@2 f4@2 ~@2 ab3@3 ~ g3@3 ~ f4@2 ~@2 f4@2 ~@2 c3@3 ~",
  AU: "f3@3 ~ ab3@3 ~ g3@3 ~ e3@3 ~ f3@3 ~ f4@2 ~@2 f4@2 ~@6",
  AV: "[f3@3 ab3@3 ~ g3 ~ g3 c3@3 ~ f3!2 ~ ab3@3 ~ g3!2 ~ c3@3 f3@3 ~ ab3@3 g3@3 ~ e3@3 f3@3 ~@7 c3@3 ~ f3@3 ab3@3 ~ g3!2]/2",
  AW: "~ c3@3 ~ f3@3 ab3@3 g3@3 ~ c3@3 f3@3 ~ ab3!2 ~ g3@3 ~ e3@3",
  AX: "[f3@3 ~@7 c4@3 ~ db4!2 ~ bb3@3 ~ g3@3 bb3@3 c4@3 ~ ab3@3 ~@4 ab3@3 bb3@3 ~ g3@3 e3@3 g3@3 ~ ab3@8 ~]/2",
  AY: "~ c4@3 ~ db4@5 ~ bb3@5 ~@2 g3@5 ~@2 ab3@3 ~ bb3@3",
  AZ: "[c4@5 ~@2 ab3@5 ~@2 f3@11 ~@2 c4@11 ~@3 db4@11 ~@3 d4@9]/2", BA: "[~@5 e4@11 ~@2 f4@44 ~@2]/2",
})).s("gm_tenor_sax").gain(0.39).pan(0.3)

// chords · tenor sax · "Sax"
const tenor_sax_2 = note(`<
  ~ A B C D E F G H E@2 G I J K L M E@2 G N O P Q R S@2 T U@2 V W@2 X U@2 Y Z@2 AA AB AC AD AB AE@2 AF AG@2 AH@3 AI AJ
  AK AL AM AN AK AO AP AQ AR@2 AS AT@2 AU AV@2 AW AX
>`.pickRestart({
  A: "[db4,f4]@13 ~@3 [bb3,e4]@13 ~@3", B: "[f4,ab4]@6 ~@2 [c4,f4]@13 ~@3 [ab3,c4]@6 ~@2",
  C: "c4@3 ~ bb3@3 ~ ab3@3 ~ g3@3 ~", D: "[f3,ab3,c4,f4]@3 ~ [c4,e4,bb4,c5]@3 ~ [f4,ab4,c5,f5]@4 ~@4",
  E: "~ [c4,f4] ~ [e3,bb3]", F: "~ [c4,f4] ~ [e3,bb3,c4]", G: "~@4 [c4,f4]@4 ~@4 [e3,bb3,c4]@3 ~", H: "[ab3,c4] ~@3",
  I: "[ab3,c4] ~@2 [f4,ab4]", J: "~ [db4,f4] ~ [bb3,e4]", K: "~ [c4,f4] ~ c4", L: "~@4 [bb3,e4]@4 ~@4 [bb3,e4]@3 ~",
  M: "[c4,f4] ~@3", N: "[ab3,c4]@3 ~ [e4,bb4,c5]@3 ~ [f4,ab4,c5]@8, ~@2 f5 ~", O: "~@4 [ab3,c4]@3 ~ [ab3,c4]@4 ~@4",
  P: "~@4 [bb3,e4]@3 ~ [bb3,e4]@4 ~@4", Q: "~@4 [c4,f4]@3 ~ [bb3,e4]@3 ~ [g3,bb3]@3 ~",
  R: "[ab3,c4,f4]@3 ~ [e4,bb4,c5]@3 ~ [f4,ab4,c5,f5]@4 ~@4", // Fm C7 Fm
  S: "[~@3 [c4,f4]@3 ~@3 [e3,bb3]@3 ~@3 [c4,f4]@3 ~@3 [e3,bb3,c4]@3 ~@3 [c4,f4]@3 ~@2]/2", // F5 Edim F5 C7 F5
  T: "~@2 [e3,bb3,c4]@5 ~ [ab3,c4]@6 ~@18", // C7 Ab
  U: "[~@3 [c4,f4]@3 ~@3 [e3,bb3]@3 ~@3 [c4,f4]@3 ~@3 [e3,bb3]@3 ~@3 [c4,f4]@3 ~@2]/2", // F5 Edim F5 Edim F5
  V: "~@2 [e3,bb3,c4]@5 ~ [ab3,c4]@6 ~@12 [f4,ab4]@6", // C7 Ab Fm
  W: "[~@3 [db4,f4]@3 ~@3 [bb3,e4]@3 ~@3 [c4,f4]@3 ~@3 c4@3 ~@3 [bb3,e4]@3 ~@2]/2", // Db Bbdim F5 Bbdim
  X: "~@2 [bb3,e4]@5 ~ [c4,f4]@6 ~@18", Y: "~@2 [e3,bb3,c4]@5 ~ [ab3,c4]@5 ~ [e4,bb4,c5]@5 ~ [f4,ab4,c5,f5]@6 ~@6",
  Z: "[~@6 [ab3,c4]@5 ~ [ab3,c4]@6 ~@12 [bb3,e4]@5 ~ [bb3,e4]@6 ~@12 [c4,f4]@5 ~ [bb3,e4]@4]/2", // Ab Bbdim F5 Bbdim
  AA: "~@2 [g3,bb3]@5 ~ [ab3,c4,f4]@5 ~ [e4,bb4,c5]@5 ~ [f4,ab4,c5,f5]@6 ~@6", // Gm Fm C7 Fm
  AB: "~@5 [c4,f4]@5 ~@4 [e3,bb3]@5 ~@5 [c4,f4]@5 ~@3", // F5 Edim F5
  AC: "~@2 [e3,bb3,c4]@5 ~@4 [c4,f4]@5 ~@5 [e3,bb3,c4]@4 ~ [ab3,c4]@5 ~", AD: "~@18 [c4,f4]@5 ~@4 [e3,bb3]@5",
  AE: "[~@2 [e3,bb3,c4]@4 [ab3,c4]@5 ~@10 [f4,ab4]@5 ~@4 [db4,f4]@5 ~@5 [bb3,e4]@5 ~@5 [c4,f4]@5 ~@4 c4@5]/2", // C7 Ab Fm Db Bbdim F5
  AF: "~@5 [bb3,e4]@5 ~@4 [bb3,e4]@4 ~ [c4,f4]@5 ~@8", // Bbdim F5
  AG: "[~@11 [c4,f4]@5 ~@5 [e3,bb3]@5 ~@4 [c4,f4]@5 ~@5 [e3,bb3]@5 ~@5 [c4,f4]@5 ~@4 [e3,bb3,c4]@4 ~]/2", // F5 Edim F5 Edim F5 C7
  AH: "[[ab3,c4]@4 ~ [e4,bb4,c5]@4 ~ [f4,ab4,c5,f5]@5 ~@9 [ab3,c4]@4 ~ [ab3,c4]@5 ~@9 [bb3,e4]@4 ~ [bb3,e4]@5 ~@9 [c4,f4]@4 ~ [bb3,e4]@4 ~ [g3,bb3]@4 ~ [ab3,c4,f4]@4 ~ [e4,bb4,c5]@4 [f4,ab4,c5,f5]@5 ~@5]/3", // Ab C7 Fm Ab Bbdim F5 Bbdim Gm …
  AI: "~ [c4,f4] ~ [e3,bb3] ~ [c4,f4] ~ [e3,bb3,c4]", AJ: "~@4 [c4,f4]@4 ~@4 [e3,bb3,c4]@3 ~ [ab3,c4]@4 ~@12",
  AK: "~ [c4,f4] ~ [e3,bb3] ~ [c4,f4] ~ [e3,bb3]", AL: "~@4 [c4,f4]@4 ~@4 [e3,bb3,c4]@3 ~ [ab3,c4]@4 ~@8 [f4,ab4]@4",
  AM: "~ [db4,f4] ~ [bb3,e4] ~ [c4,f4] ~ c4", AN: "~@4 [bb3,e4]@4 ~@4 [bb3,e4]@3 ~ [c4,f4]@4 ~@12",
  AO: "~@4 [c4,f4]@4 ~@4 [e3,bb3,c4]@3 ~ [ab3,c4]@3 ~ [e4,bb4,c5]@3 ~ [f4,ab4,c5,f5]@4 ~@4", // F5 C7 Ab C7 Fm
  AP: "~@4 [ab3,c4]@3 ~ [ab3,c4]@4 ~@8 [bb3,e4]@3 ~ [bb3,e4]@4 ~@4", // Ab Bbdim
  AQ: "~@4 [c4,f4]@3 ~ [bb3,e4]@3 ~ [g3,bb3]@3 ~ [ab3,c4,f4]@3 ~ [e4,bb4,c5]@3 ~ [f4,ab4,c5,f5]@4 ~@4", // F5 Bbdim Gm Fm C7 Fm
  AR: "[~@3 [c4,f4]@3 ~@4 [e3,bb3]@3 ~@4 [c4,f4]@3 ~@4 [e3,bb3,c4]@3 ~@4 [c4,f4]@3 ~@4 [e3,bb3,c4]@3 [ab3,c4]@3 ~@14 [c4,f4]@3 ~@3]/2", // F5 Edim F5 C7 F5 C7 Ab F5
  AS: "~ [e3,bb3]@3 ~@4 [c4,f4]@3 ~@4 [e3,bb3]@3 ~@4 [c4,f4]@3 ~@4 [e3,bb3,c4]@3", // Edim F5 Edim F5 C7
  AT: "[[ab3,c4]@3 ~@7 [f4,ab4]@3 ~@4 [db4,f4]@3 ~@4 [bb3,e4]@3 ~@4 [c4,f4]@3 ~@4 [c4,f4]@3 ~@4 [bb3,e4]@3 ~@3 [bb3,e4]@3 ~@4 [c4,f4]@3 ~@3]/2", // Ab Fm Db Bbdim F5 Bbdim F5
  AU: "~ [f4,ab4]@3 ~@4 [db4,f4]@3 ~@4 [db4,f4]@3 ~@4 [bb3,e4]@3 ~@4 [bb3,e4]@3", // Fm Db Bbdim
  AV: "[~@3 [c4,f4]@3 ~@4 [c4,f4]@3 ~@4 [ab3,c4]@3 ~@4 [ab3,c4]@3 ~@4 [e4,g4]@3 ~@4 [e4,g4]@3 ~@4 [f4,bb4]@3 ~@3 [f4,bb4]@3 ~@4 [f4,ab4]@3 ~@3]/2", // F5 Ab Em Bb5 Fm
  AW: "~ [f4,ab4]@3 ~@4 [g4,bb4]@3 ~@4 [g4,bb4]@3 [ab3,c4]@4 ab4@3 [bb3,e4]@4 c4@3, ~@18 f4@3 ~@4 g4@3 ~@4", // Fm Gm Ab Bbdim
  AX: "f4@3 ab4@3 ~ e4@3 c4@3 ~ [ab3,c4,f4]@3 ~@4 [c4,e4,bb4,c5]@3 ~@3 [f4,ab4,c5,f5]@3 ~@2, [ab3,c4]@6 ~ [bb3,g4]@6 ~@19", // Fm C7 Fm Ab Eb
})).s("gm_tenor_sax").gain(0.57).pan(0.3)

// chords · epiano1 · "Piano"
const epiano1 = note(`<
  ~ A B C D E F G H G I@2 J K H L B E G E M B N G M O@3 P@3 Q@3 R S@2 T U@2 V@2 W X@3 Y Z@2 AA AB@2 AC AD AE AF AG AH AI
  AJ AK AJ AL AM@2 AN AO@2 AP AQ AR AS
>`.pickRestart({
  A: "~@4 [f3,bb3,d4]@9 ~@7 [bb3,c4,e4,g4]@9 ~@3", B: "[ab3,c4,f4]@12 f3@4 [ab3,c4,f4]@5 ~@3 [ab3,c4,f4]@3 ~@5",
  C: "[bb3,c4,e4,g4]@3 ~ [bb3,c4,e4,g4]@2 ~@6 [bb3,c4,e4,g4]@13 ~@7", D: "[ab3,c4,f4] [bb3,c4,e4,g4] [ab3,c4,f4] ~",
  E: "[ab3,c4,f4]@15 ~ [bb3,c4,e4,g4]@15 ~", F: "[ab3,c4,f4]@15 ~@5 [bb3,c4,e4,g4]@9 ~@3",
  G: "~@4 [ab3,c4,f4]@9 ~@7 [bb3,c4,e4,g4]@9 ~@3", H: "[ab3,c4,f4]@31 ~",
  I: "~@4 [ab3,c4,f4]@9 ~@3 [bb3,c4,e4,g4]@15 ~", J: "f4@16 f4@4 ab4@4 c5@4 f5 ~@3, [ab3,c4]@5 ~@3",
  K: "[bb3,d4,f4]@15 ~ [bb3,c4,e4,g4]@15 ~", L: "c4@16 c4@4 e4@4 g4@4 c5 ~@3, [bb3,e4,g4]@5 ~@3",
  M: "[ab3,c4,f4]@8 [bb3,c4,e4,g4]@8 [ab3,c4,f4]@15 ~", N: "[bb3,c4,e4,g4]@31 ~",
  O: "[~@3 [ab3,c4,f4]@7 ~@5 [bb3,c4,e4,g4]@7 ~@2 [ab3,c4,f4]@11 ~ [bb3,c4,e4,g4]@11 ~ [ab3,c4,f4]@11 ~ [bb3,c4,e4,g4]@11 ~ [ab3,c4,f4]@2 ~ [ab3,c4,f4]@2 ~@4 [ab3,c4,f4]@9 ~@6]/3", // Fm C7 Fm C7 Fm C7 Fm
  P: "[[ab3,c4,f4]@11 ~@4 [bb3,c4,e4,g4]@7 ~@2 [ab3,c4,f4]@11 ~@4 [bb3,c4,e4,g4]@7 ~@5 [ab3,c4,f4]@7 ~@2 [bb3,c4,e4,g4]@11 ~ [ab3,c4,f4]@2 ~ [ab3,c4,f4]@2 ~@4 [ab3,c4,f4]@9 ~@6]/3", // Fm C7 Fm C7 Fm C7 Fm
  Q: "[[bb3,d4,f4]@11 ~ [bb3,c4,e4,g4]@11 ~ [ab3,c4,f4]@23 ~ c4@12 c4@3 e4@3 g4@3 c5 ~@2 [ab3,c4,f4]@2 ~ [ab3,c4,f4]@2 ~@4 [ab3,c4,f4]@9 ~@6, ~@16 [bb3,e4,g4]@5 ~@11]/3", // Bb C7 Fm Edim
  R: "~@3 [ab3,c4,f4]@7 ~@2 [bb3,c4,e4,g4]@11 ~@4 [ab3,c4,f4]@5", // Fm C7 Fm
  S: "[~@4 [bb3,c4,e4,g4]@11 ~ [ab3,c4,f4]@11 ~@4 [bb3,c4,e4,g4]@7 ~@2 [ab3,c4,f4]@6 [bb3,c4,e4,g4]@6 ~@3 [ab3,c4,f4]@7 ~@2]/2", // C7 Fm C7 Fm C7 Fm
  T: "[ab3,c4,f4]@2 ~ [ab3,c4,f4]@2 ~@4 [ab3,c4,f4]@9 ~@6 [bb3,c4,e4,g4]@2 ~ [bb3,c4,e4,g4]@2 ~@3", // Fm C7
  U: "[~ [bb3,c4,e4,g4]@9 ~@6 [ab3,c4,f4]@11 ~ [bb3,c4,e4,g4]@11 ~ [ab3,c4,f4]@6 [bb3,c4,e4,g4]@6 ~@3 [ab3,c4,f4]@7 ~@2]/2", // C7 Fm C7 Fm C7 Fm
  V: "[[ab3,c4,f4]@9 ~ [bb3,c4,e4,g4]@9 ~@3 [ab3,c4,f4]@5 ~@2 [bb3,c4,e4,g4]@9 [ab3,c4,f4]@9 ~@3 [bb3,c4,e4,g4]@5 ~@3 [ab3,c4,f4]@2 [ab3,c4,f4] ~@3]/2", // Fm C7 Fm C7 Fm C7 Fm
  W: "~ [ab3,c4,f4]@8 ~@4 [ab3,c4,f4]@9 [bb3,c4,e4,g4]@9 ~", // Fm C7
  X: "[[ab3,c4,f4]@9 ~ [bb3,c4,e4,g4]@9 ~@3 [ab3,c4,f4]@5 ~@4 [bb3,c4,e4,g4]@5 ~@5 [ab3,c4,f4]@2 ~@3 f3@2 [ab3,c4,f4]@3 ~@2 [ab3,c4,f4]@2 ~@3 [f3,bb3,d4]@9 [bb3,c4,e4,g4]@9 ~ [ab3,c4,f4]@18 ~]/3", // Fm C7 Fm C7 Fm Bb C7 Fm
  Y: "[bb3,c4,e4,g4]@10 c4@2 e4@2 g4@2 ~ c5 ~ [ab3,c4,f4]@2 ~ [ab3,c4,f4] ~@3 [ab3,c4,f4]@6", // C7 Fm
  Z: "[~@6 [ab3,c4,f4]@9 ~ [bb3,c4,e4,g4]@9 ~ [ab3,c4,f4]@9 [bb3,c4,e4,g4]@9 ~ [ab3,c4,f4]@9 [bb3,c4,e4,g4]@9 ~]/2", // Fm C7 Fm C7 Fm C7
  AA: "[ab3,c4,f4]@5 [bb3,c4,e4,g4]@5 ~@2 [ab3,c4,f4]@5 ~@2 [ab3,c4,f4]@7 f3@3 [ab3,c4,f4]@3", // Fm C7 Fm
  AB: "[~@2 [ab3,c4,f4]@2 ~@2 [bb3,c4,e4,g4]@2 ~ [bb3,c4,e4,g4] ~@4 [bb3,c4,e4,g4]@8 ~@4 [ab3,c4,f4]@9 [bb3,c4,e4,g4]@9 ~ [ab3,c4,f4]@5 [bb3,c4,e4,g4]@5 ~@2 [ab3,c4,f4]@5 ~@2]/2", // Fm C7 Fm C7 Fm C7 Fm
  AC: "~@2 [ab3,c4,f4]@4 ~@4 [bb3,c4,e4,g4]@4 ~@2 [ab3,c4,f4]@7 ~ [bb3,c4,e4,g4]@7 ~", // Fm C7 Fm C7
  AD: "[ab3,c4,f4]@7 ~ [bb3,c4,e4,g4]@7 ~@3 [ab3,c4,f4]@2 ~@2 f3@2 [ab3,c4,f4]@2 ~@2 [ab3,c4,f4] ~@3", // Fm C7 Fm
  AE: "~@2 [ab3,c4,f4]@4 ~@2 [bb3,c4,e4,g4]@7 ~ [ab3,c4,f4]@7 ~ [bb3,c4,e4,g4]@7 ~", // Fm C7 Fm C7
  AF: "~@2 [ab3,c4,f4]@4 ~@2 [bb3,c4,e4,g4]@7 ~ [ab3,c4,f4]@15 ~", // Fm C7 Fm
  AG: "~@2 [bb3,d4,f4]@4 ~@4 [bb3,c4,e4,g4]@4 ~@2 [ab3,c4,f4]@15 ~", // Bb C7 Fm
  AH: "~@2 [bb3,c4,e4,g4]@2 ~@2 c3@2 [bb3,c4,e4,g4]@2 ~@2 [bb3,c4,e4,g4] ~@3 [ab3,c4,f4]@6 f3@2 [ab3,c4,f4]@3 ~ [ab3,c4,f4] ~@3", // C7 Fm
  AI: "~@2 [ab3,c4,f4]@4 ~@4 [bb3,c4,e4,g4]@4 ~@4 [ab3,c4,f4]@4 ~@2 [bb3,c4,e4,g4]@7 ~", // Fm C7 Fm C7
  AJ: "[ab3,c4,f4]@7 ~ [bb3,c4,e4,g4]@7 ~ [ab3,c4,f4]@4 [bb3,c4,e4,g4]@4 [ab3,c4,f4]@7 ~", // Fm C7 Fm C7 Fm
  AK: "~@2 [ab3,c4,f4]@2 ~@2 f3@2 [ab3,c4,f4]@2 ~@2 [ab3,c4,f4] ~@5 [bb3,c4,e4,g4]@2 ~@2 c3@2 [bb3,c4,e4,g4]@2 ~@2 [bb3,c4,e4,g4] ~@3", // Fm C7
  AL: "[ab3,c4,f4]@6 ~ [bb3,c4,e4,g4]@6 ~ [ab3,c4,f4]@6 ~@2 [bb3,c4,e4,g4]@4 ~@3 [ab3,c4,f4]@3", // Fm C7 Fm C7 Fm
  AM: "[~@2 [bb3,c4,e4,g4]@6 ~ [ab3,c4,f4]@5 f3@2 [ab3,c4,f4]@2 ~ [ab3,c4,f4] ~@5 [ab3,c4,f4]@4 ~ [bb3,c4,e4,g4]@6 ~ [ab3,c4,f4]@6 ~@2 [bb3,c4,e4,g4]@4 ~ [ab3,c4,f4]@6 ~@3 [bb3,c4,e4,g4]@4 ~]/2", // C7 Fm C7 Fm C7 Fm C7
  AN: "[ab3,c4,f4]@5 f3@2 [ab3,c4,f4]@2 ~ [ab3,c4,f4] ~@4 [bb3,db4,f4]@4 ~@3 [bb3,c4,e4,g4]@4 ~@3 [ab3,c4,f4] ~@2", // Fm Bbm C7 Fm
  AO: "[~@2 [ab3,c4,f4]@2 ~@2 [ab3,c4,f4] ~@2 [bb3,c4,e4,g4]@5 c3@2 [bb3,c4,e4,g4]@2 ~ [bb3,c4,e4,g4] ~@3 [ab3,c4,f4]@7 ~ ab4@2 c5@2 f5 ~@2 [bb3,db4,f4] ~@4 [bb3,db4,f4]@2 ~@2 [bb3,db4,f4] ~@2 [bb3,c4,e4,g4] ~ [bb3,c4,e4,g4] ~@2 [bb3,c4,e4,g4]@5 ~@4, ~ f3@2 ~@27 f4@2 ~@10 bb2@2 ~@20]/2", // Fm C7 Fm Bbm C7
  AP: "[ab3,c4,f4]@22 ~@2 ab4@2 ~ [bb3,c4,e4,g4]@5, ~@11 f4@2 c5 ~@2", // Fm C7
  AQ: "~@2 [bb3,c4,e4,g4]@2 ~@2 [bb3,c4,e4,g4] ~@2 [bb3,db4,f4]@7 bb3@2 ~ f4@2 bb4 ~ [b3,d4,f4,ab4] ~ [b3,d4,f4,ab4] ~@2 [b3,d4,f4,ab4]@4, ~ c3@2 ~@15 db4@2 ~@12", // C7 Bbm Bdim
  AR: "~@6 [bb3,c4,e4,g4] ~@4 [bb3,c4,e4,g4]@2 ~@2 [bb3,c4,e4,g4] ~@4 [ab3,c4,f4]@4 ~ [bb3,c4,e4,g4]@6 ~, ~@5 c3 ~@10", // C7 Fm C7
  AS: "[ab3,c4,f4]@6 ~ [bb3,c4,e4,g4]@6 ~@2 [ab3,c4,f4]@4 ~@2 [bb3,c4,e4,g4]@6 [ab3,c4,f4]@3 ~@2", // Fm C7 Fm C7 Fm
})).s("gm_epiano1").gain(0.16).pan(0.9)

// chords · electric guitar muted · "Guitar"
const electric_guitar_muted = note(`<
  ~ A B C D E F@2 B G H I J K L M N O G P Q L R E S T@2 U V@2 W X Y@2 Z@3 AA@3 AB AC@2 AD@3 AE@3 AF@2 AG AH AI AJ AK AL
  AM AN AO AP AQ AR AS@2 AT AU@2 AV@3 AW
>`.pickRestart({
  A: "~@12 f3@4 ~@4 [g3,bb3]@11 ~, ~ bb3 ~@2", B: "~@3 ab3@5, ~ c4@3",
  C: "~@7 bb3, ~ e3@4 e3@3, ~ g3@2 g3, ~@3 bb3@4 ~", D: "~@4 [g3,bb3] ~@11", E: "~@4 [f3,c4] ~@9 e3@2, ~@3 bb3",
  F: "~@6 f3@2 ~@4 [e3,bb3] ~@3, ~ c4 ~@2", G: "~@3 c4 ~@3 bb3, ~ f3@3 ~ e3@3, ~ ab3 ~ g3",
  H: "~@3 c4 ~@3 e3, ~ f3@3 ~@4, ~ ab3 ~ bb3", I: "~@3 f3 ~@3 e3, ~ c4 ~ bb3",
  J: "~@7 c4, ~ f3@4 f3@3, ~ ab3@2 ab3, ~@3 c4@4 ~", K: "~@3 f3 ~@3 g3, ~ bb3 ~ bb3", L: "~@4 [f3,c4] ~@5 [f3,c4]@6",
  M: "~@3 bb3@5, ~ e3@3", N: "~@3 c4@5, ~ f3@3", O: "~@3 ab3 ~@3 e3, ~ c4 ~ bb3",
  P: "~@3 ab3 ~@3 bb3, ~@2 c4@2 ~ e3@3, ~@3 g3", Q: "~@8 [g3,bb3]@2 ~@10 [ab3,c4]@11 ~",
  R: "~@4 [e3,bb3] ~@5 [e3,bb3]@6", S: "~@4 [g3,bb3] ~@9 ab3@2, ~@3 c4",
  T: "[~@6 [f3,c4] ~@14 bb3@3 ~@9 ab3@3 ~@9 bb3@3 ~@6 [f3,c4] ~@9, ~@15 e3@9 ~@15 e3@9 ~@16, ~@9 g3@3 ~@3 c4@3 ~@3 g3@3 ~@8]/2", // F5
  U: "~@5 g3@3 ~@21 c4@3, ~@2 bb3@6 ~@3 f3@12 f3@9, ~@7 ab3@6 ab3@3, ~@17 c4@12 ~@3",
  V: "[~@9 c4@3 ~@9 g3@3 ~@9 c4@3 ~@9 e3@3 ~@9 f3@3 ~@4, ~@3 f3@9 ~@15 f3@9 ~@28, ~@3 ab3@3 ~@3 bb3@3 ~@3 ab3@3 ~@3 bb3@3 ~@3 c4@3 ~@2]/2",
  W: "~@2 [e3,bb3] ~@20 c4@9, ~@7 c4@3 ab3@6, ~@17 f3@15", // Edim
  X: "~@9 d3@3 ~@9 bb3@3 ~@6 [f3,c4] ~, ~@6 bb3@6 ~@3 e3@9 ~@8, ~@9 g3@3 ~@4", // F5
  Y: "[~@7 [f3,c4]@9 ~@15 bb3@9 ~@6 [f3,c4] ~@8 [f3,c4]@9, ~@11 bb3@3 g3@6 ~@12, ~@25 e3@15 ~@24]/2", // F5
  Z: "[~@9 c4@3 ~@9 bb3@3 ~@9 c4@3 ~@9 e3@3 ~@9 c4@3 ~@3 [g3,bb3]@9 ~@6 [g3,bb3]@2 ~@7 [ab3,c4]@9, ~ f3@3 ~ e3@3 ~ f3@3 ~@5 f3@3 ~@12, ~ ab3 ~ g3 ~ ab3 ~ bb3 ~ ab3 ~@6]/3", // Gm Ab
  AA: "[~@9 ab3@15 ~@9 bb3@15 ~@9 ab3@3 ~@3 [g3,bb3]@9 ~@6 [g3,bb3]@2 ~@13 f3@3, ~ c4@3 ~ e3@3 ~ c4 ~@5 c4]/3", // Gm
  AB: "~@7 f3@2 ~@5 [e3,bb3] ~@11 ab3@2 ~@4, ~@5 c4@5 ~@14 c4@5 ~@3", // Edim
  AC: "[~@4 e3@2 ~@5 [f3,c4] ~@11 bb3@2 ~@8 c4@12 ~@7 f3@2 ~@3 [g3,bb3]@7, ~@2 bb3@5 ~@11 e3@7 ~@5 f3@14 ~@20, ~@21 g3@5 ~@24 c4@5 ~@9]/2", // F5 Gm
  AD: "[~@7 c4@2 ~@8 bb3@2 ~@7 ab3@2 ~@8 bb3@2 ~@17 c4@2 ~@8 bb3@2 ~@7 e3@2 ~@8 ab3@12, ~@2 f3@7 ~@3 e3@7 ~@12 e3@7 ~@3 f3@9 f3@7 ~@3 d3@7 ~@29, ~@5 ab3@5 ~@4 g3@5 ~@5 c4@5 ~@5 g3@5 ~@4 ab3@10 ab3@5 ~@4 f3@5 ~@29, ~@46 c4@9 ~@17 bb3@5 ~@5 c4@14]/3",
  AE: "[~@5 [e3,bb3] ~@6 [e3,bb3]@7 ~@7 ab3@12 ~@8 ab3@2 ~@2 [g3,bb3]@7 ~@8 ab3@2 ~@7 g3@2 ~@6 [f3,c4] ~@6 [g3,bb3]@7, ~@24 c4@14 ~@5 c4@5 ~@14 c4@5 ~@5 bb3@5 ~@19]/3", // Edim Gm F5 Gm
  AF: "[~@5 [g3,bb3] ~@8 [f3,c4] ~@21 c4@2 ~@12 bb3@7 ~@5 [f3,c4] ~, ~@22 f3@9 f3@7 ~@8 e3@12 ~@6, ~@24 ab3@10 ab3@5 ~@4 bb3@6 ~@15, ~@13 c4@5 ~@6 g3@5 ~@3]/2", // Gm F5
  AG: "~@10 g3@2 ~@6 [g3,bb3] ~@11 f3@2, ~@8 bb3@5 ~@14 c4@5", // Gm
  AH: "~@3 c4 ~ [g3,bb3]@3 ~@3 f3 ~@3 g3, ~ f3@3 ~@12, ~ ab3 ~@3 c4 ~ bb3", // Gm
  AI: "~@3 f3 ~@3 bb3 ~@3 c4@5, ~@2 c4@2 ~ e3@3 ~@2 f3@6, ~@3 g3 ~@4",
  AJ: "~@6 f3@2 ~@4 [e3,bb3] ~@9 f3@2 ~@6 bb3@2, ~@2 c4@2 ~@6 c4@2 ~ e3@3, ~@7 g3", // Edim
  AK: "~@3 f3 ~ [g3,bb3]@3 ~@3 c4@5, ~ c4 ~@3 f3@3", // Gm
  AL: "~@4 [d3,bb3] ~@9 bb3@2 ~@6 c4@10, ~@5 e3@3 ~@2 f3@6, ~@3 g3 ~@4", // Gm
  AM: "~@4 [e3,bb3] ~@5 [e3,bb3]@6 ~@14 c4@2, ~@9 f3@4 f3@3, ~@5 ab3@2 ab3, ~@11 c4@4 ~", // Edim
  AN: "~@6 f3@2 ~@6 g3@2 ~@6 f3@2 ~@4 [e3,bb3] ~@3, ~ c4 ~ bb3 ~ c4 ~@2", // Edim
  AO: "~@6 c4@2 ~@6 g3@2 ~@4 [g3,bb3] ~@9 c4@2, ~ f3@3 ~@9 f3@3, ~ ab3 ~ bb3 ~@3 ab3", // Gm
  AP: "~@4 [f3,c4] ~@5 [f3,c4]@6 ~@4 [e3,bb3] ~@5 [e3,bb3]@6", // F5 Edim
  AQ: "~@4 [f3,c4] ~@9 g3@2 ~@4 [g3,bb3] ~@5 [ab3,c4]@6, ~@3 bb3 ~@4", // F5 Gm Ab
  AR: "~@3 c4@2 f3@2 ~@3 bb3@2 g3@2 ~@3 c4@2 f3@2 ~@3 bb3@2 g3@2 ~@3 [f3,c4]", // F5
  AS: "[~@7 g3@2 ~@10 ab3@2 c4@2 ~@3 c4@2 ab3@2 ~@3 g3@2 bb3@2 ~@3 c4@2 f3@2 ~@3 bb3@2 e3@2 ~@4 f3@2 ~@4 [e3,bb3] ~@2, ~@6 bb3@3 ~@2 f3@7 f3@5 ~@8 e3@5 ~@28, ~@13 ab3@6 ~@45, ~@14 c4@7 ~@33 c4@3 ~@7]/2", // Edim
  AT: "~@5 c4@9 ~@3 [db3,bb3] ~@6 [e3,bb3] ~@6 [f3,c4], ~@3 f3@10 ~@19", // Gb Edim F5
  AU: "[~@4 [f3,c4]@5 ~@9 bb3@5 ~@10 ab3@2 c4@2 ~@10 f3@2 bb3@2 ~@3 [e3,bb3] ~@4 [e3,bb3]@5, ~@13 bb3@3 g3@7 ~@3 ab3@7 ~@7 f3@7 ~@17, ~@14 e3@9 ~@2 f3@6 f3@5 ~@2 db3@7 db3@5 ~@14, ~@28 c4@7 ~@7 bb3@7 ~@15]/2", // F5 Edim
  AV: "[~@3 [f3,c4] ~@5 [f3,c4]@7 ~ [f3,c4] ~@4 [f3,c4]@5 ~@9 bb3@5 ~@5 bb3@9 ~@8 b3@5 ~@11 g3@2 bb3@2 ~@3 [f3,c4] ~@7 g3@2, ~@31 bb3@3 g3@7 ~@17 b3@4 ab3@7 ~@3 g3@7 ~@17, ~@33 e3@9 ~@3 db3@10 ~@5 f3@9 ~ e3@7 e3@5 ~@14, ~@74 bb3@7 ~@12 bb3@3]/3", // F5
  AW: "~@3 ab3@2 c4@2 ~@3 [e3,bb3] ~@6 ab3@2 c4@2 ~@3 g3@2 bb3@2 ~@4, ~@2 f3@5 ~@8 f3@5 ~@2 e3@5 ~@5", // Edim
})).s("gm_electric_guitar_muted").gain(0.16).pan(0.1)

// bass · fretless bass · "Bass"
const bass = note(`<
  ~ A B C D E F G H I@2 J K A H L H E G@2 M B N J O P Q@2 R S@2 T U@2 V W@2 X Y@2 Z@2 AA AB@2 AC AD@2 AE AF@2 AG AH AI
  AJ AI AK AL AM AN AO AN AP AQ@2 AR AS@2 AT AU@2 AV
>`.pickRestart({
  A: "bb1@10 ~@2 bb1@3 ~ c2@10 ~@2 c2@3 ~", B: "f1@11 ~ f1@2 ~@2 f1@12 f1@3 ~", C: "c2@11 ~ c2@3 ~ c2@11 ~ c2@3 ~",
  D: "f1@2 ~ c2 f1@2 ~@2", E: "f2@3 c2 c2@3 g1", F: "f1@5 ~ f1 ~ c2@6 g1@2", G: "f1@10 ~@2 f1@2 ~@2 c2@10 ~@2 c2@3 ~",
  H: "f1@11 ~ f1@3 ~ f1@11 ~ f1@3 ~", I: "f1@10 ~@2 f1@3 ~ c2@12 g1@4", J: "f1@10 ~@2 f1@3 ~ c2@10 ~@2 c2@3 ~",
  K: "f1@11 ~ f1@2 ~@2 f1@11 ~ f1@2 ~@2", L: "c2@12 g1@4 c2@3 ~ c2@5 ~@3 c2@4", M: "f1@2 ~ c2 f2@3 c2",
  N: "c2@11 ~ c2@2 ~@2 c2@11 ~ c2@2 ~@2", O: "f1@8 ~@4 c2@4 f1@10 ~@2 f1@3 ~", P: "f2@9 c2@3 c2@9 g1@3 f1@8",
  Q: "[~ f1@2 ~ c2@8 ~ c2@2 ~ f1@8 ~ f1@2 ~ c2@9 g1@3 f1@8 ~ f1@2 ~ f1@2 ~ f1@5 ~ f1@2 ~]/2",
  R: "f2@9 c2@3 c2@8 ~ c2@2 ~ f1@8", S: "[~ f1@2 ~ c2@8 ~ c2@2 ~ f2@9 c2@3 c2@9 g1@3 f1@8 ~ f1 ~@2 f1@9 f1@2 ~]/2",
  T: "bb1@9 f1@3 c2@8 ~ c2@2 ~ f1@8",
  U: "[~ f1 ~@2 f1@8 ~ f1@2 ~ c2@8 ~ c2 ~@2 c2@8 ~ c2@2 ~ f1@8 ~ f1 ~@2 f1@9 f1@2 ~]/2",
  V: "f1@8 ~ f1@2 ~ c2@9 g1@3 f1@8",
// … 117 more lines