Strudelify

cry for the moon

EPICA

KeyF majorTempo90 bpm
0:00/0:00
// cry for the moon — EPICA
// 90 bpm, 4/4, key F 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, 3/4 at bar 24, 4/4 at bar 25, 2/4 at bar 75, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/3779156; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 150 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(90/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 · tremolo strings · "String Synthesizer"
const tremolo_strings = note(`<
  ~@5 A B@2 C B@4 D E@2 F@2 G@2 H@2 I J K L M N O P M N O P Q ~@5 R@2 S B@2 T@2 ~@22 U V U W X Y Z AA ~ AB Z AA AC AD AE
  AF AG AH AE AF AG AI ~@3 AJ AK AL AM@3 AN@2 ~ AO AN@2 ~ AP M N O P M N O P Q ~@14 AQ AR AS ~ AT AR AS AU AV AW AX ~ AY
  AW AX AZ BA BB@2
>`.pickRestart({
  A: "~@7 a3", B: "[f4@3 d4 e4@10 a3@2]/2", C: "d4@3 g3 a3@4", D: "d4@3 g3 ~@2 c3@2, ~ a3",
  E: "[f4@3 d4 e4@10 a3@2, bb2@7 ~]/2", F: "[f4@3 d4 e4@8 f4@2 g4@2]/2", G: "[bb4@3 g4 a4@7 g4 f4@2 e4@2]/2",
  H: "[f4@3 d4 e4@8 e4@2 f4@2]/2", I: "g4 d5", J: "bb4@3 a4 g4@2 f4@2", K: "f4", L: "e4", M: "~ d4!2 e4!2 f4!2 e4",
  N: "~ e4!2 f4!2 e4 e4@2", O: "~ a3!2 d4!2 e4!2 d4", P: "~ f4!2 e4 ~ g4!2 f4", Q: "~ bb4!2 a4 g4 a4 g4@2",
  R: "[f4@3 d4 e4@12]/2", S: "d4", T: "[f4@3 d4 ~@2 a4@2 g4 f4 e4@6, ~@2 e4@3 ~@3]/2",
  U: "d5@2 d5 e5 f5 e5 d5@2 d5 c5 d5 a4@5", V: "d5@2 d5 e5 f5 e5 d5@3 d5 a4 d5 c5@2 d5@2", W: "c5", X: "bb4",
  Y: "a4@8 ~@2 f4!2 f4@2 e4@2", Z: "f4@2 e4@2 a4@2 e4@2 ~@2 f4!2 f4@2 e4@2", AA: "f4 e4 a4 e4 ~@4",
  AB: "db5@8 ~@2 f4!2 f4@2 e4@2", AC: "~@11 f4 d4 e4 f4 g4", AD: "f4 e4 d4 c4 d4@4 ~@2 d4@2 d4@2 e4@2",
  AE: "e4 f4!2 e4 ~ e4!2 f4", AF: "f4 e4 e4@2 ~ a3!2 d4", AG: "d4 e4!2 d4 ~ f4!2 e4", AH: "~ g4!2 f4 ~ d4!2 e4",
  AI: "~ g4!2 f4 ~@4", AJ: "~@8 d5@2 d5 e5 f5 e5 d5@2", AK: "d5 c5 d5 a4@5 d5@2 d5 e5 f5 e5 d5@2",
  AL: "~ d5 a4 d5 c5@2 d5@2 d5@2 d5 e5 f5 e5 d5@2", AM: "[d5 c5 d5 a4@5 c5@16 bb4@16 a4@8]/3",
  AN: "~@2 f4!2 f4@2 e4@2 f4@2 e4@2 a4@2 e4@2", AO: "~ db5", AP: "~@3 f4 d4 e4 f4 g4 f4 e4 d4 c4 d4@4", AQ: "~@14 f4!2",
  AR: "f4@2 e4@2 f4@2 e4@2 a4@2 e4@2 ~@2 f4!2", AS: "f4 e4 f4 e4 a4 e4 ~@2", AT: "~@4 db5@8 ~@2 f4!2", AU: "~@15 f4",
  AV: "d4 e4 f4 g4 f4 e4 d4 c4 d4@4 ~@2 g4!2", AW: "g4@2 gb4@2 g4@2 gb4@2 b4@2 gb4@2 ~@2 g4!2",
  AX: "g4 gb4 g4 gb4 b4 gb4 ~@2", AY: "~@4 eb5@8 ~@2 g4!2", AZ: "~@15 g4", BA: "e4 gb4 g4 a4 g4 gb4 e4 d4 e4@4 ~@4",
  BB: "[~@6 g4@4 a4 g4 f4 e4 ~@2]/2",
})).s("gm_tremolo_strings").gain(0.35)

