Strudelify

Symphonie nr. 9 E-moll op. 95: II. Largo

Dvorak

KeyD♭ majorTempo52 bpm
0:00/0:00
// Symphonie nr. 9 E-moll op. 95: II. Largo — Dvorak
// 52 bpm, 4/4, key Db 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, 2/4 at bar 35, 4/4 at bar 35) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 121 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(52/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 · flute
const flute = note("<~@22 A@4 ~@20 B@2 ~ C@3 ~@4 D@2 E@3 F@3 G@3 H ~@14 I J K L M N O P ~@31>".pickRestart({
  A: "[~@26 [bb5,db6]@16 bb5@8 ~ c6@8 [db6,f6]@42 ~@27, ~@42 eb6@17 ~@69]/4", // Bbm Db
  B: "[~@13 e5@3 eb5@3 ~ db5@3 b4@2 ~ ab4@2 b4@2 db5@7 a4@2 db5@2 ~ a4@2 b4@7 ~@13, ~@41 b4@2 ~@21]/2",
  C: "[~@17 db5@10 ~ e5@3 eb5@3 ~ db5@3 db5@2 e5@2 ab5 ab5@2 ab5@10 ~ gb5@3 ~ gb5@2 ~@2 gb5@2 db6@29 ~, ~@59 e5@2 ~ a5@2 ~@32, ~@63 ab5@2 ~@31]/3",
  D: "[~@10 [db5,e5]@14 [eb5,gb5]@7 [e5,ab5]@7 b5@10 db6@2 b5 b5@2 ab5@11, ~@38 eb5@13 e5@13]/2", // Dbm Ebm E
  E: "[~ [a4,gb5]@10 ~ [d5,ab5]@3 a5@7 e5@7 e5@14 gb5@7 c5@3 ab4@2 eb5@2 db5@31 ~@3 db5@2 eb5@2 ~, ~@15 db5@14 db5@21 e5@5 ~@41]/3", // D Ddim
  F: "[~ gb5@13 ab5@3 ~@3 db5@2 ~ eb5@2 e5@2 gb5@13 ab5@12 a5@6 ~ ab5@9 gb5@3 ~ eb5@3 e5@6 gb5@3 e5@3 ~ eb5@3 db5@3 ~@2]/3",
  G: "[~ e5@2 gb5@2 ~ ab5@2 a5@12 ab5@3 ~@4 e5@2 gb5@2 ab5@2 a5@12 ~ a5@12 e6 d6@12 a6 ab6@19 e6@3 db6@2, ~@33 b5 ~@12 b5 ~@49]/3",
  H: "~ c6@3 ~@28", I: "~@13 ab5@3 db6 ~@2 c6@3 ~ db6 ~@3 eb6@2 db6@2 ~, ~@13 gb6 ~@2",
  J: "c6@3 db6@2 ~@2 f6 gb6 ab6 f6 eb6 db6 eb6 f6 gb6 f6 eb6 db6 eb6 f6 gb6 ~ f6 ab6 ~ gb6 f6 eb6 f6 db6 ~",
  K: "ab6@26 ab6!6", L: "ab6!6 ~ ab6!15 ~ ab6!9", M: "ab6!6 ~ ab6!6 e6@17 ~@2", N: "~@16 a5@2 db6 e6!3 ~ e6@7 ~@2",
  O: "~@11 a5@3 db6 e6!3 e6@7 a5@3 db6 [db6,e6]!3", P: "[db6,e6]",
})).s("gm_flute").gain(0.11).pan(0.1)

