Strudelify

far horizons

Jeremy Soule

KeyB♭ majorTempo68 bpm
0:00/0:00
// far horizons — Jeremy Soule
// 68 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Flute" named as a pipe, played on flute (its cello patch is not one); ch 2 "Flute" named as a pipe, played on flute (its pizzicato strings patch is not one); ch 3 "Horn in F" named as a brass, played on brass section (its tremolo strings patch is not one); ch 4 "Horn in F" named as a brass, played on brass section (its cello patch is not one)
// note: duplicate parts dropped: ch 7 "Violin" violin (copy of ch 2 "Flute" flute)
// note: Transcription provider: pdmx. https://musescore.com/score/1101236; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 80 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(68/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(`<
  ~@14 A B C@2 D@2 E@2 F G ~@8 H I J I K L M N O P Q R S T U V W X Y Z AA Y AB AC AD AE AF@2 AG@2 AH AI@2 AJ@2 AK@2 AL
  AM ~@8 AN
>`.pickRestart({
  A: "~@4 d5@4 d5@7 [d5,eb5]", B: "d5@11 ~ gb5@4, c5 ~@15",
  C: "[[d5,g5] d6 c6 g5 ~ a3 bb3 g3 eb3@6 eb3 g3, g3@5 ~@11, ~@8 bb5@19 ~ g5@4]/2", // G5
  D: "[g5 bb5 a5 f5 ~@4 f3@4 [d3,f5]@4, f3 ~, ~@8 d5@15 ~@9]/2", // Dm
  E: "[[eb5,g5] d6 c6 g5 ~@8 g5@4, eb3 c3, ~@8 bb5@15 ~@9]/2", F: "g5 bb5 a5 f5 ~@2 gb3 a3, d3@3 ~, ~ d5",
  G: "gb3!2, [d5,gb5]", H: "e4@3 c4 d4@3 d4", I: "[d4,f4]!2", J: "e4 g4@2 e4 f4 e4 d4@2", K: "e4@3 c4 d4@4",
  L: "[d4,f4] [e4,g4]", M: "[e4,g4] [f4,a4]", N: "[a4,f5]@2 [a4,f5] [g4,e5]", O: "[g4,e5] [f4,d5]",
  P: "[a4,f5] [c5,g5]", Q: "[c5,g5] [d5,a5]", R: "[d5,f5]@2 [d5,f5] [c5,e5]", S: "[c5,e5] [a4,d5]",
  T: "[f4,d5] [e4,c5]", U: "[g4,c5]@2 d4 c4, ~ [f4,a4,d5]", V: "c4 d4", W: "d3@3 d3", X: "eb3", Y: "f3", Z: "g3 f3@3",
  AA: "g3@4 eb3@3 eb3", AB: "c3", AC: "d3@2 gb3 a3 d3@4", AD: "g3 bb3 a3 f3 g3@4", AE: "g3 a3@2 bb3",
  AF: "[f3 bb3 a3 f3 a3@8 bb3@3 a3]/2",
  AG: "[g3@2 bb3@2 a3@2 f3@2 g3@12 d6@4 ~@4 c3@3 [d6,eb6], ~@5 f3@2 ~, ~@24 d6@7 ~]/2", // Ebmaj7
  AH: "d3@2 ~ gb6, [a5,d6]@11 ~@5, c6 ~@7 g3@8", // D5
  AI: "[[g5,g6] [d6,d7] [c6,c7] [g5,g6] ~@4 g3@5 a3 bb3 g3, gb3 ~, ~@8 [bb5,bb6]@19 ~ [g5,g6]@4]/2", // G D C G Bb G
  AJ: "[[g5,g6] [bb5,bb6] [a5,a6] [f5,f6] ~@2 eb3 g3 ~@4 [f5,f6]@4, eb3@3 ~ f3@4, ~@8 [d5,d6]@15 ~@9]/2", // G Bb A F D
  AK: "[[g5,eb6,g6] [d6,d7] [c6,c7] [g5,g6] d3@4 ~@4 [g5,g6]@4, f3@8 [bb5,bb6]@15 ~@9, ~ eb3]/2", // Cm D C G Bb
  AL: "[g5,g6] [bb5,bb6] [a5,a6] [f5,f6] [d5,d6]@4, c3", AM: "d3@6 gb3 ~, [d6,gb6]", AN: "bb3",
})).s("gm_flute").gain(0.4)

// chords · flute · soft notes
const flute_soft = note(`<
  A B C D E C F G H I J@2 K@2 L M ~@8 N O C N@2 O P O Q R S T U V W X Y Z AA AB AA AC AD ~@23 AE AF N O C N@2 O P ~
