Strudelify

Nearer My God to Thee

attr. to Lowell Mason

KeyG majorTempo145 bpm
0:00/0:00
// Nearer My God to Thee — attr. to Lowell Mason
// 145 bpm, 7/8, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 7/8 at bar 34, 4/4 at bar 52, 7/8 at bar 61, ...) are rendered on a constant 7/8 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/149883; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 131 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(145/3.5)

// 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 · cello · "Violoncello"
const cello = note(`<
  A@2 B@2 C@4 D@5 E@4 F@8 G@2 H@8 I@8 J@6 ~@2 K@3 L@2 M@2 N@8 O@2 P@6 Q@8 R S@7 T@6 U V W X Y Z AA@4 AB@3 AC AD AE AF AG
  AH AI AJ AK AL AM AN AO AP AQ AR@6 AS
>`.pickRestart({
  A: "[~@7 [e2,e4]@17]/2", B: "[~@3 [e2,f#4]@12 [c2,g4]@19 [c2,g4]@6 [c2,g4]@8]/2",
  C: "[~@17 b4@25 g4@12 a4@12 ~ [b2,b4]@29, ~@17 g2@50 ~@29]/4", // B
  D: "[~@21 [e2,e4]@37 [d2,f#4]@12 [c2,g4]@19 [c2,g4]@6 [c2,g4]@12 ~@13]/5", // E D C5
  E: "[g4@6 a4@6 ~@13 b2@12 d#4@6 ~ e4@6 [e2,e4]@37 ~@9, a2@25 ~@12 b2@12 ~@47, ~@12 f#4@25 ~@59]/4", // E
  F: "[~@3 b4@25 a4@12 ~ g4@12 g4@19 e4@6 e4@25 d4@25 g4@12 b4@6 a4@6 ~ b4@24 a4@12 ~@3, ~@3 e2@50 c3@37 ~@13 g2@50 b2@37 ~@2]/8",
  G: "[~@10 b4@25 a4@12 ~, ~@10 e2@37 ~]/2",
  H: "[[d2,g4]@12 g4@19 e4@6 e4@25 d4@12 g4@12 ~ f#4@12 d#4@6 e4@6 [e2,e4]@37 ~@13 b4@24 a4@7, ~@12 c2@37 ~@13 a2@25 b2@25 ~@80]/8", // G5 E
  I: "[~@7 g4@10 g4@21 e4@3 e4@21 ~@3 d4@24 g4@14 b4@7 a4@3 b4@24 a4@21 ~@3 b4@24 a4@7]/8",
  J: "[~@7 g4@10 g4@21 e4@3 e4@21 ~@3 d4@14 g4@10 f#4@14 d#4@10 e4@24 ~@7]/6",
  K: "[~@17 [c2,d4]@27 ~ [c2,e4]@13 [c2,d4]@14]/3", L: "[[d2,d4]@7 [d2,b3]@2 [e2,d4]@7]/2",
  M: "[~@7 [c2,d4]@27 [c2,e4]@14]/2", // Csus2 C
  N: "[c3@7 b2@7 [a2,d4]@20 b3@3 ~ a3@3 b3@14 a3@7 ~@7 b4@24 a4@13 g4@10 ~ g4@20 e4@3 ~ e4@21 ~@3 d4@13 g4@10 ~ f#4@3, d4@14 ~@20 a2@7 b2@21 ~@130]/8", // D5
  O: "[~@10 d#4@10 ~ e4@7 ~@20]/2",
  P: "[~@21 e2@6 e2@7 e2@7 e2@3 ~ e2@6 e2@7 e2@7 e2@3 ~ c2@6 c2@7 c2@7 [c2,e4]@3 ~ c2@6 c2@7 c2@10 ~ g2@6 g2@7 g2@7 g2@3 ~ [g2,g4]@3, ~@21 b4@24 a4@13 g4@10 ~ g4@21 ~@3 e4@21 ~@3 d4@24 ~@3]/6", // C G
  Q: "[~@3 g2@7 [g2,b4]@7 [g2,a4]@3 ~ b2@6 b2@7 b2@7 b2@3 ~ b2@6 b2@7 b2@7 b2@3 ~ e2@6 e2@7 e2@7 e2@3 ~ e2@6 e2@7 e2@7 e2@3 ~ c2@6 c2@7 c2@7 [c2,e4]@3 ~ c2@6 c2@7 c2@10 ~ a2@6 a2@7 a2@7 a2@3 ~ [b2,f#4]@3, ~@21 b4@24 a4@21 ~@3 b4@24 a4@13 g4@10 ~ g4@21 ~@3 e4@21 ~@3 d4@13 g4@10 ~@4]/8", // G Gsus2 C B5
  R: "~@3 b2@3 ~ b2@3 b2@7 b2@3 ~ [e2,e4]@3, ~@5 d#4@5 ~@2", // E
  S: "[~@3 e2@7 e2@7 e2@3 ~ e2@6 e2@7 e2@7 e2@3 ~ e2@6 e2@7 e2@7 e2@3 ~ e3@6 e3@7 e3@7 e3@3 ~ d4@27 e4@14 [c2,d4]@13 [d2,d4]@21, ~@93 c2@41 ~@34]/7", // Csus2 D
  T: "[[d2,b3]@7 [e2,d4]@21 ~@6 [c2,d4]@27 ~ [c2,e4]@13 c3@7 b2@7 [a2,d4]@21 b3@3 a3@3 ~ b3@13 a3@7 ~@7, ~@75 d4@14 ~@21 a2@7 b2@21 ~@6]/6", // G E7 Csus2 C D5
  U: "e2@7 e2@7 e2@7 e2@3, b4", V: "e2@7 e2@7 e2@7 e2@3, a4@7 g4@5", W: "c2@7 c2@7 c2@7 [c2,e4]@3, g4@7 ~",
  X: "c2@7 c2@7 c2@10, e4@7 ~", Y: "a2@7 a2@7 a2@7 a2@3, d4@7 g4@5",
  Z: "b2@7 b2@3 b2@3 ~ [b2,d#5]@7 [b2,e5]@3, b4@7 ~@5", // B E5
  AA: "[e2@3 ~@4 e2@7 e2@7 e2@3 e2@7 e2@7 e2@7 e2@3 g#2@3 ~@4 e3@7 e3@7 e3@3 e3@7 g#2@7 g#2@7 [g#2,f5]@3, e5@31 ~]/4", // C#
  AB: "[g#2@3 ~@4 e3@7 e3@7 e3@3 e3@7 a2@7 a2@7 a2@3 b2@7 b2@7 b2@7 b2@3, e5]/3", AC: "b2@7 b2@7 b2@7 b2@3, d#5",
  AD: "c2@7 c2@7 c2@7 c2@3, e5", AE: "c2@7 c2@7 c2@7 c2@3, d5@7 c5@5", AF: "f2@7 f2@7 f2@7 [f2,a4]@3, c5@7 ~",
  AG: "f2@7 f2@7 f2@10, a4@7 ~", AH: "c2@7 c2@7 c2@7 c2@3, g4", AI: "c2@7 c2@7 [c2,e5]@7 [c2,d5]@3, c5@7 ~@5",
  AJ: "e2@7 e2@7 e2@7 e2@3, e5", AK: "e2@7 e2@7 e2@10, d5@7 ~", AL: "a2@7 a2@7 a2@7 a2@3, e5",
  AM: "b2@7 b2@7 c3@7 c2@3, d5@7 c5@5", AN: "d2@7 d2@7 d2@7 [d2,a4]@3, c5@7 ~", AO: "e2@7 e2@7 f2@7 f2@3, a4@7 ~",
  AP: "e2@7 e2@7 e2@7 e2@3, a4@7 c5@5", AQ: "e2@7 e2@3 e2@3 ~ [e2,g#5]@7 [e2,a5]@3, e5@7 ~@5",
  AR: "[a2@7 a2@7 a2@7 a2@3 a2@7 a2@7 a2@7 a2@3 f2@7 f2@7 f2@7 f2@3 f2@7 f2@7 f2@10 d2@7 d2@7 d2@7 d2@3 e2@7 e2@3 [e2,a5]@3 ~ [e2,g#5]@7 [e2,g#5]@3, a5@65 ~@7]/6", // A5 E
  AS: "[a2,a5]@5 ~@7", // A
})).s("gm_cello").gain(0.3)