// other · string ensemble 1 · "Violinen"
const string_ensemble_1 = note(`<
  ~@13 A B@2 C@2 D@2 E F G H I@2 J K L M J K L M N O@2 P Q@2 R@2 S T@4 U V W X U V U V Y Z Y AA U V U AB AC AD ~@7 AE AF
  AG AH AI ~ AJ AH AI ~ AK AL AM AN AO AL AM AN AP ~@6 AQ AR@2 AS@2 ~@2 AS@2 ~@2 J K L M J K L M N U V U V Y Z Y Z AT AU
  AV AW AX@3 AY AZ ~ BA AY AZ ~ BB BC BD ~ BB BC BD ~@2 BE@2
>`.pickRestart({
  A: "~@3 c3", B: "bb2/2", C: "c3/2", D: "[d3,a3]/2", E: "c3@2 ~@5 f3", F: "e3@3 c3", G: "d3@3 e3",
  H: "f3@2 g3 a3 bb3@4", I: "[a2,a3]/2", J: "~ d4!2 e4!2 f4!2 e4", K: "~ e4!2 f4!2 e4 e4@2", L: "~ a3!2 d4!2 e4!2 d4",
  M: "~ f4!2 e4 ~ g4!2 f4", N: "~ bb4!2 a4 g4 a4 g4@2", O: "[f3@2 e3@5 a2]/2", P: "d3@3 g2 a2@4",
  Q: "[f3@3 d3 e3@10 a2@2]/2", R: "[f3@3 d3 e3@12]/2", S: "d3", T: "[f3@3 d3 e3@10 ~@2 f3@3 d3 e3@12, ~@7 a2@5 ~@4]/4",
  U: "d6 ~ a5 ~ bb5 ~ g5 a5 d5 f5 g5 ~ e5 ~ f5 ~", V: "d6 d5 a5 ~ bb5 ~ g5 a5 ~ f5 g5 ~ f5@2 e5@2",
  W: "d6 ~ a5 ~ bb5 ~ g5 a5 ~ f5 g5 ~ e5 ~ f5 ~", X: "d6 ~ a5 ~ bb5 ~ g5 a5 ~ f5 g5 ~ f5@2 e5@2",
  Y: "bb5 ~ f5 ~ gb5 ~ eb5 f5 bb4 db5 eb5 ~ c5 ~ db5 ~", Z: "bb5 bb4 f5 ~ gb5 ~ eb5 f5 ~ db5 eb5 ~ db5@2 c5@2",
  AA: "bb5 bb4 f5 ~ gb5 ~ eb5 f5 ~ db5 eb5 ~ f5@2 e5@2", AB: "d6 d5 a5 ~ bb5 ~ g5 a5 d6 d5 a5 ~ bb5 ~ g5@2",
  AC: "g3@4 a3 bb3@2 d4@7 d4@2", AD: "e4@4 bb4 bb4@2 a4@9", AE: "[d3,g4]@3 f4 e4@4", AF: "d4",
  AG: "db4@8 ~@2 f4!2 f4@2 e4@2", AH: "f4@2 e4@2 a4@2 e4@2 ~@2 f4!2 f4@2 e4@2", AI: "f4 e4 a4 e4 ~@4",
  AJ: "~@10 f4!2 f4@2 e4@2", AK: "~@5 d4!2 e4", AL: "e4 f4!2 e4 ~ e4!2 f4", AM: "f4 e4 e4@2 ~ a3!2 d4",
  AN: "d4 e4!2 d4 ~ f4!2 e4", AO: "~ g4!2 f4 ~ d4!2 e4", AP: "~ g4!2 f4 ~@4", AQ: "~@4 [d3,g4]@3 f4",
  AR: "[e4 d4@2 db4]/2", AS: "~@2 f4!2 f4@2 e4@2 f4@2 e4@2 a4@2 e4@2",
  AT: "gb5@2 f5@2 d6 ~ a5 ~ bb5 ~ g5 a5 d5 f5 g5 ~", AU: "e5 ~ f5 ~ d6 d5 a5 ~ bb5 ~ g5 a5 ~ f5 g5 ~",
  AV: "f5@2 e5@2 d6 ~ a5 ~ bb5 ~ g5 a5 d5 f5 g5 ~", AW: "e5 ~ f5 ~ d6 d5 a5 ~ bb5 ~ g5 a5 d6 d5 a5 ~",
  AX: "[bb5 ~ g5@2 g3@4 a3 bb3@2 d4@7 d4@2 e4@4 bb4 bb4@2 a4@17 ~@2 f4!2]/3",
  AY: "f4@2 e4@2 f4@2 e4@2 a4@2 e4@2 ~@2 f4!2", AZ: "f4 e4 f4 e4 a4 e4 ~@2", BA: "~@14 f4!2", BB: "~@14 g4!2",
  BC: "g4@2 gb4@2 g4@2 gb4@2 b4@2 gb4@2 ~@2 g4!2", BD: "g4 gb4 g4 gb4 e4@2 ~@2", BE: "[~@6 g4@4 a4 g4 f4 e4 ~@2]/2",
})).s("gm_string_ensemble_1").gain(0.35)

