Strudelify

Every Snowflake Falls a Different Way

Tyler Shropshire

KeyB♭ majorTempo80 bpm
0:00/0:00
// Every Snowflake Falls a Different Way — Tyler Shropshire
// 80 bpm, 4/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 32, 4/4 at bar 35, 3/4 at bar 97, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: ch 3 "Flute" named as a pipe, played on flute (its muted trumpet patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5830917; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 146 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/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.

// chords · flute
const flute = note(`<
  ~@12 A B C B D E F G H I J K L M N O P@2 Q ~@24 R S T@3 U V@2 ~@14 W@5 X@8 ~@24 Y@2 Z AA AB@2 AC@7 AD@8 ~@11
>`.pickRestart({
  A: "~@3 bb5 d6@2 bb5@2 eb6@3 d6 f6 eb6 d6@2", B: "c6 ~@7", C: "~@6 bb5@2 d6@4 bb5@4 eb6@6 d6@2 f6 g6 f6 eb6 d6@4",
  D: "~@3 [d5,d6] [c5,c6]@2 [bb4,bb5]@2 [a4,a5]@3 [d5,d6] [bb4,bb5] [a4,a5] [g4,g5]@2", // D C Bb A D Bb A G
  E: "[eb4,eb5]@4 [f4,f5] [g4,g5] [f4,f5] [eb4,eb5] [f4,f5]@4 [g4,g5]@4 [a4,a5]@6 [g4,g5]@2 [a4,a5]@4 [bb4,bb5]@2 [c5,c6] [bb4,bb5]", // Eb F G F Eb F G A …
  F: "[a4,a5]@2 ~ [d5,d6] [c5,c6]@2 [bb4,bb5]@2 [a4,a5]@3 [d5,d6] [bb4,bb5] [a4,a5] [g4,g5]@2", // A D C Bb A D Bb A …
  G: "[eb4,eb5]@2 [g4,g5] [a4,a5] [bb4,bb5] [a4,a5] [g4,g5] [f4,f5] eb5 f5 g5 a5 bb5 a5 g5 f5 eb5 f5 g5 a5 f5 g5 a5 bb5 g5 a5 bb5 c6 a5 bb5 [d5,c6] [c5,d6], ~@4 g4@2 a4@2 c5@3 bb4 d5@3 ~", // Eb G A Bb A G F D7 …
  H: "[c5,c6]@2 [bb4,bb5]@5 [d5,d6]", I: "[bb4,bb5]@6 [a4,a5] [bb4,bb5] [a4,a5]@4 [f4,f5]@3 [g4,g5]",
  J: "[a4,a5]@6 [bb4,bb5] [c5,c6] [d5,d6]@3 [c5,c6]!2 [d5,d6]@2 [bb4,bb5]", // A Bb C D C D Bb
  K: "[a4,a5]@6 [bb4,bb5] [c5,c6] [bb4,bb5]@4 [bb4,bb5]@2 [a4,a5]@2 [g4,g5]@16", // A Bb C Bb A G
  L: "~@2 [bb4,bb5] [a4,a5] [a4,a5]@2 [bb4,bb5] [a4,a5] [a4,a5]@6 [d5,d6]@2", // Bb A Bb A D
  M: "[bb4,bb5]@6 [c5,c6] [bb4,bb5] [a4,a5]@4 [f4,f5]@3 [g4,g5]", // Bb C Bb A F G
  N: "[a4,a5]@6 [d5,d6]@2 [bb4,bb5] [d5,d6]@2 [bb4,bb5]@4 [bb4,bb5]", O: "[bb4,bb5]",
  P: "[~@7 [bb4,bb5] [bb4,bb5]@24]/2", Q: "[bb4,bb5]@5 ~@3", R: "~@15 eb4@8 ~ bb4@6 g4@2",
  S: "f4@13 g4@2 f4@2 eb4@8 g4@6 ~", T: "[ab4 g4 ~@14 d4@2 ~ d4@6 bb3@2 d4@4 f4@4 g4@34 ~@27, ~@2 f4@29 ~@65]/3",
  U: "~@3 b4", V: "[b4@17 [b4,g5]@8 [b4,ab5]@25 ~@14]/2",
  W: "[~@16 eb5@2 ~ eb5@4 d5@4 [g4,c5]@4 g4@4 f4@6 ~ g4 f4 eb4@8 g4@17 g4@13 ab4@2 [bb4,eb5]@2 eb5@4 d5@4 c5@4 ~ g4@4 g4@12 ab4@2 g4@2 ~ [f4,ab4]@16 g4@13 [eb4,eb5]@4 [f4,f5]@7, ~@19 ab4@8 ~@8 ab4@32 ~@19 ab4@8 bb4@8 ~ bb4@17 ~@40]/5", // C5 Eb5 Fm Eb F
  X: "[~@2 [eb4,eb5]@8 f4@6 g4 f4 ~ eb4@8 [g4,eb5]@17 [g4,g5]@8 [f4,f5]@8 ~ [f4,f5]@8 [eb4,eb5]@6 [f4,f5]@2 eb4@25 ~ f4@4 g4@4 f4@17 eb4@8 g4@8 ~ f4@17 g4@8 bb4@8 ~ c5@33 c5@16 ~@28, ~@10 f5@17 ~@50 eb5@32 ~@2 c5@32 ~@2 c5@32 ~@79]/8", // Eb Cm G F Eb F
  Y: "[~@11 bb5@2 d6@4 bb5@4 eb6@6 d6@2 f6@2 eb6@2 d6@4 c6@4 ~@23]/2", Z: "~@11 bb5@2 d6@4 bb5@4 eb6@6 d6@2 f6 g6 f6",
  AA: "eb6 d6@4 c6@4 ~@23",
  AB: "[~@11 [d5,d6]@2 [c5,c6]@4 [bb4,bb5]@4 [a4,a5]@6 [d5,d6]@2 [bb4,bb5]@2 [a4,a5]@2 [g4,g5]@4 [eb4,eb5]@4 [f4,f5] [g4,g5] [f4,f5] [eb4,eb5] [f4,f5]@4 [g4,g5]@4 [a4,a5]@6 [g4,g5]@2 [a4,a5]@3]/2", // D C Bb A D Bb A G …
  AC: "[~ [bb4,bb5]@2 [c5,c6] [bb4,bb5] [a4,a5]@4 ~@2 [d5,d6]@2 [c5,c6]@4 [bb4,bb5]@4 [a4,a5]@6 [d5,d6]@2 [bb4,bb5]@2 [a4,a5]@2 [g4,g5]@4 [eb4,eb5]@2 [g4,g5] [a4,a5] [bb4,bb5] [a4,a5] [g4,g5] [f4,f5] eb5 f5 g5 a5 bb5 a5 g5 f5 eb5 f5 g5 a5 f5 g5 a5 bb5 g5 a5 bb5 c6 a5 bb5 [d5,c6] [c5,d6] c6@8 c6@4 eb6 f6 g6 a6 bb6@8 ~@4 d5@4 f6 g6 f6 g6 f6 g6 f6 g6 f6 g6 f6 g6 f6 g6 f6 g6 f6 g6 f6 g6 f6 g6 f6 g6 f6 g6 f6 g6 f6 g6 f6 g6 d5 eb5 g5 a5 ~ c6 d6 a6 c7@4 a5 c6 d6 a6 [d5,c7]@6 c5@2 c7 a6 d6 c6 ~ a5 g5 eb5 bb4 d5 f5 a5 ~ d6 [bb4,f6] [c5,a6] [bb4,bb6]@4 [bb4,bb6]@2 [a4,a6]@2 g6@4 ~@4 f6 g6 f6 g6 f6 g6 f6 g6 f6 e6 eb6 d6 db6 c6 b5 bb5 a5 ab5 g5 gb5 f5 e5 eb5 d5 db5 c5 b4 bb4 a4 ab4 g4 gb4 f4@3, ~@45 g4@4 a4@4 c5@6 bb4@2 d5@6 ~@2 c5@16 bb4@12 ~@4 bb4@12 a4@2 bb4@2 a4@8 f4@6 g4@2 a4@12 bb4@2 c5@2 ~@8 c5@2 d5@4 bb4@2 a4@6 ~@10 g4@16 ~@4 bb4@2 a4@2 a4@4 bb4@2 a4@2 a4@4 ~@7, ~@93 a6@8 ~@123]/7", // Bb C Bb A D C Bb A …
  AD: "[~ d5@4 f4 gb4 g4 ab4 a4 bb4 b4 c5!2 db5 d5 eb5 e5 f5 gb5 g5 ab5 a5 bb5 b5 c6 db6 d6 eb6 f6 g6 f6 g6 f6 g6 g4@2 f6 g6 f6 d6 a5 f5 a5 d6 f6 g6 f6 d6 a5 f5 a5 d6 f6 g6 f6 d6 bb5 f5 bb5 d6 f6 g6 f6 d6 bb5 f5 bb5 d6 f6 g6 f6 d6 bb5 f5 bb5 d6 f6 g6 f6 g6 ~@4 f6 g6 f6 d6 bb5 f5 bb5 d6 f6 g6 f6 g6 ~@18 [bb4,bb5]@2 [bb4,bb5]@48 bb5@12 c6@4 bb5@8 g5@8 [g4,g5]@32 ~@27, ~@5 bb4@5 ~@7 c5@2 bb4@2 a4@8 f4@6 ~@2 a4@12 d5@4 bb4@2 d5@4 bb4@8 bb4@2 bb4@32 ~@64 bb4@32 ~@59]/8", // Bb G
})).s("gm_flute").gain(0.3)

