Strudelify

Piano Concerto Op.16

Edvard Grieg

KeyD♭ majorTempo21 bpm
0:00/0:00
// Piano Concerto Op.16 — Edvard Grieg
// 21 bpm, 3/8, 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 (3/8 at bar 1, 8/4 at bar 86) are rendered on a constant 3/8 grid of one bar per cycle
// note: ch 1 "Flute" named as a pipe, played on flute (its string ensemble 1 patch is not one); ch 2 "Oboe" named as a reed, played on oboe (its pizzicato strings patch is not one); ch 3 "B♭ Clarinet" named as a reed, played on clarinet (its tremolo strings patch is not one); ch 4 "Bassoon" named as a reed, played on bassoon (its string ensemble 1 patch is not one); ch 5 "Horn in E♭" named as a brass, played on brass section (its pizzicato strings patch is not one); ch 6 "Piano" named as a piano, played on piano (its tremolo strings patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5910402; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 89 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(21/1.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 · flute
const flute = note(`<
  A B C D E F G H I J K L M N O@2 P Q R Q S T@8 ~@5 U ~ V@3 ~@5 W ~ X@5 ~ Y@2 Z@8 ~ AA@2 AB@2 AC@5 AD@4 AE@3 ~@2 AF@3
  ~@5
>`.pickRestart({
  A: "db3@11 db3@21", B: "ab2@11 ab2@21", C: "db3@11 c3@10 bb2@11", D: "eb3@11 ab2@16 ~@5", E: "eb3@11 eb3@21",
  F: "bb2@11 bb2@21", G: "eb3@11 db3@10 c3@11", H: "f3@11 bb2@16 ~@5", I: "~@21 gb3@5 ~ ab3@5", J: "a3@11 ab3@11 ~@10",
  K: "~@21 a3@5 ~ b3@5", L: "c4@11 b3@11 ~@10", M: "~@21 c4@5 ~ d4@5", N: "eb4@11 ~@10 eb4@11",
  O: "eb4@4 gb4@3 f4@4 f4@5 eb4@5 eb4@11", P: "~@21 eb2@11", Q: "f2@5 gb2@5 ~ ab2@21", R: "bb2@11 eb2@21",
  S: "bb2@11 [eb2,bb2]@21", // Eb5
  T: "[f2@5 gb2@5 ~ ab2@28 db3@11 c3@11 b2@10 bb2@11 a2@11 ab2@10 db3 ~ db3!3 ~ db3!3 ~ db3 c3!2 ~ c3!3 ~ c3!3 ~ b2!3 ~ b2!3 ~ b2!2 bb2 ~ bb2!3 ~ bb2!3 ~ bb2 a2!2 ~ a2!3 ~ a2!3 ~ ab2!3 ~ ab2!3 ~ ab2!2 [db3,f4,db5]@11 db3@21 db3@22 ~ db3@26 ~@8, ~@125 gb4@10 g4@21 ~ [gb4,c5]@11 ~@88]/8", // Db Gbdim
  U: "~@14 [db2,ab2]@3 ~@4 [db2,ab2]@5 ~@6", V: "[~@25 c3@11 db3@11 ab2@10 e3@5 ~ eb3@5 db3@11 b2@9 ~@8]/3",
  W: "~@13 [e2,b2]@4 ~@3 [e2,b2]@3 ~@4 [e2,b2]@5", // E5
  X: "[~@31 eb3@11 e3@11 b2@10 g3@5 ~ gb3@5 [e3,g3]@11 [d3,a3]@10 b4@10 ~ b4@16 bb4@5 b4@5 ~ d5@5 gb5@10 ~@12]/5", // Em D5
  Y: "[~@21 ab5@4 c6@4 eb6@25 ~@10]/2",
  Z: "[~@12 ab5@8 ~@32 db4@11 db4@16 c4@5 db4@5 f4@5 ~ ab4@16 db4@5 eb4@5 g4@5 ~ ab4@11 ~@42 eb4@11 eb4@16 d4@5 eb4@5 gb4@5 ~ bb4@16 eb4@5 f4@5 a4@5 ~ bb4, ~@20 db6@43 ab5@30 ~@55 eb6@42 ~ bb5@30 ~@35]/8",
  AA: "[~@20 gb2@22 f2@11 ~@11]/2", AB: "[~@26 a2@22 ab2@11 ~@5]/2",
  AC: "[~@27 c3@21 bb2@11 ab2@21 gb2@11 f2@11 b2@10 bb2@11 a2@11 ab2@10 eb2@11 f2@5]/5",
  AD: "[gb2@5 ~ ab2@21 bb2@11 eb2@21 f2@5]/2", AE: "[gb2@5 ~ ab2@21 f4@21 gb4@11 g4@22 [gb4,c5]@15, ~@9 db5@18 ~@5]/3",
  AF: "[~@13 db3@10 db3@26 ~ db3@10 db3@28 ~@8]/3",
})).s("gm_flute").gain(0.2).pan(0.7)

// chords · flute · soft notes
const flute_soft = note("<~@24 A@2 ~@2 B@7 ~@3 C@6 D ~@38 E F G@4>".pickRestart({
  A: "[~@7 db5@53 ~@4, ~@7 f4@21 ~@36]/2",
  B: "[~@24 [db2,ab2]@70 [db2,ab2]@70 [db2,ab2]@5 ~@5 [db2,ab2]@5 ~@4 [db2,ab2]@4 ~@4 [db2,ab2]@4 ~@4 [db2,ab2]@4 ~@21]/7", // Db5
  C: "[~@28 [e2,b2]@71 [e2,b2]@71 [e2,b2]@5 ~@5 [e2,b2]@5 ~@4 [e2,b2]@3]/6", D: "~@5 [e2,b2]@4 ~@23", E: "~@25 db3@6 ~",
  F: "~@5 ab2@7 ~@7 ab2@9 ~@4", G: "[~@4 ab2@97 ~@27]/4",
})).s("gm_flute").gain(0.1).pan(0.7)

