Strudelify

Outer Wilds - Travelers

Andrew Prahlow

KeyG majorTempo90 bpm
0:00/0:00
// Outer Wilds - Travelers — Andrew Prahlow
// 90 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5907869; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(90/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 · harmonica
const harmonica = note(`<
  ~@8 A@2 B@2 C@2 D@2 E@2 F@2 G@2 D@2 B@2 C@2 D@2 H@2 I@2 H@2 D@2 H@2 B@2 C@2 D@2 H@2 I@2 H@2 D@2 H@2 B@2 C@2 D@2 H@2
  I@2 H@2 D@2 H@2 B@2 C@2 D@2 H@2 I@2 H@2 D@2 H@2 B@2 C@2 D@2 H@2 I@2 H@2 D@2 H@2
>`.pickRestart({
  A: "d6/2", B: "[g5,d6]/2", C: "[d5,g5]/2", D: "[b4,d5]/2", E: "b4/2", F: "d5/2", G: "e5/2", H: "[g4,b4]/2",
  I: "[d4,g4]/2", // G5
})).s("gm_harmonica").gain(0.25)

// bass · contrabass
const bass = note(`<
  ~@18 A@2 B@2 C D E@2 A@2 B@2 A@2 E@2 A@2 B@2 C D E@2 A@2 B@2 A@2 E@2 A@2 B@2 C D E@2 A@2 B@2 A@2 E@2 A@2 B@2 C D E@2
  A@2 B@2 A@2 E@2 A@2 B@2 C D E@2 A@2 B@2 A@2 E@2 A@2 B@2 ~@2
>`.pickRestart({
  A: "d2/2", B: "e2/2", C: "d2", D: "e2 g2", E: "c2/2",
})).s("gm_contrabass").gain(0.25)

// bass · contrabass · soft notes
const bass_soft = note("<~@16 A@2 ~@84 B C>".pickRestart({
  A: "c2/2", B: "d2", C: "e2 g2",
})).s("gm_contrabass").gain(0.15)

// other · ocarina · "Slide Whistle"
const ocarina = note(`<
  ~@24 A B C D E B C D A B C D E B C D A B C D E B C D A B C D E B C D A B C D E B C D A B C D E B C D A B C D E B C D A
  B C D E B C D A B C D E B C D A B C D E B C D
>`.pickRestart({
  A: "c6@2 g6@2 b6@3 g6", B: "c7 b6 a6 g6 a6 b6 g6@2", C: "d6@2 g6@2 b6@3 g6", D: "c7 b6 a6 g6 a6 b6 d7 b6",
  E: "e6@2 g6@2 b6@3 g6",
})).s("gm_ocarina").gain(0.05)

// chords · piano
const piano = note(`<
  ~@48 A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 E@2 I@2 G@2 H@2 E@2 F@2 G@2 H@2 E@2 I@2 G@2 H@2 E@2 F@2 G@2 H@2 E@2 I@2 G@2 H@2
>`.pickRestart({
  A: "[c3 ~ c3!2 ~ c3 [c3,g4] [c3,a4], g4@3 d4@3 g4@3 d4@3 ~@4, ~ c3 ~@2 c3 ~@3]/2", // C5 F
  B: "[d3 ~ d3!2 ~ d3 [d3,c5] [d3,b4], g4@3 f#4@3 g4@3 f#4@3 ~@4, ~ d3 ~@2 d3 ~@3]/2", // D7 G
  C: "[e3 ~ e3!2 ~ e3 [e3,d4] [e3,b3], g4@3 d4@3 b3@3 g4@3 ~@4, ~ e3 ~@2 e3 ~@3]/2", // E7 E5
  D: "[d3@2 ~@2 d3@2 d3@2 ~@2 d3@2 a4 b4 d5 b4, a4@3 b4@3 a4@3 b4@3 ~@4, ~ d3 ~@2 d3 ~ d3!2]/2",
  E: "[c3 ~ c3!2 ~ c3 [c3,g4,g5] [c3,a4,a5], [g4,g5]@3 [d4,d5]@3 [g4,g5]@3 [d4,d5]@3 ~@4, ~ c3 ~@2 c3 ~@3]/2", // C5 F G D G D
  F: "[d3 ~ d3!2 ~ d3 [d3,g4,g5] [d3,e4,e5], [g4,g5]@3 [a4,a5]@3 [g4,g5]@3 [a4,a5]@3 ~@4, ~ d3 ~@2 d3 ~@3]/2", // G5 Dsus2 G A G A
  G: "[e3 ~ e3!2 ~ e3 [e3,d4,d5] [e3,b3,b4], [g4,g5]@3 [d4,d5]@3 [b3,b4]@3 [g4,g5]@3 ~@4, ~ e3 ~@2 e3 ~@3]/2", // E7 E5 G D B G
  H: "[d3@2 ~@2 d3@2 d3@2 ~@2 d3@2 [a4,a5] [b4,b5] [d5,d6] [b4,b5], [a4,a5]@3 [b4,b5]@3 [a4,a5]@3 [b4,b5]@3 ~@4, ~ d3 ~@2 d3 ~ d3!2]/2", // A B D B A B A B
  I: "[d3 ~ d3!2 ~ d3 [d3,c5,c6] [d3,b4,b5], [g4,g5]@3 [f#4,f#5]@3 [g4,g5]@3 [f#4,f#5]@3 ~@4, ~ d3 ~@2 d3 ~@3]/2", // D7 G F# G F#
})).s("gm_piano").gain(0.25)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@32 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "x ~ x!4 ~@2", B: "x ~@2 x!2 ~ x ~",
})).gain(0.2)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@32 A ~ A B A ~ A B A ~ A B A ~ A B A ~ A B A ~ A B A ~ A B A ~ A B A ~ A B A ~ A B A ~ A B A ~ A B A ~ A B A ~ A B A
  ~ A B A ~ A B A ~ A B A ~ A B
>`.pickRestart({
  A: "~ x!2 ~ x ~ x!2", B: "~ x ~@3 x ~ x",
})).gain(0.63)

// drums · jingle bells
const jingle_bells = s("sleighbells:4").struct("<~@32 [x!2]!72>").gain(1.07)

stack(harmonica, bass, bass_soft, ocarina, piano, mid_tom, congas, jingle_bells)

More by Andrew Prahlow