// chords · flute · soft notes
const flute_soft = note(`<
  ~@12 A B A B ~@33 C ~ D@5 E ~@5 F@2 ~@25 G@7 H@4 ~@4 I@3 J@5 K@2 L@5 ~@15 M@7 ~ N@3 ~
>`.pickRestart({
  A: "~ f4 eb4 f4", B: "~@8 bb5 c6 bb5 c6 bb5 c6 bb5 c6 bb5 c6 bb5 c6 bb5 c6 bb5 c6 bb5 c6 bb5 c6 bb5 c6 bb5 c6, f4",
  C: "~@5 [f4,bb4] [g4,c5] [f4,bb4] [g4,c5] [f4,bb4] [g4,c5] [f4,bb4] [g4,c5] [f4,g4] ~ [g4,ab4] [f4,g4] [g4,ab4] [f4,g4] [g4,ab4] [f4,g4] [g4,ab4] ~@10", // Bb5 C5 Bb5 C5 Bb5 C5 Bb5 C5 …
  D: "[~@8 [f4,bb4] [g4,c5] ~ [f4,bb4] [g4,c5] [f4,bb4] [g4,c5] [f4,bb4] [g4,c5] [c4,c5]@8 [eb4,c5]@17 [d4,bb4]@8 ~ [eb4,g4]@6 f4@2 [c4,eb4]@17 f4@8 g4@8 ~ f4@16 ab4@8 ~ f4@8 g4@4 ~ ab4@4 g4@23 ~@2, ~@76 c4@17 d4@33 eb4@17 ~@17]/5", // Bb5 C5 Bb5 C5 Bb5 C5 Bb5 C5 …
  E: "eb4@17 ~@15", F: "[~@19 g5@40 ~@5]/2",
  G: "[~@68 eb5@4 d5@8 ~ bb4@8 bb4@16 ~ g4 g4@7 ~ bb4@8 d5@13 eb5@4 d5@8 [c4,bb4]@8 ~ eb4@25 f4@4 eb4@4 d4@34, ~@5 d5@60 ~@24 eb4@34 c4@25 ~@76, ~@56 g4@34 ~@17 ab4 ~@49 bb4@64 ~@3]/7", // C7
  H: "[~@21 bb4@8 ~ f4@8 d4@8 ~ [f4,g4] f4@11 eb4@4 c4@8 ~ bb3@51 ~@5]/4", // Fsus2
  I: "[~@24 f5@16 g5@8 f5@15 ~ a5@8 f5@6 g5@2 [c5,a5]@16, ~@3 bb4@3 c5@4 ~@2]/3", // F
  J: "[[c5,a5]@8 [c5,bb5]@8 a5@15 ~ g5@15 ~ f5@15 ~ eb5@8 f5@6 eb5@2 f5@15 ~ a5@8 f5@6 g5@2 a5@15 ~ bb5@8 [d5,a5]@6 bb5@2 [d5,bb5]@16, ~@2 d5@4 bb4@4 c5@4 c5@3 ~@3]/5", // F C7 D5 Gm
  K: "[a5@4 c6@3 bb5 [d5,bb5]@16 ~@8, c5 ~@3]/2", // Gm
  L: "[~@13 d5@8 bb4@8 g4@8 ~@8 bb5 c6 bb5 c6 bb5 c6 bb5 c6 bb5 c6 bb5 c6 bb5 c6 bb5 c6 bb5 c6 bb5 c6 bb5 c6 bb5 c6 ~@8 d5@8 bb4@8 g4@8 ~@8 bb5 c6 bb5 c6 bb5 c6 bb5 c6 bb5 c6 bb5 c6 bb5 c6 bb5 c6 bb5 c6 bb5 c6 bb5 c6 bb5 c6 ~@27, ~@37 f4@32 ~@32 f4@32 ~@27]/5",
  M: "[~@5 f4@32 f4@32 [d4,bb4]@32 [eb4,bb4]@32 [bb4,d5]@32 c5@16 a4@16 ~@27, ~@165 bb4@30 ~@29]/7", // Gm Eb5 Bb
  N: "[~@5 d5@85 ~@6, ~@5 bb5@81 ~@10]/3",
})).s("gm_flute").gain(0.2)