// other · cello
const cello_2 = note(`<
  A@2 B@2 C@2 D@7 E@4 ~@34 F@3 G@2 H@2 I@3 ~@7 J@6 K@8 L M@5 N@2 O@6 P Q R@2 S T U V W V W V X@2 P@2 Y@2 Z AA@2 AB P@2
  AC AD AE AF S@3 AG S AF AH
>`.pickRestart({
  A: "[~@7 e4@17]/2", B: "[~@3 f#4@12 g4@19 g4@6 g4@8]/2", C: "[~@17 b4@25 g4@6]/2",
  D: "[~@6 a4@12 ~ f#4@37 ~@13 e4@37 f#4@12 g4@19 g4@6 g4@12 ~@13]/7", E: "[g4@6 a4@6 f#4@25 d#4@6 ~ e4@6 e4@37 ~@9]/4",
  F: "[~@17 d4@27 ~ c4@13 c4@14]/3", G: "[a3@7 a3@2 g3@7]/2", H: "[~@7 g3@27 g3@14]/2",
  I: "[g3@14 a3@13 e3@7 e3@7 g3@14 a3@7 ~@10]/3", J: "[~@21 g4@24 f#4@13 e4@10 ~ e4@20 c4@3 ~ c4@21 ~@3 d4@24 b3@3]/6",
  K: "[~@10 d4@10 ~ e4@24 f#4@21 ~@3 g4@24 f#4@13 e4@10 ~ e4@20 c4@3 ~ c4@21 ~@3 c4@13 e4@10 ~ e4@3]/8",
  L: "~@10 d#4@10 ~ e4@3",
  M: "[~@3 e4@7 e4@7 e4@3 ~ f#4@6 f#4@7 f#4@7 f#4@3 ~ g4@6 g4@7 g4@7 g4@3 ~ a4@6 a4@7 b4@7 d4@3 ~ d4@27]/5",
  N: "[e4@14 d4@13 d4@21]/2", O: "[b3@7 d4@21 ~@6 d4@27 ~ e4@13 d4@14 d4@21 b3@7 a3@13 b3@7 ~@7]/6",
  P: "e4@7 e4@7 e4@7 e4@3", Q: "f#4@7 f#4@7 f#4@7 f#4@3", R: "g4@7 g4@7 g4@3 f#4@3 ~ g4@3", S: "a4@7 a4@7 a4@7 a4@3",
  T: "b4@7 b4@3 b4@3 ~ d#5@7 e5@3", U: "e5@7 ~@17", V: "~@7 e4@7 e4@7 e4@3", W: "e4@7 ~@17", X: "f#4/2",
  Y: "f4@7 f4@7 f4@3 e4@3 ~ f4@3", Z: "g4@7 e4@7 e4@7 d4@3", AA: "e4@7 e4@7 e4@7 d4@3",
  AB: "e4@7 e4@7 e4@3 d4@3 ~ e4@3", AC: "f4@7 f4@7 f4@7 f4@3", AD: "g4@7 g4@7 f4@3 e4@3 ~ f4@3",
  AE: "a4@7 a4@7 a4@3 b4@3 ~ a4@3", AF: "a4@7 a4@3 a4@3 ~ g#4@7 g#4@3", AG: "a4@7 a4@7 a4@10", AH: "a4@5 ~@7",
})).s("gm_cello").gain(0.3)

