Strudelify
KeyC majorTempo117 bpm
0:00/0:00
// White Bird — It's a Beautiful Day
// 117 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 185 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(117/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.

// chords · percussive organ
const percussive_organ = note(`<
  ~@2 A@8 ~@4 B@2 C@2 D@2 E@2 F@2 G@4 E@2 F@2 E@2 F@2 H@2 I@2 G@4 J K L@2 C@2 B@2 C@2 B@2 C@2 B@2 M@4 N@2 O@2 N@2 O@2
  N@2 I@2 G@4 J P Q@2 J P R ~ S@2 T U V W@2 X Y X Y X Y X Z AA AB AA AC AA AC AD AE AD AC AD AC AD AC AD AC AF@2 AG AH
  AF@2 AG AH AF@2 AI AJ AK AL AI AM AN AO AP AQ AP AR AS AT AU AT AU AT AU AT AU AT AU AV@2 AW@2 AX@2 AW@2 AX@2 AW@2
  AX@2 G@4 J K AY AZ J K AY AZ J K AY AZ J BA@2
>`.pickRestart({
  A: "c5/8", B: "a#4/2", C: "c5/2", D: "[a#4@12 ~ [a#4,f5,a#5]@3]/2", E: "[g4,c5,e5]/2", F: "[f4,a#4,d5]/2",
  G: "[g4@4 c5@2 ~@2 a#4 ~ c5@4 c5@3 ~ c5@3 ~ f5@3 ~ e5@2 c5@7 ~ c5@2 ~@2 a#4 ~ c5@3 ~ c5@17 ~, e4@63 ~, c5@3 ~@3 g4@31 ~ g4@25 ~]/4",
  H: "[c5,e5,g5]/2", I: "[a#4,d5,f5]/2", J: "[a4,c5,f5]", K: "[c5,d#5,g#5]",
  L: "[~@6 e6@2 f6@2 e6@3 ~ [g5,c6]@4 ~@4 e6@2 f6@2 e6@4 g5@2, [g5,c6]@13 ~@5 g5@12 ~@2, ~@10 c6@5 ~]/2", // C5
  M: "[e5@15 ~ e5@3 ~ e5@2 ~@2 f5@2 ~@4 c5 ~ c5@32, g4, c5@21 ~ c5@7 ~@35, ~@13 e5@19]/4",
  N: "[[c5,e5,g5]@27 ~ g5@2 e5@2]/2", O: "[[a#4,d5,f5]@27 ~ f5@2 a#4@2]/2",
  P: "[c5,d#5,g#5]@3 [d#5,g#5,c6]@4 [d#5,g#5,c6]", Q: "[c4,g4,c5]/2", R: "[c4,g4,c5]", S: "[[c6,e6] [b5,d6], g5]/2",
  T: "[d#5,g#5,c6]", U: "[d5,g5,b5]", V: "[c5,d#5,g5,c6]", W: "[[d#5,g#5,c6,d#6]@9 ~@7]/2", X: "c5", Y: "a#4",
  Z: "c5 ~@15", AA: "[g3,c4,d#4]", AB: "[f3,a#3,d4]", AC: "[d4,f4,a#4]", AD: "[d#4,g4,c5]", AE: "[f4,a#4,d5]",
  AF: "[[c4,d#4]@15 ~ [d4,f4]@15 ~, g3@31 ~]/2", AG: "[g3,d4,g4]@15 ~", AH: "[d#4,g#4]@12 [g3,d4,g4]@3 ~, g#3@11 ~@5",
  AI: "[g3,d4,g4]@7 ~", AJ: "[g#3,d#4,g#4]@8 [g3,d4,g4]@7 ~", AK: "[g3,c4,d#4]@15 ~", AL: "[g3,d4,f4]",
  AM: "[g#3,d#4,g#4] [g3,d4,g4]", AN: "[c5,d#5,g5]@6 [c5,d#5,g5] ~@3 [c5,d#5,g5]@3 ~ [c5,d#5,g5] ~",
  AO: "[a#4,d5,f5]@4 [d5,f5,a#5]@11 ~", AP: "[c5,e5,g5]@5 ~ [c5,e5,g5] ~@3 [c5,e5,g5]@3 ~ [c5,e5,g5] ~",
  AQ: "[a#4,d5,f5] ~@3 [d5,f5,a#5]@11 ~", AR: "[d5,f5,a#5] ~@3 [d5,f5,a#5]@2 ~@2 [c5,e5,g5]@5 ~ [c5,e5,g5] ~",
  AS: "~@2 [c5,e5,g5]@3 ~ [c5,e5,g5] ~ [d5,f5,a#5] ~@3 [d5,f5,a#5]@3 ~", AT: "[c5,e5,g5,c6]", AU: "[a#4,d5,f5,a#5]",
  AV: "[c5,e5,g5,c6]/2", AW: "[e5,g5,c6]/2", AX: "[d5,f5,a#5]/2", AY: "[c5,e5,g5]", AZ: "[e5,g5,c6]",
  BA: "[[c5,d#5,g#5,c6]@9 ~@7]/2", // G#
})).s("gm_percussive_organ").gain(0.49).pan(0.4)