// other · flute
const flute_2 = note(`<
  ~@16 A B C D E F G H I J K L M L N ~@29 O P@2 ~@14 Q@5 R@8 ~@28 S@2 T@3 U@4 V@4 W@4 ~@11
>`.pickRestart({
  A: "~@3 d5 c5@2 bb4@2 a4@3 d5 bb4 a4 g4@2", B: "eb4@4 f4 g4 f4 eb4 f4@4 g4@4 a4@6 g4@2 a4@4 bb4@2 c5 bb4",
  C: "a4@2 ~ d5 c5@2 bb4@2 a4@3 d5 bb4 a4 g4@2", D: "eb4@2 g4 a4 bb4 a4 g4 f4 g4@4 a4@4 c5@6 bb4@2 d5@6 d5 c5",
  E: "c5@8 d5@23 ~", F: "bb4@11 ~ a4@2 bb4@2 a4@8 f4@6 g4@2", G: "a4@11 ~ bb4@2 c5@2 d5@6 c5@2 c5@2 d5@4 bb4@2",
  H: "a4@6 bb4 c5 bb4@4 bb4@2 a4@2 g4@15 ~", I: "~@4 bb4@2 a4@2 a4@4 bb4@2 a4@2 a4@11 ~ d5@4",
  J: "bb4@6 c5 bb4 a4@4 f4@3 g4", K: "a4@6 d5@2 bb4 d5@2 bb4@4 bb4", L: "d5@15 ~", M: "~@7 eb5 eb5@4 d5@4",
  N: "d5@19 ~@13", O: "~@3 d5", P: "[f5@17 d5@8 f5@24 ~@15]/2",
  Q: "[~@16 eb5@2 ~ eb5@4 d5@4 c5@4 g4@4 ab4@32 ~@17 eb5@2 eb5@4 d5@4 c5@4 ~ g4@4 g4@17 f4@16 g4@8 ~@5 eb5@4 eb5@7]/5",
  R: "[~@2 bb4@8 ab4@8 ~ f4@8 g4@16 ~ bb4@24 ~ b4@8 c5@32 ~@2 ab4@32 ~@2 bb4@32 ~@2 g4@32 ~ g4@16 ~ g4@16 ~@11]/8",
  S: "[~@11 d5@2 c5@4 bb4@4 a4@6 d5@2 bb4@2 a4@2 g4@4 eb4@4 f4 g4 f4 eb4 f4@4 g4@4 a4@6 g4@2 a4@3]/2",
  T: "[~ bb4@2 c5 bb4 a4@4 ~@2 d5@2 c5@4 bb4@4 a4@6 d5@2 bb4@2 a4@2 g4@4 eb4@2 g4 a4 bb4 a4 g4 f4 g4@4 a4@4 c5@6 bb4@2 d5@6 d5 c5 c5@15 ~ bb4@11]/3",
  U: "[~ d5@4 bb4@11 ~ a4@2 bb4@2 a4@8 f4@6 g4@2 a4@11 ~ bb4@2 c5@2 d5@6 c5@2 c5@2 d5@4 bb4@2 a4@6 bb4 c5 bb4@4 bb4@2 a4@2 g4@15 ~@5 bb4@2 a4@2 a4@4 bb4@2 a4@2 a4@11]/4",
  V: "[~ d5@4 bb4@12 c5@2 bb4@2 a4@8 f4@6 g4@2 a4@12 d5@4 bb4@2 d5@4 bb4@8 bb4@2 bb4@30 ~@16 eb5@2 eb5@5 d5@5 ~]/4",
  W: "[d5@5 d5@30 ~@2 d5@12 eb5@4 d5@8 bb4@8 f4@30 ~@29]/4",
})).s("gm_flute").gain(0.09)

