Strudelify

The Great Escape March

Elmer Bernstein

KeyE♭ majorTempo120 bpm
0:00/0:00
// The Great Escape March — Elmer Bernstein
// 120 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/3198; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 62 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 · [...]/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.

// other · recorder · "Alto Recorder"
const recorder = note(`<
  ~@10 A B C D A B E F A B C D A B E F G H I H G J K F ~@7 L M N O L M N P L M N O L M N Q R ~@4
>`.pickRestart({
  A: "g5 ~ bb5 ~@7 g5 ~ eb6@3 d6", B: "c6 ~ ab5 ~@13", C: "d6 ~ d6@4 c6@2 bb5@3 c6 bb5 ~ ab5 ~",
  D: "g5 ~ eb5 ~@7 eb5 ~ e5 ~ f5 ~", E: "d6 ~ d6@4 c6 ~ bb5 ~ g5@4 ab5 ~", F: "g5@3 ~", G: "bb4",
  H: "bb5@8 c6 ~ bb5 ~ g5@2 eb5@2", I: "c5", J: "bb5@8 c6 ~ bb5 ~ g5@2 ab5@2", K: "bb5 ab5", L: "c6", M: "d6", N: "e6",
  O: "f6@2 e6 d6", P: "f6", Q: "f6 ~ f6 ~@3 f6 ~", R: "~@2 f6 ~@2 d6 e6@2",
})).s("gm_recorder").gain(0.3)

// other · recorder · "Tenor Recorder"
const recorder_2 = note("<~@10 A B C D A B E F A B C D A B E F ~@15 G H I J G H K L G H I J G H K ~@6>".pickRestart({
  A: "bb4", B: "c5", C: "d5", D: "eb5@2 d5 c5", E: "bb4 ab4", F: "g4@3 ~", G: "a4 ~ d5 ~@7 a4 ~ f5@3 e5",
  H: "d5 ~ bb4 ~@13", I: "e5 ~ e5@4 d5@2 c5@3 d5 c5 ~ bb4 ~", J: "ab4 ~ f4 ~@7 f4@2 g4@2 ab4@2",
  K: "e5 ~ e5@4 d5@2 c5@2 a4@4 bb4@2", L: "a4@3 ~",
})).s("gm_recorder").gain(0.2)

// other · recorder · "Bass Recorder"
const recorder_3 = note(`<
  A@2 B ~ C@2 D E F@2 G H I J G H K L G H I J G H K L M N O P M O Q R S T U V W X@2 Y M O Z Y M AA AB Y M O Z Y M AA Y@4
  AC AD
>`.pickRestart({
  A: "a3/2", B: "ab3 db4 ~@6", C: "bb3/2", D: "a3 e4 ~ e4 ~@3 e4", E: "~@3 e4 ~@2 d4 eb4",
  F: "eb4@2 ~@2 bb3@2 ~@2 eb4@2 ~@2 gb4@3 f4", G: "eb4 ~ bb3 ~ eb4 ~ g4 ~", H: "ab4 ~ g4 ~ f4 ~ ab4 ~",
  I: "bb4 ~ c5 ~ d5 ~ bb4 ~", J: "eb4 ~ bb3 ~ c4 ~ d4 ~", K: "bb4 ~ ab4 ~ ab4 ~ f4 ~", L: "eb4 ~ bb3 ~ eb4 ~@3",
  M: "bb3", N: "eb4", O: "c4", P: "f4", Q: "bb3 ab3", R: "g3@3 ~", S: "g4", T: "gb4 e4", U: "e4",
  V: "gb4 ~ gb4 ~@3 gb4 ~", W: "~@2 gb4 ~@3 c4 f4", X: "f4@2 ~@2 c4@2 ~@2 f4@2 ~@2 ab4@3 g4", Y: "a3", Z: "d4@2 c4 bb3",
  AA: "c4 bb3", AB: "a3@3 ~", AC: "ab3 db4 ~@3 db4 ~@2", AD: "~ db4@2 db4@2 db4@2 ~",
})).s("gm_recorder").gain(0.2)

stack(recorder, recorder_2, recorder_3)