Strudelify

The Banks of Green Willow

George BUTTERWORTH

KeyA majorTempo112 bpm
0:00/0:00
// The Banks of Green Willow — George BUTTERWORTH
// 112 bpm, 3/4, key A 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 (1/4 at bar 1, 3/4 at bar 1, 4/4 at bar 53, 3/2 at bar 55, ...) are rendered on a constant 3/4 grid of one bar per cycle
// note: ch 1 "Flute" named as a pipe, played on flute (its tremolo strings patch is not one); ch 2 "Oboe" named as a reed, played on oboe (its orchestral harp patch is not one); ch 3 "A Clarinet" named as a reed, played on clarinet (its pizzicato strings patch is not one); ch 4 "Bassoon" named as a reed, played on bassoon (its vibraphone patch is not one); ch 5 "Horn in F" named as a brass, played on brass section (its viola patch is not one); ch 6 "F Trumpet" named as a brass, played on trumpet (its pizzicato strings patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/4918456; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 202 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(112/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 · flute
const flute = note(`<
  ~@12 A@2 ~@3 B@5 ~@4 C D@3 ~@4 E@2 ~@53 F G H I J K L ~@3 M N O P Q R S ~ T U@2 V@2 W X Y@2 Z AA@3 ~@33 AB@2 AC@3 AD@2
  AE@4 ~@38
>`.pickRestart({
  A: "[~@7 e5@2 f#5@3 g#5@3 a5@8 e5@4 ~@21]/2",
  B: "[~@20 e6@18 d6@4 c#6@5 e6@4 a5@14 b5@5 a5@5 g5@5 e5@14 f#5@4 g5@4 ~@18]/5", C: "~ d6@2",
  D: "[~@3 c6@5 b5@5 d6@5 g5@14 a5@5 g5@5 f5@5 d5@15 e5@5 f5@5]/3",
  E: "[~@16 a4@2 b4@2 c#5@2 ~ d5@2 ~ f#5@4 ~@18, ~@25 e5@2 ~@21]/2", F: "~ f5 a#5 c6", G: "c#6@6 c6@2 a#5@3 c6",
  H: "a#5@3 g#5 f5@4 a#5@4", I: "g#5@3 g5 d#5@2 g5@2 a#5@2 c6@2", J: "a#5@11 ~ a5@4 f5@4 ~@4", K: "a#5@4 f5@4 c#5@3 c5",
  L: "a#4@6 c#5@2 f5@11 ~@5", M: "~@3 f#5 b5 c#6", N: "d6@6 c#6@2 b5@3 c#6", O: "b5@3 a5 f#5@4 b5@4",
  P: "a5@3 g#5 e5@2 g#5@2 b5@2 c#6@2", Q: "b5@3 a#5 f#5 ~", R: "b5@4 f#5@4 d5@3 c#5", S: "b4@6 d5@2 f#5@11 ~@5",
  T: "~@4 [f#5,d6] ~", U: "[[f#5,d#6]@27 ~@5 [f#5,d6]@8 [e5,c#6]@4 ~@4]/2",
  V: "[~@4 f#5@4 d#5@3 c#5 b4@2 ~ d#5 [f#5,d6]@4 [e5,c#6]@4, b5@9 ~@7]/2", W: "[d#5,b5] ~ [f#5,d6]@2 [e5,c#6]@2",
  X: "[d#5,b5] ~ [a5,f#6]@2 [g5,e6]@2", Y: "[[f#5,d#6]@4 ~@4 a6@32 ~ g6@7]/2", Z: "~ f#6@8 a6@8 ~ g6@6",
  AA: "[~@2 f#6@8 ~ e6@8 a6@8 g6@9 f#6@9 e6@8 ~ d6@9 ~@9]/3", AB: "[~@4 d6@9 e6@5 ~@4 e6@9 a6@9 g6@8]/2",
  AC: "[~ f#6@9 e6@9 ~ d6@9 a5@9 b5@4 a5@5 g5@9 a5@9 b5@7]/3", AD: "[~@2 a5@5 ~@5 a5@9 b5@4 a5@5 g5@9 a5@9]/2",
  AE: "[b5@3 c6@3 d6@3 e6@14 d6@5 b5@4 a5@5 g5@9 a5@9 b5@9 a5@13 ~@19]/4",
})).s("gm_flute").gain(0.25).pan(1)

