Strudelify

Waterfall

Toby Fox

KeyG majorTempo70 bpm
0:00/0:00
// Waterfall — Toby Fox
// 70 bpm, 3/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 3/4 at bar 11, 5/4 at bar 44, 3/4 at bar 46) are rendered on a constant 3/4 grid of one bar per cycle
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/1355971; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 47 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(70/3)

// 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 · "Violín"
const violin = note("<~@26 A B C D E B C D E B C D E B C D F G ~@3>".pickRestart({
  A: "~@3 f#4 g4 f#4", B: "[e4,a4] ~@3 [e4,a4]@6 [e4,a4]@2",
  C: "[c4,f#4] ~@3 [d4,f#4]@2 [e4,g4]@2 [d4,f#4]@2 [e4,g4]@2", D: "[c4,f#4] [e4,a4]", E: "[b3,e4]@3 f#4 g4 f#4",
  F: "[b3,e4]@3 e4 [a3,f4] [b3,g4]", G: "[c4,a4]",
})).s("gm_violin").gain(0.3)

// chords · piano
const piano = note("<A@3 B@4 C@4 D E F G H I J K D E F G H I J K L M L@3 M L@3 M L@3 M L@2 ~ N O@2>".pickRestart({
  A: "[~@9 b4 ~@7 d5, ~@2 e4@5 b4 g4@2 e4@6 f#5@2, ~@3 b4@3 e5@4 ~@3 g5 a5@4, ~@4 f#5@6 ~@2 f#5@3 g5@3, ~@5 d5@5 ~ b4@7]/3",
  B: "[~@7 b4 ~@7 d5 ~@7 b4, e4@5 b4 g4@2 e4@6 f#5@2 ~ b4@3 e5 b4 g4@2, ~ b4@3 e5@4 ~@3 g5 a5@4 ~@3 d5@5, ~@2 f#5@6 ~@2 f#5@3 g5@3 ~@2 f#5@6, ~@3 d5@5 ~ b4@7 e4@8]/4",
  C: "[~@7 d5 ~@7 b4 ~@7 d5, e4@6 f#5@2 ~ b4@3 e5 b4 g4@2 ~@3 g5 a5@2 f#5@2, ~ b4@7 e4@8 e4@8, ~@2 f#5@3 g5@3 ~@2 f#5@6 ~@2 f#5@3 g5@3, ~@3 g5 a5@4 ~@3 d5@5 ~ b4@7]/4",
  D: "~@5 b4, b3, e4 e4@2, ~ b4@3 [g4,e5]@2, ~@2 e5 d5@3", // C
  E: "~@4 a4 [a3,f#4,a4], e4, a4@2 [c4,c5], ~ b4@2 [b3,g4,b4]@3, ~@2 [a3,f#4]@3 ~", // D C Em D
  F: "~@11 d4, g4, e4@2 e5, ~ b4@4 [e4,b4], ~@2 e5 [f#4,d5]@3", // E5 D
  G: "~@5 [b4,f#5], c4, a4@3 b4 [a4,d#5]@2, ~ b4@2 [b3,g4]@3, ~ [a3,f#4]@2", // B5 Adim Em D
  H: "~@5 b4, e4, ~ b4@3 e5@2, ~ f#4@2, ~@2 e5 d5@3",
  I: "~@5 b4, [b3,e4], a4@2 [g3,c4,a4], ~ b4@2 b4@2 ~, ~ [a3,d4,f#4]@2", // E5 Am7 D
  J: "~@5 [e4,d5], [d4,f#4], ~ [c4,a4]@5, ~ d5 f#5, ~ e5", K: "~@5 [c4,g4], e5, ~ b4@2 b4@3, ~ a4@2, ~@2 [a3,f#4]",
  L: "e4 b4 a4 b4 g4 b4", M: "e4 b4 a4 b4 d5 b4", N: "~@2 c5 d5 e5@2", O: "[d5@8 c5@8 b4@23 ~@9]/2",
})).s("gm_piano").gain(0.3)

// chords · piano
const piano_2 = note("<~@5 A@2 B@4 C D C E F G H I C D C E F G H I J K L M J K L M J K L M J K L M ~ N@3>".pickRestart({
  A: "[~ c1@2]/2", B: "[b0@2 e1@3 ~]/4", C: "e2@23 ~", D: "a2@15 ~ d#2@8", E: "c2@15 ~ c4@4 d#4@4, ~@2 b1",
  F: "~@2 b3, e2@23 ~", G: "c2@23 ~", H: "f#3 e3 b3 a3@2 f#3, b1@23 ~, ~@8 d3@11 ~@5",
  I: "[g3,b3]@11 ~ f#3@4 d2@8, c2@2 ~", J: "~@2 g1, e1, ~ b1@2", K: "~@2 b1, a1, ~ d2@2", L: "~@2 a1, c2, ~ g1@2",
  M: "~@2 b1, d2, ~ a1@2", N: "[f1@38 ~@2 e1@23 ~@9]/3",
})).s("gm_piano").gain(0.25)

stack(violin, piano, piano_2)

More by Toby Fox