Strudelify

I was born for this

Austin Wintory

KeyD majorTempo90 bpm
0:00/0:00
// I was born for this — Austin Wintory
// 90 bpm, 6/8, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5645631; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 137 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(90/3)

// 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 · contrabass · "Soprano"
const contrabass = note(`<
  A@8 ~@8 B@2 C@2 D@2 E F B@2 G@2 H@2 I J ~ K L ~ L M N J O@3 ~@4 B@2 C@2 D@2 E F B@2 G@2 H@2 I M P@2 Q@2 R@2 S@2 T@2
  U@2 V@2 ~@4 W X Y Z AA AB E F W X G@2 H@2 I J AC@2 AD AE AF@2 AG@2 AH@2 AI@3 K L AJ@3 AK@3 AL@2 AM L AL@2 AN AO AM
  AP@2 ~ AQ@5 ~@2
>`.pickRestart({
  A: "b1/8", B: "[f#4@3 e4]/2", C: "[f#4 d4@2 c#4]/2", D: "[e4@3 d4]/2", E: "c#4", F: "b3", G: "[a4@3 g4]/2",
  H: "[f#4 e4@2 f#4]/2", I: "d4", J: "e4", K: "b4", L: "a4", M: "f#4", N: "~ f#4", O: "[~@3 f#4@6 a4@7 ~@2]/3",
  P: "[e4@5 d4 e4 f#4, e2]/2", Q: "[g4@2 ~ a1, d2@3 ~, ~ d4]/2", R: "[e4@15 d4@3 e4@2 ~ f#4@3, c2@5 b1]/2",
  S: "[b4@3 g4, a1]/2", T: "[a4@5 f#4, b1]/2", U: "[g4@2 f#4@7 ~ b1@2, g1@5 ~, ~@3 e4]/2", V: "[d2@4 e2 f#2, d4@5 ~]/2",
  W: "f#4!2", X: "f#4 e4", Y: "f#4 d4", Z: "d4 c#4", AA: "e4!2", AB: "e4 d4",
  AC: "[f#1@12 ~@3 e4@3 f#4@2 ~ g#4@3, f#4@5 ~@3, ~@3 f#2@2 e2]/2", AD: "[d2,a4]", AE: "[a1,e4]",
  AF: "[b1@12 ~@3 e4@3 f#4@2 ~ g#4@3, f#4@5 ~@3, ~@3 d2@2 c#2]/2", AG: "[c#5, a1@3 ~]/2", AH: "[e2@2 g#2 e2, e5]/2",
  AI: "[f#5@3 d5@5 e5, b1 ~]/3", AJ: "[~@3 g#4@6 f#4@7 ~@2]/3", AK: "[~ e4@2 g#4@2 a4]/3", AL: "[b4@5 a4 b4 c#5]/2",
  AM: "d5", AN: "f#5@2 d5", AO: "e5@2 c#5", AP: "c#5/2", AQ: "[a4@14 ~]/5",
})).s("gm_contrabass").gain(0.11)