// other · string ensemble 1 · "Violinen" · soft notes
const string_ensemble_1_soft = note(`<
  ~@47 A B C D A B A B E F E F A B A G ~@54 A B A B E F E F H I H J K ~@20
>`.pickRestart({
  A: "~ d5 ~ d5 ~ d5 ~@5 d5 ~ d5 ~ d5", B: "~@3 d5 ~ d5 ~@2 d5 ~@2 d5 ~@4", C: "~ d5 ~ d5 ~ d5 ~@2 d5 ~@2 d5 ~ d5 ~ d5",
  D: "~ d5 ~ d5 ~ d5 ~@2 d5 ~@2 d5 ~@4", E: "~ bb4 ~ bb4 ~ bb4 ~@5 bb4 ~ bb4 ~ bb4",
  F: "~@3 bb4 ~ bb4 ~@2 bb4 ~@2 bb4 ~@4", G: "~@3 d5 ~ d5 ~@5 d5 ~ d5 ~@2", H: "~@5 d5 ~ d5 ~ d5 ~@5 d5",
  I: "~ d5 ~ d5 ~@3 d5 ~ d5 ~@2 d5 ~@2 d5", J: "~ d5 ~ d5 ~@3 d5 ~ d5 ~@5 d5", K: "~ d5 ~@14",
})).s("gm_string_ensemble_1").gain(0.2)

// other · tenor sax · "Tenor Saxophon"
const tenor_sax = note(`<
  ~@13 A B C D E F@2 G H I J K E ~@14 L M N O@2 P Q R ~@3 S ~ S ~ T ~ T ~ S ~ S U ~@6 V@3 W X Y ~@7 Z@3 AA AB@3 AC@2 ~@3
  AD@6 ~@8 AE AF AG AH AE AF AG AI@2 S ~ S ~ T ~ T ~ AJ ~ AJ ~@22
>`.pickRestart({
  A: "~@7 c4", B: "bb3", C: "c4 d4", D: "d4", E: "e4", F: "f4/2", G: "e4 d4", H: "e4@2 e4 c4", I: "d4@3 e4",
  J: "f4@3 f4", K: "f4", L: "~@3 f4", M: "e4@3 d4 a3@2 g3@2", N: "a3@3 f4", O: "[e4@3 d4 bb3@12]/2", P: "a3@3 a4",
  Q: "g4", R: "d5 ~@15", S: "a4 ~@15", T: "d4 ~@15", U: "g4 a4", V: "d3@7 eb3", W: "c3", X: "bb2", Y: "a2 ~",
  Z: "[~@2 d4@3 d4 c4@3 c4 g3@2]/3", AA: "a3 bb3 a3@2", AB: "[db4@2 d4@3 d4 c4@3 c4 g3@2]/3", AC: "[a3 bb3 a3@4 ~@2]/2",
  AD: "[~@4 d3@7 eb3 d3@7 eb3 d3@7 eb3 c3@8 bb2@8 a2@4]/6", AE: "d4@3 d4", AF: "c4@3 c4", AG: "g3@2 a3 bb3",
  AH: "a3 db4", AI: "a3", AJ: "~@4 a4 ~@11",
})).s("gm_tenor_sax").gain(0.3)

