Strudelify

Prophet's Journey

Hans Zimmer

KeyF majorTempo130 bpm
0:00/0:00
// Prophet's Journey — Hans Zimmer
// 130 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Violins" named as a string part, played on violin (its trombone patch is not one); ch 4 "Violins" named as a string part, played on violin (its synth bass 1 patch is not one); ch 7 "Violas" named as a string part, played on string ensemble 1 (its synth bass 2 patch is not one); ch 14 "Double Bass" named as a bass, played on acoustic bass (its contrabass patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5156987; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 73 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/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 · violin · "Violins"
const violin = note(`<
  A@2 ~@2 B@8 C@3 ~@2 D@2 ~@2 E@2 ~@2 D@2 ~@2 E@2 ~ F G@2 H I J@2 H F G@2 H I K@3 F L M@2 N@3 O P@2 Q@2 R S T@2 U@2 V@2
  W@2 ~@3
>`.pickRestart({
  A: "[d2,f2,a2,d3]/2", B: "[~@2 [d2,f2,a2,d3] ~, [d2,f2,a2,d3] ~@3, ~ d6@7]/8", C: "[[f2,a2]@2 [g2,bb2], [d2,d3]]/3",
  D: "[[f2,a2] [e2,g2], [c2,c3]]/2", E: "[[f2,a2] [g2,bb2], [d2,d3]]/2", F: "a5 ~@2 a5 ~@2 a5 ~@2 a5 ~@2",
  G: "[a5 ~@2 a5 ~@2 a5 ~@2 a5 ~@2 g5 ~@2 g5 ~@2 g5 ~@2 g5 ~@2, [c2,c3], [f2,a2] [e2,g2]]/2", // C F Em
  H: "g5 ~@2 g5 ~@2 g5 ~@2 g5 ~@2", I: "d5 ~@2 d5 ~@2 d5 ~@2 d5 ~@2",
  J: "[d5 ~@2 d5 ~@2 d5 ~@2 d5 ~@2 g5 ~@2 g5 ~@2 g5 ~@2 g5 ~@2, [d2,d3], [f2,a2] [g2,bb2]]/2", // D F Gm
  K: "[d5 ~@2 d5 ~@2 d5 ~@2 d5 ~@2 g5 ~@2 g5 ~@2 g5 ~@2 g5 ~@2 g5 ~@2 g5 ~@2 g5 ~@2 g5 ~@2, [d2,d3]@5 ~, [f2,a2]@2 [g2,bb2]@3 ~]/3", // D F Gm
  L: "a5 ~@2 a5 ~@2 a5 ~@2 a5 ~@2, [d2,f2,a2,d3]", // Dm
  M: "[g5 ~@2 g5 ~@2 g5 ~@2 g5 ~@2 c5 ~@2 g5 ~@2 f5 ~@2 e5 ~@2, [c2,g2,c3,e3]@5 ~@3]/2", // C
  N: "[d5 ~@2 d5 ~@2 d5 ~@2 d5 ~@2 d5 ~@2 d5 ~@2 d5 ~@2 d5 ~@2 g5 ~@2 g5 ~@2 g5 ~@2 g5 ~@2, d3, d4 [f2,a2] [g2,bb2,d4], ~@2 f4 e4 ~@2]/3", // F Gm
  O: "g5 ~@2 g5 ~@2 g5 ~@2 g5 ~@2, d4 e4",
  P: "[a5 ~@2 a5 ~@2 a5 ~@2 a5 ~@2 a5 ~@2 a5 ~@2 a5 ~@2 a5 ~@2, [f2,f4], ~@5 [a2,c3]@3]/2", // F Am
  Q: "[g5 ~@2 g5 ~@2 g5 ~@2 g5 ~@2 c5 ~@2 g5 ~@2 f5 ~@2 e5 ~@2, [c3,e3], [g2,g4]@3 a3]/2", // C G
  R: "d6 a5 f5 d6 a5 f5 d6 a5 f5 d6 a5 f5, [a2,d3,f3,d4]", // Dm
  S: "d6 a5 f5 d6 a5 f5 d6 a5 f5 d6 a5 f5, [c3,f3,a3,f4] [c3,e3,g3,e4]", // F C
  T: "[d6 bb5 g5 d6 bb5 g5 d6 bb5 g5 d6 bb5 g5 d6 bb5 g5 d6 bb5 g5 d6 bb5 g5 d6 bb5 g5, [a2,d3,f3], d4@2 e4 f4]/2", // Dm
  U: "[c6 a5 f5 c6 a5 f5 c6 a5 f5 c6 a5 f5 c6 a5 f5 c6 a5 f5 c6 a5 f5 c6 a5 f5, [c3,f3,a3,c4]@3 [c3,f3,a3], ~@9 a4 f4 d4]/2", // F
  V: "[e6 c6 g5 e6 c6 g5 e6 c6 g5 e6 c6 g5 e6 c6 g5 g6 ~@2 f4@3 e4@3, [c3,e3,g3], c4@18 f6 ~@2 e6 ~@2]/2", // C
  W: "[[d3,f3,a3,d4]@3 ~]/2", // Dm
})).s("gm_violin").gain(0.4)

