Strudelify

Handel - Organ Concerto Op. 7 No. 1 HWV 306: I

George Frederic Handel

KeyB♭ majorTempo60 bpm
0:00/0:00
// Handel - Organ Concerto Op. 7 No. 1 HWV 306: I — George Frederic Handel
// 60 bpm, 3/4, key Bb 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 96) are rendered on a constant 3/4 grid of one bar per cycle
// note: ch 1 "Oboe I" named as a reed, played on oboe (its pizzicato strings patch is not one); ch 2 "Oboe II" named as a reed, played on oboe (its tremolo strings patch is not one); ch 9 "Violins II" named as a string part, played on violin (its reed organ patch is not one); ch 16 "Pipe Organ" named as an organ, played on church organ (its guitar harmonics patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5490700; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 172 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/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.

// chords · oboe · "Oboe I"
const oboe = note(`<
  ~ A ~ B C D ~@7 E F G H ~@15 I J@2 ~@16 K L M ~ N O ~@2 P Q R ~@7 S@3 T ~@13 U V W X ~@3 Y ~@5 Z@5 ~@12 AA AB AC@2 AD
  ~@3 AE@3 AF@2 ~@3 AG@3 AH@2 ~@3 AI AJ AK@6 AL@5 ~@7 AM@3 AN AO@3 AP ~ AQ AR@2
>`.pickRestart({
  A: "[bb2,bb4,f5]@3 [bb2,bb4,f5] [eb2,bb4,g5]@2 [eb2,bb4,g5]@2 ~@4", // Bb5 Eb
  B: "[bb2,d4,f5]@3 [bb2,d4,f5] [eb2,eb4,g5]@2 [eb2,bb4,g5]@2 [f2,f4,c5]@2 d5 eb5, ~@5 [f2,f4]", // Bb Eb F5 F
  C: "[f4,d5]@3 c5 [d4,bb4]@4 ~@16, bb1 ~@2", D: "[d2,bb4,f5]@4 c2@2 [bb1,f4,bb5]@2 [f2,a4,a5]@3 g5 [f1,c4,f5]@4 ~@8",
  E: "~@8 [bb2,bb4] [bb1,bb3] [d2,d4] [bb1,bb3,f5], ~@8 f5@3 ~", // Bb D Bb5
  F: "[eb2,eb4] [bb1,bb3] [g2,g4] [eb2,eb4] [f2,f4,c5] [c3,c5] [a2,a4,d5] [f2,f4,eb5] [bb2,bb4] [bb1,bb3] [d2,d4] [bb1,bb3], g5!2 ~@2 d5 bb4", // Eb Bb G Eb F5 C D5 F7 …
  G: "[eb2,eb4] [c2,c4] [eb2,eb4] [c2,c4] [a2,a4] [f2,f4] [bb2,bb4] [d2,d4] [eb2,eb4] [c2,c4] [f2,f4,d5] [f1,a4,eb5], g4 eb5@2 d5 c5 ~", // Eb C Eb C A F Bb D …
  H: "bb4 bb3 d4 bb3 ~@8, bb1 ~@2, d5 bb4 ~@4", I: "~@4 [bb2,d4,f5]@2 ~ f5 [g2,bb4,g5]@2 ~ g5, ~@3 [a2,c4] ~ [c3,c5]",
  J: "[c5 a4 g4 [f4,bb5] [c2,c5,g5]@2 [a2,c5]@2 [d3,a4,f5]@2 [g2,g4]@2 [c3,g4]@2 [a4,a5] [d5,g5] [c3,c5,g5]@2 ~ f5 [f1,a4,f5]@4, [f2,a5] bb1 ~@3 bb5@2 f2 ~ [c2,g4] ~@2]/2", // Bb5 C5 Am Dm G C5 A G5 …
  K: "f4!8 e4 c5!3, [f2,c5]!2 [bb1,d5]!2 [c2,g4] [c2,g5]", // F5 Bb C5
  L: "c5 f4!5 g4!4 a4 bb4, [f1,a5] [f1,c5] [bb1,d5] bb5@2 ~, ~@3 g1 c2 [f1,a5]", // F F5 Bb F
  M: "c5@2 c5@2 g5 a5 [c5,bb5]@2 a5@3 g5 f5@4 ~@8, [c2,g5] c1 [f1,c5]@2 ~@2, ~@2 c5 ~@9", // C7 C5 F5
  N: "[g2,d5]@8 ~@4 d5@4 [c2,eb5]@8 d5@4 eb5@4 d5@4 c5 d5 ~ c5 c5@4 d5@4, ~ bb1 ~ d2 eb2@2", O: "[d2,d5] ~@2",
  P: "d5@3 eb5 c5@2 ~ d5 eb5@3 eb5 d5@2 ~ eb5 c5@3 f5 eb5@2 ~ f5, g2@3 g2 c2@3 c2 f2@3 f2",
  Q: "d5@3 d5 c5@2 ~ d5 bb4@3 bb4 a4@2 ~ bb4 [c2,c5]@3 c5 [g1,bb4]@3 c5, bb1@3 bb1 eb2@3 eb2 ~@4", // C Gm
  R: "[d2,a4]@3 d5 [d1,c5]@3 d5 bb4@3 a4 g4@4 ~@8, ~ g1 ~", // D5 D7
  S: "[~@8 g2 d2 g2 f2 eb2 g2 c2 eb2 f2 c2 f2 eb2 d2 f2 bb1 d2 eb2 bb1 eb2 d2 c2 eb2 a1 c2 d2 a1 d2 c2, ~@4 g3@4 f3@4 eb3 g3@3 gb3@2, ~@2 d5 c5@2 bb4@2 a4@2]/3",
  T: "bb1 d2 g1@2 ~@8, [g3,g4] ~@2", U: "~@4 [g2,g4,d5]@3 [g2,g4,d5] [c3,g4,eb5]@2 [c2,g4,eb5]@2",
  V: "~@8 [f2,f4,c5]@3 [f2,f4,c5]", W: "[bb2,f4,d5] [bb1,f4,d5] ~@4",
  X: "[bb2,bb4,f5]@3 [bb2,bb4,f5] [eb3,bb4,g5]@2 [eb2,bb4,g5]@2 ~@4", // Bb5 Eb
  Y: "[d2,f4,f5]@2 c2 [bb1,f4,bb5] [f2,f4,a5]@2 [f1,c4,f5]@2 ~@4", // Dm Bb5 F F5
  Z: "[~@46 bb4@4 d5@4 f5@4 bb5@4 a5@4 ~ g5@4 f5@4 eb5@4 d5@4 c5@4 bb4@4 a4@4 f4@4 a4@4 c5@4 f5@4 eb5@4 d5@4 c5@4 bb4@4 ~ a4@4 g4@4 f4@4 g4@4 bb4@4 c5@4 d5@4 eb5@4 g4@4 a4@4 c5@4 f4@4 eb5@4 d5@4 bb4@4 ~ c5@4 g4@4 bb4 a4 bb4 a4 bb4 a4 bb4 a4 a4@4 bb4@4 [bb1,f4]@24 ~@3, ~@42 [bb2,d4]@16 [bb2,f4]@8 ~ [eb2,g4]@24 [f2,c4]@16 [f2,c4]@8 [bb1,d4]@24 ~ [eb2,bb3]@16 [c2,c4]@8 [f2,a3]@16 [bb1,f4]@8 ~ [eb2,eb4]@8 [f2,c4]@8 [f1,f4]@8 bb4@16 ~@11]/5", // Bb5 Bb Bb5 Eb F5 Bb Eb5 C …
  AA: "~@13 f5@2 d5@3 eb5@3 f5@2 d5@3 eb5@3 f5@3 eb5@2 f5@3 g5@3 eb5@2 f5@3 g5@3",
  AB: "eb5@3 f5@2 g5@3 c5@3 d5@2 eb5@3 c5@3 d5@2 eb5@3 c5@3 d5@3 eb5@2 d5@3 eb5@3 f5@2 d5@3 eb5@3 f5@2",
  AC: "[~ d5@2 eb5@3 f5@3 g5@2 a5@3 bb5@3 g5@3 a5@2 bb5@3 c6@3 bb5@2 c6@3 a5@3 g5@3 a5@2 f5@3 eb5@3 f5@2 d5@3 c5@3 d5@3 eb5@2 f5@3 d5@3 c5@2 d5@3 eb5@3 f5@3 eb5@2 f5@3 d5@3 f5@2 eb5@3 d5@3 eb5@3]/2",
  AD: "f5@2 g5@3 bb5@3 a5@2 bb5@8 ~@30",
  AE: "[~@18 f5@2 eb5@2 f5@4 ~@16 g5@2 f5@2 g5@4 ~@12 a4@5 a4@2 g4@2 a4@4 ~@8 eb5@4 d5@2 bb4@2 c5@2 d5@2 eb5@2 f5@2 g5@2 a5@2 bb5@4 f5@4 [eb2,g4,g5]@8 [eb2,g4,g5]@8 ~ [eb2,eb5]@8 [f2,c5]@8, ~@14 [bb2,d4]@8 [bb2,d4]@8 [bb2,f4]@8 [eb2,g4]@8 [eb2,bb4]@8 [eb2,g4]@8 f2@8 ~ [f2,c5]@8 [f2,a4]@8 [bb1,f4]@8 [bb1,bb4]@8 [bb1,d5]@8 ~@33, ~@26 d5@8 bb4@8 ~@8 eb5@8 c5@8 ~@9 f4@8 ~@61]/3", // Eb F5 Bb Bb5 Eb Eb5 Eb F5 …
  AF: "[~@2 c5@2 d5 f5 bb5@2 ~ a5 g5 f5 eb5 d5 c5 bb4 [c4,a4]@2 [a4,c5]@2 [bb1,bb4]@12 ~@16, [f2,a4] [bb1,f4] [eb2,c5] [f2,a4] f1 ~@7]/2", // F Am Bb F Bb5 Cm F
  AG: "[~@20 bb4@2 c5@2 d5@6 eb5@2 f5@6 g5@2 ab5@4 ~ g5@2 f5@2 eb5@6 d5@2 c5@6 bb4@2 a4@6 g4@2 f4@6 eb4@2 d4@4 eb4@2 d4@2 c4@4 d4@2 eb4@2 f4@6 ~ g4@2 a4@4 bb4@2 c5@2 d5@4 g4@2 a4@2 bb4@6 c5@2 d5@4 eb5@2 f5@2 g5@4 a5@2]/3",
  AH: "[g5@2 f5@4 eb5@2 d5@2 c5@4 d5@2 c5@2 ~ bb4@4 g5@2 a5@2 bb5@4 d5@2 f5@2 bb5@4 c5@2 eb5@2 a5@4 bb5@2 a5@2 g5@4 f5@2 eb5@2 d5@4 c5@2 bb4@2 a4@4 ~@25]/2",
  AI: "~@27 bb4@4 f4@4 bb4@4 f4@4 bb4@4 ~, ~@27 [bb2,f5]@8 [bb2,f5]@12 ~", // Bb5
  AJ: "~ [bb2,bb4,f5]@2 g4@4 bb4@4 g4@4 bb4@4 g4@6 [eb2,bb4,g5]@2 a4@4 ~ f4@4 a4@4 f4@4 a4@4, ~@3 [eb2,g5]@8 [eb2,g5]@12 ~@4 [f2,c5]@8 ~ [f2,c5]@12", // Bb5 Eb F5
  AK: "[~@2 [f2,f4,c5]@2 [bb1,f4,d5]@8 [bb1,f4,d5]@12 ~@2 [bb1,f4,d5]@2 eb4@4 bb3@4 eb4@4 c4@4 ~@5 c4@4 [f2,c4,a4]@16 [bb1,d4,bb4]@8 [eb2,bb3]@8 [f2,f4]@8 ~@4 f4@4 [bb1,f4,bb4]@16 ~@13 d5@4 ~@4 d4@4 ~@4 bb4@4 ~@4 bb3@4 ~@5 eb5@4 ~@4 c4@4 a4@6 c6@2 a5@4 f5@4 eb5@4 c5@4 d5@6 f4@2 d4@4 bb3@4 ab4@4 f4@4 ~@7 d6@2 b5@4 g5@4 f5@4 d5@4 ~@4 g3@4 c4@4 [a3,c5]@4 f5@4 f4@4 g4@4 [eb4,c5]@4 bb4 a4 ~ bb4 a4 bb4 a4 bb4, ~@28 [eb2,g5]@8 [c2,eb5]@8 ~ [eb2,c5]@8 ~@24 bb4@16 [f1,a4]@8 ~@25 bb2@24 eb2@24 ~ f2@24 bb1@24 ~ [b1,g4]@24 [c2,eb5]@16 [d2,bb3]@12 ~@12, ~@134 f5@8 f4@8 gb5@8 gb4@8 ~ c5@8 ~@97 eb2@8 [f2,c4]@8]/6", // F5 Bb F Bb Eb5 F Bb5 Am …
  AL: "[a4 a4@4 bb4@4 [d4,bb4]@6 f4@2 d4@6 f4@2 bb3@6 f2@2 ~@4 d5@4 ~@4 d4@4 ~@4 bb4@4 ~@5 bb3@4 ~@4 eb5@4 ~@4 c4@4 a4@6 c6@2 a5@4 f5@4 eb5@4 c5@4 d5@6 f4@2 ~ d4@4 bb3@4 ab4@4 f4@4 ~@6 d6@2 b5@4 g5@4 f5@4 d5@4 ~@4 g3@4 c4@4 [a3,c5]@4 f5@4 ~ f4@4 g4@4 [eb4,c5]@4 bb4 a4 bb4 a4 bb4 a4 bb4 a4 a4@4 bb4@4 [d4,bb4]@6 f4@2 d4@6 f4@2 bb3@6 f2@2 ~@12, ~ [f1,f4]@8 bb1@22 ~@2 bb2@24 ~ eb2@24 f2@24 bb1@24 ~ [b1,g4]@24 [c2,eb5]@16 [d2,bb3]@12 ~@13 [f1,f4]@8 bb1@22 ~@14, ~@41 f5@8 f4@8 ~ gb5@8 gb4@8 c5@8 ~@98 eb2@8 [f2,c4]@8 ~@44]/5", // Gm Am Cm Gm F Em Cm Gm …
  AM: "[~@43 [bb2,f4,bb5]@8 [bb2,bb4,f5]@13 ~@2 [bb2,d4,f5]@2 ~ [eb2,eb4,g5]@8 [eb2,eb4,c5]@13 ~@2 [eb2,d4,bb4]@2 [f2,c4,a4]@7 f4@2 [f2,f4,c5]@13 ~@2 [f2,a4,eb5]@2 [bb1,f4,d5]@6 bb4@2 ~ [bb1,bb4,f5]@13 ~@2]/3", // Bb5 Bb Eb Cm Ebmaj7 F F5 F7 …
  AN: "[bb1,f4,ab5]@2 [eb2,g4,g5]@6 bb4@2 [c2,g4,eb5]@13 ~@2 [eb2,c4,g4]@2 ~ a4@4 f4@5 c5@5 eb5@5 ~, ~@28 [f2,a3]@9 [a1,f3]@10 ~", // Bb7 Eb Cm F Dm
  AO: "[[bb1,bb3,d5]@12 c5@6 ~ bb4@6 f2@12 ~@7 [f4,bb4]@9 [bb1,f4,bb4]@53 ~@38, ~@12 [eb2,g4]@13 [f4,a4]@19 ~@100, ~@37 f1@15 ~@92]/3", // Bb Bb5 Eb F
  AP: "~@3 [a2,f4]@13", AQ: "~ [g2,bb3]@3", AR: "[[f2,c4] [f2,c4]@6 ~]/2",
})).s("gm_oboe").gain(0.3)

