Strudelify

My Maria

B.W. Stevenson

KeyE♭ majorTempo120 bpm
0:00/0:00
// My Maria — B.W. Stevenson
// 120 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (5/4 at bar 1, 4/4 at bar 3) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 109 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · fretless bass · "BASS"
const bass = note(`<
  ~@2 A B@2 C@8 D@2 E@4 F G H I J K L M N@2 B@2 O P Q R S R T R U V W R S R X Y S Z AA AB AC AD AE AF AG@2 AH AI H I J
  AJ AK AL AM AN H AL J AO H AL AP AQ L AR J AS H AT AU AV H AL AW AX H AY AM AZ BA BB BC BD L BE AP BF S BG BH BI BJ BK
  BL@3 ~
>`.pickRestart({
  A: "~@5 eb2 g2 bb2", B: "eb3/2", C: "[eb2@4 bb2@3 ab2@9]/2", D: "[eb1@4 bb1@2 eb2@2 bb1@6 ab1@7 ~ ab1 ~ ab1@8]/2",
  E: "[eb1@6 bb1 ~ bb1@5 ~ ab1@7 ~ ab1 ~ ab1@8]/2", F: "eb1@6 bb1 ~ bb1@5 ~ ab1 ~",
  G: "ab1 ~ ab1@3 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1@2", H: "eb1@4 g1@2 bb1 ~ bb1@6 ab1 ~", I: "ab1@2 c2 eb2 eb1@2 f1 g1",
  J: "ab1@6 bb1@4 ab1@4 eb1 ~", K: "eb1@5 ~ eb1@2 bb1@8", L: "eb1@4 g1@2 bb1 ~ bb1@6 ab1@2", M: "~ ab1@2 eb1@4 g1",
  N: "[ab1@5 ~ ab1@3 ~ ab1@4 eb1@17 ~]/2", O: "eb2@4 bb2@3 ab2", P: "~@2 ab2@3 ~ ab2@3 ~ ab2 ~ ab2@2 ab2 ~",
  Q: "eb1@8 bb1@5 ~ ab1 ~", R: "ab1@5 ~ ab1 ~ ab1@8", S: "eb1@4 g1@2 ab1@2 bb1@6 ab1 ~", T: "eb1@4 bb1@3 g1",
  U: "eb1@6 g1@2 bb1@6 ab1 ~", V: "ab1@5 ~ ab1 ~ ab1@6 ~@2", W: "eb1@4 eb2@2 c2@2 bb1@5 ~ bb1@2",
  X: "eb1@4 eb2@2 c2@2 bb1@6 ab1 ~", Y: "ab1@5 ~ ab1 ~ ab1@3 ~ ab1@4", Z: "ab1@5 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~",
  AA: "bb1@4 ~@2 bb1 ~ bb1@8", AB: "ab1@5 eb2 ab1@2", AC: "eb1@2 ~@2 eb1@6 bb1@2 ~@2 ab1 ~",
  AD: "ab1@5 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1@2", AE: "bb1 ~@3 bb1@5 ~ bb1 ~ bb1 ~ bb1@2",
  AF: "ab1@5 ~ ab1 ~ ab1@4 eb2@3 ~", AG: "[~ eb1 ~@2 eb1@6 bb1@2 ~@2 ab1@7 ~ ab1@2 ab1 ~ ab1@2 ab1 ~ ab1@2]/2",
  AH: "eb2@2 bb1@2 eb1@2 ~@4 bb1@2 ~@2 ab1 ~", AI: "ab1@5 ~ ab1 ~ ab1 ~ ab1@2 c1@2 d1 ~",
  AJ: "eb1@3 ~ eb1 ~ eb1@2 c2@2 eb2@2 c2@2 bb1@2", AK: "eb1@4 g1@2 bb1 ~ bb1@5 ~ ab1 ~", AL: "ab1@2 c2 eb2 eb1@3 g1",
  AM: "ab1@5 ~ ab1@3 ~ ab1@4 eb1@2", AN: "f2@3 eb2 f2@2 eb2 bb1", AO: "eb1@5 ~ eb1@2 c2@2 bb1@2 c2@2 bb1@2",
  AP: "ab1@5 ~ ab1@3 ~ ab1@4 eb1 ~", AQ: "eb1 ~ eb1@2 c2@2 bb1@2 c2@2 bb1@2 c2@2 bb1@2", AR: "~ ab1 c2 eb2 eb1@2 f1 g1",
  AS: "eb1@5 ~ eb1 ~ eb1 ~ eb1 ~ eb1@3 ~", AT: "ab1 ~ ab1@2 c2@2 eb2@2 eb1@4 f1@2 g1@2",
  AU: "ab1@5 ~ ab1@3 ~ ab1@3 ~ ab1@2", AV: "g2 eb2 g2 bb2 bb1 c2 bb1 f1", AW: "ab1@6 bb1@2 ~@2 ab1@4 eb1 ~",
  AX: "eb1@2 f1@2 g1@2 bb1@2 c2@2 f1@2 bb1 ~ bb1@2", AY: "ab1 ~ ab1@2 c2@2 eb2@2 eb1@5 ~ g1@2, ~@4 b1 ~@11",
  AZ: "eb1 ~ eb1@2 [b1,c2] ~ c2@2 bb1 ~ bb1@2 g1@2 f1@2", BA: "eb1@4 ab1!2 bb1 ~ bb1@6 ab1@2, ~@2 g1 ~@5",
  BB: "ab1 ~ ab1@2 c2@2 eb2@2 eb1@6 f1@2", BC: "ab1@5 ~ bb1@4 ab1@4 eb1 ~", BD: "eb1@5 ~ eb1@2 g1@2 eb1@2 g1@2 eb1 ~",
  BE: "ab1 ~ ab1@2 c2@2 eb2@2 eb1@3 ~ eb1@2 g1@2", BF: "eb2 g2 eb2 c2 eb2 c2 bb1 f1",
  BG: "ab1@4 bb1@2 c2@2 eb1@5 ~ eb1@2", BH: "ab1@6 bb1@4 ab1@3 ~ eb1 ~",
  BI: "eb1 ~ eb1@2 c2@2 bb1@2 c2@2 bb1@2 g1@2 f1@2", BJ: "eb1@5 ~ bb1 ~ bb1@5 ~ ab1 ~",
  BK: "ab1@4 c2@2 eb2@2 eb1@5 ~ eb1@2", BL: "[ab1 ~ ab1@3 ~ ab1@3 ~ ab1@3 ~ eb1@34]/3",
})).s("gm_fretless_bass").gain(0.8)

