Strudelify

Spring 1

Max Richter

KeyE majorTempo100 bpm
0:00/0:00
// Spring 1 — Max Richter
// 100 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Solo Violin" named as a string part, played on violin (its vibraphone patch is not one); ch 12 "Double Bass" named as a bass, played on acoustic bass (its contrabass patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5815606; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 65 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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 · violin · "Solo Violin"
const violin = note(`<
  A B C D ~@13 E F G H I J K L M N O P Q R S T U V W X Y Z AA Y AB AC AD AE W AF AG AH AI AJ AK AL AM AN AO AP AQ AN AO
  AP AR AS AT AU
>`.pickRestart({
  A: "b5@3 ~@5 b5@3 ~@5 b5@3 ~@5 b5@3 ~@5", B: "b5@3 ~@5 b5@3 ~@5 b5 ~@3 b5 ~@3 b5 ~@3 b5 ~@3",
  C: "b5 ~@3 b5 ~@3 b5 ~@3 b5 ~@3 b5 ~@3 b5 ~@3 b5 ~@3 b5 ~@3",
  D: "b5 ~@3 b5 ~@3 b5 ~@3 c#6@2 d#6@2 e6@2 d#6@2 c#6@2 b5@2 a5@2 g#5@2 f#5@2 e5@2",
  E: "e6 ~ e6 ~ e6 ~ e6 ~ e6 ~ e6 ~ e6 ~ e6 ~",
  F: "[e5,e6] ~ [e5,b5] ~ [e5,b5] ~ [e5,b5] ~ [e5,b5] ~ [e5,b5] ~ [e5,b5] ~ [e5,b5] ~", // E E5
  G: "b5@3 ~@9 e5@3 ~ e5@3 ~ e5@3 ~ e5@3 ~ e5@2 a5@2",
  H: "g#5@4 a5 g#5@2 ~ e5@2 ~@2 e5@2 ~@2 e5@2 ~@2 e5@2 ~@2 e5@2 ~@2 e5@2 ~@2, e5 ~@15",
  I: "~@2 e5 ~ e5 ~ [e5,a5] g#5 [e5,a5] g#5 a5 g#5 [f#5,a5] g#5 [e5,a5] g#5", // A5 F#m A5
  J: "[f#5,b5]@4 e5@4 b5@3 ~@5 b5@3 ~@5 b5@3 ~@5", // B5
  K: "b5@3 ~@5 b5@3 ~@5 [e5,b5]@2 ~@2 [e5,b5]@2 ~@2 [e5,b5]@2 ~@2 [e5,b5]@2 ~@2", // E5
  L: "[e5,b5] ~ [e5,b5] ~ [e5,b5] ~ [e5,b5] ~ [e5,b5] ~ [e5,b5] ~ [e5,b5] ~ [e5,b5] ~", // E5
  M: "b5 ~ b5 ~ b5 ~ [b5,c#6] d#6 [b5,e6] d#6 [b5,c#6] b5 [a5,b5] g#5 [f#5,c#6] [e5,d#6]", // Bsus2 E5 Bsus2 Asus2 F#5 Emaj7
  N: "[b5,e6]@2 d#6@2 c#6@2 b5@2 [a5,b5]@2 g#5@2 f#5@2 e5@2 b5@3 ~ b5@2 ~@2 c#6 b5@2 ~ c#6@2 b5 ~", // E5 Asus2
  O: "c#6 b5@2 ~ c#6@2 b5 ~ c#6 b5@2 ~ c#6@2 b5 ~ c#6 b5@2 ~ c#6@2 b5 ~ c#6 b5@2 ~ [c#6,e6]@2 b5 ~", // C#m
  P: "e6@3 ~ e6@2 ~@2 [e5,e6]@4 e5@2 ~@2 e5@3 ~ e5@2 ~@2 f#6 e6@2 ~@5", // E
  Q: "f#6 e6@2 ~ b5@2 ~@2 f#6 e6@2 ~ b5@2 ~@2 f#6 e6@2 ~ [e5,b5]@2 ~@6 [e5,b5]@2 ~@2", // E5
  R: "e5@2 a5@2 [g#5,a5] ~ a5@2 g#5 a5 g#5 a5 e5@2 ~@6 [e5,b5]@2 ~@6 [e5,b5]@2 ~@2, ~@5 g#5@3 ~@24", // Amaj7 E5
  S: "~@4 [e5,b5]@2 ~@2 e5@2 a5@2 [g#5,a5]@2 [g#5,a5]@2 [g#5,a5] a5 ~ a5 a5@2 g#5@2 f#5@2 ~@2 e5@2 ~@2, ~@9 g#5 ~@6", // E5 Amaj7
  T: "~@4 b5@2 ~@6 b5@2 ~@6 b5@2 ~@6 [b5,c#6] b5@2 ~", // Bsus2
  U: "~@2 a5@2 c#6 ~ a5@2 g#5 a5 g#5 a5 c#6 b5@2 ~@5 [b5,c#6] b5@2 ~@5 [b5,c#6] b5@2 ~, ~@2 g#5 ~@13, ~@5 b5@2 ~@25", // Bsus2
  V: "e6@4 [e5,b5]@2 ~@4 a5@2 [e5,g#5]@2 a5@2 g#5 a5 g#5 a5 e5@2 ~@10", // E5 E
  W: "e6@2 ~@2 [b5,e6]@2 ~@2 e6@2 ~@2 [b5,e6]@2 ~@2 e6@2 ~@2 [b5,e6]@2 ~@2 e6@2 ~@2 c#6 b5@2 ~, ~@14 e6 ~", // E5
  X: "e5@2 ~@2 c#6 b5@2 ~ e5@2 ~@2 c#6 b5@2 ~ e5@2 ~@2 c#6 b5@2 ~ e5@2 ~@2 c#6 b5@2 ~, ~@2 e5 ~@3 e5 ~@3 e5 ~@5",
  Y: "e6@3 ~ b5@2 ~@2 e6@4 [e5,b5]@2 ~@6 [e5,b5]@2 ~@6 b5@2 ~@2", // E5
  Z: "~@2 a5@2 [g#5,b5]@2 a5@2 g#5 a5 g#5 a5 b5@2 ~@6 b5@2 ~@6 [b5,c#6] b5@2 ~", // G#m Bsus2
  AA: "~@4 [b5,c#6] b5@2 ~@3 a5@2 c#6 ~ a5@2 g#5 a5 g#5 a5 c#6 b5@2 ~@5 c#6 b5@2 ~, ~@6 g#5 ~@9, ~@13 b5@2 ~@17", // Bsus2
  AB: "b5@2 a5@2 g#5@2 a5@2 g#5 a5 g#5 a5 ~@4 b5@3 ~ b5@2 ~@2 b5@3 ~ b5@2 ~@2, ~@8 b5@3 ~@21",
  AC: "b5@3 ~ b5@2 ~@2 b5@2 a5@2 g#5@2 a5@2 g#5 a5 g#5 a5 b5@2 ~@2 b5@2 ~@2 b5@2 ~@2, ~@8 b5 ~@7",
  AD: "[b5,e6] ~ [b5,e6] ~ [b5,e6] ~ [b5,e6] ~ [b5,e6] ~ [b5,e6] ~ [b5,e6] ~ [c#6,e6] d#6", // E5 C#m
  AE: "[e5,e6] d#6 [e5,c#6] b5 [e5,a5] g#5 [e5,f#5] e5 [e5,b5] ~ [e5,b5] ~ [e5,b5] ~ [e5,b5] ~", // E C#m A5 Esus2 E5
  AF: "e5@2 ~@2 c#6 b5@2 ~ e5@2 ~@2 c#6 b5@2 ~ e5@2 ~@2 c#6 b5@2 ~ e5@2 ~@2 c#6 b5@2 ~, ~@2 e5 ~@3 e5 ~@3 e5 ~@3 e5 ~",
  AG: "[e6,f#6] e6@4 ~@3 [e6,f#6] e6@3 e5@2 ~@2 f#6 e6@3 e5@2 ~@2 f#6 e6@4 ~@3", // Esus2
  AH: "[e6,f#6] e6@3 e6@2 ~@2 [e6,f#6] e6@3 e6@2 ~@2 [e6,f#6] e6@3 e6@2 ~@2 [e6,f#6] e6@3 e6@2 ~@2", // Esus2
  AI: "[e5,e6] ~ [e5,e6] ~ [e5,e6] ~ [e5,e6] ~ [e5,e6] ~ [e5,e6] ~ [e5,e6] ~ [e5,e6] ~", // E
  AJ: "e5@2 ~@2 e5@2 ~@2 e5@2 ~@2 e5@2 ~@2 e5@3 ~ e5@2 ~@2 e5@3 ~ e5@2 ~@2",
  AK: "e5@2 ~@2 a5 g#5@2 ~@5 e5@2 ~@2 e5@3 ~ e5@2 ~@2 e5@3 ~ e5@2 ~@2",
  AL: "e5 ~ [e5,a5] ~ e5 ~ e5 g#5 ~ g#5 e5 g#5 f#5 ~ e5 ~, ~@3 g#5@3 a5@3 ~@7", // A5
  AM: "b5@3 ~ e5@2 ~@2 [e5,b5]@3 ~ a5@2 g#5@2 [a5,b5]@2 g#5@2 a5@2 g#5@2 [f#5,b5]@4 e5@4", // E5 Asus2 B5
  AN: "b5@3 ~@5 b5@3 ~@5 b5@3 ~ b5@2 ~@2 b5@3 ~ b5@2 ~@2",
  AO: "b5@3 ~ b5@2 ~@2 b5@3 ~ b5@2 ~@2 b5@2 ~@2 b5@2 ~@2 b5@2 ~@2 b5@2 ~@2",
  AP: "b5 ~ b5 ~ b5 ~ [b5,c#6] d#6 [b5,e6] d#6 [b5,c#6] b5 [a5,b5] g#5 [f#5,b5] e5", // Bsus2 E5 Bsus2 Asus2 B5
  AQ: "b5@3 ~ b5@2 ~@2 b5@3 ~ c#6@2 d#6@2 [b5,e6]@2 d#6@2 c#6@2 b5@2 [a5,b5]@2 g#5@2 f#5@2 e5@2", // E5 Asus2
  AR: "f#6 e6@3 b5@2 ~@2 f#6 e6@3 c#6@2 d#6@2 [e6,f#6] ~ d#6@2 c#6@2 b5@2 f#6 ~ g#5@2 f#5@2 e5@2, b5@2 ~@6 b5@4 ~@5 e6@4 ~@3 a5@2 ~@6, ~@25 e6@4 ~@3", // Esus2
  AS: "c#6 b5@3 e6@2 ~@2 c#6 b5@3 e6@2 ~@2 c#6 b5@3 e6@2 ~@2 c#6 b5@3 e6@2 ~@2, e6 ~@3 e6 ~@3 e6 ~@3 e6 ~@3",
  AT: "[e5,e6]@3 ~ e5@2 ~@2 [e5,c#6]@2 d#6@2 [e5,e6]@2 d#6@2 [e5,c#6]@2 b5@2 [e5,a5]@2 g#5@2 [e5,f#5]@2 e5@2 e5@4", // E C#m E C#m A5 Esus2
  AU: "f#6 e6@3 b5@2 ~@2 f#6 e6@3 b5@2 ~@2 f#6 e6@3 c#6@2 d#6@2 [e6,f#6] ~ d#6@2 c#6@2 b5@2, ~@25 e6@4 ~@3", // Esus2
})).s("gm_violin").gain(0.25)