// chords · violin · "Violins"
const violin_2 = note(`<
  ~@5 A@7 B@2 C@2 D@2 E F B@2 C@2 D@2 E F G@3 C H@3 F G@3 C H@3 F I@2 J@2 K@2 L@2 M@3 C N@2 O@2 P@2 Q@2 R@2 S@2 B@5
>`.pickRestart({
  A: "e6/7", B: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ f3@3 ~@3 e3@3 ~@3", C: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ g3@3 ~@3 e3@3 ~@3",
  D: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ a3@3 ~@3 f3@3 ~@3", E: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ g3@3 ~@3 e3@3 ~@3",
  F: "c3 ~ g3 ~ f3 ~ e3 ~",
  G: "[d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ f3@3 ~@3 e3@3 ~@3 d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ f3@3 ~@3 e3@3 ~@3 d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ g3@3 ~@3 e3@3 ~@3, d4, a3@2 [bb3,g4,bb4], ~ [f4,a4] ~]/3", // Eb F
  H: "[c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ a3@3 ~@3 f3@3 ~@3 c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ a3@3 ~@3 f3@3 ~@3 c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ g3@3 ~@3 e3@3 ~@3, c4, a3 ~ [f4,a4]@2 [e4,g4]@2, ~@4 g3 ~]/3", // F Em
  I: "[d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ f3@3 ~@3 e3@3 ~@3 d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ f3@3 ~@3 e3@3 ~@3, [d4,f4,a4], d5@2 f5 e5]/2", // Dm
  J: "[d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ g3@3 ~@3 e3@3 ~@3 d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ g3@3 ~@3 e3@3 ~@3, [d4,g4,bb4,d5]@3 ~]/2", // Gm
  K: "[c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ a3@3 ~@3 f3@3 ~@3 c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ a3@3 ~@3 f3@3 ~@3, ~ [f4,c5,f5,a5]@3]/2", // F
  L: "[c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ g3@3 ~@3 e3@3 ~@3 c3@3 ~@3 g3@3 ~@3 f3@3 ~@3 e3@3 ~@3, [g4,c5,e5,g5]@5 ~@3]/2", // C
  M: "[d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ f3@3 ~@3 e3@3 ~@3 d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ f3@3 ~@3 e3@3 ~@3 d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ g3@3 ~@3 e3@3 ~@3, d5, a4@2 [bb4,g5,bb5], ~ [f5,a5] ~]/3", // Eb F
  N: "[c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ a3@3 ~@3 f3@3 ~@3 c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ a3@3 ~@3 f3@3 ~@3, f5@5 [d5,f5,a5,d6]@3]/2", // Dm
  O: "[c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ g3@3 ~@3 e3@3 ~@3 c3@3 ~@3 g3@3 ~@3 f3@3 ~@3 e3@3 ~@3, [c6,e6], [e5,g5]@3 a5]/2", // C Em
  P: "[d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ f3@3 ~@3 e3@3 ~@3 d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ f3@3 ~@3 e3@3 ~@3, [d5,f5,a5], d6@2 f6 e6]/2", // Dm
  Q: "[d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ g3@3 ~@3 e3@3 ~@3 d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ g3@3 ~@3 e3@3 ~@3, [d5,g5,bb5], d6@2 e6 f6]/2", // Gm
  R: "[c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ a3@3 ~@3 f3@3 ~@3 c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ a3@3 ~@3 f3@3 ~@3, [c5,f5,a5,c6]]/2", // F
  S: "[c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ g3@3 ~@3 e3@3 ~@3 c3@3 ~@3 g3@3 ~@3 f3@3 ~@3 e3@3 ~@3, [e5,g5,c6,e6]]/2", // C
})).s("gm_violin").gain(0.3)