// other · fiddle
const fiddle = note("<~@40 A B@2 ~@66>".pickRestart({
  A: "~@4 ab4@2 bb4 ~ bb4@2 ab4@4 g4 f4", B: "[eb4@9 ~@7]/2",
})).s("gm_fiddle").gain(0.22)

// chords · acoustic guitar steel · "GUITAR AC."
const acoustic_guitar_steel = note(`<
  A B C D C E F E F E F G F H I E F G J K@2 L@2 M@2 N@2 O@3 P@2 Q R S@2 T@2 U V@2 W@4 X@4 Y Z AA@2 AB AC AD@2 AE@2 AF@2
  AG AH AI@2 AJ AK AL AM AN AO AP@2 AQ@2 AR@2 AS AT AU@2 AV AW AP@2 AX@2 AY@2 AZ BA BB@2 BC@2 BD@2 BE BF BG@2 BH@2 AP@2
  BI@3 ~
>`.pickRestart({
  A: "~@10 eb2@2 gb2 g2 bb2@2", B: "eb2@7 ~ [bb2,f3]@6 [ab2,eb3] ~",
  C: "~@2 [ab2,eb3]@3 ~ [ab2,eb3]@2 c3@2 eb3@2 gb2 g2 eb3@2", D: "eb2@4 [bb2,f3]@3 [ab2,eb3]",
  E: "eb2@4 [bb2,eb3,g3] ~@3 [bb2,f3,bb3]@6 [ab2,eb3,ab3] ~", F: "~ ab2@2 ab2 c3 eb3 g2 eb3, ~ [eb3,ab3]@3 ~@4",
  G: "eb2@4 [bb2,eb3,g3] ~@3 [bb2,f3,bb3]@5 ~ [ab2,eb3,ab3] ~", // Eb Bb5 Ab5
  H: "eb2@4 [bb2,eb3,g3]@2 ~@2 [bb2,f3,bb3]@5 ~ [ab2,eb3,ab3] ~", // Eb Bb5 Ab5
  I: "~@2 ab2@4 ab2@2 c3@2 [ab2,eb3]@5 ~, ~ [eb3,ab3]@3 ~@4", J: "~ ab2@2 ab2 c3 [ab2,eb3]@3, ~ [eb3,ab3]@3 ~@4",
  K: "[eb2@4 [bb2,eb3,g3] ~@3 [bb2,f3,bb3]@6 [ab2,eb3,ab3]@4 ab2@4 ab2@2 c3@2 eb3@2 c3@2 eb3@2, ~@18 [eb3,ab3]@7 ~@7]/2", // Eb Bb5 Ab5
  L: "[[eb2,bb2,eb3]@4 g2@2 bb2 ~ [bb2,f3,bb3]@6 [ab2,eb3,ab3]@4 [ab2,eb3,ab3]@3 ~ [eb2,bb2,eb3]@6 [eb2,bb2,eb3]@3 ~]/2", // Eb5 Bb5 Ab5 Eb5
  M: "[[ab2,eb3,ab3]@6 [bb2,f3,bb3]@3 ~ [ab2,eb3,ab3]@4 eb2@8 eb2@2 bb2@3 ~ bb2@3 ~, ~@7 [bb2,eb3]@5 ~@4]/2", // Ab5 Bb5 Ab5 Eb5
  N: "[[eb2,bb2,eb3]@4 g2@2 eb3 ~ [bb2,f3,bb3]@6 ab2@4 ab2@2 c3@2 ~@2 eb2@4 ~@2 eb3@2, ~@14 [eb3,ab3]@7 ~ eb3@8 ~@2, ~@24 bb2@7 ~, ~@7 eb2]/2", // Eb5 Bb5 Ab5
  O: "[[ab2,eb3,ab3]@6 ab2@4 ab2@2 c3@2 eb2@12 eb2@2 g2@2 ~@2 eb2@8 [bb2,f3]@5 ~ [ab2,eb3] ~, ~@6 [eb3,ab3]@7 ~ [bb2,eb3]@14 ~@2 bb2@10 ~@8]/3", // Ab5 Bb5 Ab5 Eb5
  P: "[~@2 [ab2,eb3]@4 [ab2,eb3]@2 c3@2 eb3@2 gb2 g2 ~@2 eb2@8 [bb2,f3]@6 [ab2,eb3] ~, ~@7 eb3@5 ~@4]/2", // Ab5 Bb5 Ab5
  Q: "~@2 [ab2,eb3]@4 [ab2,eb3]@2 c3@2 eb3@2 gb2 g2 eb3@2", // Ab5
  R: "[eb2,bb2,eb3]@4 [bb2,eb3,g3] ~@3 [bb2,f3,bb3]@5 ~ [ab2,eb3,ab3] ~", // Eb5 Eb Bb5 Ab5
  S: "[~@2 ab2@4 ab2@4 ab2@2 c3@2 ~@2 [eb2,bb2]@4 [bb2,eb3,g3] ~@3 [bb2,f3,bb3]@5 ~ [ab2,eb3,ab3]@2, ~@2 [eb3,ab3]@11 ~ eb3@6 ~@12]/2", // Eb5 Eb Bb5 Ab5
  T: "[~@2 ab2@4 ab2@2 c3@2 eb3@2 c3@2 ~@2 [eb2,bb2]@4 [bb2,eb3,g3] ~@3 [bb2,f3,bb3]@5 ~ [ab2,eb3,ab3] ~, ~ [eb3,ab3]@3 ~@3 eb3@3 ~@6]/2", // Eb5 Eb Bb5 Ab5
  U: "~ ab2@4 ab2 c3 eb3, ~ [eb3,ab3]@5 ~@2", // Ab5
  V: "[[eb2,bb2,eb3]@4 [bb2,eb3,g3] ~@3 [bb2,f3,bb3]@5 ~ [ab2,eb3,ab3]@4 [ab2,eb3]@4 [ab2,eb3]@2 [ab2,eb3]@2 [ab2,eb3]@2 [ab2,eb3]@2 [ab2,eb3]@2, ~@9 ab3@7]/2", // Eb5 Eb Bb5 Ab5
  W: "[[eb2,bb2,eb3]@4 [bb2,eb3,g3] ~@3 [bb2,f3,bb3]@6 [ab2,eb3]@4 [ab2,eb3]@4 ab2@4 ab2@2 c3@2 ~@2 [eb2,bb2]@4 [bb2,eb3,g3] ~@3 [bb2,f3,bb3]@6 [ab2,eb3,ab3]@4 [ab2,eb3]@4 [ab2,eb3]@2 [ab2,eb3]@2 [ab2,eb3]@2 [ab2,eb3]@4, ~@14 ab3@15 ~@21 ab3@14, ~@22 eb3@7 ~ eb3@6 ~@28]/4", // Eb5 Eb Bb5 Ab5 Eb5 Eb Bb5 Ab5
  X: "[[eb2,bb2,eb3]@4 [bb2,eb3,g3]@2 ~@2 [bb2,f3,bb3]@6 [ab2,eb3,ab3]@4 [ab2,eb3,ab3]@4 ab2@4 ab2@2 c3@2 ~@2 [eb2,bb2]@4 [bb2,eb3,g3] ~@3 [bb2,f3,bb3]@6 [ab2,eb3,ab3]@4 [ab2,eb3,ab3]@4 [ab2,eb3]@4 [ab2,eb3]@2 [ab2,eb3]@2 [ab2,eb3] ~, ~@22 [eb3,ab3]@7 ~ eb3@6 ~@18 ab3@9 ~]/4", // Eb5 Eb Bb5 Ab5 Eb5 Eb Bb5 Ab5
  Y: "[bb2,f3,bb3]@3 [bb2,f3,bb3] [bb2,f3,bb3]@4", Z: "[ab2,eb3]@3 [ab2,eb3] [ab2,eb3]@2 [ab2,eb3]!2, ab3",
  AA: "[~@4 [eb2,bb2,eb3]@6 [bb2,f3,bb3] ~@3 [ab2,eb3,ab3]@8 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2]/2", // Eb5 Bb5 Ab5
  AB: "[bb2,f3,bb3] ~@3 [bb2,f3,bb3]@6 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2", // Bb5
  AC: "[ab2,eb3]@3 [ab2,eb3] [ab2,eb3,ab3]@2 [ab2,eb3,ab3]!2, ab3 ~", // Ab5
  AD: "[~@4 [eb2,bb2,eb3]@5 ~ [bb2,f3,bb3]@2 ~@2 [ab2,eb3,ab3]@8 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2]/2", // Eb5 Bb5 Ab5
  AE: "[~@4 [eb2,bb2,eb3]@6 [bb2,f3,bb3] ~@3 [ab2,eb3,ab3]@8 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3] ~]/2", // Eb5 Bb5 Ab5
  AF: "[eb2@4 g2@2 bb2 ~ [bb2,f3]@6 [ab2,eb3]@4 [ab2,eb3]@2 c3@2 eb3@2 [eb2,bb2]@7 ~]/2", // Bb5 Ab5 Eb5
  AG: "[ab2,eb3]@6 [bb2,f3]@3 ~ [ab2,eb3]@4 [eb2,bb2] ~", AH: "[eb2,bb2]@3 [eb2,bb2] c3 eb3 c3 bb2",
  AI: "[~@6 bb2@2 [bb2,f3]@5 ~ [ab2,eb3]@4 [ab2,eb3]@2 c3@2 ~@2 [eb2,bb2]@8, eb2 ~@3, ~@2 g2@2 ~@7 eb3@5]/2", // Bb5 Ab5 Eb5
  AJ: "[ab2,eb3]@5 ~ [ab2,eb3]@2 ~@2 [ab2,eb3]@4 [ab2,eb3]@2", AK: "f3@6 eb3@2 f3@4 eb3@2 bb2 ~",
  AL: "eb2@4 g2@2 bb2 ~ [bb2,f3]@6 [ab2,eb3]@2", AM: "~@2 [ab2,eb3]@2 c3@2 eb3@2 [eb2,bb2]@7 ~",
  AN: "[ab2,eb3]@5 ~ [bb2,f3]@2 ~@2 [ab2,eb3]@2 ~@2 [eb2,bb2] ~", AO: "eb2@3 eb2 bb2@4, bb2 ~",
  AP: "[eb2@4 g2@2 bb2 ~ [bb2,f3]@6 [ab2,eb3]@4 [ab2,eb3]@2 c3@2 ~@2 [eb2,bb2]@7 ~, ~@22 eb3@9 ~]/2", // Bb5 Ab5 Eb5
  AQ: "[[ab2,eb3]@2 [ab2,eb3]@4 [ab2,eb3]@4 [ab2,eb3]@3 ~ [eb2,bb2]@6 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2]/2", // Ab5 Eb5
  AR: "[eb2@4 g2@2 bb2 ~ [bb2,f3]@6 [ab2,eb3]@4 [ab2,eb3]@2 c3@2 ~@2 eb2@4 f2@2 g2 ~, ~@22 eb3@7 ~@3]/2", // Bb5 Ab5
  AS: "ab2@6 [bb2,f3]@2 ~@2 [ab2,eb3]@4 [eb2,bb2] ~", AT: "[eb2,bb2]@3 [eb2,bb2] bb2@4",
  AU: "[eb2@3 ~ g2@2 bb2 ~ [bb2,f3]@6 [ab2,eb3]@4 [ab2,eb3]@2 c3@2 ~@2 eb2@7 ~, ~@22 eb3@9 ~]/2", // Bb5 Ab5
  AV: "[ab2,eb3] [ab2,eb3]@2 [ab2,eb3]@2 [ab2,eb3]@2 [ab2,eb3]", AW: "[eb2,bb2]@10 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2] ~",
  AX: "[[ab2,eb3]@3 [bb2,f3]@2 [ab2,eb3]@2 ~ [eb2,bb2]@4 bb2@4, ~@7 eb3@5 ~@4]/2", // Ab5 Bb5 Ab5 Eb5
  AY: "[eb2@4 ~@2 bb2@2 [bb2,f3]@6 [ab2,eb3]@4 [ab2,eb3]@2 c3@2 ~@2 eb2@7 ~, ~@4 g2@4 ~@14 eb3@9 ~]/2", // Bb5 Ab5
  AZ: "[ab2,eb3]@6 [ab2,eb3]@4 [ab2,eb3]@4 [eb2,bb2] ~", BA: "[eb2,bb2]!8",
  BB: "[[eb2,bb2]@4 g2@2 bb2 ~ [bb2,f3]@6 [ab2,eb3]@4 [ab2,eb3]@2 c3@2 ~@2 eb2@7 ~, ~@22 eb3@9 ~]/2", // Eb5 Bb5 Ab5
  BC: "[[ab2,eb3]@6 [bb2,f3]@4 [ab2,eb3]@3 ~ [eb2,bb2]@8 [eb2,bb2]@2 g2@2 eb2 ~ g2@2 eb2 ~]/2", // Ab5 Bb5 Ab5 Eb5
  BD: "[~@6 bb2@2 [bb2,f3]@6 [ab2,eb3]@4 [ab2,eb3]@2 c3@2 ~@2 [eb2,bb2]@6 eb2 ~, eb2 ~@3, ~@4 g2@4 ~@14 eb3@9 ~]/2", // Bb5 Ab5 Eb5
  BE: "[ab2,eb3]@2 [ab2,eb3]@4 [ab2,eb3]@4 [ab2,eb3]@4 [ab2,eb3] ~", // Ab5
  BF: "[eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2] ~", // Eb5
  BG: "[[eb2,bb2]@4 g2@2 bb2 ~ [bb2,f3]@6 [ab2,eb3]@4 [ab2,eb3]@2 c3@2 ~@2 [eb2,bb2]@7 ~, ~@22 eb3@9 ~]/2", // Eb5 Bb5 Ab5 Eb5
  BH: "[[ab2,eb3]@6 [bb2,f3]@4 [ab2,eb3]@3 ~ [eb2,bb2]@6 [eb2,bb2]@2 [eb2,bb2]@2 bb2@8, ~@7 eb3@5 ~@4]/2", // Ab5 Bb5 Ab5 Eb5
  BI: "[[ab2,eb3]!2 ~ [ab2,eb3] ~ [ab2,eb3] ~ [eb2,bb2,eb3]@16 ~]/3", // Ab5 Eb5
})).s("gm_acoustic_guitar_steel").gain(0.48).pan(0.6)