// other · clavinet
const clavinet = note(`<
  ~@48 A@2 B@2 A@2 B@2 C@2 D@2 E@4 ~@12 F G F ~ H I J K L I K M N O P O Q P ~ R S R S R S R ~ T U V U T U V U T U V U T
  U V U W X Y Z W X Y Z W X Y Z W X Y Z AA AB AA AB AA AC AD AE AF AG AF K AH K AF K AF AI@2 ~@16 H I J K L I K ~ H I J
  K L AJ@2
>`.pickRestart({
  A: "[~@6 c3@21 ~ c3@2 c2@2, c2@7 ~]/2", B: "[~@6 a#2@21 ~ a#2@2 a#1@2, a#1@7 ~]/2",
  C: "[~@6 c3@21 ~ c3@2 c2@2, c2@27 ~@5]/2", D: "[~@6 a#2@21 ~ a#2@2 a#1@2, a#1@29 ~@3]/2",
  E: "[~@38 c3@25 ~, c2@30 ~@2 c2@31 ~, ~@6 c3@31 ~@27]/4", F: "~@4 c2 ~ g1 ~ a#1 ~ c2 ~@3 c2 ~",
  G: "~@2 c2 ~@3 f2 ~@3 e2 ~ c2 ~@3", H: "~@6 f3@4 f2@2 f3@2 f2 ~, f2@9 ~@7", I: "~@3 g#3@2 g#2 g#3 g#2, g#2@9 ~@7",
  J: "~@6 c3@4 c2@2 c3@2 c2 ~, c2@9 ~@7", K: "~@3 c3@2 c2 c3 c2, c2@9 ~@7", L: "~@3 f3@2 f2 f3 f2, f2@9 ~@7",
  M: "c2@15 ~", N: "c2", O: "g2", P: "g#2", Q: "c3", R: "c1", S: "a#0", T: "~@6 c3@5 ~ c3@2 c2 ~, c2@3 ~",
  U: "~@6 a#2@5 ~ a#2@2 a#1 ~, a#1@13 ~@3", V: "~@6 c3@5 ~ c3@2 c2 ~, c2@13 ~@3",
  W: "~@6 c3@4 c2@2 ~@2 c2 ~, c2@9 ~@3 c3@4", X: "~@6 d3@4 d2@2 d3@2 d2 ~, d2@5 ~@3",
  Y: "~@6 g3@4 g2@2 g3@2 g2 ~, g2@9 ~@7", Z: "~ g#3@2 ~, g#2@11 ~@5", AA: "c2 ~@5 c2 ~@3 c2 ~@3 c2 ~",
  AB: "a#1 ~@3 d2 ~@11", AC: "a#1 ~@3 d2 ~@3 c2 ~@5 c2 ~", AD: "~@2 c2 ~@3 c2 ~ a#1 ~@3 d2 ~@3",
  AE: "c1 ~@5 c3@4 c2@2 c3@2 c2@2, c2@9 ~@7", AF: "~@3 a#2@2 a#1 a#2 a#1, a#1@9 ~@7", AG: "~@3 c3@2 c2 c3 c2, c2@5 ~@3",
  AH: "~@3 a#2@2 a#1 a#2 a#1, a#1@5 ~@3", AI: "[c2@25 ~@7]/2", AJ: "[~@3 g#3@6 ~@7, g#2@9 ~@23]/2",
})).s("gm_clavinet").gain(0.24).pan(0.4)