// chords · oboe · "Oboe I" · soft notes
const oboe_soft = note(`<
  ~@8 A B C ~@5 D E F G H I J K L E F G H I J K M ~@2 N O P Q R S ~@20 T U V W X Y Z AA AB ~@21 AC AD ~@15 AE AF AG@2 AH
  AI@6 AJ@2 AK@4 ~@7 AL@5 AM AN AO@2 ~@31
>`.pickRestart({
  A: "~@2 bb4!2 eb4!2", B: "f4!2 bb3!2 eb4 c4", C: "f4 bb3 f4 f3 bb3@2", D: "~ [bb2,bb4] [eb2,eb4]",
  E: "[f2,f4]@2 [bb1,bb3]@2 [eb2,eb4] [c2,c4]", F: "[f2,f4] [bb1,bb3] [f2,f4] [f1,f4] [bb1,bb3]@2",
  G: "[bb2,bb4] [eb2,eb4] [f2,f4]", H: "[bb1,bb3]@2 [eb2,eb4] [c2,c4] [f2,f4] [bb1,bb3]",
  I: "[f2,f4] [f1,f4] [bb1,bb3]@2 [bb2,bb4]@2", J: "[eb2,eb4] [f2,f4] [bb1,bb3]",
  K: "[eb2,eb4] [c2,c4] [f2,f4] [bb1,bb3] [f2,f4] [f1,f4]", L: "[bb1,bb3] [bb2,bb4] [eb2,eb4]", M: "[bb1,bb3] ~@2",
  N: "[f2,f4]@2 d4 g4 g3 c4, ~ bb1 c2", O: "c4@2 f4@2 [bb1,d4]@2 [g1,g4]@2 ~ g4 f4 d4, f1@2 ~@2 c2 f1",
  P: "[c2,g4] [c1,c4] [f1,c4]@2 [f2,f4]@2", Q: "f4 g4!2 c4!2 f4, bb1 c2 f1",
  R: "[bb1,d4] [g1,g4] [c2,e4] [f1,c4] [c2,c4] [c1,c5]", S: "[f1,c5] ~@2", T: "~@4 g4!2", U: "c4!2 f4!2 bb3!2",
  V: "eb4!2 c4 g3 d4 d3", W: "g3@4 ~ g4 f4 g4 eb4 d4 eb4 d4", X: "c4 f4 eb4 f4 d4 c4 d4 c4 bb3 eb4 d4 eb4",
  Y: "c4 bb3 c4 bb3 a3 d4 c4 d4 bb3 a3 bb3 a3", Z: "g3 g4 f4 g4 eb4 d4 eb4 d4 c4 f4 eb4 f4",
  AA: "d4 c4 d4 c4 bb3 eb4 d4 eb4 c4 bb3 c4 bb3", AB: "a3 d4 c4 d4 bb3 a3 bb3 a3 ~@4",
  AC: "[bb2,d4]@3 [bb2,d4] c4@2 g4@2 [f2,f4]@3 [f2,f4], ~ eb2 ~", AD: "[bb1,f4] ~@2", AE: "~ bb3@16 bb3@8 eb3@23",
  AF: "~ f3@16 ~ f3@8 bb3@22", AG: "[~@2 eb4@16 ~ c4@8 f4@16 bb3@8 eb4@8 f4@8 f3@8 bb3@21]/2",
  AH: "~ [bb2,bb3]@6 [eb2,eb3]@5", // Bb Eb
  AI: "[~@5 [f2,f3]@24 [bb1,bb3]@24 ~ [eb2,eb4]@16 [c2,c4]@8 [f2,f4]@16 [bb1,bb3]@8 [eb2,eb4]@8 [f2,f4]@8 ~ [f1,f3]@8 [bb1,bb3]@24 [bb2,bb4]@24 ~ [eb2,eb4]@24 [f2,f4]@24 [bb1,bb3]@24 ~ [eb2,eb4]@16 [c2,c4]@8 [f2,f4]@15]/6", // F Bb Eb C F Bb Eb F …
  AJ: "[~ [bb1,bb3]@8 ~ [eb2,eb4]@8 [f2,f4]@8 [f1,f3]@8 [bb1,bb3]@24 [bb2,f4]@4 ~@5 [bb2,f4]@4 ~@4 [bb2,f4]@4 ~@4 [eb2,g4]@4 ~@4 [eb2,g4]@4 ~]/2", // Bb Eb F Bb Bb5 Eb
  AK: "[~@3 [eb2,g4]@4 ~@4 [f2,f4]@4 ~@4 [f2,f4]@4 ~@4 [f2,f4]@4 ~@5 f4@8 f4@8 f4@8 [eb2,g4]@8 [eb2,g4]@8 [eb2,g4]@8 [f2,f4]@8 ~ [f2,f4]@8 [bb1,d4]@8 [eb2,c4]@8 [f2,c4]@8 [f1,c4]@8 [bb1,bb3]@8 [bb1,d4]@8 [bb1,d4]@8 ~@35, ~@9 bb1 ~ bb1 ~ bb1 ~@34]/4", // Eb F Eb F Bb Cm F5 Bb
  AL: "[~@20 d4@2 ~@2 d4@2 ~@2 d4@2 ~@2 d4@2 ~@2 d4@2 ~@2 d4@2 ~@3 bb3@2 ~@2 bb3@2 ~@2 c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 f2@8 bb3@2 ~@2 bb3@2 ~@2 d4@2 ~@3 d4@2 ~@2 d4@2 ~@2 d4@2 ~@2 bb3@4 bb3@4 bb3@4 bb3@4 c4@4 c4@4 a4@4 a4@4 a4@4 a4@4 f4@4 ~ f4@4 g4@4 g4@4 f4@4 f4@4 a4@4 f4@4 f4@4 bb3@4 bb3@4 bb3@4 f4@4 f4@4 [bb2,f4]@4 [bb2,f4]@4 ~ [bb2,f4]@4 [bb2,f4]@4 [bb2,f4]@4 [bb2,bb4]@4, ~@20 bb2@8 bb2@8 bb2@8 ~ eb2@8 eb2@8 eb2@8 f2@8 f2@8 c4@2 ~@6 bb1@8 bb1@8 ~ bb1@8 eb2@8 eb2@8 c2@8 f2@8 f2@8 bb1@8 ~ eb2@8 f2@8 f1@8 bb1@16 bb1@8 bb4@8 ~@17]/5", // Bb5 Bb
  AM: "[eb2,g4]@4 [eb2,g4]@4 [eb2,g4]@4 [eb2,g4]@4 [eb2,g4]@4 [eb2,g4]@4 [f2,f4]@4 [f2,f4]@4 [f2,f4]@4 [f2,f4]@4 [f2,f4]@4 ~ [f2,f4]@3", // Eb F
  AN: "~ [bb1,f4]@4 [bb1,f4]@4 [bb1,f4]@4 [bb1,f4]@4 [d2,f4]@4 [d2,f4]@4 [eb2,bb4]@4 [eb2,bb4]@4 [c2,c5]@4 [c2,c5]@4 [eb2,c5]@4 [eb2,c5]@3", // Bb5 Dm Eb5 C Cm
  AO: "[~ [f2,f4]@4 [f2,f4]@4 ~ [f2,f4]@4 [f2,f4]@4 [bb1,f4]@4 [bb1,f4]@4 [eb2,g4]@4 [eb2,g4]@4 [f2,a4]@4 [f2,c4]@4 [f1,f4]@4 [f1,f4]@4 [bb1,f4]@16 ~@30]/2", // F Bb5 Eb F F5 F Bb5
})).s("gm_oboe").gain(0.15)