// other · french horn · "Horn in F"
const french_horn = note(`<
  ~@13 A B C D E F@2 G H I J K E ~@9 L@2 D M@2 L@2 D M@2 N@2 ~@4 O ~ O ~ P ~ P ~ O ~ O Q ~@9 R S T ~@7 U@3 V W@3 X@2 ~@6
  Y@3 ~@8 Z AA AB AC Z AA AB AD@2 O ~ O ~ P ~ P ~ AE ~ AE ~@22
>`.pickRestart({
  A: "~@3 c4", B: "bb3", C: "c4 d4", D: "d4", E: "e4", F: "f4/2", G: "e4 d4", H: "e4@2 e4 c4", I: "d4@3 e4",
  J: "f4@3 f4", K: "f4", L: "d4/2", M: "bb3/2", N: "c4/2", O: "a4 ~@15", P: "d4 ~@15", Q: "g4 a4", R: "c5@3 c5",
  S: "bb4@3 bb4", T: "a4 ~", U: "[~@2 d4@3 d4 c4@3 c4 g3@2]/3", V: "a3 bb3 a3@2", W: "[db4@2 d4@3 d4 c4@3 c4 g3@2]/3",
  X: "[a3 bb3 a3@4 ~@2]/2", Y: "[~@2 c5@3 c5 bb4@3 bb4 a4@2]/3", Z: "d4@3 d4", AA: "c4@3 c4", AB: "g3@2 a3 bb3",
  AC: "a3 db4", AD: "a3", AE: "~@4 a4 ~@11",
})).s("gm_french_horn").gain(0.3)

