Strudelify

Yes Sir I Can Boogie

Baccara

KeyB minorTempo118 bpm
0:00/0:00
// Yes Sir I Can Boogie — Baccara
// 118 bpm, 4/4, key B minor. Source: 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 137 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(118/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 · electric bass finger
const bass = note(`<
  A@5 B@5 C D E@3 F G H I J K@4 L M N O@4 P@6 Q R@2 S T U@2 V W X Y Z AA@3 AB AC@3 AD AE@4 AF AG@6 AH@2 AI AJ AK AL AM
  AN AO AP AQ AR@3 AS AT AU AV AW@7 AX@3 AY AZ BA BB BC BD BE BF BG BH BI BJ BK@3 BL BM BN BO BP BQ@4 BR@2 BS@5 BT@2 BU
  BV AK BW@3 BX BY
>`.pickRestart({
  A: "[~@12 f#2@37 f#1@18 c#2@19 b1@36 ~@2 f#1@36]/5",
  B: "[~ b1@18 ~ a1@19 g#1@18 e1@19 a1@39 a2@36 ~@3 a1 ~@2 d2@2 ~]/5",
  C: "~ d2@8 ~@2 a1 ~ d2@2 ~@2 d2@8 ~@2 a1 ~ d2@2 ~", D: "~ d2@8 ~@3 a1 ~ d2@2 ~@2 d2@8 ~@2 a1 ~ d2@2",
  E: "[~@2 d2@8 ~@2 a1 ~ d2@2 ~@2 d2@8 ~@3 c#2 ~ f#2@2 ~@2 f#2@8 ~@2 c#2 ~ f#2@2 ~@2 f#2@4 c#2@6 f#1 ~ b1@2 ~@2 b1@8 ~@2 f#1 ~@2 b1@8 a1@8]/3",
  F: "g#1@3 f#1 e1@3 e1", G: "a1@2 ~@2 a1@8 ~@2 a1 ~ a1@2 ~@2 a1@8 ~@2 a1 ~",
  H: "f#1@2 ~@2 f#1@8 ~@2 f#1 ~ f#1@2 ~@2 f#1@4 c#2@6 f#1 ~", I: "b1@2 ~@2 b1@8 ~@2 f#1 ~ b1@2 ~@2 b1@8 ~@2 f#1 ~",
  J: "b1@2 ~@2 b1@8 ~@2 f#1 ~ b1@4 f#2@4 c2@4 c#2@4",
  K: "[d2@2 ~@2 d2@8 ~ a1 ~ d2@2 ~@2 d2@8 ~@2 c#2 ~ f#2@2 ~@2 f#2@8 ~@2 c#2 ~ f#2@2 ~@2 f#2@4 c#2@5 ~ f#1 ~ b1@2 ~ b1@8 ~@2 f#1 ~ b1@8 a1@8 g#1@8 f#1@7 ~ e1@12 e1@3 a1@2 ~]/4",
  L: "~ a1@8 ~@2 a1 ~ a1@2 ~@2 a1@8 e2@3 ~ a1@2 ~", M: "~ a1@8 ~@2 a1 ~ a1@2 ~@2 a1@4 e2@6 ~ d2@2 ~@2",
  N: "d2@8 ~@2 d2 ~ d2@2 ~@2 d2@10 ~@2 f#2@2 ~@2",
  O: "[f#2@8 ~@2 f#2 ~ f#2@7 c#2@8 d2@2 ~@2 d2@8 ~@2 a1 ~ d2@2 ~@2 d2@8 ~@2 c#2 ~ f#2@2 ~@2 f#2@8 ~@2 c#2 ~ f#2@2 ~ f#2@4 c#2@5 ~ f#1 ~ b1@2 ~@2 b1@8 ~@2 f#1 ~ b1@8 a1@8 g#1@6]/4",
  P: "[~@2 f#1@7 e1@12 e1@4 a1@2 ~@2 a1@8 ~@2 a1 ~ a1@2 ~@2 a1@8 e2@3 ~ a1@2 ~@2 a1@8 ~ a1 ~ a1@2 ~@2 a1@4 e2@6 ~@2 b1@2 ~@2 b1@8 ~@2 f#2 ~ b2@2 ~@2 b2@10 ~@2 b1@2 ~@2 b1@8 ~ f#2 ~ b2@2 ~@2 b2@12 d2@2 ~@2 d2@8 ~@2 a2 ~ a2@4 d2@8 ~@4 f#2@2 ~ f#2@6]/6",
  Q: "~@4 f#2 ~ f#2@2 ~@2 f#2@4 c#2@7 ~ g1@2 ~@2 g1@6",
  R: "[~@4 g2 ~ g2@2 ~@2 g2@8 d2@3 g1@2 ~@2 g1@10 ~@2 g1@4 a1@4 b1@4 c#2@4 d2@2 ~@2 d2@7]/2",
  S: "~@3 a1 ~ d2@2 ~@2 d2@8 ~@3 f#2@2 ~@2 f#2@8", T: "~@2 f#2 ~ f#2@2 ~@2 f#2@4 c#2@5 ~ f#1 ~ b1@2 ~@2 b1@8",
  U: "[f#1@3 ~ b1@2 ~@2 b1@7 f#1@3 ~ b1@2 ~@2 b1@8 f#1@3 ~ b1@3 ~ f#2@3 ~ c#2@3 ~ f#2@3 ~ d2@2 ~@2 d2@8 ~]/2",
  V: "~ a2 ~ a2@3 d2@8 ~@4 f#2@2 ~@2 f#2@8 ~@2", W: "f#2 ~ f#2@2 ~@2 f#2@4 c#2@7 ~ g1@2 ~@2 g1@8 ~ g2",
  X: "~ g2@2 ~@2 g2@8 d2@4 g1@2 ~@2 g1@10 ~", Y: "~ g1@4 a1@4 b1@4 c#2@4 d2@2 ~@2 d2@8 ~ a1 ~",
  Z: "d2@2 ~@2 d2@8 ~@4 f#2@2 ~@2 f#2@8 ~@2 f#2 ~",
  AA: "[f#2@2 ~@2 f#2@4 c#2@5 ~ f#1 ~ b1@2 ~@2 b1@7 f#1@3 ~ b1@2 ~@2 b1@8 f#1@3 ~ b1@2 ~@2 b1@8 f#1@3 ~ b1@3 ~ f#2@3 ~ c#2@3 ~ f#2@3 ~ d2@2 ~ d2@8 ~@2 a1 ~ d2@2]/3",
  AB: "~@2 d2@8 ~@2 c#2 ~ f#2@2 ~@2 f#2@8 ~@2 c#2 ~ f#2@2",
  AC: "[~@2 f#2@4 c#2@5 f#1 ~ b1@2 ~@2 b1@8 ~@2 f#1 ~ b1@8 a1@8 g#1@8 f#1@7 ~ e1@11 e1@4 a1@2 ~@2 a1@8 ~@2 a1 ~ a1@2 ~@2]/3",
  AD: "a1@8 e2@3 ~ a1@2 ~@2 a1@8 ~@2 a1 ~ a1@2 ~@2",
  AE: "[a1@3 e2@6 ~@2 d2@2 ~@2 d2@8 ~@2 d2 ~ d2@2 ~@2 d2@10 ~@2 f#2@2 ~@2 f#2@8 ~@2 f#2 ~ f#2@7 c#2@8 d2@2 ~@2 d2@8 ~@2 a1 ~ d2@2 ~@2 d2@8 ~@2 c#2 ~ f#2@2 ~@2 f#2@8 ~ c#2 ~ f#2@2 ~@2 f#2@3]/4",
  AF: "~ c#2@5 ~ f#1 ~ b1@2 ~@2 b1@8 ~@2 f#1 ~ b1@7",
  AG: "[~ a1@8 g#1@8 f#1@7 e1@12 e1@4 a1@2 ~@2 a1@8 ~@2 a1 ~ a1@2 ~@2 a1@8 e2@3 ~ a1@2 ~@2 a1@8 ~ a1 ~ a1@2 ~@2 a1@4 e2@6 ~@2 b1@2 ~@2 b1@8 ~@2 f#2 ~ b2@2 ~@2 b2@10 ~@2 b1@2 ~ b1@8 ~@2 f#2 ~ b2@2 ~@2 b2@12 d2@2 ~@2 d2@8 ~@2 a2 ~ a2@4 d2@6]/6",
  AH: "[~@5 f#2@2 ~@2 f#2@8 ~@2 f#2 ~ f#2@2 ~@2 f#2@4 c#2@7 ~ g1@2 ~@2 g1@8 ~@2 g2 ~ g2@2 ~@2 g2@7]/2",
  AI: "d2@2 g1 ~ g1@5 ~ g1@2 a1@2 b1@2", AJ: "c#2@4 d2@2 ~@2 d2@8 ~@2 a1 ~ d2@2 ~@2 d2@8",
  AK: "~@3 f#2@2 ~@2 f#2@8 ~@2 f#2 ~ f#2@2 ~@2 f#2@4 c#2@5", AL: "~ f#1 ~ b1@2 ~@2 b1@8 f#1@3 ~ b1@2 ~ b1@8 f#1@2",
  AM: "~@2 b1@2 ~@2 b1@8 f#1@3 ~ b1@3 ~ f#2@3 ~ c#2@3 ~ f#2@2", AN: "~@2 d2@2 ~@2 d2@8 ~ a2 ~ a2@4 d2@8 ~@3",
  AO: "~ f#2@2 ~@2 f#2@8 ~@2 f#2 ~ f#2@2 ~@2 f#2@4 c#2@7", AP: "~ g1@2 ~@2 g1@8 ~ g2 ~ g2@2 ~@2 g2@8 d2@4",
  AQ: "g1 ~ g1@5 ~ g1@2 a1@2 b1@2 c#2@2",
  AR: "[d2@2 ~@2 d2@8 ~ a1 ~ d2@2 ~@2 d2@8 ~@4 f#2@2 ~@2 f#2@8 ~@2 f#2 ~ f#2@2 ~@2 f#2@4 c#2@5 ~ f#1 ~ b1@2 ~ b1@8 f#1@3 ~ b1@2 ~@2 b1@8 f#1@3 ~ b1@2]/3",
  AS: "~@2 b1@8 f#1@3 ~ b1@3 ~ f#2@3 ~ c#2@3 ~ f#2@3 d2@2 ~", AT: "~ d2@8 ~@2 a2 ~ a2@4 d2@8 ~@4 f#2@2 ~",
  AU: "~ f#2@8 ~@2 f#2 ~ f#2@2 ~@2 f#2@4 c#2@7 g1@2 ~@2", AV: "g1@8 ~@2 g2 ~ g2@2 ~@2 g2@8 d2@4 g1@2 ~@2",
  AW: "[g1@10 ~@2 g1@4 a1@3 b1@4 c#2@4 d2@2 ~@2 d2@8 ~@2 a1 ~ d2@2 ~@2 d2@8 ~@4 f#2@2 ~@2 f#2@8 ~@2 f#2 ~ f#2@2 ~ f#2@4 c#2@5 ~ f#1 ~ b1@2 ~@2 b1@8 f#1@3 ~ b1@2 ~@2 b1@8 f#1@3 ~ b1@2 ~@2 b1@8 f#1@3 b1@3 ~ f#2@3 ~ c#2@3 ~ f#2@3 ~ d2@2 ~@2 d2@8 ~@2 a1 ~ d2@2 ~@2 d2@8 ~@2 c#2 ~ f#2@2 ~@2 f#2@8 ~ c#2 ~ f#2@2 ~@2 f#2@4 c#2@5 ~ f#1 ~ b1@2 ~@2 b1@4]/7",
  AX: "[~@6 f#1 ~ b1@8 a1@8 g#1@7 f#1@7 ~ e1@12 e1@4 a1@2 ~@2 a1@8 ~@2 a1 ~ a1@2 ~@2 a1@8 e2@3 ~ a1@2 ~ a1@6]/3",
  AY: "~@4 a1 ~ a1@2 ~@2 a1@4 e2@6 ~@2 b1@2 ~@2 b1@6", AZ: "~@4 f#2 ~ b2@2 ~@2 b2@10 ~ b1@2 ~@2 b1@7",
  BA: "~@3 f#2 ~ b2@2 ~@2 b2@12 d2@2 ~@2 d2@7", BB: "~@3 a2 ~ a2@4 d2@8 ~@3 f#2@2 ~@2 f#2@8",
  BC: "~@2 f#2 ~ f#2@2 ~@2 f#2@4 c#2@7 ~ g1@2 ~@2 g1@8", BD: "~@2 g2 ~ g2@2 ~@2 g2@7 d2@4 g1@2 ~@2 g1@9",
  BE: "~@3 g1@4 a1@4 b1@4 c#2@4 d2@2 ~@2 d2@8 ~", BF: "~ a1 ~ d2@2 ~ d2@8 ~@4 f#2@2 ~@2 f#2@8 ~@2",
  BG: "f#2 ~ f#2@2 ~@2 f#2@4 c#2@5 ~ f#1 ~ b1@2 ~@2 b1@8 f#1@2", BH: "~ b1@2 ~@2 b1@8 f#1@3 ~ b1@2 ~@2 b1@8 f#1@3",
  BI: "~ b1@3 ~ f#2@3 ~ c#2@3 ~ f#2@3 ~ d2@2 ~@2 d2@8 ~ a2 ~", BJ: "a2@4 d2@8 ~@4 f#2@2 ~@2 f#2@8 ~@2 f#2 ~",
  BK: "[f#2@2 ~@2 f#2@4 c#2@7 ~ g1@2 ~@2 g1@8 ~ g2 ~ g2@2 ~@2 g2@8 d2@4 g1@2 ~@2 g1@10 ~@2 g1@4 a1@4 b1@4 c#2@4 d2@2 ~ d2@8 ~@2 a1 ~ d2@2]/3",
  BL: "~@2 d2@8 ~@4 f#2@2 ~@2 f#2@8 ~@2 f#2 ~ f#2@2", BM: "~@2 f#2@4 c#2@5 f#1 ~ b1@2 ~@2 b1@8 f#1@3 ~ b1@2 ~",
  BN: "~ b1@8 f#1@3 ~ b1@2 ~@2 b1@8 f#1@3 ~ b1@3", BO: "~ f#2@3 ~ c#2@3 f#2@3 ~ d2@2 ~@2 d2@8 ~@2 a2 ~ a2@4",
  BP: "d2@8 ~@4 f#2@2 ~@2 f#2@8 ~@2 f#2 ~ f#2@2 ~@2",
  BQ: "[f#2@3 c#2@7 ~ g1@2 ~@2 g1@8 ~@2 g2 ~ g2@2 ~@2 g2@8 d2@4 g1@2 ~@2 g1@10 ~@2 g1@3 a1@4 b1@4 c#2@4 d2@2 ~@2 d2@8 ~@2 a1 ~ d2@2 ~@2 d2@8 ~@4 f#2@2 ~@2 f#2@8 ~ f#2 ~ f#2@2 ~@2 f#2@3]/4",
  BR: "[~ c#2@5 ~ f#1 ~ b1@2 ~@2 b1@8 f#1@3 ~ b1@2 ~@2 b1@8 f#1@3 ~ b1@2 ~@2 b1@7 f#1@3 ~ b1@3 ~ f#2@3 ~]/2",
  BS: "[c#2@3 ~ f#2@3 ~ d2@2 ~@2 d2@8 ~@2 a2 ~ a2@4 d2@8 ~@4 f#2@2 ~@2 f#2@8 ~ f#2 ~ f#2@2 ~@2 f#2@4 c#2@7 ~ g1@2 ~@2 g1@8 ~@2 g2 ~ g2@2 ~@2 g2@8 d2@4 g1@2 ~ g1@10 ~@2 g1@4 a1@4 b1@4 c#2@4 d2@2 ~@2 d2@8 ~@2 a1 ~ d2@2 ~@2 d2@6]/5",
  BT: "[~@5 f#2@2 ~@2 f#2@8 ~@2 f#2 ~ f#2@2 ~@2 f#2@4 c#2@5 ~ f#1 ~ b1@2 ~@2 b1@8 f#1@3 ~ b1@2 ~@2 b1@7]/2",
  BU: "f#1@3 ~ b1@2 ~@2 b1@8 f#1@3 ~ b1@3 ~ f#2@3 ~ c#2@3 ~", BV: "f#2@3 ~ d2@2 ~@2 d2@8 ~@2 a2 ~ a2@4 d2@8",
  BW: "[~@3 g1@2 ~@2 g1@8 ~@2 g2 ~ g2@2 ~ g2@8 d2@4 g1@2 ~@2 g1@10 ~@2 g1@4 a1@4 b1@4 c#2@4 d2@2 ~@2 d2@8 ~ a1 ~ d2@2 ~@2 d2@8 ~@3]/3",
  BX: "~ f#2@2 ~@2 f#2@8 ~@2 f#2 ~ f#2@2 ~@2 f#2@4 c#2@5 ~ f#1", BY: "~ b1@2 ~@2 b1@7 f#1@3 ~ b1@2 ~@14",
})).s("gm_electric_bass_finger").gain(0.38)