// other · oboe
const oboe = note("<~@24 A@3 ~@21 B@6 C@8 ~@5 D@4 ~@6 E@2 ~@10>".pickRestart({
  A: "[~@29 d5@10 eb5@16 e5@5 ~ f5@5 c5@5 ~@25]/3",
  B: "[~@31 g2@11 ~@21 gb2@11 ~@21 [f2,b4]@10 b4@13 ~ bb4@4 b4@4 d5@4 ~ ab5@12 g5@4 ~ [c5,gb5]@35 ~@8, ~@123 e2@9 ~@17 eb2@4 ~@39]/6", // Fdim Cdim
  C: "[~@12 ab4@8 db3@11 gb2@11 ~@10 f3@11 eb3@10 ab2@11 db3@11 c3@10 bb2@11 eb3@11 ab2@11 ~@10 eb3@11 b2@10 ab2@11 gb2@11 f2@10 bb2@11 eb3@11 db3@10 c3@11 f3@11 bb2, ~@20 db5@5 ~@231]/8",
  D: "[~@27 eb5@21 d5@11 c5@11 b4@10 bb4@11 a4@11 ab4@10 g4@11 ~@5]/4",
  E: "[~@16 [b2,d5]@11 [bb2,eb5]@11 ~@5 e5@6 f5@7 ~ c5@7, ~@19 a2@6 ~@7]/2", // Bm Eb5
})).s("gm_oboe").gain(0.2).pan(0.7)

// other · oboe · soft notes
const oboe_soft = note("<~@24 A ~ B ~@36 C@2 D@2 ~@3 E@2 ~@4 F@2 G ~@10>".pickRestart({
  A: "~@7 db5@21 ~@4", B: "~@7 db5@11 ~@14", C: "[~@20 a4@22 ab4@11 ~@11]/2", D: "[~@26 c5@22 b4@11 ~@5]/2",
  E: "[~@27 gb4@21 ~@16]/2", F: "[~@27 db3@11 c3@11 ~@15, ~@27 db5@21 ~@16]/2", G: "~@17 ab2@15",
})).s("gm_oboe").gain(0.15).pan(0.7)

// other · clarinet · "B♭ Clarinet"
const clarinet = note("<~@24 A@3 ~@21 B@3 ~ C@2 D@3 E@4 F@2 ~@13 G@3 ~@10>".pickRestart({
  A: "[~@7 f3@21 ~ gb3@10 g3@21 ~ [gb3,c4]@10 [f3,db4]@11 ~@14, ~@7 db4@53 ~@36]/3", // Gbdim Db
  B: "[~@31 b3@11 b3@16 bb3@5 b3@5 ~ d4@5 gb4@11 ~@11]/3", C: "[~@21 ab4@4 c5@4 eb5@26 ~@9]/2",
  D: "[~@12 ab4@8 db5@43 ab4@32 ~]/3", E: "[~@31 ab4@5 bb4@5 b4@5 ~ d5@5 eb5@43 bb4@32 ~]/4",
  F: "[~@31 bb4@5 c5@5 db5@5 ~ f5@5 bb5@11 ~]/2", G: "[~@27 f3@21 gb3@11 g3@22 [gb3,c4]@15, ~@9 db4@18 ~@5]/3",
})).s("gm_clarinet").gain(0.2).pan(0.7)

// chords · bassoon
const bassoon = note(`<
  A B C D E F G H ~ I J K L M N O P ~@4 Q@2 ~ R@5 ~@5 S ~ T@3 ~@5 U ~ V@3 ~ W@4 X@5 Y@4 Z@2 AA@2 AB@5 ~@3 AC AD@3 ~@2
  AE@3 ~@5
>`.pickRestart({
  A: "db2@11 gb2@21", B: "f2@11 eb2@10 ab2@11", C: "db2@11 c2@10 bb1@11", D: "eb2@11 ab1@16 ~@5", E: "eb2@11 ab2@21",
  F: "gb2@11 f2@10 bb2@11", G: "eb2@11 db2@10 c2@11", H: "f2@11 bb1@16 ~@5", I: "gb2@11 f2@11 ~@10", J: "~@21 gb3@11",
  K: "a2@11 ab2@11 ~@10, e3@21 ~@11", L: "~@21 c4@5 ~ d4@5, ~@21 a3@11",
  M: "[c3,c4,eb4]@11 [b2,b3]@10 [bb2,bb3,db4]@11", N: "c4@11 b3@10 [gb2,gb3,bb3]@11, [ab2,ab3]@21 ~@11",
  O: "[f2,f3,a3]@11 [b1,b2,ab3]@10 [bb1,bb2,g3]@11", P: "[a1,a2]@11 [ab1,ab2]@11 ~@10, gb3@21 ~@11",
  Q: "[f1@5 gb1@5 ~ ab1@28 ~@25]/2",
  R: "[~@7 db2@11 [c2,c3]@11 [b1,b2,d4]@10 [bb1,bb2,eb4]@11 ~@5 e4@5 ~ f4@5 c4@5 [db2,db3,db4]@11 gb2@21 db2@22 ~ gb2@26 ~@8, ~@50 [a1,a2]@11 [ab1,ab2]@11 ~@88]/5", // C Bm Eb5 Db A Ab
  S: "~@14 db2@3 ~@4 db2@5 ~@6", T: "[~@25 ab2@11 db2@11 ab2@10 e2@5 ~ eb2@5 db2@11 b1@9 ~@8]/3",
  U: "~@13 e1@4 ~@3 e1@3 ~@4 e1@5", V: "[~@31 b2@11 e2@11 b2@10 g2@5 ~ gb2@5 e2@11 d2@11]/3",
  W: "[~@31 b3@10 b3@13 ~ bb3@4 b3@4 d4@4 ~ ab4@12 g4@4 ~ [c4,gb4]@35 ~@8]/4", // Cdim
  X: "[~@12 [ab2,ab3]@8 [db3,db4]@5 ~@6 db3@10 eb3@11 [f3,db4]@11 [gb3,db4]@16 c4@5 db4@5 f4@5 ~@17 db4@5 [g3,eb4]@5 [f3,g4]@5 ~ [eb3,ab4]@11 ~@21 eb3, ~@84 f3@21 ab3@11 ~@44, ~@95 ab4@16 ~@49]/5", // Ab Db Gb5 Cm Fsus2 Ab5
  Y: "[~@9 f3@11 [gb3,eb4]@11 [ab3,eb4]@16 d4@5 eb4@5 gb4@5 ~@17 e4@5 [a3,f4]@5 [g3,a4]@5 ~ [f3,bb4]@11 ~@22, ~@52 gb3@21 bb3@11 ~@44, ~@63 bb4@16 ~@49]/4", // Ebm Ab5 Dm Gsus2 Bb5
  Z: "[~@20 [gb1,a3]@22 [f1,ab3]@11 ~@11]/2", AA: "[~@26 [a1,c4]@22 [ab1,b3]@11 ~@5]/2",
  AB: "[~@27 [c2,eb4]@21 [bb1,d4]@11 c4@11 b3@10 [gb1,bb3]@11 [f1,a3]@11 [b1,ab3]@10 [bb1,g3]@11 a1@11 ab1@11 ~@15, ~@59 ab1@21 ~@43 gb3@21 ~@16]/5", // Cm Bb Gb F E Eb
  AC: "~@27 [f1,ab3]@5", // Fm
  AD: "[[gb1,bb3]@5 ~ [ab1,gb3]@21 db3@11 c3@10 [b2,d4]@11 [bb2,eb4]@11 ~@5 e4@6 f4@7 ~ c4@7, ~@27 db4@21 ~@22 a2@11 ab2@15]/3", // Gb Ab7 Bm Eb5
  AE: "[~@13 db2@10 gb2@26 ~ db2@10 gb2@28 ~@8]/3",
})).s("gm_bassoon").gain(0.2).pan(0.9)