// chords · acoustic guitar steel · "GUITAR AC."
const acoustic_guitar_steel_2 = note(`<
  ~@13 A@2 B@2 C@2 D@2 E@2 F G H@2 I@2 ~@7 J K@2 ~ L M@2 N O P O Q R S T U@2 V W X@2 Y@2 Z@2 AA@2 AB AC AD@2 AE@2 AF@2
  AG@2 AH@2 AI@2 AJ@2 AK@2 AL@2 AM@2 AN@2 AO@2 AP@2 AQ@2 AR@2 AS@2 AT@2 AU@2 AV@2 AW@2 AX@3 ~
>`.pickRestart({
  A: "[~@4 [eb4,g4]@4 [f3,bb3,c4,d4,f4]@5 ~ [bb3,c4,eb4]@4 ~@6 [bb3,c4,eb4]@8, eb3@4 ~@3 [eb3,ab3]@4 [eb3,ab3]@5, ~ bb3@3 ~@5 [bb3,c4,eb4]@3 ~@4]/2", // Eb Bb Cm7 Ab5 Cm7
  B: "[~@2 [eb4,g4]@2 [f3,bb3,c4,d4,f4]@3 [bb3,c4,eb4]@2 ~@6 eb4, eb3@4 ~@3 [eb3,ab3]@4 ab3@5, ~@2 bb3@6 ~@10 [bb3,c4,eb4]@6 [c4,eb4]@5 c4@3, ~@11 eb3@2 eb3@3, ~@6 bb3!2]/2", // Eb Bb Cm7 Ab5 Cm7 Cm
  C: "[~@2 [eb4,g4]@2 [f3,bb3,c4,d4,f4]@3 [bb3,c4,eb4]@2 ~@3 [bb3,c4,eb4]@4, eb3@4 ~@3 [eb3,ab3]@4 [eb3,ab3]@5, ~ bb3@3 ~@5 [bb3,c4,eb4]@3 ~@4]/2", // Eb Bb Cm7 Ab5 Cm7
  D: "[~@4 [eb4,g4]@4 [f3,bb3,c4,d4,f4]@6 [bb3,c4,eb4]@4 ~@8 eb3@5 ~, eb3@4 ~@3 eb3@4 eb3@2 ~@3, ~@2 bb3@6 ~@6 ab3@10 [ab3,bb3,c4,eb4]@7 ~, ~@9 [bb3,c4,eb4]@3 ~@4]/2", // Eb Bb Cm7 Ab Cm7
  E: "[[bb3,eb4,g4]@4 ~@2 eb3@2 [bb3,d4,f4]@4 [bb3,d4,f4]@2 [ab3,c4,eb4]@4 [ab3,c4,eb4]@4 [eb3,g3,bb3,eb4] ~ [g3,bb3,eb4]@4 ~@2 eb3@2, eb3@3 ~ bb2@3 ab2@4 ~ eb3@3 ~, ~ [bb3,eb4,g4] ~@5 [g3,bb3,eb4]]/2", // Eb Bb Ab Eb
  F: "[ab3,c4,eb4]@4 [ab3,c4,eb4]@2 [bb2,bb3,d4,f4]@3 ~ [ab2,ab3,c4,eb4]@4 [eb3,g3,bb3,eb4] ~, ab2@3 ~@5", // Ab Bb Ab Eb
  G: "[g3,bb3,eb4] ~ [bb3,eb4] [eb3,bb3,eb4], eb3@3 eb3@3 ~@2, ~ g3@3, ~ [bb3,eb4] f3@2", // Eb Eb5
  H: "[[bb3,eb4,g4]@2 [bb3,eb4,g4] eb3 [bb3,d4,f4]@2 [bb3,d4,f4] [ab3,c4,eb4]@2 eb4@2 [eb3,g3,bb3,eb4] [g3,bb3,eb4]@2 ~ eb3, eb3@3 ~ bb2@3 ab2@5 ~@2 [g3,bb3,eb4]@2, ~@9 [ab3,c4]@3 eb3@3 ~]/2", // Eb Bb Ab Eb Ab
  I: "[[ab2,ab3,c4,eb4]@3 [ab2,ab3,c4,eb4]@2 [ab2,ab3,c4,eb4]@2 [eb3,g3,bb3,eb4]@9]/2", // Ab Eb
  J: "~@10 f3@2 [gb3,g3] bb3 c4@2", K: "bb3/2", L: "~@10 g3@2 bb3@2 c4 ~",
  M: "[[bb3,eb4]@4 [bb3,eb4]@3 ~ [f3,bb3,d4]@6 [eb3,ab3,c4]@4 [eb3,ab3,c4]@14]/2", // Eb5 Bb Ab
  N: "~@4 [g3,bb3,eb4]@3 ~ [f3,bb3,d4]@6 [eb3,ab3,c4]@2", O: "~ [eb3,ab3,c4]@7",
  P: "~@4 [g3,bb3,eb4]@4 [f3,bb3,d4]@6 [eb3,ab3,c4] ~", Q: "~@4 [g3,bb3,eb4]@3 ~ [f3,bb3,d4]@6 [eb3,ab3,c4] ~",
  R: "~@2 [eb3,ab3,c4]@8 [f3,gb3] ~ bb3@2 g3 ~, ~@11 g3@2 ~@3", S: "[f3,bb3,f4]@15 ~", T: "[eb3,ab3,eb4]",
  U: "[~@4 [g3,bb3,eb4]@6 [f3,bb3,d4] ~@3 [eb3,ab3,c4]@17 ~]/2", V: "[f3,bb3,f4] ~@3 [f3,bb3,f4]@11 ~",
  W: "[eb3,ab3,eb4]@3 [eb3,ab3,eb4] [eb3,ab3,eb4]@4", X: "[~@4 [g3,bb3,eb4]@6 [f3,bb3,d4] ~@3 [eb3,ab3,c4]@18]/2",
  Y: "[~@4 [g3,bb3,eb4]@6 [f3,bb3,d4] ~@3 [eb3,ab3]@6 [eb3,ab3]@2 [eb3,ab3]@2 [eb3,ab3]@2 [eb3,ab3]@2 [eb3,ab3]@2 [eb3,ab3]@2, ~@7 c4@9]/2", // Eb Bb Ab5
  Z: "[[eb3,bb3,eb4,g4]@7 ~ [bb2,bb3,d4,f4]@5 ~ [ab3,c4,eb4]@4 [ab3,c4,eb4]@3 ~ [eb3,g3,bb3,eb4]@10, ~@14 ab2@7 ~@11]/2", // Eb Bb Ab Eb
  AA: "[[ab2,ab3,c4,eb4]@6 [bb2,bb3,d4,f4] ~@3 [ab2,ab3,c4,eb4]@3 ~@7 f3@4 eb3@8, ~@7 [bb3,eb4]@9, ~@7 [eb3,g3]@5 ~@4]/2", // Ab Bb Ab Eb5 Eb
  AB: "[eb3,bb3,eb4,g4]@4 [bb2,bb3,d4,f4]@3 [ab2,ab3,c4,eb4]", AC: "~@2 [ab2,ab3,c4,eb4]@3 ~ [eb3,g3,bb3,eb4]@9 ~",
  AD: "[[ab2,ab3,c4,eb4]@6 [ab2,ab3,c4,eb4]@4 [ab2,ab3,c4,eb4]@3 ~ [eb3,bb3]@4 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2, ~@14 [g3,eb4]@17 ~]/2", // Ab Eb5 Cm
  AE: "[[bb3,eb4,g4]@4 [bb3,eb4,g4]@3 ~ [bb2,bb3,d4,f4]@6 [ab3,c4,eb4]@4 [ab3,c4,eb4]@3 ~ [eb3,g3,bb3,eb4]@9 ~, [eb3,g3]@7 ~@7 ab2@7 ~@11]/2", // Eb Bb Ab Eb
  AF: "[[ab2,ab3,c4,eb4]@6 [bb2,bb3,d4,f4]@2 ~@2 [ab2,ab3,c4,eb4]@3 ~@17 bb3@2, ~@7 [eb3,eb4]@9, ~@7 bb3@6 bb3 c4@2, ~@7 g3@5 g3@4, ~@11 f3@5]/2", // Ab Bb Ab Eb
  AG: "[[bb3,eb4,g4]@4 [bb3,eb4,g4]@3 ~ [bb2,bb3,d4,f4]@6 [ab3,c4,eb4]@4 [ab3,c4,eb4]@3 ~ [eb3,g3,bb3,eb4]@10, eb3@8 ~@6 ab2@7 ~@11]/2", // Eb Bb Ab Eb
  AH: "[[ab3,c4,eb4]@2 [ab3,c4,eb4]@4 [ab3,c4,eb4]@4 [ab3,c4,eb4]@3 ~ [eb3,bb3]@4 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@4, ab2@7 [g3,eb4]@9]/2", // Ab Eb5 Cm
  AI: "[~@4 [bb3,eb4,g4]@2 [eb3,g3] ~ [d4,f4,bb4]@4 [d4,f4,bb4]@2 [c4,eb4,ab4]@4 [c4,eb4,ab4]@2 ab3 ~ bb3@4 ~@4 g4@2, [bb3,eb4,g4]@2 ~@5 ab3@3 ~ g3@5, ~ [eb3,g3]@2 ~@8 g4@4 ~, ~@11 eb4@3 eb4@2, ~@13 bb3@3]/2", // Eb Bb Ab Eb
  AJ: "[[ab3,c4,eb4,ab4]@5 ~ [bb3,d4,f4,bb4]@2 ~@2 [ab3,c4,eb4,ab4]@3 ~ [bb3,eb4,g4]@4 ~@12 eb4@2, ~@14 g3@15 c4@3, ~@9 g4@7, ~@9 bb3@3 eb4@2 bb3@2, ~@9 eb4 f4@6]/2", // Ab Bb Ab Eb
  AK: "[[eb4,g4]@4 [bb3,eb4,g4]@4 [d4,f4,bb4]@4 [d4,f4,bb4]@2 [c4,eb4,ab4]@4 [c4,eb4,ab4]@4 [g3,bb3,eb4,g4]@9 ~, g3@4 ~@3 ab3@4 ~@5, bb3 ~@7 bb3@6 ~@18]/2", // Eb Bb Ab Eb
  AL: "[[c4,eb4,ab4]@2 [c4,eb4,ab4]@4 [c4,eb4,ab4]@4 [c4,eb4,ab4]@3 ~ bb3@4 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2, ab3@6 ab3@7 ~ [g3,eb4,g4]@17 ~]/2", // Ab Eb5 Cm
  AM: "[[g3,bb3,eb4]@4 [g3,bb3,eb4]@4 [bb2,bb3,d4,f4]@6 [ab3,c4,eb4]@4 [ab3,c4,eb4]@3 ~ [eb3,g3,bb3,eb4]@10, eb3@7 ~@7 ab2@7 ~@11]/2", // Eb Bb Ab Eb
  AN: "[[ab2,ab3,c4,eb4]@5 ~ [bb2,bb3,d4,f4]@2 ~@2 [ab2,ab3,c4,eb4]@3 ~ [eb3,g3,bb3,eb4]@6 f3 g3 bb3 ~ g3 bb3 c4 ~ g3 bb3 c4 ~]/2", // Ab Bb Ab Eb
  AO: "[[g3,bb3,eb4]@4 [g3,bb3,eb4]@3 ~ [bb2,bb3,d4,f4]@6 [ab3,c4,eb4]@4 [ab3,c4,eb4]@3 ~ [eb3,g3,bb3,eb4]@9 ~, eb3@8 ~@6 ab2@7 ~@11]/2", // Eb Bb Ab Eb
  AP: "[[ab3,c4,eb4]@4 [ab3,c4,eb4]@2 [ab3,c4,eb4]@4 [ab3,c4,eb4]@3 ~@9 c4 ~ c4 eb4 f4 ~ g4@2 f4@2, ab2@13 ~ eb3@15 ~@3, ~@7 [g3,bb3,eb4]@5 ~@4]/2", // Ab Eb
  AQ: "[[bb3,eb4,g4]@2 [bb3,eb4,g4]@2 [bb3,d4,f4]@2 [bb3,d4,f4] [ab3,c4,eb4]@2 [ab3,c4,eb4]@2 [eb3,g3,bb3,eb4]@5, eb3@4 [bb2,f3]@3 [ab2,eb3]@4 ~@5]/2", // Eb Bb Ab Eb Bb5 Ab5
  AR: "[[ab2,eb3,ab3,c4,eb4]@6 [bb2,f3,bb3,d4,f4]@3 ~ [ab2,eb3,ab3,c4,eb4]@3 ~ [eb3,bb3]@4 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]@2, ~@7 [g3,eb4]@9]/2", // Ab Bb Ab Eb5 Cm
  AS: "[[g3,bb3,eb4]@4 [g3,bb3,eb4]@3 ~ [bb2,f3,bb3,d4]@6 [eb3,ab3,c4]@4 [eb3,ab3,c4]@4 [eb3,g3,bb3,eb4]@9 ~, eb3@7 ~@7 ab2@8 ~@10]/2", // Eb Bb Ab Eb
  AT: "[[ab3,c4,eb4]@2 [ab3,c4,eb4]@4 [ab2,ab3,c4,eb4]@4 [ab2,ab3,c4,eb4]@3 ~ [eb3,g3,bb3,eb4]@6 c4 eb4 f4@2 c4 eb4 f4@2 c4 eb4 f4 g4, ab2@3 ~@13]/2", // Ab Eb
  AU: "[[bb3,eb4,g4]@4 ~@2 eb3@2 [bb3,d4,f4]@4 [bb3,d4,f4]@2 [ab3,c4,eb4]@4 [ab3,c4,eb4]@3 ~ [eb3,g3,bb3,eb4]@10, eb3@6 ~@2 bb2@6 ab2@7 ~@11, ~ [bb3,eb4,g4] ~@6]/2", // Eb Bb Ab Eb
  AV: "[[ab2,ab3,c4,eb4]@5 ~ [bb2,bb3,d4,f4]@3 ~ [ab2,ab3,c4,eb4]@3 ~ [g3,bb3,eb4]@4 [ab3,f4] ~ [bb3,g4]@3 ~ [bb3,g4]@8, ~@7 eb3@9]/2", // Ab Bb Ab Eb Db Eb
  AW: "[[bb3,eb4,g4]@4 [bb3,eb4,g4]@3 ~ [bb3,d4,f4]@4 [bb3,d4,f4]@2 [ab3,c4,eb4]@4 [ab3,c4,eb4]@3 ~ [eb3,g3,bb3,eb4]@9 ~, eb3@7 ~ bb2@6 ab2@7 ~@11]/2", // Eb Bb Ab Eb
  AX: "[[ab3,c4,eb4,ab4]@2 [ab3,c4,eb4,ab4]@2 ~@2 [ab3,c4,eb4,ab4]@3 ~ [ab3,c4,eb4,bb4]@3 ~ [eb3,bb3,eb4,g4]@32 ~@2]/3", // Ab Eb
})).s("gm_acoustic_guitar_steel").gain(0.29)