>`.pickRestart({
  A: "d3@3 d3", B: "eb3", C: "f3", D: "g3 f3@3", E: "g3@4 eb3@3 eb3", F: "c3", G: "d3@2 gb3 a3 d3@4",
  H: "g3 bb3 a3 f3 g3@4", I: "g3 a3@2 bb3", J: "[f3 bb3 a3 f3 a3@8 bb3@3 a3]/2", K: "[g3 bb3 a3 f3 g3@6 f3@4 c3@2]/2",
  L: "d3 g3", M: "gb3", N: "d4", O: "a3", P: "bb3", Q: "a3 bb3", R: "c4 a3", S: "bb3@2 c4!2", T: "a3!2",
  U: "bb3 f3 bb3 d4 c4@2 e3 f3", V: "a3@4 bb3 f3 d4!2", W: "d3 f3 bb3@2 e3 g3 c4@2", X: "a3@2 c4@2 a3 d3 f3 a3",
  Y: "d4@2 d4 c4", Z: "c4 d4", AA: "d4@2 f4 e4", AB: "e4 d4", AC: "c4 bb3", AD: "bb3 ~", AE: "~@7 a3", AF: "gb3!2",
})).s("gm_flute").gain(0.2)

// other · flute
const flute_2 = note("<~@14 A B C@2 D@2 E@2 F G ~@37 A H I@2 J@2 K@2 L G ~@9>".pickRestart({
  A: "~@4 d5@4 d5@7 [d5,eb5]", B: "a4@11 ~ gb5@4, c5 ~@15", C: "[[d5,g5]@2 d6@2 c6@2 g5@2 bb5@19 ~ g5@4]/2",
  D: "[g5@2 bb5@2 a5@2 f5@2 d5@15 ~ f5@8]/2", E: "[[eb5,g5]@2 d6@2 c6@2 g5@2 bb5@15 ~ g5@8]/2", F: "g5 bb5 a5 f5 d5@4",
  G: "[d5,gb5]", H: "[a4,d5]@11 ~ gb5@4, c5 ~@15",
  I: "[[g4,g5]@2 [d5,d6]@2 [c5,c6]@2 [g4,g5]@2 [bb4,bb5]@19 ~ [g4,g5]@4]/2", // G D C G Bb G
  J: "[[g4,g5]@2 [bb4,bb5]@2 [a4,a5]@2 [f4,f5]@2 [d4,d5]@15 ~ [f4,f5]@8]/2", // G Bb A F D F
  K: "[[g4,eb5,g5]@2 [d5,d6]@2 [c5,c6]@2 [g4,g5]@2 [bb4,bb5]@15 ~ [g4,g5]@8]/2", // Cm D C G Bb G
  L: "[g4,g5] [bb4,bb5] [a4,a5] [f4,f5] [d4,d5]@4", // G Bb A F D
})).s("gm_flute").gain(0.5)

// other · brass section · "Horn in F"
const brass_section = note(`<
  A@2 B@2 C@2 D E F@2 G@2 H@2 I ~@32 A@2 B@2 C@2 D E F@2 G@2 H@2 I ~@9 J K L M J N O@3
