Strudelify

The Egg Travels

James Newton Howard

KeyA♭ majorTempo90 bpm
0:00/0:00
// The Egg Travels — James Newton Howard
// 90 bpm, 6/8, key Ab major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (6/8 at bar 1, 9/8 at bar 31, 6/8 at bar 32) are rendered on a constant 6/8 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5869025; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 60 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(90/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · flute
const flute = note(`<
  ~@12 A B C D E F G H I J K J L M N O P Q R S T U V W T X Y@2 Z AA AB AC AD T U V W T AE AF AG AF AH@6
>`.pickRestart({
  A: "f5 eb5", B: "eb5 c5", C: "c5 bb4", D: "bb4@23 ~", E: "f5", F: "g5 c5 f5", G: "f5@3 g5 ab5 bb5",
  H: "c6@2 eb6@2 eb6@8 eb6@11 ~", I: "db6", J: "db6 c6 bb5 db6 bb5@2", K: "bb5@2 c6 db6@3 db6@6", L: "d6@3 d6 bb5 d6",
  M: "e6@23 ~", N: "e6", O: "e6!24", P: "c6@2 c6@2 f6@2 c6@2 c6!2 f6 c6", Q: "c6@2 ~@4 c5@2 c5!2 f5 c5",
  R: "f5 g5 a5@2 f5@2 g5@2 c6@2 c5@2", S: "f5 g5 a5@2 f5@2 f5@4 g5 a5", T: "f5 g5", U: "a5 bb5", V: "bb5@2 a5 a5@3",
  W: "c5@11 ~ f5@8 g5@2 a5@2", X: "c6@2 c5 eb5@3", Y: "[d5@12 c5@23 ~ f5@12]/2", Z: "a5@6 e5 d5 c5@4",
  AA: "c5@6 d5@2 e5 f5@3", AB: "g5 f5", AC: "f5@4 ~ d5 e5 d5 e5 d5 c5@2", AD: "c5@4 c5!2 f5@4 g5 a5",
  AE: "c6@4 c5@2 eb5@4 eb5!2", AF: "eb5@4 f5 g5 f5@4 f4@2", AG: "c5@6 eb5@4 eb5!2",
  AH: "[c5@11 ~ eb5@24 f5@24 f5@24 f5@24 f5@23 ~@13]/6",
})).s("gm_flute").gain(0.3)

// other · violin
const violin = note(`<
  A@2 B C A@2 B C D E D E F@2 G H I J K L M N O N P Q R S T U V W X@2 Y Z AA AB AC AD AE AF AG AH AI X@2 Y Z AA AJ AK AL
  AK AM@6
>`.pickRestart({
  A: "ab4@2 ~ ab4 ~@2 ab4@2 eb4@2 ab4@2", B: "bb4@2 ~ bb4 ~@2 eb4@2 ab4@2 eb4@2", C: "ab4@2 ~ g4 ~@2 g4@2 ~@4",
  D: "db5", E: "eb5 c5 f5", F: "ab4!2", G: "ab4 g4", H: "g4", I: "db4", J: "c4!2 f4", K: "ab4@3 g3 ab3 bb3",
  L: "c4 eb4 eb4@4 eb4@6", M: "gb5", N: "f5!4 f5@2", O: "gb4@2 c5 gb5@3 gb5@6", P: "g5@3 g5 bb5 d5", Q: "g5!2", R: "g5",
  S: "g5!24", T: "g4@2 g4@2 bb4@2 g4@2 c5!2 bb4 c5", U: "g4@2 ~@4 g4@2 c5!2 bb4 c5",
  V: "bb4 c5 d5@2 bb4@2 c5@2 c5@2 c5@2", W: "bb4 c5 d5@2 bb4@2 c5@4 g5 a5", X: "c5 d5", Y: "d5@2 a5 c5@3",
  Z: "c5@6 c4@4 g4 a4", AA: "c4 c5", AB: "e5@2 c5 ab4@3", AC: "f4!2", AD: "e4 a4", AE: "d5@6 e4 d4 c4@4", AF: "c4 a4",
  AG: "bb4!2", AH: "bb4@4 ~ d4 g4@6", AI: "g4@4 c5!2 c5@4 g5 a5", AJ: "e5@4 c5@2 ab4@4 ab4!2",
  AK: "ab4@4 c5 g5 a4@4 f4@2", AL: "g4@2 f4@4 ab4@4 ab4!2", AM: "[g4 f4@2 ab4@6 ab4@6 ab4@6 bb4@6 a4@6 ~@3]/6",
})).s("gm_violin").gain(0.4)