// other · oboe · "Oboe II"
const oboe_2 = note(`<
  ~ A ~ B C D ~@7 E F G H ~@15 I J K ~@5 L M N ~@8 O P@2 ~ Q R ~@2 S T U ~@7 V@2 W X ~@13 Y Z AA A ~@3 AB ~@5 AC@3 AD AE
  ~@12 AF AG AH@2 AI ~@3 AJ@3 AK@2 ~@3 AL@3 AM@2 ~@3 AN AO AP@3 ~@15 AQ@3 AR AS@3 ~@5
>`.pickRestart({
  A: "d5@3 d5 eb5@2 eb5@2 ~@4", B: "d5@3 d5 c5@2 c5@2 c5@3 c5", C: "bb4 ~@2", D: "bb4@2 c5 d5 f4@4 ~@4",
  E: "~@4 d5 bb4", F: "bb4@4 a4@3 a4 f4@4", G: "g4@2 g4@2 c5 a4 bb4@2 bb4@2 a4@2", H: "f4 ~@2",
  I: "~@4 d5@2 c5 f5 f5@3 e5", J: "f5@3 f5 e5@3 e5 d5@3 d5", K: "e5 f5!2 e5 f5@2",
  L: "~@4 f2 a2 f2 a2 d2 bb2 d2 bb2, ~ [f4,a4,c5] [f4,bb4,d5]", // F Bb
  M: "eb2 g2 eb2 g2 c2 a2 c2 a2 d2 f2 d2 f2, [eb4,g4,bb4] [eb4,a4,c5] [d4,f4,a4]", // Eb Adim Dm
  N: "bb1 g2 bb1 g2 c2 e2 c2 e2 f1@2 c3@2, [d4,g4,bb4] [c4,e4,g4] [c4,f4,a4]", O: "a4!2 f4!2 e4 e5",
  P: "[f5@2 a4@2 f4@2 g4@2 e5@2 c5 f5@3 e5@2 f5@2 c5@2 ~@4]/2", Q: "bb4@3 a4 g4@2 gb4@2 g4@4", R: "gb4 ~@2",
  S: "bb4@3 c5 a4@3 bb4 c5@3 c5 bb4@3 c5 a4@3 a4 g4@3 a4", T: "bb4@3 bb4 a4@3 bb4 g4@3 g4 gb4@3 g4 a4@3 a4 g4@3 a4",
  U: "gb4!2 g4 d4 ~@2", V: "[~ bb4 a4]/2", W: "g4@2 gb4", X: "g4 ~@2", Y: "~@4 b4@3 b4 c5@2 c5@2", Z: "~@8 a4@3 a4",
  AA: "bb4!2 ~@4", AB: "bb4@3 d5 c5@2 a4@2 ~@4",
  AC: "[~@46 bb4@4 d5@4 f5@4 bb5@4 a5@4 ~ g5@4 f5@4 eb5@4 d5@4 c5@4 bb4@4 a4@4 f4@4 a4@4 c5@4 f5@4 eb5@4 d5@4 c5@4 bb4@4 ~ a4@4 g4@4 f4@4 g4@4]/3",
  AD: "bb4@4 c5@4 d5@4 eb5@4 g4@4 a4@4 c5@4 f4@4 eb5@4 d5@4 bb4@4 ~ c5@3",
  AE: "~ g4@4 bb4 a4 bb4 a4 bb4 a4 bb4 a4 a4@4 bb4@4 bb4@16 ~@11",
  AF: "~@13 d5@2 bb4@3 c5@3 d5@2 bb4@3 c5@3 d5@3 c5@2 d5@3 eb5@3 c5@2 d5@3 eb5@3",
  AG: "c5@3 d5@2 eb5@3 a4@3 bb4@2 c5@3 a4@3 bb4@2 c5@3 a4@3 bb4@3 c5@2 bb4@3 c5@3 d5@2 bb4@3 c5@3 d5@2",
  AH: "[~ bb4@2 c5@3 d5@3 bb4@2 c5@3 d5@3 eb5@3 f5@2 g5@3 eb5@3 d5@2 eb5@3 c5@3 bb4@3 c5@2 a4@3 g4@3 a4@2 f4@3 eb4@3 f4@3 g4@2 a4@3 bb4@3 a4@2 bb4@3 g4@3 a4@3 g4@2 a4@3 bb4@3 d5@2 c5@3 bb4@3 c5@3]/2",
  AI: "d5@2 eb5@3 d5@3 c5@2 d5@8 ~@30",
  AJ: "[~@14 d5@8 d5@8 f4@8 g4@8 bb4@8 g4@8 a4@8 ~ c5@8 a4@8 f4@8 bb4@8 d5@8 bb4@8 eb5@8 ~ eb5@8 a4@8]/3",
  AK: "[a4@2 f4@2 c5@2 a4@2 c5 a4 bb4@6 ~@8]/2",
  AL: "[~@20 bb4@2 c5@2 d5@6 eb5@2 f5@6 g5@2 ab5@4 ~ g5@2 f5@2 eb5@6 d5@2 c5@6 bb4@2 a4@6 g4@2 f4@6 eb4@2 d4@4 eb4@2 d4@2 c4@4 d4@2 eb4@2 f4@6 ~ g4@2 a4@4 bb4@2 c5@2 d5@4 g4@2 a4@2 bb4@6 c5@2 d5@4 eb5@2 f5@2 g5@4 a5@2]/3",
  AM: "[g5@2 f5@4 eb5@2 d5@2 c5@4 d5@2 c5@2 ~ bb4@4 g5@2 a5@2 bb5@4 d5@2 f5@2 bb5@4 c5@2 eb5@2 a5@4 bb5@2 a5@2 g5@4 f5@2 eb5@2 d5@4 c5@2 bb4@2 a4@4 bb4@8 ~@17]/2",
  AN: "~@27 d5@8 d5@12 ~", AO: "~ d5@2 eb5@8 eb5@12 ~@2 eb5@2 a4@8 ~ a4@12",
  AP: "[~@2 a4@2 bb4@8 bb4@12 ~@2 bb4@2 bb4@8 c5@8 ~ g4@8 f4@16 f4@8 g4@8 f4@16 d4@16 ~@27]/3",
  AQ: "[~@43 bb5@8 f5@13 ~@2 f5@2 ~ g5@8 c5@13 ~@2 bb4@2 a4@6 ~ f4@2 c5@13 ~@2 eb5@2 d5@6 bb4@2 ~ f5@13 ~@2]/3",
  AR: "ab5@2 g5@6 bb4@2 eb5@13 ~@2 g4@2 ~ a4@4 f4@5 c5@5 eb5@5 ~", AS: "[d5@12 c5@6 ~ bb4@6 a4@19 bb4@9 bb4@53 ~@38]/3",
})).s("gm_oboe").gain(0.3)