// chords · electric guitar jazz
const electric_guitar_jazz = note("<~ A B ~@2 C@2 D@2 ~@2 E ~@125>".pickRestart({
  A: "~@17 f#5@7 ~@2 f#5@6", B: "~@4 f#5@7 ~@2 f#5@7 ~@12", C: "[~ f#5@7 ~@2 f#5@7 ~@3 f#5@7 ~@2 f#5@7 ~@28]/2",
  D: "[~@12 f#5@7 ~@3 f#5@7 ~@2 f#5@7 ~@3 f#5@7 ~@16]/2", E: "~@8 [a4,d5,f#5]!4 [a4,d5,f#5]@4",
})).s("gm_electric_guitar_jazz").gain(0.21).pan(0.7)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  A@5 B@7 ~@2 C D E F G@2 H@6 I@6 J@2 K@2 L M N O@3 P@3 Q R S@3 T@8 U V@2 W@2 X@4 Y Z ~ AA AB@2 AC AD AE AF ~ AG AH@5 AI
  ~ AJ@3 AK AL@7 AM@2 AN AO AP@4 AQ AR AS AT AU@4 AV AW AX ~ AY AZ@4 BA BB ~ BC BD@3 BE BF BG ~ BH BI BJ BK
>`.pickRestart({
  A: "[~@12 f#6@56 ~@7 [e5,f#5]@2 ~@9 b4@19 d5@37 c#5@9 ~ e5@8, ~@68 f#6@3 [c#6,d6]@2 a5@2 ~@85, ~@35 e6 b5 g5 ~@42]/5", // Esus2 Dmaj7
  B: "[~ d5@65 ~ e5@9 f#5@39 e5@41 ~ d5@62 ~@5]/7",
  C: "~@3 b3@2 b3@2 b3@2 ~@2 f#4@2 f#4@2 ~ f#4@2 ~@2 b4@2 b4@2 b4@2 ~@2 c#5@2 ~@2", D: "d5@2 d5 e5", E: "f#5", F: "a#5",
  G: "[b5@55 ~ f#6@2 [d6,e6]@2 ~@4]/2", H: "[d4@31 c#4@23 ~ e4@8 d4@55 e4@7 f#4@8 d4@23 ~ c#4@16 e4@8 c#4@7 d4@4]/6",
  I: "[~@4 f#4@8 b4@8 d5@8 a#5@12 a#5@2 b5@2 c#6@2 ~@2 f#5@2 ~ f#5@2 ~@2 e5@4 d4@31 ~ c#4@23 e4@8 d4@55 e4@8 f#4@7]/6",
  J: "[~ d4@23 ~ c#4@15 e4@8 c#4@8 b3@2 a#3@2 b3@2 c#4@2]/2",
  K: "[d4@2 c#4@2 d4@2 e4@2 f#4@2 d4@2 f#4@2 a#4@2 b4@2 f#4@2 b4@2 c#5@2 d5@2 c#5@2 ~ e5@2 f#5@2 d5@2 f#5@2 a#5@2 b5@2 f#5@2 d5@2 a#5@2 b5@2 f#5@2 e5@2 ~@2 a5@5 ~@4, ~@14 d5 ~@17]/2",
  L: "~@3 a5@2 a5@2 a5@5 ~@20", M: "~@2 a#5@2 a#5@2 a#5@5 ~@21", N: "~@25 d4@2 d4@2 d4@2 ~",
  O: "[~ g4@2 g4@2 g4@2 ~@2 b4@2 b4@2 d5@2 ~@2 e5@2 ~@2 f#5@31 a#5@31 ~ b5@4 ~@2 b5@2 b5@2 ~@2]/3",
  P: "[b5@2 ~@2 b5@3 ~@2 b5@2 b5@2 ~@2 b5@2 ~@2 b5@4 ~@2 b5@2 b5@2 ~@2 b5@2 ~@2 b5@4 ~@2 b5@2 b5@2 ~@2 b5@2 ~@2 a5@5 ~@7 a5@2 a5@2 a5@5 ~@22 a#5@2]/3",
  Q: "a#5@2 a#5@5 ~@25", R: "~@21 d4@2 d4@2 d4@2 ~@2 g4@2 g4",
  S: "[~ g4@2 ~@2 b4@2 b4@2 d5@2 ~@2 e5@2 ~@2 f#5@31 a#5@31 ~ b5@4 ~ b5@2 b5@2 ~@2 b5@2 ~@2 b5]/3",
  T: "[~@5 b5@2 b5@2 ~@2 b5@2 ~@2 b5@4 ~@2 b5@2 b5@2 ~@2 b5@2 ~@2 b5@4 ~@2 b5@2 b5@2 ~@2 b5@2 ~@2 d4@31 c#4@23 ~ e4@7 d4@55 ~ e4@7 f#4@8 d4@23 ~ c#4@16 e4@7 c#4@8 d4@8 f#4@8 b4@5]/8",
  U: "~@3 d5@8 a#5@12 a#5@2 b5@2 c#6@2 ~ f#5@2", V: "[~@2 f#5@2 ~@2 e5@4 d4@31 ~ c#4@22]/2", W: "[~ e4@8 d4@55]/2",
  X: "[e4@8 f#4@8 d4@23 ~ c#4@15 e4@8 c#4@8 b3@2 a#3@2 b3@2 c#4@2 d4@2 c#4@2 d4@2 e4@2 f#4@2 d4@2 f#4@2 a#4@2 b4@2 f#4@2 b4@2 c#5@2 ~ c#5@2 d5@2 e5@2 f#5@2 d5@2 f#5@2 a#5@2 b5@2 f#5@2 d5@2 a#5@2 b5@2, ~@103 d5@2 ~@23]/4",
  Y: "f#5@2 e5@2 ~@2 a5@5 ~@7 a5@2 a5@2 a5@5 ~@5", Z: "~@17 a#5@2 a#5@2 a#5@5 ~@6", AA: "~@4 d4!3 ~ g4!3 ~ b4!2 d5 ~",
  AB: "[e5@2 ~@2 f#5@31 a#5@29]/2", AC: "~@3 b5@4 ~@2 b5@2 b5@2 ~@2 b5@2 ~@2 b5@3 ~@2 b5@2 b5@2 ~@2 b5@2",
  AD: "~ b5@2 ~ b5!2 ~ b5 ~ b5@2 ~ b5!2 ~ b5", AE: "~@2 a5@5 ~@7 a5 a5@2 a5@5 ~@10", AF: "~@13 a#5@2 a#5@2 a#5@5 ~@10",
  AG: "~@2 d4!3 ~ g4!3 ~ b4!2 d5 ~ e5 ~",
  AH: "[f#5@31 a#5@31 ~ b5@4 ~ b5@2 b5@2 ~@2 b5@2 ~@2 b5@3 ~@3 b5@2 b5@2 ~@2 b5@2 ~@2 b5@4 ~@2 b5@2 b5@2 ~@2 b5@2 ~@2 b5@4 ~@2 b5@2 b5@2 ~@2 b5@2 ~ a5@5 ~@7 a5@2 a5@2 a5@5 ~@14]/5",
  AI: "~@9 a#5@2 a#5@2 a#5@5 ~@14",
  AJ: "[d4@2 d4@2 d4@2 ~@2 g4@2 g4@2 g4@2 ~@2 b4 b4@2 d5@2 ~@2 e5@2 ~@2 f#5@31 ~ a#5@31 b5@4 ~@2]/3",
  AK: "b5@2 b5@2 ~@2 b5@2 ~@2 b5@3 ~@3 b5@2 b5@2 ~@2 b5@2 ~@2 b5@4 ~@2",
  AL: "[b5@2 b5@2 ~@2 b5@2 ~ b5@4 ~@2 b5@2 b5@2 ~@2 b5@2 ~@2 d4@16 d5@16 c#5@23 e5@8 d5@55 e5@8 f#5@8 d5@23 ~ c#5@7 a4@8 e4@8 c#4@8 b3@2 a#3@2 b3@2 c#4@2 d4@2]/7",
  AM: "[c#4@2 d4@2 e4@2 f#4@2 d4@2 f#4@2 a#4@2 b4@2 f#4@2 ~ c#5@2 d5@2 c#5@2 d5@2 e5@2 f#5@2 d5@2 f#5@2 a#5@2 b5@2 f#5@2 d5@2 a#5@2 b5@2 f#5@2 e5@2 ~@2 a5@5 ~@6, ~@9 b4 ~@22]/2",
  AN: "~ a5@2 a5@2 a5@5 ~@22", AO: "a#5@2 a#5@2 a#5@5 ~@23",
  AP: "[~@23 d4@2 d4@2 d4@2 ~@2 g4@2 g4@2 g4@2 ~@2 b4@2 b4@2 d5@2 ~@2 e5@2 ~@2 f#5@31 a#5@31 ~ b5@4 ~@2 b5@2 b5@2 ~@2 b5@2]/4",
  AQ: "~ b5@3 ~@3 b5@2 b5@2 ~@2 b5@2 ~@2 b5@4 ~@2 b5@2 b5@2 ~@2 b5@2 ~",
  AR: "~ b5@4 ~@2 b5@2 b5@2 ~@2 b5@2 ~@2 a5@5 ~@6 a5@2 a5@2", AS: "a5@5 ~@23 a#5@2 a#5@2", AT: "a#5@5 ~@27",
  AU: "[~@19 d4@2 d4@2 d4@2 ~@2 g4@2 g4@2 g4@2 ~@2 b4@2 b4@2 d5@2 ~@2 e5@2 ~@2 f#5@31 a#5@31 b5@4 ~@2 b5@2 b5@2 ~@2 b5@2 ~@2 b5@3]/4",
  AV: "~@3 b5@2 b5@2 ~@2 b5@2 ~@2 b5@4 ~@2 b5@2 b5@2 ~@2 b5@2 ~@2 b5@3",
  AW: "~@3 b5@2 b5@2 ~ b5@2 ~@2 a5@5 ~@7 a5@2 a5@2 a5@4", AX: "~@12 a#5!2 a#5@2",
  AY: "~@15 d4@2 d4@2 d4@2 ~@2 g4@2 g4@2 g4@2 ~ b4@2",
  AZ: "[b4@2 d5@2 ~@2 e5@2 ~@2 f#5@31 ~ a#5@31 b5@4 ~@2 b5@2 b5@2 ~@2 b5@2 ~@2 b5@3 ~@3 b5@2 b5@2 ~@2 b5@2 ~@2 b5@4 ~@2 b5@2 b5@2 ~ b5@2 ~@2 b5@4 ~@2 b5@2]/4",
  BA: "b5@2 ~@2 b5@2 ~@2 a5@5 ~@7 a5@2 a5@2 a5@5 ~@3", BB: "~@19 a#5@2 a#5@2 a#5@5 ~@4",
  BC: "~@5 d4!3 ~ g4!3 ~ b4!2 d5",
  BD: "[~@2 e5@2 ~@2 f#5@31 a#5@31 ~ b5@4 ~@2 b5@2 b5@2 ~@2 b5@2 ~@2 b5@3 ~@3 b5@2 b5@2 ~]/3",
  BE: "b5 ~ b5@2 ~ b5!2 ~ b5 ~ b5@2 ~ b5!2 ~", BF: "b5@2 ~@2 a5@5 ~@7 a5@2 a5@2 a5@5 ~@7",
  BG: "~@15 a#5@2 a#5@2 a#5@5 ~@8", BH: "~@3 d4!3 ~ g4!3 ~ b4!2 d5 ~ e5", BI: "~ f#5@15", BJ: "~ a#5@31",
  BK: "~ b5@4 ~@2 b5@2 b5@2 ~ b5@2 ~@2 b5@3 ~@13",
})).s("gm_string_ensemble_1").gain(0.38).pan(0.9)

// other · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@2 A ~@16 B@2 ~@14 C ~@31 D ~@30 E ~@38>".pickRestart({
  A: "~@10 a3 ~@5, ~@6 d5 b4 f#4 [c#4,d4] ~@6, ~@13 c#5@2 [g4,a4]@2 e4@2 b3@2 ~@11", // Dmaj7 Gsus2
  B: "[~@31 d5@2 ~@31, ~@27 c#6@2 g5@2 ~@33, ~@14 [a5,b5] [e5,f#5] ~@16]/2", // Asus2 Esus2
  C: "~@11 [g4,a4] ~@4, ~@10 [c#5,d5] ~@5, ~@21 b4@2 ~@9", D: "~@5 [g4,a4]@2 ~@25, ~@3 [c#5,d5]@2 ~@27, ~@2 b4 ~@13",
  E: "~@10 [g4,a4] ~@5, ~@9 [c#5,d5] ~@6, ~@19 b4@2 ~@11", // Gsus2 Dmaj7
})).s("gm_string_ensemble_1").gain(0.21).pan(0.9)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  ~@5 A@5 ~@4 B C D E F@2 ~@2 G@6 ~@2 H I@8 J@8 K@5 ~ L@7 ~ M N@7 O@4 P@3 Q R@2 S@8 T@4 ~@2 U V@8 W@8 X@8 Y@8 Z@6 AA@3 Q
  AB
>`.pickRestart({
  A: "[~ b3@19 a3@19 g#3@18 e3@19 a3@80 ~@4]/5", B: "~@2 b3 a3", C: "g#3@3 f#3 e3@4", D: "a3", E: "f#3",
  F: "[b3@59 ~@5]/2", G: "[~@14 b3@8 a3@8 g#3@12 f#3@4 e3@15 a3@63 d3@31 ~ f#3@31 ~@5]/6", H: "~@5 b3@4 a3@4 g#3@3",
  I: "[~@6 f#3@3 e3@16 a3@63 b2@63 d3@31 ~ f#3@31 g3@42]/8", J: "[~@21 d3@31 f#3@31 ~ b3@62 ~ d3@31 f#3@31 ~ g3@46]/8",
  K: "[~@17 d3@31 f#3@31 ~ b3@62 ~@18]/5", L: "[~@29 b3@8 a3@8 g#3@12 f#3@4 e3@15 a3@63 d3@31 ~ f#3@31 ~@22]/7",
  M: "~@25 b3@7", N: "[~ a3@8 g#3@11 f#3@4 e3@16 a3@63 b2@63 d3@31 f#3@27]/7", O: "[~@5 g3@63 d3@31 f#3@29]/4",
  P: "[~@3 b3@62 ~ d3@30]/3", Q: "~ f#3@31", R: "[~ g3@63]/2", S: "[d3@31 f#3@31 ~ b3@62 d3@31 ~ f#3@31 g3@63 d3@5]/8",
  T: "[~@27 f#3@31 b3@62 ~@8]/4", U: "~ b3 a3 g#3", V: "[~@3 f#3@4 e3@16 a3@63 b2@63 d3@31 f#3@31 ~ g3@44]/8",
  W: "[~@19 d3@31 f#3@31 ~ b3@62 ~ d3@31 f#3@31 ~ g3@48]/8", X: "[~@15 d3@31 f#3@31 b3@62 ~ d3@31 ~ f#3@31 g3@53]/8",
  Y: "[~@10 d3@31 ~ f#3@31 b3@62 ~ d3@31 ~ f#3@31 g3@57]/8", Z: "[~@6 d3@31 f#3@31 ~ b3@62 ~ d3@31 f#3@29]/6",
  AA: "[~ g3@21 d3@10]/3", AB: "~ b3@27 ~@4",
})).s("gm_string_ensemble_2").gain(0.32).pan(0.2)