// bass · acoustic bass
const bass = note(`<
  ~@15 A B C D E F G H I B J K ~ L@2 M N O@2 P Q R@2 S T U V W ~@3 A B C X@2 Y@2 Z AA B AB AC D AD@2 AE ~@17 AF AG AH AI
  AJ AK AL AM AN AO AP@2 AQ AR AM H AS AT ~@17 AU@2 AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ ~@4 B ~
>`.pickRestart({
  A: "~@5 a1", B: "b1", C: "b1@5 d2", D: "e2", E: "~ e2", F: "d2", G: "~ a2", H: "f#2 f#1", I: "a1 ~", J: "b1 ~",
  K: "e2 ~", L: "[d2 f#2@2 c#2]/2", M: "d2 c#2", N: "e4, a1 ~", O: "[b2@3 b1@3 ~@3 c#5 d5 e5, d5@35 ~ b1@12]/2",
  P: "g2 g1, f#5", Q: "g2@3 g1@2 f#2, b4@23 ~", R: "[d2@3 a2@3 ~@2 c#5@2 d5 e5, d5@2 ~, ~@6 d2@3 ~ a1@2]/2",
  S: "[f#2,a5]@3 ~ f#1@2, ~@12 b5@11 ~", T: "~ f#2 ~, a5@23 ~", U: "g5 ~@2 b1@3, e2 ~, ~@4 f#5@19 ~",
  V: "e5@2 e2 g2@3, ~@8 d5@15 ~", W: "a2 a1, e5@5 ~@3", X: "[e2@7 ~@2 e2@3]/2", Y: "[d2@3 a2]/2", Z: "f#2@3 f#1 ~@2",
  AA: "a1@2 ~", AB: "b1@2 ~", AC: "e2@2 ~", AD: "[d2 ~@2 f#2@6 ~ c#2@2]/2", AE: "d2@2 c#2",
  AF: "~@6 d6 f#6 d6 f#6 d6@2", AG: "~@2 d6 f#6 d6 f#6 d6@2 c#6 d6 c#6@2",
  AH: "~@2 d6 f#6 d6 f#6 d6@2 ~@2 d6 f#6, b1!2", AI: "d6@4 c#6 d6 c#6 d6 c#6 d6 c#6@2, b1!2", AJ: "~ [e2,f#5]",
  AK: "e2@2 b1 e2", AL: "d2!2", AM: "d2 a2", AN: "a2 a1", AO: "a2@2 e2 c#2", AP: "b1 f#2", AQ: "e2 b2",
  AR: "e2@2 g2 f#2", AS: "a1 a2", AT: "a1@2 a2 c#3", AU: "f#1!2", AV: "~ f#1", AW: "f#1@2 f#1 c#2",
  AX: "~@6 b5 d6 b5@4, b1", AY: "b5 d6 b5@2 ~@4 b5 d6 b5@2, b1", AZ: "~@8 d6 e6 d6@2, d2",
  BA: "~@2 d6 e6 d6@2 d6 e6 c#6@3 d6, d2", BB: "~@6 d6 b5 d6@4, g1", BC: "c#6 a5 c#6@2 ~@2 d6 b5 [e2,d6]@4, g2@2 ~",
  BD: "~@2 f#6 d6 f#6@2 f#6@2 e6 d6 e6@2, d2", BE: "~@2 d6 c#6 d6@2 c#6 d6 c#6@4, a2",
  BF: "~@4 c#6 b5 c#6@2 ~@2 c#6 b5, g2", BG: "a5@4 ~@2 b5 a5 b5@4, f#2", BH: "~@2 a5 g#5 a5@4 g#5 f#5 g#5@2",
  BI: "~@2 f#5 e5 f#5@4 e5 c#5 e5@2", BJ: "a1",
})).s("gm_acoustic_bass").gain(0.09)