// other · acoustic bass
const acoustic_bass = note(`<
  ~ A ~ B C D ~@7 E F G H ~@15 I J K L M N O P Q ~@2 R S T U V W X Y Z AA AB ~@15 AC AD@2 AE ~@13 AF AG AH A ~@3 AI ~@5
  AJ@3 AK AL@2 ~@3 AM AN@3 AO ~@11 AP@5 ~@3 AQ@3 AR@2 ~@3 AS@2 AT@2 AU ~@15 AV@3 AW AX@3 ~@5
>`.pickRestart({
  A: "f5@3 f5 g5@2 g5@2 ~@4", B: "f5@3 f5 g5@2 g5@2 c5@2 d5 eb5", C: "d5@3 c5 bb4@4 ~@16",
  D: "f5@6 bb5@2 a5@3 g5 f5@4 ~@8", E: "~@8 bb4 bb3 d4 bb3", F: "eb4 bb3 g4 eb4 f4 c5 a4 f4 bb4 bb3 d4 bb3",
  G: "eb4 c4 eb4 c4 a4 f4 bb4 d4 eb4 c4 f4 a4", H: "bb4 bb3 d4 bb3 ~@8", I: "~@4 f5@3 f5 g5@3 g5",
  J: "a5@3 bb5 g5@2 c6@4 bb5@2", K: "~@4 c6@4 a5@4 g5@4 a5@3 g5 a5 g5 f5 g5 g5@4 f5@4 f5@16",
  L: "~ c6 c5 c6 ~ d6 d5 d6 ~ e5 e4 e5", M: "~ c5 c4 c5 ~ bb4 c5 d5 ~ e5 f5 g5",
  N: "f5@4 e5 f5 ~ e5 e5@4 f5@4 f5@4 a4@4 bb4@4 g4@4 f4@16", O: "~@2 d6 c6 bb5 c6 d6@2 ~@10 a5 g5 f5 g5 a5@2",
  P: "~@8 bb5 a5 g5@2 a5 g5 f5@2 g5@4 e5@4", Q: "f5 ~@2",
  R: "f2 a2 f2 a2 d2 bb2 d2 bb2 eb2 g2 eb2 g2, [f4,a4,c5] [f4,bb4,d5] [eb4,g4,bb4]", // F Bb Eb
  S: "c2 a2 c2 a2 d2 f2 d2 f2 bb1 g2 bb1 g2, [eb4,a4,c5] [d4,f4,a4] [d4,g4,bb4]", // Adim Dm Gm
  T: "c2 e2 c2 e2 f2@2 f1@2 f2 g2 f2 g2, [c4,e4,g4]@2 [c4,f4,a4]@2 [f4,a4,c5]!2", // C F
  U: "f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2, [f4,bb4,d5]!2 [e4,g4,bb4]!2 [f4,a4,c5]@2", // Bb Edim F
  V: "f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2, [c4,f4,a4]!2 [d4,f4,bb4]@2 [bb3,e4,g4]!2", // F Bb Edim
  W: "f2@2 g2@2 f2@2 g2@2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2, [c4,f4,a4]@2 [f4,a4,c5,f5,a5,c6]!2 [f4,bb4,d5,f5,bb5,d6]@2", // F Bb
  X: "f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2, [e4,g4,bb4,e5,g5,bb5]!2 [f4,a4,c5,f5,a5,c6]@2 [c4,f4,a4,c5,f5,a5]!2", // Edim F
  Y: "f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2, [d4,f4,bb4,d5,f5,bb5]@2 [bb3,e4,g4,bb4,e5,g5]!2 [c4,f4,a4,c5,f5,a5]@2", // Bb Edim F
  Z: "c6 c5!7 d6 d5!7 e5 g5!7, [f3,f4] [f3,f4,a4] bb2!2 c3!2", AA: "a5 c5!7 d5 bb5!11 a5!4, f2!2 bb2 g2 c3 f2",
  AB: "g5 bb4 g5 bb5 [a4,a5]@2 a4@2 ~@4, c3 c2 [f2,c4,f4]@2 ~@2", AC: "~@2 d4", AD: "[c4 bb3 a3]/2", AE: "g3 ~@2",
  AF: "~@4 b5@3 b5 c6@2 g5@2", AG: "~@8 a5@3 a5", AH: "bb5 f5 ~@4", AI: "f5@3 bb5 a5@2 f5@2 ~@4",
  AJ: "[~@46 bb4@4 d5@4 f5@4 bb5@4 a5@4 ~ g5@4 f5@4 eb5@4 d5@4 c5@4 bb4@4 a4@4 f4@4 a4@4 c5@4 f5@4 eb5@4 d5@4 c5@4 bb4@4 ~ a4@4 g4@4 f4@4 g4@4]/3",
  AK: "bb4@4 c5@4 d5@4 eb5@4 g4@4 a4@4 c5@4 f4@4 eb5@4 d5@4 bb4@4 ~ c5@3",
  AL: "[~ g4@4 bb4 a4 bb4 a4 bb4 a4 bb4 a4 a4@4 bb4@4 bb4@4 g4@4 f4@4 eb4@4 d4@4 c4@4 bb3@16 ~@35]/2",
  AM: "~@9 f5@2 eb5@2 d5@4 d5@2 eb5@2 f5@4 g5@8 bb4@2 a4@2 g4@4 g4@2 a4@2 bb4@3",
  AN: "[~ a4@8 ~ c5@2 d5@2 eb5@4 eb5@2 d5@2 c5@4 d5@8 f5@2 g5@2 ab5@4 ab5@2 g5@2 f5@4 g5@8 g5@2 a5@2 bb5@4 ~ bb5@2 a5@2 g5@4 a5@4 f5@4 g5@4 a5@4 bb5@12 g5@4 a5@12 ~@4 bb5@8 ~ f5@2 eb5@2 d5@4 d5@2 eb5@2]/3",
  AO: "f5 ~@11",
  AP: "[~@18 f5@2 eb5@2 f5@4 d5@8 bb4@8 g5@2 f5@2 g5@4 eb5@8 c5@8 ~ a4@2 g4@2 a4@4 f4@8 eb5@4 d5@2 bb4@2 c5@2 d5@2 eb5@2 f5@2 g5@2 a5@2 bb5@2 f5@2 d6@8 c6@2 bb5@2 c6@2 g5@2 bb5@8 ~ c6@2 g5@2 a5@2 c6@2 eb5@8 f5@2 c5@2 d5@2 f5@2 bb5@6 a5@2 g5@2 f5@2 eb5@2 d5@2 c5@2 bb4@2 a4@2 c5@2 eb5@6 ~ f5@2 d5@2 f5@2 bb5@2 f5@2 d5@2 f5@2 bb4@2 d5@2 f4@2 bb4@2 d4@8 ~@23]/5",
  AQ: "[~@20 bb4@2 c5@2 d5@6 eb5@2 f5@6 g5@2 ab5@4 ~ g5@2 f5@2 eb5@6 d5@2 c5@6 bb4@2 a4@6 g4@2 f4@6 eb4@2 d4@4 eb4@2 d4@2 c4@4 d4@2 eb4@2 f4@6 ~ g4@2 a4@4 bb4@2 c5@2 d5@4 g4@2 a4@2 bb4@6 c5@2 d5@4 eb5@2 f5@2 g5@4 a5@2]/3",
  AR: "[g5@2 f5@4 eb5@2 d5@2 c5@4 d5@2 c5@2 ~ bb4@4 g5@2 a5@2 bb5@4 d5@2 f5@2 bb5@4 c5@2 eb5@2 a5@4 bb5@2 a5@2 g5@4 f5@2 eb5@2 d5@4 c5@2 bb4@2 a4@4 ~@25]/2",
  AS: "[~@14 bb4@4 ~ d5@4 f5@4 d5@2 f5@2 d5@2 f5@2 d5@2 f5@2 d5@2 f5@2 d5@2 f5@2 d5@2 f5@2 eb5@2 g5@2 eb5@2 g5@2 eb5@2 g5@2 eb5@2 g5@2 eb5@2 g5@2 eb5@2 g5@2 c5@2 a5@2 ~ c5@2 a5@2 c5@2 a5@2 c5@2 a5@2 c5@2 a5@2]/2",
  AT: "[c5@2 a5@2 d5@2 bb5@2 d5@2 bb5@2 d5@2 bb5@2 d5@2 bb5@2 d5@2 bb5@2 d5@2 bb5@2 bb4@2 g5@2 bb4@2 g5@2 eb5@2 g5@2 eb5@2 ~ g5@2 g4@2 eb5@2 g4@2 eb5@2 eb4@2 a4@2 eb4@2 a4@2 eb4@2 a4@2 eb4@2 a4@2 d4@2 bb4@2 d4@2 bb4@2 g4@4 eb5@4 d5@4 f4@4 eb4@3]/2",
  AU: "~ c5@4 bb4@4 ~ a4@2 g4@2 f4@2 eb4@2 d4@2 c4@2 bb3@8 ~@18",
  AV: "[~@43 bb5@8 f5@13 ~@2 f5@2 ~ g5@8 c5@13 ~@2 bb4@2 a4@6 ~ f4@2 c5@13 ~@2 eb5@2 d5@6 bb4@2 ~ f5@13 ~@2]/3",
  AW: "ab5@2 g5@6 bb4@2 eb5@13 ~@2 g4@2 ~ a4@4 f4@5 c5@5 eb5@5 ~", AX: "[d5@12 c5@6 ~ bb4@6 a4@19 bb4@9 bb4@53 ~@38]/3",
})).s("gm_lead_8_bass_lead").gain(0.3)

