Strudelify
White Bird cover art

1969 · It's A Beautiful Day

White Bird

It's a Beautiful Day

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, A@4 for four bars: 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 AG AI AA AJ AG AI AK AL AM AN AM AO AP AQ AR AQ AR AQ AR AQ AR AQ AR AS@2 AT@2 AU@2 AT@2 AU@2 AT@2
  AU@2 G@4 J K AV AW J K AV AW J K AV AW J AX@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: "[g#3,d#4,g#4]@8 [g3,d4,g4]@7 ~", AJ: "[g3,d4,f4]",
  AK: "[c5,d#5,g5]@6 [c5,d#5,g5] ~@3 [c5,d#5,g5]@3 ~ [c5,d#5,g5] ~", AL: "[a#4,d5,f5]@4 [d5,f5,a#5]@11 ~",
  AM: "[c5,e5,g5]@5 ~ [c5,e5,g5] ~@3 [c5,e5,g5]@3 ~ [c5,e5,g5] ~", AN: "[a#4,d5,f5] ~@3 [d5,f5,a#5]@11 ~",
  AO: "[d5,f5,a#5] ~@3 [d5,f5,a#5]@2 ~@2 [c5,e5,g5]@5 ~ [c5,e5,g5] ~", // A# C
  AP: "~@2 [c5,e5,g5]@3 ~ [c5,e5,g5] ~ [d5,f5,a#5] ~@3 [d5,f5,a#5]@3 ~", AQ: "[c5,e5,g5,c6]", AR: "[a#4,d5,f5,a#5]",
  AS: "[c5,e5,g5,c6]/2", AT: "[e5,g5,c6]/2", AU: "[d5,f5,a#5]/2", AV: "[c5,e5,g5]", AW: "[e5,g5,c6]",
  AX: "[[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 A@2 B@2 C@4 ~@12 D E D ~ F G H I J G I K@2 L M L N M ~ O P O P O P O ~ Q R Q R Q R Q R Q R Q R Q
  R Q R S T U V S T U V S T U V S T U V W X W X W Y Z AA AB I AB I AB I AB I AB AC@2 ~@16 F G H I J G I ~ F G H I J AD@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: "[~@38 c3@25 ~, c2@30 ~@2 c2@31 ~, ~@6 c3@31 ~@27]/4", D: "~@4 c2 ~ g1 ~ a#1 ~ c2 ~@3 c2 ~",
  E: "~@2 c2 ~@3 f2 ~@3 e2 ~ c2 ~@3", F: "~@6 f3@4 f2@2 f3@2 f2 ~, f2@9 ~@7", G: "~@3 g#3@2 g#2 g#3 g#2, g#2@9 ~@7",
  H: "~@6 c3@4 c2@2 c3@2 c2 ~, c2@9 ~@7", I: "~@3 c3@2 c2 c3 c2, c2@9 ~@7", J: "~@3 f3@2 f2 f3 f2, f2@9 ~@7",
  K: "c2@15 ~", L: "g2", M: "g#2", N: "c3", O: "c1", P: "a#0", Q: "~@6 c3@5 ~ c3@2 c2 ~, c2@3 ~",
  R: "~@6 a#2@5 ~ a#2@2 a#1 ~, a#1@13 ~@3", S: "~@6 c3@4 c2@2 ~@2 c2 ~, c2@9 ~@3 c3@4",
  T: "~@6 d3@4 d2@2 d3@2 d2 ~, d2@5 ~@3", U: "~@6 g3@4 g2@2 g3@2 g2 ~, g2@9 ~@7", V: "~ g#3@2 ~, g#2@11 ~@5",
  W: "c2 ~@5 c2 ~@3 c2 ~@3 c2 ~", X: "a#1 ~@3 d2 ~@11", Y: "a#1 ~@3 d2 ~@3 c2 ~@5 c2 ~",
  Z: "~@2 c2 ~@3 c2 ~ a#1 ~@3 d2 ~@3", AA: "c1 ~@5 c3@4 c2@2 c3@2 c2@2, c2@9 ~@7",
  AB: "~@3 a#2@2 a#1 a#2 a#1, a#1@9 ~@7", AC: "[c2@25 ~@7]/2", AD: "[~@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 N@2 O@2 P@4 ~@12 H I H ~ Q R S T U R V W X Y Z
  Y AA Z ~ AB AC AB AC AB AC AB ~ AD AE AF AE AD AE AF AE AD AE AF AE AD AE AF AE AG AH AI AJ AG AH AI AJ AG AH AI AJ AG
  AH AI AJ AK AL AK AL AK AM AN AO AP AQ AP T AR T AP T AP AS@2 ~@12 AT AU AV@2 AW AX S T AY AX T ~ AW AX S T AY AZ@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: "[~@38 c4@25 ~, c3@30 ~@2 c3@31 ~, ~@6 c4@31 ~@27]/4", Q: "~@6 f3@4 f2@2 f3@2 f2 ~, f2@9 ~@7",
  R: "~@3 g#3@2 g#2 g#3 g#2, g#2@9 ~@7", S: "c3@6 [c3,c4]@4 [c2,c3]@2 [c3,c4]@2 [c2,c3] ~, c2@9 ~@7",
  T: "c3@3 [c3,c4]@2 [c2,c3] [c3,c4] [c2,c3], c2@9 ~@7", U: "~@3 f3@2 f2 f3 f2, f2@9 ~@7",
  V: "~@3 c3@2 c2 c3 c2, c2@9 ~@7", W: "c2@15 ~", X: "[c2,c3]", Y: "[g2,g3]", Z: "[g#2,g#3]", AA: "c3", AB: "[c3,c4]",
  AC: "[a#2,a#3]", AD: "c3@3 [c3,c4]@3 [c3,c4] [c2,c3], c2@3 ~",
  AE: "a#2@3 [a#2,a#3]@3 [a#2,a#3] [a#1,a#2], a#1@13 ~@3", AF: "c3@3 [c3,c4]@3 [c3,c4] [c2,c3], c2@13 ~@3",
  AG: "c3@3 [c3,c4]@2 [c2,c3] c3 [c2,c3], c2@9 ~@3 c4@4", AH: "d3@6 [d3,d4]@4 [d2,d3]@2 [d3,d4]@2 [d2,d3] ~, d2@5 ~@3",
  AI: "g3@6 [g3,g4]@4 [g2,g3]@2 [g3,g4]@2 [g2,g3] ~, g2@9 ~@7", AJ: "g#3 [g#3,g#4]@2 ~, g#2@11 ~@5",
  AK: "[c2,c3] ~@5 [c2,c3] ~@3 [c2,c3] ~@3 [c2,c3] ~", AL: "[a#1,a#2] ~@3 [d2,d3] ~@11",
  AM: "[a#1,a#2] ~@3 [d2,d3] ~@3 [c2,c3] ~@5 [c2,c3] ~", AN: "~@2 [c2,c3] ~@3 [c2,c3] ~ [a#1,a#2] ~@3 [d2,d3] ~@3",
  AO: "c3@3 [c3,c4]@2 [c2,c3] [c3,c4] [c2,c3], c2@9 ~@7, c1 ~@15", // C
  AP: "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#
  AQ: "c3@3 [c3,c4]@2 [c2,c3] [c3,c4] [c2,c3], c2@5 ~@3", // C
  AR: "a#2@3 [a#2,a#3]@2 [a#1,a#2] [a#2,a#3] [a#1,a#2], a#1@5 ~@3", AS: "[[c2,c3]@25 ~@7]/2",
  AT: "~@4 [c4,c5] ~ [g3,g4] ~ [a#3,a#4] ~ [c4,c5] ~@3 [c4,c5] ~", // C G A# C
  AU: "~@2 [c4,c5] ~@3 [f4,f5] ~@3 [e4,e5] ~ [c4,c5] ~@3", // C F E C
  AV: "[~@4 [c4,c5] ~ [g3,g4] ~ [a#3,a#4] ~ [c4,c5] ~@3 [c4,c5]@8 ~@10]/2", // C G A# C
  AW: "f3@6 [f3,f4]@4 [f2,f3]@2 [f3,f4]@2 [f2,f3] ~, f2@9 ~@7", // F
  AX: "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#
  AY: "f3@3 [f3,f4]@2 [f2,f3] [f3,f4] [f2,f3], f2@9 ~@7", AZ: "[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 AF AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ@2 ~@18 BA BB ~@2 BA BB ~@2 BA BC ~ 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: "c4@5 ~ c4 ~@3 c4@3 ~ c4@2", AJ: "a#3@2 ~@2 d4@11 ~",
  AK: "g3@6 c4 ~@3 c4@3 ~ c4@2", AL: "a#3 d4@3", AM: "e4 f4 e4 ~ d4 e4 d4 ~ e4 f4 e4 ~ d4 e4 d4 ~",
  AN: "d4@2 d4 ~@3 d4 ~ e4 f4 e4 ~ d4 e4 d4 ~", AO: "e4 f4 e4 ~ d4 e4 d4 ~ d4@2 d4@2 ~@2 d4 ~",
  AP: "[c4,g4]@6 [g4,c5]@9 ~", AQ: "[g4,a#4]@6 ~ a#4@8 ~, ~@6 d5@9 ~", AR: "c5@2 ~ c5@2 c5@2 ~ d5@2 ~ d5@2 ~ d5@2",
  AS: "e5@2 ~ e5@2 ~ e5@2 f5@2 ~ f5@2 ~ f5@2", AT: "g5@2 ~ g5@2 g5@2 ~ a5@2 ~ a5@2 ~ a5@2",
  AU: "a#5@3 a#5@2 a#5@2 ~ c6@2 ~ c6@2 c6@2 ~", AV: "c6", AW: "a#5", AX: "g5", AY: "f5", AZ: "c5/2",
  BA: "~@4 c5@2 a#4@3 g4@4 a#4@2 ~", BB: "g4@3 a#4@2 g4@2 ~ d#4@3 c4@5", BC: "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 B E F G H@2 I@4 ~@31 J@2 K L M N M ~@9 O P Q R S@3 P T@2 U V W@2 X Y Z@2 AA AB Z AC AD AE AF AG AH AG
  AI AJ AK AL AM AN AO AP AQ AR AS@4 AT ~@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@3]/2", E: "g4@5 ~@3", F: "e4@3 f4@3 g4@2 a4@3 a#4@3 c5@2",
  G: "d5@3 e5@3 f5@2 g5@3 a5@2 a#5@3", H: "[c6@3 a#5@2 a5@3 a#5@20 a5@4]/2", I: "[g5@28 f5 g5 [f5,g5] e5@33]/4",
  J: "[c6@9 ~ a#5@2 c6@2 a#5@18]/2", K: "g5", L: "a#5", M: "c6", N: "d6@10 c6@3 a#5@2 ~", O: "d#4@15 ~", P: "d4",
  Q: "c4", R: "a#3", S: "[g3@15 a#3@16 c4@16 ~]/3", T: "c5/2", U: "b4@4 b4@3 ~ b4@4 b4@3 ~",
  V: "f#4@2 f4@2 d#4@2 c5@4 d5@2 d#5@3 ~",
  W: "[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",
  X: "g4@2 f#4@2 g4@2 a#4@2 ~ g4@2 a#4@2 f#4@2 ~, ~@4 f#4 ~@3", Y: "c5@2 a#4@2 g4@2 f#4@2 f4@2 d#4@5 ~",
  Z: "c6@2 ~ a#5@2 g5@2 ~ f5@2 ~ d#5@2 f5@2 ~", AA: "f#5 g5@3 g5@3 ~ [f5,f#5] ~@3 g5@3 ~, ~@4 f#5 ~@3 g5@2 ~@2 f#5 ~@3",
  AB: "d#5@2 f5@2 g5@3 ~ a#5@3 ~ c6@2 ~@2", AC: "c6@3 a#5@3 g5@2 f5@2 d#5@2 ~ f5@2 ~",
  AD: "g5@2 ~ a#5@2 g5@2 ~ a#5@2 ~ g5@2 a#5@2 ~", AE: "g5@2 b5@2 ~ g5@2 ~ b5@3 g5@2 b5@2 ~",
  AF: "d#4@5 ~ d#4 ~@3 d#4@3 ~ d#4 ~", AG: "d4@2 ~@2 f4@11 ~", AH: "d#4@5 ~ e4 ~@3 e4@3 ~ e4@2",
  AI: "a4 [a4,a#4] ~@2 g4 [g4,a4] ~@2 a4 a#4 a4 ~ g4 a4 g4 ~", AJ: "f4 ~ f4@2 ~@2 f4 ~ a4 a#4 a4 ~ g4 a4 g4 ~",
  AK: "a4 a#4 a4 ~ g4 a4 g4 ~ f4 ~ f4 ~@3 f4 ~", AL: "g4@7 c5@9", AM: "a#4@6 d5@9 ~",
  AN: "e5@2 ~ e5@2 e5@2 ~ f5@2 ~ f5@2 f5@2 ~", AO: "g5@2 ~ g5@2 ~ g5@2 a5@2 ~ a5@2 ~ a5@2",
  AP: "a#5@2 ~ a#5@2 ~ a#5 ~ c6@2 ~ c6@2 ~ c6@2", AQ: "d6@2 ~ d6@2 ~ d6@2 e6@2 ~ e6@2 ~ e6@2",
  AR: "f6@2 ~ f6@2 ~ f6@2 g6@2 ~ g6@2 g6@2 ~", AS: "[g6@54 g5@2 c6@2 a#5 ~ g5@2 f5@2]/4", AT: "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 AJ AL AM ~@52 A@2 B@2 C@2 D@2 E@2 F@2 G@2 ~@2 AN@2 AO@2 AN@2 AO@2
  AN@2 AO@2 AP@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@3]/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@4]/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@3 a4@3]/2",
  S: "[a#4@3 a4@3 g4@15 ~@5 g4@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@19 ~ 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@2 f5@2 d#5@6]/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: "d5@5 c5 ~ a#4", AM: "g4",
  AN: "[~@4 g#4@2 ~@2 a#4 ~ f5@3 ~ d#5@8 c5 ~ d#5 ~ d#5@6]/2", AO: "c5/2", AP: "[~@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 I@2 M@2 N@2 ~@2 O@2 P@2 ~@16 Q@2 R@2 S@2 T@2 U@2 V@2 N@2 ~@2 W X
  Y@2 W Z AA ~ AB@2 AC AD AE AF AG AH@2 AI@2 AJ AK AA ~@52 A@2 B@2 C@2 D@2 E@2 F@2 G@2 ~@2 AL@2 AM@4 AN@4 AO@4 ~