// other · cello · soft notes
const cello_soft = note("<~@17 A@4 B@4 C@2 D@7 ~@97>".pickRestart({
  A: "[~@3 e4@37 ~ f#4@12 g4@37 ~@6]/4", B: "[~@7 b4@25 g4@12 a4@12 ~ f#4@37 ~@2]/4", C: "[~@10 e4@37 ~]/2",
  D: "[f#4@12 e4@37 ~@13 g4@6 a4@6 f#4@25 d#4@6 e4@6 e4@37 ~@20]/7",
})).s("gm_cello").gain(0.2)

// other · pizzicato strings
const pizzicato_strings = note("<~@33 A B C D E F G H I B C D J H K B C L M ~@8 N@8 ~@63>".pickRestart({
  A: "~@17 e3@7", B: "e3@7 e3@7 e3@3 f#3@7", C: "f#3@7 f#3@7 f#3@3 g3@7", D: "g3@7 g3@3 f#3@3 ~ g3@3 g3@7",
  E: "g3@7 g3@3 f#3@3 ~ g3@3 b3@7", F: "g3@7 g3@7 g3@3 g3@7", G: "g3@7 g3@7 a3@3 f#3@7", H: "f#3@7 f#3@7 e3@3 f#3@7",
  I: "f#3@7 f#3@3 e3@3 ~ f#3@3 e3@7", J: "g3@7 g3@3 f#3@3 ~ g3@3 a3@7", K: "f#3@3 f#3@3 ~ f#3@7 f#3@3 e3@3 ~@4",
  L: "g3@7 g3@7 g3@3 a3@7", M: "a3@7 b3@7 d4@3 ~@7",
  N: "[~@21 e4@6 e4@7 e4@7 e4@3 ~ f#4@6 f#4@7 f#4@7 f#4@3 ~ g4@6 g4@7 g4@3 ~ f#4@3 g4@3 ~ g4@6 g4@7 g4@3 ~ f#4@3 g4@3 ~ a4@6 f#4@7 f#4@7 e4@3 ~ f#4@6 f#4@3 ~ f#4@3 f#4@7 f#4@3 ~ e4@7 ~@20]/8",
})).s("gm_pizzicato_strings").gain(0.2)