// other · string ensemble 1 · "Violin 1"
const string_ensemble_1 = note(`<
  ~@8 A B C D C E F G@3 ~@10 H I J@2 K L M@2 N O P@2 Q R S A B C T U@2 V@2 W@2 X@2 Y@2 Z@2 AA AB AC AD AE@2 AF AG AE@2
  AH@2 AI@2 AJ@2 AK@2 AL AM AN AO AP AM AQ AR AS AT AU AV AW@2 AX AY AZ BA BB BC BD@2 BE BF BD@2 BG@2 BH@2 BI@2 BF BJ BK
  BL BM BL BM BL BM BN C BO BP BQ BR BS BT BU BV BW BX BY BZ CA CB@2 CC@2
>`.pickRestart({
  A: "d5 f#5 d5 ~ f#5 ~ d5 f#5 d5 ~@3", B: "c#5 d5 c#5 d5 e5 ~ c#5 d5 c#5 ~@3",
  C: "d5 f#5 d5 ~ f#5 ~ d5 f#5 d5 ~ f#5 ~", D: "c#5 d5 c#5 d5 e5 ~ c#5 d5 c#5 ~ d5 ~",
  E: "c#5 d5 c#5 d5 e5 ~ c#5 d5 e5 ~ g5 ~", F: "f#5@3 ~ d5@20", G: "[e5@3 ~ c#5@68]/3", H: "~@4 b4 d5",
  I: "~ a4 d5 ~ b4 d5", J: "[~ d5 e5 ~ c#5 d5@2 e5 f#5 e5 f#5 b5]/2", K: "f#6 b5 f#6 b5 c#6 b5",
  L: "f#6 b5 f#6 b5 e6 c#6", M: "g6 d6 g6 d6 e6 d6", N: "f#6 d6 f#6@3 e6", O: "f#6 d6 f#6 c#6 d6 e6",
  P: "[a6 f#6 a6@3 f#6@2 a6 f#6@2 a6 f#6]/2", Q: "g6 b5 e6 f#6 g6 b5", R: "g6 e6 f#6 g6 e6 g6", S: "a6 c#6 a6 c#6 a5@2",
  T: "c#5 d5 c#5 d5 e5@2 c#5 d5 c#5@2 d5@2", U: "[f#6@8 e6 d6@3]/2", V: "[c#6@9 d6 e6@2]/2",
  W: "[d6@3 a5@5 f#5@2 a5@2]/2", X: "[b5@3 c#6]/2", Y: "[f#6@4 e6 d6]/2", Z: "[c#6@3 c#6]/2", AA: "d6", AB: "e6",
  AC: "f#6",
  AD: "[a5,d6] [b5,e6] [a5,d6] [b5,e6] [a5,d6] [b5,e6] [a5,d6] [b5,e6] [a5,d6] [b5,e6] [a5,d6] [b5,e6] [a5,d6] [b5,e6] [a5,d6] [b5,e6] [a5,d6] [b5,e6] [a5,d6] [b5,e6] [a5,d6] [b5,e6] [a5,d6] [b5,e6]", // D5 E5 D5 E5 D5 E5 D5 E5 …
  AE: "[e6@3 d6]/2", AF: "e6@2 d6", AG: "a5@2 b5", AH: "[c6 d6 e6]/2", AI: "d6/2", AJ: "[g6@3 f#6]/2",
  AK: "[e6 f#6@2 f#6]/2", AL: "d6 f#6 d6 f#6 d6 ~ d6 f#6 d6 f#6 d6 ~", AM: "c#6 d6 c#6 d6 c#6 ~ c#6 d6 c#6 d6 e6 ~",
  AN: "d6 f#6 d6 f#6 d6 ~ d6 f#6 d6 ~@2 c#6", AO: "c#6 d6 c#6 d6 c#6 ~ c#6 d6 c#6 d6 c#6 ~",
  AP: "d6 f#6 d6 f#6 d6 ~ d6 f#6 d6 ~@3", AQ: "e6 g6 e6 g6 e6 ~ e6 g6 e6 f#6 e6 ~",
  AR: "e6 g6 e6 g6 e6 ~ e6 f#6 e6 d6 c#6 e6", AS: "d6 e6 d6@2 ~@2 d6 e6 d6@2 e6@2",
  AT: "d6 e6 d6 e6 f#6 e6 d6@2 e6@2 f#6@2", AU: "e6 d6 e6 d6 e6@2 e6 f#6 e6@2 ~@2",
  AV: "e6 d6 e6 d6 e6 f#6 e6@2 d6@2 e6@2", AW: "d6 f#6 d6@2 f#6@8", AX: "e6 g6 e6@2 g6@8", AY: "f#6 g6 e6@6 f#6@2 e6@2",
  AZ: "d6 c#6@2 e6@3", BA: "d6 c#6@2 a5@3", BB: "b5 c#6@2 a5@3", BC: "f#5 e5@5", BD: "[f#5@5 e5 f#5 g#5]/2", BE: "a5",
  BF: "e5", BG: "[c#6@3 a5]/2", BH: "[b5@5 g#5]/2", BI: "[a5@2 g#5@7 g#5 f#5@2]/2", BJ: "c#5", BK: "b4",
  BL: "a4 c#5 a4 ~ c#5 ~ a4 c#5 a4 ~@3", BM: "a4 c#5 a4 ~ c#5 ~ a4 c#5 a4 c#5 a4 ~",
  BN: "d5 f#5 d5 ~ f#5 ~ d5 f#5 d5@4", BO: "f#5 d5 f#5 ~ d5 ~ f#5 d5 ~@4", BP: "f#5 d5 f#5 ~ a5 ~ f#5 a5 f#5@4",
  BQ: "d5 b4 d5@2 d5@2 d5 e5 d5@4", BR: "d5 b4 d5 e5 d5@2 b4@2 d5@2 e5@2", BS: "f#5 d5 f#5@4 f#5 d5 f#5@4",
  BT: "e5 d5 e5@4 ~@2 e5 d5 e5@2", BU: "g5 d5 g5@4 g5 d5 g5@4", BV: "f#5 c#5 f#5@4 f#5 c#5 f#5@4",
  BW: "c#5 f#5 c#5@2 f#5@2 c#5@2 f#5@4", BX: "~@3 c#5 ~@2", BY: "e5 c#5 a4@4 c#5 e5 c#5@4",
  BZ: "c#5 d5 c#5@4 c#5 d5 c#5@4", CA: "~@3 c#5 d5@2", CB: "a4/2", CC: "b3/2",
})).s("gm_string_ensemble_1").gain(0.07)