// other · flute · soft notes
const flute_soft = note("<~@119 A@2 B ~@21 C D@8 E ~@49>".pickRestart({
  A: "[~@15 a5@8 b5@4 ~ a5@4 g5@9 a5@7]/2", B: "~@2 b5@9 ~ a5@12", C: "~@5 e5",
  D: "[f#5@5 g5@4 a5@5 ~@4 a5@9 ~ b5@4 a5@5 g5@9 a5@9 b5@9 e6@14 d6@4 b5@5 a5@5 g5@9 a5@9 b5@9 a5@5 ~@4 a5@9 b5@5 a5@4 g5@9 ~ a5@9 b5@9 e6@9 g6@9]/8",
  E: "f#6@3 e6@5",
})).s("gm_flute").gain(0.15).pan(1)

// chords · oboe
const oboe = note(`<
  ~@13 A@4 ~ B@4 ~@4 C@6 D@3 ~@2 E@3 ~@47 F G H I J K L M N ~@2 O P Q R S T U V W X Y Z AA AB AC AD AE@7 AF@3 ~@3 AG
  AH@3 AI@3 AJ@2 AK@3 AL@3 AM ~@37 AN AO@7 AP@4 AQ@8 ~@2
>`.pickRestart({
  A: "[~@21 c#5@2 e5@12 e5@4 f#5@8 d6@8 b5@8 c#6@6 b5@2 a5@20 ~@5]/4",
  B: "[~@5 [g4,c#5]@4 [b4,e5]@23 [a4,d5]@5 [g4,c#5]@4 [f#4,b4]@5 [e4,a4]@10 [f#4,b4]@5 [e4,a4]@5 [d4,g4]@4 [c#4,f#4]@4 ~@22]/4", // Gdim E5 D5 Gdim B5 A5 B5 A5 …
  C: "[~@22 [a4,d5]@24 [g4,c5]@5 [f4,b4]@5 [e4,a4]@5 [d4,g4]@10 [e4,a4]@5 [d4,g4]@5 [c4,f4]@5 [b3,e4,e5]@5 f5@16 e5@5 d5@5 ~ e5@5 d5@8 c5@3 a4@10, ~@71 d5@15 ~@5 a3@5 ~@48]/6", // D5 C5 Fdim A5 G5 A5 G5 F5 …
  D: "[d5@11 c5@8 b4@3 g4@5 b4@5 d5@5 ~ e5@5 d5@16 c#5@5 a4@5 ~@3]/3", E: "[~@12 f#4@18 c#4@5 ~@5 f#4@20 ~@12]/3",
  F: "~@12 d6 c6 a#5 g#5 g5 f5 e5 d5 c5 a#4 g#4 g4",
  G: "~ f4 e4 d4 c4 a#3 g#3 g3 f3 e3 d3 c3 a#2 c3 d3 e3 ~ f3 g3 g#3 a#3 c4 d4 e4",
  H: "~ f4 g4 g#4 a#4 c5 d5 e5 ~ f5 g5 g#5 [a#4,a#5]@6 [c5,c6]@6, ~@2 f5 ~@5", // A# C
  I: "[c#5,c#6]@6 [c5,c6]@2 [a#4,a#5]@3 [c5,c6]", J: "[a#4,a#5]@3 [g#4,g#5] [f4,f5]@4 [a#4,a#5]@4",
  K: "[g#4,g#5]@3 [g4,g5] [d#4,d#5]@2 [g4,g5]@2 [a#4,a#5]@2 [c5,c6]@2", L: "[a#4,a#5]@3 [a4,a5] [f4,f5] ~",
  M: "a#5@4 f5@4 c#5@3 c5", N: "a#4@3 c#5 f5@6 ~@2",
  O: "~@8 d#6 [b5,c#6] a5 [f#5,g#5] f5 d#5 [b4,c#5] a4 [f#4,g#4] f4 [c#4,d#4] b3 a3 [f#3,g#3] f3 [c#3,d#3]", // Bsus2 F#sus2 Bsus2 F#sus2 C#sus2 F#sus2 C#sus2
  P: "b2 c#3 [d#3,f3] f#3 g#3 [a3,b3] c#4 d#4 [f4,f#4] g#4 a4 [b4,c#5] d#5 f5 [f#5,g#5] a5 [b4,b5]@4 [c#5,c#6]@4, ~@3 f#4 ~@2, ~@6 f#5 ~@5", // D#sus2 Asus2 F#maj7 Bsus2 F#sus2 B C#
  Q: "[d5,d6]@6 [c#5,c#6]@2 [b4,b5]@3 [c#5,c#6]", R: "[b4,b5]@3 [a4,a5] [f#4,f#5]@4 [b4,b5]@4",
  S: "[a4,a5]@3 [g#4,g#5] [e4,e5]@2 [g#4,g#5]@2 [b4,b5]@2 [c#5,c#6]@2", T: "[b4,b5]@3 [a#4,a#5] [f#4,f#5] ~",
  U: "b5@4 f#5@4 d5@3 c#5", V: "b4@3 d5 f#5@6 ~@2", W: "~@12 f#5 f#5@3 e5@3 d5@2 e5@3",
  X: "f#5 ~ [g#5,c6]@2 [f#5,d6] ~", Y: "b5@4 f#5@4 d#5@3 c#5", Z: "b4@2 ~ d#5 a5@4 g5@4",
  AA: "[b4,b5]@4 [f#4,f#5]@4 [d#4,d#5]@3 [c#4,c#5]", AB: "[b3,b4]@2 ~ [f#4,d#5] [a4,f#5]@4 [g4,e5]@4",
  AC: "[f#4,d#5] ~ [a4,f#5]@2 [g4,e5]@2", AD: "[f#4,d#5] ~ [d5,f#5,a5]@2 [c#5,e5,g5]@2",
  AE: "[[b4,d#5,f#5]@4 ~@4 e4@2 e4@2 c5@2 c5@2 a5@2 a5@2 e6@2 e6@2 e6@2 e6@2 a5@2 a5@2 c5@2 c5@2 ~ e4@2 e4@2 e4@2 e4@2 c5@2 c5@2 a5@2 a5@2 e6@2 e6@2 e6@2 e6@2 a5@2 ~ a5@2 c5@2 c5@2 e4@2 e4@2 e4@2 e4@2 c5@2 c5@2 ~ a5@2 a5@2 e6@2 e6@2 e6@4 d6@4 c6@2 ~ c6@2 e5@2 e5@2 a4@2 a4@2 ~ c5@2 c5@2 c5@4 b4@4 ~ a4@26 b4@16, ~@8 a4@87 ~@73, ~@8 a5@8 ~@25 g5@8 f#5@8 a5@4 ~@5 g5@8 f#5@8 ~ e5@8 a5@8 g5@9 f#5@9 e5@9 d5@4 ~@38]/7", // B
  AF: "[~@2 g4@9 ~ e4@41 ~@19]/3", AG: "~@5 e4", AH: "[f#4@5 g4@4 a4@9 a4@9 ~ b4@4 a4@5 g4@9 a4@9 b4@9 e5@8]/3",
  AI: "[~ g5@9 f#5@9 ~ e5@18 d5@9 e5@5 ~@4 e5@9 a5@7]/3", AJ: "[~@2 g5@9 ~ f#5@9 e5@9 d5@9 a4@9]/2",
  AK: "[b4@5 a4@4 ~@9 a4@9 ~ b4@9 a4@9 a4@9 b4@5 a4@4 g4@8, ~ g4@2 ~@5]/3",
  AL: "[~ a4@9 b4@3 ~ c5@3 d5@3 e5@13 d5@5 b4@4 a4@5 g4@9 a4@9 b4@7]/3", AM: "~ a4@5 ~@6", AN: "~@19 [d4,d5]@5",
  AO: "[[e4,e5]@11 ~ [f4,f5]@16 [e4,e5]@17 [d4,d5]@17 [a3,a4]@17 [c4,c5]@22 [d4,d5]@45 e5@17 e5@5]/7", // E F E D A C D
  AP: "[e5@20 e5@3 e5@11 d5@4 c5@3 d5@4 e5@17 e5@6 e5@19 e5@3 e5@6]/4",
  AQ: "[~@5 d5@4 c5@4 d5@3 e5@22 ~ g5@22 f5@22 ~ e5@7 c#5@93 ~@8]/8",
})).s("gm_oboe").gain(0.35).pan(0.8)