// other · string ensemble 1 · "Violas"
const string_ensemble_1 = note(`<
  A@12 ~@16 B@3 C D E@2 F B@3 C D E@2 F A@2 C@2 D@2 G F A@2 C@2 D@2 G F A@2 C@2 D@2 G F ~@5
>`.pickRestart({
  A: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ f3@3 ~@3 e3 ~ e3 ~ e3 ~",
  B: "[d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ f3@3 ~@3 e3 ~ e3 ~ e3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ f3@3 ~@3 e3 ~ e3 ~ e3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ g3@3 ~@3 e3 ~ e3 ~ e3 ~, d4]/3",
  C: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ g3@3 ~@3 e3 ~ e3 ~ e3 ~",
  D: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ a3@3 ~@3 f3 ~ f3 ~ f3 ~",
  E: "[c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ a3@3 ~@3 f3 ~ f3 ~ f3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ g3@3 ~@3 e3 ~ e3 ~ e3 ~, c4]/2",
  F: "c3 ~ c3 ~ c3 ~ g3 ~ g3 ~ g3 ~ f3 ~ f3 ~ f3 ~ e3 ~ e3 ~ e3 ~",
  G: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ g3@3 ~@3 e3 ~ e3 ~ e3 ~",
})).s("gm_string_ensemble_1").gain(0.4)

// bass · acoustic bass · "Double Bass"
const bass = note(`<
  A@12 B@2 C@2 D@2 E@2 B@2 C@2 D@2 E@2 B@2 C@2 D@2 E@2 B@2 C@2 D@2 E@2 B@2 C@2 D@2 E@2 B@2 C@2 D@2 E@2 B@2 C@2 D@2 E@2
  ~@5
>`.pickRestart({
  A: "d2/4", B: "d2/2", C: "g2/2", D: "f2/2", E: "c2/2",
})).s("gm_acoustic_bass").gain(0.2)

// bass · tuba · "Euphonium"
const bass_2 = note(`<
  A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 B ~@2 C D ~@2 E B ~@2 C D ~@2 E B ~@2 C D ~@2 E B ~@2 C D ~@2 E F@2 ~ E G@2 A@2 H ~ I@2
  J@2 E K A@2 L@2 J@2 M@2 ~@3
>`.pickRestart({
  A: "d3/2", B: "g2", C: "f3", D: "c3", E: "d3", F: "[g2@3 ~]/2", G: "[c3@5 ~@3]/2", H: "g3", I: "f3/2", J: "c3/2",
  K: "f3 e3", L: "[f3@3 f3]/2", M: "[d3@3 ~]/2",
})).s("gm_tuba").gain(0.25)

// other · trumpet · "Wagner Tuba"
const trumpet = note(`<
  A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 B ~@2 C D ~@2 E B ~@2 C D ~@2 E B ~@2 C D ~@2 E B ~@2 C D ~@2 E F@2 ~ E G@2 A@2 B ~ H@2
  I@2 E J A@2 K@2 I@2 L@2 ~@3
>`.pickRestart({
  A: "d2/2", B: "g2", C: "f2", D: "c2", E: "d2", F: "[g2@3 ~]/2", G: "[c2@5 ~@3]/2", H: "f2/2", I: "c2/2", J: "f2 e2",
  K: "[f2@3 f2]/2", L: "[d2@3 ~]/2",
})).s("gm_trumpet").gain(0.25)

// bass · synth bass 1 · "Bass Synthesizer"
const bass_3 = note("<~@12 A@4 B@4 A@4 B@4 A@4 B@4 A@4 B@4 A@4 B@4 A@4 B@4 A@4 B@4 A@5>".pickRestart({
  A: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~",
  B: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~",
})).s("gm_synth_bass_1").gain(0.3)

// drums · kick
const kick = s("bd").struct("<x ~@3 x ~@3 x ~@3 [x!12]!57 ~@4>").gain(0.3)

// drums · ride
const ride = s("rd").struct("<~@12 A ~@15 A ~@15 A ~@7 A ~@7 A ~@12>".pickRestart({
  A: "x",
})).gain(0.3)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<[~ x]!12 ~@61>").gain(0.29)

// drums · woodblocks
const woodblocks_2 = s("woodblock:4").struct("<x!2 [x ~@2 x ~@4] x!3 [x ~@2 x ~@4] x!3 [x ~@2 x ~@4] x ~@61>")
  .gain(0.29)

// drums · triangle
const triangle = s("triangles:35").struct("<x ~@3 x ~@3 x ~@45 [~ x!2 ~ x!2 ~ x!2 ~ x!2]!14 ~@5>").gain(1.3)

// drums · triangle · soft notes
const triangle_soft = s("triangles:35").struct("<~@54 [x!4]!6 [~ x!3] [x!4]!7 ~@5>").gain(0.43)

stack(
  violin, violin_2, string_ensemble_1, bass, bass_2, trumpet, bass_3, kick, ride, woodblocks, woodblocks_2, triangle,
  triangle_soft
)

More by Hans Zimmer