// other · viola
const viola = note(`<
  A@2 B C A@2 B C D E D E F G H I J K L ~ M N O N P Q R S T U V W X Y Z AA X AB AC AD AE@2 AF AG AH X Y Z AA X AI AJ AK
  AJ AL@6
>`.pickRestart({
  A: "eb4@2 ~ eb4 ~@2 ab4@2 eb4@2 ab4@2", B: "eb4@2 ~ eb4 ~@2 eb4@2 c5@2 eb4@2", C: "eb4@2 ~ eb4 ~@2 eb4@2 ~@4",
  D: "f4", E: "g4 c5 f4", F: "f4!2", G: "eb4 c4", H: "c4 bb3", I: "bb3", J: "f3", K: "g3 c3 f3", L: "f3 ~", M: "db5",
  N: "db5 c5 bb4 db5 bb4@2", O: "db4@2 c5 db5@3 db5@6", P: "d5@3 d5 bb4 d5", Q: "e5 f5", R: "e5", S: "e5!24",
  T: "f4@2 f4@2 bb4@2 f4@2 c5!2 bb4 c5", U: "f4@2 ~@4 f4@2 c5!2 bb4 c5", V: "bb4 c5 d5@2 bb4@2 c5@2 c5@2 c5@2",
  W: "bb4 c5 d5@2 bb4@2 a3@4 g4 a4", X: "a3 g4", Y: "a4 bb4", Z: "bb4@2 a4 a4@3", AA: "c5@6 a3@4 g4 a4",
  AB: "c5@2 c5 eb4@3", AC: "d4 c4", AD: "c4 f3", AE: "[a3 e3@2 f4]/2", AF: "g4 f4", AG: "f4@4 ~ d4 e4@6",
  AH: "f4@4 c5!2 a3@4 g4 a4", AI: "c5@4 c5@2 eb4@4 eb4!2", AJ: "eb4@4 f4 g4 f4@4 f4@2", AK: "c4@2 c4@4 eb4@4 eb4!2",
  AL: "[c4 c4@2 eb3@6 f3@6 f3@6 f3@6 f3@6 ~@3]/6",
})).s("gm_viola").gain(0.4)

// other · cello · "Violoncello"
const cello = note(`<
  A@2 B C D@2 E C F G F G F H I@2 J G F K L M L M N O@2 P Q R S T U V W X Y Z AA AB AC AD AE AF AG U V W X Y Z AH AI AH
  AJ AK AL AM AN@2
>`.pickRestart({
  A: "ab2 ~@3 ab2 ~", B: "bb2 ~@3 ab2 eb2", C: "ab2@2 ~ eb2 ~@2 eb2@2 ~@4", D: "ab2 ~@3 [db3,ab3]@2",
  E: "bb2 ~@3 [eb2,ab2]@2", F: "db2@2 ab2 f3@2 ab2 db2@2 ab2@2 f3@2", G: "c2@2 g2@2 eb3@2 c2@2 g2 eb3 c3@2",
  H: "ab2@2 eb3 ab3@2 eb3 ab2@2 eb3@2 ab3@2", I: "eb2@2 bb2 eb3@2 bb2 eb2@2 bb2@2 eb3@2",
  J: "f2@2 c3 ab3@2 c3 f2@2 c3@2 ab3@2", K: "ab2@2 eb3@2 c4@2 ab2@2 eb3@2 eb3 ab2",
  L: "gb2@2 db3 bb3@2 db3 gb2@2 db3@2 bb3@2", M: "bb2 f3 db4 bb2 f3 db4", N: "g2@2 d3 bb3@2 d3 g2@2 d3@2 bb3@2",
  O: "c2@2 g2 e3@2 g2 c2@2 g2@2 e3@2", P: "c2@2 g2 e3@2 g2 c2 c3 c2 c3 c2@2", Q: "c2 c3", R: "c3 c3@2 c2@3",
  S: "c2 c3@2 c2@3", T: "c2 c3@2 f2@3", U: "a3 c3 f2 f3@3", V: "a3 c3 f2 bb2@3", W: "d4 f3 bb2 f2 c3 a3",
  X: "f2@2 c2 f2@3", Y: "a3 c3 f2 e3@3", Z: "c4 f3 a2 ab2@3", AA: "bb2 c3", AB: "c2@3 d2 a2 f3",
  AC: "f3 a2 d2 a2 e3 a3", AD: "a3 e3 a2 d2 a2 f3", AE: "eb2 bb2 g3 bb2 f3 d4", AF: "f4 bb3 g3 c2@3", AG: "c3 f2",
  AH: "eb3 f3", AI: "f3 c3 f2 ab2@3", AJ: "f3 c3 f2 ab2@2 eb3", AK: "c4 ab3 eb3 f2 c3 f3", AL: "ab3 f3 c3 db2 ab2 db3",
  AM: "f3 db3 ab2 bb2@2 bb2", AN: "[f3 db3 bb2 f2@6 ~@3]/2",
})).s("gm_cello").gain(0.3)

stack(flute, violin, viola, cello)