// chords · oboe · soft notes
const oboe_soft = note(`<
  ~@8 A@6 ~@7 B@2 C D@2 E ~@12 F@2 G@2 H I@3 J@2 K ~@20 L@3 M@8 N ~@7 O ~@33 P@3 Q@2 R@6 S@8 T@2 U ~@22 V@4 W@2 ~@4 X
  Y@2 Z ~@6 AA@2 ~@10 AB@3
>`.pickRestart({
  A: "[~@11 e4@4 a4@4 b4@4 c#5@8 b4@8 a4@8 e4@8 a4@6 g#4@2 f#4@8 d4@8 b4@8 b4@12 g#4@4 e4@4 ~@12 e5@8 c#5@6 b4@2 a4@6 ~@3]/6",
  B: "[~ [d4,f#4,d5,f#5]@2 [c4,e4,c5,e5]@4 [c5,e5]@2 [b4,d5]@2 [b4,d5]@2 [a4,c5]@2 ~@6 c5@3, ~@17 g4@7]/2", // D C Bm Am
  C: "b4 [f4,a4]@2 ~@2 [c4,f4]@2 ~@2 [a4,d5]@2 ~", D: "[~ [b4,d5]@6 [g4,b4]@2 d4@6 ~@9, ~@9 g4@2 ~@13]/2",
  E: "~@18 [f4,b4]@5 ~", F: "[~@3 c#4 ~ f#4@3 g#4 a4 b4 c#5]/2", G: "[e5 a5 g#5 f#5@2 d5@2 b5@2 b5@3]/2",
  H: "g#5 e5 ~@4", I: "[~ g#4@2 a4 ~ a4@5 ~ f#4@2 e4 d4 c#4 e4 a4]/3",
  J: "[b4 c#5 ~ f#5@2 [d5,d6]@2 [b4,b5]@2 [c#5,c#6]@3, ~@2 e5@3 ~@7]/2", K: "[b4,b5] [a4,a5] ~@4",
  L: "[~@8 f#5@21 d5@28 ~ e5@7 f#5@7]/3",
  M: "[g5@11 f#5@10 d5@28 ~ e5@7 f#5@7 g5@11 f#5@10 d5@7 e5@7 ~ f#5@7 e5@10 b4@11 d5@7 e5@7 f#5@7 e5@11 b4@11 d5@21]/8",
  N: "e5 ~@5", O: "~ f4 ~@2",
  P: "[~@5 e4@5 f#4@5 g4@5 [c4,a4]@9 [c4,a4]@9 [d4,b4]@4 [c4,a4]@5 [b3,g4]@9 [c4,a4]@9 [d4,b4,g5]@7, ~@5 d4@14 ~ a5@27 b5@18 ~@7]/3", // F G F Em F G
  Q: "[~@16 d5@5 b4@4 a4@5 [b3,g4]@9 [c4,a4]@9, ~@2 e5@41 ~@5, ~@2 c4@27 ~@19]/2", // Em F
  R: "[[d4,b4]@9 c4@27 ~ b3@9 c4@9 [d4,g4]@9 [c4,e4]@27 ~ [b3,g4]@9 [c4,a4]@9 [d4,b4]@9 [c4,a4,c5]@25, ~@37 b4@18 ~@89]/6", // G G5 C Em F G F
  S: "[~@2 [b3,g4,b4]@27 ~ [c4,f#4]@27 b3@9 c4@9 ~ [d4,e4]@9 c4@27 b3@9 c4@9 [d4,g4]@9 ~ [c4,e4]@27 b3@9 c4@9 d4@7, ~@30 a4@9 ~@18 b4@18 ~@37 b4@18 ~@62]/8", // Em Cdim Dsus2 G5 C
  T: "[~@2 c4@9 ~ [c4,a4]@9 [d4,b4]@4 [c4,a4]@5 [b3,g4]@9 [c4,a4]@9]/2", U: "[d4,b4]@9 [c4,a4]@14 ~",
  V: "[~@12 [a3,c4]@50 ~@6 e4@11 d4@17]/4", W: "[~@5 d4@11 e4@28 ~@4]/2", X: "~@7 [c4,c5]@17",
  Y: "[[d4,d5]@5 [e4,e5]@11 [f4,f5]@17 [e4,e5]@15]/2", Z: "~@2 [c4,c5]@17 ~@5", AA: "[~@2 a4@39 ~@7]/2",
  AB: "[~@5 e4@48 ~@19]/3",
})).s("gm_oboe").gain(0.2).pan(0.8)