// chords · bassoon · soft notes
const bassoon_soft = note("<~@24 A ~@3 B@7 ~@3 C@6 D ~@38 E F G@4>".pickRestart({
  A: "~@7 db4@21 ~@4, ~@7 db3@11 ~@14", B: "[~@24 db2@70 db2@70 db2@5 ~@5 db2@5 ~@4 db2@4 ~@4 db2@4 ~@4 db2@4 ~@21]/7",
  C: "[~@28 e1@71 e1@71 e1@5 ~@5 e1@5 ~@4 e1@3]/6", D: "~@5 e1@4 ~@23", E: "~@25 db2@6 ~", F: "~@5 db2@7 ~@7 db2@9 ~@4",
  G: "[~@4 db2@97 ~@27]/4",
})).s("gm_bassoon").gain(0.05).pan(0.9)

// other · brass section · "Horn in E♭"
const brass_section = note(`<
  ~@11 A ~ B C@2 D ~@3 E F@4 ~ G H@3 ~@18 I@6 J@8 K@3 L@6 ~@4 M N@3 ~@2 O@5 ~@3
>`.pickRestart({
  A: "e4@21 ~@11", B: "eb4", C: "[eb3,eb4]", D: "db4@11 c4@11 ~@10", E: "~@11 gb4@21",
  F: "[f4@4 eb4@3 db4@4 eb4@20 db4@8 db2@11 c2@11 b1@10 bb1@11 a1@11 ab1@11 ~@24, ~@39 db4@43 ~@46]/4", G: "~@9 f4@7",
  H: "[eb4@4 db4@3 db4@15 ~@8 e4@14 d4@5 db4@6 ~ db4@22 ~@18]/3",
  I: "[~@31 g1@11 ~@21 gb1@11 ~@21 f1@10 ~@18 e1@9 ~@17 [ab3,ab4]@35 ~@8, ~@149 eb2@4 ~@39]/6", // Ab
  J: "[~@20 db2@11 ab1@11 ~@10 f2@11 eb2@10 ab1@11 db2@11 c2@10 bb1@11 eb2@11 ab1@11 ~@10 eb2@11 b1@10 ab1@11 gb1@11 f1@10 bb1@11 eb2@11 db2@10 c2@11 f2@11 bb1]/8",
  K: "[~@20 bb3@11 bb3@16 c4@5 db4@22 ~@16 db4@6]/3",
  L: "[~@5 db4@16 eb4@5 e4@22 ~@11 e4@11 e4@16 gb4@5 [g3,g4]@32 [eb3,eb4]@32 [eb3,eb4]@32 ~@5]/6", // G Eb
  M: "~@6 [bb2,bb3]@21 ~@5", N: "[~@27 db2@11 c2@10 b1@11 bb1@11 a1@11 ab1@15]/3",
  O: "[~@23 f4@14 eb4@4 ~ db4@8 db4@7 ~@3 e4@14 d4@4 ~ db4@10 db4@46 ~@25]/5",
})).s("gm_brass_section").gain(0.2).pan(0.9)