// other · clavinet
const clavinet = note(`<
  ~@12 A B C D E F G@2 H B I J K L G M N O P Q R S T U V W X Y Z G AA AB AC AD AE AF AG AH N AI G AJ AK AL AM AN AO G AP
  AQ AR AS AT AU AV AW AX AY AZ BA BB BC G BD N BE AZ BF N G BG BH BI AZ BJ BK BL G BM N BN BO BP BQ BR BS BT Z BU BV BW
  AC BX N BY AG BZ AE CA CB CC N CD CE CF CG CH CI N CJ CK CL CM CN CO AX CP G CQ BB CR AZ CS N CT
>`.pickRestart({
  A: "f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~@2 f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3",
  B: "~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3@3 ~ f#3 ~ f#3 ~ f#3@2 f#3 ~ f#3@3",
  C: "~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3@2 f#3 ~ f#3 ~@2 f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3@2",
  D: "e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~",
  E: "f#3@2 f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~",
  F: "f#3 ~ f#3 ~ f#3 ~ f#3@2 f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3@3 ~ f#3 ~",
  G: "f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~",
  H: "f#3 ~ f#3 ~ f#3!2 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3",
  I: "f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3@2 f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3@2 e3 ~",
  J: "e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3!2 ~ f#3@2 f#3",
  K: "~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ e3 ~ e3",
  L: "~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 e3@3 ~ e3 ~ f#3 ~ f#3 ~",
  M: "f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3!2 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3",
  N: "~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3",
  O: "~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 f#3@3 ~ f#3 ~ f#3 ~ f#3@2 f#3 ~ f#3@3 ~ f#3 ~ f#3 ~",
  P: "f#3 ~ f#3 ~ f#3@2 f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3@2 e3 ~ e3 ~ e3 ~",
  Q: "e3 ~ e3 ~ e3 ~ e3!2 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ f#3@2 f#3 ~ f#3 ~ f#3",
  R: "~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ e3 ~ e3 ~ e3 ~ e3",
  S: "~ e3!2 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3@3 ~ e3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~",
  T: "f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3!2 ~ f#3",
  U: "~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3",
  V: "~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ f#3!2 ~ f#3 ~ f#3 ~ f#3 ~",
  W: "f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~",
  X: "g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3!2 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3",
  Y: "~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3",
  Z: "~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3!2 ~ d3 ~ d3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~",
  AA: "f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3!2 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3",
  AB: "~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3",
  AC: "~ d3 ~ d3!2 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~",
  AD: "f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3!2",
  AE: "~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3",
  AF: "~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3!2 ~ d3 ~ d3 ~",
  AG: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~",
  AH: "f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3!2 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3",
  AI: "~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3!2 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~",
  AJ: "f#3@3 ~ f#3 ~ f#3 ~ f#3@2 f#3 f#3@3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3@2 f#3 ~ f#3 ~ f#3 ~ f#3",
  AK: "~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3@2 e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3",
  AL: "~ e3 ~ e3 ~ e3!2 ~ e3 ~ e3 ~ f#3@2 f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~",
  AM: "f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~",
  AN: "e3!2 ~ e3 ~ e3@3 ~ e3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3",
  AO: "~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3!2 ~ f#3 ~",
  AP: "f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3!2 ~ f#3 ~ f#3@3 ~ f#3",
  AQ: "~ f#3 ~ f#3@2 f#3 ~ f#3@3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3@2 f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3",
// … 320 more lines