// chords · clarinet · "A Clarinet"
const clarinet = note(`<
  ~@13 A@5 ~@6 B@2 C ~@8 D E@4 ~@47 F ~@2 G@3 H I J ~@2 K L M@3 N O P Q R S@2 T@2 U@2 V@6 ~@82
>`.pickRestart({
  A: "[~@7 g#4@8 a4@4 ~@4 e4@20 d4@4 f#4@8 e4@4 d4@4 c#4@12 e4@4 a4@12 e4@4 a4@4 b4@4 c#5@4 e5@4 a5@4 ~@5]/5",
  B: "[~@18 g4@12 ~ d4@4 g4@4 a4@4 b4@4 ~]/2", C: "d5@4 g5@5 ~@15", D: "~@2 f#5@8 ~ c#5@8 a4@5",
  E: "[~ g#4@2 f#4@6 a4@2 c#5@16 c#5@4 ~@5 f#4@18 c#4@5 ~@5 f#4@20 c#4@4 ~@8]/4", F: "~ [a#5,d6]", G: "[a#3,c#4]!24",
  H: "[f3,f4]@5 ~", I: "[f3,f4]@2 [g#3,g#4]", J: "[a#3,a#4]@2 [g#3,f4]@3 ~", K: "~@2 [b5,d#6] ~@3", L: "[d#4,b4]@5 ~",
  M: "[b3,d4]!24", N: "[f#3,f#4]@5 ~", O: "[f#3,f#4]@2 [a3,a4]", P: "[b3,b4]@2 [a3,f#4]@3 ~", Q: "~@2 [f#3,d4] ~@3",
  R: "[f#4,d5] ~@3 [d4,a4] ~", S: "[[f#4,d#5]@7 ~ [a4,f#5]@2 [a4,e5] ~]/2", T: "[[f#4,d#5]@7 ~ [a4,f#5]@2 [a4,e5]@2]/2",
  U: "[f#4,d#5] ~ [a4,f#5]@2 [g4,e5]@2", V: "[[f#4,d#5]@4 ~@4 [a4,e5]@91 [e4,c5]@26 ~ a4@4 ~@14]/6",
})).s("gm_clarinet").gain(0.4).pan(0.8)