// chords · piano
const piano = note("<~@28 A@7 B@2 ~@6 C@5 D@3 E F G H@7 I@2 J@2 K@2 L@5 M@4 N ~@2 O@3 ~@3 P@4>".pickRestart({
  A: "[~@50 f6@2 ~@5 c6 ~@27 c6@2 ~@5 f5 ~@27 f5@2 ~@5 c5 ~@27 c5@2 ~@5 f4 ~@9 ab2@2 ~@8 f4 ~@7 [ab2,c5] ~@7 [ab2,f5] ~@6 ab2 c6 ~@5 ab2 [db6,f6] ~ eb7 f7 eb7 ~ f7 eb7 db7 ~ c7, ~@24 [db2,db6]@18 db4@4 f4@2 eb6@4 eb6 f6@5 ~@11 gb3@4 ab3@4 c4@4 eb4@2 bb5@4 bb5 c6@5 ~@11 f3@4 ab3@4 db4@4 f4@2 eb5@4 eb5 f5@5 ~@11 gb3@4 ab3@4 c4@4 eb4@2 bb4@4 bb4 c5@5 ~@3 f4@2 eb4@2 [db3,eb4]@4 [db2,ab3]@7 [ab2,ab4]@2 [db2,db4]@6 [db3,db5]@3 ~ ab2@4 [c3,ab5]@3 ab2@5 db6@2 bb6@2 [c3,bb6]@2 [c3,bb6]@3 [ab2,f3,ab3]@10, ~@27 ab2@28 eb6@4 ~@7 eb3@24 bb5@4 ~@7 db3@24 eb5@4 ~@7 eb3@24 bb4@4 ~ eb4@2 db3@2 [f3,f4]@5 ~ ab2@4 bb4@3 ~@2 eb5@2 [db3,eb5]@2 eb5@3 ~ bb5@2 [c3,bb5]@2 bb5@3 ~ eb6@2 [db3,eb6]@2 [db3,eb6]@3 ~ ab2@4 ab6@2 ~@10, ~@31 db3@25 db6@3 ~@3 ab2@29 ab5@3 ~@3 ab2@29 db5@3 ~@3 ab2@29 ab4@3 ~ ab2@6 db4@2 ~@2 bb4@2 [c3,bb4]@3 c3@3 ~ ab2@6 ~ [db2,ab4]@8 [db2,db5]@7 [db2,ab5]@7 db2@11, ~@34 f3@4 ab3@21 [db2,ab5]@35 [db2,db5]@35 [db2,ab4]@35 [db2,db4]@8 c4 ~@3 c5@2 [gb3,c5]@5 ~@2 f5@2 [f3,f5]@4 ~@2 c6@2 [gb3,c6]@4 ~@2 f6@2 [f3,f6]@4 ~ c7@2 [gb3,c7]@3 ~@11]/7", // Ab Db Dbsus2 Db5 Ab Db Fm C7 …
  B: "[ab6@2 eb6@2 db6@2 bb5@2 ab5@2 ~ db5@2 ~ bb4@2 ab4@2 eb4@2 db4@2 ~ bb3@2 bb3@32 ab3@7, ~@5 eb5 ~@26]/2",
  C: "[~@18 b2@2 ~@8 ab4 ~@7 [b2,eb5] ~@7 [b2,ab5] ~@6 [b2,eb6] ~@6 [b2,ab6] e6 ~ gb7 ab7 gb7 ~ ab7 gb7 e7 ~ eb7 b6@2 gb6@2 e6@2 ~ b5@2 gb5@2 e5@2 db5@2 ~ b4@2 gb4@2 e4@2 ~ db4@2 db4@32 b3@10 ~@23, ~@16 e3@2 eb4 ~ [e2,b3]@7 b2@2 [e2,e4]@6 e5@2 ~ db6@2 [eb3,db6]@2 [eb3,db6]@3 ~ b2@5 e6@2 db7@2 [eb3,db7]@2 [eb3,db7]@3 [b2,ab3,b3]@10 ~@90, ~@17 e4@2 ~@2 b2@4 db5@3 ~@2 gb5@2 [e3,gb5]@2 [e3,gb5]@3 ~@2 b2@4 b5@2 ~ gb6@2 [e3,gb6]@2 [e3,gb6]@3 ~ b2@4 b6@2 ~@16 db6@2 ~@82, ~@21 db5@2 [eb3,db5]@3 [eb3,b4]@3 ~ b2@6 ~ [e2,b4]@8 [e2,e5]@7 [e2,b5]@7 e2@11 ~@90, ~@22 eb5@2 [a3,eb5]@5 ~@2 ab5@2 [ab3,ab5]@4 ~@2 eb6@2 [a3,eb6]@4 ~@2 ab6@2 [ab3,ab6]@4 ~ eb7@2 [a3,eb7]@3 ~@101]/5", // B E B E E5 E Eb7 E …
  D: "[~@39 f4@2 a4 [b4,g5] [d5,a5] ~ [f5,b5] [d5,a5] [f5,b5] ~ [d5,a5] [b4,g5] [f4,d5] ~ [b4,g5]@3 ~@2 [d5,b5]@2 [f5,d6]@2 ~@9 gb4@2 b4 [d5,b5] [gb5,db6] ~ [b5,d6] [gb5,db6] [b5,d6] ~ [gb5,db6] [d5,b5] [b4,gb5] ~ [d5,b5]@3 ~@2 [gb5,d6]@2 [b5,gb6]@2 ~ f1, ~@31 g1@6 b3 d4@4 ~@25 gb3@2 b3 d4@4 ~@22, ~@33 g2@9 ~@21 gb1@11 ~@22, ~@34 d3@8 ~@23 gb2@9 ~@22, ~@35 f3@7 ~@24 d3@8 ~@22]/3", // Em D5 Fdim D5 Fdim D5 Em Dm …
  E: "~@8 b4 [d5,b5] [f5,db6] ~ [b5,d6] [f5,db6] [b5,d6] [f5,db6] [d5,b5] [b4,g5] [d5,b5]@3 ~@2 [g5,d6] [b5,g6] ~@6 d4, f2@6 d4@4 ~@19 e3@3, ~@2 d3@5 g4@2 ~@21 ab3@2, ~@3 g3@6 ~@18 [e1,e2]@5, ~@4 b3@5 ~@19 b2@4", // G Db Bm Db Bm Db G Em …
  F: "~@2 d5 ~ [ab5,e6] [b5,gb6] [e6,ab6] [b5,gb6] [e6,ab6] [b5,gb6] [ab5,e6] [e5,b5] [ab5,e6]@3 ~ [b5,ab6] ~ [e6,b6] ~@11 [eb5,bb5]@2, e4@3 ~@18 [eb1,eb2]@4 gb4 ab4 c5 gb5@3 ~, ~ ab4@2 ~@19 ab2@7 [c5,ab5]@3, ~@23 gb3@9, ~@3 c4", // Dbm B5 E B5 E B5 Dbm E5 …
  G: "~@5 [gb4,eb5] ~@8 gb5 ~@8 a5 ~@2 [eb6,a6]@2 ~ [eb6,a6]@2 [c6,ab6], [gb5,c6]@2 [gb5,c6]@4 ~ [gb5,d6]@2 [gb5,d6]@2 d6@9 a5 [gb5,eb6]@2 c5 [a5,gb6] [c6,ab6]@3 [c6,ab6]@3 ~, ~ [eb5,bb5]@2 [eb5,bb5]@3 [eb5,c6]@5 gb5 c6@3 [gb5,eb6] [a5,f6] [c6,gb6] [a5,f6] [c6,gb6] f6@12, ~@2 [c5,ab5] ~ [a5,eb6] [a5,eb6]@2 a4@9, ~@3 eb5@5", // Ebm Ebdim Fm Gbdim D Ebm D Fm …
  H: "[~@4 [eb6,eb7]@4 ~@4 [ab3,ab4]@8 ~ [f3,ab3,db4]@10 [gb1,gb2,db3,eb3,gb3,bb3,db4,eb4,gb4,db5]@16 [c4,c5]@5 f3 [ab3,db4]@4 [ab3,db4,f4,ab4,db5,f5]@5 ~ [eb2,eb3,ab3,db4,eb4,gb4,ab4,db5,eb5]@10 gb4 gb4@5 [c4,f4,gb4,c5,f5]@5 ~ [ab3,db4]@4 [db4,f4,ab4,db5,f5]@5 ~ [f4,ab4,db5,f5,ab5]@5 [f4,ab4,db5,f5,ab5,db6]@5 [f4,ab4,f5,ab5]@5 ~ [db4,f4,ab4,bb4,db5,f5,ab5,bb5]@5 ~ [db4,eb4,g4,c5]@10 [c2,c3,c4,eb4,ab4,c5,eb5,ab5]@11 ~@7 [f1,f2,f3]@2 ~ [gb3,bb3,eb4,gb4,bb4,eb5]@10 ~ [b1,b2,f3,ab3,eb4,f4,ab4]@10 ~@6 [d4,d5]@5 gb3 [bb3,eb4]@4 [bb3,eb4,gb4,bb4,eb5,gb5]@5 ~ [f2,f3,bb3,eb4,f4,ab4,c5,eb5,f5]@10 ab4 ab4@5 [d4,gb4,ab4,d5,gb5]@5 ~ [bb3,eb4]@4 [bb3,eb4,gb4,bb4,eb5,gb5]@6 [eb4,gb4,bb4,eb5,gb5,bb5], [a5,gb6]@8 ~@44 [f4,ab4,db5]@5 ~@6 ab5@21 ~ f3@21 ~@35 [eb2,eb3,eb4]@6 [eb1,eb2,eb3]@2 ~@52 [bb1,bb2,c5]@11 ~ gb3@11, ~@2 [eb5,c6]@6 ~@12 [db2,db3,f4,ab4,db5]@11 ~@21 f2@11 ~@10 [ab1,ab2,bb4]@11 [db2,db3]@21 ~@11 [eb2,eb3,db5,eb5,g5,c6]@11 ~@12 [f2,f3,f4]@9 ~@11 eb5@21 [gb4,bb4,eb5]@5 ~@6 bb5@21 ~@12, ~@53 f3@10 ~@11 [gb3,bb3]@10 [f4,ab4,db5]@5 ab3@16 [eb4,c5,eb5,c6]@11 ~@28 [ab1,ab2,ab3]@5 ~@20 [ab1,ab2,f4,b4]@11 gb2@11 ~@21 [eb2,eb3]@12, ~@95 db4@11 ~@36 [b1,b2,b3]@6 ~@22 [f3,b3,eb4]@10 ~ gb3@10 ~@11 [ab3,c4]@10 [gb4,bb4,eb5]@5 ~@7]/7", // Eb Ab Db Ebm7 C Db5 Db Ebm7 …
  I: "[~@4 [gb4,bb4,eb5,gb5,bb5,eb6]@5 [g4,bb4,g5,bb5]@5 ~ [e4,g4,bb4,c5,e5,g5,bb5,c6]@5 ~ [eb4,f4,a4,db5]@10 [bb1,bb2,db4,f4,bb4,db5,f5,bb5]@21 ~@12, ~@9 [f4,db5,f5,db6]@11 [f2,f3,eb5,f5,a5,db6]@11 ~@33]/2", // Ebm Gm C7 Dbaug Bbm Db Faug
  J: "[~@25 [gb4,a4,gb5,a5]@3 [eb4,gb4,a4,eb5,gb5,a5,eb6]@3 [gb4,a4,gb5,a5]@3 [db4,gb4,a4,db5,gb5,a5]@4 [a3,db4,gb4,a4,db5,gb5,a5]@4 ~@22, ~@25 [e4,e5,e6]@18 ~@21, ~@31 [eb4,eb5,eb6]@11 ~@22, ~@17 db6@4 ~@11]/2", // Gbm Ebdim Gbm E Eb
  K: "[~@31 [a4,c5,a5,c6]@3 [gb4,a4,c5,gb5,a5,c6,gb6]@3 [a4,c5,a5,c6]@3 [e4,a4,c5,e5,a5,c6]@4 [c4,e4,a4,c5,e5,a5,c6]@4 [e4,ab4,b4,e5,ab5,b5,e6]@11 ~@5, ~@31 [g4,g5,g6]@18 ~@15, ~@37 [gb4,gb5,gb6]@11 ~@16, ~@5 e6 ~@2]/2", // Am Gbdim Am E G Gb
  L: "[~@27 [c5,eb5,c6,eb6]@3 [c5,eb5,c6,eb6]@4 [ab4,c5,eb5,ab5,c6,eb6,ab6]@4 [c5,eb5,c6,eb6]@3 [g4,c5,eb5,g5,c6,eb6]@4 [eb4,g4,c5,eb5,g5,c6,eb6]@3 [g4,bb4,d5,g5,bb5,d6,g6]@11 [ab4,c5,ab5,c6]@3 [ab4,c5,ab5,c6]@4 [e4,ab4,e5,ab5,e6]@4 [ab4,b4,ab5,b5]@3 [eb4,ab4,b4,eb5,ab5,b5]@4 [b3,eb4,ab4,b4,eb5,ab5,b5]@3 [eb4,gb4,bb4,eb5,gb5,bb5,eb6]@11 [a4,c5,a5,c6]@3 [a4,c5,a5,c6]@4 [e4,e5,e6]@4 [ab4,b4,ab5,b5]@3 [eb4,ab4,b4,eb5,ab5,b5]@4 [b3,eb4,ab4,b4,eb5,ab5,b5]@3 [eb4,g4,db5,eb5,g5,db6,eb6]@11 [gb3,db4,gb4,db5]@3 [gb3,db4,gb4,db5]@4 [gb3,e4,gb4,e5]@4 ~@10 [gb4,gb5]@11 [f4,f5]@3 [eb4,eb5]@2, ~@27 [c2,c3]@21 ~@22 [e4,e5,e6]@11 ~@10 [eb4,eb5,eb6]@14 eb6@7 ~@14 gb5@7 ~ [c4,gb4,c5,gb5]@7 [c4,c5]@14 ~@5, ~@27 [g4,g5,g6]@11 [ab4,ab5,ab6]@11 ~@10 [eb4,eb5,eb6]@14 eb6@7 ~@22 [e4,e5,e6]@11 ~@10 [eb4,eb5]@14 [eb4,eb5]@18 ~@5, ~@30 [bb4,bb5,bb6]@18 ~@14 [gb4,gb5,gb6]@18 ~@14 [gb4,gb5,gb6]@18 ~@18 [db4,db5]@25 ~@5, ~@41 g6@7 ~@18 [c5,c6]@14 ~@18 [a4,c5,a5,c6]@14 ~@22 [gb3,e4,e5]@21 ~@5]/5", // Cm Ab Cm Gm Ab E Abm Ebm …
  M: "[~@2 [db4,db5]@4 [eb4,eb5]@16 [db4,db5]@5 [db4,db5]@10 ~ [bb4,gb5,bb5,gb6]@21 [ab4,f5,ab5,f6]@3 [gb4,eb5,gb5,eb6]@4 [f4,db5,f5,db6]@3 ~ [gb4,eb5,gb5,eb6]@15 ~ [f4,db5,f5,db6]@5 [f4,db5,f5,db6]@10 ~ [db5,bb5,db6,bb6]@3 [ab5,f6,ab6,f7]@3 ~ [gb5,eb6,gb6,eb7]@3 [f5,db6,f6,db7]@3 ~ [db5,bb5,db6,bb6]@3 [bb4,gb5,bb5,gb6]@3 ~ [ab4,f5,ab5,f6]@3 [gb4,eb5,gb5,eb6]@2]/4", // Db Eb Db Ebm Db Ebm Db Ebm …
  N: "~@2 [f4,db5,f5,db6]@3 ~@17 [db4,db5,db6]@5 ~@5, ~@6 [gb1,gb2,gb3,db4,eb4,gb4,eb5,gb5,ab5,eb6]@21 ~@5, ~@16 c4@11 ~@5", // Db Gbsus2
  O: "[~@5 [ab3,db4]@3 [db4,f4]@3 [db4,f4,ab4]@3 ~@2 [ab3,db4]@3 [db4,f4]@3 [db4,f4,ab4]@2 ~@3 [db4,d4]@3 [d4,gb4]@2 [d4,gb4,db5]@3 ~@3 [db4,eb4]@2 [eb4,g4]@3 [eb4,g4,db5]@3 ~@3 [db4,e4]@3 [e4,g4]@3 [e4,g4,db5]@4 ~@3 [ab3,c4]@4 ~@30, ~@5 f3@8 ~ [c2,c3]@11 ~@5 db4@5 eb5@24 ~@37, ~@8 ab3@5 ~@3 f3@8 [b1,b2,d5]@11 [bb1,bb2]@11 [a1,a2]@13 [ab1,ab2,f5]@18 ~@19, ~@19 ab3@5 ~@3 gb3@8 ~@3 g3@8 ~@3 g3@10 ~@3 gb3@14 ~@20, ~@40 db4@5 ~@7 [db4,e5]@7 ~@37]/3", // Db5 Db Db5 Db Dmaj7 D Dmaj7 Dbsus2 …
  P: "[~@57 db5@45 ~@26, ~@15 ab2@29 f4@58 ~@26, ~@21 f3@64 ~@43, ~@27 ab3@64 ~@37, ~@35 db4@64 ~@29]/4",
})).s("gm_piano").gain(0.3).pan(0.9)