// chords · distortion guitar · "Elektrische Gitarre"
const distortion_guitar = note(`<
  ~@35 A@2 B C@2 A@2 B C@2 D@2 E F G@2 H I H I J K J L H I H M N O P@3 Q P@3 Q R S@3 T U@3 T V@3 W X@3 Y@2 Z@2 AA AB Z@2
  AA AC AD AE@2 AF@2 AE@2 AF@2 AG AH AI AJ AG AH AI AK AL H I H I J K J K AM H AN AO AP AQ AR AS AT AU AV AS AT AU AW AX
  AY AZ BA AX AY AZ BB BC BD
>`.pickRestart({
  A: "[a2,d3,a3]/2", B: "[a2,d3,a3]", C: "[f2,bb2,f3]/2", D: "[g2,c3,g3]/2", E: "[a2,d3,a3] ~@15", F: "~@6 f3 e3",
  G: "[d3@24 ~ d3 e3 d3 e3!4]/2", H: "d3!16", I: "d3!12 f3@2 e3@2", J: "bb2!16", K: "bb2!12 db3@2 c3@2",
  L: "bb2!12 gb3@2 f3@2", M: "f3!8 [f3,g3] g3!5 [g4,g5]@2",
  N: "[a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3]!2 ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3]!2 ~ [a2,e3,a3] ~", // A5
  O: "[a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3]!2 ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] [a2,e3,a3]@4", // A5
  P: "[a2,d3,a3]@2 [a2,d3]!2 [a2,d3,a3]@2 [a2,d3]!2 ~ [a2,d3] [a2,d3,a3]@2 [a2,d3]!2 [bb2,eb3,bb3]@2", // D5 Eb5
  Q: "[g2,c3,g3]@8 [g2,c3]!2 ~ [g2,c3]!2 ~ [g2,c3]!2", R: "[f2,bb2,f3]@8 [f2,bb2]!2 ~ [f2,bb2]!2 ~ [f2,bb2]!2",
  S: "[[e2,a2,e3,a3]@8 [a2,d3,a3]@2 [a2,d3]!3 ~ [a2,d3,a3]@6 [a2,d3,a3]@2 [g2,c3,g3]@2 [a2,d3,a3]@2 [a2,d3]!3 ~ [a2,d3,a3]@6 [a2,d3,a3]@2 [g2,c3,g3]@2 [f2,bb2,f3] ~ [f2,bb2]!2 [f2,bb2,f3] ~ [f2,bb2]!2]/3", // A5 D5 C5 D5 C5 Bb5
  T: "[e2,a2,e3] ~ [e2,a2]!2 [e2,a2,e3] ~ [e2,a2]!2 [f2,bb2,f3] ~ [f2,bb2]!2 [f2,bb2,f3] ~ [f2,bb2]!2", // A5 Bb5
  U: "[[e2,a2,e3] ~ [e2,a2]!2 [e2,a2,e3] ~ [e2,a2]!2 [a2,d3,a3]@2 [a2,d3]!3 ~ [a2,d3,a3]@6 [a2,d3,a3]@2 [g2,c3,g3]@2 [a2,d3,a3]@2 [a2,d3]!3 ~ [a2,d3,a3]@6 [a2,d3,a3]@2 [g2,c3,g3]@2 [f2,bb2,f3] ~ [f2,bb2]!2 [f2,bb2,f3] ~ [f2,bb2]!2]/3", // A5 D5 C5 D5 C5 Bb5
  V: "[[e2,a2,e3] ~ [e2,a2]!2 [e2,a2,e3] ~ [e2,a2]!2 [d3,a3]@16 [c3,g3]@16 g2@8]/3", W: "a2 bb2 a2@2",
  X: "[db3 [d3,a3]@2 [c3,g3]@2 g2]/3", Y: "[a2@4 bb2@4 a2@16 [a2,d3,a3]@2 [a2,d3]!2 [a2,d3,a3]@2 [a2,d3]!2]/2",
  Z: "~ [a2,d3] [a2,d3,a3]@2 [a2,d3]!2 [bb2,eb3,bb3]@2 [a2,d3,a3]@2 [a2,d3]!2 [a2,d3,a3]@2 [a2,d3]!2", // D5 Eb5 D5
  AA: "~ [a2,d3] [a2,d3,a3]@2 [a2,d3]!2 [bb2,eb3,bb3]@2 [g2,c3,g3]@8", // D5 Eb5 C5
  AB: "[g2,c3]!2 ~ [g2,c3]!2 ~ [g2,c3]!2 [a2,d3,a3]@2 [a2,d3]!2 [a2,d3,a3]@2 [a2,d3]!2", // C5 D5
  AC: "[g2,c3]!2 ~ [g2,c3]!2 ~ [g2,c3]!2 [f2,bb2,f3]@8", AD: "[f2,bb2]!2 ~ [f2,bb2]!2 ~ [f2,bb2]!2 [e2,a2,e3,a3]@8",
  AE: "[a2,d3,a3]@2 [a2,d3]!3 ~ [a2,d3,a3]@6 [a2,d3,a3]@2 [g2,c3,g3]@2", // D5 C5
  AF: "[f2,bb2,f3] ~ [f2,bb2]!2 [f2,bb2,f3] ~ [f2,bb2]!2 [e2,a2,e3] ~ [e2,a2]!2 [e2,a2,e3] ~ [e2,a2]!2", AG: "[d3,a3]",
  AH: "[c3,g3]", AI: "g2@2 a2 bb2", AJ: "a2 db3", AK: "a2", AL: "a2 [e4,e5]", AM: "gb3@2 f3@2 d3!12",
  AN: "f3@2 e3@2 d3!12", AO: "d3!4 f3!8 [f3,g3] g3!3",
  AP: "g3!2 [g4,g5]@2 [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3]!2 ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3]", // G A5
  AQ: "[a2,e3,a3] ~ [a2,e3,a3]!3 ~ [a2,e3,a3] ~ [a2,e3,a3]!2 ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3]", // A5
  AR: "[a2,e3,a3]@12 [a2,d3,a3]@2 [a2,d3]!2", // A5 D5
  AS: "[a2,d3] ~ [a2,d3,a3]@6 [a2,d3,a3]@2 [g2,c3,g3]@2 [a2,d3,a3]@2 [a2,d3]!2", // D5 C5 D5
  AT: "[a2,d3] ~ [a2,d3,a3]@6 [a2,d3,a3]@2 [g2,c3,g3]@2 [f2,bb2,f3] ~ [f2,bb2]!2", // D5 C5 Bb5
  AU: "[f2,bb2,f3] ~ [f2,bb2]!2 [e2,a2,e3] ~ [e2,a2]!2 [e2,a2,e3] ~ [e2,a2]!2 [f2,bb2,f3] ~ [f2,bb2]!2", // Bb5 A5 Bb5
  AV: "[f2,bb2,f3] ~ [f2,bb2]!2 [e2,a2,e3] ~ [e2,a2]!2 [e2,a2,e3] ~ [e2,a2]!2 [a2,d3,a3]@2 [a2,d3]!2", // Bb5 A5 D5
  AW: "[f2,bb2,f3] ~ [f2,bb2]!2 [e2,a2,e3] ~ [e2,a2]!2 [e2,a2,e3] ~ [e2,a2]!2 [e2,b2,e3]@2 [e2,b2]!2", // Bb5 A5 E5
  AX: "[e2,b2] ~ [e2,b2,e3]@6 [e2,b2,e3]@2 [a2,d3,a3]@2 [e2,b2,e3]@2 [e2,b2]!2", // E5 D5 E5
  AY: "[e2,b2] ~ [e2,b2,e3]@6 [e2,b2,e3]@2 [a2,d3,a3]@2 [g2,c3,g3]@2 [g2,c3]!2", // E5 D5 C5
  AZ: "[g2,c3,g3] ~ [g2,c3] [gb2,c3] [gb2,b2,gb3] ~ [gb2,b2]!2 [gb2,b2,gb3] ~ [gb2,b2]!2 [g2,c3,g3] ~ [g2,c3]!2", // C5 Gbdim B5 C5
  BA: "[g2,c3,g3] ~ [g2,c3]!2 [gb2,b2,gb3] ~ [gb2,b2]!2 [gb2,b2,gb3] ~ [gb2,b2]!2 [e2,b2,e3]@2 [e2,b2]!2", // C5 B5 E5
  BB: "[g2,c3,g3] ~ [g2,c3]!2 [gb2,b2,gb3] ~ [gb2,b2]!2 [gb2,b2,gb3] ~ [gb2,b2]!2 [b2,gb3,b3]@2 b2!2", // C5 B5
  BC: "[b2,gb3,b3]@2 b2!2 [a2,e3,a3]@2 a2!2 [a2,e3,a3]@2 a2!2 [g2,d3,g3]@2 g2!2", // B5 A5 G5
  BD: "[g2,d3,g3]@2 g2!2 [f2,c3,f3]@2 f2!2 [f2,c3,f3]@2 f2!2 [e2,b2,e3]@2 [e2,b2,e3]@2", // G5 F5 E5
})).s("gm_distortion_guitar").gain(0.35)