// other · violin · "Solo Violin" · soft notes
const violin_soft = note("<~@4 A B C D E F G H I J K L M ~@48>".pickRestart({
  A: "e6 ~ e6 ~ e6 ~ e6 ~ e6 ~ e6 ~ e6 ~ e6 ~", B: "e5 ~ e5 ~ e5 ~ e5 ~ e5 ~ [e5,b5] ~ e5 ~ [e5,b5] ~",
  C: "f#6 e6@3 e6@2 b5@2 f#6 e6@3 e6@2 b5@2 f#6 e6@3 e6@2 b5@2 f#6 e6@3 e6@2 b5@2",
  D: "f#6 e6@3 e6@2 b5@2 f#6 e6@3 e6@2 b5@2 [e6,f#6] ~ f#6@2 e6@2 ~@2 [e6,f#6] ~ f#6@2 e6@2 ~@2, ~@17 e6@3 ~@5 e6@3 ~@4", // Esus2
  E: "e6@2 b5@2 e6@2 ~@2 e6@2 b5@2 e6@2 ~@2 e6@2 b5@2 e6@2 ~@2 [b5,e6]@3 ~ e6@2 ~@2", // E5
  F: "[e5,b5]@3 ~ e5@2 ~@2 [e5,b5]@2 ~@2 [e5,b5]@2 ~@2 e5@2 ~@2 [e5,b5]@2 ~@2 e5@2 ~@2 [e5,b5]@2 ~@2", // E5
  G: "~@2 b5 ~ e6 b5 e6 ~ [e5,f#6] e6 f#6 ~ [e5,f#6] e6 f#6 ~", // Esus2
  H: "[e5,f#6]@2 e6@2 a5 g#5@2 ~ e6@2 ~@2 [e5,b5]@2 ~@2 e6@2 ~@2 [e5,b5]@2 ~@2 e6@2 ~@2 [e5,b5]@2 ~@2, ~@2 f#6 ~@13", // Esus2 E5
  I: "e6@2 ~@2 [e5,b5]@2 ~@2 [e5,e6]@3 ~ a5@2 g#5@2 [a5,e6]@2 g#5@2 a5@2 g#5@2 [f#5,e6]@3 ~ e5@2 ~@2", // E5 E A5 F#7
  J: "f#6 e6@4 ~@3 f#6 e6@4 ~@3 f#6 e6@4 ~@3 b5@3 ~@5, b5@3 ~@5 b5@3 ~@5 b5@3 ~@13",
  K: "b5@3 ~ b5@2 ~@2 b5@3 ~ b5@2 ~@2 b5@2 ~@2 b5@2 ~@2 b5@2 ~@2 [b5,c#6] b5@2 ~", // Bsus2
  L: "b5@2 ~@2 [b5,c#6] b5@2 ~ b5@2 ~@2 [b5,c#6] b5@2 ~ b5@2 ~@2 [b5,c#6] b5@2 ~ b5@2 ~@2 [b5,c#6] b5@2 ~", // Bsus2
  M: "e6@2 b5 ~ e6@2 [e5,c#6] d#6 e6 d#6 [e5,c#6] b5 a5 g#5 f#5 e5, b5 ~@3 b5 ~@11", // C#m
})).s("gm_violin").gain(0.15)

