Strudelify

Sonic Boom (Snake Pit) for Horn

brcfrmn

KeyE♭ majorTempo120 bpm
0:00/0:00
// Sonic Boom (Snake Pit) for Horn — brcfrmn
// 120 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5850022; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 65 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · french horn · "Horn in F"
const french_horn = note(`<
  ~@4 A B C D A E F G A H A I A E F I A E C D A E F G A E F I A E C D A E F J A B K L ~ M A E F I A B C D A E F I A B C
  D N O P
>`.pickRestart({
  A: "f4@4 ~@4 f4@3 f4@3 f4@2", B: "g4@4 ~@6 g4 g4@3 g4@2", C: "ab4@4 ~@4 ab4@3 ab4@3 ab4@2",
  D: "bb4@4 ~@4 bb4 ~ bb4 ~ c5 bb4 ab4@2", E: "eb4@4 ~@6 eb4 eb4@3 eb4@2", F: "db4@4 ~@4 db4@3 db4@3 db4@2",
  G: "c4@4 ~@4 bb4@2 bb4@2 c5 bb4 ab4@2", H: "g4@4 ~@6 eb4 eb4@3 eb4@2", I: "c4@4 ~@4 bb4 ~ bb4 ~ c5 bb4 ab4@2",
  J: "c4@4 [c5,ab5]@4 [ab4,a4,bb4,eb5,e5] [b4,c5,db5,d5,eb5,e5,f5,gb5] [f5,gb5,g5] ~@5, ~@5 [c5,ab5]@3", // Fm Absus2 Fm
  K: "ab4@4 ~@4 ab4@3 ab4@3 [ab4,c5]@2", // Ab
  L: "c5@4 [c5,ab5]@4 [ab4,a4,bb4,eb5,e5] [b4,c5,db5,d5,eb5,e5,f5,gb5] [f5,gb5,g5] ~@5, ~@5 [c5,ab5]@3", // Fm Absus2 Fm
  M: "~@8 bb4 ~ bb4 ~ c5 bb4 ab4@2", N: "bb4 ~ bb4 ~ c5 bb4 ab4@2 bb4 ~ bb4 ~ c5 bb4 ab4@2", O: "f4", P: "f4 ~@7",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "Horn in F"
const french_horn_2 = note(`<
  A B C D A B C D A B C E A B C D A B C D A B C D A B C E A B C D A B F G A B C D A B C D ~ H A B C D A B C D A B C D A
  B C D I J K
>`.pickRestart({
  A: "f4@4 ~@4 f4@3 f4@3 f4@2", B: "eb4@4 ~@6 eb4 eb4@3 eb4@2", C: "db4@4 ~@4 db4@3 db4@3 db4@2",
  D: "c4@4 ~@4 bb4 ~ bb4 ~ c5 bb4 ab4@2", E: "c4@4 ~@4 bb4@2 bb4@2 c5 bb4 ab4@2", F: "ab4@4 ~@4 ab4@3 ab4@3 ab4@2",
  G: "bb4@4 ~@4 bb4 ~ bb4 ~ c5 bb4 ab4@2", H: "~@8 bb4 ~ bb4 ~ c5 bb4 ab4@2",
  I: "bb4 ~ bb4 ~ c5 bb4 ab4@2 bb4 ~ bb4 ~ c5 bb4 ab4@2", J: "f4", K: "f4 ~@7",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "Horn in F"
const french_horn_3 = note(`<
  A B C D A B C E A B C F A B C D A B C F A B C D A B C F A B C D A B C G A B C D A B C D ~ H A B C D A B C D A B C D A
  B C D I J K
>`.pickRestart({
  A: "f3@4 ~@4 f3@3 f3@3 f3@2", B: "eb3@4 ~@6 eb3 eb3@3 eb3@2", C: "db3@4 ~@4 db3@3 db3@3 db3@2",
  D: "c3@4 ~@4 bb3 ~ bb3 ~ c4 bb3 ab3@2", E: "c3@4 ~@4 bb3@2 bb3@2 c4 bb3 bb3@2",
  F: "c3@4 ~@4 bb3@2 bb3@2 c4 bb3 ab3@2", G: "c4@4 ~@4 bb4 ~ bb4 ~ c5 bb4 ab4@2", H: "~@8 bb3 ~ bb3 ~ c4 bb3 ab3@2",
  I: "bb3 ~ bb3 ~ c4 bb3 ab3@2 bb3 ~ bb3 ~ c4 bb3 ab3@2", J: "f3", K: "f3 ~@7",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "Horn in F"
const french_horn_4 = note(`<
  ~@28 A B A C A B A C A B A C A B A C ~@2 A B A C A B A C A B A C A B A C D E F
>`.pickRestart({
  A: "f3!3 f4 f3 f4!3", B: "f3 f4 f3 f4 f3 f4!3", C: "f3!4 ~ f4!3",
  D: "bb3 ~ bb3 ~ c4 bb3 ab3@2 bb3 ~ bb3 ~ c4 bb3 ab3@2", E: "f3", F: "f3 ~@7",
})).s("gm_french_horn").gain(0.4)

stack(french_horn, french_horn_2, french_horn_3, french_horn_4)