// other · electric guitar clean
const electric_guitar_clean = note(`<
  ~@4 A B A C D E F@2 G@2 ~@10 H I H ~@13 H I H ~ J K L M N@2 O@2 N@2 O@2 P@2 Q@2 R@4 ~@12 H I H ~ S T U V W T X Y Z AA
  AB AA AC AB ~ AD AE AD AE AD AE AD ~ AF AG AH AG AF AG AH AG AF AG AH AG AF AG AH AG AI AJ AK AL AI AJ AK AL AI AJ AK
  AL AI AJ AK AL AM AN AM AN AM AO AP AQ AR AS AR V AT V AR V AR AU@2 ~@12 AV AW AX@2 AY AZ U V BA AZ V ~ AY AZ U V BA
  BB@2
>`.pickRestart({
  A: "~@2 [e4,f4,e5,f5] ~ [d4,d5] [c4,c5] ~ [a#3,a#4]", B: "~ [a#3,a#4] ~ [a#3,a#4] ~ [d4,d5] [a#3,a#4] [d4,d5]",
  C: "~ [a#3,a#4] ~ [g3,g4] ~ [f3,f4] [e3,e4] [d3,d4]", D: "~@2 [e4,f4,e5,f5] ~ [d4,d5] [c4,c5] ~ [a#3,a#4], [c3,c4] ~",
  E: "~ [a#3,a#4] ~ [d4,d5] ~ [a#3,a#4] [c4,c5] [a3,a4]", // A# D A# C A
  F: "[[a#3,a#4] [g3,g4] [a3,a4] [f3,f4] [g3,g4] [e3,e4]@8 ~@3]/2", G: "[~@3 [g3,g4]@8 ~@5, [e3,c4] ~]/2",
  H: "~@2 c4 g3 a#3 c4 ~ c4", I: "~ c4 ~ f4 ~ e4 c4 ~", J: "~@2 f4@11 ~ f3@2, f3@3 ~", K: "~ g#4@6 ~, g#3@7 ~",
  L: "~@3 e4@2 c4@2 ~, e3 c4 ~@2, ~ g3@2 ~@5", M: "~@2 c4 ~@4 e3, e3@3 g3, ~ g3@4 c4@3, ~@3 e4@5",
  N: "[~@6 c4@21 ~ c4@2 c3@2, c3@7 ~]/2", O: "[~@6 a#3@21 ~ a#3@2 a#2@2, a#2@7 ~]/2",
  P: "[~@6 c4@21 ~ c4@2 c3@2, c3@27 ~@5]/2", Q: "[~@6 a#3@21 ~ a#3@2 a#2@2, a#2@29 ~@3]/2",
  R: "[~@38 c4@25 ~, c3@30 ~@2 c3@31 ~, ~@6 c4@31 ~@27]/4", S: "~@6 f3@4 f2@2 f3@2 f2 ~, f2@9 ~@7",
  T: "~@3 g#3@2 g#2 g#3 g#2, g#2@9 ~@7", U: "c3@6 [c3,c4]@4 [c2,c3]@2 [c3,c4]@2 [c2,c3] ~, c2@9 ~@7",
  V: "c3@3 [c3,c4]@2 [c2,c3] [c3,c4] [c2,c3], c2@9 ~@7", W: "~@3 f3@2 f2 f3 f2, f2@9 ~@7",
  X: "~@3 c3@2 c2 c3 c2, c2@9 ~@7", Y: "c2@15 ~", Z: "[c2,c3]", AA: "[g2,g3]", AB: "[g#2,g#3]", AC: "c3", AD: "[c3,c4]",
  AE: "[a#2,a#3]", AF: "c3@3 [c3,c4]@3 [c3,c4] [c2,c3], c2@3 ~",
  AG: "a#2@3 [a#2,a#3]@3 [a#2,a#3] [a#1,a#2], a#1@13 ~@3", AH: "c3@3 [c3,c4]@3 [c3,c4] [c2,c3], c2@13 ~@3",
  AI: "c3@3 [c3,c4]@2 [c2,c3] c3 [c2,c3], c2@9 ~@3 c4@4", AJ: "d3@6 [d3,d4]@4 [d2,d3]@2 [d3,d4]@2 [d2,d3] ~, d2@5 ~@3",
  AK: "g3@6 [g3,g4]@4 [g2,g3]@2 [g3,g4]@2 [g2,g3] ~, g2@9 ~@7", AL: "g#3 [g#3,g#4]@2 ~, g#2@11 ~@5",
  AM: "[c2,c3] ~@5 [c2,c3] ~@3 [c2,c3] ~@3 [c2,c3] ~", AN: "[a#1,a#2] ~@3 [d2,d3] ~@11",
  AO: "[a#1,a#2] ~@3 [d2,d3] ~@3 [c2,c3] ~@5 [c2,c3] ~", AP: "~@2 [c2,c3] ~@3 [c2,c3] ~ [a#1,a#2] ~@3 [d2,d3] ~@3",
  AQ: "c3@3 [c3,c4]@2 [c2,c3] [c3,c4] [c2,c3], c2@9 ~@7, c1 ~@15", // C
  AR: "a#2@3 [a#2,a#3]@2 [a#1,a#2] [a#2,a#3] [a#1,a#2], a#1@9 ~@7", // A#
  AS: "c3@3 [c3,c4]@2 [c2,c3] [c3,c4] [c2,c3], c2@5 ~@3", // C
  AT: "a#2@3 [a#2,a#3]@2 [a#1,a#2] [a#2,a#3] [a#1,a#2], a#1@5 ~@3", AU: "[[c2,c3]@25 ~@7]/2",
  AV: "~@4 [c4,c5] ~ [g3,g4] ~ [a#3,a#4] ~ [c4,c5] ~@3 [c4,c5] ~", // C G A# C
  AW: "~@2 [c4,c5] ~@3 [f4,f5] ~@3 [e4,e5] ~ [c4,c5] ~@3", // C F E C
  AX: "[~@4 [c4,c5] ~ [g3,g4] ~ [a#3,a#4] ~ [c4,c5] ~@3 [c4,c5]@8 ~@10]/2", // C G A# C
  AY: "f3@6 [f3,f4]@4 [f2,f3]@2 [f3,f4]@2 [f2,f3] ~, f2@9 ~@7", // F
  AZ: "g#3@3 [g#3,g#4]@2 [g#2,g#3] [g#3,g#4] [g#2,g#3], g#2@9 ~@7", // G#
  BA: "f3@3 [f3,f4]@2 [f2,f3] [f3,f4] [f2,f3], f2@9 ~@7", BB: "[g#3@3 [g#3,g#4]@6 ~@7, g#2@9 ~@23]/2",
})).s("gm_electric_guitar_clean").gain(0.18)