// other · flute · soft notes
const flute_soft_2 = note(`<
  ~@12 A B A B ~@33 C ~ D@5 E F G@2 ~@30 H@6 ~@8 I@3 J@2 K@5 L@5 ~@17 M@5 ~ N@3 ~
>`.pickRestart({
  A: "~@8 bb4@8 bb4@15 ~", B: "a4@15 ~", C: "~@5 g4 ab4 g4 ab4 g4 ab4 g4 ab4 eb4 ~ f4 eb4 f4 eb4 f4 eb4 f4 ~@10",
  D: "[~@8 g4 ab4 ~ g4 ab4 g4 ab4 g4 ab4 ab4@8 g4@16 ~ f4@8 ~ g4@8 eb4@16 ~ eb4@16 ~ d4@16 f4@16 ~ eb4@32 ~@2]/5",
  E: "c4", F: "~ d4@15", G: "[~@3 d4@32 ~@29]/2", H: "[~@24 bb4@25 g4@8 g4@32 ~@2 g4@24 ~ g4@8 ~ f4@66 ~]/6",
  I: "[~@24 eb5@23 ~ d5@23 ~ d5@6 eb5@2 d5@15 ~]/3", J: "[d5@8 d5@8 g5@30 ~@2 eb5@15 ~]/2",
  K: "[eb5@15 ~ d5@23 ~ d5@6 d5@2 d5@23 ~ f5@8 f5@30 ~@2 f5@30 ~@18]/5",
  L: "[~@13 f5@8 d5@15 ~ a4@30 ~@10 f5@8 d5@15 ~ a4@30 ~@29]/5", M: "[~@5 f4@30 ~@2 g4@30 ~@2 f4@30 ~@2 f4@30 ~@29]/5",
  N: "[~@5 f5@81 ~@10]/3",
})).s("gm_flute").gain(0.06)