// other · cello
const cello_3 = note(`<
  A@2 B@2 C@4 D@5 E F G@2 H@4 I@4 J@4 K@5 ~@17 L@3 M@2 N@2 O@3 ~@7 P@8 Q@7 R@7 S@6 T U V@2 W X Y Z AA Z AB AC AD AE AF@2
  AG@2 AH AI AJ AK AD AL AM AN AO AP AQ@2 AR AS AT AU AV
>`.pickRestart({
  A: "[~@7 e3@17]/2", B: "[~@3 e3@12 e3@19 e3@6 e3@8]/2", C: "[~@17 d4@50 e4@25 d#4@4]/4",
  D: "[~@21 e3@49 e3@19 e3@6 e3@12 ~@13]/5", E: "c3", F: "~ e3@12 d#3@11", G: "[~@2 e3@37 ~@9]/2", H: "[~ e3@29 ~@2]/4",
  I: "[~@7 d3@50 e3@24 d#3@12 ~@3]/4", J: "[~@5 e3@43]/4", K: "[~@14 c3@25 e3@12 d#3@12 e3@37 ~@20]/5",
  L: "[~@17 g3@27 ~ g3@13 g3@14]/3", M: "[g3@14 f#3@7 f#3@6 a3@14 g3@7]/2", N: "[~@7 g3@27 g3@14]/2",
  O: "[g3@14 g3@20 g3@7 g3@21 ~@10]/3",
  P: "[~@21 b3@6 b3@7 b3@7 b3@3 ~ b3@6 b3@7 b3@7 b3@3 ~ c4@6 c4@7 c4@3 ~ b3@3 c4@3 ~ c4@6 c4@7 c4@3 ~ b3@3 c4@3 ~ d4@6 b3@7 b3@7 a3@3 ~ b3@6 b3@7 b3@7 a3@3 ~ b3@6 b3@7 b3@7 a3@3 ~ b3@3]/8",
  Q: "[~@3 b3@7 b3@3 ~ a3@3 b3@3 ~ b3@6 b3@7 b3@7 b3@3 ~ b3@6 b3@7 b3@7 b3@3 ~ c4@6 c4@7 c4@3 ~ b3@3 c4@3 ~ c4@6 c4@7 c4@3 ~ b3@3 c4@3 ~ c4@6 c4@7 c4@7 c4@3 ~ b3@6 b3@3 ~ b3@3 b3@7 a3@3 ~ b3@3]/7",
  R: "[~@3 e3@7 e3@7 e3@3 ~ f#3@6 f#3@7 f#3@7 f#3@3 ~ g3@6 g3@7 g3@7 g3@3 ~ a3@6 a3@7 b3@7 b3@3 ~ g3@41 g3@13 g3@14 f#3@7]/7",
  S: "[f#3@7 a3@14 g3@7 ~@6 g3@27 ~ g3@13 g3@14 a3@14 e3@7 e3@7 e3@13 d#3@7 ~@7]/6", T: "e3@7 e3@7 e3@7 e3@3",
  U: "f#3@7 f#3@7 f#3@7 f#3@3", V: "g3@7 g3@7 g3@3 f#3@3 ~ g3@3", W: "g3@7 f#3@7 f#3@7 e3@3",
  X: "f#3@7 f#3@3 f#3@3 ~ f#3@7 f#3@3", Y: "e3@7 ~@17", Z: "~@7 b3@7 b3@7 b3@3", AA: "b3@7 ~@17", AB: "c4@7 ~@17",
  AC: "~@7 c4@7 c4@7 c4@3", AD: "c4@7 c4@7 c4@7 c4@3", AE: "d#4@7 d#4@7 d#4@7 d#4@3", AF: "e4@7 e4@7 e4@7 e4@3",
  AG: "c4@7 c4@7 c4@3 b3@3 ~ c4@3", AH: "e4@7 c4@7 c4@7 c4@3", AI: "c4@7 c4@7 c4@7 d4@3", AJ: "b3@7 b3@7 b3@7 a3@3",
  AK: "b3@7 b3@7 b3@3 a3@3 ~ b3@3", AL: "d4@7 d4@7 e4@7 e4@3", AM: "d4@7 d4@7 d4@7 d4@3",
  AN: "e4@7 e4@7 f4@3 e4@3 ~ f4@3", AO: "e4@7 e4@7 e4@3 f4@3 ~ e4@3", AP: "e4@7 e4@3 e4@3 ~ f#4@7 f#4@3",
  AQ: "a4@7 a4@7 a4@7 a4@3", AR: "f4@7 f4@7 f4@7 f4@3", AS: "f4@7 f4@7 f4@3 e4@3 ~ f4@3",
  AT: "f4@7 f4@7 f4@3 g4@3 ~ f4@3", AU: "e4@7 e4@3 e4@3 ~ e4@7 e4@3", AV: "e4@5 ~@7",
})).s("gm_cello").gain(0.3)