// other · violin · "Violin 1 A"
const violin_2 = note(`<
  ~@3 A B C D E F G H I J K L E F M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS
  AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH
>`.pickRestart({
  A: "~@10 b5 ~@3 b5 ~", B: "~@4 b5@2 ~@6 c#6 b5@2 ~@5 c#6 b5@2 ~@5 c#6 b5@2 ~",
  C: "~@4 c#6 b5@2 ~@5 c#6 b5@2 ~ e6@3 ~@5 e6@4 e5@2 ~@2", D: "~@2 d#5@2 ~@6 b5 ~@3 b5 ~",
  E: "~@4 b5@2 ~@6 b5@2 ~@4 a5@2 g#5@2 a5@2 g#5 a5 g#5 a5 ~@4", F: "~@2 b5 ~@3 b5 ~@3 b5 ~@2 a5 g#5 a5",
  G: "g#5 a5 g#5 a5 ~@16 b5@2 ~@6 b5@2 ~@2", H: "~@4 b5@4 ~@4 b5@4 ~@2 a5@2 g#5@2 a5@2 g#5 a5 g#5 a5 ~@4",
  I: "~@2 b5@2 ~@2 b5@2 ~@2 b5@2 ~ a5 g#5 a5", J: "g#5 a5 g#5 a5 ~@12 e6@2 ~@2 e6@2 ~@2 e6 ~@3 e6@2 ~@2",
  K: "e6 ~@3 e6@2 ~@2 e6@2 ~@2 e6@2 ~@2 e5@2 ~@2 e5@2 ~@2 e5@2 ~@2 e5@2 ~@2", L: "e5 ~ e5 ~ e5 ~ e5 ~@3 b5 ~@3 b5 ~",
  M: "g#5 a5 [g#5,a5] a5 g#5@2 a5@2 g#5 a5 g#5 a5 ~@6 a5@2 [g#5,b5]@2 a5@2 g#5 a5 g#5 a5 b5@2 ~@2", // Amaj7 G#m
  N: "~@2 a5@2 [g#5,b5]@2 a5@2 g#5 a5 g#5 a5 b5@2 ~@4 a5@2 g#5@2 a5@2 ~ a5 g#5 a5 ~@4, ~@12 g#5 ~@3", // G#m
  O: "~@2 a5@2 [g#5,b5]@2 a5@2 g#5 a5 g#5 a5 b5@2 ~@4 a5@2 [g#5,b5]@2 a5@2 g#5 a5 [g#5,a5] a5 g#5@2 a5@2", // G#m Amaj7
  P: "g#5@4 c#6@2 d#6@2 e6@2 d#6@2 c#6@2 b5@2 [a5,e6]@2 g#5@2 [f#5,e6]@2 e5@2 e6@2 ~@2 [e6,f#6] e6@2 ~", // A5 F#7 Esus2
  Q: "e6@2 ~@2 [e6,f#6] e6@2 ~ e6@2 ~@2 [e6,f#6] e6@2 ~ e5@2 ~@2 f#6 e6@2 ~ e5@2 ~@2 f#6 e6@2 ~, ~@10 e5 ~@3 e5 ~", // Esus2
  R: "e5@2 ~@2 f#6 e6@2 ~ e5@2 ~@2 [e5,b5]@2 ~@6 b5@2 ~@6 b5@2 ~@2, ~@2 e5 ~@13", // E5
  S: "~@4 b5@2 ~@2 f#6 e6@2 ~ c#6 b5@2 ~ f#6 e6@2 ~ c#6 b5@2 ~ b5@3 ~ c#6 b5@2 ~",
  T: "b5@4 c#6 b5@2 ~ b5@2 ~@4 d#6@2 e6@2 d#6@2 c#6@2 b5@2 [a5,e6]@2 g#5@2 [e5,f#5]@2 e5@2, ~@6 c#6 ~@9, ~@13 b5@2 ~@17", // A5 Esus2
  U: "~@4 f#6 e6@2 ~@5 f#6 e6@2 ~@5 f#6 e6@2 ~@5 f#6 e6@2 ~, ~@2 e5 ~@7 b5 ~@3 b5 ~",
  V: "b5@3 ~ b5@2 ~@2 b5@3 ~ b5@2 ~@2 b5@2 a5@2 g#5@2 a5@2 b5@3 ~@5, ~@24 g#5 ~@7",
  W: "b5@3 ~ b5@2 ~@2 b5@3 ~ b5@2 ~@6 b5@2 ~@4 a5@2 [g#5,b5]@2 a5@2", // G#m
  X: "b5@2 e6@2 b5@2 e6 b5 ~@2 [b5,e6] b5 ~@2 [b5,e6] b5", // E5
  Y: "~@4 [b5,e6]@2 b5@2 ~@4 [b5,e6]@2 b5@2 e6@2 a5@2 f#6 ~ a5@2 g#5 a5 g#5 a5 f#6 e6@2 ~, ~@10 g#5 ~@5, ~@21 e6@2 ~ e6@2 ~@6", // E5
  Z: "e6 b5 [b5,e6] ~ e6 b5 [b5,e6] ~ e6 b5 [b5,e6] ~ b5 a5 g#5 a5", // E5
  AA: "g#5 a5 g#5 a5 ~@4 b5@2 ~@2 b5@2 ~@2 e6@2 ~@2 [b5,e6]@2 ~@2 e6@2 ~@2 [b5,e6]@2 ~@2, b5@3 ~@29", // E5
  AB: "e6@2 ~@2 [b5,e6]@2 ~@2 e6@2 b5@2 e6@2 ~@2 [e5,f#6]@2 e6@2 [e5,f#6]@2 ~@2 e5@2 e6 ~ [e5,f#6]@2 ~@2, ~@24 f#6 ~@7", // E5 Esus2
  AC: "[e5,f#6] e6 [e5,f#6] ~ [e5,e6] ~ [e5,b5] ~ e6 ~ b5 ~ e6 ~ b5 ~", // Esus2 E E5
  AD: "e6@2 ~@2 b5@2 ~@2 e6@3 ~ b5@2 ~@2 e6@2 a5@2 g#5@2 a5@2 g#5 a5 g#5 a5 ~@4, ~@24 e6@3 ~@5",
  AE: "f#6 e6@3 b5@2 ~@2 f#6 e6@3 b5@2 ~@2 f#6 e6@3 b5@2 ~@4 a5@2 g#5@2 a5@2",
  AF: "g#5 a5 g#5 a5 b5@2 ~@6 b5@2 ~@6 b5@2 ~@6 [b5,c#6]@2 b5 ~", // Bsus2
  AG: "~@4 [b5,c#6] b5@2 ~@5 [b5,c#6] b5@2 ~@3 a5@2 c#6 ~ a5@2 g#5 a5 g#5 a5 c#6 b5@2 ~, ~@10 g#5 ~@5, ~@21 b5@2 ~@9", // Bsus2
  AH: "e6@3 ~ b5@2 ~@2 e6@4 [e5,b5]@2 ~@6 [e5,b5]@2 ~@4 a5@2 g#5@2 a5@2", // E5
  AI: "g#5 a5 g#5 a5 e6@2 ~@2 e6@2 ~@2 e6@2 ~@2 e6@2 ~@2 e6@2 ~@2 e6@2 ~@2 e6@2 ~@2, e6 ~@15",
  AJ: "[e5,e6] ~ [e5,e6] ~ [e5,e6] ~ [e5,e6] ~ e5 ~ e5 ~ e5 ~ e5 ~", // E
  AK: "e5@2 ~@2 e5@2 ~@2 e5@2 ~@2 e5@2 ~@2 e5@3 ~ b5@2 ~@2 e5@3 ~ b5@2 ~@2",
  AL: "e5@2 a5@2 [g#5,b5]@2 ~@6 e5@4 ~@2 a5@2 g#5@2 a5@2 g#5 a5 g#5 a5 e5@4, ~@6 b5 ~@3 e5@2 ~@4", // G#m
  AM: "~@2 [e5,b5] ~ e5 ~ [a5,b5] g#5 a5 g#5 [a5,b5] g#5 f#5 a5 [e5,g#5] a5", // E5 Asus2 E
  AN: "g#5 a5 g#5 a5 ~@4 b5@3 ~@5 b5@3 ~ b5@2 ~@2 b5@3 ~ b5@2 ~@2, b5@3 ~@29",
  AO: "b5@3 ~ b5@2 ~@2 b5@3 ~ b5@2 ~@2 b5@2 a5@2 [g#5,b5]@2 a5@2 g#5 a5 g#5 a5 b5@2 ~@2, ~@12 b5 ~@3", // G#m
  AP: "b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5 a5 [g#5,b5] a5", // G#m
  AQ: "g#5 a5 g#5 a5 b5@2 ~@2 b5@2 ~@2 c#6@2 d#6@2 e6@2 d#6@2 [c#6,e6]@2 b5@2 [a5,e6]@2 g#5@2 [f#5,e6]@2 e5@2, b5 ~@15", // C#m A5 F#7
  AR: "e6@2 ~@2 [b5,e6]@2 ~@2 e6@2 ~@2 [b5,e6]@2 ~@2 e5@2 ~@2 [e5,b5]@2 ~@2 e5@2 ~@2 c#6 b5@2 ~, ~@14 e5 ~", // E5
  AS: "e5@2 ~@2 c#6 b5@2 ~ e5@2 ~@2 c#6 b5@2 ~@5 [b5,c#6] b5@2 ~@5 [b5,c#6] b5@2 ~, ~@2 e5 ~@3 e5 ~@9", // Bsus2
  AT: "[b5,e6]@3 ~@5 c#6 b5@2 ~ e5@2 ~@2 c#6 b5@2 ~ e5@2 ~@2 c#6 b5@2 ~@5, ~@4 e6 ~@11", // E5
  AU: "~@4 [b5,c#6] b5@2 ~@5 [b5,c#6] b5@2 ~ e6@4 b5@2 ~@2 e6@4 [e5,b5]@2 ~@2", // Bsus2 E5
  AV: "~@2 a5@2 [e5,g#5]@2 a5@2 g#5 a5 g#5 a5 ~@8 b5@2 ~@6 b5@2 ~@2", // E
  AW: "~@4 b5@4 ~@2 a5@2 [g#5,b5]@2 a5@2 g#5 a5 [g#5,a5] a5 g#5@2 a5@2 g#5 a5 g#5 a5 ~@4", // G#m Amaj7
  AX: "~@4 [b5,c#6]@2 d#6@2 e6@2 d#6@2 [b5,c#6]@2 b5@2 a5@2 g#5@2 [f#5,b5]@2 e5@2 ~@2 a5@2 f#6 ~ a5@2, ~@14 g#5 ~, ~@29 e6@2 ~", // Bsus2 B5
  AY: "g#5 a5 g#5 a5 f#6 e6@2 ~@5 f#6 e6@2 ~@5 f#6 e6@2 ~@5 f#6 e6@2 ~, ~@10 b5 ~@3 b5 ~",
  AZ: "~@4 f#6 e6@2 ~@5 b5@2 ~@4 a5@2 [g#5,b5]@2 a5@2 g#5 a5 g#5 a5 b5@2 ~@2, ~@2 b5 ~@13", // G#m
  BA: "~@4 b5@2 ~@2 f#6 e6@3 b5@2 ~@2 f#6 e6@3 b5@2 ~@2 b5@2 a5@2 g#5@2 a5@2",
  BB: "g#5 a5 g#5 a5 ~@4 b5@2 ~@2 c#6@2 d#6@2 e6@2 d#6@2 [b5,c#6]@2 b5@2 a5@2 g#5@2 [f#5,b5]@2 e5@2, b5@3 ~@29", // Bsus2 B5
  BC: "~@4 f#6 e6@2 ~@5 f#6 e6@2 ~@3 a5@2 f#6 ~ a5@2 g#5 a5 g#5 a5 f#6 e6@2 ~, ~@2 b5 ~@3 b5 ~@3 g#5 ~@5, ~@21 e6@2 ~@9",
  BD: "b5@3 ~ b5@2 ~@2 b5@3 ~ b5@2 ~@2 b5@3 ~ b5@2 ~@2 b5@2 a5@2 g#5@2 a5@2",
  BE: "g#5 a5 g#5 a5 c#6@2 d#6@2 e6@2 d#6@2 c#6@2 b5@2 a5@2 g#5@2 f#5@2 e5@2 ~@4 f#6 ~ d#6@2, b5 ~@9 b5@3 ~ c#6 ~, ~@29 e6@2 ~",
  BF: "e6@2 d#6@2 f#6 ~ b5@2 a5@2 g#5@2 f#6 ~ e5@2 ~@2 a5@2 f#6 ~ a5@2 g#5 a5 g#5 a5 c#6@2 d#6@2, ~@2 c#6 ~@3 f#5 ~@3 g#5 ~@5, ~@5 e6@2 ~@6 e6@2 ~@6 e6@2 ~@9",
  BG: "e6 d#6 [b5,c#6] b5 a5 g#5 [f#5,b5] e5 f#6@2 [c#6,e6] d#6 e6 d#6 [c#6,e6] b5, ~@6 f#6 ~", // Bsus2 B5 C#m
  BH: "a5 g#5 f#5 e5 b5 ~ c#6 d#6 e6 d#6 [c#6,e6] b5 [a5,e6] g#5 [f#5,e6] e5", // C#m A5 F#7
})).s("gm_violin").gain(0.25)