// bass · fretless bass
const bass = note(`<
  ~@2 A@10 B C D E B C D E B C D E A@6 F G B C H G B I J H K@3 L M N K O B C D E B C D E A K J@2 K@6 J@2 K@2 J@2 A K J@2
  K@4 P Q A@2 P Q A R S T U V W X Y Z AA Z AA Z AA AB@2 AC AD AC AD AE AD AC AD AF AG AF AG AF AG AF AG AH AI AJ AK AH
  AI AJ AK AH AI AL AM AH AI AJ AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA AZ BB BC BD K@2 Z A BE J Z A BE J K@2 J@2 K
  Z@3 P Q A@2 P Q A@2 P Q A@2 BF X Y
>`.pickRestart({
  A: "c2@2 c2 g2@2 f2@2 e2", B: "c2@2 c2 g2@2 f2 e2 d2", C: "c2@2 c2 g2@2 f2 e2 c2", D: "a#1@2 a#1 f2@2 d#2 d2 c2",
  E: "a#1@2 a#1 f2@2 d#2 d2 a#1", F: "a#1 a#2@2 f2@2 d#2 d2 c2", G: "a#1 a#2@2 f2@2 d#2 d2 a#1",
  H: "a#1 a#2@2 f2@2 d#2@2 d2", I: "c2 c3@2 g2@2 f2 e2 c2", J: "a#1@2 a#2 f2@2 d#2@2 d2", K: "c2@2 c3 g2@2 f2@2 e2",
  L: "c2 ~ c2@2 c3@2 g2@4 f2@4 e2 ~", M: "f1@4 f1@2 ~ f1!2 ~ f1@2 ~@2 f1@2", N: "g#1@4 g#1@2 ~ g#1!2 ~ g#1@2 ~@2 g#1@2",
  O: "c2!2 c3 g2@2 f2@2 e2", P: "f1@4 f1 ~@2 f1!2 ~ f1@2 ~@2 f1 ~", Q: "g#1@4 g#1@2 ~ g#1!2 ~ g#1@2 ~@2 g#1 ~",
  R: "c2@2 ~ g2@2 f2@2 e2", S: "c2@5 ~ c2@7 ~ c2@2", T: "g1@5 ~ g1@7 ~ g1@2", U: "g#1 c2 d#2 g#2@4 f#1",
  V: "g1 b1 d2 g2@4 b1", W: "c2 d#2 g2 c3@2 a#2 g2 d#2", X: "g#1 c2 c#2 d2 d#2 f2 f#2 g2", Y: "g#2 ~@7",
  Z: "c2@3 g2@2 f2@2 e2", AA: "a#1@2 a#2 f2@2 d#2 d2 c#2", AB: "[~@3 g2 ~ g2 ~@2 c3@8, c2, ~@7 g2@9]/2",
  AC: "c2@3 g2@4 a1", AD: "a#1@3 f2@4 a#1", AE: "~@6 g2 ~@3 g2@4 a1@2, c2@13 ~@3", AF: "c2@3 g2 c3 g2 c3 g2",
  AG: "a#1@3 f2 a#2 f2 a#2 f2", AH: "c2@4 c2 ~@2 c2!2 ~ c2@2 ~@2 c2@2", AI: "d2@4 d2 ~@2 d2!2 ~ d2@2 ~@2 d2@2",
  AJ: "g2@4 g2 ~@2 g2!2 ~ g2@2 ~@2 g2@2", AK: "g#2@2 g#2@2 ~@2 g#2@2 g#2 ~ g#2@2 g2 ~ g2@2",
  AL: "g2@4 g2 ~@2 g2!2 ~ g2@4 g2@2", AM: "g#2 ~ g#3 d#3 g2 ~ g3 d3, ~ d#3@2 ~@2 d3@2 ~",
  AN: "g#2@2 ~@2 g#2 ~@2 g#2 g2 ~ g2 ~ g2 ~ g2 ~, ~ d#3@2 ~@5", AO: "c2@5 ~ c2@2 ~@2 c2@2 ~@2 c2@2",
  AP: "~@2 f2@5 ~, a#1", AQ: "~@6 g2@4 g2 ~@3 c2@2, c2@11 ~@5", AR: "~ f2@3, a#1", AS: "c2@3 g2 ~ g2 ~ c2",
  AT: "a#1@2 ~ a#1 c2@3 g2", AU: "~@2 g2@2 ~@2 c2@2 a#1@5 ~ a#1@2", AV: "c2@9 ~ c2 ~@3 c2@2",
  AW: "a#1@9 ~ a#1 ~@3 a#1@2", AX: "c2 e2 g2@3 c2 ~ c2", AY: "a#1 d2 f2 a#2@4 a#1", AZ: "c2 e2 g2 c3 g2 c2 ~ c2",
  BA: "a#1 d2 f2 a#2 f2 a#1 ~ a#1", BB: "a#1 d2 d#2 e2 a#2 f2 d#2 d2", BC: "c2 g2 c3 g2 c2 g2 c3 g2",
  BD: "a#1 f2 a#2 f2 a#1 f2 a#2 f2", BE: "a#1@2 a#1 f2@2 d#2@2 d2", BF: "f1@4 f1@2 ~ f1!2 ~ f1 ~ f1 ~ f1 ~",
})).s("gm_fretless_bass").gain(0.19)