// other · pizzicato strings
const pizzicato_strings_2 = note("<~@33 A B C D@2 E F G H B C D I J K B C L M ~@8 N@8 ~@63>".pickRestart({
  A: "~@17 e3@7", B: "e3@7 e3@7 e3@3 f#3@7", C: "f#3@7 f#3@7 f#3@3 g3@7", D: "g3@7 g3@3 f#3@3 ~ g3@3 g3@7",
  E: "g3@7 g3@7 g3@3 g3@7", F: "g3@7 g3@7 a3@3 f#3@7", G: "f#3@7 f#3@7 e3@3 f#3@7", H: "f#3@7 f#3@3 e3@3 ~ f#3@3 e3@7",
  I: "g3@7 g3@3 f#3@3 ~ g3@3 e3@7", J: "e3@7 e3@7 e3@3 e3@7", K: "e3@3 e3@3 ~ d#3@7 d#3@3 e3@3 ~@4",
  L: "g3@7 g3@7 g3@3 a3@7", M: "a3@7 b3@7 g3@3 ~@7",
  N: "[~@21 e3@6 e3@7 e3@7 e3@3 ~ f#3@6 f#3@7 f#3@7 f#3@3 ~ g3@6 g3@7 g3@3 ~ f#3@3 g3@3 ~ g3@6 g3@7 g3@3 ~ f#3@3 g3@3 ~ e3@6 e3@7 e3@7 e3@3 ~ e3@6 e3@3 ~ e3@3 d#3@7 d#3@3 ~ e3@7 ~@20]/8",
})).s("gm_pizzicato_strings").gain(0.2)