// other · violin · "Violin 1 A" · soft notes
const violin_soft_2 = note("<A B@2 C ~@5 D E F G H I J K ~@48>".pickRestart({
  A: "~@18 a5@2 g#5@2 a5@2 g#5 a5 g#5 a5 ~@4",
  B: "~@2 a5@2 g#5@2 a5@2 g#5 a5 g#5 a5 ~@6 a5@2 g#5@2 a5@2 g#5 a5 g#5 a5 ~@4",
  C: "~@2 a5@2 g#5@2 a5@2 g#5 a5 g#5 a5 ~@20", D: "~@10 c#6 d#6 e6 d#6 c#6 b5",
  E: "a5@2 g#5@2 f#5@2 e5@2 ~@4 f#6 e6@2 ~@5 f#6 e6@2 ~@5 f#6 e6@2 ~",
  F: "~@4 f#6 e6@2 ~@5 f#6 e6@2 ~@5 f#6 e6@2 ~@5 b5@2 ~@2", G: "~@4 b5@2 ~@6 b5@2 ~@6 b5@2 ~@2 f#6 e6@3 ~@4",
  H: "f#6 e6@3 ~@4 b5@3 ~@5 b5@3 ~@5 b5@2 ~@2 c#6@2 d#6@2",
  I: "e6@2 d#6@2 c#6@2 b5@2 a5@2 g#5@2 f#5@2 e5@2 f#6 e6@4 ~@3 f#6 e6@4 ~@3",
  J: "f#6 e6@4 ~@3 f#6 e6@4 ~@3 b5@3 ~@5 b5@3 ~@5", K: "b5@3 ~@5 b5@3 ~@5 b5@3 ~@5 b5@3 ~@5",
})).s("gm_violin").gain(0.15)