// chords · clarinet · "A Clarinet" · soft notes
const clarinet_soft = note("<A@4 B@5 ~@30 C@3 ~@29 D@2 E@7 F G ~@5 H@3 ~@8 I ~@103>".pickRestart({
  A: "[~@7 e4@8 a4@6 b4@2 c#5@8 b4@8 a4@8 e4@8 a4@6 g#4@2 f#4@8 d4@8 b4@8 b4@9]/4",
  B: "[~@3 g#4@4 e4@4 f#4@2 g#4@2 a4@8 e4@8 c#4@6 b3@2 a3@6 c#4@2 e4@12 e4@4 f#4@8 d5@8 b4@8 c#5@6 b4@2 a4@20 ~@5]/5",
  C: "[~@5 f#4@3 g#4 a4@5 ~@4]/3", D: "[~@5 [f#4,a4]@32 [g4,b4]@11]/2",
  E: "[[a4,c5]@11 [g4,b4]@10 [f#4,a4]@32 [g4,b4]@11 [a4,c5]@11 [g4,b4]@10 [f#4,a4]@21 ~ [d4,g4]@21 [c4,f#4]@21 [b3,e4]@19]/7", // Am G F#m G Am G F#m G5 …
  F: "~ [a3,a4]@7", G: "[b3,g4] ~@5", H: "[~@3 [d4,a#4]@13 ~@2]/3", I: "~ [d#4,b4]@2",
})).s("gm_clarinet").gain(0.2).pan(0.8)

// other · bassoon
const bassoon = note("<~@90 A@3 B C D ~@3 E F@3 G H I J K L@2 M@2 N@2 O@6 ~@82>".pickRestart({
  A: "[e2,a#2]/3", B: "[d#2,f3]@5 ~", C: "[c#2,a#2]@2 [f2,c#3]", D: "[f#2,c#3]@2 [c#2,c#3]@3 ~", E: "[b2,a3]@5 ~",
  F: "[e2,b2]/3", G: "[e2,f#3]@5 ~", H: "[d2,b2]@2 [f#2,d3]", I: "[g2,d3]@2 [d2,d3]@3 ~", J: "~@2 [d2,a2] ~@3",
  K: "[d3,a3] ~@5", L: "[[b1,b2]@7 ~ g2@2 a2 ~]/2", M: "[[b1,b2]@7 ~ g2@2 a2@2]/2", N: "[b1,b2] ~ g2@2 a2@2",
  O: "[[b1,b2]@4 ~@4 [a3,e4]@91 [e3,c4]@26 ~ a3@4 ~@14]/6", // B A5 C
})).s("gm_bassoon").gain(0.4).pan(0.8)

// other · bassoon · soft notes
const bassoon_soft = note("<~@71 A@2 B@7 C D ~@5 E@3 ~@8 F ~@103>".pickRestart({
  A: "[~@5 c4@32 d4@11]/2", B: "[e4@11 d4@10 c4@32 d4@11 e4@11 d4@10 c4@21 ~ b3@21 a3@21 g3@19]/7", C: "~ f#3@7",
  D: "e3 ~@5", E: "[~@3 [a#2,g#3]@13 ~@2]/3", F: "~ [b2,a3]@2",
})).s("gm_bassoon").gain(0.2).pan(0.8)