// other · overdriven guitar · "GUITAR DIST"
const overdriven_guitar = note("<~@74 A B@4 C@2 D E ~@26>".pickRestart({
  A: "~@12 c4@2 bb3 ~",
  B: "[bb3@2 bb4@11 ~ bb4@4 eb5@2 ab4@2 eb5@2 g4@2 eb4@2 f4@2 eb4@6 g4@3 ~ f4@2 eb4@2 c4@2 eb4@4 f3@2 eb3@2 c3@2 eb3@2 c3@2 eb3@2 c3@2]/4",
  C: "[g3@4 bb3@4 f3@6 g3@4 bb3@2 c4@2 eb4@2 ~ eb4 c4@2 eb4@2 f4 gb4, ~@12 f4 ~@3]/2",
  D: "~ bb4!2 eb5 f4 eb4 c4 f4, g4@3 ~@5", E: "eb4@7 ~",
})).s("gm_overdriven_guitar").gain(0.59)

// other · distortion guitar · "GUITAR DIST"
const distortion_guitar = note("<~@82 A@2 B C D E@3 F G@2 H I J@4 K L@2 M N@2 O@4>".pickRestart({
  A: "[~@5 g4@2 bb4@5 bb5!2 bb5@2]/2", B: "g5 ~ g5@6 eb5@6 g5@2",
  C: "eb5 bb4 eb4 f4 g4 ab4 bb4 c5 bb4@3 f4 [gb4,g4]@2 bb4@2", D: "f4@2 eb4@2 f4@2 eb4@8 bb4 c5",
  E: "[bb4@2 bb4@2 f4@2 eb4@2 f4@10 eb4@12 [ab4,eb5]@4 g4@2 f4@2 eb4@2 g4@2 bb4@3 ~ bb4 c5, eb5@5 ~@43]/3", // Ab5
  F: "f4@2 eb4@2 f4 eb4 c4 eb4@7 f4 [gb4,g4]", // Gmaj7
  G: "[bb4@6 c5@2 f4@2 eb4@8 f4 eb4 f4 eb4 c4 bb3 g3 c4 bb3 g3 ~ eb3 ~@2, ~@14 f3 ~]/2",
  H: "~@6 f4 g4 f4 g4 bb4 c5 bb4 c5 eb5 c5", I: "eb5 f5@3 c5@3 g5@2 bb5 g5@2 ~ bb5 ~ bb5, ~@4 eb5 ~@9 g5@2",
  J: "[g5@2 bb5 g5@2 bb5 g5@2 bb5 g5@2 bb5 f5@2 eb5@4 c5 eb5 f5 g5 bb5 c6 eb6 eb6@9 f6 eb6 c6 bb5 g5 c6 bb5 g5 f5 eb5 c5 f5@5 eb5 f5 eb5 c5 bb4 g4 c5 bb4 g4 f4 eb4@2 ~@2]/4",
  K: "~@4 bb5@2 eb6 ab5@2 eb6 g5@2 eb6 f5@2 eb6", L: "[f5@2 eb5@4 f5 c5 eb5@10 [gb5,g5] eb6 ab5 eb6 a5 eb6 bb5@7 ~]/2",
  M: "bb5",
  N: "[g5@2 bb5 g5@2 bb5 g5@3 c6 bb5 g5 f5 eb5 [c5,f5] eb5@2 f5 eb5 c5 bb4 g4 c5 bb4 g4 f4 eb4 c4 f4 eb4 c4 bb3]/2", // F5
  O: "[g4@3 eb4@2 f3@2 eb3@18 ~@7, eb4 ~@63]/4",
})).s("gm_distortion_guitar").gain(0.29)

