Strudelify

Flight of the Bumblebee

Nikolai Andreyevitch Rimsky-Korsakov

KeyG majorTempo144 bpm
0:00/0:00
// Flight of the Bumblebee — Nikolai Andreyevitch Rimsky-Korsakov
// 144 bpm, 2/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5577715; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 101 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(144/2)

// 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 · french horn · "Horn in F"
const french_horn = note(`<
  A ~ B ~@3 C D C D E F G F H I J I K L M N O P Q P R S T@2 U V W V X Y Z@2 AA AB AC AD AE ~ AF AG AH AI AJ AK ~@8 AL AM
  AL AM AN AO AP AO AQ AR AS AR AT AU AV AW AX D AX AY AZ BA BB BC BD BA BB BC BE BF BG BH BI BJ ~ BK BL ~ C@3 BM BN
>`.pickRestart({
  A: "~ b3@2 g#4 ~@12, e3 ~@3", B: "~ b2@2 g#3 ~@12, e2 ~@3", C: "~ e3@2 c4 ~@12, a2 ~@3", D: "c4 ~@3 a3 ~@3",
  E: "~ e3@2 c4 ~@4 [f3,a3]@2 ~@6, a2 ~@3", F: "[e3,a3] ~@3 [d3,e3,g#3,b3] ~@3", G: "[c3,e3,a3] ~@3 [f3,a3] ~@3",
  H: "[c#3,g3,a3] ~@3 [d3,f#3,a3] ~@3", I: "[f3,a3,d4] ~@3 [d3,g3,b3] ~@3", J: "[f3,a3,d4] ~@7",
  K: "[f3,a3,d4] ~@3 [g3,a#3,d4] ~@3", L: "[f3,a3,d4] ~@3 [e3,g3,a3,c#4] ~@3", M: "[f3,a3,d4] ~@3 [d3,g3,a#3] ~@3",
  N: "[d3,f3,a3] ~@3 [c#3,e3,g3,a3] ~@3", O: "~ a3 b3 a3 b3 a3 b3 a3, [d3,f3] ~@3",
  P: "a#3 g#3 a#3 g#3 a#3 g#3 a#3 g#3", Q: "b3 a3 b3 a3 b3 a3 b3 a3", R: "a3 ~ [g#3,a#3] ~",
  S: "a3 [g#3,a#3] [g3,b3] [f#3,c4]", T: "[f3,c#4]/2", U: "~ d4 e4 d4 e4 d4 e4 d4, f#3 ~@3",
  V: "d#4 c#4 d#4 c#4 d#4 c#4 d#4 c#4", W: "e4 d4 e4 d4 e4 d4 e4 d4", X: "d4 ~ [c#4,d#4] ~",
  Y: "d4 ~ [c#4,d#4] ~ [c4,e4] ~ [b3,f4] ~", Z: "[a#3,f#4]/2", AA: "[a#3,d4,g4] ~@7",
  AB: "[a#3,d4,g4] ~@3 [c4,d#4,g4] ~@3", AC: "[a#3,d4,g4] ~@3 [f#3,c4,d#4] ~@3", AD: "[g3,a#3,d4] ~@3 [f3,a3,d4] ~@3",
  AE: "[e3,g#3,e4] ~@7", AF: "~@4 e4 ~ c4 ~", AG: "a3 ~ f3 ~ a3 ~ c4 ~", AH: "e4@4 e4 ~ c4 ~", AI: "a3 f3 a3 c4",
  AJ: "e4 d#4 d4 c#4 d4 c#4 c4 b3", AK: "c4 b3 a#3 a3 g#3 g3 f#3 f3", AL: "~ e4@2 c5 ~@12, a3 ~@3", AM: "c5 ~@3 a4 ~@3",
  AN: "~ e4@2 c5 ~@4 [f4,a4]@2 ~@6, a3 ~@3", AO: "[e4,a4] ~@3 [d4,e4,g#4,b4] ~@3", AP: "[c4,e4,a4] ~@3 [f4,a4] ~@3",
  AQ: "[c#4,g4,a4] ~@3 [d4,f4,a4] ~@3", AR: "[f4,a4,d5] ~@3 [d4,g4,b4] ~@3", AS: "[f4,a4,d5] ~@7",
  AT: "[f4,a4,d5] ~@3 [g4,a#4,d5] ~@3", AU: "[f4,a4,d5] ~@3 [e4,g4,a4,c#5] ~@3", AV: "[f4,a4,d5] ~@3 [f3,a3,d4] ~@3",
  AW: "[e3,a3,c4] ~@3 [e3,g#3,b3] ~@3", AX: "[a2,e3] ~ [e3,c4] ~@5", AY: "[a3,c4,e4] ~@3 [f#3,a3,d4] ~@3",
  AZ: "[a3,c4,e4] ~@3 a4 ~ f4 ~", BA: "d4 ~ b3 ~ d4 ~ f4 ~", BB: "[c4,e4,a4] ~@7", BC: "[e3,g#3,d4,e4] ~@7",
  BD: "~@4 a4 ~ f4 ~", BE: "~ e4@2 c5 ~@4 [a3,c#4,b4]@2 ~@6, a3 ~@3", BF: "[a3,d4,f4] ~@7",
  BG: "~ e3@2 c4 ~@4 [a2,c#3,g3]@2 ~@6, a2 ~@3", BH: "[a2,d3,f3] ~@7", BI: "a2 ~@3 [g#3,a#3] ~@3",
  BJ: "a2 a3 g3 a3 ~ a3 ~ a3, ~ g#3 g3 f3", BK: "e3 e4 ~ e4 ~ e4 ~ e4, ~ d4!2 b3", BL: "a3 ~@7",
  BM: "~ c4@2 e4 ~@12, a3 ~@3", BN: "[a1,a2] ~@7",
})).s("gm_french_horn").gain(0.3)

// chords · french horn · "Horn in F" · soft notes · Am
const french_horn_soft = note(`<
  ~@50
  [e3 f3 e3 d#3 e3 f3 e3 d#3]!4
  [e3 f3 f#3 g3 g#3 a3 a#3 b3]
  ~@27
  [[a3,c4,e4] ~@7]
  ~@18
>`).s("gm_french_horn").gain(0.2)

stack(french_horn, french_horn_soft)