// other · flute · soft notes
const flute_soft = note("<~@20 A@3 ~@22 B C D@2 E ~@10 F@2 ~@54 G@3 ~@2>".pickRestart({
  A: "[~@13 f4@2 ab4@2 db5@2 f5@2 ab5@2 [ab5,db6]@17 [g5,d6]@16 ~ [ab5,db6]@16 [bb5,d6]@16 ~@7]/3", // Db5 G5 Db5 Bb
  B: "e5@2 eb5@2 db5@2 ~ db5@10 e5@3 ~ eb5@3 db5@3 ~ e5@2 eb5@2", C: "db5 db5@5 ~@10",
  D: "[~@19 ab4@7 b4@2 ab4@2 ~ b4@2 db5@13 ~ e5@2 eb5@2 db5@2 ~ db5@10]/2",
  E: "e5@3 ~ eb5@3 db5@3 e5@2 ~ eb5@2 db5@2 ~@15", F: "[~@31 e5@2 ~@31]/2", G: "[~@23 [db6,f6]@49 ~@24]/3",
})).s("gm_flute").gain(0.06).pan(0.1)

// other · clarinet · "Clarinetti 1 u.2"
const clarinet = note(`<
  A B C D@2 ~@5 E F E F G ~@3 H@8 ~@12 I@2 ~@10 J K@2 L@5 M@3 N O P Q R S T ~@3 U@4 V@2 W X Y ~@2 Z AA AB AC AD AE@2 AF
  ~@14 AG@2 AH@3 ~@6 AI@3 ~@3
>`.pickRestart({
  A: "e3 d3", B: "e3 db3", C: "db3@2 db3 eb3", D: "[f3@9 ~@7]/2", E: "gb4 bb4 bb4@2 ab4 f4 gb4@2",
  F: "gb4 bb4 ab4 f4 gb4@4", G: "ab4 ~@7",
  H: "[~@3 eb5@7 db5@2 eb5@5 [eb4,bb4]@4 [f4,db5]@18 eb5@8 db5@2 eb5@6 ~ [eb4,bb4]@6 [f4,db5]@25 [db5,f5]@17 [d5,g5]@17 [db5,f5]@16 [d5,f5]@17 [db5,gb5]@16 [eb5,gb5]@17 [f5,ab5]@42 ~@27, ~@3 bb4@14 ~@22 bb4@16 ~@201]/8", // Eb5 Db Eb5 Db G5 Db Dm Gb5 …
  I: "[~@24 eb5@7 db5@2 ~ eb5@4 [eb4,bb4]@5 [f4,db5]@21, ~@12 bb4@7 ~@13]/2", J: "~@3 [db4,e4]@13",
  K: "[~@2 [ab3,e4]@29 ~@14 eb5@7 e5@7 [e5,ab5]@5, ~@31 db5@28 ~@5]/2", // Dbm E
  L: "[~@2 [d5,gb5]@14 [gb5,a5]@14 [e5,ab5]@10 [eb5,gb5]@7 [db5,e5]@3 e5@7 eb5@7 gb5@7 e5@3 ~ eb5@3 [db5,e5]@2 db5@53 ~ [b4,gb5]@13 [e4,b4]@13, ~@50 db5@21 c5@7 ~@2 e4@25 ~@55]/5", // D Gbm E Ebm Dbm B5 E5
  M: "[~ d5@11 b4@3 e5@7 ab4@7 a4@21 ab4@3 gb4@3 ~ [e4,ab4]@27 db4@2 e4@2 ~ e4@2 ~ e4@2 ab4@2, ~@88 ab4@2 ~ db4@2 ~@3]/3", // E
  N: "~ a3@2 ~ gb4@2 db4@2 ~ db4@2 ~ db4@2 db4@2 ~ ab4@2 ~ db4@2 e4@2 ~ e4@2 ~ db4@2 gb4@2, e4@2 ~ db4@2 ~@3 a3@2 ~ gb4@2 ~@3 e4@2 ~ e4@2 ~@3 ab4@2 ~ a3@2 ~@3",
  O: "~ a3@2 ~ gb4@2 db4@2 ~ b3@2 ~ b3@2 ab3@2 ~ e4@2 ~ gb3@2 e4@2 ~ db4@2 ~ eb4@2 ab4@2, db4@2 ~ db4@2 ~@3 ab3@2 ~ eb4@2 ~@3 db4@2 ~ db4@2 ~@3 eb4@2 ~ b3@2 ~@3",
  P: "~ e4@2 ~ b4@2 ab4@2 ~ b4@2 ~ e4@2 db4@2 ~ ab4@2 ~ db4@2 e4@2 ~ e4@2 ~ e4@2 ab4@2, eb4@2 ~ ab4@2 ~@3 e4@2 ~ ab4@2 ~@3 e4@2 ~ e4@2 ~@3 ab4@2 ~ db4@2 ~@3",
  Q: "~ db4@2 ~ ab4@2 db5@2 ~ g4@2 ~ g4@2 e4@2 ~ a4@2 ~ db4@2 e4@2 ~ e4@2 ~ e4@2 ab4@2, e4@2 ~ e4@2 ~@3 e4@2 ~ a4@2 ~@3 g4@2 ~ db5@2 ~@3 ab4@2 ~ db4@2 ~@3",
  R: "~ e4@2 ~ a4@2 g4@2 ~ g4@2 ~ db5@2 d4@2 ~ a4@2 ~ d4@2 gb4@2 ~ d5@2 ~ a4@2 d5@2, db5@2 ~ g4@2 ~@3 e4@2 ~ a4@2 ~@3 gb4@2 ~ gb4@2 ~@3 a4@2 ~ gb4@2 ~@3",
  S: "~ gb4@2 ~ d5@2 gb5@2 ~ e5@2 ~ ab4@2 ab4@2 e5 e5@2 ab4 ab4@2 e5@2 ~ ab4@2 ~ e5@2 e5@2, a4@2 ~ a4@2 ~@3 ab4@2 ~ e5@2 ~@11 e5@2 ~ ab4@2 ~@3",
  T: "ab4 [ab3,ab4]@3 ~@28", // Ab
  U: "[~@27 [e3,ab3]@13 a3@6 ab3@6 e4@6 ~ d4@13 ~@6 a3@6 e4@10 ~@3 ab3@3 [a3,db4]@3 ~ a3@6 gb3@6 a3@6 ~ c4@3 ab4@2, ~@40 db4@12 a3@26 ~@6 ab3@13 ~@26 ab3@5, ~@72 gb4@13 ~@9 eb4@6 ~@4 db4@19 ~@5]/4", // E A
  V: "[~ [ab3,ab4]@16 ~@3 ab3@3 ~ c4@3 [ab3,db4]@13 eb4@6 e4@6 [eb4,gb4]@12, ~@40 db4@13 ~@11]/2", // Ab Db5 Ebm
  W: "~ [b3,e4]@13 a3@10 b3@3 [db4,e4]@5, ~@14 d4@13 ~@5", X: "~ [ab3,db4]@6 ~ [a3,db4]@19 [ab3,c4]@5",
  Y: "~ [ab3,db4]@3 ~@28", Z: "~@13 f4 gb4 ab4 f4 eb4 db4 eb4 f4 gb4 ~ f4 eb4 db4 eb4 f4 gb4 f4 ab4 ~",
  AA: "gb4 f4 eb4 f4 db4 ~@2 [db4,ab4]!2 ~ [db4,ab4]!2 ~ [db4,ab4] ~ [db4,ab4]!2 ~ [db4,ab4]!2 ~ [db4,ab4] ~ [db4,ab4]!2 ~ [db4,ab4]!2 ~ [db4,ab4] ~ [db4,ab4]", // Db5
  AB: "[ab3,ab4]@3 [db4,db5]@2 ~@2 [c4,c5]@3 [db4,db5]@2 ~ [gb4,gb5]@2 ~ [db4,db5]@2 ~ [c4,c5]@3 ~ [db4,db5]@2 ~ ab4!6, ~@15 [eb4,eb5]@2 ~@15", // Ab Db C Db Gb Db C Db …
  AC: "ab4!6 ~ ab4!15 ~ ab4!9", AD: "ab4!6 ~ ab4!6 [a4,e5]@17 ~@2",
  AE: "[~@16 a4@2 db5 e5!3 ~ e5@14 ~@6 a4@3 [a4,db5] [db5,e5]!3 [db5,e5]@7 a4@3 [a4,db5] [db5,e5]!3]/2", AF: "[db5,e5]",
  AG: "[~@30 gb5@7 f5@2 gb5@4 [gb4,db5]@4 ~ [ab4,f5]@16, ~@15 db5@6 ~@11]/2", // Gb5 Db
  AH: "[~ gb5@7 f5@2 gb5@4 [gb4,db5]@4 [ab4,f5] [ab4,f5]@56 ~@21, ~ db5@12 ~@83]/3", AI: "[~@22 [f4,ab4]@43 ~@31]/3",
})).s("gm_clarinet").gain(0.05).pan(0.4)