// other · bassoon
const bassoon = note(`<
  ~@13 A B C D E F G H I J K L M N O P@2 Q ~@27 R@3 S@2 ~@14 T U@8 ~@29 V@5 W@4 X@8 Y@6 ~@4 Z@3 ~
>`.pickRestart({
  A: "~@4 f3@4 a3@4 f3@3 bb3", B: "bb3", C: "~@4 a3@4 d4@4 a3@3 bb3", D: "a3@6 bb3 a3 g3@8",
  E: "g3@4 f3@4 f3@4 a3@3 f3", F: "a3 bb3", G: "bb3@2 a3 f3", H: "eb3 g3@3", I: "f3@4 d3 eb3 f3 g3 a3@16 a3@6 bb3@2",
  J: "a3@3 bb3", K: "bb3@3 bb2", L: "g3 eb3@3", M: "f3@4 d3 eb3 f3 g3 a3@24", N: "a3@2 bb3 a3", O: "f3@2 f3!2",
  P: "a2/2", Q: "bb2@5 ~@3", R: "[~@18 d3@2 d3@6 ~ g2@2 b2@42 b2@25]/3", S: "[b2@25 b2@25 ~@14]/2", T: "~@5 eb3@11",
  U: "[~@3 eb3@34 eb3@34 c3@33 c3@34 eb3@34 f3@25 g3@8 g3@34 eb3@17]/8",
  V: "[~@13 f3@8 a3@8 f3@6 bb3@2 bb3@32 ~@8 a3@8 d4@8 a3@6 bb3@2 a3@12 bb3@2 a3@2 g3@16 g3@8 f3@8 f3@8 a3@3]/5",
  W: "[~@3 f3@2 a3@16 bb3@16 bb3@16 a3@8 f3@8 eb3@8 g3@24 f3@4 d3 eb3 f3 g3 a3@16 a3@3]/4",
  X: "[~@3 bb3@2 a3@24 bb3@8 bb3@24 bb2@8 g3@8 eb3@24 f3@4 d3 eb3 f3 g3 a3@24 a3@16 bb3@8 a3@8 f3@16 f3@8 f3@8 bb2@59]/8",
  Y: "[~@5 f3@32 g3@32 f3@32 f3@32 f3@32 ~@27]/6", Z: "[~@5 d3@85 ~@6]/3",
})).s("gm_bassoon").gain(0.21)

