Strudelify

It's Raining Somewhere Else

Toby Fox

KeyE♭ majorTempo96 bpm
0:00/0:00
// It's Raining Somewhere Else — Toby Fox
// 96 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/1398311; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 64 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(96/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 · vibraphone
const vibraphone = note(`<
  ~@16 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 I J K L M@2 N@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 O@2
>`.pickRestart({
  A: "[~@2 eb5 d5 eb5@2 c5 d5 eb5 bb5 g5 eb5@2 d5 c5 g4, [c4,eb4], g4@15 ~, ~ bb4@31]/2", // Cm
  B: "[~@2 d5 c5 d5@2 g4 a4 bb4 f5@2 d5@5, [g3,bb3,d4], ~ f4@31]/2", // Gm
  C: "[~@2 db5 c5 db5@2 ~ gb4 ~ f5@2 db5@2 c5 bb4 c5, [bb3,db4], f4@3 f4@5, ~ ab4@15 ab4@16]/2", // Bbm
  D: "[~ eb4@5 g4@2 [f4,ab4]@2 [c5,eb5]@4 [eb5,g5]@18, [f3,ab3,c4], f4@3 eb4@13]/2", E: "[~ bb4@31, [c4,eb4,g4]]/2",
  F: "[~ f4@31, [g3,bb3,d4]]/2", G: "[~ ab4@31, [bb3,db4,f4]]/2", H: "[~ eb4@31, [f3,ab3,c4]]/2",
  I: "~ [eb4,gb4]@15, [ab3,c4]", J: "~ [d4,f4]@15, [g3,bb3]", K: "~ [f4,ab4]@15, [bb3,db4]",
  L: "~ [c4,eb4]@15, [f3,ab3]", M: "~ [f4,ab4]@15, [bb3,d4]", N: "~ [e4,g4]@15, [bb3,db4]",
  O: "[~ eb4@5 g4@2 [f4,ab4]@2 [c5,eb5]@4 [eb5,g5,c6]@18, [f3,ab3,c4], f4@3 eb4@13]/2", // Fm Cm Fm
})).s("gm_vibraphone").gain(0.3)

// chords · piano
const piano = note("<A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 ~@16 I J K L M N O P Q R S T U@2 V@2 ~@16>".pickRestart({
  A: "[~ bb3@31, [c3,eb3,g3]@31 ~]/2", B: "[~ f3@31, [g2,bb2,d3]@31 ~]/2", C: "[~ ab3@31, [bb2,db3,f3]@31 ~]/2",
  D: "[~ eb3@31, [f2,ab2,c3]@31 ~]/2", // Fm
  E: "[~@2 eb5 d5 eb5@2 c5 d5 eb5 bb5 g5 eb5@2 d5 c5 g4, [c3,eb3,g3]@31 ~, ~ bb3@31]/2", // Cm
  F: "[~@4 d5@2 c5@2 d5@4 g4@2 a4@2 bb4@2 f5@4 d5@9 ~, [g2,bb2,d3]@31 ~, ~ f3@31]/2", // Gm
  G: "[~@2 db5 c5 db5@2 f4 gb4 ab4 f5@2 db5@2 c5 bb4 c5, [bb2,db3,f3]@31 ~, ~ ab3@31]/2", // Bbm
  H: "[~@6 [eb4,g4]@2 [f4,ab4]@2 [c5,eb5]@4 [eb5,g5]@17 ~, [f2,ab2,c3]@31 ~, f4@3 ~@13, ~ eb3@31]/2", // Eb Fm Cm Eb Fm
  I: "~@2 d4 eb4 d4 bb3 d4 eb4", J: "d4@2 eb4 f4@3 g4@2", K: "[d4,eb4] d4@5 bb3@2 bb4@2 a4@2 f4@2 d4@2", L: "[c4,g4]",
  M: "~@2 db4 eb4 db4 bb3 db4 eb4", N: "f4@2 gb4 f4@3 gb4@2", O: "[eb4,f4] eb4@5 ab4@2 c5@2 ab4@2 c5@2 eb5@2",
  P: "[eb4,ab5]", Q: "~@8 c5@3 bb4@2 g4@3", R: "f4 eb4 f4 g4", S: "[f4,g4] f4@7 f4@3 c5@3 bb4 ab4",
  T: "bb4@11 ~ g4@2 ab4 g4", U: "f4@15 ~", V: "e4@15 ~",
})).s("gm_piano").gain(0.4)

// bass · acoustic bass
const bass = note(`<
  ~@15 A B C D E F G H I B C D E F G H I B C D E F G H I J K L M ~@3 A B C D E F G H I B C D E F G N@2
>`.pickRestart({
  A: "~@6 c2 eb2", B: "c2@3 c3@3 g2@2", C: "c2@3 c3@3 f2 g2", D: "g1@3 g2@3 d2@2", E: "g1@3 g2@3 d2 eb2",
  F: "bb1@3 bb2@3 f2@2", G: "bb1@3 bb2@3 f2 c2", H: "f1@3 f2@3 c2@2", I: "f1@3 f2@3 c2 eb2", J: "ab1", K: "g1",
  L: "db2", M: "f1", N: "[f1@3 c2 f2 c2@2 f1@9]/2",
})).s("gm_acoustic_bass").gain(0.4)

// drums · shaker
const shaker = s("sh").struct("<~@16 [x!8]!31 x [x!8]!15 ~>").gain(0.2)

stack(vibraphone, piano, bass, shaker)

More by Toby Fox