// other · bassoon
const bassoon = note("<~@16 A B@2 ~@65 C D E@3 F ~@31>".pickRestart({
  A: "f3@6 ab3@2 ab3@8 db4@6 ~ eb4@2 f4@7", B: "[~ eb4@6 ~ db4@2 eb4@4 bb3@4 db4@17 ~@29]/2", C: "~@26 [ab2,ab3]!6",
  D: "[ab2,ab3]!6 ~ [ab2,ab3]!15 ~ [ab2,ab3]!9", // Ab
  E: "[[ab2,ab3]!6 ~ [ab2,ab3]!6 [db3,e3]@28 ~@7 a3@2 db4 e4!3 ~ e4@14 ~@6 a3@3 [a3,db4] [db4,e4]!3 [db4,e4]@7 a3@3 [a3,db4] [db4,e4]!3]/3", // Ab Dbm A Dbm A Dbm
  F: "[db4,e4]", // Dbm
})).s("gm_bassoon").gain(0.12)

// other · bassoon · soft notes
const bassoon_soft = note("<A B C D@2 ~@13 E@8 ~@10 F@4 ~@10 G H ~@52 I@2 J@3 ~@2 K L@6 ~@3>".pickRestart({
  A: "[e2,b2] [d2,bb2]", B: "[e2,b2] [db2,ab2]", C: "[a2,db3] [gb2,gb3]", D: "[[db2,db3]@9 ~@7]/2",
  E: "[~@3 [gb3,db4]@18 [db3,ab3]@18 [gb3,db4]@23 ab3@25 db4@17 b3@17 db4@16 bb3@17 gb4@16 eb4@17 db4@42 ~@27, ~@31 db3@17 ~@80]/8", // Gb5 Db5 Gb5
  F: "[~@21 f3@6 ab3@2 ab3@8 ~ db4@6 eb4@2 f4@8 ~ eb4@6 db4@2 eb4@4 bb3@4 db4@16 ~ [gb3,db4]@19 [db3,ab3]@21]/4", // Gb5 Db5
  G: "~@6 db4@7 b3@7 a3@12", H: "~@2 db3@29 ~", I: "[~@30 [gb2,db3]@17 ~ [db2,ab2]@16]/2",
  J: "[~ [gb2,db3]@17 [db2,ab2]@17 ~ [db2,ab2]@39 ~@21]/3", K: "~@17 [db2,db3]@15",
  L: "[~ [b1,b2]@17 [db2,db3]@17 [bb1,bb2]@16 [gb1,gb2]@17 [eb1,eb2]@17 [db1,db2]@33 [db2,db3]@43 ~@31]/6", // B Db Bb Gb Eb Db
})).s("gm_bassoon").gain(0.06)