// other · trumpet · "B♭ Trumpet"
const trumpet = note(`<
  ~@16 A B C D E F G B H F I J K L M ~@28 N O P@2 ~@14 Q@5 R@4 S T@3 ~@28 U@5 V@4 W@2 X@7 ~@10
>`.pickRestart({
  A: "~@3 a4", B: "a4 g4", C: "g4", D: "a4@2 g4!2", E: "f4@12 eb4 f4 g4 a4 bb4@8 a4@8", F: "f4@8 a4@4 f4@3 g4",
  G: "a4@2 a4 bb4", H: "f4@8 eb4@4 f4@3 eb4", I: "a4@8 bb4@4 a4@3 bb4", J: "bb4@8 a4@4 c5@3 bb4",
  K: "bb4@7 eb4 eb4@4 d4@4", L: "bb3 eb4", M: "d4@5 ~@3", N: "~@10 f4 f4@3 d4 f4", O: "~ g4@3 ab4@3 ab4@17 g4@8",
  P: "[ab4@17 g4@8 ab4@25 ~@14]/2",
  Q: "[~@19 ab4@8 g4@8 f4@6 ~ g4 f4 eb4@8 g4@17 g4@13 ab4@2 bb4@2 ab4@8 bb4@8 ~ g4@12 ab4@2 g4@2 ~ f4@16 g4@13 eb4@4 f4@7]/5",
  R: "[~@2 eb4@8 f4@6 g4 f4 ~ eb4@8 g4@17 g4@8 f4@8 ~ f4@8 eb4@6 f4@2 eb4@25 ~ f4@4 g4@4 f4@17]/4",
  S: "eb4@8 g4@8 ~ f4@15", T: "[~@2 g4@8 bb4@8 ~ c5@67 ~@10]/3",
  U: "[~@29 a4@8 a4@16 g4@16 g4@32 a4@16 g4@8 bb4@8 c5@16 bb4@11]/5",
  V: "[~ d5@4 bb4@12 a4@2 bb4@2 a4@8 f4@6 g4@2 a4@12 bb4@2 c5@2 d5@6 c5@2 c5@2 d5@4 bb4@2 a4@6 bb4 c5 bb4@4 bb4@2 a4@2 g4@16 ~@4 bb4@2 a4@2 a4@4 bb4@2 a4@2 a4@11]/4",
  W: "[~ d5@4 bb4@12 c5@2 bb4@2 a4@8 f4@6 g4@2 a4@12 d5@4 bb4@2 d5@4 bb4@5]/2",
  X: "[~@3 bb4@2 bb4@32 bb4@64 bb4@16 d4@8 eb4@8 eb4@32 d4@32 c4@16 a3@8 ~@3]/7",
})).s("gm_trumpet").gain(0.11)

// other · trumpet · "B♭ Trumpet" · soft notes
const trumpet_soft = note("<~@12 A B C B D ~@45 E@2 ~@50 F@5 ~@16 G@6 ~ H@3 ~>".pickRestart({
  A: "~ f4", B: "f4@12 f4@3 f4", C: "f4@3 f4", D: "g4@3 ~", E: "[~@19 g4@42 ~@3]/2",
  F: "[~@5 f4@16 f4@16 f4@24 f4@6 f4@2 f4@24 f4@8 f4@24 f4@6 f4@2 g4@24 ~@3]/5",
  G: "[~@29 c4@8 bb3@32 ~@24 bb4@8 bb4@14 f4@2 f4@8 d4@8 f4@14 eb4@2 c4@16 ~@27]/6", H: "[~@5 bb3@85 ~@6]/3",
})).s("gm_trumpet").gain(0.06)