// other · string ensemble 1 · "Violin 2"
const string_ensemble_1_2 = note(`<
  ~@8 A B C D C E F G H@2 ~@13 I J@2 K L M@2 N O P Q R A B C S T U V W X Y Z AA@2 AB AC AD AE AF AG AH AI@2 AJ@2 AK@2
  AL@2 AM@2 AI@2 AL@2 AN AO AP AO AQ AR AS AT AU AV AW AX AY@2 AZ@2 BA@2 BB BC BD@2 R BE BD@2 BF@2 BG BH BI R BJ BE BJ
  BK BL BM BN BO BL BP BQ BR BS BT BU BV BW BX BW BY BZ CA CB CC ~@2 CD@2
>`.pickRestart({
  A: "b4 c#5 b4 ~ c#5 ~ b4 c#5 b4 ~@3", B: "f#4 a4 f#4 a4 b4 ~ f#4 a4 c#5 ~@3",
  C: "b4 c#5 b4 ~ c#5 ~ b4 c#5 b4 ~ c#5 ~", D: "f#4 a4 f#4 a4 c#5 ~ f#4 a4 c#5 ~ b4 ~",
  E: "f#4 a4 f#4 a4 b4 ~ f#4 a4 b4 ~ c#5 d5", F: "c#5@3 ~ b4@16 a4@4", G: "b4@3 ~ a4@20", H: "[f#4@5 ~]/2", I: "~@2 e5",
  J: "[d5@9 c#5 d5 e5]/2", K: "f#5", L: "b4", M: "[d5@8 c#5@2 d5 e5]/2", N: "a5 b5", O: "a5", P: "g5 f#5@5",
  Q: "e5 d5@2", R: "c#5", S: "f#4 a4 f#4 a4 c#5@2 f#4 a4 c#5@2 b4@2", T: "d5 f#5 d5 f#5 ~@2", U: "~ d5 f#5 d5 f#5 d5",
  V: "~ e5 f#5 e5 f#5@2", W: "~ e5 f#5 e5 f#5 e5", X: "d5 e5 d5@2 e5@2 f#5@2 d5@4", Y: "~ d5 e5 f#5 d5 f#5",
  Z: "~ c#5 f#5 c#5 ~@2", AA: "[~@2 c#5@2 d5@2 c#5 d5 c#5@2 d5@4 e5@2 f#5@2 d5@2 f#5@4]/2", AB: "~ e5 f#5 d5 f#5@2",
  AC: "~ e5 f#5 e5 g5@2", AD: "~ e5 f#5 e5 g5 f#5", AE: "d5@2 a4@2 d5@2 a4 d5 a4@2 ~@2", AF: "~ d5 a4 d5 e5 f#5",
  AG: "~@2 f#5 e5 f#5@2 e5@2 f#5 e5 f#5@2", AH: "~@2 e5 f#5 e5@2 f#5@2 a5 g5 a5@2", AI: "b5/2", AJ: "f#5/2", AK: "g5/2",
  AL: "a5/2", AM: "[c#6 b5@2 a5]/2", AN: "b5 c#6 b5 c#6 b5 ~ b5 c#6 b5 c#6 b5 ~",
  AO: "f#5 a5 f#5 a5 f#5 ~ f#5 a5 f#5 a5 f#5 ~", AP: "b5 c#6 b5 c#6 b5 ~ b5 c#6 b5 ~@2 a5",
  AQ: "a5 c#6 a5 c#6 a5 ~ a5 c#6 a5 ~@3", AR: "f#5@2 a5@2 f#5@2 a5@2 f#5@2 ~@2 f#5@2 a5@2 f#5@2 f#5@2 a5 ~ b5@2",
  AS: "d6 b5 d6 b5 d6 ~ b5 d6 b5 a5 b5@2", AT: "b5 d6 b5 a5 b5 ~ b5 d6 b5@2 a5@2",
  AU: "f#5@2 a5@2 f#5@2 a5@2 f#5@4 b5@3 ~ f#5@3 ~ a5@3 ~", AV: "f#5@2 a5@2 f#5@2 a5@2 b5@2 a5@2 f#5@3 ~ a5@3 ~ f#5@3 ~",
  AW: "a5 c#6 a5@2 c#6 a5 c#6@2 a5 c#6 a5@2", AX: "a5 c#6 a5 c#6 a5@2 c#6@2 a5@2 c#6@2", AY: "b5 c#6 b5 c#6@3",
  AZ: "g5 a5 b5@10", BA: "[a5 b5 a5 b5 a5@5 a5 g5 f#5]/2", BB: "e5 f#5 e5 f#5 e5 f#5", BC: "e5 d5 c#5@4",
  BD: "[a4@5 g#4 a4 b4]/2", BE: "f#4", BF: "[c#5 d5 e5@4]/2", BG: "f5@2 e5", BH: "d5", BI: "f#5@2 d5", BJ: "a4",
  BK: "f#4 g#4 f#4@2 g#4 ~ f#4 g#4 f#4 ~ g#4 ~", BL: "f#4 g#4 f#4 ~ g#4 ~ f#4 g#4 f#4 ~@3",
  BM: "f#4 g#4 f#4 ~ g#4 ~ f#4 g#4 f#4 g#4 f#4 g#4", BN: "f#4@2 g#4@2 f#4@2 f#4 g#4 f#4 g#4 f#4@2",
  BO: "f#4 g#4 f#4 ~ g#4 ~ f#4 g#4 f#4 ~ g#4 ~", BP: "b4 c#5 b4@4 b4 c#5 b4@4", BQ: "b4 c#5 b4 ~ c#5 ~ b4 c#5 b4@4",
  BR: "a4 b4 a4 ~ b4 ~ a4 b4 a4 b4 a4 ~", BS: "a4 b4 a4 ~ b4 ~ a4@2 b4@2 a4@2", BT: "b4 g4 b4@4 b4 g4 b4@4",
  BU: "~@2 b4 g4 b4 ~ b4 g4 b4@4", BV: "d5 ~ a4 d5!2 ~ d5 a4 d5@4", BW: "c#5 a4 c#5@4 c#5 a4 c#5 a4 c#5@2",
  BX: "g4 b4 g4 b4@3 ~ g4 b4 g4@2 b4", BY: "c#5 a4 c#5@4 c#5 a4 c#5@4", BZ: "a4!3 ~@3", CA: "e4 ~@2 e4 ~@2",
  CB: "e4 e4@2 e4 ~@2", CC: "e4 a4 ~@4", CD: "b3/2",
})).s("gm_string_ensemble_1").gain(0.08)

