Strudelify
KeyB♭ majorTempo70 bpm
0:00/0:00
// Journey — Michael Salvatori
// 70 bpm, 3/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Flutes" named as a pipe, played on flute (its pizzicato strings patch is not one); ch 2 "Oboes" named as a reed, played on oboe (its tremolo strings patch is not one); ch 3 "Clarinets in B♭" named as a reed, played on clarinet (its string ensemble 1 patch is not one); ch 4 "Bassoons" named as a reed, played on bassoon (its pizzicato strings patch is not one); ch 5 "Horns in F" named as a brass, played on brass section (its tremolo strings patch is not one); ch 6 "Trumpets in B♭" named as a brass, played on trumpet (its string ensemble 1 patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5794564; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 79 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(70/3)

// 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 · oboe · "Oboes"
const oboe = note(`<
  ~@16 A B C D A B E D A F G D H I J K L M N O L M P Q A B C D A B R D H S T K@2 U ~@8 V W X Y V Z X AA V AB AC AD AE AF
  AC AG ~
>`.pickRestart({
  A: "~ d6 f6@4", B: "~ c6 g6@4", C: "~ bb5 f6@4", D: "eb6 c6 d6@4", E: "~ g5 f6@4", F: "~ c6 g6@2 f6 g6",
  G: "~ g5 f6@2 g6 f6", H: "~ d6 f6@2 g6 bb6", I: "d7@4 bb6 c7", J: "bb6@4 ~ a6", K: "g6", L: "~ d6 eb6@2 d6 c6",
  M: "~ d6 f6 d6 c6 bb5", N: "~ bb5 g6@2 f6 d6", O: "c6 bb5 d6@4", P: "~ bb5 d6@3 c6", Q: "bb5 a5 bb5 c6 bb5 a5",
  R: "~ bb5 f6@2 g6 f6", S: "d7 c7 bb6", T: "f7 d7 a6", U: "bb5", V: "g6 a6 bb6@2 a6 g6", W: "f6 g6 a6@4",
  X: "f6 g6 a6@2 g6 f6", Y: "g6@2 ~", Z: "eb6 f6 g6@4", AA: "eb6 f6 d7 bb6 a6 f6", AB: "a6 bb6 c7@4",
  AC: "a6 bb6 c7@2 bb6 a6", AD: "d7@2 d7@2 c7 bb6", AE: "a6 bb6 g6@2 a6 bb6", AF: "c7 a6 eb7@4",
  AG: "g6 a6 c7 bb6 a6 f6",
})).s("gm_oboe").gain(0.4)

// other · clarinet · "Clarinets in B♭"
const clarinet = note(`<
  ~@4 A B C D A B C D A B C E A B C E A B C E A B C E A B C E B C A E B C A E A B C E A B C E A B C E ~ A@2 B C E A B C
  E A B C E A B C E A B C E A B C E ~
>`.pickRestart({
  A: "g3", B: "eb3", C: "f3", D: "c3@5 d3@6 ~", E: "c3 d3",
})).s("gm_clarinet").gain(0.3)

// other · bassoon · "Bassoons"
const bassoon = note(`<
  ~@4 A B C D A B C D A B C E A B C E A B C E A B C E A B C E B C A E B C A E A B C E A B C E A B C E A@2 F G H I F G H
  I F G H I F G H I F G H I F G H I ~
>`.pickRestart({
  A: "g4", B: "eb4", C: "f4", D: "c4@5 d4@6 ~", E: "c4 d4", F: "d4", G: "bb3", H: "c4", I: "g3 a3",
})).s("gm_bassoon").gain(0.3)

// other · brass section · "Horns in F"
const brass_section = note(`<
  ~@31 A B C D A B C E A D B C A D B C A D B C A F G H I J G H K J L H I J G H K J L M N O P Q R S T ~
>`.pickRestart({
  A: "c4@11 ~ d4@11 ~", B: "~ eb4 f4@2 ~@2", C: "~ f4 g4@2 ~@2", D: "~ g4 a4@2 ~@2", E: "~@4 d4@4 g4@15 ~",
  F: "bb4@23 ~", G: "g4@23 ~", H: "~ a4 bb4@2 a4 g4, g4 ~@2", I: "~@4 g4@4 a4@15 ~, f4 ~@2",
  J: "~ g4 a4@2 g4 f4, f4 ~@2", K: "~@4 f4@4 g4@15 ~, eb4 ~@2", L: "eb4 f4 d5 bb4 a4 f4, c4@11 ~ d4@11 ~",
  M: "g4 a4 bb4@2 a4 g4, g5@23 ~", N: "a4@4 bb4@4 c5@15 ~, a5@23 ~", O: "a4 bb4 c5@2 bb4 a4, a5@23 ~",
  P: "d5@15 ~ c5@4 bb4@4", Q: "a4 bb4 g4@2 a4 bb4, a5@23 ~", R: "c5@4 a4@4 eb5@15 ~, c6 ~@2",
  S: "~ bb4 c5@2 bb4 a4, a4 ~@2", T: "~ a4 c5 ~ a4 f4, g4@11 ~ bb4@8 ~@4",
})).s("gm_brass_section").gain(0.4)

// other · trumpet · "Trumpets in B♭"
const trumpet = note(`<
  ~@4 A B C D A B C D A B C E A B C E A B C E A B C E A B C E B C A F B C A E A B C E A B C E A B C E G H I J K E I L K
  E M J N E O L N E O P Q R S T U V ~
>`.pickRestart({
  A: "[g4,g5]", B: "[eb4,eb5]", C: "[f4,f5]", D: "[c4,c5]@5 [d4,d5]@6 ~", E: "[c4,c5] [d4,d5]", F: "c4 d4", G: "bb4",
  H: "g4", I: "g4@2 bb4@2 a4 g4", J: "f4@4 a4!3 ~@5", K: "f4@2 a4@2 g4 f4", L: "eb4@4 g4!3 ~@5", M: "g4!4 a4 g4",
  N: "f4!2 a4!2 g4 f4", O: "g4!2 bb4!2 a4 g4", P: "a4 c5@2", Q: "a4!2 c5!2 bb4 a4", R: "[d4,d5]@4 c5 bb4",
  S: "a4 bb4 g4@2 a4 bb4", T: "c5 a4 eb5@4", U: "a4 bb4 c5@2 bb4 a4", V: "g4 a4 c5 bb4 a4 f4",
})).s("gm_trumpet").gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@54 A B A C A B A C A B A C A B A C A B A C A B A C A>".pickRestart({
  A: "x ~ x ~ x ~ x ~@2 x ~@2", B: "x ~ x ~ x!3 ~@2 x ~ x", C: "x ~ x!2 ~ x!2 ~ x ~ x!2",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@54 x ~@24>").gain(0.4)

stack(oboe, clarinet, bassoon, brass_section, trumpet, mid_tom, crash)

More by Michael Salvatori