// other · acoustic bass · soft notes
const acoustic_bass_soft = note(`<
  ~@8 A B C ~@5 D E F G H I J K L E F G H I J K M ~@28 N O P Q R@2 S T U ~@21 V W ~@18 X Y Z@6 AA@2 AB AC@3 ~@11 AD AE
  AF AG@2 ~@31
>`.pickRestart({
  A: "~@4 f5 d5 c5 bb4 g5 d5 c5 bb4", B: "a4 c5 f5 eb5 d5 f5 bb5 a5 g5 c5 c6 bb5",
  C: "a5 c5 bb4 bb5 c5 bb5 f5 a5 bb5@2 bb4@2", D: "~ bb4 eb4", E: "f4@2 bb3@2 eb4 c4", F: "f4 bb3 f4!2 bb3@2",
  G: "bb4 eb4 f4", H: "bb3@2 eb4 c4 f4 bb3", I: "f4!2 bb3@2 bb4@2", J: "eb4 f4 bb3", K: "eb4 c4 f4 bb3 f4!2",
  L: "bb3 bb4 eb4", M: "bb3 ~@2", N: "~@9 bb5 a5 bb5", O: "~ c6 bb5 c6 ~ a5 g5 a5 ~ bb5 a5 bb5",
  P: "~@4 g5@4 gb5@4 g5@4 ~@4 a5@4 g5@4 a5@4 g5@4 gb5 g5 ~ gb5 gb5@4 g5@4", Q: "g5 d5 bb5@4", R: "[a5@2 g5@2 gb5 g5]/2",
  S: "d5 ~ d5 ~ c5 ~ c5 ~ c5 ~ c5 ~", T: "bb4 ~ bb4 ~ bb4 ~ bb4 ~ a4 ~ a4 ~", U: "a4 ~ a4 ~ g4@4 ~@4",
  V: "f5@3 f5 g5@2 c5@2 c5@2 d5 eb5", W: "d5 d4 ~@4", X: "~@25 bb5@2 ~@21", Y: "~ bb4@6 eb4@5",
  Z: "[~@5 f4@24 bb3@24 ~ eb4@16 c4@8 f4@16 bb3@8 eb4@8 f4@8 ~ f4@8 bb3@24 bb4@24 ~ eb4@24 f4@24 bb3@24 ~ eb4@16 c4@8 f4@15]/6",
  AA: "[~ bb3@8 ~ eb4@8 f4@8 f4@8 bb3@24 d5@4 ~@5 d5@4 ~@4 d5@4 ~@4 c5@4 ~@4 c5@4 ~]/2",
  AB: "~@3 c5@4 ~@4 c5@4 ~@4 c5@4 ~@4 c5@4 ~@5 d5@4 ~@4 d5@4",
  AC: "[~@4 d5@4 ~@4 d5@8 c5@8 c5@8 c5@8 ~ c5@8 bb4@8 bb4@8 a4@8 a4@8 bb4@8 bb4@8 bb4@8 ~@35]/3",
  AD: "~@23 bb4@4 bb4@4 ~ bb4@4 bb4@4 bb4@4 bb4@4",
  AE: "bb4@4 bb4@4 bb4@4 bb4@4 bb4@4 bb4@4 a4@4 a4@4 a4@4 a4@4 a4@4 ~ a4@3",
  AF: "~ d5@4 d5@4 d5@4 d5@4 f5@4 f5@4 eb5@4 eb5@4 eb5@4 eb5@4 eb5@4 eb5@3",
  AG: "[~ a4@4 a4@4 ~ a4@4 a4@4 bb4@4 bb4@4 bb4@4 bb4@4 a4@4 a4@4 a4@4 a4@4 bb4@8 ~@38]/2",
})).s("gm_lead_8_bass_lead").gain(0.15)