// chords · brass section · "Horn in F"
const brass_section = note(`<
  ~@18 A@4 ~@4 B@4 ~@5 C@4 ~@21 D@3 E@4 ~@15 F G H I J ~@2 K L M N O P Q R S ~ T U@3 V W X Y Z AA@2 AB AC AD AE AF@4
  AG@7 ~@7 AH@2 ~ AI ~@45 AJ@3 ~ AK@3 AL@5 ~@9
>`.pickRestart({
  A: "[~@9 g4@23 f#4@5 e4@4 d4@5 c#4@10 d4@5 c#4@5 b3@4 a3@4 ~@22]/4",
  B: "[~@22 f4@24 e4@5 d4@5 c4@5 b3@10 c4@5 b3@5 a3@5 g3@5 d3@5]/4",
  C: "[~@19 e4@8 f#4@4 ~@4 c#4@21 ~@4 f#3@9 d4@9 c#4@5 ~@5 f#3@8, ~@19 a3@12 ~@65]/4",
  D: "[~@8 g3@21 ~ f3@21 e3@4 ~@17]/3",
  E: "[~@15 [e4,g4]@4 [d4,f4]@4 [e4,g4]@4 [c4,a4]@4 ~@8 [e4,g4]@4 [d4,f4]@4 [e4,g4]@4 [c4,a4]@4 ~@9 [a#3,g4]@25 ~@7]/4", // Em Dm Em F Em Dm Em F …
  F: "~@3 [b3,d4] [a3,c4] [b3,d4]", G: "[g3,e4] ~@2 [b3,d4] [a3,c4] [b3,d4]", H: "[g3,e4] ~@2 [a#3,d4]@3",
  I: "[g#3,c#4] ~@5", J: "[a#4,d5]@3 [g#4,c#5] ~@2", K: "~ f4 a#4 c5", L: "c#5@6 c5@2 a#4@3 c5",
  M: "a#4@3 g#4 f4@4 a#4@4", N: "g#4@3 g4 d#4@2 g4@2 a#4@2 c5@2, ~@2 [g#3,g#4]", O: "a#4@3 a4 f4 ~, [c4,c5]@5 ~",
  P: "[f4,a#4]@4 f4@4 [g#3,c#4,g#4]@3 c4, f3@2 ~", Q: "[a#3,a#4]@3 c#4 [g#3,f4]@6 ~@2", R: "~@2 [b3,d#4]@2 [a3,d4] ~",
  S: "~@2 [b4,d#5]@2 [a4,d5] ~", T: "~@3 f#4 b4 c#5",
  U: "[d5@6 c#5@2 b4@3 c#5 b4@3 a4 f#4@4 b4@4 a4@3 g#4 [e4,g#4]@2 g#4@2 b4@2 c#5@2, f#3@7 g#3 [a3,a4], f#4@4 ~@5]/3", // E A
  V: "b4@3 a#4 f#4 ~, [c#4,c#5]@5 ~", W: "[f#4,b4]@4 f#4@4 [a3,d4,a4]@3 c#4, f#3@2 ~", X: "[b3,b4]@3 d4 [a3,f#4]@6 ~@2",
  Y: "[g#3,c4]@2 [f#3,d4] ~ [g#4,c5]@2", Z: "[f#4,d5] ~ [f#4,a#4]@2 [d4,a4] ~",
  AA: "[[f#4,d#5]!24 [f#4,d#5]@4 ~@4 [f#4,a4,d5]@8 [e4,g4,c#5]@4 ~@4, d#4@7 ~@5]/2", // D#m D C#dim
  AB: "[f#4,b4]@4 f#4@4 d#4@3 c#4, d#4@2 ~", AC: "b3@2 ~ f#4 [f#4,a4]@4 [e4,g4]@4",
  AD: "[d#4,f#4] ~ [f#4,a4]@2 [e4,g4]@2", AE: "[d#4,f#4] ~ [a4,d5]@2 [g4,c#5]@2",
  AF: "[[f#4,b4]@4 ~@4 e3@2 e3@2 c4@2 c4@2 a4@2 a4@2 e5@2 e5@2 e5@2 e5@2 a4@2 a4@2 c4@2 c4@2 ~ e3@2 e3@2 e3@2 e3@2 c4@2 c4@2 a4@2 a4@2 e5@2 e5@2 e5@2 e5@2 a4@2 ~ a4@2 c4@2 c4@2 e3@2 e3@2 e3@2 e3@2 c4@2 c4@2 ~ a4@2 a4@2 e5@2 e5@2 [a4,e5]@4 d5, ~@8 a3@87 ~, ~@8 a4@8 ~@25 g4@8 f#4@8 a4@4 ~@5 g4@8 f#4@8 ~ e4@8 ~@5]/4", // B5 A5
  AG: "[~@3 c5@2 ~ c5@2 e4@2 e4@2 a3@2 a3@2 ~ c4@2 c4@2 c4@4 b3@4 ~ d4@26 e3@5 e3@9 e3@9 e3@5 f#3@4 f#3@9 f#3@9 f#3@5 e3@5 e3@9 ~@5 e3@5 ~@5 a2@9 ~@19, ~@3 g4@9 f#4@9 e4@9 a3@4 ~@22 b3@9 ~@19 c4@27 c4@19 ~@38]/7",
  AH: "[~@23 c4@5 ~@20]/2", AI: "~@6 c4@5 ~@13", AJ: "[~@4 [a3,c4,g4]@15 ~@5]/3", AK: "[~@5 [a3,f4]@45 e5@17 e5@5]/3",
  AL: "[e5@20 e5@3 e5@11 d5@4 c5@3 d5@4 e5@17 e5@6 e5@19 e5@3 e5@11 d5@4 c5@4 ~@11]/5",
})).s("gm_brass_section").gain(0.3).pan(0.3)