// chords · piano · soft notes
const piano_soft = note("<~@38 A@6 ~@19 B@2 C@2 ~@9 D@2 ~ E ~ F G H@2 I@3 ~>".pickRestart({
  A: "[~@62 eb6 ~@24 db6@2 ~ db6@2 ~@2 b5@2 ~@2 ab5 ~@34 eb5 ~@24 db5@2 ~ db5@2 ~@4 b4@2 ab4 ~@3 [e3,gb4]@2 ~ gb4@4 ~@12, ~@28 [e2,e6]@14 b3@4 e4@4 ab4@2 b6@2 eb7@2 db7@8 ~@10 a3@3 b3@4 eb4@5 gb4@3 eb6@3 eb6 db6@2 ~ db6@3 ~@10 ab3@4 b3@4 e4@4 ab4@2 b5@2 eb6 db6@2 b5@4 gb5@2 ~@7 gb3@7 b3@4 eb4@5 gb4@3 eb5@3 eb5 db5@2 db5@3 ~@3 ab4@3 ~@17, ~@31 b2@26 b6@4 gb6@2 [e2,b5]@34 b5@2 ~@7 e3@23 ab5@5 ~@11 a3@20 b4@2 ~@4 gb4@2 ~@2 [ab3,ab4]@5 ~@12, ~@35 e3@23 ab6@5 ~@7 gb3@29 ~@3 b2@28 e5@4 ~@4 b2@32 ~ b2@7 ~@14, ~@38 ab3@22 e6@4 ~@3 b2@32 [e2,e5]@35 [e2,b4]@36 [e2,e4]@10 ~@12]/6", // Esus2 E E5 Ab E E5 E
  B: "[~@21 [gb4,a4]@4 ~@17 [db4,f4,ab4,db5,f5,ab5,db6]@11 ~@11, ~@10 [gb1,gb2]@11 ~@11, ~@10 [db5,db6]@7 ~@15, ~@5 [gb5,a5] ~@10, ~@21 db4@13 ~@30]/2", // Gbm Db Gb Db Gbm
  C: "[~@27 [a4,c5]@4 ~@33, ~@13 [a1,a2]@11 ~@8, ~@13 [e5,e6]@7 ~@12, ~@13 [a5,c6]@2 ~@17, ~@27 e4@13 ~@24]/2", // Am A E Am
  D: "[~@27 [db2,db3,f3,ab3,db4,f4,db5,f5,ab5,db6]@11 ~@26]/2", E: "~ [db2,db3]@6 ~@9, ~ db5@11 ~@4",
  F: "~@2 [c4,gb4]@5 [c4,gb4,ab4]@6 ~ [f3,db5]@9 [db5,db6] [eb5,eb6] [db5,eb5,db6,eb6] [db5,db6] [db5,eb5,db6,eb6] [eb5,eb6] [db5,eb5,db6,eb6] [db5,db6] [db5,eb5,db6,eb6], ~@2 [ab3,c5]@10 ~ [db2,ab2,db4,ab4]@11 ~@8", // Cdim Ab7 Db Eb Dbsus2 Db Dbsus2 Eb …
  G: "[eb5,eb6] [db5,eb5,db6,eb6] [db5,db6] [db5,eb5,db6,eb6] [eb5,eb6] [db5,eb5,db6,eb6] [db5,db6] [c5,eb5,c6,eb6] ~@2 [f5,f6]@2 [eb5,eb6]@2 [db5,db6]@3 ~ [db5,db6]@10 [db6,db7] [db6,d6,db7,d7] [d6,d7] [db6,d6,db7,d7], ~@9 [db5,db6]@2 ~@21", // Eb Dbsus2 Db Dbsus2 Eb Dbsus2 Db Cm …
  H: "[[db6,db7] [db6,d6,db7,d7] [d6,d7] [db6,d6,db7,d7] [db6,db7] [db6,d6,db7,d7] [d6,d7] [db6,d6,db7,d7] [db6,db7] [db6,d6,db7,d7] [d6,d7] [db6,d6,db7,d7] [c6,c7] ~@2 [e6,e7]@2 [d6,d7]@3 [db6,db7]@4 ~ [db6,db7]@12 ~@27, ~@7 [db6,db7] ~@24]/2", // Db Dmaj7 D Dmaj7 Db Dmaj7 D Dmaj7 …
  I: "[~@5 db2@32 ~@11, ~ db1@16 ~@7]/3",
})).s("gm_piano").gain(0.2).pan(0.9)