>`.pickRestart({
  A: "[g4 d5 c5 g4 bb4@10 g4@2]/2", B: "[g4 bb4 a4 f4 d4@8 f4@4]/2", C: "[g4 d5 c5 g4 bb4@8 g4@4]/2",
  D: "g4 bb4 a4 f4 d4@4", E: "c4@3 gb4", F: "[g4 bb4 a4 f4 g4@6 a4@4 bb4@2]/2", G: "[f4 bb4 a4 f4 a4@8 bb4@2 a4@2]/2",
  H: "[g4 bb4 a4 f4 g4@6 f4@4 c4@2]/2", I: "d4", J: "[bb3,g4] [c4,a4] [d4,bb4]@2", K: "[c4,a4] [a3,f4]",
  L: "[a3,f4] [bb3,g4] [c4,a4]@2", M: "g4", N: "[d4,a4] [f4,d5]", O: "[bb4,d5]",
})).s("gm_brass_section").gain(0.3)

// other · brass section · "Horn in F"
const brass_section_2 = note(`<
  ~@7 A B@2 C@2 D@2 E F G H I J H I J@2 ~@22 K L G@2 I@2 G M N O@2 P@2 Q@2 R J S G H I J H I J ~@8 T
>`.pickRestart({
  A: "~@3 gb4", B: "[g4 bb4 a4 f4 g4@6 a4@4 bb4@2]/2", C: "[f4 bb4 a4 f4 a4@8 bb4@2 a4@2]/2",
  D: "[g4 bb4 a4 f4 g4@6 f4@4 c4@2]/2", E: "d4", F: "~ d3", G: "g3", H: "eb3", I: "f3", J: "d3", K: "~ c4", L: "g3 d3",
  M: "c3", N: "~@3 gb4, c3", O: "[g4 bb4 a4 f4 ~@6 a4@4 bb4@2, gb3 eb3, ~@2 g4@3 ~@3]/2",
  P: "[f4 bb4 a4 f4 ~@8 bb4@2 a4@2, c3 d3, ~ a4@2 ~]/2", Q: "[g4 bb4 a4 f4 ~@6 f4@4 c4@2, c3 eb3, ~@2 g4@3 ~@3]/2",
  R: "[c3,d4]", S: "d3!2", T: "bb3",
})).s("gm_brass_section").gain(0.3)

// other · brass section · "Horn in F" · soft notes
const brass_section_soft = note(`<
  A@2 B@2 A C@2 D E C F C E C F G ~@8 A F@2 A@2 F H I ~@8 J K J K J K L ~@24 F A F@2 A@2 F H ~
>`.pickRestart({
  A: "g3", B: "f3", C: "c3", D: "gb3", E: "eb3", F: "d3", G: "d3 ~", H: "bb3", I: "a3", J: "bb3 c4", K: "a3 bb3",
  L: "bb3 ~",
})).s("gm_brass_section").gain(0.2)

// other · cello · "Violoncello"
const cello = note(`<
  A B C D E F C D G@2 D H B F I@2 J G K L M N O P Q R S T Q U V@2 W X Y C Z C AA AB AC AD AC AD AE AF AG AH A B C D E F
  C D G@2 D H B F I@2 J G K L M N O P Q R S T Q U D@2
>`.pickRestart({
  A: "g3", B: "bb3", C: "c4 d4", D: "d4", E: "g3@7 g3", F: "c4", G: "eb4", H: "d4@4 d4@3 c4", I: "a3",
  J: "g3 bb3@2 d4 d4@4", K: "c4@5 a3 bb3 a3", L: "g3 f3 bb3@3 a3 bb3 a3", M: "g3@5 g3 f3 g3", N: "f3",
  O: "~ bb3 a3 bb3 a3@4", P: "a3!2", Q: "g3 a3 bb3@2", R: "a3 f3", S: "f3 g3 a3@2", T: "g3@3 d3", U: "a3 d4", V: "d4/2",
  W: "d4@2 d4 e4", X: "e4 c4 d4@2", Y: "d4@2 d4 c4", Z: "d4 c4", AA: "d4 e4", AB: "e4 f4", AC: "f5@2 f5 e5",
  AD: "e5 d5", AE: "a4@2 a4 g4", AF: "g4 e4 f4@2", AG: "f4@2 f4 e4", AH: "e4 c4 a3@2",
})).s("gm_cello").gain(0.2)

stack(flute, flute_soft, flute_2, brass_section, brass_section_2, brass_section_soft, cello)

More by Jeremy Soule