// chords · french horn
const french_horn = note("<A B C D@2 ~@17 E@4 ~@15 F@2 G H@2 ~@40 I J@2 ~@16 K L@3 ~@12>".pickRestart({
  A: "[ab4,b4] bb4", B: "[ab4,b4] db5", C: "db5!2", D: "[[db4,db5]@9 ~@7]/2",
  E: "[~@9 f5@17 gb5@16 eb5@17 ab5@17 [f5,ab5]@37 ~@15]/4", // Fm
  F: "[db5,f5]@3 [f5,ab5] [f5,ab5]@4 [db5,f5]@2 [ab4,eb5]@2 [f4,db5]@4", // Db Fm Db Ab5 Db
  G: "[db5,f5]@3 [f5,ab5] [f5,ab5]@4 [db5,f5]@3 [f5,ab5] [f5,ab5]@4", H: "[[db5,f5]@6 ab5@2 ab5@27 ~@29]/2",
  I: "~@13 a4@19", J: "[~@2 a4@5 a4@2 ~ e4@5 ~ a4@21 ~@27, ~@9 gb4@2 ~@53]/2", K: "~ db4", L: "[~@9 db4@28 ~@11]/3",
})).s("gm_french_horn").gain(0.06).pan(0.7)

// other · french horn
const french_horn_2 = note("<A B C D@2 ~@14 E@2 ~@2 F@3 ~@60 G@3 ~@22 H I@4 ~@5>".pickRestart({
  A: "e4 d4", B: "e4 ab4", C: "a4!2", D: "[ab4@9 ~@7]/2", E: "[~@15 db5@15 ~@2]/2",
  F: "[~@27 db5@17 [db5,f5]@37 ~@15]/3", G: "[~@13 [e4,e5]@28 [e4,e5]@28 ~@27]/3", H: "~@17 ab4@15",
  I: "[~ d4@17 ab4@17 bb4@16 gb4@25 gb4@8 ~ ab4@33 ~@10]/4",
})).s("gm_french_horn").gain(0.16).pan(0.9)