// other · tremolo strings · "Violin 1 B"
const tremolo_strings = note(`<
  ~@17 A B C D B D E F G H I F G H J F G H J F G H K L M F N G O P Q R B S T B D U F G H V C W X Y Z AA
>`.pickRestart({
  A: "a5 g#5 a5 g#5 f#5@2 e5@2 ~@2 b5 ~@3 b5 ~", B: "~@4 b5@2 ~@6 c#6 b5@2 ~@5 c#6 b5@2 ~@5 c#6 b5@2 ~",
  C: "~@4 c#6 b5@2 ~@5 c#6 b5@2 ~@5 c#6 b5@2 ~@5 c#6 b5@2 ~", D: "~@4 c#6 b5@2 ~@5 c#6 b5@2 ~ e6@3 ~@5 e6@4 e5@2 ~@2",
  E: "~@4 e5@2 ~@10 b5@3 ~@5 b5@3 ~@5", F: "b5@3 ~@5 b5@3 ~@5 b5@3 ~@5 b5@3 ~@5",
  G: "b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5 ~", H: "b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ c#6 d#6",
  I: "b5@3 ~@5 b5@3 ~@5 e6@2 d#6@2 c#6@2 b5@2 a5@2 g#5@2 f#5@2 e5@2",
  J: "e6@2 d#6@2 c#6@2 b5@2 a5@2 g#5@2 f#5@2 e5@2 b5@3 ~@5 b5@3 ~@5",
  K: "e6@2 d#6@2 c#6@2 b5@2 a5@2 g#5@2 f#5@2 e5@2 e5@3 ~@5 e5@3 ~@5",
  L: "e5@2 ~@2 a5 g#5@3 ~@4 e5@2 ~@6 e5@2 ~@6 e5@2 ~@2", M: "~@2 e5 ~ e5@2 a5 g#5 a5 g#5 a5 g#5 f#5 ~ e5 ~",
  N: "b5@3 ~@5 b5@3 ~@5 b5@2 ~@2 b5@2 ~@2 b5@2 ~@2 b5@2 ~@2", O: "b5 ~ b5 ~ b5 ~ c#6 d#6 e6 d#6 c#6 b5 a5 g#5 f#5 e5",
  P: "e5@3 ~@5 e5@3 ~@5 e5@2 ~@2 a5 g#5@2 ~@5 e5@2 ~@2", Q: "~@2 e5 ~@3 e5 ~@3 e5 ~ e5@2 a5 g#5",
  R: "a5 g#5 a5 g#5 f#5 ~ e5 ~@3 b5 ~@3 b5 ~", S: "~@4 c#6 b5@2 ~@5 c#6 b5@2 ~ e6@4 ~@4 e6@2 ~@2 e5@2 ~@2",
  T: "~@2 e5 ~@3 e5 ~@3 b5 ~@3 b5 ~", U: "~@4 e5@2 ~@6 e5@2 ~@2 b5@3 ~@5 b5@3 ~@5",
  V: "e6 d#6 c#6 b5 ~@2 b5 ~@3 b5 ~@3 b5 ~", W: "~@4 f#6 e6@2 ~@5 f#6 e6@2 ~@5 f#6 e6@2 ~@5 f#6 e6@2 ~",
  X: "~@4 e5@2 ~@2 b5@3 ~@5 b5@3 ~@5 b5@3 ~@5", Y: "b5@3 ~@5 b5@3 ~@5 b5@3 ~@5 b5@2 ~@2 b5@2 ~@2",
  Z: "c#6 d#6 e6 d#6 c#6 b5 a5 g#5 f#5 e5 b5 ~ b5 ~ b5 ~", AA: "b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ c#6 d#6 e6 d#6 c#6@2",
})).s("gm_tremolo_strings").gain(0.25)