// chords · electric guitar clean · "GUITAR ELEC."
const electric_guitar_clean = note(`<
  ~@21 A@2 B@2 C@2 D@3 ~@2 E@3 ~@6 F@2 G H@2 I@2 J K L M@2 N O P@2 Q@2 R@2 S@3 T U@2 V@2 W@2 X@2 Y@2 X@2 Z@2 AA@2 AB@2
  AC@2 AD@2 AA@2 AE@2 AF@2 AG@2 AH@2 AI@2 AJ@2 AK@2 AL@2 AM@4
>`.pickRestart({
  A: "[[eb2,bb2]@4 [bb2,f3]@3 [ab2,eb3]@4 [eb2,bb2]@5]/2", B: "[[ab2,eb3]@5 ~ [bb2,f3]@4 [ab2,eb3]@4 [eb2,bb2]@17 ~]/2",
  C: "[[eb2,bb2]@8 [bb2,f3]@5 ~ [ab2,eb3]@4 [ab2,eb3]@4 [eb2,bb2]@9 ~]/2", // Eb5 Bb5 Ab5 Eb5
  D: "[[ab2,eb3] eb3@2 [ab2,eb3]@2 [ab2,eb3]@2 [eb2,bb2]@16 ~]/3", E: "[~@7 bb5@11 ~@6, ~ f6@5 ~@2, ~@5 eb6@13 ~@6]/3",
  F: "[~@3 eb4 ~@2 bb3 eb4@7 g3@2, eb3 ~@3, ~ bb3@3 ~ d4@2 ~@9, ~@2 g4@2 f4@3 ~@9]/2", G: "eb4@7 ~",
  H: "[~@4 ab4@2 ~@2 f4@2 ~@2 f4@2 eb4@11 ~@7]/2", I: "[~@12 g4@17 ~ [g4,bb4]@2]/2",
  J: "~@2 [eb4,g4]@2 ~@2 [c4,eb4] ~@3 [bb3,eb4] ~@3 [bb3,c4]@2", K: "[f3,bb3]@15 ~",
  L: "[ab3,eb4]@6 [ab3,eb4] ~ [ab3,eb4]@8", // Ab5
  M: "[~@4 [eb2,bb2,eb3]@6 [bb2,f3,bb3] ~@3 [ab2,eb3]@6 ~@2 [ab2,eb3]@2 eb3@2 ~@2 eb3@2 [ab2,eb3]@2, ~@14 ab3@17 ~]/2", // Eb5 Bb5 Ab5
  N: "[bb2,f3,bb3]@15 ~", O: "[ab2,eb3,ab3]",
  P: "[~@4 [eb2,bb2,eb3]@6 [bb2,f3,bb3] ~@3 [ab2,eb3]@4 eb3@2 [ab2,eb3]@2 ~@6 ab2@2 [ab2,eb3]@2, ~@7 ab3@9]/2", // Eb5 Bb5 Ab5
  Q: "[~@4 [eb2,bb2,eb3]@6 [bb2,f3,bb3] ~@3 [ab2,eb3]@4 [ab2,eb3]@2 eb3@2 eb3@2 [ab2,eb3]@2 [ab2,eb3]@2 [ab2,eb3]@2 [ab2,eb3]@2, ~@7 ab3@9]/2", // Eb5 Bb5 Ab5
  R: "[[eb2,bb2,eb3]@8 [bb2,f3,bb3]@6 [ab2,eb3,ab3]@4 [ab2,eb3,ab3]@4 [eb2,bb2,eb3]@9 ~]/2", // Eb5 Bb5 Ab5 Eb5
  S: "[[ab2,eb3,ab3]@6 [bb2,f3,bb3]@2 ~@2 [ab2,eb3,ab3]@3 ~ [eb2,bb2,eb3]@10 c3@2 eb3 ~ f3@2 ~@2 [eb2,bb2]@8 [bb2,f3,bb3]@6 [ab2,eb3,ab3]@2, ~@15 eb3@5 ~@4]/3", // Ab5 Bb5 Ab5 Eb5 Bb5 Ab5
  T: "~@2 [ab2,eb3,ab3]@4 [eb2,bb2,eb3]@9 ~", // Ab5 Eb5
  U: "[[ab2,eb3,ab3]@6 [ab2,eb3,ab3] ~@3 [ab2,eb3,ab3]@4 [eb2,bb2]@6 bb2@2 bb2@2 [eb2,bb2]@2 bb2@2 bb2@2 [eb2,bb2]@2, ~@14 eb3@17 ~]/2", // Ab5 Eb5
  V: "[[eb2,bb2,eb3]@8 [bb2,f3,bb3]@6 [ab2,eb3,ab3]@4 [ab2,eb3,ab3]@4 ~@2 eb2@7 ~, ~@22 [bb2,eb3]@9 ~]/2", // Eb5 Bb5 Ab5 Eb5
  W: "[[ab2,eb3,ab3]@3 [bb2,f3,bb3]@2 [ab2,eb3,ab3]@2 ~ eb2@3 [eb2,eb3] [eb2,bb2]!3 [eb2,bb2,eb3], ~@7 [bb2,eb3]@4 ~@5]/2", // Ab5 Bb5 Ab5 Eb Eb5
  X: "[[eb2,bb2,eb3]@8 [bb2,f3,bb3]@6 [ab2,eb3]@4 [ab2,eb3]@4 ~@2 eb2@7 ~, ~@14 ab3@8 [bb2,eb3]@9 ~]/2", // Eb5 Bb5 Ab5 Eb5
// … 313 more lines