// chords · trumpet
const trumpet = note("<~@2 A B@2 ~@80 C D E F G@2 ~@30>".pickRestart({
  A: "e3 gb3", B: "[ab3@9 ~@7]/2", C: "~@19 [gb3,bb3]@3 c4 [f3,ab3]@3 [gb3,bb3]@2 c4 [f3,ab3]@3",
  D: "[gb3,bb3]@3 [gb3,bb3]@3 c4 [gb3,bb3]@2 c4 [gb3,bb3]@2 c4 [a3,db4]@14 [a3,db4]@5, ~@3 c4 ~@28", // Gb A
  E: "[db4,e4]@2 [db4,e4]@7 [a3,db4]@5 [e3,b3]@2 [db3,a3]@7 ~@9", // Dbm A E5 Gbm
  F: "~@4 [a3,db4]@5 ~ [db4,e4] [db4,e4]@7 [a3,db4]@5 [e3,b3]@2 [db3,a3]@7", // A Dbm A E5 Gbm
  G: "[[a3,db4]@5 [e3,b3]@2 [db3,a3]@7 [a3,db4]@5 [e3,b3]@2 [db3,a3]@7 [a3,db4]@7 [e3,b3]@8 [db3,a3]@8 [e3,b3]@10 ~@3]/2", // A E5 Gbm A E5 Gbm A E5 …
})).s("gm_trumpet").gain(0.1).pan(0.6)

// chords · trumpet · soft notes
const trumpet_soft = note("<A@2 ~@22 B@2 ~@64 C@2 ~@29>".pickRestart({
  A: "e3 f3", B: "[~@12 [db4,f4]@37 ~@15]/2", C: "[~@30 [f3,db4]@21 ~@13]/2",
})).s("gm_trumpet").gain(0.07).pan(0.6)

// chords · trombone
const trombone = note("<A B C D@2 ~@19 E@2 ~@60 F@3 ~@22 G H@4 ~@5>".pickRestart({
  A: "[b2,ab3] [bb2,f3]", B: "[b2,ab3] [db3,f3]", C: "[db3,e3]@2 ~ eb3, ~ [db3,a3]", D: "[[f3,ab3]@5 ~@3]/2",
  E: "[~@6 [ab3,db4]@19 ~@7]/2", // Db5
  F: "[~@13 db3@5 e3@2 a3@2 db4@5 e4@10 ~@18 db3@5 ~ a3@2 db4@5 e4@10 ~@18, ~@30 e3 ~@17]/3", G: "~@17 [f3,db4]@15",
  H: "[~ [g3,d4]@17 [f3,db4]@17 [f3,d4]@16 db4@17 ~@8 c4@8 ~ [db4,f4]@33 ~@10, ~@51 bb3@25 ~@52, ~@68 eb4@17 ~@43]/4", // G5 Db Dm Db
})).s("gm_trombone").gain(0.08).pan(0.6)