// other · viola
const viola = note(`<
  ~@48 A@2 B@2 C@2 D E F G H@2 I@2 J@2 ~@18 K@2 L ~ M N ~@7 O P@2 Q R S T ~@9 T U V W X Y Z Y AA@3 AB AA@3 AC AD@3 AE AF
  AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA@2 ~@18 BB BC ~@2 BD BC ~@2 BE BF ~ R ~
>`.pickRestart({
  A: "[g4@6 c5@20 a4@3 ~ a4@2]/2", B: "[a#4@3 a4@2 g4@3 d#4@3 d4@2 c4@2 a#3@11 ~ g4@3 g4@2]/2",
  C: "[a#4@3 a4@2 g4@3 e4@18 e4@2 ~ e4@2 ~]/2", D: "f4@3 e4@2 d4@3 a#3@2 a3@2 ~ g3@2 ~", E: "g3@3 f3",
  F: "e3@3 f3@3 g3@2 a3@3 a#3@2 c4@3", G: "d4@2 ~ e4@2 f4@3 e4@2 d4@3 e4@2 ~",
  H: "[f4@3 e4@2 d4@2 ~ a#3@20 a3 a#3 [a3,a#3] a3]/2", I: "[g3@28 a3 a#3 a3 a#3]/2", J: "g3/2",
  K: "[~@2 c5 e5 c5 a#4@2 c5@2 a#4 g4 f4 d#4@2 c4@2]/2", L: "f3@13 ~@3", M: "~@3 a#5@2 a#5@2 ~ a#5@2 ~ a#5@2 ~ a#5@2",
  N: "a#5@7 ~", O: "c5", P: "[a#4@15 g4@17]/2", Q: "f4", R: "d#4", S: "d4", T: "c4", U: "a#3", V: "g3", W: "f3",
  X: "d#3", Y: "d3", Z: "c3", AA: "[g3,g4]@3 ~ [g3,g4]@3 ~ [g3,g4]@3 ~ [g3,g4]@3 ~",
  AB: "g4@2 f4@2 d#4 ~ d#4@5 ~ f4@2 d#4 ~", AC: "g4@2 f4 ~ d#4 ~ d#4@6 f4@2 d#4@2",
  AD: "[c5@3 ~ c5@3 ~ c5@2 f#4@2 g4@2 a#4@4 f#4@2 g4@2 a#4@4 f#4@2 g4@2 a#4@4 f#4@2 g4@2 b4@9 ~]/3",
  AE: "c5@4 c5@4 c5@3 ~ c5@3 ~", AF: "g4@3 ~ g4@3 ~ g4@3 ~ g4@3 ~", AG: "f#4@2 f4@2 d#4 ~ f#4@2 f4@2 d#4@2 f#4@2 f4@2",
  AH: "d#4 f#4 f4 d#4 f#4 f4 d#4@2", AI: "g4@4 g4@3 ~ g4@3 ~ g4@3 ~", AJ: "c4@5 ~ c4 ~@3 c4@3 ~ c4@2",
  AK: "a#3@2 ~@2 d4@11 ~", AL: "g3@6 c4 ~@3 c4@3 ~ c4@2", AM: "a#3 d4@3",
  AN: "e4 f4 e4 ~ d4 e4 d4 ~ e4 f4 e4 ~ d4 e4 d4 ~", AO: "d4@2 d4 ~@3 d4 ~ e4 f4 e4 ~ d4 e4 d4 ~",
  AP: "e4 f4 e4 ~ d4 e4 d4 ~ d4@2 d4@2 ~@2 d4 ~", AQ: "[c4,g4]@6 [g4,c5]@9 ~", AR: "[g4,a#4]@6 ~ a#4@8 ~, ~@6 d5@9 ~",
  AS: "c5@2 ~ c5@2 c5@2 ~ d5@2 ~ d5@2 ~ d5@2", AT: "e5@2 ~ e5@2 ~ e5@2 f5@2 ~ f5@2 ~ f5@2",
  AU: "g5@2 ~ g5@2 g5@2 ~ a5@2 ~ a5@2 ~ a5@2", AV: "a#5@3 a#5@2 a#5@2 ~ c6@2 ~ c6@2 c6@2 ~", AW: "c6", AX: "a#5",
  AY: "g5", AZ: "f5", BA: "c5/2", BB: "~@4 c5@2 a#4@3 g4@4 a#4@2 ~", BC: "g4@3 a#4@2 g4@2 ~ d#4@3 c4@5",
  BD: "~@4 c5@2 a#4@3 g4@3 ~ a#4@2 ~", BE: "~@4 c5@2 a#4@3 g4@3 ~ a#4@3", BF: "g4@3 a#4@2 g4@2 ~ d#4@2 c4@6",
})).s("gm_viola").gain(0.45).pan(0.6)