// other · tremolo strings · "Violin 1 B" · soft notes
const tremolo_strings_soft = note("<~@2 A B C D E F G H I J H I K L M ~@48>".pickRestart({
  A: "b5@3 ~@5 b5@3 ~@5 b5@3 ~@5 b5@3 ~@5", B: "b5@3 ~@5 b5@3 ~@5 b5 ~@3 b5 ~@3 b5 ~@3 b5 ~@3",
  C: "b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5 ~", D: "b5 ~ b5 ~ b5 ~ c#6 d#6 e6 d#6 c#6 b5 a5 g#5 f#5 e5",
  E: "e5@3 ~@5 e5@3 ~@5 e5@2 ~@2 a5 g#5@2 ~@5 e5@2 ~@2", F: "~@2 e5 ~@3 e5 ~@3 e5 ~ e5 ~ a5 g#5",
  G: "a5 g#5 a5 g#5 f#5@2 e5@2 ~@2 b5 ~@3 b5 ~", H: "~@4 b5@2 ~@6 c#6 b5@2 ~@5 c#6 b5@2 ~@5 c#6 b5@2 ~",
  I: "~@4 c#6 b5@2 ~@5 c#6 b5@2 ~ e6@4 ~@4 e6@4 e5@2 ~@2", J: "~@2 e5 ~@7 b5 ~@3 b5 ~",
  K: "~@2 e5 ~@3 e5 ~@3 e5 ~@3 e5 ~", L: "e5@3 ~@5 e5@3 ~@5 e5@2 a5@2 g#5@4 ~@4 e5@4",
  M: "~@2 e5 ~@3 e5 ~@3 e5 ~ e5@2 a5 g#5",
})).s("gm_tremolo_strings").gain(0.15)