// bass · tuba · "Trombone basso e Tuba"
const bass = note("<A B C D@2 ~@19 E@2 ~@60 F G@2 ~@22 H I@4 ~@5>".pickRestart({
  A: "e2 d2", B: "e2 db2", C: "a2 gb2", D: "[db2@9 ~@7]/2", E: "[~@12 db3@37 ~@15]/2",
  F: "~@13 db3@5 e3@2 a3@2 db4@5 ~@5", G: "[~@23 db3@5 ~ a3@2 db4@5 ~@28, ~@14 e3 ~@17]/2", H: "~@17 db2@15",
  I: "[~ b1@17 db2@17 bb1@16 gb1@17 eb1@17 db1@33 ~@10]/4",
})).s("gm_tuba").gain(0.1).pan(0.8)

// other · timpani
const timpani = note("<~@3 A ~@20 B C ~@60 D E@3 F ~@23 G H ~@5>".pickRestart({
  A: "~@8 db3!17 ~@7", B: "~@12 db3!19 ~", C: "db3!6 ~@26", D: "~@13 db3!19", E: "db3!32",
  F: "db3!20 ~ db3!4 ~ db3!3 ~@3", G: "~@21 db3!11", H: "db3!10 ~ db3!4 ~@17",
})).s("gm_timpani").gain(0.06)

// other · timpani · soft notes
const timpani_soft = note("<~@3 A B ~@20 C ~@64 D@2 ~@23 E ~@5>".pickRestart({
  A: "~@25 db3!7", B: "db3 ~@7", C: "~@6 db3!15 ~@11", D: "[~@30 db3@9 ~@25]/2", E: "~@15 db3!8 ~@9",
})).s("gm_timpani").gain(0.03)