// other · pizzicato strings · "Violoncello"
const pizzicato_strings = note(`<
  ~@2 A B A C D C E D C D C F G H I J D K I J L ~ M N ~@9 O@2 P Q@2 R@2 S T@4 ~@103
>`.pickRestart({
  A: "d3@4 d3!2 ~ d3 d3@4 d3!2 ~ d3", B: "d3@4 d3!2 ~ d3 d3@3 d3@2 d3@3", C: "d3@4 d3!2 ~ d3 d3@4 d3@4",
  D: "d3@4 d3@4 d3@4 d3!2 ~ d3", E: "d3!4", F: "d3!3 c3", G: "bb2@4 bb2@4 bb2@4 bb2!2 ~ bb2",
  H: "bb2@4 bb2!2 ~ bb2 bb2@4 a2@4", I: "c3@4 c3@4 c3@4 c3!2 ~ c3", J: "c3@4 c3!2 ~ c3 c3@4 c3@4", K: "d3 ~@3",
  L: "bb2 ~@3", M: "a2!4", N: "a2", O: "[f3@2 e3@5 a2]/2", P: "d3@3 g2 a2@4", Q: "[f3@3 d3 e3@10 a2@2]/2",
  R: "[f3@3 d3 e3@12]/2", S: "d3", T: "[f3@3 d3 e3@10 ~@2 f3@3 d3 e3@12, ~@7 a2@5 ~@4]/4",
})).s("gm_pizzicato_strings").gain(0.35)