// other · pizzicato strings
const pizzicato_strings_3 = note("<~@33 A B C D E D F G H B C D I G J B C K L ~@8 M@8 ~@63>".pickRestart({
  A: "~@17 e3@7", B: "e3@7 e3@7 e3@3 f#3@7", C: "f#3@7 f#3@7 f#3@3 g3@7", D: "g3@7 g3@7 g3@3 g3@7",
  E: "g3@7 g3@3 f#3@3 ~ g3@3 b3@7", F: "g3@7 g3@7 a3@3 f#3@7", G: "f#3@7 f#3@7 e3@3 f#3@7",
  H: "f#3@7 f#3@3 e3@3 ~ f#3@3 e3@7", I: "g3@7 g3@3 f#3@3 ~ g3@3 a3@7", J: "f#3@3 f#3@3 ~ f#3@7 f#3@3 e3@3 ~@4",
  K: "g3@7 g3@7 g3@3 a3@7", L: "a3@7 b3@7 d4@3 ~@7",
  M: "[~@21 e3@6 e3@7 e3@7 e3@3 ~ e3@6 e3@7 e3@7 e3@3 ~ e3@6 e3@7 e3@7 e3@3 ~ e3@6 e3@7 e3@3 ~ d3@3 e3@3 ~ c3@6 c3@7 c3@7 c3@3 ~ e3@6 e3@3 ~ e3@3 d#3@7 d#3@3 ~ e3@7 ~@20]/8",
})).s("gm_pizzicato_strings").gain(0.2)

// other · cello
const cello_4 = note(`<
  A@2 B@2 C@4 D@5 E F G@2 H@4 I@4 J@2 K@7 ~@17 L@3 M@2 N@2 O@3 ~@7 P@8 Q@7 R@7 S@6 T@3 U V W X T@6 Y T@2 Z@2 AA T AB AC
  T@2 AD AE AC AF AG@2 AD AH AD AI AJ
>`.pickRestart({
  A: "[~@7 e3@17]/2", B: "[~@3 e3@12 c3@19 c3@6 c3@8]/2", C: "[~@17 b2@50 b2@29]/4",
  D: "[~@21 e3@37 d3@12 c3@19 c3@6 c3@12 ~@13]/5", E: "a2", F: "~ b2@12 b2@11", G: "[~@2 e3@37 ~@9]/2",
  H: "[~@3 e3@50 c3@37 ~@6]/4", I: "[~@7 b2@87 ~@2]/4", J: "[~@10 e3@37 ~]/2",
  K: "[d3@12 c3@37 ~@13 a2@25 b2@24 e3@37 ~@20]/7", L: "[~@17 e3@27 ~ e3@13 c3@14]/3", M: "[d3@7 d3@2 e3@7]/2",
  N: "[~@7 c3@27 c3@14]/2", O: "[c3@14 c3@20 c3@7 e3@14 d#3@7 ~@10]/3",
  P: "[~@21 e3@6 e3@7 e3@7 e3@3 ~ e3@6 e3@7 e3@7 e3@3 ~ c3@6 c3@7 c3@7 c3@3 ~ c3@6 c3@7 c3@10 ~ b2@6 b2@7 b2@7 b2@3 ~ b2@6 b2@7 b2@7 b2@3 ~ b2@6 b2@7 b2@7 b2@3 ~ b2@3]/8",
  Q: "[~@3 b2@7 b2@7 b2@3 ~ e3@6 e3@7 e3@7 e3@3 ~ e3@6 e3@7 e3@7 e3@3 ~ c3@6 c3@7 c3@7 c3@3 ~ c3@6 c3@7 c3@10 ~ c3@6 c3@7 c3@7 c3@3 ~ b2@6 b2@3 ~ b2@3 b2@7 b2@3 ~ e3@3]/7",
  R: "[~@3 e3@7 e3@7 e3@3 ~ e3@6 e3@7 e3@7 e3@3 ~ e3@6 e3@7 e3@7 e3@3 ~ e3@6 e3@7 e3@7 e3@3 ~ g2@41 g2@13 a2@21]/7",
  S: "[a2@7 b2@21 ~@6 g2@27 ~ g2@13 g2@14 a2@21 a2@7 b2@21 ~@6]/6", T: "e3@7 e3@7 e3@7 e3@3", U: "e3@7 e3@7 e3@10",
  V: "c3@7 c3@7 c3@7 c3@3", W: "b2@7 b2@3 b2@3 ~ b2@7 b2@3", X: "e3@3 ~@4 e3@7 e3@7 e3@3", Y: "d#3@7 d#3@7 d#3@7 d#3@3",
  Z: "f3@7 f3@7 f3@3 e3@3 ~ f3@3", AA: "g3@7 e3@7 e3@7 e3@3", AB: "e3@7 e3@7 e3@7 d3@3",
  AC: "e3@7 e3@7 e3@3 d3@3 ~ e3@3", AD: "f3@7 f3@7 f3@7 f3@3", AE: "e3@7 e3@7 f3@7 f3@3",
  AF: "e3@7 e3@3 e3@3 ~ g#3@7 g#3@3", AG: "a3@7 a3@7 a3@7 a3@3", AH: "f3@7 f3@7 f3@10",
  AI: "e3@7 e3@3 e3@3 ~ e3@7 e3@3", AJ: "e3@5 ~@7",
})).s("gm_cello").gain(0.3)