// chords · brass section · "Horn in F" · soft notes
const brass_section_soft = note(`<
  ~@9 A@3 B@5 ~ C ~@2 D@3 E@2 F ~@12 G H I@2 J K L@2 M@2 N@6 O@5 P@3 ~@3 Q@5 ~@19 R@3 ~@30 S T@3 U@3 V@2 W X@2 Y@3 Z@2
  AA@3 AB@2 ~@8 AC@5 AD@5 AE@4 AF@2 AG@2 AH@2 AI AJ@8 ~@5 AK@2 ~@3 AL@3 AM@7
>`.pickRestart({
  A: "[~@3 e3@4 f#3@4 g#3@4 a3@6 b3@2 c#4@4 ~@4 e4@12 d4@4 f#4@4 e4@4 d4@4 c#4@4 b3@9]/3",
  B: "[~ c#4@3 d4@3 e4@2 f#4@3 g#4@3 a4@8 ~@12 d4@4 [c#4,a4]@4 ~@4 a3@6 b3@2 c#4@4 e4@4 f#4@8 d5@8 b4@8 c#5@6 b4@2 a4@20 ~@5, ~@23 e4@12 ~@85, ~@31 g#4@8 ~@81]/5", // F#m
  C: "~@5 e4@4 ~@15", D: "[~ g3@6 e4@2 d4@2 d4@2 c4@2 ~@2 [b3,d4]@4 c4@6 ~@2 a3@2 ~@2 f4@2 ~]/3",
  E: "[~ g4@6 d4@2 b3@6 ~@9]/2", F: "~@18 d4@5 ~", G: "~ d4@5 c#4@2 ~@2 f#3@2", H: "d4 c#4 b3 a3 b3 c#4",
  I: "[e4 a4 g#4 f#4@2 d4@2 b4@2 b4@3]/2", J: "g#4 e4 ~@4", K: "~ d4@2 c#4 ~ a3",
  L: "[b3 c#4 e4 f#4 ~ d4@2 g#3@2 a3 ~@2]/2", M: "[~@3 f#4@4 e4 d4 c#4 e4 a4]/2",
  N: "[b4@4 c#5@4 ~@4 f#4@8 [d4,d5]@8 e4@4 d4@4 c#4@8 ~@4 b4@4 [d4,a4]@8 c#4@9 ~@4 b4@4 [d4,a4]@9 c#4@9 ~@5 b4@4 d4@9 ~ c4@9 [b3,b4]@21, ~@8 e4@12 ~@8 b4@8 c#5@12 ~@12 c#5@13 ~@13 c#5@14 ~@4 a4@19 ~@21, ~@44 e4@8 ~@17 e4@9 ~@17 e4@9 ~@40]/6", // D D5 B
  O: "[[g3,g4]@28 ~ [a3,a4]@7 [b3,b4]@7 [c4,c5]@11 [b3,b4]@10 [g3,g4]@43 [g3,g4]@7 [a3,a4]@6]/5", // G A B C B G A
  P: "[~ [b3,b4]@7 a4@11 e4@11 [b3,g4]@21 [c4,a4]@4 ~@17, ~@8 c4@21 ~@43]/3", // B Em F
  Q: "[~@31 f#4@78 ~@11, ~@17 [a3,c#4]@19 ~@84]/5", R: "[f3@7 g3 ~, f4@8 ~@6 g4 ~@3]/3", S: "~@5 e3@5 ~@5 e3@9",
  T: "[e3@9 e3@9 e3@9 ~ e3@9 e3@9 e3@4 f#3@5 f#3@9 f#3@8]/3",
  U: "[~ f#3@5 e3@4 e3@9 ~ e3@9 e3@9 e3@9 e3@9 e3@9 e3@7]/3", V: "[~@2 e3@9 ~ e3@4 f#3@5 f#3@9 f#3@9 f#3@5 e3@4]/2",
  W: "e3@9 e3@9 e3@5 ~", X: "[~@4 e3@9 e3@9 e3@9 e3@9 e3@8]/2",
  Y: "[~ e3@5 ~@4 e3@9 ~ e3@9 e3@9 e3@9 e3@9 e3@9 e3@7]/3", Z: "[~@2 e3@9 ~ e3@9 e3@9 e3@9 e3@5 f#3@4]/2",
  AA: "[f#3@9 f#3@9 f#3@5 e3@5 e3@9 e3@9 e3@9 e3@9 e3@8]/3", AB: "[~ e3@9 e3@9 ~ e3@9 e3@18 ~]/2",
  AC: "[~@13 g4@32 g4@9 g4@9 g4@5 a4@18 d4@9 [d4,e4]@5 [d4,e4]@9 [d4,e4]@9 [d4,e4]@2, ~@13 c4@55 c4@27 b3@25]/5", // Dsus2
  AD: "[~@2 [a3,c4]@27 ~ [b3,g4]@27 [a3,c4,f#4]@27 ~ [b3,g4]@13 e4@5 f#4@5 g4@4 [c4,a4]@8, ~@49 d4@7 ~@4]/5", // Am Em F#dim Em F
  AE: "[~ [c4,a4]@9 [d4,b4]@5 [c4,a4]@5 [b3,g4]@9 [c4,a4]@9 [d4,b4]@9 [c4,a4]@10 [c4,a4]@10 [d4,b4]@4 [c4,a4]@5 [b3,g4]@10 ~ [c4,a4]@9]/4", // F G F Em F G F G …
  AF: "[~ [d4,b4]@10 ~ [c4,a4]@17 ~@19]/2", AG: "[~@5 a3@7]/2", AH: "[~@5 f#3@11 b3@28 ~@4]/2", AI: "~@13 d4@11",
  AJ: "[g3@11 ~ c4@16 b3@17 a3@34 e3@33 a3@34 [e3,e4]@34 ~@12]/8", AK: "[~@2 e4@45 ~, ~@2 a3@39 ~@7]/2",
  AL: "[~@13 d5@3 e5@22 ~ g5@22 f5@11]/3", AM: "[~@101 [e3,c#4]@48 ~@19, ~@12 c#5@101 ~@55]/7",
})).s("gm_brass_section").gain(0.2).pan(0.3)