// other · synth strings 2 · "String Synthesizer"
const synth_strings_2 = note(`<
  A@6 ~@41 B C D@2 E F E F G H G I E F E J K L M@3 N M@3 N O P ~@15 Q@4 R@4 S T ~@17 E F E F G H G H U@2 V@3 W X ~@18
>`.pickRestart({
  A: "[~@9 d4@14 ~, ~ a2@22 ~]/6", B: "d2 ~@15", C: "~@6 f2 e2", D: "[d2@24 ~ d2 e2 d2 e2!4]/2", E: "d3",
  F: "d3@6 f3 e3", G: "bb2", H: "bb2@6 db3 c3", I: "bb2@6 gb3 f3", J: "f3 g3",
  K: "a2 ~ a2 ~ a2!2 ~ a2 ~ a2 ~ a2!2 ~ a2!2", L: "a2 ~ a2 ~ a2!2 ~ a2 ~ a2 ~ a2 a2@4",
  M: "d3@4 d3@3 d3@2 d3 d3@2 d3@2 eb3@2", N: "c3@8 c3 c3@2 c3 c3@2 c3!2", O: "bb2@8 bb2 bb2@2 bb2 bb2@2 bb2!2",
  P: "a2 ~",
  Q: "[~@8 d3@4 d3@3 d3@2 d3 d3@2 d3@2 eb3@2 d3@4 d3@3 d3@2 d3 d3@2 d3@2 eb3@2 d3@4 d3@3 d3@2 d3 d3@2 d3@2 eb3@2 c3@8]/4",
  R: "[c3 c3@2 c3 c3@2 c3!2 d3@4 d3@3 d3@2 d3 d3@2 d3@2 eb3@2 d3@4 d3@3 d3@2 d3 d3@2 d3@2 eb3@2 d3@4 d3@3 d3@2 d3 d3@2 d3@2 eb3@2 c3@8]/4",
  S: "c3 c3@2 c3 c3@2 c3!2 bb2@8", T: "bb2 bb2@2 bb2 bb2@2 bb2!2 a2@8", U: "[gb3 f3 d3@8 d3@6]/2",
  V: "[f3@2 e3@2 d3@16 f3@8 g3@8 a2 ~ a2 ~ a2!2 ~ a2 ~ a2 ~ a2]/3", W: "a2 ~ a2!3 ~ a2 ~ a2!2 ~ a2 ~ a2 ~ a2",
  X: "a2@3 ~",
})).s("gm_synth_strings_2").gain(0.43)