// other · french horn · "Horn in F"
const french_horn = note(`<
  ~@16 A B C D E F G B H I J K L M N ~@28 O P Q@2 ~@14 R@4 S T@4 U V@3 ~@28 W@6 X@7 Y@6 ~@9
>`.pickRestart({
  A: "~@3 a4", B: "a4 g4", C: "g4", D: "a4@2 g4!2", E: "f4@12 eb4 f4 g4 a4 bb4@8 a4@8", F: "f4@8 a4@4 f4@3 g4",
  G: "a4@2 a4 bb4", H: "f4 eb4", I: "d4@12 d4@3 d4", J: "d4@3 f4", K: "f4", L: "f4@7 eb4 eb4@4 d4@4", M: "bb3 eb4",
  N: "d4@5 ~@3", O: "~@10 f4 f4@3 d4 f4", P: "~ g4@3 ab4@3 ab4@17 g4@8", Q: "[ab4@17 g4@8 ab4@25 ~@14]/2",
  R: "[~@19 ab4@8 g4@8 f4@6 ~ g4 f4 eb4@8 g4@8 ~ ab4@8 g4@13 ab4@2 bb4@2 ab4@8 bb4@8 ~ g4@12 ab4@2 g4@2 ~ f4@6 f4 gb4]/4",
  S: "g4@8 g4@13 eb4@4 f4@7",
  T: "[~@2 eb4@8 f4@6 g4 f4 ~ eb4@8 g4@17 g4@8 f4@8 ~ f4@8 eb4@6 f4@2 eb4@25 ~ f4@4 g4@4 f4@17]/4",
  U: "eb4@8 g4@8 ~ f4@15", V: "[~@2 g4@8 bb4@8 ~ c5@16 bb4@8 ~ d5@8 d5@34 ~@10]/3",
  W: "[~@29 a4@8 a4@16 g4@16 g4@32 a4@16 g4@8 g4@8 f4@12 eb4 f4 g4 a4 bb4@8 a4@8 f4@16 a4@8 f4@3]/6",
  X: "[~@3 g4@2 a4@16 a4@8 bb4@8 a4@16 g4@16 f4@16 eb4@16 d4@24 d4@6 d4@2 d4@24 f4@8 f4@32 f4@14 eb4@2 eb4@5 d4@5 ~]/7",
  Y: "[bb3@5 bb3@16 eb4@16 d4@16 d4@8 eb4@8 eb4@32 d4@32 c4@16 a3@8 c4@8 ~@27]/6",
})).s("gm_french_horn").gain(0.48)

// other · french horn · "Horn in F" · soft notes
const french_horn_soft = note(`<
  ~@4 A B C D E F G H I J K J L ~@45 M@4 N O P@4 Q@2 ~@40 R@5 ~@17 S@7 T@2 ~
>`.pickRestart({
  A: "~ f4@2 g4", B: "f4@8 a4@4 f4@3 g4", C: "a4@2 a4 bb4", D: "a4 g4", E: "f4 eb4", F: "d4@12 d4@3 d4", G: "d4@3 f4",
  H: "f4", I: "f4!2", J: "f4@12 f4@3 f4", K: "f4@3 f4", L: "g4@3 ~",
  M: "[~@19 g4@40 g4@2 e4@8 c4@8 d4@17 f4@8 ~ ab4@8 g4@8 ~@5 g4@2 ab4@2]/4", N: "g4@8 bb4@6 ~ c5 bb4 ab4@12 bb4@2 ~",
  O: "ab4@2 g4@8 f4@6 f4 gb4 ~ g4@13",
  P: "[~ g4@2 e4@8 ~ c4@8 bb3@8 ~ d4@8 f4@13 eb4@4 db4@8 c4@6 ~ bb3@2 c4@8 bb3@6 bb3 ~ b3 c4@21 ~@4 d4@8 c4@7]/4",
  Q: "[~@2 bb3@6 ab3@2 bb3@8 ~ ab3@8 bb3@34 ~@3]/2",
  R: "[~@5 f4@24 f4@8 f4@24 f4@6 f4@2 f4@24 f4@8 f4@24 f4@6 f4@2 g4@24 ~@3]/5",
  S: "[~@5 bb3@32 ~@24 bb4@8 bb4@14 f4@2 f4@8 d4@8 f4@14 eb4@2 c4@16 bb3@64 bb3@19 eb4@2 eb4@6]/7",
  T: "[~ d4@7 ~ bb3@7 bb3@43 ~@5]/2",
})).s("gm_french_horn").gain(0.32)

