Strudelify

Barber's Adagio for Strings

William Orbit

KeyE♭ majorTempo135 bpm
0:00/0:00
// Barber's Adagio for Strings — William Orbit
// 135 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: duplicate parts dropped: ch 12 tremolo strings (copy of ch 11 tremolo strings, 0.25 beats late)
// note: Full arrangement: all 124 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 30.
setcpm(135/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 · string ensemble 1
const string_ensemble_1 = note(`<
  A@3 B C D E F@2 G@7 H I J K L M H N O@2 P@3 Q B R@2 S T@2 U@3 V@3 T H I J K L M H N O@2 W@2 R Q X T R Y Z AA@4 AB@2 S
  AC AD AE AF N AG AH AI@4 Q B R@2 S T@2 U@3 V@3 T H I J K L M H N O@2 AJ@16 ~@4
>`.pickRestart({
  A: "[~@5 bb4@17 bb4@9 a4@8 bb4@9]/3", B: "c5 a4", C: "~ bb4@8 c5@7", D: "~ bb4@4 c5@3", E: "~@2 db5@8 ~ bb4@5",
  F: "[~@3 c5@8 ~ db5@8 c5@8 db5@4]/2", G: "[~@5 eb5@8 c5@41 ~@4 c5@12 ~ bb4@24 c5@8 db5@8 ~]/7", H: "bb4 ab4",
  I: "gb4 f4", J: "eb4 db4", K: "c4 db4", L: "eb4 f4", M: "gb4 ab4", N: "f4 gb4", O: "f4/2", P: "[~ bb4@5]/3",
  Q: "a4 bb4", R: "bb4 c5", S: "db5 bb4", T: "c5 db5", U: "[eb5 c5@5]/3", V: "[c5 bb4]/3", W: "[bb4@3 a4]/2",
  X: "c5 bb4", Y: "db5 c5", Z: "db5 eb5", AA: "[c5@5 c5@3]/4", AB: "[bb4@3 c5]/2", AC: "ab4 gb4", AD: "f4 eb4",
  AE: "db4 c4", AF: "db4 eb4", AG: "ab4 bb4", AH: "ab4 f4", AI: "[gb4 f4@4 bb4@3]/4",
  AJ: "~ bb3!2 ~ bb3!4 ~ bb3!2 ~ bb3!4",
})).s("gm_string_ensemble_1").gain(0.16)

// chords · synth strings 2 · "Strings""
const synth_strings_2 = note(`<
  A B@8 C@4 D@3 E@8 F@3 G@6 H@7 I@3 E@8 J@2 K@6 L@7 M@3 N@8 O P@6 Q@7 R@3 S@8 T@2 ~@20
>`.pickRestart({
  A: "~@5 [gb2,gb3,db4,gb4]@11", B: "[~@27 c4@68 [gb2,gb3,bb3,eb4]@33, ~@10 [f2,f3,f4]@85 ~@33]/8",
  C: "[~@29 ab4@3, ~ [ab2,ab3]@63, ~@17 c4@47]/4", D: "[~@7 [bb2,gb3,bb3,gb4]@41]/3", E: "[~ [eb3,ab3,eb4]@31]/8",
  F: "[~ [c3,f3,a3,f4]@11]/3", G: "[~ [gb2,gb3,db4,gb4]@5 ~@4 c4@14, ~ [f2,f3,f4]@3]/6",
  H: "[~@2 [gb2,gb3,bb3]@8 ~@17 ab4, ~ eb4@6 c4@7, ~@5 [ab2,ab3]@9]/7", I: "[~ [bb2,gb3,bb3,gb4]@5]/3",
  J: "[~ [c3,f3,a3,f4]@7]/2", K: "[[gb2,gb3,db4,gb4]@5 ~@4 c4@15, ~@5 [f2,f3,f4]@19]/6",
  L: "[~ [gb2,gb3,bb3]@8 ~@17 ab4@2, ~ eb4@12 c4@15, ~@9 [ab2,ab3]@19]/7", M: "[~ [bb2,gb3,bb3,gb4]@11]/3",
  N: "[eb3,ab3,eb4]/8", O: "[c3,f3,a3,f4]", P: "[~@2 [gb2,gb3,db4,gb4]@5 ~@4 c4@13, ~@7 [f2,f3,f4]@17]/6",
  Q: "[~@3 [gb2,gb3,bb3]@8 ~@4 c4@13, ~@3 eb4@12 ~@13, ~@11 [ab2,ab3]@17]/7", R: "[ab4 [bb2,gb3,bb3,gb4]@3]/3",
  S: "[~ [eb3,ab3,eb4]@15]/8", T: "[~ [c3,f3,a3,f4]@3]/2",
})).s("gm_synth_strings_2").gain(0.11)

// other · brass section
const brass_section = note("<A B@2 C D E F@8 G@2 H I J K L M H N O ~@99>".pickRestart({
  A: "~@13 bb4@2 ~", B: "[bb4@6 bb4@2 bb4@6 ~ a4@2 a4@6 bb4@2 bb4@6 ~]/2", C: "c5 c5@3 a4 a4@3",
  D: "~ bb4@2 bb4@6 c5@2 c5@5", E: "~ bb4 bb4@3 c5 c5@2",
  F: "[~@2 db5@2 ~ db5@6 bb4@2 bb4@6 c5@2 c5@6 ~ db5@2 db5@6 c5@2 c5@6 db5@2 db5@6 ~ eb5@2 eb5@6 c5@2 c5@39 ~@4 c5@2 c5@14 ~@6]/8",
  G: "[~@15 c5@2 c5@6 db5@2 db5@6 ~]/2", H: "bb4 bb4@3 ab4 ab4@3", I: "gb4 gb4@3 f4 f4@3", J: "eb4 eb4@3 db4 db4@3",
  K: "c4 c4@3 db4 db4@3", L: "eb4 eb4@3 f4 f4@3", M: "gb4 gb4@3 ab4 ab4@3", N: "f4 f4@3 gb4 gb4@3", O: "f4 f4@3 ~@4",
})).s("gm_brass_section").gain(0.04)

// other · acoustic guitar steel
const acoustic_guitar_steel = note("<~@104 [~ bb2 eb3 ~ bb2 eb3 bb2!2 ~ bb2 eb3 ~ bb2 eb3 bb2!2]!16 ~@4>")
  .s("gm_acoustic_guitar_steel").gain(0.38)

// bass · synth bass 1
const bass = note(`<
  ~@27 A B C D E F G H I J K@2 L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI K AJ AK AL AM AN AO AP AQ AR AS
  AT AU AV AW AX B C D E F G H I J K@2 L M N O P Q R S T U V W X Y ~@20
>`.pickRestart({
  A: "~@8 db3 bb3 gb3 eb3 db3 bb3 db3 gb3", B: "db3 bb3 gb3 eb3 db3 bb3 db3 c3!2 bb3 f3 db3 c3 bb3 c3 f3",
  C: "c3 a3 f3 eb3 f3 a3 c3!3 bb3 f3 c3!2 bb3 c3 f3", D: "c3 c4 a3 f3 a3 c4 c3 f3 c3 a3 f3 c3!2 a3 c3 f3",
  E: "c3 bb3 f3 c3 f3 bb3 c3!3 c4 f3 c3!2 c4 c3 f3",
  F: "f3 [c3,bb3] c3 f3 c3 [c3,bb3] f3 c3!2 [c3,c4] c3 f3 c3 [c3,c4] c3 eb3", // C7 C
  G: "f3 db4 c3 f3 eb3 db4 f3 c3 f3 bb3 eb3 f3!2 bb3 eb3 f3",
  H: "f3 [f3,c4] eb3 f3 eb3 [f3,c4] eb3!3 db4 f3!2 eb3 db4 eb3!2", // F5
  I: "eb3 c4 c3 eb3 bb3 c4 eb3 bb3 eb3 db4 bb3 eb3 bb3 db4 bb3!2",
  J: "c3 eb4 c3 eb3 db3 eb4 db3 eb3!2 c4 eb3!3 c4 eb3!2", K: "eb3 ab3 c4 eb3 ab3 c4!2 ab3 eb3 ab3 c4 eb3 ab3 c4!2 ab3",
  L: "eb3 ab3 c4!2 ab3 eb3 c4 ab3 ~ c3 c4 ab3!2 f3 c3 ab3", M: "ab3 f3 c3 ab3 f3 ab3 c4 ab3!2 f3!2 bb3 c3!2 gb3 c3",
  N: "gb3 eb3 c3 gb3 c3!2 gb3 eb3 db3 c3!2 ~ gb3 db3 c3 gb3", O: "db3 c3!2 gb3 c3 gb3!2 c3!3 gb3!2 c3 db3 gb3!2",
  P: "gb3!2 eb3 gb3 eb3!2 bb3 gb3 eb3!2 ab3 eb3!3 ab3 eb3", Q: "ab3!2 gb3 eb3 ab3!2 gb3!4 f3 gb3!3 f3 gb3",
  R: "bb2!2 f3 eb3 bb2 f3 eb3 bb2 eb3 f3 db3 bb2!2 f3 db3 bb2", S: "db3!2 bb2 c3 bb2 f2 bb2!3 c3 db3 bb2 c3 bb2!2 db3",
  T: "bb2 db3 eb3 db3 bb2 db3 eb3 bb2!2 eb3 db3 bb2 db3 eb3!2 db3",
  U: "bb2 gb2 eb2 bb2!2 gb2 eb2 gb2 bb2 gb2 bb2!2 gb2!2 bb2 gb2",
  V: "bb2!2 eb3 bb2 eb3 bb2 eb3 f3 bb3 ab3 gb3 bb3 ab3 gb3 f3 eb3",
  W: "ab3 gb3 eb3 ab3 f3 c3 ab3 c3 f3 eb3!3 f3 eb3!2 f3", X: "f3 db3 c3!2 f3 db3 c3!2 f3 db3 bb2 db3 f3 c3 f2 c3",
  Y: "f3 f2 c3 a2!2 f3 c3!2 f3 c3 f2!2 f3 eb3!2 f3",
  Z: "db3 bb3 gb3 eb3 db3 bb3 db3 gb3 db3 bb3 gb3 eb3 db3 bb3 db3 c3",
  AA: "c3 bb3 f3 db3 c3 bb3 c3 f3 c3 a3 f3 eb3 f3 a3 c3!2", AB: "c3 bb3 f3 c3!2 bb3 c3 f3 c3 c4 a3 f3 a3 c4 c3 f3",
  AC: "c3 a3 f3 c3!2 a3 c3 f3 c3 bb3 f3 c3 f3 bb3 c3!2",
  AD: "c3 c4 f3 c3!2 c4 c3 f3!2 [c3,bb3] c3 f3 c3 [c3,bb3] f3 c3", // C7
  AE: "c3 [c3,c4] c3 f3 c3 [c3,c4] c3 eb3 f3 db4 c3 f3 eb3 db4 f3 c3", // C
  AF: "f3 bb3 eb3 f3!2 bb3 eb3 f3!2 [f3,c4] eb3 f3 eb3 [f3,c4] eb3!2", // F5
  AG: "eb3 db4 f3!2 eb3 db4 eb3!3 c4 c3 eb3 bb3 c4 eb3 bb3",
  AH: "eb3 db4 bb3 eb3 bb3 db4 bb3!2 c3 eb4 c3 eb3 db3 eb4 db3 eb3",
  AI: "eb3 c4 eb3!3 c4 eb3!3 ab3 c4 eb3 ab3 c4!2 ab3", AJ: "eb3 ab3 c4 eb3 ab3 c4!2 ab3 eb3 ab3 c4!2 ab3 eb3 c4 ab3",
  AK: "~ c3 c4 ab3!2 f3 c3 ab3!2 f3 c3 ab3 f3 ab3 c4 ab3", AL: "ab3 f3!2 bb3 c3!2 gb3 c3 gb3 eb3 c3 gb3 c3!2 gb3 eb3",
  AM: "db3 c3!2 ~ gb3 db3 c3 gb3 db3 c3!2 gb3 c3 gb3!2 c3", AN: "c3!2 gb3!2 c3 db3 gb3!4 eb3 gb3 eb3!2 bb3 gb3",
  AO: "eb3!2 ab3 eb3!3 ab3 eb3 ab3!2 gb3 eb3 ab3!2 gb3!2", AP: "gb3!2 f3 gb3!3 f3 gb3 bb2!2 f3 eb3 bb2 f3 eb3 bb2",
  AQ: "eb3 f3 db3 bb2!2 f3 db3 bb2 db3!2 bb2 c3 bb2 f2 bb2!2",
  AR: "bb2 c3 db3 bb2 c3 bb2!2 db3 bb2 db3 eb3 db3 bb2 db3 eb3 bb2",
  AS: "bb2 eb3 db3 bb2 db3 eb3!2 db3 bb2 gb2 eb2 bb2!2 gb2 eb2 gb2",
  AT: "bb2 gb2 bb2!2 gb2!2 bb2 gb2 bb2!2 eb3 bb2 eb3 bb2 eb3 f3",
  AU: "bb3 ab3 gb3 bb3 ab3 gb3 f3 eb3 ab3 gb3 eb3 ab3 f3 c3 ab3 c3", AV: "f3 eb3!3 f3 eb3!2 f3!2 db3 c3!2 f3 db3 c3!2",
  AW: "f3 db3 bb2 db3 f3 c3 f2 c3 f3 f2 c3 a2!2 f3 c3!2", AX: "f3 c3 f2!2 f3 eb3!2 f3 db3 bb3 gb3 eb3 db3 bb3 db3 gb3",
})).s("gm_synth_bass_1").gain(0.22)

// bass · distortion guitar · "Style"" · Bb
const bass_2 = note("<~@27 [[bb1,bb2]!5 ~ bb2 [bb1,bb2] ~@8, ~@5 [bb1,bb2]@2 ~@9] ~@96>")
  .s("gm_distortion_guitar").gain(0.11).pan(0)

// other · orchestra hit
const orchestra_hit = note("<~@104 A ~ A ~@7 A ~@5 A ~@3>".pickRestart({
  A: "[eb4,eb5] ~, eb6 ~@3", // Eb
})).s("gm_orchestra_hit").gain(0.29)

// bass · electric bass finger
const bass_3 = note(`<
  ~@33 A B@2 C D@2 E F B@2 G@8 H@2 G H@5 B@3 D@3 H B@2 I G@8 H J K H@4 F B@2 C D@2 E F B@2 G@8 H@2 G@16 ~@4
>`.pickRestart({
  A: "~@10 gb2!2 ~ gb2!2 ~", B: "gb2!2 ~ gb2!2 ~ gb2 ~ gb2!2 ~ gb2!2 ~ gb2 ~",
  C: "gb2!2 ~ gb2!2 ~ gb2 ~ ab2!2 ~ ab2!2 ~ ab2 ~", D: "ab2!2 ~ ab2!2 ~ ab2 ~ ab2!2 ~ ab2!2 ~ ab2 ~",
  E: "ab2!2 ~ ab2!2 ~ ab2 ~ f2!2 ~ f2!2 ~ f2 ~", F: "f2!2 ~ f2!2 ~ f2 ~ gb2!2 ~ gb2!2 ~ gb2 ~",
  G: "eb2!2 ~ eb2!2 ~ eb2 ~ eb2!2 ~ eb2!2 ~ eb2 ~", H: "f2!2 ~ f2!2 ~ f2 ~ f2!2 ~ f2!2 ~ f2 ~",
  I: "gb2!2 ~ gb2!2 ~ gb2 ~ eb2!2 ~ eb2!2 ~ eb2 ~", J: "f2!2 ~ f2!2 ~ f2 ~ eb2!2 ~ eb2!2 ~ eb2 ~",
  K: "eb2!2 ~ eb2!2 ~ eb2 ~ f2!2 ~ f2!2 ~ f2 ~",
})).s("gm_electric_bass_finger").gain(0.57)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  ~@53 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI K@2 AJ AK AL AM AN AO AP AQ AR AS
  AT AU AV AW ~@20
>`.pickRestart({
  A: "db4 bb4 gb4 eb4 db4 bb4 db4 gb4 db4 bb4 gb4 eb4 db4 bb4 db4 c4",
  B: "c4 bb4 f4 db4 c4 bb4 c4 f4 c4 a4 f4 eb4 f4 a4 c4!2", C: "c4 bb4 f4 c4!2 bb4 c4 f4 c4 c5 a4 f4 a4 c5 c4 f4",
  D: "c4 a4 f4 c4!2 a4 c4 f4 c4 bb4 f4 c4 f4 bb4 c4!2", E: "c4 c5 f4 c4!2 c5 c4 f4!2 [c4,bb4] c4 f4 c4 [c4,bb4] f4 c4",
  F: "c4 [c4,c5] c4 f4 c4 [c4,c5] c4 eb4 f4 db5 c4 f4 eb4 db5 f4 c4", // C
  G: "f4 bb4 eb4 f4!2 bb4 eb4 f4!2 [f4,c5] eb4 f4 eb4 [f4,c5] eb4!2", // F5
  H: "eb4 db5 f4!2 eb4 db5 eb4!3 c5 c4 eb4 bb4 c5 eb4 bb4",
  I: "eb4 db5 bb4 eb4 bb4 db5 bb4!2 c4 eb5 c4 eb4 db4 eb5 db4 eb4", J: "eb4 c5 eb4!3 c5 eb4!3 ab4 c5 eb4 ab4 c5!2 ab4",
  K: "eb4 ab4 c5 eb4 ab4 c5!2 ab4 eb4 ab4 c5 eb4 ab4 c5!2 ab4",
  L: "eb4 ab4 c5 eb4 ab4 c5!2 ab4 eb4 ab4 c5!2 ab4 eb4 c5 ab4", M: "~ c4 c5 ab4!2 f4 c4 ab4!2 f4 c4 ab4 f4 ab4 c5 ab4",
  N: "ab4 f4!2 bb4 c4!2 gb4 c4 gb4 eb4 c4 gb4 c4!2 gb4 eb4", O: "db4 c4!2 ~ gb4 db4 c4 gb4 db4 c4!2 gb4 c4 gb4!2 c4",
  P: "c4!2 gb4!2 c4 db4 gb4!4 eb4 gb4 eb4!2 bb4 gb4", Q: "eb4!2 ab4 eb4!3 ab4 eb4 ab4!2 gb4 eb4 ab4!2 gb4!2",
  R: "gb4!2 f4 gb4!3 f4 gb4 bb3!2 f4 eb4 bb3 f4 eb4 bb3", S: "eb4 f4 db4 bb3!2 f4 db4 bb3 db4!2 bb3 c4 bb3 f3 bb3!2",
  T: "bb3 c4 db4 bb3 c4 bb3!2 db4 bb3 db4 eb4 db4 bb3 db4 eb4 bb3",
  U: "bb3 eb4 db4 bb3 db4 eb4!2 db4 bb3 gb3 eb3 bb3!2 gb3 eb3 gb3",
  V: "bb3 gb3 bb3!2 gb3!2 bb3 gb3 bb3!2 eb4 bb3 eb4 bb3 eb4 f4",
  W: "bb4 ab4 gb4 bb4 ab4 gb4 f4 eb4 ab4 gb4 eb4 ab4 f4 c4 ab4 c4", X: "f4 eb4!3 f4 eb4!2 f4!2 db4 c4!2 f4 db4 c4!2",
  Y: "f4 db4 bb3 db4 f4 c4 f3 c4 f4 f3 c4 a3!2 f4 c4!2", Z: "f4 c4 f3!2 f4 eb4!2 f4 db4 bb4 gb4 eb4 db4 bb4 db4 gb4",
  AA: "db4 bb4 gb4 eb4 db4 bb4 db4 c4!2 bb4 f4 db4 c4 bb4 c4 f4", AB: "c4 a4 f4 eb4 f4 a4 c4!3 bb4 f4 c4!2 bb4 c4 f4",
  AC: "c4 c5 a4 f4 a4 c5 c4 f4 c4 a4 f4 c4!2 a4 c4 f4", AD: "c4 bb4 f4 c4 f4 bb4 c4!3 c5 f4 c4!2 c5 c4 f4",
  AE: "f4 [c4,bb4] c4 f4 c4 [c4,bb4] f4 c4!2 [c4,c5] c4 f4 c4 [c4,c5] c4 eb4", // C7 C
  AF: "f4 db5 c4 f4 eb4 db5 f4 c4 f4 bb4 eb4 f4!2 bb4 eb4 f4",
  AG: "f4 [f4,c5] eb4 f4 eb4 [f4,c5] eb4!3 db5 f4!2 eb4 db5 eb4!2", // F5
  AH: "eb4 c5 c4 eb4 bb4 c5 eb4 bb4 eb4 db5 bb4 eb4 bb4 db5 bb4!2",
  AI: "c4 eb5 c4 eb4 db4 eb5 db4 eb4!2 c5 eb4!3 c5 eb4!2", AJ: "eb4 ab4 c5!2 ab4 eb4 c5 ab4 ~ c4 c5 ab4!2 f4 c4 ab4",
  AK: "ab4 f4 c4 ab4 f4 ab4 c5 ab4!2 f4!2 bb4 c4!2 gb4 c4", AL: "gb4 eb4 c4 gb4 c4!2 gb4 eb4 db4 c4!2 ~ gb4 db4 c4 gb4",
  AM: "db4 c4!2 gb4 c4 gb4!2 c4!3 gb4!2 c4 db4 gb4!2", AN: "gb4!2 eb4 gb4 eb4!2 bb4 gb4 eb4!2 ab4 eb4!3 ab4 eb4",
  AO: "ab4!2 gb4 eb4 ab4!2 gb4!4 f4 gb4!3 f4 gb4", AP: "bb3!2 f4 eb4 bb3 f4 eb4 bb3 eb4 f4 db4 bb3!2 f4 db4 bb3",
  AQ: "db4!2 bb3 c4 bb3 f3 bb3!3 c4 db4 bb3 c4 bb3!2 db4",
  AR: "bb3 db4 eb4 db4 bb3 db4 eb4 bb3!2 eb4 db4 bb3 db4 eb4!2 db4",
  AS: "bb3 gb3 eb3 bb3!2 gb3 eb3 gb3 bb3 gb3 bb3!2 gb3!2 bb3 gb3",
  AT: "bb3!2 eb4 bb3 eb4 bb3 eb4 f4 bb4 ab4 gb4 bb4 ab4 gb4 f4 eb4",
  AU: "ab4 gb4 eb4 ab4 f4 c4 ab4 c4 f4 eb4!3 f4 eb4!2 f4", AV: "f4 db4 c4!2 f4 db4 c4!2 f4 db4 bb3 db4 f4 c4 f3 c4",
  AW: "f4 f3 c4 a3!2 f4 c4!2 f4 c4 f3!2 f4 eb4!2 f4",
})).s("gm_string_ensemble_2").gain(0.2)

// other · tremolo strings
const tremolo_strings = note(`<
  ~@27 A B C D E@2 F G@2 H I@3 J B G K L M N O P K Q R S B T E C J G E U V I@4 B E F W X Y Z Q AA AB L R B@2 C D E@2 F
  G@2 H I@3 J B G K L M N O P K Q R@2 ~@20
>`.pickRestart({
  A: "~@10 bb4 ~@3 bb4 ~", B: "~@2 bb4 ~@3 bb4 ~@3 bb4 ~@3 bb4 ~", C: "~@2 a4 ~@3 a4 ~@3 bb4 ~@3 bb4 ~",
  D: "~@2 c5 ~@3 c5 ~@3 a4 ~@3 a4 ~", E: "~@2 bb4 ~@3 bb4 ~@3 c5 ~@3 c5 ~", F: "~@2 db5 ~@3 db5 ~@3 bb4 ~@3 bb4 ~",
  G: "~@2 c5 ~@3 c5 ~@3 db5 ~@3 db5 ~", H: "~@2 eb5 ~@3 eb5 ~@3 c5 ~@3 c5 ~", I: "~@2 c5 ~@3 c5 ~@3 c5 ~@3 c5 ~",
  J: "~@2 c5 ~@3 c5 ~@3 bb4 ~@3 bb4 ~", K: "~@2 bb4 ~@3 bb4 ~@3 ab4 ~@3 ab4 ~", L: "~@2 gb4 ~@3 gb4 ~@3 f4 ~@3 f4 ~",
  M: "~@2 eb4 ~@3 eb4 ~@3 db4 ~@3 db4 ~", N: "~@2 c4 ~@3 c4 ~@3 db4 ~@3 db4 ~", O: "~@2 eb4 ~@3 eb4 ~@3 f4 ~@3 f4 ~",
  P: "~@2 gb4 ~@3 gb4 ~@3 ab4 ~@3 ab4 ~", Q: "~@2 f4 ~@3 f4 ~@3 gb4 ~@3 gb4 ~", R: "~@2 f4 ~@3 f4 ~@3 f4 ~@3 f4 ~",
  S: "~@2 f4 ~@3 f4 ~@3 bb4 ~@3 bb4 ~", T: "~@2 bb4 ~@3 bb4 ~@3 a4 ~@3 a4 ~", U: "~@2 db5 ~@3 db5 ~@3 c5 ~@3 c5 ~",
  V: "~@2 db5 ~@3 db5 ~@3 eb5 ~@3 eb5 ~", W: "~@2 ab4 ~@3 ab4 ~@3 gb4 ~@3 gb4 ~", X: "~@2 f4 ~@3 f4 ~@3 eb4 ~@3 eb4 ~",
  Y: "~@2 db4 ~@3 db4 ~@3 c4 ~@3 c4 ~", Z: "~@2 db4 ~@3 db4 ~@3 eb4 ~@3 eb4 ~", AA: "~@2 ab4 ~@3 ab4 ~@3 bb4 ~@3 bb4 ~",
  AB: "~@2 ab4 ~@3 ab4 ~@3 f4 ~@3 f4 ~",
})).s("gm_tremolo_strings").gain(0.8).pan(0)

// other · tremolo strings · "Taken from"
const tremolo_strings_2 = note(`<
  ~@27 A B C D E F G H I J K L M N B H O P Q R S T U V W X B Y E Z AA H AB AC AD AE K ~ AF AG AH G AI AJ AK AL AM AN AO
  AP AQ AR B C D E F G H I J K L M N B H O P Q R S T U V W AQ AS ~@19
>`.pickRestart({
  A: "~@12 bb4 ~@3", B: "bb4 ~@3 bb4 ~@3 bb4 ~@3 bb4 ~@3", C: "bb4 ~@3 a4 ~@3 a4 ~@3 bb4 ~@3",
  D: "bb4 ~@3 c5 ~@3 c5 ~@3 a4 ~@3", E: "a4 ~@3 bb4 ~@3 bb4 ~@3 c5 ~@3", F: "c5 ~@3 bb4 ~@3 bb4 ~@3 c5 ~@3",
  G: "c5 ~@3 db5 ~@3 db5 ~@3 bb4 ~@3", H: "bb4 ~@3 c5 ~@3 c5 ~@3 db5 ~@3", I: "db5 ~@3 c5 ~@3 c5 ~@3 db5 ~@3",
  J: "db5 ~@3 eb5 ~@3 eb5 ~@3 c5 ~@3", K: "c5 ~@3 c5 ~@3 c5 ~@3 c5 ~@3", L: "c5 ~@3 c5 ~@11", M: "~@12 c5 ~@3",
  N: "c5 ~@3 c5 ~@3 c5 ~@3 bb4 ~@3", O: "db5 ~@3 bb4 ~@3 bb4 ~@3 ab4 ~@3", P: "ab4 ~@3 gb4 ~@3 gb4 ~@3 f4 ~@3",
  Q: "f4 ~@3 eb4 ~@3 eb4 ~@3 db4 ~@3", R: "db4 ~@3 c4 ~@3 c4 ~@3 db4 ~@3", S: "db4 ~@3 eb4 ~@3 eb4 ~@3 f4 ~@3",
  T: "f4 ~@3 gb4 ~@3 gb4 ~@3 ab4 ~@3", U: "ab4 ~@3 bb4 ~@3 bb4 ~@3 ab4 ~@3", V: "ab4 ~@3 f4 ~@3 f4 ~@3 gb4 ~@3",
  W: "gb4 ~@3 f4 ~@3 f4 ~@3 f4 ~@3", X: "f4 ~@3 f4 ~@3 f4 ~@3 bb4 ~@3", Y: "bb4 ~@3 bb4 ~@3 bb4 ~@3 a4 ~@3",
  Z: "c5 ~@3 a4 ~@3 a4 ~@3 bb4 ~@3", AA: "bb4 ~@3 c5 ~@3 c5 ~@3 bb4 ~@3", AB: "db5 ~@3 bb4 ~@3 bb4 ~@3 c5 ~@3",
  AC: "c5 ~@3 db5 ~@3 db5 ~@3 c5 ~@3", AD: "c5 ~@3 db5 ~@3 db5 ~@3 eb5 ~@3", AE: "eb5 ~@3 c5 ~@3 c5 ~@3 c5 ~@3",
  AF: "~@4 c5 ~@3 c5 ~@3 c5 ~@3", AG: "c5 ~@3 bb4 ~@3 bb4 ~@3 bb4 ~@3", AH: "bb4 ~@3 bb4 ~@3 bb4 ~@3 c5 ~@3",
  AI: "bb4 ~@3 ab4 ~@3 ab4 ~@3 gb4 ~@3", AJ: "gb4 ~@3 f4 ~@3 f4 ~@3 eb4 ~@3", AK: "eb4 ~@3 db4 ~@3 db4 ~@3 c4 ~@3",
  AL: "c4 ~@3 db4 ~@3 db4 ~@3 eb4 ~@3", AM: "eb4 ~@3 f4 ~@3 f4 ~@3 gb4 ~@3", AN: "gb4 ~@3 ab4 ~@3 ab4 ~@3 bb4 ~@3",
  AO: "bb4 ~@3 ab4 ~@3 ab4 ~@3 f4 ~@3", AP: "f4 ~@3 gb4 ~@3 gb4 ~@3 f4 ~@3", AQ: "f4 ~@3 f4 ~@3 f4 ~@3 f4 ~@3",
  AR: "f4 ~@3 bb4 ~@3 bb4 ~@3 bb4 ~@3", AS: "f4 ~@15",
})).s("gm_tremolo_strings").gain(0.2).pan(1)

// other · pizzicato strings
const pizzicato_strings = note(`<
  ~@39 A B ~@12 C D@5 E@3 F@3 D E@2 G C@8 D H I J@4 K L@2 M N@2 O K L@2 P@8 J@2 Q@7 R Q@7 R ~@4
>`.pickRestart({
// … 60 more lines

More by William Orbit