// other · tremolo strings · "Violas"
const tremolo_strings = note(`<
  ~@3 A@2 B C D@2 ~@34 E F G H I@2 J@2 K@2 C L M@2 N O P Q R@2 S@2 T@2 U V W@2 X@2 Y@2 Z@2 AA AB AA AC AD AE AF AG AH AI
  AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY N AZ BA BB@3 AY BC C P BD P BE AY BC BF@2 AY BG BH@2 C BI BJ BK BL@2
  BM@2 BN ~@2 BO@2
>`.pickRestart({
  A: "[b3@3 a3]/2", B: "b3", C: "c#4", D: "d4/2", E: "f#4 a4 f#4 ~@3 f#4 a4 f#4 ~ a4 f#4",
  F: "e4 f#4 e4 ~ e4 f#4 e4 f#4 e4 d4 c#4 d4", G: "f#4 a4 f#4 ~@3 f#4 a4 f#4 a4 f#4 ~",
  H: "e4 f#4 e4 f#4 e4 d4 e4@2 f#4@2 e4@2", I: "[f#4@5 e4]/2", J: "[f#4@3 d4@7 c#4@2]/2", K: "[e4@3 d4]/2",
  L: "b3@4 d4 e4", M: "[f#4@3 e4]/2", N: "a4", O: "b4@2 g4@3 ~", P: "f#4 e4", Q: "a4 f#4", R: "[d4@3 e4]/2",
  S: "[g4@5 f#4 g4 a4]/2", T: "[b4@3 a4]/2", U: "b4 a4", V: "c5", W: "[d5 e5@5]/2", X: "f#5/2", Y: "d5/2",
  Z: "[d5 e5@2 d5@2 e5@2 d5@3 g5@2]/2", AA: "f#5@2 ~ b4@2 ~", AB: "f#5@2 ~ d5@2 ~", AC: "e5 c#5 a4", AD: "f#5 d5 b4",
  AE: "e5 c#5 f#4", AF: "b4 a4 b4@2 b4 a4 b4 ~@5", AG: "b4@2 a4@2 b4@2 c#5@2 d5@2 ~@2 c#5@3 ~ b4@3 ~ a4@3 ~",
  AH: "d5 c#5 d5 c#5 e5@2 ~@2 c#5 d5 c#5@2", AI: "~@2 d5 c#5 d5@2 e5@2 a4 b4 a4@2",
  AJ: "a4@3 ~ b4@3 ~ a4@3 ~@5 a4@2 b4@2 a4@4", AK: "~@2 a4 b4 a4 b4 c#5@2 a4 b4 a4@2", AL: "b4 f#5 b4 f#5 b4 f#5",
  AM: "b4 e5 b4 f#5 b4 e5", AN: "d5 e5 b4 f#5 d5 e5", AO: "b4 e5 d5 f#5 d5 e5", AP: "f#5@2 d5@2 f#5@2 ~@2 f#5 d5 f#5@2",
  AQ: "~@2 f#5 d5 f#5@2 d5 f#5 d5@2 f#5@2", AR: "~@2 e5 c#5 e5@2 ~@2 e5 c#5 e5@2", AS: "c#5 d5 c#5@4 c#5 d5 c#5@2 d5@2",
  AT: "f#4 g#4", AU: "f#4 c#4", AV: "d4 a4", AW: "e4@2 a3", AX: "b3 d4", AY: "f#4", AZ: "c#5", BA: "g#4",
  BB: "[a4@3 b4@13 a4@2]/3", BC: "e4", BD: "d4 e4", BE: "f#4@3 ~ e4@2", BF: "[f#4@9 ~ e4@2]/2", BG: "d4@2 ~",
  BH: "[d4@4 e4@5 d4@3]/2", BI: "e4@5 a4", BJ: "g4 ~", BK: "f#4 ~", BL: "e4 ~", BM: "a3 ~", BN: "a3@3 a3 ~@2",
  BO: "f#3/2",
})).s("gm_tremolo_strings").gain(0.12)