// other · tremolo strings · "Violin 1 C"
const tremolo_strings_2 = note(`<
  ~@17 A B C D E F G H I J K L M N@3 O P Q R S P M@3 B T U M B V W X Y O P Q Z S P M AA N@2 AB AC AD P
>`.pickRestart({
  A: "b5@3 ~@5 b5@3 ~@5 b5@2 ~@2 b5@2 ~@2 b5@2 ~@2 b5@2 ~@2", B: "b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5 ~",
  C: "b5 ~ b5 ~ b5 ~ c#6 d#6 e6 d#6 c#6 b5 a5 g#5 f#5 e5", D: "e5@3 ~@5 e5@3 ~@5 e5@2 a5@2 g#5@4 ~@4 e5@4",
  E: "~@2 e5 ~@3 e5 ~@3 e5 ~ e5 ~ a5 g#5", F: "a5 g#5 a5 g#5 f#5 ~ e5 ~@3 c#6 d#6 e6 d#6 c#6 b5",
  G: "a5 g#5 f#5 e5 ~@2 e6 ~@3 e6 ~@3 e6 ~", H: "~@2 e6 ~@3 e6 ~@3 e6 ~@3 b5 ~",
  I: "~@4 b5@2 ~@6 b5@2 ~@6 b5@2 ~@2 f#6 e6@2 ~@5", J: "f#6 e6@2 ~@5 b5@3 ~@5 b5@3 ~@5 b5@2 ~@2 c#6@2 d#6@2",
  K: "e6@2 d#6@2 c#6@2 b5@2 a5@2 g#5@2 f#5@2 e5@2 ~@4 f#6 e6@2 ~@5 f#6 e6@2 ~",
  L: "~@4 f#6 e6@2 ~@5 f#6 e6@2 ~ b5@3 ~@5 b5@3 ~@5", M: "b5@3 ~@5 b5@3 ~@5 b5@3 ~@5 b5@3 ~@5",
  N: "~@2 a5@2 g#5@2 a5@2 g#5 a5 g#5 a5 ~@6 a5@2 g#5@2 a5@2 g#5 a5 g#5 a5 ~@4",
  O: "~@4 c#6@2 d#6@2 e6@2 d#6@2 c#6@2 b5@2 a5@2 g#5@2 f#5@2 e5@2 ~@4 f#6 e6@2 ~",
  P: "~@4 f#6 e6@2 ~@5 f#6 e6@2 ~@5 f#6 e6@2 ~@5 f#6 e6@2 ~", Q: "~@4 f#6 e6@2 ~@5 b5@2 ~@6 b5@2 ~@6 b5@2 ~@2",
  R: "~@4 b5@2 ~@2 f#6 e6@7 f#6 e6@7 b5@3 ~@5",
// … 125 more lines