// chords · pizzicato strings
const pizzicato_strings = note("<~@48 A@5 ~@36>".pickRestart({
  A: "[~@31 [b3,d4,d5]@11 ~@21 [b3,d4,d5]@11 ~@21 [b3,d4,d5]@10 ~@18 [b3,d4,d5]@9 ~@17 [ab3,gb4,c5]@9 ~@2]/5", // Bm Ab7
})).s("gm_pizzicato_strings").gain(0.2).pan(0.7)

// other · string ensemble 1 · "Violins"
const string_ensemble_1 = note(`<
  A B C D E F G H ~@5 I J@2 K L M L N O@2 P Q R S@8 T ~@2 U@7 V ~@2 W@2 X Y Z AA ~ AB AC AD AE AF AG AH AI AJ AK@2 AL@2
  AM@6 AN@4 AO AP AQ ~ AR@3 AS AT@4
>`.pickRestart({
  A: "ab3@11 bb3@21", B: "ab3@11 bb3@10 c4@11", C: "db4@11 f4@10 ab4@11", D: "g4@5 f4@5 ~ eb4@16 ~@5",
  E: "bb3@11 b3@21", F: "bb3@11 c4@10 d4@11", G: "eb4@11 gb4@10 bb4@11", H: "a4@5 g4@5 ~ f4@16 ~@5",
  I: "g4@4 bb4@3 ab4@4 ab4@5 g4@5 g4@11, ~@11 bb4 ~@20", J: "[eb4@53 db4@11]/2", K: "db4@11 c4@10 c4@11",
  L: "db4@11 db4@10 c4@5 ~@6", M: "~@11 c4@21", N: "~@11 db4@21",
  O: "[db4@11 db4@6 bb3@6 c4@7 ~ db4@8 db4 ~ db4!4 ~ db4!3 ~ db4!3 ~ db4!3 ~ db4!4 ~ db4]/2",
  P: "db4!2 ~ db4!3 ~ db4 ~ db4!3 ~ db4!4 ~ db4!3 ~ db4!3 ~ db4!2 ~ c4!3",
  Q: "~ c4!3 ~ c4!2 db4 ~ db4!4 ~ db4!3 ~ db4!3 ~ db4!3 ~ db4!4 ~ db4",
  R: "db4!2 ~ db4!3 ~ db4 ~ db4!3 ~ db4!4 ~ db4!3 ~ db4!3 ~ db4!2 ~ ab3!3",
  S: "[~ ab3!3 ~ ab3!2 ab3@11 bb3@21 ab3@22 ~ a3@26 ab3@70 ab3@70 ab3@5 ~@5 ab3@5 ~@4 ab3@4 ~@4 ab3]/8",
  T: "~@7 ab3@4 ~@3 ab3@3 ~@4 ab3@5 ~@6",
  U: "[~@15 ab3@10 ab3@11 db4@11 eb4@9 ~@4 e4@35 b3@36 e4@35 b3@36 b3@5 ~@5 b3@5 ~@4 b3@3]/7",
  V: "~@5 b3@4 ~@4 b3@4 ~@3 b3@3 ~@4 b3@5", W: "[~@21 b3@10 b3@11 e4@11 gb4@10 [b3,f4]]/2",
  X: "~ [b3,f4]!4 ~ [b3,f4]!3 ~ [b3,f4]!3 ~ [b3,f4]!3 ~ [b3,f4]!4 ~ [b3,f4]!3 ~ [b3,f4]!3 ~ [b3,gb4]", // Bdim B5
  Y: "~ [b3,gb4]!4 ~ [b3,gb4]!3 ~ [b3,gb4]!3 ~ [b3,gb4]!3 ~ [b3,gb4]!4 ~ [b3,gb4]!3 ~ [b3,gb4]!3 ~ [b3,g4]", // B5 Em
  Z: "[b3,g4] ~ [b3,g4]!4 ~ [b3,g4]!6 ~ [b3,g4]!12 ~ [d4,ab4]!5", AA: "[d4,ab4]!5 ~ [d4,ab4]!14 ~ [c4,ab4]@4 ~@7",
  AB: "~@20 ab3!2 ~ ab3!3 ~ ab3!3 ~ bb3", AC: "bb3!2 ~ bb3!3 ~ bb3!3 ~ bb3!3 ~ bb3!3 ~ bb3 db4!2 ~ db4!3 ~ db4!3 ~ db4",
  AD: "db4!2 ~ db4!3 ~ db4!3 ~ db4!3 ~ c4!3 ~ c4 db4!2 ~ db4!3 ~ db4!3 ~ db4",
  AE: "db4!2 ~ db4 f4!2 ~ f4!2 eb4 ~ eb4!3 ~ db4!3 ~ db4!3 ~ db4!3 ~ db4!3 ~ c4",
  AF: "c4!2 ~ c4!3 ~ c4!2 b3 ~ b3!3 ~ b3!3 ~ b3 bb3!2 ~ bb3!3 ~ bb3!3 ~ ab3",
  AG: "ab3!2 ~ ab3!3 ~ ab3!2 eb4 ~ eb4!3 ~ eb4!3 ~ eb4!3 ~ eb4!3 ~ eb4!3 ~ eb4",
  AH: "eb4!2 ~ eb4!3 ~ eb4!3 ~ eb4!3 ~ d4!3 ~ d4 eb4!2 ~ eb4!3 ~ eb4!3 ~ eb4",
  AI: "eb4!2 ~ eb4 gb4!2 ~ gb4!2 f4 ~ f4!3 ~ e4!3 ~ e4 eb4!2 ~ eb4!3 ~ eb4!3 ~ db4",
  AJ: "db4!2 ~ db4!3 ~ db4!3 ~ db4!3 ~ db4!3 ~ db4 db4@3 ~@9", AK: "[~@20 a3@22 ab3@11 ~@11]/2",
  AL: "[~@26 c4@22 b3@11 ~@5]/2",
  AM: "[~@27 eb4@21 d4@11 c4@11 b3@10 bb3@11 a3@11 ab3@10 db4@11 db4@11 c4@10 c4@11 db4@21 c4@5 ~@11]/6",
  AN: "[~@6 c4@21 db4@21 c4@11 db4@11 db4@21 db4@16 bb3@5 ~@11 db4!3 ~ db4]/4",
  AO: "db4!2 ~ db4!3 ~ db4!3 ~ db4!4 ~ db4!3 ~ db4!3 ~ db4!2 ~ db4!3 ~ db4",
  AP: "db4!2 ~ db4!3 ~ db4!2 ~ db4!3 ~ db4 ~ db4 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 ~", AQ: "c4 ~@15",
  AR: "[~@13 ab3@10 bb3@26 ~ ab3@10 a3@28 ~ ab3@6 ~]/3", AS: "~@5 ab3@7 ~@7 ab3@9 ~@4", AT: "[~@4 ab3@97 ~@27]/4",
})).s("gm_string_ensemble_1").gain(0.2).pan(0.3)