// other · trumpet · "F Trumpet"
const trumpet = note("<~@87 A ~@4 B C D ~@3 E ~@3 F G H ~@3 I@2 J@2 K L M@2 N O@4 ~@81>".pickRestart({
  A: "~ [a#4,d5]", B: "c#4@11 c#4", C: "f4@11 f4", D: "a#4 f4 ~", E: "~@2 [b4,d#5] ~@3", F: "d4@11 d4", G: "f#4@11 f#4",
  H: "b4 f#4 ~", I: "[b4@7 ~ d5@2 c#5 ~]/2", J: "[b4@7 ~ d5@2 c#5@2]/2", K: "b4 ~ d5@2 c#5@2", L: "b4 ~ f#5@2 e5@2",
  M: "[d#5@4 ~@4 a5@33 g5@7]/2", N: "~ f#5@8 a5@8 ~ g5@6",
  O: "[~@2 f#5@8 ~ e5@8 a5@8 g5@9 f#5@9 e5@9 d5@26 b4@9 ~@7]/4",
})).s("gm_trumpet").gain(0.4).pan(0.3)

// other · trumpet · "F Trumpet" · soft notes
const trumpet_soft = note("<~@55 A B@3 ~@22 C ~@120>".pickRestart({
  A: "[e3,c4,g4]@7 ~", B: "[~@19 [c3,a3,f4,c5]@11 [g3,d4,b4]@10 [e3,c4,g4]@21 ~@11]/3", C: "[e3,b3,g4,e5] ~@5",
})).s("gm_trumpet").gain(0.2).pan(0.3)
// … 98 more lines