// other · string ensemble 1 · "Violino 1"
const string_ensemble_1 = note(`<
  ~@4 A@2 B C D E F@4 G C H I@2 ~@32 J K L M N ~ O P Q R@2 S T@3 U ~@4 V@4 W@2 X Y Z@2 ~@3 AA AB AC AD@2 AE@2 ~@11 AF@2
  AG ~@16
>`.pickRestart({
  A: "[f4@3 f4 f4@5 eb4 f4@6]/2", B: "f4 db4", C: "c4", D: "db4", E: "db4 ab3@3", F: "db4/2", G: "db4@5 ab3 f4 db4",
  H: "f4@8 eb4@8 db4@8 ~ ab4@7", I: "[~ [gb4,bb4]@13 gb4@4 f4@17 ~@29]/2", J: "~@31 e4",
  K: "ab4 e4 ab4 [e4,ab4] e4 ab4 e4@2 ~@24", L: "~@2 gb4 a4 [gb4,a4] gb4 a4 gb4 a4 gb4@2 ~@21",
  M: "~@4 gb4 ab4 gb4 ab4 gb4 ab4 gb4 gb4@2 ~@12 a4 db5 a4 db5 a4 [a4,db5] db5, ~@11 ab4 ~@20", // A
  N: "a4@2 ~@5 ab4 c5 ab4 c5 ab4 ~@9 e4 ab4 e4 [e4,ab4] ab4 e4 ab4 e4@2 ~@2", // E
  O: "~@6 [gb4,b4] gb4 b4 gb4 b4 gb4 gb4@2 ~@5 ab4 b4 ab4 b4 ab4 ~@8, ~@12 b4 ~@19", // B5
  P: "~ gb4 a4 gb4 a4 gb4 [gb4,a4] a4 gb4@2 ~@5 e4 a4 e4 a4 e4 ~@9 a4 db5 a4", // Gbm
  Q: "[a4,db5] db5 a4 db5 a4@2 ~@5 gb4 ab4 [gb4,ab4] gb4 ~@10 e4 [e4,ab4] ab4 e4 ab4 e4 ab4", // A Gbsus2 E
  R: "[e4 [e4,ab4] ab4 e4 ab4 e4 ab4 [e4,ab4] e4 ab4 e4 ab4 e4 ab4 [e4,ab4] e4 ab4 e4 ab4 db5 e5@2 ~ eb5@2 db5@2 db5@9 e5@3 ~ eb5@3 db5@3 e5@2 eb5@2 db5@2 db5@10 e5@2, ~@20 eb5 ~@43]/2", // E
  S: "~ eb5@3 db5@3 ~ b4@2 ab4@2 b4@2 db5@6 a4@2 db5@2 ~ a4@2 b4@5, ~@12 b4 ~@3",
  T: "[~ ab4@6 ~ b4@2 ab4@2 b4@2 db5@13 e5@2 eb5@2 db5@2 db5@10 e5@3 eb5@3 db5@3 e5@2 ~ eb5@2 db5@2 db5@9 e5@3 ~ d5@3 db5@3 gb5@2 e5@2 d5@2 d5@6 ~ a5@3 gb5@2]/3",
  U: "~ e5@3 d5@3 ~ d6@3 db6@3 c6@3 b5@3 bb5@3 ~ a5@3 ab5@3 g5@2",
  V: "[~@27 db4@13 eb4@6 e4@6 ab4@6 ~ gb4@13 a4@12 ab4@9 ~ gb4@6 e4@3 ~ e4@6 eb4@6 gb4@6 ~ e4@5]/4",
  W: "[~ e4@19 db4@3 ~ eb4@3 e4@13 gb4@6 ab4@6 b4@10 db5@2, eb4 ~@31]/2", X: "b4 b4@2 ab4@8 e4@3 gb4@10 ab4@3 a4@5",
  Y: "~ e4@6 ~ e4@6 eb4@6 gb4@6 ~ e4@3 eb4@2",
  Z: "[~ e4@2 eb4@2 ~ db4@2 db4@9 e4@3 eb4@3 ~ db4@3 e4@2 eb4@2 db4@2 ~ db4@10 e4@3 eb4@3 db4@3 ~ e4@2 eb4@2 db4@2 ~@4]/2",
  AA: "f5 gb5 ab5 f5 eb5 db5 ~ eb5 f5 gb5 f5 eb5 db5 eb5 f5 gb5 f5 ab5 ~ gb5 f5 eb5 ~ f5 db5 ~ ab5@3 db6@2 ~",
  AB: "c6@3 db6@2 ~@3 eb6@2 db6@2 ~ c6@3 db6@2 ~ ab5 ab6!2 ~ ab6!9, ~@7 gb6@2 ~@23",
  AC: "ab5 ab6!2 ab5 ab6!2 ~ ab5 ab6!2 ab5 ab6!2 a6@19",
  AD: "[~@2 a6@5 a6@2 ~ e6@5 ~ a6@20 a6@7 a6@5 ~@2 gb6@2 e6@5 a6@5 a6@2, ~@9 gb6@2 ~@38 a6@2 ~@13]/2",
  AE: "[gb6@2 e6@5 a6@5 a6@2 gb6@2 e6@5 a5@5 a5@2 gb5@2 e5@5 a5@6 a5@2 gb5@2 e5@6 a4@8 a4@3 ~@2]/2",
  AF: "[~@23 f4@6 ab4@2 ab4@9 db5@7 eb5@2 f5@9 ~ eb5@5]/2", AG: "~@2 db5@2 eb5@4 c5@5 db5@17 ~@2",
})).s("gm_string_ensemble_1").gain(0.05).pan(0.3)