// other · cello
const cello = note(`<
  ~@60 A B C D@2 E F D@2 G@2 H@2 I@2 J@2 ~@4 K@2 L@2 M@2 N O P@2 Q@2 R@2 S T U V W N S T X T Y@2 V S N Z AA@2 ~ AB AC AD
  AE AF@2 AG@2 AH@2 AI AJ AK AL@2 AM@2 AN@4 AO@2
>`.pickRestart({
  A: "~ a3 b3 a3@3", B: "~ f#3 a3 f#3 e3 f#3", C: "e3 d3 e3 f#3 a3 d3", D: "[e3@5 d3 e3 f#3]/2", E: "g3", F: "d3",
  G: "[b3@5 g3]/2", H: "[a3@3 f#3]/2", I: "[g3@2 f#3@7 e3@3]/2", J: "d3/2", K: "[f#4@5 e4]/2",
  L: "[f#4@3 d4@7 c#4@2]/2", M: "[e4@3 d4]/2", N: "c#4", O: "b3", P: "[f#4@3 e4]/2", Q: "[a4@3 g4]/2",
  R: "[f#4 e4@2 f#4]/2", S: "d4", T: "e4", U: "f#2 a2 c#3", V: "f#3", W: "d3 a2 f#3", X: "b4@2 a4", Y: "[b3@3 a3]/2",
  Z: "g#4", AA: "a4/2", AB: "f#3!12 e3!12", AC: "f#3!12 g#3!12", AD: "a3!24", AE: "a3!12 c#4!12",
  AF: "[b3@5 a3 b3 c#4]/2", AG: "[d4@3 e4]/2", AH: "[d4@5 c#4 d4 e4]/2", AI: "a4", AJ: "g4", AK: "d4@4 c#4 d4",
  AL: "[e4@3 ~]/2", AM: "c#4/2", AN: "[b3@7 ~]/4", AO: "c3/2",
})).s("gm_cello").gain(0.1)