>`.pickRestart({
  A: "[g5@5 ~ g5@19 ~@2 g5@2 g5@2 ~]/2", B: "[f5@2 ~ e5@2 ~ d5@19 ~@2 d5@2 ~ d5@2]/2",
  C: "[e5@3 d5@2 ~@2 c5@19 e5@3 e5 ~@2]/2", D: "[e5@3 d5@26 ~@3]/2", E: "[g5@5 ~ g5@19 ~ g5@2 ~ g5@2 ~]/2",
  F: "[f5@2 ~ e5@2 ~ d5@21 ~ d5@4]/2", G: "c5/2", H: "~@7 g5", I: "[g5@5 ~ g5@21 ~ g5@4]/2",
  J: "[f5@3 e5@3 d5@19 ~ d5@3 d5@2 ~]/2", K: "[e5@2 ~ d5@3 ~ c5@19 e5@3 e5 ~@2]/2",
  L: "[e5@2 ~ d5@21 ~ g5 ~@3 g5 ~@2]/2", M: "[f5@2 ~ g5@3 e5@2 d5@19 ~ d5@4]/2", N: "[c5@7 ~]/2",
  O: "[~@4 f5@3 ~ g5@2 a5@2 ~@2 d#5@9 ~ g5 ~@2 g5@4 ~]/2", P: "[g5@2 g5@29 ~]/2",
  Q: "[g5@5 ~ g5@19 ~ g5 ~ g5 ~ g5@2]/2", R: "[f5@2 ~ e5@2 ~ d5@19 ~ d5@3 d5@2 ~]/2",
  S: "[e5@3 d5@3 c5@19 ~ e5@2 ~ e5@2 ~, ~@6 d5 ~@25]/2", T: "[e5@5 ~ f5@18 g5@2 ~@2 g5@2 ~@2]/2",
  U: "[g5@5 ~ g5@19 ~@2 g5@2 g5@3]/2", V: "[~ f5@2 g5@2 e5@2 ~ d5@19 ~@5]/2", W: "~@4 f5@3 ~ g5@2 a5@2 ~@2 d#5@2",
  X: "~@2 c5@2 ~@2 c5@2 g5 ~ g5@5 ~", Y: "[g5@7 ~]/2", Z: "~@2 c5@3 ~ c5@2 g5 ~ g5@4 ~@2", AA: "g5",
// … 144 more lines