// other · string ensemble 2 · "Violino 1"
const string_ensemble_2 = note("<~@25 A@3 B C D@2 E@7 ~@28 F G@4 ~@8 H@2 ~@23 I J@3 K@3 ~@3 L@4 ~@2>".pickRestart({
  A: "[~@13 f5@23 ab5@2 ab5@8 gb5@4 eb5@4 ~ f5@8 db5@4 f5@4 eb5@4 c5@4 ~ db5@16]/3",
  B: "f5@6 ab5@2 ~ ab5@8 gb5@4 eb5@4 f5@7", C: "~ db5@2 f5@2 eb5@2 c5@2 db5@7",
  D: "[~@3 db5@4 f5@4 eb5@4 c5@4 db5@16 ~ db5@4 f5@4 eb5@4 c5@4 db5@4 bb4@4 c5@4]/2",
  E: "[ab4@4 db5@4 f5@4 eb5@3 c5@4 db5@4 bb4@4 c5@4 ab4@3 db5@4 bb4@4 c5@4 ab4@3 db5@25 b4@4 ~ a4@5 ab4@52 c4@13 db4@4 f4@4 eb4@8 ~ db4@8 ab4@8 ~ [gb4,bb4]@16 ab4@16 ~@9]/7", // Gb
  F: "~ a5@3 ab5@3 ~ gb5@3 e5@3 eb5@3 db5@3 c5@3 ~ gb5@3 e5@5",
  G: "[~ eb5@13 d5@26 db5@12 c5@7 a4@19 ab4@6 g4@19 ~ ab4@6 a4@3 ab4@3 eb4@3 ~ e4@3 ~@5]/4",
  H: "[~@29 ab4@22 ab4@6 ~@7, ~@29 db4@29 ~@6]/2", I: "~@16 ab4@4 db5@4 f5@4 ~ ab5@3",
  J: "[~ db6@22 c6@4 f6@4 db6@4 ~ ab5@4 f5@4 bb5@4 ~ ab5@4 f5@4 ab5@4 ~ f5@4 eb5@4 db5@4 ~ f5@4 ab5@4 f5@2 ~ eb5@2 db5@4 bb4@4]/3",
  K: "[ab4@4 ~ f4@4 f4@9 db4@4 eb4@4 f4@4 ~ ab4@8 f4@4 ~ f4@8 eb4@9 db4@9 ~ bb3@10 db4@8 ~@7]/3",
  L: "[~@26 db5@4 f5@4 ab5@4 ~ db6@4 eb6@4 f6@4 ab6@4 db7@49 ~@24]/4",
})).s("gm_string_ensemble_2").gain(0.1).pan(0.3)

// other · string ensemble 2 · "Violino 1" · soft notes
const string_ensemble_2_soft = note("<~@40 A B C@2 ~@46 D@5 ~@26>".pickRestart({
  A: "eb5@3 db5 eb5@2 bb4@2", B: "db5 ab4", C: "[db5@2 ab4@3 ~@3]/2",
  D: "[~@30 ab4@32 ab4@31 ~ ab4@15 ~ a4@15 ~ bb4@8 c5@8 db5@15 ~@3]/5",
})).s("gm_string_ensemble_2").gain(0.07).pan(0.3)

// other · violin · "Violino 1"
const violin = note("<~@94 A@2 B C D E F@2 G ~@18>".pickRestart({
  A: "[~@30 bb4@6 ~ db5@2 db5@8 c5@4 ab4@4 bb4@7 ~@2]/2", B: "bb4 db5 c5 ab4 bb4@4",
  C: "~ bb4@4 db5@4 db5@8 ~ c5@4 ab4@4 ~@6", D: "~@2 bb4@17 ~@8 bb4@4 ~", E: "db5@4 c5@4 ab4@4 ~ bb4@18 ~",
  F: "[~@12 f4@7 ab4@2 ~ ab4@9 f4@7 eb4@2 db4@9 eb4@7 f4@2 ~ ab4@5]/2", G: "~@2 f4@2 eb4@9 e4@10 ~@9",
})).s("gm_violin").gain(0.01).pan(0.3)

// other · string ensemble 1 · "Violino 2"
const string_ensemble_1_2 = note(`<
  ~@4 A@2 B ~ C D E F E F G@2 H I@2 ~@26 J K L M N O P@2 ~@7 Q R S T U V W X ~@16 Y Z AA AB@2 AC@2 ~@30
>`.pickRestart({
  A: "[db4@3 db4 db4@5 c4 db4@6]/2", B: "db4@16 ab3@5 ~@11", C: "ab3 a3", D: "bb3 c4 db4@2", E: "bb3@2 ab3 bb3",
// … 175 more lines

More by Dvorak