// chords · music box
const music_box = note("<~@85 A B C D ~@3 E ~@73 F@4 G@2>".pickRestart({
  A: "~@8 [g2,g3,g4,b4,d5]@3 [g2,g3,g4,b4,d5]", B: "[c4,g4,c5,eb5]!2 ~@4, c3 ~@2",
  C: "[f2,f3,f4,a4,c5]@3 [f2,f3,f4,a4,c5] [bb3,f4,bb4,d5]@2 [bb3,f4,bb4,d5]@2 ~@4, ~ bb2 ~", // F Bb
  D: "~@4 [bb2,bb3,bb4,d5,f5]@3 [bb2,bb3,bb4,d5,f5] [eb4,bb4,eb5,g5]@2 [eb4,bb4,eb5,g5]@2, ~@2 eb3", // Bb Eb
  E: "~@4 [d3,d4,f4,f5]@2 [c4,eb5] [bb3,d5] [f3,f4,a4,c5]@4, ~@3 [eb3,g4] ~@2", // Dm Cm Bb F Eb
  F: "[~@30 c5@3 bb4@3 ~ a4@3 bb4@3 ~ c5@3 d5@4 eb5@6 f5@47 g5@4 ~ a5@4 bb5@9 d6@10 c6@5 bb5@5 a5@5 g5@8 ~ f5 e5 ~ f5 e5 ~ f5 e5 ~ f5 e5 ~ f5 e5 ~ f5 e5 ~ f5 e5 ~ f5 e5 ~ e5@12]/4",
  G: "[f5 f5@6 ~]/2",
})).s("gm_music_box").gain(0.3)

// chords · music box · soft notes · Bb Eb C5 F7 Bb F
const music_box_soft = note(`<
  ~@89
  [~@8 [bb3,d4,bb4,f5]@3 [bb3,d4,bb4,f5]]
  [[eb4,bb4,g5]@2 [g4,c5]@2 c5@2 d5 [f3,eb5] [f4,bb4,d5]@2 [d4,f4,bb4]@2, eb3 [f3,f4,a4] bb2]
  ~@81
>`).s("gm_music_box").gain(0.2)

// chords · church organ · "Pipe Organ"
const church_organ = note(`<
  A B C ~ D ~@6 E F@2 G H I J K ~@2 L M N O ~@2 P Q R ~@2 S T U ~@2 V W X Y ~@131
>`.pickRestart({
// … 146 more lines