// other · french horn · "Horn in F"
const french_horn_2 = note(`<
  ~@16 A B C D E F G H I J K L M@2 N ~@28 O P Q@2 ~@13 R S T@6 U@6 ~@28 V@5 W@7 X@4 ~@8 Y Z ~@2
>`.pickRestart({
  A: "~ a3", B: "bb3@2 a3 d4", C: "bb3@7 d4 c4@4 bb3@4", D: "bb3@2 a3 c4", E: "d4@4 eb4@8 eb4@3 d4", F: "d4@3 d4",
  G: "d4@2 d4!2", H: "g4", I: "eb4@8 eb4@4 f4@3 eb4", J: "f4@8 a4@4 f4@3 g4", K: "a4@8 bb4@4 a4@3 bb4",
  L: "bb4@8 a4@4 c5@3 bb4", M: "[bb4@3 ~ f4@6 a4@6]/2", N: "f4@5 ~@3", O: "~@10 d4 d4@3 b3 d4", P: "~ d4@3 d4@3 d4@25",
  Q: "[d4@25 d4@25 ~@14]/2", R: "~@25 f4@7", S: "~@2 g4@17 g4@8 eb4@5",
  T: "[~@3 eb4@34 g4@17 g4@8 eb4@8 ~ eb4@33 g4@17 g4@17 eb4@34 d4@20]/6",
  U: "[~@5 eb4@8 eb4@34 eb4@34 d4@34 eb4@33 eb4@17 eb4@17 ~@10]/6",
  V: "[~@21 a3@16 bb3@16 a3@8 d4@8 bb3@14 d4@2 c4@8 bb3@8 bb3@16 a3@8 c4@8 d4@8 eb4@16 eb4@3]/5",
  W: "[~@3 d4@2 d4@24 d4@8 d4@16 d4@8 d4@8 g4@32 eb4@16 eb4@8 f4@6 eb4@2 f4@16 a4@8 f4@6 g4@2 a4@16 bb4@8 a4@6 bb4@2 bb4@16 a4@8 c5@3]/7",
  X: "[~@3 bb4@2 bb4@12 ~@4 f4@24 a4@24 bb4@32 ~@27]/4", Y: "~@12 d4 d4@3", Z: "~ bb3@7 ~ f3@7 ~@16",
})).s("gm_french_horn").gain(0.33)

// other · french horn · "Horn in F" · soft notes
const french_horn_soft_2 = note("<~@4 A B C D E F G H I J K L M ~@97 N@5 ~@23 O P@2 ~>".pickRestart({
  A: "~ eb4@3", B: "d4@12 d4@3 eb4", C: "d4@2 d4!2", D: "g4", E: "eb4@8 eb4@4 f4@3 eb4", F: "f4@8 a4@4 f4@3 g4",
  G: "a4@8 bb4@4 a4@3 bb4", H: "bb4@8 a4@4 c5@3 bb4", I: "bb4", J: "~@4 a3@8 a3@3 a3", K: "bb3@3 bb3",
  L: "a3@4 a3@4 c4@4 a3@3 bb3", M: "bb3 ~",
  N: "[~@5 bb3@24 bb3@8 c4@24 a3@6 a3@2 bb3@24 bb3@8 a3@8 a3@8 c4@8 a3@6 bb3@2 bb3@16 ~@11]/5", O: "~@5 f3@19 ~@8",
  P: "[~@16 f3@43 ~@5]/2",
})).s("gm_french_horn").gain(0.22)

// other · french horn · "Horn in F"
const french_horn_3 = note(`<
  ~@17 A B C D E F G H I J K L M N ~@27 O@3 P@2 ~@13 Q R S@6 T@6 ~@29 U@4 V@8 W@6 ~@9
>`.pickRestart({
  A: "bb3 a3", B: "d4@7 d4 d4@4 d4@4", C: "bb3 g3 a3!2", D: "bb3@4 bb3@8 bb3@3 bb3", E: "c4@7 d4 c4@4 c4@4",
  F: "c4@2 c4!2", G: "d4", H: "bb3", I: "c4", J: "c4@3 d4", K: "d4 c4", L: "d4@7 d4 d4@4 bb3@4", M: "a3 f3@2 a3",
  N: "bb3@5 ~@3", O: "[~@29 b3@2 c4@3 d4@3 d4@34 d4@25]/3", P: "[d4@25 d4@25 ~@14]/2", Q: "~@17 d4@15", R: "~ eb4@15",
  S: "[~@3 c4@34 eb4@34 c4@33 eb4@34 c4@34 c4@20]/6",
  T: "[~@5 d4@8 c4@8 ~ c4@6 d4@2 c4@17 c4@34 c4@34 c4@33 c4@17 c4@17 ~@10]/6",
  U: "[~@5 bb3@16 a3@16 d4@14 d4@2 d4@8 d4@8 bb3@8 g3@8 a3@8 a3@8 bb3@8 bb3@16 bb3@3]/4",
  V: "[~@3 bb3@2 c4@14 d4@2 c4@8 c4@8 c4@16 c4@8 c4@8 d4@32 bb3@32 c4@32 c4@24 d4@8 d4@16 c4@16 d4@14 d4@2 d4@5 bb3@5 ~]/8",
  W: "[bb3@5 bb3@8 f3@16 a3@8 bb3@32 bb3@32 bb3@32 bb3@16 a3@16 ~@27]/6",
})).s("gm_french_horn").gain(0.34)

// other · french horn · "Horn in F" · soft notes
// … 175 more lines