// bass · contrabass · "Kontrabass"
const bass = note(`<
  ~@17 A B@2 C D E F G H I J K L I J K L@2 M N M O P Q N@2 O R S T U V W@2 ~@14 X@3 Y X@3 Z AA AB@3 AC AD@3 AC AE AF AG
  AH AI AF AG AH AJ@4 AK@4 AL AM AN@2 AO@2 AN@2 AO@2 I J K L I J K L ~@34
>`.pickRestart({
  A: "~@2 d2 e2", B: "[g2@4 f2@7 g2 a2@2 e2@2]/2", C: "g2@3 f2", D: "e2@2 e2 c2", E: "d2@3 e2",
  F: "f2@2 g2 a2 bb2@2 ab2@2", G: "a2@2 ~@2 a2@2 ~@2 a2@2 ~@2 a2!2 ~ a2", H: "a2", I: "d2@7 a1 d2 ~ d2@6",
  J: "c2@7 g1 c2 ~ c2@6", K: "g1@7 d2 g1 ~ g1@6", L: "a1@7 e1 a1 ~ a1@6", M: "d1@7 a1", N: "d1@3 a1", O: "bb1@7 f1",
  P: "bb1@3 c2", Q: "d2@7 a1", R: "bb1@3 f1", S: "c2@7 g1", T: "c2@7 c2", U: "d2 ~@15", V: "~@6 f2 e2", W: "[d2@3 ~]/2",
  X: "d1@2 d1!2 d1@2 d1 d1@2 d1 d1@4 eb1@2", Y: "c1!6 bb0!2", Z: "c1!8", AA: "bb0!8",
  AB: "[a1@2 a1@2 a1@2 a1@2 d1@2 d1!2 d1@2 d1@8 c1@2 d1@2 d1!2 d1@2 d1@8 c1@2 bb1@2 bb1!2 bb1@2 bb1!2]/3",
  AC: "a1@2 a1!2 a1@2 a1!2 bb1@2 bb1!2 bb1@2 bb1!2",
  AD: "[a1@2 a1!2 a1@2 a1!2 d1@2 d1!2 d1@2 d1@8 c1@2 d1@2 d1!2 d1@2 d1@8 c1@2 bb1@2 bb1!2 bb1@2 bb1!2]/3",
  AE: "a1@2 a1!2 a1@2 a1!2 d2@7 a1", AF: "d2 ~ d2@6 c2@7 g1", AG: "c2 ~ c2@6 g1@7 d2", AH: "g1 ~ g1@6 a1@7 e1",
  AI: "a1 ~ a1@6 d2@7 a1",
  AJ: "[a1 ~ a1@6 d1@2 d1!2 d1@2 d1 d1@2 d1 d1@4 eb1@2 d1@2 d1!2 d1@2 d1 d1@2 d1 d1@4 eb1@2 d1@2 d1!2 d1@2 d1 d1@2 d1 d1@4 eb1@2 c1@2 c1@2 c1@2 c1@2]/4",
  AK: "[c1@2 c1@2 bb0@2 bb0@2 d1@2 d1!2 d1@2 d1 d1@2 d1 d1@4 eb1@2 d1@2 d1!2 d1@2 d1 d1@2 d1 d1@4 eb1@2 d1@2 d1!2 d1@2 d1 d1@2 d1 d1@4 eb1@2 c1@2 c1@2 c1@2 c1@2]/4",
  AL: "c1!4 bb0!4", AM: "bb0!4 a1!4", AN: "d1@2 d1!2 d1@2 d1@8 c1@2", AO: "bb1@2 bb1!2 bb1@2 bb1!2 a1@2 a1!2 a1@2 a1!2",
})).s("gm_contrabass").gain(0.61)

// bass · electric bass finger · "5-stg. elektrischer Bass"
const bass_2 = note(`<
  ~@26 A B C D A B C E@2 F@2 G H@2 F@2 G H@2 I@2 J K L@2 M N M N O P O Q M N M R S T U@3 V U@3 V W X@3 Y Z@3 Y AA AB AC
  AD AE AB AC AD AF AG@2 AH AI AG@2 AH AJ AK AL@2 AM@2 AL@2 AM@2 A B C D A B C D AN M N M N O P O P AO M AP AQ AR AS AT
  AU AV AW AX AU AV AW AY AZ BA BB BC AZ BA BB BD BE BF
>`.pickRestart({
  A: "d2@4 d2 d2@3", B: "c2@4 c2 c2@3", C: "g1@4 g1 g1@3", D: "a1@4 a1 a1@3", E: "[a1@4 a1 a1@11]/2", F: "d2/2",
  G: "d2", H: "bb1/2", I: "c2/2", J: "d2 ~@15", K: "~@6 f2 e2", L: "[d2@24 ~ d2 e2 d2 e2!4]/2", M: "d2!16",
  N: "d2!12 f2@2 e2@2", O: "bb1!16", P: "bb1!12 db2@2 c2@2", Q: "bb1!12 gb2@2 f2@2", R: "f2!8 [f2,g2] g2!5 g2@2",
  S: "a1 ~ a1 ~ a1!2 ~ a1 ~ a1 ~ a1!2 ~ a1!2", T: "a1 ~ a1 ~ a1!2 ~ a1 ~ a1 ~ a1 a1@4",
  U: "d1@2 d1!2 d1@2 d1!2 ~ d1 d1@2 d1!2 eb1@2", V: "c1@8 c1 c1@2 c1 c1@2 c1!2", W: "bb0@8 bb0 bb0@2 bb0 bb0@2 bb0!2",
  X: "[a0@8 d1@2 d1!2 d1@2 d1@6 d1@2 c1@2 d1@2 d1!2 d1@2 d1@6 d1@2 c1@2 bb0@2 bb0!2 bb0@2 bb0!2]/3",
  Y: "a0@2 a0!2 a0@2 a0!2 bb0@2 bb0!2 bb0@2 bb0!2",
// … 108 more lines