// other · synth strings 1
const synth_strings_1 = note(`<
  ~@48 A@2 B C D@2 E F G H I@2 J@4 ~@31 K@2 L M N O N ~@9 P Q R S T@3 Q U@2 V W X@2 Y Z AA AB AC AD AE AF AG AH AI AJ AK
  AJ AL AM AN AO AP AQ AR AS AT AU AV@4 AW ~@31
>`.pickRestart({
  A: "[c5@6 e5@20 c5@3 c5@3]/2", B: "d5@3 c5@3 a#4@2 a#4@2 ~ a4@2 ~ g4@2", C: "f4@9 c5@2 ~@2 c5@3",
  D: "[e5@2 ~ d5@2 c5 ~@2 c5@17 ~ c5@3 c5@2 ~]/2", E: "d5@3 c5@2 a#4@2 ~ a#4@2 ~ a4@2 ~ g4@2", F: "g4@5 ~@3",
  G: "e4@3 f4@3 g4@2 a4@3 a#4@3 c5@2", H: "d5@3 e5@3 f5@2 g5@3 a5@2 a#5@3", I: "[c6@3 a#5@2 a5@3 a#5@20 a5@4]/2",
  J: "[g5@28 f5 g5 [f5,g5] e5@33]/4", K: "[c6@9 ~ a#5@2 c6@2 a#5@18]/2", L: "g5", M: "a#5", N: "c6",
  O: "d6@10 c6@3 a#5@2 ~", P: "d#4@15 ~", Q: "d4", R: "c4", S: "a#3", T: "[g3@15 a#3@16 c4@16 ~]/3", U: "c5/2",
  V: "b4@4 b4@3 ~ b4@4 b4@3 ~", W: "f#4@2 f4@2 d#4@2 c5@4 d5@2 d#5@3 ~",
  X: "[d#5@6 c5@6 d#5@2 ~ f#5@2 ~ f5@2 f#5@2 f5@2 d#5@2 c5@2 a#4@2 g4 ~, ~@7 f5 ~@8]/2",
  Y: "g4@2 f#4@2 g4@2 a#4@2 ~ g4@2 a#4@2 f#4@2 ~, ~@4 f#4 ~@3", Z: "c5@2 a#4@2 g4@2 f#4@2 f4@2 d#4@5 ~",
  AA: "c6@2 ~ a#5@2 g5@2 ~ f5@2 ~ d#5@2 f5@2 ~", AB: "c6@2 ~ a#5@2 g5@2 ~ f5@3 d#5@2 f5@2 ~",
  AC: "f#5 g5@3 g5@3 ~ [f5,f#5] ~@3 g5@3 ~, ~@4 f#5 ~@3 g5@2 ~@2 f#5 ~@3", AD: "d#5@2 f5@2 g5@3 ~ a#5@3 ~ c6@2 ~@2",
  AE: "c6@3 a#5@2 ~ g5@2 f5@2 ~ d#5@2 f5@2 ~", AF: "c6@3 a#5@3 g5@2 f5@2 d#5@2 ~ f5@2 ~",
  AG: "g5@2 ~ a#5@2 g5@2 ~ a#5@2 ~ g5@2 a#5@2 ~", AH: "g5@2 b5@2 ~ g5@2 ~ b5@3 g5@2 b5@2 ~",
  AI: "d#4@5 ~ d#4 ~@3 d#4@3 ~ d#4 ~", AJ: "d4@2 ~@2 f4@11 ~", AK: "d#4@5 ~ e4 ~@3 e4@3 ~ e4@2",
  AL: "a4 [a4,a#4] ~@2 g4 [g4,a4] ~@2 a4 a#4 a4 ~ g4 a4 g4 ~", AM: "f4 ~ f4@2 ~@2 f4 ~ a4 a#4 a4 ~ g4 a4 g4 ~",
  AN: "a4 a#4 a4 ~ g4 a4 g4 ~ f4 ~ f4 ~@3 f4 ~", AO: "g4@7 c5@9", AP: "a#4@6 d5@9 ~",
  AQ: "e5@2 ~ e5@2 e5@2 ~ f5@2 ~ f5@2 f5@2 ~", AR: "g5@2 ~ g5@2 ~ g5@2 a5@2 ~ a5@2 ~ a5@2",
  AS: "a#5@2 ~ a#5@2 ~ a#5 ~ c6@2 ~ c6@2 ~ c6@2", AT: "d6@2 ~ d6@2 ~ d6@2 e6@2 ~ e6@2 ~ e6@2",
  AU: "f6@2 ~ f6@2 ~ f6@2 g6@2 ~ g6@2 g6@2 ~", AV: "[g6@54 g5@2 c6@2 a#5 ~ g5@2 f5@2]/4", AW: "e5",
})).s("gm_synth_strings_1").gain(0.53)