// other · string ensemble 1 · "Violas"
const string_ensemble_1_2 = note(`<
  A B C D E F G H I J K L M N O P Q R S R A T@2 U V U W@7 X@2 ~ Y@8 Z ~ AA@3 AB AC AD AE ~ AF AG AH AI AJ AK AL AM AN
  AO@2 AP@2 AQ@5 AR@2 AS@2 AT AU AV AW ~ AX@3 AY AZ@4
>`.pickRestart({
  A: "f3@11 gb3@21", B: "ab3@11 gb3@21", C: "f3@11 ab3@10 db4@11", D: "db4@11 c4@16 ~@5", E: "gb3@11 ab3@21",
  F: "~@11 ab3@21", G: "gb3@11 bb3@10 gb4@11", H: "eb4@11 db4@16 ~@5", I: "~@21 eb3@11", J: "gb3@11 f3@11 ~@10",
  K: "~@21 gb3@11", L: "a3@11 ab3@11 ~@10", M: "~@21 a3@11", N: "g3@11 d4@10 db4@11", O: "c4@11 b3@10 bb3@11",
  P: "a3@11 ab3@10 g3@11", Q: "gb3@21 bb3@11", R: "ab3@5 bb3@5 ~ gb3@21", S: "f3@11 bb3@21",
  T: "[ab3@5 bb3@5 ~ gb3@28 f3 ~ f3!3 ~ f3!4 ~ f3!3 ~ f3!3 ~ f3!2 ~ gb3!3]/2",
  U: "~ gb3!3 ~ gb3!2 g3 ~ g3!3 ~ g3!4 ~ g3!3 ~ g3!3 ~ g3!2 ~ gb3!3",
  V: "~ gb3!3 ~ gb3!2 f3 ~ f3!3 ~ f3!4 ~ f3!3 ~ f3!3 ~ f3!2 ~ gb3!3",
  W: "[~ gb3!3 ~ gb3!2 f3@11 gb3@21 f3@22 ~ gb3@26 f3@35 eb3@35 f3@35 eb3@31]/7",
  X: "[~@4 f3@5 ~@5 eb3@5 ~@4 f3@4 ~@4 eb3@4 ~@4 f3@4 ~@3 eb3@3 ~@4 f3@5 ~@6]/2",
// … 24 more lines

More by Edvard Grieg