// other · pizzicato strings
const pizzicato_strings_4 = note("<~@33 A B C D E F G H I B C D J D K L M D N ~@8 O@8 ~@63>".pickRestart({
  A: "~@17 e3@7", B: "e3@7 e3@7 e3@3 f#3@7", C: "f#3@7 f#3@7 f#3@3 e3@7", D: "e3@7 e3@7 e3@3 e3@7",
  E: "e3@7 e3@3 d3@3 ~ e3@3 d3@7", F: "d3@7 d3@7 d3@3 d3@7", G: "d3@7 d3@7 d3@3 b2@7", H: "b2@7 b2@7 b2@3 d#3@7",
  I: "d#3@7 d#3@3 c#3@3 ~ d#3@3 e3@7", J: "e3@7 e3@3 d3@3 ~ e3@3 e3@7", K: "e3@3 e3@3 ~ d#3@7 d#3@3 e3@3 ~@4",
  L: "b2@7 b2@7 b2@3 b2@7", M: "b2@7 b2@7 b2@3 e3@7", N: "e3@7 e3@7 e3@3 ~@7",
  O: "[~@21 e3@6 e3@7 e3@7 e3@3 ~ e3@6 e3@7 e3@7 e3@3 ~ c3@6 c3@7 c3@7 c3@3 ~ c3@6 c3@7 c3@10 ~ a2@6 a2@7 a2@7 a2@3 ~ b2@6 b2@3 ~ b2@3 b2@7 b2@3 ~ e3@7 ~@20]/8",
})).s("gm_pizzicato_strings").gain(0.2)

// bass · pizzicato strings
const bass = note("<~@33 A B C D E F G H I B C D J K L B M N O ~@8 P@8 ~@63>".pickRestart({
  A: "~@17 e2@7", B: "e2@7 e2@7 e2@3 e2@7", C: "e2@7 e2@7 e2@3 c2@7", D: "c2@7 c2@7 c2@3 c2@7", E: "c2@7 c2@10 g2@7",
  F: "g2@7 g2@7 g2@3 g2@7", G: "g2@7 g2@7 g2@3 b2@7", H: "b2@7 b2@7 b2@3 b2@7", I: "b2@7 b2@7 b2@3 e2@7",
  J: "c2@7 c2@10 a2@7", K: "a2@7 a2@7 a2@3 b2@7", L: "b2@3 b2@3 ~ b2@7 b2@3 e2@3 ~@4", M: "e2@7 e2@7 e2@3 e3@7",
  N: "e3@7 e3@7 e3@3 e2@7", O: "e2@7 e2@7 e2@3 ~@7",
  P: "[~@21 e2@6 e2@7 e2@7 e2@3 ~ e2@6 e2@7 e2@7 e2@3 ~ c2@6 c2@7 c2@7 c2@3 ~ c2@6 c2@7 c2@10 ~ a2@6 a2@7 a2@7 a2@3 ~ b2@6 b2@3 ~ b2@3 b2@7 b2@3 ~ e3@7 ~@20]/8",
})).s("gm_pizzicato_strings").gain(0.2)

stack(
  cello, cello_2, cello_soft, pizzicato_strings, cello_3, pizzicato_strings_2, pizzicato_strings_3, cello_4,
  pizzicato_strings_4, bass
)