// other · viola
const viola_2 = note(`<
  ~@12 A@2 B@2 C@2 D@2 E@2 F@2 G@2 ~ H A@2 I@2 J@2 K@2 L@2 M@2 N@2 ~@2 O@2 P@2 ~@15 H Q@2 R@2 S@2 T@2 U@2 V@2 G@2 ~@2
  W@2 X@2 Y@2 Z AA AB AC AD AE AF AG AH Z AI AJ AK AL AM AN ~@52 A@2 B@2 C@2 D@2 E@2 F@2 G@2 ~@2 AO@2 AP@2 AQ@2 AR@4
  AS@2 AT@2 ~
>`.pickRestart({
  A: "[g4@6 c5@20 c5@3 ~ c5@2]/2", B: "[a#4@3 a4@3 g4@19 ~ g4@3 a4@3]/2", C: "[a#4@3 a4@3 g4@18 ~@2 g4@2 ~ g4@2 ~]/2",
  D: "[g4@3 f4@24 ~@5]/2", E: "[g4@6 c5@20 c5@3 c5@2 ~]/2", F: "[a#4@3 a4@3 g4@22 a#4@4]/2", G: "[g4 f4 e4@28 ~@2]/2",
  H: "~@7 f4", I: "[a#4@3 a4@3 g4@20 ~ g4@3 a4@2]/2", J: "[a#4@3 a4@3 g4@18 ~@2 g4@3 g4 g4@2]/2",
  K: "[~@3 f4@21 a#4@2 ~@2 a#4@3 ~, g4 ~]/2", L: "[g4@6 c5@22 c5@3 ~]/2", M: "[a#4@2 ~ c5@2 ~ a4@2 g4@19 ~ a#4@3 ~]/2",
  N: "[g4 f4 e4@24 ~@6]/2", O: "[~@4 f4@4 a#4@2 c5@4 g#4@6 ~@2 g#4@2 a#4@2 a#4@5 ~]/2", P: "[g4@2 e4@29 ~]/2",
  Q: "[g4@6 c5@16 ~@2 c5@2 ~ c5@2 c5@3]/2", R: "[a#4@3 a4@2 ~ g4@14 ~@6 g4@2 ~ a4@2 ~]/2",
  S: "[a#4@3 a4@3 g4@15 ~@5 g4@2 ~@2 g4@2]/2", T: "[a4@5 ~ a#4@5 ~ c5@6 d5@5 ~ c5@2 ~@2 a#4@3 ~]/2",
  U: "[d5@2 ~@4 c5@21 ~ c5@3 ~]/2", V: "[a#4@2 ~ c5@2 ~ a4@2 g4@18 ~@2 a4 ~ a#4@2]/2",
  W: "[~@4 a4@4 c5@2 f5@3 ~ d#5@4 c5@3 ~ c5@2 f5@2 d#5@6]/2", X: "[c5@29 ~@3]/2",
  Y: "[~@4 a4@3 ~ c5@2 f5@3 ~ d#5@4 c5@3 ~ c5 ~ f5@2 d#5@5 ~]/2", Z: "c5", AA: "~@7 g4", AB: "c5 ~ c5@3 ~ c5@8 g4@2",
  AC: "b4@2 ~ b4@2 ~ b4@8 g4@2", AD: "g#4@2 ~ g#4@2 ~ g#4@7 ~ g#4!2", AE: "b4@2 ~ b4@2 ~ b4@8 g4!2",
  AF: "c5 ~@2 c5@3 d#5@5 ~ d#5 ~ d#5 ~", AG: "d5@2 ~ c5@2 ~ c5@10", AH: "~@3 c5 d#5 d5@3", AI: "a#4@7 ~ d#5@2 d5@6",
  AJ: "c5@9 ~ a#4@2 c5@4", AK: "d5 c5 a#4@5 ~ d#5@2 d5@6", AL: "c5@5 a#4 c5@2", AM: "d5@5 c5 ~ a#4", AN: "g4",
  AO: "[~@4 g#4@2 ~@2 a#4 ~ f5@3 ~ d#5@7 ~ c5 ~ d#5 ~ d#5@6]/2", AP: "c5/2",
  AQ: "[~@4 g#4@2 ~@2 a#4 ~ f5@3 ~ d#5@8 c5 ~ d#5 ~@2 d#5@5]/2",
  AR: "[~ c5@33 ~@2 g#4@2 ~@2 a#4 ~ f5@3 ~ d#5@8 c5 ~ d#5 ~ d#5@5 ~]/4", AS: "[c5@31 ~]/2",
  AT: "[~@4 g#4@3 ~ a#4 ~ f5@3 ~ d#5@18]/2",
})).s("gm_viola").gain(0.45).pan(0.4)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@12 A@2 B@2 C@2 D@2 E@2 F@2 G@2 ~ H I@2 J@2 K@2 L@2 M@2 N@2 O@2 ~@2 P@2 Q@2 ~@16 R@2 S@2 T@2 U@2 V@2 W@2 O@2 ~@2 X Y
  Z@2 AA AB AC ~ AD AE AF AG AH AI AJ AK@2 AL@2 AM AN AC ~@52 A@2 B@2 C@2 D@2 E@2 F@2 G@2 ~@2 AO@2 AP@4 AQ@2 AR@2 AS@4 ~
>`.pickRestart({
// … 155 more lines