// other · pizzicato strings
const pizzicato_strings = note(`<
  ~@16 A@2 B C D E F G H A B I J K L M ~@15 A@2 B C D E F G H N B I J ~@17 O P O P ~@56
>`.pickRestart({
  A: "~@3 b2 f#3@2", B: "~@3 e3 g3@2", C: "~@3 a3 g3@2", D: "~@3 d3 a3@2", E: "~@3 a3@2 d3", F: "~@3 f#3 ~@2",
  G: "~@3 a2 a3 e3", H: "~@3 b3 f#3@2", I: "~@3 b3 e3@2", J: "~@3 d4 a3@2", K: "d3 ~@5", L: "~@2 f#3",
  M: "~ a3@2 e3 a2@2", N: "~@3 b2 f#2@2", O: "~ f#3 b3 ~ f#3@2", P: "~ f#3 a3 ~ e3@2",
})).s("gm_pizzicato_strings").gain(0.1)

// drums · kick
const kick = s("bd").struct("<~@47 A ~ B A@2 ~@3 A ~ A ~ A ~ A C ~ D C D C D C D C E C F@3 ~@60>".pickRestart({
  A: "x", B: "x ~@4 x", C: "x!2", D: "x ~ x!2", E: "x ~ x", F: "x!3",
})).gain(0.04)

// drums · triangle
const triangle = s("triangles:30").struct("<~@135 [~@3 x!9 ~@12] ~>").gain(0.31)

// drums · triangle · soft notes
const triangle_soft = s("triangles:30").struct("<~@135 [x!3 ~@21] ~>").gain(0.19)

// drums · triangle
const triangle_2 = s("triangles:35").struct(`<
  ~@7 A ~@24 B ~ B ~ B ~ B ~ B ~ B ~@34 B ~ B ~ B ~ B C B ~ B@3 ~ B ~ B ~@35 D ~@7
>`.pickRestart({
  A: "~@4 x!20", B: "x", C: "~ x", D: "x!24",
})).gain(0.31)

// drums · triangle · soft notes
const triangle_soft_2 = s("triangles:35").struct("<~@7 [x!4 ~@20] ~@129>").gain(0.19)

stack(
  contrabass, bass, string_ensemble_1, string_ensemble_1_2, tremolo_strings, cello, pizzicato_strings, kick, triangle,
  triangle_soft, triangle_2, triangle_soft_2
)